occam-verify-cli 1.0.983 → 1.0.985

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 (423) hide show
  1. package/lib/action/verify.js +22 -27
  2. package/lib/constants.js +1 -41
  3. package/lib/index.js +1 -2
  4. package/lib/utilities/fileContext.js +3 -8
  5. package/lib/utilities/releaseContext.js +2 -2
  6. package/package.json +10 -11
  7. package/src/action/verify.js +8 -18
  8. package/src/constants.js +0 -10
  9. package/src/index.js +0 -2
  10. package/src/utilities/fileContext.js +1 -2
  11. package/src/utilities/releaseContext.js +1 -1
  12. package/lib/context/aphasic.js +0 -27
  13. package/lib/context/bounded.js +0 -244
  14. package/lib/context/branching.js +0 -61
  15. package/lib/context/file/nominal.js +0 -586
  16. package/lib/context/illative.js +0 -28
  17. package/lib/context/liminal.js +0 -200
  18. package/lib/context/literal.js +0 -44
  19. package/lib/context/mnemic.js +0 -454
  20. package/lib/context/nested.js +0 -31
  21. package/lib/context/nominal.js +0 -57
  22. package/lib/context/phaneric.js +0 -44
  23. package/lib/context/thetic.js +0 -28
  24. package/lib/context.js +0 -445
  25. package/lib/element/assertion/contained.js +0 -218
  26. package/lib/element/assertion/defined.js +0 -213
  27. package/lib/element/assertion/property.js +0 -176
  28. package/lib/element/assertion/signature.js +0 -170
  29. package/lib/element/assertion/subproof.js +0 -220
  30. package/lib/element/assertion/type.js +0 -227
  31. package/lib/element/assertion.js +0 -49
  32. package/lib/element/assumption/metaLevel.js +0 -244
  33. package/lib/element/assumption.js +0 -252
  34. package/lib/element/combinator/bracketed.js +0 -36
  35. package/lib/element/combinator.js +0 -104
  36. package/lib/element/conclusion.js +0 -131
  37. package/lib/element/constructor/bracketed.js +0 -57
  38. package/lib/element/constructor.js +0 -129
  39. package/lib/element/declaration/combinator.js +0 -58
  40. package/lib/element/declaration/complexType.js +0 -180
  41. package/lib/element/declaration/constructor.js +0 -93
  42. package/lib/element/declaration/metavariable.js +0 -77
  43. package/lib/element/declaration/property.js +0 -88
  44. package/lib/element/declaration/simpleType.js +0 -148
  45. package/lib/element/declaration/typePrefix.js +0 -53
  46. package/lib/element/declaration/variable.js +0 -99
  47. package/lib/element/declaration.js +0 -15
  48. package/lib/element/deduction.js +0 -131
  49. package/lib/element/derivation.js +0 -46
  50. package/lib/element/equality.js +0 -211
  51. package/lib/element/equivalence.js +0 -200
  52. package/lib/element/error.js +0 -27
  53. package/lib/element/frame.js +0 -238
  54. package/lib/element/hypothesis.js +0 -135
  55. package/lib/element/judgement.js +0 -212
  56. package/lib/element/label.js +0 -135
  57. package/lib/element/metaType.js +0 -57
  58. package/lib/element/metavariable.js +0 -452
  59. package/lib/element/parameter.js +0 -69
  60. package/lib/element/procedureCall.js +0 -116
  61. package/lib/element/procedureReference.js +0 -56
  62. package/lib/element/proof.js +0 -52
  63. package/lib/element/proofAssertion/premise.js +0 -238
  64. package/lib/element/proofAssertion/step.js +0 -235
  65. package/lib/element/proofAssertion/supposition.js +0 -249
  66. package/lib/element/proofAssertion.js +0 -56
  67. package/lib/element/property.js +0 -176
  68. package/lib/element/propertyRelation.js +0 -132
  69. package/lib/element/reference.js +0 -227
  70. package/lib/element/rule.js +0 -242
  71. package/lib/element/section.js +0 -64
  72. package/lib/element/signature.js +0 -195
  73. package/lib/element/statement.js +0 -228
  74. package/lib/element/subDerivation.js +0 -46
  75. package/lib/element/subproof.js +0 -91
  76. package/lib/element/substitution/frame.js +0 -256
  77. package/lib/element/substitution/reference.js +0 -192
  78. package/lib/element/substitution/statement.js +0 -294
  79. package/lib/element/substitution/term.js +0 -266
  80. package/lib/element/substitution.js +0 -183
  81. package/lib/element/term.js +0 -217
  82. package/lib/element/topLevelAssertion/axiom.js +0 -158
  83. package/lib/element/topLevelAssertion/conjecture.js +0 -42
  84. package/lib/element/topLevelAssertion/lemma.js +0 -39
  85. package/lib/element/topLevelAssertion/theorem.js +0 -42
  86. package/lib/element/topLevelAssertion.js +0 -286
  87. package/lib/element/topLevelMetaAssertion/metaLemma.js +0 -42
  88. package/lib/element/topLevelMetaAssertion/metatheorem.js +0 -42
  89. package/lib/element/topLevelMetaAssertion.js +0 -179
  90. package/lib/element/type.js +0 -240
  91. package/lib/element/typePrefix.js +0 -85
  92. package/lib/element/variable.js +0 -206
  93. package/lib/elements.js +0 -27
  94. package/lib/metaTypeNames.js +0 -26
  95. package/lib/metaTypes.js +0 -66
  96. package/lib/node/argument.js +0 -31
  97. package/lib/node/assertion/contained.js +0 -51
  98. package/lib/node/assertion/defined.js +0 -47
  99. package/lib/node/assertion/property.js +0 -36
  100. package/lib/node/assertion/signature.js +0 -32
  101. package/lib/node/assertion/subproof.js +0 -28
  102. package/lib/node/assertion/type.js +0 -32
  103. package/lib/node/assertion.js +0 -18
  104. package/lib/node/assumption/metaLevel.js +0 -27
  105. package/lib/node/assumption.js +0 -27
  106. package/lib/node/body/axiom.js +0 -23
  107. package/lib/node/body/conjecture.js +0 -23
  108. package/lib/node/body/lemma.js +0 -23
  109. package/lib/node/body/metaLemma.js +0 -23
  110. package/lib/node/body/metatheorem.js +0 -23
  111. package/lib/node/body/rule.js +0 -44
  112. package/lib/node/body/theorem.js +0 -23
  113. package/lib/node/body.js +0 -31
  114. package/lib/node/combinator.js +0 -23
  115. package/lib/node/conclusion.js +0 -27
  116. package/lib/node/constructor.js +0 -23
  117. package/lib/node/declaration/combinator.js +0 -28
  118. package/lib/node/declaration/complexType.js +0 -72
  119. package/lib/node/declaration/constructor.js +0 -47
  120. package/lib/node/declaration/metavariable.js +0 -36
  121. package/lib/node/declaration/property.js +0 -44
  122. package/lib/node/declaration/simpleType.js +0 -72
  123. package/lib/node/declaration/typePrefix.js +0 -32
  124. package/lib/node/declaration/variable.js +0 -51
  125. package/lib/node/declaration.js +0 -18
  126. package/lib/node/deduction.js +0 -27
  127. package/lib/node/derivation.js +0 -26
  128. package/lib/node/document.js +0 -18
  129. package/lib/node/equality.js +0 -33
  130. package/lib/node/equivalence.js +0 -23
  131. package/lib/node/equivalences.js +0 -18
  132. package/lib/node/error.js +0 -18
  133. package/lib/node/frame.js +0 -38
  134. package/lib/node/header/axiom.js +0 -28
  135. package/lib/node/header/conjecture.js +0 -23
  136. package/lib/node/header/lemma.js +0 -23
  137. package/lib/node/header/metaLemma.js +0 -23
  138. package/lib/node/header/metatheorem.js +0 -23
  139. package/lib/node/header/rule.js +0 -23
  140. package/lib/node/header/theorem.js +0 -23
  141. package/lib/node/header.js +0 -47
  142. package/lib/node/hypothesis.js +0 -27
  143. package/lib/node/judgement.js +0 -31
  144. package/lib/node/label.js +0 -23
  145. package/lib/node/labels.js +0 -23
  146. package/lib/node/metaArgument.js +0 -23
  147. package/lib/node/metaType.js +0 -30
  148. package/lib/node/metavariable.js +0 -39
  149. package/lib/node/parameter.js +0 -47
  150. package/lib/node/parenthesisedLabel.js +0 -23
  151. package/lib/node/parenthesisedLabels.js +0 -27
  152. package/lib/node/placeholder.js +0 -18
  153. package/lib/node/procedureCall.js +0 -31
  154. package/lib/node/procedureReference.js +0 -30
  155. package/lib/node/proof.js +0 -23
  156. package/lib/node/proofAssertion/premise.js +0 -28
  157. package/lib/node/proofAssertion/step.js +0 -52
  158. package/lib/node/proofAssertion/supposition.js +0 -28
  159. package/lib/node/proofAssertion.js +0 -27
  160. package/lib/node/property.js +0 -30
  161. package/lib/node/propertyRelation.js +0 -31
  162. package/lib/node/qualification.js +0 -27
  163. package/lib/node/reference.js +0 -23
  164. package/lib/node/rule.js +0 -43
  165. package/lib/node/section.js +0 -39
  166. package/lib/node/signature.js +0 -23
  167. package/lib/node/statement.js +0 -103
  168. package/lib/node/subDerivation.js +0 -26
  169. package/lib/node/subproof.js +0 -35
  170. package/lib/node/substitution/frame.js +0 -40
  171. package/lib/node/substitution/reference.js +0 -40
  172. package/lib/node/substitution/statement.js +0 -60
  173. package/lib/node/substitution/term.js +0 -40
  174. package/lib/node/substitution.js +0 -18
  175. package/lib/node/term.js +0 -60
  176. package/lib/node/topLevelAssertion/axiom.js +0 -26
  177. package/lib/node/topLevelAssertion/conjecture.js +0 -26
  178. package/lib/node/topLevelAssertion/lemma.js +0 -26
  179. package/lib/node/topLevelAssertion/theorem.js +0 -26
  180. package/lib/node/topLevelAssertion.js +0 -46
  181. package/lib/node/topLevelMetaAssertion/metaLemma.js +0 -26
  182. package/lib/node/topLevelMetaAssertion/metatheorem.js +0 -26
  183. package/lib/node/topLevelMetaAssertion.js +0 -42
  184. package/lib/node/type.js +0 -60
  185. package/lib/node/typePrefix.js +0 -30
  186. package/lib/node/types.js +0 -23
  187. package/lib/node/variable.js +0 -30
  188. package/lib/nominal/lexer.js +0 -15
  189. package/lib/nominal/parser.js +0 -24
  190. package/lib/nonTerminalNodeMap.js +0 -189
  191. package/lib/pass/zip.js +0 -23
  192. package/lib/preamble.js +0 -73
  193. package/lib/process/assign.js +0 -62
  194. package/lib/process/discharge.js +0 -38
  195. package/lib/process/equate.js +0 -73
  196. package/lib/process/instantiate.js +0 -261
  197. package/lib/process/unification.js +0 -228
  198. package/lib/process/unify.js +0 -336
  199. package/lib/process/validate.js +0 -135
  200. package/lib/process/validation.js +0 -291
  201. package/lib/process/verify.js +0 -205
  202. package/lib/ruleNames.js +0 -350
  203. package/lib/tokenTypes.js +0 -22
  204. package/lib/utilities/assignment.js +0 -47
  205. package/lib/utilities/bnf.js +0 -21
  206. package/lib/utilities/brackets.js +0 -77
  207. package/lib/utilities/breakPoint.js +0 -38
  208. package/lib/utilities/context.js +0 -220
  209. package/lib/utilities/element.js +0 -1851
  210. package/lib/utilities/equivalence.js +0 -27
  211. package/lib/utilities/equivalences.js +0 -134
  212. package/lib/utilities/instance.js +0 -44
  213. package/lib/utilities/json.js +0 -1109
  214. package/lib/utilities/string.js +0 -231
  215. package/lib/utilities/substitutions.js +0 -86
  216. package/lib/utilities/synoptic.js +0 -159
  217. package/lib/utilities/type.js +0 -27
  218. package/src/context/aphasic.js +0 -15
  219. package/src/context/bounded.js +0 -362
  220. package/src/context/branching.js +0 -69
  221. package/src/context/file/nominal.js +0 -955
  222. package/src/context/illative.js +0 -17
  223. package/src/context/liminal.js +0 -280
  224. package/src/context/literal.js +0 -42
  225. package/src/context/mnemic.js +0 -778
  226. package/src/context/nested.js +0 -21
  227. package/src/context/nominal.js +0 -62
  228. package/src/context/phaneric.js +0 -43
  229. package/src/context/thetic.js +0 -17
  230. package/src/context.js +0 -722
  231. package/src/element/assertion/contained.js +0 -313
  232. package/src/element/assertion/defined.js +0 -310
  233. package/src/element/assertion/property.js +0 -252
  234. package/src/element/assertion/signature.js +0 -239
  235. package/src/element/assertion/subproof.js +0 -335
  236. package/src/element/assertion/type.js +0 -328
  237. package/src/element/assertion.js +0 -65
  238. package/src/element/assumption/metaLevel.js +0 -373
  239. package/src/element/assumption.js +0 -374
  240. package/src/element/combinator/bracketed.js +0 -32
  241. package/src/element/combinator.js +0 -145
  242. package/src/element/conclusion.js +0 -185
  243. package/src/element/constructor/bracketed.js +0 -68
  244. package/src/element/constructor.js +0 -188
  245. package/src/element/declaration/combinator.js +0 -66
  246. package/src/element/declaration/complexType.js +0 -257
  247. package/src/element/declaration/constructor.js +0 -122
  248. package/src/element/declaration/metavariable.js +0 -93
  249. package/src/element/declaration/property.js +0 -108
  250. package/src/element/declaration/simpleType.js +0 -208
  251. package/src/element/declaration/typePrefix.js +0 -58
  252. package/src/element/declaration/variable.js +0 -130
  253. package/src/element/declaration.js +0 -7
  254. package/src/element/deduction.js +0 -185
  255. package/src/element/derivation.js +0 -57
  256. package/src/element/equality.js +0 -325
  257. package/src/element/equivalence.js +0 -276
  258. package/src/element/error.js +0 -26
  259. package/src/element/frame.js +0 -356
  260. package/src/element/hypothesis.js +0 -186
  261. package/src/element/judgement.js +0 -303
  262. package/src/element/label.js +0 -186
  263. package/src/element/metaType.js +0 -75
  264. package/src/element/metavariable.js +0 -662
  265. package/src/element/parameter.js +0 -90
  266. package/src/element/procedureCall.js +0 -159
  267. package/src/element/procedureReference.js +0 -71
  268. package/src/element/proof.js +0 -61
  269. package/src/element/proofAssertion/premise.js +0 -354
  270. package/src/element/proofAssertion/step.js +0 -271
  271. package/src/element/proofAssertion/supposition.js +0 -377
  272. package/src/element/proofAssertion.js +0 -74
  273. package/src/element/property.js +0 -258
  274. package/src/element/propertyRelation.js +0 -193
  275. package/src/element/reference.js +0 -345
  276. package/src/element/rule.js +0 -358
  277. package/src/element/section.js +0 -78
  278. package/src/element/signature.js +0 -292
  279. package/src/element/statement.js +0 -358
  280. package/src/element/subDerivation.js +0 -56
  281. package/src/element/subproof.js +0 -116
  282. package/src/element/substitution/frame.js +0 -392
  283. package/src/element/substitution/reference.js +0 -274
  284. package/src/element/substitution/statement.js +0 -452
  285. package/src/element/substitution/term.js +0 -407
  286. package/src/element/substitution.js +0 -261
  287. package/src/element/term.js +0 -339
  288. package/src/element/topLevelAssertion/axiom.js +0 -244
  289. package/src/element/topLevelAssertion/conjecture.js +0 -40
  290. package/src/element/topLevelAssertion/lemma.js +0 -42
  291. package/src/element/topLevelAssertion/theorem.js +0 -40
  292. package/src/element/topLevelAssertion.js +0 -436
  293. package/src/element/topLevelMetaAssertion/metaLemma.js +0 -40
  294. package/src/element/topLevelMetaAssertion/metatheorem.js +0 -40
  295. package/src/element/topLevelMetaAssertion.js +0 -276
  296. package/src/element/type.js +0 -374
  297. package/src/element/typePrefix.js +0 -113
  298. package/src/element/variable.js +0 -259
  299. package/src/elements.js +0 -13
  300. package/src/metaTypeNames.js +0 -5
  301. package/src/metaTypes.js +0 -71
  302. package/src/node/argument.js +0 -30
  303. package/src/node/assertion/contained.js +0 -53
  304. package/src/node/assertion/defined.js +0 -46
  305. package/src/node/assertion/property.js +0 -30
  306. package/src/node/assertion/signature.js +0 -23
  307. package/src/node/assertion/subproof.js +0 -16
  308. package/src/node/assertion/type.js +0 -23
  309. package/src/node/assertion.js +0 -7
  310. package/src/node/assumption/metaLevel.js +0 -23
  311. package/src/node/assumption.js +0 -23
  312. package/src/node/body/axiom.js +0 -7
  313. package/src/node/body/conjecture.js +0 -7
  314. package/src/node/body/lemma.js +0 -7
  315. package/src/node/body/metaLemma.js +0 -7
  316. package/src/node/body/metatheorem.js +0 -7
  317. package/src/node/body/rule.js +0 -42
  318. package/src/node/body/theorem.js +0 -7
  319. package/src/node/body.js +0 -30
  320. package/src/node/combinator.js +0 -16
  321. package/src/node/conclusion.js +0 -23
  322. package/src/node/constructor.js +0 -16
  323. package/src/node/declaration/combinator.js +0 -16
  324. package/src/node/declaration/complexType.js +0 -88
  325. package/src/node/declaration/constructor.js +0 -46
  326. package/src/node/declaration/metavariable.js +0 -30
  327. package/src/node/declaration/property.js +0 -42
  328. package/src/node/declaration/simpleType.js +0 -87
  329. package/src/node/declaration/typePrefix.js +0 -24
  330. package/src/node/declaration/variable.js +0 -53
  331. package/src/node/declaration.js +0 -7
  332. package/src/node/deduction.js +0 -23
  333. package/src/node/derivation.js +0 -19
  334. package/src/node/document.js +0 -7
  335. package/src/node/equality.js +0 -35
  336. package/src/node/equivalence.js +0 -16
  337. package/src/node/equivalences.js +0 -7
  338. package/src/node/error.js +0 -7
  339. package/src/node/frame.js +0 -40
  340. package/src/node/header/axiom.js +0 -16
  341. package/src/node/header/conjecture.js +0 -7
  342. package/src/node/header/lemma.js +0 -7
  343. package/src/node/header/metaLemma.js +0 -7
  344. package/src/node/header/metatheorem.js +0 -7
  345. package/src/node/header/rule.js +0 -7
  346. package/src/node/header/theorem.js +0 -7
  347. package/src/node/header.js +0 -54
  348. package/src/node/hypothesis.js +0 -23
  349. package/src/node/judgement.js +0 -30
  350. package/src/node/label.js +0 -16
  351. package/src/node/labels.js +0 -16
  352. package/src/node/metaArgument.js +0 -16
  353. package/src/node/metaType.js +0 -26
  354. package/src/node/metavariable.js +0 -42
  355. package/src/node/parameter.js +0 -51
  356. package/src/node/parenthesisedLabel.js +0 -16
  357. package/src/node/parenthesisedLabels.js +0 -23
  358. package/src/node/placeholder.js +0 -7
  359. package/src/node/procedureCall.js +0 -30
  360. package/src/node/procedureReference.js +0 -26
  361. package/src/node/proof.js +0 -16
  362. package/src/node/proofAssertion/premise.js +0 -16
  363. package/src/node/proofAssertion/step.js +0 -52
  364. package/src/node/proofAssertion/supposition.js +0 -16
  365. package/src/node/proofAssertion.js +0 -23
  366. package/src/node/property.js +0 -28
  367. package/src/node/propertyRelation.js +0 -30
  368. package/src/node/qualification.js +0 -23
  369. package/src/node/reference.js +0 -16
  370. package/src/node/rule.js +0 -51
  371. package/src/node/section.js +0 -44
  372. package/src/node/signature.js +0 -16
  373. package/src/node/statement.js +0 -167
  374. package/src/node/subDerivation.js +0 -19
  375. package/src/node/subproof.js +0 -35
  376. package/src/node/substitution/frame.js +0 -37
  377. package/src/node/substitution/reference.js +0 -38
  378. package/src/node/substitution/statement.js +0 -70
  379. package/src/node/substitution/term.js +0 -38
  380. package/src/node/substitution.js +0 -7
  381. package/src/node/term.js +0 -75
  382. package/src/node/topLevelAssertion/axiom.js +0 -13
  383. package/src/node/topLevelAssertion/conjecture.js +0 -13
  384. package/src/node/topLevelAssertion/lemma.js +0 -13
  385. package/src/node/topLevelAssertion/theorem.js +0 -13
  386. package/src/node/topLevelAssertion.js +0 -58
  387. package/src/node/topLevelMetaAssertion/metaLemma.js +0 -13
  388. package/src/node/topLevelMetaAssertion/metatheorem.js +0 -13
  389. package/src/node/topLevelMetaAssertion.js +0 -51
  390. package/src/node/type.js +0 -74
  391. package/src/node/typePrefix.js +0 -26
  392. package/src/node/types.js +0 -16
  393. package/src/node/variable.js +0 -26
  394. package/src/nominal/lexer.js +0 -5
  395. package/src/nominal/parser.js +0 -12
  396. package/src/nonTerminalNodeMap.js +0 -261
  397. package/src/pass/zip.js +0 -19
  398. package/src/preamble.js +0 -64
  399. package/src/process/assign.js +0 -53
  400. package/src/process/discharge.js +0 -33
  401. package/src/process/equate.js +0 -94
  402. package/src/process/instantiate.js +0 -198
  403. package/src/process/unification.js +0 -332
  404. package/src/process/unify.js +0 -504
  405. package/src/process/validate.js +0 -174
  406. package/src/process/validation.js +0 -410
  407. package/src/process/verify.js +0 -299
  408. package/src/ruleNames.js +0 -86
  409. package/src/tokenTypes.js +0 -4
  410. package/src/utilities/assignment.js +0 -57
  411. package/src/utilities/bnf.js +0 -20
  412. package/src/utilities/brackets.js +0 -87
  413. package/src/utilities/breakPoint.js +0 -29
  414. package/src/utilities/context.js +0 -223
  415. package/src/utilities/element.js +0 -2293
  416. package/src/utilities/equivalence.js +0 -25
  417. package/src/utilities/equivalences.js +0 -158
  418. package/src/utilities/instance.js +0 -40
  419. package/src/utilities/json.js +0 -1273
  420. package/src/utilities/string.js +0 -282
  421. package/src/utilities/substitutions.js +0 -93
  422. package/src/utilities/synoptic.js +0 -135
  423. package/src/utilities/type.js +0 -19
@@ -1,1109 +0,0 @@
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 ariableToVariableJSON () {
13
- return ariableToVariableJSON;
14
- },
15
- get assertionsFromJSON () {
16
- return assertionsFromJSON;
17
- },
18
- get assertionsToAssertionsJSON () {
19
- return assertionsToAssertionsJSON;
20
- },
21
- get assumptionsFromJSON () {
22
- return assumptionsFromJSON;
23
- },
24
- get assumptionsToAssumptionsJSON () {
25
- return assumptionsToAssumptionsJSON;
26
- },
27
- get axiomsFromJSON () {
28
- return axiomsFromJSON;
29
- },
30
- get axiomsToAxiomsJSON () {
31
- return axiomsToAxiomsJSON;
32
- },
33
- get combinatorsFromJSON () {
34
- return combinatorsFromJSON;
35
- },
36
- get combinatorsToCombinatorsJSON () {
37
- return combinatorsToCombinatorsJSON;
38
- },
39
- get conclusionFromJSON () {
40
- return conclusionFromJSON;
41
- },
42
- get conclusionToConclusionJSON () {
43
- return conclusionToConclusionJSON;
44
- },
45
- get conjecturesFromJSON () {
46
- return conjecturesFromJSON;
47
- },
48
- get conjecturesToConjecturesJSON () {
49
- return conjecturesToConjecturesJSON;
50
- },
51
- get constructorsFromJSON () {
52
- return constructorsFromJSON;
53
- },
54
- get constructorsToConstructorsJSON () {
55
- return constructorsToConstructorsJSON;
56
- },
57
- get declaredMetavariableToDEclaredMetavariableJSON () {
58
- return declaredMetavariableToDEclaredMetavariableJSON;
59
- },
60
- get declaredMetavariablesFromJSON () {
61
- return declaredMetavariablesFromJSON;
62
- },
63
- get declaredMetavariablesToDeclaredMetavariablesJSON () {
64
- return declaredMetavariablesToDeclaredMetavariablesJSON;
65
- },
66
- get declaredVariablesFromJSON () {
67
- return declaredVariablesFromJSON;
68
- },
69
- get declaredVariablesToDeclaredVariablesJSON () {
70
- return declaredVariablesToDeclaredVariablesJSON;
71
- },
72
- get deductionFromJSON () {
73
- return deductionFromJSON;
74
- },
75
- get deductionToDeductionJSON () {
76
- return deductionToDeductionJSON;
77
- },
78
- get equalitiesFromJSON () {
79
- return equalitiesFromJSON;
80
- },
81
- get equalitiesToEqualitiesJSON () {
82
- return equalitiesToEqualitiesJSON;
83
- },
84
- get frameFromJSON () {
85
- return frameFromJSON;
86
- },
87
- get frameToFrameJSON () {
88
- return frameToFrameJSON;
89
- },
90
- get framesFromJSON () {
91
- return framesFromJSON;
92
- },
93
- get framesToFramesJSON () {
94
- return framesToFramesJSON;
95
- },
96
- get hypothesesFromJSON () {
97
- return hypothesesFromJSON;
98
- },
99
- get hypothesesToHypothesesJSON () {
100
- return hypothesesToHypothesesJSON;
101
- },
102
- get identifierFromJSON () {
103
- return identifierFromJSON;
104
- },
105
- get identifierToIdentifierJSON () {
106
- return identifierToIdentifierJSON;
107
- },
108
- get judgementsFromJSON () {
109
- return judgementsFromJSON;
110
- },
111
- get judgementsToJudgementsJSON () {
112
- return judgementsToJudgementsJSON;
113
- },
114
- get labelFromJSON () {
115
- return labelFromJSON;
116
- },
117
- get labelToLabelJSON () {
118
- return labelToLabelJSON;
119
- },
120
- get labelsFromJSON () {
121
- return labelsFromJSON;
122
- },
123
- get labelsToLabelsJSON () {
124
- return labelsToLabelsJSON;
125
- },
126
- get metaLevelAssumptionsFromJSON () {
127
- return metaLevelAssumptionsFromJSON;
128
- },
129
- get metaLevelAssumptionsToMetaLevelAssumptionsJSON () {
130
- return metaLevelAssumptionsToMetaLevelAssumptionsJSON;
131
- },
132
- get metaTypeFromJSON () {
133
- return metaTypeFromJSON;
134
- },
135
- get metaTypeToMetaTypeJSON () {
136
- return metaTypeToMetaTypeJSON;
137
- },
138
- get metatheoremsFromJSON () {
139
- return metatheoremsFromJSON;
140
- },
141
- get metatheoremsToMetatheoremsJSON () {
142
- return metatheoremsToMetatheoremsJSON;
143
- },
144
- get metavariableFromJSON () {
145
- return metavariableFromJSON;
146
- },
147
- get metavariableToMetavariableJSON () {
148
- return metavariableToMetavariableJSON;
149
- },
150
- get metavariablesFromJSON () {
151
- return metavariablesFromJSON;
152
- },
153
- get metavariablesToMetavariablesJSON () {
154
- return metavariablesToMetavariablesJSON;
155
- },
156
- get mnemicContextFromJSON () {
157
- return mnemicContextFromJSON;
158
- },
159
- get mnemicContextToMnemicContextJSON () {
160
- return mnemicContextToMnemicContextJSON;
161
- },
162
- get mnemicContextsFromJSON () {
163
- return mnemicContextsFromJSON;
164
- },
165
- get mnemicContextsToMnemicContextsJSON () {
166
- return mnemicContextsToMnemicContextsJSON;
167
- },
168
- get nameFromJSON () {
169
- return nameFromJSON;
170
- },
171
- get nameToNameJSON () {
172
- return nameToNameJSON;
173
- },
174
- get negatedFromJSON () {
175
- return negatedFromJSON;
176
- },
177
- get negatedToNegatedJSON () {
178
- return negatedToNegatedJSON;
179
- },
180
- get parametersFromJSON () {
181
- return parametersFromJSON;
182
- },
183
- get parametersToParametersJSON () {
184
- return parametersToParametersJSON;
185
- },
186
- get prefixNameFromJSON () {
187
- return prefixNameFromJSON;
188
- },
189
- get prefixnameToPrevixNameJSON () {
190
- return prefixnameToPrevixNameJSON;
191
- },
192
- get premisesFromJSON () {
193
- return premisesFromJSON;
194
- },
195
- get premisesToPremisesJSON () {
196
- return premisesToPremisesJSON;
197
- },
198
- get procedureCallFromJSON () {
199
- return procedureCallFromJSON;
200
- },
201
- get procedureCallToProcedureCallJSON () {
202
- return procedureCallToProcedureCallJSON;
203
- },
204
- get procedureReferenceFromJSON () {
205
- return procedureReferenceFromJSON;
206
- },
207
- get procedureReferenceToProcedureReferenceJSON () {
208
- return procedureReferenceToProcedureReferenceJSON;
209
- },
210
- get propertiesFromJSON () {
211
- return propertiesFromJSON;
212
- },
213
- get propertiesToPropertiesJSON () {
214
- return propertiesToPropertiesJSON;
215
- },
216
- get propertyRelationsFromJSON () {
217
- return propertyRelationsFromJSON;
218
- },
219
- get propertyRelationsToPropertyRelationsJSON () {
220
- return propertyRelationsToPropertyRelationsJSON;
221
- },
222
- get provisionalFromJSON () {
223
- return provisionalFromJSON;
224
- },
225
- get provisionalToProvisionalJSON () {
226
- return provisionalToProvisionalJSON;
227
- },
228
- get referenceFromJSON () {
229
- return referenceFromJSON;
230
- },
231
- get referenceToReferenceJSON () {
232
- return referenceToReferenceJSON;
233
- },
234
- get referencesFromJSON () {
235
- return referencesFromJSON;
236
- },
237
- get referencesToReferencesJSON () {
238
- return referencesToReferencesJSON;
239
- },
240
- get rulesFromJSON () {
241
- return rulesFromJSON;
242
- },
243
- get rulesToRulesJSON () {
244
- return rulesToRulesJSON;
245
- },
246
- get signatureFromJSON () {
247
- return signatureFromJSON;
248
- },
249
- get signatureToSignatureJSON () {
250
- return signatureToSignatureJSON;
251
- },
252
- get signaturesFromJSON () {
253
- return signaturesFromJSON;
254
- },
255
- get signaturesToSignaturesJSON () {
256
- return signaturesToSignaturesJSON;
257
- },
258
- get statementFromJSON () {
259
- return statementFromJSON;
260
- },
261
- get statementToStatementJSON () {
262
- return statementToStatementJSON;
263
- },
264
- get statementsFromJSON () {
265
- return statementsFromJSON;
266
- },
267
- get statementsToStatementsJSON () {
268
- return statementsToStatementsJSON;
269
- },
270
- get substitutionFromSubstitutionJSON () {
271
- return substitutionFromSubstitutionJSON;
272
- },
273
- get substitutionsFromJSON () {
274
- return substitutionsFromJSON;
275
- },
276
- get substitutionsToSubstitutionsJSON () {
277
- return substitutionsToSubstitutionsJSON;
278
- },
279
- get superTypesFromJSON () {
280
- return superTypesFromJSON;
281
- },
282
- get superTypesToSuperTypesJSON () {
283
- return superTypesToSuperTypesJSON;
284
- },
285
- get suppositionsFromJSON () {
286
- return suppositionsFromJSON;
287
- },
288
- get suppositionsToSuppositionsJSON () {
289
- return suppositionsToSuppositionsJSON;
290
- },
291
- get termFromJSON () {
292
- return termFromJSON;
293
- },
294
- get termToTermJSON () {
295
- return termToTermJSON;
296
- },
297
- get termsFromJSON () {
298
- return termsFromJSON;
299
- },
300
- get termsToTermsJSON () {
301
- return termsToTermsJSON;
302
- },
303
- get theoremsFromJSON () {
304
- return theoremsFromJSON;
305
- },
306
- get theoremsToTheoremsJSON () {
307
- return theoremsToTheoremsJSON;
308
- },
309
- get typeFromJSON () {
310
- return typeFromJSON;
311
- },
312
- get typePrefixesFromJSON () {
313
- return typePrefixesFromJSON;
314
- },
315
- get typePrefixesToTypePrefixesJSON () {
316
- return typePrefixesToTypePrefixesJSON;
317
- },
318
- get typeToTypeJSON () {
319
- return typeToTypeJSON;
320
- },
321
- get typesFromJSON () {
322
- return typesFromJSON;
323
- },
324
- get typesToTypesJSON () {
325
- return typesToTypesJSON;
326
- },
327
- get variablesFromJSON () {
328
- return variablesFromJSON;
329
- },
330
- get variablesToVariablesJSON () {
331
- return variablesToVariablesJSON;
332
- }
333
- });
334
- const _elements = /*#__PURE__*/ _interop_require_default(require("../elements"));
335
- const _mnemic = /*#__PURE__*/ _interop_require_default(require("../context/mnemic"));
336
- function _interop_require_default(obj) {
337
- return obj && obj.__esModule ? obj : {
338
- default: obj
339
- };
340
- }
341
- function nameFromJSON(json, context) {
342
- let { name } = json;
343
- const nameJSON = name; ///
344
- name = nameJSON; ///
345
- return name;
346
- }
347
- function termFromJSON(json, context) {
348
- let { term } = json;
349
- if (term !== null) {
350
- const termJSON = term; ///
351
- json = termJSON; ///
352
- const { Term } = _elements.default;
353
- term = Term.fromJSON(json, context);
354
- }
355
- return term;
356
- }
357
- function typeFromJSON(json, context) {
358
- let { type } = json;
359
- if (type !== null) {
360
- json = type; ///
361
- const { string } = json, name = string; ///
362
- type = findTypeByName(name, context);
363
- }
364
- return type;
365
- }
366
- function labelFromJSON(json, context) {
367
- let { label } = json;
368
- const { Label } = _elements.default, labelJSON = label; ///
369
- json = labelJSON; ///
370
- label = Label.fromJSON(json, context);
371
- return label;
372
- }
373
- function frameFromJSON(json, context) {
374
- let { frame } = json;
375
- if (frame !== null) {
376
- const frameJSON = frame; ///
377
- json = frameJSON; ///
378
- const { Frame } = _elements.default;
379
- frame = Frame.fromJSON(json, context);
380
- }
381
- return frame;
382
- }
383
- function negatedFromJSON(json, context) {
384
- const { negated } = json;
385
- return negated;
386
- }
387
- function metaTypeFromJSON(json, context) {
388
- let { metaType } = json;
389
- if (metaType !== null) {
390
- json = metaType; ///
391
- const { string } = json, name = string; ///
392
- metaType = findMetaTypeByName(name, context);
393
- }
394
- return metaType;
395
- }
396
- function statementFromJSON(json, context) {
397
- let { statement = null } = json;
398
- if (statement !== null) {
399
- const { Statement } = _elements.default, statementJSON = statement; ///
400
- json = statementJSON; ///
401
- statement = Statement.fromJSON(json, context);
402
- }
403
- return statement;
404
- }
405
- function deductionFromJSON(json, context) {
406
- let { deduction } = json;
407
- const { Deduction } = _elements.default, deductionJSON = deduction; ///
408
- json = deductionJSON; ///
409
- deduction = Deduction.fromJSON(json, context);
410
- return deduction;
411
- }
412
- function signatureFromJSON(json, context) {
413
- let { signature = null } = json;
414
- if (signature !== null) {
415
- const { Signature } = _elements.default, signatureJSON = signature; ///
416
- json = signatureJSON; ///
417
- signature = Signature.fromJSON(json, context);
418
- }
419
- return signature;
420
- }
421
- function referenceFromJSON(json, context) {
422
- let { reference } = json;
423
- const { Reference } = _elements.default, referenceJSON = reference; ///
424
- json = referenceJSON; ///
425
- reference = Reference.fromJSON(json, context);
426
- return reference;
427
- }
428
- function identifierFromJSON(json, context) {
429
- let { identifier } = json;
430
- const identifierJSON = identifier; ///
431
- identifier = identifierJSON; ///
432
- return identifier;
433
- }
434
- function conclusionFromJSON(json, context) {
435
- let { conclusion } = json;
436
- const { Conclusion } = _elements.default, conclusionJSON = conclusion; ///
437
- json = conclusionJSON; ///
438
- conclusion = Conclusion.fromJSON(json, context);
439
- return conclusion;
440
- }
441
- function provisionalFromJSON(json, context) {
442
- const { provisional } = json;
443
- return provisional;
444
- }
445
- function metavariableFromJSON(json, context) {
446
- let { metavariable } = json;
447
- const { Metavariable } = _elements.default, metavariableJSON = metavariable; ///
448
- json = metavariableJSON; ///
449
- metavariable = Metavariable.fromJSON(json, context);
450
- return metavariable;
451
- }
452
- function mnemicContextFromJSON(json, context) {
453
- const releaseContext = context; ///
454
- ({ context } = json);
455
- json = context; ///
456
- context = releaseContext; ///
457
- const mnemicContext = _mnemic.default.fromJSON(json, context);
458
- return mnemicContext;
459
- }
460
- function procedureCallFromJSON(json, context) {
461
- let { procedureCall = null } = json;
462
- if (procedureCall !== null) {
463
- const { ProcedureCall } = _elements.default, procedureCallJSON = procedureCall; ///
464
- json = procedureCallJSON; ///
465
- procedureCall = ProcedureCall.fromJSON(json, context);
466
- }
467
- return procedureCall;
468
- }
469
- function procedureReferenceFromJSON(json, context) {
470
- let { procedureReference } = json;
471
- const { ProcedureReference } = _elements.default, procedureReferenceJSON = procedureReference; ///
472
- json = procedureReferenceJSON; ///
473
- procedureReference = ProcedureReference.fromJSON(json, context);
474
- return procedureReference;
475
- }
476
- function typesFromJSON(json, types, context) {
477
- const { types: typesJSON } = json;
478
- const { Type } = _elements.default;
479
- typesJSON.forEach((typeJSON)=>{
480
- const json = typeJSON, type = Type.fromJSON(json, context);
481
- types.push(type);
482
- });
483
- }
484
- function termsFromJSON(json, context) {
485
- let { terms } = json;
486
- const { Term } = _elements.default, termsJSON = terms; ///
487
- terms = termsJSON.map((termJSON)=>{
488
- const json = termJSON, term = Term.fromJSON(json, context);
489
- return term;
490
- });
491
- return terms;
492
- }
493
- function rulesFromJSON(json, context) {
494
- let { rules } = json;
495
- const { Rule } = _elements.default, rulesJSON = rules; ///
496
- rules = rulesJSON.map((ruleJSON)=>{
497
- const json = ruleJSON, rule = Rule.fromJSON(json, context);
498
- return rule;
499
- });
500
- return rules;
501
- }
502
- function framesFromJSON(json, context) {
503
- let { frames } = json;
504
- const { Frame } = _elements.default, framesJSON = frames; ///
505
- frames = framesJSON.map((frameJSON)=>{
506
- const json = frameJSON, frame = Frame.fromJSON(json, context);
507
- return frame;
508
- });
509
- return frames;
510
- }
511
- function labelsFromJSON(json, context) {
512
- let { labels } = json;
513
- const { Label } = _elements.default, labelsJSON = labels; ///
514
- labels = labelsJSON.map((labelJSON)=>{
515
- const json = labelJSON, label = Label.fromJSON(json, context);
516
- return label;
517
- });
518
- return labels;
519
- }
520
- function axiomsFromJSON(json, context) {
521
- let { axioms } = json;
522
- const { Axiom } = _elements.default, axiomsJSON = axioms; ///
523
- axioms = axiomsJSON.map((axiomJSON)=>{
524
- const json = axiomJSON, axiom = Axiom.fromJSON(json, context);
525
- return axiom;
526
- });
527
- return axioms;
528
- }
529
- function premisesFromJSON(json, context) {
530
- let { premises } = json;
531
- const { Premise } = _elements.default, premisesJSON = premises; ///
532
- premises = premisesJSON.map((premiseJSON)=>{
533
- const json = premiseJSON, premise = Premise.fromJSON(json, context);
534
- return premise;
535
- });
536
- return premises;
537
- }
538
- function theoremsFromJSON(json, context) {
539
- let { theorems } = json;
540
- const { Theorem } = _elements.default, theoremsJSON = theorems; ///
541
- theorems = theoremsJSON.map((theoremJSON)=>{
542
- const json = theoremJSON, theorem = Theorem.fromJSON(json, context);
543
- return theorem;
544
- });
545
- return theorems;
546
- }
547
- function variablesFromJSON(json, context) {
548
- let { variables } = json;
549
- const { Variable } = _elements.default, variablesJSON = variables; ///
550
- variables = variablesJSON.map((variableJSON)=>{
551
- const json = variableJSON, variable = Variable.fromJSON(json, context);
552
- return variable;
553
- });
554
- return variables;
555
- }
556
- function propertiesFromJSON(json, context) {
557
- let { properties } = json;
558
- const { Property } = _elements.default, propertiesJSON = properties; ///
559
- properties = propertiesJSON.map((propertyJSON)=>{
560
- const json = propertyJSON, property = Property.fromJSON(json, context);
561
- return property;
562
- });
563
- return properties;
564
- }
565
- function equalitiesFromJSON(json, context) {
566
- let { equalities } = json;
567
- const { Equality } = _elements.default, equalitiesJSON = equalities; ///
568
- equalities = equalitiesJSON.map((equalityJSON)=>{
569
- const json = equalityJSON, equality = Equality.fromJSON(json, context);
570
- return equality;
571
- });
572
- return equalities;
573
- }
574
- function prefixNameFromJSON(json, context) {
575
- const { prefixName } = json;
576
- return prefixName;
577
- }
578
- function superTypesFromJSON(json, context) {
579
- const { superTypes: superTypesJSON } = json;
580
- const superTypes = superTypesJSON.map((superTypeJSON)=>{
581
- const json = superTypeJSON, { string } = json, name = string, type = findTypeByName(name, context), superType = type; ///
582
- return superType;
583
- });
584
- return superTypes;
585
- }
586
- function hypothesesFromJSON(json, context) {
587
- let { hypotheses } = json;
588
- const { Hypothesis } = _elements.default, hypothesesJSON = hypotheses; ///
589
- hypotheses = hypothesesJSON.map((hypothesisJSON)=>{
590
- const json = hypothesisJSON, hypothesis = Hypothesis.fromJSON(json, context);
591
- return hypothesis;
592
- });
593
- return hypotheses;
594
- }
595
- function parametersFromJSON(json, context) {
596
- let { parameters } = json;
597
- const { Parameter } = _elements.default, parametersJSON = parameters; ///
598
- parameters = parametersJSON.map((parameterJSON)=>{
599
- const json = parameterJSON, parameter = Parameter.fromJSON(json, context);
600
- return parameter;
601
- });
602
- return parameters;
603
- }
604
- function judgementsFromJSON(json, context) {
605
- let { judgements } = json;
606
- const { Judgement } = _elements.default, judgementsJSON = judgements; ///
607
- judgements = judgementsJSON.map((judgementJSON)=>{
608
- const json = judgementJSON, judgement = Judgement.fromJSON(json, context);
609
- return judgement;
610
- });
611
- return judgements;
612
- }
613
- function statementsFromJSON(json, context) {
614
- let { statements } = json;
615
- const { Statement } = _elements.default, statementsJSON = statements; ///
616
- statements = statementsJSON.map((statementJSON)=>{
617
- const json = statementJSON, statement = Statement.fromJSON(json, context);
618
- return statement;
619
- });
620
- return statements;
621
- }
622
- function assertionsFromJSON(json, context) {
623
- let { assertions } = json;
624
- const { TypeAssertion, DefinedAssertion, PropertyAssertion, SubproofAssertion, SignatureAssertion, ContainedAssertion } = _elements.default, assertionsJSON = assertions; ///
625
- assertions = assertionsJSON.map((assertionJSON)=>{
626
- const json = assertionJSON, assertion = TypeAssertion.fromJSON(json, context) || DefinedAssertion.fromJSON(json, context) || PropertyAssertion.fromJSON(json, context) || SubproofAssertion.fromJSON(json, context) || SignatureAssertion.fromJSON(json, context) || ContainedAssertion.fromJSON(json, context);
627
- return assertion;
628
- });
629
- return assertions;
630
- }
631
- function referencesFromJSON(json, context) {
632
- let { references } = json;
633
- const { Reference } = _elements.default, referencesJSON = references; ///
634
- references = referencesJSON.map((referenceJSON)=>{
635
- const json = referenceJSON, reference = Reference.fromJSON(json, context);
636
- return reference;
637
- });
638
- return references;
639
- }
640
- function signaturesFromJSON(json, context) {
641
- let { signatures } = json;
642
- const { Signature } = _elements.default, signaturesJSON = signatures; ///
643
- signatures = signaturesJSON.map((signatureJSON)=>{
644
- const json = signatureJSON, signature = Signature.fromJSON(json, context);
645
- return signature;
646
- });
647
- return signatures;
648
- }
649
- function conjecturesFromJSON(json, context) {
650
- let { conjectures } = json;
651
- const { Conjecture } = _elements.default, conjecturesJSON = conjectures; ///
652
- conjectures = conjecturesJSON.map((conjectureJSON)=>{
653
- const json = conjectureJSON, conjecture = Conjecture.fromJSON(json, context);
654
- return conjecture;
655
- });
656
- return conjectures;
657
- }
658
- function combinatorsFromJSON(json, context) {
659
- let { combinators } = json;
660
- const { Combinator } = _elements.default, combinatorsJSON = combinators; ///
661
- combinators = combinatorsJSON.map((combinatorJSON)=>{
662
- const json = combinatorJSON, combinator = Combinator.fromJSON(json, context);
663
- return combinator;
664
- });
665
- return combinators;
666
- }
667
- function assumptionsFromJSON(json, context) {
668
- let { assumptions } = json;
669
- const { Assumption } = _elements.default, assumptionsJSON = assumptions; ///
670
- assumptions = assumptionsJSON.map((assumptionJSON)=>{
671
- const json = assumptionJSON, assumption = Assumption.fromJSON(json, context);
672
- return assumption;
673
- });
674
- return assumptions;
675
- }
676
- function typePrefixesFromJSON(json, context) {
677
- let { typePrefixes } = json;
678
- const { TypePrefix } = _elements.default, typePrefixesJSON = typePrefixes; ///
679
- typePrefixes = typePrefixesJSON.map((typePrefixJSON)=>{
680
- const json = typePrefixJSON, typePrefix = TypePrefix.fromJSON(json, context);
681
- return typePrefix;
682
- });
683
- return typePrefixes;
684
- }
685
- function constructorsFromJSON(json, context) {
686
- let { constructors } = json;
687
- const { Constructor } = _elements.default, constructorsJSON = constructors; ///
688
- constructors = constructorsJSON.map((constructorJSON)=>{
689
- const json = constructorJSON, constructor = Constructor.fromJSON(json, context);
690
- return constructor;
691
- });
692
- return constructors;
693
- }
694
- function metatheoremsFromJSON(json, context) {
695
- let { metatheorems } = json;
696
- const { Metatheorem } = _elements.default, metatheoremsJSON = metatheorems; ///
697
- metatheorems = metatheoremsJSON.map((metatheoremJSON)=>{
698
- const json = metatheoremJSON, metatheorem = Metatheorem.fromJSON(json, context);
699
- return metatheorem;
700
- });
701
- return metatheorems;
702
- }
703
- function suppositionsFromJSON(json, context) {
704
- let { suppositions } = json;
705
- const { Supposition } = _elements.default, suppositionsJSON = suppositions; ///
706
- suppositions = suppositionsJSON.map((suppositionJSON)=>{
707
- const json = suppositionJSON, supposition = Supposition.fromJSON(json, context);
708
- return supposition;
709
- });
710
- return suppositions;
711
- }
712
- function substitutionsFromJSON(json, context) {
713
- let { substitutions } = json; ///
714
- const substitutionsJSON = substitutions; ///
715
- substitutions = substitutionsJSON.map((substitutionJSON)=>{
716
- const json = substitutionJSON, substitution = substitutionFromSubstitutionJSON(json, context);
717
- return substitution;
718
- });
719
- return substitutions;
720
- }
721
- function metavariablesFromJSON(json, context) {
722
- let { metavariables } = json;
723
- const { Metavariable } = _elements.default, metavariablesJSON = metavariables; ///
724
- metavariables = metavariablesJSON.map((metavariableJSON)=>{
725
- const json = metavariableJSON, metavariable = Metavariable.fromJSON(json, context);
726
- return metavariable;
727
- });
728
- return metavariables;
729
- }
730
- function mnemicContextsFromJSON(json, context) {
731
- const releaseContext = context; ///
732
- const { contexts } = json;
733
- const mnemicContexts = contexts.map((context)=>{
734
- json = context; ///
735
- context = releaseContext; ///
736
- const mnemicContext = _mnemic.default.fromJSON(json, context);
737
- return mnemicContext; ///
738
- });
739
- return mnemicContexts;
740
- }
741
- function declaredVariablesFromJSON(json, context) {
742
- let { declaredVariables } = json;
743
- const { Variable } = _elements.default, declaredVariablesJSON = declaredVariables; ///
744
- declaredVariables = declaredVariablesJSON.map((declaredVariableJSON)=>{
745
- const json = declaredVariableJSON, variable = Variable.fromJSON(json, context), declaredVariable = variable; ///
746
- return declaredVariable;
747
- });
748
- return declaredVariables;
749
- }
750
- function propertyRelationsFromJSON(json, context) {
751
- let { propertyRelations } = json;
752
- const { PropertyRelation } = _elements.default, propertyRelationsJSON = propertyRelations; ///
753
- propertyRelations = propertyRelationsJSON.map((propertyRelationJSON)=>{
754
- const json = propertyRelationJSON, propertyRelation = PropertyRelation.fromJSON(json, context);
755
- return propertyRelation;
756
- });
757
- return propertyRelations;
758
- }
759
- function metaLevelAssumptionsFromJSON(json, context) {
760
- let { metaLevelAssumptions } = json;
761
- const { MetaLevelAssumption } = _elements.default, metaLevelAssumptionsJSON = metaLevelAssumptions; ///
762
- metaLevelAssumptions = metaLevelAssumptionsJSON.map((metaLevelAssumptionJSON)=>{
763
- const json = metaLevelAssumptionJSON, metaLevelAssumption = MetaLevelAssumption.fromJSON(json, context);
764
- return metaLevelAssumption;
765
- });
766
- return metaLevelAssumptions;
767
- }
768
- function declaredMetavariablesFromJSON(json, context) {
769
- let { declaredMetavariables } = json;
770
- const { Metavariable } = _elements.default, declaredMetavariablesJSON = declaredMetavariables; ///
771
- declaredMetavariables = declaredMetavariablesJSON.map((declaredMetavariableJSON)=>{
772
- const json = declaredMetavariableJSON, metavariable = Metavariable.fromJSON(json, context), declaredMetavariable = metavariable; ///
773
- return declaredMetavariable;
774
- });
775
- return declaredMetavariables;
776
- }
777
- function nameToNameJSON(name) {
778
- const nameJSON = name; ///
779
- return nameJSON;
780
- }
781
- function termToTermJSON(term) {
782
- const termJSON = term !== null ? term.toJSON() : null;
783
- return termJSON;
784
- }
785
- function typeToTypeJSON(type) {
786
- let typeJSON = null;
787
- if (type !== null) {
788
- const abridged = true;
789
- typeJSON = type.toJSON(abridged);
790
- }
791
- return typeJSON;
792
- }
793
- function frameToFrameJSON(frame) {
794
- const frameJSON = frame !== null ? frame.toJSON() : null;
795
- return frameJSON;
796
- }
797
- function labelToLabelJSON(label) {
798
- const labelJSON = label.toJSON();
799
- return labelJSON;
800
- }
801
- function negatedToNegatedJSON(negated) {
802
- const negatedJSON = negated; ///
803
- return negatedJSON;
804
- }
805
- function ariableToVariableJSON(ariable) {
806
- const ariableJSON = ariable.toJSON();
807
- return ariableJSON;
808
- }
809
- function metaTypeToMetaTypeJSON(metaType) {
810
- const metaTypeJSON = metaType !== null ? metaType.toJSON() : null;
811
- return metaTypeJSON;
812
- }
813
- function referenceToReferenceJSON(reference) {
814
- const referenceJSON = reference.toJSON();
815
- return referenceJSON;
816
- }
817
- function statementToStatementJSON(statement) {
818
- const statementJSON = statement !== null ? statement.toJSON() : null;
819
- return statementJSON;
820
- }
821
- function deductionToDeductionJSON(deduction) {
822
- const deductionJSON = deduction.toJSON();
823
- return deductionJSON;
824
- }
825
- function signatureToSignatureJSON(signature) {
826
- const signatureJSON = signature !== null ? signature.toJSON() : null;
827
- return signatureJSON;
828
- }
829
- function identifierToIdentifierJSON(identifier) {
830
- const identifierJSON = identifier; ///
831
- return identifierJSON;
832
- }
833
- function conclusionToConclusionJSON(conclusion) {
834
- const conclusionJSON = conclusion.toJSON();
835
- return conclusionJSON;
836
- }
837
- function provisionalToProvisionalJSON(provisional) {
838
- const provisionalJSON = provisional; ///
839
- return provisionalJSON;
840
- }
841
- function metavariableToMetavariableJSON(metavariable) {
842
- const metavariableJSON = metavariable.toJSON();
843
- return metavariableJSON;
844
- }
845
- function procedureCallToProcedureCallJSON(procedureCall) {
846
- const procedureCallJSON = procedureCall !== null ? procedureCall.toJSON() : null;
847
- return procedureCallJSON;
848
- }
849
- function mnemicContextToMnemicContextJSON(mnemicContext) {
850
- const mnemicContextJSON = mnemicContext.toJSON();
851
- return mnemicContextJSON;
852
- }
853
- function procedureReferenceToProcedureReferenceJSON(procedureReference) {
854
- const procedureReferenceJSON = procedureReference.toJSON();
855
- return procedureReferenceJSON;
856
- }
857
- function declaredMetavariableToDEclaredMetavariableJSON(declaredMetavariable) {
858
- const declaredMetavariableJSON = declaredMetavariable.toJSON();
859
- return declaredMetavariableJSON;
860
- }
861
- function substitutionFromSubstitutionJSON(json, context) {
862
- const { TermSubstitution, FrameSubstitution, StatementSubstitution, ReferenceSubstitution } = _elements.default, substitution = TermSubstitution.fromJSON(json, context) || FrameSubstitution.fromJSON(json, context) || StatementSubstitution.fromJSON(json, context) || ReferenceSubstitution.fromJSON(json, context);
863
- return substitution;
864
- }
865
- function termsToTermsJSON(terms) {
866
- const termsJSON = terms.map((term)=>{
867
- const termJSON = term.toJSON();
868
- return termJSON;
869
- });
870
- return termsJSON;
871
- }
872
- function typesToTypesJSON(types) {
873
- const typesJSON = types.map((type)=>{
874
- const typeJSON = type.toJSON();
875
- return typeJSON;
876
- });
877
- return typesJSON;
878
- }
879
- function rulesToRulesJSON(rules) {
880
- const rulesJSON = rules.map((rule)=>{
881
- const ruleJSON = rule.toJSON();
882
- return ruleJSON;
883
- });
884
- return rulesJSON;
885
- }
886
- function labelsToLabelsJSON(labels) {
887
- const labelsJSON = labels.map((label)=>{
888
- const labelJSON = label.toJSON();
889
- return labelJSON;
890
- });
891
- return labelsJSON;
892
- }
893
- function framesToFramesJSON(frames) {
894
- const framesJSON = frames.map((frame)=>{
895
- const frameJSON = frame.toJSON();
896
- return frameJSON;
897
- });
898
- return framesJSON;
899
- }
900
- function axiomsToAxiomsJSON(axioms) {
901
- const axiomsJSON = axioms.map((axiom)=>{
902
- const axiomJSON = axiom.toJSON();
903
- return axiomJSON;
904
- });
905
- return axiomsJSON;
906
- }
907
- function premisesToPremisesJSON(premises) {
908
- const premisesJSON = premises.map((premise)=>{
909
- const premiseJSON = premise.toJSON();
910
- return premiseJSON;
911
- });
912
- return premisesJSON;
913
- }
914
- function theoremsToTheoremsJSON(theorems) {
915
- const theoremsJSON = theorems.map((theorem)=>{
916
- const theoremJSON = theorem.toJSON();
917
- return theoremJSON;
918
- });
919
- return theoremsJSON;
920
- }
921
- function variablesToVariablesJSON(variables) {
922
- const variablesJSON = variables.map((variable)=>{
923
- const variableJSON = variable.toJSON();
924
- return variableJSON;
925
- });
926
- return variablesJSON;
927
- }
928
- function hypothesesToHypothesesJSON(hypotheses) {
929
- const hypothesesJSON = hypotheses.map((hypothesis)=>{
930
- const hypothesisJSON = hypothesis.toJSON();
931
- return hypothesisJSON;
932
- });
933
- return hypothesesJSON;
934
- }
935
- function prefixnameToPrevixNameJSON(prefixname) {
936
- const prefixNameJSON = prefixname; ///
937
- return prefixNameJSON;
938
- }
939
- function superTypesToSuperTypesJSON(superTypes) {
940
- const superTypesJSON = superTypes.map((superType)=>{
941
- const abridged = true, superTypeJSON = superType.toJSON(abridged);
942
- return superTypeJSON;
943
- });
944
- return superTypesJSON;
945
- }
946
- function parametersToParametersJSON(parameters) {
947
- const parametersJSON = parameters.map((parameter)=>{
948
- const parameterJSON = parameter.toJSON();
949
- return parameterJSON;
950
- });
951
- return parametersJSON;
952
- }
953
- function propertiesToPropertiesJSON(properties) {
954
- const propertiesJSON = properties.map((property)=>{
955
- const propertyJSON = property.toJSON();
956
- return propertyJSON;
957
- });
958
- return propertiesJSON;
959
- }
960
- function judgementsToJudgementsJSON(judgements) {
961
- const judgementsJSON = judgements.map((judgement)=>{
962
- const judgementJSON = judgement.toJSON();
963
- return judgementJSON;
964
- });
965
- return judgementsJSON;
966
- }
967
- function equalitiesToEqualitiesJSON(equalities) {
968
- const equalitiesJSON = equalities.map((equality)=>{
969
- const equalityJSON = equality.toJSON();
970
- return equalityJSON;
971
- });
972
- return equalitiesJSON;
973
- }
974
- function statementsToStatementsJSON(statements) {
975
- const statementsJSON = statements.map((statement)=>{
976
- const statementJSON = statement.toJSON();
977
- return statementJSON;
978
- });
979
- return statementsJSON;
980
- }
981
- function signaturesToSignaturesJSON(signatures) {
982
- const signaturesJSON = signatures.map((signature)=>{
983
- const signatureJSON = signature.toJSON();
984
- return signatureJSON;
985
- });
986
- return signaturesJSON;
987
- }
988
- function assertionsToAssertionsJSON(assertions) {
989
- const assertionsJSON = assertions.map((assertion)=>{
990
- const assertionJSON = assertion.toJSON();
991
- return assertionJSON;
992
- });
993
- return assertionsJSON;
994
- }
995
- function referencesToReferencesJSON(references) {
996
- const referencesJSON = references.map((reference)=>{
997
- const referenceJSON = reference.toJSON();
998
- return referenceJSON;
999
- });
1000
- return referencesJSON;
1001
- }
1002
- function conjecturesToConjecturesJSON(conjectures) {
1003
- const conjecturesJSON = conjectures.map((conjecture)=>{
1004
- const conjectureJSON = conjecture.toJSON();
1005
- return conjectureJSON;
1006
- });
1007
- return conjecturesJSON;
1008
- }
1009
- function combinatorsToCombinatorsJSON(combinators) {
1010
- const combinatorsJSON = combinators.map((combinator)=>{
1011
- const combinatorJSON = combinator.toJSON();
1012
- return combinatorJSON;
1013
- });
1014
- return combinatorsJSON;
1015
- }
1016
- function assumptionsToAssumptionsJSON(assumptions) {
1017
- const assumptionsJSON = assumptions.map((assumption)=>{
1018
- const assumptionJSON = assumption.toJSON();
1019
- return assumptionJSON;
1020
- });
1021
- return assumptionsJSON;
1022
- }
1023
- function suppositionsToSuppositionsJSON(suppositions) {
1024
- const suppositionsJSON = suppositions.map((supposition)=>{
1025
- const suppositionJSON = supposition.toJSON();
1026
- return suppositionJSON;
1027
- });
1028
- return suppositionsJSON;
1029
- }
1030
- function constructorsToConstructorsJSON(constructors) {
1031
- const constructorsJSON = constructors.map((constructor)=>{
1032
- const constructorJSON = constructor.toJSON();
1033
- return constructorJSON;
1034
- });
1035
- return constructorsJSON;
1036
- }
1037
- function metatheoremsToMetatheoremsJSON(metatheorems) {
1038
- const metatheoremsJSON = metatheorems.map((metatheorem)=>{
1039
- const metatheoremJSON = metatheorem.toJSON();
1040
- return metatheoremJSON;
1041
- });
1042
- return metatheoremsJSON;
1043
- }
1044
- function typePrefixesToTypePrefixesJSON(typePrefixes) {
1045
- const typePrefixesJSON = typePrefixes.map((typePrefix)=>{
1046
- const typePrefixJSON = typePrefix.toJSON();
1047
- return typePrefixJSON;
1048
- });
1049
- return typePrefixesJSON;
1050
- }
1051
- function substitutionsToSubstitutionsJSON(substitutions) {
1052
- const substitutionsJSON = substitutions.map((substitution)=>{
1053
- const substitutionJSON = substitution.toJSON();
1054
- return substitutionJSON;
1055
- });
1056
- return substitutionsJSON;
1057
- }
1058
- function metavariablesToMetavariablesJSON(metavariables) {
1059
- const metavariablesJSON = metavariables.map((metavariable)=>{
1060
- const metavariableJSON = metavariable.toJSON();
1061
- return metavariableJSON;
1062
- });
1063
- return metavariablesJSON;
1064
- }
1065
- function mnemicContextsToMnemicContextsJSON(mnemicContexts) {
1066
- const mnemicContextsJSON = mnemicContexts.map((mnemicContext)=>{
1067
- const mnemicContextJSON = mnemicContext.toJSON();
1068
- return mnemicContextJSON;
1069
- });
1070
- return mnemicContextsJSON;
1071
- }
1072
- function propertyRelationsToPropertyRelationsJSON(propertyRelations) {
1073
- const propertyRelationsJSON = propertyRelations.map((propertyRelation)=>{
1074
- const propertyRelationJSON = propertyRelation.toJSON();
1075
- return propertyRelationJSON;
1076
- });
1077
- return propertyRelationsJSON;
1078
- }
1079
- function declaredVariablesToDeclaredVariablesJSON(declaredVariables) {
1080
- const declaredVariablesJSON = declaredVariables.map((declaredVariable)=>{
1081
- const declaredVariableJSON = declaredVariable.toJSON();
1082
- return declaredVariableJSON;
1083
- });
1084
- return declaredVariablesJSON;
1085
- }
1086
- function metaLevelAssumptionsToMetaLevelAssumptionsJSON(metaLevelAssumptions) {
1087
- const metaLevelAssumptionsJSON = metaLevelAssumptions.map((metaLevelAssumption)=>{
1088
- const metaLevelAssumptionJSON = metaLevelAssumption.toJSON();
1089
- return metaLevelAssumptionJSON;
1090
- });
1091
- return metaLevelAssumptionsJSON;
1092
- }
1093
- function declaredMetavariablesToDeclaredMetavariablesJSON(declaredMetavariables) {
1094
- const declaredMetavariablesJSON = declaredMetavariables.map((declaredMetavariable)=>{
1095
- const declaredMetavariableJSON = declaredMetavariable.toJSON();
1096
- return declaredMetavariableJSON;
1097
- });
1098
- return declaredMetavariablesJSON;
1099
- }
1100
- function findTypeByName(name, context) {
1101
- const typeName = name, type = context.findTypeByTypeName(typeName);
1102
- return type;
1103
- }
1104
- function findMetaTypeByName(name, context) {
1105
- const metaTypeName = name, metaType = context.findMetaTypeByMetaTypeName(metaTypeName);
1106
- return metaType;
1107
- }
1108
-
1109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvanNvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGVsZW1lbnRzIGZyb20gXCIuLi9lbGVtZW50c1wiO1xuaW1wb3J0IE1uZW1pY0NvbnRleHQgZnJvbSBcIi4uL2NvbnRleHQvbW5lbWljXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBuYW1lRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBuYW1lIH0gPSBqc29uO1xuXG4gIGNvbnN0IG5hbWVKU09OID0gbmFtZTsgIC8vL1xuXG4gIG5hbWUgPSBuYW1lSlNPTjsgIC8vL1xuXG4gIHJldHVybiBuYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVybUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgdGVybSB9ID0ganNvbjtcblxuICBpZiAodGVybSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHRlcm1KU09OID0gdGVybTsgIC8vL1xuXG4gICAganNvbiA9IHRlcm1KU09OOyAgLy8vXG5cbiAgICBjb25zdCB7IFRlcm0gfSA9IGVsZW1lbnRzO1xuXG4gICAgdGVybSA9IFRlcm0uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gdGVybTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHR5cGUgfSA9IGpzb247XG5cbiAgaWYgKHR5cGUgIT09IG51bGwpIHtcbiAgICBqc29uID0gdHlwZTsgIC8vL1xuXG4gICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgbmFtZSA9IHN0cmluZzsgIC8vL1xuXG4gICAgdHlwZSA9IGZpbmRUeXBlQnlOYW1lKG5hbWUsIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHR5cGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbEZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbGFiZWwgfSA9IGpzb247XG5cbiAgY29uc3QgeyBMYWJlbCB9ID0gZWxlbWVudHMsXG4gICAgbGFiZWxKU09OID0gbGFiZWw7ICAvLy9cblxuICBqc29uID0gbGFiZWxKU09OOyAvLy9cblxuICBsYWJlbCA9IExhYmVsLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiBsYWJlbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyYW1lRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBmcmFtZSB9ID0ganNvbjtcblxuICBpZiAoZnJhbWUgIT09IG51bGwpIHtcbiAgICBjb25zdCBmcmFtZUpTT04gPSBmcmFtZTsgIC8vL1xuXG4gICAganNvbiA9IGZyYW1lSlNPTjsgIC8vL1xuXG4gICAgY29uc3QgeyBGcmFtZSB9ID0gZWxlbWVudHM7XG5cbiAgICBmcmFtZSA9IEZyYW1lLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIGZyYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmVnYXRlZEZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgY29uc3QgeyBuZWdhdGVkIH0gPSBqc29uO1xuXG4gIHJldHVybiBuZWdhdGVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YVR5cGVGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IG1ldGFUeXBlIH0gPSBqc29uO1xuXG4gIGlmIChtZXRhVHlwZSAhPT0gbnVsbCkge1xuICAgIGpzb24gPSBtZXRhVHlwZTsgIC8vL1xuXG4gICAgY29uc3QgeyBzdHJpbmcgfSA9IGpzb24sXG4gICAgICAgICAgbmFtZSA9IHN0cmluZzsgIC8vL1xuXG4gICAgbWV0YVR5cGUgPSBmaW5kTWV0YVR5cGVCeU5hbWUobmFtZSwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gbWV0YVR5cGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZW1lbnRGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHN0YXRlbWVudCA9IG51bGwgfSA9IGpzb247XG5cbiAgaWYgKHN0YXRlbWVudCAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHsgU3RhdGVtZW50IH0gPSBlbGVtZW50cyxcbiAgICAgICAgICBzdGF0ZW1lbnRKU09OID0gc3RhdGVtZW50OyAgLy8vXG5cbiAgICBqc29uID0gc3RhdGVtZW50SlNPTjsgLy8vXG5cbiAgICBzdGF0ZW1lbnQgPSBTdGF0ZW1lbnQuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gc3RhdGVtZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVkdWN0aW9uRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBkZWR1Y3Rpb24gfSA9IGpzb247XG5cbiAgY29uc3QgeyBEZWR1Y3Rpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBkZWR1Y3Rpb25KU09OID0gZGVkdWN0aW9uOyAgLy8vXG5cbiAganNvbiA9IGRlZHVjdGlvbkpTT047ICAvLy9cblxuICBkZWR1Y3Rpb24gPSBEZWR1Y3Rpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGRlZHVjdGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hdHVyZUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgc2lnbmF0dXJlID0gbnVsbCB9ID0ganNvbjtcblxuICBpZiAoc2lnbmF0dXJlICE9PSBudWxsKSB7XG4gICAgY29uc3QgeyBTaWduYXR1cmUgfSA9IGVsZW1lbnRzLFxuICAgICAgICAgIHNpZ25hdHVyZUpTT04gPSBzaWduYXR1cmU7ICAvLy9cblxuICAgIGpzb24gPSBzaWduYXR1cmVKU09OOyAvLy9cblxuICAgIHNpZ25hdHVyZSA9IFNpZ25hdHVyZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBzaWduYXR1cmU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZlcmVuY2VGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHJlZmVyZW5jZSB9ID0ganNvbjtcblxuICBjb25zdCB7IFJlZmVyZW5jZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHJlZmVyZW5jZUpTT04gPSByZWZlcmVuY2U7ICAvLy9cblxuICBqc29uID0gcmVmZXJlbmNlSlNPTjsgLy8vXG5cbiAgcmVmZXJlbmNlID0gUmVmZXJlbmNlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiByZWZlcmVuY2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpZGVudGlmaWVyRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBpZGVudGlmaWVyIH0gPSBqc29uO1xuXG4gIGNvbnN0IGlkZW50aWZpZXJKU09OID0gaWRlbnRpZmllcjsgIC8vL1xuXG4gIGlkZW50aWZpZXIgPSBpZGVudGlmaWVySlNPTjsgIC8vL1xuXG4gIHJldHVybiBpZGVudGlmaWVyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29uY2x1c2lvbkZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgY29uY2x1c2lvbiB9ID0ganNvbjtcblxuICBjb25zdCB7IENvbmNsdXNpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBjb25jbHVzaW9uSlNPTiA9IGNvbmNsdXNpb247ICAvLy9cblxuICBqc29uID0gY29uY2x1c2lvbkpTT047ICAvLy9cblxuICBjb25jbHVzaW9uID0gQ29uY2x1c2lvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICByZXR1cm4gY29uY2x1c2lvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3Zpc2lvbmFsRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBjb25zdCB7IHByb3Zpc2lvbmFsIH0gPSBqc29uO1xuXG4gIHJldHVybiBwcm92aXNpb25hbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGF2YXJpYWJsZUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbWV0YXZhcmlhYmxlIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTWV0YXZhcmlhYmxlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbWV0YXZhcmlhYmxlSlNPTiA9IG1ldGF2YXJpYWJsZTsgIC8vL1xuXG4gIGpzb24gPSBtZXRhdmFyaWFibGVKU09OOyAvLy9cblxuICBtZXRhdmFyaWFibGUgPSBNZXRhdmFyaWFibGUuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIG1ldGF2YXJpYWJsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1uZW1pY0NvbnRleHRGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGNvbnN0IHJlbGVhc2VDb250ZXh0ID0gY29udGV4dDsgLy8vXG5cbiAgKHsgY29udGV4dCB9ID0ganNvbik7XG5cbiAganNvbiA9IGNvbnRleHQ7IC8vL1xuXG4gIGNvbnRleHQgPSByZWxlYXNlQ29udGV4dDsgLy8vXG5cbiAgY29uc3QgbW5lbWljQ29udGV4dCA9IE1uZW1pY0NvbnRleHQuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgcmV0dXJuIG1uZW1pY0NvbnRleHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZWR1cmVDYWxsRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBwcm9jZWR1cmVDYWxsID0gbnVsbCB9ID0ganNvbjtcblxuICBpZiAocHJvY2VkdXJlQ2FsbCAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHsgUHJvY2VkdXJlQ2FsbCB9ID0gZWxlbWVudHMsXG4gICAgICAgICAgcHJvY2VkdXJlQ2FsbEpTT04gPSBwcm9jZWR1cmVDYWxsOyAgLy8vXG5cbiAgICBqc29uID0gcHJvY2VkdXJlQ2FsbEpTT047IC8vL1xuXG4gICAgcHJvY2VkdXJlQ2FsbCA9IFByb2NlZHVyZUNhbGwuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG4gIH1cblxuICByZXR1cm4gcHJvY2VkdXJlQ2FsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2NlZHVyZVJlZmVyZW5jZUZyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgcHJvY2VkdXJlUmVmZXJlbmNlIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgUHJvY2VkdXJlUmVmZXJlbmNlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgcHJvY2VkdXJlUmVmZXJlbmNlSlNPTiA9IHByb2NlZHVyZVJlZmVyZW5jZTsgIC8vL1xuXG4gIGpzb24gPSBwcm9jZWR1cmVSZWZlcmVuY2VKU09OOyAgLy8vXG5cbiAgcHJvY2VkdXJlUmVmZXJlbmNlID0gUHJvY2VkdXJlUmVmZXJlbmNlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiBwcm9jZWR1cmVSZWZlcmVuY2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlc0Zyb21KU09OKGpzb24sIHR5cGVzLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgdHlwZXM6IHR5cGVzSlNPTiB9ID0ganNvbjtcblxuICBjb25zdCB7IFR5cGUgfSA9IGVsZW1lbnRzO1xuXG4gIHR5cGVzSlNPTi5mb3JFYWNoKCh0eXBlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSB0eXBlSlNPTiwgIC8vL1xuICAgICAgICAgIHR5cGUgPSBUeXBlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgdHlwZXMucHVzaCh0eXBlKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgdGVybXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBUZXJtIH0gPSBlbGVtZW50cyxcbiAgICAgICAgdGVybXNKU09OID0gdGVybXM7IC8vL1xuXG4gIHRlcm1zID0gdGVybXNKU09OLm1hcCgodGVybUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gdGVybUpTT04sICAvLy9cbiAgICAgICAgICB0ZXJtID0gVGVybS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiB0ZXJtO1xuICB9KTtcblxuICByZXR1cm4gdGVybXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBydWxlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgcnVsZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBSdWxlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgcnVsZXNKU09OID0gcnVsZXM7IC8vL1xuXG4gIHJ1bGVzID0gcnVsZXNKU09OLm1hcCgocnVsZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gcnVsZUpTT04sICAvLy9cbiAgICAgICAgICBydWxlID0gUnVsZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBydWxlO1xuICB9KTtcblxuICByZXR1cm4gcnVsZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmcmFtZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGZyYW1lcyB9ID0ganNvbjtcblxuICBjb25zdCB7IEZyYW1lIH0gPSBlbGVtZW50cyxcbiAgICBmcmFtZXNKU09OID0gZnJhbWVzOyAvLy9cblxuICBmcmFtZXMgPSBmcmFtZXNKU09OLm1hcCgoZnJhbWVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGZyYW1lSlNPTiwgIC8vL1xuICAgICAgICAgIGZyYW1lID0gRnJhbWUuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gZnJhbWU7XG4gIH0pO1xuXG4gIHJldHVybiBmcmFtZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbHNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGxhYmVscyB9ID0ganNvbjtcblxuICBjb25zdCB7IExhYmVsIH0gPSBlbGVtZW50cyxcbiAgICAgICAgbGFiZWxzSlNPTiA9IGxhYmVsczsgIC8vL1xuXG4gIGxhYmVscyA9IGxhYmVsc0pTT04ubWFwKChsYWJlbEpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gbGFiZWxKU09OLCAvLy9cbiAgICAgICAgICBsYWJlbCA9IExhYmVsLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGxhYmVsO1xuICB9KTtcblxuICByZXR1cm4gbGFiZWxzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXhpb21zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBheGlvbXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBBeGlvbSB9ID0gZWxlbWVudHMsXG4gICAgICAgIGF4aW9tc0pTT04gPSBheGlvbXM7IC8vL1xuXG4gIGF4aW9tcyA9IGF4aW9tc0pTT04ubWFwKChheGlvbUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gYXhpb21KU09OLCAgLy8vXG4gICAgICAgICAgYXhpb20gPSBBeGlvbS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBheGlvbTtcbiAgfSk7XG5cbiAgcmV0dXJuIGF4aW9tcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZW1pc2VzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBwcmVtaXNlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFByZW1pc2UgfSA9IGVsZW1lbnRzLFxuICAgICAgICBwcmVtaXNlc0pTT04gPSBwcmVtaXNlczsgIC8vL1xuXG4gIHByZW1pc2VzID0gcHJlbWlzZXNKU09OLm1hcCgocHJlbWlzZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gcHJlbWlzZUpTT04sIC8vL1xuICAgICAgICAgIHByZW1pc2UgPSBQcmVtaXNlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHByZW1pc2U7XG4gIH0pO1xuXG4gIHJldHVybiBwcmVtaXNlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRoZW9yZW1zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyB0aGVvcmVtcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFRoZW9yZW0gfSA9IGVsZW1lbnRzLFxuICAgICAgICB0aGVvcmVtc0pTT04gPSB0aGVvcmVtczsgLy8vXG5cbiAgdGhlb3JlbXMgPSB0aGVvcmVtc0pTT04ubWFwKCh0aGVvcmVtSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSB0aGVvcmVtSlNPTiwgIC8vL1xuICAgICAgICAgIHRoZW9yZW0gPSBUaGVvcmVtLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHRoZW9yZW07XG4gIH0pO1xuXG4gIHJldHVybiB0aGVvcmVtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgdmFyaWFibGVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVmFyaWFibGUgfSA9IGVsZW1lbnRzLFxuICAgICAgICB2YXJpYWJsZXNKU09OID0gdmFyaWFibGVzOyAvLy9cblxuICB2YXJpYWJsZXMgPSB2YXJpYWJsZXNKU09OLm1hcCgodmFyaWFibGVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHZhcmlhYmxlSlNPTiwgIC8vL1xuICAgICAgICAgIHZhcmlhYmxlID0gVmFyaWFibGUuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gdmFyaWFibGU7XG4gIH0pO1xuXG4gIHJldHVybiB2YXJpYWJsZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9wZXJ0aWVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBwcm9wZXJ0aWVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgUHJvcGVydHkgfSA9IGVsZW1lbnRzLFxuICAgICAgICBwcm9wZXJ0aWVzSlNPTiA9IHByb3BlcnRpZXM7IC8vL1xuXG4gIHByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzSlNPTi5tYXAoKHByb3BlcnR5SlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBwcm9wZXJ0eUpTT04sICAvLy9cbiAgICAgICAgICBwcm9wZXJ0eSA9IFByb3BlcnR5LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHByb3BlcnR5O1xuICB9KTtcblxuICByZXR1cm4gcHJvcGVydGllcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVxdWFsaXRpZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGVxdWFsaXRpZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBFcXVhbGl0eSB9ID0gZWxlbWVudHMsXG4gICAgZXF1YWxpdGllc0pTT04gPSBlcXVhbGl0aWVzOyAvLy9cblxuICBlcXVhbGl0aWVzID0gZXF1YWxpdGllc0pTT04ubWFwKChlcXVhbGl0eUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gZXF1YWxpdHlKU09OLCAgLy8vXG4gICAgICBlcXVhbGl0eSA9IEVxdWFsaXR5LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGVxdWFsaXR5O1xuICB9KTtcblxuICByZXR1cm4gZXF1YWxpdGllcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZWZpeE5hbWVGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgcHJlZml4TmFtZSB9ID0ganNvbjtcblxuICByZXR1cm4gcHJlZml4TmFtZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cGVyVHlwZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgc3VwZXJUeXBlczogc3VwZXJUeXBlc0pTT04gfSA9IGpzb247XG5cbiAgY29uc3Qgc3VwZXJUeXBlcyA9IHN1cGVyVHlwZXNKU09OLm1hcCgoc3VwZXJUeXBlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBzdXBlclR5cGVKU09OLCAgLy8vXG4gICAgICB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgIG5hbWUgPSBzdHJpbmcsICAvLy9cbiAgICAgIHR5cGUgPSBmaW5kVHlwZUJ5TmFtZShuYW1lLCBjb250ZXh0KSxcbiAgICAgIHN1cGVyVHlwZSA9IHR5cGU7IC8vL1xuXG4gICAgcmV0dXJuIHN1cGVyVHlwZTtcbiAgfSk7XG5cbiAgcmV0dXJuIHN1cGVyVHlwZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoeXBvdGhlc2VzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBoeXBvdGhlc2VzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgSHlwb3RoZXNpcyB9ID0gZWxlbWVudHMsXG4gICAgICAgIGh5cG90aGVzZXNKU09OID0gaHlwb3RoZXNlczsgIC8vL1xuXG4gIGh5cG90aGVzZXMgPSBoeXBvdGhlc2VzSlNPTi5tYXAoKGh5cG90aGVzaXNKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGh5cG90aGVzaXNKU09OLCAvLy9cbiAgICAgICAgICBoeXBvdGhlc2lzID0gSHlwb3RoZXNpcy5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBoeXBvdGhlc2lzO1xuICB9KTtcblxuICByZXR1cm4gaHlwb3RoZXNlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcmFtZXRlcnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHBhcmFtZXRlcnMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBQYXJhbWV0ZXIgfSA9IGVsZW1lbnRzLFxuICAgICAgICBwYXJhbWV0ZXJzSlNPTiA9IHBhcmFtZXRlcnM7IC8vL1xuXG4gIHBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzSlNPTi5tYXAoKHBhcmFtZXRlckpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gcGFyYW1ldGVySlNPTiwgIC8vL1xuICAgICAgICAgIHBhcmFtZXRlciA9IFBhcmFtZXRlci5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBwYXJhbWV0ZXI7XG4gIH0pO1xuXG4gIHJldHVybiBwYXJhbWV0ZXJzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24ganVkZ2VtZW50c0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsganVkZ2VtZW50cyB9ID0ganNvbjtcblxuICBjb25zdCB7IEp1ZGdlbWVudCB9ID0gZWxlbWVudHMsXG4gICAgICAgIGp1ZGdlbWVudHNKU09OID0ganVkZ2VtZW50czsgLy8vXG5cbiAganVkZ2VtZW50cyA9IGp1ZGdlbWVudHNKU09OLm1hcCgoanVkZ2VtZW50SlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBqdWRnZW1lbnRKU09OLCAgLy8vXG4gICAgICAgICAganVkZ2VtZW50ID0gSnVkZ2VtZW50LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGp1ZGdlbWVudDtcbiAgfSk7XG5cbiAgcmV0dXJuIGp1ZGdlbWVudHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZW1lbnRzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBzdGF0ZW1lbnRzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgU3RhdGVtZW50IH0gPSBlbGVtZW50cyxcbiAgICAgICAgc3RhdGVtZW50c0pTT04gPSBzdGF0ZW1lbnRzOyAvLy9cblxuICBzdGF0ZW1lbnRzID0gc3RhdGVtZW50c0pTT04ubWFwKChzdGF0ZW1lbnRKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHN0YXRlbWVudEpTT04sICAvLy9cbiAgICAgICAgICBzdGF0ZW1lbnQgPSBTdGF0ZW1lbnQuZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gc3RhdGVtZW50O1xuICB9KTtcblxuICByZXR1cm4gc3RhdGVtZW50cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydGlvbnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGFzc2VydGlvbnMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBUeXBlQXNzZXJ0aW9uLCBEZWZpbmVkQXNzZXJ0aW9uLCBQcm9wZXJ0eUFzc2VydGlvbiwgU3VicHJvb2ZBc3NlcnRpb24sIFNpZ25hdHVyZUFzc2VydGlvbiwgQ29udGFpbmVkQXNzZXJ0aW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgYXNzZXJ0aW9uc0pTT04gPSBhc3NlcnRpb25zOyAvLy9cblxuICBhc3NlcnRpb25zID0gYXNzZXJ0aW9uc0pTT04ubWFwKChhc3NlcnRpb25KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGFzc2VydGlvbkpTT04sICAvLy9cbiAgICAgICAgICBhc3NlcnRpb24gPSBUeXBlQXNzZXJ0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgIERlZmluZWRBc3NlcnRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgUHJvcGVydHlBc3NlcnRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgU3VicHJvb2ZBc3NlcnRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgU2lnbmF0dXJlQXNzZXJ0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgIENvbnRhaW5lZEFzc2VydGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBhc3NlcnRpb247XG4gIH0pO1xuXG4gIHJldHVybiBhc3NlcnRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVmZXJlbmNlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgcmVmZXJlbmNlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFJlZmVyZW5jZSB9ID0gZWxlbWVudHMsXG4gICAgcmVmZXJlbmNlc0pTT04gPSByZWZlcmVuY2VzOyAvLy9cblxuICByZWZlcmVuY2VzID0gcmVmZXJlbmNlc0pTT04ubWFwKChyZWZlcmVuY2VKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHJlZmVyZW5jZUpTT04sICAvLy9cbiAgICAgIHJlZmVyZW5jZSA9IFJlZmVyZW5jZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiByZWZlcmVuY2U7XG4gIH0pO1xuXG4gIHJldHVybiByZWZlcmVuY2VzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2lnbmF0dXJlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgc2lnbmF0dXJlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IFNpZ25hdHVyZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIHNpZ25hdHVyZXNKU09OID0gc2lnbmF0dXJlczsgLy8vXG5cbiAgc2lnbmF0dXJlcyA9IHNpZ25hdHVyZXNKU09OLm1hcCgoc2lnbmF0dXJlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBzaWduYXR1cmVKU09OLCAgLy8vXG4gICAgICAgICAgc2lnbmF0dXJlID0gU2lnbmF0dXJlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHNpZ25hdHVyZTtcbiAgfSk7XG5cbiAgcmV0dXJuIHNpZ25hdHVyZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25qZWN0dXJlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgY29uamVjdHVyZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBDb25qZWN0dXJlIH0gPSBlbGVtZW50cyxcbiAgICAgICAgY29uamVjdHVyZXNKU09OID0gY29uamVjdHVyZXM7IC8vL1xuXG4gIGNvbmplY3R1cmVzID0gY29uamVjdHVyZXNKU09OLm1hcCgoY29uamVjdHVyZUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gY29uamVjdHVyZUpTT04sICAvLy9cbiAgICAgICAgICBjb25qZWN0dXJlID0gQ29uamVjdHVyZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb25qZWN0dXJlO1xuICB9KTtcblxuICByZXR1cm4gY29uamVjdHVyZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21iaW5hdG9yc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgY29tYmluYXRvcnMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBDb21iaW5hdG9yIH0gPSBlbGVtZW50cyxcbiAgICAgICAgY29tYmluYXRvcnNKU09OID0gY29tYmluYXRvcnM7IC8vL1xuXG4gIGNvbWJpbmF0b3JzID0gY29tYmluYXRvcnNKU09OLm1hcCgoY29tYmluYXRvckpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gY29tYmluYXRvckpTT04sICAvLy9cbiAgICAgICAgICBjb21iaW5hdG9yID0gQ29tYmluYXRvci5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBjb21iaW5hdG9yO1xuICB9KTtcblxuICByZXR1cm4gY29tYmluYXRvcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3N1bXB0aW9uc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgYXNzdW1wdGlvbnMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBBc3N1bXB0aW9uIH0gPSBlbGVtZW50cyxcbiAgICBhc3N1bXB0aW9uc0pTT04gPSBhc3N1bXB0aW9uczsgLy8vXG5cbiAgYXNzdW1wdGlvbnMgPSBhc3N1bXB0aW9uc0pTT04ubWFwKChhc3N1bXB0aW9uSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBhc3N1bXB0aW9uSlNPTiwgIC8vL1xuICAgICAgICAgIGFzc3VtcHRpb24gPSBBc3N1bXB0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGFzc3VtcHRpb247XG4gIH0pO1xuXG4gIHJldHVybiBhc3N1bXB0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVQcmVmaXhlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgdHlwZVByZWZpeGVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVHlwZVByZWZpeCB9ID0gZWxlbWVudHMsXG4gICAgICAgIHR5cGVQcmVmaXhlc0pTT04gPSB0eXBlUHJlZml4ZXM7IC8vL1xuXG4gIHR5cGVQcmVmaXhlcyA9IHR5cGVQcmVmaXhlc0pTT04ubWFwKCh0eXBlUHJlZml4SlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSB0eXBlUHJlZml4SlNPTiwgIC8vL1xuICAgICAgICAgIHR5cGVQcmVmaXggPSBUeXBlUHJlZml4LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHR5cGVQcmVmaXg7XG4gIH0pO1xuXG4gIHJldHVybiB0eXBlUHJlZml4ZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJ1Y3RvcnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGNvbnN0cnVjdG9ycyB9ID0ganNvbjtcblxuICBjb25zdCB7IENvbnN0cnVjdG9yIH0gPSBlbGVtZW50cyxcbiAgICAgICAgY29uc3RydWN0b3JzSlNPTiA9IGNvbnN0cnVjdG9yczsgLy8vXG5cbiAgY29uc3RydWN0b3JzID0gY29uc3RydWN0b3JzSlNPTi5tYXAoKGNvbnN0cnVjdG9ySlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBjb25zdHJ1Y3RvckpTT04sICAvLy9cbiAgICAgICAgICBjb25zdHJ1Y3RvciA9IENvbnN0cnVjdG9yLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGNvbnN0cnVjdG9yO1xuICB9KTtcblxuICByZXR1cm4gY29uc3RydWN0b3JzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXRoZW9yZW1zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBtZXRhdGhlb3JlbXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBNZXRhdGhlb3JlbSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG1ldGF0aGVvcmVtc0pTT04gPSBtZXRhdGhlb3JlbXM7IC8vL1xuXG4gIG1ldGF0aGVvcmVtcyA9IG1ldGF0aGVvcmVtc0pTT04ubWFwKChtZXRhdGhlb3JlbUpTT04pID0+IHtcbiAgICBjb25zdCBqc29uID0gbWV0YXRoZW9yZW1KU09OLCAgLy8vXG4gICAgICAgICAgbWV0YXRoZW9yZW0gPSBNZXRhdGhlb3JlbS5mcm9tSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBtZXRhdGhlb3JlbTtcbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGF0aGVvcmVtcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cHBvc2l0aW9uc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgc3VwcG9zaXRpb25zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgU3VwcG9zaXRpb24gfSA9IGVsZW1lbnRzLFxuICAgICAgICBzdXBwb3NpdGlvbnNKU09OID0gc3VwcG9zaXRpb25zOyAgLy8vXG5cbiAgc3VwcG9zaXRpb25zID0gc3VwcG9zaXRpb25zSlNPTi5tYXAoKHN1cHBvc2l0aW9uSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBzdXBwb3NpdGlvbkpTT04sIC8vL1xuICAgICAgICAgIHN1cHBvc2l0aW9uID0gU3VwcG9zaXRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gc3VwcG9zaXRpb247XG4gIH0pO1xuXG4gIHJldHVybiBzdXBwb3NpdGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJzdGl0dXRpb25zRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBzdWJzdGl0dXRpb25zIH0gPSBqc29uOyAgLy8vXG5cbiAgY29uc3Qgc3Vic3RpdHV0aW9uc0pTT04gPSBzdWJzdGl0dXRpb25zOyAvLy9cblxuICBzdWJzdGl0dXRpb25zID0gc3Vic3RpdHV0aW9uc0pTT04ubWFwKChzdWJzdGl0dXRpb25KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHN1YnN0aXR1dGlvbkpTT04sICAvLy9cbiAgICAgICAgICBzdWJzdGl0dXRpb24gPSBzdWJzdGl0dXRpb25Gcm9tU3Vic3RpdHV0aW9uSlNPTihqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBzdWJzdGl0dXRpb247XG4gIH0pO1xuXG4gIHJldHVybiBzdWJzdGl0dXRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXZhcmlhYmxlc0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgbGV0IHsgbWV0YXZhcmlhYmxlcyB9ID0ganNvbjtcblxuICBjb25zdCB7IE1ldGF2YXJpYWJsZSB9ID0gZWxlbWVudHMsXG4gICAgICAgIG1ldGF2YXJpYWJsZXNKU09OID0gbWV0YXZhcmlhYmxlczsgLy8vXG5cbiAgbWV0YXZhcmlhYmxlcyA9IG1ldGF2YXJpYWJsZXNKU09OLm1hcCgobWV0YXZhcmlhYmxlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBtZXRhdmFyaWFibGVKU09OLCAgLy8vXG4gICAgICAgICAgbWV0YXZhcmlhYmxlID0gTWV0YXZhcmlhYmxlLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIG1ldGF2YXJpYWJsZTtcbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGF2YXJpYWJsZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtbmVtaWNDb250ZXh0c0Zyb21KU09OKGpzb24sIGNvbnRleHQpIHtcbiAgY29uc3QgcmVsZWFzZUNvbnRleHQgPSBjb250ZXh0OyAvLy9cblxuICBjb25zdCB7IGNvbnRleHRzIH0gPSBqc29uO1xuXG4gIGNvbnN0IG1uZW1pY0NvbnRleHRzID0gY29udGV4dHMubWFwKChjb250ZXh0KSA9PiB7XG4gICAganNvbiA9IGNvbnRleHQ7IC8vL1xuXG4gICAgY29udGV4dCA9IHJlbGVhc2VDb250ZXh0OyAvLy9cblxuICAgIGNvbnN0IG1uZW1pY0NvbnRleHQgPSBNbmVtaWNDb250ZXh0LmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIG1uZW1pY0NvbnRleHQ7ICAvLy9cbiAgfSk7XG5cbiAgcmV0dXJuIG1uZW1pY0NvbnRleHRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjbGFyZWRWYXJpYWJsZXNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IGRlY2xhcmVkVmFyaWFibGVzIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgVmFyaWFibGUgfSA9IGVsZW1lbnRzLFxuICAgICAgICBkZWNsYXJlZFZhcmlhYmxlc0pTT04gPSBkZWNsYXJlZFZhcmlhYmxlczsgLy8vXG5cbiAgZGVjbGFyZWRWYXJpYWJsZXMgPSBkZWNsYXJlZFZhcmlhYmxlc0pTT04ubWFwKChkZWNsYXJlZFZhcmlhYmxlSlNPTikgPT4ge1xuICAgIGNvbnN0IGpzb24gPSBkZWNsYXJlZFZhcmlhYmxlSlNPTiwgIC8vL1xuICAgICAgICAgIHZhcmlhYmxlID0gVmFyaWFibGUuZnJvbUpTT04oanNvbiwgY29udGV4dCksXG4gICAgICAgICAgZGVjbGFyZWRWYXJpYWJsZSA9IHZhcmlhYmxlOyAgLy8vXG5cbiAgICByZXR1cm4gZGVjbGFyZWRWYXJpYWJsZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvcGVydHlSZWxhdGlvbnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IHByb3BlcnR5UmVsYXRpb25zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgUHJvcGVydHlSZWxhdGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgIHByb3BlcnR5UmVsYXRpb25zSlNPTiA9IHByb3BlcnR5UmVsYXRpb25zOyAvLy9cblxuICBwcm9wZXJ0eVJlbGF0aW9ucyA9IHByb3BlcnR5UmVsYXRpb25zSlNPTi5tYXAoKHByb3BlcnR5UmVsYXRpb25KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IHByb3BlcnR5UmVsYXRpb25KU09OLCAgLy8vXG4gICAgICAgICAgcHJvcGVydHlSZWxhdGlvbiA9IFByb3BlcnR5UmVsYXRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gcHJvcGVydHlSZWxhdGlvbjtcbiAgfSk7XG5cbiAgcmV0dXJuIHByb3BlcnR5UmVsYXRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YUxldmVsQXNzdW1wdGlvbnNGcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGxldCB7IG1ldGFMZXZlbEFzc3VtcHRpb25zIH0gPSBqc29uO1xuXG4gIGNvbnN0IHsgTWV0YUxldmVsQXNzdW1wdGlvbiB9ID0gZWxlbWVudHMsXG4gICAgICAgIG1ldGFMZXZlbEFzc3VtcHRpb25zSlNPTiA9IG1ldGFMZXZlbEFzc3VtcHRpb25zOyAvLy9cblxuICBtZXRhTGV2ZWxBc3N1bXB0aW9ucyA9IG1ldGFMZXZlbEFzc3VtcHRpb25zSlNPTi5tYXAoKG1ldGFMZXZlbEFzc3VtcHRpb25KU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IG1ldGFMZXZlbEFzc3VtcHRpb25KU09OLCAgLy8vXG4gICAgICAgICAgbWV0YUxldmVsQXNzdW1wdGlvbiA9IE1ldGFMZXZlbEFzc3VtcHRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gbWV0YUxldmVsQXNzdW1wdGlvbjtcbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGFMZXZlbEFzc3VtcHRpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjbGFyZWRNZXRhdmFyaWFibGVzRnJvbUpTT04oanNvbiwgY29udGV4dCkge1xuICBsZXQgeyBkZWNsYXJlZE1ldGF2YXJpYWJsZXMgfSA9IGpzb247XG5cbiAgY29uc3QgeyBNZXRhdmFyaWFibGUgfSA9IGVsZW1lbnRzLFxuICAgICAgICBkZWNsYXJlZE1ldGF2YXJpYWJsZXNKU09OID0gZGVjbGFyZWRNZXRhdmFyaWFibGVzOyAvLy9cblxuICBkZWNsYXJlZE1ldGF2YXJpYWJsZXMgPSBkZWNsYXJlZE1ldGF2YXJpYWJsZXNKU09OLm1hcCgoZGVjbGFyZWRNZXRhdmFyaWFibGVKU09OKSA9PiB7XG4gICAgY29uc3QganNvbiA9IGRlY2xhcmVkTWV0YXZhcmlhYmxlSlNPTiwgIC8vL1xuICAgICAgICAgIG1ldGF2YXJpYWJsZSA9IE1ldGF2YXJpYWJsZS5mcm9tSlNPTihqc29uLCBjb250ZXh0KSxcbiAgICAgICAgICBkZWNsYXJlZE1ldGF2YXJpYWJsZSA9IG1ldGF2YXJpYWJsZTsgIC8vL1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkTWV0YXZhcmlhYmxlO1xuICB9KTtcblxuICByZXR1cm4gZGVjbGFyZWRNZXRhdmFyaWFibGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmFtZVRvTmFtZUpTT04obmFtZSkge1xuICBjb25zdCBuYW1lSlNPTiA9IG5hbWU7ICAvLy9cblxuICByZXR1cm4gbmFtZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtVG9UZXJtSlNPTih0ZXJtKSB7XG4gIGNvbnN0IHRlcm1KU09OID0gKHRlcm0gIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgIHRlcm0udG9KU09OKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gIHJldHVybiB0ZXJtSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVUb1R5cGVKU09OKHR5cGUpIHtcbiAgbGV0IHR5cGVKU09OID0gbnVsbDtcblxuICBpZiAodHlwZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IGFicmlkZ2VkID0gdHJ1ZTtcblxuICAgIHR5cGVKU09OID0gdHlwZS50b0pTT04oYWJyaWRnZWQpO1xuICB9XG5cbiAgcmV0dXJuIHR5cGVKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZnJhbWVUb0ZyYW1lSlNPTihmcmFtZSkge1xuICBjb25zdCBmcmFtZUpTT04gPSAoZnJhbWUgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICBmcmFtZS50b0pTT04oKSA6XG4gICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gIHJldHVybiBmcmFtZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbFRvTGFiZWxKU09OKGxhYmVsKSB7XG4gIGNvbnN0IGxhYmVsSlNPTiA9IGxhYmVsLnRvSlNPTigpO1xuXG4gIHJldHVybiBsYWJlbEpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuZWdhdGVkVG9OZWdhdGVkSlNPTihuZWdhdGVkKSB7XG4gIGNvbnN0IG5lZ2F0ZWRKU09OID0gbmVnYXRlZDsgIC8vL1xuXG4gIHJldHVybiBuZWdhdGVkSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFyaWFibGVUb1ZhcmlhYmxlSlNPTihhcmlhYmxlKSB7XG4gIGNvbnN0IGFyaWFibGVKU09OID0gYXJpYWJsZS50b0pTT04oKTtcblxuICByZXR1cm4gYXJpYWJsZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhVHlwZVRvTWV0YVR5cGVKU09OKG1ldGFUeXBlKSB7XG4gIGNvbnN0IG1ldGFUeXBlSlNPTiA9IChtZXRhVHlwZSAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFUeXBlLnRvSlNPTigpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG5cbiAgcmV0dXJuIG1ldGFUeXBlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZmVyZW5jZVRvUmVmZXJlbmNlSlNPTihyZWZlcmVuY2UpIHtcbiAgY29uc3QgcmVmZXJlbmNlSlNPTiA9IHJlZmVyZW5jZS50b0pTT04oKTtcblxuICByZXR1cm4gcmVmZXJlbmNlSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXRlbWVudFRvU3RhdGVtZW50SlNPTihzdGF0ZW1lbnQpIHtcbiAgY29uc3Qgc3RhdGVtZW50SlNPTiA9IChzdGF0ZW1lbnQgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50LnRvSlNPTigpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsO1xuXG4gIHJldHVybiBzdGF0ZW1lbnRKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVkdWN0aW9uVG9EZWR1Y3Rpb25KU09OKGRlZHVjdGlvbikge1xuICBjb25zdCBkZWR1Y3Rpb25KU09OID0gZGVkdWN0aW9uLnRvSlNPTigpO1xuXG4gIHJldHVybiBkZWR1Y3Rpb25KU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2lnbmF0dXJlVG9TaWduYXR1cmVKU09OKHNpZ25hdHVyZSkge1xuICBjb25zdCBzaWduYXR1cmVKU09OID0gKHNpZ25hdHVyZSAhPT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYXR1cmUudG9KU09OKCkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG5cbiAgcmV0dXJuIHNpZ25hdHVyZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpZGVudGlmaWVyVG9JZGVudGlmaWVySlNPTihpZGVudGlmaWVyKSB7XG4gIGNvbnN0IGlkZW50aWZpZXJKU09OID0gaWRlbnRpZmllcjsgIC8vL1xuXG4gIHJldHVybiBpZGVudGlmaWVySlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmNsdXNpb25Ub0NvbmNsdXNpb25KU09OKGNvbmNsdXNpb24pIHtcbiAgY29uc3QgY29uY2x1c2lvbkpTT04gPSBjb25jbHVzaW9uLnRvSlNPTigpO1xuXG4gIHJldHVybiBjb25jbHVzaW9uSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3Zpc2lvbmFsVG9Qcm92aXNpb25hbEpTT04ocHJvdmlzaW9uYWwpIHtcbiAgY29uc3QgcHJvdmlzaW9uYWxKU09OID0gcHJvdmlzaW9uYWw7ICAvLy9cblxuICByZXR1cm4gcHJvdmlzaW9uYWxKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXZhcmlhYmxlVG9NZXRhdmFyaWFibGVKU09OKG1ldGF2YXJpYWJsZSkge1xuICBjb25zdCBtZXRhdmFyaWFibGVKU09OID0gbWV0YXZhcmlhYmxlLnRvSlNPTigpO1xuXG4gIHJldHVybiBtZXRhdmFyaWFibGVKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvY2VkdXJlQ2FsbFRvUHJvY2VkdXJlQ2FsbEpTT04ocHJvY2VkdXJlQ2FsbCkge1xuICBjb25zdCBwcm9jZWR1cmVDYWxsSlNPTiA9IChwcm9jZWR1cmVDYWxsICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZWR1cmVDYWxsLnRvSlNPTigpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcblxuICByZXR1cm4gcHJvY2VkdXJlQ2FsbEpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtbmVtaWNDb250ZXh0VG9NbmVtaWNDb250ZXh0SlNPTihtbmVtaWNDb250ZXh0KSB7XG4gIGNvbnN0IG1uZW1pY0NvbnRleHRKU09OID0gbW5lbWljQ29udGV4dC50b0pTT04oKTtcblxuICByZXR1cm4gbW5lbWljQ29udGV4dEpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZWR1cmVSZWZlcmVuY2VUb1Byb2NlZHVyZVJlZmVyZW5jZUpTT04ocHJvY2VkdXJlUmVmZXJlbmNlKSB7XG4gIGNvbnN0IHByb2NlZHVyZVJlZmVyZW5jZUpTT04gPSBwcm9jZWR1cmVSZWZlcmVuY2UudG9KU09OKCk7XG5cbiAgcmV0dXJuIHByb2NlZHVyZVJlZmVyZW5jZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNsYXJlZE1ldGF2YXJpYWJsZVRvREVjbGFyZWRNZXRhdmFyaWFibGVKU09OKGRlY2xhcmVkTWV0YXZhcmlhYmxlKSB7XG4gIGNvbnN0IGRlY2xhcmVkTWV0YXZhcmlhYmxlSlNPTiA9IGRlY2xhcmVkTWV0YXZhcmlhYmxlLnRvSlNPTigpO1xuXG4gIHJldHVybiBkZWNsYXJlZE1ldGF2YXJpYWJsZUpTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdWJzdGl0dXRpb25Gcm9tU3Vic3RpdHV0aW9uSlNPTihqc29uLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgVGVybVN1YnN0aXR1dGlvbiwgRnJhbWVTdWJzdGl0dXRpb24sIFN0YXRlbWVudFN1YnN0aXR1dGlvbiwgUmVmZXJlbmNlU3Vic3RpdHV0aW9uIH0gPSBlbGVtZW50cyxcbiAgICAgICAgc3Vic3RpdHV0aW9uID0gVGVybVN1YnN0aXR1dGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KSB8fFxuICAgICAgICAgICAgICAgICAgICAgICBGcmFtZVN1YnN0aXR1dGlvbi5mcm9tSlNPTihqc29uLCBjb250ZXh0KSB8fFxuICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZW1lbnRTdWJzdGl0dXRpb24uZnJvbUpTT04oanNvbiwgY29udGV4dCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgUmVmZXJlbmNlU3Vic3RpdHV0aW9uLmZyb21KU09OKGpzb24sIGNvbnRleHQpO1xuXG4gIHJldHVybiBzdWJzdGl0dXRpb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXJtc1RvVGVybXNKU09OKHRlcm1zKSB7XG4gIGNvbnN0IHRlcm1zSlNPTiA9IHRlcm1zLm1hcCgodGVybSkgPT4ge1xuICAgIGNvbnN0IHRlcm1KU09OID0gdGVybS50b0pTT04oKTtcblxuICAgIHJldHVybiB0ZXJtSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHRlcm1zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR5cGVzVG9UeXBlc0pTT04odHlwZXMpIHtcbiAgY29uc3QgdHlwZXNKU09OID0gdHlwZXMubWFwKCh0eXBlKSA9PiB7XG4gICAgY29uc3QgdHlwZUpTT04gPSB0eXBlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHR5cGVKU09OO1xuICB9KTtcblxuICByZXR1cm4gdHlwZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVsZXNUb1J1bGVzSlNPTihydWxlcykge1xuICBjb25zdCBydWxlc0pTT04gPSBydWxlcy5tYXAoKHJ1bGUpID0+IHtcbiAgICBjb25zdCBydWxlSlNPTiA9IHJ1bGUudG9KU09OKCk7XG5cbiAgICByZXR1cm4gcnVsZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBydWxlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsYWJlbHNUb0xhYmVsc0pTT04obGFiZWxzKSB7XG4gIGNvbnN0IGxhYmVsc0pTT04gPSBsYWJlbHMubWFwKChsYWJlbCkgPT4ge1xuICAgIGNvbnN0IGxhYmVsSlNPTiA9IGxhYmVsLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGxhYmVsSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGxhYmVsc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmcmFtZXNUb0ZyYW1lc0pTT04oZnJhbWVzKSB7XG4gIGNvbnN0IGZyYW1lc0pTT04gPSBmcmFtZXMubWFwKChmcmFtZSkgPT4ge1xuICAgIGNvbnN0IGZyYW1lSlNPTiA9IGZyYW1lLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGZyYW1lSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGZyYW1lc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBheGlvbXNUb0F4aW9tc0pTT04oYXhpb21zKSB7XG4gIGNvbnN0IGF4aW9tc0pTT04gPSBheGlvbXMubWFwKChheGlvbSkgPT4ge1xuICAgIGNvbnN0IGF4aW9tSlNPTiA9IGF4aW9tLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGF4aW9tSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGF4aW9tc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVtaXNlc1RvUHJlbWlzZXNKU09OKHByZW1pc2VzKSB7XG4gIGNvbnN0IHByZW1pc2VzSlNPTiA9IHByZW1pc2VzLm1hcCgocHJlbWlzZSkgPT4ge1xuICAgIGNvbnN0IHByZW1pc2VKU09OID0gcHJlbWlzZS50b0pTT04oKTtcblxuICAgIHJldHVybiBwcmVtaXNlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHByZW1pc2VzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRoZW9yZW1zVG9UaGVvcmVtc0pTT04odGhlb3JlbXMpIHtcbiAgY29uc3QgdGhlb3JlbXNKU09OID0gdGhlb3JlbXMubWFwKCh0aGVvcmVtKSA9PiB7XG4gICAgY29uc3QgdGhlb3JlbUpTT04gPSB0aGVvcmVtLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHRoZW9yZW1KU09OO1xuICB9KTtcblxuICByZXR1cm4gdGhlb3JlbXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFibGVzVG9WYXJpYWJsZXNKU09OKHZhcmlhYmxlcykge1xuICBjb25zdCB2YXJpYWJsZXNKU09OID0gdmFyaWFibGVzLm1hcCgodmFyaWFibGUpID0+IHtcbiAgICBjb25zdCB2YXJpYWJsZUpTT04gPSB2YXJpYWJsZS50b0pTT04oKTtcblxuICAgIHJldHVybiB2YXJpYWJsZUpTT047XG4gIH0pO1xuXG4gIHJldHVybiB2YXJpYWJsZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaHlwb3RoZXNlc1RvSHlwb3RoZXNlc0pTT04oaHlwb3RoZXNlcykge1xuICBjb25zdCBoeXBvdGhlc2VzSlNPTiA9IGh5cG90aGVzZXMubWFwKChoeXBvdGhlc2lzKSA9PiB7XG4gICAgY29uc3QgaHlwb3RoZXNpc0pTT04gPSBoeXBvdGhlc2lzLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGh5cG90aGVzaXNKU09OO1xuICB9KTtcblxuICByZXR1cm4gaHlwb3RoZXNlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVmaXhuYW1lVG9QcmV2aXhOYW1lSlNPTihwcmVmaXhuYW1lKSB7XG4gIGNvbnN0IHByZWZpeE5hbWVKU09OID0gcHJlZml4bmFtZTsgIC8vL1xuXG4gIHJldHVybiBwcmVmaXhOYW1lSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1cGVyVHlwZXNUb1N1cGVyVHlwZXNKU09OKHN1cGVyVHlwZXMpIHtcbiAgY29uc3Qgc3VwZXJUeXBlc0pTT04gPSBzdXBlclR5cGVzLm1hcCgoc3VwZXJUeXBlKSA9PiB7XG4gICAgICAgICAgY29uc3QgYWJyaWRnZWQgPSB0cnVlLFxuICAgICAgICAgICAgICAgIHN1cGVyVHlwZUpTT04gPSBzdXBlclR5cGUudG9KU09OKGFicmlkZ2VkKTtcblxuICAgICAgICAgIHJldHVybiBzdXBlclR5cGVKU09OO1xuICAgICAgICB9KTtcblxuICByZXR1cm4gc3VwZXJUeXBlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJhbWV0ZXJzVG9QYXJhbWV0ZXJzSlNPTihwYXJhbWV0ZXJzKSB7XG4gIGNvbnN0IHBhcmFtZXRlcnNKU09OID0gcGFyYW1ldGVycy5tYXAoKHBhcmFtZXRlcikgPT4ge1xuICAgIGNvbnN0IHBhcmFtZXRlckpTT04gPSBwYXJhbWV0ZXIudG9KU09OKCk7XG5cbiAgICByZXR1cm4gcGFyYW1ldGVySlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHBhcmFtZXRlcnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvcGVydGllc1RvUHJvcGVydGllc0pTT04ocHJvcGVydGllcykge1xuICBjb25zdCBwcm9wZXJ0aWVzSlNPTiA9IHByb3BlcnRpZXMubWFwKChwcm9wZXJ0eSkgPT4ge1xuICAgIGNvbnN0IHByb3BlcnR5SlNPTiA9IHByb3BlcnR5LnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHByb3BlcnR5SlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHByb3BlcnRpZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24ganVkZ2VtZW50c1RvSnVkZ2VtZW50c0pTT04oanVkZ2VtZW50cykge1xuICBjb25zdCBqdWRnZW1lbnRzSlNPTiA9IGp1ZGdlbWVudHMubWFwKChqdWRnZW1lbnQpID0+IHtcbiAgICBjb25zdCBqdWRnZW1lbnRKU09OID0ganVkZ2VtZW50LnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGp1ZGdlbWVudEpTT047XG4gIH0pO1xuXG4gIHJldHVybiBqdWRnZW1lbnRzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVxdWFsaXRpZXNUb0VxdWFsaXRpZXNKU09OKGVxdWFsaXRpZXMpIHtcbiAgY29uc3QgZXF1YWxpdGllc0pTT04gPSBlcXVhbGl0aWVzLm1hcCgoZXF1YWxpdHkpID0+IHtcbiAgICBjb25zdCBlcXVhbGl0eUpTT04gPSBlcXVhbGl0eS50b0pTT04oKTtcblxuICAgIHJldHVybiBlcXVhbGl0eUpTT047XG4gIH0pO1xuXG4gIHJldHVybiBlcXVhbGl0aWVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXRlbWVudHNUb1N0YXRlbWVudHNKU09OKHN0YXRlbWVudHMpIHtcbiAgY29uc3Qgc3RhdGVtZW50c0pTT04gPSBzdGF0ZW1lbnRzLm1hcCgoc3RhdGVtZW50KSA9PiB7XG4gICAgY29uc3Qgc3RhdGVtZW50SlNPTiA9IHN0YXRlbWVudC50b0pTT04oKTtcblxuICAgIHJldHVybiBzdGF0ZW1lbnRKU09OO1xuICB9KTtcblxuICByZXR1cm4gc3RhdGVtZW50c0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaWduYXR1cmVzVG9TaWduYXR1cmVzSlNPTihzaWduYXR1cmVzKSB7XG4gIGNvbnN0IHNpZ25hdHVyZXNKU09OID0gc2lnbmF0dXJlcy5tYXAoKHNpZ25hdHVyZSkgPT4ge1xuICAgIGNvbnN0IHNpZ25hdHVyZUpTT04gPSBzaWduYXR1cmUudG9KU09OKCk7XG5cbiAgICByZXR1cm4gc2lnbmF0dXJlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHNpZ25hdHVyZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0aW9uc1RvQXNzZXJ0aW9uc0pTT04oYXNzZXJ0aW9ucykge1xuICBjb25zdCBhc3NlcnRpb25zSlNPTiA9IGFzc2VydGlvbnMubWFwKChhc3NlcnRpb24pID0+IHtcbiAgICBjb25zdCBhc3NlcnRpb25KU09OID0gYXNzZXJ0aW9uLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGFzc2VydGlvbkpTT047XG4gIH0pO1xuXG4gIHJldHVybiBhc3NlcnRpb25zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZmVyZW5jZXNUb1JlZmVyZW5jZXNKU09OKHJlZmVyZW5jZXMpIHtcbiAgY29uc3QgcmVmZXJlbmNlc0pTT04gPSByZWZlcmVuY2VzLm1hcCgocmVmZXJlbmNlKSA9PiB7XG4gICAgY29uc3QgcmVmZXJlbmNlSlNPTiA9IHJlZmVyZW5jZS50b0pTT04oKTtcblxuICAgIHJldHVybiByZWZlcmVuY2VKU09OO1xuICB9KTtcblxuICByZXR1cm4gcmVmZXJlbmNlc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25qZWN0dXJlc1RvQ29uamVjdHVyZXNKU09OKGNvbmplY3R1cmVzKSB7XG4gIGNvbnN0IGNvbmplY3R1cmVzSlNPTiA9IGNvbmplY3R1cmVzLm1hcCgoY29uamVjdHVyZSkgPT4ge1xuICAgIGNvbnN0IGNvbmplY3R1cmVKU09OID0gY29uamVjdHVyZS50b0pTT04oKTtcblxuICAgIHJldHVybiBjb25qZWN0dXJlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbmplY3R1cmVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbWJpbmF0b3JzVG9Db21iaW5hdG9yc0pTT04oY29tYmluYXRvcnMpIHtcbiAgY29uc3QgY29tYmluYXRvcnNKU09OID0gY29tYmluYXRvcnMubWFwKChjb21iaW5hdG9yKSA9PiB7XG4gICAgY29uc3QgY29tYmluYXRvckpTT04gPSBjb21iaW5hdG9yLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGNvbWJpbmF0b3JKU09OO1xuICB9KTtcblxuICByZXR1cm4gY29tYmluYXRvcnNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzdW1wdGlvbnNUb0Fzc3VtcHRpb25zSlNPTihhc3N1bXB0aW9ucykge1xuICBjb25zdCBhc3N1bXB0aW9uc0pTT04gPSBhc3N1bXB0aW9ucy5tYXAoKGFzc3VtcHRpb24pID0+IHtcbiAgICBjb25zdCBhc3N1bXB0aW9uSlNPTiA9IGFzc3VtcHRpb24udG9KU09OKCk7XG5cbiAgICByZXR1cm4gYXNzdW1wdGlvbkpTT047XG4gIH0pO1xuXG4gIHJldHVybiBhc3N1bXB0aW9uc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdXBwb3NpdGlvbnNUb1N1cHBvc2l0aW9uc0pTT04oc3VwcG9zaXRpb25zKSB7XG4gIGNvbnN0IHN1cHBvc2l0aW9uc0pTT04gPSBzdXBwb3NpdGlvbnMubWFwKChzdXBwb3NpdGlvbikgPT4ge1xuICAgIGNvbnN0IHN1cHBvc2l0aW9uSlNPTiA9IHN1cHBvc2l0aW9uLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHN1cHBvc2l0aW9uSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHN1cHBvc2l0aW9uc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJ1Y3RvcnNUb0NvbnN0cnVjdG9yc0pTT04oY29uc3RydWN0b3JzKSB7XG4gIGNvbnN0IGNvbnN0cnVjdG9yc0pTT04gPSBjb25zdHJ1Y3RvcnMubWFwKChjb25zdHJ1Y3RvcikgPT4ge1xuICAgIGNvbnN0IGNvbnN0cnVjdG9ySlNPTiA9IGNvbnN0cnVjdG9yLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGNvbnN0cnVjdG9ySlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbnN0cnVjdG9yc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhdGhlb3JlbXNUb01ldGF0aGVvcmVtc0pTT04obWV0YXRoZW9yZW1zKSB7XG4gIGNvbnN0IG1ldGF0aGVvcmVtc0pTT04gPSBtZXRhdGhlb3JlbXMubWFwKChtZXRhdGhlb3JlbSkgPT4ge1xuICAgIGNvbnN0IG1ldGF0aGVvcmVtSlNPTiA9IG1ldGF0aGVvcmVtLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIG1ldGF0aGVvcmVtSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGF0aGVvcmVtc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0eXBlUHJlZml4ZXNUb1R5cGVQcmVmaXhlc0pTT04odHlwZVByZWZpeGVzKSB7XG4gIGNvbnN0IHR5cGVQcmVmaXhlc0pTT04gPSB0eXBlUHJlZml4ZXMubWFwKCh0eXBlUHJlZml4KSA9PiB7XG4gICAgY29uc3QgdHlwZVByZWZpeEpTT04gPSB0eXBlUHJlZml4LnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIHR5cGVQcmVmaXhKU09OO1xuICB9KTtcblxuICByZXR1cm4gdHlwZVByZWZpeGVzSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1YnN0aXR1dGlvbnNUb1N1YnN0aXR1dGlvbnNKU09OKHN1YnN0aXR1dGlvbnMpIHtcbiAgY29uc3Qgc3Vic3RpdHV0aW9uc0pTT04gPSBzdWJzdGl0dXRpb25zLm1hcCgoc3Vic3RpdHV0aW9uKSA9PiB7XG4gICAgY29uc3Qgc3Vic3RpdHV0aW9uSlNPTiA9IHN1YnN0aXR1dGlvbi50b0pTT04oKTtcblxuICAgIHJldHVybiBzdWJzdGl0dXRpb25KU09OO1xuICB9KTtcblxuICByZXR1cm4gc3Vic3RpdHV0aW9uc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXRhdmFyaWFibGVzVG9NZXRhdmFyaWFibGVzSlNPTihtZXRhdmFyaWFibGVzKSB7XG4gIGNvbnN0IG1ldGF2YXJpYWJsZXNKU09OID0gbWV0YXZhcmlhYmxlcy5tYXAoKG1ldGF2YXJpYWJsZSkgPT4ge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZUpTT04gPSBtZXRhdmFyaWFibGUudG9KU09OKCk7XG5cbiAgICByZXR1cm4gbWV0YXZhcmlhYmxlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIG1ldGF2YXJpYWJsZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbW5lbWljQ29udGV4dHNUb01uZW1pY0NvbnRleHRzSlNPTihtbmVtaWNDb250ZXh0cykge1xuICBjb25zdCBtbmVtaWNDb250ZXh0c0pTT04gPSBtbmVtaWNDb250ZXh0cy5tYXAoKG1uZW1pY0NvbnRleHQpID0+IHtcbiAgICBjb25zdCBtbmVtaWNDb250ZXh0SlNPTiA9IG1uZW1pY0NvbnRleHQudG9KU09OKCk7XG5cbiAgICByZXR1cm4gbW5lbWljQ29udGV4dEpTT047XG4gIH0pO1xuXG4gIHJldHVybiBtbmVtaWNDb250ZXh0c0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9wZXJ0eVJlbGF0aW9uc1RvUHJvcGVydHlSZWxhdGlvbnNKU09OKHByb3BlcnR5UmVsYXRpb25zKSB7XG4gIGNvbnN0IHByb3BlcnR5UmVsYXRpb25zSlNPTiA9IHByb3BlcnR5UmVsYXRpb25zLm1hcCgocHJvcGVydHlSZWxhdGlvbikgPT4ge1xuICAgIGNvbnN0IHByb3BlcnR5UmVsYXRpb25KU09OID0gcHJvcGVydHlSZWxhdGlvbi50b0pTT04oKTtcblxuICAgIHJldHVybiBwcm9wZXJ0eVJlbGF0aW9uSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIHByb3BlcnR5UmVsYXRpb25zSlNPTjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY2xhcmVkVmFyaWFibGVzVG9EZWNsYXJlZFZhcmlhYmxlc0pTT04oZGVjbGFyZWRWYXJpYWJsZXMpIHtcbiAgY29uc3QgZGVjbGFyZWRWYXJpYWJsZXNKU09OID0gZGVjbGFyZWRWYXJpYWJsZXMubWFwKChkZWNsYXJlZFZhcmlhYmxlKSA9PiB7XG4gICAgY29uc3QgZGVjbGFyZWRWYXJpYWJsZUpTT04gPSBkZWNsYXJlZFZhcmlhYmxlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkVmFyaWFibGVKU09OO1xuICB9KTtcblxuICByZXR1cm4gZGVjbGFyZWRWYXJpYWJsZXNKU09OO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YUxldmVsQXNzdW1wdGlvbnNUb01ldGFMZXZlbEFzc3VtcHRpb25zSlNPTihtZXRhTGV2ZWxBc3N1bXB0aW9ucykge1xuICBjb25zdCBtZXRhTGV2ZWxBc3N1bXB0aW9uc0pTT04gPSBtZXRhTGV2ZWxBc3N1bXB0aW9ucy5tYXAoKG1ldGFMZXZlbEFzc3VtcHRpb24pID0+IHtcbiAgICBjb25zdCBtZXRhTGV2ZWxBc3N1bXB0aW9uSlNPTiA9IG1ldGFMZXZlbEFzc3VtcHRpb24udG9KU09OKCk7XG5cbiAgICByZXR1cm4gbWV0YUxldmVsQXNzdW1wdGlvbkpTT047XG4gIH0pO1xuXG4gIHJldHVybiBtZXRhTGV2ZWxBc3N1bXB0aW9uc0pTT047XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNsYXJlZE1ldGF2YXJpYWJsZXNUb0RlY2xhcmVkTWV0YXZhcmlhYmxlc0pTT04oZGVjbGFyZWRNZXRhdmFyaWFibGVzKSB7XG4gIGNvbnN0IGRlY2xhcmVkTWV0YXZhcmlhYmxlc0pTT04gPSBkZWNsYXJlZE1ldGF2YXJpYWJsZXMubWFwKChkZWNsYXJlZE1ldGF2YXJpYWJsZSkgPT4ge1xuICAgIGNvbnN0IGRlY2xhcmVkTWV0YXZhcmlhYmxlSlNPTiA9IGRlY2xhcmVkTWV0YXZhcmlhYmxlLnRvSlNPTigpO1xuXG4gICAgcmV0dXJuIGRlY2xhcmVkTWV0YXZhcmlhYmxlSlNPTjtcbiAgfSk7XG5cbiAgcmV0dXJuIGRlY2xhcmVkTWV0YXZhcmlhYmxlc0pTT047XG59XG5cbmZ1bmN0aW9uIGZpbmRUeXBlQnlOYW1lKG5hbWUsIGNvbnRleHQpIHtcbiAgY29uc3QgdHlwZU5hbWUgPSBuYW1lLCAgLy8vXG4gICAgICAgIHR5cGUgPSBjb250ZXh0LmZpbmRUeXBlQnlUeXBlTmFtZSh0eXBlTmFtZSk7XG5cbiAgcmV0dXJuIHR5cGU7XG59XG5cbmZ1bmN0aW9uIGZpbmRNZXRhVHlwZUJ5TmFtZShuYW1lLCBjb250ZXh0KSB7XG4gIGNvbnN0IG1ldGFUeXBlTmFtZSA9IG5hbWUsICAvLy9cbiAgICAgICAgbWV0YVR5cGUgPSBjb250ZXh0LmZpbmRNZXRhVHlwZUJ5TWV0YVR5cGVOYW1lKG1ldGFUeXBlTmFtZSk7XG5cbiAgcmV0dXJuIG1ldGFUeXBlO1xufVxuIl0sIm5hbWVzIjpbImFyaWFibGVUb1ZhcmlhYmxlSlNPTiIsImFzc2VydGlvbnNGcm9tSlNPTiIsImFzc2VydGlvbnNUb0Fzc2VydGlvbnNKU09OIiwiYXNzdW1wdGlvbnNGcm9tSlNPTiIsImFzc3VtcHRpb25zVG9Bc3N1bXB0aW9uc0pTT04iLCJheGlvbXNGcm9tSlNPTiIsImF4aW9tc1RvQXhpb21zSlNPTiIsImNvbWJpbmF0b3JzRnJvbUpTT04iLCJjb21iaW5hdG9yc1RvQ29tYmluYXRvcnNKU09OIiwiY29uY2x1c2lvbkZyb21KU09OIiwiY29uY2x1c2lvblRvQ29uY2x1c2lvbkpTT04iLCJjb25qZWN0dXJlc0Zyb21KU09OIiwiY29uamVjdHVyZXNUb0NvbmplY3R1cmVzSlNPTiIsImNvbnN0cnVjdG9yc0Zyb21KU09OIiwiY29uc3RydWN0b3JzVG9Db25zdHJ1Y3RvcnNKU09OIiwiZGVjbGFyZWRNZXRhdmFyaWFibGVUb0RFY2xhcmVkTWV0YXZhcmlhYmxlSlNPTiIsImRlY2xhcmVkTWV0YXZhcmlhYmxlc0Zyb21KU09OIiwiZGVjbGFyZWRNZXRhdmFyaWFibGVzVG9EZWNsYXJlZE1ldGF2YXJpYWJsZXNKU09OIiwiZGVjbGFyZWRWYXJpYWJsZXNGcm9tSlNPTiIsImRlY2xhcmVkVmFyaWFibGVzVG9EZWNsYXJlZFZhcmlhYmxlc0pTT04iLCJkZWR1Y3Rpb25Gcm9tSlNPTiIsImRlZHVjdGlvblRvRGVkdWN0aW9uSlNPTiIsImVxdWFsaXRpZXNGcm9tSlNPTiIsImVxdWFsaXRpZXNUb0VxdWFsaXRpZXNKU09OIiwiZnJhbWVGcm9tSlNPTiIsImZyYW1lVG9GcmFtZUpTT04iLCJmcmFtZXNGcm9tSlNPTiIsImZyYW1lc1RvRnJhbWVzSlNPTiIsImh5cG90aGVzZXNGcm9tSlNPTiIsImh5cG90aGVzZXNUb0h5cG90aGVzZXNKU09OIiwiaWRlbnRpZmllckZyb21KU09OIiwiaWRlbnRpZmllclRvSWRlbnRpZmllckpTT04iLCJqdWRnZW1lbnRzRnJvbUpTT04iLCJqdWRnZW1lbnRzVG9KdWRnZW1lbnRzSlNPTiIsImxhYmVsRnJvbUpTT04iLCJsYWJlbFRvTGFiZWxKU09OIiwibGFiZWxzRnJvbUpTT04iLCJsYWJlbHNUb0xhYmVsc0pTT04iLCJtZXRhTGV2ZWxBc3N1bXB0aW9uc0Zyb21KU09OIiwibWV0YUxldmVsQXNzdW1wdGlvbnNUb01ldGFMZXZlbEFzc3VtcHRpb25zSlNPTiIsIm1ldGFUeXBlRnJvbUpTT04iLCJtZXRhVHlwZVRvTWV0YVR5cGVKU09OIiwibWV0YXRoZW9yZW1zRnJvbUpTT04iLCJtZXRhdGhlb3JlbXNUb01ldGF0aGVvcmVtc0pTT04iLCJtZXRhdmFyaWFibGVGcm9tSlNPTiIsIm1ldGF2YXJpYWJsZVRvTWV0YXZhcmlhYmxlSlNPTiIsIm1ldGF2YXJpYWJsZXNGcm9tSlNPTiIsIm1ldGF2YXJpYWJsZXNUb01ldGF2YXJpYWJsZXNKU09OIiwibW5lbWljQ29udGV4dEZyb21KU09OIiwibW5lbWljQ29udGV4dFRvTW5lbWljQ29udGV4dEpTT04iLCJtbmVtaWNDb250ZXh0c0Zyb21KU09OIiwibW5lbWljQ29udGV4dHNUb01uZW1pY0NvbnRleHRzSlNPTiIsIm5hbWVGcm9tSlNPTiIsIm5hbWVUb05hbWVKU09OIiwibmVnYXRlZEZyb21KU09OIiwibmVnYXRlZFRvTmVnYXRlZEpTT04iLCJwYXJhbWV0ZXJzRnJvbUpTT04iLCJwYXJhbWV0ZXJzVG9QYXJhbWV0ZXJzSlNPTiIsInByZWZpeE5hbWVGcm9tSlNPTiIsInByZWZpeG5hbWVUb1ByZXZpeE5hbWVKU09OIiwicHJlbWlzZXNGcm9tSlNPTiIsInByZW1pc2VzVG9QcmVtaXNlc0pTT04iLCJwcm9jZWR1cmVDYWxsRnJvbUpTT04iLCJwcm9jZWR1cmVDYWxsVG9Qcm9jZWR1cmVDYWxsSlNPTiIsInByb2NlZHVyZVJlZmVyZW5jZUZyb21KU09OIiwicHJvY2VkdXJlUmVmZXJlbmNlVG9Qcm9jZWR1cmVSZWZlcmVuY2VKU09OIiwicHJvcGVydGllc0Zyb21KU09OIiwicHJvcGVydGllc1RvUHJvcGVydGllc0pTT04iLCJwcm9wZXJ0eVJlbGF0aW9uc0Zyb21KU09OIiwicHJvcGVydHlSZWxhdGlvbnNUb1Byb3BlcnR5UmVsYXRpb25zSlNPTiIsInByb3Zpc2lvbmFsRnJvbUpTT04iLCJwcm92aXNpb25hbFRvUHJvdmlzaW9uYWxKU09OIiwicmVmZXJlbmNlRnJvbUpTT04iLCJyZWZlcmVuY2VUb1JlZmVyZW5jZUpTT04iLCJyZWZlcmVuY2VzRnJvbUpTT04iLCJyZWZlcmVuY2VzVG9SZWZlcmVuY2VzSlNPTiIsInJ1bGVzRnJvbUpTT04iLCJydWxlc1RvUnVsZXNKU09OIiwic2lnbmF0dXJlRnJvbUpTT04iLCJzaWduYXR1cmVUb1NpZ25hdHVyZUpTT04iLCJzaWduYXR1cmVzRnJvbUpTT04iLCJzaWduYXR1cmVzVG9TaWduYXR1cmVzSlNPTiIsInN0YXRlbWVudEZyb21KU09OIiwic3RhdGVtZW50VG9TdGF0ZW1lbnRKU09OIiwic3RhdGVtZW50c0Zyb21KU09OIiwic3RhdGVtZW50c1RvU3RhdGVtZW50c0pTT04iLCJzdWJzdGl0dXRpb25Gcm9tU3Vic3RpdHV0aW9uSlNPTiIsInN1YnN0aXR1dGlvbnNGcm9tSlNPTiIsInN1YnN0aXR1dGlvbnNUb1N1YnN0aXR1dGlvbnNKU09OIiwic3VwZXJUeXBlc0Zyb21KU09OIiwic3VwZXJUeXBlc1RvU3VwZXJUeXBlc0pTT04iLCJzdXBwb3NpdGlvbnNGcm9tSlNPTiIsInN1cHBvc2l0aW9uc1RvU3VwcG9zaXRpb25zSlNPTiIsInRlcm1Gcm9tSlNPTiIsInRlcm1Ub1Rlcm1KU09OIiwidGVybXNGcm9tSlNPTiIsInRlcm1zVG9UZXJtc0pTT04iLCJ0aGVvcmVtc0Zyb21KU09OIiwidGhlb3JlbXNUb1RoZW9yZW1zSlNPTiIsInR5cGVGcm9tSlNPTiIsInR5cGVQcmVmaXhlc0Zyb21KU09OIiwidHlwZVByZWZpeGVzVG9UeXBlUHJlZml4ZXNKU09OIiwidHlwZVRvVHlwZUpTT04iLCJ0eXBlc0Zyb21KU09OIiwidHlwZXNUb1R5cGVzSlNPTiIsInZhcmlhYmxlc0Zyb21KU09OIiwidmFyaWFibGVzVG9WYXJpYWJsZXNKU09OIiwianNvbiIsImNvbnRleHQiLCJuYW1lIiwibmFtZUpTT04iLCJ0ZXJtIiwidGVybUpTT04iLCJUZXJtIiwiZWxlbWVudHMiLCJmcm9tSlNPTiIsInR5cGUiLCJzdHJpbmciLCJmaW5kVHlwZUJ5TmFtZSIsImxhYmVsIiwiTGFiZWwiLCJsYWJlbEpTT04iLCJmcmFtZSIsImZyYW1lSlNPTiIsIkZyYW1lIiwibmVnYXRlZCIsIm1ldGFUeXBlIiwiZmluZE1ldGFUeXBlQnlOYW1lIiwic3RhdGVtZW50IiwiU3RhdGVtZW50Iiwic3RhdGVtZW50SlNPTiIsImRlZHVjdGlvbiIsIkRlZHVjdGlvbiIsImRlZHVjdGlvbkpTT04iLCJzaWduYXR1cmUiLCJTaWduYXR1cmUiLCJzaWduYXR1cmVKU09OIiwicmVmZXJlbmNlIiwiUmVmZXJlbmNlIiwicmVmZXJlbmNlSlNPTiIsImlkZW50aWZpZXIiLCJpZGVudGlmaWVySlNPTiIsImNvbmNsdXNpb24iLCJDb25jbHVzaW9uIiwiY29uY2x1c2lvbkpTT04iLCJwcm92aXNpb25hbCIsIm1ldGF2YXJpYWJsZSIsIk1ldGF2YXJpYWJsZSIsIm1ldGF2YXJpYWJsZUpTT04iLCJyZWxlYXNlQ29udGV4dCIsIm1uZW1pY0NvbnRleHQiLCJNbmVtaWNDb250ZXh0IiwicHJvY2VkdXJlQ2FsbCIsIlByb2NlZHVyZUNhbGwiLCJwcm9jZWR1cmVDYWxsSlNPTiIsInByb2NlZHVyZVJlZmVyZW5jZSIsIlByb2NlZHVyZVJlZmVyZW5jZSIsInByb2NlZHVyZVJlZmVyZW5jZUpTT04iLCJ0eXBlcyIsInR5cGVzSlNPTiIsIlR5cGUiLCJmb3JFYWNoIiwidHlwZUpTT04iLCJwdXNoIiwidGVybXMiLCJ0ZXJtc0pTT04iLCJtYXAiLCJydWxlcyIsIlJ1bGUiLCJydWxlc0pTT04iLCJydWxlSlNPTiIsInJ1bGUiLCJmcmFtZXMiLCJmcmFtZXNKU09OIiwibGFiZWxzIiwibGFiZWxzSlNPTiIsImF4aW9tcyIsIkF4aW9tIiwiYXhpb21zSlNPTiIsImF4aW9tSlNPTiIsImF4aW9tIiwicHJlbWlzZXMiLCJQcmVtaXNlIiwicHJlbWlzZXNKU09OIiwicHJlbWlzZUpTT04iLCJwcmVtaXNlIiwidGhlb3JlbXMiLCJUaGVvcmVtIiwidGhlb3JlbXNKU09OIiwidGhlb3JlbUpTT04iLCJ0aGVvcmVtIiwidmFyaWFibGVzIiwiVmFyaWFibGUiLCJ2YXJpYWJsZXNKU09OIiwidmFyaWFibGVKU09OIiwidmFyaWFibGUiLCJwcm9wZXJ0aWVzIiwiUHJvcGVydHkiLCJwcm9wZXJ0aWVzSlNPTiIsInByb3BlcnR5SlNPTiIsInByb3BlcnR5IiwiZXF1YWxpdGllcyIsIkVxdWFsaXR5IiwiZXF1YWxpdGllc0pTT04iLCJlcXVhbGl0eUpTT04iLCJlcXVhbGl0eSIsInByZWZpeE5hbWUiLCJzdXBlclR5cGVzIiwic3VwZXJUeXBlc0pTT04iLCJzdXBlclR5cGVKU09OIiwic3VwZXJUeXBlIiwiaHlwb3RoZXNlcyIsIkh5cG90aGVzaXMiLCJoeXBvdGhlc2VzSlNPTiIsImh5cG90aGVzaXNKU09OIiwiaHlwb3RoZXNpcyIsInBhcmFtZXRlcnMiLCJQYXJhbWV0ZXIiLCJwYXJhbWV0ZXJzSlNPTiIsInBhcmFtZXRlckpTT04iLCJwYXJhbWV0ZXIiLCJqdWRnZW1lbnRzIiwiSnVkZ2VtZW50IiwianVkZ2VtZW50c0pTT04iLCJqdWRnZW1lbnRKU09OIiwianVkZ2VtZW50Iiwic3RhdGVtZW50cyIsInN0YXRlbWVudHNKU09OIiwiYXNzZXJ0aW9ucyIsIlR5cGVBc3NlcnRpb24iLCJEZWZpbmVkQXNzZXJ0aW9uIiwiUHJvcGVydHlBc3NlcnRpb24iLCJTdWJwcm9vZkFzc2VydGlvbiIsIlNpZ25hdHVyZUFzc2VydGlvbiIsIkNvbnRhaW5lZEFzc2VydGlvbiIsImFzc2VydGlvbnNKU09OIiwiYXNzZXJ0aW9uSlNPTiIsImFzc2VydGlvbiIsInJlZmVyZW5jZXMiLCJyZWZlcmVuY2VzSlNPTiIsInNpZ25hdHVyZXMiLCJzaWduYXR1cmVzSlNPTiIsImNvbmplY3R1cmVzIiwiQ29uamVjdHVyZSIsImNvbmplY3R1cmVzSlNPTiIsImNvbmplY3R1cmVKU09OIiwiY29uamVjdHVyZSIsImNvbWJpbmF0b3JzIiwiQ29tYmluYXRvciIsImNvbWJpbmF0b3JzSlNPTiIsImNvbWJpbmF0b3JKU09OIiwiY29tYmluYXRvciIsImFzc3VtcHRpb25zIiwiQXNzdW1wdGlvbiIsImFzc3VtcHRpb25zSlNPTiIsImFzc3VtcHRpb25KU09OIiwiYXNzdW1wdGlvbiIsInR5cGVQcmVmaXhlcyIsIlR5cGVQcmVmaXgiLCJ0eXBlUHJlZml4ZXNKU09OIiwidHlwZVByZWZpeEpTT04iLCJ0eXBlUHJlZml4IiwiY29uc3RydWN0b3JzIiwiQ29uc3RydWN0b3IiLCJjb25zdHJ1Y3RvcnNKU09OIiwiY29uc3RydWN0b3JKU09OIiwiY29uc3RydWN0b3IiLCJtZXRhdGhlb3JlbXMiLCJNZXRhdGhlb3JlbSIsIm1ldGF0aGVvcmVtc0pTT04iLCJtZXRhdGhlb3JlbUpTT04iLCJtZXRhdGhlb3JlbSIsInN1cHBvc2l0aW9ucyIsIlN1cHBvc2l0aW9uIiwic3VwcG9zaXRpb25zSlNPTiIsInN1cHBvc2l0aW9uSlNPTiIsInN1cHBvc2l0aW9uIiwic3Vic3RpdHV0aW9ucyIsInN1YnN0aXR1dGlvbnNKU09OIiwic3Vic3RpdHV0aW9uSlNPTiIsInN1YnN0aXR1dGlvbiIsIm1ldGF2YXJpYWJsZXMiLCJtZXRhdmFyaWFibGVzSlNPTiIsImNvbnRleHRzIiwibW5lbWljQ29udGV4dHMiLCJkZWNsYXJlZFZhcmlhYmxlcyIsImRlY2xhcmVkVmFyaWFibGVzSlNPTiIsImRlY2xhcmVkVmFyaWFibGVKU09OIiwiZGVjbGFyZWRWYXJpYWJsZSIsInByb3BlcnR5UmVsYXRpb25zIiwiUHJvcGVydHlSZWxhdGlvbiIsInByb3BlcnR5UmVsYXRpb25zSlNPTiIsInByb3BlcnR5UmVsYXRpb25KU09OIiwicHJvcGVydHlSZWxhdGlvbiIsIm1ldGFMZXZlbEFzc3VtcHRpb25zIiwiTWV0YUxldmVsQXNzdW1wdGlvbiIsIm1ldGFMZXZlbEFzc3VtcHRpb25zSlNPTiIsIm1ldGFMZXZlbEFzc3VtcHRpb25KU09OIiwibWV0YUxldmVsQXNzdW1wdGlvbiIsImRlY2xhcmVkTWV0YXZhcmlhYmxlcyIsImRlY2xhcmVkTWV0YXZhcmlhYmxlc0pTT04iLCJkZWNsYXJlZE1ldGF2YXJpYWJsZUpTT04iLCJkZWNsYXJlZE1ldGF2YXJpYWJsZSIsInRvSlNPTiIsImFicmlkZ2VkIiwibmVnYXRlZEpTT04iLCJhcmlhYmxlIiwiYXJpYWJsZUpTT04iLCJtZXRhVHlwZUpTT04iLCJwcm92aXNpb25hbEpTT04iLCJtbmVtaWNDb250ZXh0SlNPTiIsIlRlcm1TdWJzdGl0dXRpb24iLCJGcmFtZVN1YnN0aXR1dGlvbiIsIlN0YXRlbWVudFN1YnN0aXR1dGlvbiIsIlJlZmVyZW5jZVN1YnN0aXR1dGlvbiIsInByZWZpeG5hbWUiLCJwcmVmaXhOYW1lSlNPTiIsIm1uZW1pY0NvbnRleHRzSlNPTiIsInR5cGVOYW1lIiwiZmluZFR5cGVCeVR5cGVOYW1lIiwibWV0YVR5cGVOYW1lIiwiZmluZE1ldGFUeXBlQnlNZXRhVHlwZU5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQXF6QmdCQTtlQUFBQTs7UUF0VUFDO2VBQUFBOztRQTZsQkFDO2VBQUFBOztRQXhnQkFDO2VBQUFBOztRQWdqQkFDO2VBQUFBOztRQTN6QkFDO2VBQUFBOztRQW9wQkFDO2VBQUFBOztRQXpaQUM7ZUFBQUE7O1FBc2pCQUM7ZUFBQUE7O1FBeDhCQUM7ZUFBQUE7O1FBbXNCQUM7ZUFBQUE7O1FBalVBQztlQUFBQTs7UUE0akJBQztlQUFBQTs7UUE1ZkFDO2VBQUFBOztRQW9pQkFDO2VBQUFBOztRQTdQQUM7ZUFBQUE7O1FBckpBQztlQUFBQTs7UUE0ZUFDO2VBQUFBOztRQTdoQkFDO2VBQUFBOztRQXlnQkFDO2VBQUFBOztRQS9sQ0FDO2VBQUFBOztRQWt1QkFDO2VBQUFBOztRQXhjQUM7ZUFBQUE7O1FBcXFCQUM7ZUFBQUE7O1FBbi9CQUM7ZUFBQUE7O1FBc3VCQUM7ZUFBQUE7O1FBeGdCQUM7ZUFBQUE7O1FBMHFCQUM7ZUFBQUE7O1FBcGhCQUM7ZUFBQUE7O1FBc2tCQUM7ZUFBQUE7O1FBNzFCQUM7ZUFBQUE7O1FBdXNCQUM7ZUFBQUE7O1FBaFpBQztlQUFBQTs7UUFxbEJBQztlQUFBQTs7UUF0L0JBQztlQUFBQTs7UUEydkJBQztlQUFBQTs7UUFoZ0JBQztlQUFBQTs7UUFncEJBQztlQUFBQTs7UUFuTkFDO2VBQUFBOztRQWtmQUM7ZUFBQUE7O1FBdm9DQUM7ZUFBQUE7O1FBMHVCQUM7ZUFBQUE7O1FBdk1BQztlQUFBQTs7UUE4aEJBQztlQUFBQTs7UUE3OUJBQztlQUFBQTs7UUE0ckJBQztlQUFBQTs7UUE5TUFDO2VBQUFBOztRQTZnQkFDO2VBQUFBOztRQTkrQkFDO2VBQUFBOztRQTZyQkFDO2VBQUFBOztRQTVNQUM7ZUFB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