--- /srv/reproducible-results/rbuild-debian/r-b-build.vIoh5HVD/b1/python-gsd_3.4.2-2_armhf.changes +++ /srv/reproducible-results/rbuild-debian/r-b-build.vIoh5HVD/b2/python-gsd_3.4.2-2_armhf.changes ├── Files │ @@ -1,4 +1,4 @@ │ │ - 9585a15c58d6615fe54e7c72b3f0b1e7 130552 doc optional python-gsd-doc_3.4.2-2_all.deb │ + 4bf31e3f3840222b6306ae529c8d6411 130580 doc optional python-gsd-doc_3.4.2-2_all.deb │ e2e57e0e351df90fe22e47bccec40822 692420 debug optional python3-gsd-dbgsym_3.4.2-2_armhf.deb │ 3f53dedf2a81f51610a341d438827b17 223876 python optional python3-gsd_3.4.2-2_armhf.deb ├── python-gsd-doc_3.4.2-2_all.deb │ ├── file list │ │ @@ -1,3 +1,3 @@ │ │ -rw-r--r-- 0 0 0 4 2025-02-13 09:32:12.000000 debian-binary │ │ -rw-r--r-- 0 0 0 2700 2025-02-13 09:32:12.000000 control.tar.xz │ │ --rw-r--r-- 0 0 0 127660 2025-02-13 09:32:12.000000 data.tar.xz │ │ +-rw-r--r-- 0 0 0 127688 2025-02-13 09:32:12.000000 data.tar.xz │ ├── control.tar.xz │ │ ├── control.tar │ │ │ ├── ./md5sums │ │ │ │ ├── ./md5sums │ │ │ │ │┄ Files differ │ ├── data.tar.xz │ │ ├── data.tar │ │ │ ├── file list │ │ │ │ @@ -71,15 +71,15 @@ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 23394 2025-02-13 09:32:12.000000 ./usr/share/doc/python-gsd-doc/html/python-api.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 87525 2025-02-13 09:32:12.000000 ./usr/share/doc/python-gsd-doc/html/python-module-gsd.fl.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 95444 2025-02-13 09:32:12.000000 ./usr/share/doc/python-gsd-doc/html/python-module-gsd.hoomd.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 49306 2025-02-13 09:32:12.000000 ./usr/share/doc/python-gsd-doc/html/python-module-gsd.pygsd.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 18756 2025-02-13 09:32:12.000000 ./usr/share/doc/python-gsd-doc/html/python-module-gsd.version.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 107555 2025-02-13 09:32:12.000000 ./usr/share/doc/python-gsd-doc/html/schema-hoomd.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 16660 2025-02-13 09:32:12.000000 ./usr/share/doc/python-gsd-doc/html/search.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 82983 2025-02-13 09:32:12.000000 ./usr/share/doc/python-gsd-doc/html/searchindex.js │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 82980 2025-02-13 09:32:12.000000 ./usr/share/doc/python-gsd-doc/html/searchindex.js │ │ │ │ -rw-r--r-- 0 root (0) root (0) 32666 2025-02-13 09:32:12.000000 ./usr/share/doc/python-gsd-doc/html/shapes.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 20931 2025-02-13 09:32:12.000000 ./usr/share/doc/python-gsd-doc/html/specification.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 24988 2025-02-13 09:32:12.000000 ./usr/share/doc/python-gsd-doc/html/style.html │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2025-02-13 09:32:12.000000 ./usr/share/doc-base/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 331 2025-02-13 09:32:12.000000 ./usr/share/doc-base/python-gsd-doc.python-gsd │ │ │ │ lrwxrwxrwx 0 root (0) root (0) 0 2025-02-13 09:32:12.000000 ./usr/share/doc/python-gsd-doc/html/_static/doctools.js -> ../../../../javascript/sphinxdoc/1.0/doctools.js │ │ │ │ lrwxrwxrwx 0 root (0) root (0) 0 2025-02-13 09:32:12.000000 ./usr/share/doc/python-gsd-doc/html/_static/language_data.js -> ../../../../javascript/sphinxdoc/1.0/language_data.js │ │ │ ├── ./usr/share/doc/python-gsd-doc/html/hoomd-examples.html │ │ │ │ @@ -355,23 +355,23 @@ │ │ │ │ Out[16]: np.uint64(5) │ │ │ │ │ │ │ │ In [17]: frame.particles.N │ │ │ │ Out[17]: np.uint32(9) │ │ │ │ │ │ │ │ In [18]: frame.particles.position │ │ │ │ Out[18]: │ │ │ │ -array([[0.7787766 , 0.37731883, 0.11063553], │ │ │ │ - [0.6228612 , 0.22996604, 0.51892895], │ │ │ │ - [0.96543646, 0.01324726, 0.10756492], │ │ │ │ - [0.53058887, 0.62746906, 0.75891227], │ │ │ │ - [0.30188274, 0.8432486 , 0.8124726 ], │ │ │ │ - [0.48333728, 0.07284048, 0.6580068 ], │ │ │ │ - [0.85077316, 0.18893366, 0.6415813 ], │ │ │ │ - [0.16494253, 0.2503542 , 0.0839788 ], │ │ │ │ - [0.71707195, 0.38701802, 0.57364005]], dtype=float32) │ │ │ │ +array([[0.46042085, 0.66096556, 0.9636125 ], │ │ │ │ + [0.40128598, 0.36796367, 0.9023753 ], │ │ │ │ + [0.43356812, 0.09926654, 0.96342766], │ │ │ │ + [0.9331546 , 0.2535075 , 0.4326934 ], │ │ │ │ + [0.83275 , 0.65874517, 0.08372786], │ │ │ │ + [0.97389233, 0.17283413, 0.27172983], │ │ │ │ + [0.7167366 , 0.8462249 , 0.95175767], │ │ │ │ + [0.92493963, 0.09886511, 0.7889793 ], │ │ │ │ + [0.25992137, 0.04904203, 0.9059974 ]], dtype=float32) │ │ │ │ │ │ │ │ │ │ │ │

gsd.hoomd.HOOMDTrajectory supports random indexing of frames in the file. │ │ │ │ Indexing into a trajectory returns a gsd.hoomd.Frame.

│ │ │ │ │ │ │ │
│ │ │ │

Slicing and selection

│ │ │ │ @@ -398,21 +398,21 @@ │ │ │ │

Pure python reader

│ │ │ │
In [23]: f = gsd.pygsd.GSDFile(open('example.gsd', 'rb'))
│ │ │ │  
│ │ │ │  In [24]: trajectory = gsd.hoomd.HOOMDTrajectory(f);
│ │ │ │  
│ │ │ │  In [25]: trajectory[3].particles.position
│ │ │ │  Out[25]: 
│ │ │ │ -array([[0.6955228 , 0.91260123, 0.82992953],
│ │ │ │ -       [0.37394592, 0.43463865, 0.6811616 ],
│ │ │ │ -       [0.45235583, 0.7944418 , 0.68996704],
│ │ │ │ -       [0.9384123 , 0.9118866 , 0.30084717],
│ │ │ │ -       [0.56774294, 0.3225283 , 0.24643196],
│ │ │ │ -       [0.10438187, 0.7111048 , 0.6542267 ],
│ │ │ │ -       [0.7895071 , 0.5569941 , 0.5236448 ]], dtype=float32)
│ │ │ │ +array([[0.03906133, 0.6675068 , 0.24008569],
│ │ │ │ +       [0.7898314 , 0.8749309 , 0.9296472 ],
│ │ │ │ +       [0.2949264 , 0.22762361, 0.23406096],
│ │ │ │ +       [0.13552946, 0.70048946, 0.00832591],
│ │ │ │ +       [0.3723467 , 0.40412304, 0.6578428 ],
│ │ │ │ +       [0.10187707, 0.03952946, 0.3197003 ],
│ │ │ │ +       [0.36074835, 0.5260127 , 0.8680648 ]], dtype=float32)
│ │ │ │  
│ │ │ │
│ │ │ │

You can use GSD without needing to compile C code to read GSD files │ │ │ │ using gsd.pygsd.GSDFile in combination with gsd.hoomd.HOOMDTrajectory. It │ │ │ │ only supports the rb mode and does not read files as fast as the C │ │ │ │ implementation. It takes in a python file-like object, so it can be used with │ │ │ │ in-memory IO classes, and grid file classes that access data over the internet.

│ │ │ │ ├── html2text {} │ │ │ │ │ @@ -95,23 +95,23 @@ │ │ │ │ │ Out[16]: np.uint64(5) │ │ │ │ │ │ │ │ │ │ In [17]: frame.particles.N │ │ │ │ │ Out[17]: np.uint32(9) │ │ │ │ │ │ │ │ │ │ In [18]: frame.particles.position │ │ │ │ │ Out[18]: │ │ │ │ │ -array([[0.7787766 , 0.37731883, 0.11063553], │ │ │ │ │ - [0.6228612 , 0.22996604, 0.51892895], │ │ │ │ │ - [0.96543646, 0.01324726, 0.10756492], │ │ │ │ │ - [0.53058887, 0.62746906, 0.75891227], │ │ │ │ │ - [0.30188274, 0.8432486 , 0.8124726 ], │ │ │ │ │ - [0.48333728, 0.07284048, 0.6580068 ], │ │ │ │ │ - [0.85077316, 0.18893366, 0.6415813 ], │ │ │ │ │ - [0.16494253, 0.2503542 , 0.0839788 ], │ │ │ │ │ - [0.71707195, 0.38701802, 0.57364005]], dtype=float32) │ │ │ │ │ +array([[0.46042085, 0.66096556, 0.9636125 ], │ │ │ │ │ + [0.40128598, 0.36796367, 0.9023753 ], │ │ │ │ │ + [0.43356812, 0.09926654, 0.96342766], │ │ │ │ │ + [0.9331546 , 0.2535075 , 0.4326934 ], │ │ │ │ │ + [0.83275 , 0.65874517, 0.08372786], │ │ │ │ │ + [0.97389233, 0.17283413, 0.27172983], │ │ │ │ │ + [0.7167366 , 0.8462249 , 0.95175767], │ │ │ │ │ + [0.92493963, 0.09886511, 0.7889793 ], │ │ │ │ │ + [0.25992137, 0.04904203, 0.9059974 ]], dtype=float32) │ │ │ │ │ _g_s_d_._h_o_o_m_d_._H_O_O_M_D_T_r_a_j_e_c_t_o_r_y supports random indexing of frames in the file. │ │ │ │ │ Indexing into a trajectory returns a _g_s_d_._h_o_o_m_d_._F_r_a_m_e. │ │ │ │ │ ********** SSlliicciinngg aanndd sseelleeccttiioonn_?¶ ********** │ │ │ │ │ Use the slicing operator to select individual frames or a subset of a │ │ │ │ │ trajectory. │ │ │ │ │ In [19]: f = gsd.hoomd.open(name='example.gsd', mode='r') │ │ │ │ │ │ │ │ │ │ @@ -130,21 +130,21 @@ │ │ │ │ │ ********** PPuurree ppyytthhoonn rreeaaddeerr_?¶ ********** │ │ │ │ │ In [23]: f = gsd.pygsd.GSDFile(open('example.gsd', 'rb')) │ │ │ │ │ │ │ │ │ │ In [24]: trajectory = gsd.hoomd.HOOMDTrajectory(f); │ │ │ │ │ │ │ │ │ │ In [25]: trajectory[3].particles.position │ │ │ │ │ Out[25]: │ │ │ │ │ -array([[0.6955228 , 0.91260123, 0.82992953], │ │ │ │ │ - [0.37394592, 0.43463865, 0.6811616 ], │ │ │ │ │ - [0.45235583, 0.7944418 , 0.68996704], │ │ │ │ │ - [0.9384123 , 0.9118866 , 0.30084717], │ │ │ │ │ - [0.56774294, 0.3225283 , 0.24643196], │ │ │ │ │ - [0.10438187, 0.7111048 , 0.6542267 ], │ │ │ │ │ - [0.7895071 , 0.5569941 , 0.5236448 ]], dtype=float32) │ │ │ │ │ +array([[0.03906133, 0.6675068 , 0.24008569], │ │ │ │ │ + [0.7898314 , 0.8749309 , 0.9296472 ], │ │ │ │ │ + [0.2949264 , 0.22762361, 0.23406096], │ │ │ │ │ + [0.13552946, 0.70048946, 0.00832591], │ │ │ │ │ + [0.3723467 , 0.40412304, 0.6578428 ], │ │ │ │ │ + [0.10187707, 0.03952946, 0.3197003 ], │ │ │ │ │ + [0.36074835, 0.5260127 , 0.8680648 ]], dtype=float32) │ │ │ │ │ You can use GGSSDD without needing to compile C code to read GGSSDD files using │ │ │ │ │ _g_s_d_._p_y_g_s_d_._G_S_D_F_i_l_e in combination with _g_s_d_._h_o_o_m_d_._H_O_O_M_D_T_r_a_j_e_c_t_o_r_y. It only │ │ │ │ │ supports the rb mode and does not read files as fast as the C implementation. │ │ │ │ │ It takes in a python file-like object, so it can be used with in-memory IO │ │ │ │ │ classes, and grid file classes that access data over the internet. │ │ │ │ │ Warning │ │ │ │ │ _g_s_d_._p_y_g_s_d is ssllooww. Use _g_s_d_._h_o_o_m_d_._o_p_e_n whenever possible. │ │ │ ├── ./usr/share/doc/python-gsd-doc/html/searchindex.js │ │ │ │ ├── js-beautify {} │ │ │ │ │ @@ -1893,177 +1893,177 @@ │ │ │ │ │ "12": "py:property", │ │ │ │ │ "13": "std:chunk", │ │ │ │ │ "14": "std:cmdoption" │ │ │ │ │ }, │ │ │ │ │ "terms": { │ │ │ │ │ "": [1, 2, 3, 8, 11, 13, 14, 18, 21], │ │ │ │ │ "0": [0, 6, 7, 8, 11, 14, 15, 16, 18, 19], │ │ │ │ │ - "01324726": 8, │ │ │ │ │ - "07284048": 8, │ │ │ │ │ - "0839788": 8, │ │ │ │ │ + "00832591": 8, │ │ │ │ │ + "03906133": 8, │ │ │ │ │ + "03952946": 8, │ │ │ │ │ + "04904203": 8, │ │ │ │ │ + "08372786": 8, │ │ │ │ │ + "09886511": 8, │ │ │ │ │ + "09926654": 8, │ │ │ │ │ "0x65df65df65df65df": 6, │ │ │ │ │ "0xaaaabbbb": 6, │ │ │ │ │ "1": [0, 7, 8, 12, 14, 15, 16, 18, 19, 20], │ │ │ │ │ "10": [7, 8, 11, 14, 15], │ │ │ │ │ "100": [8, 15, 21], │ │ │ │ │ - "10438187": 8, │ │ │ │ │ - "10756492": 8, │ │ │ │ │ + "10187707": 8, │ │ │ │ │ "11": [7, 8, 14, 21], │ │ │ │ │ - "11063553": 8, │ │ │ │ │ "12": [7, 8, 14], │ │ │ │ │ "127": 1, │ │ │ │ │ "13": [7, 8, 14], │ │ │ │ │ + "13552946": 8, │ │ │ │ │ "13_gsd": [7, 8, 14], │ │ │ │ │ "14": [7, 8, 11, 14], │ │ │ │ │ "15": [7, 8, 14], │ │ │ │ │ "16": [0, 6, 7, 8, 14], │ │ │ │ │ - "16494253": 8, │ │ │ │ │ "17": [7, 8, 14], │ │ │ │ │ + "17283413": 8, │ │ │ │ │ "18": [7, 8, 11], │ │ │ │ │ - "18893366": 8, │ │ │ │ │ "19": [7, 8, 14], │ │ │ │ │ "1d": [14, 16], │ │ │ │ │ "1x1": [18, 19], │ │ │ │ │ "2": [0, 7, 8, 11, 12, 14, 15, 16, 18, 19, 20], │ │ │ │ │ "20": [7, 8], │ │ │ │ │ "200": [8, 15], │ │ │ │ │ "2016": 12, │ │ │ │ │ "2019": 11, │ │ │ │ │ "2022": 11, │ │ │ │ │ "2024": 12, │ │ │ │ │ "21": [7, 8], │ │ │ │ │ "22": [7, 8, 11], │ │ │ │ │ - "22996604": 8, │ │ │ │ │ + "22762361": 8, │ │ │ │ │ "23": [7, 8], │ │ │ │ │ + "23406096": 8, │ │ │ │ │ "235": 1, │ │ │ │ │ "237": 1, │ │ │ │ │ "238": 1, │ │ │ │ │ "24": [7, 8], │ │ │ │ │ - "24643196": 8, │ │ │ │ │ + "24008569": 8, │ │ │ │ │ "249": 1, │ │ │ │ │ "25": [7, 8], │ │ │ │ │ - "2503542": 8, │ │ │ │ │ + "2535075": 8, │ │ │ │ │ "255": 1, │ │ │ │ │ "256": [0, 6], │ │ │ │ │ "257": 1, │ │ │ │ │ + "25992137": 8, │ │ │ │ │ "26": [7, 8], │ │ │ │ │ "266": 1, │ │ │ │ │ "267": 1, │ │ │ │ │ "27": [7, 8], │ │ │ │ │ "270": 1, │ │ │ │ │ + "27172983": 8, │ │ │ │ │ "28": [7, 8], │ │ │ │ │ "283": 1, │ │ │ │ │ "29": [7, 8], │ │ │ │ │ + "2949264": 8, │ │ │ │ │ "2d": [14, 16, 18, 19], │ │ │ │ │ "2gib": 1, │ │ │ │ │ "3": [7, 8, 11, 14, 15, 16, 18, 19], │ │ │ │ │ "30": [7, 8], │ │ │ │ │ "300": [8, 15], │ │ │ │ │ - "30084717": 8, │ │ │ │ │ - "30188274": 8, │ │ │ │ │ "308": 1, │ │ │ │ │ "31": [7, 8], │ │ │ │ │ "317": 1, │ │ │ │ │ "319": 1, │ │ │ │ │ + "3197003": 8, │ │ │ │ │ "32": [0, 6, 7, 18], │ │ │ │ │ "322": 1, │ │ │ │ │ - "3225283": 8, │ │ │ │ │ "323": 1, │ │ │ │ │ "324": 1, │ │ │ │ │ "325": 1, │ │ │ │ │ "33": 7, │ │ │ │ │ "34": 7, │ │ │ │ │ "35": 7, │ │ │ │ │ "36": 7, │ │ │ │ │ + "36074835": 8, │ │ │ │ │ "365": 1, │ │ │ │ │ "367": 1, │ │ │ │ │ + "36796367": 8, │ │ │ │ │ "37": 7, │ │ │ │ │ - "37394592": 8, │ │ │ │ │ + "3723467": 8, │ │ │ │ │ "376": 1, │ │ │ │ │ - "37731883": 8, │ │ │ │ │ "38": 7, │ │ │ │ │ - "38701802": 8, │ │ │ │ │ "388": 1, │ │ │ │ │ "39": 7, │ │ │ │ │ "391": 1, │ │ │ │ │ "3d": 20, │ │ │ │ │ "4": [7, 8, 14, 15, 18, 21], │ │ │ │ │ "40": 7, │ │ │ │ │ "400": [8, 15], │ │ │ │ │ + "40128598": 8, │ │ │ │ │ + "40412304": 8, │ │ │ │ │ "405": 1, │ │ │ │ │ "41": 7, │ │ │ │ │ "43": 7, │ │ │ │ │ - "43463865": 8, │ │ │ │ │ + "4326934": 8, │ │ │ │ │ + "43356812": 8, │ │ │ │ │ "44": 7, │ │ │ │ │ "45": 7, │ │ │ │ │ - "45235583": 8, │ │ │ │ │ "46": 7, │ │ │ │ │ + "46042085": 8, │ │ │ │ │ "47": 7, │ │ │ │ │ "48": 7, │ │ │ │ │ - "48333728": 8, │ │ │ │ │ "49": 7, │ │ │ │ │ "5": [7, 8, 14, 15, 19], │ │ │ │ │ "50": 7, │ │ │ │ │ "500": [8, 15], │ │ │ │ │ "51": 7, │ │ │ │ │ - "51892895": 8, │ │ │ │ │ "52": 7, │ │ │ │ │ - "5236448": 8, │ │ │ │ │ + "5260127": 8, │ │ │ │ │ "53": [0, 7], │ │ │ │ │ - "53058887": 8, │ │ │ │ │ "54": 7, │ │ │ │ │ "55": 7, │ │ │ │ │ - "5569941": 8, │ │ │ │ │ - "56774294": 8, │ │ │ │ │ - "57364005": 8, │ │ │ │ │ "6": [7, 8, 14, 15], │ │ │ │ │ "600": [8, 15], │ │ │ │ │ - "6228612": 8, │ │ │ │ │ "627": 8, │ │ │ │ │ - "62746906": 8, │ │ │ │ │ "63": [0, 6], │ │ │ │ │ "64": [0, 6, 11], │ │ │ │ │ - "6415813": 8, │ │ │ │ │ "645": 7, │ │ │ │ │ - "6542267": 8, │ │ │ │ │ "65535": 6, │ │ │ │ │ - "6580068": 8, │ │ │ │ │ - "6811616": 8, │ │ │ │ │ - "68996704": 8, │ │ │ │ │ - "6955228": 8, │ │ │ │ │ + "6578428": 8, │ │ │ │ │ + "65874517": 8, │ │ │ │ │ + "66096556": 8, │ │ │ │ │ + "6675068": 8, │ │ │ │ │ "6x1": 18, │ │ │ │ │ "7": [7, 8, 14, 15, 19], │ │ │ │ │ "70": 14, │ │ │ │ │ "700": [8, 15], │ │ │ │ │ - "7111048": 8, │ │ │ │ │ - "71707195": 8, │ │ │ │ │ + "70048946": 8, │ │ │ │ │ + "7167366": 8, │ │ │ │ │ "758": 14, │ │ │ │ │ - "75891227": 8, │ │ │ │ │ "771": 14, │ │ │ │ │ - "7787766": 8, │ │ │ │ │ "785": 8, │ │ │ │ │ "786": 8, │ │ │ │ │ "787": 8, │ │ │ │ │ + "7889793": 8, │ │ │ │ │ "789": 8, │ │ │ │ │ - "7895071": 8, │ │ │ │ │ - "7944418": 8, │ │ │ │ │ + "7898314": 8, │ │ │ │ │ "8": [0, 6, 7, 8, 14, 15, 18, 19], │ │ │ │ │ "80": [6, 14, 21], │ │ │ │ │ "800": [8, 15], │ │ │ │ │ - "8124726": 8, │ │ │ │ │ - "82992953": 8, │ │ │ │ │ - "8432486": 8, │ │ │ │ │ - "85077316": 8, │ │ │ │ │ + "83275": 8, │ │ │ │ │ + "8462249": 8, │ │ │ │ │ + "8680648": 8, │ │ │ │ │ + "8749309": 8, │ │ │ │ │ "9": [7, 8, 11, 14, 15], │ │ │ │ │ "90": 14, │ │ │ │ │ "900": [8, 15], │ │ │ │ │ - "9118866": 8, │ │ │ │ │ - "91260123": 8, │ │ │ │ │ - "9384123": 8, │ │ │ │ │ - "96543646": 8, │ │ │ │ │ + "9023753": 8, │ │ │ │ │ + "9059974": 8, │ │ │ │ │ + "92493963": 8, │ │ │ │ │ + "9296472": 8, │ │ │ │ │ + "9331546": 8, │ │ │ │ │ + "95175767": 8, │ │ │ │ │ + "96342766": 8, │ │ │ │ │ + "9636125": 8, │ │ │ │ │ + "97389233": 8, │ │ │ │ │ "A": [0, 5, 6, 8, 9, 12, 18, 19], │ │ │ │ │ "AND": 12, │ │ │ │ │ "AS": 12, │ │ │ │ │ "As": 15, │ │ │ │ │ "BE": 12, │ │ │ │ │ "BUT": 12, │ │ │ │ │ "BY": 12,