@jsprismarine/nbt 0.13.1 → 0.13.5

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 (66) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/package.json +10 -7
  3. package/dist/Allocation.cjs.cjs +0 -14
  4. package/dist/Allocation.d.ts +0 -7
  5. package/dist/Allocation.d.ts.map +0 -1
  6. package/dist/Allocation.es.js +0 -10
  7. package/dist/ByteOrder.cjs.cjs +0 -12
  8. package/dist/ByteOrder.d.ts +0 -5
  9. package/dist/ByteOrder.d.ts.map +0 -1
  10. package/dist/ByteOrder.es.js +0 -8
  11. package/dist/NBTDefinitions.cjs.cjs +0 -22
  12. package/dist/NBTDefinitions.d.ts +0 -15
  13. package/dist/NBTDefinitions.d.ts.map +0 -1
  14. package/dist/NBTDefinitions.es.js +0 -18
  15. package/dist/NBTReader.cjs.cjs +0 -163
  16. package/dist/NBTReader.d.ts +0 -12
  17. package/dist/NBTReader.d.ts.map +0 -1
  18. package/dist/NBTReader.es.js +0 -159
  19. package/dist/NBTStreamReader.cjs.cjs +0 -119
  20. package/dist/NBTStreamReader.d.ts +0 -31
  21. package/dist/NBTStreamReader.d.ts.map +0 -1
  22. package/dist/NBTStreamReader.es.js +0 -115
  23. package/dist/NBTTagCompound.cjs.cjs +0 -151
  24. package/dist/NBTTagCompound.d.ts +0 -29
  25. package/dist/NBTTagCompound.d.ts.map +0 -1
  26. package/dist/NBTTagCompound.es.js +0 -142
  27. package/dist/NBTWriter.cjs.cjs +0 -238
  28. package/dist/NBTWriter.d.ts +0 -26
  29. package/dist/NBTWriter.d.ts.map +0 -1
  30. package/dist/NBTWriter.es.js +0 -234
  31. package/dist/index.cjs.cjs +0 -22
  32. package/dist/index.d.ts +0 -9
  33. package/dist/index.d.ts.map +0 -1
  34. package/dist/index.es.js +0 -10
  35. package/dist/types/ByteVal.cjs.cjs +0 -16
  36. package/dist/types/ByteVal.d.ts +0 -6
  37. package/dist/types/ByteVal.d.ts.map +0 -1
  38. package/dist/types/ByteVal.es.js +0 -12
  39. package/dist/types/DoubleVal.cjs.cjs +0 -16
  40. package/dist/types/DoubleVal.d.ts +0 -6
  41. package/dist/types/DoubleVal.d.ts.map +0 -1
  42. package/dist/types/DoubleVal.es.js +0 -12
  43. package/dist/types/FloatVal.cjs.cjs +0 -16
  44. package/dist/types/FloatVal.d.ts +0 -6
  45. package/dist/types/FloatVal.d.ts.map +0 -1
  46. package/dist/types/FloatVal.es.js +0 -12
  47. package/dist/types/LongVal.cjs.cjs +0 -16
  48. package/dist/types/LongVal.d.ts +0 -6
  49. package/dist/types/LongVal.d.ts.map +0 -1
  50. package/dist/types/LongVal.es.js +0 -12
  51. package/dist/types/NumberVal.cjs.cjs +0 -16
  52. package/dist/types/NumberVal.d.ts +0 -6
  53. package/dist/types/NumberVal.d.ts.map +0 -1
  54. package/dist/types/NumberVal.es.js +0 -12
  55. package/dist/types/ShortVal.cjs.cjs +0 -16
  56. package/dist/types/ShortVal.d.ts +0 -6
  57. package/dist/types/ShortVal.d.ts.map +0 -1
  58. package/dist/types/ShortVal.es.js +0 -12
  59. package/dist/types/StringVal.cjs.cjs +0 -16
  60. package/dist/types/StringVal.d.ts +0 -6
  61. package/dist/types/StringVal.d.ts.map +0 -1
  62. package/dist/types/StringVal.es.js +0 -12
  63. package/dist/types/Types.cjs.cjs +0 -22
  64. package/dist/types/Types.d.ts +0 -9
  65. package/dist/types/Types.d.ts.map +0 -1
  66. package/dist/types/Types.es.js +0 -8
package/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # @jsprismarine/nbt
2
2
 
3
+ ## 0.13.5
4
+
5
+ ### Patch Changes
6
+
7
+ - [`5a9f6d3`](https://github.com/JSPrismarine/JSPrismarine/commit/5a9f6d3459722aa9fe2d18b225eb939a6ddbca51) Thanks [@filiphsps](https://github.com/filiphsps)! - Force-republish all packages at 0.13.4 to recover from a broken release pipeline.
8
+
9
+ Previous attempts to publish 0.13.3 left the npm registry in an inconsistent state: a handful of packages (`brigadier`, `client`, `color-parser`, `errors`, `prismarine`, `raknet`) were pushed under the `unstable` dist-tag at the non-snapshot version `0.13.3`, while the rest failed mid-publish. Rather than try to repair 0.13.3 in place, we're skipping it entirely and resyncing every package on `latest` at 0.13.4.
10
+
11
+ ## 0.13.2
12
+
3
13
  ## 0.13.1
4
14
 
5
15
  ## 0.13.0
package/package.json CHANGED
@@ -1,8 +1,11 @@
1
1
  {
2
2
  "name": "@jsprismarine/nbt",
3
- "version": "0.13.1",
3
+ "version": "0.13.5",
4
4
  "description": "Minecraft: Bedrock Edition NBT parser/writer",
5
5
  "sideEffects": false,
6
+ "publishConfig": {
7
+ "access": "public"
8
+ },
6
9
  "type": "module",
7
10
  "files": [
8
11
  "dist",
@@ -40,12 +43,12 @@
40
43
  "license": "MIT",
41
44
  "homepage": "https://github.com/JSPrismarine/JSPrismarine/tree/master/packages/nbt",
42
45
  "devDependencies": {
43
- "@types/node": "22.15.3",
44
- "glob": "11.0.2",
45
- "rimraf": "6.0.1",
46
- "typescript": "5.5.2",
47
- "vite": "6.3.4",
48
- "vitest": "3.1.2"
46
+ "@types/node": "24.12.4",
47
+ "glob": "13.0.6",
48
+ "rimraf": "6.1.3",
49
+ "typescript": "5.9.3",
50
+ "vite": "7.3.3",
51
+ "vitest": "4.1.6"
49
52
  },
50
53
  "dependencies": {
51
54
  "@jsprismarine/jsbinaryutils": "5.5.3"
@@ -1,14 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
-
5
- var Allocation = /* @__PURE__ */ ((Allocation2) => {
6
- Allocation2[Allocation2["ARRAY_LIST"] = 40] = "ARRAY_LIST";
7
- Allocation2[Allocation2["REFERENCE"] = 4] = "REFERENCE";
8
- Allocation2[Allocation2["STRING"] = 48] = "STRING";
9
- Allocation2[Allocation2["COMPOUND"] = 72] = "COMPOUND";
10
- return Allocation2;
11
- })(Allocation || {});
12
-
13
- exports.Allocation = Allocation;
14
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWxsb2NhdGlvbi5janMuY2pzIiwic291cmNlcyI6WyIuLi9zcmMvQWxsb2NhdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBBbGxvY2F0aW9uIHtcbiAgICBBUlJBWV9MSVNUID0gNDAsXG4gICAgUkVGRVJFTkNFID0gNCxcbiAgICBTVFJJTkcgPSA0OCxcbiAgICBDT01QT1VORCA9IDcyXG59XG4iXSwibmFtZXMiOlsiQWxsb2NhdGlvbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUFZLElBQUEsVUFBQSxxQkFBQUEsV0FBTCxLQUFBO0FBQ0gsRUFBQUEsV0FBQUEsQ0FBQUEsV0FBQUEsQ0FBQSxnQkFBYSxFQUFiLENBQUEsR0FBQSxZQUFBO0FBQ0EsRUFBQUEsV0FBQUEsQ0FBQUEsV0FBQUEsQ0FBQSxlQUFZLENBQVosQ0FBQSxHQUFBLFdBQUE7QUFDQSxFQUFBQSxXQUFBQSxDQUFBQSxXQUFBQSxDQUFBLFlBQVMsRUFBVCxDQUFBLEdBQUEsUUFBQTtBQUNBLEVBQUFBLFdBQUFBLENBQUFBLFdBQUFBLENBQUEsY0FBVyxFQUFYLENBQUEsR0FBQSxVQUFBO0FBSlEsRUFBQUEsT0FBQUEsV0FBQUE7QUFBQSxDQUFBLEVBQUEsVUFBQSxJQUFBLEVBQUE7Ozs7In0=
@@ -1,7 +0,0 @@
1
- export declare enum Allocation {
2
- ARRAY_LIST = 40,
3
- REFERENCE = 4,
4
- STRING = 48,
5
- COMPOUND = 72
6
- }
7
- //# sourceMappingURL=Allocation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Allocation.d.ts","sourceRoot":"","sources":["../src/Allocation.ts"],"names":[],"mappings":"AAAA,oBAAY,UAAU;IAClB,UAAU,KAAK;IACf,SAAS,IAAI;IACb,MAAM,KAAK;IACX,QAAQ,KAAK;CAChB"}
@@ -1,10 +0,0 @@
1
- var Allocation = /* @__PURE__ */ ((Allocation2) => {
2
- Allocation2[Allocation2["ARRAY_LIST"] = 40] = "ARRAY_LIST";
3
- Allocation2[Allocation2["REFERENCE"] = 4] = "REFERENCE";
4
- Allocation2[Allocation2["STRING"] = 48] = "STRING";
5
- Allocation2[Allocation2["COMPOUND"] = 72] = "COMPOUND";
6
- return Allocation2;
7
- })(Allocation || {});
8
-
9
- export { Allocation };
10
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWxsb2NhdGlvbi5lcy5qcyIsInNvdXJjZXMiOlsiLi4vc3JjL0FsbG9jYXRpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gQWxsb2NhdGlvbiB7XG4gICAgQVJSQVlfTElTVCA9IDQwLFxuICAgIFJFRkVSRU5DRSA9IDQsXG4gICAgU1RSSU5HID0gNDgsXG4gICAgQ09NUE9VTkQgPSA3MlxufVxuIl0sIm5hbWVzIjpbIkFsbG9jYXRpb24iXSwibWFwcGluZ3MiOiJBQUFZLElBQUEsVUFBQSxxQkFBQUEsV0FBTCxLQUFBO0FBQ0gsRUFBQUEsV0FBQUEsQ0FBQUEsV0FBQUEsQ0FBQSxnQkFBYSxFQUFiLENBQUEsR0FBQSxZQUFBO0FBQ0EsRUFBQUEsV0FBQUEsQ0FBQUEsV0FBQUEsQ0FBQSxlQUFZLENBQVosQ0FBQSxHQUFBLFdBQUE7QUFDQSxFQUFBQSxXQUFBQSxDQUFBQSxXQUFBQSxDQUFBLFlBQVMsRUFBVCxDQUFBLEdBQUEsUUFBQTtBQUNBLEVBQUFBLFdBQUFBLENBQUFBLFdBQUFBLENBQUEsY0FBVyxFQUFYLENBQUEsR0FBQSxVQUFBO0FBSlEsRUFBQUEsT0FBQUEsV0FBQUE7QUFBQSxDQUFBLEVBQUEsVUFBQSxJQUFBLEVBQUE7Ozs7In0=
@@ -1,12 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
-
5
- var ByteOrder = /* @__PURE__ */ ((ByteOrder2) => {
6
- ByteOrder2[ByteOrder2["BIG_ENDIAN"] = 0] = "BIG_ENDIAN";
7
- ByteOrder2[ByteOrder2["LITTLE_ENDIAN"] = 1] = "LITTLE_ENDIAN";
8
- return ByteOrder2;
9
- })(ByteOrder || {});
10
-
11
- exports.ByteOrder = ByteOrder;
12
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnl0ZU9yZGVyLmNqcy5janMiLCJzb3VyY2VzIjpbIi4uL3NyYy9CeXRlT3JkZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gQnl0ZU9yZGVyIHtcbiAgICBCSUdfRU5ESUFOLFxuICAgIExJVFRMRV9FTkRJQU5cbn1cbiJdLCJuYW1lcyI6WyJCeXRlT3JkZXIiXSwibWFwcGluZ3MiOiI7Ozs7QUFBWSxJQUFBLFNBQUEscUJBQUFBLFVBQUwsS0FBQTtBQUNILEVBQUFBLFVBQUEsQ0FBQSxVQUFBLENBQUEsWUFBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBLEdBQUEsWUFBQTtBQUNBLEVBQUFBLFVBQUEsQ0FBQSxVQUFBLENBQUEsZUFBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBLEdBQUEsZUFBQTtBQUZRLEVBQUFBLE9BQUFBLFVBQUFBO0FBQUEsQ0FBQSxFQUFBLFNBQUEsSUFBQSxFQUFBOzs7OyJ9
@@ -1,5 +0,0 @@
1
- export declare enum ByteOrder {
2
- BIG_ENDIAN = 0,
3
- LITTLE_ENDIAN = 1
4
- }
5
- //# sourceMappingURL=ByteOrder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ByteOrder.d.ts","sourceRoot":"","sources":["../src/ByteOrder.ts"],"names":[],"mappings":"AAAA,oBAAY,SAAS;IACjB,UAAU,IAAA;IACV,aAAa,IAAA;CAChB"}
@@ -1,8 +0,0 @@
1
- var ByteOrder = /* @__PURE__ */ ((ByteOrder2) => {
2
- ByteOrder2[ByteOrder2["BIG_ENDIAN"] = 0] = "BIG_ENDIAN";
3
- ByteOrder2[ByteOrder2["LITTLE_ENDIAN"] = 1] = "LITTLE_ENDIAN";
4
- return ByteOrder2;
5
- })(ByteOrder || {});
6
-
7
- export { ByteOrder };
8
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnl0ZU9yZGVyLmVzLmpzIiwic291cmNlcyI6WyIuLi9zcmMvQnl0ZU9yZGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIEJ5dGVPcmRlciB7XG4gICAgQklHX0VORElBTixcbiAgICBMSVRUTEVfRU5ESUFOXG59XG4iXSwibmFtZXMiOlsiQnl0ZU9yZGVyIl0sIm1hcHBpbmdzIjoiQUFBWSxJQUFBLFNBQUEscUJBQUFBLFVBQUwsS0FBQTtBQUNILEVBQUFBLFVBQUEsQ0FBQSxVQUFBLENBQUEsWUFBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBLEdBQUEsWUFBQTtBQUNBLEVBQUFBLFVBQUEsQ0FBQSxVQUFBLENBQUEsZUFBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBLEdBQUEsZUFBQTtBQUZRLEVBQUFBLE9BQUFBLFVBQUFBO0FBQUEsQ0FBQSxFQUFBLFNBQUEsSUFBQSxFQUFBOzs7OyJ9
@@ -1,22 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
-
5
- var NBTDefinitions = /* @__PURE__ */ ((NBTDefinitions2) => {
6
- NBTDefinitions2[NBTDefinitions2["TAG_END"] = 0] = "TAG_END";
7
- NBTDefinitions2[NBTDefinitions2["TAG_BYTE"] = 1] = "TAG_BYTE";
8
- NBTDefinitions2[NBTDefinitions2["TAG_SHORT"] = 2] = "TAG_SHORT";
9
- NBTDefinitions2[NBTDefinitions2["TAG_INT"] = 3] = "TAG_INT";
10
- NBTDefinitions2[NBTDefinitions2["TAG_LONG"] = 4] = "TAG_LONG";
11
- NBTDefinitions2[NBTDefinitions2["TAG_FLOAT"] = 5] = "TAG_FLOAT";
12
- NBTDefinitions2[NBTDefinitions2["TAG_DOUBLE"] = 6] = "TAG_DOUBLE";
13
- NBTDefinitions2[NBTDefinitions2["TAG_BYTE_ARRAY"] = 7] = "TAG_BYTE_ARRAY";
14
- NBTDefinitions2[NBTDefinitions2["TAG_STRING"] = 8] = "TAG_STRING";
15
- NBTDefinitions2[NBTDefinitions2["TAG_LIST"] = 9] = "TAG_LIST";
16
- NBTDefinitions2[NBTDefinitions2["TAG_COMPOUND"] = 10] = "TAG_COMPOUND";
17
- NBTDefinitions2[NBTDefinitions2["TAG_INT_ARRAY"] = 11] = "TAG_INT_ARRAY";
18
- return NBTDefinitions2;
19
- })(NBTDefinitions || {});
20
-
21
- exports.NBTDefinitions = NBTDefinitions;
22
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTkJURGVmaW5pdGlvbnMuY2pzLmNqcyIsInNvdXJjZXMiOlsiLi4vc3JjL05CVERlZmluaXRpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIE5CVERlZmluaXRpb25zIHtcbiAgICBUQUdfRU5ELFxuICAgIFRBR19CWVRFLFxuICAgIFRBR19TSE9SVCxcbiAgICBUQUdfSU5ULFxuICAgIFRBR19MT05HLFxuICAgIFRBR19GTE9BVCxcbiAgICBUQUdfRE9VQkxFLFxuICAgIFRBR19CWVRFX0FSUkFZLFxuICAgIFRBR19TVFJJTkcsXG4gICAgVEFHX0xJU1QsXG4gICAgVEFHX0NPTVBPVU5ELFxuICAgIFRBR19JTlRfQVJSQVlcbn1cbiJdLCJuYW1lcyI6WyJOQlREZWZpbml0aW9ucyJdLCJtYXBwaW5ncyI6Ijs7OztBQUFZLElBQUEsY0FBQSxxQkFBQUEsZUFBTCxLQUFBO0FBQ0gsRUFBQUEsZUFBQSxDQUFBLGVBQUEsQ0FBQSxTQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxTQUFBO0FBQ0EsRUFBQUEsZUFBQSxDQUFBLGVBQUEsQ0FBQSxVQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxVQUFBO0FBQ0EsRUFBQUEsZUFBQSxDQUFBLGVBQUEsQ0FBQSxXQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxXQUFBO0FBQ0EsRUFBQUEsZUFBQSxDQUFBLGVBQUEsQ0FBQSxTQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxTQUFBO0FBQ0EsRUFBQUEsZUFBQSxDQUFBLGVBQUEsQ0FBQSxVQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxVQUFBO0FBQ0EsRUFBQUEsZUFBQSxDQUFBLGVBQUEsQ0FBQSxXQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxXQUFBO0FBQ0EsRUFBQUEsZUFBQSxDQUFBLGVBQUEsQ0FBQSxZQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxZQUFBO0FBQ0EsRUFBQUEsZUFBQSxDQUFBLGVBQUEsQ0FBQSxnQkFBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBLEdBQUEsZ0JBQUE7QUFDQSxFQUFBQSxlQUFBLENBQUEsZUFBQSxDQUFBLFlBQUEsQ0FBQSxHQUFBLENBQUEsQ0FBQSxHQUFBLFlBQUE7QUFDQSxFQUFBQSxlQUFBLENBQUEsZUFBQSxDQUFBLFVBQUEsQ0FBQSxHQUFBLENBQUEsQ0FBQSxHQUFBLFVBQUE7QUFDQSxFQUFBQSxlQUFBLENBQUEsZUFBQSxDQUFBLGNBQUEsQ0FBQSxHQUFBLEVBQUEsQ0FBQSxHQUFBLGNBQUE7QUFDQSxFQUFBQSxlQUFBLENBQUEsZUFBQSxDQUFBLGVBQUEsQ0FBQSxHQUFBLEVBQUEsQ0FBQSxHQUFBLGVBQUE7QUFaUSxFQUFBQSxPQUFBQSxlQUFBQTtBQUFBLENBQUEsRUFBQSxjQUFBLElBQUEsRUFBQTs7OzsifQ==
@@ -1,15 +0,0 @@
1
- export declare enum NBTDefinitions {
2
- TAG_END = 0,
3
- TAG_BYTE = 1,
4
- TAG_SHORT = 2,
5
- TAG_INT = 3,
6
- TAG_LONG = 4,
7
- TAG_FLOAT = 5,
8
- TAG_DOUBLE = 6,
9
- TAG_BYTE_ARRAY = 7,
10
- TAG_STRING = 8,
11
- TAG_LIST = 9,
12
- TAG_COMPOUND = 10,
13
- TAG_INT_ARRAY = 11
14
- }
15
- //# sourceMappingURL=NBTDefinitions.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NBTDefinitions.d.ts","sourceRoot":"","sources":["../src/NBTDefinitions.ts"],"names":[],"mappings":"AAAA,oBAAY,cAAc;IACtB,OAAO,IAAA;IACP,QAAQ,IAAA;IACR,SAAS,IAAA;IACT,OAAO,IAAA;IACP,QAAQ,IAAA;IACR,SAAS,IAAA;IACT,UAAU,IAAA;IACV,cAAc,IAAA;IACd,UAAU,IAAA;IACV,QAAQ,IAAA;IACR,YAAY,KAAA;IACZ,aAAa,KAAA;CAChB"}
@@ -1,18 +0,0 @@
1
- var NBTDefinitions = /* @__PURE__ */ ((NBTDefinitions2) => {
2
- NBTDefinitions2[NBTDefinitions2["TAG_END"] = 0] = "TAG_END";
3
- NBTDefinitions2[NBTDefinitions2["TAG_BYTE"] = 1] = "TAG_BYTE";
4
- NBTDefinitions2[NBTDefinitions2["TAG_SHORT"] = 2] = "TAG_SHORT";
5
- NBTDefinitions2[NBTDefinitions2["TAG_INT"] = 3] = "TAG_INT";
6
- NBTDefinitions2[NBTDefinitions2["TAG_LONG"] = 4] = "TAG_LONG";
7
- NBTDefinitions2[NBTDefinitions2["TAG_FLOAT"] = 5] = "TAG_FLOAT";
8
- NBTDefinitions2[NBTDefinitions2["TAG_DOUBLE"] = 6] = "TAG_DOUBLE";
9
- NBTDefinitions2[NBTDefinitions2["TAG_BYTE_ARRAY"] = 7] = "TAG_BYTE_ARRAY";
10
- NBTDefinitions2[NBTDefinitions2["TAG_STRING"] = 8] = "TAG_STRING";
11
- NBTDefinitions2[NBTDefinitions2["TAG_LIST"] = 9] = "TAG_LIST";
12
- NBTDefinitions2[NBTDefinitions2["TAG_COMPOUND"] = 10] = "TAG_COMPOUND";
13
- NBTDefinitions2[NBTDefinitions2["TAG_INT_ARRAY"] = 11] = "TAG_INT_ARRAY";
14
- return NBTDefinitions2;
15
- })(NBTDefinitions || {});
16
-
17
- export { NBTDefinitions };
18
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTkJURGVmaW5pdGlvbnMuZXMuanMiLCJzb3VyY2VzIjpbIi4uL3NyYy9OQlREZWZpbml0aW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBOQlREZWZpbml0aW9ucyB7XG4gICAgVEFHX0VORCxcbiAgICBUQUdfQllURSxcbiAgICBUQUdfU0hPUlQsXG4gICAgVEFHX0lOVCxcbiAgICBUQUdfTE9ORyxcbiAgICBUQUdfRkxPQVQsXG4gICAgVEFHX0RPVUJMRSxcbiAgICBUQUdfQllURV9BUlJBWSxcbiAgICBUQUdfU1RSSU5HLFxuICAgIFRBR19MSVNULFxuICAgIFRBR19DT01QT1VORCxcbiAgICBUQUdfSU5UX0FSUkFZXG59XG4iXSwibmFtZXMiOlsiTkJURGVmaW5pdGlvbnMiXSwibWFwcGluZ3MiOiJBQUFZLElBQUEsY0FBQSxxQkFBQUEsZUFBTCxLQUFBO0FBQ0gsRUFBQUEsZUFBQSxDQUFBLGVBQUEsQ0FBQSxTQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxTQUFBO0FBQ0EsRUFBQUEsZUFBQSxDQUFBLGVBQUEsQ0FBQSxVQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxVQUFBO0FBQ0EsRUFBQUEsZUFBQSxDQUFBLGVBQUEsQ0FBQSxXQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxXQUFBO0FBQ0EsRUFBQUEsZUFBQSxDQUFBLGVBQUEsQ0FBQSxTQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxTQUFBO0FBQ0EsRUFBQUEsZUFBQSxDQUFBLGVBQUEsQ0FBQSxVQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxVQUFBO0FBQ0EsRUFBQUEsZUFBQSxDQUFBLGVBQUEsQ0FBQSxXQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxXQUFBO0FBQ0EsRUFBQUEsZUFBQSxDQUFBLGVBQUEsQ0FBQSxZQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxZQUFBO0FBQ0EsRUFBQUEsZUFBQSxDQUFBLGVBQUEsQ0FBQSxnQkFBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBLEdBQUEsZ0JBQUE7QUFDQSxFQUFBQSxlQUFBLENBQUEsZUFBQSxDQUFBLFlBQUEsQ0FBQSxHQUFBLENBQUEsQ0FBQSxHQUFBLFlBQUE7QUFDQSxFQUFBQSxlQUFBLENBQUEsZUFBQSxDQUFBLFVBQUEsQ0FBQSxHQUFBLENBQUEsQ0FBQSxHQUFBLFVBQUE7QUFDQSxFQUFBQSxlQUFBLENBQUEsZUFBQSxDQUFBLGNBQUEsQ0FBQSxHQUFBLEVBQUEsQ0FBQSxHQUFBLGNBQUE7QUFDQSxFQUFBQSxlQUFBLENBQUEsZUFBQSxDQUFBLGVBQUEsQ0FBQSxHQUFBLEVBQUEsQ0FBQSxHQUFBLGVBQUE7QUFaUSxFQUFBQSxPQUFBQSxlQUFBQTtBQUFBLENBQUEsRUFBQSxjQUFBLElBQUEsRUFBQTs7OzsifQ==
@@ -1,163 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
4
-
5
- const Allocation = require('./Allocation.cjs.cjs');
6
- const NBTDefinitions = require('./NBTDefinitions.cjs.cjs');
7
- const NBTStreamReader = require('./NBTStreamReader.cjs.cjs');
8
- const NBTTagCompound = require('./NBTTagCompound.cjs.cjs');
9
-
10
- class NBTReader extends NBTStreamReader.default {
11
- constructor(input, byteOrder) {
12
- super(input, byteOrder);
13
- }
14
- parseList() {
15
- this.expectInput(this.isUsingVarint() ? 2 : 3, "Invalid NBT Data: Not enough data to read new tag", false);
16
- if (this.readByteValue().getValue() !== NBTDefinitions.NBTDefinitions.TAG_LIST) {
17
- throw new Error("Invalid NBT Data: Not list tag found");
18
- }
19
- this.readStringValue();
20
- return this.readTagListValue();
21
- }
22
- parse() {
23
- this.expectInput(this.isUsingVarint() ? 2 : 3, "Invalid NBT Data: Not enough data to read new tag", false);
24
- if (this.readByteValue().getValue() !== NBTDefinitions.NBTDefinitions.TAG_COMPOUND) {
25
- throw new Error("Invalid NBT Data: No root tag found");
26
- }
27
- const name = this.readStringValue().getValue();
28
- const root = this.readTagCompoundValue();
29
- root.setName(name);
30
- return root;
31
- }
32
- readTagCompoundValue() {
33
- this.alterAllocationLimit(Allocation.Allocation.COMPOUND);
34
- const compound = new NBTTagCompound.default();
35
- this.expectInput(1, "Invalid NBT Data: Expected Tag ID in compound tag", false);
36
- let tagID = this.readByteValue().getValue();
37
- while (tagID !== NBTDefinitions.NBTDefinitions.TAG_END) {
38
- switch (tagID) {
39
- case NBTDefinitions.NBTDefinitions.TAG_BYTE:
40
- compound.addValue(this.readStringValue().getValue(), this.readByteValue());
41
- break;
42
- case NBTDefinitions.NBTDefinitions.TAG_SHORT:
43
- compound.addValue(this.readStringValue().getValue(), this.readShortValue());
44
- break;
45
- case NBTDefinitions.NBTDefinitions.TAG_INT:
46
- compound.addValue(this.readStringValue().getValue(), this.readIntValue());
47
- break;
48
- case NBTDefinitions.NBTDefinitions.TAG_LONG:
49
- compound.addValue(this.readStringValue().getValue(), this.readLongValue());
50
- break;
51
- case NBTDefinitions.NBTDefinitions.TAG_FLOAT:
52
- compound.addValue(this.readStringValue().getValue(), this.readFloatValue());
53
- break;
54
- case NBTDefinitions.NBTDefinitions.TAG_DOUBLE:
55
- compound.addValue(this.readStringValue().getValue(), this.readDoubleValue());
56
- break;
57
- case NBTDefinitions.NBTDefinitions.TAG_BYTE_ARRAY:
58
- compound.addValue(this.readStringValue().getValue(), this.readByteArrayValue());
59
- break;
60
- case NBTDefinitions.NBTDefinitions.TAG_STRING:
61
- compound.addValue(this.readStringValue().getValue(), this.readStringValue());
62
- break;
63
- case NBTDefinitions.NBTDefinitions.TAG_LIST:
64
- compound.addValue(this.readStringValue().getValue(), this.readTagListValue());
65
- break;
66
- case NBTDefinitions.NBTDefinitions.TAG_COMPOUND:
67
- const name = this.readStringValue().getValue();
68
- const child = this.readTagCompoundValue();
69
- child.setName(name);
70
- compound.addChild(child);
71
- break;
72
- case NBTDefinitions.NBTDefinitions.TAG_INT_ARRAY:
73
- compound.addValue(this.readStringValue().getValue(), this.readIntArrayValue());
74
- break;
75
- default:
76
- throw new Error(`Invalid NBT Data: Unknown tag <${tagID}>`);
77
- }
78
- this.expectInput(1, "Invalid NBT Data: Expected tag ID in tag compound", false);
79
- tagID = this.readByteValue().getValue();
80
- }
81
- return compound;
82
- }
83
- readTagListValue() {
84
- this.expectInput(this.isUsingVarint() ? 2 : 5, "Invalid NBT Data: Expected TAGList header", false);
85
- const listType = this.readByteValue().getValue();
86
- let listLength = this.readIntValue().getValue();
87
- this.alterAllocationLimit(Allocation.Allocation.ARRAY_LIST);
88
- this.alterAllocationLimit(Allocation.Allocation.REFERENCE);
89
- const backingList = /* @__PURE__ */ new Set();
90
- switch (listType) {
91
- case NBTDefinitions.NBTDefinitions.TAG_END:
92
- listLength = 0;
93
- break;
94
- case NBTDefinitions.NBTDefinitions.TAG_BYTE:
95
- this.expectInput(listLength, "Invalid NBT Data: Expected bytes for list");
96
- for (let i = 0; i < listLength; i++) {
97
- backingList.add(this.readShortValue());
98
- }
99
- break;
100
- case NBTDefinitions.NBTDefinitions.TAG_SHORT:
101
- this.expectInput(2 * listLength, "Invalid NBT Data: Expected shorts for list");
102
- for (let i = 0; i < listLength; i++) {
103
- backingList.add(this.readShortValue());
104
- }
105
- break;
106
- case NBTDefinitions.NBTDefinitions.TAG_INT:
107
- this.expectInput(4 * listLength, "Invalid NBT Data: Expected ints for list");
108
- for (let i = 0; i < listLength; i++) {
109
- backingList.add(this.readIntValue());
110
- }
111
- break;
112
- case NBTDefinitions.NBTDefinitions.TAG_LONG:
113
- this.expectInput(8 * listLength, "Invalid NBT Data: Expected longs for list");
114
- for (let i = 0; i < listLength; i++) {
115
- backingList.add(this.readLongValue());
116
- }
117
- break;
118
- case NBTDefinitions.NBTDefinitions.TAG_FLOAT:
119
- this.expectInput(4 * listLength, "Invalid NBT Data: Expected floats for list");
120
- for (let i = 0; i < listLength; i++) {
121
- backingList.add(this.readFloatValue());
122
- }
123
- break;
124
- case NBTDefinitions.NBTDefinitions.TAG_DOUBLE:
125
- this.expectInput(8 * listLength, "Invalid NBT Data: Expected doubles for list");
126
- for (let i = 0; i < listLength; i++) {
127
- backingList.add(this.readDoubleValue());
128
- }
129
- break;
130
- case NBTDefinitions.NBTDefinitions.TAG_BYTE_ARRAY:
131
- for (let i = 0; i < listLength; i++) {
132
- backingList.add(this.readByteArrayValue());
133
- }
134
- break;
135
- case NBTDefinitions.NBTDefinitions.TAG_STRING:
136
- for (let i = 0; i < listLength; i++) {
137
- backingList.add(this.readStringValue());
138
- }
139
- break;
140
- case NBTDefinitions.NBTDefinitions.TAG_LIST:
141
- for (let i = 0; i < listLength; i++) {
142
- backingList.add(this.readTagListValue());
143
- }
144
- break;
145
- case NBTDefinitions.NBTDefinitions.TAG_COMPOUND:
146
- for (let i = 0; i < listLength; i++) {
147
- backingList.add(this.readTagCompoundValue());
148
- }
149
- break;
150
- case NBTDefinitions.NBTDefinitions.TAG_INT_ARRAY:
151
- for (let i = 0; i < listLength; i++) {
152
- backingList.add(this.readIntArrayValue());
153
- }
154
- break;
155
- default:
156
- throw new Error(`Invalid NBT Data: Unknown tag <${listType}>`);
157
- }
158
- return backingList;
159
- }
160
- }
161
-
162
- exports.default = NBTReader;
163
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTkJUUmVhZGVyLmNqcy5janMiLCJzb3VyY2VzIjpbIi4uL3NyYy9OQlRSZWFkZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgY29tcGxleGl0eSAqL1xuaW1wb3J0IHsgQWxsb2NhdGlvbiB9IGZyb20gJy4vQWxsb2NhdGlvbic7XG5pbXBvcnQgdHlwZSBCaW5hcnlTdHJlYW0gZnJvbSAnQGpzcHJpc21hcmluZS9qc2JpbmFyeXV0aWxzJztcbmltcG9ydCB0eXBlIHsgQnl0ZU9yZGVyIH0gZnJvbSAnLi9CeXRlT3JkZXInO1xuaW1wb3J0IHsgTkJURGVmaW5pdGlvbnMgfSBmcm9tICcuL05CVERlZmluaXRpb25zJztcbmltcG9ydCBOQlRTdHJlYW1SZWFkZXIgZnJvbSAnLi9OQlRTdHJlYW1SZWFkZXInO1xuaW1wb3J0IE5CVFRhZ0NvbXBvdW5kIGZyb20gJy4vTkJUVGFnQ29tcG91bmQnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOQlRSZWFkZXIgZXh0ZW5kcyBOQlRTdHJlYW1SZWFkZXIge1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihpbnB1dDogQmluYXJ5U3RyZWFtLCBieXRlT3JkZXI6IEJ5dGVPcmRlcikge1xuICAgICAgICBzdXBlcihpbnB1dCwgYnl0ZU9yZGVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcGFyc2VMaXN0PFRhZ1R5cGU+KCk6IFNldDxUYWdUeXBlPiB7XG4gICAgICAgIHRoaXMuZXhwZWN0SW5wdXQodGhpcy5pc1VzaW5nVmFyaW50KCkgPyAyIDogMywgJ0ludmFsaWQgTkJUIERhdGE6IE5vdCBlbm91Z2ggZGF0YSB0byByZWFkIG5ldyB0YWcnLCBmYWxzZSk7XG4gICAgICAgIGlmICh0aGlzLnJlYWRCeXRlVmFsdWUoKS5nZXRWYWx1ZSgpICE9PSBOQlREZWZpbml0aW9ucy5UQUdfTElTVCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIE5CVCBEYXRhOiBOb3QgbGlzdCB0YWcgZm91bmQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmVhZFN0cmluZ1ZhbHVlKCk7XG4gICAgICAgIHJldHVybiB0aGlzLnJlYWRUYWdMaXN0VmFsdWUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcGFyc2UoKTogTkJUVGFnQ29tcG91bmQge1xuICAgICAgICB0aGlzLmV4cGVjdElucHV0KHRoaXMuaXNVc2luZ1ZhcmludCgpID8gMiA6IDMsICdJbnZhbGlkIE5CVCBEYXRhOiBOb3QgZW5vdWdoIGRhdGEgdG8gcmVhZCBuZXcgdGFnJywgZmFsc2UpO1xuICAgICAgICBpZiAodGhpcy5yZWFkQnl0ZVZhbHVlKCkuZ2V0VmFsdWUoKSAhPT0gTkJURGVmaW5pdGlvbnMuVEFHX0NPTVBPVU5EKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgTkJUIERhdGE6IE5vIHJvb3QgdGFnIGZvdW5kJyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuYW1lOiBzdHJpbmcgPSB0aGlzLnJlYWRTdHJpbmdWYWx1ZSgpLmdldFZhbHVlKCk7XG4gICAgICAgIGNvbnN0IHJvb3Q6IE5CVFRhZ0NvbXBvdW5kID0gdGhpcy5yZWFkVGFnQ29tcG91bmRWYWx1ZSgpO1xuICAgICAgICByb290LnNldE5hbWUobmFtZSk7XG4gICAgICAgIHJldHVybiByb290O1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVhZFRhZ0NvbXBvdW5kVmFsdWUoKTogTkJUVGFnQ29tcG91bmQge1xuICAgICAgICB0aGlzLmFsdGVyQWxsb2NhdGlvbkxpbWl0KEFsbG9jYXRpb24uQ09NUE9VTkQpO1xuICAgICAgICBjb25zdCBjb21wb3VuZDogTkJUVGFnQ29tcG91bmQgPSBuZXcgTkJUVGFnQ29tcG91bmQoKTtcbiAgICAgICAgdGhpcy5leHBlY3RJbnB1dCgxLCAnSW52YWxpZCBOQlQgRGF0YTogRXhwZWN0ZWQgVGFnIElEIGluIGNvbXBvdW5kIHRhZycsIGZhbHNlKTtcblxuICAgICAgICBsZXQgdGFnSUQgPSB0aGlzLnJlYWRCeXRlVmFsdWUoKS5nZXRWYWx1ZSgpO1xuICAgICAgICB3aGlsZSAodGFnSUQgIT09IE5CVERlZmluaXRpb25zLlRBR19FTkQpIHtcbiAgICAgICAgICAgIHN3aXRjaCAodGFnSUQpIHtcbiAgICAgICAgICAgICAgICBjYXNlIE5CVERlZmluaXRpb25zLlRBR19CWVRFOlxuICAgICAgICAgICAgICAgICAgICBjb21wb3VuZC5hZGRWYWx1ZSh0aGlzLnJlYWRTdHJpbmdWYWx1ZSgpLmdldFZhbHVlKCksIHRoaXMucmVhZEJ5dGVWYWx1ZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBOQlREZWZpbml0aW9ucy5UQUdfU0hPUlQ6XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvdW5kLmFkZFZhbHVlKHRoaXMucmVhZFN0cmluZ1ZhbHVlKCkuZ2V0VmFsdWUoKSwgdGhpcy5yZWFkU2hvcnRWYWx1ZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBOQlREZWZpbml0aW9ucy5UQUdfSU5UOlxuICAgICAgICAgICAgICAgICAgICBjb21wb3VuZC5hZGRWYWx1ZSh0aGlzLnJlYWRTdHJpbmdWYWx1ZSgpLmdldFZhbHVlKCksIHRoaXMucmVhZEludFZhbHVlKCkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIE5CVERlZmluaXRpb25zLlRBR19MT05HOlxuICAgICAgICAgICAgICAgICAgICBjb21wb3VuZC5hZGRWYWx1ZSh0aGlzLnJlYWRTdHJpbmdWYWx1ZSgpLmdldFZhbHVlKCksIHRoaXMucmVhZExvbmdWYWx1ZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBOQlREZWZpbml0aW9ucy5UQUdfRkxPQVQ6XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvdW5kLmFkZFZhbHVlKHRoaXMucmVhZFN0cmluZ1ZhbHVlKCkuZ2V0VmFsdWUoKSwgdGhpcy5yZWFkRmxvYXRWYWx1ZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBOQlREZWZpbml0aW9ucy5UQUdfRE9VQkxFOlxuICAgICAgICAgICAgICAgICAgICBjb21wb3VuZC5hZGRWYWx1ZSh0aGlzLnJlYWRTdHJpbmdWYWx1ZSgpLmdldFZhbHVlKCksIHRoaXMucmVhZERvdWJsZVZhbHVlKCkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIE5CVERlZmluaXRpb25zLlRBR19CWVRFX0FSUkFZOlxuICAgICAgICAgICAgICAgICAgICBjb21wb3VuZC5hZGRWYWx1ZSh0aGlzLnJlYWRTdHJpbmdWYWx1ZSgpLmdldFZhbHVlKCksIHRoaXMucmVhZEJ5dGVBcnJheVZhbHVlKCkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIE5CVERlZmluaXRpb25zLlRBR19TVFJJTkc6XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvdW5kLmFkZFZhbHVlKHRoaXMucmVhZFN0cmluZ1ZhbHVlKCkuZ2V0VmFsdWUoKSwgdGhpcy5yZWFkU3RyaW5nVmFsdWUoKSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgTkJURGVmaW5pdGlvbnMuVEFHX0xJU1Q6XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvdW5kLmFkZFZhbHVlKHRoaXMucmVhZFN0cmluZ1ZhbHVlKCkuZ2V0VmFsdWUoKSwgdGhpcy5yZWFkVGFnTGlzdFZhbHVlKCkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIE5CVERlZmluaXRpb25zLlRBR19DT01QT1VORDpcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmFtZTogc3RyaW5nID0gdGhpcy5yZWFkU3RyaW5nVmFsdWUoKS5nZXRWYWx1ZSgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGlsZDogTkJUVGFnQ29tcG91bmQgPSB0aGlzLnJlYWRUYWdDb21wb3VuZFZhbHVlKCk7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkLnNldE5hbWUobmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvdW5kLmFkZENoaWxkKGNoaWxkKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBOQlREZWZpbml0aW9ucy5UQUdfSU5UX0FSUkFZOlxuICAgICAgICAgICAgICAgICAgICBjb21wb3VuZC5hZGRWYWx1ZSh0aGlzLnJlYWRTdHJpbmdWYWx1ZSgpLmdldFZhbHVlKCksIHRoaXMucmVhZEludEFycmF5VmFsdWUoKSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBOQlQgRGF0YTogVW5rbm93biB0YWcgPCR7dGFnSUR9PmApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmV4cGVjdElucHV0KDEsICdJbnZhbGlkIE5CVCBEYXRhOiBFeHBlY3RlZCB0YWcgSUQgaW4gdGFnIGNvbXBvdW5kJywgZmFsc2UpO1xuICAgICAgICAgICAgdGFnSUQgPSB0aGlzLnJlYWRCeXRlVmFsdWUoKS5nZXRWYWx1ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbXBvdW5kO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVhZFRhZ0xpc3RWYWx1ZSgpOiBTZXQ8YW55PiB7XG4gICAgICAgIHRoaXMuZXhwZWN0SW5wdXQodGhpcy5pc1VzaW5nVmFyaW50KCkgPyAyIDogNSwgJ0ludmFsaWQgTkJUIERhdGE6IEV4cGVjdGVkIFRBR0xpc3QgaGVhZGVyJywgZmFsc2UpO1xuICAgICAgICBjb25zdCBsaXN0VHlwZTogbnVtYmVyID0gdGhpcy5yZWFkQnl0ZVZhbHVlKCkuZ2V0VmFsdWUoKTtcbiAgICAgICAgbGV0IGxpc3RMZW5ndGg6IG51bWJlciA9IHRoaXMucmVhZEludFZhbHVlKCkuZ2V0VmFsdWUoKTtcblxuICAgICAgICB0aGlzLmFsdGVyQWxsb2NhdGlvbkxpbWl0KEFsbG9jYXRpb24uQVJSQVlfTElTVCk7XG4gICAgICAgIHRoaXMuYWx0ZXJBbGxvY2F0aW9uTGltaXQoQWxsb2NhdGlvbi5SRUZFUkVOQ0UpO1xuXG4gICAgICAgIGNvbnN0IGJhY2tpbmdMaXN0OiBTZXQ8YW55PiA9IG5ldyBTZXQoKTtcblxuICAgICAgICBzd2l0Y2ggKGxpc3RUeXBlKSB7XG4gICAgICAgICAgICBjYXNlIE5CVERlZmluaXRpb25zLlRBR19FTkQ6XG4gICAgICAgICAgICAgICAgbGlzdExlbmd0aCA9IDA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIE5CVERlZmluaXRpb25zLlRBR19CWVRFOlxuICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0SW5wdXQobGlzdExlbmd0aCwgJ0ludmFsaWQgTkJUIERhdGE6IEV4cGVjdGVkIGJ5dGVzIGZvciBsaXN0Jyk7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0TGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2luZ0xpc3QuYWRkKHRoaXMucmVhZFNob3J0VmFsdWUoKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIE5CVERlZmluaXRpb25zLlRBR19TSE9SVDpcbiAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdElucHV0KDIgKiBsaXN0TGVuZ3RoLCAnSW52YWxpZCBOQlQgRGF0YTogRXhwZWN0ZWQgc2hvcnRzIGZvciBsaXN0Jyk7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0TGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2luZ0xpc3QuYWRkKHRoaXMucmVhZFNob3J0VmFsdWUoKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIE5CVERlZmluaXRpb25zLlRBR19JTlQ6XG4gICAgICAgICAgICAgICAgdGhpcy5leHBlY3RJbnB1dCg0ICogbGlzdExlbmd0aCwgJ0ludmFsaWQgTkJUIERhdGE6IEV4cGVjdGVkIGludHMgZm9yIGxpc3QnKTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3RMZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBiYWNraW5nTGlzdC5hZGQodGhpcy5yZWFkSW50VmFsdWUoKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIE5CVERlZmluaXRpb25zLlRBR19MT05HOlxuICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0SW5wdXQoOCAqIGxpc3RMZW5ndGgsICdJbnZhbGlkIE5CVCBEYXRhOiBFeHBlY3RlZCBsb25ncyBmb3IgbGlzdCcpO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdExlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tpbmdMaXN0LmFkZCh0aGlzLnJlYWRMb25nVmFsdWUoKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIE5CVERlZmluaXRpb25zLlRBR19GTE9BVDpcbiAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdElucHV0KDQgKiBsaXN0TGVuZ3RoLCAnSW52YWxpZCBOQlQgRGF0YTogRXhwZWN0ZWQgZmxvYXRzIGZvciBsaXN0Jyk7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0TGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2luZ0xpc3QuYWRkKHRoaXMucmVhZEZsb2F0VmFsdWUoKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIE5CVERlZmluaXRpb25zLlRBR19ET1VCTEU6XG4gICAgICAgICAgICAgICAgdGhpcy5leHBlY3RJbnB1dCg4ICogbGlzdExlbmd0aCwgJ0ludmFsaWQgTkJUIERhdGE6IEV4cGVjdGVkIGRvdWJsZXMgZm9yIGxpc3QnKTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3RMZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBiYWNraW5nTGlzdC5hZGQodGhpcy5yZWFkRG91YmxlVmFsdWUoKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIE5CVERlZmluaXRpb25zLlRBR19CWVRFX0FSUkFZOlxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdExlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tpbmdMaXN0LmFkZCh0aGlzLnJlYWRCeXRlQXJyYXlWYWx1ZSgpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgTkJURGVmaW5pdGlvbnMuVEFHX1NUUklORzpcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3RMZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBiYWNraW5nTGlzdC5hZGQodGhpcy5yZWFkU3RyaW5nVmFsdWUoKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIE5CVERlZmluaXRpb25zLlRBR19MSVNUOlxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdExlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tpbmdMaXN0LmFkZCh0aGlzLnJlYWRUYWdMaXN0VmFsdWUoKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIE5CVERlZmluaXRpb25zLlRBR19DT01QT1VORDpcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3RMZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBiYWNraW5nTGlzdC5hZGQodGhpcy5yZWFkVGFnQ29tcG91bmRWYWx1ZSgpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgTkJURGVmaW5pdGlvbnMuVEFHX0lOVF9BUlJBWTpcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3RMZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBiYWNraW5nTGlzdC5hZGQodGhpcy5yZWFkSW50QXJyYXlWYWx1ZSgpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIE5CVCBEYXRhOiBVbmtub3duIHRhZyA8JHtsaXN0VHlwZX0+YCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYmFja2luZ0xpc3Q7XG4gICAgfVxufVxuIl0sIm5hbWVzIjpbIk5CVFN0cmVhbVJlYWRlciIsIk5CVERlZmluaXRpb25zIiwiQWxsb2NhdGlvbiIsIk5CVFRhZ0NvbXBvdW5kIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFRQSxNQUFxQixrQkFBa0JBLHVCQUFnQixDQUFBO0FBQUEsRUFDNUMsV0FBQSxDQUFZLE9BQXFCLFNBQXNCLEVBQUE7QUFDMUQs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
@@ -1,12 +0,0 @@
1
- import { default as BinaryStream } from '@jsprismarine/jsbinaryutils';
2
- import { ByteOrder } from './ByteOrder';
3
- import { default as NBTStreamReader } from './NBTStreamReader';
4
- import { default as NBTTagCompound } from './NBTTagCompound';
5
- export default class NBTReader extends NBTStreamReader {
6
- constructor(input: BinaryStream, byteOrder: ByteOrder);
7
- parseList<TagType>(): Set<TagType>;
8
- parse(): NBTTagCompound;
9
- private readTagCompoundValue;
10
- private readTagListValue;
11
- }
12
- //# sourceMappingURL=NBTReader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NBTReader.d.ts","sourceRoot":"","sources":["../src/NBTReader.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,YAAY,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAE9C,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,eAAe;gBAC/B,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS;IAIrD,SAAS,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,CAAC;IAUlC,KAAK,IAAI,cAAc;IAY9B,OAAO,CAAC,oBAAoB;IAuD5B,OAAO,CAAC,gBAAgB;CA4F3B"}
@@ -1,159 +0,0 @@
1
- import { Allocation } from './Allocation.es.js';
2
- import { NBTDefinitions } from './NBTDefinitions.es.js';
3
- import NBTStreamReader from './NBTStreamReader.es.js';
4
- import NBTTagCompound from './NBTTagCompound.es.js';
5
-
6
- class NBTReader extends NBTStreamReader {
7
- constructor(input, byteOrder) {
8
- super(input, byteOrder);
9
- }
10
- parseList() {
11
- this.expectInput(this.isUsingVarint() ? 2 : 3, "Invalid NBT Data: Not enough data to read new tag", false);
12
- if (this.readByteValue().getValue() !== NBTDefinitions.TAG_LIST) {
13
- throw new Error("Invalid NBT Data: Not list tag found");
14
- }
15
- this.readStringValue();
16
- return this.readTagListValue();
17
- }
18
- parse() {
19
- this.expectInput(this.isUsingVarint() ? 2 : 3, "Invalid NBT Data: Not enough data to read new tag", false);
20
- if (this.readByteValue().getValue() !== NBTDefinitions.TAG_COMPOUND) {
21
- throw new Error("Invalid NBT Data: No root tag found");
22
- }
23
- const name = this.readStringValue().getValue();
24
- const root = this.readTagCompoundValue();
25
- root.setName(name);
26
- return root;
27
- }
28
- readTagCompoundValue() {
29
- this.alterAllocationLimit(Allocation.COMPOUND);
30
- const compound = new NBTTagCompound();
31
- this.expectInput(1, "Invalid NBT Data: Expected Tag ID in compound tag", false);
32
- let tagID = this.readByteValue().getValue();
33
- while (tagID !== NBTDefinitions.TAG_END) {
34
- switch (tagID) {
35
- case NBTDefinitions.TAG_BYTE:
36
- compound.addValue(this.readStringValue().getValue(), this.readByteValue());
37
- break;
38
- case NBTDefinitions.TAG_SHORT:
39
- compound.addValue(this.readStringValue().getValue(), this.readShortValue());
40
- break;
41
- case NBTDefinitions.TAG_INT:
42
- compound.addValue(this.readStringValue().getValue(), this.readIntValue());
43
- break;
44
- case NBTDefinitions.TAG_LONG:
45
- compound.addValue(this.readStringValue().getValue(), this.readLongValue());
46
- break;
47
- case NBTDefinitions.TAG_FLOAT:
48
- compound.addValue(this.readStringValue().getValue(), this.readFloatValue());
49
- break;
50
- case NBTDefinitions.TAG_DOUBLE:
51
- compound.addValue(this.readStringValue().getValue(), this.readDoubleValue());
52
- break;
53
- case NBTDefinitions.TAG_BYTE_ARRAY:
54
- compound.addValue(this.readStringValue().getValue(), this.readByteArrayValue());
55
- break;
56
- case NBTDefinitions.TAG_STRING:
57
- compound.addValue(this.readStringValue().getValue(), this.readStringValue());
58
- break;
59
- case NBTDefinitions.TAG_LIST:
60
- compound.addValue(this.readStringValue().getValue(), this.readTagListValue());
61
- break;
62
- case NBTDefinitions.TAG_COMPOUND:
63
- const name = this.readStringValue().getValue();
64
- const child = this.readTagCompoundValue();
65
- child.setName(name);
66
- compound.addChild(child);
67
- break;
68
- case NBTDefinitions.TAG_INT_ARRAY:
69
- compound.addValue(this.readStringValue().getValue(), this.readIntArrayValue());
70
- break;
71
- default:
72
- throw new Error(`Invalid NBT Data: Unknown tag <${tagID}>`);
73
- }
74
- this.expectInput(1, "Invalid NBT Data: Expected tag ID in tag compound", false);
75
- tagID = this.readByteValue().getValue();
76
- }
77
- return compound;
78
- }
79
- readTagListValue() {
80
- this.expectInput(this.isUsingVarint() ? 2 : 5, "Invalid NBT Data: Expected TAGList header", false);
81
- const listType = this.readByteValue().getValue();
82
- let listLength = this.readIntValue().getValue();
83
- this.alterAllocationLimit(Allocation.ARRAY_LIST);
84
- this.alterAllocationLimit(Allocation.REFERENCE);
85
- const backingList = /* @__PURE__ */ new Set();
86
- switch (listType) {
87
- case NBTDefinitions.TAG_END:
88
- listLength = 0;
89
- break;
90
- case NBTDefinitions.TAG_BYTE:
91
- this.expectInput(listLength, "Invalid NBT Data: Expected bytes for list");
92
- for (let i = 0; i < listLength; i++) {
93
- backingList.add(this.readShortValue());
94
- }
95
- break;
96
- case NBTDefinitions.TAG_SHORT:
97
- this.expectInput(2 * listLength, "Invalid NBT Data: Expected shorts for list");
98
- for (let i = 0; i < listLength; i++) {
99
- backingList.add(this.readShortValue());
100
- }
101
- break;
102
- case NBTDefinitions.TAG_INT:
103
- this.expectInput(4 * listLength, "Invalid NBT Data: Expected ints for list");
104
- for (let i = 0; i < listLength; i++) {
105
- backingList.add(this.readIntValue());
106
- }
107
- break;
108
- case NBTDefinitions.TAG_LONG:
109
- this.expectInput(8 * listLength, "Invalid NBT Data: Expected longs for list");
110
- for (let i = 0; i < listLength; i++) {
111
- backingList.add(this.readLongValue());
112
- }
113
- break;
114
- case NBTDefinitions.TAG_FLOAT:
115
- this.expectInput(4 * listLength, "Invalid NBT Data: Expected floats for list");
116
- for (let i = 0; i < listLength; i++) {
117
- backingList.add(this.readFloatValue());
118
- }
119
- break;
120
- case NBTDefinitions.TAG_DOUBLE:
121
- this.expectInput(8 * listLength, "Invalid NBT Data: Expected doubles for list");
122
- for (let i = 0; i < listLength; i++) {
123
- backingList.add(this.readDoubleValue());
124
- }
125
- break;
126
- case NBTDefinitions.TAG_BYTE_ARRAY:
127
- for (let i = 0; i < listLength; i++) {
128
- backingList.add(this.readByteArrayValue());
129
- }
130
- break;
131
- case NBTDefinitions.TAG_STRING:
132
- for (let i = 0; i < listLength; i++) {
133
- backingList.add(this.readStringValue());
134
- }
135
- break;
136
- case NBTDefinitions.TAG_LIST:
137
- for (let i = 0; i < listLength; i++) {
138
- backingList.add(this.readTagListValue());
139
- }
140
- break;
141
- case NBTDefinitions.TAG_COMPOUND:
142
- for (let i = 0; i < listLength; i++) {
143
- backingList.add(this.readTagCompoundValue());
144
- }
145
- break;
146
- case NBTDefinitions.TAG_INT_ARRAY:
147
- for (let i = 0; i < listLength; i++) {
148
- backingList.add(this.readIntArrayValue());
149
- }
150
- break;
151
- default:
152
- throw new Error(`Invalid NBT Data: Unknown tag <${listType}>`);
153
- }
154
- return backingList;
155
- }
156
- }
157
-
158
- export { NBTReader as default };
159
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTkJUUmVhZGVyLmVzLmpzIiwic291cmNlcyI6WyIuLi9zcmMvTkJUUmVhZGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGNvbXBsZXhpdHkgKi9cbmltcG9ydCB7IEFsbG9jYXRpb24gfSBmcm9tICcuL0FsbG9jYXRpb24nO1xuaW1wb3J0IHR5cGUgQmluYXJ5U3RyZWFtIGZyb20gJ0Bqc3ByaXNtYXJpbmUvanNiaW5hcnl1dGlscyc7XG5pbXBvcnQgdHlwZSB7IEJ5dGVPcmRlciB9IGZyb20gJy4vQnl0ZU9yZGVyJztcbmltcG9ydCB7IE5CVERlZmluaXRpb25zIH0gZnJvbSAnLi9OQlREZWZpbml0aW9ucyc7XG5pbXBvcnQgTkJUU3RyZWFtUmVhZGVyIGZyb20gJy4vTkJUU3RyZWFtUmVhZGVyJztcbmltcG9ydCBOQlRUYWdDb21wb3VuZCBmcm9tICcuL05CVFRhZ0NvbXBvdW5kJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTkJUUmVhZGVyIGV4dGVuZHMgTkJUU3RyZWFtUmVhZGVyIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoaW5wdXQ6IEJpbmFyeVN0cmVhbSwgYnl0ZU9yZGVyOiBCeXRlT3JkZXIpIHtcbiAgICAgICAgc3VwZXIoaW5wdXQsIGJ5dGVPcmRlcik7XG4gICAgfVxuXG4gICAgcHVibGljIHBhcnNlTGlzdDxUYWdUeXBlPigpOiBTZXQ8VGFnVHlwZT4ge1xuICAgICAgICB0aGlzLmV4cGVjdElucHV0KHRoaXMuaXNVc2luZ1ZhcmludCgpID8gMiA6IDMsICdJbnZhbGlkIE5CVCBEYXRhOiBOb3QgZW5vdWdoIGRhdGEgdG8gcmVhZCBuZXcgdGFnJywgZmFsc2UpO1xuICAgICAgICBpZiAodGhpcy5yZWFkQnl0ZVZhbHVlKCkuZ2V0VmFsdWUoKSAhPT0gTkJURGVmaW5pdGlvbnMuVEFHX0xJU1QpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBOQlQgRGF0YTogTm90IGxpc3QgdGFnIGZvdW5kJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJlYWRTdHJpbmdWYWx1ZSgpO1xuICAgICAgICByZXR1cm4gdGhpcy5yZWFkVGFnTGlzdFZhbHVlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHBhcnNlKCk6IE5CVFRhZ0NvbXBvdW5kIHtcbiAgICAgICAgdGhpcy5leHBlY3RJbnB1dCh0aGlzLmlzVXNpbmdWYXJpbnQoKSA/IDIgOiAzLCAnSW52YWxpZCBOQlQgRGF0YTogTm90IGVub3VnaCBkYXRhIHRvIHJlYWQgbmV3IHRhZycsIGZhbHNlKTtcbiAgICAgICAgaWYgKHRoaXMucmVhZEJ5dGVWYWx1ZSgpLmdldFZhbHVlKCkgIT09IE5CVERlZmluaXRpb25zLlRBR19DT01QT1VORCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIE5CVCBEYXRhOiBObyByb290IHRhZyBmb3VuZCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbmFtZTogc3RyaW5nID0gdGhpcy5yZWFkU3RyaW5nVmFsdWUoKS5nZXRWYWx1ZSgpO1xuICAgICAgICBjb25zdCByb290OiBOQlRUYWdDb21wb3VuZCA9IHRoaXMucmVhZFRhZ0NvbXBvdW5kVmFsdWUoKTtcbiAgICAgICAgcm9vdC5zZXROYW1lKG5hbWUpO1xuICAgICAgICByZXR1cm4gcm9vdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlYWRUYWdDb21wb3VuZFZhbHVlKCk6IE5CVFRhZ0NvbXBvdW5kIHtcbiAgICAgICAgdGhpcy5hbHRlckFsbG9jYXRpb25MaW1pdChBbGxvY2F0aW9uLkNPTVBPVU5EKTtcbiAgICAgICAgY29uc3QgY29tcG91bmQ6IE5CVFRhZ0NvbXBvdW5kID0gbmV3IE5CVFRhZ0NvbXBvdW5kKCk7XG4gICAgICAgIHRoaXMuZXhwZWN0SW5wdXQoMSwgJ0ludmFsaWQgTkJUIERhdGE6IEV4cGVjdGVkIFRhZyBJRCBpbiBjb21wb3VuZCB0YWcnLCBmYWxzZSk7XG5cbiAgICAgICAgbGV0IHRhZ0lEID0gdGhpcy5yZWFkQnl0ZVZhbHVlKCkuZ2V0VmFsdWUoKTtcbiAgICAgICAgd2hpbGUgKHRhZ0lEICE9PSBOQlREZWZpbml0aW9ucy5UQUdfRU5EKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHRhZ0lEKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBOQlREZWZpbml0aW9ucy5UQUdfQllURTpcbiAgICAgICAgICAgICAgICAgICAgY29tcG91bmQuYWRkVmFsdWUodGhpcy5yZWFkU3RyaW5nVmFsdWUoKS5nZXRWYWx1ZSgpLCB0aGlzLnJlYWRCeXRlVmFsdWUoKSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgTkJURGVmaW5pdGlvbnMuVEFHX1NIT1JUOlxuICAgICAgICAgICAgICAgICAgICBjb21wb3VuZC5hZGRWYWx1ZSh0aGlzLnJlYWRTdHJpbmdWYWx1ZSgpLmdldFZhbHVlKCksIHRoaXMucmVhZFNob3J0VmFsdWUoKSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgTkJURGVmaW5pdGlvbnMuVEFHX0lOVDpcbiAgICAgICAgICAgICAgICAgICAgY29tcG91bmQuYWRkVmFsdWUodGhpcy5yZWFkU3RyaW5nVmFsdWUoKS5nZXRWYWx1ZSgpLCB0aGlzLnJlYWRJbnRWYWx1ZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBOQlREZWZpbml0aW9ucy5UQUdfTE9ORzpcbiAgICAgICAgICAgICAgICAgICAgY29tcG91bmQuYWRkVmFsdWUodGhpcy5yZWFkU3RyaW5nVmFsdWUoKS5nZXRWYWx1ZSgpLCB0aGlzLnJlYWRMb25nVmFsdWUoKSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgTkJURGVmaW5pdGlvbnMuVEFHX0ZMT0FUOlxuICAgICAgICAgICAgICAgICAgICBjb21wb3VuZC5hZGRWYWx1ZSh0aGlzLnJlYWRTdHJpbmdWYWx1ZSgpLmdldFZhbHVlKCksIHRoaXMucmVhZEZsb2F0VmFsdWUoKSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgTkJURGVmaW5pdGlvbnMuVEFHX0RPVUJMRTpcbiAgICAgICAgICAgICAgICAgICAgY29tcG91bmQuYWRkVmFsdWUodGhpcy5yZWFkU3RyaW5nVmFsdWUoKS5nZXRWYWx1ZSgpLCB0aGlzLnJlYWREb3VibGVWYWx1ZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBOQlREZWZpbml0aW9ucy5UQUdfQllURV9BUlJBWTpcbiAgICAgICAgICAgICAgICAgICAgY29tcG91bmQuYWRkVmFsdWUodGhpcy5yZWFkU3RyaW5nVmFsdWUoKS5nZXRWYWx1ZSgpLCB0aGlzLnJlYWRCeXRlQXJyYXlWYWx1ZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBOQlREZWZpbml0aW9ucy5UQUdfU1RSSU5HOlxuICAgICAgICAgICAgICAgICAgICBjb21wb3VuZC5hZGRWYWx1ZSh0aGlzLnJlYWRTdHJpbmdWYWx1ZSgpLmdldFZhbHVlKCksIHRoaXMucmVhZFN0cmluZ1ZhbHVlKCkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIE5CVERlZmluaXRpb25zLlRBR19MSVNUOlxuICAgICAgICAgICAgICAgICAgICBjb21wb3VuZC5hZGRWYWx1ZSh0aGlzLnJlYWRTdHJpbmdWYWx1ZSgpLmdldFZhbHVlKCksIHRoaXMucmVhZFRhZ0xpc3RWYWx1ZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBOQlREZWZpbml0aW9ucy5UQUdfQ09NUE9VTkQ6XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5hbWU6IHN0cmluZyA9IHRoaXMucmVhZFN0cmluZ1ZhbHVlKCkuZ2V0VmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGQ6IE5CVFRhZ0NvbXBvdW5kID0gdGhpcy5yZWFkVGFnQ29tcG91bmRWYWx1ZSgpO1xuICAgICAgICAgICAgICAgICAgICBjaGlsZC5zZXROYW1lKG5hbWUpO1xuICAgICAgICAgICAgICAgICAgICBjb21wb3VuZC5hZGRDaGlsZChjaGlsZCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgTkJURGVmaW5pdGlvbnMuVEFHX0lOVF9BUlJBWTpcbiAgICAgICAgICAgICAgICAgICAgY29tcG91bmQuYWRkVmFsdWUodGhpcy5yZWFkU3RyaW5nVmFsdWUoKS5nZXRWYWx1ZSgpLCB0aGlzLnJlYWRJbnRBcnJheVZhbHVlKCkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgTkJUIERhdGE6IFVua25vd24gdGFnIDwke3RhZ0lEfT5gKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5leHBlY3RJbnB1dCgxLCAnSW52YWxpZCBOQlQgRGF0YTogRXhwZWN0ZWQgdGFnIElEIGluIHRhZyBjb21wb3VuZCcsIGZhbHNlKTtcbiAgICAgICAgICAgIHRhZ0lEID0gdGhpcy5yZWFkQnl0ZVZhbHVlKCkuZ2V0VmFsdWUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb21wb3VuZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlYWRUYWdMaXN0VmFsdWUoKTogU2V0PGFueT4ge1xuICAgICAgICB0aGlzLmV4cGVjdElucHV0KHRoaXMuaXNVc2luZ1ZhcmludCgpID8gMiA6IDUsICdJbnZhbGlkIE5CVCBEYXRhOiBFeHBlY3RlZCBUQUdMaXN0IGhlYWRlcicsIGZhbHNlKTtcbiAgICAgICAgY29uc3QgbGlzdFR5cGU6IG51bWJlciA9IHRoaXMucmVhZEJ5dGVWYWx1ZSgpLmdldFZhbHVlKCk7XG4gICAgICAgIGxldCBsaXN0TGVuZ3RoOiBudW1iZXIgPSB0aGlzLnJlYWRJbnRWYWx1ZSgpLmdldFZhbHVlKCk7XG5cbiAgICAgICAgdGhpcy5hbHRlckFsbG9jYXRpb25MaW1pdChBbGxvY2F0aW9uLkFSUkFZX0xJU1QpO1xuICAgICAgICB0aGlzLmFsdGVyQWxsb2NhdGlvbkxpbWl0KEFsbG9jYXRpb24uUkVGRVJFTkNFKTtcblxuICAgICAgICBjb25zdCBiYWNraW5nTGlzdDogU2V0PGFueT4gPSBuZXcgU2V0KCk7XG5cbiAgICAgICAgc3dpdGNoIChsaXN0VHlwZSkge1xuICAgICAgICAgICAgY2FzZSBOQlREZWZpbml0aW9ucy5UQUdfRU5EOlxuICAgICAgICAgICAgICAgIGxpc3RMZW5ndGggPSAwO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBOQlREZWZpbml0aW9ucy5UQUdfQllURTpcbiAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdElucHV0KGxpc3RMZW5ndGgsICdJbnZhbGlkIE5CVCBEYXRhOiBFeHBlY3RlZCBieXRlcyBmb3IgbGlzdCcpO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdExlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tpbmdMaXN0LmFkZCh0aGlzLnJlYWRTaG9ydFZhbHVlKCkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBOQlREZWZpbml0aW9ucy5UQUdfU0hPUlQ6XG4gICAgICAgICAgICAgICAgdGhpcy5leHBlY3RJbnB1dCgyICogbGlzdExlbmd0aCwgJ0ludmFsaWQgTkJUIERhdGE6IEV4cGVjdGVkIHNob3J0cyBmb3IgbGlzdCcpO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdExlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tpbmdMaXN0LmFkZCh0aGlzLnJlYWRTaG9ydFZhbHVlKCkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBOQlREZWZpbml0aW9ucy5UQUdfSU5UOlxuICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0SW5wdXQoNCAqIGxpc3RMZW5ndGgsICdJbnZhbGlkIE5CVCBEYXRhOiBFeHBlY3RlZCBpbnRzIGZvciBsaXN0Jyk7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0TGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2luZ0xpc3QuYWRkKHRoaXMucmVhZEludFZhbHVlKCkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBOQlREZWZpbml0aW9ucy5UQUdfTE9ORzpcbiAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdElucHV0KDggKiBsaXN0TGVuZ3RoLCAnSW52YWxpZCBOQlQgRGF0YTogRXhwZWN0ZWQgbG9uZ3MgZm9yIGxpc3QnKTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3RMZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBiYWNraW5nTGlzdC5hZGQodGhpcy5yZWFkTG9uZ1ZhbHVlKCkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBOQlREZWZpbml0aW9ucy5UQUdfRkxPQVQ6XG4gICAgICAgICAgICAgICAgdGhpcy5leHBlY3RJbnB1dCg0ICogbGlzdExlbmd0aCwgJ0ludmFsaWQgTkJUIERhdGE6IEV4cGVjdGVkIGZsb2F0cyBmb3IgbGlzdCcpO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdExlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tpbmdMaXN0LmFkZCh0aGlzLnJlYWRGbG9hdFZhbHVlKCkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBOQlREZWZpbml0aW9ucy5UQUdfRE9VQkxFOlxuICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0SW5wdXQoOCAqIGxpc3RMZW5ndGgsICdJbnZhbGlkIE5CVCBEYXRhOiBFeHBlY3RlZCBkb3VibGVzIGZvciBsaXN0Jyk7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0TGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2luZ0xpc3QuYWRkKHRoaXMucmVhZERvdWJsZVZhbHVlKCkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBOQlREZWZpbml0aW9ucy5UQUdfQllURV9BUlJBWTpcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3RMZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBiYWNraW5nTGlzdC5hZGQodGhpcy5yZWFkQnl0ZUFycmF5VmFsdWUoKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIE5CVERlZmluaXRpb25zLlRBR19TVFJJTkc6XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0TGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2luZ0xpc3QuYWRkKHRoaXMucmVhZFN0cmluZ1ZhbHVlKCkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBOQlREZWZpbml0aW9ucy5UQUdfTElTVDpcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3RMZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBiYWNraW5nTGlzdC5hZGQodGhpcy5yZWFkVGFnTGlzdFZhbHVlKCkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBOQlREZWZpbml0aW9ucy5UQUdfQ09NUE9VTkQ6XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0TGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2luZ0xpc3QuYWRkKHRoaXMucmVhZFRhZ0NvbXBvdW5kVmFsdWUoKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIE5CVERlZmluaXRpb25zLlRBR19JTlRfQVJSQVk6XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0TGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2luZ0xpc3QuYWRkKHRoaXMucmVhZEludEFycmF5VmFsdWUoKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBOQlQgRGF0YTogVW5rbm93biB0YWcgPCR7bGlzdFR5cGV9PmApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGJhY2tpbmdMaXN0O1xuICAgIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQVFBLE1BQXFCLGtCQUFrQixlQUFnQixDQUFBO0FBQUEsRUFDNUMsV0FBQSxDQUFZLE9BQXFCLFNBQXNCLEVBQUE7QUFDMUQsSUFBQSxLQUFBLENBQU0sT0FBTyxTQUFTLENBQUE7QUFBQTtBQUMxQixFQUVPLFNBQW1DLEdBQUE7QUFDdEMsSUFBQSxJQUFB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