@mat3ra/esse 2025.4.22-0 → 2025.5.13-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 (41) hide show
  1. package/.eslintrc.json +3 -9
  2. package/.prettierrc +2 -1
  3. package/dist/js/example/material/reusable/repetitions.json +5 -0
  4. package/dist/js/example/material/reusable/slab/miller_indices.json +5 -0
  5. package/dist/js/example/material/reusable/slab/number_of_layers.json +1 -0
  6. package/dist/js/example/material/reusable/slab/termination.json +4 -0
  7. package/dist/js/example/material/reusable/slab/vacuum.json +1 -0
  8. package/dist/js/example/material/reusable/supercell_matrix_2d.json +10 -0
  9. package/dist/js/example/material/reusable/supercell_matrix_3d.json +17 -0
  10. package/dist/js/example/materials_category/single_material/two_dimensional/slab/configuration.json +150 -0
  11. package/dist/js/schema/core/abstract/coordinate_2d.json +11 -0
  12. package/dist/js/schema/material/reusable/repetitions.json +18 -0
  13. package/dist/js/schema/material/reusable/slab/enums.json +11 -0
  14. package/dist/js/schema/material/reusable/slab/miller_indices.json +17 -0
  15. package/dist/js/schema/material/reusable/slab/number_of_layers.json +9 -0
  16. package/dist/js/schema/material/reusable/slab/termination.json +23 -0
  17. package/dist/js/schema/material/reusable/slab/vacuum.json +9 -0
  18. package/dist/js/schema/material/reusable/supercell_matrix_2d.json +27 -0
  19. package/dist/js/schema/material/reusable/supercell_matrix_3d.json +34 -0
  20. package/dist/js/schema/materials_category/single_material/two_dimensional/slab/configuration.json +709 -0
  21. package/dist/js/schemas.json +1 -1
  22. package/dist/js/types.d.ts +360 -0
  23. package/example/material/reusable/repetitions.json +1 -0
  24. package/example/material/reusable/slab/miller_indices.json +5 -0
  25. package/example/material/reusable/slab/number_of_layers.json +1 -0
  26. package/example/material/reusable/slab/termination.json +4 -0
  27. package/example/material/reusable/slab/vacuum.json +1 -0
  28. package/example/material/reusable/supercell_matrix_2d.json +10 -0
  29. package/example/material/reusable/supercell_matrix_3d.json +5 -0
  30. package/example/materials_category/single_material/two_dimensional/slab/configuration.json +25 -0
  31. package/package.json +10 -4
  32. package/schema/core/abstract/coordinate_2d.json +11 -0
  33. package/schema/material/reusable/repetitions.json +18 -0
  34. package/schema/material/reusable/slab/enums.json +11 -0
  35. package/schema/material/reusable/slab/miller_indices.json +17 -0
  36. package/schema/material/reusable/slab/number_of_layers.json +9 -0
  37. package/schema/material/reusable/slab/termination.json +23 -0
  38. package/schema/material/reusable/slab/vacuum.json +9 -0
  39. package/schema/material/reusable/supercell_matrix_2d.json +27 -0
  40. package/schema/material/reusable/supercell_matrix_3d.json +34 -0
  41. package/schema/materials_category/single_material/two_dimensional/slab/configuration.json +42 -0
@@ -1600,6 +1600,12 @@ export interface DimensionalGridSchema {
1600
1600
  */
1601
1601
  shifts: [number, number, number];
1602
1602
  }
1603
+ /** Schema dist/js/schema/core/abstract/coordinate_2d.json */
1604
+ /**
1605
+ * @minItems 2
1606
+ * @maxItems 2
1607
+ */
1608
+ export type Coordinate2DSchema = [number, number];
1603
1609
  /** Schema dist/js/schema/core/abstract/coordinate_3d.json */
1604
1610
  /**
1605
1611
  * @minItems 3
@@ -6151,6 +6157,64 @@ export interface MaterialConsistencyCheckSchema {
6151
6157
  export interface MaterialConventionalSchema {
6152
6158
  conventional?: {};
6153
6159
  }
6160
+ /** Schema dist/js/schema/material/reusable/repetitions.json */
6161
+ /**
6162
+ * Number of unit cells to repeat in each direction for a crystal structure.
6163
+ *
6164
+ * @minItems 3
6165
+ * @maxItems 3
6166
+ */
6167
+ export type CrystalRepetitionsSchema = [number, number, number];
6168
+ /** Schema dist/js/schema/material/reusable/slab/enums.json */
6169
+ export type SurfaceTypesEnum = "top" | "bottom" | "both";
6170
+ /** Schema dist/js/schema/material/reusable/slab/miller_indices.json */
6171
+ /**
6172
+ * Miller indices for crystallographic plane designation
6173
+ *
6174
+ * @minItems 3
6175
+ * @maxItems 3
6176
+ */
6177
+ export type MillerIndicesSchema = [number, number, number];
6178
+ /** Schema dist/js/schema/material/reusable/slab/number_of_layers.json */
6179
+ /**
6180
+ * Number of atomic layers in a structural component
6181
+ */
6182
+ export type NumberOfLayersSchema = number;
6183
+ /** Schema dist/js/schema/material/reusable/slab/termination.json */
6184
+ /**
6185
+ * Defines a specific termination of a slab
6186
+ */
6187
+ export interface TerminationSchema {
6188
+ /**
6189
+ * Chemical elements at the termination
6190
+ */
6191
+ chemical_elements: string;
6192
+ /**
6193
+ * Space group symmetry designation for the termination
6194
+ */
6195
+ space_group_symmetry_label: string;
6196
+ }
6197
+ /** Schema dist/js/schema/material/reusable/slab/vacuum.json */
6198
+ /**
6199
+ * Vacuum thickness in Angstroms
6200
+ */
6201
+ export type VacuumSchema = number;
6202
+ /** Schema dist/js/schema/material/reusable/supercell_matrix_2d.json */
6203
+ /**
6204
+ * Supercell matrix for xy plane transformations
6205
+ *
6206
+ * @minItems 2
6207
+ * @maxItems 2
6208
+ */
6209
+ export type SupercellMatrix2DSchema = [[number, number], [number, number]];
6210
+ /** Schema dist/js/schema/material/reusable/supercell_matrix_3d.json */
6211
+ /**
6212
+ * 3x3 matrix of integers for transforming a unit cell into a supercell
6213
+ *
6214
+ * @minItems 3
6215
+ * @maxItems 3
6216
+ */
6217
+ export type SupercellMatrix3DSchema = [[number, number, number], [number, number, number], [number, number, number]];
6154
6218
  /** Schema dist/js/schema/material.json */
6155
6219
  export interface MaterialSchema {
6156
6220
  /**
@@ -6408,6 +6472,302 @@ export interface MaterialSchema {
6408
6472
  isDefault?: boolean;
6409
6473
  metadata?: {};
6410
6474
  }
6475
+ /** Schema dist/js/schema/materials_category/single_material/two_dimensional/slab/configuration.json */
6476
+ /**
6477
+ * Configuration for creating a slab from a bulk material
6478
+ */
6479
+ export interface SlabConfigurationSchema {
6480
+ bulk?: {
6481
+ /**
6482
+ * reduced chemical formula
6483
+ */
6484
+ formula?: string;
6485
+ /**
6486
+ * chemical formula based on the number of atoms of each element in the supercell
6487
+ */
6488
+ unitCellFormula?: string;
6489
+ basis: {
6490
+ /**
6491
+ * atomic elements schema
6492
+ */
6493
+ elements: {
6494
+ /**
6495
+ * value of this entry
6496
+ */
6497
+ value: string;
6498
+ /**
6499
+ * integer id of this entry
6500
+ */
6501
+ id: number;
6502
+ }[];
6503
+ /**
6504
+ * atomic coordinates schema
6505
+ */
6506
+ coordinates: {
6507
+ /**
6508
+ * value of this entry
6509
+ *
6510
+ * @minItems 3
6511
+ * @maxItems 3
6512
+ */
6513
+ value: [number, number, number];
6514
+ /**
6515
+ * integer id of this entry
6516
+ */
6517
+ id: number;
6518
+ }[];
6519
+ units?: "crystal" | "cartesian";
6520
+ /**
6521
+ * atomic labels schema
6522
+ */
6523
+ labels?: {
6524
+ /**
6525
+ * value of this entry
6526
+ */
6527
+ value: (number | string | number) | number;
6528
+ /**
6529
+ * integer id of this entry
6530
+ */
6531
+ id: number;
6532
+ }[];
6533
+ };
6534
+ lattice: {
6535
+ /**
6536
+ * length of the first lattice vector
6537
+ */
6538
+ a: number;
6539
+ /**
6540
+ * length of the second lattice vector
6541
+ */
6542
+ b: number;
6543
+ /**
6544
+ * length of the third lattice vector
6545
+ */
6546
+ c: number;
6547
+ /**
6548
+ * angle between first and second lattice vector
6549
+ */
6550
+ alpha: number;
6551
+ /**
6552
+ * angle between second and third lattice vector
6553
+ */
6554
+ beta: number;
6555
+ /**
6556
+ * angle between first and third lattice vector
6557
+ */
6558
+ gamma: number;
6559
+ vectors?: {
6560
+ /**
6561
+ * @minItems 3
6562
+ * @maxItems 3
6563
+ */
6564
+ a: [number, number, number];
6565
+ /**
6566
+ * @minItems 3
6567
+ * @maxItems 3
6568
+ */
6569
+ b: [number, number, number];
6570
+ /**
6571
+ * @minItems 3
6572
+ * @maxItems 3
6573
+ */
6574
+ c: [number, number, number];
6575
+ /**
6576
+ * lattice parameter for fractional coordinates
6577
+ */
6578
+ alat?: number;
6579
+ units?: "angstrom" | "bohr";
6580
+ };
6581
+ type?: "CUB" | "BCC" | "FCC" | "TET" | "MCL" | "ORC" | "ORCC" | "ORCF" | "ORCI" | "HEX" | "BCT" | "TRI" | "MCLC" | "RHL";
6582
+ units?: {
6583
+ length?: "angstrom" | "bohr";
6584
+ angle?: "degree" | "radian";
6585
+ };
6586
+ };
6587
+ derivedProperties?: ({
6588
+ name?: "volume";
6589
+ units?: "angstrom^3";
6590
+ value: number;
6591
+ } | {
6592
+ name?: "density";
6593
+ units?: "g/cm^3";
6594
+ value: number;
6595
+ } | {
6596
+ /**
6597
+ * point group symbol in Schoenflies notation
6598
+ */
6599
+ pointGroupSymbol?: string;
6600
+ /**
6601
+ * space group symbol in Hermann–Mauguin notation
6602
+ */
6603
+ spaceGroupSymbol?: string;
6604
+ /**
6605
+ * tolerance used for symmetry calculation
6606
+ */
6607
+ tolerance?: {
6608
+ units?: "angstrom";
6609
+ value: number;
6610
+ };
6611
+ name?: "symmetry";
6612
+ } | {
6613
+ name?: "elemental_ratio";
6614
+ value: number;
6615
+ /**
6616
+ * the element this ratio is for
6617
+ */
6618
+ element?: string;
6619
+ } | {
6620
+ name?: "p-norm";
6621
+ /**
6622
+ * degree of the dimensionality of the norm
6623
+ */
6624
+ degree?: number;
6625
+ value: number;
6626
+ } | {
6627
+ name?: "inchi";
6628
+ value: string;
6629
+ } | {
6630
+ name?: "inchi_key";
6631
+ value: string;
6632
+ })[];
6633
+ /**
6634
+ * information about a database source
6635
+ */
6636
+ external?: {
6637
+ /**
6638
+ * ID string for the materials uploaded from a third party source inside the third party source. For materialsproject.org an example ID is mp-32
6639
+ */
6640
+ id: string | number;
6641
+ /**
6642
+ * Third party source name, e.g. materials project, 2dmatpedia, ICSD, etc.
6643
+ */
6644
+ source: string;
6645
+ /**
6646
+ * Deprecated. To be removed. A flag that is true when material is initially imported from a third party * (as opposed to being independently designed from scratch).
6647
+ */
6648
+ origin: boolean;
6649
+ /**
6650
+ * Original response from external source.
6651
+ */
6652
+ data?: {};
6653
+ /**
6654
+ * Digital Object Identifier, e.g. 10.1088/0953-8984/25/10/105506
6655
+ */
6656
+ doi?: string;
6657
+ /**
6658
+ * The URL of the original record, e.g. https://next-gen.materialsproject.org/materials/mp-48; ToDo: update to use URI type per https://json-schema.org/understanding-json-schema/reference/string#resource-identifiers
6659
+ */
6660
+ url?: string;
6661
+ };
6662
+ /**
6663
+ * file source with the information inside
6664
+ */
6665
+ src?: {
6666
+ /**
6667
+ * file extension
6668
+ */
6669
+ extension?: string;
6670
+ /**
6671
+ * file name without extension
6672
+ */
6673
+ filename: string;
6674
+ /**
6675
+ * file content as raw text
6676
+ */
6677
+ text: string;
6678
+ /**
6679
+ * MD5 hash based on file content
6680
+ */
6681
+ hash: string;
6682
+ };
6683
+ /**
6684
+ * Hash string for a scaled structure with lattice vector a set to 1 (eg. for materials under pressure).
6685
+ */
6686
+ scaledHash?: string;
6687
+ /**
6688
+ * Corresponding ICSD id of the material
6689
+ */
6690
+ icsdId?: number;
6691
+ /**
6692
+ * Whether to work in the finite molecular picture (usually with atomic orbital basis)
6693
+ */
6694
+ isNonPeriodic?: boolean;
6695
+ consistencyChecks?: {
6696
+ /**
6697
+ * Name of the consistency check that is performed, which is listed in an enum.
6698
+ */
6699
+ name: "default" | "atomsTooClose" | "atomsOverlap";
6700
+ /**
6701
+ * Key of the property of the entity on which the consistency check is performed in Mongo dot notation, e.g. 'basis.coordinates.1'
6702
+ */
6703
+ key: string;
6704
+ /**
6705
+ * Severity level of the problem, which is used in UI to differentiate.
6706
+ */
6707
+ severity: "info" | "warning" | "error";
6708
+ /**
6709
+ * Message generated by the consistency check describing the problem.
6710
+ */
6711
+ message: string;
6712
+ }[];
6713
+ /**
6714
+ * entity identity
6715
+ */
6716
+ _id?: string;
6717
+ /**
6718
+ * entity slug
6719
+ */
6720
+ slug?: string;
6721
+ systemName?: string;
6722
+ /**
6723
+ * entity's schema version. Used to distinct between different schemas.
6724
+ */
6725
+ schemaVersion?: string;
6726
+ /**
6727
+ * entity name
6728
+ */
6729
+ name?: string;
6730
+ /**
6731
+ * Identifies that entity is defaultable
6732
+ */
6733
+ isDefault?: boolean;
6734
+ metadata?: {};
6735
+ };
6736
+ /**
6737
+ * Miller indices for crystallographic plane designation
6738
+ *
6739
+ * @minItems 3
6740
+ * @maxItems 3
6741
+ */
6742
+ miller_indices?: [number, number, number];
6743
+ /**
6744
+ * Number of atomic layers in a structural component
6745
+ */
6746
+ number_of_layers?: number;
6747
+ /**
6748
+ * Vacuum thickness in Angstroms
6749
+ */
6750
+ vacuum?: number;
6751
+ /**
6752
+ * Supercell matrix for xy plane transformations
6753
+ *
6754
+ * @minItems 2
6755
+ * @maxItems 2
6756
+ */
6757
+ xy_supercell_matrix?: [[number, number], [number, number]];
6758
+ /**
6759
+ * Whether to use conventional cell
6760
+ */
6761
+ use_conventional_cell?: boolean;
6762
+ /**
6763
+ * Whether to make z-axis orthogonal
6764
+ */
6765
+ use_orthogonal_z?: boolean;
6766
+ /**
6767
+ * Whether to make the slab primitive
6768
+ */
6769
+ make_primitive?: boolean;
6770
+ }
6411
6771
  /** Schema dist/js/schema/method/categorized_method.json */
6412
6772
  export interface CategorizedMethod {
6413
6773
  units: {
@@ -0,0 +1 @@
1
+ [1, 2, 3]
@@ -0,0 +1,4 @@
1
+ {
2
+ "chemical_elements": "Si",
3
+ "space_group_symmetry_label": "P4/mmm_2"
4
+ }
@@ -0,0 +1,10 @@
1
+ [
2
+ [
3
+ 2,
4
+ 0
5
+ ],
6
+ [
7
+ 0,
8
+ 2
9
+ ]
10
+ ]
@@ -0,0 +1,5 @@
1
+ [
2
+ [1, 0, 0],
3
+ [0, 2, 0],
4
+ [0, 0, 3]
5
+ ]
@@ -0,0 +1,25 @@
1
+ {
2
+ "bulk": {
3
+ "...": "include(../../../../material.json)"
4
+ },
5
+ "miller_indices": [
6
+ 0,
7
+ 0,
8
+ 1
9
+ ],
10
+ "number_of_layers": 3,
11
+ "vacuum": 15.0,
12
+ "xy_supercell_matrix": [
13
+ [
14
+ 1,
15
+ 0
16
+ ],
17
+ [
18
+ 0,
19
+ 1
20
+ ]
21
+ ],
22
+ "use_conventional_cell": true,
23
+ "use_orthogonal_z": true,
24
+ "make_primitive": true
25
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mat3ra/esse",
3
- "version": "2025.4.22-0",
3
+ "version": "2025.5.13-0",
4
4
  "description": "Mat3ra's Excellent Source of Schemas and Examples (ESSE) for Digital Materials R&D",
5
5
  "scripts": {
6
6
  "transpile": "tsc -p tsconfig-transpile.json",
@@ -27,7 +27,7 @@
27
27
  },
28
28
  "homepage": "https://github.com/Exabyte-io/esse",
29
29
  "devDependencies": {
30
- "@exabyte-io/eslint-config": "^2025.1.15-0",
30
+ "@exabyte-io/eslint-config": "2025.5.13-0",
31
31
  "@mat3ra/tsconfig": "^2024.6.3-0",
32
32
  "@typescript-eslint/eslint-plugin": "^5.62.0",
33
33
  "@typescript-eslint/parser": "^5.62.0",
@@ -40,6 +40,7 @@
40
40
  "eslint-import-resolver-node": "^0.3.9",
41
41
  "eslint-plugin-import": "^2.31.0",
42
42
  "eslint-plugin-jsdoc": "^50.6.9",
43
+ "eslint-plugin-jsonc": "^2.20.0",
43
44
  "eslint-plugin-jsx-a11y": "^6.10.2",
44
45
  "eslint-plugin-mui-path-imports": "0.0.15",
45
46
  "eslint-plugin-prettier": "^4.2.1",
@@ -83,8 +84,13 @@
83
84
  "node": ">=14.0.0"
84
85
  },
85
86
  "lint-staged": {
86
- "*.js,!dist/**/*": "eslint --cache --fix",
87
- "*.{js,css},!dist/**/*": "prettier --write"
87
+ "src/**/*.js": [
88
+ "eslint --cache --fix",
89
+ "prettier --write"
90
+ ],
91
+ "src/**/*.css": "prettier --write",
92
+ "schemas/**/*.json": "eslint --cache --fix --no-ignore",
93
+ "example/**/*.json": "eslint --cache --fix --no-ignore"
88
94
  },
89
95
  "exports": {
90
96
  "./dist/js/schema/*.json": "./dist/js/schema/*.json",
@@ -0,0 +1,11 @@
1
+ {
2
+ "$id": "core/abstract/coordinate-2d",
3
+ "$schema": "http://json-schema.org/draft-07/schema#",
4
+ "title": "coordinate 2d schema",
5
+ "type": "array",
6
+ "items": {
7
+ "type": "number"
8
+ },
9
+ "minItems": 2,
10
+ "maxItems": 2
11
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "$id": "material/reusable/repetitions",
3
+ "$schema": "http://json-schema.org/draft-07/schema#",
4
+ "title": "Crystal Repetitions Schema",
5
+ "description": "Number of unit cells to repeat in each direction for a crystal structure.",
6
+ "type": "array",
7
+ "items": {
8
+ "type": "integer",
9
+ "minimum": 1
10
+ },
11
+ "minItems": 3,
12
+ "maxItems": 3,
13
+ "default": [
14
+ 1,
15
+ 1,
16
+ 1
17
+ ]
18
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "$id": "material/reusable/slab/enums",
3
+ "$schema": "http://json-schema.org/draft-07/schema#",
4
+ "title": "Surface Types Enum",
5
+ "$comment": "The surface types used by passivation and surface analysis",
6
+ "enum": [
7
+ "top",
8
+ "bottom",
9
+ "both"
10
+ ]
11
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "$id": "material/reusable/slab/miller-indices",
3
+ "$schema": "http://json-schema.org/draft-07/schema#",
4
+ "title": "Miller Indices Schema",
5
+ "description": "Miller indices for crystallographic plane designation",
6
+ "type": "array",
7
+ "items": {
8
+ "type": "integer"
9
+ },
10
+ "minItems": 3,
11
+ "maxItems": 3,
12
+ "default": [
13
+ 0,
14
+ 0,
15
+ 1
16
+ ]
17
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "$id": "material/reusable/slab/number-of-layers",
3
+ "$schema": "http://json-schema.org/draft-07/schema#",
4
+ "title": "number_of_layers Schema",
5
+ "description": "Number of atomic layers in a structural component",
6
+ "type": "integer",
7
+ "minimum": 1,
8
+ "default": 1
9
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "$id": "material/reusable/slab/termination",
3
+ "$schema": "http://json-schema.org/draft-07/schema#",
4
+ "title": "Termination Schema",
5
+ "description": "Defines a specific termination of a slab",
6
+ "type": "object",
7
+ "required": [
8
+ "chemical_elements",
9
+ "space_group_symmetry_label"
10
+ ],
11
+ "properties": {
12
+ "chemical_elements": {
13
+ "title": "Chemical Elements",
14
+ "description": "Chemical elements at the termination",
15
+ "type": "string"
16
+ },
17
+ "space_group_symmetry_label": {
18
+ "title": "Space Group Symmetry Label",
19
+ "description": "Space group symmetry designation for the termination",
20
+ "type": "string"
21
+ }
22
+ }
23
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "$id": "material/reusable/slab/vacuum",
3
+ "$schema": "http://json-schema.org/draft-07/schema#",
4
+ "title": "Vacuum Schema",
5
+ "description": "Vacuum thickness in Angstroms",
6
+ "type": "number",
7
+ "minimum": 0.0,
8
+ "default": 5.0
9
+ }
@@ -0,0 +1,27 @@
1
+ {
2
+ "$id": "material/reusable/supercell-matrix-2d",
3
+ "$schema": "http://json-schema.org/draft-07/schema#",
4
+ "title": "Supercell Matrix 2D Schema",
5
+ "description": "Supercell matrix for xy plane transformations",
6
+ "type": "array",
7
+ "items": {
8
+ "type": "array",
9
+ "items": {
10
+ "type": "integer"
11
+ },
12
+ "minItems": 2,
13
+ "maxItems": 2
14
+ },
15
+ "minItems": 2,
16
+ "maxItems": 2,
17
+ "default": [
18
+ [
19
+ 1,
20
+ 0
21
+ ],
22
+ [
23
+ 0,
24
+ 1
25
+ ]
26
+ ]
27
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "$id": "material/reusable/supercell-matrix-3d",
3
+ "$schema": "http://json-schema.org/draft-07/schema#",
4
+ "title": "Supercell Matrix 3D Schema",
5
+ "description": "3x3 matrix of integers for transforming a unit cell into a supercell",
6
+ "type": "array",
7
+ "items": {
8
+ "type": "array",
9
+ "items": {
10
+ "type": "integer"
11
+ },
12
+ "minItems": 3,
13
+ "maxItems": 3
14
+ },
15
+ "minItems": 3,
16
+ "maxItems": 3,
17
+ "default": [
18
+ [
19
+ 1,
20
+ 0,
21
+ 0
22
+ ],
23
+ [
24
+ 0,
25
+ 1,
26
+ 0
27
+ ],
28
+ [
29
+ 0,
30
+ 0,
31
+ 1
32
+ ]
33
+ ]
34
+ }