tedious 17.0.0 → 18.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 (266) hide show
  1. package/lib/all-headers.d.ts +3 -0
  2. package/lib/always-encrypted/aead-aes-256-cbc-hmac-algorithm.js +2 -3
  3. package/lib/always-encrypted/aead-aes-256-cbc-hmac-algorithm.js.map +1 -1
  4. package/lib/always-encrypted/aead-aes-256-cbc-hmac-encryption-key.js +2 -3
  5. package/lib/always-encrypted/aead-aes-256-cbc-hmac-encryption-key.js.map +1 -1
  6. package/lib/always-encrypted/cek-entry.d.ts +12 -0
  7. package/lib/always-encrypted/keystore-provider-azure-key-vault.d.ts +22 -0
  8. package/lib/always-encrypted/symmetric-key.js +2 -3
  9. package/lib/always-encrypted/symmetric-key.js.map +1 -1
  10. package/lib/always-encrypted/types.d.ts +74 -0
  11. package/lib/always-encrypted/types.js +5 -9
  12. package/lib/always-encrypted/types.js.map +1 -1
  13. package/lib/bulk-load-payload.d.ts +9 -0
  14. package/lib/bulk-load.d.ts +278 -0
  15. package/lib/bulk-load.js +2 -4
  16. package/lib/bulk-load.js.map +1 -1
  17. package/lib/collation.d.ts +29 -0
  18. package/lib/collation.js +4 -7
  19. package/lib/collation.js.map +1 -1
  20. package/lib/connection.d.ts +1303 -0
  21. package/lib/connection.js +7 -10
  22. package/lib/connection.js.map +1 -1
  23. package/lib/connector.d.ts +21 -0
  24. package/lib/connector.js +3 -4
  25. package/lib/connector.js.map +1 -1
  26. package/lib/data-type.d.ts +456 -0
  27. package/lib/data-type.js +4 -7
  28. package/lib/data-type.js.map +1 -1
  29. package/lib/data-types/bigint.d.ts +3 -0
  30. package/lib/data-types/bigint.js +2 -3
  31. package/lib/data-types/bigint.js.map +1 -1
  32. package/lib/data-types/binary.d.ts +5 -0
  33. package/lib/data-types/binary.js +2 -3
  34. package/lib/data-types/binary.js.map +1 -1
  35. package/lib/data-types/bit.d.ts +3 -0
  36. package/lib/data-types/bit.js +2 -3
  37. package/lib/data-types/bit.js.map +1 -1
  38. package/lib/data-types/bitn.d.ts +3 -0
  39. package/lib/data-types/bitn.js +2 -3
  40. package/lib/data-types/bitn.js.map +1 -1
  41. package/lib/data-types/char.d.ts +5 -0
  42. package/lib/data-types/char.js +2 -3
  43. package/lib/data-types/char.js.map +1 -1
  44. package/lib/data-types/date.d.ts +3 -0
  45. package/lib/data-types/date.js +2 -3
  46. package/lib/data-types/date.js.map +1 -1
  47. package/lib/data-types/datetime.d.ts +3 -0
  48. package/lib/data-types/datetime.js +2 -3
  49. package/lib/data-types/datetime.js.map +1 -1
  50. package/lib/data-types/datetime2.d.ts +5 -0
  51. package/lib/data-types/datetime2.js +2 -3
  52. package/lib/data-types/datetime2.js.map +1 -1
  53. package/lib/data-types/datetimen.d.ts +3 -0
  54. package/lib/data-types/datetimen.js +2 -3
  55. package/lib/data-types/datetimen.js.map +1 -1
  56. package/lib/data-types/datetimeoffset.d.ts +5 -0
  57. package/lib/data-types/datetimeoffset.js +2 -3
  58. package/lib/data-types/datetimeoffset.js.map +1 -1
  59. package/lib/data-types/decimal.d.ts +6 -0
  60. package/lib/data-types/decimal.js +2 -3
  61. package/lib/data-types/decimal.js.map +1 -1
  62. package/lib/data-types/decimaln.d.ts +3 -0
  63. package/lib/data-types/decimaln.js +2 -3
  64. package/lib/data-types/decimaln.js.map +1 -1
  65. package/lib/data-types/float.d.ts +3 -0
  66. package/lib/data-types/float.js +2 -3
  67. package/lib/data-types/float.js.map +1 -1
  68. package/lib/data-types/floatn.d.ts +3 -0
  69. package/lib/data-types/floatn.js +2 -3
  70. package/lib/data-types/floatn.js.map +1 -1
  71. package/lib/data-types/image.d.ts +3 -0
  72. package/lib/data-types/image.js +2 -3
  73. package/lib/data-types/image.js.map +1 -1
  74. package/lib/data-types/int.d.ts +3 -0
  75. package/lib/data-types/int.js +2 -3
  76. package/lib/data-types/int.js.map +1 -1
  77. package/lib/data-types/intn.d.ts +3 -0
  78. package/lib/data-types/intn.js +2 -3
  79. package/lib/data-types/intn.js.map +1 -1
  80. package/lib/data-types/money.d.ts +3 -0
  81. package/lib/data-types/money.js +2 -3
  82. package/lib/data-types/money.js.map +1 -1
  83. package/lib/data-types/moneyn.d.ts +3 -0
  84. package/lib/data-types/moneyn.js +2 -3
  85. package/lib/data-types/moneyn.js.map +1 -1
  86. package/lib/data-types/nchar.d.ts +5 -0
  87. package/lib/data-types/nchar.js +2 -3
  88. package/lib/data-types/nchar.js.map +1 -1
  89. package/lib/data-types/ntext.d.ts +3 -0
  90. package/lib/data-types/ntext.js +2 -3
  91. package/lib/data-types/ntext.js.map +1 -1
  92. package/lib/data-types/null.d.ts +3 -0
  93. package/lib/data-types/null.js +2 -3
  94. package/lib/data-types/null.js.map +1 -1
  95. package/lib/data-types/numeric.d.ts +6 -0
  96. package/lib/data-types/numeric.js +2 -3
  97. package/lib/data-types/numeric.js.map +1 -1
  98. package/lib/data-types/numericn.d.ts +3 -0
  99. package/lib/data-types/numericn.js +2 -3
  100. package/lib/data-types/numericn.js.map +1 -1
  101. package/lib/data-types/nvarchar.d.ts +5 -0
  102. package/lib/data-types/nvarchar.js +2 -3
  103. package/lib/data-types/nvarchar.js.map +1 -1
  104. package/lib/data-types/real.d.ts +3 -0
  105. package/lib/data-types/real.js +2 -3
  106. package/lib/data-types/real.js.map +1 -1
  107. package/lib/data-types/smalldatetime.d.ts +3 -0
  108. package/lib/data-types/smalldatetime.js +2 -3
  109. package/lib/data-types/smalldatetime.js.map +1 -1
  110. package/lib/data-types/smallint.d.ts +3 -0
  111. package/lib/data-types/smallint.js +2 -3
  112. package/lib/data-types/smallint.js.map +1 -1
  113. package/lib/data-types/smallmoney.d.ts +3 -0
  114. package/lib/data-types/smallmoney.js +2 -3
  115. package/lib/data-types/smallmoney.js.map +1 -1
  116. package/lib/data-types/sql-variant.d.ts +3 -0
  117. package/lib/data-types/sql-variant.js +2 -3
  118. package/lib/data-types/sql-variant.js.map +1 -1
  119. package/lib/data-types/text.d.ts +3 -0
  120. package/lib/data-types/text.js +2 -3
  121. package/lib/data-types/text.js.map +1 -1
  122. package/lib/data-types/time.d.ts +3 -0
  123. package/lib/data-types/time.js +2 -3
  124. package/lib/data-types/time.js.map +1 -1
  125. package/lib/data-types/tinyint.d.ts +3 -0
  126. package/lib/data-types/tinyint.js +2 -3
  127. package/lib/data-types/tinyint.js.map +1 -1
  128. package/lib/data-types/tvp.d.ts +3 -0
  129. package/lib/data-types/tvp.js +2 -3
  130. package/lib/data-types/tvp.js.map +1 -1
  131. package/lib/data-types/udt.d.ts +3 -0
  132. package/lib/data-types/udt.js +2 -3
  133. package/lib/data-types/udt.js.map +1 -1
  134. package/lib/data-types/uniqueidentifier.d.ts +3 -0
  135. package/lib/data-types/uniqueidentifier.js +2 -3
  136. package/lib/data-types/uniqueidentifier.js.map +1 -1
  137. package/lib/data-types/varbinary.d.ts +5 -0
  138. package/lib/data-types/varbinary.js +2 -3
  139. package/lib/data-types/varbinary.js.map +1 -1
  140. package/lib/data-types/varchar.d.ts +5 -0
  141. package/lib/data-types/varchar.js +2 -3
  142. package/lib/data-types/varchar.js.map +1 -1
  143. package/lib/data-types/xml.d.ts +3 -0
  144. package/lib/data-types/xml.js +2 -3
  145. package/lib/data-types/xml.js.map +1 -1
  146. package/lib/debug.d.ts +25 -0
  147. package/lib/debug.js +4 -5
  148. package/lib/debug.js.map +1 -1
  149. package/lib/errors/abort-error.d.ts +4 -0
  150. package/lib/errors/timeout-error.d.ts +4 -0
  151. package/lib/errors.d.ts +15 -0
  152. package/lib/guid-parser.d.ts +4 -0
  153. package/lib/incoming-message-stream.d.ts +21 -0
  154. package/lib/incoming-message-stream.js +2 -3
  155. package/lib/incoming-message-stream.js.map +1 -1
  156. package/lib/instance-lookup.d.ts +15 -0
  157. package/lib/instance-lookup.js +1 -1
  158. package/lib/instance-lookup.js.map +1 -1
  159. package/lib/library.d.ts +1 -0
  160. package/lib/library.js +2 -3
  161. package/lib/library.js.map +1 -1
  162. package/lib/login7-payload.d.ts +52 -0
  163. package/lib/login7-payload.js +2 -3
  164. package/lib/login7-payload.js.map +1 -1
  165. package/lib/message-io.d.ts +33 -0
  166. package/lib/message-io.js +4 -5
  167. package/lib/message-io.js.map +1 -1
  168. package/lib/message.d.ts +12 -0
  169. package/lib/message.js +2 -3
  170. package/lib/message.js.map +1 -1
  171. package/lib/metadata-parser.d.ts +49 -0
  172. package/lib/metadata-parser.js +2 -3
  173. package/lib/metadata-parser.js.map +1 -1
  174. package/lib/ntlm-payload.d.ts +24 -0
  175. package/lib/ntlm-payload.js +4 -5
  176. package/lib/ntlm-payload.js.map +1 -1
  177. package/lib/ntlm.d.ts +5 -0
  178. package/lib/outgoing-message-stream.d.ts +16 -0
  179. package/lib/outgoing-message-stream.js +2 -3
  180. package/lib/outgoing-message-stream.js.map +1 -1
  181. package/lib/packet.d.ts +34 -0
  182. package/lib/packet.js +4 -7
  183. package/lib/packet.js.map +1 -1
  184. package/lib/prelogin-payload.d.ts +62 -0
  185. package/lib/prelogin-payload.js +2 -3
  186. package/lib/prelogin-payload.js.map +1 -1
  187. package/lib/request.d.ts +371 -0
  188. package/lib/request.js +2 -3
  189. package/lib/request.js.map +1 -1
  190. package/lib/rpcrequest-payload.d.ts +17 -0
  191. package/lib/rpcrequest-payload.js +3 -3
  192. package/lib/rpcrequest-payload.js.map +1 -1
  193. package/lib/sender.d.ts +8 -0
  194. package/lib/sender.js +1 -1
  195. package/lib/sender.js.map +1 -1
  196. package/lib/special-stored-procedure.d.ts +18 -0
  197. package/lib/special-stored-procedure.js +2 -3
  198. package/lib/special-stored-procedure.js.map +1 -1
  199. package/lib/sqlbatch-payload.d.ts +14 -0
  200. package/lib/sqlbatch-payload.js +2 -3
  201. package/lib/sqlbatch-payload.js.map +1 -1
  202. package/lib/tds-versions.d.ts +6 -0
  203. package/lib/tds-versions.js +3 -5
  204. package/lib/tds-versions.js.map +1 -1
  205. package/lib/tedious.d.ts +12 -0
  206. package/lib/tedious.js +2 -3
  207. package/lib/tedious.js.map +1 -1
  208. package/lib/token/colmetadata-token-parser.d.ts +12 -0
  209. package/lib/token/colmetadata-token-parser.js +2 -3
  210. package/lib/token/colmetadata-token-parser.js.map +1 -1
  211. package/lib/token/done-token-parser.d.ts +7 -0
  212. package/lib/token/env-change-token-parser.d.ts +6 -0
  213. package/lib/token/env-change-token-parser.js +2 -3
  214. package/lib/token/env-change-token-parser.js.map +1 -1
  215. package/lib/token/feature-ext-ack-parser.d.ts +6 -0
  216. package/lib/token/feature-ext-ack-parser.js +2 -3
  217. package/lib/token/feature-ext-ack-parser.js.map +1 -1
  218. package/lib/token/fedauth-info-parser.d.ts +6 -0
  219. package/lib/token/fedauth-info-parser.js +2 -3
  220. package/lib/token/fedauth-info-parser.js.map +1 -1
  221. package/lib/token/handler.d.ts +135 -0
  222. package/lib/token/handler.js +2 -3
  223. package/lib/token/handler.js.map +1 -1
  224. package/lib/token/helpers.d.ts +29 -0
  225. package/lib/token/infoerror-token-parser.d.ts +6 -0
  226. package/lib/token/loginack-token-parser.d.ts +6 -0
  227. package/lib/token/loginack-token-parser.js +2 -3
  228. package/lib/token/loginack-token-parser.js.map +1 -1
  229. package/lib/token/nbcrow-token-parser.d.ts +4 -0
  230. package/lib/token/nbcrow-token-parser.js +4 -5
  231. package/lib/token/nbcrow-token-parser.js.map +1 -1
  232. package/lib/token/order-token-parser.d.ts +6 -0
  233. package/lib/token/order-token-parser.js +2 -3
  234. package/lib/token/order-token-parser.js.map +1 -1
  235. package/lib/token/returnstatus-token-parser.d.ts +6 -0
  236. package/lib/token/returnstatus-token-parser.js +2 -3
  237. package/lib/token/returnstatus-token-parser.js.map +1 -1
  238. package/lib/token/returnvalue-token-parser.d.ts +4 -0
  239. package/lib/token/returnvalue-token-parser.js +4 -5
  240. package/lib/token/returnvalue-token-parser.js.map +1 -1
  241. package/lib/token/row-token-parser.d.ts +4 -0
  242. package/lib/token/row-token-parser.js +4 -5
  243. package/lib/token/row-token-parser.js.map +1 -1
  244. package/lib/token/sspi-token-parser.d.ts +6 -0
  245. package/lib/token/sspi-token-parser.js +2 -3
  246. package/lib/token/sspi-token-parser.js.map +1 -1
  247. package/lib/token/stream-parser.d.ts +35 -0
  248. package/lib/token/stream-parser.js +2 -3
  249. package/lib/token/stream-parser.js.map +1 -1
  250. package/lib/token/token-stream-parser.d.ts +17 -0
  251. package/lib/token/token.d.ts +313 -0
  252. package/lib/token/token.js +2 -3
  253. package/lib/token/token.js.map +1 -1
  254. package/lib/tracking-buffer/writable-tracking-buffer.d.ts +48 -0
  255. package/lib/tracking-buffer/writable-tracking-buffer.js +2 -3
  256. package/lib/tracking-buffer/writable-tracking-buffer.js.map +1 -1
  257. package/lib/transaction.d.ts +40 -0
  258. package/lib/transaction.js +4 -7
  259. package/lib/transaction.js.map +1 -1
  260. package/lib/transient-error-lookup.d.ts +3 -0
  261. package/lib/utils/with-timeout.d.ts +8 -0
  262. package/lib/utils/with-timeout.js +2 -3
  263. package/lib/utils/with-timeout.js.map +1 -1
  264. package/lib/value-parser.d.ts +8 -0
  265. package/package.json +28 -30
  266. package/tsconfig.build-types.json +15 -0
@@ -1 +1 @@
1
- {"version":3,"file":"message.js","names":["_stream","require","Message","PassThrough","constructor","type","resetConnection","ignore","_default","exports","default","module"],"sources":["../src/message.ts"],"sourcesContent":["import { PassThrough } from 'stream';\n\nclass Message extends PassThrough {\n declare type: number;\n declare resetConnection: boolean;\n declare ignore: boolean;\n\n constructor({ type, resetConnection = false }: { type: number, resetConnection?: boolean | undefined }) {\n super();\n\n this.type = type;\n this.resetConnection = resetConnection;\n this.ignore = false;\n }\n}\n\nexport default Message;\nmodule.exports = Message;\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAEA,MAAMC,OAAO,SAASC,mBAAW,CAAC;EAKhCC,WAAWA,CAAC;IAAEC,IAAI;IAAEC,eAAe,GAAG;EAA+D,CAAC,EAAE;IACtG,KAAK,CAAC,CAAC;IAEP,IAAI,CAACD,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACC,eAAe,GAAGA,eAAe;IACtC,IAAI,CAACC,MAAM,GAAG,KAAK;EACrB;AACF;AAAC,IAAAC,QAAA,GAEcN,OAAO;AAAAO,OAAA,CAAAC,OAAA,GAAAF,QAAA;AACtBG,MAAM,CAACF,OAAO,GAAGP,OAAO"}
1
+ {"version":3,"file":"message.js","names":["_stream","require","Message","PassThrough","constructor","type","resetConnection","ignore","_default","exports","default","module"],"sources":["../src/message.ts"],"sourcesContent":["import { PassThrough } from 'stream';\n\nclass Message extends PassThrough {\n declare type: number;\n declare resetConnection: boolean;\n declare ignore: boolean;\n\n constructor({ type, resetConnection = false }: { type: number, resetConnection?: boolean | undefined }) {\n super();\n\n this.type = type;\n this.resetConnection = resetConnection;\n this.ignore = false;\n }\n}\n\nexport default Message;\nmodule.exports = Message;\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAEA,MAAMC,OAAO,SAASC,mBAAW,CAAC;EAKhCC,WAAWA,CAAC;IAAEC,IAAI;IAAEC,eAAe,GAAG;EAA+D,CAAC,EAAE;IACtG,KAAK,CAAC,CAAC;IAEP,IAAI,CAACD,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACC,eAAe,GAAGA,eAAe;IACtC,IAAI,CAACC,MAAM,GAAG,KAAK;EACrB;AACF;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEcR,OAAO;AACtBS,MAAM,CAACF,OAAO,GAAGP,OAAO"}
@@ -0,0 +1,49 @@
1
+ /// <reference types="node" />
2
+ import { Collation } from './collation';
3
+ import Parser, { type ParserOptions } from './token/stream-parser';
4
+ import { type DataType } from './data-type';
5
+ import { type CryptoMetadata } from './always-encrypted/types';
6
+ import { Result } from './token/helpers';
7
+ interface XmlSchema {
8
+ dbname: string;
9
+ owningSchema: string;
10
+ xmlSchemaCollection: string;
11
+ }
12
+ interface UdtInfo {
13
+ maxByteSize: number;
14
+ dbname: string;
15
+ owningSchema: string;
16
+ typeName: string;
17
+ assemblyName: string;
18
+ }
19
+ export type BaseMetadata = {
20
+ userType: number;
21
+ flags: number;
22
+ /**
23
+ * The column's type, such as VarChar, Int or Binary.
24
+ */
25
+ type: DataType;
26
+ collation: Collation | undefined;
27
+ /**
28
+ * The precision. Only applicable to numeric and decimal.
29
+ */
30
+ precision: number | undefined;
31
+ /**
32
+ * The scale. Only applicable to numeric, decimal, time, datetime2 and datetimeoffset.
33
+ */
34
+ scale: number | undefined;
35
+ /**
36
+ * The length, for char, varchar, nvarchar and varbinary.
37
+ */
38
+ dataLength: number | undefined;
39
+ schema: XmlSchema | undefined;
40
+ udtInfo: UdtInfo | undefined;
41
+ };
42
+ export type Metadata = {
43
+ cryptoMetadata?: CryptoMetadata;
44
+ } & BaseMetadata;
45
+ declare function readCollation(buf: Buffer, offset: number): Result<Collation>;
46
+ declare function readMetadata(buf: Buffer, offset: number, options: ParserOptions): Result<Metadata>;
47
+ declare function metadataParse(parser: Parser, options: ParserOptions, callback: (metadata: Metadata) => void): void;
48
+ export default metadataParse;
49
+ export { readCollation, readMetadata };
@@ -373,9 +373,8 @@ function metadataParse(parser, options, callback) {
373
373
  }
374
374
  })();
375
375
  }
376
- var _default = metadataParse;
377
- exports.default = _default;
376
+ var _default = exports.default = metadataParse;
378
377
  module.exports = metadataParse;
379
378
  module.exports.readCollation = readCollation;
380
379
  module.exports.readMetadata = readMetadata;
381
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29sbGF0aW9uIiwicmVxdWlyZSIsIl9kYXRhVHlwZSIsIl9zcHJpbnRmSnMiLCJfaGVscGVycyIsInJlYWRDb2xsYXRpb24iLCJidWYiLCJvZmZzZXQiLCJsZW5ndGgiLCJOb3RFbm91Z2hEYXRhRXJyb3IiLCJjb2xsYXRpb24iLCJDb2xsYXRpb24iLCJmcm9tQnVmZmVyIiwic2xpY2UiLCJSZXN1bHQiLCJyZWFkU2NoZW1hIiwic2NoZW1hUHJlc2VudCIsInZhbHVlIiwicmVhZFVJbnQ4IiwidW5kZWZpbmVkIiwiZGJuYW1lIiwicmVhZEJWYXJDaGFyIiwib3duaW5nU2NoZW1hIiwieG1sU2NoZW1hQ29sbGVjdGlvbiIsInJlYWRVc1ZhckNoYXIiLCJyZWFkVURUSW5mbyIsIm1heEJ5dGVTaXplIiwicmVhZFVJbnQxNkxFIiwidHlwZU5hbWUiLCJhc3NlbWJseU5hbWUiLCJyZWFkTWV0YWRhdGEiLCJvcHRpb25zIiwidXNlclR5cGUiLCJ0ZHNWZXJzaW9uIiwicmVhZFVJbnQzMkxFIiwiZmxhZ3MiLCJ0eXBlTnVtYmVyIiwidHlwZSIsIlRZUEUiLCJFcnJvciIsInNwcmludGYiLCJuYW1lIiwicHJlY2lzaW9uIiwic2NhbGUiLCJkYXRhTGVuZ3RoIiwic2NoZW1hIiwidWR0SW5mbyIsIm1ldGFkYXRhUGFyc2UiLCJwYXJzZXIiLCJjYWxsYmFjayIsInJlc3VsdCIsImJ1ZmZlciIsInBvc2l0aW9uIiwiZXJyIiwid2FpdEZvckNodW5rIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9tZXRhZGF0YS1wYXJzZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29sbGF0aW9uIH0gZnJvbSAnLi9jb2xsYXRpb24nO1xuaW1wb3J0IFBhcnNlciwgeyB0eXBlIFBhcnNlck9wdGlvbnMgfSBmcm9tICcuL3Rva2VuL3N0cmVhbS1wYXJzZXInO1xuaW1wb3J0IHsgVFlQRSwgdHlwZSBEYXRhVHlwZSB9IGZyb20gJy4vZGF0YS10eXBlJztcbmltcG9ydCB7IHR5cGUgQ3J5cHRvTWV0YWRhdGEgfSBmcm9tICcuL2Fsd2F5cy1lbmNyeXB0ZWQvdHlwZXMnO1xuXG5pbXBvcnQgeyBzcHJpbnRmIH0gZnJvbSAnc3ByaW50Zi1qcyc7XG5cbmltcG9ydCB7IFJlc3VsdCwgTm90RW5vdWdoRGF0YUVycm9yLCByZWFkVUludDgsIHJlYWRCVmFyQ2hhciwgcmVhZFVzVmFyQ2hhciwgcmVhZFVJbnQxNkxFLCByZWFkVUludDMyTEUgfSBmcm9tICcuL3Rva2VuL2hlbHBlcnMnO1xuXG5pbnRlcmZhY2UgWG1sU2NoZW1hIHtcbiAgZGJuYW1lOiBzdHJpbmc7XG4gIG93bmluZ1NjaGVtYTogc3RyaW5nO1xuICB4bWxTY2hlbWFDb2xsZWN0aW9uOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBVZHRJbmZvIHtcbiAgbWF4Qnl0ZVNpemU6IG51bWJlcjtcbiAgZGJuYW1lOiBzdHJpbmc7XG4gIG93bmluZ1NjaGVtYTogc3RyaW5nO1xuICB0eXBlTmFtZTogc3RyaW5nO1xuICBhc3NlbWJseU5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgQmFzZU1ldGFkYXRhID0ge1xuICB1c2VyVHlwZTogbnVtYmVyO1xuXG4gIGZsYWdzOiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgY29sdW1uJ3MgdHlwZSwgc3VjaCBhcyBWYXJDaGFyLCBJbnQgb3IgQmluYXJ5LlxuICAgKi9cbiAgdHlwZTogRGF0YVR5cGU7XG5cbiAgY29sbGF0aW9uOiBDb2xsYXRpb24gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBUaGUgcHJlY2lzaW9uLiBPbmx5IGFwcGxpY2FibGUgdG8gbnVtZXJpYyBhbmQgZGVjaW1hbC5cbiAgICovXG4gIHByZWNpc2lvbjogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgc2NhbGUuIE9ubHkgYXBwbGljYWJsZSB0byBudW1lcmljLCBkZWNpbWFsLCB0aW1lLCBkYXRldGltZTIgYW5kIGRhdGV0aW1lb2Zmc2V0LlxuICAgKi9cbiAgc2NhbGU6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIGxlbmd0aCwgZm9yIGNoYXIsIHZhcmNoYXIsIG52YXJjaGFyIGFuZCB2YXJiaW5hcnkuXG4gICAqL1xuICBkYXRhTGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgc2NoZW1hOiBYbWxTY2hlbWEgfCB1bmRlZmluZWQ7XG5cbiAgdWR0SW5mbzogVWR0SW5mbyB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IHR5cGUgTWV0YWRhdGEgPSB7XG4gIGNyeXB0b01ldGFkYXRhPzogQ3J5cHRvTWV0YWRhdGE7XG59ICYgQmFzZU1ldGFkYXRhO1xuXG5mdW5jdGlvbiByZWFkQ29sbGF0aW9uKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxDb2xsYXRpb24+IHtcbiAgb2Zmc2V0ID0gK29mZnNldDtcblxuICBpZiAoYnVmLmxlbmd0aCA8IG9mZnNldCArIDUpIHtcbiAgICB0aHJvdyBuZXcgTm90RW5vdWdoRGF0YUVycm9yKG9mZnNldCArIDUpO1xuICB9XG5cbiAgY29uc3QgY29sbGF0aW9uID0gQ29sbGF0aW9uLmZyb21CdWZmZXIoYnVmLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgNSkpO1xuICByZXR1cm4gbmV3IFJlc3VsdChjb2xsYXRpb24sIG9mZnNldCArIDUpO1xufVxuXG5mdW5jdGlvbiByZWFkU2NoZW1hKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxYbWxTY2hlbWEgfCB1bmRlZmluZWQ+IHtcbiAgb2Zmc2V0ID0gK29mZnNldDtcblxuICBsZXQgc2NoZW1hUHJlc2VudDtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogc2NoZW1hUHJlc2VudCB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgaWYgKHNjaGVtYVByZXNlbnQgIT09IDB4MDEpIHtcbiAgICByZXR1cm4gbmV3IFJlc3VsdCh1bmRlZmluZWQsIG9mZnNldCk7XG4gIH1cblxuICBsZXQgZGJuYW1lO1xuICAoeyBvZmZzZXQsIHZhbHVlOiBkYm5hbWUgfSA9IHJlYWRCVmFyQ2hhcihidWYsIG9mZnNldCkpO1xuXG4gIGxldCBvd25pbmdTY2hlbWE7XG4gICh7IG9mZnNldCwgdmFsdWU6IG93bmluZ1NjaGVtYSB9ID0gcmVhZEJWYXJDaGFyKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgbGV0IHhtbFNjaGVtYUNvbGxlY3Rpb247XG4gICh7IG9mZnNldCwgdmFsdWU6IHhtbFNjaGVtYUNvbGxlY3Rpb24gfSA9IHJlYWRVc1ZhckNoYXIoYnVmLCBvZmZzZXQpKTtcblxuICByZXR1cm4gbmV3IFJlc3VsdCh7IGRibmFtZSwgb3duaW5nU2NoZW1hLCB4bWxTY2hlbWFDb2xsZWN0aW9uIH0sIG9mZnNldCk7XG59XG5cbmZ1bmN0aW9uIHJlYWRVRFRJbmZvKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxVZHRJbmZvPiB7XG4gIGxldCBtYXhCeXRlU2l6ZTtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogbWF4Qnl0ZVNpemUgfSA9IHJlYWRVSW50MTZMRShidWYsIG9mZnNldCkpO1xuXG4gIGxldCBkYm5hbWU7XG4gICh7IG9mZnNldCwgdmFsdWU6IGRibmFtZSB9ID0gcmVhZEJWYXJDaGFyKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgbGV0IG93bmluZ1NjaGVtYTtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogb3duaW5nU2NoZW1hIH0gPSByZWFkQlZhckNoYXIoYnVmLCBvZmZzZXQpKTtcblxuICBsZXQgdHlwZU5hbWU7XG4gICh7IG9mZnNldCwgdmFsdWU6IHR5cGVOYW1lIH0gPSByZWFkQlZhckNoYXIoYnVmLCBvZmZzZXQpKTtcblxuICBsZXQgYXNzZW1ibHlOYW1lO1xuICAoeyBvZmZzZXQsIHZhbHVlOiBhc3NlbWJseU5hbWUgfSA9IHJlYWRVc1ZhckNoYXIoYnVmLCBvZmZzZXQpKTtcblxuICByZXR1cm4gbmV3IFJlc3VsdCh7XG4gICAgbWF4Qnl0ZVNpemU6IG1heEJ5dGVTaXplLFxuICAgIGRibmFtZTogZGJuYW1lLFxuICAgIG93bmluZ1NjaGVtYTogb3duaW5nU2NoZW1hLFxuICAgIHR5cGVOYW1lOiB0eXBlTmFtZSxcbiAgICBhc3NlbWJseU5hbWU6IGFzc2VtYmx5TmFtZVxuICB9LCBvZmZzZXQpO1xufVxuXG5mdW5jdGlvbiByZWFkTWV0YWRhdGEoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyLCBvcHRpb25zOiBQYXJzZXJPcHRpb25zKTogUmVzdWx0PE1ldGFkYXRhPiB7XG4gIGxldCB1c2VyVHlwZTtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogdXNlclR5cGUgfSA9IChvcHRpb25zLnRkc1ZlcnNpb24gPCAnN18yJyA/IHJlYWRVSW50MTZMRSA6IHJlYWRVSW50MzJMRSkoYnVmLCBvZmZzZXQpKTtcblxuICBsZXQgZmxhZ3M7XG4gICh7IG9mZnNldCwgdmFsdWU6IGZsYWdzIH0gPSByZWFkVUludDE2TEUoYnVmLCBvZmZzZXQpKTtcblxuICBsZXQgdHlwZU51bWJlcjtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogdHlwZU51bWJlciB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgY29uc3QgdHlwZTogRGF0YVR5cGUgPSBUWVBFW3R5cGVOdW1iZXJdO1xuICBpZiAoIXR5cGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3Ioc3ByaW50ZignVW5yZWNvZ25pc2VkIGRhdGEgdHlwZSAweCUwMlgnLCB0eXBlTnVtYmVyKSk7XG4gIH1cblxuICBzd2l0Y2ggKHR5cGUubmFtZSkge1xuICAgIGNhc2UgJ051bGwnOlxuICAgIGNhc2UgJ1RpbnlJbnQnOlxuICAgIGNhc2UgJ1NtYWxsSW50JzpcbiAgICBjYXNlICdJbnQnOlxuICAgIGNhc2UgJ0JpZ0ludCc6XG4gICAgY2FzZSAnUmVhbCc6XG4gICAgY2FzZSAnRmxvYXQnOlxuICAgIGNhc2UgJ1NtYWxsTW9uZXknOlxuICAgIGNhc2UgJ01vbmV5JzpcbiAgICBjYXNlICdCaXQnOlxuICAgIGNhc2UgJ1NtYWxsRGF0ZVRpbWUnOlxuICAgIGNhc2UgJ0RhdGVUaW1lJzpcbiAgICBjYXNlICdEYXRlJzpcbiAgICAgIHJldHVybiBuZXcgUmVzdWx0KHtcbiAgICAgICAgdXNlclR5cGU6IHVzZXJUeXBlLFxuICAgICAgICBmbGFnczogZmxhZ3MsXG4gICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgIGNvbGxhdGlvbjogdW5kZWZpbmVkLFxuICAgICAgICBwcmVjaXNpb246IHVuZGVmaW5lZCxcbiAgICAgICAgc2NhbGU6IHVuZGVmaW5lZCxcbiAgICAgICAgZGF0YUxlbmd0aDogdW5kZWZpbmVkLFxuICAgICAgICBzY2hlbWE6IHVuZGVmaW5lZCxcbiAgICAgICAgdWR0SW5mbzogdW5kZWZpbmVkXG4gICAgICB9LCBvZmZzZXQpO1xuXG4gICAgY2FzZSAnSW50Tic6XG4gICAgY2FzZSAnRmxvYXROJzpcbiAgICBjYXNlICdNb25leU4nOlxuICAgIGNhc2UgJ0JpdE4nOlxuICAgIGNhc2UgJ1VuaXF1ZUlkZW50aWZpZXInOlxuICAgIGNhc2UgJ0RhdGVUaW1lTic6IHtcbiAgICAgIGxldCBkYXRhTGVuZ3RoO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogZGF0YUxlbmd0aCB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIHJldHVybiBuZXcgUmVzdWx0KHtcbiAgICAgICAgdXNlclR5cGU6IHVzZXJUeXBlLFxuICAgICAgICBmbGFnczogZmxhZ3MsXG4gICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgIGNvbGxhdGlvbjogdW5kZWZpbmVkLFxuICAgICAgICBwcmVjaXNpb246IHVuZGVmaW5lZCxcbiAgICAgICAgc2NhbGU6IHVuZGVmaW5lZCxcbiAgICAgICAgZGF0YUxlbmd0aDogZGF0YUxlbmd0aCxcbiAgICAgICAgc2NoZW1hOiB1bmRlZmluZWQsXG4gICAgICAgIHVkdEluZm86IHVuZGVmaW5lZFxuICAgICAgfSwgb2Zmc2V0KTtcbiAgICB9XG5cbiAgICBjYXNlICdWYXJpYW50Jzoge1xuICAgICAgbGV0IGRhdGFMZW5ndGg7XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBkYXRhTGVuZ3RoIH0gPSByZWFkVUludDMyTEUoYnVmLCBvZmZzZXQpKTtcblxuICAgICAgcmV0dXJuIG5ldyBSZXN1bHQoe1xuICAgICAgICB1c2VyVHlwZTogdXNlclR5cGUsXG4gICAgICAgIGZsYWdzOiBmbGFncyxcbiAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgY29sbGF0aW9uOiB1bmRlZmluZWQsXG4gICAgICAgIHByZWNpc2lvbjogdW5kZWZpbmVkLFxuICAgICAgICBzY2FsZTogdW5kZWZpbmVkLFxuICAgICAgICBkYXRhTGVuZ3RoOiBkYXRhTGVuZ3RoLFxuICAgICAgICBzY2hlbWE6IHVuZGVmaW5lZCxcbiAgICAgICAgdWR0SW5mbzogdW5kZWZpbmVkXG4gICAgICB9LCBvZmZzZXQpO1xuICAgIH1cblxuICAgIGNhc2UgJ1ZhckNoYXInOlxuICAgIGNhc2UgJ0NoYXInOlxuICAgIGNhc2UgJ05WYXJDaGFyJzpcbiAgICBjYXNlICdOQ2hhcic6IHtcbiAgICAgIGxldCBkYXRhTGVuZ3RoO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogZGF0YUxlbmd0aCB9ID0gcmVhZFVJbnQxNkxFKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIGxldCBjb2xsYXRpb247XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBjb2xsYXRpb24gfSA9IHJlYWRDb2xsYXRpb24oYnVmLCBvZmZzZXQpKTtcblxuICAgICAgcmV0dXJuIG5ldyBSZXN1bHQoe1xuICAgICAgICB1c2VyVHlwZTogdXNlclR5cGUsXG4gICAgICAgIGZsYWdzOiBmbGFncyxcbiAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgY29sbGF0aW9uOiBjb2xsYXRpb24sXG4gICAgICAgIHByZWNpc2lvbjogdW5kZWZpbmVkLFxuICAgICAgICBzY2FsZTogdW5kZWZpbmVkLFxuICAgICAgICBkYXRhTGVuZ3RoOiBkYXRhTGVuZ3RoLFxuICAgICAgICBzY2hlbWE6IHVuZGVmaW5lZCxcbiAgICAgICAgdWR0SW5mbzogdW5kZWZpbmVkXG4gICAgICB9LCBvZmZzZXQpO1xuICAgIH1cblxuICAgIGNhc2UgJ1RleHQnOlxuICAgIGNhc2UgJ05UZXh0Jzoge1xuICAgICAgbGV0IGRhdGFMZW5ndGg7XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBkYXRhTGVuZ3RoIH0gPSByZWFkVUludDMyTEUoYnVmLCBvZmZzZXQpKTtcblxuICAgICAgbGV0IGNvbGxhdGlvbjtcbiAgICAgICh7IG9mZnNldCwgdmFsdWU6IGNvbGxhdGlvbiB9ID0gcmVhZENvbGxhdGlvbihidWYsIG9mZnNldCkpO1xuXG4gICAgICByZXR1cm4gbmV3IFJlc3VsdCh7XG4gICAgICAgIHVzZXJUeXBlOiB1c2VyVHlwZSxcbiAgICAgICAgZmxhZ3M6IGZsYWdzLFxuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICBjb2xsYXRpb246IGNvbGxhdGlvbixcbiAgICAgICAgcHJlY2lzaW9uOiB1bmRlZmluZWQsXG4gICAgICAgIHNjYWxlOiB1bmRlZmluZWQsXG4gICAgICAgIGRhdGFMZW5ndGg6IGRhdGFMZW5ndGgsXG4gICAgICAgIHNjaGVtYTogdW5kZWZpbmVkLFxuICAgICAgICB1ZHRJbmZvOiB1bmRlZmluZWRcbiAgICAgIH0sIG9mZnNldCk7XG4gICAgfVxuXG4gICAgY2FzZSAnVmFyQmluYXJ5JzpcbiAgICBjYXNlICdCaW5hcnknOiB7XG4gICAgICBsZXQgZGF0YUxlbmd0aDtcbiAgICAgICh7IG9mZnNldCwgdmFsdWU6IGRhdGFMZW5ndGggfSA9IHJlYWRVSW50MTZMRShidWYsIG9mZnNldCkpO1xuXG4gICAgICByZXR1cm4gbmV3IFJlc3VsdCh7XG4gICAgICAgIHVzZXJUeXBlOiB1c2VyVHlwZSxcbiAgICAgICAgZmxhZ3M6IGZsYWdzLFxuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICBjb2xsYXRpb246IHVuZGVmaW5lZCxcbiAgICAgICAgcHJlY2lzaW9uOiB1bmRlZmluZWQsXG4gICAgICAgIHNjYWxlOiB1bmRlZmluZWQsXG4gICAgICAgIGRhdGFMZW5ndGg6IGRhdGFMZW5ndGgsXG4gICAgICAgIHNjaGVtYTogdW5kZWZpbmVkLFxuICAgICAgICB1ZHRJbmZvOiB1bmRlZmluZWRcbiAgICAgIH0sIG9mZnNldCk7XG4gICAgfVxuXG4gICAgY2FzZSAnSW1hZ2UnOiB7XG4gICAgICBsZXQgZGF0YUxlbmd0aDtcbiAgICAgICh7IG9mZnNldCwgdmFsdWU6IGRhdGFMZW5ndGggfSA9IHJlYWRVSW50MzJMRShidWYsIG9mZnNldCkpO1xuXG4gICAgICByZXR1cm4gbmV3IFJlc3VsdCh7XG4gICAgICAgIHVzZXJUeXBlOiB1c2VyVHlwZSxcbiAgICAgICAgZmxhZ3M6IGZsYWdzLFxuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICBjb2xsYXRpb246IHVuZGVmaW5lZCxcbiAgICAgICAgcHJlY2lzaW9uOiB1bmRlZmluZWQsXG4gICAgICAgIHNjYWxlOiB1bmRlZmluZWQsXG4gICAgICAgIGRhdGFMZW5ndGg6IGRhdGFMZW5ndGgsXG4gICAgICAgIHNjaGVtYTogdW5kZWZpbmVkLFxuICAgICAgICB1ZHRJbmZvOiB1bmRlZmluZWRcbiAgICAgIH0sIG9mZnNldCk7XG4gICAgfVxuXG4gICAgY2FzZSAnWG1sJzoge1xuICAgICAgbGV0IHNjaGVtYTtcbiAgICAgICh7IG9mZnNldCwgdmFsdWU6IHNjaGVtYSB9ID0gcmVhZFNjaGVtYShidWYsIG9mZnNldCkpO1xuXG4gICAgICByZXR1cm4gbmV3IFJlc3VsdCh7XG4gICAgICAgIHVzZXJUeXBlOiB1c2VyVHlwZSxcbiAgICAgICAgZmxhZ3M6IGZsYWdzLFxuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICBjb2xsYXRpb246IHVuZGVmaW5lZCxcbiAgICAgICAgcHJlY2lzaW9uOiB1bmRlZmluZWQsXG4gICAgICAgIHNjYWxlOiB1bmRlZmluZWQsXG4gICAgICAgIGRhdGFMZW5ndGg6IHVuZGVmaW5lZCxcbiAgICAgICAgc2NoZW1hOiBzY2hlbWEsXG4gICAgICAgIHVkdEluZm86IHVuZGVmaW5lZFxuICAgICAgfSwgb2Zmc2V0KTtcbiAgICB9XG5cbiAgICBjYXNlICdUaW1lJzpcbiAgICBjYXNlICdEYXRlVGltZTInOlxuICAgIGNhc2UgJ0RhdGVUaW1lT2Zmc2V0Jzoge1xuICAgICAgbGV0IHNjYWxlO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogc2NhbGUgfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gICAgICByZXR1cm4gbmV3IFJlc3VsdCh7XG4gICAgICAgIHVzZXJUeXBlOiB1c2VyVHlwZSxcbiAgICAgICAgZmxhZ3M6IGZsYWdzLFxuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICBjb2xsYXRpb246IHVuZGVmaW5lZCxcbiAgICAgICAgcHJlY2lzaW9uOiB1bmRlZmluZWQsXG4gICAgICAgIHNjYWxlOiBzY2FsZSxcbiAgICAgICAgZGF0YUxlbmd0aDogdW5kZWZpbmVkLFxuICAgICAgICBzY2hlbWE6IHVuZGVmaW5lZCxcbiAgICAgICAgdWR0SW5mbzogdW5kZWZpbmVkXG4gICAgICB9LCBvZmZzZXQpO1xuICAgIH1cblxuICAgIGNhc2UgJ051bWVyaWNOJzpcbiAgICBjYXNlICdEZWNpbWFsTic6IHtcbiAgICAgIGxldCBkYXRhTGVuZ3RoO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogZGF0YUxlbmd0aCB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIGxldCBwcmVjaXNpb247XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBwcmVjaXNpb24gfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gICAgICBsZXQgc2NhbGU7XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBzY2FsZSB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIHJldHVybiBuZXcgUmVzdWx0KHtcbiAgICAgICAgdXNlclR5cGU6IHVzZXJUeXBlLFxuICAgICAgICBmbGFnczogZmxhZ3MsXG4gICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgIGNvbGxhdGlvbjogdW5kZWZpbmVkLFxuICAgICAgICBwcmVjaXNpb246IHByZWNpc2lvbixcbiAgICAgICAgc2NhbGU6IHNjYWxlLFxuICAgICAgICBkYXRhTGVuZ3RoOiBkYXRhTGVuZ3RoLFxuICAgICAgICBzY2hlbWE6IHVuZGVmaW5lZCxcbiAgICAgICAgdWR0SW5mbzogdW5kZWZpbmVkXG4gICAgICB9LCBvZmZzZXQpO1xuICAgIH1cblxuICAgIGNhc2UgJ1VEVCc6IHtcbiAgICAgIGxldCB1ZHRJbmZvO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogdWR0SW5mbyB9ID0gcmVhZFVEVEluZm8oYnVmLCBvZmZzZXQpKTtcblxuICAgICAgcmV0dXJuIG5ldyBSZXN1bHQoe1xuICAgICAgICB1c2VyVHlwZTogdXNlclR5cGUsXG4gICAgICAgIGZsYWdzOiBmbGFncyxcbiAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgY29sbGF0aW9uOiB1bmRlZmluZWQsXG4gICAgICAgIHByZWNpc2lvbjogdW5kZWZpbmVkLFxuICAgICAgICBzY2FsZTogdW5kZWZpbmVkLFxuICAgICAgICBkYXRhTGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgICAgIHNjaGVtYTogdW5kZWZpbmVkLFxuICAgICAgICB1ZHRJbmZvOiB1ZHRJbmZvXG4gICAgICB9LCBvZmZzZXQpO1xuICAgIH1cblxuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3Ioc3ByaW50ZignVW5yZWNvZ25pc2VkIHR5cGUgJXMnLCB0eXBlLm5hbWUpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBtZXRhZGF0YVBhcnNlKHBhcnNlcjogUGFyc2VyLCBvcHRpb25zOiBQYXJzZXJPcHRpb25zLCBjYWxsYmFjazogKG1ldGFkYXRhOiBNZXRhZGF0YSkgPT4gdm9pZCkge1xuICAoYXN5bmMgKCkgPT4ge1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBsZXQgcmVzdWx0O1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmVzdWx0ID0gcmVhZE1ldGFkYXRhKHBhcnNlci5idWZmZXIsIHBhcnNlci5wb3NpdGlvbiwgb3B0aW9ucyk7XG4gICAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2YgTm90RW5vdWdoRGF0YUVycm9yKSB7XG4gICAgICAgICAgYXdhaXQgcGFyc2VyLndhaXRGb3JDaHVuaygpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuXG4gICAgICBwYXJzZXIucG9zaXRpb24gPSByZXN1bHQub2Zmc2V0O1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKHJlc3VsdC52YWx1ZSk7XG4gICAgfVxuICB9KSgpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBtZXRhZGF0YVBhcnNlO1xuZXhwb3J0IHsgcmVhZENvbGxhdGlvbiwgcmVhZE1ldGFkYXRhIH07XG5cbm1vZHVsZS5leHBvcnRzID0gbWV0YWRhdGFQYXJzZTtcbm1vZHVsZS5leHBvcnRzLnJlYWRDb2xsYXRpb24gPSByZWFkQ29sbGF0aW9uO1xubW9kdWxlLmV4cG9ydHMucmVhZE1ldGFkYXRhID0gcmVhZE1ldGFkYXRhO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLFVBQUEsR0FBQUMsT0FBQTtBQUVBLElBQUFDLFNBQUEsR0FBQUQsT0FBQTtBQUdBLElBQUFFLFVBQUEsR0FBQUYsT0FBQTtBQUVBLElBQUFHLFFBQUEsR0FBQUgsT0FBQTtBQWtEQSxTQUFTSSxhQUFhQSxDQUFDQyxHQUFXLEVBQUVDLE1BQWMsRUFBcUI7RUFDckVBLE1BQU0sR0FBRyxDQUFDQSxNQUFNO0VBRWhCLElBQUlELEdBQUcsQ0FBQ0UsTUFBTSxHQUFHRCxNQUFNLEdBQUcsQ0FBQyxFQUFFO0lBQzNCLE1BQU0sSUFBSUUsMkJBQWtCLENBQUNGLE1BQU0sR0FBRyxDQUFDLENBQUM7RUFDMUM7RUFFQSxNQUFNRyxTQUFTLEdBQUdDLG9C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
380
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29sbGF0aW9uIiwicmVxdWlyZSIsIl9kYXRhVHlwZSIsIl9zcHJpbnRmSnMiLCJfaGVscGVycyIsInJlYWRDb2xsYXRpb24iLCJidWYiLCJvZmZzZXQiLCJsZW5ndGgiLCJOb3RFbm91Z2hEYXRhRXJyb3IiLCJjb2xsYXRpb24iLCJDb2xsYXRpb24iLCJmcm9tQnVmZmVyIiwic2xpY2UiLCJSZXN1bHQiLCJyZWFkU2NoZW1hIiwic2NoZW1hUHJlc2VudCIsInZhbHVlIiwicmVhZFVJbnQ4IiwidW5kZWZpbmVkIiwiZGJuYW1lIiwicmVhZEJWYXJDaGFyIiwib3duaW5nU2NoZW1hIiwieG1sU2NoZW1hQ29sbGVjdGlvbiIsInJlYWRVc1ZhckNoYXIiLCJyZWFkVURUSW5mbyIsIm1heEJ5dGVTaXplIiwicmVhZFVJbnQxNkxFIiwidHlwZU5hbWUiLCJhc3NlbWJseU5hbWUiLCJyZWFkTWV0YWRhdGEiLCJvcHRpb25zIiwidXNlclR5cGUiLCJ0ZHNWZXJzaW9uIiwicmVhZFVJbnQzMkxFIiwiZmxhZ3MiLCJ0eXBlTnVtYmVyIiwidHlwZSIsIlRZUEUiLCJFcnJvciIsInNwcmludGYiLCJuYW1lIiwicHJlY2lzaW9uIiwic2NhbGUiLCJkYXRhTGVuZ3RoIiwic2NoZW1hIiwidWR0SW5mbyIsIm1ldGFkYXRhUGFyc2UiLCJwYXJzZXIiLCJjYWxsYmFjayIsInJlc3VsdCIsImJ1ZmZlciIsInBvc2l0aW9uIiwiZXJyIiwid2FpdEZvckNodW5rIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9tZXRhZGF0YS1wYXJzZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29sbGF0aW9uIH0gZnJvbSAnLi9jb2xsYXRpb24nO1xuaW1wb3J0IFBhcnNlciwgeyB0eXBlIFBhcnNlck9wdGlvbnMgfSBmcm9tICcuL3Rva2VuL3N0cmVhbS1wYXJzZXInO1xuaW1wb3J0IHsgVFlQRSwgdHlwZSBEYXRhVHlwZSB9IGZyb20gJy4vZGF0YS10eXBlJztcbmltcG9ydCB7IHR5cGUgQ3J5cHRvTWV0YWRhdGEgfSBmcm9tICcuL2Fsd2F5cy1lbmNyeXB0ZWQvdHlwZXMnO1xuXG5pbXBvcnQgeyBzcHJpbnRmIH0gZnJvbSAnc3ByaW50Zi1qcyc7XG5cbmltcG9ydCB7IFJlc3VsdCwgTm90RW5vdWdoRGF0YUVycm9yLCByZWFkVUludDgsIHJlYWRCVmFyQ2hhciwgcmVhZFVzVmFyQ2hhciwgcmVhZFVJbnQxNkxFLCByZWFkVUludDMyTEUgfSBmcm9tICcuL3Rva2VuL2hlbHBlcnMnO1xuXG5pbnRlcmZhY2UgWG1sU2NoZW1hIHtcbiAgZGJuYW1lOiBzdHJpbmc7XG4gIG93bmluZ1NjaGVtYTogc3RyaW5nO1xuICB4bWxTY2hlbWFDb2xsZWN0aW9uOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBVZHRJbmZvIHtcbiAgbWF4Qnl0ZVNpemU6IG51bWJlcjtcbiAgZGJuYW1lOiBzdHJpbmc7XG4gIG93bmluZ1NjaGVtYTogc3RyaW5nO1xuICB0eXBlTmFtZTogc3RyaW5nO1xuICBhc3NlbWJseU5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgQmFzZU1ldGFkYXRhID0ge1xuICB1c2VyVHlwZTogbnVtYmVyO1xuXG4gIGZsYWdzOiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgY29sdW1uJ3MgdHlwZSwgc3VjaCBhcyBWYXJDaGFyLCBJbnQgb3IgQmluYXJ5LlxuICAgKi9cbiAgdHlwZTogRGF0YVR5cGU7XG5cbiAgY29sbGF0aW9uOiBDb2xsYXRpb24gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBUaGUgcHJlY2lzaW9uLiBPbmx5IGFwcGxpY2FibGUgdG8gbnVtZXJpYyBhbmQgZGVjaW1hbC5cbiAgICovXG4gIHByZWNpc2lvbjogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgc2NhbGUuIE9ubHkgYXBwbGljYWJsZSB0byBudW1lcmljLCBkZWNpbWFsLCB0aW1lLCBkYXRldGltZTIgYW5kIGRhdGV0aW1lb2Zmc2V0LlxuICAgKi9cbiAgc2NhbGU6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIGxlbmd0aCwgZm9yIGNoYXIsIHZhcmNoYXIsIG52YXJjaGFyIGFuZCB2YXJiaW5hcnkuXG4gICAqL1xuICBkYXRhTGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgc2NoZW1hOiBYbWxTY2hlbWEgfCB1bmRlZmluZWQ7XG5cbiAgdWR0SW5mbzogVWR0SW5mbyB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IHR5cGUgTWV0YWRhdGEgPSB7XG4gIGNyeXB0b01ldGFkYXRhPzogQ3J5cHRvTWV0YWRhdGE7XG59ICYgQmFzZU1ldGFkYXRhO1xuXG5mdW5jdGlvbiByZWFkQ29sbGF0aW9uKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxDb2xsYXRpb24+IHtcbiAgb2Zmc2V0ID0gK29mZnNldDtcblxuICBpZiAoYnVmLmxlbmd0aCA8IG9mZnNldCArIDUpIHtcbiAgICB0aHJvdyBuZXcgTm90RW5vdWdoRGF0YUVycm9yKG9mZnNldCArIDUpO1xuICB9XG5cbiAgY29uc3QgY29sbGF0aW9uID0gQ29sbGF0aW9uLmZyb21CdWZmZXIoYnVmLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgNSkpO1xuICByZXR1cm4gbmV3IFJlc3VsdChjb2xsYXRpb24sIG9mZnNldCArIDUpO1xufVxuXG5mdW5jdGlvbiByZWFkU2NoZW1hKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxYbWxTY2hlbWEgfCB1bmRlZmluZWQ+IHtcbiAgb2Zmc2V0ID0gK29mZnNldDtcblxuICBsZXQgc2NoZW1hUHJlc2VudDtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogc2NoZW1hUHJlc2VudCB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgaWYgKHNjaGVtYVByZXNlbnQgIT09IDB4MDEpIHtcbiAgICByZXR1cm4gbmV3IFJlc3VsdCh1bmRlZmluZWQsIG9mZnNldCk7XG4gIH1cblxuICBsZXQgZGJuYW1lO1xuICAoeyBvZmZzZXQsIHZhbHVlOiBkYm5hbWUgfSA9IHJlYWRCVmFyQ2hhcihidWYsIG9mZnNldCkpO1xuXG4gIGxldCBvd25pbmdTY2hlbWE7XG4gICh7IG9mZnNldCwgdmFsdWU6IG93bmluZ1NjaGVtYSB9ID0gcmVhZEJWYXJDaGFyKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgbGV0IHhtbFNjaGVtYUNvbGxlY3Rpb247XG4gICh7IG9mZnNldCwgdmFsdWU6IHhtbFNjaGVtYUNvbGxlY3Rpb24gfSA9IHJlYWRVc1ZhckNoYXIoYnVmLCBvZmZzZXQpKTtcblxuICByZXR1cm4gbmV3IFJlc3VsdCh7IGRibmFtZSwgb3duaW5nU2NoZW1hLCB4bWxTY2hlbWFDb2xsZWN0aW9uIH0sIG9mZnNldCk7XG59XG5cbmZ1bmN0aW9uIHJlYWRVRFRJbmZvKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxVZHRJbmZvPiB7XG4gIGxldCBtYXhCeXRlU2l6ZTtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogbWF4Qnl0ZVNpemUgfSA9IHJlYWRVSW50MTZMRShidWYsIG9mZnNldCkpO1xuXG4gIGxldCBkYm5hbWU7XG4gICh7IG9mZnNldCwgdmFsdWU6IGRibmFtZSB9ID0gcmVhZEJWYXJDaGFyKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgbGV0IG93bmluZ1NjaGVtYTtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogb3duaW5nU2NoZW1hIH0gPSByZWFkQlZhckNoYXIoYnVmLCBvZmZzZXQpKTtcblxuICBsZXQgdHlwZU5hbWU7XG4gICh7IG9mZnNldCwgdmFsdWU6IHR5cGVOYW1lIH0gPSByZWFkQlZhckNoYXIoYnVmLCBvZmZzZXQpKTtcblxuICBsZXQgYXNzZW1ibHlOYW1lO1xuICAoeyBvZmZzZXQsIHZhbHVlOiBhc3NlbWJseU5hbWUgfSA9IHJlYWRVc1ZhckNoYXIoYnVmLCBvZmZzZXQpKTtcblxuICByZXR1cm4gbmV3IFJlc3VsdCh7XG4gICAgbWF4Qnl0ZVNpemU6IG1heEJ5dGVTaXplLFxuICAgIGRibmFtZTogZGJuYW1lLFxuICAgIG93bmluZ1NjaGVtYTogb3duaW5nU2NoZW1hLFxuICAgIHR5cGVOYW1lOiB0eXBlTmFtZSxcbiAgICBhc3NlbWJseU5hbWU6IGFzc2VtYmx5TmFtZVxuICB9LCBvZmZzZXQpO1xufVxuXG5mdW5jdGlvbiByZWFkTWV0YWRhdGEoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyLCBvcHRpb25zOiBQYXJzZXJPcHRpb25zKTogUmVzdWx0PE1ldGFkYXRhPiB7XG4gIGxldCB1c2VyVHlwZTtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogdXNlclR5cGUgfSA9IChvcHRpb25zLnRkc1ZlcnNpb24gPCAnN18yJyA/IHJlYWRVSW50MTZMRSA6IHJlYWRVSW50MzJMRSkoYnVmLCBvZmZzZXQpKTtcblxuICBsZXQgZmxhZ3M7XG4gICh7IG9mZnNldCwgdmFsdWU6IGZsYWdzIH0gPSByZWFkVUludDE2TEUoYnVmLCBvZmZzZXQpKTtcblxuICBsZXQgdHlwZU51bWJlcjtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogdHlwZU51bWJlciB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgY29uc3QgdHlwZTogRGF0YVR5cGUgPSBUWVBFW3R5cGVOdW1iZXJdO1xuICBpZiAoIXR5cGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3Ioc3ByaW50ZignVW5yZWNvZ25pc2VkIGRhdGEgdHlwZSAweCUwMlgnLCB0eXBlTnVtYmVyKSk7XG4gIH1cblxuICBzd2l0Y2ggKHR5cGUubmFtZSkge1xuICAgIGNhc2UgJ051bGwnOlxuICAgIGNhc2UgJ1RpbnlJbnQnOlxuICAgIGNhc2UgJ1NtYWxsSW50JzpcbiAgICBjYXNlICdJbnQnOlxuICAgIGNhc2UgJ0JpZ0ludCc6XG4gICAgY2FzZSAnUmVhbCc6XG4gICAgY2FzZSAnRmxvYXQnOlxuICAgIGNhc2UgJ1NtYWxsTW9uZXknOlxuICAgIGNhc2UgJ01vbmV5JzpcbiAgICBjYXNlICdCaXQnOlxuICAgIGNhc2UgJ1NtYWxsRGF0ZVRpbWUnOlxuICAgIGNhc2UgJ0RhdGVUaW1lJzpcbiAgICBjYXNlICdEYXRlJzpcbiAgICAgIHJldHVybiBuZXcgUmVzdWx0KHtcbiAgICAgICAgdXNlclR5cGU6IHVzZXJUeXBlLFxuICAgICAgICBmbGFnczogZmxhZ3MsXG4gICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgIGNvbGxhdGlvbjogdW5kZWZpbmVkLFxuICAgICAgICBwcmVjaXNpb246IHVuZGVmaW5lZCxcbiAgICAgICAgc2NhbGU6IHVuZGVmaW5lZCxcbiAgICAgICAgZGF0YUxlbmd0aDogdW5kZWZpbmVkLFxuICAgICAgICBzY2hlbWE6IHVuZGVmaW5lZCxcbiAgICAgICAgdWR0SW5mbzogdW5kZWZpbmVkXG4gICAgICB9LCBvZmZzZXQpO1xuXG4gICAgY2FzZSAnSW50Tic6XG4gICAgY2FzZSAnRmxvYXROJzpcbiAgICBjYXNlICdNb25leU4nOlxuICAgIGNhc2UgJ0JpdE4nOlxuICAgIGNhc2UgJ1VuaXF1ZUlkZW50aWZpZXInOlxuICAgIGNhc2UgJ0RhdGVUaW1lTic6IHtcbiAgICAgIGxldCBkYXRhTGVuZ3RoO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogZGF0YUxlbmd0aCB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIHJldHVybiBuZXcgUmVzdWx0KHtcbiAgICAgICAgdXNlclR5cGU6IHVzZXJUeXBlLFxuICAgICAgICBmbGFnczogZmxhZ3MsXG4gICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgIGNvbGxhdGlvbjogdW5kZWZpbmVkLFxuICAgICAgICBwcmVjaXNpb246IHVuZGVmaW5lZCxcbiAgICAgICAgc2NhbGU6IHVuZGVmaW5lZCxcbiAgICAgICAgZGF0YUxlbmd0aDogZGF0YUxlbmd0aCxcbiAgICAgICAgc2NoZW1hOiB1bmRlZmluZWQsXG4gICAgICAgIHVkdEluZm86IHVuZGVmaW5lZFxuICAgICAgfSwgb2Zmc2V0KTtcbiAgICB9XG5cbiAgICBjYXNlICdWYXJpYW50Jzoge1xuICAgICAgbGV0IGRhdGFMZW5ndGg7XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBkYXRhTGVuZ3RoIH0gPSByZWFkVUludDMyTEUoYnVmLCBvZmZzZXQpKTtcblxuICAgICAgcmV0dXJuIG5ldyBSZXN1bHQoe1xuICAgICAgICB1c2VyVHlwZTogdXNlclR5cGUsXG4gICAgICAgIGZsYWdzOiBmbGFncyxcbiAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgY29sbGF0aW9uOiB1bmRlZmluZWQsXG4gICAgICAgIHByZWNpc2lvbjogdW5kZWZpbmVkLFxuICAgICAgICBzY2FsZTogdW5kZWZpbmVkLFxuICAgICAgICBkYXRhTGVuZ3RoOiBkYXRhTGVuZ3RoLFxuICAgICAgICBzY2hlbWE6IHVuZGVmaW5lZCxcbiAgICAgICAgdWR0SW5mbzogdW5kZWZpbmVkXG4gICAgICB9LCBvZmZzZXQpO1xuICAgIH1cblxuICAgIGNhc2UgJ1ZhckNoYXInOlxuICAgIGNhc2UgJ0NoYXInOlxuICAgIGNhc2UgJ05WYXJDaGFyJzpcbiAgICBjYXNlICdOQ2hhcic6IHtcbiAgICAgIGxldCBkYXRhTGVuZ3RoO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogZGF0YUxlbmd0aCB9ID0gcmVhZFVJbnQxNkxFKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIGxldCBjb2xsYXRpb247XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBjb2xsYXRpb24gfSA9IHJlYWRDb2xsYXRpb24oYnVmLCBvZmZzZXQpKTtcblxuICAgICAgcmV0dXJuIG5ldyBSZXN1bHQoe1xuICAgICAgICB1c2VyVHlwZTogdXNlclR5cGUsXG4gICAgICAgIGZsYWdzOiBmbGFncyxcbiAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgY29sbGF0aW9uOiBjb2xsYXRpb24sXG4gICAgICAgIHByZWNpc2lvbjogdW5kZWZpbmVkLFxuICAgICAgICBzY2FsZTogdW5kZWZpbmVkLFxuICAgICAgICBkYXRhTGVuZ3RoOiBkYXRhTGVuZ3RoLFxuICAgICAgICBzY2hlbWE6IHVuZGVmaW5lZCxcbiAgICAgICAgdWR0SW5mbzogdW5kZWZpbmVkXG4gICAgICB9LCBvZmZzZXQpO1xuICAgIH1cblxuICAgIGNhc2UgJ1RleHQnOlxuICAgIGNhc2UgJ05UZXh0Jzoge1xuICAgICAgbGV0IGRhdGFMZW5ndGg7XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBkYXRhTGVuZ3RoIH0gPSByZWFkVUludDMyTEUoYnVmLCBvZmZzZXQpKTtcblxuICAgICAgbGV0IGNvbGxhdGlvbjtcbiAgICAgICh7IG9mZnNldCwgdmFsdWU6IGNvbGxhdGlvbiB9ID0gcmVhZENvbGxhdGlvbihidWYsIG9mZnNldCkpO1xuXG4gICAgICByZXR1cm4gbmV3IFJlc3VsdCh7XG4gICAgICAgIHVzZXJUeXBlOiB1c2VyVHlwZSxcbiAgICAgICAgZmxhZ3M6IGZsYWdzLFxuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICBjb2xsYXRpb246IGNvbGxhdGlvbixcbiAgICAgICAgcHJlY2lzaW9uOiB1bmRlZmluZWQsXG4gICAgICAgIHNjYWxlOiB1bmRlZmluZWQsXG4gICAgICAgIGRhdGFMZW5ndGg6IGRhdGFMZW5ndGgsXG4gICAgICAgIHNjaGVtYTogdW5kZWZpbmVkLFxuICAgICAgICB1ZHRJbmZvOiB1bmRlZmluZWRcbiAgICAgIH0sIG9mZnNldCk7XG4gICAgfVxuXG4gICAgY2FzZSAnVmFyQmluYXJ5JzpcbiAgICBjYXNlICdCaW5hcnknOiB7XG4gICAgICBsZXQgZGF0YUxlbmd0aDtcbiAgICAgICh7IG9mZnNldCwgdmFsdWU6IGRhdGFMZW5ndGggfSA9IHJlYWRVSW50MTZMRShidWYsIG9mZnNldCkpO1xuXG4gICAgICByZXR1cm4gbmV3IFJlc3VsdCh7XG4gICAgICAgIHVzZXJUeXBlOiB1c2VyVHlwZSxcbiAgICAgICAgZmxhZ3M6IGZsYWdzLFxuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICBjb2xsYXRpb246IHVuZGVmaW5lZCxcbiAgICAgICAgcHJlY2lzaW9uOiB1bmRlZmluZWQsXG4gICAgICAgIHNjYWxlOiB1bmRlZmluZWQsXG4gICAgICAgIGRhdGFMZW5ndGg6IGRhdGFMZW5ndGgsXG4gICAgICAgIHNjaGVtYTogdW5kZWZpbmVkLFxuICAgICAgICB1ZHRJbmZvOiB1bmRlZmluZWRcbiAgICAgIH0sIG9mZnNldCk7XG4gICAgfVxuXG4gICAgY2FzZSAnSW1hZ2UnOiB7XG4gICAgICBsZXQgZGF0YUxlbmd0aDtcbiAgICAgICh7IG9mZnNldCwgdmFsdWU6IGRhdGFMZW5ndGggfSA9IHJlYWRVSW50MzJMRShidWYsIG9mZnNldCkpO1xuXG4gICAgICByZXR1cm4gbmV3IFJlc3VsdCh7XG4gICAgICAgIHVzZXJUeXBlOiB1c2VyVHlwZSxcbiAgICAgICAgZmxhZ3M6IGZsYWdzLFxuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICBjb2xsYXRpb246IHVuZGVmaW5lZCxcbiAgICAgICAgcHJlY2lzaW9uOiB1bmRlZmluZWQsXG4gICAgICAgIHNjYWxlOiB1bmRlZmluZWQsXG4gICAgICAgIGRhdGFMZW5ndGg6IGRhdGFMZW5ndGgsXG4gICAgICAgIHNjaGVtYTogdW5kZWZpbmVkLFxuICAgICAgICB1ZHRJbmZvOiB1bmRlZmluZWRcbiAgICAgIH0sIG9mZnNldCk7XG4gICAgfVxuXG4gICAgY2FzZSAnWG1sJzoge1xuICAgICAgbGV0IHNjaGVtYTtcbiAgICAgICh7IG9mZnNldCwgdmFsdWU6IHNjaGVtYSB9ID0gcmVhZFNjaGVtYShidWYsIG9mZnNldCkpO1xuXG4gICAgICByZXR1cm4gbmV3IFJlc3VsdCh7XG4gICAgICAgIHVzZXJUeXBlOiB1c2VyVHlwZSxcbiAgICAgICAgZmxhZ3M6IGZsYWdzLFxuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICBjb2xsYXRpb246IHVuZGVmaW5lZCxcbiAgICAgICAgcHJlY2lzaW9uOiB1bmRlZmluZWQsXG4gICAgICAgIHNjYWxlOiB1bmRlZmluZWQsXG4gICAgICAgIGRhdGFMZW5ndGg6IHVuZGVmaW5lZCxcbiAgICAgICAgc2NoZW1hOiBzY2hlbWEsXG4gICAgICAgIHVkdEluZm86IHVuZGVmaW5lZFxuICAgICAgfSwgb2Zmc2V0KTtcbiAgICB9XG5cbiAgICBjYXNlICdUaW1lJzpcbiAgICBjYXNlICdEYXRlVGltZTInOlxuICAgIGNhc2UgJ0RhdGVUaW1lT2Zmc2V0Jzoge1xuICAgICAgbGV0IHNjYWxlO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogc2NhbGUgfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gICAgICByZXR1cm4gbmV3IFJlc3VsdCh7XG4gICAgICAgIHVzZXJUeXBlOiB1c2VyVHlwZSxcbiAgICAgICAgZmxhZ3M6IGZsYWdzLFxuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICBjb2xsYXRpb246IHVuZGVmaW5lZCxcbiAgICAgICAgcHJlY2lzaW9uOiB1bmRlZmluZWQsXG4gICAgICAgIHNjYWxlOiBzY2FsZSxcbiAgICAgICAgZGF0YUxlbmd0aDogdW5kZWZpbmVkLFxuICAgICAgICBzY2hlbWE6IHVuZGVmaW5lZCxcbiAgICAgICAgdWR0SW5mbzogdW5kZWZpbmVkXG4gICAgICB9LCBvZmZzZXQpO1xuICAgIH1cblxuICAgIGNhc2UgJ051bWVyaWNOJzpcbiAgICBjYXNlICdEZWNpbWFsTic6IHtcbiAgICAgIGxldCBkYXRhTGVuZ3RoO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogZGF0YUxlbmd0aCB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIGxldCBwcmVjaXNpb247XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBwcmVjaXNpb24gfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gICAgICBsZXQgc2NhbGU7XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBzY2FsZSB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIHJldHVybiBuZXcgUmVzdWx0KHtcbiAgICAgICAgdXNlclR5cGU6IHVzZXJUeXBlLFxuICAgICAgICBmbGFnczogZmxhZ3MsXG4gICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgIGNvbGxhdGlvbjogdW5kZWZpbmVkLFxuICAgICAgICBwcmVjaXNpb246IHByZWNpc2lvbixcbiAgICAgICAgc2NhbGU6IHNjYWxlLFxuICAgICAgICBkYXRhTGVuZ3RoOiBkYXRhTGVuZ3RoLFxuICAgICAgICBzY2hlbWE6IHVuZGVmaW5lZCxcbiAgICAgICAgdWR0SW5mbzogdW5kZWZpbmVkXG4gICAgICB9LCBvZmZzZXQpO1xuICAgIH1cblxuICAgIGNhc2UgJ1VEVCc6IHtcbiAgICAgIGxldCB1ZHRJbmZvO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogdWR0SW5mbyB9ID0gcmVhZFVEVEluZm8oYnVmLCBvZmZzZXQpKTtcblxuICAgICAgcmV0dXJuIG5ldyBSZXN1bHQoe1xuICAgICAgICB1c2VyVHlwZTogdXNlclR5cGUsXG4gICAgICAgIGZsYWdzOiBmbGFncyxcbiAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgY29sbGF0aW9uOiB1bmRlZmluZWQsXG4gICAgICAgIHByZWNpc2lvbjogdW5kZWZpbmVkLFxuICAgICAgICBzY2FsZTogdW5kZWZpbmVkLFxuICAgICAgICBkYXRhTGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgICAgIHNjaGVtYTogdW5kZWZpbmVkLFxuICAgICAgICB1ZHRJbmZvOiB1ZHRJbmZvXG4gICAgICB9LCBvZmZzZXQpO1xuICAgIH1cblxuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3Ioc3ByaW50ZignVW5yZWNvZ25pc2VkIHR5cGUgJXMnLCB0eXBlLm5hbWUpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBtZXRhZGF0YVBhcnNlKHBhcnNlcjogUGFyc2VyLCBvcHRpb25zOiBQYXJzZXJPcHRpb25zLCBjYWxsYmFjazogKG1ldGFkYXRhOiBNZXRhZGF0YSkgPT4gdm9pZCkge1xuICAoYXN5bmMgKCkgPT4ge1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBsZXQgcmVzdWx0O1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmVzdWx0ID0gcmVhZE1ldGFkYXRhKHBhcnNlci5idWZmZXIsIHBhcnNlci5wb3NpdGlvbiwgb3B0aW9ucyk7XG4gICAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2YgTm90RW5vdWdoRGF0YUVycm9yKSB7XG4gICAgICAgICAgYXdhaXQgcGFyc2VyLndhaXRGb3JDaHVuaygpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuXG4gICAgICBwYXJzZXIucG9zaXRpb24gPSByZXN1bHQub2Zmc2V0O1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKHJlc3VsdC52YWx1ZSk7XG4gICAgfVxuICB9KSgpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBtZXRhZGF0YVBhcnNlO1xuZXhwb3J0IHsgcmVhZENvbGxhdGlvbiwgcmVhZE1ldGFkYXRhIH07XG5cbm1vZHVsZS5leHBvcnRzID0gbWV0YWRhdGFQYXJzZTtcbm1vZHVsZS5leHBvcnRzLnJlYWRDb2xsYXRpb24gPSByZWFkQ29sbGF0aW9uO1xubW9kdWxlLmV4cG9ydHMucmVhZE1ldGFkYXRhID0gcmVhZE1ldGFkYXRhO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLFVBQUEsR0FBQUMsT0FBQTtBQUVBLElBQUFDLFNBQUEsR0FBQUQsT0FBQTtBQUdBLElBQUFFLFVBQUEsR0FBQUYsT0FBQTtBQUVBLElBQUFHLFFBQUEsR0FBQUgsT0FBQTtBQWtEQSxTQUFTSSxhQUFhQSxDQUFDQyxHQUFXLEVBQUVDLE1BQWMsRUFBcUI7RUFDckVBLE1BQU0sR0FBRyxDQUFDQSxNQUFNO0VBRWhCLElBQUlELEdBQUcsQ0FBQ0UsTUFBTSxHQUFHRCxNQUFNLEdBQUcsQ0FBQyxFQUFFO0lBQzNCLE1BQU0sSUFBSUUsMkJBQWtCLENBQUNGLE1BQU0sR0FBRyxDQUFDLENBQUM7RUFDMUM7RUFFQSxNQUFNRyxTQUFTLEdBQUdDLG9C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
@@ -1 +1 @@
1
- {"version":3,"file":"metadata-parser.js","names":["_collation","require","_dataType","_sprintfJs","_helpers","readCollation","buf","offset","length","NotEnoughDataError","collation","Collation","fromBuffer","slice","Result","readSchema","schemaPresent","value","readUInt8","undefined","dbname","readBVarChar","owningSchema","xmlSchemaCollection","readUsVarChar","readUDTInfo","maxByteSize","readUInt16LE","typeName","assemblyName","readMetadata","options","userType","tdsVersion","readUInt32LE","flags","typeNumber","type","TYPE","Error","sprintf","name","precision","scale","dataLength","schema","udtInfo","metadataParse","parser","callback","result","buffer","position","err","waitForChunk","_default","exports","default","module"],"sources":["../src/metadata-parser.ts"],"sourcesContent":["import { Collation } from './collation';\nimport Parser, { type ParserOptions } from './token/stream-parser';\nimport { TYPE, type DataType } from './data-type';\nimport { type CryptoMetadata } from './always-encrypted/types';\n\nimport { sprintf } from 'sprintf-js';\n\nimport { Result, NotEnoughDataError, readUInt8, readBVarChar, readUsVarChar, readUInt16LE, readUInt32LE } from './token/helpers';\n\ninterface XmlSchema {\n dbname: string;\n owningSchema: string;\n xmlSchemaCollection: string;\n}\n\ninterface UdtInfo {\n maxByteSize: number;\n dbname: string;\n owningSchema: string;\n typeName: string;\n assemblyName: string;\n}\n\nexport type BaseMetadata = {\n userType: number;\n\n flags: number;\n /**\n * The column's type, such as VarChar, Int or Binary.\n */\n type: DataType;\n\n collation: Collation | undefined;\n /**\n * The precision. Only applicable to numeric and decimal.\n */\n precision: number | undefined;\n\n /**\n * The scale. Only applicable to numeric, decimal, time, datetime2 and datetimeoffset.\n */\n scale: number | undefined;\n\n /**\n * The length, for char, varchar, nvarchar and varbinary.\n */\n dataLength: number | undefined;\n\n schema: XmlSchema | undefined;\n\n udtInfo: UdtInfo | undefined;\n}\n\nexport type Metadata = {\n cryptoMetadata?: CryptoMetadata;\n} & BaseMetadata;\n\nfunction readCollation(buf: Buffer, offset: number): Result<Collation> {\n offset = +offset;\n\n if (buf.length < offset + 5) {\n throw new NotEnoughDataError(offset + 5);\n }\n\n const collation = Collation.fromBuffer(buf.slice(offset, offset + 5));\n return new Result(collation, offset + 5);\n}\n\nfunction readSchema(buf: Buffer, offset: number): Result<XmlSchema | undefined> {\n offset = +offset;\n\n let schemaPresent;\n ({ offset, value: schemaPresent } = readUInt8(buf, offset));\n\n if (schemaPresent !== 0x01) {\n return new Result(undefined, offset);\n }\n\n let dbname;\n ({ offset, value: dbname } = readBVarChar(buf, offset));\n\n let owningSchema;\n ({ offset, value: owningSchema } = readBVarChar(buf, offset));\n\n let xmlSchemaCollection;\n ({ offset, value: xmlSchemaCollection } = readUsVarChar(buf, offset));\n\n return new Result({ dbname, owningSchema, xmlSchemaCollection }, offset);\n}\n\nfunction readUDTInfo(buf: Buffer, offset: number): Result<UdtInfo> {\n let maxByteSize;\n ({ offset, value: maxByteSize } = readUInt16LE(buf, offset));\n\n let dbname;\n ({ offset, value: dbname } = readBVarChar(buf, offset));\n\n let owningSchema;\n ({ offset, value: owningSchema } = readBVarChar(buf, offset));\n\n let typeName;\n ({ offset, value: typeName } = readBVarChar(buf, offset));\n\n let assemblyName;\n ({ offset, value: assemblyName } = readUsVarChar(buf, offset));\n\n return new Result({\n maxByteSize: maxByteSize,\n dbname: dbname,\n owningSchema: owningSchema,\n typeName: typeName,\n assemblyName: assemblyName\n }, offset);\n}\n\nfunction readMetadata(buf: Buffer, offset: number, options: ParserOptions): Result<Metadata> {\n let userType;\n ({ offset, value: userType } = (options.tdsVersion < '7_2' ? readUInt16LE : readUInt32LE)(buf, offset));\n\n let flags;\n ({ offset, value: flags } = readUInt16LE(buf, offset));\n\n let typeNumber;\n ({ offset, value: typeNumber } = readUInt8(buf, offset));\n\n const type: DataType = TYPE[typeNumber];\n if (!type) {\n throw new Error(sprintf('Unrecognised data type 0x%02X', typeNumber));\n }\n\n switch (type.name) {\n case 'Null':\n case 'TinyInt':\n case 'SmallInt':\n case 'Int':\n case 'BigInt':\n case 'Real':\n case 'Float':\n case 'SmallMoney':\n case 'Money':\n case 'Bit':\n case 'SmallDateTime':\n case 'DateTime':\n case 'Date':\n return new Result({\n userType: userType,\n flags: flags,\n type: type,\n collation: undefined,\n precision: undefined,\n scale: undefined,\n dataLength: undefined,\n schema: undefined,\n udtInfo: undefined\n }, offset);\n\n case 'IntN':\n case 'FloatN':\n case 'MoneyN':\n case 'BitN':\n case 'UniqueIdentifier':\n case 'DateTimeN': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt8(buf, offset));\n\n return new Result({\n userType: userType,\n flags: flags,\n type: type,\n collation: undefined,\n precision: undefined,\n scale: undefined,\n dataLength: dataLength,\n schema: undefined,\n udtInfo: undefined\n }, offset);\n }\n\n case 'Variant': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt32LE(buf, offset));\n\n return new Result({\n userType: userType,\n flags: flags,\n type: type,\n collation: undefined,\n precision: undefined,\n scale: undefined,\n dataLength: dataLength,\n schema: undefined,\n udtInfo: undefined\n }, offset);\n }\n\n case 'VarChar':\n case 'Char':\n case 'NVarChar':\n case 'NChar': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt16LE(buf, offset));\n\n let collation;\n ({ offset, value: collation } = readCollation(buf, offset));\n\n return new Result({\n userType: userType,\n flags: flags,\n type: type,\n collation: collation,\n precision: undefined,\n scale: undefined,\n dataLength: dataLength,\n schema: undefined,\n udtInfo: undefined\n }, offset);\n }\n\n case 'Text':\n case 'NText': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt32LE(buf, offset));\n\n let collation;\n ({ offset, value: collation } = readCollation(buf, offset));\n\n return new Result({\n userType: userType,\n flags: flags,\n type: type,\n collation: collation,\n precision: undefined,\n scale: undefined,\n dataLength: dataLength,\n schema: undefined,\n udtInfo: undefined\n }, offset);\n }\n\n case 'VarBinary':\n case 'Binary': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt16LE(buf, offset));\n\n return new Result({\n userType: userType,\n flags: flags,\n type: type,\n collation: undefined,\n precision: undefined,\n scale: undefined,\n dataLength: dataLength,\n schema: undefined,\n udtInfo: undefined\n }, offset);\n }\n\n case 'Image': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt32LE(buf, offset));\n\n return new Result({\n userType: userType,\n flags: flags,\n type: type,\n collation: undefined,\n precision: undefined,\n scale: undefined,\n dataLength: dataLength,\n schema: undefined,\n udtInfo: undefined\n }, offset);\n }\n\n case 'Xml': {\n let schema;\n ({ offset, value: schema } = readSchema(buf, offset));\n\n return new Result({\n userType: userType,\n flags: flags,\n type: type,\n collation: undefined,\n precision: undefined,\n scale: undefined,\n dataLength: undefined,\n schema: schema,\n udtInfo: undefined\n }, offset);\n }\n\n case 'Time':\n case 'DateTime2':\n case 'DateTimeOffset': {\n let scale;\n ({ offset, value: scale } = readUInt8(buf, offset));\n\n return new Result({\n userType: userType,\n flags: flags,\n type: type,\n collation: undefined,\n precision: undefined,\n scale: scale,\n dataLength: undefined,\n schema: undefined,\n udtInfo: undefined\n }, offset);\n }\n\n case 'NumericN':\n case 'DecimalN': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt8(buf, offset));\n\n let precision;\n ({ offset, value: precision } = readUInt8(buf, offset));\n\n let scale;\n ({ offset, value: scale } = readUInt8(buf, offset));\n\n return new Result({\n userType: userType,\n flags: flags,\n type: type,\n collation: undefined,\n precision: precision,\n scale: scale,\n dataLength: dataLength,\n schema: undefined,\n udtInfo: undefined\n }, offset);\n }\n\n case 'UDT': {\n let udtInfo;\n ({ offset, value: udtInfo } = readUDTInfo(buf, offset));\n\n return new Result({\n userType: userType,\n flags: flags,\n type: type,\n collation: undefined,\n precision: undefined,\n scale: undefined,\n dataLength: undefined,\n schema: undefined,\n udtInfo: udtInfo\n }, offset);\n }\n\n default:\n throw new Error(sprintf('Unrecognised type %s', type.name));\n }\n}\n\nfunction metadataParse(parser: Parser, options: ParserOptions, callback: (metadata: Metadata) => void) {\n (async () => {\n while (true) {\n let result;\n try {\n result = readMetadata(parser.buffer, parser.position, options);\n } catch (err: any) {\n if (err instanceof NotEnoughDataError) {\n await parser.waitForChunk();\n continue;\n }\n\n throw err;\n }\n\n parser.position = result.offset;\n return callback(result.value);\n }\n })();\n}\n\nexport default metadataParse;\nexport { readCollation, readMetadata };\n\nmodule.exports = metadataParse;\nmodule.exports.readCollation = readCollation;\nmodule.exports.readMetadata = readMetadata;\n"],"mappings":"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"}
1
+ {"version":3,"file":"metadata-parser.js","names":["_collation","require","_dataType","_sprintfJs","_helpers","readCollation","buf","offset","length","NotEnoughDataError","collation","Collation","fromBuffer","slice","Result","readSchema","schemaPresent","value","readUInt8","undefined","dbname","readBVarChar","owningSchema","xmlSchemaCollection","readUsVarChar","readUDTInfo","maxByteSize","readUInt16LE","typeName","assemblyName","readMetadata","options","userType","tdsVersion","readUInt32LE","flags","typeNumber","type","TYPE","Error","sprintf","name","precision","scale","dataLength","schema","udtInfo","metadataParse","parser","callback","result","buffer","position","err","waitForChunk","_default","exports","default","module"],"sources":["../src/metadata-parser.ts"],"sourcesContent":["import { Collation } from './collation';\nimport Parser, { type ParserOptions } from './token/stream-parser';\nimport { TYPE, type DataType } from './data-type';\nimport { type CryptoMetadata } from './always-encrypted/types';\n\nimport { sprintf } from 'sprintf-js';\n\nimport { Result, NotEnoughDataError, readUInt8, readBVarChar, readUsVarChar, readUInt16LE, readUInt32LE } from './token/helpers';\n\ninterface XmlSchema {\n dbname: string;\n owningSchema: string;\n xmlSchemaCollection: string;\n}\n\ninterface UdtInfo {\n maxByteSize: number;\n dbname: string;\n owningSchema: string;\n typeName: string;\n assemblyName: string;\n}\n\nexport type BaseMetadata = {\n userType: number;\n\n flags: number;\n /**\n * The column's type, such as VarChar, Int or Binary.\n */\n type: DataType;\n\n collation: Collation | undefined;\n /**\n * The precision. Only applicable to numeric and decimal.\n */\n precision: number | undefined;\n\n /**\n * The scale. Only applicable to numeric, decimal, time, datetime2 and datetimeoffset.\n */\n scale: number | undefined;\n\n /**\n * The length, for char, varchar, nvarchar and varbinary.\n */\n dataLength: number | undefined;\n\n schema: XmlSchema | undefined;\n\n udtInfo: UdtInfo | undefined;\n}\n\nexport type Metadata = {\n cryptoMetadata?: CryptoMetadata;\n} & BaseMetadata;\n\nfunction readCollation(buf: Buffer, offset: number): Result<Collation> {\n offset = +offset;\n\n if (buf.length < offset + 5) {\n throw new NotEnoughDataError(offset + 5);\n }\n\n const collation = Collation.fromBuffer(buf.slice(offset, offset + 5));\n return new Result(collation, offset + 5);\n}\n\nfunction readSchema(buf: Buffer, offset: number): Result<XmlSchema | undefined> {\n offset = +offset;\n\n let schemaPresent;\n ({ offset, value: schemaPresent } = readUInt8(buf, offset));\n\n if (schemaPresent !== 0x01) {\n return new Result(undefined, offset);\n }\n\n let dbname;\n ({ offset, value: dbname } = readBVarChar(buf, offset));\n\n let owningSchema;\n ({ offset, value: owningSchema } = readBVarChar(buf, offset));\n\n let xmlSchemaCollection;\n ({ offset, value: xmlSchemaCollection } = readUsVarChar(buf, offset));\n\n return new Result({ dbname, owningSchema, xmlSchemaCollection }, offset);\n}\n\nfunction readUDTInfo(buf: Buffer, offset: number): Result<UdtInfo> {\n let maxByteSize;\n ({ offset, value: maxByteSize } = readUInt16LE(buf, offset));\n\n let dbname;\n ({ offset, value: dbname } = readBVarChar(buf, offset));\n\n let owningSchema;\n ({ offset, value: owningSchema } = readBVarChar(buf, offset));\n\n let typeName;\n ({ offset, value: typeName } = readBVarChar(buf, offset));\n\n let assemblyName;\n ({ offset, value: assemblyName } = readUsVarChar(buf, offset));\n\n return new Result({\n maxByteSize: maxByteSize,\n dbname: dbname,\n owningSchema: owningSchema,\n typeName: typeName,\n assemblyName: assemblyName\n }, offset);\n}\n\nfunction readMetadata(buf: Buffer, offset: number, options: ParserOptions): Result<Metadata> {\n let userType;\n ({ offset, value: userType } = (options.tdsVersion < '7_2' ? readUInt16LE : readUInt32LE)(buf, offset));\n\n let flags;\n ({ offset, value: flags } = readUInt16LE(buf, offset));\n\n let typeNumber;\n ({ offset, value: typeNumber } = readUInt8(buf, offset));\n\n const type: DataType = TYPE[typeNumber];\n if (!type) {\n throw new Error(sprintf('Unrecognised data type 0x%02X', typeNumber));\n }\n\n switch (type.name) {\n case 'Null':\n case 'TinyInt':\n case 'SmallInt':\n case 'Int':\n case 'BigInt':\n case 'Real':\n case 'Float':\n case 'SmallMoney':\n case 'Money':\n case 'Bit':\n case 'SmallDateTime':\n case 'DateTime':\n case 'Date':\n return new Result({\n userType: userType,\n flags: flags,\n type: type,\n collation: undefined,\n precision: undefined,\n scale: undefined,\n dataLength: undefined,\n schema: undefined,\n udtInfo: undefined\n }, offset);\n\n case 'IntN':\n case 'FloatN':\n case 'MoneyN':\n case 'BitN':\n case 'UniqueIdentifier':\n case 'DateTimeN': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt8(buf, offset));\n\n return new Result({\n userType: userType,\n flags: flags,\n type: type,\n collation: undefined,\n precision: undefined,\n scale: undefined,\n dataLength: dataLength,\n schema: undefined,\n udtInfo: undefined\n }, offset);\n }\n\n case 'Variant': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt32LE(buf, offset));\n\n return new Result({\n userType: userType,\n flags: flags,\n type: type,\n collation: undefined,\n precision: undefined,\n scale: undefined,\n dataLength: dataLength,\n schema: undefined,\n udtInfo: undefined\n }, offset);\n }\n\n case 'VarChar':\n case 'Char':\n case 'NVarChar':\n case 'NChar': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt16LE(buf, offset));\n\n let collation;\n ({ offset, value: collation } = readCollation(buf, offset));\n\n return new Result({\n userType: userType,\n flags: flags,\n type: type,\n collation: collation,\n precision: undefined,\n scale: undefined,\n dataLength: dataLength,\n schema: undefined,\n udtInfo: undefined\n }, offset);\n }\n\n case 'Text':\n case 'NText': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt32LE(buf, offset));\n\n let collation;\n ({ offset, value: collation } = readCollation(buf, offset));\n\n return new Result({\n userType: userType,\n flags: flags,\n type: type,\n collation: collation,\n precision: undefined,\n scale: undefined,\n dataLength: dataLength,\n schema: undefined,\n udtInfo: undefined\n }, offset);\n }\n\n case 'VarBinary':\n case 'Binary': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt16LE(buf, offset));\n\n return new Result({\n userType: userType,\n flags: flags,\n type: type,\n collation: undefined,\n precision: undefined,\n scale: undefined,\n dataLength: dataLength,\n schema: undefined,\n udtInfo: undefined\n }, offset);\n }\n\n case 'Image': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt32LE(buf, offset));\n\n return new Result({\n userType: userType,\n flags: flags,\n type: type,\n collation: undefined,\n precision: undefined,\n scale: undefined,\n dataLength: dataLength,\n schema: undefined,\n udtInfo: undefined\n }, offset);\n }\n\n case 'Xml': {\n let schema;\n ({ offset, value: schema } = readSchema(buf, offset));\n\n return new Result({\n userType: userType,\n flags: flags,\n type: type,\n collation: undefined,\n precision: undefined,\n scale: undefined,\n dataLength: undefined,\n schema: schema,\n udtInfo: undefined\n }, offset);\n }\n\n case 'Time':\n case 'DateTime2':\n case 'DateTimeOffset': {\n let scale;\n ({ offset, value: scale } = readUInt8(buf, offset));\n\n return new Result({\n userType: userType,\n flags: flags,\n type: type,\n collation: undefined,\n precision: undefined,\n scale: scale,\n dataLength: undefined,\n schema: undefined,\n udtInfo: undefined\n }, offset);\n }\n\n case 'NumericN':\n case 'DecimalN': {\n let dataLength;\n ({ offset, value: dataLength } = readUInt8(buf, offset));\n\n let precision;\n ({ offset, value: precision } = readUInt8(buf, offset));\n\n let scale;\n ({ offset, value: scale } = readUInt8(buf, offset));\n\n return new Result({\n userType: userType,\n flags: flags,\n type: type,\n collation: undefined,\n precision: precision,\n scale: scale,\n dataLength: dataLength,\n schema: undefined,\n udtInfo: undefined\n }, offset);\n }\n\n case 'UDT': {\n let udtInfo;\n ({ offset, value: udtInfo } = readUDTInfo(buf, offset));\n\n return new Result({\n userType: userType,\n flags: flags,\n type: type,\n collation: undefined,\n precision: undefined,\n scale: undefined,\n dataLength: undefined,\n schema: undefined,\n udtInfo: udtInfo\n }, offset);\n }\n\n default:\n throw new Error(sprintf('Unrecognised type %s', type.name));\n }\n}\n\nfunction metadataParse(parser: Parser, options: ParserOptions, callback: (metadata: Metadata) => void) {\n (async () => {\n while (true) {\n let result;\n try {\n result = readMetadata(parser.buffer, parser.position, options);\n } catch (err: any) {\n if (err instanceof NotEnoughDataError) {\n await parser.waitForChunk();\n continue;\n }\n\n throw err;\n }\n\n parser.position = result.offset;\n return callback(result.value);\n }\n })();\n}\n\nexport default metadataParse;\nexport { readCollation, readMetadata };\n\nmodule.exports = metadataParse;\nmodule.exports.readCollation = readCollation;\nmodule.exports.readMetadata = readMetadata;\n"],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /// <reference types="node" />
2
+ interface Options {
3
+ domain: string;
4
+ userName: string;
5
+ password: string;
6
+ ntlmpacket: {
7
+ target: Buffer;
8
+ nonce: Buffer;
9
+ };
10
+ }
11
+ declare class NTLMResponsePayload {
12
+ data: Buffer;
13
+ constructor(loginData: Options);
14
+ toString(indent?: string): string;
15
+ createResponse(challenge: Options): Buffer;
16
+ createClientNonce(): Buffer;
17
+ ntlmv2Response(domain: string, user: string, password: string, serverNonce: Buffer, targetInfo: Buffer, clientNonce: Buffer, mytime: number): Buffer;
18
+ createTimestamp(time: number): Buffer;
19
+ lmv2Response(domain: string, user: string, password: string, serverNonce: Buffer, clientNonce: Buffer): Buffer;
20
+ ntv2Hash(domain: string, user: string, password: string): Buffer;
21
+ ntHash(text: string): Buffer;
22
+ hmacMD5(data: Buffer, key: Buffer): Buffer;
23
+ }
24
+ export default NTLMResponsePayload;
@@ -7,8 +7,8 @@ exports.default = void 0;
7
7
  var _writableTrackingBuffer = _interopRequireDefault(require("./tracking-buffer/writable-tracking-buffer"));
8
8
  var crypto = _interopRequireWildcard(require("crypto"));
9
9
  var _jsMd = _interopRequireDefault(require("js-md4"));
10
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
11
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
10
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
11
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
12
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
13
  class NTLMResponsePayload {
14
14
  constructor(loginData) {
@@ -131,7 +131,6 @@ class NTLMResponsePayload {
131
131
  return crypto.createHmac('MD5', key).update(data).digest();
132
132
  }
133
133
  }
134
- var _default = NTLMResponsePayload;
135
- exports.default = _default;
134
+ var _default = exports.default = NTLMResponsePayload;
136
135
  module.exports = NTLMResponsePayload;
137
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfd3JpdGFibGVUcmFja2luZ0J1ZmZlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiY3J5cHRvIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfanNNZCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJOVExNUmVzcG9uc2VQYXlsb2FkIiwiY29uc3RydWN0b3IiLCJsb2dpbkRhdGEiLCJkYXRhIiwiY3JlYXRlUmVzcG9uc2UiLCJ0b1N0cmluZyIsImluZGVudCIsImNoYWxsZW5nZSIsImNsaWVudF9ub25jZSIsImNyZWF0ZUNsaWVudE5vbmNlIiwibG12MmxlbiIsIm50bG12MmxlbiIsImRvbWFpbiIsInVzZXJuYW1lIiwidXNlck5hbWUiLCJwYXNzd29yZCIsIm50bG1EYXRhIiwibnRsbXBhY2tldCIsInNlcnZlcl9kYXRhIiwidGFyZ2V0Iiwic2VydmVyX25vbmNlIiwibm9uY2UiLCJidWZmZXJMZW5ndGgiLCJsZW5ndGgiLCJXcml0YWJsZVRyYWNraW5nQnVmZmVyIiwicG9zaXRpb24iLCJ3cml0ZVN0cmluZyIsIndyaXRlVUludDMyTEUiLCJiYXNlSWR4IiwiZG5JZHgiLCJ1bklkeCIsImwySWR4IiwibnRJZHgiLCJ3cml0ZVVJbnQxNkxFIiwibG12MkRhdGEiLCJsbXYyUmVzcG9uc2UiLCJjb3B5RnJvbSIsImdlblRpbWUiLCJEYXRlIiwiZ2V0VGltZSIsIm50bG1EYXRhQnVmZmVyIiwibnRsbXYyUmVzcG9uc2UiLCJ0aW1lc3RhbXAiLCJjcmVhdGVUaW1lc3RhbXAiLCJCdWZmZXIiLCJhbGxvYyIsIm5pZHgiLCJ3cml0ZVVJbnQ4IiwiTWF0aCIsImNlaWwiLCJyYW5kb20iLCJ1c2VyIiwic2VydmVyTm9uY2UiLCJ0YXJnZXRJbmZvIiwiY2xpZW50Tm9uY2UiLCJteXRpbWUiLCJoYXNoIiwibnR2Mkhhc2giLCJkYXRhTGVuZ3RoIiwiY29weSIsImhtYWNNRDUiLCJ0aW1lIiwidGVudGhzT2ZBTWljcm9zZWNvbmQiLCJCaWdJbnQiLCJsbyIsIk51bWJlciIsImhpIiwicmVzdWx0IiwibmV3aGFzaCIsInJlc3BvbnNlIiwibnRIYXNoIiwiaWRlbnRpdHkiLCJmcm9tIiwidG9VcHBlckNhc2UiLCJ0ZXh0IiwidW5pY29kZVN0cmluZyIsIm1kNCIsImFycmF5QnVmZmVyIiwiY3JlYXRlSG1hYyIsInVwZGF0ZSIsImRpZ2VzdCIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9udGxtLXBheWxvYWQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFdyaXRhYmxlVHJhY2tpbmdCdWZmZXIgZnJvbSAnLi90cmFja2luZy1idWZmZXIvd3JpdGFibGUtdHJhY2tpbmctYnVmZmVyJztcbmltcG9ydCAqIGFzIGNyeXB0byBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IG1kNCBmcm9tICdqcy1tZDQnO1xuXG5pbnRlcmZhY2UgT3B0aW9ucyB7XG4gIGRvbWFpbjogc3RyaW5nO1xuICB1c2VyTmFtZTogc3RyaW5nO1xuICBwYXNzd29yZDogc3RyaW5nO1xuICBudGxtcGFja2V0OiB7XG4gICAgdGFyZ2V0OiBCdWZmZXI7XG4gICAgbm9uY2U6IEJ1ZmZlcjtcbiAgfTtcbn1cblxuY2xhc3MgTlRMTVJlc3BvbnNlUGF5bG9hZCB7XG4gIGRlY2xhcmUgZGF0YTogQnVmZmVyO1xuXG4gIGNvbnN0cnVjdG9yKGxvZ2luRGF0YTogT3B0aW9ucykge1xuICAgIHRoaXMuZGF0YSA9IHRoaXMuY3JlYXRlUmVzcG9uc2UobG9naW5EYXRhKTtcbiAgfVxuXG4gIHRvU3RyaW5nKGluZGVudCA9ICcnKSB7XG4gICAgcmV0dXJuIGluZGVudCArICdOVExNIEF1dGgnO1xuICB9XG5cbiAgY3JlYXRlUmVzcG9uc2UoY2hhbGxlbmdlOiBPcHRpb25zKSB7XG4gICAgY29uc3QgY2xpZW50X25vbmNlID0gdGhpcy5jcmVhdGVDbGllbnROb25jZSgpO1xuICAgIGNvbnN0IGxtdjJsZW4gPSAyNDtcbiAgICBjb25zdCBudGxtdjJsZW4gPSAxNjtcbiAgICBjb25zdCBkb21haW4gPSBjaGFsbGVuZ2UuZG9tYWluO1xuICAgIGNvbnN0IHVzZXJuYW1lID0gY2hhbGxlbmdlLnVzZXJOYW1lO1xuICAgIGNvbnN0IHBhc3N3b3JkID0gY2hhbGxlbmdlLnBhc3N3b3JkO1xuICAgIGNvbnN0IG50bG1EYXRhID0gY2hhbGxlbmdlLm50bG1wYWNrZXQ7XG4gICAgY29uc3Qgc2VydmVyX2RhdGEgPSBudGxtRGF0YS50YXJnZXQ7XG4gICAgY29uc3Qgc2VydmVyX25vbmNlID0gbnRsbURhdGEubm9uY2U7XG4gICAgY29uc3QgYnVmZmVyTGVuZ3RoID0gNjQgKyAoZG9tYWluLmxlbmd0aCAqIDIpICsgKHVzZXJuYW1lLmxlbmd0aCAqIDIpICsgbG12MmxlbiArIG50bG12MmxlbiArIDggKyA4ICsgOCArIDQgKyBzZXJ2ZXJfZGF0YS5sZW5ndGggKyA0O1xuICAgIGNvbnN0IGRhdGEgPSBuZXcgV3JpdGFibGVUcmFja2luZ0J1ZmZlcihidWZmZXJMZW5ndGgpO1xuICAgIGRhdGEucG9zaXRpb24gPSAwO1xuICAgIGRhdGEud3JpdGVTdHJpbmcoJ05UTE1TU1BcXHUwMDAwJywgJ3V0ZjgnKTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUoMHgwMyk7XG4gICAgY29uc3QgYmFzZUlkeCA9IDY0O1xuICAgIGNvbnN0IGRuSWR4ID0gYmFzZUlkeDtcbiAgICBjb25zdCB1bklkeCA9IGRuSWR4ICsgZG9tYWluLmxlbmd0aCAqIDI7XG4gICAgY29uc3QgbDJJZHggPSB1bklkeCArIHVzZXJuYW1lLmxlbmd0aCAqIDI7XG4gICAgY29uc3QgbnRJZHggPSBsMklkeCArIGxtdjJsZW47XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKGxtdjJsZW4pO1xuICAgIGRhdGEud3JpdGVVSW50MTZMRShsbXYybGVuKTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUobDJJZHgpO1xuICAgIGRhdGEud3JpdGVVSW50MTZMRShudGxtdjJsZW4pO1xuICAgIGRhdGEud3JpdGVVSW50MTZMRShudGxtdjJsZW4pO1xuICAgIGRhdGEud3JpdGVVSW50MzJMRShudElkeCk7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKGRvbWFpbi5sZW5ndGggKiAyKTtcbiAgICBkYXRhLndyaXRlVUludDE2TEUoZG9tYWluLmxlbmd0aCAqIDIpO1xuICAgIGRhdGEud3JpdGVVSW50MzJMRShkbklkeCk7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKHVzZXJuYW1lLmxlbmd0aCAqIDIpO1xuICAgIGRhdGEud3JpdGVVSW50MTZMRSh1c2VybmFtZS5sZW5ndGggKiAyKTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUodW5JZHgpO1xuICAgIGRhdGEud3JpdGVVSW50MTZMRSgwKTtcbiAgICBkYXRhLndyaXRlVUludDE2TEUoMCk7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKGJhc2VJZHgpO1xuICAgIGRhdGEud3JpdGVVSW50MTZMRSgwKTtcbiAgICBkYXRhLndyaXRlVUludDE2TEUoMCk7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKGJhc2VJZHgpO1xuICAgIGRhdGEud3JpdGVVSW50MTZMRSgweDgyMDEpO1xuICAgIGRhdGEud3JpdGVVSW50MTZMRSgweDA4KTtcbiAgICBkYXRhLndyaXRlU3RyaW5nKGRvbWFpbiwgJ3VjczInKTtcbiAgICBkYXRhLndyaXRlU3RyaW5nKHVzZXJuYW1lLCAndWNzMicpO1xuICAgIGNvbnN0IGxtdjJEYXRhID0gdGhpcy5sbXYyUmVzcG9uc2UoZG9tYWluLCB1c2VybmFtZSwgcGFzc3dvcmQsIHNlcnZlcl9ub25jZSwgY2xpZW50X25vbmNlKTtcbiAgICBkYXRhLmNvcHlGcm9tKGxtdjJEYXRhKTtcbiAgICBjb25zdCBnZW5UaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgY29uc3QgbnRsbURhdGFCdWZmZXIgPSB0aGlzLm50bG12MlJlc3BvbnNlKGRvbWFpbiwgdXNlcm5hbWUsIHBhc3N3b3JkLCBzZXJ2ZXJfbm9uY2UsIHNlcnZlcl9kYXRhLCBjbGllbnRfbm9uY2UsIGdlblRpbWUpO1xuICAgIGRhdGEuY29weUZyb20obnRsbURhdGFCdWZmZXIpO1xuICAgIGRhdGEud3JpdGVVSW50MzJMRSgweDAxMDEpO1xuICAgIGRhdGEud3JpdGVVSW50MzJMRSgweDAwMDApO1xuICAgIGNvbnN0IHRpbWVzdGFtcCA9IHRoaXMuY3JlYXRlVGltZXN0YW1wKGdlblRpbWUpO1xuICAgIGRhdGEuY29weUZyb20odGltZXN0YW1wKTtcbiAgICBkYXRhLmNvcHlGcm9tKGNsaWVudF9ub25jZSk7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKDB4MDAwMCk7XG4gICAgZGF0YS5jb3B5RnJvbShzZXJ2ZXJfZGF0YSk7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKDB4MDAwMCk7XG4gICAgcmV0dXJuIGRhdGEuZGF0YTtcbiAgfVxuXG4gIGNyZWF0ZUNsaWVudE5vbmNlKCkge1xuICAgIGNvbnN0IGNsaWVudF9ub25jZSA9IEJ1ZmZlci5hbGxvYyg4LCAwKTtcbiAgICBsZXQgbmlkeCA9IDA7XG4gICAgd2hpbGUgKG5pZHggPCA4KSB7XG4gICAgICBjbGllbnRfbm9uY2Uud3JpdGVVSW50OChNYXRoLmNlaWwoTWF0aC5yYW5kb20oKSAqIDI1NSksIG5pZHgpO1xuICAgICAgbmlkeCsrO1xuICAgIH1cbiAgICByZXR1cm4gY2xpZW50X25vbmNlO1xuICB9XG5cbiAgbnRsbXYyUmVzcG9uc2UoZG9tYWluOiBzdHJpbmcsIHVzZXI6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZywgc2VydmVyTm9uY2U6IEJ1ZmZlciwgdGFyZ2V0SW5mbzogQnVmZmVyLCBjbGllbnROb25jZTogQnVmZmVyLCBteXRpbWU6IG51bWJlcikge1xuICAgIGNvbnN0IHRpbWVzdGFtcCA9IHRoaXMuY3JlYXRlVGltZXN0YW1wKG15dGltZSk7XG4gICAgY29uc3QgaGFzaCA9IHRoaXMubnR2Mkhhc2goZG9tYWluLCB1c2VyLCBwYXNzd29yZCk7XG4gICAgY29uc3QgZGF0YUxlbmd0aCA9IDQwICsgdGFyZ2V0SW5mby5sZW5ndGg7XG4gICAgY29uc3QgZGF0YSA9IEJ1ZmZlci5hbGxvYyhkYXRhTGVuZ3RoLCAwKTtcbiAgICBzZXJ2ZXJOb25jZS5jb3B5KGRhdGEsIDAsIDAsIDgpO1xuICAgIGRhdGEud3JpdGVVSW50MzJMRSgweDEwMSwgOCk7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKDB4MCwgMTIpO1xuICAgIHRpbWVzdGFtcC5jb3B5KGRhdGEsIDE2LCAwLCA4KTtcbiAgICBjbGllbnROb25jZS5jb3B5KGRhdGEsIDI0LCAwLCA4KTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUoMHgwLCAzMik7XG4gICAgdGFyZ2V0SW5mby5jb3B5KGRhdGEsIDM2LCAwLCB0YXJnZXRJbmZvLmxlbmd0aCk7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKDB4MCwgMzYgKyB0YXJnZXRJbmZvLmxlbmd0aCk7XG4gICAgcmV0dXJuIHRoaXMuaG1hY01ENShkYXRhLCBoYXNoKTtcbiAgfVxuXG4gIGNyZWF0ZVRpbWVzdGFtcCh0aW1lOiBudW1iZXIpIHtcbiAgICBjb25zdCB0ZW50aHNPZkFNaWNyb3NlY29uZCA9IChCaWdJbnQodGltZSkgKyBCaWdJbnQoMTE2NDQ0NzM2MDApKSAqIEJpZ0ludCgxMDAwMDAwMCk7XG5cbiAgICBjb25zdCBsbyA9IE51bWJlcih0ZW50aHNPZkFNaWNyb3NlY29uZCAmIEJpZ0ludCgweGZmZmZmZmZmKSk7XG4gICAgY29uc3QgaGkgPSBOdW1iZXIoKHRlbnRoc09mQU1pY3Jvc2Vjb25kID4+IEJpZ0ludCgzMikpICYgQmlnSW50KDB4ZmZmZmZmZmYpKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IEJ1ZmZlci5hbGxvYyg4KTtcbiAgICByZXN1bHQud3JpdGVVSW50MzJMRShsbywgMCk7XG4gICAgcmVzdWx0LndyaXRlVUludDMyTEUoaGksIDQpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBsbXYyUmVzcG9uc2UoZG9tYWluOiBzdHJpbmcsIHVzZXI6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZywgc2VydmVyTm9uY2U6IEJ1ZmZlciwgY2xpZW50Tm9uY2U6IEJ1ZmZlcikge1xuICAgIGNvbnN0IGhhc2ggPSB0aGlzLm50djJIYXNoKGRvbWFpbiwgdXNlciwgcGFzc3dvcmQpO1xuICAgIGNvbnN0IGRhdGEgPSBCdWZmZXIuYWxsb2Moc2VydmVyTm9uY2UubGVuZ3RoICsgY2xpZW50Tm9uY2UubGVuZ3RoLCAwKTtcblxuICAgIHNlcnZlck5vbmNlLmNvcHkoZGF0YSk7XG4gICAgY2xpZW50Tm9uY2UuY29weShkYXRhLCBzZXJ2ZXJOb25jZS5sZW5ndGgsIDAsIGNsaWVudE5vbmNlLmxlbmd0aCk7XG5cbiAgICBjb25zdCBuZXdoYXNoID0gdGhpcy5obWFjTUQ1KGRhdGEsIGhhc2gpO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gQnVmZmVyLmFsbG9jKG5ld2hhc2gubGVuZ3RoICsgY2xpZW50Tm9uY2UubGVuZ3RoLCAwKTtcblxuICAgIG5ld2hhc2guY29weShyZXNwb25zZSk7XG4gICAgY2xpZW50Tm9uY2UuY29weShyZXNwb25zZSwgbmV3aGFzaC5sZW5ndGgsIDAsIGNsaWVudE5vbmNlLmxlbmd0aCk7XG5cbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH1cblxuICBudHYySGFzaChkb21haW46IHN0cmluZywgdXNlcjogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKSB7XG4gICAgY29uc3QgaGFzaCA9IHRoaXMubnRIYXNoKHBhc3N3b3JkKTtcbiAgICBjb25zdCBpZGVudGl0eSA9IEJ1ZmZlci5mcm9tKHVzZXIudG9VcHBlckNhc2UoKSArIGRvbWFpbi50b1VwcGVyQ2FzZSgpLCAndWNzMicpO1xuICAgIHJldHVybiB0aGlzLmhtYWNNRDUoaWRlbnRpdHksIGhhc2gpO1xuICB9XG5cbiAgbnRIYXNoKHRleHQ6IHN0cmluZykge1xuICAgIGNvbnN0IHVuaWNvZGVTdHJpbmcgPSBCdWZmZXIuZnJvbSh0ZXh0LCAndWNzMicpO1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShtZDQuYXJyYXlCdWZmZXIodW5pY29kZVN0cmluZykpO1xuICB9XG5cbiAgaG1hY01ENShkYXRhOiBCdWZmZXIsIGtleTogQnVmZmVyKSB7XG4gICAgcmV0dXJuIGNyeXB0by5jcmVhdGVIbWFjKCdNRDUnLCBrZXkpLnVwZGF0ZShkYXRhKS5kaWdlc3QoKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBOVExNUmVzcG9uc2VQYXlsb2FkO1xubW9kdWxlLmV4cG9ydHMgPSBOVExNUmVzcG9uc2VQYXlsb2FkO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSx1QkFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsTUFBQSxHQUFBQyx1QkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsS0FBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQXlCLFNBQUFJLHlCQUFBQyxXQUFBLGVBQUFDLE9BQUEsa0NBQUFDLGlCQUFBLE9BQUFELE9BQUEsUUFBQUUsZ0JBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSxDQUFBQyxXQUFBLFdBQUFBLFdBQUEsR0FBQUcsZ0JBQUEsR0FBQUQsaUJBQUEsS0FBQUYsV0FBQTtBQUFBLFNBQUFILHdCQUFBTyxHQUFBLEVBQUFKLFdBQUEsU0FBQUEsV0FBQSxJQUFBSSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxXQUFBRCxHQUFBLFFBQUFBLEdBQUEsb0JBQUFBLEdBQUEsd0JBQUFBLEdBQUEsNEJBQUFFLE9B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
136
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfd3JpdGFibGVUcmFja2luZ0J1ZmZlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiY3J5cHRvIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfanNNZCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIm9iaiIsIk5UTE1SZXNwb25zZVBheWxvYWQiLCJjb25zdHJ1Y3RvciIsImxvZ2luRGF0YSIsImRhdGEiLCJjcmVhdGVSZXNwb25zZSIsInRvU3RyaW5nIiwiaW5kZW50IiwiY2hhbGxlbmdlIiwiY2xpZW50X25vbmNlIiwiY3JlYXRlQ2xpZW50Tm9uY2UiLCJsbXYybGVuIiwibnRsbXYybGVuIiwiZG9tYWluIiwidXNlcm5hbWUiLCJ1c2VyTmFtZSIsInBhc3N3b3JkIiwibnRsbURhdGEiLCJudGxtcGFja2V0Iiwic2VydmVyX2RhdGEiLCJ0YXJnZXQiLCJzZXJ2ZXJfbm9uY2UiLCJub25jZSIsImJ1ZmZlckxlbmd0aCIsImxlbmd0aCIsIldyaXRhYmxlVHJhY2tpbmdCdWZmZXIiLCJwb3NpdGlvbiIsIndyaXRlU3RyaW5nIiwid3JpdGVVSW50MzJMRSIsImJhc2VJZHgiLCJkbklkeCIsInVuSWR4IiwibDJJZHgiLCJudElkeCIsIndyaXRlVUludDE2TEUiLCJsbXYyRGF0YSIsImxtdjJSZXNwb25zZSIsImNvcHlGcm9tIiwiZ2VuVGltZSIsIkRhdGUiLCJnZXRUaW1lIiwibnRsbURhdGFCdWZmZXIiLCJudGxtdjJSZXNwb25zZSIsInRpbWVzdGFtcCIsImNyZWF0ZVRpbWVzdGFtcCIsIkJ1ZmZlciIsImFsbG9jIiwibmlkeCIsIndyaXRlVUludDgiLCJNYXRoIiwiY2VpbCIsInJhbmRvbSIsInVzZXIiLCJzZXJ2ZXJOb25jZSIsInRhcmdldEluZm8iLCJjbGllbnROb25jZSIsIm15dGltZSIsImhhc2giLCJudHYySGFzaCIsImRhdGFMZW5ndGgiLCJjb3B5IiwiaG1hY01ENSIsInRpbWUiLCJ0ZW50aHNPZkFNaWNyb3NlY29uZCIsIkJpZ0ludCIsImxvIiwiTnVtYmVyIiwiaGkiLCJyZXN1bHQiLCJuZXdoYXNoIiwicmVzcG9uc2UiLCJudEhhc2giLCJpZGVudGl0eSIsImZyb20iLCJ0b1VwcGVyQ2FzZSIsInRleHQiLCJ1bmljb2RlU3RyaW5nIiwibWQ0IiwiYXJyYXlCdWZmZXIiLCJrZXkiLCJjcmVhdGVIbWFjIiwidXBkYXRlIiwiZGlnZXN0IiwiX2RlZmF1bHQiLCJleHBvcnRzIiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vc3JjL250bG0tcGF5bG9hZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgV3JpdGFibGVUcmFja2luZ0J1ZmZlciBmcm9tICcuL3RyYWNraW5nLWJ1ZmZlci93cml0YWJsZS10cmFja2luZy1idWZmZXInO1xuaW1wb3J0ICogYXMgY3J5cHRvIGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgbWQ0IGZyb20gJ2pzLW1kNCc7XG5cbmludGVyZmFjZSBPcHRpb25zIHtcbiAgZG9tYWluOiBzdHJpbmc7XG4gIHVzZXJOYW1lOiBzdHJpbmc7XG4gIHBhc3N3b3JkOiBzdHJpbmc7XG4gIG50bG1wYWNrZXQ6IHtcbiAgICB0YXJnZXQ6IEJ1ZmZlcjtcbiAgICBub25jZTogQnVmZmVyO1xuICB9O1xufVxuXG5jbGFzcyBOVExNUmVzcG9uc2VQYXlsb2FkIHtcbiAgZGVjbGFyZSBkYXRhOiBCdWZmZXI7XG5cbiAgY29uc3RydWN0b3IobG9naW5EYXRhOiBPcHRpb25zKSB7XG4gICAgdGhpcy5kYXRhID0gdGhpcy5jcmVhdGVSZXNwb25zZShsb2dpbkRhdGEpO1xuICB9XG5cbiAgdG9TdHJpbmcoaW5kZW50ID0gJycpIHtcbiAgICByZXR1cm4gaW5kZW50ICsgJ05UTE0gQXV0aCc7XG4gIH1cblxuICBjcmVhdGVSZXNwb25zZShjaGFsbGVuZ2U6IE9wdGlvbnMpIHtcbiAgICBjb25zdCBjbGllbnRfbm9uY2UgPSB0aGlzLmNyZWF0ZUNsaWVudE5vbmNlKCk7XG4gICAgY29uc3QgbG12MmxlbiA9IDI0O1xuICAgIGNvbnN0IG50bG12MmxlbiA9IDE2O1xuICAgIGNvbnN0IGRvbWFpbiA9IGNoYWxsZW5nZS5kb21haW47XG4gICAgY29uc3QgdXNlcm5hbWUgPSBjaGFsbGVuZ2UudXNlck5hbWU7XG4gICAgY29uc3QgcGFzc3dvcmQgPSBjaGFsbGVuZ2UucGFzc3dvcmQ7XG4gICAgY29uc3QgbnRsbURhdGEgPSBjaGFsbGVuZ2UubnRsbXBhY2tldDtcbiAgICBjb25zdCBzZXJ2ZXJfZGF0YSA9IG50bG1EYXRhLnRhcmdldDtcbiAgICBjb25zdCBzZXJ2ZXJfbm9uY2UgPSBudGxtRGF0YS5ub25jZTtcbiAgICBjb25zdCBidWZmZXJMZW5ndGggPSA2NCArIChkb21haW4ubGVuZ3RoICogMikgKyAodXNlcm5hbWUubGVuZ3RoICogMikgKyBsbXYybGVuICsgbnRsbXYybGVuICsgOCArIDggKyA4ICsgNCArIHNlcnZlcl9kYXRhLmxlbmd0aCArIDQ7XG4gICAgY29uc3QgZGF0YSA9IG5ldyBXcml0YWJsZVRyYWNraW5nQnVmZmVyKGJ1ZmZlckxlbmd0aCk7XG4gICAgZGF0YS5wb3NpdGlvbiA9IDA7XG4gICAgZGF0YS53cml0ZVN0cmluZygnTlRMTVNTUFxcdTAwMDAnLCAndXRmOCcpO1xuICAgIGRhdGEud3JpdGVVSW50MzJMRSgweDAzKTtcbiAgICBjb25zdCBiYXNlSWR4ID0gNjQ7XG4gICAgY29uc3QgZG5JZHggPSBiYXNlSWR4O1xuICAgIGNvbnN0IHVuSWR4ID0gZG5JZHggKyBkb21haW4ubGVuZ3RoICogMjtcbiAgICBjb25zdCBsMklkeCA9IHVuSWR4ICsgdXNlcm5hbWUubGVuZ3RoICogMjtcbiAgICBjb25zdCBudElkeCA9IGwySWR4ICsgbG12MmxlbjtcbiAgICBkYXRhLndyaXRlVUludDE2TEUobG12Mmxlbik7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKGxtdjJsZW4pO1xuICAgIGRhdGEud3JpdGVVSW50MzJMRShsMklkeCk7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKG50bG12Mmxlbik7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKG50bG12Mmxlbik7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKG50SWR4KTtcbiAgICBkYXRhLndyaXRlVUludDE2TEUoZG9tYWluLmxlbmd0aCAqIDIpO1xuICAgIGRhdGEud3JpdGVVSW50MTZMRShkb21haW4ubGVuZ3RoICogMik7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKGRuSWR4KTtcbiAgICBkYXRhLndyaXRlVUludDE2TEUodXNlcm5hbWUubGVuZ3RoICogMik7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKHVzZXJuYW1lLmxlbmd0aCAqIDIpO1xuICAgIGRhdGEud3JpdGVVSW50MzJMRSh1bklkeCk7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKDApO1xuICAgIGRhdGEud3JpdGVVSW50MTZMRSgwKTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUoYmFzZUlkeCk7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKDApO1xuICAgIGRhdGEud3JpdGVVSW50MTZMRSgwKTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUoYmFzZUlkeCk7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKDB4ODIwMSk7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKDB4MDgpO1xuICAgIGRhdGEud3JpdGVTdHJpbmcoZG9tYWluLCAndWNzMicpO1xuICAgIGRhdGEud3JpdGVTdHJpbmcodXNlcm5hbWUsICd1Y3MyJyk7XG4gICAgY29uc3QgbG12MkRhdGEgPSB0aGlzLmxtdjJSZXNwb25zZShkb21haW4sIHVzZXJuYW1lLCBwYXNzd29yZCwgc2VydmVyX25vbmNlLCBjbGllbnRfbm9uY2UpO1xuICAgIGRhdGEuY29weUZyb20obG12MkRhdGEpO1xuICAgIGNvbnN0IGdlblRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICBjb25zdCBudGxtRGF0YUJ1ZmZlciA9IHRoaXMubnRsbXYyUmVzcG9uc2UoZG9tYWluLCB1c2VybmFtZSwgcGFzc3dvcmQsIHNlcnZlcl9ub25jZSwgc2VydmVyX2RhdGEsIGNsaWVudF9ub25jZSwgZ2VuVGltZSk7XG4gICAgZGF0YS5jb3B5RnJvbShudGxtRGF0YUJ1ZmZlcik7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKDB4MDEwMSk7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKDB4MDAwMCk7XG4gICAgY29uc3QgdGltZXN0YW1wID0gdGhpcy5jcmVhdGVUaW1lc3RhbXAoZ2VuVGltZSk7XG4gICAgZGF0YS5jb3B5RnJvbSh0aW1lc3RhbXApO1xuICAgIGRhdGEuY29weUZyb20oY2xpZW50X25vbmNlKTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUoMHgwMDAwKTtcbiAgICBkYXRhLmNvcHlGcm9tKHNlcnZlcl9kYXRhKTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUoMHgwMDAwKTtcbiAgICByZXR1cm4gZGF0YS5kYXRhO1xuICB9XG5cbiAgY3JlYXRlQ2xpZW50Tm9uY2UoKSB7XG4gICAgY29uc3QgY2xpZW50X25vbmNlID0gQnVmZmVyLmFsbG9jKDgsIDApO1xuICAgIGxldCBuaWR4ID0gMDtcbiAgICB3aGlsZSAobmlkeCA8IDgpIHtcbiAgICAgIGNsaWVudF9ub25jZS53cml0ZVVJbnQ4KE1hdGguY2VpbChNYXRoLnJhbmRvbSgpICogMjU1KSwgbmlkeCk7XG4gICAgICBuaWR4Kys7XG4gICAgfVxuICAgIHJldHVybiBjbGllbnRfbm9uY2U7XG4gIH1cblxuICBudGxtdjJSZXNwb25zZShkb21haW46IHN0cmluZywgdXNlcjogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nLCBzZXJ2ZXJOb25jZTogQnVmZmVyLCB0YXJnZXRJbmZvOiBCdWZmZXIsIGNsaWVudE5vbmNlOiBCdWZmZXIsIG15dGltZTogbnVtYmVyKSB7XG4gICAgY29uc3QgdGltZXN0YW1wID0gdGhpcy5jcmVhdGVUaW1lc3RhbXAobXl0aW1lKTtcbiAgICBjb25zdCBoYXNoID0gdGhpcy5udHYySGFzaChkb21haW4sIHVzZXIsIHBhc3N3b3JkKTtcbiAgICBjb25zdCBkYXRhTGVuZ3RoID0gNDAgKyB0YXJnZXRJbmZvLmxlbmd0aDtcbiAgICBjb25zdCBkYXRhID0gQnVmZmVyLmFsbG9jKGRhdGFMZW5ndGgsIDApO1xuICAgIHNlcnZlck5vbmNlLmNvcHkoZGF0YSwgMCwgMCwgOCk7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKDB4MTAxLCA4KTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUoMHgwLCAxMik7XG4gICAgdGltZXN0YW1wLmNvcHkoZGF0YSwgMTYsIDAsIDgpO1xuICAgIGNsaWVudE5vbmNlLmNvcHkoZGF0YSwgMjQsIDAsIDgpO1xuICAgIGRhdGEud3JpdGVVSW50MzJMRSgweDAsIDMyKTtcbiAgICB0YXJnZXRJbmZvLmNvcHkoZGF0YSwgMzYsIDAsIHRhcmdldEluZm8ubGVuZ3RoKTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUoMHgwLCAzNiArIHRhcmdldEluZm8ubGVuZ3RoKTtcbiAgICByZXR1cm4gdGhpcy5obWFjTUQ1KGRhdGEsIGhhc2gpO1xuICB9XG5cbiAgY3JlYXRlVGltZXN0YW1wKHRpbWU6IG51bWJlcikge1xuICAgIGNvbnN0IHRlbnRoc09mQU1pY3Jvc2Vjb25kID0gKEJpZ0ludCh0aW1lKSArIEJpZ0ludCgxMTY0NDQ3MzYwMCkpICogQmlnSW50KDEwMDAwMDAwKTtcblxuICAgIGNvbnN0IGxvID0gTnVtYmVyKHRlbnRoc09mQU1pY3Jvc2Vjb25kICYgQmlnSW50KDB4ZmZmZmZmZmYpKTtcbiAgICBjb25zdCBoaSA9IE51bWJlcigodGVudGhzT2ZBTWljcm9zZWNvbmQgPj4gQmlnSW50KDMyKSkgJiBCaWdJbnQoMHhmZmZmZmZmZikpO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gQnVmZmVyLmFsbG9jKDgpO1xuICAgIHJlc3VsdC53cml0ZVVJbnQzMkxFKGxvLCAwKTtcbiAgICByZXN1bHQud3JpdGVVSW50MzJMRShoaSwgNCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGxtdjJSZXNwb25zZShkb21haW46IHN0cmluZywgdXNlcjogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nLCBzZXJ2ZXJOb25jZTogQnVmZmVyLCBjbGllbnROb25jZTogQnVmZmVyKSB7XG4gICAgY29uc3QgaGFzaCA9IHRoaXMubnR2Mkhhc2goZG9tYWluLCB1c2VyLCBwYXNzd29yZCk7XG4gICAgY29uc3QgZGF0YSA9IEJ1ZmZlci5hbGxvYyhzZXJ2ZXJOb25jZS5sZW5ndGggKyBjbGllbnROb25jZS5sZW5ndGgsIDApO1xuXG4gICAgc2VydmVyTm9uY2UuY29weShkYXRhKTtcbiAgICBjbGllbnROb25jZS5jb3B5KGRhdGEsIHNlcnZlck5vbmNlLmxlbmd0aCwgMCwgY2xpZW50Tm9uY2UubGVuZ3RoKTtcblxuICAgIGNvbnN0IG5ld2hhc2ggPSB0aGlzLmhtYWNNRDUoZGF0YSwgaGFzaCk7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBCdWZmZXIuYWxsb2MobmV3aGFzaC5sZW5ndGggKyBjbGllbnROb25jZS5sZW5ndGgsIDApO1xuXG4gICAgbmV3aGFzaC5jb3B5KHJlc3BvbnNlKTtcbiAgICBjbGllbnROb25jZS5jb3B5KHJlc3BvbnNlLCBuZXdoYXNoLmxlbmd0aCwgMCwgY2xpZW50Tm9uY2UubGVuZ3RoKTtcblxuICAgIHJldHVybiByZXNwb25zZTtcbiAgfVxuXG4gIG50djJIYXNoKGRvbWFpbjogc3RyaW5nLCB1c2VyOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBoYXNoID0gdGhpcy5udEhhc2gocGFzc3dvcmQpO1xuICAgIGNvbnN0IGlkZW50aXR5ID0gQnVmZmVyLmZyb20odXNlci50b1VwcGVyQ2FzZSgpICsgZG9tYWluLnRvVXBwZXJDYXNlKCksICd1Y3MyJyk7XG4gICAgcmV0dXJuIHRoaXMuaG1hY01ENShpZGVudGl0eSwgaGFzaCk7XG4gIH1cblxuICBudEhhc2godGV4dDogc3RyaW5nKSB7XG4gICAgY29uc3QgdW5pY29kZVN0cmluZyA9IEJ1ZmZlci5mcm9tKHRleHQsICd1Y3MyJyk7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKG1kNC5hcnJheUJ1ZmZlcih1bmljb2RlU3RyaW5nKSk7XG4gIH1cblxuICBobWFjTUQ1KGRhdGE6IEJ1ZmZlciwga2V5OiBCdWZmZXIpIHtcbiAgICByZXR1cm4gY3J5cHRvLmNyZWF0ZUhtYWMoJ01ENScsIGtleSkudXBkYXRlKGRhdGEpLmRpZ2VzdCgpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE5UTE1SZXNwb25zZVBheWxvYWQ7XG5tb2R1bGUuZXhwb3J0cyA9IE5UTE1SZXNwb25zZVBheWxvYWQ7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLHVCQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxNQUFBLEdBQUFDLHVCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxLQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFBeUIsU0FBQUkseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEsQ0FBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQUgsd0JBQUFHLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSx1QkFBQUEsQ0FBQSx5QkFBQUEsQ0FBQSxXQUFBSyxPQUFBLEVBQUFMLENBQUEsUUFBQUcsQ0FBQSxHQUFBSix3QkFBQSxDQUFBRyxDQUFBLE9BQUFDLENBQUEsSUFBQUEsQ0FBQSxDQUFBRyxHQUFBLENBQUFOLENBQUEsVUFBQUcsQ0FBQSxDQUFBSSxHQUFBLENBQUFQLENBQUEsT0FBQVEsQ0FBQSxLQUFBQyxTQUFBLFVBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxjQUFBLElBQUFELE1BQUEsQ0FBQUUsd0JBQUEsV0FBQUMsQ0FBQSxJQUFBZCxDQUFBLG9CQUFBYyxDQUFBLElBQUFILE1BQUEsQ0FBQUksU0FBQSxDQUFBQyxjQUFBLENBQUFDLElBQUEsQ0FBQWpCLENBQUEsRUFBQWMsQ0FBQSxTQUFBSSxDQUFBLEdBQUFSLENBQUEsR0FBQUMsTUFBQSxDQUFBRSx3QkFBQSxDQUFBYixDQUFBLEVBQUFjLENBQUEsVUFBQUksQ0FBQSxLQUFBQSxDQUFBLENBQUFYLEdBQUEsSUFBQVcsQ0FBQSxDQUFBQyxHQUFBLElBQUFSLE1BQUEsQ0FBQUMsY0FBQSxDQUFBSixDQUFBLEVBQUFNLENBQUEsRUFBQUksQ0FBQSxJQUFBVixDQUFBLENBQUFNLENBQUEsSUFBQWQsQ0FBQSxDQUFBYyxDQUFBLFlBQUFOLENBQUEsQ0FBQUgsT0FBQSxHQUFBTCxDQUFBLEVBQUFHLENBQUEsSUFBQUEsQ0FBQSxDQUFBZ0IsR0FBQSxDQUFBbkIsQ0FBQSxFQUFBUSxDQUFBLEdBQUFBLENBQUE7QUFBQSxTQUFBZCx1QkFBQTBCLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFoQixVQUFBLEdBQUFnQixHQUFBLEtBQUFmLE9BQUEsRUFBQWUsR0FBQTtBQVl6QixNQUFNQyxtQkFBbUIsQ0FBQztFQUd4QkMsV0FBV0EsQ0FBQ0MsU0FBa0IsRUFBRTtJQUM5QixJQUFJLENBQUNDLElBQUksR0FBRyxJQUFJLENBQUNDLGNBQWMsQ0FBQ0YsU0FBUyxDQUFDO0VBQzVDO0VBRUFHLFFBQVFBLENBQUNDLE1BQU0sR0FBRyxFQUFFLEVBQUU7SUFDcEIsT0FBT0EsTUFBTSxHQUFHLFdBQVc7RUFDN0I7RUFFQUYsY0FBY0EsQ0FBQ0csU0FBa0IsRUFBRTtJQUNqQyxNQUFNQyxZQUFZLEdBQUcsSUFBSSxDQUFDQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzdDLE1BQU1DLE9BQU8sR0FBRyxFQUFFO0lBQ2xCLE1BQU1DLFNBQVMsR0FBRyxFQUFFO0lBQ3BCLE1BQU1DLE1BQU0sR0FBR0wsU0FBUyxDQUFDSyxNQUFNO0lBQy9CLE1BQU1DLFFBQVEsR0FBR04sU0FBUyxDQUFDTyxRQUFRO0lBQ25DLE1BQU1DLFFBQVEsR0FBR1IsU0FBUyxDQUFDUSxRQUFRO0lBQ25DLE1BQU1DLFFBQVEsR0FBR1QsU0FBUyxDQUFDVSxVQUFVO0lBQ3JDLE1BQU1DLFdBQVcsR0FBR0YsUUFBUSxDQUFDRyxNQUFNO0lBQ25DLE1BQU1DLFlBQVksR0FBR0osUUFBUSxDQUFDSyxLQUFLO0lBQ25DLE1BQU1DLFlBQVksR0FBRyxFQUFFLEdBQUlWLE1BQU0sQ0FBQ1csTUFBTSxHQUFHLENBQUUsR0FBSVYsUUFBUSxDQUFDVSxNQUFNLEdBQUcsQ0FBRSxHQUFHYixPQUFPLEdBQUdDLFNBQVMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUdPLFdBQVcsQ0FBQ0ssTUFBTSxHQUFHLENBQUM7SUFDcEksTUFBTXBCLElBQUksR0FBRyxJQUFJcUIsK0JBQXNCLENBQUNGLFlBQVksQ0FBQztJQUNyRG5CLElBQUksQ0FBQ3NCLFFBQVEsR0FBRyxDQUFDO0lBQ2pCdEIsSUFBSSxDQUFDdUIsV0FBVyxDQUFDLGVBQWUsRUFBRSxNQUFNLENBQUM7SUFDekN2QixJQUFJLENBQUN3QixhQUFhLENBQUMsSUFBSSxDQUFDO0lBQ3hCLE1BQU1DLE9BQU8sR0FBRyxFQUFFO0lBQ2xCLE1BQU1DLEtBQUssR0FBR0QsT0FBTztJQUNyQixNQUFNRSxLQUFLLEdBQUdELEtBQUssR0FBR2pCLE1BQU0sQ0FBQ1csTUFBTSxHQUFHLENBQUM7SUFDdkMsTUFBTVEsS0FBSyxHQUFHRCxLQUFLLEdBQUdqQixRQUFRLENBQUNVLE1BQU0sR0FBRyxDQUFDO0lBQ3pDLE1BQU1TLEtBQUssR0FBR0QsS0FBSyxHQUFHckIsT0FBTztJQUM3QlAsSUFBSSxDQUFDOEIsYUFBYSxDQUFDdkIsT0FBTyxDQUFDO0lBQzNCUCxJQUFJLENBQUM4QixhQUFhLENBQUN2QixPQUFPLENBQUM7SUFDM0JQLElBQUksQ0FBQ3dCLGFBQWEsQ0FBQ0ksS0FBSyxDQUFDO0lBQ3pCNUIsSUFBSSxDQUFDOEIsYUFBYSxDQUFDdEIsU0FBUyxDQUFDO0lBQzdCUixJQUFJLENBQUM4QixhQUFhLENBQUN0QixTQUFTLENBQUM7SUFDN0JSLElBQUksQ0FBQ3dCLGFBQWEsQ0FBQ0ssS0FBSyxDQUFDO0lBQ3pCN0IsSUFBSSxDQUFDOEIsYUFBYSxDQUFDckIsTUFBTSxDQUFDVyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDcEIsSUFBSSxDQUFDOEIsYUFBYSxDQUFDckIsTUFBTSxDQUFDVyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDcEIsSUFBSSxDQUFDd0IsYUFBYSxDQUFDRSxLQUFLLENBQUM7SUFDekIxQixJQUFJLENBQUM4QixhQUFhLENBQUNwQixRQUFRLENBQUNVLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDdkNwQixJQUFJLENBQUM4QixhQUFhLENBQUNwQixRQUFRLENBQUNVLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDdkNwQixJQUFJLENBQUN3QixhQUFhLENBQUNHLEtBQUssQ0FBQztJQUN6QjNCLElBQUksQ0FBQzhCLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFDckI5QixJQUFJLENBQUM4QixhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQ3JCOUIsSUFBSSxDQUFDd0IsYUFBYSxDQUFDQyxPQUFPLENBQUM7SUFDM0J6QixJQUFJLENBQUM4QixhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQ3JCOUIsSUFBSSxDQUFDOEIsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUNyQjlCLElBQUksQ0FBQ3dCLGFBQWEsQ0FBQ0MsT0FBTyxDQUFDO0lBQzNCekIsSUFBSSxDQUFDOEIsYUFBYSxDQUFDLE1BQU0sQ0FBQztJQUMxQjlCLElBQUksQ0FBQzhCLGFBQWEsQ0FBQyxJQUFJLENBQUM7SUFDeEI5QixJQUFJLENBQUN1QixXQUFXLENBQUNkLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFDaENULElBQUksQ0FBQ3VCLFdBQVcsQ0FBQ2IsUUFBUSxFQUFFLE1BQU0sQ0FBQztJQUNsQyxNQUFNcUIsUUFBUSxHQUFHLElBQUksQ0FBQ0MsWUFBWSxDQUFDdkIsTUFBTSxFQUFFQyxRQUFRLEVBQUVFLFFBQVEsRUFBRUssWUFBWSxFQUFFWixZQUFZLENBQUM7SUFDMUZMLElBQUksQ0FBQ2lDLFFBQVEsQ0FBQ0YsUUFBUSxDQUFDO0lBQ3ZCLE1BQU1HLE9BQU8sR0FBRyxJQUFJQyxJQUFJLENBQUMsQ0FBQyxDQUFDQyxPQUFPLENBQUMsQ0FBQztJQUNwQyxNQUFNQyxjQUFjLEdBQUcsSUFBSSxDQUFDQyxjQUFjLENBQUM3QixNQUFNLEVBQUVDLFFBQVEsRUFBRUUsUUFBUSxFQUFFSyxZQUFZLEVBQUVGLFdBQVcsRUFBRVYsWUFBWSxFQUFFNkIsT0FBTyxDQUFDO0lBQ3hIbEMsSUFBSSxDQUFDaUMsUUFBUSxDQUFDSSxjQUFjLENBQUM7SUFDN0JyQyxJQUFJLENBQUN3QixhQUFhLENBQUMsTUFBTSxDQUFDO0lBQzFCeEIsSUFBSSxDQUFDd0IsYUFBYSxDQUFDLE1BQU0sQ0FBQztJQUMxQixNQUFNZSxTQUFTLEdBQUcsSUFBSSxDQUFDQyxlQUFlLENBQUNOLE9BQU8sQ0FBQztJQUMvQ2xDLElBQUksQ0FBQ2lDLFFBQVEsQ0FBQ00sU0FBUyxDQUFDO0lBQ3hCdkMsSUFBSSxDQUFDaUMsUUFBUSxDQUFDNUIsWUFBWSxDQUFDO0lBQzNCTCxJQUFJLENBQUN3QixhQUFhLENBQUMsTUFBTSxDQUFDO0lBQzFCeEIsSUFBSSxDQUFDaUMsUUFBUSxDQUFDbEIsV0FBVyxDQUFDO0lBQzFCZixJQUFJLENBQUN3QixhQUFhLENBQUMsTUFBTSxDQUFDO0lBQzFCLE9BQU94QixJQUFJLENBQUNBLElBQUk7RUFDbEI7RUFFQU0saUJBQWlCQSxDQUFBLEVBQUc7SUFDbEIsTUFBTUQsWUFBWSxHQUFHb0MsTUFBTSxDQUFDQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2QyxJQUFJQyxJQUFJLEdBQUcsQ0FBQztJQUNaLE9BQU9BLElBQUksR0FBRyxDQUFDLEVBQUU7TUFDZnRDLFlBQVksQ0FBQ3VDLFVBQVUsQ0FBQ0MsSUFBSSxDQUFDQyxJQUFJLENBQUNELElBQUksQ0FBQ0UsTUFBTSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRUosSUFBSSxDQUFDO01BQzdEQSxJQUFJLEVBQUU7SUFDUjtJQUNBLE9BQU90QyxZQUFZO0VBQ3JCO0VBRUFpQyxjQUFjQSxDQUFDN0IsTUFBYyxFQUFFdUMsSUFBWSxFQUFFcEMsUUFBZ0IsRUFBRXFDLFdBQW1CLEVBQUVDLFVBQWtCLEVBQUVDLFdBQW1CLEVBQUVDLE1BQWMsRUFBRTtJQUMzSSxNQUFNYixTQUFTLEdBQUcsSUFBSSxDQUFDQyxlQUFlLENBQUNZLE1BQU0sQ0FBQztJQUM5QyxNQUFNQyxJQUFJLEdBQUcsSUFBSSxDQUFDQyxRQUFRLENBQUM3QyxNQUFNLEVBQUV1QyxJQUFJLEVBQUVwQyxRQUFRLENBQUM7SUFDbEQsTUFBTTJDLFVBQVUsR0FBRyxFQUFFLEdBQUdMLFVBQVUsQ0FBQzlCLE1BQU07SUFDekMsTUFBTXBCLElBQUksR0FBR3lDLE1BQU0sQ0FBQ0MsS0FBSyxDQUFDYSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDTixXQUFXLENBQUNPLElBQUksQ0FBQ3hELElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQkEsSUFBSSxDQUFDd0IsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDNUJ4QixJQUFJLENBQUN3QixhQUFhLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUMzQmUsU0FBUyxDQUFDaUIsSUFBSSxDQUFDeEQsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzlCbUQsV0FBVyxDQUFDSyxJQUFJLENBQUN4RCxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaENBLElBQUksQ0FBQ3dCLGFBQWEsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQzNCMEIsVUFBVSxDQUFDTSxJQUFJLENBQUN4RCxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRWtELFVBQVUsQ0FBQzlCLE1BQU0sQ0FBQztJQUMvQ3BCLElBQUksQ0FBQ3dCLGFBQWEsQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHMEIsVUFBVSxDQUFDOUIsTUFBTSxDQUFDO0lBQy9DLE9BQU8sSUFBSSxDQUFDcUMsT0FBTyxDQUFDekQsSUFBSSxFQUFFcUQsSUFBSSxDQUFDO0VBQ2pDO0VBRUFiLGVBQWVBLENBQUNrQixJQUFZLEVBQUU7SUFDNUIsTUFBTUMsb0JBQW9CLEdBQUcsQ0FBQ0MsTUFBTSxDQUFDRixJQUFJLENBQUMsR0FBR0UsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJQSxNQUFNLENBQUMsUUFBUSxDQUFDO0lBRXBGLE1BQU1DLEVBQUUsR0FBR0MsTUFBTSxDQUFDSCxvQkFBb0IsR0FBR0MsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzVELE1BQU1HLEVBQUUsR0FBR0QsTUFBTSxDQUFFSCxvQkFBb0IsSUFBSUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFJQSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFNUUsTUFBTUksTUFBTSxHQUFHdkIsTUFBTSxDQUFDQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzlCc0IsTUFBTSxDQUFDeEMsYUFBYSxDQUFDcUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMzQkcsTUFBTSxDQUFDeEMsYUFBYSxDQUFDdUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMzQixPQUFPQyxNQUFNO0VBQ2Y7RUFFQWhDLFlBQVlBLENBQUN2QixNQUFjLEVBQUV1QyxJQUFZLEVBQUVwQyxRQUFnQixFQUFFcUMsV0FBbUIsRUFBRUUsV0FBbUIsRUFBRTtJQUNyRyxNQUFNRSxJQUFJLEdBQUcsSUFBSSxDQUFDQyxRQUFRLENBQUM3QyxNQUFNLEVBQUV1QyxJQUFJLEVBQUVwQyxRQUFRLENBQUM7SUFDbEQsTUFBTVosSUFBSSxHQUFHeUMsTUFBTSxDQUFDQyxLQUFLLENBQUNPLFdBQVcsQ0FBQzdCLE1BQU0sR0FBRytCLFdBQVcsQ0FBQy9CLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFFckU2QixXQUFXLENBQUNPLElBQUksQ0FBQ3hELElBQUksQ0FBQztJQUN0Qm1ELFdBQVcsQ0FBQ0ssSUFBSSxDQUFDeEQsSUFBSSxFQUFFaUQsV0FBVyxDQUFDN0IsTUFBTSxFQUFFLENBQUMsRUFBRStCLFdBQVcsQ0FBQy9CLE1BQU0sQ0FBQztJQUVqRSxNQUFNNkMsT0FBTyxHQUFHLElBQUksQ0FBQ1IsT0FBTyxDQUFDekQsSUFBSSxFQUFFcUQsSUFBSSxDQUFDO0lBQ3hDLE1BQU1hLFFBQVEsR0FBR3pCLE1BQU0sQ0FBQ0MsS0FBSyxDQUFDdUIsT0FBTyxDQUFDN0MsTUFBTSxHQUFHK0IsV0FBVyxDQUFDL0IsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUVyRTZDLE9BQU8sQ0FBQ1QsSUFBSSxDQUFDVSxRQUFRLENBQUM7SUFDdEJmLFdBQVcsQ0FBQ0ssSUFBSSxDQUFDVSxRQUFRLEVBQUVELE9BQU8sQ0FBQzdDLE1BQU0sRUFBRSxDQUFDLEVBQUUrQixXQUFXLENBQUMvQixNQUFNLENBQUM7SUFFakUsT0FBTzhDLFFBQVE7RUFDakI7RUFFQVosUUFBUUEsQ0FBQzdDLE1BQWMsRUFBRXVDLElBQVksRUFBRXBDLFFBQWdCLEVBQUU7SUFDdkQsTUFBTXlDLElBQUksR0FBRyxJQUFJLENBQUNjLE1BQU0sQ0FBQ3ZELFFBQVEsQ0FBQztJQUNsQyxNQUFNd0QsUUFBUSxHQUFHM0IsTUFBTSxDQUFDNEIsSUFBSSxDQUFDckIsSUFBSSxDQUFDc0IsV0FBVyxDQUFDLENBQUMsR0FBRzdELE1BQU0sQ0FBQzZELFdBQVcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQy9FLE9BQU8sSUFBSSxDQUFDYixPQUFPLENBQUNXLFFBQVEsRUFBRWYsSUFBSSxDQUFDO0VBQ3JDO0VBRUFjLE1BQU1BLENBQUNJLElBQVksRUFBRTtJQUNuQixNQUFNQyxhQUFhLEdBQUcvQixNQUFNLENBQUM0QixJQUFJLENBQUNFLElBQUksRUFBRSxNQUFNLENBQUM7SUFDL0MsT0FBTzlCLE1BQU0sQ0FBQzRCLElBQUksQ0FBQ0ksYUFBRyxDQUFDQyxXQUFXLENBQUNGLGFBQWEsQ0FBQyxDQUFDO0VBQ3BEO0VBRUFmLE9BQU9BLENBQUN6RCxJQUFZLEVBQUUyRSxHQUFXLEVBQUU7SUFDakMsT0FBT3ZHLE1BQU0sQ0FBQ3dHLFVBQVUsQ0FBQyxLQUFLLEVBQUVELEdBQUcsQ0FBQyxDQUFDRSxNQUFNLENBQUM3RSxJQUFJLENBQUMsQ0FBQzhFLE1BQU0sQ0FBQyxDQUFDO0VBQzVEO0FBQ0Y7QUFBQyxJQUFBQyxRQUFBLEdBQUFDLE9BQUEsQ0FBQW5HLE9BQUEsR0FFY2dCLG1CQUFtQjtBQUNsQ29GLE1BQU0sQ0FBQ0QsT0FBTyxHQUFHbkYsbUJBQW1CIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"ntlm-payload.js","names":["_writableTrackingBuffer","_interopRequireDefault","require","crypto","_interopRequireWildcard","_jsMd","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","NTLMResponsePayload","constructor","loginData","data","createResponse","toString","indent","challenge","client_nonce","createClientNonce","lmv2len","ntlmv2len","domain","username","userName","password","ntlmData","ntlmpacket","server_data","target","server_nonce","nonce","bufferLength","length","WritableTrackingBuffer","position","writeString","writeUInt32LE","baseIdx","dnIdx","unIdx","l2Idx","ntIdx","writeUInt16LE","lmv2Data","lmv2Response","copyFrom","genTime","Date","getTime","ntlmDataBuffer","ntlmv2Response","timestamp","createTimestamp","Buffer","alloc","nidx","writeUInt8","Math","ceil","random","user","serverNonce","targetInfo","clientNonce","mytime","hash","ntv2Hash","dataLength","copy","hmacMD5","time","tenthsOfAMicrosecond","BigInt","lo","Number","hi","result","newhash","response","ntHash","identity","from","toUpperCase","text","unicodeString","md4","arrayBuffer","createHmac","update","digest","_default","exports","module"],"sources":["../src/ntlm-payload.ts"],"sourcesContent":["import WritableTrackingBuffer from './tracking-buffer/writable-tracking-buffer';\nimport * as crypto from 'crypto';\nimport md4 from 'js-md4';\n\ninterface Options {\n domain: string;\n userName: string;\n password: string;\n ntlmpacket: {\n target: Buffer;\n nonce: Buffer;\n };\n}\n\nclass NTLMResponsePayload {\n declare data: Buffer;\n\n constructor(loginData: Options) {\n this.data = this.createResponse(loginData);\n }\n\n toString(indent = '') {\n return indent + 'NTLM Auth';\n }\n\n createResponse(challenge: Options) {\n const client_nonce = this.createClientNonce();\n const lmv2len = 24;\n const ntlmv2len = 16;\n const domain = challenge.domain;\n const username = challenge.userName;\n const password = challenge.password;\n const ntlmData = challenge.ntlmpacket;\n const server_data = ntlmData.target;\n const server_nonce = ntlmData.nonce;\n const bufferLength = 64 + (domain.length * 2) + (username.length * 2) + lmv2len + ntlmv2len + 8 + 8 + 8 + 4 + server_data.length + 4;\n const data = new WritableTrackingBuffer(bufferLength);\n data.position = 0;\n data.writeString('NTLMSSP\\u0000', 'utf8');\n data.writeUInt32LE(0x03);\n const baseIdx = 64;\n const dnIdx = baseIdx;\n const unIdx = dnIdx + domain.length * 2;\n const l2Idx = unIdx + username.length * 2;\n const ntIdx = l2Idx + lmv2len;\n data.writeUInt16LE(lmv2len);\n data.writeUInt16LE(lmv2len);\n data.writeUInt32LE(l2Idx);\n data.writeUInt16LE(ntlmv2len);\n data.writeUInt16LE(ntlmv2len);\n data.writeUInt32LE(ntIdx);\n data.writeUInt16LE(domain.length * 2);\n data.writeUInt16LE(domain.length * 2);\n data.writeUInt32LE(dnIdx);\n data.writeUInt16LE(username.length * 2);\n data.writeUInt16LE(username.length * 2);\n data.writeUInt32LE(unIdx);\n data.writeUInt16LE(0);\n data.writeUInt16LE(0);\n data.writeUInt32LE(baseIdx);\n data.writeUInt16LE(0);\n data.writeUInt16LE(0);\n data.writeUInt32LE(baseIdx);\n data.writeUInt16LE(0x8201);\n data.writeUInt16LE(0x08);\n data.writeString(domain, 'ucs2');\n data.writeString(username, 'ucs2');\n const lmv2Data = this.lmv2Response(domain, username, password, server_nonce, client_nonce);\n data.copyFrom(lmv2Data);\n const genTime = new Date().getTime();\n const ntlmDataBuffer = this.ntlmv2Response(domain, username, password, server_nonce, server_data, client_nonce, genTime);\n data.copyFrom(ntlmDataBuffer);\n data.writeUInt32LE(0x0101);\n data.writeUInt32LE(0x0000);\n const timestamp = this.createTimestamp(genTime);\n data.copyFrom(timestamp);\n data.copyFrom(client_nonce);\n data.writeUInt32LE(0x0000);\n data.copyFrom(server_data);\n data.writeUInt32LE(0x0000);\n return data.data;\n }\n\n createClientNonce() {\n const client_nonce = Buffer.alloc(8, 0);\n let nidx = 0;\n while (nidx < 8) {\n client_nonce.writeUInt8(Math.ceil(Math.random() * 255), nidx);\n nidx++;\n }\n return client_nonce;\n }\n\n ntlmv2Response(domain: string, user: string, password: string, serverNonce: Buffer, targetInfo: Buffer, clientNonce: Buffer, mytime: number) {\n const timestamp = this.createTimestamp(mytime);\n const hash = this.ntv2Hash(domain, user, password);\n const dataLength = 40 + targetInfo.length;\n const data = Buffer.alloc(dataLength, 0);\n serverNonce.copy(data, 0, 0, 8);\n data.writeUInt32LE(0x101, 8);\n data.writeUInt32LE(0x0, 12);\n timestamp.copy(data, 16, 0, 8);\n clientNonce.copy(data, 24, 0, 8);\n data.writeUInt32LE(0x0, 32);\n targetInfo.copy(data, 36, 0, targetInfo.length);\n data.writeUInt32LE(0x0, 36 + targetInfo.length);\n return this.hmacMD5(data, hash);\n }\n\n createTimestamp(time: number) {\n const tenthsOfAMicrosecond = (BigInt(time) + BigInt(11644473600)) * BigInt(10000000);\n\n const lo = Number(tenthsOfAMicrosecond & BigInt(0xffffffff));\n const hi = Number((tenthsOfAMicrosecond >> BigInt(32)) & BigInt(0xffffffff));\n\n const result = Buffer.alloc(8);\n result.writeUInt32LE(lo, 0);\n result.writeUInt32LE(hi, 4);\n return result;\n }\n\n lmv2Response(domain: string, user: string, password: string, serverNonce: Buffer, clientNonce: Buffer) {\n const hash = this.ntv2Hash(domain, user, password);\n const data = Buffer.alloc(serverNonce.length + clientNonce.length, 0);\n\n serverNonce.copy(data);\n clientNonce.copy(data, serverNonce.length, 0, clientNonce.length);\n\n const newhash = this.hmacMD5(data, hash);\n const response = Buffer.alloc(newhash.length + clientNonce.length, 0);\n\n newhash.copy(response);\n clientNonce.copy(response, newhash.length, 0, clientNonce.length);\n\n return response;\n }\n\n ntv2Hash(domain: string, user: string, password: string) {\n const hash = this.ntHash(password);\n const identity = Buffer.from(user.toUpperCase() + domain.toUpperCase(), 'ucs2');\n return this.hmacMD5(identity, hash);\n }\n\n ntHash(text: string) {\n const unicodeString = Buffer.from(text, 'ucs2');\n return Buffer.from(md4.arrayBuffer(unicodeString));\n }\n\n hmacMD5(data: Buffer, key: Buffer) {\n return crypto.createHmac('MD5', key).update(data).digest();\n }\n}\n\nexport default NTLMResponsePayload;\nmodule.exports = NTLMResponsePayload;\n"],"mappings":"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"}
1
+ {"version":3,"file":"ntlm-payload.js","names":["_writableTrackingBuffer","_interopRequireDefault","require","crypto","_interopRequireWildcard","_jsMd","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","NTLMResponsePayload","constructor","loginData","data","createResponse","toString","indent","challenge","client_nonce","createClientNonce","lmv2len","ntlmv2len","domain","username","userName","password","ntlmData","ntlmpacket","server_data","target","server_nonce","nonce","bufferLength","length","WritableTrackingBuffer","position","writeString","writeUInt32LE","baseIdx","dnIdx","unIdx","l2Idx","ntIdx","writeUInt16LE","lmv2Data","lmv2Response","copyFrom","genTime","Date","getTime","ntlmDataBuffer","ntlmv2Response","timestamp","createTimestamp","Buffer","alloc","nidx","writeUInt8","Math","ceil","random","user","serverNonce","targetInfo","clientNonce","mytime","hash","ntv2Hash","dataLength","copy","hmacMD5","time","tenthsOfAMicrosecond","BigInt","lo","Number","hi","result","newhash","response","ntHash","identity","from","toUpperCase","text","unicodeString","md4","arrayBuffer","key","createHmac","update","digest","_default","exports","module"],"sources":["../src/ntlm-payload.ts"],"sourcesContent":["import WritableTrackingBuffer from './tracking-buffer/writable-tracking-buffer';\nimport * as crypto from 'crypto';\nimport md4 from 'js-md4';\n\ninterface Options {\n domain: string;\n userName: string;\n password: string;\n ntlmpacket: {\n target: Buffer;\n nonce: Buffer;\n };\n}\n\nclass NTLMResponsePayload {\n declare data: Buffer;\n\n constructor(loginData: Options) {\n this.data = this.createResponse(loginData);\n }\n\n toString(indent = '') {\n return indent + 'NTLM Auth';\n }\n\n createResponse(challenge: Options) {\n const client_nonce = this.createClientNonce();\n const lmv2len = 24;\n const ntlmv2len = 16;\n const domain = challenge.domain;\n const username = challenge.userName;\n const password = challenge.password;\n const ntlmData = challenge.ntlmpacket;\n const server_data = ntlmData.target;\n const server_nonce = ntlmData.nonce;\n const bufferLength = 64 + (domain.length * 2) + (username.length * 2) + lmv2len + ntlmv2len + 8 + 8 + 8 + 4 + server_data.length + 4;\n const data = new WritableTrackingBuffer(bufferLength);\n data.position = 0;\n data.writeString('NTLMSSP\\u0000', 'utf8');\n data.writeUInt32LE(0x03);\n const baseIdx = 64;\n const dnIdx = baseIdx;\n const unIdx = dnIdx + domain.length * 2;\n const l2Idx = unIdx + username.length * 2;\n const ntIdx = l2Idx + lmv2len;\n data.writeUInt16LE(lmv2len);\n data.writeUInt16LE(lmv2len);\n data.writeUInt32LE(l2Idx);\n data.writeUInt16LE(ntlmv2len);\n data.writeUInt16LE(ntlmv2len);\n data.writeUInt32LE(ntIdx);\n data.writeUInt16LE(domain.length * 2);\n data.writeUInt16LE(domain.length * 2);\n data.writeUInt32LE(dnIdx);\n data.writeUInt16LE(username.length * 2);\n data.writeUInt16LE(username.length * 2);\n data.writeUInt32LE(unIdx);\n data.writeUInt16LE(0);\n data.writeUInt16LE(0);\n data.writeUInt32LE(baseIdx);\n data.writeUInt16LE(0);\n data.writeUInt16LE(0);\n data.writeUInt32LE(baseIdx);\n data.writeUInt16LE(0x8201);\n data.writeUInt16LE(0x08);\n data.writeString(domain, 'ucs2');\n data.writeString(username, 'ucs2');\n const lmv2Data = this.lmv2Response(domain, username, password, server_nonce, client_nonce);\n data.copyFrom(lmv2Data);\n const genTime = new Date().getTime();\n const ntlmDataBuffer = this.ntlmv2Response(domain, username, password, server_nonce, server_data, client_nonce, genTime);\n data.copyFrom(ntlmDataBuffer);\n data.writeUInt32LE(0x0101);\n data.writeUInt32LE(0x0000);\n const timestamp = this.createTimestamp(genTime);\n data.copyFrom(timestamp);\n data.copyFrom(client_nonce);\n data.writeUInt32LE(0x0000);\n data.copyFrom(server_data);\n data.writeUInt32LE(0x0000);\n return data.data;\n }\n\n createClientNonce() {\n const client_nonce = Buffer.alloc(8, 0);\n let nidx = 0;\n while (nidx < 8) {\n client_nonce.writeUInt8(Math.ceil(Math.random() * 255), nidx);\n nidx++;\n }\n return client_nonce;\n }\n\n ntlmv2Response(domain: string, user: string, password: string, serverNonce: Buffer, targetInfo: Buffer, clientNonce: Buffer, mytime: number) {\n const timestamp = this.createTimestamp(mytime);\n const hash = this.ntv2Hash(domain, user, password);\n const dataLength = 40 + targetInfo.length;\n const data = Buffer.alloc(dataLength, 0);\n serverNonce.copy(data, 0, 0, 8);\n data.writeUInt32LE(0x101, 8);\n data.writeUInt32LE(0x0, 12);\n timestamp.copy(data, 16, 0, 8);\n clientNonce.copy(data, 24, 0, 8);\n data.writeUInt32LE(0x0, 32);\n targetInfo.copy(data, 36, 0, targetInfo.length);\n data.writeUInt32LE(0x0, 36 + targetInfo.length);\n return this.hmacMD5(data, hash);\n }\n\n createTimestamp(time: number) {\n const tenthsOfAMicrosecond = (BigInt(time) + BigInt(11644473600)) * BigInt(10000000);\n\n const lo = Number(tenthsOfAMicrosecond & BigInt(0xffffffff));\n const hi = Number((tenthsOfAMicrosecond >> BigInt(32)) & BigInt(0xffffffff));\n\n const result = Buffer.alloc(8);\n result.writeUInt32LE(lo, 0);\n result.writeUInt32LE(hi, 4);\n return result;\n }\n\n lmv2Response(domain: string, user: string, password: string, serverNonce: Buffer, clientNonce: Buffer) {\n const hash = this.ntv2Hash(domain, user, password);\n const data = Buffer.alloc(serverNonce.length + clientNonce.length, 0);\n\n serverNonce.copy(data);\n clientNonce.copy(data, serverNonce.length, 0, clientNonce.length);\n\n const newhash = this.hmacMD5(data, hash);\n const response = Buffer.alloc(newhash.length + clientNonce.length, 0);\n\n newhash.copy(response);\n clientNonce.copy(response, newhash.length, 0, clientNonce.length);\n\n return response;\n }\n\n ntv2Hash(domain: string, user: string, password: string) {\n const hash = this.ntHash(password);\n const identity = Buffer.from(user.toUpperCase() + domain.toUpperCase(), 'ucs2');\n return this.hmacMD5(identity, hash);\n }\n\n ntHash(text: string) {\n const unicodeString = Buffer.from(text, 'ucs2');\n return Buffer.from(md4.arrayBuffer(unicodeString));\n }\n\n hmacMD5(data: Buffer, key: Buffer) {\n return crypto.createHmac('MD5', key).update(data).digest();\n }\n}\n\nexport default NTLMResponsePayload;\nmodule.exports = NTLMResponsePayload;\n"],"mappings":"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"}
package/lib/ntlm.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ /// <reference types="node" />
2
+ export declare function createNTLMRequest(options: {
3
+ domain: string;
4
+ workstation?: string;
5
+ }): Buffer;
@@ -0,0 +1,16 @@
1
+ /// <reference types="node" />
2
+ import { Duplex } from 'stream';
3
+ import Debug from './debug';
4
+ import Message from './message';
5
+ declare class OutgoingMessageStream extends Duplex {
6
+ packetSize: number;
7
+ debug: Debug;
8
+ bl: any;
9
+ currentMessage: Message | undefined;
10
+ constructor(debug: Debug, { packetSize }: {
11
+ packetSize: number;
12
+ });
13
+ _write(message: Message, _encoding: string, callback: (err?: Error | null) => void): void;
14
+ _read(_size: number): void;
15
+ }
16
+ export default OutgoingMessageStream;
@@ -76,7 +76,6 @@ class OutgoingMessageStream extends _stream.Duplex {
76
76
  }
77
77
  }
78
78
  }
79
- var _default = OutgoingMessageStream;
80
- exports.default = _default;
79
+ var _default = exports.default = OutgoingMessageStream;
81
80
  module.exports = OutgoingMessageStream;
82
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYmwiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9zdHJlYW0iLCJfcGFja2V0Iiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJPdXRnb2luZ01lc3NhZ2VTdHJlYW0iLCJEdXBsZXgiLCJjb25zdHJ1Y3RvciIsImRlYnVnIiwicGFja2V0U2l6ZSIsIndyaXRhYmxlT2JqZWN0TW9kZSIsImJsIiwiQnVmZmVyTGlzdCIsIm9uIiwicHVzaCIsIl93cml0ZSIsIm1lc3NhZ2UiLCJfZW5jb2RpbmciLCJjYWxsYmFjayIsImxlbmd0aCIsIkhFQURFUl9MRU5HVEgiLCJwYWNrZXROdW1iZXIiLCJjdXJyZW50TWVzc2FnZSIsImRhdGEiLCJpZ25vcmUiLCJhcHBlbmQiLCJzbGljZSIsImNvbnN1bWUiLCJwYWNrZXQiLCJQYWNrZXQiLCJ0eXBlIiwicGFja2V0SWQiLCJyZXNldENvbm5lY3Rpb24iLCJhZGREYXRhIiwiYnVmZmVyIiwicGF1c2UiLCJsYXN0IiwidW5kZWZpbmVkIiwiX3JlYWQiLCJfc2l6ZSIsInJlc3VtZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9vdXRnb2luZy1tZXNzYWdlLXN0cmVhbS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQnVmZmVyTGlzdCBmcm9tICdibCc7XG5pbXBvcnQgeyBEdXBsZXggfSBmcm9tICdzdHJlYW0nO1xuXG5pbXBvcnQgRGVidWcgZnJvbSAnLi9kZWJ1Zyc7XG5pbXBvcnQgTWVzc2FnZSBmcm9tICcuL21lc3NhZ2UnO1xuaW1wb3J0IHsgUGFja2V0LCBIRUFERVJfTEVOR1RIIH0gZnJvbSAnLi9wYWNrZXQnO1xuXG5jbGFzcyBPdXRnb2luZ01lc3NhZ2VTdHJlYW0gZXh0ZW5kcyBEdXBsZXgge1xuICBkZWNsYXJlIHBhY2tldFNpemU6IG51bWJlcjtcbiAgZGVjbGFyZSBkZWJ1ZzogRGVidWc7XG4gIGRlY2xhcmUgYmw6IGFueTtcblxuICBkZWNsYXJlIGN1cnJlbnRNZXNzYWdlOiBNZXNzYWdlIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKGRlYnVnOiBEZWJ1ZywgeyBwYWNrZXRTaXplIH06IHsgcGFja2V0U2l6ZTogbnVtYmVyIH0pIHtcbiAgICBzdXBlcih7IHdyaXRhYmxlT2JqZWN0TW9kZTogdHJ1ZSB9KTtcblxuICAgIHRoaXMucGFja2V0U2l6ZSA9IHBhY2tldFNpemU7XG4gICAgdGhpcy5kZWJ1ZyA9IGRlYnVnO1xuICAgIHRoaXMuYmwgPSBuZXcgQnVmZmVyTGlzdCgpO1xuXG4gICAgLy8gV2hlbiB0aGUgd3JpdGFibGUgc2lkZSBpcyBlbmRlZCwgcHVzaCBgbnVsbGBcbiAgICAvLyB0byBhbHNvIGVuZCB0aGUgcmVhZGFibGUgc2lkZS5cbiAgICB0aGlzLm9uKCdmaW5pc2gnLCAoKSA9PiB7XG4gICAgICB0aGlzLnB1c2gobnVsbCk7XG4gICAgfSk7XG4gIH1cblxuICBfd3JpdGUobWVzc2FnZTogTWVzc2FnZSwgX2VuY29kaW5nOiBzdHJpbmcsIGNhbGxiYWNrOiAoZXJyPzogRXJyb3IgfCBudWxsKSA9PiB2b2lkKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gdGhpcy5wYWNrZXRTaXplIC0gSEVBREVSX0xFTkdUSDtcbiAgICBsZXQgcGFja2V0TnVtYmVyID0gMDtcblxuICAgIHRoaXMuY3VycmVudE1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgIHRoaXMuY3VycmVudE1lc3NhZ2Uub24oJ2RhdGEnLCAoZGF0YTogQnVmZmVyKSA9PiB7XG4gICAgICBpZiAobWVzc2FnZS5pZ25vcmUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmJsLmFwcGVuZChkYXRhKTtcblxuICAgICAgd2hpbGUgKHRoaXMuYmwubGVuZ3RoID4gbGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmJsLnNsaWNlKDAsIGxlbmd0aCk7XG4gICAgICAgIHRoaXMuYmwuY29uc3VtZShsZW5ndGgpO1xuXG4gICAgICAgIC8vIFRPRE86IEdldCByaWQgb2YgY3JlYXRpbmcgYFBhY2tldGAgaW5zdGFuY2VzIGhlcmUuXG4gICAgICAgIGNvbnN0IHBhY2tldCA9IG5ldyBQYWNrZXQobWVzc2FnZS50eXBlKTtcbiAgICAgICAgcGFja2V0LnBhY2tldElkKHBhY2tldE51bWJlciArPSAxKTtcbiAgICAgICAgcGFja2V0LnJlc2V0Q29ubmVjdGlvbihtZXNzYWdlLnJlc2V0Q29ubmVjdGlvbik7XG4gICAgICAgIHBhY2tldC5hZGREYXRhKGRhdGEpO1xuXG4gICAgICAgIHRoaXMuZGVidWcucGFja2V0KCdTZW50JywgcGFja2V0KTtcbiAgICAgICAgdGhpcy5kZWJ1Zy5kYXRhKHBhY2tldCk7XG5cbiAgICAgICAgaWYgKHRoaXMucHVzaChwYWNrZXQuYnVmZmVyKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBtZXNzYWdlLnBhdXNlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuY3VycmVudE1lc3NhZ2Uub24oJ2VuZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmJsLnNsaWNlKCk7XG4gICAgICB0aGlzLmJsLmNvbnN1bWUoZGF0YS5sZW5ndGgpO1xuXG4gICAgICAvLyBUT0RPOiBHZXQgcmlkIG9mIGNyZWF0aW5nIGBQYWNrZXRgIGluc3RhbmNlcyBoZXJlLlxuICAgICAgY29uc3QgcGFja2V0ID0gbmV3IFBhY2tldChtZXNzYWdlLnR5cGUpO1xuICAgICAgcGFja2V0LnBhY2tldElkKHBhY2tldE51bWJlciArPSAxKTtcbiAgICAgIHBhY2tldC5yZXNldENvbm5lY3Rpb24obWVzc2FnZS5yZXNldENvbm5lY3Rpb24pO1xuICAgICAgcGFja2V0Lmxhc3QodHJ1ZSk7XG4gICAgICBwYWNrZXQuaWdub3JlKG1lc3NhZ2UuaWdub3JlKTtcbiAgICAgIHBhY2tldC5hZGREYXRhKGRhdGEpO1xuXG4gICAgICB0aGlzLmRlYnVnLnBhY2tldCgnU2VudCcsIHBhY2tldCk7XG4gICAgICB0aGlzLmRlYnVnLmRhdGEocGFja2V0KTtcblxuICAgICAgdGhpcy5wdXNoKHBhY2tldC5idWZmZXIpO1xuXG4gICAgICB0aGlzLmN1cnJlbnRNZXNzYWdlID0gdW5kZWZpbmVkO1xuXG4gICAgICBjYWxsYmFjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgX3JlYWQoX3NpemU6IG51bWJlcikge1xuICAgIC8vIElmIHdlIGRvIGhhdmUgYSBtZXNzYWdlLCByZXN1bWUgaXQgYW5kIGdldCBkYXRhIGZsb3dpbmcuXG4gICAgLy8gT3RoZXJ3aXNlLCB0aGVyZSBpcyBub3RoaW5nIHRvIGRvLlxuICAgIGlmICh0aGlzLmN1cnJlbnRNZXNzYWdlKSB7XG4gICAgICB0aGlzLmN1cnJlbnRNZXNzYWdlLnJlc3VtZSgpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBPdXRnb2luZ01lc3NhZ2VTdHJlYW07XG5tb2R1bGUuZXhwb3J0cyA9IE91dGdvaW5nTWVzc2FnZVN0cmVhbTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsR0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBSUEsSUFBQUUsT0FBQSxHQUFBRixPQUFBO0FBQWlELFNBQUFELHVCQUFBSSxHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdBQUFELEdBQUEsS0FBQUUsT0FBQSxFQUFBRixHQUFBO0FBRWpELE1BQU1HLHFCQUFxQixTQUFTQyxjQUFNLENBQUM7RUFPekNDLFdBQVdBLENBQUNDLEtBQVksRUFBRTtJQUFFQztFQUFtQyxDQUFDLEVBQUU7SUFDaEUsS0FBSyxDQUFDO01BQUVDLGtCQUFrQixFQUFFO0lBQUssQ0FBQyxDQUFDO0lBRW5DLElBQUksQ0FBQ0QsVUFBVSxHQUFHQSxVQUFVO0lBQzVCLElBQUksQ0FBQ0QsS0FBSyxHQUFHQSxLQUFLO0lBQ2xCLElBQUksQ0FBQ0csRUFBRSxHQUFHLElBQUlDLFdBQVUsQ0FBQyxD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
81
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYmwiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9zdHJlYW0iLCJfcGFja2V0Iiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJPdXRnb2luZ01lc3NhZ2VTdHJlYW0iLCJEdXBsZXgiLCJjb25zdHJ1Y3RvciIsImRlYnVnIiwicGFja2V0U2l6ZSIsIndyaXRhYmxlT2JqZWN0TW9kZSIsImJsIiwiQnVmZmVyTGlzdCIsIm9uIiwicHVzaCIsIl93cml0ZSIsIm1lc3NhZ2UiLCJfZW5jb2RpbmciLCJjYWxsYmFjayIsImxlbmd0aCIsIkhFQURFUl9MRU5HVEgiLCJwYWNrZXROdW1iZXIiLCJjdXJyZW50TWVzc2FnZSIsImRhdGEiLCJpZ25vcmUiLCJhcHBlbmQiLCJzbGljZSIsImNvbnN1bWUiLCJwYWNrZXQiLCJQYWNrZXQiLCJ0eXBlIiwicGFja2V0SWQiLCJyZXNldENvbm5lY3Rpb24iLCJhZGREYXRhIiwiYnVmZmVyIiwicGF1c2UiLCJsYXN0IiwidW5kZWZpbmVkIiwiX3JlYWQiLCJfc2l6ZSIsInJlc3VtZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9vdXRnb2luZy1tZXNzYWdlLXN0cmVhbS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQnVmZmVyTGlzdCBmcm9tICdibCc7XG5pbXBvcnQgeyBEdXBsZXggfSBmcm9tICdzdHJlYW0nO1xuXG5pbXBvcnQgRGVidWcgZnJvbSAnLi9kZWJ1Zyc7XG5pbXBvcnQgTWVzc2FnZSBmcm9tICcuL21lc3NhZ2UnO1xuaW1wb3J0IHsgUGFja2V0LCBIRUFERVJfTEVOR1RIIH0gZnJvbSAnLi9wYWNrZXQnO1xuXG5jbGFzcyBPdXRnb2luZ01lc3NhZ2VTdHJlYW0gZXh0ZW5kcyBEdXBsZXgge1xuICBkZWNsYXJlIHBhY2tldFNpemU6IG51bWJlcjtcbiAgZGVjbGFyZSBkZWJ1ZzogRGVidWc7XG4gIGRlY2xhcmUgYmw6IGFueTtcblxuICBkZWNsYXJlIGN1cnJlbnRNZXNzYWdlOiBNZXNzYWdlIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKGRlYnVnOiBEZWJ1ZywgeyBwYWNrZXRTaXplIH06IHsgcGFja2V0U2l6ZTogbnVtYmVyIH0pIHtcbiAgICBzdXBlcih7IHdyaXRhYmxlT2JqZWN0TW9kZTogdHJ1ZSB9KTtcblxuICAgIHRoaXMucGFja2V0U2l6ZSA9IHBhY2tldFNpemU7XG4gICAgdGhpcy5kZWJ1ZyA9IGRlYnVnO1xuICAgIHRoaXMuYmwgPSBuZXcgQnVmZmVyTGlzdCgpO1xuXG4gICAgLy8gV2hlbiB0aGUgd3JpdGFibGUgc2lkZSBpcyBlbmRlZCwgcHVzaCBgbnVsbGBcbiAgICAvLyB0byBhbHNvIGVuZCB0aGUgcmVhZGFibGUgc2lkZS5cbiAgICB0aGlzLm9uKCdmaW5pc2gnLCAoKSA9PiB7XG4gICAgICB0aGlzLnB1c2gobnVsbCk7XG4gICAgfSk7XG4gIH1cblxuICBfd3JpdGUobWVzc2FnZTogTWVzc2FnZSwgX2VuY29kaW5nOiBzdHJpbmcsIGNhbGxiYWNrOiAoZXJyPzogRXJyb3IgfCBudWxsKSA9PiB2b2lkKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gdGhpcy5wYWNrZXRTaXplIC0gSEVBREVSX0xFTkdUSDtcbiAgICBsZXQgcGFja2V0TnVtYmVyID0gMDtcblxuICAgIHRoaXMuY3VycmVudE1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgIHRoaXMuY3VycmVudE1lc3NhZ2Uub24oJ2RhdGEnLCAoZGF0YTogQnVmZmVyKSA9PiB7XG4gICAgICBpZiAobWVzc2FnZS5pZ25vcmUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmJsLmFwcGVuZChkYXRhKTtcblxuICAgICAgd2hpbGUgKHRoaXMuYmwubGVuZ3RoID4gbGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmJsLnNsaWNlKDAsIGxlbmd0aCk7XG4gICAgICAgIHRoaXMuYmwuY29uc3VtZShsZW5ndGgpO1xuXG4gICAgICAgIC8vIFRPRE86IEdldCByaWQgb2YgY3JlYXRpbmcgYFBhY2tldGAgaW5zdGFuY2VzIGhlcmUuXG4gICAgICAgIGNvbnN0IHBhY2tldCA9IG5ldyBQYWNrZXQobWVzc2FnZS50eXBlKTtcbiAgICAgICAgcGFja2V0LnBhY2tldElkKHBhY2tldE51bWJlciArPSAxKTtcbiAgICAgICAgcGFja2V0LnJlc2V0Q29ubmVjdGlvbihtZXNzYWdlLnJlc2V0Q29ubmVjdGlvbik7XG4gICAgICAgIHBhY2tldC5hZGREYXRhKGRhdGEpO1xuXG4gICAgICAgIHRoaXMuZGVidWcucGFja2V0KCdTZW50JywgcGFja2V0KTtcbiAgICAgICAgdGhpcy5kZWJ1Zy5kYXRhKHBhY2tldCk7XG5cbiAgICAgICAgaWYgKHRoaXMucHVzaChwYWNrZXQuYnVmZmVyKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBtZXNzYWdlLnBhdXNlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuY3VycmVudE1lc3NhZ2Uub24oJ2VuZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmJsLnNsaWNlKCk7XG4gICAgICB0aGlzLmJsLmNvbnN1bWUoZGF0YS5sZW5ndGgpO1xuXG4gICAgICAvLyBUT0RPOiBHZXQgcmlkIG9mIGNyZWF0aW5nIGBQYWNrZXRgIGluc3RhbmNlcyBoZXJlLlxuICAgICAgY29uc3QgcGFja2V0ID0gbmV3IFBhY2tldChtZXNzYWdlLnR5cGUpO1xuICAgICAgcGFja2V0LnBhY2tldElkKHBhY2tldE51bWJlciArPSAxKTtcbiAgICAgIHBhY2tldC5yZXNldENvbm5lY3Rpb24obWVzc2FnZS5yZXNldENvbm5lY3Rpb24pO1xuICAgICAgcGFja2V0Lmxhc3QodHJ1ZSk7XG4gICAgICBwYWNrZXQuaWdub3JlKG1lc3NhZ2UuaWdub3JlKTtcbiAgICAgIHBhY2tldC5hZGREYXRhKGRhdGEpO1xuXG4gICAgICB0aGlzLmRlYnVnLnBhY2tldCgnU2VudCcsIHBhY2tldCk7XG4gICAgICB0aGlzLmRlYnVnLmRhdGEocGFja2V0KTtcblxuICAgICAgdGhpcy5wdXNoKHBhY2tldC5idWZmZXIpO1xuXG4gICAgICB0aGlzLmN1cnJlbnRNZXNzYWdlID0gdW5kZWZpbmVkO1xuXG4gICAgICBjYWxsYmFjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgX3JlYWQoX3NpemU6IG51bWJlcikge1xuICAgIC8vIElmIHdlIGRvIGhhdmUgYSBtZXNzYWdlLCByZXN1bWUgaXQgYW5kIGdldCBkYXRhIGZsb3dpbmcuXG4gICAgLy8gT3RoZXJ3aXNlLCB0aGVyZSBpcyBub3RoaW5nIHRvIGRvLlxuICAgIGlmICh0aGlzLmN1cnJlbnRNZXNzYWdlKSB7XG4gICAgICB0aGlzLmN1cnJlbnRNZXNzYWdlLnJlc3VtZSgpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBPdXRnb2luZ01lc3NhZ2VTdHJlYW07XG5tb2R1bGUuZXhwb3J0cyA9IE91dGdvaW5nTWVzc2FnZVN0cmVhbTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsR0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBSUEsSUFBQUUsT0FBQSxHQUFBRixPQUFBO0FBQWlELFNBQUFELHVCQUFBSSxHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdBQUFELEdBQUEsS0FBQUUsT0FBQSxFQUFBRixHQUFBO0FBRWpELE1BQU1HLHFCQUFxQixTQUFTQyxjQUFNLENBQUM7RUFPekNDLFdBQVdBLENBQUNDLEtBQVksRUFBRTtJQUFFQztFQUFtQyxDQUFDLEVBQUU7SUFDaEUsS0FBSyxDQUFDO01BQUVDLGtCQUFrQixFQUFFO0lBQUssQ0FBQyxDQUFDO0lBRW5DLElBQUksQ0FBQ0QsVUFBVSxHQUFHQSxVQUFVO0lBQzVCLElBQUksQ0FBQ0QsS0FBSyxHQUFHQSxLQUFLO0lBQ2xCLElBQUksQ0FBQ0csRUFBRSxHQUFHLElBQUlDLFdBQVUsQ0FBQyxD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
@@ -1 +1 @@
1
- {"version":3,"file":"outgoing-message-stream.js","names":["_bl","_interopRequireDefault","require","_stream","_packet","obj","__esModule","default","OutgoingMessageStream","Duplex","constructor","debug","packetSize","writableObjectMode","bl","BufferList","on","push","_write","message","_encoding","callback","length","HEADER_LENGTH","packetNumber","currentMessage","data","ignore","append","slice","consume","packet","Packet","type","packetId","resetConnection","addData","buffer","pause","last","undefined","_read","_size","resume","_default","exports","module"],"sources":["../src/outgoing-message-stream.ts"],"sourcesContent":["import BufferList from 'bl';\nimport { Duplex } from 'stream';\n\nimport Debug from './debug';\nimport Message from './message';\nimport { Packet, HEADER_LENGTH } from './packet';\n\nclass OutgoingMessageStream extends Duplex {\n declare packetSize: number;\n declare debug: Debug;\n declare bl: any;\n\n declare currentMessage: Message | undefined;\n\n constructor(debug: Debug, { packetSize }: { packetSize: number }) {\n super({ writableObjectMode: true });\n\n this.packetSize = packetSize;\n this.debug = debug;\n this.bl = new BufferList();\n\n // When the writable side is ended, push `null`\n // to also end the readable side.\n this.on('finish', () => {\n this.push(null);\n });\n }\n\n _write(message: Message, _encoding: string, callback: (err?: Error | null) => void) {\n const length = this.packetSize - HEADER_LENGTH;\n let packetNumber = 0;\n\n this.currentMessage = message;\n this.currentMessage.on('data', (data: Buffer) => {\n if (message.ignore) {\n return;\n }\n\n this.bl.append(data);\n\n while (this.bl.length > length) {\n const data = this.bl.slice(0, length);\n this.bl.consume(length);\n\n // TODO: Get rid of creating `Packet` instances here.\n const packet = new Packet(message.type);\n packet.packetId(packetNumber += 1);\n packet.resetConnection(message.resetConnection);\n packet.addData(data);\n\n this.debug.packet('Sent', packet);\n this.debug.data(packet);\n\n if (this.push(packet.buffer) === false) {\n message.pause();\n }\n }\n });\n\n this.currentMessage.on('end', () => {\n const data = this.bl.slice();\n this.bl.consume(data.length);\n\n // TODO: Get rid of creating `Packet` instances here.\n const packet = new Packet(message.type);\n packet.packetId(packetNumber += 1);\n packet.resetConnection(message.resetConnection);\n packet.last(true);\n packet.ignore(message.ignore);\n packet.addData(data);\n\n this.debug.packet('Sent', packet);\n this.debug.data(packet);\n\n this.push(packet.buffer);\n\n this.currentMessage = undefined;\n\n callback();\n });\n }\n\n _read(_size: number) {\n // If we do have a message, resume it and get data flowing.\n // Otherwise, there is nothing to do.\n if (this.currentMessage) {\n this.currentMessage.resume();\n }\n }\n}\n\nexport default OutgoingMessageStream;\nmodule.exports = OutgoingMessageStream;\n"],"mappings":"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"}
1
+ {"version":3,"file":"outgoing-message-stream.js","names":["_bl","_interopRequireDefault","require","_stream","_packet","obj","__esModule","default","OutgoingMessageStream","Duplex","constructor","debug","packetSize","writableObjectMode","bl","BufferList","on","push","_write","message","_encoding","callback","length","HEADER_LENGTH","packetNumber","currentMessage","data","ignore","append","slice","consume","packet","Packet","type","packetId","resetConnection","addData","buffer","pause","last","undefined","_read","_size","resume","_default","exports","module"],"sources":["../src/outgoing-message-stream.ts"],"sourcesContent":["import BufferList from 'bl';\nimport { Duplex } from 'stream';\n\nimport Debug from './debug';\nimport Message from './message';\nimport { Packet, HEADER_LENGTH } from './packet';\n\nclass OutgoingMessageStream extends Duplex {\n declare packetSize: number;\n declare debug: Debug;\n declare bl: any;\n\n declare currentMessage: Message | undefined;\n\n constructor(debug: Debug, { packetSize }: { packetSize: number }) {\n super({ writableObjectMode: true });\n\n this.packetSize = packetSize;\n this.debug = debug;\n this.bl = new BufferList();\n\n // When the writable side is ended, push `null`\n // to also end the readable side.\n this.on('finish', () => {\n this.push(null);\n });\n }\n\n _write(message: Message, _encoding: string, callback: (err?: Error | null) => void) {\n const length = this.packetSize - HEADER_LENGTH;\n let packetNumber = 0;\n\n this.currentMessage = message;\n this.currentMessage.on('data', (data: Buffer) => {\n if (message.ignore) {\n return;\n }\n\n this.bl.append(data);\n\n while (this.bl.length > length) {\n const data = this.bl.slice(0, length);\n this.bl.consume(length);\n\n // TODO: Get rid of creating `Packet` instances here.\n const packet = new Packet(message.type);\n packet.packetId(packetNumber += 1);\n packet.resetConnection(message.resetConnection);\n packet.addData(data);\n\n this.debug.packet('Sent', packet);\n this.debug.data(packet);\n\n if (this.push(packet.buffer) === false) {\n message.pause();\n }\n }\n });\n\n this.currentMessage.on('end', () => {\n const data = this.bl.slice();\n this.bl.consume(data.length);\n\n // TODO: Get rid of creating `Packet` instances here.\n const packet = new Packet(message.type);\n packet.packetId(packetNumber += 1);\n packet.resetConnection(message.resetConnection);\n packet.last(true);\n packet.ignore(message.ignore);\n packet.addData(data);\n\n this.debug.packet('Sent', packet);\n this.debug.data(packet);\n\n this.push(packet.buffer);\n\n this.currentMessage = undefined;\n\n callback();\n });\n }\n\n _read(_size: number) {\n // If we do have a message, resume it and get data flowing.\n // Otherwise, there is nothing to do.\n if (this.currentMessage) {\n this.currentMessage.resume();\n }\n }\n}\n\nexport default OutgoingMessageStream;\nmodule.exports = OutgoingMessageStream;\n"],"mappings":";;;;;;AAAA,IAAAA,GAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAIA,IAAAE,OAAA,GAAAF,OAAA;AAAiD,SAAAD,uBAAAI,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAEjD,MAAMG,qBAAqB,SAASC,cAAM,CAAC;EAOzCC,WAAWA,CAACC,KAAY,EAAE;IAAEC;EAAmC,CAAC,EAAE;IAChE,KAAK,CAAC;MAAEC,kBAAkB,EAAE;IAAK,CAAC,CAAC;IAEnC,IAAI,CAACD,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAACD,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACG,EAAE,GAAG,IAAIC,WAAU,CAAC,CAAC;;IAE1B;IACA;IACA,IAAI,CAACC,EAAE,CAAC,QAAQ,EAAE,MAAM;MACtB,IAAI,CAACC,IAAI,CAAC,IAAI,CAAC;IACjB,CAAC,CAAC;EACJ;EAEAC,MAAMA,CAACC,OAAgB,EAAEC,SAAiB,EAAEC,QAAsC,EAAE;IAClF,MAAMC,MAAM,GAAG,IAAI,CAACV,UAAU,GAAGW,qBAAa;IAC9C,IAAIC,YAAY,GAAG,CAAC;IAEpB,IAAI,CAACC,cAAc,GAAGN,OAAO;IAC7B,IAAI,CAACM,cAAc,CAACT,EAAE,CAAC,MAAM,EAAGU,IAAY,IAAK;MAC/C,IAAIP,OAAO,CAACQ,MAAM,EAAE;QAClB;MACF;MAEA,IAAI,CAACb,EAAE,CAACc,MAAM,CAACF,IAAI,CAAC;MAEpB,OAAO,IAAI,CAACZ,EAAE,CAACQ,MAAM,GAAGA,MAAM,EAAE;QAC9B,MAAMI,IAAI,GAAG,IAAI,CAACZ,EAAE,CAACe,KAAK,CAAC,CAAC,EAAEP,MAAM,CAAC;QACrC,IAAI,CAACR,EAAE,CAACgB,OAAO,CAACR,MAAM,CAAC;;QAEvB;QACA,MAAMS,MAAM,GAAG,IAAIC,cAAM,CAACb,OAAO,CAACc,IAAI,CAAC;QACvCF,MAAM,CAACG,QAAQ,CAACV,YAAY,IAAI,CAAC,CAAC;QAClCO,MAAM,CAACI,eAAe,CAAChB,OAAO,CAACgB,eAAe,CAAC;QAC/CJ,MAAM,CAACK,OAAO,CAACV,IAAI,CAAC;QAEpB,IAAI,CAACf,KAAK,CAACoB,MAAM,CAAC,MAAM,EAAEA,MAAM,CAAC;QACjC,IAAI,CAACpB,KAAK,CAACe,IAAI,CAACK,MAAM,CAAC;QAEvB,IAAI,IAAI,CAACd,IAAI,CAACc,MAAM,CAACM,MAAM,CAAC,KAAK,KAAK,EAAE;UACtClB,OAAO,CAACmB,KAAK,CAAC,CAAC;QACjB;MACF;IACF,CAAC,CAAC;IAEF,IAAI,CAACb,cAAc,CAACT,EAAE,CAAC,KAAK,EAAE,MAAM;MAClC,MAAMU,IAAI,GAAG,IAAI,CAACZ,EAAE,CAACe,KAAK,CAAC,CAAC;MAC5B,IAAI,CAACf,EAAE,CAACgB,OAAO,CAACJ,IAAI,CAACJ,MAAM,CAAC;;MAE5B;MACA,MAAMS,MAAM,GAAG,IAAIC,cAAM,CAACb,OAAO,CAACc,IAAI,CAAC;MACvCF,MAAM,CAACG,QAAQ,CAACV,YAAY,IAAI,CAAC,CAAC;MAClCO,MAAM,CAACI,eAAe,CAAChB,OAAO,CAACgB,eAAe,CAAC;MAC/CJ,MAAM,CAACQ,IAAI,CAAC,IAAI,CAAC;MACjBR,MAAM,CAACJ,MAAM,CAACR,OAAO,CAACQ,MAAM,CAAC;MAC7BI,MAAM,CAACK,OAAO,CAACV,IAAI,CAAC;MAEpB,IAAI,CAACf,KAAK,CAACoB,MAAM,CAAC,MAAM,EAAEA,MAAM,CAAC;MACjC,IAAI,CAACpB,KAAK,CAACe,IAAI,CAACK,MAAM,CAAC;MAEvB,IAAI,CAACd,IAAI,CAACc,MAAM,CAACM,MAAM,CAAC;MAExB,IAAI,CAACZ,cAAc,GAAGe,SAAS;MAE/BnB,QAAQ,CAAC,CAAC;IACZ,CAAC,CAAC;EACJ;EAEAoB,KAAKA,CAACC,KAAa,EAAE;IACnB;IACA;IACA,IAAI,IAAI,CAACjB,cAAc,EAAE;MACvB,IAAI,CAACA,cAAc,CAACkB,MAAM,CAAC,CAAC;IAC9B;EACF;AACF;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAtC,OAAA,GAEcC,qBAAqB;AACpCsC,MAAM,CAACD,OAAO,GAAGrC,qBAAqB"}