@atomicfinance/types 3.6.0 → 4.0.0

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 (370) hide show
  1. package/.turbo/turbo-build.log +1 -0
  2. package/.turbo/turbo-test.log +0 -0
  3. package/.yalc/@node-dlc/messaging/.nyc_output/2cf48009-1094-4275-bb91-c164c932feb6.json +1 -0
  4. package/.yalc/@node-dlc/messaging/.nyc_output/processinfo/2cf48009-1094-4275-bb91-c164c932feb6.json +1 -0
  5. package/.yalc/@node-dlc/messaging/.nyc_output/processinfo/index.json +1 -0
  6. package/.yalc/@node-dlc/messaging/README.md +24 -0
  7. package/.yalc/@node-dlc/messaging/__tests__/_test-utils.ts +12 -0
  8. package/.yalc/@node-dlc/messaging/__tests__/chain/ChainManager.spec.ts +178 -0
  9. package/.yalc/@node-dlc/messaging/__tests__/compatibility/dlcspecs-compatibility.spec.ts +473 -0
  10. package/.yalc/@node-dlc/messaging/__tests__/compatibility/rust-dlc-cross-language.spec.ts +342 -0
  11. package/.yalc/@node-dlc/messaging/__tests__/compatibility/true-serialization-compatibility.spec.ts +611 -0
  12. package/.yalc/@node-dlc/messaging/__tests__/dlc_message_test.json +155 -0
  13. package/.yalc/@node-dlc/messaging/__tests__/irc/IrcMessage.spec.ts +94 -0
  14. package/.yalc/@node-dlc/messaging/__tests__/messages/AddressCache.spec.ts +79 -0
  15. package/.yalc/@node-dlc/messaging/__tests__/messages/BatchFundingGroup.spec.ts +72 -0
  16. package/.yalc/@node-dlc/messaging/__tests__/messages/CetAdaptorSignatures.spec.ts +57 -0
  17. package/.yalc/@node-dlc/messaging/__tests__/messages/ContractDescriptor.spec.ts +264 -0
  18. package/.yalc/@node-dlc/messaging/__tests__/messages/ContractInfo.spec.ts +419 -0
  19. package/.yalc/@node-dlc/messaging/__tests__/messages/DigitDecompositionEventDescriptor.spec.ts +59 -0
  20. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcAccept.spec.ts +242 -0
  21. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcCancel.spec.ts +42 -0
  22. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcClose.spec.ts +315 -0
  23. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcOffer.spec.ts +527 -0
  24. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcSign.spec.ts +118 -0
  25. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcTransactions.spec.ts +157 -0
  26. package/.yalc/@node-dlc/messaging/__tests__/messages/EnumEventDescriptor.spec.ts +50 -0
  27. package/.yalc/@node-dlc/messaging/__tests__/messages/EventDescriptor.spec.ts +93 -0
  28. package/.yalc/@node-dlc/messaging/__tests__/messages/FundingInput.spec.ts +84 -0
  29. package/.yalc/@node-dlc/messaging/__tests__/messages/FundingSignatures.spec.ts +83 -0
  30. package/.yalc/@node-dlc/messaging/__tests__/messages/NegotiationFields.spec.ts +328 -0
  31. package/.yalc/@node-dlc/messaging/__tests__/messages/NodeAnnouncementMessage.spec.ts +115 -0
  32. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleAnnouncement.spec.ts +415 -0
  33. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleAttestation.spec.ts +326 -0
  34. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleEvent.spec.ts +143 -0
  35. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleEventContainer.spec.ts +95 -0
  36. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleIdentifier.spec.ts +48 -0
  37. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleInfo.spec.ts +116 -0
  38. package/.yalc/@node-dlc/messaging/__tests__/messages/OrderAccept.spec.ts +77 -0
  39. package/.yalc/@node-dlc/messaging/__tests__/messages/OrderNegotiationFields.spec.ts +216 -0
  40. package/.yalc/@node-dlc/messaging/__tests__/messages/OrderOffer.spec.ts +121 -0
  41. package/.yalc/@node-dlc/messaging/__tests__/messages/OrderPositionInfo.spec.ts +75 -0
  42. package/.yalc/@node-dlc/messaging/__tests__/messages/PayoutCurvePiece.spec.ts +220 -0
  43. package/.yalc/@node-dlc/messaging/__tests__/messages/PayoutFunction.spec.ts +101 -0
  44. package/.yalc/@node-dlc/messaging/__tests__/messages/RoundingIntervals.spec.ts +75 -0
  45. package/.yalc/@node-dlc/messaging/__tests__/serialize/F64.spec.ts +260 -0
  46. package/.yalc/@node-dlc/messaging/__tests__/tsconfig.json +8 -0
  47. package/.yalc/@node-dlc/messaging/coverage/lcov-report/base.css +224 -0
  48. package/.yalc/@node-dlc/messaging/coverage/lcov-report/block-navigation.js +79 -0
  49. package/.yalc/@node-dlc/messaging/coverage/lcov-report/favicon.png +0 -0
  50. package/.yalc/@node-dlc/messaging/coverage/lcov-report/index.html +201 -0
  51. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/MessageType.ts.html +494 -0
  52. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/chain/ChainManager.ts.html +1058 -0
  53. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/chain/ChainMemoryStore.ts.html +182 -0
  54. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/chain/index.html +126 -0
  55. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/domain/Address.ts.html +272 -0
  56. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/domain/index.html +111 -0
  57. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/index.html +141 -0
  58. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/index.ts.html +212 -0
  59. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/irc/IrcMessage.ts.html +563 -0
  60. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/irc/index.html +111 -0
  61. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/AddressCache.ts.html +302 -0
  62. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/BatchFundingGroup.ts.html +503 -0
  63. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/CetAdaptorSignatures.ts.html +347 -0
  64. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/CetAdaptorSignaturesV0.ts.html +347 -0
  65. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/ContractDescriptor.ts.html +1040 -0
  66. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/ContractInfo.ts.html +1382 -0
  67. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcAccept.ts.html +1865 -0
  68. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcCancel.ts.html +251 -0
  69. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcClose.ts.html +986 -0
  70. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcCloseMetadata.ts.html +443 -0
  71. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcIds.ts.html +281 -0
  72. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcInfo.ts.html +323 -0
  73. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcMessage.ts.html +341 -0
  74. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcOffer.ts.html +1895 -0
  75. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcSign.ts.html +1142 -0
  76. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcTransactions.ts.html +719 -0
  77. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/EventDescriptor.ts.html +947 -0
  78. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/FundingInput.ts.html +728 -0
  79. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/FundingSignatures.ts.html +374 -0
  80. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/FundingSignaturesV0.ts.html +374 -0
  81. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/NegotiationFields.ts.html +836 -0
  82. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/NodeAnnouncementMessage.ts.html +515 -0
  83. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAnnouncement.ts.html +608 -0
  84. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAnnouncementV0.ts.html +605 -0
  85. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAttestation.ts.html +956 -0
  86. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAttestationV0.ts.html +770 -0
  87. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEvent.ts.html +830 -0
  88. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEventContainer.ts.html +347 -0
  89. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEventContainerV0.ts.html +347 -0
  90. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEventV0.ts.html +827 -0
  91. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleIdentifier.ts.html +314 -0
  92. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleIdentifierV0.ts.html +314 -0
  93. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleInfo.ts.html +1637 -0
  94. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleInfoV0.ts.html +1631 -0
  95. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderAccept.ts.html +557 -0
  96. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderIrcInfo.ts.html +380 -0
  97. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderMetadata.ts.html +437 -0
  98. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderNegotiationFields.ts.html +551 -0
  99. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderOffer.ts.html +1337 -0
  100. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderPositionInfo.ts.html +590 -0
  101. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/PayoutCurvePiece.ts.html +1427 -0
  102. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/PayoutFunction.ts.html +800 -0
  103. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/RoundingIntervals.ts.html +461 -0
  104. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/RoundingIntervalsV0.ts.html +482 -0
  105. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/ScriptWitnessV0.ts.html +269 -0
  106. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/index.html +636 -0
  107. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serde/SerdeUtils.ts.html +1394 -0
  108. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serde/index.html +111 -0
  109. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/F64.ts.html +1136 -0
  110. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/deserializeTlv.ts.html +125 -0
  111. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/getTlv.ts.html +143 -0
  112. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/index.html +141 -0
  113. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/util.ts.html +179 -0
  114. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/validation/index.html +111 -0
  115. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/validation/validate.ts.html +182 -0
  116. package/.yalc/@node-dlc/messaging/coverage/lcov-report/prettify.css +1 -0
  117. package/.yalc/@node-dlc/messaging/coverage/lcov-report/prettify.js +2 -0
  118. package/.yalc/@node-dlc/messaging/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  119. package/.yalc/@node-dlc/messaging/coverage/lcov-report/sorter.js +170 -0
  120. package/.yalc/@node-dlc/messaging/coverage/lcov.info +5394 -0
  121. package/.yalc/@node-dlc/messaging/dist/MessageType.d.ts +100 -0
  122. package/.yalc/@node-dlc/messaging/dist/MessageType.js +117 -0
  123. package/.yalc/@node-dlc/messaging/dist/MessageType.js.map +1 -0
  124. package/.yalc/@node-dlc/messaging/dist/chain/ChainManager.d.ts +50 -0
  125. package/.yalc/@node-dlc/messaging/dist/chain/ChainManager.js +211 -0
  126. package/.yalc/@node-dlc/messaging/dist/chain/ChainManager.js.map +1 -0
  127. package/.yalc/@node-dlc/messaging/dist/chain/ChainMemoryStore.d.ts +14 -0
  128. package/.yalc/@node-dlc/messaging/dist/chain/ChainMemoryStore.js +28 -0
  129. package/.yalc/@node-dlc/messaging/dist/chain/ChainMemoryStore.js.map +1 -0
  130. package/.yalc/@node-dlc/messaging/dist/chain/DlcStore.d.ts +11 -0
  131. package/.yalc/@node-dlc/messaging/dist/chain/DlcStore.js +3 -0
  132. package/.yalc/@node-dlc/messaging/dist/chain/DlcStore.js.map +1 -0
  133. package/.yalc/@node-dlc/messaging/dist/chain/IChainFilterChainClient.d.ts +48 -0
  134. package/.yalc/@node-dlc/messaging/dist/chain/IChainFilterChainClient.js +3 -0
  135. package/.yalc/@node-dlc/messaging/dist/chain/IChainFilterChainClient.js.map +1 -0
  136. package/.yalc/@node-dlc/messaging/dist/domain/Address.d.ts +24 -0
  137. package/.yalc/@node-dlc/messaging/dist/domain/Address.js +46 -0
  138. package/.yalc/@node-dlc/messaging/dist/domain/Address.js.map +1 -0
  139. package/.yalc/@node-dlc/messaging/dist/index.d.ts +44 -0
  140. package/.yalc/@node-dlc/messaging/dist/index.js +63 -0
  141. package/.yalc/@node-dlc/messaging/dist/index.js.map +1 -0
  142. package/.yalc/@node-dlc/messaging/dist/irc/IrcMessage.d.ts +43 -0
  143. package/.yalc/@node-dlc/messaging/dist/irc/IrcMessage.js +116 -0
  144. package/.yalc/@node-dlc/messaging/dist/irc/IrcMessage.js.map +1 -0
  145. package/.yalc/@node-dlc/messaging/dist/messages/AddressCache.d.ts +15 -0
  146. package/.yalc/@node-dlc/messaging/dist/messages/AddressCache.js +51 -0
  147. package/.yalc/@node-dlc/messaging/dist/messages/AddressCache.js.map +1 -0
  148. package/.yalc/@node-dlc/messaging/dist/messages/BatchFundingGroup.d.ts +61 -0
  149. package/.yalc/@node-dlc/messaging/dist/messages/BatchFundingGroup.js +113 -0
  150. package/.yalc/@node-dlc/messaging/dist/messages/BatchFundingGroup.js.map +1 -0
  151. package/.yalc/@node-dlc/messaging/dist/messages/CetAdaptorSignatures.d.ts +40 -0
  152. package/.yalc/@node-dlc/messaging/dist/messages/CetAdaptorSignatures.js +67 -0
  153. package/.yalc/@node-dlc/messaging/dist/messages/CetAdaptorSignatures.js.map +1 -0
  154. package/.yalc/@node-dlc/messaging/dist/messages/ContractDescriptor.d.ts +122 -0
  155. package/.yalc/@node-dlc/messaging/dist/messages/ContractDescriptor.js +222 -0
  156. package/.yalc/@node-dlc/messaging/dist/messages/ContractDescriptor.js.map +1 -0
  157. package/.yalc/@node-dlc/messaging/dist/messages/ContractInfo.d.ts +135 -0
  158. package/.yalc/@node-dlc/messaging/dist/messages/ContractInfo.js +304 -0
  159. package/.yalc/@node-dlc/messaging/dist/messages/ContractInfo.js.map +1 -0
  160. package/.yalc/@node-dlc/messaging/dist/messages/DlcAccept.d.ts +145 -0
  161. package/.yalc/@node-dlc/messaging/dist/messages/DlcAccept.js +428 -0
  162. package/.yalc/@node-dlc/messaging/dist/messages/DlcAccept.js.map +1 -0
  163. package/.yalc/@node-dlc/messaging/dist/messages/DlcCancel.d.ts +31 -0
  164. package/.yalc/@node-dlc/messaging/dist/messages/DlcCancel.js +51 -0
  165. package/.yalc/@node-dlc/messaging/dist/messages/DlcCancel.js.map +1 -0
  166. package/.yalc/@node-dlc/messaging/dist/messages/DlcClose.d.ts +68 -0
  167. package/.yalc/@node-dlc/messaging/dist/messages/DlcClose.js +210 -0
  168. package/.yalc/@node-dlc/messaging/dist/messages/DlcClose.js.map +1 -0
  169. package/.yalc/@node-dlc/messaging/dist/messages/DlcCloseMetadata.d.ts +44 -0
  170. package/.yalc/@node-dlc/messaging/dist/messages/DlcCloseMetadata.js +74 -0
  171. package/.yalc/@node-dlc/messaging/dist/messages/DlcCloseMetadata.js.map +1 -0
  172. package/.yalc/@node-dlc/messaging/dist/messages/DlcIds.d.ts +26 -0
  173. package/.yalc/@node-dlc/messaging/dist/messages/DlcIds.js +58 -0
  174. package/.yalc/@node-dlc/messaging/dist/messages/DlcIds.js.map +1 -0
  175. package/.yalc/@node-dlc/messaging/dist/messages/DlcInfo.d.ts +31 -0
  176. package/.yalc/@node-dlc/messaging/dist/messages/DlcInfo.js +61 -0
  177. package/.yalc/@node-dlc/messaging/dist/messages/DlcInfo.js.map +1 -0
  178. package/.yalc/@node-dlc/messaging/dist/messages/DlcMessage.d.ts +23 -0
  179. package/.yalc/@node-dlc/messaging/dist/messages/DlcMessage.js +54 -0
  180. package/.yalc/@node-dlc/messaging/dist/messages/DlcMessage.js.map +1 -0
  181. package/.yalc/@node-dlc/messaging/dist/messages/DlcOffer.d.ts +131 -0
  182. package/.yalc/@node-dlc/messaging/dist/messages/DlcOffer.js +418 -0
  183. package/.yalc/@node-dlc/messaging/dist/messages/DlcOffer.js.map +1 -0
  184. package/.yalc/@node-dlc/messaging/dist/messages/DlcSign.d.ts +96 -0
  185. package/.yalc/@node-dlc/messaging/dist/messages/DlcSign.js +267 -0
  186. package/.yalc/@node-dlc/messaging/dist/messages/DlcSign.js.map +1 -0
  187. package/.yalc/@node-dlc/messaging/dist/messages/DlcTransactions.d.ts +69 -0
  188. package/.yalc/@node-dlc/messaging/dist/messages/DlcTransactions.js +149 -0
  189. package/.yalc/@node-dlc/messaging/dist/messages/DlcTransactions.js.map +1 -0
  190. package/.yalc/@node-dlc/messaging/dist/messages/EventDescriptor.d.ts +106 -0
  191. package/.yalc/@node-dlc/messaging/dist/messages/EventDescriptor.js +209 -0
  192. package/.yalc/@node-dlc/messaging/dist/messages/EventDescriptor.js.map +1 -0
  193. package/.yalc/@node-dlc/messaging/dist/messages/FundingInput.d.ts +62 -0
  194. package/.yalc/@node-dlc/messaging/dist/messages/FundingInput.js +163 -0
  195. package/.yalc/@node-dlc/messaging/dist/messages/FundingInput.js.map +1 -0
  196. package/.yalc/@node-dlc/messaging/dist/messages/FundingSignatures.d.ts +36 -0
  197. package/.yalc/@node-dlc/messaging/dist/messages/FundingSignatures.js +78 -0
  198. package/.yalc/@node-dlc/messaging/dist/messages/FundingSignatures.js.map +1 -0
  199. package/.yalc/@node-dlc/messaging/dist/messages/IWireMessage.d.ts +6 -0
  200. package/.yalc/@node-dlc/messaging/dist/messages/IWireMessage.js +3 -0
  201. package/.yalc/@node-dlc/messaging/dist/messages/IWireMessage.js.map +1 -0
  202. package/.yalc/@node-dlc/messaging/dist/messages/NegotiationFields.d.ts +86 -0
  203. package/.yalc/@node-dlc/messaging/dist/messages/NegotiationFields.js +185 -0
  204. package/.yalc/@node-dlc/messaging/dist/messages/NegotiationFields.js.map +1 -0
  205. package/.yalc/@node-dlc/messaging/dist/messages/NodeAnnouncementMessage.d.ts +57 -0
  206. package/.yalc/@node-dlc/messaging/dist/messages/NodeAnnouncementMessage.js +127 -0
  207. package/.yalc/@node-dlc/messaging/dist/messages/NodeAnnouncementMessage.js.map +1 -0
  208. package/.yalc/@node-dlc/messaging/dist/messages/OracleAnnouncement.d.ts +76 -0
  209. package/.yalc/@node-dlc/messaging/dist/messages/OracleAnnouncement.js +131 -0
  210. package/.yalc/@node-dlc/messaging/dist/messages/OracleAnnouncement.js.map +1 -0
  211. package/.yalc/@node-dlc/messaging/dist/messages/OracleAttestation.d.ts +68 -0
  212. package/.yalc/@node-dlc/messaging/dist/messages/OracleAttestation.js +239 -0
  213. package/.yalc/@node-dlc/messaging/dist/messages/OracleAttestation.js.map +1 -0
  214. package/.yalc/@node-dlc/messaging/dist/messages/OracleEvent.d.ts +90 -0
  215. package/.yalc/@node-dlc/messaging/dist/messages/OracleEvent.js +189 -0
  216. package/.yalc/@node-dlc/messaging/dist/messages/OracleEvent.js.map +1 -0
  217. package/.yalc/@node-dlc/messaging/dist/messages/OracleEventContainer.d.ts +32 -0
  218. package/.yalc/@node-dlc/messaging/dist/messages/OracleEventContainer.js +67 -0
  219. package/.yalc/@node-dlc/messaging/dist/messages/OracleEventContainer.js.map +1 -0
  220. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifier.d.ts +32 -0
  221. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifier.js +58 -0
  222. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifier.js.map +1 -0
  223. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifierV0.d.ts +32 -0
  224. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifierV0.js +58 -0
  225. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifierV0.js.map +1 -0
  226. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfo.d.ts +161 -0
  227. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfo.js +390 -0
  228. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfo.js.map +1 -0
  229. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfoV0.d.ts +161 -0
  230. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfoV0.js +387 -0
  231. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfoV0.js.map +1 -0
  232. package/.yalc/@node-dlc/messaging/dist/messages/OrderAccept.d.ts +65 -0
  233. package/.yalc/@node-dlc/messaging/dist/messages/OrderAccept.js +125 -0
  234. package/.yalc/@node-dlc/messaging/dist/messages/OrderAccept.js.map +1 -0
  235. package/.yalc/@node-dlc/messaging/dist/messages/OrderIrcInfo.d.ts +42 -0
  236. package/.yalc/@node-dlc/messaging/dist/messages/OrderIrcInfo.js +74 -0
  237. package/.yalc/@node-dlc/messaging/dist/messages/OrderIrcInfo.js.map +1 -0
  238. package/.yalc/@node-dlc/messaging/dist/messages/OrderMetadata.d.ts +56 -0
  239. package/.yalc/@node-dlc/messaging/dist/messages/OrderMetadata.js +87 -0
  240. package/.yalc/@node-dlc/messaging/dist/messages/OrderMetadata.js.map +1 -0
  241. package/.yalc/@node-dlc/messaging/dist/messages/OrderNegotiationFields.d.ts +69 -0
  242. package/.yalc/@node-dlc/messaging/dist/messages/OrderNegotiationFields.js +114 -0
  243. package/.yalc/@node-dlc/messaging/dist/messages/OrderNegotiationFields.js.map +1 -0
  244. package/.yalc/@node-dlc/messaging/dist/messages/OrderOffer.d.ts +97 -0
  245. package/.yalc/@node-dlc/messaging/dist/messages/OrderOffer.js +296 -0
  246. package/.yalc/@node-dlc/messaging/dist/messages/OrderOffer.js.map +1 -0
  247. package/.yalc/@node-dlc/messaging/dist/messages/OrderPositionInfo.d.ts +50 -0
  248. package/.yalc/@node-dlc/messaging/dist/messages/OrderPositionInfo.js +125 -0
  249. package/.yalc/@node-dlc/messaging/dist/messages/OrderPositionInfo.js.map +1 -0
  250. package/.yalc/@node-dlc/messaging/dist/messages/PayoutCurvePiece.d.ts +129 -0
  251. package/.yalc/@node-dlc/messaging/dist/messages/PayoutCurvePiece.js +327 -0
  252. package/.yalc/@node-dlc/messaging/dist/messages/PayoutCurvePiece.js.map +1 -0
  253. package/.yalc/@node-dlc/messaging/dist/messages/PayoutFunction.d.ts +66 -0
  254. package/.yalc/@node-dlc/messaging/dist/messages/PayoutFunction.js +170 -0
  255. package/.yalc/@node-dlc/messaging/dist/messages/PayoutFunction.js.map +1 -0
  256. package/.yalc/@node-dlc/messaging/dist/messages/RoundingIntervals.d.ts +52 -0
  257. package/.yalc/@node-dlc/messaging/dist/messages/RoundingIntervals.js +95 -0
  258. package/.yalc/@node-dlc/messaging/dist/messages/RoundingIntervals.js.map +1 -0
  259. package/.yalc/@node-dlc/messaging/dist/messages/ScriptWitnessV0.d.ts +29 -0
  260. package/.yalc/@node-dlc/messaging/dist/messages/ScriptWitnessV0.js +50 -0
  261. package/.yalc/@node-dlc/messaging/dist/messages/ScriptWitnessV0.js.map +1 -0
  262. package/.yalc/@node-dlc/messaging/dist/messages/Tlv.d.ts +15 -0
  263. package/.yalc/@node-dlc/messaging/dist/messages/Tlv.js +32 -0
  264. package/.yalc/@node-dlc/messaging/dist/messages/Tlv.js.map +1 -0
  265. package/.yalc/@node-dlc/messaging/dist/serialize/F64.d.ts +154 -0
  266. package/.yalc/@node-dlc/messaging/dist/serialize/F64.js +307 -0
  267. package/.yalc/@node-dlc/messaging/dist/serialize/F64.js.map +1 -0
  268. package/.yalc/@node-dlc/messaging/dist/serialize/deserializeTlv.d.ts +9 -0
  269. package/.yalc/@node-dlc/messaging/dist/serialize/deserializeTlv.js +11 -0
  270. package/.yalc/@node-dlc/messaging/dist/serialize/deserializeTlv.js.map +1 -0
  271. package/.yalc/@node-dlc/messaging/dist/serialize/getTlv.d.ts +4 -0
  272. package/.yalc/@node-dlc/messaging/dist/serialize/getTlv.js +23 -0
  273. package/.yalc/@node-dlc/messaging/dist/serialize/getTlv.js.map +1 -0
  274. package/.yalc/@node-dlc/messaging/dist/serialize/readTlvs.d.ts +8 -0
  275. package/.yalc/@node-dlc/messaging/dist/serialize/readTlvs.js +33 -0
  276. package/.yalc/@node-dlc/messaging/dist/serialize/readTlvs.js.map +1 -0
  277. package/.yalc/@node-dlc/messaging/dist/util.d.ts +13 -0
  278. package/.yalc/@node-dlc/messaging/dist/util.js +40 -0
  279. package/.yalc/@node-dlc/messaging/dist/util.js.map +1 -0
  280. package/.yalc/@node-dlc/messaging/dist/validation/validate.d.ts +4 -0
  281. package/.yalc/@node-dlc/messaging/dist/validation/validate.js +31 -0
  282. package/.yalc/@node-dlc/messaging/dist/validation/validate.js.map +1 -0
  283. package/.yalc/@node-dlc/messaging/lib/MessageType.ts +138 -0
  284. package/.yalc/@node-dlc/messaging/lib/chain/ChainManager.ts +326 -0
  285. package/.yalc/@node-dlc/messaging/lib/chain/ChainMemoryStore.ts +34 -0
  286. package/.yalc/@node-dlc/messaging/lib/chain/DlcStore.ts +11 -0
  287. package/.yalc/@node-dlc/messaging/lib/chain/IChainFilterChainClient.ts +57 -0
  288. package/.yalc/@node-dlc/messaging/lib/domain/Address.ts +64 -0
  289. package/.yalc/@node-dlc/messaging/lib/index.ts +44 -0
  290. package/.yalc/@node-dlc/messaging/lib/irc/IrcMessage.ts +161 -0
  291. package/.yalc/@node-dlc/messaging/lib/messages/AddressCache.ts +74 -0
  292. package/.yalc/@node-dlc/messaging/lib/messages/BatchFundingGroup.ts +141 -0
  293. package/.yalc/@node-dlc/messaging/lib/messages/CetAdaptorSignatures.ts +89 -0
  294. package/.yalc/@node-dlc/messaging/lib/messages/ContractDescriptor.ts +318 -0
  295. package/.yalc/@node-dlc/messaging/lib/messages/ContractInfo.ts +434 -0
  296. package/.yalc/@node-dlc/messaging/lib/messages/DlcAccept.ts +595 -0
  297. package/.yalc/@node-dlc/messaging/lib/messages/DlcCancel.ts +57 -0
  298. package/.yalc/@node-dlc/messaging/lib/messages/DlcClose.ts +302 -0
  299. package/.yalc/@node-dlc/messaging/lib/messages/DlcCloseMetadata.ts +121 -0
  300. package/.yalc/@node-dlc/messaging/lib/messages/DlcIds.ts +67 -0
  301. package/.yalc/@node-dlc/messaging/lib/messages/DlcInfo.ts +81 -0
  302. package/.yalc/@node-dlc/messaging/lib/messages/DlcMessage.ts +87 -0
  303. package/.yalc/@node-dlc/messaging/lib/messages/DlcOffer.ts +605 -0
  304. package/.yalc/@node-dlc/messaging/lib/messages/DlcSign.ts +354 -0
  305. package/.yalc/@node-dlc/messaging/lib/messages/DlcTransactions.ts +213 -0
  306. package/.yalc/@node-dlc/messaging/lib/messages/EventDescriptor.ts +289 -0
  307. package/.yalc/@node-dlc/messaging/lib/messages/FundingInput.ts +216 -0
  308. package/.yalc/@node-dlc/messaging/lib/messages/FundingSignatures.ts +98 -0
  309. package/.yalc/@node-dlc/messaging/lib/messages/IWireMessage.ts +6 -0
  310. package/.yalc/@node-dlc/messaging/lib/messages/NegotiationFields.ts +252 -0
  311. package/.yalc/@node-dlc/messaging/lib/messages/NodeAnnouncementMessage.ts +145 -0
  312. package/.yalc/@node-dlc/messaging/lib/messages/OracleAnnouncement.ts +176 -0
  313. package/.yalc/@node-dlc/messaging/lib/messages/OracleAttestation.ts +292 -0
  314. package/.yalc/@node-dlc/messaging/lib/messages/OracleEvent.ts +250 -0
  315. package/.yalc/@node-dlc/messaging/lib/messages/OracleEventContainer.ts +89 -0
  316. package/.yalc/@node-dlc/messaging/lib/messages/OracleIdentifier.ts +78 -0
  317. package/.yalc/@node-dlc/messaging/lib/messages/OracleInfo.ts +519 -0
  318. package/.yalc/@node-dlc/messaging/lib/messages/OrderAccept.ts +159 -0
  319. package/.yalc/@node-dlc/messaging/lib/messages/OrderIrcInfo.ts +100 -0
  320. package/.yalc/@node-dlc/messaging/lib/messages/OrderMetadata.ts +119 -0
  321. package/.yalc/@node-dlc/messaging/lib/messages/OrderNegotiationFields.ts +157 -0
  322. package/.yalc/@node-dlc/messaging/lib/messages/OrderOffer.ts +419 -0
  323. package/.yalc/@node-dlc/messaging/lib/messages/OrderPositionInfo.ts +170 -0
  324. package/.yalc/@node-dlc/messaging/lib/messages/PayoutCurvePiece.ts +449 -0
  325. package/.yalc/@node-dlc/messaging/lib/messages/PayoutFunction.ts +240 -0
  326. package/.yalc/@node-dlc/messaging/lib/messages/RoundingIntervals.ts +127 -0
  327. package/.yalc/@node-dlc/messaging/lib/messages/ScriptWitnessV0.ts +63 -0
  328. package/.yalc/@node-dlc/messaging/lib/messages/Tlv.ts +40 -0
  329. package/.yalc/@node-dlc/messaging/lib/serialize/F64.ts +352 -0
  330. package/.yalc/@node-dlc/messaging/lib/serialize/deserializeTlv.ts +15 -0
  331. package/.yalc/@node-dlc/messaging/lib/serialize/getTlv.ts +21 -0
  332. package/.yalc/@node-dlc/messaging/lib/serialize/readTlvs.ts +37 -0
  333. package/.yalc/@node-dlc/messaging/lib/util.ts +33 -0
  334. package/.yalc/@node-dlc/messaging/lib/validation/validate.ts +34 -0
  335. package/.yalc/@node-dlc/messaging/package.json +42 -0
  336. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_3_of_3_test.json +210 -0
  337. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_3_of_5_test.json +468 -0
  338. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_3_of_5_test.json +1517 -0
  339. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_5_of_5_test.json +545 -0
  340. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_with_diff_3_of_5_test.json +4761 -0
  341. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_with_diff_5_of_5_test.json +2169 -0
  342. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_single_oracle_test.json +164 -0
  343. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/single_oracle_numerical_hyperbola_test.json +502 -0
  344. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/single_oracle_numerical_test.json +262 -0
  345. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/three_of_five_oracle_numerical_with_diff_test.json +4382 -0
  346. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/three_of_three_oracle_numerical_test.json +324 -0
  347. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/three_of_three_oracle_numerical_with_diff_test.json +652 -0
  348. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/two_of_five_oracle_numerical_test.json +1138 -0
  349. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/two_of_five_oracle_numerical_with_diff_test.json +2222 -0
  350. package/.yalc/@node-dlc/messaging/test_vectors/oracle/external_oracle_announcements.json +0 -0
  351. package/.yalc/@node-dlc/messaging/test_vectors/oracle/oracle_message_test_vectors.json +115 -0
  352. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/accept_msg.json +1465 -0
  353. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_fee_test.json +12362 -0
  354. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_fee_test_scripts.json +57 -0
  355. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_test.json +2766 -0
  356. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_tx_test.json +2899 -0
  357. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/offer_msg.json +163 -0
  358. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/offer_msg_disjoint.json +352 -0
  359. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/segment_chunk_msg.json +12635 -0
  360. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/segment_start_msg.json +4022 -0
  361. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/sign_msg.json +383 -0
  362. package/.yalc/@node-dlc/messaging/tsconfig.json +7 -0
  363. package/.yalc/@node-dlc/messaging/yalc.sig +1 -0
  364. package/CHANGELOG.md +70 -0
  365. package/dist/dlc.d.ts +3 -3
  366. package/dist/models/Output.js.map +1 -1
  367. package/lib/dlc.ts +4 -14
  368. package/lib/models/Output.ts +4 -1
  369. package/package.json +4 -4
  370. package/yalc.lock +10 -0
@@ -0,0 +1,1631 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for lib/messages/OracleInfoV0.ts</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../../prettify.css" />
9
+ <link rel="stylesheet" href="../../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../../index.html">All files</a> / <a href="index.html">lib/messages</a> OracleInfoV0.ts</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">55.62% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>94/169</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">40% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>26/65</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">61.76% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>21/34</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">56.02% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>93/166</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ </div>
58
+ <div class='status-line medium'></div>
59
+ <pre><table class="coverage">
60
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
61
+ <a name='L2'></a><a href='#L2'>2</a>
62
+ <a name='L3'></a><a href='#L3'>3</a>
63
+ <a name='L4'></a><a href='#L4'>4</a>
64
+ <a name='L5'></a><a href='#L5'>5</a>
65
+ <a name='L6'></a><a href='#L6'>6</a>
66
+ <a name='L7'></a><a href='#L7'>7</a>
67
+ <a name='L8'></a><a href='#L8'>8</a>
68
+ <a name='L9'></a><a href='#L9'>9</a>
69
+ <a name='L10'></a><a href='#L10'>10</a>
70
+ <a name='L11'></a><a href='#L11'>11</a>
71
+ <a name='L12'></a><a href='#L12'>12</a>
72
+ <a name='L13'></a><a href='#L13'>13</a>
73
+ <a name='L14'></a><a href='#L14'>14</a>
74
+ <a name='L15'></a><a href='#L15'>15</a>
75
+ <a name='L16'></a><a href='#L16'>16</a>
76
+ <a name='L17'></a><a href='#L17'>17</a>
77
+ <a name='L18'></a><a href='#L18'>18</a>
78
+ <a name='L19'></a><a href='#L19'>19</a>
79
+ <a name='L20'></a><a href='#L20'>20</a>
80
+ <a name='L21'></a><a href='#L21'>21</a>
81
+ <a name='L22'></a><a href='#L22'>22</a>
82
+ <a name='L23'></a><a href='#L23'>23</a>
83
+ <a name='L24'></a><a href='#L24'>24</a>
84
+ <a name='L25'></a><a href='#L25'>25</a>
85
+ <a name='L26'></a><a href='#L26'>26</a>
86
+ <a name='L27'></a><a href='#L27'>27</a>
87
+ <a name='L28'></a><a href='#L28'>28</a>
88
+ <a name='L29'></a><a href='#L29'>29</a>
89
+ <a name='L30'></a><a href='#L30'>30</a>
90
+ <a name='L31'></a><a href='#L31'>31</a>
91
+ <a name='L32'></a><a href='#L32'>32</a>
92
+ <a name='L33'></a><a href='#L33'>33</a>
93
+ <a name='L34'></a><a href='#L34'>34</a>
94
+ <a name='L35'></a><a href='#L35'>35</a>
95
+ <a name='L36'></a><a href='#L36'>36</a>
96
+ <a name='L37'></a><a href='#L37'>37</a>
97
+ <a name='L38'></a><a href='#L38'>38</a>
98
+ <a name='L39'></a><a href='#L39'>39</a>
99
+ <a name='L40'></a><a href='#L40'>40</a>
100
+ <a name='L41'></a><a href='#L41'>41</a>
101
+ <a name='L42'></a><a href='#L42'>42</a>
102
+ <a name='L43'></a><a href='#L43'>43</a>
103
+ <a name='L44'></a><a href='#L44'>44</a>
104
+ <a name='L45'></a><a href='#L45'>45</a>
105
+ <a name='L46'></a><a href='#L46'>46</a>
106
+ <a name='L47'></a><a href='#L47'>47</a>
107
+ <a name='L48'></a><a href='#L48'>48</a>
108
+ <a name='L49'></a><a href='#L49'>49</a>
109
+ <a name='L50'></a><a href='#L50'>50</a>
110
+ <a name='L51'></a><a href='#L51'>51</a>
111
+ <a name='L52'></a><a href='#L52'>52</a>
112
+ <a name='L53'></a><a href='#L53'>53</a>
113
+ <a name='L54'></a><a href='#L54'>54</a>
114
+ <a name='L55'></a><a href='#L55'>55</a>
115
+ <a name='L56'></a><a href='#L56'>56</a>
116
+ <a name='L57'></a><a href='#L57'>57</a>
117
+ <a name='L58'></a><a href='#L58'>58</a>
118
+ <a name='L59'></a><a href='#L59'>59</a>
119
+ <a name='L60'></a><a href='#L60'>60</a>
120
+ <a name='L61'></a><a href='#L61'>61</a>
121
+ <a name='L62'></a><a href='#L62'>62</a>
122
+ <a name='L63'></a><a href='#L63'>63</a>
123
+ <a name='L64'></a><a href='#L64'>64</a>
124
+ <a name='L65'></a><a href='#L65'>65</a>
125
+ <a name='L66'></a><a href='#L66'>66</a>
126
+ <a name='L67'></a><a href='#L67'>67</a>
127
+ <a name='L68'></a><a href='#L68'>68</a>
128
+ <a name='L69'></a><a href='#L69'>69</a>
129
+ <a name='L70'></a><a href='#L70'>70</a>
130
+ <a name='L71'></a><a href='#L71'>71</a>
131
+ <a name='L72'></a><a href='#L72'>72</a>
132
+ <a name='L73'></a><a href='#L73'>73</a>
133
+ <a name='L74'></a><a href='#L74'>74</a>
134
+ <a name='L75'></a><a href='#L75'>75</a>
135
+ <a name='L76'></a><a href='#L76'>76</a>
136
+ <a name='L77'></a><a href='#L77'>77</a>
137
+ <a name='L78'></a><a href='#L78'>78</a>
138
+ <a name='L79'></a><a href='#L79'>79</a>
139
+ <a name='L80'></a><a href='#L80'>80</a>
140
+ <a name='L81'></a><a href='#L81'>81</a>
141
+ <a name='L82'></a><a href='#L82'>82</a>
142
+ <a name='L83'></a><a href='#L83'>83</a>
143
+ <a name='L84'></a><a href='#L84'>84</a>
144
+ <a name='L85'></a><a href='#L85'>85</a>
145
+ <a name='L86'></a><a href='#L86'>86</a>
146
+ <a name='L87'></a><a href='#L87'>87</a>
147
+ <a name='L88'></a><a href='#L88'>88</a>
148
+ <a name='L89'></a><a href='#L89'>89</a>
149
+ <a name='L90'></a><a href='#L90'>90</a>
150
+ <a name='L91'></a><a href='#L91'>91</a>
151
+ <a name='L92'></a><a href='#L92'>92</a>
152
+ <a name='L93'></a><a href='#L93'>93</a>
153
+ <a name='L94'></a><a href='#L94'>94</a>
154
+ <a name='L95'></a><a href='#L95'>95</a>
155
+ <a name='L96'></a><a href='#L96'>96</a>
156
+ <a name='L97'></a><a href='#L97'>97</a>
157
+ <a name='L98'></a><a href='#L98'>98</a>
158
+ <a name='L99'></a><a href='#L99'>99</a>
159
+ <a name='L100'></a><a href='#L100'>100</a>
160
+ <a name='L101'></a><a href='#L101'>101</a>
161
+ <a name='L102'></a><a href='#L102'>102</a>
162
+ <a name='L103'></a><a href='#L103'>103</a>
163
+ <a name='L104'></a><a href='#L104'>104</a>
164
+ <a name='L105'></a><a href='#L105'>105</a>
165
+ <a name='L106'></a><a href='#L106'>106</a>
166
+ <a name='L107'></a><a href='#L107'>107</a>
167
+ <a name='L108'></a><a href='#L108'>108</a>
168
+ <a name='L109'></a><a href='#L109'>109</a>
169
+ <a name='L110'></a><a href='#L110'>110</a>
170
+ <a name='L111'></a><a href='#L111'>111</a>
171
+ <a name='L112'></a><a href='#L112'>112</a>
172
+ <a name='L113'></a><a href='#L113'>113</a>
173
+ <a name='L114'></a><a href='#L114'>114</a>
174
+ <a name='L115'></a><a href='#L115'>115</a>
175
+ <a name='L116'></a><a href='#L116'>116</a>
176
+ <a name='L117'></a><a href='#L117'>117</a>
177
+ <a name='L118'></a><a href='#L118'>118</a>
178
+ <a name='L119'></a><a href='#L119'>119</a>
179
+ <a name='L120'></a><a href='#L120'>120</a>
180
+ <a name='L121'></a><a href='#L121'>121</a>
181
+ <a name='L122'></a><a href='#L122'>122</a>
182
+ <a name='L123'></a><a href='#L123'>123</a>
183
+ <a name='L124'></a><a href='#L124'>124</a>
184
+ <a name='L125'></a><a href='#L125'>125</a>
185
+ <a name='L126'></a><a href='#L126'>126</a>
186
+ <a name='L127'></a><a href='#L127'>127</a>
187
+ <a name='L128'></a><a href='#L128'>128</a>
188
+ <a name='L129'></a><a href='#L129'>129</a>
189
+ <a name='L130'></a><a href='#L130'>130</a>
190
+ <a name='L131'></a><a href='#L131'>131</a>
191
+ <a name='L132'></a><a href='#L132'>132</a>
192
+ <a name='L133'></a><a href='#L133'>133</a>
193
+ <a name='L134'></a><a href='#L134'>134</a>
194
+ <a name='L135'></a><a href='#L135'>135</a>
195
+ <a name='L136'></a><a href='#L136'>136</a>
196
+ <a name='L137'></a><a href='#L137'>137</a>
197
+ <a name='L138'></a><a href='#L138'>138</a>
198
+ <a name='L139'></a><a href='#L139'>139</a>
199
+ <a name='L140'></a><a href='#L140'>140</a>
200
+ <a name='L141'></a><a href='#L141'>141</a>
201
+ <a name='L142'></a><a href='#L142'>142</a>
202
+ <a name='L143'></a><a href='#L143'>143</a>
203
+ <a name='L144'></a><a href='#L144'>144</a>
204
+ <a name='L145'></a><a href='#L145'>145</a>
205
+ <a name='L146'></a><a href='#L146'>146</a>
206
+ <a name='L147'></a><a href='#L147'>147</a>
207
+ <a name='L148'></a><a href='#L148'>148</a>
208
+ <a name='L149'></a><a href='#L149'>149</a>
209
+ <a name='L150'></a><a href='#L150'>150</a>
210
+ <a name='L151'></a><a href='#L151'>151</a>
211
+ <a name='L152'></a><a href='#L152'>152</a>
212
+ <a name='L153'></a><a href='#L153'>153</a>
213
+ <a name='L154'></a><a href='#L154'>154</a>
214
+ <a name='L155'></a><a href='#L155'>155</a>
215
+ <a name='L156'></a><a href='#L156'>156</a>
216
+ <a name='L157'></a><a href='#L157'>157</a>
217
+ <a name='L158'></a><a href='#L158'>158</a>
218
+ <a name='L159'></a><a href='#L159'>159</a>
219
+ <a name='L160'></a><a href='#L160'>160</a>
220
+ <a name='L161'></a><a href='#L161'>161</a>
221
+ <a name='L162'></a><a href='#L162'>162</a>
222
+ <a name='L163'></a><a href='#L163'>163</a>
223
+ <a name='L164'></a><a href='#L164'>164</a>
224
+ <a name='L165'></a><a href='#L165'>165</a>
225
+ <a name='L166'></a><a href='#L166'>166</a>
226
+ <a name='L167'></a><a href='#L167'>167</a>
227
+ <a name='L168'></a><a href='#L168'>168</a>
228
+ <a name='L169'></a><a href='#L169'>169</a>
229
+ <a name='L170'></a><a href='#L170'>170</a>
230
+ <a name='L171'></a><a href='#L171'>171</a>
231
+ <a name='L172'></a><a href='#L172'>172</a>
232
+ <a name='L173'></a><a href='#L173'>173</a>
233
+ <a name='L174'></a><a href='#L174'>174</a>
234
+ <a name='L175'></a><a href='#L175'>175</a>
235
+ <a name='L176'></a><a href='#L176'>176</a>
236
+ <a name='L177'></a><a href='#L177'>177</a>
237
+ <a name='L178'></a><a href='#L178'>178</a>
238
+ <a name='L179'></a><a href='#L179'>179</a>
239
+ <a name='L180'></a><a href='#L180'>180</a>
240
+ <a name='L181'></a><a href='#L181'>181</a>
241
+ <a name='L182'></a><a href='#L182'>182</a>
242
+ <a name='L183'></a><a href='#L183'>183</a>
243
+ <a name='L184'></a><a href='#L184'>184</a>
244
+ <a name='L185'></a><a href='#L185'>185</a>
245
+ <a name='L186'></a><a href='#L186'>186</a>
246
+ <a name='L187'></a><a href='#L187'>187</a>
247
+ <a name='L188'></a><a href='#L188'>188</a>
248
+ <a name='L189'></a><a href='#L189'>189</a>
249
+ <a name='L190'></a><a href='#L190'>190</a>
250
+ <a name='L191'></a><a href='#L191'>191</a>
251
+ <a name='L192'></a><a href='#L192'>192</a>
252
+ <a name='L193'></a><a href='#L193'>193</a>
253
+ <a name='L194'></a><a href='#L194'>194</a>
254
+ <a name='L195'></a><a href='#L195'>195</a>
255
+ <a name='L196'></a><a href='#L196'>196</a>
256
+ <a name='L197'></a><a href='#L197'>197</a>
257
+ <a name='L198'></a><a href='#L198'>198</a>
258
+ <a name='L199'></a><a href='#L199'>199</a>
259
+ <a name='L200'></a><a href='#L200'>200</a>
260
+ <a name='L201'></a><a href='#L201'>201</a>
261
+ <a name='L202'></a><a href='#L202'>202</a>
262
+ <a name='L203'></a><a href='#L203'>203</a>
263
+ <a name='L204'></a><a href='#L204'>204</a>
264
+ <a name='L205'></a><a href='#L205'>205</a>
265
+ <a name='L206'></a><a href='#L206'>206</a>
266
+ <a name='L207'></a><a href='#L207'>207</a>
267
+ <a name='L208'></a><a href='#L208'>208</a>
268
+ <a name='L209'></a><a href='#L209'>209</a>
269
+ <a name='L210'></a><a href='#L210'>210</a>
270
+ <a name='L211'></a><a href='#L211'>211</a>
271
+ <a name='L212'></a><a href='#L212'>212</a>
272
+ <a name='L213'></a><a href='#L213'>213</a>
273
+ <a name='L214'></a><a href='#L214'>214</a>
274
+ <a name='L215'></a><a href='#L215'>215</a>
275
+ <a name='L216'></a><a href='#L216'>216</a>
276
+ <a name='L217'></a><a href='#L217'>217</a>
277
+ <a name='L218'></a><a href='#L218'>218</a>
278
+ <a name='L219'></a><a href='#L219'>219</a>
279
+ <a name='L220'></a><a href='#L220'>220</a>
280
+ <a name='L221'></a><a href='#L221'>221</a>
281
+ <a name='L222'></a><a href='#L222'>222</a>
282
+ <a name='L223'></a><a href='#L223'>223</a>
283
+ <a name='L224'></a><a href='#L224'>224</a>
284
+ <a name='L225'></a><a href='#L225'>225</a>
285
+ <a name='L226'></a><a href='#L226'>226</a>
286
+ <a name='L227'></a><a href='#L227'>227</a>
287
+ <a name='L228'></a><a href='#L228'>228</a>
288
+ <a name='L229'></a><a href='#L229'>229</a>
289
+ <a name='L230'></a><a href='#L230'>230</a>
290
+ <a name='L231'></a><a href='#L231'>231</a>
291
+ <a name='L232'></a><a href='#L232'>232</a>
292
+ <a name='L233'></a><a href='#L233'>233</a>
293
+ <a name='L234'></a><a href='#L234'>234</a>
294
+ <a name='L235'></a><a href='#L235'>235</a>
295
+ <a name='L236'></a><a href='#L236'>236</a>
296
+ <a name='L237'></a><a href='#L237'>237</a>
297
+ <a name='L238'></a><a href='#L238'>238</a>
298
+ <a name='L239'></a><a href='#L239'>239</a>
299
+ <a name='L240'></a><a href='#L240'>240</a>
300
+ <a name='L241'></a><a href='#L241'>241</a>
301
+ <a name='L242'></a><a href='#L242'>242</a>
302
+ <a name='L243'></a><a href='#L243'>243</a>
303
+ <a name='L244'></a><a href='#L244'>244</a>
304
+ <a name='L245'></a><a href='#L245'>245</a>
305
+ <a name='L246'></a><a href='#L246'>246</a>
306
+ <a name='L247'></a><a href='#L247'>247</a>
307
+ <a name='L248'></a><a href='#L248'>248</a>
308
+ <a name='L249'></a><a href='#L249'>249</a>
309
+ <a name='L250'></a><a href='#L250'>250</a>
310
+ <a name='L251'></a><a href='#L251'>251</a>
311
+ <a name='L252'></a><a href='#L252'>252</a>
312
+ <a name='L253'></a><a href='#L253'>253</a>
313
+ <a name='L254'></a><a href='#L254'>254</a>
314
+ <a name='L255'></a><a href='#L255'>255</a>
315
+ <a name='L256'></a><a href='#L256'>256</a>
316
+ <a name='L257'></a><a href='#L257'>257</a>
317
+ <a name='L258'></a><a href='#L258'>258</a>
318
+ <a name='L259'></a><a href='#L259'>259</a>
319
+ <a name='L260'></a><a href='#L260'>260</a>
320
+ <a name='L261'></a><a href='#L261'>261</a>
321
+ <a name='L262'></a><a href='#L262'>262</a>
322
+ <a name='L263'></a><a href='#L263'>263</a>
323
+ <a name='L264'></a><a href='#L264'>264</a>
324
+ <a name='L265'></a><a href='#L265'>265</a>
325
+ <a name='L266'></a><a href='#L266'>266</a>
326
+ <a name='L267'></a><a href='#L267'>267</a>
327
+ <a name='L268'></a><a href='#L268'>268</a>
328
+ <a name='L269'></a><a href='#L269'>269</a>
329
+ <a name='L270'></a><a href='#L270'>270</a>
330
+ <a name='L271'></a><a href='#L271'>271</a>
331
+ <a name='L272'></a><a href='#L272'>272</a>
332
+ <a name='L273'></a><a href='#L273'>273</a>
333
+ <a name='L274'></a><a href='#L274'>274</a>
334
+ <a name='L275'></a><a href='#L275'>275</a>
335
+ <a name='L276'></a><a href='#L276'>276</a>
336
+ <a name='L277'></a><a href='#L277'>277</a>
337
+ <a name='L278'></a><a href='#L278'>278</a>
338
+ <a name='L279'></a><a href='#L279'>279</a>
339
+ <a name='L280'></a><a href='#L280'>280</a>
340
+ <a name='L281'></a><a href='#L281'>281</a>
341
+ <a name='L282'></a><a href='#L282'>282</a>
342
+ <a name='L283'></a><a href='#L283'>283</a>
343
+ <a name='L284'></a><a href='#L284'>284</a>
344
+ <a name='L285'></a><a href='#L285'>285</a>
345
+ <a name='L286'></a><a href='#L286'>286</a>
346
+ <a name='L287'></a><a href='#L287'>287</a>
347
+ <a name='L288'></a><a href='#L288'>288</a>
348
+ <a name='L289'></a><a href='#L289'>289</a>
349
+ <a name='L290'></a><a href='#L290'>290</a>
350
+ <a name='L291'></a><a href='#L291'>291</a>
351
+ <a name='L292'></a><a href='#L292'>292</a>
352
+ <a name='L293'></a><a href='#L293'>293</a>
353
+ <a name='L294'></a><a href='#L294'>294</a>
354
+ <a name='L295'></a><a href='#L295'>295</a>
355
+ <a name='L296'></a><a href='#L296'>296</a>
356
+ <a name='L297'></a><a href='#L297'>297</a>
357
+ <a name='L298'></a><a href='#L298'>298</a>
358
+ <a name='L299'></a><a href='#L299'>299</a>
359
+ <a name='L300'></a><a href='#L300'>300</a>
360
+ <a name='L301'></a><a href='#L301'>301</a>
361
+ <a name='L302'></a><a href='#L302'>302</a>
362
+ <a name='L303'></a><a href='#L303'>303</a>
363
+ <a name='L304'></a><a href='#L304'>304</a>
364
+ <a name='L305'></a><a href='#L305'>305</a>
365
+ <a name='L306'></a><a href='#L306'>306</a>
366
+ <a name='L307'></a><a href='#L307'>307</a>
367
+ <a name='L308'></a><a href='#L308'>308</a>
368
+ <a name='L309'></a><a href='#L309'>309</a>
369
+ <a name='L310'></a><a href='#L310'>310</a>
370
+ <a name='L311'></a><a href='#L311'>311</a>
371
+ <a name='L312'></a><a href='#L312'>312</a>
372
+ <a name='L313'></a><a href='#L313'>313</a>
373
+ <a name='L314'></a><a href='#L314'>314</a>
374
+ <a name='L315'></a><a href='#L315'>315</a>
375
+ <a name='L316'></a><a href='#L316'>316</a>
376
+ <a name='L317'></a><a href='#L317'>317</a>
377
+ <a name='L318'></a><a href='#L318'>318</a>
378
+ <a name='L319'></a><a href='#L319'>319</a>
379
+ <a name='L320'></a><a href='#L320'>320</a>
380
+ <a name='L321'></a><a href='#L321'>321</a>
381
+ <a name='L322'></a><a href='#L322'>322</a>
382
+ <a name='L323'></a><a href='#L323'>323</a>
383
+ <a name='L324'></a><a href='#L324'>324</a>
384
+ <a name='L325'></a><a href='#L325'>325</a>
385
+ <a name='L326'></a><a href='#L326'>326</a>
386
+ <a name='L327'></a><a href='#L327'>327</a>
387
+ <a name='L328'></a><a href='#L328'>328</a>
388
+ <a name='L329'></a><a href='#L329'>329</a>
389
+ <a name='L330'></a><a href='#L330'>330</a>
390
+ <a name='L331'></a><a href='#L331'>331</a>
391
+ <a name='L332'></a><a href='#L332'>332</a>
392
+ <a name='L333'></a><a href='#L333'>333</a>
393
+ <a name='L334'></a><a href='#L334'>334</a>
394
+ <a name='L335'></a><a href='#L335'>335</a>
395
+ <a name='L336'></a><a href='#L336'>336</a>
396
+ <a name='L337'></a><a href='#L337'>337</a>
397
+ <a name='L338'></a><a href='#L338'>338</a>
398
+ <a name='L339'></a><a href='#L339'>339</a>
399
+ <a name='L340'></a><a href='#L340'>340</a>
400
+ <a name='L341'></a><a href='#L341'>341</a>
401
+ <a name='L342'></a><a href='#L342'>342</a>
402
+ <a name='L343'></a><a href='#L343'>343</a>
403
+ <a name='L344'></a><a href='#L344'>344</a>
404
+ <a name='L345'></a><a href='#L345'>345</a>
405
+ <a name='L346'></a><a href='#L346'>346</a>
406
+ <a name='L347'></a><a href='#L347'>347</a>
407
+ <a name='L348'></a><a href='#L348'>348</a>
408
+ <a name='L349'></a><a href='#L349'>349</a>
409
+ <a name='L350'></a><a href='#L350'>350</a>
410
+ <a name='L351'></a><a href='#L351'>351</a>
411
+ <a name='L352'></a><a href='#L352'>352</a>
412
+ <a name='L353'></a><a href='#L353'>353</a>
413
+ <a name='L354'></a><a href='#L354'>354</a>
414
+ <a name='L355'></a><a href='#L355'>355</a>
415
+ <a name='L356'></a><a href='#L356'>356</a>
416
+ <a name='L357'></a><a href='#L357'>357</a>
417
+ <a name='L358'></a><a href='#L358'>358</a>
418
+ <a name='L359'></a><a href='#L359'>359</a>
419
+ <a name='L360'></a><a href='#L360'>360</a>
420
+ <a name='L361'></a><a href='#L361'>361</a>
421
+ <a name='L362'></a><a href='#L362'>362</a>
422
+ <a name='L363'></a><a href='#L363'>363</a>
423
+ <a name='L364'></a><a href='#L364'>364</a>
424
+ <a name='L365'></a><a href='#L365'>365</a>
425
+ <a name='L366'></a><a href='#L366'>366</a>
426
+ <a name='L367'></a><a href='#L367'>367</a>
427
+ <a name='L368'></a><a href='#L368'>368</a>
428
+ <a name='L369'></a><a href='#L369'>369</a>
429
+ <a name='L370'></a><a href='#L370'>370</a>
430
+ <a name='L371'></a><a href='#L371'>371</a>
431
+ <a name='L372'></a><a href='#L372'>372</a>
432
+ <a name='L373'></a><a href='#L373'>373</a>
433
+ <a name='L374'></a><a href='#L374'>374</a>
434
+ <a name='L375'></a><a href='#L375'>375</a>
435
+ <a name='L376'></a><a href='#L376'>376</a>
436
+ <a name='L377'></a><a href='#L377'>377</a>
437
+ <a name='L378'></a><a href='#L378'>378</a>
438
+ <a name='L379'></a><a href='#L379'>379</a>
439
+ <a name='L380'></a><a href='#L380'>380</a>
440
+ <a name='L381'></a><a href='#L381'>381</a>
441
+ <a name='L382'></a><a href='#L382'>382</a>
442
+ <a name='L383'></a><a href='#L383'>383</a>
443
+ <a name='L384'></a><a href='#L384'>384</a>
444
+ <a name='L385'></a><a href='#L385'>385</a>
445
+ <a name='L386'></a><a href='#L386'>386</a>
446
+ <a name='L387'></a><a href='#L387'>387</a>
447
+ <a name='L388'></a><a href='#L388'>388</a>
448
+ <a name='L389'></a><a href='#L389'>389</a>
449
+ <a name='L390'></a><a href='#L390'>390</a>
450
+ <a name='L391'></a><a href='#L391'>391</a>
451
+ <a name='L392'></a><a href='#L392'>392</a>
452
+ <a name='L393'></a><a href='#L393'>393</a>
453
+ <a name='L394'></a><a href='#L394'>394</a>
454
+ <a name='L395'></a><a href='#L395'>395</a>
455
+ <a name='L396'></a><a href='#L396'>396</a>
456
+ <a name='L397'></a><a href='#L397'>397</a>
457
+ <a name='L398'></a><a href='#L398'>398</a>
458
+ <a name='L399'></a><a href='#L399'>399</a>
459
+ <a name='L400'></a><a href='#L400'>400</a>
460
+ <a name='L401'></a><a href='#L401'>401</a>
461
+ <a name='L402'></a><a href='#L402'>402</a>
462
+ <a name='L403'></a><a href='#L403'>403</a>
463
+ <a name='L404'></a><a href='#L404'>404</a>
464
+ <a name='L405'></a><a href='#L405'>405</a>
465
+ <a name='L406'></a><a href='#L406'>406</a>
466
+ <a name='L407'></a><a href='#L407'>407</a>
467
+ <a name='L408'></a><a href='#L408'>408</a>
468
+ <a name='L409'></a><a href='#L409'>409</a>
469
+ <a name='L410'></a><a href='#L410'>410</a>
470
+ <a name='L411'></a><a href='#L411'>411</a>
471
+ <a name='L412'></a><a href='#L412'>412</a>
472
+ <a name='L413'></a><a href='#L413'>413</a>
473
+ <a name='L414'></a><a href='#L414'>414</a>
474
+ <a name='L415'></a><a href='#L415'>415</a>
475
+ <a name='L416'></a><a href='#L416'>416</a>
476
+ <a name='L417'></a><a href='#L417'>417</a>
477
+ <a name='L418'></a><a href='#L418'>418</a>
478
+ <a name='L419'></a><a href='#L419'>419</a>
479
+ <a name='L420'></a><a href='#L420'>420</a>
480
+ <a name='L421'></a><a href='#L421'>421</a>
481
+ <a name='L422'></a><a href='#L422'>422</a>
482
+ <a name='L423'></a><a href='#L423'>423</a>
483
+ <a name='L424'></a><a href='#L424'>424</a>
484
+ <a name='L425'></a><a href='#L425'>425</a>
485
+ <a name='L426'></a><a href='#L426'>426</a>
486
+ <a name='L427'></a><a href='#L427'>427</a>
487
+ <a name='L428'></a><a href='#L428'>428</a>
488
+ <a name='L429'></a><a href='#L429'>429</a>
489
+ <a name='L430'></a><a href='#L430'>430</a>
490
+ <a name='L431'></a><a href='#L431'>431</a>
491
+ <a name='L432'></a><a href='#L432'>432</a>
492
+ <a name='L433'></a><a href='#L433'>433</a>
493
+ <a name='L434'></a><a href='#L434'>434</a>
494
+ <a name='L435'></a><a href='#L435'>435</a>
495
+ <a name='L436'></a><a href='#L436'>436</a>
496
+ <a name='L437'></a><a href='#L437'>437</a>
497
+ <a name='L438'></a><a href='#L438'>438</a>
498
+ <a name='L439'></a><a href='#L439'>439</a>
499
+ <a name='L440'></a><a href='#L440'>440</a>
500
+ <a name='L441'></a><a href='#L441'>441</a>
501
+ <a name='L442'></a><a href='#L442'>442</a>
502
+ <a name='L443'></a><a href='#L443'>443</a>
503
+ <a name='L444'></a><a href='#L444'>444</a>
504
+ <a name='L445'></a><a href='#L445'>445</a>
505
+ <a name='L446'></a><a href='#L446'>446</a>
506
+ <a name='L447'></a><a href='#L447'>447</a>
507
+ <a name='L448'></a><a href='#L448'>448</a>
508
+ <a name='L449'></a><a href='#L449'>449</a>
509
+ <a name='L450'></a><a href='#L450'>450</a>
510
+ <a name='L451'></a><a href='#L451'>451</a>
511
+ <a name='L452'></a><a href='#L452'>452</a>
512
+ <a name='L453'></a><a href='#L453'>453</a>
513
+ <a name='L454'></a><a href='#L454'>454</a>
514
+ <a name='L455'></a><a href='#L455'>455</a>
515
+ <a name='L456'></a><a href='#L456'>456</a>
516
+ <a name='L457'></a><a href='#L457'>457</a>
517
+ <a name='L458'></a><a href='#L458'>458</a>
518
+ <a name='L459'></a><a href='#L459'>459</a>
519
+ <a name='L460'></a><a href='#L460'>460</a>
520
+ <a name='L461'></a><a href='#L461'>461</a>
521
+ <a name='L462'></a><a href='#L462'>462</a>
522
+ <a name='L463'></a><a href='#L463'>463</a>
523
+ <a name='L464'></a><a href='#L464'>464</a>
524
+ <a name='L465'></a><a href='#L465'>465</a>
525
+ <a name='L466'></a><a href='#L466'>466</a>
526
+ <a name='L467'></a><a href='#L467'>467</a>
527
+ <a name='L468'></a><a href='#L468'>468</a>
528
+ <a name='L469'></a><a href='#L469'>469</a>
529
+ <a name='L470'></a><a href='#L470'>470</a>
530
+ <a name='L471'></a><a href='#L471'>471</a>
531
+ <a name='L472'></a><a href='#L472'>472</a>
532
+ <a name='L473'></a><a href='#L473'>473</a>
533
+ <a name='L474'></a><a href='#L474'>474</a>
534
+ <a name='L475'></a><a href='#L475'>475</a>
535
+ <a name='L476'></a><a href='#L476'>476</a>
536
+ <a name='L477'></a><a href='#L477'>477</a>
537
+ <a name='L478'></a><a href='#L478'>478</a>
538
+ <a name='L479'></a><a href='#L479'>479</a>
539
+ <a name='L480'></a><a href='#L480'>480</a>
540
+ <a name='L481'></a><a href='#L481'>481</a>
541
+ <a name='L482'></a><a href='#L482'>482</a>
542
+ <a name='L483'></a><a href='#L483'>483</a>
543
+ <a name='L484'></a><a href='#L484'>484</a>
544
+ <a name='L485'></a><a href='#L485'>485</a>
545
+ <a name='L486'></a><a href='#L486'>486</a>
546
+ <a name='L487'></a><a href='#L487'>487</a>
547
+ <a name='L488'></a><a href='#L488'>488</a>
548
+ <a name='L489'></a><a href='#L489'>489</a>
549
+ <a name='L490'></a><a href='#L490'>490</a>
550
+ <a name='L491'></a><a href='#L491'>491</a>
551
+ <a name='L492'></a><a href='#L492'>492</a>
552
+ <a name='L493'></a><a href='#L493'>493</a>
553
+ <a name='L494'></a><a href='#L494'>494</a>
554
+ <a name='L495'></a><a href='#L495'>495</a>
555
+ <a name='L496'></a><a href='#L496'>496</a>
556
+ <a name='L497'></a><a href='#L497'>497</a>
557
+ <a name='L498'></a><a href='#L498'>498</a>
558
+ <a name='L499'></a><a href='#L499'>499</a>
559
+ <a name='L500'></a><a href='#L500'>500</a>
560
+ <a name='L501'></a><a href='#L501'>501</a>
561
+ <a name='L502'></a><a href='#L502'>502</a>
562
+ <a name='L503'></a><a href='#L503'>503</a>
563
+ <a name='L504'></a><a href='#L504'>504</a>
564
+ <a name='L505'></a><a href='#L505'>505</a>
565
+ <a name='L506'></a><a href='#L506'>506</a>
566
+ <a name='L507'></a><a href='#L507'>507</a>
567
+ <a name='L508'></a><a href='#L508'>508</a>
568
+ <a name='L509'></a><a href='#L509'>509</a>
569
+ <a name='L510'></a><a href='#L510'>510</a>
570
+ <a name='L511'></a><a href='#L511'>511</a>
571
+ <a name='L512'></a><a href='#L512'>512</a>
572
+ <a name='L513'></a><a href='#L513'>513</a>
573
+ <a name='L514'></a><a href='#L514'>514</a>
574
+ <a name='L515'></a><a href='#L515'>515</a>
575
+ <a name='L516'></a><a href='#L516'>516</a>
576
+ <a name='L517'></a><a href='#L517'>517</a>
577
+ <a name='L518'></a><a href='#L518'>518</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
578
+ <span class="cline-any cline-neutral">&nbsp;</span>
579
+ <span class="cline-any cline-yes">1x</span>
580
+ <span class="cline-any cline-neutral">&nbsp;</span>
581
+ <span class="cline-any cline-yes">1x</span>
582
+ <span class="cline-any cline-neutral">&nbsp;</span>
583
+ <span class="cline-any cline-yes">1x</span>
584
+ <span class="cline-any cline-neutral">&nbsp;</span>
585
+ <span class="cline-any cline-neutral">&nbsp;</span>
586
+ <span class="cline-any cline-neutral">&nbsp;</span>
587
+ <span class="cline-any cline-neutral">&nbsp;</span>
588
+ <span class="cline-any cline-neutral">&nbsp;</span>
589
+ <span class="cline-any cline-neutral">&nbsp;</span>
590
+ <span class="cline-any cline-neutral">&nbsp;</span>
591
+ <span class="cline-any cline-neutral">&nbsp;</span>
592
+ <span class="cline-any cline-yes">1x</span>
593
+ <span class="cline-any cline-yes">1x</span>
594
+ <span class="cline-any cline-neutral">&nbsp;</span>
595
+ <span class="cline-any cline-neutral">&nbsp;</span>
596
+ <span class="cline-any cline-neutral">&nbsp;</span>
597
+ <span class="cline-any cline-neutral">&nbsp;</span>
598
+ <span class="cline-any cline-neutral">&nbsp;</span>
599
+ <span class="cline-any cline-neutral">&nbsp;</span>
600
+ <span class="cline-any cline-yes">10x</span>
601
+ <span class="cline-any cline-yes">10x</span>
602
+ <span class="cline-any cline-yes">10x</span>
603
+ <span class="cline-any cline-yes">10x</span>
604
+ <span class="cline-any cline-neutral">&nbsp;</span>
605
+ <span class="cline-any cline-yes">10x</span>
606
+ <span class="cline-any cline-neutral">&nbsp;</span>
607
+ <span class="cline-any cline-neutral">&nbsp;</span>
608
+ <span class="cline-any cline-neutral">&nbsp;</span>
609
+ <span class="cline-any cline-neutral">&nbsp;</span>
610
+ <span class="cline-any cline-neutral">&nbsp;</span>
611
+ <span class="cline-any cline-neutral">&nbsp;</span>
612
+ <span class="cline-any cline-no">&nbsp;</span>
613
+ <span class="cline-any cline-no">&nbsp;</span>
614
+ <span class="cline-any cline-neutral">&nbsp;</span>
615
+ <span class="cline-any cline-no">&nbsp;</span>
616
+ <span class="cline-any cline-no">&nbsp;</span>
617
+ <span class="cline-any cline-no">&nbsp;</span>
618
+ <span class="cline-any cline-no">&nbsp;</span>
619
+ <span class="cline-any cline-no">&nbsp;</span>
620
+ <span class="cline-any cline-neutral">&nbsp;</span>
621
+ <span class="cline-any cline-no">&nbsp;</span>
622
+ <span class="cline-any cline-neutral">&nbsp;</span>
623
+ <span class="cline-any cline-neutral">&nbsp;</span>
624
+ <span class="cline-any cline-neutral">&nbsp;</span>
625
+ <span class="cline-any cline-neutral">&nbsp;</span>
626
+ <span class="cline-any cline-neutral">&nbsp;</span>
627
+ <span class="cline-any cline-neutral">&nbsp;</span>
628
+ <span class="cline-any cline-yes">15x</span>
629
+ <span class="cline-any cline-yes">15x</span>
630
+ <span class="cline-any cline-neutral">&nbsp;</span>
631
+ <span class="cline-any cline-neutral">&nbsp;</span>
632
+ <span class="cline-any cline-yes">15x</span>
633
+ <span class="cline-any cline-yes">15x</span>
634
+ <span class="cline-any cline-yes">15x</span>
635
+ <span class="cline-any cline-neutral">&nbsp;</span>
636
+ <span class="cline-any cline-yes">15x</span>
637
+ <span class="cline-any cline-neutral">&nbsp;</span>
638
+ <span class="cline-any cline-neutral">&nbsp;</span>
639
+ <span class="cline-any cline-yes">25x</span>
640
+ <span class="cline-any cline-neutral">&nbsp;</span>
641
+ <span class="cline-any cline-neutral">&nbsp;</span>
642
+ <span class="cline-any cline-neutral">&nbsp;</span>
643
+ <span class="cline-any cline-neutral">&nbsp;</span>
644
+ <span class="cline-any cline-neutral">&nbsp;</span>
645
+ <span class="cline-any cline-neutral">&nbsp;</span>
646
+ <span class="cline-any cline-neutral">&nbsp;</span>
647
+ <span class="cline-any cline-neutral">&nbsp;</span>
648
+ <span class="cline-any cline-neutral">&nbsp;</span>
649
+ <span class="cline-any cline-neutral">&nbsp;</span>
650
+ <span class="cline-any cline-neutral">&nbsp;</span>
651
+ <span class="cline-any cline-neutral">&nbsp;</span>
652
+ <span class="cline-any cline-no">&nbsp;</span>
653
+ <span class="cline-any cline-no">&nbsp;</span>
654
+ <span class="cline-any cline-neutral">&nbsp;</span>
655
+ <span class="cline-any cline-no">&nbsp;</span>
656
+ <span class="cline-any cline-no">&nbsp;</span>
657
+ <span class="cline-any cline-neutral">&nbsp;</span>
658
+ <span class="cline-any cline-no">&nbsp;</span>
659
+ <span class="cline-any cline-no">&nbsp;</span>
660
+ <span class="cline-any cline-neutral">&nbsp;</span>
661
+ <span class="cline-any cline-neutral">&nbsp;</span>
662
+ <span class="cline-any cline-neutral">&nbsp;</span>
663
+ <span class="cline-any cline-neutral">&nbsp;</span>
664
+ <span class="cline-any cline-yes">5x</span>
665
+ <span class="cline-any cline-neutral">&nbsp;</span>
666
+ <span class="cline-any cline-neutral">&nbsp;</span>
667
+ <span class="cline-any cline-neutral">&nbsp;</span>
668
+ <span class="cline-any cline-neutral">&nbsp;</span>
669
+ <span class="cline-any cline-neutral">&nbsp;</span>
670
+ <span class="cline-any cline-neutral">&nbsp;</span>
671
+ <span class="cline-any cline-neutral">&nbsp;</span>
672
+ <span class="cline-any cline-no">&nbsp;</span>
673
+ <span class="cline-any cline-no">&nbsp;</span>
674
+ <span class="cline-any cline-neutral">&nbsp;</span>
675
+ <span class="cline-any cline-no">&nbsp;</span>
676
+ <span class="cline-any cline-no">&nbsp;</span>
677
+ <span class="cline-any cline-no">&nbsp;</span>
678
+ <span class="cline-any cline-no">&nbsp;</span>
679
+ <span class="cline-any cline-neutral">&nbsp;</span>
680
+ <span class="cline-any cline-no">&nbsp;</span>
681
+ <span class="cline-any cline-no">&nbsp;</span>
682
+ <span class="cline-any cline-neutral">&nbsp;</span>
683
+ <span class="cline-any cline-no">&nbsp;</span>
684
+ <span class="cline-any cline-neutral">&nbsp;</span>
685
+ <span class="cline-any cline-neutral">&nbsp;</span>
686
+ <span class="cline-any cline-neutral">&nbsp;</span>
687
+ <span class="cline-any cline-neutral">&nbsp;</span>
688
+ <span class="cline-any cline-neutral">&nbsp;</span>
689
+ <span class="cline-any cline-neutral">&nbsp;</span>
690
+ <span class="cline-any cline-yes">41x</span>
691
+ <span class="cline-any cline-yes">41x</span>
692
+ <span class="cline-any cline-yes">41x</span>
693
+ <span class="cline-any cline-yes">41x</span>
694
+ <span class="cline-any cline-yes">41x</span>
695
+ <span class="cline-any cline-neutral">&nbsp;</span>
696
+ <span class="cline-any cline-neutral">&nbsp;</span>
697
+ <span class="cline-any cline-neutral">&nbsp;</span>
698
+ <span class="cline-any cline-neutral">&nbsp;</span>
699
+ <span class="cline-any cline-neutral">&nbsp;</span>
700
+ <span class="cline-any cline-neutral">&nbsp;</span>
701
+ <span class="cline-any cline-yes">1x</span>
702
+ <span class="cline-any cline-yes">1x</span>
703
+ <span class="cline-any cline-neutral">&nbsp;</span>
704
+ <span class="cline-any cline-neutral">&nbsp;</span>
705
+ <span class="cline-any cline-neutral">&nbsp;</span>
706
+ <span class="cline-any cline-neutral">&nbsp;</span>
707
+ <span class="cline-any cline-neutral">&nbsp;</span>
708
+ <span class="cline-any cline-neutral">&nbsp;</span>
709
+ <span class="cline-any cline-yes">6x</span>
710
+ <span class="cline-any cline-neutral">&nbsp;</span>
711
+ <span class="cline-any cline-yes">6x</span>
712
+ <span class="cline-any cline-yes">6x</span>
713
+ <span class="cline-any cline-no">&nbsp;</span>
714
+ <span class="cline-any cline-neutral">&nbsp;</span>
715
+ <span class="cline-any cline-neutral">&nbsp;</span>
716
+ <span class="cline-any cline-neutral">&nbsp;</span>
717
+ <span class="cline-any cline-neutral">&nbsp;</span>
718
+ <span class="cline-any cline-neutral">&nbsp;</span>
719
+ <span class="cline-any cline-yes">6x</span>
720
+ <span class="cline-any cline-neutral">&nbsp;</span>
721
+ <span class="cline-any cline-yes">6x</span>
722
+ <span class="cline-any cline-neutral">&nbsp;</span>
723
+ <span class="cline-any cline-neutral">&nbsp;</span>
724
+ <span class="cline-any cline-neutral">&nbsp;</span>
725
+ <span class="cline-any cline-neutral">&nbsp;</span>
726
+ <span class="cline-any cline-neutral">&nbsp;</span>
727
+ <span class="cline-any cline-neutral">&nbsp;</span>
728
+ <span class="cline-any cline-yes">1x</span>
729
+ <span class="cline-any cline-yes">1x</span>
730
+ <span class="cline-any cline-neutral">&nbsp;</span>
731
+ <span class="cline-any cline-neutral">&nbsp;</span>
732
+ <span class="cline-any cline-yes">1x</span>
733
+ <span class="cline-any cline-yes">1x</span>
734
+ <span class="cline-any cline-neutral">&nbsp;</span>
735
+ <span class="cline-any cline-neutral">&nbsp;</span>
736
+ <span class="cline-any cline-yes">1x</span>
737
+ <span class="cline-any cline-neutral">&nbsp;</span>
738
+ <span class="cline-any cline-neutral">&nbsp;</span>
739
+ <span class="cline-any cline-neutral">&nbsp;</span>
740
+ <span class="cline-any cline-yes">1x</span>
741
+ <span class="cline-any cline-neutral">&nbsp;</span>
742
+ <span class="cline-any cline-neutral">&nbsp;</span>
743
+ <span class="cline-any cline-yes">63x</span>
744
+ <span class="cline-any cline-neutral">&nbsp;</span>
745
+ <span class="cline-any cline-neutral">&nbsp;</span>
746
+ <span class="cline-any cline-neutral">&nbsp;</span>
747
+ <span class="cline-any cline-neutral">&nbsp;</span>
748
+ <span class="cline-any cline-neutral">&nbsp;</span>
749
+ <span class="cline-any cline-neutral">&nbsp;</span>
750
+ <span class="cline-any cline-neutral">&nbsp;</span>
751
+ <span class="cline-any cline-neutral">&nbsp;</span>
752
+ <span class="cline-any cline-neutral">&nbsp;</span>
753
+ <span class="cline-any cline-no">&nbsp;</span>
754
+ <span class="cline-any cline-neutral">&nbsp;</span>
755
+ <span class="cline-any cline-neutral">&nbsp;</span>
756
+ <span class="cline-any cline-neutral">&nbsp;</span>
757
+ <span class="cline-any cline-yes">6x</span>
758
+ <span class="cline-any cline-neutral">&nbsp;</span>
759
+ <span class="cline-any cline-neutral">&nbsp;</span>
760
+ <span class="cline-any cline-neutral">&nbsp;</span>
761
+ <span class="cline-any cline-neutral">&nbsp;</span>
762
+ <span class="cline-any cline-yes">7x</span>
763
+ <span class="cline-any cline-neutral">&nbsp;</span>
764
+ <span class="cline-any cline-neutral">&nbsp;</span>
765
+ <span class="cline-any cline-neutral">&nbsp;</span>
766
+ <span class="cline-any cline-neutral">&nbsp;</span>
767
+ <span class="cline-any cline-neutral">&nbsp;</span>
768
+ <span class="cline-any cline-neutral">&nbsp;</span>
769
+ <span class="cline-any cline-neutral">&nbsp;</span>
770
+ <span class="cline-any cline-yes">1x</span>
771
+ <span class="cline-any cline-yes">1x</span>
772
+ <span class="cline-any cline-neutral">&nbsp;</span>
773
+ <span class="cline-any cline-yes">1x</span>
774
+ <span class="cline-any cline-yes">1x</span>
775
+ <span class="cline-any cline-neutral">&nbsp;</span>
776
+ <span class="cline-any cline-yes">1x</span>
777
+ <span class="cline-any cline-yes">1x</span>
778
+ <span class="cline-any cline-neutral">&nbsp;</span>
779
+ <span class="cline-any cline-yes">1x</span>
780
+ <span class="cline-any cline-neutral">&nbsp;</span>
781
+ <span class="cline-any cline-neutral">&nbsp;</span>
782
+ <span class="cline-any cline-neutral">&nbsp;</span>
783
+ <span class="cline-any cline-neutral">&nbsp;</span>
784
+ <span class="cline-any cline-neutral">&nbsp;</span>
785
+ <span class="cline-any cline-neutral">&nbsp;</span>
786
+ <span class="cline-any cline-neutral">&nbsp;</span>
787
+ <span class="cline-any cline-yes">52x</span>
788
+ <span class="cline-any cline-neutral">&nbsp;</span>
789
+ <span class="cline-any cline-neutral">&nbsp;</span>
790
+ <span class="cline-any cline-neutral">&nbsp;</span>
791
+ <span class="cline-any cline-neutral">&nbsp;</span>
792
+ <span class="cline-any cline-neutral">&nbsp;</span>
793
+ <span class="cline-any cline-neutral">&nbsp;</span>
794
+ <span class="cline-any cline-neutral">&nbsp;</span>
795
+ <span class="cline-any cline-yes">19x</span>
796
+ <span class="cline-any cline-neutral">&nbsp;</span>
797
+ <span class="cline-any cline-yes">19x</span>
798
+ <span class="cline-any cline-yes">19x</span>
799
+ <span class="cline-any cline-neutral">&nbsp;</span>
800
+ <span class="cline-any cline-neutral">&nbsp;</span>
801
+ <span class="cline-any cline-neutral">&nbsp;</span>
802
+ <span class="cline-any cline-neutral">&nbsp;</span>
803
+ <span class="cline-any cline-neutral">&nbsp;</span>
804
+ <span class="cline-any cline-neutral">&nbsp;</span>
805
+ <span class="cline-any cline-yes">1x</span>
806
+ <span class="cline-any cline-yes">1x</span>
807
+ <span class="cline-any cline-neutral">&nbsp;</span>
808
+ <span class="cline-any cline-neutral">&nbsp;</span>
809
+ <span class="cline-any cline-neutral">&nbsp;</span>
810
+ <span class="cline-any cline-neutral">&nbsp;</span>
811
+ <span class="cline-any cline-neutral">&nbsp;</span>
812
+ <span class="cline-any cline-neutral">&nbsp;</span>
813
+ <span class="cline-any cline-yes">31x</span>
814
+ <span class="cline-any cline-neutral">&nbsp;</span>
815
+ <span class="cline-any cline-yes">31x</span>
816
+ <span class="cline-any cline-neutral">&nbsp;</span>
817
+ <span class="cline-any cline-neutral">&nbsp;</span>
818
+ <span class="cline-any cline-neutral">&nbsp;</span>
819
+ <span class="cline-any cline-yes">31x</span>
820
+ <span class="cline-any cline-yes">31x</span>
821
+ <span class="cline-any cline-yes">141x</span>
822
+ <span class="cline-any cline-neutral">&nbsp;</span>
823
+ <span class="cline-any cline-neutral">&nbsp;</span>
824
+ <span class="cline-any cline-neutral">&nbsp;</span>
825
+ <span class="cline-any cline-yes">31x</span>
826
+ <span class="cline-any cline-yes">31x</span>
827
+ <span class="cline-any cline-neutral">&nbsp;</span>
828
+ <span class="cline-any cline-yes">10x</span>
829
+ <span class="cline-any cline-neutral">&nbsp;</span>
830
+ <span class="cline-any cline-neutral">&nbsp;</span>
831
+ <span class="cline-any cline-yes">21x</span>
832
+ <span class="cline-any cline-neutral">&nbsp;</span>
833
+ <span class="cline-any cline-neutral">&nbsp;</span>
834
+ <span class="cline-any cline-yes">31x</span>
835
+ <span class="cline-any cline-neutral">&nbsp;</span>
836
+ <span class="cline-any cline-neutral">&nbsp;</span>
837
+ <span class="cline-any cline-neutral">&nbsp;</span>
838
+ <span class="cline-any cline-neutral">&nbsp;</span>
839
+ <span class="cline-any cline-neutral">&nbsp;</span>
840
+ <span class="cline-any cline-neutral">&nbsp;</span>
841
+ <span class="cline-any cline-no">&nbsp;</span>
842
+ <span class="cline-any cline-no">&nbsp;</span>
843
+ <span class="cline-any cline-neutral">&nbsp;</span>
844
+ <span class="cline-any cline-neutral">&nbsp;</span>
845
+ <span class="cline-any cline-no">&nbsp;</span>
846
+ <span class="cline-any cline-no">&nbsp;</span>
847
+ <span class="cline-any cline-neutral">&nbsp;</span>
848
+ <span class="cline-any cline-neutral">&nbsp;</span>
849
+ <span class="cline-any cline-no">&nbsp;</span>
850
+ <span class="cline-any cline-neutral">&nbsp;</span>
851
+ <span class="cline-any cline-no">&nbsp;</span>
852
+ <span class="cline-any cline-no">&nbsp;</span>
853
+ <span class="cline-any cline-no">&nbsp;</span>
854
+ <span class="cline-any cline-neutral">&nbsp;</span>
855
+ <span class="cline-any cline-neutral">&nbsp;</span>
856
+ <span class="cline-any cline-neutral">&nbsp;</span>
857
+ <span class="cline-any cline-neutral">&nbsp;</span>
858
+ <span class="cline-any cline-neutral">&nbsp;</span>
859
+ <span class="cline-any cline-no">&nbsp;</span>
860
+ <span class="cline-any cline-no">&nbsp;</span>
861
+ <span class="cline-any cline-no">&nbsp;</span>
862
+ <span class="cline-any cline-neutral">&nbsp;</span>
863
+ <span class="cline-any cline-neutral">&nbsp;</span>
864
+ <span class="cline-any cline-no">&nbsp;</span>
865
+ <span class="cline-any cline-neutral">&nbsp;</span>
866
+ <span class="cline-any cline-neutral">&nbsp;</span>
867
+ <span class="cline-any cline-yes">76x</span>
868
+ <span class="cline-any cline-neutral">&nbsp;</span>
869
+ <span class="cline-any cline-neutral">&nbsp;</span>
870
+ <span class="cline-any cline-neutral">&nbsp;</span>
871
+ <span class="cline-any cline-neutral">&nbsp;</span>
872
+ <span class="cline-any cline-neutral">&nbsp;</span>
873
+ <span class="cline-any cline-neutral">&nbsp;</span>
874
+ <span class="cline-any cline-yes">76x</span>
875
+ <span class="cline-any cline-neutral">&nbsp;</span>
876
+ <span class="cline-any cline-neutral">&nbsp;</span>
877
+ <span class="cline-any cline-neutral">&nbsp;</span>
878
+ <span class="cline-any cline-neutral">&nbsp;</span>
879
+ <span class="cline-any cline-neutral">&nbsp;</span>
880
+ <span class="cline-any cline-no">&nbsp;</span>
881
+ <span class="cline-any cline-no">&nbsp;</span>
882
+ <span class="cline-any cline-neutral">&nbsp;</span>
883
+ <span class="cline-any cline-no">&nbsp;</span>
884
+ <span class="cline-any cline-no">&nbsp;</span>
885
+ <span class="cline-any cline-neutral">&nbsp;</span>
886
+ <span class="cline-any cline-neutral">&nbsp;</span>
887
+ <span class="cline-any cline-neutral">&nbsp;</span>
888
+ <span class="cline-any cline-no">&nbsp;</span>
889
+ <span class="cline-any cline-no">&nbsp;</span>
890
+ <span class="cline-any cline-neutral">&nbsp;</span>
891
+ <span class="cline-any cline-neutral">&nbsp;</span>
892
+ <span class="cline-any cline-neutral">&nbsp;</span>
893
+ <span class="cline-any cline-no">&nbsp;</span>
894
+ <span class="cline-any cline-neutral">&nbsp;</span>
895
+ <span class="cline-any cline-neutral">&nbsp;</span>
896
+ <span class="cline-any cline-no">&nbsp;</span>
897
+ <span class="cline-any cline-no">&nbsp;</span>
898
+ <span class="cline-any cline-neutral">&nbsp;</span>
899
+ <span class="cline-any cline-neutral">&nbsp;</span>
900
+ <span class="cline-any cline-neutral">&nbsp;</span>
901
+ <span class="cline-any cline-neutral">&nbsp;</span>
902
+ <span class="cline-any cline-neutral">&nbsp;</span>
903
+ <span class="cline-any cline-neutral">&nbsp;</span>
904
+ <span class="cline-any cline-neutral">&nbsp;</span>
905
+ <span class="cline-any cline-no">&nbsp;</span>
906
+ <span class="cline-any cline-no">&nbsp;</span>
907
+ <span class="cline-any cline-neutral">&nbsp;</span>
908
+ <span class="cline-any cline-neutral">&nbsp;</span>
909
+ <span class="cline-any cline-neutral">&nbsp;</span>
910
+ <span class="cline-any cline-neutral">&nbsp;</span>
911
+ <span class="cline-any cline-neutral">&nbsp;</span>
912
+ <span class="cline-any cline-yes">16x</span>
913
+ <span class="cline-any cline-neutral">&nbsp;</span>
914
+ <span class="cline-any cline-neutral">&nbsp;</span>
915
+ <span class="cline-any cline-yes">72x</span>
916
+ <span class="cline-any cline-neutral">&nbsp;</span>
917
+ <span class="cline-any cline-neutral">&nbsp;</span>
918
+ <span class="cline-any cline-neutral">&nbsp;</span>
919
+ <span class="cline-any cline-neutral">&nbsp;</span>
920
+ <span class="cline-any cline-neutral">&nbsp;</span>
921
+ <span class="cline-any cline-neutral">&nbsp;</span>
922
+ <span class="cline-any cline-no">&nbsp;</span>
923
+ <span class="cline-any cline-neutral">&nbsp;</span>
924
+ <span class="cline-any cline-neutral">&nbsp;</span>
925
+ <span class="cline-any cline-no">&nbsp;</span>
926
+ <span class="cline-any cline-no">&nbsp;</span>
927
+ <span class="cline-any cline-no">&nbsp;</span>
928
+ <span class="cline-any cline-neutral">&nbsp;</span>
929
+ <span class="cline-any cline-no">&nbsp;</span>
930
+ <span class="cline-any cline-no">&nbsp;</span>
931
+ <span class="cline-any cline-neutral">&nbsp;</span>
932
+ <span class="cline-any cline-neutral">&nbsp;</span>
933
+ <span class="cline-any cline-neutral">&nbsp;</span>
934
+ <span class="cline-any cline-no">&nbsp;</span>
935
+ <span class="cline-any cline-neutral">&nbsp;</span>
936
+ <span class="cline-any cline-neutral">&nbsp;</span>
937
+ <span class="cline-any cline-no">&nbsp;</span>
938
+ <span class="cline-any cline-neutral">&nbsp;</span>
939
+ <span class="cline-any cline-neutral">&nbsp;</span>
940
+ <span class="cline-any cline-no">&nbsp;</span>
941
+ <span class="cline-any cline-neutral">&nbsp;</span>
942
+ <span class="cline-any cline-no">&nbsp;</span>
943
+ <span class="cline-any cline-neutral">&nbsp;</span>
944
+ <span class="cline-any cline-neutral">&nbsp;</span>
945
+ <span class="cline-any cline-neutral">&nbsp;</span>
946
+ <span class="cline-any cline-neutral">&nbsp;</span>
947
+ <span class="cline-any cline-neutral">&nbsp;</span>
948
+ <span class="cline-any cline-neutral">&nbsp;</span>
949
+ <span class="cline-any cline-neutral">&nbsp;</span>
950
+ <span class="cline-any cline-yes">130x</span>
951
+ <span class="cline-any cline-yes">130x</span>
952
+ <span class="cline-any cline-yes">130x</span>
953
+ <span class="cline-any cline-neutral">&nbsp;</span>
954
+ <span class="cline-any cline-yes">130x</span>
955
+ <span class="cline-any cline-yes">606x</span>
956
+ <span class="cline-any cline-neutral">&nbsp;</span>
957
+ <span class="cline-any cline-neutral">&nbsp;</span>
958
+ <span class="cline-any cline-neutral">&nbsp;</span>
959
+ <span class="cline-any cline-yes">130x</span>
960
+ <span class="cline-any cline-neutral">&nbsp;</span>
961
+ <span class="cline-any cline-neutral">&nbsp;</span>
962
+ <span class="cline-any cline-yes">130x</span>
963
+ <span class="cline-any cline-neutral">&nbsp;</span>
964
+ <span class="cline-any cline-yes">130x</span>
965
+ <span class="cline-any cline-neutral">&nbsp;</span>
966
+ <span class="cline-any cline-neutral">&nbsp;</span>
967
+ <span class="cline-any cline-neutral">&nbsp;</span>
968
+ <span class="cline-any cline-neutral">&nbsp;</span>
969
+ <span class="cline-any cline-neutral">&nbsp;</span>
970
+ <span class="cline-any cline-neutral">&nbsp;</span>
971
+ <span class="cline-any cline-neutral">&nbsp;</span>
972
+ <span class="cline-any cline-yes">45x</span>
973
+ <span class="cline-any cline-yes">45x</span>
974
+ <span class="cline-any cline-neutral">&nbsp;</span>
975
+ <span class="cline-any cline-neutral">&nbsp;</span>
976
+ <span class="cline-any cline-yes">45x</span>
977
+ <span class="cline-any cline-neutral">&nbsp;</span>
978
+ <span class="cline-any cline-yes">45x</span>
979
+ <span class="cline-any cline-yes">45x</span>
980
+ <span class="cline-any cline-yes">207x</span>
981
+ <span class="cline-any cline-neutral">&nbsp;</span>
982
+ <span class="cline-any cline-neutral">&nbsp;</span>
983
+ <span class="cline-any cline-neutral">&nbsp;</span>
984
+ <span class="cline-any cline-neutral">&nbsp;</span>
985
+ <span class="cline-any cline-neutral">&nbsp;</span>
986
+ <span class="cline-any cline-yes">45x</span>
987
+ <span class="cline-any cline-yes">45x</span>
988
+ <span class="cline-any cline-yes">15x</span>
989
+ <span class="cline-any cline-neutral">&nbsp;</span>
990
+ <span class="cline-any cline-neutral">&nbsp;</span>
991
+ <span class="cline-any cline-yes">45x</span>
992
+ <span class="cline-any cline-neutral">&nbsp;</span>
993
+ <span class="cline-any cline-neutral">&nbsp;</span>
994
+ <span class="cline-any cline-neutral">&nbsp;</span>
995
+ <span class="cline-any cline-neutral">&nbsp;</span>
996
+ <span class="cline-any cline-neutral">&nbsp;</span>
997
+ <span class="cline-any cline-neutral">&nbsp;</span>
998
+ <span class="cline-any cline-neutral">&nbsp;</span>
999
+ <span class="cline-any cline-neutral">&nbsp;</span>
1000
+ <span class="cline-any cline-yes">1x</span>
1001
+ <span class="cline-any cline-neutral">&nbsp;</span>
1002
+ <span class="cline-any cline-no">&nbsp;</span>
1003
+ <span class="cline-any cline-no">&nbsp;</span>
1004
+ <span class="cline-any cline-neutral">&nbsp;</span>
1005
+ <span class="cline-any cline-no">&nbsp;</span>
1006
+ <span class="cline-any cline-neutral">&nbsp;</span>
1007
+ <span class="cline-any cline-no">&nbsp;</span>
1008
+ <span class="cline-any cline-neutral">&nbsp;</span>
1009
+ <span class="cline-any cline-no">&nbsp;</span>
1010
+ <span class="cline-any cline-neutral">&nbsp;</span>
1011
+ <span class="cline-any cline-no">&nbsp;</span>
1012
+ <span class="cline-any cline-neutral">&nbsp;</span>
1013
+ <span class="cline-any cline-neutral">&nbsp;</span>
1014
+ <span class="cline-any cline-neutral">&nbsp;</span>
1015
+ <span class="cline-any cline-neutral">&nbsp;</span>
1016
+ <span class="cline-any cline-neutral">&nbsp;</span>
1017
+ <span class="cline-any cline-neutral">&nbsp;</span>
1018
+ <span class="cline-any cline-neutral">&nbsp;</span>
1019
+ <span class="cline-any cline-neutral">&nbsp;</span>
1020
+ <span class="cline-any cline-yes">37x</span>
1021
+ <span class="cline-any cline-no">&nbsp;</span>
1022
+ <span class="cline-any cline-neutral">&nbsp;</span>
1023
+ <span class="cline-any cline-neutral">&nbsp;</span>
1024
+ <span class="cline-any cline-neutral">&nbsp;</span>
1025
+ <span class="cline-any cline-yes">37x</span>
1026
+ <span class="cline-any cline-no">&nbsp;</span>
1027
+ <span class="cline-any cline-neutral">&nbsp;</span>
1028
+ <span class="cline-any cline-neutral">&nbsp;</span>
1029
+ <span class="cline-any cline-yes">37x</span>
1030
+ <span class="cline-any cline-yes">6x</span>
1031
+ <span class="cline-any cline-neutral">&nbsp;</span>
1032
+ <span class="cline-any cline-neutral">&nbsp;</span>
1033
+ <span class="cline-any cline-yes">31x</span>
1034
+ <span class="cline-any cline-yes">31x</span>
1035
+ <span class="cline-any cline-neutral">&nbsp;</span>
1036
+ <span class="cline-any cline-no">&nbsp;</span>
1037
+ <span class="cline-any cline-neutral">&nbsp;</span>
1038
+ <span class="cline-any cline-neutral">&nbsp;</span>
1039
+ <span class="cline-any cline-neutral">&nbsp;</span>
1040
+ <span class="cline-any cline-neutral">&nbsp;</span>
1041
+ <span class="cline-any cline-neutral">&nbsp;</span>
1042
+ <span class="cline-any cline-neutral">&nbsp;</span>
1043
+ <span class="cline-any cline-neutral">&nbsp;</span>
1044
+ <span class="cline-any cline-neutral">&nbsp;</span>
1045
+ <span class="cline-any cline-neutral">&nbsp;</span>
1046
+ <span class="cline-any cline-neutral">&nbsp;</span>
1047
+ <span class="cline-any cline-neutral">&nbsp;</span>
1048
+ <span class="cline-any cline-neutral">&nbsp;</span>
1049
+ <span class="cline-any cline-neutral">&nbsp;</span>
1050
+ <span class="cline-any cline-neutral">&nbsp;</span>
1051
+ <span class="cline-any cline-neutral">&nbsp;</span>
1052
+ <span class="cline-any cline-no">&nbsp;</span>
1053
+ <span class="cline-any cline-no">&nbsp;</span>
1054
+ <span class="cline-any cline-no">&nbsp;</span>
1055
+ <span class="cline-any cline-no">&nbsp;</span>
1056
+ <span class="cline-any cline-neutral">&nbsp;</span>
1057
+ <span class="cline-any cline-no">&nbsp;</span>
1058
+ <span class="cline-any cline-neutral">&nbsp;</span>
1059
+ <span class="cline-any cline-neutral">&nbsp;</span>
1060
+ <span class="cline-any cline-neutral">&nbsp;</span>
1061
+ <span class="cline-any cline-neutral">&nbsp;</span>
1062
+ <span class="cline-any cline-yes">1x</span>
1063
+ <span class="cline-any cline-neutral">&nbsp;</span>
1064
+ <span class="cline-any cline-neutral">&nbsp;</span>
1065
+ <span class="cline-any cline-neutral">&nbsp;</span>
1066
+ <span class="cline-any cline-neutral">&nbsp;</span>
1067
+ <span class="cline-any cline-neutral">&nbsp;</span>
1068
+ <span class="cline-any cline-no">&nbsp;</span>
1069
+ <span class="cline-any cline-neutral">&nbsp;</span>
1070
+ <span class="cline-any cline-neutral">&nbsp;</span>
1071
+ <span class="cline-any cline-neutral">&nbsp;</span>
1072
+ <span class="cline-any cline-neutral">&nbsp;</span>
1073
+ <span class="cline-any cline-neutral">&nbsp;</span>
1074
+ <span class="cline-any cline-neutral">&nbsp;</span>
1075
+ <span class="cline-any cline-neutral">&nbsp;</span>
1076
+ <span class="cline-any cline-neutral">&nbsp;</span>
1077
+ <span class="cline-any cline-neutral">&nbsp;</span>
1078
+ <span class="cline-any cline-neutral">&nbsp;</span>
1079
+ <span class="cline-any cline-neutral">&nbsp;</span>
1080
+ <span class="cline-any cline-neutral">&nbsp;</span>
1081
+ <span class="cline-any cline-neutral">&nbsp;</span>
1082
+ <span class="cline-any cline-neutral">&nbsp;</span>
1083
+ <span class="cline-any cline-neutral">&nbsp;</span>
1084
+ <span class="cline-any cline-neutral">&nbsp;</span>
1085
+ <span class="cline-any cline-neutral">&nbsp;</span>
1086
+ <span class="cline-any cline-neutral">&nbsp;</span>
1087
+ <span class="cline-any cline-neutral">&nbsp;</span>
1088
+ <span class="cline-any cline-neutral">&nbsp;</span>
1089
+ <span class="cline-any cline-neutral">&nbsp;</span>
1090
+ <span class="cline-any cline-neutral">&nbsp;</span>
1091
+ <span class="cline-any cline-neutral">&nbsp;</span>
1092
+ <span class="cline-any cline-neutral">&nbsp;</span>
1093
+ <span class="cline-any cline-neutral">&nbsp;</span>
1094
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { BufferReader, BufferWriter } from '@node-dlc/bufio';
1095
+ &nbsp;
1096
+ import { MessageType } from '../MessageType';
1097
+ import { deserializeTlv } from '../serialize/deserializeTlv';
1098
+ import { getTlv } from '../serialize/getTlv';
1099
+ import { IDlcMessage } from './DlcMessage';
1100
+ import {
1101
+ OracleAnnouncement,
1102
+ OracleAnnouncementJSON,
1103
+ } from './OracleAnnouncement';
1104
+ &nbsp;
1105
+ /**
1106
+ * OracleParams describe allowed differences between oracles in
1107
+ * numerical outcome contracts, as per rust-dlc specification.
1108
+ */
1109
+ export class OracleParams implements IDlcMessage {
1110
+ public static type = MessageType.OracleParamsV0;
1111
+ &nbsp;
1112
+ /**
1113
+ * Creates an OracleParams from JSON data
1114
+ * @param json JSON object representing oracle params
1115
+ */
1116
+ public static fromJSON(json: any): OracleParams {
1117
+ const instance = new OracleParams();
1118
+ instance.maxErrorExp = json.maxErrorExp || <span class="branch-1 cbranch-no" title="branch not covered" >json.max_error_exp </span>|| <span class="branch-2 cbranch-no" title="branch not covered" >0;</span>
1119
+ instance.minFailExp = json.minFailExp || <span class="branch-1 cbranch-no" title="branch not covered" >json.min_fail_exp </span>|| <span class="branch-2 cbranch-no" title="branch not covered" >0;</span>
1120
+ instance.maximizeCoverage =
1121
+ json.maximizeCoverage || json.maximize_coverage || false;
1122
+ return instance;
1123
+ }
1124
+ &nbsp;
1125
+ /**
1126
+ * Deserializes oracle_params_v0 message
1127
+ */
1128
+ public <span class="fstat-no" title="function not covered" >static </span>deserialize(buf: Buffer): OracleParams {
1129
+ const instance = <span class="cstat-no" title="statement not covered" >new OracleParams();</span>
1130
+ const reader = <span class="cstat-no" title="statement not covered" >new BufferReader(buf);</span>
1131
+ &nbsp;
1132
+ <span class="cstat-no" title="statement not covered" > reader.readBigSize(); </span>// read type
1133
+ <span class="cstat-no" title="statement not covered" > instance.length = reader.readBigSize();</span>
1134
+ <span class="cstat-no" title="statement not covered" > instance.maxErrorExp = reader.readUInt16BE();</span>
1135
+ <span class="cstat-no" title="statement not covered" > instance.minFailExp = reader.readUInt16BE();</span>
1136
+ <span class="cstat-no" title="statement not covered" > instance.maximizeCoverage = reader.readUInt8() === 1;</span>
1137
+ &nbsp;
1138
+ <span class="cstat-no" title="statement not covered" > return instance;</span>
1139
+ }
1140
+ &nbsp;
1141
+ /**
1142
+ * Deserializes oracle params body without TLV wrapper (for optional deserialization)
1143
+ */
1144
+ public static deserializeBody(buf: Buffer): OracleParams {
1145
+ const instance = new OracleParams();
1146
+ const reader = new BufferReader(buf);
1147
+ &nbsp;
1148
+ // No type/length to read - just the body content
1149
+ instance.maxErrorExp = reader.readUInt16BE();
1150
+ instance.minFailExp = reader.readUInt16BE();
1151
+ instance.maximizeCoverage = reader.readUInt8() === 1;
1152
+ &nbsp;
1153
+ return instance;
1154
+ }
1155
+ &nbsp;
1156
+ public type = OracleParams.type;
1157
+ public length: bigint;
1158
+ &nbsp;
1159
+ /** The maximum allowed difference between oracle expressed as a power of 2. */
1160
+ public maxErrorExp: number;
1161
+ &nbsp;
1162
+ /** The minimum allowed difference that should be supported by the contract expressed as a power of 2. */
1163
+ public minFailExp: number;
1164
+ &nbsp;
1165
+ /** Whether to maximize coverage of the interval between maxErrorExp and minFailExp. */
1166
+ public maximizeCoverage: boolean;
1167
+ &nbsp;
1168
+ public <span class="fstat-no" title="function not covered" >validate(</span>): void {
1169
+ <span class="cstat-no" title="statement not covered" > if (this.maxErrorExp &lt; 0) {</span>
1170
+ <span class="cstat-no" title="statement not covered" > throw new Error('maxErrorExp must be greater than or equal to 0');</span>
1171
+ }
1172
+ <span class="cstat-no" title="statement not covered" > if (this.minFailExp &lt; 0) {</span>
1173
+ <span class="cstat-no" title="statement not covered" > throw new Error('minFailExp must be greater than or equal to 0');</span>
1174
+ }
1175
+ <span class="cstat-no" title="statement not covered" > if (this.maxErrorExp &gt;= this.minFailExp) {</span>
1176
+ <span class="cstat-no" title="statement not covered" > throw new Error('maxErrorExp must be less than minFailExp');</span>
1177
+ }
1178
+ }
1179
+ &nbsp;
1180
+ public toJSON(): OracleParamsJSON {
1181
+ return {
1182
+ maxErrorExp: this.maxErrorExp,
1183
+ minFailExp: this.minFailExp,
1184
+ maximizeCoverage: this.maximizeCoverage,
1185
+ };
1186
+ }
1187
+ &nbsp;
1188
+ public <span class="fstat-no" title="function not covered" >serialize(</span>): Buffer {
1189
+ const writer = <span class="cstat-no" title="statement not covered" >new BufferWriter();</span>
1190
+ <span class="cstat-no" title="statement not covered" > writer.writeBigSize(this.type);</span>
1191
+ &nbsp;
1192
+ const dataWriter = <span class="cstat-no" title="statement not covered" >new BufferWriter();</span>
1193
+ <span class="cstat-no" title="statement not covered" > dataWriter.writeUInt16BE(this.maxErrorExp);</span>
1194
+ <span class="cstat-no" title="statement not covered" > dataWriter.writeUInt16BE(this.minFailExp);</span>
1195
+ <span class="cstat-no" title="statement not covered" > dataWriter.writeUInt8(this.maximizeCoverage ? 1 : 0);</span>
1196
+ &nbsp;
1197
+ <span class="cstat-no" title="statement not covered" > writer.writeBigSize(dataWriter.size);</span>
1198
+ <span class="cstat-no" title="statement not covered" > writer.writeBytes(dataWriter.toBuffer());</span>
1199
+ &nbsp;
1200
+ <span class="cstat-no" title="statement not covered" > return writer.toBuffer();</span>
1201
+ }
1202
+ &nbsp;
1203
+ /**
1204
+ * Serializes the oracle params body without TLV wrapper (for optional serialization)
1205
+ */
1206
+ public serializeBody(): Buffer {
1207
+ const writer = new BufferWriter();
1208
+ writer.writeUInt16BE(this.maxErrorExp);
1209
+ writer.writeUInt16BE(this.minFailExp);
1210
+ writer.writeUInt8(this.maximizeCoverage ? <span class="branch-0 cbranch-no" title="branch not covered" >1 </span>: 0);
1211
+ return writer.toBuffer();
1212
+ }
1213
+ }
1214
+ &nbsp;
1215
+ /**
1216
+ * SingleOracleInfo contains information about a single oracle.
1217
+ */
1218
+ export class SingleOracleInfo implements IDlcMessage {
1219
+ public static type = MessageType.OracleInfoV0; // Using existing type for single oracle
1220
+ &nbsp;
1221
+ /**
1222
+ * Creates a SingleOracleInfo from JSON data
1223
+ * @param json JSON object representing single oracle info
1224
+ */
1225
+ public static fromJSON(json: any): SingleOracleInfo {
1226
+ const instance = new SingleOracleInfo();
1227
+ &nbsp;
1228
+ const announcementData = json.announcement || json.oracleAnnouncement;
1229
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (!announcementData) {
1230
+ <span class="cstat-no" title="statement not covered" > throw new Error(</span>
1231
+ 'announcement or oracleAnnouncement is required for single oracle info',
1232
+ );
1233
+ }
1234
+ &nbsp;
1235
+ // Parse announcement using proper fromJSON method
1236
+ instance.announcement = OracleAnnouncement.fromJSON(announcementData);
1237
+ &nbsp;
1238
+ return instance;
1239
+ }
1240
+ &nbsp;
1241
+ /**
1242
+ * Deserializes single oracle info
1243
+ */
1244
+ public static deserialize(buf: Buffer): SingleOracleInfo {
1245
+ const instance = new SingleOracleInfo();
1246
+ const reader = new BufferReader(buf);
1247
+ &nbsp;
1248
+ // Read the type and length that serialize() writes
1249
+ reader.readBigSize(); // read type
1250
+ instance.length = reader.readBigSize(); // read length
1251
+ &nbsp;
1252
+ // Read the announcement data
1253
+ instance.announcement = OracleAnnouncement.deserialize(
1254
+ reader.readBytes(Number(instance.length)),
1255
+ );
1256
+ &nbsp;
1257
+ return instance;
1258
+ }
1259
+ &nbsp;
1260
+ public type = SingleOracleInfo.type;
1261
+ public length: bigint;
1262
+ &nbsp;
1263
+ /** The oracle announcement from the oracle. */
1264
+ public announcement: OracleAnnouncement;
1265
+ &nbsp;
1266
+ /**
1267
+ * Returns the closest maturity date amongst all events
1268
+ */
1269
+ public <span class="fstat-no" title="function not covered" >getClosestMaturityDate(</span>): number {
1270
+ <span class="cstat-no" title="statement not covered" > return this.announcement.oracleEvent.eventMaturityEpoch;</span>
1271
+ }
1272
+ &nbsp;
1273
+ public validate(): void {
1274
+ this.announcement.validate();
1275
+ }
1276
+ &nbsp;
1277
+ public toJSON(): SingleOracleInfoJSON {
1278
+ // Return enum variant format for Rust compatibility
1279
+ return {
1280
+ single: {
1281
+ oracleAnnouncement: this.announcement.toJSON(),
1282
+ },
1283
+ } as any;
1284
+ }
1285
+ &nbsp;
1286
+ public serialize(): Buffer {
1287
+ const writer = new BufferWriter();
1288
+ writer.writeBigSize(this.type);
1289
+ &nbsp;
1290
+ const dataWriter = new BufferWriter();
1291
+ dataWriter.writeBytes(this.announcement.serialize());
1292
+ &nbsp;
1293
+ writer.writeBigSize(dataWriter.size);
1294
+ writer.writeBytes(dataWriter.toBuffer());
1295
+ &nbsp;
1296
+ return writer.toBuffer();
1297
+ }
1298
+ &nbsp;
1299
+ /**
1300
+ * Serializes the body without TLV wrapper (for embedding in ContractInfo)
1301
+ * This matches rust-dlc behavior where OracleInfo.write() doesn't add type_id
1302
+ */
1303
+ public serializeBody(): Buffer {
1304
+ return this.announcement.serialize();
1305
+ }
1306
+ &nbsp;
1307
+ /**
1308
+ * Deserializes the body without TLV wrapper (for embedding in ContractInfo)
1309
+ * This matches rust-dlc behavior where OracleInfo is read without type_id
1310
+ */
1311
+ public static deserializeBody(buf: Buffer): SingleOracleInfo {
1312
+ const instance = new SingleOracleInfo();
1313
+ // No type/length to read - just the announcement data directly
1314
+ instance.announcement = OracleAnnouncement.deserialize(buf);
1315
+ return instance;
1316
+ }
1317
+ }
1318
+ &nbsp;
1319
+ /**
1320
+ * MultiOracleInfo contains information about multiple oracles used in multi-oracle based contracts.
1321
+ */
1322
+ export class MultiOracleInfo implements IDlcMessage {
1323
+ public static type = MessageType.OracleInfoV1; // Using V1 for multi-oracle
1324
+ &nbsp;
1325
+ /**
1326
+ * Creates a MultiOracleInfo from JSON data
1327
+ * @param json JSON object representing multi oracle info
1328
+ */
1329
+ public static fromJSON(json: any): MultiOracleInfo {
1330
+ const instance = new MultiOracleInfo();
1331
+ &nbsp;
1332
+ instance.threshold = json.threshold || <span class="branch-1 cbranch-no" title="branch not covered" >1;</span>
1333
+ &nbsp;
1334
+ // Parse oracle announcements using proper fromJSON method
1335
+ const announcements =
1336
+ json.oracleAnnouncements || <span class="branch-1 cbranch-no" title="branch not covered" >json.oracle_announcements </span>|| <span class="branch-2 cbranch-no" title="branch not covered" >[];</span>
1337
+ instance.announcements = announcements.map((announcementJson: any) =&gt;
1338
+ OracleAnnouncement.fromJSON(announcementJson),
1339
+ );
1340
+ &nbsp;
1341
+ // Parse oracle params if present (null means explicitly absent)
1342
+ const oracleParamsData = json.oracleParams || json.oracle_params;
1343
+ if (oracleParamsData !== null &amp;&amp; oracleParamsData !== undefined) {
1344
+ // Create OracleParams from JSON data using the fromJSON method
1345
+ instance.oracleParams = OracleParams.fromJSON(oracleParamsData);
1346
+ } else {
1347
+ // Explicitly null/undefined - will serialize as 00 (not present)
1348
+ instance.oracleParams = undefined;
1349
+ }
1350
+ &nbsp;
1351
+ return instance;
1352
+ }
1353
+ &nbsp;
1354
+ /**
1355
+ * Deserializes multi oracle info
1356
+ */
1357
+ public <span class="fstat-no" title="function not covered" >static </span>deserialize(buf: Buffer): MultiOracleInfo {
1358
+ const instance = <span class="cstat-no" title="statement not covered" >new MultiOracleInfo();</span>
1359
+ const reader = <span class="cstat-no" title="statement not covered" >new BufferReader(buf);</span>
1360
+ &nbsp;
1361
+ // Read the type and length that serialize() writes
1362
+ <span class="cstat-no" title="statement not covered" > reader.readBigSize(); </span>// read type
1363
+ <span class="cstat-no" title="statement not covered" > instance.length = reader.readBigSize(); </span>// read length
1364
+ &nbsp;
1365
+ // In rust-dlc format, MultiOracleInfo body is: threshold + announcements + optional oracle params
1366
+ <span class="cstat-no" title="statement not covered" > instance.threshold = reader.readUInt16BE();</span>
1367
+ &nbsp;
1368
+ const numAnnouncements = <span class="cstat-no" title="statement not covered" >Number(reader.readBigSize());</span> // Changed from readUInt16BE to readBigSize to match rust-dlc vec_cb
1369
+ <span class="cstat-no" title="statement not covered" > for (let i = <span class="cstat-no" title="statement not covered" >0;</span> i &lt; numAnnouncements; i++) {</span>
1370
+ <span class="cstat-no" title="statement not covered" > instance.announcements.push(</span>
1371
+ OracleAnnouncement.deserialize(getTlv(reader)),
1372
+ );
1373
+ }
1374
+ &nbsp;
1375
+ // Optional oracle params using Optional sub-type format
1376
+ const oracleParamsData = <span class="cstat-no" title="statement not covered" >reader.readOptional();</span>
1377
+ <span class="cstat-no" title="statement not covered" > if (oracleParamsData) {</span>
1378
+ <span class="cstat-no" title="statement not covered" > instance.oracleParams = OracleParams.deserializeBody(oracleParamsData);</span>
1379
+ }
1380
+ &nbsp;
1381
+ <span class="cstat-no" title="statement not covered" > return instance;</span>
1382
+ }
1383
+ &nbsp;
1384
+ public type = MultiOracleInfo.type;
1385
+ public length: bigint;
1386
+ &nbsp;
1387
+ /** The threshold to be used for the contract (e.g. 2 of 3). */
1388
+ public threshold: number;
1389
+ &nbsp;
1390
+ /** The set of oracle announcements. */
1391
+ public announcements: OracleAnnouncement[] = [];
1392
+ &nbsp;
1393
+ /** The parameters to be used when allowing differences between oracle outcomes in numerical outcome contracts. */
1394
+ public oracleParams?: OracleParams;
1395
+ &nbsp;
1396
+ public <span class="fstat-no" title="function not covered" >validate(</span>): void {
1397
+ <span class="cstat-no" title="statement not covered" > if (this.threshold &lt;= 0) {</span>
1398
+ <span class="cstat-no" title="statement not covered" > throw new Error('threshold must be greater than 0');</span>
1399
+ }
1400
+ <span class="cstat-no" title="statement not covered" > if (this.threshold &gt; this.announcements.length) {</span>
1401
+ <span class="cstat-no" title="statement not covered" > throw new Error(</span>
1402
+ 'threshold cannot be greater than number of announcements',
1403
+ );
1404
+ }
1405
+ <span class="cstat-no" title="statement not covered" > if (this.announcements.length === 0) {</span>
1406
+ <span class="cstat-no" title="statement not covered" > throw new Error('must have at least one announcement');</span>
1407
+ }
1408
+ &nbsp;
1409
+ // Validate all announcements
1410
+ <span class="cstat-no" title="statement not covered" > this.announcements.forEach(<span class="fstat-no" title="function not covered" >(a</span>nnouncement) =&gt; <span class="cstat-no" title="statement not covered" >announcement.validate())</span>;</span>
1411
+ &nbsp;
1412
+ // Validate oracle params if present
1413
+ <span class="cstat-no" title="statement not covered" > if (this.oracleParams) {</span>
1414
+ <span class="cstat-no" title="statement not covered" > this.oracleParams.validate();</span>
1415
+ }
1416
+ }
1417
+ &nbsp;
1418
+ /**
1419
+ * Returns the closest maturity date amongst all events
1420
+ */
1421
+ public <span class="fstat-no" title="function not covered" >getClosestMaturityDate(</span>): number {
1422
+ <span class="cstat-no" title="statement not covered" > return Math.min(</span>
1423
+ ...this.announcements.map(<span class="fstat-no" title="function not covered" >(a</span>) =&gt; <span class="cstat-no" title="statement not covered" >a.oracleEvent.eventMaturityEpoch)</span>,
1424
+ );
1425
+ }
1426
+ &nbsp;
1427
+ public toJSON(): MultiOracleInfoJSON {
1428
+ // Return enum variant format for Rust compatibility
1429
+ return {
1430
+ multi: {
1431
+ threshold: this.threshold,
1432
+ oracleAnnouncements: this.announcements.map((a) =&gt; a.toJSON()),
1433
+ oracleParams: this.oracleParams?.toJSON(),
1434
+ },
1435
+ } as any;
1436
+ }
1437
+ &nbsp;
1438
+ public <span class="fstat-no" title="function not covered" >serialize(</span>): Buffer {
1439
+ const writer = <span class="cstat-no" title="statement not covered" >new BufferWriter();</span>
1440
+ // writer.writeBigSize(this.type);
1441
+ &nbsp;
1442
+ const dataWriter = <span class="cstat-no" title="statement not covered" >new BufferWriter();</span>
1443
+ <span class="cstat-no" title="statement not covered" > dataWriter.writeUInt16BE(this.threshold);</span>
1444
+ <span class="cstat-no" title="statement not covered" > dataWriter.writeBigSize(this.announcements.length); </span>// Changed from writeUInt16BE to writeBigSize to match rust-dlc vec_cb
1445
+ &nbsp;
1446
+ <span class="cstat-no" title="statement not covered" > for (const announcement of this.announcements) {</span>
1447
+ <span class="cstat-no" title="statement not covered" > dataWriter.writeBytes(announcement.serialize());</span>
1448
+ }
1449
+ &nbsp;
1450
+ // Use Optional serialization for oracle params (body content only, not TLV wrapped)
1451
+ const oracleParamsData = <span class="cstat-no" title="statement not covered" >this.oracleParams</span>
1452
+ ? this.oracleParams.serializeBody()
1453
+ : null;
1454
+ <span class="cstat-no" title="statement not covered" > dataWriter.writeOptional(oracleParamsData);</span>
1455
+ &nbsp;
1456
+ // writer.writeBigSize(dataWriter.size);
1457
+ <span class="cstat-no" title="statement not covered" > writer.writeBytes(dataWriter.toBuffer());</span>
1458
+ &nbsp;
1459
+ <span class="cstat-no" title="statement not covered" > return writer.toBuffer();</span>
1460
+ }
1461
+ &nbsp;
1462
+ /**
1463
+ * Serializes the body without TLV wrapper (for embedding in ContractInfo)
1464
+ * This matches rust-dlc behavior where OracleInfo.write() doesn't add type_id
1465
+ */
1466
+ public serializeBody(): Buffer {
1467
+ const writer = new BufferWriter();
1468
+ writer.writeUInt16BE(this.threshold);
1469
+ writer.writeBigSize(this.announcements.length); // Changed from writeUInt16BE to writeBigSize to match rust-dlc vec_cb
1470
+ &nbsp;
1471
+ for (const announcement of this.announcements) {
1472
+ writer.writeBytes(announcement.serialize());
1473
+ }
1474
+ &nbsp;
1475
+ // Use Optional serialization for oracle params (body content only, not TLV wrapped)
1476
+ const oracleParamsData = this.oracleParams
1477
+ ? this.oracleParams.serializeBody()
1478
+ : null;
1479
+ writer.writeOptional(oracleParamsData);
1480
+ &nbsp;
1481
+ return writer.toBuffer();
1482
+ }
1483
+ &nbsp;
1484
+ /**
1485
+ * Deserializes the body without TLV wrapper (for embedding in ContractInfo)
1486
+ * This matches rust-dlc behavior where OracleInfo is read without type_id
1487
+ */
1488
+ public static deserializeBody(buf: Buffer): MultiOracleInfo {
1489
+ const instance = new MultiOracleInfo();
1490
+ const reader = new BufferReader(buf);
1491
+ &nbsp;
1492
+ // No type/length to read - directly read the multi-oracle body
1493
+ instance.threshold = reader.readUInt16BE();
1494
+ &nbsp;
1495
+ const numAnnouncements = Number(reader.readBigSize()); // BigSize for announcements count
1496
+ for (let i = 0; i &lt; numAnnouncements; i++) {
1497
+ instance.announcements.push(
1498
+ OracleAnnouncement.deserialize(getTlv(reader)),
1499
+ );
1500
+ }
1501
+ &nbsp;
1502
+ // Optional oracle params using Optional sub-type format
1503
+ const oracleParamsData = reader.readOptional();
1504
+ if (oracleParamsData) {
1505
+ instance.oracleParams = OracleParams.deserializeBody(oracleParamsData);
1506
+ }
1507
+ &nbsp;
1508
+ return instance;
1509
+ }
1510
+ }
1511
+ &nbsp;
1512
+ /**
1513
+ * OracleInfo contains information about the oracles to be used in
1514
+ * executing a DLC. Updated to support both single and multi-oracle
1515
+ * patterns as per rust-dlc specification.
1516
+ */
1517
+ export abstract class OracleInfo implements IDlcMessage {
1518
+ public <span class="fstat-no" title="function not covered" >static </span>deserialize(buf: Buffer): SingleOracleInfo | MultiOracleInfo {
1519
+ const reader = <span class="cstat-no" title="statement not covered" >new BufferReader(buf);</span>
1520
+ const type = <span class="cstat-no" title="statement not covered" >Number(reader.readBigSize());</span>
1521
+ &nbsp;
1522
+ <span class="cstat-no" title="statement not covered" > switch (type) {</span>
1523
+ case MessageType.OracleInfoV0:
1524
+ <span class="cstat-no" title="statement not covered" > return SingleOracleInfo.deserialize(buf);</span>
1525
+ case MessageType.OracleInfoV1:
1526
+ <span class="cstat-no" title="statement not covered" > return MultiOracleInfo.deserialize(buf);</span>
1527
+ default:
1528
+ <span class="cstat-no" title="statement not covered" > throw new Error(`Unknown oracle info type: ${type}`);</span>
1529
+ }
1530
+ }
1531
+ &nbsp;
1532
+ /**
1533
+ * Creates an OracleInfo from JSON data (e.g., from test vectors)
1534
+ * @param json JSON object representing oracle info
1535
+ */
1536
+ public static fromJSON(json: any): OracleInfo {
1537
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (!json) {
1538
+ <span class="cstat-no" title="statement not covered" > throw new Error('oracleInfo is required');</span>
1539
+ }
1540
+ &nbsp;
1541
+ // Handle direct single oracle (legacy format)
1542
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (json.announcement) {
1543
+ <span class="cstat-no" title="statement not covered" > return SingleOracleInfo.fromJSON(json);</span>
1544
+ }
1545
+ // Handle wrapped single oracle
1546
+ else if (json.single) {
1547
+ return SingleOracleInfo.fromJSON(json.single);
1548
+ }
1549
+ // Handle multi oracle
1550
+ else <span class="missing-if-branch" title="else path not taken" >E</span>if (json.multi) {
1551
+ return MultiOracleInfo.fromJSON(json.multi);
1552
+ } else {
1553
+ <span class="cstat-no" title="statement not covered" > throw new Error(</span>
1554
+ 'oracleInfo must have either announcement, single, or multi',
1555
+ );
1556
+ }
1557
+ }
1558
+ &nbsp;
1559
+ public abstract type: number;
1560
+ public abstract validate(): void;
1561
+ public abstract toJSON(): SingleOracleInfoJSON | MultiOracleInfoJSON;
1562
+ public abstract serialize(): Buffer;
1563
+ public abstract serializeBody(): Buffer;
1564
+ &nbsp;
1565
+ /**
1566
+ * Returns the closest maturity date amongst all events
1567
+ */
1568
+ public <span class="fstat-no" title="function not covered" >getClosestMaturityDate(</span>): number {
1569
+ <span class="cstat-no" title="statement not covered" > if (this instanceof SingleOracleInfo) {</span>
1570
+ <span class="cstat-no" title="statement not covered" > return this.announcement.oracleEvent.eventMaturityEpoch;</span>
1571
+ } else <span class="cstat-no" title="statement not covered" >if (this instanceof MultiOracleInfo) {</span>
1572
+ <span class="cstat-no" title="statement not covered" > return this.getClosestMaturityDate();</span>
1573
+ }
1574
+ <span class="cstat-no" title="statement not covered" > throw new Error('Unknown oracle info type');</span>
1575
+ }
1576
+ }
1577
+ &nbsp;
1578
+ // For backward compatibility, keep the V0 class as alias to SingleOracleInfo
1579
+ export class OracleInfoV0 extends SingleOracleInfo {
1580
+ /**
1581
+ * Creates an OracleInfoV0 from JSON data (alias for SingleOracleInfo.fromJSON)
1582
+ * @param json JSON object representing oracle info
1583
+ */
1584
+ public <span class="fstat-no" title="function not covered" >static </span>fromJSON(json: any): OracleInfoV0 {
1585
+ <span class="cstat-no" title="statement not covered" > return SingleOracleInfo.fromJSON(json) as OracleInfoV0;</span>
1586
+ }
1587
+ }
1588
+ &nbsp;
1589
+ // JSON interfaces
1590
+ export interface OracleParamsJSON {
1591
+ type?: number; // Made optional for rust-dlc compatibility
1592
+ maxErrorExp: number;
1593
+ minFailExp: number;
1594
+ maximizeCoverage: boolean;
1595
+ }
1596
+ &nbsp;
1597
+ export interface SingleOracleInfoJSON {
1598
+ type?: number; // Made optional for rust-dlc compatibility
1599
+ announcement: OracleAnnouncementJSON;
1600
+ }
1601
+ &nbsp;
1602
+ export interface MultiOracleInfoJSON {
1603
+ type?: number; // Made optional for rust-dlc compatibility
1604
+ threshold: number;
1605
+ announcements: OracleAnnouncementJSON[];
1606
+ oracleParams?: OracleParamsJSON;
1607
+ }
1608
+ &nbsp;
1609
+ // Backward compatibility type alias
1610
+ export type OracleInfoV0JSON = SingleOracleInfoJSON;
1611
+ &nbsp;</pre></td></tr></table></pre>
1612
+
1613
+ <div class='push'></div><!-- for sticky footer -->
1614
+ </div><!-- /wrapper -->
1615
+ <div class='footer quiet pad2 space-top1 center small'>
1616
+ Code coverage generated by
1617
+ <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
1618
+ at Tue Jun 24 2025 20:57:25 GMT-0700 (Pacific Daylight Saving Time)
1619
+ </div>
1620
+ </div>
1621
+ <script src="../../prettify.js"></script>
1622
+ <script>
1623
+ window.onload = function () {
1624
+ prettyPrint();
1625
+ };
1626
+ </script>
1627
+ <script src="../../sorter.js"></script>
1628
+ <script src="../../block-navigation.js"></script>
1629
+ </body>
1630
+ </html>
1631
+