--- /srv/reproducible-results/rbuild-debian/r-b-build.IkMHGuvN/b1/pandas_2.2.3+dfsg-5_armhf.changes +++ /srv/reproducible-results/rbuild-debian/r-b-build.IkMHGuvN/b2/pandas_2.2.3+dfsg-5_armhf.changes ├── Files │ @@ -1,5 +1,5 @@ │ │ - e1c545f92a2e7eb97bcfdf82677745f5 9246856 doc optional python-pandas-doc_2.2.3+dfsg-5_all.deb │ - 8f7aca554351c1cbbcdc2a8f571c9731 36793956 debug optional python3-pandas-lib-dbgsym_2.2.3+dfsg-5_armhf.deb │ - ef80959f4207ec91b097863c6b360397 4010420 python optional python3-pandas-lib_2.2.3+dfsg-5_armhf.deb │ + f91b05cb98fa85e354c43ca8d0620dbf 9246816 doc optional python-pandas-doc_2.2.3+dfsg-5_all.deb │ + 86749090ede5415db737843afe6589a6 36790748 debug optional python3-pandas-lib-dbgsym_2.2.3+dfsg-5_armhf.deb │ + d0f7be4df0a0e858e3de045635acc224 4010408 python optional python3-pandas-lib_2.2.3+dfsg-5_armhf.deb │ 82393119d6d8cb1b1ef15e3b71c2d0a7 3096356 python optional python3-pandas_2.2.3+dfsg-5_all.deb ├── python-pandas-doc_2.2.3+dfsg-5_all.deb │ ├── file list │ │ @@ -1,3 +1,3 @@ │ │ -rw-r--r-- 0 0 0 4 2024-10-21 18:43:11.000000 debian-binary │ │ --rw-r--r-- 0 0 0 146944 2024-10-21 18:43:11.000000 control.tar.xz │ │ --rw-r--r-- 0 0 0 9099720 2024-10-21 18:43:11.000000 data.tar.xz │ │ +-rw-r--r-- 0 0 0 146908 2024-10-21 18:43:11.000000 control.tar.xz │ │ +-rw-r--r-- 0 0 0 9099716 2024-10-21 18:43:11.000000 data.tar.xz │ ├── control.tar.xz │ │ ├── control.tar │ │ │ ├── ./control │ │ │ │ @@ -1,13 +1,13 @@ │ │ │ │ Package: python-pandas-doc │ │ │ │ Source: pandas │ │ │ │ Version: 2.2.3+dfsg-5 │ │ │ │ Architecture: all │ │ │ │ Maintainer: Debian Science Team │ │ │ │ -Installed-Size: 200023 │ │ │ │ +Installed-Size: 200024 │ │ │ │ Depends: libjs-sphinxdoc (>= 7.4), libjs-mathjax │ │ │ │ Suggests: python3-pandas │ │ │ │ Section: doc │ │ │ │ Priority: optional │ │ │ │ Multi-Arch: foreign │ │ │ │ Homepage: https://pandas.pydata.org/ │ │ │ │ Description: data structures for "relational" or "labeled" data - documentation │ │ │ ├── ./md5sums │ │ │ │ ├── ./md5sums │ │ │ │ │┄ Files differ │ ├── data.tar.xz │ │ ├── data.tar │ │ │ ├── file list │ │ │ │ @@ -6230,61 +6230,61 @@ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 209237 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/reference/series.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 47718 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/reference/style.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 47710 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/reference/testing.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 52348 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/reference/window.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 244 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/release.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 269 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/reshaping.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 16236 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/search.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 2359274 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/searchindex.js │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 2359338 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/searchindex.js │ │ │ │ -rw-r--r-- 0 root (0) root (0) 259 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/sparse.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 244 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/style.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 255 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/text.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 256 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/timedeltas.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 277 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/timeseries.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 272 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/tutorials.html │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 170385 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/10min.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 282855 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/advanced.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 282856 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/advanced.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 434916 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/basics.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 35684 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/boolean.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 216526 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/categorical.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 17366 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/cookbook.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 65217 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/copy_on_write.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 159345 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/dsintro.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 80419 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/duplicates.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 120021 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/enhancingperf.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 120026 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/enhancingperf.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 106902 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/gotchas.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 299886 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/groupby.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 58768 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/index.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 394407 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/indexing.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 40816 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/integer_na.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 1144274 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/io.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 207911 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/merging.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 177680 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/missing_data.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 111206 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/options.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 146554 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/pyarrow.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 161712 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/reshaping.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 114623 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/scale.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 114625 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/scale.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 64660 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/sparse.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 697282 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/style.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 87925 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/style.ipynb.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 88018 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/style.ipynb.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 164343 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/text.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 99980 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/timedeltas.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 485612 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/timeseries.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 203394 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/visualization.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 141000 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/user_guide/window.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 270 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/visualization.html │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/whatsnew/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 106734 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/whatsnew/index.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 10079 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/whatsnew/index.html.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 83016 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/whatsnew/v0.10.0.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 65522 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/whatsnew/v0.10.1.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 81344 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/whatsnew/v0.11.0.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 103349 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/whatsnew/v0.12.0.html │ │ │ │ --rw-r--r-- 0 root (0) root (0) 221533 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/whatsnew/v0.13.0.html │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 221532 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/whatsnew/v0.13.0.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 88415 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/whatsnew/v0.13.1.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 242763 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/whatsnew/v0.14.0.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 82295 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/whatsnew/v0.14.1.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 251323 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/whatsnew/v0.15.0.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 67310 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/whatsnew/v0.15.1.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 74157 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/whatsnew/v0.15.2.html │ │ │ │ -rw-r--r-- 0 root (0) root (0) 144231 2024-10-21 18:43:11.000000 ./usr/share/doc/python-pandas-doc/html/whatsnew/v0.16.0.html │ │ │ ├── ./usr/share/doc/python-pandas-doc/html/searchindex.js │ │ │ │ ├── js-beautify {} │ │ │ │ │ @@ -21571,15 +21571,14 @@ │ │ │ │ │ "009783": 2207, │ │ │ │ │ "009797": 2186, │ │ │ │ │ "009826": [102, 1158, 2205], │ │ │ │ │ "009920": [2184, 2195, 2214], │ │ │ │ │ "00am": 2230, │ │ │ │ │ "00index": 2218, │ │ │ │ │ "01": [3, 15, 16, 17, 19, 29, 30, 31, 79, 80, 82, 88, 107, 121, 182, 187, 207, 213, 218, 219, 230, 242, 261, 270, 271, 276, 277, 278, 283, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 298, 299, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 326, 329, 330, 331, 332, 333, 345, 362, 363, 423, 445, 510, 511, 513, 514, 515, 516, 517, 519, 521, 523, 525, 529, 531, 532, 533, 534, 535, 536, 537, 541, 542, 543, 544, 545, 546, 547, 548, 549, 551, 554, 556, 557, 558, 560, 561, 562, 563, 564, 565, 566, 575, 591, 592, 593, 600, 629, 637, 639, 640, 641, 642, 643, 644, 645, 646, 647, 649, 650, 651, 652, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 665, 666, 667, 668, 670, 671, 673, 674, 675, 676, 677, 678, 679, 680, 684, 685, 686, 688, 689, 696, 760, 763, 781, 788, 793, 804, 817, 874, 893, 898, 899, 902, 903, 904, 905, 909, 910, 917, 919, 922, 929, 934, 939, 940, 943, 944, 945, 948, 949, 953, 954, 957, 959, 960, 969, 972, 982, 984, 997, 1000, 1001, 1003, 1004, 1005, 1011, 1014, 1016, 1017, 1020, 1021, 1024, 1051, 1075, 1078, 1106, 1118, 1122, 1141, 1144, 1145, 1147, 1157, 1164, 1170, 1171, 1176, 1180, 1185, 1192, 1195, 1197, 1206, 1214, 1221, 1227, 1228, 1233, 1239, 1245, 1246, 1253, 1256, 1258, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1277, 1278, 1279, 1280, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1344, 1345, 1367, 1391, 1392, 1393, 1436, 1447, 1452, 1475, 1488, 1490, 1498, 1500, 1501, 1506, 1524, 1542, 1560, 1620, 1699, 1720, 1741, 1793, 1815, 1857, 1930, 1947, 1982, 2036, 2054, 2090, 2108, 2127, 2163, 2184, 2185, 2186, 2188, 2191, 2195, 2197, 2198, 2199, 2200, 2201, 2202, 2204, 2205, 2206, 2207, 2209, 2210, 2212, 2214, 2215, 2216, 2217, 2218, 2219, 2220, 2221, 2222, 2223, 2225, 2226, 2228, 2229, 2230, 2231, 2232, 2235, 2238, 2240, 2241, 2246, 2249, 2261, 2264, 2265, 2271, 2283, 2289, 2294, 2298, 2302, 2307], │ │ │ │ │ - "010": 2193, │ │ │ │ │ "0100": [575, 893, 957, 970, 997, 1004, 1014, 1016, 1020, 1021, 1498, 2186, 2199, 2210, 2246, 2271], │ │ │ │ │ "010000": [954, 1894], │ │ │ │ │ "010010012": [923, 2209], │ │ │ │ │ "010026": 2191, │ │ │ │ │ "010081": 15, │ │ │ │ │ "010165": 2199, │ │ │ │ │ "010589": 2193, │ │ │ │ │ @@ -21593,14 +21592,15 @@ │ │ │ │ │ "011374": 2195, │ │ │ │ │ "011470": 2207, │ │ │ │ │ "011736": 2186, │ │ │ │ │ "011829": 2207, │ │ │ │ │ "01183": 2229, │ │ │ │ │ "011860": [182, 760], │ │ │ │ │ "011975": 2207, │ │ │ │ │ + "012": 2193, │ │ │ │ │ "012108": 2207, │ │ │ │ │ "012299": 2207, │ │ │ │ │ "0123456789123456": [2164, 2165], │ │ │ │ │ "012549": 2207, │ │ │ │ │ "012694": 2199, │ │ │ │ │ "012922": 2219, │ │ │ │ │ "013": 2193, │ │ │ │ │ @@ -21622,14 +21622,15 @@ │ │ │ │ │ "014138": 2191, │ │ │ │ │ "014144": [102, 1158], │ │ │ │ │ "014648": 2186, │ │ │ │ │ "014752": 2235, │ │ │ │ │ "014805": 2202, │ │ │ │ │ "014871": [2185, 2197, 2199, 2202], │ │ │ │ │ "014888": 2207, │ │ │ │ │ + "015": 2193, │ │ │ │ │ "015083": 2186, │ │ │ │ │ "015420": 2195, │ │ │ │ │ "015458": 2207, │ │ │ │ │ "015696": [2220, 2228, 2230], │ │ │ │ │ "015906": 2186, │ │ │ │ │ "015962": [2184, 2214], │ │ │ │ │ "015988": 2186, │ │ │ │ │ @@ -21674,14 +21675,15 @@ │ │ │ │ │ "020208": 2195, │ │ │ │ │ "020376": 2207, │ │ │ │ │ "020399": 2195, │ │ │ │ │ "020485": 2207, │ │ │ │ │ "020544": 2186, │ │ │ │ │ "020762": 2220, │ │ │ │ │ "020940": 2230, │ │ │ │ │ + "021": 2193, │ │ │ │ │ "021244": 2207, │ │ │ │ │ "021255": 2230, │ │ │ │ │ "021292": 2186, │ │ │ │ │ "021377": 2207, │ │ │ │ │ "021382": 2184, │ │ │ │ │ "021499": 2186, │ │ │ │ │ "02155": 30, │ │ │ │ │ @@ -21730,15 +21732,15 @@ │ │ │ │ │ "028152": 2207, │ │ │ │ │ "028166": 15, │ │ │ │ │ "028182": 2207, │ │ │ │ │ "028578": 2207, │ │ │ │ │ "028603": 2195, │ │ │ │ │ "028662": 28, │ │ │ │ │ "028665": 15, │ │ │ │ │ - "029": [2186, 2193, 2227], │ │ │ │ │ + "029": [2186, 2227], │ │ │ │ │ "029302": 2191, │ │ │ │ │ "029399": 2184, │ │ │ │ │ "029582": 2207, │ │ │ │ │ "029587": 2193, │ │ │ │ │ "029630": 2195, │ │ │ │ │ "029766": 2197, │ │ │ │ │ "02d": 2205, │ │ │ │ │ @@ -21789,14 +21791,15 @@ │ │ │ │ │ "034512": 2207, │ │ │ │ │ "034523": 2210, │ │ │ │ │ "034571": 2197, │ │ │ │ │ "034838": 2207, │ │ │ │ │ "034870": 2207, │ │ │ │ │ "034899": 2186, │ │ │ │ │ "034905": 2207, │ │ │ │ │ + "035": 2193, │ │ │ │ │ "035310": 2220, │ │ │ │ │ "035312": 2210, │ │ │ │ │ "035476": 2210, │ │ │ │ │ "035962": 2186, │ │ │ │ │ "036047": 2214, │ │ │ │ │ "036104": 2207, │ │ │ │ │ "036142": [2220, 2231], │ │ │ │ │ @@ -21857,15 +21860,14 @@ │ │ │ │ │ "043877": 2207, │ │ │ │ │ "044125": 2207, │ │ │ │ │ "044184": 2199, │ │ │ │ │ "0442": [2184, 2186], │ │ │ │ │ "044236": [16, 17, 18, 19, 2184, 2185, 2186, 2191, 2195, 2197, 2199, 2202, 2210, 2214, 2215, 2216, 2218, 2220, 2225, 2235, 2241, 2260], │ │ │ │ │ "044522": 586, │ │ │ │ │ "044546": 2207, │ │ │ │ │ - "044869": 2228, │ │ │ │ │ "044933": 2207, │ │ │ │ │ "045691": 2191, │ │ │ │ │ "045759": 2207, │ │ │ │ │ "045976": 2214, │ │ │ │ │ "046": 2207, │ │ │ │ │ "046044": 2199, │ │ │ │ │ "046582": 2207, │ │ │ │ │ @@ -21882,15 +21884,14 @@ │ │ │ │ │ "047609": 2184, │ │ │ │ │ "047704": 2215, │ │ │ │ │ "047902": 2197, │ │ │ │ │ "048": [1447, 2200, 2232], │ │ │ │ │ "048048": 2197, │ │ │ │ │ "048074": 2207, │ │ │ │ │ "048089": 2197, │ │ │ │ │ - "048198": 2228, │ │ │ │ │ "048543": 2207, │ │ │ │ │ "048553": 2207, │ │ │ │ │ "048693": 2230, │ │ │ │ │ "048777": 2204, │ │ │ │ │ "048788": 2197, │ │ │ │ │ "049": [1447, 2200, 2232], │ │ │ │ │ "049245": 2195, │ │ │ │ │ @@ -22003,15 +22004,14 @@ │ │ │ │ │ "063850": 2207, │ │ │ │ │ "063922": 2184, │ │ │ │ │ "063933": 2207, │ │ │ │ │ "064": 2207, │ │ │ │ │ "064034": [15, 2191], │ │ │ │ │ "064423": 2207, │ │ │ │ │ "064434": 2207, │ │ │ │ │ - "065": 2193, │ │ │ │ │ "065587": 2218, │ │ │ │ │ "065761": 2207, │ │ │ │ │ "065818": [2204, 2207], │ │ │ │ │ "065934": [182, 760], │ │ │ │ │ "066126": 2207, │ │ │ │ │ "066510": 2210, │ │ │ │ │ "066533": 2210, │ │ │ │ │ @@ -22129,14 +22129,15 @@ │ │ │ │ │ "082960": 2207, │ │ │ │ │ "083010": 2207, │ │ │ │ │ "083333": 2222, │ │ │ │ │ "083352": 2191, │ │ │ │ │ "08335394550": 1371, │ │ │ │ │ "083515": 15, │ │ │ │ │ "083675": 2207, │ │ │ │ │ + "084": 2193, │ │ │ │ │ "084601": 2191, │ │ │ │ │ "084844": [2185, 2191, 2197, 2202, 2204], │ │ │ │ │ "084917": 2195, │ │ │ │ │ "084n": 2202, │ │ │ │ │ "084u": 2202, │ │ │ │ │ "085070": 2207, │ │ │ │ │ "085193": 2207, │ │ │ │ │ @@ -22257,34 +22258,34 @@ │ │ │ │ │ "0n": [1489, 2298], │ │ │ │ │ "0px": 2207, │ │ │ │ │ "0rc0": 13, │ │ │ │ │ "0th": [26, 249, 882, 1202, 2185, 2197, 2199, 2235], │ │ │ │ │ "0x00": 2294, │ │ │ │ │ "0x40": 2294, │ │ │ │ │ "0x7efd0c0b0690": 3, │ │ │ │ │ - "0x8822b648": 2246, │ │ │ │ │ - "0x88c13930": 2230, │ │ │ │ │ - "0x9de2d520": 2197, │ │ │ │ │ - "0x9e86c390": 2195, │ │ │ │ │ - "0xa37b9be8": 2199, │ │ │ │ │ - "0xad7523e8": 2210, │ │ │ │ │ + "0xc7652528": 2246, │ │ │ │ │ + "0xc807c028": 2210, │ │ │ │ │ + "0xc938db10": 2230, │ │ │ │ │ + "0xdce13270": 2199, │ │ │ │ │ + "0xdf306e28": 2195, │ │ │ │ │ + "0xe4255fd0": 2197, │ │ │ │ │ "1": [1, 2, 4, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 39, 42, 44, 46, 49, 54, 56, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 82, 83, 84, 85, 86, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 134, 135, 136, 137, 138, 139, 140, 141, 143, 144, 145, 146, 148, 149, 151, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 177, 178, 180, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 298, 299, 300, 301, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 317, 318, 319, 321, 323, 324, 325, 326, 327, 328, 329, 331, 332, 333, 337, 339, 341, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 361, 363, 364, 366, 367, 370, 371, 372, 375, 376, 377, 378, 380, 382, 384, 385, 386, 387, 388, 389, 390, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 403, 404, 405, 406, 407, 408, 409, 411, 412, 414, 415, 416, 417, 419, 420, 421, 422, 423, 424, 425, 426, 427, 429, 430, 431, 432, 433, 434, 435, 436, 437, 440, 446, 449, 450, 451, 455, 456, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 473, 475, 476, 477, 478, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 495, 496, 498, 499, 500, 501, 502, 503, 505, 509, 510, 511, 514, 516, 519, 525, 531, 532, 533, 534, 536, 540, 543, 545, 547, 548, 549, 551, 557, 558, 561, 565, 568, 569, 571, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 589, 590, 591, 592, 593, 594, 595, 596, 597, 599, 600, 601, 602, 603, 604, 609, 613, 614, 615, 616, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 671, 673, 674, 675, 676, 678, 679, 680, 681, 682, 683, 684, 686, 688, 689, 690, 691, 692, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 709, 710, 711, 712, 713, 714, 715, 716, 717, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 743, 744, 747, 748, 749, 750, 751, 752, 753, 755, 756, 758, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 810, 812, 813, 814, 815, 816, 817, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 891, 892, 894, 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 912, 913, 914, 916, 918, 921, 923, 927, 930, 938, 939, 940, 941, 942, 943, 945, 946, 947, 948, 949, 950, 951, 952, 953, 957, 959, 960, 970, 977, 979, 981, 984, 994, 997, 1003, 1004, 1005, 1006, 1011, 1012, 1021, 1031, 1032, 1033, 1034, 1035, 1036, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1091, 1092, 1093, 1095, 1096, 1097, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1118, 1119, 1121, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1347, 1348, 1350, 1354, 1355, 1358, 1359, 1362, 1363, 1368, 1369, 1372, 1373, 1374, 1375, 1377, 1380, 1381, 1382, 1383, 1384, 1385, 1387, 1388, 1389, 1390, 1391, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1413, 1414, 1415, 1416, 1417, 1419, 1421, 1422, 1423, 1424, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1453, 1454, 1455, 1457, 1458, 1459, 1460, 1462, 1463, 1464, 1466, 1467, 1468, 1469, 1470, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1482, 1483, 1485, 1486, 1487, 1488, 1489, 1490, 1491, 1493, 1494, 1495, 1496, 1497, 1498, 1499, 1500, 1502, 1506, 1507, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1524, 1525, 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1542, 1543, 1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1553, 1560, 1561, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1578, 1580, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1598, 1600, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1620, 1621, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1637, 1638, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1657, 1659, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1677, 1679, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1699, 1701, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1720, 1722, 1725, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1741, 1742, 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1751, 1752, 1758, 1759, 1763, 1764, 1765, 1766, 1767, 1768, 1769, 1770, 1776, 1777, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1793, 1794, 1798, 1799, 1800, 1801, 1802, 1803, 1804, 1805, 1806, 1815, 1816, 1820, 1821, 1822, 1823, 1824, 1825, 1826, 1827, 1828, 1839, 1840, 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1857, 1858, 1860, 1861, 1862, 1863, 1864, 1865, 1866, 1867, 1868, 1876, 1877, 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888, 1894, 1895, 1899, 1900, 1901, 1902, 1903, 1904, 1905, 1906, 1912, 1913, 1917, 1918, 1919, 1920, 1921, 1922, 1923, 1924, 1930, 1931, 1933, 1934, 1935, 1936, 1937, 1938, 1939, 1940, 1941, 1947, 1948, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1964, 1965, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1982, 1983, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 2000, 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2018, 2019, 2023, 2024, 2025, 2026, 2027, 2028, 2029, 2030, 2036, 2037, 2040, 2041, 2042, 2043, 2044, 2045, 2046, 2047, 2048, 2054, 2055, 2058, 2059, 2060, 2061, 2062, 2063, 2064, 2065, 2066, 2073, 2077, 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2090, 2091, 2093, 2094, 2095, 2096, 2097, 2098, 2099, 2100, 2101, 2108, 2109, 2111, 2112, 2113, 2114, 2115, 2116, 2117, 2118, 2119, 2127, 2128, 2130, 2131, 2132, 2133, 2134, 2135, 2136, 2137, 2138, 2145, 2146, 2148, 2149, 2150, 2151, 2152, 2153, 2154, 2155, 2156, 2163, 2164, 2165, 2166, 2184, 2185, 2186, 2187, 2188, 2190, 2191, 2192, 2193, 2194, 2195, 2196, 2197, 2198, 2199, 2200, 2201, 2202, 2203, 2204, 2205, 2206, 2208, 2209, 2210, 2211, 2212, 2214, 2216, 2217, 2218, 2220, 2222, 2224, 2225, 2227, 2228, 2230, 2232, 2238, 2240, 2241, 2243, 2245, 2246, 2249, 2257, 2259, 2260, 2263, 2298, 2307, 2309, 2310], │ │ │ │ │ "10": [2, 3, 5, 6, 9, 10, 15, 16, 17, 18, 19, 21, 22, 24, 25, 26, 27, 28, 29, 30, 31, 32, 68, 69, 74, 80, 83, 84, 85, 88, 91, 94, 97, 98, 102, 105, 109, 111, 113, 119, 120, 121, 129, 133, 137, 138, 139, 140, 142, 144, 160, 163, 171, 173, 187, 188, 189, 190, 192, 193, 199, 202, 203, 204, 206, 207, 212, 213, 215, 216, 217, 220, 221, 222, 223, 228, 230, 234, 244, 258, 265, 268, 275, 276, 278, 284, 286, 288, 289, 293, 295, 296, 298, 300, 302, 316, 317, 318, 322, 323, 324, 329, 330, 331, 345, 395, 423, 427, 440, 445, 509, 514, 516, 534, 536, 544, 546, 551, 554, 556, 560, 562, 568, 569, 570, 571, 572, 577, 583, 592, 594, 595, 596, 600, 620, 621, 627, 635, 639, 641, 645, 647, 648, 649, 650, 652, 670, 671, 673, 677, 678, 679, 681, 684, 685, 686, 695, 696, 708, 713, 714, 738, 741, 763, 764, 765, 766, 768, 781, 787, 788, 798, 804, 808, 836, 837, 838, 839, 840, 841, 842, 843, 844, 849, 852, 863, 868, 874, 889, 895, 902, 904, 912, 923, 940, 942, 943, 944, 948, 957, 959, 960, 970, 982, 984, 995, 997, 1001, 1003, 1004, 1005, 1011, 1016, 1020, 1021, 1069, 1071, 1072, 1075, 1109, 1154, 1158, 1162, 1163, 1173, 1174, 1175, 1180, 1185, 1189, 1195, 1200, 1205, 1219, 1220, 1230, 1239, 1246, 1250, 1256, 1261, 1264, 1267, 1284, 1288, 1291, 1292, 1294, 1297, 1298, 1299, 1306, 1308, 1319, 1324, 1343, 1344, 1345, 1350, 1367, 1387, 1391, 1403, 1411, 1416, 1418, 1420, 1421, 1440, 1447, 1451, 1452, 1458, 1462, 1467, 1473, 1478, 1479, 1482, 1485, 1488, 1490, 1491, 1498, 1598, 1657, 1677, 1699, 1720, 1741, 1758, 1894, 1912, 2018, 2185, 2186, 2188, 2190, 2191, 2192, 2193, 2194, 2195, 2196, 2197, 2198, 2199, 2200, 2201, 2202, 2203, 2204, 2205, 2206, 2207, 2208, 2209, 2210, 2211, 2212, 2216, 2217, 2218, 2219, 2220, 2221, 2222, 2223, 2224, 2225, 2226, 2227, 2228, 2229, 2230, 2231, 2232, 2234, 2235, 2238, 2240, 2241, 2246, 2249, 2254, 2257, 2260, 2261, 2264, 2265, 2271, 2277, 2283, 2289, 2290, 2294, 2298, 2302, 2307, 2308], │ │ │ │ │ "100": [3, 15, 17, 22, 30, 68, 97, 98, 111, 118, 132, 135, 141, 142, 145, 159, 161, 175, 182, 192, 202, 207, 212, 213, 233, 273, 303, 345, 359, 360, 427, 577, 587, 588, 620, 621, 655, 709, 717, 760, 781, 787, 788, 900, 1345, 1391, 1398, 1447, 1457, 1472, 1473, 1488, 1490, 2184, 2185, 2186, 2188, 2190, 2191, 2193, 2194, 2195, 2197, 2199, 2200, 2201, 2202, 2204, 2207, 2208, 2209, 2210, 2211, 2212, 2218, 2220, 2222, 2223, 2225, 2226, 2230, 2231, 2232, 2235, 2241, 2242, 2246, 2249, 2302, 2307], │ │ │ │ │ "1000": [9, 10, 15, 16, 17, 18, 19, 24, 25, 28, 29, 32, 102, 141, 183, 191, 193, 194, 427, 717, 761, 767, 768, 769, 874, 1154, 1158, 1456, 1465, 1467, 1876, 1964, 2184, 2185, 2186, 2188, 2193, 2195, 2199, 2205, 2206, 2207, 2210, 2211, 2220, 2223, 2229, 2230, 2235, 2238, 2246, 2249, 2261, 2294], │ │ │ │ │ "10000": [192, 1485, 2185, 2201, 2206, 2210, 2220, 2228, 2266], │ │ │ │ │ "100000": [1354, 1372, 2199, 2201, 2210], │ │ │ │ │ "1000000": [144, 2199, 2228], │ │ │ │ │ "1000000000000000": 1039, │ │ │ │ │ "100000d": 1497, │ │ │ │ │ "100001": 1497, │ │ │ │ │ "10001": 2232, │ │ │ │ │ "10008": [2231, 2232], │ │ │ │ │ "1000x5": 2206, │ │ │ │ │ - "1001": [16, 17, 18, 19, 2195, 2199, 2235], │ │ │ │ │ + "1001": [16, 17, 18, 19, 2193, 2195, 2199, 2235], │ │ │ │ │ "100123": 2225, │ │ │ │ │ "1001m": [917, 919, 922, 929], │ │ │ │ │ "1002": [16, 17, 18, 19, 2199, 2205, 2235], │ │ │ │ │ "10022": 2226, │ │ │ │ │ "100230": 2184, │ │ │ │ │ "10024": 2226, │ │ │ │ │ "10025": 2226, │ │ │ │ │ @@ -22471,15 +22472,15 @@ │ │ │ │ │ "10477": 2228, │ │ │ │ │ "104803": 2195, │ │ │ │ │ "10482": 2228, │ │ │ │ │ "10483": 2228, │ │ │ │ │ "10485": 2228, │ │ │ │ │ "10486": 2230, │ │ │ │ │ "104971": 2207, │ │ │ │ │ - "105": [2184, 2185, 2186, 2188, 2191, 2193, 2195, 2197, 2199, 2200, 2201, 2204, 2208, 2209, 2210, 2211, 2218, 2220, 2222, 2230, 2232, 2235, 2246, 2271], │ │ │ │ │ + "105": [2184, 2185, 2186, 2188, 2191, 2195, 2197, 2199, 2200, 2201, 2204, 2208, 2209, 2210, 2211, 2218, 2220, 2222, 2230, 2232, 2235, 2246, 2271], │ │ │ │ │ "10503": 2230, │ │ │ │ │ "10505": 2228, │ │ │ │ │ "10508": 2228, │ │ │ │ │ "10510": 2229, │ │ │ │ │ "10511": 2249, │ │ │ │ │ "1051201": 2205, │ │ │ │ │ "1051355": 2205, │ │ │ │ │ @@ -22515,15 +22516,15 @@ │ │ │ │ │ "10577": 2228, │ │ │ │ │ "10581": 2228, │ │ │ │ │ "10583": 2228, │ │ │ │ │ "105845": 2207, │ │ │ │ │ "10587": 2228, │ │ │ │ │ "10590": 2228, │ │ │ │ │ "10591": 2228, │ │ │ │ │ - "106": [28, 2184, 2185, 2186, 2188, 2191, 2193, 2195, 2197, 2199, 2200, 2201, 2204, 2208, 2209, 2210, 2211, 2218, 2220, 2222, 2230, 2232, 2235, 2246], │ │ │ │ │ + "106": [28, 2184, 2185, 2186, 2188, 2191, 2195, 2197, 2199, 2200, 2201, 2204, 2208, 2209, 2210, 2211, 2218, 2220, 2222, 2230, 2232, 2235, 2246], │ │ │ │ │ "1060": 2212, │ │ │ │ │ "10604": 2228, │ │ │ │ │ "106068": 2207, │ │ │ │ │ "1061": [2194, 2212], │ │ │ │ │ "10610": 2228, │ │ │ │ │ "10611": 2246, │ │ │ │ │ "10618": 2228, │ │ │ │ │ @@ -23058,15 +23059,15 @@ │ │ │ │ │ "11974": 2230, │ │ │ │ │ "11981": 2232, │ │ │ │ │ "11986": 2230, │ │ │ │ │ "11990": 2230, │ │ │ │ │ "11995": 2230, │ │ │ │ │ "11h": 2210, │ │ │ │ │ "12": [15, 16, 17, 18, 19, 22, 24, 25, 26, 28, 29, 30, 31, 32, 69, 72, 73, 77, 78, 84, 88, 102, 107, 109, 111, 113, 129, 133, 134, 160, 162, 171, 173, 183, 187, 188, 189, 190, 193, 199, 202, 204, 206, 207, 208, 213, 215, 216, 217, 220, 221, 222, 244, 253, 259, 265, 275, 288, 292, 294, 296, 303, 308, 309, 313, 316, 318, 332, 333, 345, 362, 363, 420, 423, 509, 513, 514, 515, 516, 522, 524, 526, 530, 532, 535, 541, 557, 575, 586, 595, 600, 629, 635, 639, 644, 646, 652, 655, 660, 661, 666, 670, 673, 688, 689, 708, 738, 761, 763, 764, 765, 766, 768, 781, 782, 788, 799, 873, 886, 890, 893, 895, 923, 926, 940, 943, 948, 953, 976, 980, 987, 1017, 1075, 1154, 1158, 1162, 1164, 1169, 1189, 1192, 1195, 1205, 1219, 1221, 1226, 1250, 1253, 1256, 1267, 1274, 1276, 1290, 1292, 1336, 1344, 1392, 1431, 1433, 1452, 1482, 1487, 1497, 1498, 1560, 1578, 1598, 1620, 1637, 1657, 1677, 1699, 1720, 1758, 1793, 1815, 1839, 1876, 1894, 1912, 1930, 1964, 2018, 2127, 2145, 2184, 2185, 2186, 2188, 2190, 2191, 2192, 2193, 2194, 2195, 2197, 2198, 2199, 2200, 2201, 2202, 2203, 2204, 2205, 2206, 2207, 2208, 2209, 2210, 2211, 2212, 2214, 2215, 2216, 2218, 2219, 2220, 2221, 2222, 2223, 2225, 2226, 2228, 2229, 2230, 2231, 2232, 2235, 2238, 2240, 2241, 2246, 2249, 2257, 2261, 2264, 2265, 2271, 2277, 2283, 2289, 2294, 2298, 2302, 2307], │ │ │ │ │ - "120": [15, 78, 162, 273, 359, 360, 587, 588, 900, 930, 2184, 2185, 2186, 2188, 2191, 2195, 2197, 2199, 2200, 2201, 2204, 2208, 2209, 2210, 2211, 2220, 2230, 2232], │ │ │ │ │ + "120": [15, 78, 162, 273, 359, 360, 587, 588, 900, 930, 2184, 2185, 2186, 2188, 2191, 2193, 2195, 2197, 2199, 2200, 2201, 2204, 2208, 2209, 2210, 2211, 2220, 2230, 2232], │ │ │ │ │ "12000": [2185, 2188, 2220], │ │ │ │ │ "12004": 2265, │ │ │ │ │ "120055": 2228, │ │ │ │ │ "12011": [176, 179], │ │ │ │ │ "12014": 2230, │ │ │ │ │ "12017": 2230, │ │ │ │ │ "12019": 2230, │ │ │ │ │ @@ -23203,27 +23204,28 @@ │ │ │ │ │ "12386": 2230, │ │ │ │ │ "12388": 2232, │ │ │ │ │ "1239": [2185, 2191, 2194], │ │ │ │ │ "12392": 2238, │ │ │ │ │ "12396": 2241, │ │ │ │ │ "12397": 2235, │ │ │ │ │ "12399": 2232, │ │ │ │ │ - "124": [2184, 2185, 2186, 2188, 2191, 2195, 2197, 2199, 2200, 2201, 2204, 2208, 2210, 2211, 2220, 2232], │ │ │ │ │ + "124": [2184, 2185, 2186, 2188, 2191, 2195, 2197, 2199, 2200, 2201, 2204, 2205, 2208, 2210, 2211, 2220, 2232], │ │ │ │ │ "1240": [2185, 2191, 2194], │ │ │ │ │ "12401": 2238, │ │ │ │ │ "12405": 2236, │ │ │ │ │ "12409": 2230, │ │ │ │ │ "12411": 2231, │ │ │ │ │ "124124": 2207, │ │ │ │ │ "12424": 2232, │ │ │ │ │ "12425": 2241, │ │ │ │ │ "12448": 2230, │ │ │ │ │ "124518": 2230, │ │ │ │ │ "12467": 2231, │ │ │ │ │ "12468": 2199, │ │ │ │ │ + "1247": 2193, │ │ │ │ │ "12471": 2230, │ │ │ │ │ "12473": 2231, │ │ │ │ │ "12486": 2231, │ │ │ │ │ "124862": 2191, │ │ │ │ │ "12489": 2230, │ │ │ │ │ "12492": 2230, │ │ │ │ │ "12493": 2231, │ │ │ │ │ @@ -26223,15 +26225,15 @@ │ │ │ │ │ "219673": 15, │ │ │ │ │ "21978": 2246, │ │ │ │ │ "21980": 2246, │ │ │ │ │ "21997": 2246, │ │ │ │ │ "21998": 2246, │ │ │ │ │ "21st": 31, │ │ │ │ │ "22": [10, 15, 17, 18, 19, 22, 23, 25, 29, 30, 31, 32, 133, 144, 208, 213, 230, 345, 513, 515, 535, 708, 782, 788, 804, 993, 1010, 1019, 1259, 1274, 1397, 1430, 1498, 1598, 1657, 1677, 2184, 2185, 2186, 2188, 2190, 2191, 2192, 2193, 2194, 2195, 2197, 2198, 2199, 2200, 2201, 2202, 2203, 2204, 2205, 2206, 2207, 2208, 2209, 2210, 2211, 2212, 2214, 2217, 2218, 2219, 2220, 2222, 2223, 2226, 2227, 2228, 2230, 2231, 2232, 2235, 2238, 2241, 2242, 2246, 2249, 2265, 2271, 2277, 2283, 2294, 2298, 2302, 2307], │ │ │ │ │ - "220": [118, 132, 135, 159, 161, 175, 2185, 2186, 2188, 2193, 2195, 2197, 2199, 2210, 2211, 2220, 2257], │ │ │ │ │ + "220": [118, 132, 135, 159, 161, 175, 2185, 2186, 2188, 2195, 2197, 2199, 2210, 2211, 2220, 2257], │ │ │ │ │ "2200": [2210, 2265], │ │ │ │ │ "22000": 150, │ │ │ │ │ "22001": 2246, │ │ │ │ │ "220026": 2207, │ │ │ │ │ "22004": 2246, │ │ │ │ │ "22005": 2246, │ │ │ │ │ "22015": 2246, │ │ │ │ │ @@ -26322,15 +26324,14 @@ │ │ │ │ │ "22468": 2246, │ │ │ │ │ "22476": 2246, │ │ │ │ │ "22477": 2246, │ │ │ │ │ "224824": 2207, │ │ │ │ │ "224826": 2210, │ │ │ │ │ "22484": [2246, 2249], │ │ │ │ │ "22487": 2246, │ │ │ │ │ - "2248838272": 2246, │ │ │ │ │ "2249": [2194, 2201, 2203, 2294, 2302, 2307], │ │ │ │ │ "224904": 2230, │ │ │ │ │ "22492": 2246, │ │ │ │ │ "225": [118, 132, 135, 159, 161, 175, 2185, 2186, 2188, 2195, 2197, 2199, 2210, 2227], │ │ │ │ │ "2250": [2194, 2201, 2203, 2294, 2302, 2307], │ │ │ │ │ "225000": [121, 696], │ │ │ │ │ "22501": 2249, │ │ │ │ │ @@ -26405,15 +26406,14 @@ │ │ │ │ │ "228": [2185, 2186, 2188, 2195, 2197, 2199, 2210], │ │ │ │ │ "22801": 2246, │ │ │ │ │ "22803": 2246, │ │ │ │ │ "228039": [2184, 2257, 2260], │ │ │ │ │ "22805": 2246, │ │ │ │ │ "22818": [2283, 2298], │ │ │ │ │ "22835": 2246, │ │ │ │ │ - "2283564640": 2246, │ │ │ │ │ "22858": 2246, │ │ │ │ │ "22860": 2246, │ │ │ │ │ "22862": 2246, │ │ │ │ │ "22880": 2246, │ │ │ │ │ "22887": 2246, │ │ │ │ │ "229": [2185, 2186, 2188, 2195, 2197, 2199, 2210], │ │ │ │ │ "22903": 2246, │ │ │ │ │ @@ -27051,15 +27051,15 @@ │ │ │ │ │ "25851": 2249, │ │ │ │ │ "25860": 2249, │ │ │ │ │ "258648": 2210, │ │ │ │ │ "25871": 2249, │ │ │ │ │ "25880": 2298, │ │ │ │ │ "25893": 2249, │ │ │ │ │ "258993": 2197, │ │ │ │ │ - "259": [2186, 2188, 2195, 2197, 2199, 2210], │ │ │ │ │ + "259": [2186, 2188, 2193, 2195, 2197, 2199, 2210], │ │ │ │ │ "25905": 2249, │ │ │ │ │ "25913": 2249, │ │ │ │ │ "259200": [683, 2298], │ │ │ │ │ "259200000000000": [931, 933, 937], │ │ │ │ │ "25922": 2249, │ │ │ │ │ "259260": 2228, │ │ │ │ │ "25928": 2249, │ │ │ │ │ @@ -27290,15 +27290,15 @@ │ │ │ │ │ "2698": 2215, │ │ │ │ │ "26987": 2249, │ │ │ │ │ "26988": 2265, │ │ │ │ │ "26989": 2271, │ │ │ │ │ "2699": 2215, │ │ │ │ │ "26996": 2265, │ │ │ │ │ "27": [15, 17, 18, 19, 25, 26, 27, 28, 29, 31, 77, 80, 108, 148, 149, 177, 178, 213, 230, 304, 305, 327, 345, 592, 656, 657, 725, 726, 755, 756, 788, 804, 1057, 1344, 1720, 2036, 2054, 2184, 2185, 2186, 2188, 2190, 2191, 2192, 2193, 2194, 2195, 2197, 2198, 2199, 2200, 2201, 2202, 2203, 2204, 2205, 2206, 2207, 2208, 2209, 2210, 2211, 2212, 2213, 2216, 2217, 2218, 2220, 2222, 2225, 2226, 2228, 2230, 2231, 2232, 2235, 2241, 2246, 2249, 2265, 2271, 2277, 2283, 2289, 2294, 2298, 2302], │ │ │ │ │ - "270": [2186, 2188, 2193, 2195, 2197, 2199, 2207, 2210], │ │ │ │ │ + "270": [2186, 2188, 2195, 2197, 2199, 2207, 2210], │ │ │ │ │ "2700": 2215, │ │ │ │ │ "27001": 2249, │ │ │ │ │ "27006": 2249, │ │ │ │ │ "27008": 2249, │ │ │ │ │ "270099": 2197, │ │ │ │ │ "27011": 2250, │ │ │ │ │ "27017": 2265, │ │ │ │ │ @@ -27706,15 +27706,15 @@ │ │ │ │ │ "29072": 2283, │ │ │ │ │ "290720": 2235, │ │ │ │ │ "2908": [2185, 2222], │ │ │ │ │ "2909": 2185, │ │ │ │ │ "290936": 2207, │ │ │ │ │ "290990": 2207, │ │ │ │ │ "290994": [2186, 2212], │ │ │ │ │ - "291": [2186, 2193, 2197, 2199, 2210, 2255], │ │ │ │ │ + "291": [2186, 2197, 2199, 2210, 2255], │ │ │ │ │ "2910": [2185, 2199], │ │ │ │ │ "29102": 2294, │ │ │ │ │ "2911": [2185, 2199], │ │ │ │ │ "2912": 2199, │ │ │ │ │ "29122": 2265, │ │ │ │ │ "29128": 2265, │ │ │ │ │ "29129": 2289, │ │ │ │ │ @@ -27760,15 +27760,15 @@ │ │ │ │ │ "2936": [2199, 2249], │ │ │ │ │ "293601": 2199, │ │ │ │ │ "293786": 2191, │ │ │ │ │ "2938": 2199, │ │ │ │ │ "29388": 2265, │ │ │ │ │ "293906": 2207, │ │ │ │ │ "293926": 2204, │ │ │ │ │ - "294": [2186, 2193, 2197, 2199, 2210], │ │ │ │ │ + "294": [2186, 2197, 2199, 2210], │ │ │ │ │ "29403": 2265, │ │ │ │ │ "29405": 2298, │ │ │ │ │ "294122": 2199, │ │ │ │ │ "294348": 2199, │ │ │ │ │ "294389": 2207, │ │ │ │ │ "29442": 2275, │ │ │ │ │ "2945": 2191, │ │ │ │ │ @@ -27828,15 +27828,15 @@ │ │ │ │ │ "29773": 2277, │ │ │ │ │ "297780": 2197, │ │ │ │ │ "29787": 2265, │ │ │ │ │ "297879": 2207, │ │ │ │ │ "297894": 2207, │ │ │ │ │ "2979": 2216, │ │ │ │ │ "29791": 2265, │ │ │ │ │ - "298": [81, 2186, 2197, 2199, 2210, 2227], │ │ │ │ │ + "298": [81, 2185, 2186, 2197, 2199, 2210, 2227], │ │ │ │ │ "29801": 2265, │ │ │ │ │ "29812": [2265, 2298], │ │ │ │ │ "29820": 2265, │ │ │ │ │ "298329": 2197, │ │ │ │ │ "29853": 2265, │ │ │ │ │ "29857": 2265, │ │ │ │ │ "298599": 2186, │ │ │ │ │ @@ -28304,15 +28304,15 @@ │ │ │ │ │ "321604": 2186, │ │ │ │ │ "32166": 2267, │ │ │ │ │ "32167": 2271, │ │ │ │ │ "3217": 2218, │ │ │ │ │ "32173": 2271, │ │ │ │ │ "32174": 2298, │ │ │ │ │ "32194": 2269, │ │ │ │ │ - "322": [2186, 2197, 2199, 2210], │ │ │ │ │ + "322": [2186, 2193, 2197, 2199, 2210], │ │ │ │ │ "32207": 2271, │ │ │ │ │ "32213": 2267, │ │ │ │ │ "32219": 2267, │ │ │ │ │ "322262": 2186, │ │ │ │ │ "32240": 2271, │ │ │ │ │ "32255": 2271, │ │ │ │ │ "32259": 2283, │ │ │ │ │ @@ -28332,15 +28332,15 @@ │ │ │ │ │ "323510": 2207, │ │ │ │ │ "32377": [2271, 2274], │ │ │ │ │ "32380": [2271, 2298], │ │ │ │ │ "32385": 2267, │ │ │ │ │ "32392": 2277, │ │ │ │ │ "32394": 2271, │ │ │ │ │ "32395": [2269, 2271], │ │ │ │ │ - "324": [2186, 2193, 2197, 2199, 2210, 2227, 2235, 2255], │ │ │ │ │ + "324": [2186, 2197, 2199, 2210, 2227, 2235, 2255], │ │ │ │ │ "32402": 2271, │ │ │ │ │ "324071": 2199, │ │ │ │ │ "32408": 2271, │ │ │ │ │ "32409": 2269, │ │ │ │ │ "32420": 2271, │ │ │ │ │ "32423": 2271, │ │ │ │ │ "32426": 2271, │ │ │ │ │ @@ -28414,15 +28414,15 @@ │ │ │ │ │ "32766": 30, │ │ │ │ │ "327710": 2191, │ │ │ │ │ "32779": 2271, │ │ │ │ │ "32782": 2271, │ │ │ │ │ "327863": 2186, │ │ │ │ │ "3279": 2199, │ │ │ │ │ "32792": 2271, │ │ │ │ │ - "328": [2184, 2186, 2191, 2197, 2199, 2205, 2210, 2246], │ │ │ │ │ + "328": [2184, 2186, 2191, 2193, 2197, 2199, 2205, 2210, 2246], │ │ │ │ │ "3280": 2199, │ │ │ │ │ "32800": 2269, │ │ │ │ │ "32803": 2289, │ │ │ │ │ "32806": 2271, │ │ │ │ │ "32809": 2271, │ │ │ │ │ "3281": 2199, │ │ │ │ │ "32815": 2271, │ │ │ │ │ @@ -28605,14 +28605,16 @@ │ │ │ │ │ "33610": 2271, │ │ │ │ │ "336222": 2228, │ │ │ │ │ "33623": 2271, │ │ │ │ │ "336252": 2199, │ │ │ │ │ "3363": 2257, │ │ │ │ │ "33634": 2283, │ │ │ │ │ "33637": 2298, │ │ │ │ │ + "3364066032": 2246, │ │ │ │ │ + "3364066560": 2246, │ │ │ │ │ "33646": 2271, │ │ │ │ │ "336505": 2215, │ │ │ │ │ "33654": 2271, │ │ │ │ │ "33655": 2271, │ │ │ │ │ "33660": 2271, │ │ │ │ │ "336606": 2199, │ │ │ │ │ "33666": 2274, │ │ │ │ │ @@ -28962,15 +28964,15 @@ │ │ │ │ │ "35462": 2272, │ │ │ │ │ "35471": 2273, │ │ │ │ │ "35486": 2272, │ │ │ │ │ "35488": 2272, │ │ │ │ │ "35490": 2272, │ │ │ │ │ "35493": 2272, │ │ │ │ │ "35499": 2272, │ │ │ │ │ - "355": [2185, 2186, 2197, 2199, 2210, 2255, 2298], │ │ │ │ │ + "355": [2186, 2197, 2199, 2210, 2255, 2298], │ │ │ │ │ "35509": 2275, │ │ │ │ │ "355203": 2207, │ │ │ │ │ "35521": 2273, │ │ │ │ │ "35529": 2277, │ │ │ │ │ "3553": 2193, │ │ │ │ │ "35534": 2274, │ │ │ │ │ "355392": 2186, │ │ │ │ │ @@ -29153,15 +29155,15 @@ │ │ │ │ │ "362838": [1148, 1149], │ │ │ │ │ "36289": 2283, │ │ │ │ │ "36291": 2274, │ │ │ │ │ "36293": 2283, │ │ │ │ │ "36294": 2274, │ │ │ │ │ "362949": [2184, 2195, 2214], │ │ │ │ │ "36296": 2274, │ │ │ │ │ - "363": [2186, 2193, 2197, 2199, 2210, 2249, 2255, 2298], │ │ │ │ │ + "363": [2186, 2197, 2199, 2210, 2249, 2255, 2298], │ │ │ │ │ "36304": 2277, │ │ │ │ │ "36308": 2277, │ │ │ │ │ "363098": 2207, │ │ │ │ │ "3631": 2217, │ │ │ │ │ "36310": 2277, │ │ │ │ │ "36317": 2277, │ │ │ │ │ "36319": 2277, │ │ │ │ │ @@ -31119,15 +31121,15 @@ │ │ │ │ │ "45162": 2294, │ │ │ │ │ "45170": 2289, │ │ │ │ │ "45174": 2289, │ │ │ │ │ "45180": 2289, │ │ │ │ │ "451849": 2199, │ │ │ │ │ "4519": 2218, │ │ │ │ │ "451921": 2207, │ │ │ │ │ - "452": [2199, 2207, 2210, 2249], │ │ │ │ │ + "452": [2193, 2199, 2207, 2210, 2249], │ │ │ │ │ "4520": [176, 179, 2218], │ │ │ │ │ "452012": 2207, │ │ │ │ │ "45218": 2294, │ │ │ │ │ "452214": 2199, │ │ │ │ │ "45224": 2294, │ │ │ │ │ "45227": 2289, │ │ │ │ │ "45236": 2294, │ │ │ │ │ @@ -31401,15 +31403,15 @@ │ │ │ │ │ "46382": 2294, │ │ │ │ │ "46383": 2293, │ │ │ │ │ "46384": 2291, │ │ │ │ │ "46389": 2291, │ │ │ │ │ "46396": 2294, │ │ │ │ │ "463966": 2207, │ │ │ │ │ "46398": 2298, │ │ │ │ │ - "464": [2185, 2186, 2199, 2210], │ │ │ │ │ + "464": [2186, 2199, 2210], │ │ │ │ │ "46400": 2294, │ │ │ │ │ "464000": 2202, │ │ │ │ │ "46406": 2293, │ │ │ │ │ "46408": 2294, │ │ │ │ │ "46425": 2294, │ │ │ │ │ "46430": [2294, 2298], │ │ │ │ │ "46431": 2294, │ │ │ │ │ @@ -31423,15 +31425,15 @@ │ │ │ │ │ "46471": 2298, │ │ │ │ │ "46476": [2294, 2298], │ │ │ │ │ "464776": 2210, │ │ │ │ │ "46479": 2294, │ │ │ │ │ "4648": [2199, 2218], │ │ │ │ │ "464804": 2207, │ │ │ │ │ "46485": 2294, │ │ │ │ │ - "465": [2199, 2210], │ │ │ │ │ + "465": [2193, 2199, 2210], │ │ │ │ │ "4651": 2218, │ │ │ │ │ "46518": [2294, 2298], │ │ │ │ │ "46519": 2294, │ │ │ │ │ "465222": 2199, │ │ │ │ │ "46527": 2294, │ │ │ │ │ "46551": 2294, │ │ │ │ │ "465520": 2207, │ │ │ │ │ @@ -31886,15 +31888,15 @@ │ │ │ │ │ "48976": 2298, │ │ │ │ │ "489811": 2219, │ │ │ │ │ "48996": 2296, │ │ │ │ │ "489961": 2207, │ │ │ │ │ "489981": 2207, │ │ │ │ │ "48e": [2186, 2227], │ │ │ │ │ "48hr": 234, │ │ │ │ │ - "49": [15, 17, 19, 28, 242, 283, 817, 910, 1323, 1433, 2184, 2185, 2186, 2188, 2190, 2191, 2193, 2194, 2195, 2197, 2199, 2200, 2201, 2202, 2203, 2204, 2206, 2207, 2208, 2209, 2210, 2211, 2212, 2214, 2218, 2220, 2222, 2223, 2226, 2228, 2230, 2232, 2235, 2238, 2241, 2246, 2249, 2265, 2271, 2283], │ │ │ │ │ + "49": [15, 17, 19, 28, 242, 283, 817, 910, 1323, 1433, 2184, 2185, 2186, 2188, 2190, 2191, 2193, 2194, 2195, 2197, 2199, 2200, 2201, 2202, 2203, 2204, 2205, 2206, 2207, 2208, 2209, 2210, 2211, 2212, 2214, 2218, 2220, 2222, 2223, 2226, 2228, 2230, 2232, 2235, 2238, 2241, 2246, 2249, 2265, 2271, 2283], │ │ │ │ │ "490": [16, 17, 18, 19, 2194, 2199, 2201, 2203, 2210, 2235, 2249, 2283, 2294, 2298, 2307], │ │ │ │ │ "49008": 2298, │ │ │ │ │ "49010": 2298, │ │ │ │ │ "49014": 2298, │ │ │ │ │ "4902": 2218, │ │ │ │ │ "49021": 2298, │ │ │ │ │ "49037": 2298, │ │ │ │ │ @@ -32039,15 +32041,15 @@ │ │ │ │ │ "49769": 2296, │ │ │ │ │ "49771": 2297, │ │ │ │ │ "497767": 2193, │ │ │ │ │ "497796": 2207, │ │ │ │ │ "49793": 2298, │ │ │ │ │ "49795": 2298, │ │ │ │ │ "497968": 2186, │ │ │ │ │ - "498": [2184, 2199, 2205, 2210, 2249, 2257], │ │ │ │ │ + "498": [2184, 2185, 2199, 2205, 2210, 2249, 2257], │ │ │ │ │ "498073": 2207, │ │ │ │ │ "4982": 2218, │ │ │ │ │ "49824": 2298, │ │ │ │ │ "49825": 2298, │ │ │ │ │ "49830": 2298, │ │ │ │ │ "49834": 2297, │ │ │ │ │ "49835": 2298, │ │ │ │ │ @@ -32135,15 +32137,15 @@ │ │ │ │ │ "50161": 2298, │ │ │ │ │ "50162": 2298, │ │ │ │ │ "501668": 2207, │ │ │ │ │ "50183": 2298, │ │ │ │ │ "50185": 2298, │ │ │ │ │ "501957": 2207, │ │ │ │ │ "501979": 2207, │ │ │ │ │ - "502": [2185, 2193, 2199, 2210], │ │ │ │ │ + "502": [2185, 2199, 2210], │ │ │ │ │ "502042": 2199, │ │ │ │ │ "502065": 2197, │ │ │ │ │ "5021": 2218, │ │ │ │ │ "50232": 2298, │ │ │ │ │ "50237": 2297, │ │ │ │ │ "50243": 2298, │ │ │ │ │ "50245": 2298, │ │ │ │ │ @@ -32487,15 +32489,15 @@ │ │ │ │ │ "519726": 2193, │ │ │ │ │ "51977": 2302, │ │ │ │ │ "51979": 2302, │ │ │ │ │ "5198": 2220, │ │ │ │ │ "519818": 2235, │ │ │ │ │ "519970": [2185, 2197, 2204], │ │ │ │ │ "52": [17, 19, 31, 188, 189, 213, 230, 345, 764, 765, 788, 804, 956, 957, 962, 970, 973, 982, 983, 990, 995, 997, 999, 1002, 1006, 1007, 1008, 1009, 1013, 1014, 1018, 1447, 1793, 1815, 2184, 2185, 2186, 2188, 2190, 2191, 2193, 2195, 2197, 2199, 2200, 2201, 2202, 2203, 2204, 2206, 2207, 2208, 2209, 2210, 2211, 2212, 2214, 2218, 2220, 2222, 2226, 2228, 2230, 2232, 2235, 2238, 2241, 2246, 2249, 2271, 2283], │ │ │ │ │ - "520": 2199, │ │ │ │ │ + "520": [2193, 2199], │ │ │ │ │ "5200": [754, 757, 1242, 1243], │ │ │ │ │ "52008": 2298, │ │ │ │ │ "520091": 2184, │ │ │ │ │ "5203": 2218, │ │ │ │ │ "52033": 2302, │ │ │ │ │ "52036": 2298, │ │ │ │ │ "520478": 2199, │ │ │ │ │ @@ -33414,15 +33416,15 @@ │ │ │ │ │ "56945": 2308, │ │ │ │ │ "5695": 2219, │ │ │ │ │ "569522": 2207, │ │ │ │ │ "569605": [2185, 2197, 2199, 2202, 2204, 2215], │ │ │ │ │ "569718": 2207, │ │ │ │ │ "5698": 2218, │ │ │ │ │ "56991": 2308, │ │ │ │ │ - "57": [15, 17, 18, 19, 276, 902, 1192, 1253, 2184, 2185, 2186, 2188, 2190, 2191, 2193, 2195, 2197, 2199, 2200, 2201, 2202, 2203, 2204, 2205, 2206, 2207, 2208, 2209, 2210, 2211, 2212, 2214, 2218, 2220, 2222, 2225, 2226, 2228, 2230, 2232, 2235, 2238, 2241, 2246, 2249, 2271], │ │ │ │ │ + "57": [15, 17, 18, 19, 276, 902, 1192, 1253, 2184, 2185, 2186, 2188, 2190, 2191, 2193, 2195, 2197, 2199, 2200, 2201, 2202, 2203, 2204, 2206, 2207, 2208, 2209, 2210, 2211, 2212, 2214, 2218, 2220, 2222, 2225, 2226, 2228, 2230, 2232, 2235, 2238, 2241, 2246, 2249, 2271], │ │ │ │ │ "570": 2199, │ │ │ │ │ "57006": 2308, │ │ │ │ │ "57010": 2308, │ │ │ │ │ "57019": 2308, │ │ │ │ │ "5702": 2218, │ │ │ │ │ "57027": 2308, │ │ │ │ │ "5703": 2218, │ │ │ │ │ @@ -33445,15 +33447,15 @@ │ │ │ │ │ "5713": 2202, │ │ │ │ │ "57130": 2308, │ │ │ │ │ "5713290": 2202, │ │ │ │ │ "571429": [2195, 2201, 2222], │ │ │ │ │ "57150": 2308, │ │ │ │ │ "57151": 2308, │ │ │ │ │ "5717": 2218, │ │ │ │ │ - "572": [2193, 2199, 2298], │ │ │ │ │ + "572": [2199, 2298], │ │ │ │ │ "572182": 2193, │ │ │ │ │ "57224": 2308, │ │ │ │ │ "5724": 2235, │ │ │ │ │ "5725": 2218, │ │ │ │ │ "5727": 2219, │ │ │ │ │ "57276": 2308, │ │ │ │ │ "573": [1444, 2199], │ │ │ │ │ @@ -33517,15 +33519,15 @@ │ │ │ │ │ "5775": 2192, │ │ │ │ │ "577569": 2195, │ │ │ │ │ "577585": [2184, 2214], │ │ │ │ │ "5776": 2192, │ │ │ │ │ "57761": 2309, │ │ │ │ │ "57762": 2309, │ │ │ │ │ "577693": 2207, │ │ │ │ │ - "578": [2193, 2194, 2199, 2201, 2203, 2232, 2283, 2294, 2298, 2302, 2307], │ │ │ │ │ + "578": [2194, 2199, 2201, 2203, 2232, 2283, 2294, 2298, 2302, 2307], │ │ │ │ │ "5786": 2229, │ │ │ │ │ "578615": 2207, │ │ │ │ │ "578798": 2210, │ │ │ │ │ "578900": 2207, │ │ │ │ │ "579": [2199, 2232], │ │ │ │ │ "5797": 2219, │ │ │ │ │ "58": [17, 19, 23, 213, 276, 345, 788, 902, 2184, 2185, 2186, 2188, 2190, 2191, 2193, 2195, 2197, 2199, 2200, 2201, 2202, 2203, 2204, 2205, 2206, 2207, 2208, 2209, 2210, 2211, 2212, 2214, 2218, 2220, 2222, 2226, 2228, 2230, 2232, 2235, 2238, 2241, 2246, 2249, 2271, 2307], │ │ │ │ │ @@ -33802,15 +33804,15 @@ │ │ │ │ │ "613": 2199, │ │ │ │ │ "613172": 2186, │ │ │ │ │ "6134": 2220, │ │ │ │ │ "6136": 2219, │ │ │ │ │ "613616": 2202, │ │ │ │ │ "613897": 2230, │ │ │ │ │ "613898": 2207, │ │ │ │ │ - "614": [2199, 2232], │ │ │ │ │ + "614": [2193, 2199, 2232], │ │ │ │ │ "6140": 2219, │ │ │ │ │ "614215": 2218, │ │ │ │ │ "614264": 2207, │ │ │ │ │ "614266": 2199, │ │ │ │ │ "614523": 2191, │ │ │ │ │ "614533": 2197, │ │ │ │ │ "614581": [2184, 2195], │ │ │ │ │ @@ -33858,15 +33860,15 @@ │ │ │ │ │ "619104": 2207, │ │ │ │ │ "619366": 2207, │ │ │ │ │ "6194": 2232, │ │ │ │ │ "61941": 2257, │ │ │ │ │ "6199759194": 2199, │ │ │ │ │ "619976": [2185, 2191, 2197, 2199, 2202, 2204], │ │ │ │ │ "619993": 2235, │ │ │ │ │ - "62": [15, 17, 18, 19, 81, 187, 213, 242, 283, 763, 788, 817, 910, 2184, 2185, 2186, 2188, 2190, 2191, 2193, 2195, 2197, 2199, 2200, 2201, 2202, 2204, 2206, 2207, 2208, 2209, 2210, 2211, 2212, 2214, 2218, 2220, 2222, 2226, 2228, 2230, 2232, 2235, 2241, 2246, 2271], │ │ │ │ │ + "62": [15, 17, 18, 19, 81, 187, 213, 242, 283, 763, 788, 817, 910, 2184, 2185, 2186, 2188, 2190, 2191, 2193, 2195, 2197, 2199, 2200, 2201, 2202, 2204, 2205, 2206, 2207, 2208, 2209, 2210, 2211, 2212, 2214, 2218, 2220, 2222, 2226, 2228, 2230, 2232, 2235, 2241, 2246, 2271], │ │ │ │ │ "620": [16, 17, 18, 19, 2199, 2203, 2232, 2235, 2262, 2298], │ │ │ │ │ "620145": 2191, │ │ │ │ │ "62036035": [624, 1215], │ │ │ │ │ "620399": 2199, │ │ │ │ │ "620498": 2207, │ │ │ │ │ "6205": 2220, │ │ │ │ │ "620544": 2191, │ │ │ │ │ @@ -34033,15 +34035,15 @@ │ │ │ │ │ "640556": 2215, │ │ │ │ │ "6407": 2220, │ │ │ │ │ "640843": 2199, │ │ │ │ │ "640875": 2207, │ │ │ │ │ "640880": 2235, │ │ │ │ │ "640898": 2219, │ │ │ │ │ "640x480": 1457, │ │ │ │ │ - "641": [2185, 2199], │ │ │ │ │ + "641": 2199, │ │ │ │ │ "641184": 2186, │ │ │ │ │ "641360": 2199, │ │ │ │ │ "6415": 2238, │ │ │ │ │ "641602": 2230, │ │ │ │ │ "6418": 2220, │ │ │ │ │ "641817": 2216, │ │ │ │ │ "642": [2197, 2199], │ │ │ │ │ @@ -34286,15 +34288,15 @@ │ │ │ │ │ "669052": [2184, 2214], │ │ │ │ │ "669567": 2207, │ │ │ │ │ "669692": 2197, │ │ │ │ │ "6697": 2298, │ │ │ │ │ "669700": 2207, │ │ │ │ │ "669934": 2216, │ │ │ │ │ "67": [17, 19, 28, 29, 81, 219, 2184, 2185, 2186, 2188, 2191, 2193, 2195, 2197, 2199, 2200, 2201, 2202, 2204, 2205, 2207, 2208, 2209, 2210, 2211, 2212, 2214, 2218, 2220, 2222, 2226, 2228, 2230, 2231, 2232, 2235, 2241, 2246, 2271], │ │ │ │ │ - "670": 2199, │ │ │ │ │ + "670": [2193, 2199], │ │ │ │ │ "6700": 2220, │ │ │ │ │ "670047": 2186, │ │ │ │ │ "670153": 2197, │ │ │ │ │ "670213": [121, 696], │ │ │ │ │ "670284": 1334, │ │ │ │ │ "670477": 2217, │ │ │ │ │ "671": 2199, │ │ │ │ │ @@ -34754,15 +34756,15 @@ │ │ │ │ │ "723768": 2184, │ │ │ │ │ "723780": 2193, │ │ │ │ │ "7242": 2221, │ │ │ │ │ "724370": 2186, │ │ │ │ │ "7246": [182, 760], │ │ │ │ │ "724832": 2207, │ │ │ │ │ "724913": 2191, │ │ │ │ │ - "725": [16, 17, 18, 19, 2185, 2199, 2235], │ │ │ │ │ + "725": [16, 17, 18, 19, 2199, 2235], │ │ │ │ │ "725238": 15, │ │ │ │ │ "725411": 2214, │ │ │ │ │ "725974": 2191, │ │ │ │ │ "7261": 2221, │ │ │ │ │ "726280": 2199, │ │ │ │ │ "726645": 28, │ │ │ │ │ "727": [16, 17, 18, 19, 2199, 2235], │ │ │ │ │ @@ -34959,23 +34961,23 @@ │ │ │ │ │ "7511": 2222, │ │ │ │ │ "7512": 2221, │ │ │ │ │ "751208": 2207, │ │ │ │ │ "751328": 2195, │ │ │ │ │ "7516": 2221, │ │ │ │ │ "751694": 2207, │ │ │ │ │ "751976": 2214, │ │ │ │ │ + "752": 2185, │ │ │ │ │ "752102": 2207, │ │ │ │ │ "752239": 2207, │ │ │ │ │ "7523": 2221, │ │ │ │ │ "752332": 2186, │ │ │ │ │ "752441": 2207, │ │ │ │ │ "7528": 2222, │ │ │ │ │ "752861": 2195, │ │ │ │ │ "7529": 2221, │ │ │ │ │ - "753": 2193, │ │ │ │ │ "7534": 2221, │ │ │ │ │ "753444": 2207, │ │ │ │ │ "753606": 2199, │ │ │ │ │ "753611": 2207, │ │ │ │ │ "753623": 2191, │ │ │ │ │ "753747": 2207, │ │ │ │ │ "7539": 2221, │ │ │ │ │ @@ -35013,15 +35015,15 @@ │ │ │ │ │ "759104": 2185, │ │ │ │ │ "7592": 2221, │ │ │ │ │ "759328": 2199, │ │ │ │ │ "759606": 2199, │ │ │ │ │ "759644": 2222, │ │ │ │ │ "7599": 2228, │ │ │ │ │ "75th": [107, 629, 1164, 1221], │ │ │ │ │ - "76": [18, 190, 193, 766, 768, 1433, 2184, 2185, 2186, 2188, 2191, 2193, 2195, 2197, 2199, 2200, 2201, 2202, 2204, 2207, 2208, 2209, 2210, 2211, 2212, 2218, 2220, 2222, 2223, 2226, 2228, 2230, 2232, 2235, 2241, 2246, 2271], │ │ │ │ │ + "76": [18, 190, 193, 766, 768, 1433, 2184, 2185, 2186, 2188, 2191, 2195, 2197, 2199, 2200, 2201, 2202, 2204, 2207, 2208, 2209, 2210, 2211, 2212, 2218, 2220, 2222, 2223, 2226, 2228, 2230, 2232, 2235, 2241, 2246, 2271], │ │ │ │ │ "760": [32, 2298], │ │ │ │ │ "7601": 2221, │ │ │ │ │ "760109": 2195, │ │ │ │ │ "7606": 2221, │ │ │ │ │ "760643": 2199, │ │ │ │ │ "7609": 2221, │ │ │ │ │ "760970": 2207, │ │ │ │ │ @@ -35148,14 +35150,15 @@ │ │ │ │ │ "7777": 2222, │ │ │ │ │ "7778": 2222, │ │ │ │ │ "7780": 2222, │ │ │ │ │ "778425": 2210, │ │ │ │ │ "778461": 2217, │ │ │ │ │ "7785": 2222, │ │ │ │ │ "778852": 2195, │ │ │ │ │ + "779": 2193, │ │ │ │ │ "779064": 2207, │ │ │ │ │ "7791": 2229, │ │ │ │ │ "7792": 2222, │ │ │ │ │ "779280": 2186, │ │ │ │ │ "7793": 2222, │ │ │ │ │ "779333": 2195, │ │ │ │ │ "7794": 2222, │ │ │ │ │ @@ -35209,15 +35212,15 @@ │ │ │ │ │ "785103": 2191, │ │ │ │ │ "785359": 2230, │ │ │ │ │ "7856": 2226, │ │ │ │ │ "7857": 2222, │ │ │ │ │ "7858": 2222, │ │ │ │ │ "785939": 2211, │ │ │ │ │ "785980": 2195, │ │ │ │ │ - "786": 2185, │ │ │ │ │ + "786": [2185, 2193], │ │ │ │ │ "7860": 2223, │ │ │ │ │ "786076": [242, 817], │ │ │ │ │ "786173": 2199, │ │ │ │ │ "7864": 2222, │ │ │ │ │ "786476": 2195, │ │ │ │ │ "7866": 2222, │ │ │ │ │ "786796": 1318, │ │ │ │ │ @@ -35593,14 +35596,15 @@ │ │ │ │ │ "838258": 2207, │ │ │ │ │ "838665": 2207, │ │ │ │ │ "8387": 2222, │ │ │ │ │ "839002": 2207, │ │ │ │ │ "84": [31, 228, 2184, 2185, 2186, 2188, 2191, 2195, 2197, 2199, 2200, 2201, 2202, 2204, 2207, 2208, 2209, 2210, 2211, 2212, 2218, 2222, 2223, 2226, 2228, 2230, 2232, 2235, 2241, 2246], │ │ │ │ │ "8400": 2222, │ │ │ │ │ "840123": 2215, │ │ │ │ │ + "840200": 2228, │ │ │ │ │ "840255": 2228, │ │ │ │ │ "840449": 15, │ │ │ │ │ "840607": 2186, │ │ │ │ │ "840870": 2197, │ │ │ │ │ "840938": 2207, │ │ │ │ │ "8409608": 2205, │ │ │ │ │ "841": 2193, │ │ │ │ │ @@ -35618,14 +35622,15 @@ │ │ │ │ │ "8428": 2223, │ │ │ │ │ "8430": 2222, │ │ │ │ │ "843157": 2184, │ │ │ │ │ "8435": [2199, 2294], │ │ │ │ │ "843575": 2207, │ │ │ │ │ "8437": 2222, │ │ │ │ │ "843767": 2207, │ │ │ │ │ + "843776": 2228, │ │ │ │ │ "843822": 2207, │ │ │ │ │ "844115": 2207, │ │ │ │ │ "844274": 15, │ │ │ │ │ "8444": 2222, │ │ │ │ │ "8445": 2225, │ │ │ │ │ "844569": 2191, │ │ │ │ │ "844885": [15, 2185, 2186, 2191, 2197, 2199, 2202, 2215, 2216, 2219, 2235, 2241, 2264], │ │ │ │ │ @@ -35818,15 +35823,14 @@ │ │ │ │ │ "8685": 2228, │ │ │ │ │ "868579": 2207, │ │ │ │ │ "868584": 2197, │ │ │ │ │ "8687": 2223, │ │ │ │ │ "8688": 2225, │ │ │ │ │ "8689": 2223, │ │ │ │ │ "868951": 2207, │ │ │ │ │ - "869": 2193, │ │ │ │ │ "869081": 2199, │ │ │ │ │ "869127": 2230, │ │ │ │ │ "869226": 2186, │ │ │ │ │ "869339": 2207, │ │ │ │ │ "869551": 2191, │ │ │ │ │ "8697": 2224, │ │ │ │ │ "87": [15, 18, 133, 196, 208, 242, 283, 586, 708, 771, 782, 817, 910, 2184, 2185, 2186, 2188, 2191, 2195, 2197, 2199, 2200, 2201, 2202, 2204, 2207, 2208, 2209, 2210, 2211, 2212, 2214, 2218, 2222, 2223, 2226, 2228, 2230, 2232, 2235, 2241, 2246], │ │ │ │ │ @@ -36109,15 +36113,15 @@ │ │ │ │ │ "9093": 2271, │ │ │ │ │ "909316": 2230, │ │ │ │ │ "9094": 2225, │ │ │ │ │ "909500": 2195, │ │ │ │ │ "9096": 2225, │ │ │ │ │ "909872": 2185, │ │ │ │ │ "9099": 2225, │ │ │ │ │ - "91": [15, 182, 760, 2184, 2185, 2186, 2188, 2191, 2195, 2197, 2199, 2200, 2201, 2202, 2203, 2204, 2207, 2208, 2209, 2210, 2211, 2218, 2220, 2222, 2226, 2228, 2230, 2232, 2235, 2241, 2246, 2294, 2298], │ │ │ │ │ + "91": [15, 182, 760, 2184, 2185, 2186, 2188, 2191, 2193, 2195, 2197, 2199, 2200, 2201, 2202, 2203, 2204, 2207, 2208, 2209, 2210, 2211, 2218, 2220, 2222, 2226, 2228, 2230, 2232, 2235, 2241, 2246, 2294, 2298], │ │ │ │ │ "9100": 2225, │ │ │ │ │ "910199": 2199, │ │ │ │ │ "910400": 28, │ │ │ │ │ "911055": 2195, │ │ │ │ │ "911128": 2207, │ │ │ │ │ "911385": 2207, │ │ │ │ │ "9114": 2232, │ │ │ │ │ @@ -36222,15 +36226,15 @@ │ │ │ │ │ "9247": 2225, │ │ │ │ │ "924868": 2230, │ │ │ │ │ "9250": [24, 25, 28, 29, 32, 2225], │ │ │ │ │ "925372": 2215, │ │ │ │ │ "9255": 2225, │ │ │ │ │ "925544": 2207, │ │ │ │ │ "9258": 2225, │ │ │ │ │ - "926": [2197, 2231], │ │ │ │ │ + "926": [2193, 2197, 2231], │ │ │ │ │ "926075": 2197, │ │ │ │ │ "926087": 2218, │ │ │ │ │ "926089": 2216, │ │ │ │ │ "9263": 2230, │ │ │ │ │ "9266": 2228, │ │ │ │ │ "926790": 2199, │ │ │ │ │ "927": 2205, │ │ │ │ │ @@ -36291,15 +36295,14 @@ │ │ │ │ │ "9352": 2225, │ │ │ │ │ "935220": 1317, │ │ │ │ │ "935834": 2229, │ │ │ │ │ "935890": 2207, │ │ │ │ │ "936077": 2186, │ │ │ │ │ "936154": 2230, │ │ │ │ │ "936856": 15, │ │ │ │ │ - "937": 2193, │ │ │ │ │ "937266": 2207, │ │ │ │ │ "937326": 2207, │ │ │ │ │ "937976": 2207, │ │ │ │ │ "938153": 2235, │ │ │ │ │ "9382": 2228, │ │ │ │ │ "938225": 2191, │ │ │ │ │ "9386": 2225, │ │ │ │ │ @@ -36638,15 +36641,15 @@ │ │ │ │ │ "988693": [155, 156, 730, 731], │ │ │ │ │ "9890": 2226, │ │ │ │ │ "9894": 2228, │ │ │ │ │ "9895": 2235, │ │ │ │ │ "989634": 2204, │ │ │ │ │ "989726": 2207, │ │ │ │ │ "989859": 2185, │ │ │ │ │ - "99": [15, 22, 145, 163, 284, 532, 741, 912, 1447, 1456, 2184, 2185, 2186, 2188, 2191, 2195, 2197, 2199, 2200, 2201, 2202, 2204, 2207, 2208, 2209, 2210, 2211, 2218, 2222, 2226, 2230, 2232, 2235, 2246, 2294, 2307], │ │ │ │ │ + "99": [15, 22, 145, 163, 284, 532, 741, 912, 1447, 1456, 2184, 2185, 2186, 2188, 2191, 2193, 2195, 2197, 2199, 2200, 2201, 2202, 2204, 2207, 2208, 2209, 2210, 2211, 2218, 2222, 2226, 2230, 2232, 2235, 2246, 2294, 2307], │ │ │ │ │ "990": [2199, 2230], │ │ │ │ │ "9900": 2199, │ │ │ │ │ "990000": 1894, │ │ │ │ │ "990317": 2199, │ │ │ │ │ "990340": 2207, │ │ │ │ │ "9905": 2226, │ │ │ │ │ "990582": [2184, 2195, 2214], │ │ │ │ │ @@ -43757,15 +43760,15 @@ │ │ │ │ │ "seri": [2, 3, 7, 8, 10, 12, 13, 14, 15, 18, 21, 24, 25, 26, 29, 32, 33, 34, 35, 41, 45, 46, 51, 52, 53, 56, 57, 61, 62, 63, 65, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 79, 80, 81, 82, 83, 84, 85, 87, 88, 89, 90, 91, 92, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 113, 114, 115, 116, 117, 118, 119, 121, 122, 123, 124, 125, 126, 127, 128, 129, 132, 134, 135, 137, 138, 139, 140, 141, 142, 143, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 168, 169, 170, 171, 172, 173, 174, 175, 177, 178, 180, 181, 182, 183, 186, 190, 191, 193, 194, 195, 196, 198, 199, 200, 201, 202, 204, 205, 206, 207, 208, 209, 210, 212, 213, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 230, 231, 232, 233, 234, 240, 241, 242, 243, 244, 245, 249, 252, 256, 258, 261, 271, 273, 275, 276, 277, 278, 279, 280, 281, 283, 284, 285, 288, 289, 290, 291, 292, 293, 294, 295, 296, 299, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 321, 323, 324, 325, 328, 329, 331, 332, 333, 342, 343, 344, 345, 346, 351, 355, 356, 357, 359, 360, 362, 369, 373, 376, 377, 378, 385, 392, 401, 402, 403, 405, 406, 408, 411, 412, 414, 416, 417, 419, 420, 423, 424, 427, 428, 431, 432, 433, 435, 436, 439, 441, 442, 443, 444, 465, 484, 489, 503, 519, 540, 547, 548, 549, 568, 914, 931, 940, 942, 943, 945, 946, 947, 948, 949, 950, 952, 1027, 1028, 1029, 1030, 1031, 1034, 1035, 1040, 1052, 1060, 1064, 1069, 1071, 1072, 1078, 1081, 1084, 1088, 1093, 1097, 1101, 1104, 1110, 1111, 1112, 1113, 1115, 1117, 1118, 1120, 1122, 1141, 1143, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1199, 1200, 1201, 1202, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1345, 1349, 1350, 1352, 1355, 1358, 1360, 1377, 1382, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1394, 1395, 1396, 1397, 1411, 1430, 1436, 1441, 1442, 1446, 1447, 1448, 1449, 1450, 1456, 1457, 1458, 1460, 1463, 1466, 1467, 1476, 1479, 1488, 1490, 1493, 1494, 1496, 1498, 1499, 1500, 2163, 2165, 2167, 2171, 2172, 2173, 2174, 2179, 2183, 2186, 2187, 2190, 2192, 2193, 2194, 2196, 2197, 2198, 2199, 2201, 2202, 2203, 2204, 2205, 2206, 2207, 2209, 2211, 2212, 2213, 2214, 2215, 2216, 2217, 2218, 2219, 2220, 2221, 2223, 2224, 2225, 2226, 2227, 2229, 2230, 2231, 2233, 2234, 2236, 2237, 2239, 2240, 2242, 2243, 2245, 2247, 2248, 2250, 2251, 2253, 2254, 2255, 2256, 2258, 2259, 2260, 2262, 2263, 2264, 2266, 2267, 2269, 2272, 2273, 2274, 2275, 2276, 2277, 2278, 2279, 2280, 2282, 2284, 2285, 2286, 2287, 2288, 2290, 2291, 2293, 2295, 2296, 2297, 2299, 2300, 2301, 2303, 2304, 2306, 2308, 2309], │ │ │ │ │ "serial": [9, 10, 16, 253, 265, 341, 352, 886, 895, 1431, 1474, 1478, 1479, 2172, 2199, 2202, 2215, 2218, 2226, 2228, 2230, 2231, 2235, 2238, 2239, 2261, 2271, 2285, 2289, 2298, 2302], │ │ │ │ │ "serialis": [258, 889, 2225, 2231], │ │ │ │ │ "serializ": 2199, │ │ │ │ │ "series1": 2185, │ │ │ │ │ "series2": [2185, 2211], │ │ │ │ │ "series_gen": 2194, │ │ │ │ │ - "series_gener": 2194, │ │ │ │ │ + "series_gener": [2193, 2194], │ │ │ │ │ "series_minut": 2210, │ │ │ │ │ "series_monthli": 2210, │ │ │ │ │ "series_second": 2210, │ │ │ │ │ "seriesformatt": [1345, 1391, 1488, 1490, 2202], │ │ │ │ │ "seriesgroupbi": [186, 205, 223, 709, 762, 778, 798, 1147, 1150, 1151, 1157, 1160, 1161, 1162, 1163, 1165, 1166, 1170, 1171, 1176, 1178, 1180, 1181, 1185, 1186, 1188, 1189, 1195, 1196, 1197, 1199, 1200, 1204, 1205, 1268, 1273, 1277, 1278, 1279, 1284, 1287, 1288, 1292, 1293, 2172, 2195, 2220, 2221, 2228, 2232, 2238, 2241, 2246, 2249, 2265, 2266, 2267, 2269, 2271, 2275, 2276, 2277, 2278, 2284, 2286, 2287, 2288, 2289, 2297, 2299, 2302, 2304, 2307, 2308], │ │ │ │ │ "serif": 2207, │ │ │ │ │ "seriou": 2, │ │ │ │ │ @@ -44988,15 +44991,15 @@ │ │ │ │ │ "tzfile": [286, 329, 330, 331, 684, 685, 686, 953, 956, 972, 1013, 1014, 2210, 2221], │ │ │ │ │ "tzinfo": [277, 278, 286, 324, 329, 330, 331, 334, 575, 679, 684, 685, 686, 903, 904, 953, 983, 995, 1001, 1004, 1012, 1344, 2210, 2221, 2222, 2238, 2239, 2241, 2283, 2294, 2303], │ │ │ │ │ "tzlocal": [2232, 2246, 2298], │ │ │ │ │ "tzname": 2294, │ │ │ │ │ "tzoffset": 2222, │ │ │ │ │ "tzser": 575, │ │ │ │ │ "tzutc": [2210, 2246], │ │ │ │ │ - "u": [1, 3, 4, 5, 7, 13, 17, 18, 31, 203, 258, 287, 311, 330, 331, 532, 663, 664, 685, 686, 889, 905, 909, 916, 917, 918, 920, 921, 927, 930, 938, 939, 941, 946, 953, 954, 957, 995, 1017, 1085, 1087, 1088, 1204, 1476, 1482, 1483, 1484, 1498, 1500, 2163, 2184, 2185, 2186, 2193, 2194, 2195, 2199, 2203, 2207, 2208, 2209, 2210, 2222, 2226, 2228, 2230, 2235, 2238, 2241, 2246, 2249, 2294, 2298, 2302, 2307], │ │ │ │ │ + "u": [1, 3, 4, 5, 7, 13, 17, 18, 31, 203, 258, 287, 311, 330, 331, 532, 663, 664, 685, 686, 889, 905, 909, 916, 917, 918, 920, 921, 927, 930, 938, 939, 941, 946, 953, 954, 957, 995, 1017, 1085, 1087, 1088, 1204, 1476, 1482, 1483, 1484, 1498, 1500, 2163, 2184, 2185, 2186, 2193, 2194, 2195, 2199, 2203, 2205, 2207, 2208, 2209, 2210, 2222, 2226, 2228, 2230, 2235, 2238, 2241, 2246, 2249, 2294, 2298, 2302, 2307], │ │ │ │ │ "u1": [131, 1118, 2185, 2186, 2199], │ │ │ │ │ "u4": 2197, │ │ │ │ │ "u5": 2197, │ │ │ │ │ "u8": 2186, │ │ │ │ │ "ubuntu": 5, │ │ │ │ │ "udf": [72, 73, 77, 273, 581, 582, 586, 900, 1148, 1149, 1152, 1168, 1203, 1207, 1208, 1211, 1225, 1264, 1269, 1270, 1304, 1321, 2195, 2196, 2294], │ │ │ │ │ "ufunc": [10, 586, 808, 1031, 2185, 2186, 2191, 2206, 2213, 2219, 2221, 2232, 2246, 2265, 2277, 2281, 2289, 2293, 2294, 2298, 2307], │ │ │ ├── ./usr/share/doc/python-pandas-doc/html/user_guide/advanced.html │ │ │ │ @@ -1856,25 +1856,25 @@ │ │ │ │ In [141]: indexer = np.arange(10000) │ │ │ │ │ │ │ │ In [142]: random.shuffle(indexer) │ │ │ │ │ │ │ │ In [143]: %timeit arr[indexer] │ │ │ │ .....: %timeit arr.take(indexer, axis=0) │ │ │ │ .....: │ │ │ │ -1.67 ms +- 355 us per loop (mean +- std. dev. of 7 runs, 1,000 loops each) │ │ │ │ -464 us +- 11.4 us per loop (mean +- std. dev. of 7 runs, 1,000 loops each) │ │ │ │ +2.39 ms +- 498 us per loop (mean +- std. dev. of 7 runs, 1,000 loops each) │ │ │ │ +752 us +- 122 us per loop (mean +- std. dev. of 7 runs, 1,000 loops each) │ │ │ │ │ │ │ │ │ │ │ │
In [144]: ser = pd.Series(arr[:, 0])
│ │ │ │  
│ │ │ │  In [145]: %timeit ser.iloc[indexer]
│ │ │ │     .....: %timeit ser.take(indexer)
│ │ │ │     .....: 
│ │ │ │ -725 us +- 52 us per loop (mean +- std. dev. of 7 runs, 1,000 loops each)
│ │ │ │ -641 us +- 14.3 us per loop (mean +- std. dev. of 7 runs, 1,000 loops each)
│ │ │ │ +1.26 ms +- 298 us per loop (mean +- std. dev. of 7 runs, 1,000 loops each)
│ │ │ │ +1.29 ms +- 168 us per loop (mean +- std. dev. of 7 runs, 1,000 loops each)
│ │ │ │  
│ │ │ │
│ │ │ │ │ │ │ │
│ │ │ │

Index types#

│ │ │ │

We have discussed MultiIndex in the previous sections pretty extensively. │ │ │ │ Documentation about DatetimeIndex and PeriodIndex are shown here, │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -1241,23 +1241,23 @@ │ │ │ │ │ In [141]: indexer = np.arange(10000) │ │ │ │ │ │ │ │ │ │ In [142]: random.shuffle(indexer) │ │ │ │ │ │ │ │ │ │ In [143]: %timeit arr[indexer] │ │ │ │ │ .....: %timeit arr.take(indexer, axis=0) │ │ │ │ │ .....: │ │ │ │ │ -1.67 ms +- 355 us per loop (mean +- std. dev. of 7 runs, 1,000 loops each) │ │ │ │ │ -464 us +- 11.4 us per loop (mean +- std. dev. of 7 runs, 1,000 loops each) │ │ │ │ │ +2.39 ms +- 498 us per loop (mean +- std. dev. of 7 runs, 1,000 loops each) │ │ │ │ │ +752 us +- 122 us per loop (mean +- std. dev. of 7 runs, 1,000 loops each) │ │ │ │ │ In [144]: ser = pd.Series(arr[:, 0]) │ │ │ │ │ │ │ │ │ │ In [145]: %timeit ser.iloc[indexer] │ │ │ │ │ .....: %timeit ser.take(indexer) │ │ │ │ │ .....: │ │ │ │ │ -725 us +- 52 us per loop (mean +- std. dev. of 7 runs, 1,000 loops each) │ │ │ │ │ -641 us +- 14.3 us per loop (mean +- std. dev. of 7 runs, 1,000 loops each) │ │ │ │ │ +1.26 ms +- 298 us per loop (mean +- std. dev. of 7 runs, 1,000 loops each) │ │ │ │ │ +1.29 ms +- 168 us per loop (mean +- std. dev. of 7 runs, 1,000 loops each) │ │ │ │ │ ********** IInnddeexx ttyyppeess_## ********** │ │ │ │ │ We have discussed MultiIndex in the previous sections pretty extensively. │ │ │ │ │ Documentation about DatetimeIndex and PeriodIndex are shown _h_e_r_e, and │ │ │ │ │ documentation about TimedeltaIndex is found _h_e_r_e. │ │ │ │ │ In the following sub-sections we will highlight some other index types. │ │ │ │ │ ******** CCaatteeggoorriiccaallIInnddeexx_## ******** │ │ │ │ │ _C_a_t_e_g_o_r_i_c_a_l_I_n_d_e_x is a type of index that is useful for supporting indexing with │ │ │ ├── ./usr/share/doc/python-pandas-doc/html/user_guide/enhancingperf.html │ │ │ │ @@ -601,31 +601,31 @@ │ │ │ │ ...: s += f(a + i * dx) │ │ │ │ ...: return s * dx │ │ │ │ ...: │ │ │ │ │ │ │ │ │ │ │ │

We achieve our result by using DataFrame.apply() (row-wise):

│ │ │ │
In [5]: %timeit df.apply(lambda x: integrate_f(x["a"], x["b"], x["N"]), axis=1)
│ │ │ │ -324 ms +- 2.25 ms per loop (mean +- std. dev. of 7 runs, 1 loop each)
│ │ │ │ +452 ms +- 42.2 ms per loop (mean +- std. dev. of 7 runs, 1 loop each)
│ │ │ │  
│ │ │ │
│ │ │ │

Let’s take a look and see where the time is spent during this operation │ │ │ │ using the prun ipython magic function:

│ │ │ │
# most time consuming 4 calls
│ │ │ │  In [6]: %prun -l 4 df.apply(lambda x: integrate_f(x["a"], x["b"], x["N"]), axis=1)  # noqa E999
│ │ │ │ -         605951 function calls (605933 primitive calls) in 0.869 seconds
│ │ │ │ +         605951 function calls (605933 primitive calls) in 0.926 seconds
│ │ │ │  
│ │ │ │     Ordered by: internal time
│ │ │ │     List reduced from 159 to 4 due to restriction <4>
│ │ │ │  
│ │ │ │     ncalls  tottime  percall  cumtime  percall filename:lineno(function)
│ │ │ │ -     1000    0.502    0.001    0.753    0.001 <ipython-input-4-c2a74e076cf0>:1(integrate_f)
│ │ │ │ -   552423    0.251    0.000    0.251    0.000 <ipython-input-3-c138bdd570e3>:1(f)
│ │ │ │ -     3000    0.019    0.000    0.072    0.000 series.py:1095(__getitem__)
│ │ │ │ -     3000    0.013    0.000    0.033    0.000 series.py:1220(_get_value)
│ │ │ │ +     1000    0.520    0.001    0.779    0.001 <ipython-input-4-c2a74e076cf0>:1(integrate_f)
│ │ │ │ +   552423    0.259    0.000    0.259    0.000 <ipython-input-3-c138bdd570e3>:1(f)
│ │ │ │ +     3000    0.021    0.000    0.084    0.000 series.py:1095(__getitem__)
│ │ │ │ +     1001    0.017    0.000    0.035    0.000 apply.py:1247(series_generator)
│ │ │ │  
│ │ │ │
│ │ │ │

By far the majority of time is spend inside either integrate_f or f, │ │ │ │ hence we’ll concentrate our efforts cythonizing these two functions.

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

Plain Cython#

│ │ │ │ @@ -643,15 +643,15 @@ │ │ │ │ ...: for i in range(N): │ │ │ │ ...: s += f_plain(a + i * dx) │ │ │ │ ...: return s * dx │ │ │ │ ...: │ │ │ │ │ │ │ │ │ │ │ │
In [9]: %timeit df.apply(lambda x: integrate_f_plain(x["a"], x["b"], x["N"]), axis=1)
│ │ │ │ -294 ms +- 2.5 ms per loop (mean +- std. dev. of 7 runs, 1 loop each)
│ │ │ │ +322 ms +- 2.34 ms per loop (mean +- std. dev. of 7 runs, 1 loop each)
│ │ │ │  
│ │ │ │
│ │ │ │

This has improved the performance compared to the pure Python approach by one-third.

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

Declaring C types#

│ │ │ │

We can annotate the function variables and return types as well as use cdef │ │ │ │ @@ -667,36 +667,36 @@ │ │ │ │ ....: for i in range(N): │ │ │ │ ....: s += f_typed(a + i * dx) │ │ │ │ ....: return s * dx │ │ │ │ ....: │ │ │ │ │ │ │ │ │ │ │ │

In [11]: %timeit df.apply(lambda x: integrate_f_typed(x["a"], x["b"], x["N"]), axis=1)
│ │ │ │ -45.7 ms +- 578 us per loop (mean +- std. dev. of 7 runs, 10 loops each)
│ │ │ │ +51.1 ms +- 1.91 ms per loop (mean +- std. dev. of 7 runs, 10 loops each)
│ │ │ │  
│ │ │ │
│ │ │ │

Annotating the functions with C types yields an over ten times performance improvement compared to │ │ │ │ the original Python implementation.

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

Using ndarray#

│ │ │ │

When re-profiling, time is spent creating a Series from each row, and calling __getitem__ from both │ │ │ │ the index and the series (three times for each row). These Python function calls are expensive and │ │ │ │ can be improved by passing an np.ndarray.

│ │ │ │
In [12]: %prun -l 4 df.apply(lambda x: integrate_f_typed(x["a"], x["b"], x["N"]), axis=1)
│ │ │ │ -         52528 function calls (52510 primitive calls) in 0.105 seconds
│ │ │ │ +         52528 function calls (52510 primitive calls) in 0.120 seconds
│ │ │ │  
│ │ │ │     Ordered by: internal time
│ │ │ │     List reduced from 157 to 4 due to restriction <4>
│ │ │ │  
│ │ │ │     ncalls  tottime  percall  cumtime  percall filename:lineno(function)
│ │ │ │ -     3000    0.017    0.000    0.065    0.000 series.py:1095(__getitem__)
│ │ │ │ -     3000    0.011    0.000    0.029    0.000 series.py:1220(_get_value)
│ │ │ │ -     3000    0.010    0.000    0.011    0.000 base.py:3777(get_loc)
│ │ │ │ -    16098    0.010    0.000    0.013    0.000 {built-in method builtins.isinstance}
│ │ │ │ +     3000    0.019    0.000    0.072    0.000 series.py:1095(__getitem__)
│ │ │ │ +     3000    0.013    0.000    0.033    0.000 series.py:1220(_get_value)
│ │ │ │ +     3000    0.012    0.000    0.013    0.000 base.py:3777(get_loc)
│ │ │ │ +    16098    0.011    0.000    0.015    0.000 {built-in method builtins.isinstance}
│ │ │ │  
│ │ │ │
│ │ │ │
In [13]: %%cython
│ │ │ │     ....: cimport numpy as np
│ │ │ │     ....: import numpy as np
│ │ │ │     ....: cdef double f_typed(double x) except? -2:
│ │ │ │     ....:     return x * (x - 1)
│ │ │ │ @@ -731,15 +731,15 @@
│ │ │ │  
│ │ │ │

This implementation creates an array of zeros and inserts the result │ │ │ │ of integrate_f_typed applied over each row. Looping over an ndarray is faster │ │ │ │ in Cython than looping over a Series object.

│ │ │ │

Since apply_integrate_f is typed to accept an np.ndarray, Series.to_numpy() │ │ │ │ calls are needed to utilize this function.

│ │ │ │
In [14]: %timeit apply_integrate_f(df["a"].to_numpy(), df["b"].to_numpy(), df["N"].to_numpy())
│ │ │ │ -5.76 ms +- 16.1 us per loop (mean +- std. dev. of 7 runs, 100 loops each)
│ │ │ │ +5.8 ms +- 19.6 us per loop (mean +- std. dev. of 7 runs, 100 loops each)
│ │ │ │  
│ │ │ │
│ │ │ │

Performance has improved from the prior implementation by almost ten times.

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

Disabling compiler directives#

│ │ │ │

The majority of the time is now spent in apply_integrate_f. Disabling Cython’s boundscheck │ │ │ │ @@ -748,16 +748,16 @@ │ │ │ │ 78 function calls in 0.007 seconds │ │ │ │ │ │ │ │ Ordered by: internal time │ │ │ │ List reduced from 21 to 4 due to restriction <4> │ │ │ │ │ │ │ │ ncalls tottime percall cumtime percall filename:lineno(function) │ │ │ │ 1 0.006 0.006 0.006 0.006 <string>:1(<module>) │ │ │ │ - 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects} │ │ │ │ 1 0.000 0.000 0.006 0.006 {built-in method builtins.exec} │ │ │ │ + 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects} │ │ │ │ 3 0.000 0.000 0.000 0.000 frame.py:4062(__getitem__) │ │ │ │ │ │ │ │ │ │ │ │

In [16]: %%cython
│ │ │ │     ....: cimport cython
│ │ │ │     ....: cimport numpy as np
│ │ │ │     ....: import numpy as np
│ │ │ │ @@ -1189,19 +1189,19 @@
│ │ │ │  compared to standard Python syntax for large DataFrame. This engine requires the
│ │ │ │  optional dependency numexpr to be installed.

│ │ │ │

The 'python' engine is generally not useful except for testing │ │ │ │ other evaluation engines against it. You will achieve no performance │ │ │ │ benefits using eval() with engine='python' and may │ │ │ │ incur a performance hit.

│ │ │ │
In [40]: %timeit df1 + df2 + df3 + df4
│ │ │ │ -60.6 ms +- 363 us per loop (mean +- std. dev. of 7 runs, 10 loops each)
│ │ │ │ +37.9 ms +- 786 us per loop (mean +- std. dev. of 7 runs, 10 loops each)
│ │ │ │  
│ │ │ │
│ │ │ │
In [41]: %timeit pd.eval("df1 + df2 + df3 + df4", engine="python")
│ │ │ │ -62.3 ms +- 63.3 us per loop (mean +- std. dev. of 7 runs, 10 loops each)
│ │ │ │ +40.4 ms +- 670 us per loop (mean +- std. dev. of 7 runs, 10 loops each)
│ │ │ │  
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │

The DataFrame.eval() method#

│ │ │ │

In addition to the top level pandas.eval() function you can also │ │ │ │ evaluate an expression in the “context” of a DataFrame.

│ │ │ │ @@ -1316,39 +1316,39 @@ │ │ │ │
In [58]: nrows, ncols = 20000, 100
│ │ │ │  
│ │ │ │  In [59]: df1, df2, df3, df4 = [pd.DataFrame(np.random.randn(nrows, ncols)) for _ in range(4)]
│ │ │ │  
│ │ │ │
│ │ │ │

DataFrame arithmetic:

│ │ │ │
In [60]: %timeit df1 + df2 + df3 + df4
│ │ │ │ -60.7 ms +- 291 us per loop (mean +- std. dev. of 7 runs, 10 loops each)
│ │ │ │ +37.7 ms +- 614 us per loop (mean +- std. dev. of 7 runs, 10 loops each)
│ │ │ │  
│ │ │ │
│ │ │ │
In [61]: %timeit pd.eval("df1 + df2 + df3 + df4")
│ │ │ │ -29.1 ms +- 220 us per loop (mean +- std. dev. of 7 runs, 10 loops each)
│ │ │ │ +24.4 ms +- 328 us per loop (mean +- std. dev. of 7 runs, 10 loops each)
│ │ │ │  
│ │ │ │
│ │ │ │

DataFrame comparison:

│ │ │ │
In [62]: %timeit (df1 > 0) & (df2 > 0) & (df3 > 0) & (df4 > 0)
│ │ │ │ -55.6 ms +- 937 us per loop (mean +- std. dev. of 7 runs, 10 loops each)
│ │ │ │ +61.8 ms +- 2.23 ms per loop (mean +- std. dev. of 7 runs, 10 loops each)
│ │ │ │  
│ │ │ │
│ │ │ │
In [63]: %timeit pd.eval("(df1 > 0) & (df2 > 0) & (df3 > 0) & (df4 > 0)")
│ │ │ │ -26.1 ms +- 572 us per loop (mean +- std. dev. of 7 runs, 10 loops each)
│ │ │ │ +45.2 ms +- 1.1 ms per loop (mean +- std. dev. of 7 runs, 10 loops each)
│ │ │ │  
│ │ │ │
│ │ │ │

DataFrame arithmetic with unaligned axes.

│ │ │ │
In [64]: s = pd.Series(np.random.randn(50))
│ │ │ │  
│ │ │ │  In [65]: %timeit df1 + df2 + df3 + df4 + s
│ │ │ │ -106 ms +- 1.53 ms per loop (mean +- std. dev. of 7 runs, 10 loops each)
│ │ │ │ +68 ms +- 465 us per loop (mean +- std. dev. of 7 runs, 10 loops each)
│ │ │ │  
│ │ │ │
│ │ │ │
In [66]: %timeit pd.eval("df1 + df2 + df3 + df4 + s")
│ │ │ │ -32.3 ms +- 270 us per loop (mean +- std. dev. of 7 runs, 10 loops each)
│ │ │ │ +29.4 ms +- 1.99 ms per loop (mean +- std. dev. of 7 runs, 10 loops each)
│ │ │ │  
│ │ │ │
│ │ │ │
│ │ │ │

Note

│ │ │ │

Operations such as

│ │ │ │
1 and 2  # would parse to 1 & 2, but should evaluate to 2
│ │ │ │  3 or 4  # would parse to 3 | 4, but should evaluate to 3
│ │ │ │ ├── html2text {}
│ │ │ │ │ @@ -106,32 +106,32 @@
│ │ │ │ │     ...:     dx = (b - a) / N
│ │ │ │ │     ...:     for i in range(N):
│ │ │ │ │     ...:         s += f(a + i * dx)
│ │ │ │ │     ...:     return s * dx
│ │ │ │ │     ...:
│ │ │ │ │  We achieve our result by using _D_a_t_a_F_r_a_m_e_._a_p_p_l_y_(_) (row-wise):
│ │ │ │ │  In [5]: %timeit df.apply(lambda x: integrate_f(x["a"], x["b"], x["N"]), axis=1)
│ │ │ │ │ -324 ms +- 2.25 ms per loop (mean +- std. dev. of 7 runs, 1 loop each)
│ │ │ │ │ +452 ms +- 42.2 ms per loop (mean +- std. dev. of 7 runs, 1 loop each)
│ │ │ │ │  Let’s take a look and see where the time is spent during this operation using
│ │ │ │ │  the _p_r_u_n_ _i_p_y_t_h_o_n_ _m_a_g_i_c_ _f_u_n_c_t_i_o_n:
│ │ │ │ │  # most time consuming 4 calls
│ │ │ │ │  In [6]: %prun -l 4 df.apply(lambda x: integrate_f(x["a"], x["b"], x["N"]),
│ │ │ │ │  axis=1)  # noqa E999
│ │ │ │ │ -         605951 function calls (605933 primitive calls) in 0.869 seconds
│ │ │ │ │ +         605951 function calls (605933 primitive calls) in 0.926 seconds
│ │ │ │ │  
│ │ │ │ │     Ordered by: internal time
│ │ │ │ │     List reduced from 159 to 4 due to restriction <4>
│ │ │ │ │  
│ │ │ │ │     ncalls  tottime  percall  cumtime  percall filename:lineno(function)
│ │ │ │ │ -     1000    0.502    0.001    0.753    0.001 :1
│ │ │ │ │ +     1000    0.520    0.001    0.779    0.001 :1
│ │ │ │ │  (integrate_f)
│ │ │ │ │ -   552423    0.251    0.000    0.251    0.000 :1
│ │ │ │ │ +   552423    0.259    0.000    0.259    0.000 :1
│ │ │ │ │  (f)
│ │ │ │ │ -     3000    0.019    0.000    0.072    0.000 series.py:1095(__getitem__)
│ │ │ │ │ -     3000    0.013    0.000    0.033    0.000 series.py:1220(_get_value)
│ │ │ │ │ +     3000    0.021    0.000    0.084    0.000 series.py:1095(__getitem__)
│ │ │ │ │ +     1001    0.017    0.000    0.035    0.000 apply.py:1247(series_generator)
│ │ │ │ │  By far the majority of time is spend inside either integrate_f or f, hence
│ │ │ │ │  we’ll concentrate our efforts cythonizing these two functions.
│ │ │ │ │  ******** PPllaaiinn CCyytthhoonn_## ********
│ │ │ │ │  First we’re going to need to import the Cython magic function to IPython:
│ │ │ │ │  In [7]: %load_ext Cython
│ │ │ │ │  Now, let’s simply copy our functions over to Cython:
│ │ │ │ │  In [8]: %%cython
│ │ │ │ │ @@ -142,15 +142,15 @@
│ │ │ │ │     ...:     dx = (b - a) / N
│ │ │ │ │     ...:     for i in range(N):
│ │ │ │ │     ...:         s += f_plain(a + i * dx)
│ │ │ │ │     ...:     return s * dx
│ │ │ │ │     ...:
│ │ │ │ │  In [9]: %timeit df.apply(lambda x: integrate_f_plain(x["a"], x["b"], x["N"]),
│ │ │ │ │  axis=1)
│ │ │ │ │ -294 ms +- 2.5 ms per loop (mean +- std. dev. of 7 runs, 1 loop each)
│ │ │ │ │ +322 ms +- 2.34 ms per loop (mean +- std. dev. of 7 runs, 1 loop each)
│ │ │ │ │  This has improved the performance compared to the pure Python approach by one-
│ │ │ │ │  third.
│ │ │ │ │  ******** DDeeccllaarriinngg CC ttyyppeess_## ********
│ │ │ │ │  We can annotate the function variables and return types as well as use cdef and
│ │ │ │ │  cpdef to improve performance:
│ │ │ │ │  In [10]: %%cython
│ │ │ │ │     ....: cdef double f_typed(double x) except? -2:
│ │ │ │ │ @@ -162,34 +162,34 @@
│ │ │ │ │     ....:     dx = (b - a) / N
│ │ │ │ │     ....:     for i in range(N):
│ │ │ │ │     ....:         s += f_typed(a + i * dx)
│ │ │ │ │     ....:     return s * dx
│ │ │ │ │     ....:
│ │ │ │ │  In [11]: %timeit df.apply(lambda x: integrate_f_typed(x["a"], x["b"], x["N"]),
│ │ │ │ │  axis=1)
│ │ │ │ │ -45.7 ms +- 578 us per loop (mean +- std. dev. of 7 runs, 10 loops each)
│ │ │ │ │ +51.1 ms +- 1.91 ms per loop (mean +- std. dev. of 7 runs, 10 loops each)
│ │ │ │ │  Annotating the functions with C types yields an over ten times performance
│ │ │ │ │  improvement compared to the original Python implementation.
│ │ │ │ │  ******** UUssiinngg nnddaarrrraayy_## ********
│ │ │ │ │  When re-profiling, time is spent creating a _S_e_r_i_e_s from each row, and calling
│ │ │ │ │  __getitem__ from both the index and the series (three times for each row).
│ │ │ │ │  These Python function calls are expensive and can be improved by passing an
│ │ │ │ │  np.ndarray.
│ │ │ │ │  In [12]: %prun -l 4 df.apply(lambda x: integrate_f_typed(x["a"], x["b"], x
│ │ │ │ │  ["N"]), axis=1)
│ │ │ │ │ -         52528 function calls (52510 primitive calls) in 0.105 seconds
│ │ │ │ │ +         52528 function calls (52510 primitive calls) in 0.120 seconds
│ │ │ │ │  
│ │ │ │ │     Ordered by: internal time
│ │ │ │ │     List reduced from 157 to 4 due to restriction <4>
│ │ │ │ │  
│ │ │ │ │     ncalls  tottime  percall  cumtime  percall filename:lineno(function)
│ │ │ │ │ -     3000    0.017    0.000    0.065    0.000 series.py:1095(__getitem__)
│ │ │ │ │ -     3000    0.011    0.000    0.029    0.000 series.py:1220(_get_value)
│ │ │ │ │ -     3000    0.010    0.000    0.011    0.000 base.py:3777(get_loc)
│ │ │ │ │ -    16098    0.010    0.000    0.013    0.000 {built-in method
│ │ │ │ │ +     3000    0.019    0.000    0.072    0.000 series.py:1095(__getitem__)
│ │ │ │ │ +     3000    0.013    0.000    0.033    0.000 series.py:1220(_get_value)
│ │ │ │ │ +     3000    0.012    0.000    0.013    0.000 base.py:3777(get_loc)
│ │ │ │ │ +    16098    0.011    0.000    0.015    0.000 {built-in method
│ │ │ │ │  builtins.isinstance}
│ │ │ │ │  In [13]: %%cython
│ │ │ │ │     ....: cimport numpy as np
│ │ │ │ │     ....: import numpy as np
│ │ │ │ │     ....: cdef double f_typed(double x) except? -2:
│ │ │ │ │     ....:     return x * (x - 1)
│ │ │ │ │     ....: cpdef double integrate_f_typed(double a, double b, int N):
│ │ │ │ │ @@ -231,31 +231,31 @@
│ │ │ │ │  This implementation creates an array of zeros and inserts the result of
│ │ │ │ │  integrate_f_typed applied over each row. Looping over an ndarray is faster in
│ │ │ │ │  Cython than looping over a _S_e_r_i_e_s object.
│ │ │ │ │  Since apply_integrate_f is typed to accept an np.ndarray, _S_e_r_i_e_s_._t_o___n_u_m_p_y_(_)
│ │ │ │ │  calls are needed to utilize this function.
│ │ │ │ │  In [14]: %timeit apply_integrate_f(df["a"].to_numpy(), df["b"].to_numpy(), df
│ │ │ │ │  ["N"].to_numpy())
│ │ │ │ │ -5.76 ms +- 16.1 us per loop (mean +- std. dev. of 7 runs, 100 loops each)
│ │ │ │ │ +5.8 ms +- 19.6 us per loop (mean +- std. dev. of 7 runs, 100 loops each)
│ │ │ │ │  Performance has improved from the prior implementation by almost ten times.
│ │ │ │ │  ******** DDiissaabblliinngg ccoommppiilleerr ddiirreeccttiivveess_## ********
│ │ │ │ │  The majority of the time is now spent in apply_integrate_f. Disabling Cython’s
│ │ │ │ │  boundscheck and wraparound checks can yield more performance.
│ │ │ │ │  In [15]: %prun -l 4 apply_integrate_f(df["a"].to_numpy(), df["b"].to_numpy(),
│ │ │ │ │  df["N"].to_numpy())
│ │ │ │ │           78 function calls in 0.007 seconds
│ │ │ │ │  
│ │ │ │ │     Ordered by: internal time
│ │ │ │ │     List reduced from 21 to 4 due to restriction <4>
│ │ │ │ │  
│ │ │ │ │     ncalls  tottime  percall  cumtime  percall filename:lineno(function)
│ │ │ │ │          1    0.006    0.006    0.006    0.006 :1()
│ │ │ │ │ +        1    0.000    0.000    0.006    0.006 {built-in method builtins.exec}
│ │ │ │ │          1    0.000    0.000    0.000    0.000 {method 'disable' of
│ │ │ │ │  '_lsprof.Profiler' objects}
│ │ │ │ │ -        1    0.000    0.000    0.006    0.006 {built-in method builtins.exec}
│ │ │ │ │          3    0.000    0.000    0.000    0.000 frame.py:4062(__getitem__)
│ │ │ │ │  In [16]: %%cython
│ │ │ │ │     ....: cimport cython
│ │ │ │ │     ....: cimport numpy as np
│ │ │ │ │     ....: import numpy as np
│ │ │ │ │     ....: cdef np.float64_t f_typed(np.float64_t x) except? -2:
│ │ │ │ │     ....:     return x * (x - 1)
│ │ │ │ │ @@ -642,17 +642,17 @@
│ │ │ │ │  The 'numexpr' engine is the more performant engine that can yield performance
│ │ │ │ │  improvements compared to standard Python syntax for large _D_a_t_a_F_r_a_m_e. This
│ │ │ │ │  engine requires the optional dependency numexpr to be installed.
│ │ │ │ │  The 'python' engine is generally nnoott useful except for testing other evaluation
│ │ │ │ │  engines against it. You will achieve nnoo performance benefits using _e_v_a_l_(_) with
│ │ │ │ │  engine='python' and may incur a performance hit.
│ │ │ │ │  In [40]: %timeit df1 + df2 + df3 + df4
│ │ │ │ │ -60.6 ms +- 363 us per loop (mean +- std. dev. of 7 runs, 10 loops each)
│ │ │ │ │ +37.9 ms +- 786 us per loop (mean +- std. dev. of 7 runs, 10 loops each)
│ │ │ │ │  In [41]: %timeit pd.eval("df1 + df2 + df3 + df4", engine="python")
│ │ │ │ │ -62.3 ms +- 63.3 us per loop (mean +- std. dev. of 7 runs, 10 loops each)
│ │ │ │ │ +40.4 ms +- 670 us per loop (mean +- std. dev. of 7 runs, 10 loops each)
│ │ │ │ │  ******** TThhee _DD_aa_tt_aa_FF_rr_aa_mm_ee_.._ee_vv_aa_ll_((_)) mmeetthhoodd_## ********
│ │ │ │ │  In addition to the top level _p_a_n_d_a_s_._e_v_a_l_(_) function you can also evaluate an
│ │ │ │ │  expression in the “context” of a _D_a_t_a_F_r_a_m_e.
│ │ │ │ │  In [42]: df = pd.DataFrame(np.random.randn(5, 2), columns=["a", "b"])
│ │ │ │ │  
│ │ │ │ │  In [43]: df.eval("a + b")
│ │ │ │ │  Out[43]:
│ │ │ │ │ @@ -749,29 +749,29 @@
│ │ │ │ │  _p_a_n_d_a_s_._e_v_a_l_(_) works well with expressions containing large arrays.
│ │ │ │ │  In [58]: nrows, ncols = 20000, 100
│ │ │ │ │  
│ │ │ │ │  In [59]: df1, df2, df3, df4 = [pd.DataFrame(np.random.randn(nrows, ncols)) for
│ │ │ │ │  _ in range(4)]
│ │ │ │ │  _D_a_t_a_F_r_a_m_e arithmetic:
│ │ │ │ │  In [60]: %timeit df1 + df2 + df3 + df4
│ │ │ │ │ -60.7 ms +- 291 us per loop (mean +- std. dev. of 7 runs, 10 loops each)
│ │ │ │ │ +37.7 ms +- 614 us per loop (mean +- std. dev. of 7 runs, 10 loops each)
│ │ │ │ │  In [61]: %timeit pd.eval("df1 + df2 + df3 + df4")
│ │ │ │ │ -29.1 ms +- 220 us per loop (mean +- std. dev. of 7 runs, 10 loops each)
│ │ │ │ │ +24.4 ms +- 328 us per loop (mean +- std. dev. of 7 runs, 10 loops each)
│ │ │ │ │  _D_a_t_a_F_r_a_m_e comparison:
│ │ │ │ │  In [62]: %timeit (df1 > 0) & (df2 > 0) & (df3 > 0) & (df4 > 0)
│ │ │ │ │ -55.6 ms +- 937 us per loop (mean +- std. dev. of 7 runs, 10 loops each)
│ │ │ │ │ +61.8 ms +- 2.23 ms per loop (mean +- std. dev. of 7 runs, 10 loops each)
│ │ │ │ │  In [63]: %timeit pd.eval("(df1 > 0) & (df2 > 0) & (df3 > 0) & (df4 > 0)")
│ │ │ │ │ -26.1 ms +- 572 us per loop (mean +- std. dev. of 7 runs, 10 loops each)
│ │ │ │ │ +45.2 ms +- 1.1 ms per loop (mean +- std. dev. of 7 runs, 10 loops each)
│ │ │ │ │  _D_a_t_a_F_r_a_m_e arithmetic with unaligned axes.
│ │ │ │ │  In [64]: s = pd.Series(np.random.randn(50))
│ │ │ │ │  
│ │ │ │ │  In [65]: %timeit df1 + df2 + df3 + df4 + s
│ │ │ │ │ -106 ms +- 1.53 ms per loop (mean +- std. dev. of 7 runs, 10 loops each)
│ │ │ │ │ +68 ms +- 465 us per loop (mean +- std. dev. of 7 runs, 10 loops each)
│ │ │ │ │  In [66]: %timeit pd.eval("df1 + df2 + df3 + df4 + s")
│ │ │ │ │ -32.3 ms +- 270 us per loop (mean +- std. dev. of 7 runs, 10 loops each)
│ │ │ │ │ +29.4 ms +- 1.99 ms per loop (mean +- std. dev. of 7 runs, 10 loops each)
│ │ │ │ │  Note
│ │ │ │ │  Operations such as
│ │ │ │ │  1 and 2  # would parse to 1 & 2, but should evaluate to 2
│ │ │ │ │  3 or 4  # would parse to 3 | 4, but should evaluate to 3
│ │ │ │ │  ~1  # this is okay, but slower when using eval
│ │ │ │ │  should be performed in Python. An exception will be raised if you try to
│ │ │ │ │  perform any boolean/bitwise operations with scalar operands that are not of
│ │ │ ├── ./usr/share/doc/python-pandas-doc/html/user_guide/scale.html
│ │ │ │ @@ -1095,16 +1095,16 @@
│ │ │ │     ....: files = pathlib.Path("data/timeseries/").glob("ts*.parquet")
│ │ │ │     ....: counts = pd.Series(dtype=int)
│ │ │ │     ....: for path in files:
│ │ │ │     ....:     df = pd.read_parquet(path)
│ │ │ │     ....:     counts = counts.add(df["name"].value_counts(), fill_value=0)
│ │ │ │     ....: counts.astype(int)
│ │ │ │     ....: 
│ │ │ │ -CPU times: user 1.57 ms, sys: 0 ns, total: 1.57 ms
│ │ │ │ -Wall time: 1.59 ms
│ │ │ │ +CPU times: user 1.49 ms, sys: 124 us, total: 1.62 ms
│ │ │ │ +Wall time: 1.64 ms
│ │ │ │  Out[32]: Series([], dtype: int32)
│ │ │ │  
│ │ │ │
│ │ │ │

Some readers, like pandas.read_csv(), offer parameters to control the │ │ │ │ chunksize when reading a single file.

│ │ │ │

Manually chunking is an OK option for workflows that don’t │ │ │ │ require too sophisticated of operations. Some operations, like pandas.DataFrame.groupby(), are │ │ │ │ ├── html2text {} │ │ │ │ │ @@ -640,16 +640,16 @@ │ │ │ │ │ ....: files = pathlib.Path("data/timeseries/").glob("ts*.parquet") │ │ │ │ │ ....: counts = pd.Series(dtype=int) │ │ │ │ │ ....: for path in files: │ │ │ │ │ ....: df = pd.read_parquet(path) │ │ │ │ │ ....: counts = counts.add(df["name"].value_counts(), fill_value=0) │ │ │ │ │ ....: counts.astype(int) │ │ │ │ │ ....: │ │ │ │ │ -CPU times: user 1.57 ms, sys: 0 ns, total: 1.57 ms │ │ │ │ │ -Wall time: 1.59 ms │ │ │ │ │ +CPU times: user 1.49 ms, sys: 124 us, total: 1.62 ms │ │ │ │ │ +Wall time: 1.64 ms │ │ │ │ │ Out[32]: Series([], dtype: int32) │ │ │ │ │ Some readers, like _p_a_n_d_a_s_._r_e_a_d___c_s_v_(_), offer parameters to control the chunksize │ │ │ │ │ when reading a single file. │ │ │ │ │ Manually chunking is an OK option for workflows that don’t require too │ │ │ │ │ sophisticated of operations. Some operations, like _p_a_n_d_a_s_._D_a_t_a_F_r_a_m_e_._g_r_o_u_p_b_y_(_), │ │ │ │ │ are much harder to do chunkwise. In these cases, you may be better switching to │ │ │ │ │ a different library that implements these out-of-core algorithms for you. │ │ │ ├── ./usr/share/doc/python-pandas-doc/html/user_guide/style.ipynb.gz │ │ │ │ ├── style.ipynb │ │ │ │ │ ├── Pretty-printed │ │ │ │ │ │┄ Similarity: 0.9985610875706213% │ │ │ │ │ │┄ Differences: {"'cells'": "{1: {'metadata': {'execution': {'iopub.execute_input': '2024-11-08T06:47:06.631094Z', " │ │ │ │ │ │┄ "'iopub.status.busy': '2024-11-08T06:47:06.630191Z', 'iopub.status.idle': " │ │ │ │ │ │┄ "'2024-11-08T06:47:09.710846Z', 'shell.execute_reply': " │ │ │ │ │ │┄ "'2024-11-08T06:47:09.708512Z'}}}, 3: {'metadata': {'execution': " │ │ │ │ │ │┄ "{'iopub.execute_input': '2024-11-08T06:47:09.732241Z', 'iopub.status.busy': " │ │ │ │ │ │┄ "'2024-11-08T06:47:09.730413Z', 'iopub.status.idle': '2024-11-08T06:47:1 […] │ │ │ │ │ │ @@ -39,18 +39,18 @@ │ │ │ │ │ │ ] │ │ │ │ │ │ }, │ │ │ │ │ │ { │ │ │ │ │ │ "cell_type": "code", │ │ │ │ │ │ "execution_count": 1, │ │ │ │ │ │ "metadata": { │ │ │ │ │ │ "execution": { │ │ │ │ │ │ - "iopub.execute_input": "2024-11-08T03:24:49.545837Z", │ │ │ │ │ │ - "iopub.status.busy": "2024-11-08T03:24:49.545075Z", │ │ │ │ │ │ - "iopub.status.idle": "2024-11-08T03:24:51.166017Z", │ │ │ │ │ │ - "shell.execute_reply": "2024-11-08T03:24:51.164043Z" │ │ │ │ │ │ + "iopub.execute_input": "2024-11-08T06:47:06.631094Z", │ │ │ │ │ │ + "iopub.status.busy": "2024-11-08T06:47:06.630191Z", │ │ │ │ │ │ + "iopub.status.idle": "2024-11-08T06:47:09.710846Z", │ │ │ │ │ │ + "shell.execute_reply": "2024-11-08T06:47:09.708512Z" │ │ │ │ │ │ }, │ │ │ │ │ │ "nbsphinx": "hidden" │ │ │ │ │ │ }, │ │ │ │ │ │ "outputs": [], │ │ │ │ │ │ "source": [ │ │ │ │ │ │ "import matplotlib.pyplot\n", │ │ │ │ │ │ "# We have this here to trigger matplotlib's font cache stuff.\n", │ │ │ │ │ │ @@ -77,36 +77,36 @@ │ │ │ │ │ │ ] │ │ │ │ │ │ }, │ │ │ │ │ │ { │ │ │ │ │ │ "cell_type": "code", │ │ │ │ │ │ "execution_count": 2, │ │ │ │ │ │ "metadata": { │ │ │ │ │ │ "execution": { │ │ │ │ │ │ - "iopub.execute_input": "2024-11-08T03:24:51.177501Z", │ │ │ │ │ │ - "iopub.status.busy": "2024-11-08T03:24:51.175941Z", │ │ │ │ │ │ - "iopub.status.idle": "2024-11-08T03:24:51.936124Z", │ │ │ │ │ │ - "shell.execute_reply": "2024-11-08T03:24:51.934006Z" │ │ │ │ │ │ + "iopub.execute_input": "2024-11-08T06:47:09.732241Z", │ │ │ │ │ │ + "iopub.status.busy": "2024-11-08T06:47:09.730413Z", │ │ │ │ │ │ + "iopub.status.idle": "2024-11-08T06:47:10.882707Z", │ │ │ │ │ │ + "shell.execute_reply": "2024-11-08T06:47:10.880500Z" │ │ │ │ │ │ } │ │ │ │ │ │ }, │ │ │ │ │ │ "outputs": [], │ │ │ │ │ │ "source": [ │ │ │ │ │ │ "import pandas as pd\n", │ │ │ │ │ │ "import numpy as np\n", │ │ │ │ │ │ "import matplotlib as mpl\n" │ │ │ │ │ │ ] │ │ │ │ │ │ }, │ │ │ │ │ │ { │ │ │ │ │ │ "cell_type": "code", │ │ │ │ │ │ "execution_count": 3, │ │ │ │ │ │ "metadata": { │ │ │ │ │ │ "execution": { │ │ │ │ │ │ - "iopub.execute_input": "2024-11-08T03:24:51.946044Z", │ │ │ │ │ │ - "iopub.status.busy": "2024-11-08T03:24:51.945083Z", │ │ │ │ │ │ - "iopub.status.idle": "2024-11-08T03:24:52.158099Z", │ │ │ │ │ │ - "shell.execute_reply": "2024-11-08T03:24:52.156081Z" │ │ │ │ │ │ + "iopub.execute_input": "2024-11-08T06:47:10.899402Z", │ │ │ │ │ │ + "iopub.status.busy": "2024-11-08T06:47:10.898303Z", │ │ │ │ │ │ + "iopub.status.idle": "2024-11-08T06:47:11.348500Z", │ │ │ │ │ │ + "shell.execute_reply": "2024-11-08T06:47:11.332482Z" │ │ │ │ │ │ }, │ │ │ │ │ │ "nbsphinx": "hidden" │ │ │ │ │ │ }, │ │ │ │ │ │ "outputs": [], │ │ │ │ │ │ "source": [ │ │ │ │ │ │ "# For reproducibility - this doesn't respect uuid_len or positionally-passed uuid but the places here that use that coincidentally bypass this anyway\n", │ │ │ │ │ │ "from pandas.io.formats.style import Styler\n", │ │ │ │ │ │ @@ -123,18 +123,18 @@ │ │ │ │ │ │ ] │ │ │ │ │ │ }, │ │ │ │ │ │ { │ │ │ │ │ │ "cell_type": "code", │ │ │ │ │ │ "execution_count": 4, │ │ │ │ │ │ "metadata": { │ │ │ │ │ │ "execution": { │ │ │ │ │ │ - "iopub.execute_input": "2024-11-08T03:24:52.168240Z", │ │ │ │ │ │ - "iopub.status.busy": "2024-11-08T03:24:52.167332Z", │ │ │ │ │ │ - "iopub.status.idle": "2024-11-08T03:24:52.209344Z", │ │ │ │ │ │ - "shell.execute_reply": "2024-11-08T03:24:52.207374Z" │ │ │ │ │ │ + "iopub.execute_input": "2024-11-08T06:47:11.363211Z", │ │ │ │ │ │ + "iopub.status.busy": "2024-11-08T06:47:11.362169Z", │ │ │ │ │ │ + "iopub.status.idle": "2024-11-08T06:47:11.476523Z", │ │ │ │ │ │ + "shell.execute_reply": "2024-11-08T06:47:11.460446Z" │ │ │ │ │ │ } │ │ │ │ │ │ }, │ │ │ │ │ │ "outputs": [ │ │ │ │ │ │ { │ │ │ │ │ │ "data": { │ │ │ │ │ │ "text/html": [ │ │ │ │ │ │ "