@performant-software/geospatial 3.1.25-beta.0 → 3.1.25-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1979) hide show
  1. package/dist/index.cjs100.js +1 -1
  2. package/dist/index.cjs101.js +1 -1
  3. package/dist/index.cjs102.js +1 -1
  4. package/dist/index.cjs103.js +1 -1
  5. package/dist/index.cjs104.js +1 -1
  6. package/dist/index.cjs105.js +1 -1
  7. package/dist/index.cjs106.js +1 -1
  8. package/dist/index.cjs107.js +1 -1
  9. package/dist/index.cjs108.js +1 -1
  10. package/dist/index.cjs111.js +1 -1
  11. package/dist/index.cjs112.js +1 -1
  12. package/dist/index.cjs114.js +1 -1
  13. package/dist/index.cjs115.js +1 -1
  14. package/dist/index.cjs116.js +1 -1
  15. package/dist/index.cjs117.js +1 -1
  16. package/dist/index.cjs12.js +1 -1
  17. package/dist/index.cjs12.js.map +1 -1
  18. package/dist/index.cjs122.js +1 -1
  19. package/dist/index.cjs123.js +1 -1
  20. package/dist/index.cjs124.js +1 -1
  21. package/dist/index.cjs125.js +1 -1
  22. package/dist/index.cjs128.js +1 -1
  23. package/dist/index.cjs129.js +1 -1
  24. package/dist/index.cjs13.js +1 -1
  25. package/dist/index.cjs13.js.map +1 -1
  26. package/dist/index.cjs130.js +1 -1
  27. package/dist/index.cjs134.js +1 -1
  28. package/dist/index.cjs137.js +1 -1
  29. package/dist/index.cjs141.js +1 -1
  30. package/dist/index.cjs144.js +1 -1
  31. package/dist/index.cjs152.js +1 -1
  32. package/dist/index.cjs153.js +1 -1
  33. package/dist/index.cjs154.js +1 -1
  34. package/dist/index.cjs155.js +1 -1
  35. package/dist/index.cjs156.js +1 -1
  36. package/dist/index.cjs157.js +1 -1
  37. package/dist/index.cjs158.js +1 -1
  38. package/dist/index.cjs16.js +1 -1
  39. package/dist/index.cjs160.js +1 -1
  40. package/dist/index.cjs161.js +1 -1
  41. package/dist/index.cjs162.js +1 -1
  42. package/dist/index.cjs163.js +1 -1
  43. package/dist/index.cjs164.js +1 -1
  44. package/dist/index.cjs165.js +1 -1
  45. package/dist/index.cjs166.js +1 -1
  46. package/dist/index.cjs167.js +1 -1
  47. package/dist/index.cjs168.js +1 -1
  48. package/dist/index.cjs17.js +1 -1
  49. package/dist/index.cjs171.js +1 -1
  50. package/dist/index.cjs172.js +1 -1
  51. package/dist/index.cjs174.js +1 -1
  52. package/dist/index.cjs175.js +1 -1
  53. package/dist/index.cjs176.js +1 -1
  54. package/dist/index.cjs177.js +1 -1
  55. package/dist/index.cjs178.js +1 -1
  56. package/dist/index.cjs179.js +1 -1
  57. package/dist/index.cjs18.js +1 -1
  58. package/dist/index.cjs180.js +1 -1
  59. package/dist/index.cjs181.js +1 -1
  60. package/dist/index.cjs187.js +1 -1
  61. package/dist/index.cjs188.js +1 -1
  62. package/dist/index.cjs189.js +1 -1
  63. package/dist/index.cjs19.js +1 -1
  64. package/dist/index.cjs190.js +1 -1
  65. package/dist/index.cjs191.js +1 -1
  66. package/dist/index.cjs194.js +1 -1
  67. package/dist/index.cjs194.js.map +1 -1
  68. package/dist/index.cjs195.js +1 -1
  69. package/dist/index.cjs195.js.map +1 -1
  70. package/dist/index.cjs196.js +1 -1
  71. package/dist/index.cjs196.js.map +1 -1
  72. package/dist/index.cjs197.js +1 -1
  73. package/dist/index.cjs197.js.map +1 -1
  74. package/dist/index.cjs198.js +1 -1
  75. package/dist/index.cjs198.js.map +1 -1
  76. package/dist/index.cjs199.js +1 -1
  77. package/dist/index.cjs199.js.map +1 -1
  78. package/dist/index.cjs20.js +1 -1
  79. package/dist/index.cjs200.js +1 -1
  80. package/dist/index.cjs200.js.map +1 -1
  81. package/dist/index.cjs201.js +1 -1
  82. package/dist/index.cjs201.js.map +1 -1
  83. package/dist/index.cjs202.js +1 -1
  84. package/dist/index.cjs202.js.map +1 -1
  85. package/dist/index.cjs203.js +1 -1
  86. package/dist/index.cjs203.js.map +1 -1
  87. package/dist/index.cjs204.js +1 -1
  88. package/dist/index.cjs204.js.map +1 -1
  89. package/dist/index.cjs205.js +1 -1
  90. package/dist/index.cjs205.js.map +1 -1
  91. package/dist/index.cjs206.js +1 -1
  92. package/dist/index.cjs206.js.map +1 -1
  93. package/dist/index.cjs207.js +1 -1
  94. package/dist/index.cjs207.js.map +1 -1
  95. package/dist/index.cjs208.js +1 -1
  96. package/dist/index.cjs208.js.map +1 -1
  97. package/dist/index.cjs209.js +1 -1
  98. package/dist/index.cjs209.js.map +1 -1
  99. package/dist/index.cjs21.js +1 -1
  100. package/dist/index.cjs210.js +1 -1
  101. package/dist/index.cjs210.js.map +1 -1
  102. package/dist/index.cjs211.js +1 -1
  103. package/dist/index.cjs211.js.map +1 -1
  104. package/dist/index.cjs212.js +1 -1
  105. package/dist/index.cjs212.js.map +1 -1
  106. package/dist/index.cjs213.js +1 -1
  107. package/dist/index.cjs213.js.map +1 -1
  108. package/dist/index.cjs214.js +1 -1
  109. package/dist/index.cjs214.js.map +1 -1
  110. package/dist/index.cjs215.js +1 -1
  111. package/dist/index.cjs215.js.map +1 -1
  112. package/dist/index.cjs216.js +1 -1
  113. package/dist/index.cjs216.js.map +1 -1
  114. package/dist/index.cjs217.js +1 -1
  115. package/dist/index.cjs217.js.map +1 -1
  116. package/dist/index.cjs218.js +1 -1
  117. package/dist/index.cjs218.js.map +1 -1
  118. package/dist/index.cjs219.js +1 -1
  119. package/dist/index.cjs219.js.map +1 -1
  120. package/dist/index.cjs22.js +1 -1
  121. package/dist/index.cjs220.js +1 -1
  122. package/dist/index.cjs220.js.map +1 -1
  123. package/dist/index.cjs221.js +1 -1
  124. package/dist/index.cjs221.js.map +1 -1
  125. package/dist/index.cjs222.js +1 -1
  126. package/dist/index.cjs222.js.map +1 -1
  127. package/dist/index.cjs223.js +1 -1
  128. package/dist/index.cjs223.js.map +1 -1
  129. package/dist/index.cjs224.js +1 -1
  130. package/dist/index.cjs224.js.map +1 -1
  131. package/dist/index.cjs225.js +1 -1
  132. package/dist/index.cjs225.js.map +1 -1
  133. package/dist/index.cjs226.js +1 -1
  134. package/dist/index.cjs226.js.map +1 -1
  135. package/dist/index.cjs227.js +1 -1
  136. package/dist/index.cjs227.js.map +1 -1
  137. package/dist/index.cjs228.js +1 -1
  138. package/dist/index.cjs228.js.map +1 -1
  139. package/dist/index.cjs229.js +1 -1
  140. package/dist/index.cjs229.js.map +1 -1
  141. package/dist/index.cjs23.js +1 -1
  142. package/dist/index.cjs230.js +1 -1
  143. package/dist/index.cjs230.js.map +1 -1
  144. package/dist/index.cjs231.js +1 -1
  145. package/dist/index.cjs231.js.map +1 -1
  146. package/dist/index.cjs232.js +1 -1
  147. package/dist/index.cjs232.js.map +1 -1
  148. package/dist/index.cjs233.js +1 -1
  149. package/dist/index.cjs233.js.map +1 -1
  150. package/dist/index.cjs234.js +1 -1
  151. package/dist/index.cjs234.js.map +1 -1
  152. package/dist/index.cjs235.js +1 -1
  153. package/dist/index.cjs235.js.map +1 -1
  154. package/dist/index.cjs236.js +1 -1
  155. package/dist/index.cjs236.js.map +1 -1
  156. package/dist/index.cjs237.js +1 -1
  157. package/dist/index.cjs237.js.map +1 -1
  158. package/dist/index.cjs238.js +1 -1
  159. package/dist/index.cjs238.js.map +1 -1
  160. package/dist/index.cjs239.js +1 -1
  161. package/dist/index.cjs239.js.map +1 -1
  162. package/dist/index.cjs24.js +1 -1
  163. package/dist/index.cjs240.js +1 -1
  164. package/dist/index.cjs240.js.map +1 -1
  165. package/dist/index.cjs241.js +1 -1
  166. package/dist/index.cjs241.js.map +1 -1
  167. package/dist/index.cjs242.js +1 -1
  168. package/dist/index.cjs242.js.map +1 -1
  169. package/dist/index.cjs243.js +1 -1
  170. package/dist/index.cjs243.js.map +1 -1
  171. package/dist/index.cjs244.js +1 -1
  172. package/dist/index.cjs244.js.map +1 -1
  173. package/dist/index.cjs245.js +1 -1
  174. package/dist/index.cjs245.js.map +1 -1
  175. package/dist/index.cjs246.js +1 -1
  176. package/dist/index.cjs246.js.map +1 -1
  177. package/dist/index.cjs247.js +1 -1
  178. package/dist/index.cjs247.js.map +1 -1
  179. package/dist/index.cjs248.js +1 -1
  180. package/dist/index.cjs248.js.map +1 -1
  181. package/dist/index.cjs249.js +1 -1
  182. package/dist/index.cjs249.js.map +1 -1
  183. package/dist/index.cjs25.js +1 -1
  184. package/dist/index.cjs250.js +1 -7
  185. package/dist/index.cjs250.js.map +1 -1
  186. package/dist/index.cjs251.js +1 -1
  187. package/dist/index.cjs251.js.map +1 -1
  188. package/dist/index.cjs252.js +1 -1
  189. package/dist/index.cjs252.js.map +1 -1
  190. package/dist/index.cjs253.js +1 -1
  191. package/dist/index.cjs253.js.map +1 -1
  192. package/dist/index.cjs254.js +1 -1
  193. package/dist/index.cjs254.js.map +1 -1
  194. package/dist/index.cjs255.js +1 -1
  195. package/dist/index.cjs255.js.map +1 -1
  196. package/dist/index.cjs256.js +1 -1
  197. package/dist/index.cjs256.js.map +1 -1
  198. package/dist/index.cjs257.js +1 -1
  199. package/dist/index.cjs257.js.map +1 -1
  200. package/dist/index.cjs258.js +1 -1
  201. package/dist/index.cjs258.js.map +1 -1
  202. package/dist/index.cjs259.js +1 -1
  203. package/dist/index.cjs259.js.map +1 -1
  204. package/dist/index.cjs26.js +1 -1
  205. package/dist/index.cjs260.js +1 -1
  206. package/dist/index.cjs260.js.map +1 -1
  207. package/dist/index.cjs261.js +1 -1
  208. package/dist/index.cjs261.js.map +1 -1
  209. package/dist/index.cjs262.js +1 -1
  210. package/dist/index.cjs262.js.map +1 -1
  211. package/dist/index.cjs263.js +1 -1
  212. package/dist/index.cjs263.js.map +1 -1
  213. package/dist/index.cjs264.js +1 -1
  214. package/dist/index.cjs264.js.map +1 -1
  215. package/dist/index.cjs265.js +1 -1
  216. package/dist/index.cjs265.js.map +1 -1
  217. package/dist/index.cjs266.js +1 -1
  218. package/dist/index.cjs266.js.map +1 -1
  219. package/dist/index.cjs267.js +1 -1
  220. package/dist/index.cjs267.js.map +1 -1
  221. package/dist/index.cjs268.js +1 -1
  222. package/dist/index.cjs268.js.map +1 -1
  223. package/dist/index.cjs269.js +1 -1
  224. package/dist/index.cjs269.js.map +1 -1
  225. package/dist/index.cjs27.js +1 -1
  226. package/dist/index.cjs270.js +1 -1
  227. package/dist/index.cjs270.js.map +1 -1
  228. package/dist/index.cjs271.js +1 -1
  229. package/dist/index.cjs271.js.map +1 -1
  230. package/dist/index.cjs272.js +7 -1
  231. package/dist/index.cjs272.js.map +1 -1
  232. package/dist/index.cjs273.js +1 -1
  233. package/dist/index.cjs273.js.map +1 -1
  234. package/dist/index.cjs274.js +1 -1
  235. package/dist/index.cjs274.js.map +1 -1
  236. package/dist/index.cjs275.js +1 -1
  237. package/dist/index.cjs275.js.map +1 -1
  238. package/dist/index.cjs276.js +2 -0
  239. package/dist/index.cjs276.js.map +1 -0
  240. package/dist/index.cjs277.js +2 -0
  241. package/dist/index.cjs277.js.map +1 -0
  242. package/dist/index.cjs278.js +2 -0
  243. package/dist/index.cjs278.js.map +1 -0
  244. package/dist/index.cjs279.js +2 -0
  245. package/dist/index.cjs279.js.map +1 -0
  246. package/dist/index.cjs280.js +2 -0
  247. package/dist/index.cjs280.js.map +1 -0
  248. package/dist/index.cjs281.js +2 -0
  249. package/dist/index.cjs281.js.map +1 -0
  250. package/dist/index.cjs282.js +2 -0
  251. package/dist/index.cjs282.js.map +1 -0
  252. package/dist/index.cjs283.js +2 -0
  253. package/dist/index.cjs283.js.map +1 -0
  254. package/dist/index.cjs284.js +2 -0
  255. package/dist/index.cjs284.js.map +1 -0
  256. package/dist/index.cjs285.js +2 -0
  257. package/dist/index.cjs285.js.map +1 -0
  258. package/dist/index.cjs286.js +2 -0
  259. package/dist/index.cjs286.js.map +1 -0
  260. package/dist/index.cjs287.js +2 -0
  261. package/dist/index.cjs287.js.map +1 -0
  262. package/dist/index.cjs288.js +2 -0
  263. package/dist/index.cjs288.js.map +1 -0
  264. package/dist/index.cjs289.js +2 -0
  265. package/dist/index.cjs289.js.map +1 -0
  266. package/dist/index.cjs290.js +2 -0
  267. package/dist/index.cjs290.js.map +1 -0
  268. package/dist/index.cjs291.js +2 -0
  269. package/dist/index.cjs291.js.map +1 -0
  270. package/dist/index.cjs292.js +2 -0
  271. package/dist/index.cjs292.js.map +1 -0
  272. package/dist/index.cjs293.js +2 -0
  273. package/dist/index.cjs293.js.map +1 -0
  274. package/dist/index.cjs294.js +2 -0
  275. package/dist/index.cjs294.js.map +1 -0
  276. package/dist/index.cjs295.js +2 -0
  277. package/dist/index.cjs295.js.map +1 -0
  278. package/dist/index.cjs296.js +2 -0
  279. package/dist/index.cjs296.js.map +1 -0
  280. package/dist/index.cjs297.js +2 -0
  281. package/dist/index.cjs297.js.map +1 -0
  282. package/dist/index.cjs298.js +2 -0
  283. package/dist/index.cjs298.js.map +1 -0
  284. package/dist/index.cjs299.js +2 -0
  285. package/dist/index.cjs299.js.map +1 -0
  286. package/dist/index.cjs300.js +2 -0
  287. package/dist/index.cjs300.js.map +1 -0
  288. package/dist/index.cjs301.js +2 -0
  289. package/dist/index.cjs301.js.map +1 -0
  290. package/dist/index.cjs302.js +2 -0
  291. package/dist/index.cjs302.js.map +1 -0
  292. package/dist/index.cjs303.js +2 -0
  293. package/dist/index.cjs303.js.map +1 -0
  294. package/dist/index.cjs304.js +2 -0
  295. package/dist/index.cjs304.js.map +1 -0
  296. package/dist/index.cjs305.js +2 -0
  297. package/dist/index.cjs305.js.map +1 -0
  298. package/dist/index.cjs306.js +2 -0
  299. package/dist/index.cjs306.js.map +1 -0
  300. package/dist/index.cjs307.js +2 -0
  301. package/dist/index.cjs307.js.map +1 -0
  302. package/dist/index.cjs308.js +47 -0
  303. package/dist/index.cjs308.js.map +1 -0
  304. package/dist/index.cjs309.js +212 -0
  305. package/dist/index.cjs309.js.map +1 -0
  306. package/dist/index.cjs310.js +62 -0
  307. package/dist/index.cjs310.js.map +1 -0
  308. package/dist/index.cjs311.js +60 -0
  309. package/dist/index.cjs311.js.map +1 -0
  310. package/dist/index.cjs312.js +46 -0
  311. package/dist/index.cjs312.js.map +1 -0
  312. package/dist/index.cjs313.js +52 -0
  313. package/dist/index.cjs313.js.map +1 -0
  314. package/dist/index.cjs314.js +308 -0
  315. package/dist/index.cjs314.js.map +1 -0
  316. package/dist/index.cjs315.js +293 -0
  317. package/dist/index.cjs315.js.map +1 -0
  318. package/dist/index.cjs316.js +6 -0
  319. package/dist/index.cjs316.js.map +1 -0
  320. package/dist/index.cjs317.js +2 -0
  321. package/dist/index.cjs317.js.map +1 -0
  322. package/dist/index.cjs318.js +2 -0
  323. package/dist/index.cjs318.js.map +1 -0
  324. package/dist/index.cjs319.js +2 -0
  325. package/dist/index.cjs319.js.map +1 -0
  326. package/dist/index.cjs320.js +2 -0
  327. package/dist/index.cjs320.js.map +1 -0
  328. package/dist/index.cjs321.js +2 -0
  329. package/dist/index.cjs321.js.map +1 -0
  330. package/dist/index.cjs322.js +2 -0
  331. package/dist/index.cjs322.js.map +1 -0
  332. package/dist/index.cjs323.js +2 -0
  333. package/dist/index.cjs323.js.map +1 -0
  334. package/dist/index.cjs324.js +2 -0
  335. package/dist/index.cjs324.js.map +1 -0
  336. package/dist/index.cjs325.js +2 -0
  337. package/dist/index.cjs325.js.map +1 -0
  338. package/dist/index.cjs326.js +2 -0
  339. package/dist/index.cjs326.js.map +1 -0
  340. package/dist/index.cjs327.js +2 -0
  341. package/dist/index.cjs327.js.map +1 -0
  342. package/dist/index.cjs328.js +2 -0
  343. package/dist/index.cjs328.js.map +1 -0
  344. package/dist/index.cjs329.js +2 -0
  345. package/dist/index.cjs329.js.map +1 -0
  346. package/dist/index.cjs330.js +2 -0
  347. package/dist/index.cjs330.js.map +1 -0
  348. package/dist/index.cjs331.js +2 -0
  349. package/dist/index.cjs331.js.map +1 -0
  350. package/dist/index.cjs332.js +2 -0
  351. package/dist/index.cjs332.js.map +1 -0
  352. package/dist/index.cjs333.js +2 -0
  353. package/dist/index.cjs333.js.map +1 -0
  354. package/dist/index.cjs334.js +5 -0
  355. package/dist/index.cjs334.js.map +1 -0
  356. package/dist/index.cjs335.js +6 -0
  357. package/dist/index.cjs335.js.map +1 -0
  358. package/dist/index.cjs336.js +2 -0
  359. package/dist/index.cjs336.js.map +1 -0
  360. package/dist/index.cjs337.js +2 -0
  361. package/dist/index.cjs337.js.map +1 -0
  362. package/dist/index.cjs338.js +2 -0
  363. package/dist/index.cjs338.js.map +1 -0
  364. package/dist/index.cjs339.js +2 -0
  365. package/dist/index.cjs339.js.map +1 -0
  366. package/dist/index.cjs340.js +2 -0
  367. package/dist/index.cjs340.js.map +1 -0
  368. package/dist/index.cjs341.js +2 -0
  369. package/dist/index.cjs341.js.map +1 -0
  370. package/dist/index.cjs342.js +2 -0
  371. package/dist/index.cjs342.js.map +1 -0
  372. package/dist/index.cjs343.js +2 -0
  373. package/dist/index.cjs343.js.map +1 -0
  374. package/dist/index.cjs344.js +2 -0
  375. package/dist/index.cjs344.js.map +1 -0
  376. package/dist/index.cjs345.js +2 -0
  377. package/dist/index.cjs345.js.map +1 -0
  378. package/dist/index.cjs346.js +2 -0
  379. package/dist/index.cjs346.js.map +1 -0
  380. package/dist/index.cjs347.js +2 -0
  381. package/dist/index.cjs347.js.map +1 -0
  382. package/dist/index.cjs348.js +5 -0
  383. package/dist/index.cjs348.js.map +1 -0
  384. package/dist/index.cjs349.js +2 -0
  385. package/dist/index.cjs349.js.map +1 -0
  386. package/dist/index.cjs350.js +2 -0
  387. package/dist/index.cjs350.js.map +1 -0
  388. package/dist/index.cjs351.js +2 -0
  389. package/dist/index.cjs351.js.map +1 -0
  390. package/dist/index.cjs352.js +2 -0
  391. package/dist/index.cjs352.js.map +1 -0
  392. package/dist/index.cjs353.js +2 -0
  393. package/dist/index.cjs353.js.map +1 -0
  394. package/dist/index.cjs354.js +2 -0
  395. package/dist/index.cjs354.js.map +1 -0
  396. package/dist/index.cjs355.js +2 -0
  397. package/dist/index.cjs355.js.map +1 -0
  398. package/dist/index.cjs356.js +2 -0
  399. package/dist/index.cjs356.js.map +1 -0
  400. package/dist/index.cjs357.js +2 -0
  401. package/dist/index.cjs357.js.map +1 -0
  402. package/dist/index.cjs358.js +2 -0
  403. package/dist/index.cjs358.js.map +1 -0
  404. package/dist/index.cjs359.js +2 -0
  405. package/dist/index.cjs359.js.map +1 -0
  406. package/dist/index.cjs360.js +2 -0
  407. package/dist/index.cjs360.js.map +1 -0
  408. package/dist/index.cjs361.js +2 -0
  409. package/dist/index.cjs361.js.map +1 -0
  410. package/dist/index.cjs362.js +2 -0
  411. package/dist/index.cjs362.js.map +1 -0
  412. package/dist/index.cjs363.js +2 -0
  413. package/dist/index.cjs363.js.map +1 -0
  414. package/dist/index.cjs364.js +2 -0
  415. package/dist/index.cjs364.js.map +1 -0
  416. package/dist/index.cjs365.js +2 -0
  417. package/dist/index.cjs365.js.map +1 -0
  418. package/dist/index.cjs366.js +2 -0
  419. package/dist/index.cjs366.js.map +1 -0
  420. package/dist/index.cjs367.js +2 -0
  421. package/dist/index.cjs367.js.map +1 -0
  422. package/dist/index.cjs368.js +2 -0
  423. package/dist/index.cjs368.js.map +1 -0
  424. package/dist/index.cjs369.js +2 -0
  425. package/dist/index.cjs369.js.map +1 -0
  426. package/dist/index.cjs370.js +2 -0
  427. package/dist/index.cjs370.js.map +1 -0
  428. package/dist/index.cjs371.js +2 -0
  429. package/dist/index.cjs371.js.map +1 -0
  430. package/dist/index.cjs372.js +2 -0
  431. package/dist/index.cjs372.js.map +1 -0
  432. package/dist/index.cjs373.js +2 -0
  433. package/dist/index.cjs373.js.map +1 -0
  434. package/dist/index.cjs374.js +2 -0
  435. package/dist/index.cjs374.js.map +1 -0
  436. package/dist/index.cjs375.js +2 -0
  437. package/dist/index.cjs375.js.map +1 -0
  438. package/dist/index.cjs376.js +2 -0
  439. package/dist/index.cjs376.js.map +1 -0
  440. package/dist/index.cjs377.js +2 -0
  441. package/dist/index.cjs377.js.map +1 -0
  442. package/dist/index.cjs378.js +2 -0
  443. package/dist/index.cjs378.js.map +1 -0
  444. package/dist/index.cjs379.js +2 -0
  445. package/dist/index.cjs379.js.map +1 -0
  446. package/dist/index.cjs38.js +1 -1
  447. package/dist/index.cjs380.js +2 -0
  448. package/dist/index.cjs380.js.map +1 -0
  449. package/dist/index.cjs381.js +2 -0
  450. package/dist/index.cjs381.js.map +1 -0
  451. package/dist/index.cjs382.js +2 -0
  452. package/dist/index.cjs382.js.map +1 -0
  453. package/dist/index.cjs383.js +2 -0
  454. package/dist/index.cjs383.js.map +1 -0
  455. package/dist/index.cjs384.js +2 -0
  456. package/dist/index.cjs384.js.map +1 -0
  457. package/dist/index.cjs385.js +2 -0
  458. package/dist/index.cjs385.js.map +1 -0
  459. package/dist/index.cjs386.js +2 -0
  460. package/dist/index.cjs386.js.map +1 -0
  461. package/dist/index.cjs387.js +2 -0
  462. package/dist/index.cjs387.js.map +1 -0
  463. package/dist/index.cjs388.js +2 -0
  464. package/dist/index.cjs388.js.map +1 -0
  465. package/dist/index.cjs389.js +2 -0
  466. package/dist/index.cjs389.js.map +1 -0
  467. package/dist/index.cjs39.js +1 -1
  468. package/dist/index.cjs390.js +2 -0
  469. package/dist/index.cjs390.js.map +1 -0
  470. package/dist/index.cjs391.js +2 -0
  471. package/dist/index.cjs391.js.map +1 -0
  472. package/dist/index.cjs392.js +2 -0
  473. package/dist/index.cjs392.js.map +1 -0
  474. package/dist/index.cjs393.js +2 -0
  475. package/dist/index.cjs393.js.map +1 -0
  476. package/dist/index.cjs394.js +2 -0
  477. package/dist/index.cjs394.js.map +1 -0
  478. package/dist/index.cjs395.js +2 -0
  479. package/dist/index.cjs395.js.map +1 -0
  480. package/dist/index.cjs396.js +2 -0
  481. package/dist/index.cjs396.js.map +1 -0
  482. package/dist/index.cjs397.js +2 -0
  483. package/dist/index.cjs397.js.map +1 -0
  484. package/dist/index.cjs398.js +2 -0
  485. package/dist/index.cjs398.js.map +1 -0
  486. package/dist/index.cjs399.js +2 -0
  487. package/dist/index.cjs399.js.map +1 -0
  488. package/dist/index.cjs40.js +1 -1
  489. package/dist/index.cjs400.js +2 -0
  490. package/dist/index.cjs400.js.map +1 -0
  491. package/dist/index.cjs401.js +2 -0
  492. package/dist/index.cjs401.js.map +1 -0
  493. package/dist/index.cjs402.js +2 -0
  494. package/dist/index.cjs402.js.map +1 -0
  495. package/dist/index.cjs403.js +2 -0
  496. package/dist/index.cjs403.js.map +1 -0
  497. package/dist/index.cjs404.js +2 -0
  498. package/dist/index.cjs404.js.map +1 -0
  499. package/dist/index.cjs405.js +2 -0
  500. package/dist/index.cjs405.js.map +1 -0
  501. package/dist/index.cjs406.js +2 -0
  502. package/dist/index.cjs406.js.map +1 -0
  503. package/dist/index.cjs407.js +2 -0
  504. package/dist/index.cjs407.js.map +1 -0
  505. package/dist/index.cjs408.js +2 -0
  506. package/dist/index.cjs408.js.map +1 -0
  507. package/dist/index.cjs409.js +2 -0
  508. package/dist/index.cjs409.js.map +1 -0
  509. package/dist/index.cjs410.js +2 -0
  510. package/dist/index.cjs410.js.map +1 -0
  511. package/dist/index.cjs411.js +2 -0
  512. package/dist/index.cjs411.js.map +1 -0
  513. package/dist/index.cjs412.js +2 -0
  514. package/dist/index.cjs412.js.map +1 -0
  515. package/dist/index.cjs413.js +2 -0
  516. package/dist/index.cjs413.js.map +1 -0
  517. package/dist/index.cjs414.js +2 -0
  518. package/dist/index.cjs414.js.map +1 -0
  519. package/dist/index.cjs415.js +2 -0
  520. package/dist/index.cjs415.js.map +1 -0
  521. package/dist/index.cjs416.js +2 -0
  522. package/dist/index.cjs416.js.map +1 -0
  523. package/dist/index.cjs417.js +2 -0
  524. package/dist/index.cjs417.js.map +1 -0
  525. package/dist/index.cjs418.js +2 -0
  526. package/dist/index.cjs418.js.map +1 -0
  527. package/dist/index.cjs419.js +2 -0
  528. package/dist/index.cjs419.js.map +1 -0
  529. package/dist/index.cjs42.js +1 -1
  530. package/dist/index.cjs420.js +2 -0
  531. package/dist/index.cjs420.js.map +1 -0
  532. package/dist/index.cjs421.js +2 -0
  533. package/dist/index.cjs421.js.map +1 -0
  534. package/dist/index.cjs422.js +2 -0
  535. package/dist/index.cjs422.js.map +1 -0
  536. package/dist/index.cjs423.js +2 -0
  537. package/dist/index.cjs423.js.map +1 -0
  538. package/dist/index.cjs424.js +2 -0
  539. package/dist/index.cjs424.js.map +1 -0
  540. package/dist/index.cjs425.js +2 -0
  541. package/dist/index.cjs425.js.map +1 -0
  542. package/dist/index.cjs426.js +2 -0
  543. package/dist/index.cjs426.js.map +1 -0
  544. package/dist/index.cjs427.js +2 -0
  545. package/dist/index.cjs427.js.map +1 -0
  546. package/dist/index.cjs428.js +2 -0
  547. package/dist/index.cjs428.js.map +1 -0
  548. package/dist/index.cjs429.js +2 -0
  549. package/dist/index.cjs429.js.map +1 -0
  550. package/dist/index.cjs43.js +1 -1
  551. package/dist/index.cjs430.js +2 -0
  552. package/dist/index.cjs430.js.map +1 -0
  553. package/dist/index.cjs431.js +2 -0
  554. package/dist/index.cjs431.js.map +1 -0
  555. package/dist/index.cjs432.js +2 -0
  556. package/dist/index.cjs432.js.map +1 -0
  557. package/dist/index.cjs433.js +2 -0
  558. package/dist/index.cjs433.js.map +1 -0
  559. package/dist/index.cjs434.js +2 -0
  560. package/dist/index.cjs434.js.map +1 -0
  561. package/dist/index.cjs435.js +2 -0
  562. package/dist/index.cjs435.js.map +1 -0
  563. package/dist/index.cjs436.js +2 -0
  564. package/dist/index.cjs436.js.map +1 -0
  565. package/dist/index.cjs437.js +2 -0
  566. package/dist/index.cjs437.js.map +1 -0
  567. package/dist/index.cjs438.js +2 -0
  568. package/dist/index.cjs438.js.map +1 -0
  569. package/dist/index.cjs439.js +2 -0
  570. package/dist/index.cjs439.js.map +1 -0
  571. package/dist/index.cjs44.js +1 -1
  572. package/dist/index.cjs440.js +2 -0
  573. package/dist/index.cjs440.js.map +1 -0
  574. package/dist/index.cjs441.js +2 -0
  575. package/dist/index.cjs441.js.map +1 -0
  576. package/dist/index.cjs442.js +2 -0
  577. package/dist/index.cjs442.js.map +1 -0
  578. package/dist/index.cjs443.js +2 -0
  579. package/dist/index.cjs443.js.map +1 -0
  580. package/dist/index.cjs444.js +2 -0
  581. package/dist/index.cjs444.js.map +1 -0
  582. package/dist/index.cjs445.js +2 -0
  583. package/dist/index.cjs445.js.map +1 -0
  584. package/dist/index.cjs446.js +2 -0
  585. package/dist/index.cjs446.js.map +1 -0
  586. package/dist/index.cjs447.js +2 -0
  587. package/dist/index.cjs447.js.map +1 -0
  588. package/dist/index.cjs448.js +2 -0
  589. package/dist/index.cjs448.js.map +1 -0
  590. package/dist/index.cjs449.js +2 -0
  591. package/dist/index.cjs449.js.map +1 -0
  592. package/dist/index.cjs450.js +2 -0
  593. package/dist/index.cjs450.js.map +1 -0
  594. package/dist/index.cjs451.js +2 -0
  595. package/dist/index.cjs451.js.map +1 -0
  596. package/dist/index.cjs452.js +2 -0
  597. package/dist/index.cjs452.js.map +1 -0
  598. package/dist/index.cjs453.js +2 -0
  599. package/dist/index.cjs453.js.map +1 -0
  600. package/dist/index.cjs454.js +2 -0
  601. package/dist/index.cjs454.js.map +1 -0
  602. package/dist/index.cjs455.js +2 -0
  603. package/dist/index.cjs455.js.map +1 -0
  604. package/dist/index.cjs456.js +2 -0
  605. package/dist/index.cjs456.js.map +1 -0
  606. package/dist/index.cjs457.js +2 -0
  607. package/dist/index.cjs457.js.map +1 -0
  608. package/dist/index.cjs458.js +2 -0
  609. package/dist/index.cjs458.js.map +1 -0
  610. package/dist/index.cjs459.js +2 -0
  611. package/dist/index.cjs459.js.map +1 -0
  612. package/dist/index.cjs46.js +1 -1
  613. package/dist/index.cjs460.js +2 -0
  614. package/dist/index.cjs460.js.map +1 -0
  615. package/dist/index.cjs461.js +2 -0
  616. package/dist/index.cjs461.js.map +1 -0
  617. package/dist/index.cjs462.js +2 -0
  618. package/dist/index.cjs462.js.map +1 -0
  619. package/dist/index.cjs463.js +2 -0
  620. package/dist/index.cjs463.js.map +1 -0
  621. package/dist/index.cjs464.js +2 -0
  622. package/dist/index.cjs464.js.map +1 -0
  623. package/dist/index.cjs465.js +2 -0
  624. package/dist/index.cjs465.js.map +1 -0
  625. package/dist/index.cjs466.js +2 -0
  626. package/dist/index.cjs466.js.map +1 -0
  627. package/dist/index.cjs467.js +2 -0
  628. package/dist/index.cjs467.js.map +1 -0
  629. package/dist/index.cjs468.js +2 -0
  630. package/dist/index.cjs468.js.map +1 -0
  631. package/dist/index.cjs469.js +2 -0
  632. package/dist/index.cjs469.js.map +1 -0
  633. package/dist/index.cjs47.js +1 -1
  634. package/dist/index.cjs470.js +2 -0
  635. package/dist/index.cjs470.js.map +1 -0
  636. package/dist/index.cjs471.js +2 -0
  637. package/dist/index.cjs471.js.map +1 -0
  638. package/dist/index.cjs472.js +2 -0
  639. package/dist/index.cjs472.js.map +1 -0
  640. package/dist/index.cjs473.js +2 -0
  641. package/dist/index.cjs473.js.map +1 -0
  642. package/dist/index.cjs474.js +2 -0
  643. package/dist/index.cjs474.js.map +1 -0
  644. package/dist/index.cjs475.js +2 -0
  645. package/dist/index.cjs475.js.map +1 -0
  646. package/dist/index.cjs476.js +2 -0
  647. package/dist/index.cjs476.js.map +1 -0
  648. package/dist/index.cjs477.js +2 -0
  649. package/dist/index.cjs477.js.map +1 -0
  650. package/dist/index.cjs478.js +2 -0
  651. package/dist/index.cjs478.js.map +1 -0
  652. package/dist/index.cjs479.js +2 -0
  653. package/dist/index.cjs479.js.map +1 -0
  654. package/dist/index.cjs48.js +1 -1
  655. package/dist/index.cjs480.js +2 -0
  656. package/dist/index.cjs480.js.map +1 -0
  657. package/dist/index.cjs481.js +2 -0
  658. package/dist/index.cjs481.js.map +1 -0
  659. package/dist/index.cjs482.js +2 -0
  660. package/dist/index.cjs482.js.map +1 -0
  661. package/dist/index.cjs483.js +2 -0
  662. package/dist/index.cjs483.js.map +1 -0
  663. package/dist/index.cjs484.js +2 -0
  664. package/dist/index.cjs484.js.map +1 -0
  665. package/dist/index.cjs485.js +2 -0
  666. package/dist/index.cjs485.js.map +1 -0
  667. package/dist/index.cjs486.js +2 -0
  668. package/dist/index.cjs486.js.map +1 -0
  669. package/dist/index.cjs487.js +2 -0
  670. package/dist/index.cjs487.js.map +1 -0
  671. package/dist/index.cjs488.js +2 -0
  672. package/dist/index.cjs488.js.map +1 -0
  673. package/dist/index.cjs489.js +2 -0
  674. package/dist/index.cjs489.js.map +1 -0
  675. package/dist/index.cjs490.js +2 -0
  676. package/dist/index.cjs490.js.map +1 -0
  677. package/dist/index.cjs491.js +2 -0
  678. package/dist/index.cjs491.js.map +1 -0
  679. package/dist/index.cjs492.js +2 -0
  680. package/dist/index.cjs492.js.map +1 -0
  681. package/dist/index.cjs493.js +2 -0
  682. package/dist/index.cjs493.js.map +1 -0
  683. package/dist/index.cjs494.js +2 -0
  684. package/dist/index.cjs494.js.map +1 -0
  685. package/dist/index.cjs495.js +2 -0
  686. package/dist/index.cjs495.js.map +1 -0
  687. package/dist/index.cjs496.js +2 -0
  688. package/dist/index.cjs496.js.map +1 -0
  689. package/dist/index.cjs497.js +2 -0
  690. package/dist/index.cjs497.js.map +1 -0
  691. package/dist/index.cjs498.js +2 -0
  692. package/dist/index.cjs498.js.map +1 -0
  693. package/dist/index.cjs499.js +2 -0
  694. package/dist/index.cjs499.js.map +1 -0
  695. package/dist/index.cjs50.js +1 -1
  696. package/dist/index.cjs500.js +2 -0
  697. package/dist/index.cjs500.js.map +1 -0
  698. package/dist/index.cjs501.js +2 -0
  699. package/dist/index.cjs501.js.map +1 -0
  700. package/dist/index.cjs502.js +2 -0
  701. package/dist/index.cjs502.js.map +1 -0
  702. package/dist/index.cjs503.js +2 -0
  703. package/dist/index.cjs503.js.map +1 -0
  704. package/dist/index.cjs504.js +2 -0
  705. package/dist/index.cjs504.js.map +1 -0
  706. package/dist/index.cjs505.js +2 -0
  707. package/dist/index.cjs505.js.map +1 -0
  708. package/dist/index.cjs506.js +2 -0
  709. package/dist/index.cjs506.js.map +1 -0
  710. package/dist/index.cjs507.js +2 -0
  711. package/dist/index.cjs507.js.map +1 -0
  712. package/dist/index.cjs508.js +2 -0
  713. package/dist/index.cjs508.js.map +1 -0
  714. package/dist/index.cjs509.js +2 -0
  715. package/dist/index.cjs509.js.map +1 -0
  716. package/dist/index.cjs51.js +1 -1
  717. package/dist/index.cjs510.js +2 -0
  718. package/dist/index.cjs510.js.map +1 -0
  719. package/dist/index.cjs511.js +2 -0
  720. package/dist/index.cjs511.js.map +1 -0
  721. package/dist/index.cjs512.js +2 -0
  722. package/dist/index.cjs512.js.map +1 -0
  723. package/dist/index.cjs513.js +2 -0
  724. package/dist/index.cjs513.js.map +1 -0
  725. package/dist/index.cjs514.js +2 -0
  726. package/dist/index.cjs514.js.map +1 -0
  727. package/dist/index.cjs515.js +2 -0
  728. package/dist/index.cjs515.js.map +1 -0
  729. package/dist/index.cjs516.js +2 -0
  730. package/dist/index.cjs516.js.map +1 -0
  731. package/dist/index.cjs517.js +2 -0
  732. package/dist/index.cjs517.js.map +1 -0
  733. package/dist/index.cjs518.js +2 -0
  734. package/dist/index.cjs518.js.map +1 -0
  735. package/dist/index.cjs519.js +2 -0
  736. package/dist/index.cjs519.js.map +1 -0
  737. package/dist/index.cjs52.js +1 -1
  738. package/dist/index.cjs520.js +2 -0
  739. package/dist/index.cjs520.js.map +1 -0
  740. package/dist/index.cjs521.js +2 -0
  741. package/dist/index.cjs521.js.map +1 -0
  742. package/dist/index.cjs522.js +2 -0
  743. package/dist/index.cjs522.js.map +1 -0
  744. package/dist/index.cjs523.js +2 -0
  745. package/dist/index.cjs523.js.map +1 -0
  746. package/dist/index.cjs524.js +2 -0
  747. package/dist/index.cjs524.js.map +1 -0
  748. package/dist/index.cjs525.js +2 -0
  749. package/dist/index.cjs525.js.map +1 -0
  750. package/dist/index.cjs526.js +2 -0
  751. package/dist/index.cjs526.js.map +1 -0
  752. package/dist/index.cjs527.js +2 -0
  753. package/dist/index.cjs527.js.map +1 -0
  754. package/dist/index.cjs528.js +2 -0
  755. package/dist/index.cjs528.js.map +1 -0
  756. package/dist/index.cjs529.js +2 -0
  757. package/dist/index.cjs529.js.map +1 -0
  758. package/dist/index.cjs530.js +2 -0
  759. package/dist/index.cjs530.js.map +1 -0
  760. package/dist/index.cjs531.js +2 -0
  761. package/dist/index.cjs531.js.map +1 -0
  762. package/dist/index.cjs532.js +2 -0
  763. package/dist/index.cjs532.js.map +1 -0
  764. package/dist/index.cjs533.js +2 -0
  765. package/dist/index.cjs533.js.map +1 -0
  766. package/dist/index.cjs534.js +2 -0
  767. package/dist/index.cjs534.js.map +1 -0
  768. package/dist/index.cjs535.js +2 -0
  769. package/dist/index.cjs535.js.map +1 -0
  770. package/dist/index.cjs536.js +2 -0
  771. package/dist/index.cjs536.js.map +1 -0
  772. package/dist/index.cjs537.js +2 -0
  773. package/dist/index.cjs537.js.map +1 -0
  774. package/dist/index.cjs538.js +2 -0
  775. package/dist/index.cjs538.js.map +1 -0
  776. package/dist/index.cjs539.js +2 -0
  777. package/dist/index.cjs539.js.map +1 -0
  778. package/dist/index.cjs540.js +2 -0
  779. package/dist/index.cjs540.js.map +1 -0
  780. package/dist/index.cjs541.js +2 -0
  781. package/dist/index.cjs541.js.map +1 -0
  782. package/dist/index.cjs542.js +2 -0
  783. package/dist/index.cjs542.js.map +1 -0
  784. package/dist/index.cjs543.js +2 -0
  785. package/dist/index.cjs543.js.map +1 -0
  786. package/dist/index.cjs544.js +2 -0
  787. package/dist/index.cjs544.js.map +1 -0
  788. package/dist/index.cjs545.js +2 -0
  789. package/dist/index.cjs545.js.map +1 -0
  790. package/dist/index.cjs546.js +2 -0
  791. package/dist/index.cjs546.js.map +1 -0
  792. package/dist/index.cjs547.js +2 -0
  793. package/dist/index.cjs547.js.map +1 -0
  794. package/dist/index.cjs548.js +2 -0
  795. package/dist/index.cjs548.js.map +1 -0
  796. package/dist/index.cjs549.js +2 -0
  797. package/dist/index.cjs549.js.map +1 -0
  798. package/dist/index.cjs550.js +2 -0
  799. package/dist/index.cjs550.js.map +1 -0
  800. package/dist/index.cjs551.js +2 -0
  801. package/dist/index.cjs551.js.map +1 -0
  802. package/dist/index.cjs552.js +2 -0
  803. package/dist/index.cjs552.js.map +1 -0
  804. package/dist/index.cjs553.js +2 -0
  805. package/dist/index.cjs553.js.map +1 -0
  806. package/dist/index.cjs554.js +2 -0
  807. package/dist/index.cjs554.js.map +1 -0
  808. package/dist/index.cjs555.js +2 -0
  809. package/dist/index.cjs555.js.map +1 -0
  810. package/dist/index.cjs556.js +2 -0
  811. package/dist/index.cjs556.js.map +1 -0
  812. package/dist/index.cjs557.js +2 -0
  813. package/dist/index.cjs557.js.map +1 -0
  814. package/dist/index.cjs558.js +2 -0
  815. package/dist/index.cjs558.js.map +1 -0
  816. package/dist/index.cjs559.js +2 -0
  817. package/dist/index.cjs559.js.map +1 -0
  818. package/dist/index.cjs56.js +1 -1
  819. package/dist/index.cjs560.js +2 -0
  820. package/dist/index.cjs560.js.map +1 -0
  821. package/dist/index.cjs561.js +2 -0
  822. package/dist/index.cjs561.js.map +1 -0
  823. package/dist/index.cjs562.js +2 -0
  824. package/dist/index.cjs562.js.map +1 -0
  825. package/dist/index.cjs563.js +2 -0
  826. package/dist/index.cjs563.js.map +1 -0
  827. package/dist/index.cjs564.js +9 -0
  828. package/dist/index.cjs564.js.map +1 -0
  829. package/dist/index.cjs565.js +2 -0
  830. package/dist/index.cjs565.js.map +1 -0
  831. package/dist/index.cjs566.js +2 -0
  832. package/dist/index.cjs566.js.map +1 -0
  833. package/dist/index.cjs567.js +2 -0
  834. package/dist/index.cjs567.js.map +1 -0
  835. package/dist/index.cjs568.js +2 -0
  836. package/dist/index.cjs568.js.map +1 -0
  837. package/dist/index.cjs569.js +2 -0
  838. package/dist/index.cjs569.js.map +1 -0
  839. package/dist/index.cjs57.js +1 -1
  840. package/dist/index.cjs570.js +2 -0
  841. package/dist/index.cjs570.js.map +1 -0
  842. package/dist/index.cjs571.js +2 -0
  843. package/dist/index.cjs571.js.map +1 -0
  844. package/dist/index.cjs572.js +2 -0
  845. package/dist/index.cjs572.js.map +1 -0
  846. package/dist/index.cjs573.js +2 -0
  847. package/dist/index.cjs573.js.map +1 -0
  848. package/dist/index.cjs574.js +2 -0
  849. package/dist/index.cjs574.js.map +1 -0
  850. package/dist/index.cjs575.js +2 -0
  851. package/dist/index.cjs575.js.map +1 -0
  852. package/dist/index.cjs576.js +2 -0
  853. package/dist/index.cjs576.js.map +1 -0
  854. package/dist/index.cjs577.js +2 -0
  855. package/dist/index.cjs577.js.map +1 -0
  856. package/dist/index.cjs578.js +2 -0
  857. package/dist/index.cjs578.js.map +1 -0
  858. package/dist/index.cjs579.js +2 -0
  859. package/dist/index.cjs579.js.map +1 -0
  860. package/dist/index.cjs58.js +1 -1
  861. package/dist/index.cjs580.js +2 -0
  862. package/dist/index.cjs580.js.map +1 -0
  863. package/dist/index.cjs581.js +2 -0
  864. package/dist/index.cjs581.js.map +1 -0
  865. package/dist/index.cjs582.js +2 -0
  866. package/dist/index.cjs582.js.map +1 -0
  867. package/dist/index.cjs583.js +2 -0
  868. package/dist/index.cjs583.js.map +1 -0
  869. package/dist/index.cjs584.js +2 -0
  870. package/dist/index.cjs584.js.map +1 -0
  871. package/dist/index.cjs585.js +2 -0
  872. package/dist/index.cjs585.js.map +1 -0
  873. package/dist/index.cjs586.js +2 -0
  874. package/dist/index.cjs586.js.map +1 -0
  875. package/dist/index.cjs587.js +2 -0
  876. package/dist/index.cjs587.js.map +1 -0
  877. package/dist/index.cjs588.js +2 -0
  878. package/dist/index.cjs588.js.map +1 -0
  879. package/dist/index.cjs589.js +2 -0
  880. package/dist/index.cjs589.js.map +1 -0
  881. package/dist/index.cjs590.js +2 -0
  882. package/dist/index.cjs590.js.map +1 -0
  883. package/dist/index.cjs591.js +2 -0
  884. package/dist/index.cjs591.js.map +1 -0
  885. package/dist/index.cjs592.js +2 -0
  886. package/dist/index.cjs592.js.map +1 -0
  887. package/dist/index.cjs593.js +2 -0
  888. package/dist/index.cjs593.js.map +1 -0
  889. package/dist/index.cjs594.js +2 -0
  890. package/dist/index.cjs594.js.map +1 -0
  891. package/dist/index.cjs595.js +2 -0
  892. package/dist/index.cjs595.js.map +1 -0
  893. package/dist/index.cjs596.js +2 -0
  894. package/dist/index.cjs596.js.map +1 -0
  895. package/dist/index.cjs597.js +2 -0
  896. package/dist/index.cjs597.js.map +1 -0
  897. package/dist/index.cjs598.js +2 -0
  898. package/dist/index.cjs598.js.map +1 -0
  899. package/dist/index.cjs599.js +2 -0
  900. package/dist/index.cjs599.js.map +1 -0
  901. package/dist/index.cjs60.js +1 -1
  902. package/dist/index.cjs600.js +2 -0
  903. package/dist/index.cjs600.js.map +1 -0
  904. package/dist/index.cjs601.js +2 -0
  905. package/dist/index.cjs601.js.map +1 -0
  906. package/dist/index.cjs602.js +2 -0
  907. package/dist/index.cjs602.js.map +1 -0
  908. package/dist/index.cjs603.js +2 -0
  909. package/dist/index.cjs603.js.map +1 -0
  910. package/dist/index.cjs604.js +2 -0
  911. package/dist/index.cjs604.js.map +1 -0
  912. package/dist/index.cjs605.js +2 -0
  913. package/dist/index.cjs605.js.map +1 -0
  914. package/dist/index.cjs606.js +2 -0
  915. package/dist/index.cjs606.js.map +1 -0
  916. package/dist/index.cjs607.js +2 -0
  917. package/dist/index.cjs607.js.map +1 -0
  918. package/dist/index.cjs608.js +2 -0
  919. package/dist/index.cjs608.js.map +1 -0
  920. package/dist/index.cjs609.js +2 -0
  921. package/dist/index.cjs609.js.map +1 -0
  922. package/dist/index.cjs61.js +1 -1
  923. package/dist/index.cjs610.js +2 -0
  924. package/dist/index.cjs610.js.map +1 -0
  925. package/dist/index.cjs611.js +2 -0
  926. package/dist/index.cjs611.js.map +1 -0
  927. package/dist/index.cjs612.js +2 -0
  928. package/dist/index.cjs612.js.map +1 -0
  929. package/dist/index.cjs613.js +2 -0
  930. package/dist/index.cjs613.js.map +1 -0
  931. package/dist/index.cjs614.js +2 -0
  932. package/dist/index.cjs614.js.map +1 -0
  933. package/dist/index.cjs615.js +2 -0
  934. package/dist/index.cjs615.js.map +1 -0
  935. package/dist/index.cjs616.js +4 -0
  936. package/dist/index.cjs616.js.map +1 -0
  937. package/dist/index.cjs617.js +2 -0
  938. package/dist/index.cjs617.js.map +1 -0
  939. package/dist/index.cjs618.js +2 -0
  940. package/dist/index.cjs618.js.map +1 -0
  941. package/dist/index.cjs619.js +2 -0
  942. package/dist/index.cjs619.js.map +1 -0
  943. package/dist/index.cjs620.js +2 -0
  944. package/dist/index.cjs620.js.map +1 -0
  945. package/dist/index.cjs621.js +2 -0
  946. package/dist/index.cjs621.js.map +1 -0
  947. package/dist/index.cjs622.js +61 -0
  948. package/dist/index.cjs622.js.map +1 -0
  949. package/dist/index.cjs623.js +2 -0
  950. package/dist/index.cjs623.js.map +1 -0
  951. package/dist/index.cjs624.js +2 -0
  952. package/dist/index.cjs624.js.map +1 -0
  953. package/dist/index.cjs625.js +2 -0
  954. package/dist/index.cjs625.js.map +1 -0
  955. package/dist/index.cjs626.js +2 -0
  956. package/dist/index.cjs626.js.map +1 -0
  957. package/dist/index.cjs627.js +2 -0
  958. package/dist/index.cjs627.js.map +1 -0
  959. package/dist/index.cjs628.js +2 -0
  960. package/dist/index.cjs628.js.map +1 -0
  961. package/dist/index.cjs629.js +2 -0
  962. package/dist/index.cjs629.js.map +1 -0
  963. package/dist/index.cjs63.js +1 -1
  964. package/dist/index.cjs630.js +4 -0
  965. package/dist/index.cjs630.js.map +1 -0
  966. package/dist/index.cjs631.js +2 -0
  967. package/dist/index.cjs631.js.map +1 -0
  968. package/dist/index.cjs632.js +2 -0
  969. package/dist/index.cjs632.js.map +1 -0
  970. package/dist/index.cjs67.js +1 -1
  971. package/dist/index.cjs67.js.map +1 -1
  972. package/dist/index.cjs68.js +1 -440
  973. package/dist/index.cjs68.js.map +1 -1
  974. package/dist/index.cjs69.js +1 -1
  975. package/dist/index.cjs69.js.map +1 -1
  976. package/dist/index.cjs70.js.map +1 -1
  977. package/dist/index.cjs71.js.map +1 -1
  978. package/dist/index.cjs72.js.map +1 -1
  979. package/dist/index.cjs73.js +1 -1
  980. package/dist/index.cjs73.js.map +1 -1
  981. package/dist/index.cjs74.js +1 -1
  982. package/dist/index.cjs74.js.map +1 -1
  983. package/dist/index.cjs75.js +1 -1
  984. package/dist/index.cjs75.js.map +1 -1
  985. package/dist/index.cjs76.js +1 -1
  986. package/dist/index.cjs76.js.map +1 -1
  987. package/dist/index.cjs77.js.map +1 -1
  988. package/dist/index.cjs78.js.map +1 -1
  989. package/dist/index.cjs93.js +1 -1
  990. package/dist/index.es100.js +1 -1
  991. package/dist/index.es101.js +1 -1
  992. package/dist/index.es102.js +1 -1
  993. package/dist/index.es103.js +1 -1
  994. package/dist/index.es104.js +1 -1
  995. package/dist/index.es105.js +1 -1
  996. package/dist/index.es106.js +1 -1
  997. package/dist/index.es107.js +1 -1
  998. package/dist/index.es108.js +1 -1
  999. package/dist/index.es111.js +1 -1
  1000. package/dist/index.es112.js +1 -1
  1001. package/dist/index.es114.js +3 -3
  1002. package/dist/index.es115.js +1 -1
  1003. package/dist/index.es116.js +2 -2
  1004. package/dist/index.es117.js +1 -1
  1005. package/dist/index.es12.js +6 -7
  1006. package/dist/index.es12.js.map +1 -1
  1007. package/dist/index.es122.js +1 -1
  1008. package/dist/index.es123.js +1 -1
  1009. package/dist/index.es124.js +1 -1
  1010. package/dist/index.es125.js +1 -1
  1011. package/dist/index.es128.js +2 -2
  1012. package/dist/index.es129.js +2 -2
  1013. package/dist/index.es13.js +8 -8
  1014. package/dist/index.es13.js.map +1 -1
  1015. package/dist/index.es130.js +1 -1
  1016. package/dist/index.es134.js +2 -2
  1017. package/dist/index.es137.js +1 -1
  1018. package/dist/index.es141.js +1 -1
  1019. package/dist/index.es144.js +1 -1
  1020. package/dist/index.es152.js +1 -1
  1021. package/dist/index.es153.js +1 -1
  1022. package/dist/index.es154.js +1 -1
  1023. package/dist/index.es155.js +2 -2
  1024. package/dist/index.es156.js +1 -1
  1025. package/dist/index.es157.js +1 -1
  1026. package/dist/index.es158.js +1 -1
  1027. package/dist/index.es16.js +4 -4
  1028. package/dist/index.es160.js +2 -2
  1029. package/dist/index.es161.js +2 -2
  1030. package/dist/index.es162.js +1 -1
  1031. package/dist/index.es163.js +1 -1
  1032. package/dist/index.es164.js +1 -1
  1033. package/dist/index.es165.js +1 -1
  1034. package/dist/index.es166.js +2 -2
  1035. package/dist/index.es167.js +2 -2
  1036. package/dist/index.es168.js +1 -1
  1037. package/dist/index.es17.js +3 -3
  1038. package/dist/index.es171.js +2 -2
  1039. package/dist/index.es172.js +2 -2
  1040. package/dist/index.es174.js +2 -2
  1041. package/dist/index.es175.js +1 -1
  1042. package/dist/index.es176.js +2 -2
  1043. package/dist/index.es177.js +1 -1
  1044. package/dist/index.es178.js +2 -2
  1045. package/dist/index.es179.js +1 -1
  1046. package/dist/index.es18.js +3 -3
  1047. package/dist/index.es180.js +1 -1
  1048. package/dist/index.es181.js +1 -1
  1049. package/dist/index.es187.js +1 -1
  1050. package/dist/index.es188.js +2 -2
  1051. package/dist/index.es189.js +1 -1
  1052. package/dist/index.es19.js +1 -1
  1053. package/dist/index.es190.js +1 -1
  1054. package/dist/index.es191.js +1 -1
  1055. package/dist/index.es194.js +14 -1
  1056. package/dist/index.es194.js.map +1 -1
  1057. package/dist/index.es195.js +199 -239
  1058. package/dist/index.es195.js.map +1 -1
  1059. package/dist/index.es196.js +8 -42
  1060. package/dist/index.es196.js.map +1 -1
  1061. package/dist/index.es197.js +7 -3
  1062. package/dist/index.es197.js.map +1 -1
  1063. package/dist/index.es198.js +5 -11
  1064. package/dist/index.es198.js.map +1 -1
  1065. package/dist/index.es199.js +3 -13
  1066. package/dist/index.es199.js.map +1 -1
  1067. package/dist/index.es20.js +1 -1
  1068. package/dist/index.es200.js +3 -33
  1069. package/dist/index.es200.js.map +1 -1
  1070. package/dist/index.es201.js +34 -12
  1071. package/dist/index.es201.js.map +1 -1
  1072. package/dist/index.es202.js +3 -7
  1073. package/dist/index.es202.js.map +1 -1
  1074. package/dist/index.es203.js +22 -7
  1075. package/dist/index.es203.js.map +1 -1
  1076. package/dist/index.es204.js +2 -7
  1077. package/dist/index.es204.js.map +1 -1
  1078. package/dist/index.es205.js +3 -6
  1079. package/dist/index.es205.js.map +1 -1
  1080. package/dist/index.es206.js +2 -5
  1081. package/dist/index.es206.js.map +1 -1
  1082. package/dist/index.es207.js +31 -3
  1083. package/dist/index.es207.js.map +1 -1
  1084. package/dist/index.es208.js +13 -9
  1085. package/dist/index.es208.js.map +1 -1
  1086. package/dist/index.es209.js +13 -18
  1087. package/dist/index.es209.js.map +1 -1
  1088. package/dist/index.es21.js +1 -1
  1089. package/dist/index.es210.js +8 -20
  1090. package/dist/index.es210.js.map +1 -1
  1091. package/dist/index.es211.js +61 -12
  1092. package/dist/index.es211.js.map +1 -1
  1093. package/dist/index.es212.js +61 -13
  1094. package/dist/index.es212.js.map +1 -1
  1095. package/dist/index.es213.js +37 -6
  1096. package/dist/index.es213.js.map +1 -1
  1097. package/dist/index.es214.js +476 -7
  1098. package/dist/index.es214.js.map +1 -1
  1099. package/dist/index.es215.js +164 -6
  1100. package/dist/index.es215.js.map +1 -1
  1101. package/dist/index.es216.js +70 -20
  1102. package/dist/index.es216.js.map +1 -1
  1103. package/dist/index.es217.js +48 -8
  1104. package/dist/index.es217.js.map +1 -1
  1105. package/dist/index.es218.js +380 -9
  1106. package/dist/index.es218.js.map +1 -1
  1107. package/dist/index.es219.js +19 -6
  1108. package/dist/index.es219.js.map +1 -1
  1109. package/dist/index.es22.js +1 -1
  1110. package/dist/index.es220.js +124 -11
  1111. package/dist/index.es220.js.map +1 -1
  1112. package/dist/index.es221.js +355 -8
  1113. package/dist/index.es221.js.map +1 -1
  1114. package/dist/index.es222.js +218 -21
  1115. package/dist/index.es222.js.map +1 -1
  1116. package/dist/index.es223.js +23 -11
  1117. package/dist/index.es223.js.map +1 -1
  1118. package/dist/index.es224.js +58 -17
  1119. package/dist/index.es224.js.map +1 -1
  1120. package/dist/index.es225.js +106 -4
  1121. package/dist/index.es225.js.map +1 -1
  1122. package/dist/index.es226.js +29 -18
  1123. package/dist/index.es226.js.map +1 -1
  1124. package/dist/index.es227.js +29 -12
  1125. package/dist/index.es227.js.map +1 -1
  1126. package/dist/index.es228.js +96 -3
  1127. package/dist/index.es228.js.map +1 -1
  1128. package/dist/index.es229.js +35 -5
  1129. package/dist/index.es229.js.map +1 -1
  1130. package/dist/index.es23.js +1 -1
  1131. package/dist/index.es230.js +18 -148
  1132. package/dist/index.es230.js.map +1 -1
  1133. package/dist/index.es231.js +52 -6
  1134. package/dist/index.es231.js.map +1 -1
  1135. package/dist/index.es232.js +7 -5
  1136. package/dist/index.es232.js.map +1 -1
  1137. package/dist/index.es233.js +529 -3
  1138. package/dist/index.es233.js.map +1 -1
  1139. package/dist/index.es234.js +28 -3
  1140. package/dist/index.es234.js.map +1 -1
  1141. package/dist/index.es235.js +6 -34
  1142. package/dist/index.es235.js.map +1 -1
  1143. package/dist/index.es236.js +7 -3
  1144. package/dist/index.es236.js.map +1 -1
  1145. package/dist/index.es237.js +4 -23
  1146. package/dist/index.es237.js.map +1 -1
  1147. package/dist/index.es238.js +5 -2
  1148. package/dist/index.es238.js.map +1 -1
  1149. package/dist/index.es239.js +5 -3
  1150. package/dist/index.es239.js.map +1 -1
  1151. package/dist/index.es24.js +1 -1
  1152. package/dist/index.es240.js +11 -2
  1153. package/dist/index.es240.js.map +1 -1
  1154. package/dist/index.es241.js +17 -29
  1155. package/dist/index.es241.js.map +1 -1
  1156. package/dist/index.es242.js +21 -13
  1157. package/dist/index.es242.js.map +1 -1
  1158. package/dist/index.es243.js +12 -13
  1159. package/dist/index.es243.js.map +1 -1
  1160. package/dist/index.es244.js +14 -8
  1161. package/dist/index.es244.js.map +1 -1
  1162. package/dist/index.es245.js +5 -20
  1163. package/dist/index.es245.js.map +1 -1
  1164. package/dist/index.es246.js +7 -22
  1165. package/dist/index.es246.js.map +1 -1
  1166. package/dist/index.es247.js +6 -7
  1167. package/dist/index.es247.js.map +1 -1
  1168. package/dist/index.es248.js +21 -2
  1169. package/dist/index.es248.js.map +1 -1
  1170. package/dist/index.es249.js +8 -4
  1171. package/dist/index.es249.js.map +1 -1
  1172. package/dist/index.es25.js +1 -1
  1173. package/dist/index.es250.js +9 -7507
  1174. package/dist/index.es250.js.map +1 -1
  1175. package/dist/index.es251.js +4 -2
  1176. package/dist/index.es251.js.map +1 -1
  1177. package/dist/index.es252.js +10 -24
  1178. package/dist/index.es252.js.map +1 -1
  1179. package/dist/index.es253.js +7 -16
  1180. package/dist/index.es253.js.map +1 -1
  1181. package/dist/index.es254.js +20 -30
  1182. package/dist/index.es254.js.map +1 -1
  1183. package/dist/index.es255.js +10 -21
  1184. package/dist/index.es255.js.map +1 -1
  1185. package/dist/index.es256.js +16 -73
  1186. package/dist/index.es256.js.map +1 -1
  1187. package/dist/index.es257.js +4 -21
  1188. package/dist/index.es257.js.map +1 -1
  1189. package/dist/index.es258.js +16 -39
  1190. package/dist/index.es258.js.map +1 -1
  1191. package/dist/index.es259.js +11 -49
  1192. package/dist/index.es259.js.map +1 -1
  1193. package/dist/index.es26.js +2 -2
  1194. package/dist/index.es260.js +3 -7
  1195. package/dist/index.es260.js.map +1 -1
  1196. package/dist/index.es261.js +4 -20
  1197. package/dist/index.es261.js.map +1 -1
  1198. package/dist/index.es262.js +242 -65
  1199. package/dist/index.es262.js.map +1 -1
  1200. package/dist/index.es263.js +40 -40
  1201. package/dist/index.es263.js.map +1 -1
  1202. package/dist/index.es264.js +3 -64
  1203. package/dist/index.es264.js.map +1 -1
  1204. package/dist/index.es265.js +9 -7
  1205. package/dist/index.es265.js.map +1 -1
  1206. package/dist/index.es266.js +10 -3
  1207. package/dist/index.es266.js.map +1 -1
  1208. package/dist/index.es267.js +29 -11
  1209. package/dist/index.es267.js.map +1 -1
  1210. package/dist/index.es268.js +12 -58
  1211. package/dist/index.es268.js.map +1 -1
  1212. package/dist/index.es269.js +4 -49
  1213. package/dist/index.es269.js.map +1 -1
  1214. package/dist/index.es27.js +2 -2
  1215. package/dist/index.es270.js +22 -2
  1216. package/dist/index.es270.js.map +1 -1
  1217. package/dist/index.es271.js +20 -15
  1218. package/dist/index.es271.js.map +1 -1
  1219. package/dist/index.es272.js +7506 -4
  1220. package/dist/index.es272.js.map +1 -1
  1221. package/dist/index.es273.js +2 -70
  1222. package/dist/index.es273.js.map +1 -1
  1223. package/dist/index.es274.js +3 -4
  1224. package/dist/index.es274.js.map +1 -1
  1225. package/dist/index.es275.js +268 -21
  1226. package/dist/index.es275.js.map +1 -1
  1227. package/dist/index.es276.js +11 -0
  1228. package/dist/index.es276.js.map +1 -0
  1229. package/dist/index.es277.js +9 -0
  1230. package/dist/index.es277.js.map +1 -0
  1231. package/dist/index.es278.js +24 -0
  1232. package/dist/index.es278.js.map +1 -0
  1233. package/dist/index.es279.js +26 -0
  1234. package/dist/index.es279.js.map +1 -0
  1235. package/dist/index.es280.js +28 -0
  1236. package/dist/index.es280.js.map +1 -0
  1237. package/dist/index.es281.js +20 -0
  1238. package/dist/index.es281.js.map +1 -0
  1239. package/dist/index.es282.js +34 -0
  1240. package/dist/index.es282.js.map +1 -0
  1241. package/dist/index.es283.js +25 -0
  1242. package/dist/index.es283.js.map +1 -0
  1243. package/dist/index.es284.js +78 -0
  1244. package/dist/index.es284.js.map +1 -0
  1245. package/dist/index.es285.js +24 -0
  1246. package/dist/index.es285.js.map +1 -0
  1247. package/dist/index.es286.js +44 -0
  1248. package/dist/index.es286.js.map +1 -0
  1249. package/dist/index.es287.js +53 -0
  1250. package/dist/index.es287.js.map +1 -0
  1251. package/dist/index.es288.js +11 -0
  1252. package/dist/index.es288.js.map +1 -0
  1253. package/dist/index.es289.js +24 -0
  1254. package/dist/index.es289.js.map +1 -0
  1255. package/dist/index.es290.js +69 -0
  1256. package/dist/index.es290.js.map +1 -0
  1257. package/dist/index.es291.js +46 -0
  1258. package/dist/index.es291.js.map +1 -0
  1259. package/dist/index.es292.js +67 -0
  1260. package/dist/index.es292.js.map +1 -0
  1261. package/dist/index.es293.js +12 -0
  1262. package/dist/index.es293.js.map +1 -0
  1263. package/dist/index.es294.js +7 -0
  1264. package/dist/index.es294.js.map +1 -0
  1265. package/dist/index.es295.js +16 -0
  1266. package/dist/index.es295.js.map +1 -0
  1267. package/dist/index.es296.js +63 -0
  1268. package/dist/index.es296.js.map +1 -0
  1269. package/dist/index.es297.js +53 -0
  1270. package/dist/index.es297.js.map +1 -0
  1271. package/dist/index.es298.js +418 -0
  1272. package/dist/index.es298.js.map +1 -0
  1273. package/dist/index.es299.js +80 -0
  1274. package/dist/index.es299.js.map +1 -0
  1275. package/dist/index.es300.js +246 -0
  1276. package/dist/index.es300.js.map +1 -0
  1277. package/dist/index.es301.js +33 -0
  1278. package/dist/index.es301.js.map +1 -0
  1279. package/dist/index.es302.js +157 -0
  1280. package/dist/index.es302.js.map +1 -0
  1281. package/dist/index.es303.js +21 -0
  1282. package/dist/index.es303.js.map +1 -0
  1283. package/dist/index.es304.js +17 -0
  1284. package/dist/index.es304.js.map +1 -0
  1285. package/dist/index.es305.js +565 -0
  1286. package/dist/index.es305.js.map +1 -0
  1287. package/dist/index.es306.js +354 -0
  1288. package/dist/index.es306.js.map +1 -0
  1289. package/dist/index.es307.js +67 -0
  1290. package/dist/index.es307.js.map +1 -0
  1291. package/dist/index.es308.js +50 -0
  1292. package/dist/index.es308.js.map +1 -0
  1293. package/dist/index.es309.js +215 -0
  1294. package/dist/index.es309.js.map +1 -0
  1295. package/dist/index.es310.js +65 -0
  1296. package/dist/index.es310.js.map +1 -0
  1297. package/dist/index.es311.js +63 -0
  1298. package/dist/index.es311.js.map +1 -0
  1299. package/dist/index.es312.js +49 -0
  1300. package/dist/index.es312.js.map +1 -0
  1301. package/dist/index.es313.js +55 -0
  1302. package/dist/index.es313.js.map +1 -0
  1303. package/dist/index.es314.js +329 -0
  1304. package/dist/index.es314.js.map +1 -0
  1305. package/dist/index.es315.js +314 -0
  1306. package/dist/index.es315.js.map +1 -0
  1307. package/dist/index.es316.js +259 -0
  1308. package/dist/index.es316.js.map +1 -0
  1309. package/dist/index.es317.js +60 -0
  1310. package/dist/index.es317.js.map +1 -0
  1311. package/dist/index.es318.js +218 -0
  1312. package/dist/index.es318.js.map +1 -0
  1313. package/dist/index.es319.js +204 -0
  1314. package/dist/index.es319.js.map +1 -0
  1315. package/dist/index.es320.js +20 -0
  1316. package/dist/index.es320.js.map +1 -0
  1317. package/dist/index.es321.js +30 -0
  1318. package/dist/index.es321.js.map +1 -0
  1319. package/dist/index.es322.js +204 -0
  1320. package/dist/index.es322.js.map +1 -0
  1321. package/dist/index.es323.js +9 -0
  1322. package/dist/index.es323.js.map +1 -0
  1323. package/dist/index.es324.js +89 -0
  1324. package/dist/index.es324.js.map +1 -0
  1325. package/dist/index.es325.js +62 -0
  1326. package/dist/index.es325.js.map +1 -0
  1327. package/dist/index.es326.js +17 -0
  1328. package/dist/index.es326.js.map +1 -0
  1329. package/dist/index.es327.js +107 -0
  1330. package/dist/index.es327.js.map +1 -0
  1331. package/dist/index.es328.js +19 -0
  1332. package/dist/index.es328.js.map +1 -0
  1333. package/dist/index.es329.js +30 -0
  1334. package/dist/index.es329.js.map +1 -0
  1335. package/dist/index.es330.js +132 -0
  1336. package/dist/index.es330.js.map +1 -0
  1337. package/dist/index.es331.js +20 -0
  1338. package/dist/index.es331.js.map +1 -0
  1339. package/dist/index.es332.js +8 -0
  1340. package/dist/index.es332.js.map +1 -0
  1341. package/dist/index.es333.js +69 -0
  1342. package/dist/index.es333.js.map +1 -0
  1343. package/dist/index.es334.js +164 -0
  1344. package/dist/index.es334.js.map +1 -0
  1345. package/dist/index.es335.js +142 -0
  1346. package/dist/index.es335.js.map +1 -0
  1347. package/dist/index.es336.js +31 -0
  1348. package/dist/index.es336.js.map +1 -0
  1349. package/dist/index.es337.js +6 -0
  1350. package/dist/index.es337.js.map +1 -0
  1351. package/dist/index.es338.js +8 -0
  1352. package/dist/index.es338.js.map +1 -0
  1353. package/dist/index.es339.js +73 -0
  1354. package/dist/index.es339.js.map +1 -0
  1355. package/dist/index.es340.js +19 -0
  1356. package/dist/index.es340.js.map +1 -0
  1357. package/dist/index.es341.js +65 -0
  1358. package/dist/index.es341.js.map +1 -0
  1359. package/dist/index.es342.js +47 -0
  1360. package/dist/index.es342.js.map +1 -0
  1361. package/dist/index.es343.js +25 -0
  1362. package/dist/index.es343.js.map +1 -0
  1363. package/dist/index.es344.js +11 -0
  1364. package/dist/index.es344.js.map +1 -0
  1365. package/dist/index.es345.js +40 -0
  1366. package/dist/index.es345.js.map +1 -0
  1367. package/dist/index.es346.js +132 -0
  1368. package/dist/index.es346.js.map +1 -0
  1369. package/dist/index.es347.js +48 -0
  1370. package/dist/index.es347.js.map +1 -0
  1371. package/dist/index.es348.js +223 -0
  1372. package/dist/index.es348.js.map +1 -0
  1373. package/dist/index.es349.js +40 -0
  1374. package/dist/index.es349.js.map +1 -0
  1375. package/dist/index.es350.js +286 -0
  1376. package/dist/index.es350.js.map +1 -0
  1377. package/dist/index.es351.js +63 -0
  1378. package/dist/index.es351.js.map +1 -0
  1379. package/dist/index.es352.js +54 -0
  1380. package/dist/index.es352.js.map +1 -0
  1381. package/dist/index.es353.js +251 -0
  1382. package/dist/index.es353.js.map +1 -0
  1383. package/dist/index.es354.js +30 -0
  1384. package/dist/index.es354.js.map +1 -0
  1385. package/dist/index.es355.js +7 -0
  1386. package/dist/index.es355.js.map +1 -0
  1387. package/dist/index.es356.js +7 -0
  1388. package/dist/index.es356.js.map +1 -0
  1389. package/dist/index.es357.js +28 -0
  1390. package/dist/index.es357.js.map +1 -0
  1391. package/dist/index.es358.js +261 -0
  1392. package/dist/index.es358.js.map +1 -0
  1393. package/dist/index.es359.js +108 -0
  1394. package/dist/index.es359.js.map +1 -0
  1395. package/dist/index.es360.js +206 -0
  1396. package/dist/index.es360.js.map +1 -0
  1397. package/dist/index.es361.js +45 -0
  1398. package/dist/index.es361.js.map +1 -0
  1399. package/dist/index.es362.js +18 -0
  1400. package/dist/index.es362.js.map +1 -0
  1401. package/dist/index.es363.js +11 -0
  1402. package/dist/index.es363.js.map +1 -0
  1403. package/dist/index.es364.js +64 -0
  1404. package/dist/index.es364.js.map +1 -0
  1405. package/dist/index.es365.js +50 -0
  1406. package/dist/index.es365.js.map +1 -0
  1407. package/dist/index.es366.js +45 -0
  1408. package/dist/index.es366.js.map +1 -0
  1409. package/dist/index.es367.js +92 -0
  1410. package/dist/index.es367.js.map +1 -0
  1411. package/dist/index.es368.js +89 -0
  1412. package/dist/index.es368.js.map +1 -0
  1413. package/dist/index.es369.js +57 -0
  1414. package/dist/index.es369.js.map +1 -0
  1415. package/dist/index.es370.js +61 -0
  1416. package/dist/index.es370.js.map +1 -0
  1417. package/dist/index.es371.js +58 -0
  1418. package/dist/index.es371.js.map +1 -0
  1419. package/dist/index.es372.js +147 -0
  1420. package/dist/index.es372.js.map +1 -0
  1421. package/dist/index.es373.js +58 -0
  1422. package/dist/index.es373.js.map +1 -0
  1423. package/dist/index.es374.js +85 -0
  1424. package/dist/index.es374.js.map +1 -0
  1425. package/dist/index.es375.js +9 -0
  1426. package/dist/index.es375.js.map +1 -0
  1427. package/dist/index.es376.js +48 -0
  1428. package/dist/index.es376.js.map +1 -0
  1429. package/dist/index.es377.js +13 -0
  1430. package/dist/index.es377.js.map +1 -0
  1431. package/dist/index.es378.js +35 -0
  1432. package/dist/index.es378.js.map +1 -0
  1433. package/dist/index.es379.js +31 -0
  1434. package/dist/index.es379.js.map +1 -0
  1435. package/dist/index.es38.js +1 -1
  1436. package/dist/index.es380.js +1360 -0
  1437. package/dist/index.es380.js.map +1 -0
  1438. package/dist/index.es381.js +9 -0
  1439. package/dist/index.es381.js.map +1 -0
  1440. package/dist/index.es382.js +12 -0
  1441. package/dist/index.es382.js.map +1 -0
  1442. package/dist/index.es383.js +10 -0
  1443. package/dist/index.es383.js.map +1 -0
  1444. package/dist/index.es384.js +120 -0
  1445. package/dist/index.es384.js.map +1 -0
  1446. package/dist/index.es385.js +105 -0
  1447. package/dist/index.es385.js.map +1 -0
  1448. package/dist/index.es386.js +23 -0
  1449. package/dist/index.es386.js.map +1 -0
  1450. package/dist/index.es387.js +95 -0
  1451. package/dist/index.es387.js.map +1 -0
  1452. package/dist/index.es388.js +68 -0
  1453. package/dist/index.es388.js.map +1 -0
  1454. package/dist/index.es389.js +16 -0
  1455. package/dist/index.es389.js.map +1 -0
  1456. package/dist/index.es39.js +1 -1
  1457. package/dist/index.es390.js +61 -0
  1458. package/dist/index.es390.js.map +1 -0
  1459. package/dist/index.es391.js +55 -0
  1460. package/dist/index.es391.js.map +1 -0
  1461. package/dist/index.es392.js +23 -0
  1462. package/dist/index.es392.js.map +1 -0
  1463. package/dist/index.es393.js +34 -0
  1464. package/dist/index.es393.js.map +1 -0
  1465. package/dist/index.es394.js +47 -0
  1466. package/dist/index.es394.js.map +1 -0
  1467. package/dist/index.es395.js +35 -0
  1468. package/dist/index.es395.js.map +1 -0
  1469. package/dist/index.es396.js +59 -0
  1470. package/dist/index.es396.js.map +1 -0
  1471. package/dist/index.es397.js +62 -0
  1472. package/dist/index.es397.js.map +1 -0
  1473. package/dist/index.es398.js +32 -0
  1474. package/dist/index.es398.js.map +1 -0
  1475. package/dist/index.es399.js +53 -0
  1476. package/dist/index.es399.js.map +1 -0
  1477. package/dist/index.es40.js +2 -2
  1478. package/dist/index.es400.js +128 -0
  1479. package/dist/index.es400.js.map +1 -0
  1480. package/dist/index.es401.js +44 -0
  1481. package/dist/index.es401.js.map +1 -0
  1482. package/dist/index.es402.js +29 -0
  1483. package/dist/index.es402.js.map +1 -0
  1484. package/dist/index.es403.js +37 -0
  1485. package/dist/index.es403.js.map +1 -0
  1486. package/dist/index.es404.js +28 -0
  1487. package/dist/index.es404.js.map +1 -0
  1488. package/dist/index.es405.js +69 -0
  1489. package/dist/index.es405.js.map +1 -0
  1490. package/dist/index.es406.js +49 -0
  1491. package/dist/index.es406.js.map +1 -0
  1492. package/dist/index.es407.js +27 -0
  1493. package/dist/index.es407.js.map +1 -0
  1494. package/dist/index.es408.js +48 -0
  1495. package/dist/index.es408.js.map +1 -0
  1496. package/dist/index.es409.js +19 -0
  1497. package/dist/index.es409.js.map +1 -0
  1498. package/dist/index.es410.js +38 -0
  1499. package/dist/index.es410.js.map +1 -0
  1500. package/dist/index.es411.js +49 -0
  1501. package/dist/index.es411.js.map +1 -0
  1502. package/dist/index.es412.js +35 -0
  1503. package/dist/index.es412.js.map +1 -0
  1504. package/dist/index.es413.js +37 -0
  1505. package/dist/index.es413.js.map +1 -0
  1506. package/dist/index.es414.js +29 -0
  1507. package/dist/index.es414.js.map +1 -0
  1508. package/dist/index.es415.js +68 -0
  1509. package/dist/index.es415.js.map +1 -0
  1510. package/dist/index.es416.js +105 -0
  1511. package/dist/index.es416.js.map +1 -0
  1512. package/dist/index.es417.js +27 -0
  1513. package/dist/index.es417.js.map +1 -0
  1514. package/dist/index.es418.js +111 -0
  1515. package/dist/index.es418.js.map +1 -0
  1516. package/dist/index.es419.js +50 -0
  1517. package/dist/index.es419.js.map +1 -0
  1518. package/dist/index.es42.js +2 -2
  1519. package/dist/index.es420.js +36 -0
  1520. package/dist/index.es420.js.map +1 -0
  1521. package/dist/index.es421.js +56 -0
  1522. package/dist/index.es421.js.map +1 -0
  1523. package/dist/index.es422.js +174 -0
  1524. package/dist/index.es422.js.map +1 -0
  1525. package/dist/index.es423.js +61 -0
  1526. package/dist/index.es423.js.map +1 -0
  1527. package/dist/index.es424.js +62 -0
  1528. package/dist/index.es424.js.map +1 -0
  1529. package/dist/index.es425.js +87 -0
  1530. package/dist/index.es425.js.map +1 -0
  1531. package/dist/index.es426.js +26 -0
  1532. package/dist/index.es426.js.map +1 -0
  1533. package/dist/index.es427.js +56 -0
  1534. package/dist/index.es427.js.map +1 -0
  1535. package/dist/index.es428.js +55 -0
  1536. package/dist/index.es428.js.map +1 -0
  1537. package/dist/index.es429.js +8 -0
  1538. package/dist/index.es429.js.map +1 -0
  1539. package/dist/index.es43.js +2 -2
  1540. package/dist/index.es430.js +8 -0
  1541. package/dist/index.es430.js.map +1 -0
  1542. package/dist/index.es431.js +23 -0
  1543. package/dist/index.es431.js.map +1 -0
  1544. package/dist/index.es432.js +7 -0
  1545. package/dist/index.es432.js.map +1 -0
  1546. package/dist/index.es433.js +11 -0
  1547. package/dist/index.es433.js.map +1 -0
  1548. package/dist/index.es434.js +10 -0
  1549. package/dist/index.es434.js.map +1 -0
  1550. package/dist/index.es435.js +7 -0
  1551. package/dist/index.es435.js.map +1 -0
  1552. package/dist/index.es436.js +5 -0
  1553. package/dist/index.es436.js.map +1 -0
  1554. package/dist/index.es437.js +9 -0
  1555. package/dist/index.es437.js.map +1 -0
  1556. package/dist/index.es438.js +13 -0
  1557. package/dist/index.es438.js.map +1 -0
  1558. package/dist/index.es439.js +8 -0
  1559. package/dist/index.es439.js.map +1 -0
  1560. package/dist/index.es44.js +2 -2
  1561. package/dist/index.es440.js +7 -0
  1562. package/dist/index.es440.js.map +1 -0
  1563. package/dist/index.es441.js +6 -0
  1564. package/dist/index.es441.js.map +1 -0
  1565. package/dist/index.es442.js +7 -0
  1566. package/dist/index.es442.js.map +1 -0
  1567. package/dist/index.es443.js +9 -0
  1568. package/dist/index.es443.js.map +1 -0
  1569. package/dist/index.es444.js +11 -0
  1570. package/dist/index.es444.js.map +1 -0
  1571. package/dist/index.es445.js +8 -0
  1572. package/dist/index.es445.js.map +1 -0
  1573. package/dist/index.es446.js +10 -0
  1574. package/dist/index.es446.js.map +1 -0
  1575. package/dist/index.es447.js +9 -0
  1576. package/dist/index.es447.js.map +1 -0
  1577. package/dist/index.es448.js +12 -0
  1578. package/dist/index.es448.js.map +1 -0
  1579. package/dist/index.es449.js +8 -0
  1580. package/dist/index.es449.js.map +1 -0
  1581. package/dist/index.es450.js +10 -0
  1582. package/dist/index.es450.js.map +1 -0
  1583. package/dist/index.es451.js +10 -0
  1584. package/dist/index.es451.js.map +1 -0
  1585. package/dist/index.es452.js +8 -0
  1586. package/dist/index.es452.js.map +1 -0
  1587. package/dist/index.es453.js +13 -0
  1588. package/dist/index.es453.js.map +1 -0
  1589. package/dist/index.es454.js +10 -0
  1590. package/dist/index.es454.js.map +1 -0
  1591. package/dist/index.es455.js +21 -0
  1592. package/dist/index.es455.js.map +1 -0
  1593. package/dist/index.es456.js +15 -0
  1594. package/dist/index.es456.js.map +1 -0
  1595. package/dist/index.es457.js +7 -0
  1596. package/dist/index.es457.js.map +1 -0
  1597. package/dist/index.es458.js +9 -0
  1598. package/dist/index.es458.js.map +1 -0
  1599. package/dist/index.es459.js +19 -0
  1600. package/dist/index.es459.js.map +1 -0
  1601. package/dist/index.es46.js +1 -1
  1602. package/dist/index.es460.js +11 -0
  1603. package/dist/index.es460.js.map +1 -0
  1604. package/dist/index.es461.js +44 -0
  1605. package/dist/index.es461.js.map +1 -0
  1606. package/dist/index.es462.js +80 -0
  1607. package/dist/index.es462.js.map +1 -0
  1608. package/dist/index.es463.js +108 -0
  1609. package/dist/index.es463.js.map +1 -0
  1610. package/dist/index.es464.js +34 -0
  1611. package/dist/index.es464.js.map +1 -0
  1612. package/dist/index.es465.js +25 -0
  1613. package/dist/index.es465.js.map +1 -0
  1614. package/dist/index.es466.js +14 -0
  1615. package/dist/index.es466.js.map +1 -0
  1616. package/dist/index.es467.js +721 -0
  1617. package/dist/index.es467.js.map +1 -0
  1618. package/dist/index.es468.js +26 -0
  1619. package/dist/index.es468.js.map +1 -0
  1620. package/dist/index.es469.js +24 -0
  1621. package/dist/index.es469.js.map +1 -0
  1622. package/dist/index.es47.js +2 -2
  1623. package/dist/index.es470.js +178 -0
  1624. package/dist/index.es470.js.map +1 -0
  1625. package/dist/index.es471.js +24 -0
  1626. package/dist/index.es471.js.map +1 -0
  1627. package/dist/index.es472.js +241 -0
  1628. package/dist/index.es472.js.map +1 -0
  1629. package/dist/index.es473.js +11 -0
  1630. package/dist/index.es473.js.map +1 -0
  1631. package/dist/index.es474.js +13 -0
  1632. package/dist/index.es474.js.map +1 -0
  1633. package/dist/index.es475.js +9 -0
  1634. package/dist/index.es475.js.map +1 -0
  1635. package/dist/index.es476.js +18 -0
  1636. package/dist/index.es476.js.map +1 -0
  1637. package/dist/index.es477.js +26 -0
  1638. package/dist/index.es477.js.map +1 -0
  1639. package/dist/index.es478.js +12 -0
  1640. package/dist/index.es478.js.map +1 -0
  1641. package/dist/index.es479.js +8 -0
  1642. package/dist/index.es479.js.map +1 -0
  1643. package/dist/index.es48.js +2 -2
  1644. package/dist/index.es480.js +118 -0
  1645. package/dist/index.es480.js.map +1 -0
  1646. package/dist/index.es481.js +90 -0
  1647. package/dist/index.es481.js.map +1 -0
  1648. package/dist/index.es482.js +78 -0
  1649. package/dist/index.es482.js.map +1 -0
  1650. package/dist/index.es483.js +13 -0
  1651. package/dist/index.es483.js.map +1 -0
  1652. package/dist/index.es484.js +158 -0
  1653. package/dist/index.es484.js.map +1 -0
  1654. package/dist/index.es485.js +160 -0
  1655. package/dist/index.es485.js.map +1 -0
  1656. package/dist/index.es486.js +18 -0
  1657. package/dist/index.es486.js.map +1 -0
  1658. package/dist/index.es487.js +19 -0
  1659. package/dist/index.es487.js.map +1 -0
  1660. package/dist/index.es488.js +9 -0
  1661. package/dist/index.es488.js.map +1 -0
  1662. package/dist/index.es489.js +10 -0
  1663. package/dist/index.es489.js.map +1 -0
  1664. package/dist/index.es490.js +10 -0
  1665. package/dist/index.es490.js.map +1 -0
  1666. package/dist/index.es491.js +29 -0
  1667. package/dist/index.es491.js.map +1 -0
  1668. package/dist/index.es492.js +9 -0
  1669. package/dist/index.es492.js.map +1 -0
  1670. package/dist/index.es493.js +43 -0
  1671. package/dist/index.es493.js.map +1 -0
  1672. package/dist/index.es494.js +10 -0
  1673. package/dist/index.es494.js.map +1 -0
  1674. package/dist/index.es495.js +11 -0
  1675. package/dist/index.es495.js.map +1 -0
  1676. package/dist/index.es496.js +9 -0
  1677. package/dist/index.es496.js.map +1 -0
  1678. package/dist/index.es497.js +9 -0
  1679. package/dist/index.es497.js.map +1 -0
  1680. package/dist/index.es498.js +6 -0
  1681. package/dist/index.es498.js.map +1 -0
  1682. package/dist/index.es499.js +42 -0
  1683. package/dist/index.es499.js.map +1 -0
  1684. package/dist/index.es50.js +1 -1
  1685. package/dist/index.es500.js +6 -0
  1686. package/dist/index.es500.js.map +1 -0
  1687. package/dist/index.es501.js +16 -0
  1688. package/dist/index.es501.js.map +1 -0
  1689. package/dist/index.es502.js +8 -0
  1690. package/dist/index.es502.js.map +1 -0
  1691. package/dist/index.es503.js +12 -0
  1692. package/dist/index.es503.js.map +1 -0
  1693. package/dist/index.es504.js +5 -0
  1694. package/dist/index.es504.js.map +1 -0
  1695. package/dist/index.es505.js +33 -0
  1696. package/dist/index.es505.js.map +1 -0
  1697. package/dist/index.es506.js +19 -0
  1698. package/dist/index.es506.js.map +1 -0
  1699. package/dist/index.es507.js +8 -0
  1700. package/dist/index.es507.js.map +1 -0
  1701. package/dist/index.es508.js +6 -0
  1702. package/dist/index.es508.js.map +1 -0
  1703. package/dist/index.es509.js +9 -0
  1704. package/dist/index.es509.js.map +1 -0
  1705. package/dist/index.es51.js +1 -1
  1706. package/dist/index.es510.js +9 -0
  1707. package/dist/index.es510.js.map +1 -0
  1708. package/dist/index.es511.js +9 -0
  1709. package/dist/index.es511.js.map +1 -0
  1710. package/dist/index.es512.js +7 -0
  1711. package/dist/index.es512.js.map +1 -0
  1712. package/dist/index.es513.js +7 -0
  1713. package/dist/index.es513.js.map +1 -0
  1714. package/dist/index.es514.js +7 -0
  1715. package/dist/index.es514.js.map +1 -0
  1716. package/dist/index.es515.js +7 -0
  1717. package/dist/index.es515.js.map +1 -0
  1718. package/dist/index.es516.js +7 -0
  1719. package/dist/index.es516.js.map +1 -0
  1720. package/dist/index.es517.js +18 -0
  1721. package/dist/index.es517.js.map +1 -0
  1722. package/dist/index.es518.js +11 -0
  1723. package/dist/index.es518.js.map +1 -0
  1724. package/dist/index.es519.js +7 -0
  1725. package/dist/index.es519.js.map +1 -0
  1726. package/dist/index.es52.js +1 -1
  1727. package/dist/index.es520.js +15 -0
  1728. package/dist/index.es520.js.map +1 -0
  1729. package/dist/index.es521.js +9 -0
  1730. package/dist/index.es521.js.map +1 -0
  1731. package/dist/index.es522.js +7 -0
  1732. package/dist/index.es522.js.map +1 -0
  1733. package/dist/index.es523.js +8 -0
  1734. package/dist/index.es523.js.map +1 -0
  1735. package/dist/index.es524.js +9 -0
  1736. package/dist/index.es524.js.map +1 -0
  1737. package/dist/index.es525.js +10 -0
  1738. package/dist/index.es525.js.map +1 -0
  1739. package/dist/index.es526.js +9 -0
  1740. package/dist/index.es526.js.map +1 -0
  1741. package/dist/index.es527.js +9 -0
  1742. package/dist/index.es527.js.map +1 -0
  1743. package/dist/index.es528.js +11 -0
  1744. package/dist/index.es528.js.map +1 -0
  1745. package/dist/index.es529.js +14 -0
  1746. package/dist/index.es529.js.map +1 -0
  1747. package/dist/index.es530.js +28 -0
  1748. package/dist/index.es530.js.map +1 -0
  1749. package/dist/index.es531.js +8 -0
  1750. package/dist/index.es531.js.map +1 -0
  1751. package/dist/index.es532.js +9 -0
  1752. package/dist/index.es532.js.map +1 -0
  1753. package/dist/index.es533.js +11 -0
  1754. package/dist/index.es533.js.map +1 -0
  1755. package/dist/index.es534.js +7 -0
  1756. package/dist/index.es534.js.map +1 -0
  1757. package/dist/index.es535.js +7 -0
  1758. package/dist/index.es535.js.map +1 -0
  1759. package/dist/index.es536.js +7 -0
  1760. package/dist/index.es536.js.map +1 -0
  1761. package/dist/index.es537.js +7 -0
  1762. package/dist/index.es537.js.map +1 -0
  1763. package/dist/index.es538.js +7 -0
  1764. package/dist/index.es538.js.map +1 -0
  1765. package/dist/index.es539.js +8 -0
  1766. package/dist/index.es539.js.map +1 -0
  1767. package/dist/index.es540.js +9 -0
  1768. package/dist/index.es540.js.map +1 -0
  1769. package/dist/index.es541.js +12 -0
  1770. package/dist/index.es541.js.map +1 -0
  1771. package/dist/index.es542.js +8 -0
  1772. package/dist/index.es542.js.map +1 -0
  1773. package/dist/index.es543.js +9 -0
  1774. package/dist/index.es543.js.map +1 -0
  1775. package/dist/index.es544.js +8 -0
  1776. package/dist/index.es544.js.map +1 -0
  1777. package/dist/index.es545.js +7 -0
  1778. package/dist/index.es545.js.map +1 -0
  1779. package/dist/index.es546.js +14 -0
  1780. package/dist/index.es546.js.map +1 -0
  1781. package/dist/index.es547.js +34 -0
  1782. package/dist/index.es547.js.map +1 -0
  1783. package/dist/index.es548.js +83 -0
  1784. package/dist/index.es548.js.map +1 -0
  1785. package/dist/index.es549.js +20 -0
  1786. package/dist/index.es549.js.map +1 -0
  1787. package/dist/index.es550.js +50 -0
  1788. package/dist/index.es550.js.map +1 -0
  1789. package/dist/index.es551.js +227 -0
  1790. package/dist/index.es551.js.map +1 -0
  1791. package/dist/index.es552.js +21 -0
  1792. package/dist/index.es552.js.map +1 -0
  1793. package/dist/index.es553.js +14 -0
  1794. package/dist/index.es553.js.map +1 -0
  1795. package/dist/index.es554.js +9 -0
  1796. package/dist/index.es554.js.map +1 -0
  1797. package/dist/index.es555.js +8 -0
  1798. package/dist/index.es555.js.map +1 -0
  1799. package/dist/index.es556.js +8 -0
  1800. package/dist/index.es556.js.map +1 -0
  1801. package/dist/index.es557.js +9 -0
  1802. package/dist/index.es557.js.map +1 -0
  1803. package/dist/index.es558.js +10 -0
  1804. package/dist/index.es558.js.map +1 -0
  1805. package/dist/index.es559.js +10 -0
  1806. package/dist/index.es559.js.map +1 -0
  1807. package/dist/index.es56.js +2 -2
  1808. package/dist/index.es560.js +10 -0
  1809. package/dist/index.es560.js.map +1 -0
  1810. package/dist/index.es561.js +10 -0
  1811. package/dist/index.es561.js.map +1 -0
  1812. package/dist/index.es562.js +17 -0
  1813. package/dist/index.es562.js.map +1 -0
  1814. package/dist/index.es563.js +12 -0
  1815. package/dist/index.es563.js.map +1 -0
  1816. package/dist/index.es564.js +3029 -0
  1817. package/dist/index.es564.js.map +1 -0
  1818. package/dist/index.es565.js +5 -0
  1819. package/dist/index.es565.js.map +1 -0
  1820. package/dist/index.es566.js +11 -0
  1821. package/dist/index.es566.js.map +1 -0
  1822. package/dist/index.es567.js +10 -0
  1823. package/dist/index.es567.js.map +1 -0
  1824. package/dist/index.es568.js +21 -0
  1825. package/dist/index.es568.js.map +1 -0
  1826. package/dist/index.es569.js +14 -0
  1827. package/dist/index.es569.js.map +1 -0
  1828. package/dist/index.es57.js +3 -3
  1829. package/dist/index.es570.js +8 -0
  1830. package/dist/index.es570.js.map +1 -0
  1831. package/dist/index.es571.js +7 -0
  1832. package/dist/index.es571.js.map +1 -0
  1833. package/dist/index.es572.js +7 -0
  1834. package/dist/index.es572.js.map +1 -0
  1835. package/dist/index.es573.js +21 -0
  1836. package/dist/index.es573.js.map +1 -0
  1837. package/dist/index.es574.js +8 -0
  1838. package/dist/index.es574.js.map +1 -0
  1839. package/dist/index.es575.js +8 -0
  1840. package/dist/index.es575.js.map +1 -0
  1841. package/dist/index.es576.js +7 -0
  1842. package/dist/index.es576.js.map +1 -0
  1843. package/dist/index.es577.js +7 -0
  1844. package/dist/index.es577.js.map +1 -0
  1845. package/dist/index.es578.js +18 -0
  1846. package/dist/index.es578.js.map +1 -0
  1847. package/dist/index.es579.js +10 -0
  1848. package/dist/index.es579.js.map +1 -0
  1849. package/dist/index.es58.js +1 -1
  1850. package/dist/index.es580.js +11 -0
  1851. package/dist/index.es580.js.map +1 -0
  1852. package/dist/index.es581.js +9 -0
  1853. package/dist/index.es581.js.map +1 -0
  1854. package/dist/index.es582.js +9 -0
  1855. package/dist/index.es582.js.map +1 -0
  1856. package/dist/index.es583.js +9 -0
  1857. package/dist/index.es583.js.map +1 -0
  1858. package/dist/index.es584.js +9 -0
  1859. package/dist/index.es584.js.map +1 -0
  1860. package/dist/index.es585.js +9 -0
  1861. package/dist/index.es585.js.map +1 -0
  1862. package/dist/index.es586.js +9 -0
  1863. package/dist/index.es586.js.map +1 -0
  1864. package/dist/index.es587.js +10 -0
  1865. package/dist/index.es587.js.map +1 -0
  1866. package/dist/index.es588.js +41 -0
  1867. package/dist/index.es588.js.map +1 -0
  1868. package/dist/index.es589.js +46 -0
  1869. package/dist/index.es589.js.map +1 -0
  1870. package/dist/index.es590.js +37 -0
  1871. package/dist/index.es590.js.map +1 -0
  1872. package/dist/index.es591.js +8 -0
  1873. package/dist/index.es591.js.map +1 -0
  1874. package/dist/index.es592.js +8 -0
  1875. package/dist/index.es592.js.map +1 -0
  1876. package/dist/index.es593.js +7 -0
  1877. package/dist/index.es593.js.map +1 -0
  1878. package/dist/index.es594.js +21 -0
  1879. package/dist/index.es594.js.map +1 -0
  1880. package/dist/index.es595.js +9 -0
  1881. package/dist/index.es595.js.map +1 -0
  1882. package/dist/index.es596.js +47 -0
  1883. package/dist/index.es596.js.map +1 -0
  1884. package/dist/index.es597.js +6 -0
  1885. package/dist/index.es597.js.map +1 -0
  1886. package/dist/index.es598.js +25 -0
  1887. package/dist/index.es598.js.map +1 -0
  1888. package/dist/index.es599.js +37 -0
  1889. package/dist/index.es599.js.map +1 -0
  1890. package/dist/index.es60.js +1 -1
  1891. package/dist/index.es600.js +174 -0
  1892. package/dist/index.es600.js.map +1 -0
  1893. package/dist/index.es601.js +31 -0
  1894. package/dist/index.es601.js.map +1 -0
  1895. package/dist/index.es602.js +7 -0
  1896. package/dist/index.es602.js.map +1 -0
  1897. package/dist/index.es603.js +13 -0
  1898. package/dist/index.es603.js.map +1 -0
  1899. package/dist/index.es604.js +9 -0
  1900. package/dist/index.es604.js.map +1 -0
  1901. package/dist/index.es605.js +8 -0
  1902. package/dist/index.es605.js.map +1 -0
  1903. package/dist/index.es606.js +9 -0
  1904. package/dist/index.es606.js.map +1 -0
  1905. package/dist/index.es607.js +6 -0
  1906. package/dist/index.es607.js.map +1 -0
  1907. package/dist/index.es608.js +7 -0
  1908. package/dist/index.es608.js.map +1 -0
  1909. package/dist/index.es609.js +8 -0
  1910. package/dist/index.es609.js.map +1 -0
  1911. package/dist/index.es61.js +1 -1
  1912. package/dist/index.es610.js +8 -0
  1913. package/dist/index.es610.js.map +1 -0
  1914. package/dist/index.es611.js +14 -0
  1915. package/dist/index.es611.js.map +1 -0
  1916. package/dist/index.es612.js +10 -0
  1917. package/dist/index.es612.js.map +1 -0
  1918. package/dist/index.es613.js +10 -0
  1919. package/dist/index.es613.js.map +1 -0
  1920. package/dist/index.es614.js +8 -0
  1921. package/dist/index.es614.js.map +1 -0
  1922. package/dist/index.es615.js +215 -0
  1923. package/dist/index.es615.js.map +1 -0
  1924. package/dist/index.es616.js +246 -0
  1925. package/dist/index.es616.js.map +1 -0
  1926. package/dist/index.es617.js +39 -0
  1927. package/dist/index.es617.js.map +1 -0
  1928. package/dist/index.es618.js +18 -0
  1929. package/dist/index.es618.js.map +1 -0
  1930. package/dist/index.es619.js +567 -0
  1931. package/dist/index.es619.js.map +1 -0
  1932. package/dist/index.es620.js +59 -0
  1933. package/dist/index.es620.js.map +1 -0
  1934. package/dist/index.es621.js +338 -0
  1935. package/dist/index.es621.js.map +1 -0
  1936. package/dist/index.es622.js +1103 -0
  1937. package/dist/index.es622.js.map +1 -0
  1938. package/dist/index.es623.js +41 -0
  1939. package/dist/index.es623.js.map +1 -0
  1940. package/dist/index.es624.js +39 -0
  1941. package/dist/index.es624.js.map +1 -0
  1942. package/dist/index.es625.js +51 -0
  1943. package/dist/index.es625.js.map +1 -0
  1944. package/dist/index.es626.js +65 -0
  1945. package/dist/index.es626.js.map +1 -0
  1946. package/dist/index.es627.js +11 -0
  1947. package/dist/index.es627.js.map +1 -0
  1948. package/dist/index.es628.js +6 -0
  1949. package/dist/index.es628.js.map +1 -0
  1950. package/dist/index.es629.js +298 -0
  1951. package/dist/index.es629.js.map +1 -0
  1952. package/dist/index.es63.js +1 -1
  1953. package/dist/index.es630.js +27 -0
  1954. package/dist/index.es630.js.map +1 -0
  1955. package/dist/index.es631.js +53 -0
  1956. package/dist/index.es631.js.map +1 -0
  1957. package/dist/index.es632.js +9 -0
  1958. package/dist/index.es632.js.map +1 -0
  1959. package/dist/index.es67.js +10 -6
  1960. package/dist/index.es67.js.map +1 -1
  1961. package/dist/index.es68.js +163 -13731
  1962. package/dist/index.es68.js.map +1 -1
  1963. package/dist/index.es69.js +1 -1
  1964. package/dist/index.es69.js.map +1 -1
  1965. package/dist/index.es70.js.map +1 -1
  1966. package/dist/index.es71.js.map +1 -1
  1967. package/dist/index.es72.js.map +1 -1
  1968. package/dist/index.es73.js +15 -15
  1969. package/dist/index.es73.js.map +1 -1
  1970. package/dist/index.es74.js +1 -1
  1971. package/dist/index.es74.js.map +1 -1
  1972. package/dist/index.es75.js +4 -4
  1973. package/dist/index.es75.js.map +1 -1
  1974. package/dist/index.es76.js +10 -10
  1975. package/dist/index.es76.js.map +1 -1
  1976. package/dist/index.es77.js.map +1 -1
  1977. package/dist/index.es78.js.map +1 -1
  1978. package/dist/index.es93.js +1 -1
  1979. package/package.json +3 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs564.js","sources":["../../../node_modules/ml-matrix/matrix.js"],"sourcesContent":["'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst toString = Object.prototype.toString;\n/**\n * Checks if an object is an instance of an Array (array or typed array, except those that contain bigint values).\n * @param value - Object to check.\n * @returns True if the object is an array or a typed array.\n */\nfunction isAnyArray(value) {\n const tag = toString.call(value);\n return tag.endsWith('Array]') && !tag.includes('Big');\n}\n\n/**\n * Computes the maximum of the given values.\n *\n * @param input\n * @param options\n */\nfunction max(input, options = {}) {\n if (!isAnyArray(input)) {\n throw new TypeError('input must be an array');\n }\n if (input.length === 0) {\n throw new TypeError('input must not be empty');\n }\n const { fromIndex = 0, toIndex = input.length } = options;\n if (fromIndex < 0 ||\n fromIndex >= input.length ||\n !Number.isInteger(fromIndex)) {\n throw new Error('fromIndex must be a positive integer smaller than length');\n }\n if (toIndex <= fromIndex ||\n toIndex > input.length ||\n !Number.isInteger(toIndex)) {\n throw new Error('toIndex must be an integer greater than fromIndex and at most equal to length');\n }\n let maxValue = input[fromIndex];\n for (let i = fromIndex + 1; i < toIndex; i++) {\n if (input[i] > maxValue)\n maxValue = input[i];\n }\n return maxValue;\n}\n\n/**\n * Computes the minimum of the given values.\n */\nfunction min(input, options = {}) {\n if (!isAnyArray(input)) {\n throw new TypeError('input must be an array');\n }\n if (input.length === 0) {\n throw new TypeError('input must not be empty');\n }\n const { fromIndex = 0, toIndex = input.length } = options;\n if (fromIndex < 0 ||\n fromIndex >= input.length ||\n !Number.isInteger(fromIndex)) {\n throw new Error('fromIndex must be a positive integer smaller than length');\n }\n if (toIndex <= fromIndex ||\n toIndex > input.length ||\n !Number.isInteger(toIndex)) {\n throw new Error('toIndex must be an integer greater than fromIndex and at most equal to length');\n }\n let minValue = input[fromIndex];\n for (let i = fromIndex + 1; i < toIndex; i++) {\n if (input[i] < minValue)\n minValue = input[i];\n }\n return minValue;\n}\n\n/**\n * Rescale an array into a range.\n */\nfunction rescale(input, options = {}) {\n if (!isAnyArray(input)) {\n throw new TypeError('input must be an array');\n }\n else if (input.length === 0) {\n throw new TypeError('input must not be empty');\n }\n let output;\n if (options.output !== undefined) {\n if (!isAnyArray(options.output)) {\n throw new TypeError('output option must be an array if specified');\n }\n output = options.output;\n }\n else {\n output = new Array(input.length);\n }\n const currentMin = min(input);\n const currentMax = max(input);\n if (currentMin === currentMax) {\n throw new RangeError('minimum and maximum input values are equal. Cannot rescale a constant array');\n }\n const { min: minValue = options.autoMinMax ? currentMin : 0, max: maxValue = options.autoMinMax ? currentMax : 1, } = options;\n if (minValue >= maxValue) {\n throw new RangeError('min option must be smaller than max option');\n }\n const factor = (maxValue - minValue) / (currentMax - currentMin);\n for (let i = 0; i < input.length; i++) {\n output[i] = (input[i] - currentMin) * factor + minValue;\n }\n return output;\n}\n\nconst indent = ' '.repeat(2);\nconst indentData = ' '.repeat(4);\n\n/**\n * @this {Matrix}\n * @returns {string}\n */\nfunction inspectMatrix() {\n return inspectMatrixWithOptions(this);\n}\n\nfunction inspectMatrixWithOptions(matrix, options = {}) {\n const {\n maxRows = 15,\n maxColumns = 10,\n maxNumSize = 8,\n padMinus = 'auto',\n } = options;\n return `${matrix.constructor.name} {\n${indent}[\n${indentData}${inspectData(matrix, maxRows, maxColumns, maxNumSize, padMinus)}\n${indent}]\n${indent}rows: ${matrix.rows}\n${indent}columns: ${matrix.columns}\n}`;\n}\n\nfunction inspectData(matrix, maxRows, maxColumns, maxNumSize, padMinus) {\n const { rows, columns } = matrix;\n const maxI = Math.min(rows, maxRows);\n const maxJ = Math.min(columns, maxColumns);\n const result = [];\n\n if (padMinus === 'auto') {\n padMinus = false;\n loop: for (let i = 0; i < maxI; i++) {\n for (let j = 0; j < maxJ; j++) {\n if (matrix.get(i, j) < 0) {\n padMinus = true;\n break loop;\n }\n }\n }\n }\n\n for (let i = 0; i < maxI; i++) {\n let line = [];\n for (let j = 0; j < maxJ; j++) {\n line.push(formatNumber(matrix.get(i, j), maxNumSize, padMinus));\n }\n result.push(`${line.join(' ')}`);\n }\n if (maxJ !== columns) {\n result[result.length - 1] += ` ... ${columns - maxColumns} more columns`;\n }\n if (maxI !== rows) {\n result.push(`... ${rows - maxRows} more rows`);\n }\n return result.join(`\\n${indentData}`);\n}\n\nfunction formatNumber(num, maxNumSize, padMinus) {\n return (\n num >= 0 && padMinus\n ? ` ${formatNumber2(num, maxNumSize - 1)}`\n : formatNumber2(num, maxNumSize)\n ).padEnd(maxNumSize);\n}\n\nfunction formatNumber2(num, len) {\n // small.length numbers should be as is\n let str = num.toString();\n if (str.length <= len) return str;\n\n // (7)'0.00123' is better then (7)'1.23e-2'\n // (8)'0.000123' is worse then (7)'1.23e-3',\n let fix = num.toFixed(len);\n if (fix.length > len) {\n fix = num.toFixed(Math.max(0, len - (fix.length - len)));\n }\n if (\n fix.length <= len &&\n !fix.startsWith('0.000') &&\n !fix.startsWith('-0.000')\n ) {\n return fix;\n }\n\n // well, if it's still too long the user should've used longer numbers\n let exp = num.toExponential(len);\n if (exp.length > len) {\n exp = num.toExponential(Math.max(0, len - (exp.length - len)));\n }\n return exp.slice(0);\n}\n\nfunction installMathOperations(AbstractMatrix, Matrix) {\n AbstractMatrix.prototype.add = function add(value) {\n if (typeof value === 'number') return this.addS(value);\n return this.addM(value);\n };\n\n AbstractMatrix.prototype.addS = function addS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) + value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.addM = function addM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) + matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.add = function add(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.add(value);\n };\n\n AbstractMatrix.prototype.sub = function sub(value) {\n if (typeof value === 'number') return this.subS(value);\n return this.subM(value);\n };\n\n AbstractMatrix.prototype.subS = function subS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) - value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.subM = function subM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) - matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.sub = function sub(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.sub(value);\n };\n AbstractMatrix.prototype.subtract = AbstractMatrix.prototype.sub;\n AbstractMatrix.prototype.subtractS = AbstractMatrix.prototype.subS;\n AbstractMatrix.prototype.subtractM = AbstractMatrix.prototype.subM;\n AbstractMatrix.subtract = AbstractMatrix.sub;\n\n AbstractMatrix.prototype.mul = function mul(value) {\n if (typeof value === 'number') return this.mulS(value);\n return this.mulM(value);\n };\n\n AbstractMatrix.prototype.mulS = function mulS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) * value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.mulM = function mulM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) * matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.mul = function mul(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.mul(value);\n };\n AbstractMatrix.prototype.multiply = AbstractMatrix.prototype.mul;\n AbstractMatrix.prototype.multiplyS = AbstractMatrix.prototype.mulS;\n AbstractMatrix.prototype.multiplyM = AbstractMatrix.prototype.mulM;\n AbstractMatrix.multiply = AbstractMatrix.mul;\n\n AbstractMatrix.prototype.div = function div(value) {\n if (typeof value === 'number') return this.divS(value);\n return this.divM(value);\n };\n\n AbstractMatrix.prototype.divS = function divS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) / value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.divM = function divM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) / matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.div = function div(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.div(value);\n };\n AbstractMatrix.prototype.divide = AbstractMatrix.prototype.div;\n AbstractMatrix.prototype.divideS = AbstractMatrix.prototype.divS;\n AbstractMatrix.prototype.divideM = AbstractMatrix.prototype.divM;\n AbstractMatrix.divide = AbstractMatrix.div;\n\n AbstractMatrix.prototype.mod = function mod(value) {\n if (typeof value === 'number') return this.modS(value);\n return this.modM(value);\n };\n\n AbstractMatrix.prototype.modS = function modS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) % value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.modM = function modM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) % matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.mod = function mod(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.mod(value);\n };\n AbstractMatrix.prototype.modulus = AbstractMatrix.prototype.mod;\n AbstractMatrix.prototype.modulusS = AbstractMatrix.prototype.modS;\n AbstractMatrix.prototype.modulusM = AbstractMatrix.prototype.modM;\n AbstractMatrix.modulus = AbstractMatrix.mod;\n\n AbstractMatrix.prototype.and = function and(value) {\n if (typeof value === 'number') return this.andS(value);\n return this.andM(value);\n };\n\n AbstractMatrix.prototype.andS = function andS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) & value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.andM = function andM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) & matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.and = function and(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.and(value);\n };\n\n AbstractMatrix.prototype.or = function or(value) {\n if (typeof value === 'number') return this.orS(value);\n return this.orM(value);\n };\n\n AbstractMatrix.prototype.orS = function orS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) | value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.orM = function orM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) | matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.or = function or(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.or(value);\n };\n\n AbstractMatrix.prototype.xor = function xor(value) {\n if (typeof value === 'number') return this.xorS(value);\n return this.xorM(value);\n };\n\n AbstractMatrix.prototype.xorS = function xorS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) ^ value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.xorM = function xorM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) ^ matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.xor = function xor(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.xor(value);\n };\n\n AbstractMatrix.prototype.leftShift = function leftShift(value) {\n if (typeof value === 'number') return this.leftShiftS(value);\n return this.leftShiftM(value);\n };\n\n AbstractMatrix.prototype.leftShiftS = function leftShiftS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) << value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.leftShiftM = function leftShiftM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) << matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.leftShift = function leftShift(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.leftShift(value);\n };\n\n AbstractMatrix.prototype.signPropagatingRightShift = function signPropagatingRightShift(value) {\n if (typeof value === 'number') return this.signPropagatingRightShiftS(value);\n return this.signPropagatingRightShiftM(value);\n };\n\n AbstractMatrix.prototype.signPropagatingRightShiftS = function signPropagatingRightShiftS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) >> value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.signPropagatingRightShiftM = function signPropagatingRightShiftM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) >> matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.signPropagatingRightShift = function signPropagatingRightShift(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.signPropagatingRightShift(value);\n };\n\n AbstractMatrix.prototype.rightShift = function rightShift(value) {\n if (typeof value === 'number') return this.rightShiftS(value);\n return this.rightShiftM(value);\n };\n\n AbstractMatrix.prototype.rightShiftS = function rightShiftS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) >>> value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.rightShiftM = function rightShiftM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) >>> matrix.get(i, j));\n }\n }\n return this;\n };\n\n AbstractMatrix.rightShift = function rightShift(matrix, value) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.rightShift(value);\n };\n AbstractMatrix.prototype.zeroFillRightShift = AbstractMatrix.prototype.rightShift;\n AbstractMatrix.prototype.zeroFillRightShiftS = AbstractMatrix.prototype.rightShiftS;\n AbstractMatrix.prototype.zeroFillRightShiftM = AbstractMatrix.prototype.rightShiftM;\n AbstractMatrix.zeroFillRightShift = AbstractMatrix.rightShift;\n\n AbstractMatrix.prototype.not = function not() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, ~(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.not = function not(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.not();\n };\n\n AbstractMatrix.prototype.abs = function abs() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.abs(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.abs = function abs(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.abs();\n };\n\n AbstractMatrix.prototype.acos = function acos() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.acos(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.acos = function acos(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.acos();\n };\n\n AbstractMatrix.prototype.acosh = function acosh() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.acosh(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.acosh = function acosh(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.acosh();\n };\n\n AbstractMatrix.prototype.asin = function asin() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.asin(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.asin = function asin(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.asin();\n };\n\n AbstractMatrix.prototype.asinh = function asinh() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.asinh(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.asinh = function asinh(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.asinh();\n };\n\n AbstractMatrix.prototype.atan = function atan() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.atan(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.atan = function atan(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.atan();\n };\n\n AbstractMatrix.prototype.atanh = function atanh() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.atanh(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.atanh = function atanh(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.atanh();\n };\n\n AbstractMatrix.prototype.cbrt = function cbrt() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.cbrt(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.cbrt = function cbrt(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.cbrt();\n };\n\n AbstractMatrix.prototype.ceil = function ceil() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.ceil(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.ceil = function ceil(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.ceil();\n };\n\n AbstractMatrix.prototype.clz32 = function clz32() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.clz32(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.clz32 = function clz32(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.clz32();\n };\n\n AbstractMatrix.prototype.cos = function cos() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.cos(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.cos = function cos(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.cos();\n };\n\n AbstractMatrix.prototype.cosh = function cosh() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.cosh(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.cosh = function cosh(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.cosh();\n };\n\n AbstractMatrix.prototype.exp = function exp() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.exp(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.exp = function exp(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.exp();\n };\n\n AbstractMatrix.prototype.expm1 = function expm1() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.expm1(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.expm1 = function expm1(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.expm1();\n };\n\n AbstractMatrix.prototype.floor = function floor() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.floor(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.floor = function floor(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.floor();\n };\n\n AbstractMatrix.prototype.fround = function fround() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.fround(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.fround = function fround(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.fround();\n };\n\n AbstractMatrix.prototype.log = function log() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.log(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.log = function log(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.log();\n };\n\n AbstractMatrix.prototype.log1p = function log1p() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.log1p(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.log1p = function log1p(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.log1p();\n };\n\n AbstractMatrix.prototype.log10 = function log10() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.log10(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.log10 = function log10(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.log10();\n };\n\n AbstractMatrix.prototype.log2 = function log2() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.log2(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.log2 = function log2(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.log2();\n };\n\n AbstractMatrix.prototype.round = function round() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.round(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.round = function round(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.round();\n };\n\n AbstractMatrix.prototype.sign = function sign() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.sign(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.sign = function sign(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.sign();\n };\n\n AbstractMatrix.prototype.sin = function sin() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.sin(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.sin = function sin(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.sin();\n };\n\n AbstractMatrix.prototype.sinh = function sinh() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.sinh(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.sinh = function sinh(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.sinh();\n };\n\n AbstractMatrix.prototype.sqrt = function sqrt() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.sqrt(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.sqrt = function sqrt(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.sqrt();\n };\n\n AbstractMatrix.prototype.tan = function tan() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.tan(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.tan = function tan(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.tan();\n };\n\n AbstractMatrix.prototype.tanh = function tanh() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.tanh(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.tanh = function tanh(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.tanh();\n };\n\n AbstractMatrix.prototype.trunc = function trunc() {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, Math.trunc(this.get(i, j)));\n }\n }\n return this;\n };\n\n AbstractMatrix.trunc = function trunc(matrix) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.trunc();\n };\n\n AbstractMatrix.pow = function pow(matrix, arg0) {\n const newMatrix = new Matrix(matrix);\n return newMatrix.pow(arg0);\n };\n\n AbstractMatrix.prototype.pow = function pow(value) {\n if (typeof value === 'number') return this.powS(value);\n return this.powM(value);\n };\n\n AbstractMatrix.prototype.powS = function powS(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) ** value);\n }\n }\n return this;\n };\n\n AbstractMatrix.prototype.powM = function powM(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (this.rows !== matrix.rows ||\n this.columns !== matrix.columns) {\n throw new RangeError('Matrices dimensions must be equal');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) ** matrix.get(i, j));\n }\n }\n return this;\n };\n}\n\n/**\n * @private\n * Check that a row index is not out of bounds\n * @param {Matrix} matrix\n * @param {number} index\n * @param {boolean} [outer]\n */\nfunction checkRowIndex(matrix, index, outer) {\n let max = outer ? matrix.rows : matrix.rows - 1;\n if (index < 0 || index > max) {\n throw new RangeError('Row index out of range');\n }\n}\n\n/**\n * @private\n * Check that a column index is not out of bounds\n * @param {Matrix} matrix\n * @param {number} index\n * @param {boolean} [outer]\n */\nfunction checkColumnIndex(matrix, index, outer) {\n let max = outer ? matrix.columns : matrix.columns - 1;\n if (index < 0 || index > max) {\n throw new RangeError('Column index out of range');\n }\n}\n\n/**\n * @private\n * Check that the provided vector is an array with the right length\n * @param {Matrix} matrix\n * @param {Array|Matrix} vector\n * @return {Array}\n * @throws {RangeError}\n */\nfunction checkRowVector(matrix, vector) {\n if (vector.to1DArray) {\n vector = vector.to1DArray();\n }\n if (vector.length !== matrix.columns) {\n throw new RangeError(\n 'vector size must be the same as the number of columns',\n );\n }\n return vector;\n}\n\n/**\n * @private\n * Check that the provided vector is an array with the right length\n * @param {Matrix} matrix\n * @param {Array|Matrix} vector\n * @return {Array}\n * @throws {RangeError}\n */\nfunction checkColumnVector(matrix, vector) {\n if (vector.to1DArray) {\n vector = vector.to1DArray();\n }\n if (vector.length !== matrix.rows) {\n throw new RangeError('vector size must be the same as the number of rows');\n }\n return vector;\n}\n\nfunction checkRowIndices(matrix, rowIndices) {\n if (!isAnyArray(rowIndices)) {\n throw new TypeError('row indices must be an array');\n }\n\n for (let i = 0; i < rowIndices.length; i++) {\n if (rowIndices[i] < 0 || rowIndices[i] >= matrix.rows) {\n throw new RangeError('row indices are out of range');\n }\n }\n}\n\nfunction checkColumnIndices(matrix, columnIndices) {\n if (!isAnyArray(columnIndices)) {\n throw new TypeError('column indices must be an array');\n }\n\n for (let i = 0; i < columnIndices.length; i++) {\n if (columnIndices[i] < 0 || columnIndices[i] >= matrix.columns) {\n throw new RangeError('column indices are out of range');\n }\n }\n}\n\nfunction checkRange(matrix, startRow, endRow, startColumn, endColumn) {\n if (arguments.length !== 5) {\n throw new RangeError('expected 4 arguments');\n }\n checkNumber('startRow', startRow);\n checkNumber('endRow', endRow);\n checkNumber('startColumn', startColumn);\n checkNumber('endColumn', endColumn);\n if (\n startRow > endRow ||\n startColumn > endColumn ||\n startRow < 0 ||\n startRow >= matrix.rows ||\n endRow < 0 ||\n endRow >= matrix.rows ||\n startColumn < 0 ||\n startColumn >= matrix.columns ||\n endColumn < 0 ||\n endColumn >= matrix.columns\n ) {\n throw new RangeError('Submatrix indices are out of range');\n }\n}\n\nfunction newArray(length, value = 0) {\n let array = [];\n for (let i = 0; i < length; i++) {\n array.push(value);\n }\n return array;\n}\n\nfunction checkNumber(name, value) {\n if (typeof value !== 'number') {\n throw new TypeError(`${name} must be a number`);\n }\n}\n\nfunction checkNonEmpty(matrix) {\n if (matrix.isEmpty()) {\n throw new Error('Empty matrix has no elements to index');\n }\n}\n\nfunction sumByRow(matrix) {\n let sum = newArray(matrix.rows);\n for (let i = 0; i < matrix.rows; ++i) {\n for (let j = 0; j < matrix.columns; ++j) {\n sum[i] += matrix.get(i, j);\n }\n }\n return sum;\n}\n\nfunction sumByColumn(matrix) {\n let sum = newArray(matrix.columns);\n for (let i = 0; i < matrix.rows; ++i) {\n for (let j = 0; j < matrix.columns; ++j) {\n sum[j] += matrix.get(i, j);\n }\n }\n return sum;\n}\n\nfunction sumAll(matrix) {\n let v = 0;\n for (let i = 0; i < matrix.rows; i++) {\n for (let j = 0; j < matrix.columns; j++) {\n v += matrix.get(i, j);\n }\n }\n return v;\n}\n\nfunction productByRow(matrix) {\n let sum = newArray(matrix.rows, 1);\n for (let i = 0; i < matrix.rows; ++i) {\n for (let j = 0; j < matrix.columns; ++j) {\n sum[i] *= matrix.get(i, j);\n }\n }\n return sum;\n}\n\nfunction productByColumn(matrix) {\n let sum = newArray(matrix.columns, 1);\n for (let i = 0; i < matrix.rows; ++i) {\n for (let j = 0; j < matrix.columns; ++j) {\n sum[j] *= matrix.get(i, j);\n }\n }\n return sum;\n}\n\nfunction productAll(matrix) {\n let v = 1;\n for (let i = 0; i < matrix.rows; i++) {\n for (let j = 0; j < matrix.columns; j++) {\n v *= matrix.get(i, j);\n }\n }\n return v;\n}\n\nfunction varianceByRow(matrix, unbiased, mean) {\n const rows = matrix.rows;\n const cols = matrix.columns;\n const variance = [];\n\n for (let i = 0; i < rows; i++) {\n let sum1 = 0;\n let sum2 = 0;\n let x = 0;\n for (let j = 0; j < cols; j++) {\n x = matrix.get(i, j) - mean[i];\n sum1 += x;\n sum2 += x * x;\n }\n if (unbiased) {\n variance.push((sum2 - (sum1 * sum1) / cols) / (cols - 1));\n } else {\n variance.push((sum2 - (sum1 * sum1) / cols) / cols);\n }\n }\n return variance;\n}\n\nfunction varianceByColumn(matrix, unbiased, mean) {\n const rows = matrix.rows;\n const cols = matrix.columns;\n const variance = [];\n\n for (let j = 0; j < cols; j++) {\n let sum1 = 0;\n let sum2 = 0;\n let x = 0;\n for (let i = 0; i < rows; i++) {\n x = matrix.get(i, j) - mean[j];\n sum1 += x;\n sum2 += x * x;\n }\n if (unbiased) {\n variance.push((sum2 - (sum1 * sum1) / rows) / (rows - 1));\n } else {\n variance.push((sum2 - (sum1 * sum1) / rows) / rows);\n }\n }\n return variance;\n}\n\nfunction varianceAll(matrix, unbiased, mean) {\n const rows = matrix.rows;\n const cols = matrix.columns;\n const size = rows * cols;\n\n let sum1 = 0;\n let sum2 = 0;\n let x = 0;\n for (let i = 0; i < rows; i++) {\n for (let j = 0; j < cols; j++) {\n x = matrix.get(i, j) - mean;\n sum1 += x;\n sum2 += x * x;\n }\n }\n if (unbiased) {\n return (sum2 - (sum1 * sum1) / size) / (size - 1);\n } else {\n return (sum2 - (sum1 * sum1) / size) / size;\n }\n}\n\nfunction centerByRow(matrix, mean) {\n for (let i = 0; i < matrix.rows; i++) {\n for (let j = 0; j < matrix.columns; j++) {\n matrix.set(i, j, matrix.get(i, j) - mean[i]);\n }\n }\n}\n\nfunction centerByColumn(matrix, mean) {\n for (let i = 0; i < matrix.rows; i++) {\n for (let j = 0; j < matrix.columns; j++) {\n matrix.set(i, j, matrix.get(i, j) - mean[j]);\n }\n }\n}\n\nfunction centerAll(matrix, mean) {\n for (let i = 0; i < matrix.rows; i++) {\n for (let j = 0; j < matrix.columns; j++) {\n matrix.set(i, j, matrix.get(i, j) - mean);\n }\n }\n}\n\nfunction getScaleByRow(matrix) {\n const scale = [];\n for (let i = 0; i < matrix.rows; i++) {\n let sum = 0;\n for (let j = 0; j < matrix.columns; j++) {\n sum += matrix.get(i, j) ** 2 / (matrix.columns - 1);\n }\n scale.push(Math.sqrt(sum));\n }\n return scale;\n}\n\nfunction scaleByRow(matrix, scale) {\n for (let i = 0; i < matrix.rows; i++) {\n for (let j = 0; j < matrix.columns; j++) {\n matrix.set(i, j, matrix.get(i, j) / scale[i]);\n }\n }\n}\n\nfunction getScaleByColumn(matrix) {\n const scale = [];\n for (let j = 0; j < matrix.columns; j++) {\n let sum = 0;\n for (let i = 0; i < matrix.rows; i++) {\n sum += matrix.get(i, j) ** 2 / (matrix.rows - 1);\n }\n scale.push(Math.sqrt(sum));\n }\n return scale;\n}\n\nfunction scaleByColumn(matrix, scale) {\n for (let i = 0; i < matrix.rows; i++) {\n for (let j = 0; j < matrix.columns; j++) {\n matrix.set(i, j, matrix.get(i, j) / scale[j]);\n }\n }\n}\n\nfunction getScaleAll(matrix) {\n const divider = matrix.size - 1;\n let sum = 0;\n for (let j = 0; j < matrix.columns; j++) {\n for (let i = 0; i < matrix.rows; i++) {\n sum += matrix.get(i, j) ** 2 / divider;\n }\n }\n return Math.sqrt(sum);\n}\n\nfunction scaleAll(matrix, scale) {\n for (let i = 0; i < matrix.rows; i++) {\n for (let j = 0; j < matrix.columns; j++) {\n matrix.set(i, j, matrix.get(i, j) / scale);\n }\n }\n}\n\nclass AbstractMatrix {\n static from1DArray(newRows, newColumns, newData) {\n let length = newRows * newColumns;\n if (length !== newData.length) {\n throw new RangeError('data length does not match given dimensions');\n }\n let newMatrix = new Matrix(newRows, newColumns);\n for (let row = 0; row < newRows; row++) {\n for (let column = 0; column < newColumns; column++) {\n newMatrix.set(row, column, newData[row * newColumns + column]);\n }\n }\n return newMatrix;\n }\n\n static rowVector(newData) {\n let vector = new Matrix(1, newData.length);\n for (let i = 0; i < newData.length; i++) {\n vector.set(0, i, newData[i]);\n }\n return vector;\n }\n\n static columnVector(newData) {\n let vector = new Matrix(newData.length, 1);\n for (let i = 0; i < newData.length; i++) {\n vector.set(i, 0, newData[i]);\n }\n return vector;\n }\n\n static zeros(rows, columns) {\n return new Matrix(rows, columns);\n }\n\n static ones(rows, columns) {\n return new Matrix(rows, columns).fill(1);\n }\n\n static rand(rows, columns, options = {}) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n const { random = Math.random } = options;\n let matrix = new Matrix(rows, columns);\n for (let i = 0; i < rows; i++) {\n for (let j = 0; j < columns; j++) {\n matrix.set(i, j, random());\n }\n }\n return matrix;\n }\n\n static randInt(rows, columns, options = {}) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n const { min = 0, max = 1000, random = Math.random } = options;\n if (!Number.isInteger(min)) throw new TypeError('min must be an integer');\n if (!Number.isInteger(max)) throw new TypeError('max must be an integer');\n if (min >= max) throw new RangeError('min must be smaller than max');\n let interval = max - min;\n let matrix = new Matrix(rows, columns);\n for (let i = 0; i < rows; i++) {\n for (let j = 0; j < columns; j++) {\n let value = min + Math.round(random() * interval);\n matrix.set(i, j, value);\n }\n }\n return matrix;\n }\n\n static eye(rows, columns, value) {\n if (columns === undefined) columns = rows;\n if (value === undefined) value = 1;\n let min = Math.min(rows, columns);\n let matrix = this.zeros(rows, columns);\n for (let i = 0; i < min; i++) {\n matrix.set(i, i, value);\n }\n return matrix;\n }\n\n static diag(data, rows, columns) {\n let l = data.length;\n if (rows === undefined) rows = l;\n if (columns === undefined) columns = rows;\n let min = Math.min(l, rows, columns);\n let matrix = this.zeros(rows, columns);\n for (let i = 0; i < min; i++) {\n matrix.set(i, i, data[i]);\n }\n return matrix;\n }\n\n static min(matrix1, matrix2) {\n matrix1 = this.checkMatrix(matrix1);\n matrix2 = this.checkMatrix(matrix2);\n let rows = matrix1.rows;\n let columns = matrix1.columns;\n let result = new Matrix(rows, columns);\n for (let i = 0; i < rows; i++) {\n for (let j = 0; j < columns; j++) {\n result.set(i, j, Math.min(matrix1.get(i, j), matrix2.get(i, j)));\n }\n }\n return result;\n }\n\n static max(matrix1, matrix2) {\n matrix1 = this.checkMatrix(matrix1);\n matrix2 = this.checkMatrix(matrix2);\n let rows = matrix1.rows;\n let columns = matrix1.columns;\n let result = new this(rows, columns);\n for (let i = 0; i < rows; i++) {\n for (let j = 0; j < columns; j++) {\n result.set(i, j, Math.max(matrix1.get(i, j), matrix2.get(i, j)));\n }\n }\n return result;\n }\n\n static checkMatrix(value) {\n return AbstractMatrix.isMatrix(value) ? value : new Matrix(value);\n }\n\n static isMatrix(value) {\n return value != null && value.klass === 'Matrix';\n }\n\n get size() {\n return this.rows * this.columns;\n }\n\n apply(callback) {\n if (typeof callback !== 'function') {\n throw new TypeError('callback must be a function');\n }\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n callback.call(this, i, j);\n }\n }\n return this;\n }\n\n to1DArray() {\n let array = [];\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n array.push(this.get(i, j));\n }\n }\n return array;\n }\n\n to2DArray() {\n let copy = [];\n for (let i = 0; i < this.rows; i++) {\n copy.push([]);\n for (let j = 0; j < this.columns; j++) {\n copy[i].push(this.get(i, j));\n }\n }\n return copy;\n }\n\n toJSON() {\n return this.to2DArray();\n }\n\n isRowVector() {\n return this.rows === 1;\n }\n\n isColumnVector() {\n return this.columns === 1;\n }\n\n isVector() {\n return this.rows === 1 || this.columns === 1;\n }\n\n isSquare() {\n return this.rows === this.columns;\n }\n\n isEmpty() {\n return this.rows === 0 || this.columns === 0;\n }\n\n isSymmetric() {\n if (this.isSquare()) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j <= i; j++) {\n if (this.get(i, j) !== this.get(j, i)) {\n return false;\n }\n }\n }\n return true;\n }\n return false;\n }\n\n isDistance() {\n if (!this.isSymmetric()) return false;\n\n for (let i = 0; i < this.rows; i++) {\n if (this.get(i, i) !== 0) return false;\n }\n\n return true;\n }\n\n isEchelonForm() {\n let i = 0;\n let j = 0;\n let previousColumn = -1;\n let isEchelonForm = true;\n let checked = false;\n while (i < this.rows && isEchelonForm) {\n j = 0;\n checked = false;\n while (j < this.columns && checked === false) {\n if (this.get(i, j) === 0) {\n j++;\n } else if (this.get(i, j) === 1 && j > previousColumn) {\n checked = true;\n previousColumn = j;\n } else {\n isEchelonForm = false;\n checked = true;\n }\n }\n i++;\n }\n return isEchelonForm;\n }\n\n isReducedEchelonForm() {\n let i = 0;\n let j = 0;\n let previousColumn = -1;\n let isReducedEchelonForm = true;\n let checked = false;\n while (i < this.rows && isReducedEchelonForm) {\n j = 0;\n checked = false;\n while (j < this.columns && checked === false) {\n if (this.get(i, j) === 0) {\n j++;\n } else if (this.get(i, j) === 1 && j > previousColumn) {\n checked = true;\n previousColumn = j;\n } else {\n isReducedEchelonForm = false;\n checked = true;\n }\n }\n for (let k = j + 1; k < this.rows; k++) {\n if (this.get(i, k) !== 0) {\n isReducedEchelonForm = false;\n }\n }\n i++;\n }\n return isReducedEchelonForm;\n }\n\n echelonForm() {\n let result = this.clone();\n let h = 0;\n let k = 0;\n while (h < result.rows && k < result.columns) {\n let iMax = h;\n for (let i = h; i < result.rows; i++) {\n if (result.get(i, k) > result.get(iMax, k)) {\n iMax = i;\n }\n }\n if (result.get(iMax, k) === 0) {\n k++;\n } else {\n result.swapRows(h, iMax);\n let tmp = result.get(h, k);\n for (let j = k; j < result.columns; j++) {\n result.set(h, j, result.get(h, j) / tmp);\n }\n for (let i = h + 1; i < result.rows; i++) {\n let factor = result.get(i, k) / result.get(h, k);\n result.set(i, k, 0);\n for (let j = k + 1; j < result.columns; j++) {\n result.set(i, j, result.get(i, j) - result.get(h, j) * factor);\n }\n }\n h++;\n k++;\n }\n }\n return result;\n }\n\n reducedEchelonForm() {\n let result = this.echelonForm();\n let m = result.columns;\n let n = result.rows;\n let h = n - 1;\n while (h >= 0) {\n if (result.maxRow(h) === 0) {\n h--;\n } else {\n let p = 0;\n let pivot = false;\n while (p < n && pivot === false) {\n if (result.get(h, p) === 1) {\n pivot = true;\n } else {\n p++;\n }\n }\n for (let i = 0; i < h; i++) {\n let factor = result.get(i, p);\n for (let j = p; j < m; j++) {\n let tmp = result.get(i, j) - factor * result.get(h, j);\n result.set(i, j, tmp);\n }\n }\n h--;\n }\n }\n return result;\n }\n\n set() {\n throw new Error('set method is unimplemented');\n }\n\n get() {\n throw new Error('get method is unimplemented');\n }\n\n repeat(options = {}) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n const { rows = 1, columns = 1 } = options;\n if (!Number.isInteger(rows) || rows <= 0) {\n throw new TypeError('rows must be a positive integer');\n }\n if (!Number.isInteger(columns) || columns <= 0) {\n throw new TypeError('columns must be a positive integer');\n }\n let matrix = new Matrix(this.rows * rows, this.columns * columns);\n for (let i = 0; i < rows; i++) {\n for (let j = 0; j < columns; j++) {\n matrix.setSubMatrix(this, this.rows * i, this.columns * j);\n }\n }\n return matrix;\n }\n\n fill(value) {\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, value);\n }\n }\n return this;\n }\n\n neg() {\n return this.mulS(-1);\n }\n\n getRow(index) {\n checkRowIndex(this, index);\n let row = [];\n for (let i = 0; i < this.columns; i++) {\n row.push(this.get(index, i));\n }\n return row;\n }\n\n getRowVector(index) {\n return Matrix.rowVector(this.getRow(index));\n }\n\n setRow(index, array) {\n checkRowIndex(this, index);\n array = checkRowVector(this, array);\n for (let i = 0; i < this.columns; i++) {\n this.set(index, i, array[i]);\n }\n return this;\n }\n\n swapRows(row1, row2) {\n checkRowIndex(this, row1);\n checkRowIndex(this, row2);\n for (let i = 0; i < this.columns; i++) {\n let temp = this.get(row1, i);\n this.set(row1, i, this.get(row2, i));\n this.set(row2, i, temp);\n }\n return this;\n }\n\n getColumn(index) {\n checkColumnIndex(this, index);\n let column = [];\n for (let i = 0; i < this.rows; i++) {\n column.push(this.get(i, index));\n }\n return column;\n }\n\n getColumnVector(index) {\n return Matrix.columnVector(this.getColumn(index));\n }\n\n setColumn(index, array) {\n checkColumnIndex(this, index);\n array = checkColumnVector(this, array);\n for (let i = 0; i < this.rows; i++) {\n this.set(i, index, array[i]);\n }\n return this;\n }\n\n swapColumns(column1, column2) {\n checkColumnIndex(this, column1);\n checkColumnIndex(this, column2);\n for (let i = 0; i < this.rows; i++) {\n let temp = this.get(i, column1);\n this.set(i, column1, this.get(i, column2));\n this.set(i, column2, temp);\n }\n return this;\n }\n\n addRowVector(vector) {\n vector = checkRowVector(this, vector);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) + vector[j]);\n }\n }\n return this;\n }\n\n subRowVector(vector) {\n vector = checkRowVector(this, vector);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) - vector[j]);\n }\n }\n return this;\n }\n\n mulRowVector(vector) {\n vector = checkRowVector(this, vector);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) * vector[j]);\n }\n }\n return this;\n }\n\n divRowVector(vector) {\n vector = checkRowVector(this, vector);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) / vector[j]);\n }\n }\n return this;\n }\n\n addColumnVector(vector) {\n vector = checkColumnVector(this, vector);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) + vector[i]);\n }\n }\n return this;\n }\n\n subColumnVector(vector) {\n vector = checkColumnVector(this, vector);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) - vector[i]);\n }\n }\n return this;\n }\n\n mulColumnVector(vector) {\n vector = checkColumnVector(this, vector);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) * vector[i]);\n }\n }\n return this;\n }\n\n divColumnVector(vector) {\n vector = checkColumnVector(this, vector);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n this.set(i, j, this.get(i, j) / vector[i]);\n }\n }\n return this;\n }\n\n mulRow(index, value) {\n checkRowIndex(this, index);\n for (let i = 0; i < this.columns; i++) {\n this.set(index, i, this.get(index, i) * value);\n }\n return this;\n }\n\n mulColumn(index, value) {\n checkColumnIndex(this, index);\n for (let i = 0; i < this.rows; i++) {\n this.set(i, index, this.get(i, index) * value);\n }\n return this;\n }\n\n max(by) {\n if (this.isEmpty()) {\n return NaN;\n }\n switch (by) {\n case 'row': {\n const max = new Array(this.rows).fill(Number.NEGATIVE_INFINITY);\n for (let row = 0; row < this.rows; row++) {\n for (let column = 0; column < this.columns; column++) {\n if (this.get(row, column) > max[row]) {\n max[row] = this.get(row, column);\n }\n }\n }\n return max;\n }\n case 'column': {\n const max = new Array(this.columns).fill(Number.NEGATIVE_INFINITY);\n for (let row = 0; row < this.rows; row++) {\n for (let column = 0; column < this.columns; column++) {\n if (this.get(row, column) > max[column]) {\n max[column] = this.get(row, column);\n }\n }\n }\n return max;\n }\n case undefined: {\n let max = this.get(0, 0);\n for (let row = 0; row < this.rows; row++) {\n for (let column = 0; column < this.columns; column++) {\n if (this.get(row, column) > max) {\n max = this.get(row, column);\n }\n }\n }\n return max;\n }\n default:\n throw new Error(`invalid option: ${by}`);\n }\n }\n\n maxIndex() {\n checkNonEmpty(this);\n let v = this.get(0, 0);\n let idx = [0, 0];\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n if (this.get(i, j) > v) {\n v = this.get(i, j);\n idx[0] = i;\n idx[1] = j;\n }\n }\n }\n return idx;\n }\n\n min(by) {\n if (this.isEmpty()) {\n return NaN;\n }\n\n switch (by) {\n case 'row': {\n const min = new Array(this.rows).fill(Number.POSITIVE_INFINITY);\n for (let row = 0; row < this.rows; row++) {\n for (let column = 0; column < this.columns; column++) {\n if (this.get(row, column) < min[row]) {\n min[row] = this.get(row, column);\n }\n }\n }\n return min;\n }\n case 'column': {\n const min = new Array(this.columns).fill(Number.POSITIVE_INFINITY);\n for (let row = 0; row < this.rows; row++) {\n for (let column = 0; column < this.columns; column++) {\n if (this.get(row, column) < min[column]) {\n min[column] = this.get(row, column);\n }\n }\n }\n return min;\n }\n case undefined: {\n let min = this.get(0, 0);\n for (let row = 0; row < this.rows; row++) {\n for (let column = 0; column < this.columns; column++) {\n if (this.get(row, column) < min) {\n min = this.get(row, column);\n }\n }\n }\n return min;\n }\n default:\n throw new Error(`invalid option: ${by}`);\n }\n }\n\n minIndex() {\n checkNonEmpty(this);\n let v = this.get(0, 0);\n let idx = [0, 0];\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n if (this.get(i, j) < v) {\n v = this.get(i, j);\n idx[0] = i;\n idx[1] = j;\n }\n }\n }\n return idx;\n }\n\n maxRow(row) {\n checkRowIndex(this, row);\n if (this.isEmpty()) {\n return NaN;\n }\n let v = this.get(row, 0);\n for (let i = 1; i < this.columns; i++) {\n if (this.get(row, i) > v) {\n v = this.get(row, i);\n }\n }\n return v;\n }\n\n maxRowIndex(row) {\n checkRowIndex(this, row);\n checkNonEmpty(this);\n let v = this.get(row, 0);\n let idx = [row, 0];\n for (let i = 1; i < this.columns; i++) {\n if (this.get(row, i) > v) {\n v = this.get(row, i);\n idx[1] = i;\n }\n }\n return idx;\n }\n\n minRow(row) {\n checkRowIndex(this, row);\n if (this.isEmpty()) {\n return NaN;\n }\n let v = this.get(row, 0);\n for (let i = 1; i < this.columns; i++) {\n if (this.get(row, i) < v) {\n v = this.get(row, i);\n }\n }\n return v;\n }\n\n minRowIndex(row) {\n checkRowIndex(this, row);\n checkNonEmpty(this);\n let v = this.get(row, 0);\n let idx = [row, 0];\n for (let i = 1; i < this.columns; i++) {\n if (this.get(row, i) < v) {\n v = this.get(row, i);\n idx[1] = i;\n }\n }\n return idx;\n }\n\n maxColumn(column) {\n checkColumnIndex(this, column);\n if (this.isEmpty()) {\n return NaN;\n }\n let v = this.get(0, column);\n for (let i = 1; i < this.rows; i++) {\n if (this.get(i, column) > v) {\n v = this.get(i, column);\n }\n }\n return v;\n }\n\n maxColumnIndex(column) {\n checkColumnIndex(this, column);\n checkNonEmpty(this);\n let v = this.get(0, column);\n let idx = [0, column];\n for (let i = 1; i < this.rows; i++) {\n if (this.get(i, column) > v) {\n v = this.get(i, column);\n idx[0] = i;\n }\n }\n return idx;\n }\n\n minColumn(column) {\n checkColumnIndex(this, column);\n if (this.isEmpty()) {\n return NaN;\n }\n let v = this.get(0, column);\n for (let i = 1; i < this.rows; i++) {\n if (this.get(i, column) < v) {\n v = this.get(i, column);\n }\n }\n return v;\n }\n\n minColumnIndex(column) {\n checkColumnIndex(this, column);\n checkNonEmpty(this);\n let v = this.get(0, column);\n let idx = [0, column];\n for (let i = 1; i < this.rows; i++) {\n if (this.get(i, column) < v) {\n v = this.get(i, column);\n idx[0] = i;\n }\n }\n return idx;\n }\n\n diag() {\n let min = Math.min(this.rows, this.columns);\n let diag = [];\n for (let i = 0; i < min; i++) {\n diag.push(this.get(i, i));\n }\n return diag;\n }\n\n norm(type = 'frobenius') {\n switch (type) {\n case 'max':\n return this.max();\n case 'frobenius':\n return Math.sqrt(this.dot(this));\n default:\n throw new RangeError(`unknown norm type: ${type}`);\n }\n }\n\n cumulativeSum() {\n let sum = 0;\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n sum += this.get(i, j);\n this.set(i, j, sum);\n }\n }\n return this;\n }\n\n dot(vector2) {\n if (AbstractMatrix.isMatrix(vector2)) vector2 = vector2.to1DArray();\n let vector1 = this.to1DArray();\n if (vector1.length !== vector2.length) {\n throw new RangeError('vectors do not have the same size');\n }\n let dot = 0;\n for (let i = 0; i < vector1.length; i++) {\n dot += vector1[i] * vector2[i];\n }\n return dot;\n }\n\n mmul(other) {\n other = Matrix.checkMatrix(other);\n\n let m = this.rows;\n let n = this.columns;\n let p = other.columns;\n\n let result = new Matrix(m, p);\n\n let Bcolj = new Float64Array(n);\n for (let j = 0; j < p; j++) {\n for (let k = 0; k < n; k++) {\n Bcolj[k] = other.get(k, j);\n }\n\n for (let i = 0; i < m; i++) {\n let s = 0;\n for (let k = 0; k < n; k++) {\n s += this.get(i, k) * Bcolj[k];\n }\n\n result.set(i, j, s);\n }\n }\n return result;\n }\n\n gram() {\n const rows = this.rows;\n const n = this.columns;\n\n // The Gram matrix `thisᵀ · this` is symmetric, so only its upper triangle is\n // accumulated (then mirrored) and the transpose is never materialized.\n // Row-streaming rank-1 updates read each row of `this` contiguously and skip\n // zero entries, so the cost scales with the number of non-zeros: it is as\n // fast as the dense version on dense matrices (the skip never fires) and far\n // faster on sparse ones.\n const gramData = new Float64Array(n * n);\n for (let r = 0; r < rows; r++) {\n for (let i = 0; i < n; i++) {\n const value = this.get(r, i);\n if (value === 0) continue;\n const offset = i * n;\n for (let j = i; j < n; j++) {\n gramData[offset + j] += value * this.get(r, j);\n }\n }\n }\n\n const result = new Matrix(n, n);\n for (let i = 0; i < n; i++) {\n const offset = i * n;\n for (let j = i; j < n; j++) {\n const value = gramData[offset + j];\n result.set(i, j, value);\n result.set(j, i, value);\n }\n }\n return result;\n }\n\n mmulByTranspose(scale) {\n let m = this.rows;\n let n = this.columns;\n\n if (scale !== undefined && scale.length !== n) {\n throw new RangeError('scale must have one value per column');\n }\n\n let result = new Matrix(m, m);\n\n // result = this · diag(scale) · thisᵀ is symmetric, so only the upper\n // triangle is computed and mirrored, and the transpose is never\n // materialized. `scale` (one factor per column) is folded into one operand.\n let rowj = new Float64Array(n);\n for (let j = 0; j < m; j++) {\n if (scale === undefined) {\n for (let k = 0; k < n; k++) {\n rowj[k] = this.get(j, k);\n }\n } else {\n for (let k = 0; k < n; k++) {\n rowj[k] = scale[k] * this.get(j, k);\n }\n }\n\n for (let i = j; i < m; i++) {\n let s = 0;\n for (let k = 0; k < n; k++) {\n s += this.get(i, k) * rowj[k];\n }\n\n result.set(i, j, s);\n result.set(j, i, s);\n }\n }\n return result;\n }\n\n mpow(scalar) {\n if (!this.isSquare()) {\n throw new RangeError('Matrix must be square');\n }\n if (!Number.isInteger(scalar) || scalar < 0) {\n throw new RangeError('Exponent must be a non-negative integer');\n }\n // Russian Peasant exponentiation, i.e. exponentiation by squaring\n let result = Matrix.eye(this.rows);\n let bb = this;\n // Note: Don't bit shift. In JS, that would truncate at 32 bits\n for (let e = scalar; e >= 1; e /= 2) {\n if ((e & 1) !== 0) {\n result = result.mmul(bb);\n }\n bb = bb.mmul(bb);\n }\n return result;\n }\n\n strassen2x2(other) {\n other = Matrix.checkMatrix(other);\n let result = new Matrix(2, 2);\n const a11 = this.get(0, 0);\n const b11 = other.get(0, 0);\n const a12 = this.get(0, 1);\n const b12 = other.get(0, 1);\n const a21 = this.get(1, 0);\n const b21 = other.get(1, 0);\n const a22 = this.get(1, 1);\n const b22 = other.get(1, 1);\n\n // Compute intermediate values.\n const m1 = (a11 + a22) * (b11 + b22);\n const m2 = (a21 + a22) * b11;\n const m3 = a11 * (b12 - b22);\n const m4 = a22 * (b21 - b11);\n const m5 = (a11 + a12) * b22;\n const m6 = (a21 - a11) * (b11 + b12);\n const m7 = (a12 - a22) * (b21 + b22);\n\n // Combine intermediate values into the output.\n const c00 = m1 + m4 - m5 + m7;\n const c01 = m3 + m5;\n const c10 = m2 + m4;\n const c11 = m1 - m2 + m3 + m6;\n\n result.set(0, 0, c00);\n result.set(0, 1, c01);\n result.set(1, 0, c10);\n result.set(1, 1, c11);\n return result;\n }\n\n strassen3x3(other) {\n other = Matrix.checkMatrix(other);\n let result = new Matrix(3, 3);\n\n const a00 = this.get(0, 0);\n const a01 = this.get(0, 1);\n const a02 = this.get(0, 2);\n const a10 = this.get(1, 0);\n const a11 = this.get(1, 1);\n const a12 = this.get(1, 2);\n const a20 = this.get(2, 0);\n const a21 = this.get(2, 1);\n const a22 = this.get(2, 2);\n\n const b00 = other.get(0, 0);\n const b01 = other.get(0, 1);\n const b02 = other.get(0, 2);\n const b10 = other.get(1, 0);\n const b11 = other.get(1, 1);\n const b12 = other.get(1, 2);\n const b20 = other.get(2, 0);\n const b21 = other.get(2, 1);\n const b22 = other.get(2, 2);\n\n const m1 = (a00 + a01 + a02 - a10 - a11 - a21 - a22) * b11;\n const m2 = (a00 - a10) * (-b01 + b11);\n const m3 = a11 * (-b00 + b01 + b10 - b11 - b12 - b20 + b22);\n const m4 = (-a00 + a10 + a11) * (b00 - b01 + b11);\n const m5 = (a10 + a11) * (-b00 + b01);\n const m6 = a00 * b00;\n const m7 = (-a00 + a20 + a21) * (b00 - b02 + b12);\n const m8 = (-a00 + a20) * (b02 - b12);\n const m9 = (a20 + a21) * (-b00 + b02);\n const m10 = (a00 + a01 + a02 - a11 - a12 - a20 - a21) * b12;\n const m11 = a21 * (-b00 + b02 + b10 - b11 - b12 - b20 + b21);\n const m12 = (-a02 + a21 + a22) * (b11 + b20 - b21);\n const m13 = (a02 - a22) * (b11 - b21);\n const m14 = a02 * b20;\n const m15 = (a21 + a22) * (-b20 + b21);\n const m16 = (-a02 + a11 + a12) * (b12 + b20 - b22);\n const m17 = (a02 - a12) * (b12 - b22);\n const m18 = (a11 + a12) * (-b20 + b22);\n const m19 = a01 * b10;\n const m20 = a12 * b21;\n const m21 = a10 * b02;\n const m22 = a20 * b01;\n const m23 = a22 * b22;\n\n const c00 = m6 + m14 + m19;\n const c01 = m1 + m4 + m5 + m6 + m12 + m14 + m15;\n const c02 = m6 + m7 + m9 + m10 + m14 + m16 + m18;\n const c10 = m2 + m3 + m4 + m6 + m14 + m16 + m17;\n const c11 = m2 + m4 + m5 + m6 + m20;\n const c12 = m14 + m16 + m17 + m18 + m21;\n const c20 = m6 + m7 + m8 + m11 + m12 + m13 + m14;\n const c21 = m12 + m13 + m14 + m15 + m22;\n const c22 = m6 + m7 + m8 + m9 + m23;\n\n result.set(0, 0, c00);\n result.set(0, 1, c01);\n result.set(0, 2, c02);\n result.set(1, 0, c10);\n result.set(1, 1, c11);\n result.set(1, 2, c12);\n result.set(2, 0, c20);\n result.set(2, 1, c21);\n result.set(2, 2, c22);\n return result;\n }\n\n mmulStrassen(y) {\n y = Matrix.checkMatrix(y);\n let x = this.clone();\n let r1 = x.rows;\n let c1 = x.columns;\n let r2 = y.rows;\n let c2 = y.columns;\n if (c1 !== r2) {\n // eslint-disable-next-line no-console\n console.warn(\n `Multiplying ${r1} x ${c1} and ${r2} x ${c2} matrix: dimensions do not match.`,\n );\n }\n\n // Put a matrix into the top left of a matrix of zeros.\n // `rows` and `cols` are the dimensions of the output matrix.\n function embed(mat, rows, cols) {\n let r = mat.rows;\n let c = mat.columns;\n if (r === rows && c === cols) {\n return mat;\n } else {\n let resultat = AbstractMatrix.zeros(rows, cols);\n resultat = resultat.setSubMatrix(mat, 0, 0);\n return resultat;\n }\n }\n\n // Make sure both matrices are the same size.\n // This is exclusively for simplicity:\n // this algorithm can be implemented with matrices of different sizes.\n\n let r = Math.max(r1, r2);\n let c = Math.max(c1, c2);\n x = embed(x, r, c);\n y = embed(y, r, c);\n\n // Our recursive multiplication function.\n function blockMult(a, b, rows, cols) {\n // For small matrices, resort to naive multiplication.\n if (rows <= 512 || cols <= 512) {\n return a.mmul(b); // a is equivalent to this\n }\n\n // Apply dynamic padding.\n if (rows % 2 === 1 && cols % 2 === 1) {\n a = embed(a, rows + 1, cols + 1);\n b = embed(b, rows + 1, cols + 1);\n } else if (rows % 2 === 1) {\n a = embed(a, rows + 1, cols);\n b = embed(b, rows + 1, cols);\n } else if (cols % 2 === 1) {\n a = embed(a, rows, cols + 1);\n b = embed(b, rows, cols + 1);\n }\n\n let halfRows = parseInt(a.rows / 2, 10);\n let halfCols = parseInt(a.columns / 2, 10);\n // Subdivide input matrices.\n let a11 = a.subMatrix(0, halfRows - 1, 0, halfCols - 1);\n let b11 = b.subMatrix(0, halfRows - 1, 0, halfCols - 1);\n\n let a12 = a.subMatrix(0, halfRows - 1, halfCols, a.columns - 1);\n let b12 = b.subMatrix(0, halfRows - 1, halfCols, b.columns - 1);\n\n let a21 = a.subMatrix(halfRows, a.rows - 1, 0, halfCols - 1);\n let b21 = b.subMatrix(halfRows, b.rows - 1, 0, halfCols - 1);\n\n let a22 = a.subMatrix(halfRows, a.rows - 1, halfCols, a.columns - 1);\n let b22 = b.subMatrix(halfRows, b.rows - 1, halfCols, b.columns - 1);\n\n // Compute intermediate values.\n let m1 = blockMult(\n AbstractMatrix.add(a11, a22),\n AbstractMatrix.add(b11, b22),\n halfRows,\n halfCols,\n );\n let m2 = blockMult(AbstractMatrix.add(a21, a22), b11, halfRows, halfCols);\n let m3 = blockMult(a11, AbstractMatrix.sub(b12, b22), halfRows, halfCols);\n let m4 = blockMult(a22, AbstractMatrix.sub(b21, b11), halfRows, halfCols);\n let m5 = blockMult(AbstractMatrix.add(a11, a12), b22, halfRows, halfCols);\n let m6 = blockMult(\n AbstractMatrix.sub(a21, a11),\n AbstractMatrix.add(b11, b12),\n halfRows,\n halfCols,\n );\n let m7 = blockMult(\n AbstractMatrix.sub(a12, a22),\n AbstractMatrix.add(b21, b22),\n halfRows,\n halfCols,\n );\n\n // Combine intermediate values into the output.\n let c11 = AbstractMatrix.add(m1, m4);\n c11.sub(m5);\n c11.add(m7);\n let c12 = AbstractMatrix.add(m3, m5);\n let c21 = AbstractMatrix.add(m2, m4);\n let c22 = AbstractMatrix.sub(m1, m2);\n c22.add(m3);\n c22.add(m6);\n\n // Crop output to the desired size (undo dynamic padding).\n let result = AbstractMatrix.zeros(2 * c11.rows, 2 * c11.columns);\n result = result.setSubMatrix(c11, 0, 0);\n result = result.setSubMatrix(c12, c11.rows, 0);\n result = result.setSubMatrix(c21, 0, c11.columns);\n result = result.setSubMatrix(c22, c11.rows, c11.columns);\n return result.subMatrix(0, rows - 1, 0, cols - 1);\n }\n\n return blockMult(x, y, r, c);\n }\n\n scaleRows(options = {}) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n const { min = 0, max = 1 } = options;\n if (!Number.isFinite(min)) throw new TypeError('min must be a number');\n if (!Number.isFinite(max)) throw new TypeError('max must be a number');\n if (min >= max) throw new RangeError('min must be smaller than max');\n let newMatrix = new Matrix(this.rows, this.columns);\n for (let i = 0; i < this.rows; i++) {\n const row = this.getRow(i);\n if (row.length > 0) {\n rescale(row, { min, max, output: row });\n }\n newMatrix.setRow(i, row);\n }\n return newMatrix;\n }\n\n scaleColumns(options = {}) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n const { min = 0, max = 1 } = options;\n if (!Number.isFinite(min)) throw new TypeError('min must be a number');\n if (!Number.isFinite(max)) throw new TypeError('max must be a number');\n if (min >= max) throw new RangeError('min must be smaller than max');\n let newMatrix = new Matrix(this.rows, this.columns);\n for (let i = 0; i < this.columns; i++) {\n const column = this.getColumn(i);\n if (column.length) {\n rescale(column, {\n min,\n max,\n output: column,\n });\n }\n newMatrix.setColumn(i, column);\n }\n return newMatrix;\n }\n\n flipRows() {\n const middle = Math.ceil(this.columns / 2);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < middle; j++) {\n let first = this.get(i, j);\n let last = this.get(i, this.columns - 1 - j);\n this.set(i, j, last);\n this.set(i, this.columns - 1 - j, first);\n }\n }\n return this;\n }\n\n flipColumns() {\n const middle = Math.ceil(this.rows / 2);\n for (let j = 0; j < this.columns; j++) {\n for (let i = 0; i < middle; i++) {\n let first = this.get(i, j);\n let last = this.get(this.rows - 1 - i, j);\n this.set(i, j, last);\n this.set(this.rows - 1 - i, j, first);\n }\n }\n return this;\n }\n\n kroneckerProduct(other) {\n other = Matrix.checkMatrix(other);\n\n let m = this.rows;\n let n = this.columns;\n let p = other.rows;\n let q = other.columns;\n\n let result = new Matrix(m * p, n * q);\n for (let i = 0; i < m; i++) {\n for (let j = 0; j < n; j++) {\n for (let k = 0; k < p; k++) {\n for (let l = 0; l < q; l++) {\n result.set(p * i + k, q * j + l, this.get(i, j) * other.get(k, l));\n }\n }\n }\n }\n return result;\n }\n\n kroneckerSum(other) {\n other = Matrix.checkMatrix(other);\n if (!this.isSquare() || !other.isSquare()) {\n throw new Error('Kronecker Sum needs two Square Matrices');\n }\n let m = this.rows;\n let n = other.rows;\n let AxI = this.kroneckerProduct(Matrix.eye(n, n));\n let IxB = Matrix.eye(m, m).kroneckerProduct(other);\n return AxI.add(IxB);\n }\n\n transpose() {\n let result = new Matrix(this.columns, this.rows);\n for (let i = 0; i < this.rows; i++) {\n for (let j = 0; j < this.columns; j++) {\n result.set(j, i, this.get(i, j));\n }\n }\n return result;\n }\n\n sortRows(compareFunction = compareNumbers) {\n for (let i = 0; i < this.rows; i++) {\n this.setRow(i, this.getRow(i).sort(compareFunction));\n }\n return this;\n }\n\n sortColumns(compareFunction = compareNumbers) {\n for (let i = 0; i < this.columns; i++) {\n this.setColumn(i, this.getColumn(i).sort(compareFunction));\n }\n return this;\n }\n\n subMatrix(startRow, endRow, startColumn, endColumn) {\n checkRange(this, startRow, endRow, startColumn, endColumn);\n let newMatrix = new Matrix(\n endRow - startRow + 1,\n endColumn - startColumn + 1,\n );\n for (let i = startRow; i <= endRow; i++) {\n for (let j = startColumn; j <= endColumn; j++) {\n newMatrix.set(i - startRow, j - startColumn, this.get(i, j));\n }\n }\n return newMatrix;\n }\n\n subMatrixRow(indices, startColumn, endColumn) {\n if (startColumn === undefined) startColumn = 0;\n if (endColumn === undefined) endColumn = this.columns - 1;\n if (\n startColumn > endColumn ||\n startColumn < 0 ||\n startColumn >= this.columns ||\n endColumn < 0 ||\n endColumn >= this.columns\n ) {\n throw new RangeError('Argument out of range');\n }\n\n let newMatrix = new Matrix(indices.length, endColumn - startColumn + 1);\n for (let i = 0; i < indices.length; i++) {\n for (let j = startColumn; j <= endColumn; j++) {\n if (indices[i] < 0 || indices[i] >= this.rows) {\n throw new RangeError(`Row index out of range: ${indices[i]}`);\n }\n newMatrix.set(i, j - startColumn, this.get(indices[i], j));\n }\n }\n return newMatrix;\n }\n\n subMatrixColumn(indices, startRow, endRow) {\n if (startRow === undefined) startRow = 0;\n if (endRow === undefined) endRow = this.rows - 1;\n if (\n startRow > endRow ||\n startRow < 0 ||\n startRow >= this.rows ||\n endRow < 0 ||\n endRow >= this.rows\n ) {\n throw new RangeError('Argument out of range');\n }\n\n let newMatrix = new Matrix(endRow - startRow + 1, indices.length);\n for (let i = 0; i < indices.length; i++) {\n for (let j = startRow; j <= endRow; j++) {\n if (indices[i] < 0 || indices[i] >= this.columns) {\n throw new RangeError(`Column index out of range: ${indices[i]}`);\n }\n newMatrix.set(j - startRow, i, this.get(j, indices[i]));\n }\n }\n return newMatrix;\n }\n\n setSubMatrix(matrix, startRow, startColumn) {\n matrix = Matrix.checkMatrix(matrix);\n if (matrix.isEmpty()) {\n return this;\n }\n let endRow = startRow + matrix.rows - 1;\n let endColumn = startColumn + matrix.columns - 1;\n checkRange(this, startRow, endRow, startColumn, endColumn);\n for (let i = 0; i < matrix.rows; i++) {\n for (let j = 0; j < matrix.columns; j++) {\n this.set(startRow + i, startColumn + j, matrix.get(i, j));\n }\n }\n return this;\n }\n\n selection(rowIndices, columnIndices) {\n checkRowIndices(this, rowIndices);\n checkColumnIndices(this, columnIndices);\n let newMatrix = new Matrix(rowIndices.length, columnIndices.length);\n for (let i = 0; i < rowIndices.length; i++) {\n let rowIndex = rowIndices[i];\n for (let j = 0; j < columnIndices.length; j++) {\n let columnIndex = columnIndices[j];\n newMatrix.set(i, j, this.get(rowIndex, columnIndex));\n }\n }\n return newMatrix;\n }\n\n trace() {\n let min = Math.min(this.rows, this.columns);\n let trace = 0;\n for (let i = 0; i < min; i++) {\n trace += this.get(i, i);\n }\n return trace;\n }\n\n clone() {\n return this.constructor.copy(this, new Matrix(this.rows, this.columns));\n }\n\n /**\n * @template {AbstractMatrix} M\n * @param {AbstractMatrix} from\n * @param {M} to\n * @return {M}\n */\n static copy(from, to) {\n for (const [row, column, value] of from.entries()) {\n to.set(row, column, value);\n }\n\n return to;\n }\n\n sum(by) {\n switch (by) {\n case 'row':\n return sumByRow(this);\n case 'column':\n return sumByColumn(this);\n case undefined:\n return sumAll(this);\n default:\n throw new Error(`invalid option: ${by}`);\n }\n }\n\n product(by) {\n switch (by) {\n case 'row':\n return productByRow(this);\n case 'column':\n return productByColumn(this);\n case undefined:\n return productAll(this);\n default:\n throw new Error(`invalid option: ${by}`);\n }\n }\n\n mean(by) {\n const sum = this.sum(by);\n switch (by) {\n case 'row': {\n for (let i = 0; i < this.rows; i++) {\n sum[i] /= this.columns;\n }\n return sum;\n }\n case 'column': {\n for (let i = 0; i < this.columns; i++) {\n sum[i] /= this.rows;\n }\n return sum;\n }\n case undefined:\n return sum / this.size;\n default:\n throw new Error(`invalid option: ${by}`);\n }\n }\n\n variance(by, options = {}) {\n if (typeof by === 'object') {\n options = by;\n by = undefined;\n }\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n const { unbiased = true, mean = this.mean(by) } = options;\n if (typeof unbiased !== 'boolean') {\n throw new TypeError('unbiased must be a boolean');\n }\n switch (by) {\n case 'row': {\n if (!isAnyArray(mean)) {\n throw new TypeError('mean must be an array');\n }\n return varianceByRow(this, unbiased, mean);\n }\n case 'column': {\n if (!isAnyArray(mean)) {\n throw new TypeError('mean must be an array');\n }\n return varianceByColumn(this, unbiased, mean);\n }\n case undefined: {\n if (typeof mean !== 'number') {\n throw new TypeError('mean must be a number');\n }\n return varianceAll(this, unbiased, mean);\n }\n default:\n throw new Error(`invalid option: ${by}`);\n }\n }\n\n standardDeviation(by, options) {\n if (typeof by === 'object') {\n options = by;\n by = undefined;\n }\n const variance = this.variance(by, options);\n if (by === undefined) {\n return Math.sqrt(variance);\n } else {\n for (let i = 0; i < variance.length; i++) {\n variance[i] = Math.sqrt(variance[i]);\n }\n return variance;\n }\n }\n\n center(by, options = {}) {\n if (typeof by === 'object') {\n options = by;\n by = undefined;\n }\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n const { center = this.mean(by) } = options;\n switch (by) {\n case 'row': {\n if (!isAnyArray(center)) {\n throw new TypeError('center must be an array');\n }\n centerByRow(this, center);\n return this;\n }\n case 'column': {\n if (!isAnyArray(center)) {\n throw new TypeError('center must be an array');\n }\n centerByColumn(this, center);\n return this;\n }\n case undefined: {\n if (typeof center !== 'number') {\n throw new TypeError('center must be a number');\n }\n centerAll(this, center);\n return this;\n }\n default:\n throw new Error(`invalid option: ${by}`);\n }\n }\n\n scale(by, options = {}) {\n if (typeof by === 'object') {\n options = by;\n by = undefined;\n }\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n let scale = options.scale;\n switch (by) {\n case 'row': {\n if (scale === undefined) {\n scale = getScaleByRow(this);\n } else if (!isAnyArray(scale)) {\n throw new TypeError('scale must be an array');\n }\n scaleByRow(this, scale);\n return this;\n }\n case 'column': {\n if (scale === undefined) {\n scale = getScaleByColumn(this);\n } else if (!isAnyArray(scale)) {\n throw new TypeError('scale must be an array');\n }\n scaleByColumn(this, scale);\n return this;\n }\n case undefined: {\n if (scale === undefined) {\n scale = getScaleAll(this);\n } else if (typeof scale !== 'number') {\n throw new TypeError('scale must be a number');\n }\n scaleAll(this, scale);\n return this;\n }\n default:\n throw new Error(`invalid option: ${by}`);\n }\n }\n\n toString(options) {\n return inspectMatrixWithOptions(this, options);\n }\n\n [Symbol.iterator]() {\n return this.entries();\n }\n\n /**\n * iterator from left to right, from top to bottom\n * yield [row, column, value]\n * @returns {Generator<[number, number, number], void, void>}\n */\n *entries() {\n for (let row = 0; row < this.rows; row++) {\n for (let col = 0; col < this.columns; col++) {\n yield [row, col, this.get(row, col)];\n }\n }\n }\n\n /**\n * iterator from left to right, from top to bottom\n * yield value\n * @returns {Generator<number, void, void>}\n */\n *values() {\n for (let row = 0; row < this.rows; row++) {\n for (let col = 0; col < this.columns; col++) {\n yield this.get(row, col);\n }\n }\n }\n}\n\nAbstractMatrix.prototype.klass = 'Matrix';\nif (typeof Symbol !== 'undefined') {\n AbstractMatrix.prototype[Symbol.for('nodejs.util.inspect.custom')] =\n inspectMatrix;\n}\n\nfunction compareNumbers(a, b) {\n return a - b;\n}\n\nfunction isArrayOfNumbers(array) {\n return array.every((element) => {\n return typeof element === 'number';\n });\n}\n\n// Synonyms\nAbstractMatrix.random = AbstractMatrix.rand;\nAbstractMatrix.randomInt = AbstractMatrix.randInt;\nAbstractMatrix.diagonal = AbstractMatrix.diag;\nAbstractMatrix.prototype.diagonal = AbstractMatrix.prototype.diag;\nAbstractMatrix.identity = AbstractMatrix.eye;\nAbstractMatrix.prototype.negate = AbstractMatrix.prototype.neg;\nAbstractMatrix.prototype.tensorProduct =\n AbstractMatrix.prototype.kroneckerProduct;\n\nclass Matrix extends AbstractMatrix {\n /**\n * @type {Float64Array[]}\n */\n data;\n\n /**\n * Init an empty matrix\n * @param {number} nRows\n * @param {number} nColumns\n */\n #initData(nRows, nColumns) {\n this.data = [];\n\n if (Number.isInteger(nColumns) && nColumns >= 0) {\n for (let i = 0; i < nRows; i++) {\n this.data.push(new Float64Array(nColumns));\n }\n } else {\n throw new TypeError('nColumns must be a positive integer');\n }\n\n this.rows = nRows;\n this.columns = nColumns;\n }\n\n constructor(nRows, nColumns) {\n super();\n if (Matrix.isMatrix(nRows)) {\n this.#initData(nRows.rows, nRows.columns);\n Matrix.copy(nRows, this);\n } else if (Number.isInteger(nRows) && nRows >= 0) {\n this.#initData(nRows, nColumns);\n } else if (isAnyArray(nRows)) {\n // Copy the values from the 2D array\n const arrayData = nRows;\n nRows = arrayData.length;\n nColumns = nRows ? arrayData[0].length : 0;\n if (typeof nColumns !== 'number') {\n throw new TypeError(\n 'Data must be a 2D array with at least one element',\n );\n }\n this.data = [];\n\n for (let i = 0; i < nRows; i++) {\n if (arrayData[i].length !== nColumns) {\n throw new RangeError('Inconsistent array dimensions');\n }\n if (!isArrayOfNumbers(arrayData[i])) {\n throw new TypeError('Input data contains non-numeric values');\n }\n this.data.push(Float64Array.from(arrayData[i]));\n }\n\n this.rows = nRows;\n this.columns = nColumns;\n } else {\n throw new TypeError(\n 'First argument must be a positive number or an array',\n );\n }\n }\n\n set(rowIndex, columnIndex, value) {\n this.data[rowIndex][columnIndex] = value;\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.data[rowIndex][columnIndex];\n }\n\n removeRow(index) {\n checkRowIndex(this, index);\n this.data.splice(index, 1);\n this.rows -= 1;\n return this;\n }\n\n addRow(index, array) {\n if (array === undefined) {\n array = index;\n index = this.rows;\n }\n checkRowIndex(this, index, true);\n array = Float64Array.from(checkRowVector(this, array));\n this.data.splice(index, 0, array);\n this.rows += 1;\n return this;\n }\n\n removeColumn(index) {\n checkColumnIndex(this, index);\n for (let i = 0; i < this.rows; i++) {\n const newRow = new Float64Array(this.columns - 1);\n for (let j = 0; j < index; j++) {\n newRow[j] = this.data[i][j];\n }\n for (let j = index + 1; j < this.columns; j++) {\n newRow[j - 1] = this.data[i][j];\n }\n this.data[i] = newRow;\n }\n this.columns -= 1;\n return this;\n }\n\n addColumn(index, array) {\n if (typeof array === 'undefined') {\n array = index;\n index = this.columns;\n }\n checkColumnIndex(this, index, true);\n array = checkColumnVector(this, array);\n for (let i = 0; i < this.rows; i++) {\n const newRow = new Float64Array(this.columns + 1);\n let j = 0;\n for (; j < index; j++) {\n newRow[j] = this.data[i][j];\n }\n newRow[j++] = array[i];\n for (; j < this.columns + 1; j++) {\n newRow[j] = this.data[i][j - 1];\n }\n this.data[i] = newRow;\n }\n this.columns += 1;\n return this;\n }\n}\n\ninstallMathOperations(AbstractMatrix, Matrix);\n\n/**\n * @typedef {0 | 1 | number | boolean} Mask\n */\n\nclass SymmetricMatrix extends AbstractMatrix {\n /** @type {Matrix} */\n #matrix;\n\n get size() {\n return this.#matrix.size;\n }\n\n get rows() {\n return this.#matrix.rows;\n }\n\n get columns() {\n return this.#matrix.columns;\n }\n\n get diagonalSize() {\n return this.rows;\n }\n\n /**\n * not the same as matrix.isSymmetric()\n * Here is to check if it's instanceof SymmetricMatrix without bundling issues\n *\n * @param value\n * @returns {boolean}\n */\n static isSymmetricMatrix(value) {\n return Matrix.isMatrix(value) && value.klassType === 'SymmetricMatrix';\n }\n\n /**\n * @param diagonalSize\n * @return {SymmetricMatrix}\n */\n static zeros(diagonalSize) {\n return new this(diagonalSize);\n }\n\n /**\n * @param diagonalSize\n * @return {SymmetricMatrix}\n */\n static ones(diagonalSize) {\n return new this(diagonalSize).fill(1);\n }\n\n /**\n * @param {number | AbstractMatrix | ArrayLike<ArrayLike<number>>} diagonalSize\n * @return {this}\n */\n constructor(diagonalSize) {\n super();\n\n if (Matrix.isMatrix(diagonalSize)) {\n if (!diagonalSize.isSymmetric()) {\n throw new TypeError('not symmetric data');\n }\n\n this.#matrix = Matrix.copy(\n diagonalSize,\n new Matrix(diagonalSize.rows, diagonalSize.rows),\n );\n } else if (Number.isInteger(diagonalSize) && diagonalSize >= 0) {\n this.#matrix = new Matrix(diagonalSize, diagonalSize);\n } else {\n this.#matrix = new Matrix(diagonalSize);\n\n if (!this.isSymmetric()) {\n throw new TypeError('not symmetric data');\n }\n }\n }\n\n clone() {\n const matrix = new SymmetricMatrix(this.diagonalSize);\n\n for (const [row, col, value] of this.upperRightEntries()) {\n matrix.set(row, col, value);\n }\n\n return matrix;\n }\n\n toMatrix() {\n return new Matrix(this);\n }\n\n get(rowIndex, columnIndex) {\n return this.#matrix.get(rowIndex, columnIndex);\n }\n set(rowIndex, columnIndex, value) {\n // symmetric set\n this.#matrix.set(rowIndex, columnIndex, value);\n this.#matrix.set(columnIndex, rowIndex, value);\n\n return this;\n }\n\n removeCross(index) {\n // symmetric remove side\n this.#matrix.removeRow(index);\n this.#matrix.removeColumn(index);\n\n return this;\n }\n\n addCross(index, array) {\n if (array === undefined) {\n array = index;\n index = this.diagonalSize;\n }\n\n const row = array.slice();\n row.splice(index, 1);\n\n this.#matrix.addRow(index, row);\n this.#matrix.addColumn(index, array);\n\n return this;\n }\n\n /**\n * @param {Mask[]} mask\n */\n applyMask(mask) {\n if (mask.length !== this.diagonalSize) {\n throw new RangeError('Mask size do not match with matrix size');\n }\n\n // prepare sides to remove from matrix from mask\n /** @type {number[]} */\n const sidesToRemove = [];\n for (const [index, passthroughs] of mask.entries()) {\n if (passthroughs) continue;\n sidesToRemove.push(index);\n }\n // to remove from highest to lowest for no mutation shifting\n sidesToRemove.reverse();\n\n // remove sides\n for (const sideIndex of sidesToRemove) {\n this.removeCross(sideIndex);\n }\n\n return this;\n }\n\n /**\n * Compact format upper-right corner of matrix\n * iterate from left to right, from top to bottom.\n *\n * ```\n * A B C D\n * A 1 2 3 4\n * B 2 5 6 7\n * C 3 6 8 9\n * D 4 7 9 10\n * ```\n *\n * will return compact 1D array `[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]`\n *\n * length is S(i=0, n=sideSize) => 10 for a 4 sideSized matrix\n *\n * @returns {number[]}\n */\n toCompact() {\n const { diagonalSize } = this;\n\n /** @type {number[]} */\n const compact = new Array((diagonalSize * (diagonalSize + 1)) / 2);\n for (let col = 0, row = 0, index = 0; index < compact.length; index++) {\n compact[index] = this.get(row, col);\n\n if (++col >= diagonalSize) col = ++row;\n }\n\n return compact;\n }\n\n /**\n * @param {number[]} compact\n * @return {SymmetricMatrix}\n */\n static fromCompact(compact) {\n const compactSize = compact.length;\n // compactSize = (sideSize * (sideSize + 1)) / 2\n // https://mathsolver.microsoft.com/fr/solve-problem/y%20%3D%20%20x%20%60cdot%20%20%20%60frac%7B%20%20%60left(%20x%2B1%20%20%60right)%20%20%20%20%7D%7B%202%20%20%7D\n // sideSize = (Sqrt(8 × compactSize + 1) - 1) / 2\n const diagonalSize = (Math.sqrt(8 * compactSize + 1) - 1) / 2;\n\n if (!Number.isInteger(diagonalSize)) {\n throw new TypeError(\n `This array is not a compact representation of a Symmetric Matrix, ${JSON.stringify(\n compact,\n )}`,\n );\n }\n\n const matrix = new SymmetricMatrix(diagonalSize);\n for (let col = 0, row = 0, index = 0; index < compactSize; index++) {\n matrix.set(col, row, compact[index]);\n if (++col >= diagonalSize) col = ++row;\n }\n\n return matrix;\n }\n\n /**\n * half iterator upper-right-corner from left to right, from top to bottom\n * yield [row, column, value]\n *\n * @returns {Generator<[number, number, number], void, void>}\n */\n *upperRightEntries() {\n for (let row = 0, col = 0; row < this.diagonalSize; void 0) {\n const value = this.get(row, col);\n\n yield [row, col, value];\n\n // at the end of row, move cursor to next row at diagonal position\n if (++col >= this.diagonalSize) col = ++row;\n }\n }\n\n /**\n * half iterator upper-right-corner from left to right, from top to bottom\n * yield value\n *\n * @returns {Generator<[number, number, number], void, void>}\n */\n *upperRightValues() {\n for (let row = 0, col = 0; row < this.diagonalSize; void 0) {\n const value = this.get(row, col);\n\n yield value;\n\n // at the end of row, move cursor to next row at diagonal position\n if (++col >= this.diagonalSize) col = ++row;\n }\n }\n}\nSymmetricMatrix.prototype.klassType = 'SymmetricMatrix';\n\nclass DistanceMatrix extends SymmetricMatrix {\n /**\n * not the same as matrix.isSymmetric()\n * Here is to check if it's instanceof SymmetricMatrix without bundling issues\n *\n * @param value\n * @returns {boolean}\n */\n static isDistanceMatrix(value) {\n return (\n SymmetricMatrix.isSymmetricMatrix(value) &&\n value.klassSubType === 'DistanceMatrix'\n );\n }\n\n constructor(sideSize) {\n super(sideSize);\n\n if (!this.isDistance()) {\n throw new TypeError('Provided arguments do no produce a distance matrix');\n }\n }\n\n set(rowIndex, columnIndex, value) {\n // distance matrix diagonal is 0\n if (rowIndex === columnIndex) value = 0;\n\n return super.set(rowIndex, columnIndex, value);\n }\n\n addCross(index, array) {\n if (array === undefined) {\n array = index;\n index = this.diagonalSize;\n }\n\n // ensure distance\n array = array.slice();\n array[index] = 0;\n\n return super.addCross(index, array);\n }\n\n toSymmetricMatrix() {\n return new SymmetricMatrix(this);\n }\n\n clone() {\n const matrix = new DistanceMatrix(this.diagonalSize);\n\n for (const [row, col, value] of this.upperRightEntries()) {\n if (row === col) continue;\n matrix.set(row, col, value);\n }\n\n return matrix;\n }\n\n /**\n * Compact format upper-right corner of matrix\n * no diagonal (only zeros)\n * iterable from left to right, from top to bottom.\n *\n * ```\n * A B C D\n * A 0 1 2 3\n * B 1 0 4 5\n * C 2 4 0 6\n * D 3 5 6 0\n * ```\n *\n * will return compact 1D array `[1, 2, 3, 4, 5, 6]`\n *\n * length is S(i=0, n=sideSize-1) => 6 for a 4 side sized matrix\n *\n * @returns {number[]}\n */\n toCompact() {\n const { diagonalSize } = this;\n const compactLength = ((diagonalSize - 1) * diagonalSize) / 2;\n\n /** @type {number[]} */\n const compact = new Array(compactLength);\n for (let col = 1, row = 0, index = 0; index < compact.length; index++) {\n compact[index] = this.get(row, col);\n\n if (++col >= diagonalSize) col = ++row + 1;\n }\n\n return compact;\n }\n\n /**\n * @param {number[]} compact\n */\n static fromCompact(compact) {\n const compactSize = compact.length;\n\n if (compactSize === 0) {\n return new this(0);\n }\n\n // compactSize in Natural integer range ]0;∞]\n // compactSize = (sideSize * (sideSize - 1)) / 2\n // sideSize = (Sqrt(8 × compactSize + 1) + 1) / 2\n const diagonalSize = (Math.sqrt(8 * compactSize + 1) + 1) / 2;\n\n if (!Number.isInteger(diagonalSize)) {\n throw new TypeError(\n `This array is not a compact representation of a DistanceMatrix, ${JSON.stringify(\n compact,\n )}`,\n );\n }\n\n const matrix = new this(diagonalSize);\n for (let col = 1, row = 0, index = 0; index < compactSize; index++) {\n matrix.set(col, row, compact[index]);\n if (++col >= diagonalSize) col = ++row + 1;\n }\n\n return matrix;\n }\n}\nDistanceMatrix.prototype.klassSubType = 'DistanceMatrix';\n\nclass BaseView extends AbstractMatrix {\n constructor(matrix, rows, columns) {\n super();\n this.matrix = matrix;\n this.rows = rows;\n this.columns = columns;\n }\n}\n\nclass MatrixColumnView extends BaseView {\n constructor(matrix, column) {\n checkColumnIndex(matrix, column);\n super(matrix, matrix.rows, 1);\n this.column = column;\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(rowIndex, this.column, value);\n return this;\n }\n\n get(rowIndex) {\n return this.matrix.get(rowIndex, this.column);\n }\n}\n\nclass MatrixColumnSelectionView extends BaseView {\n constructor(matrix, columnIndices) {\n checkColumnIndices(matrix, columnIndices);\n super(matrix, matrix.rows, columnIndices.length);\n this.columnIndices = columnIndices;\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(rowIndex, this.columnIndices[columnIndex], value);\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(rowIndex, this.columnIndices[columnIndex]);\n }\n}\n\nclass MatrixFlipColumnView extends BaseView {\n constructor(matrix) {\n super(matrix, matrix.rows, matrix.columns);\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(rowIndex, this.columns - columnIndex - 1, value);\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(rowIndex, this.columns - columnIndex - 1);\n }\n}\n\nclass MatrixFlipRowView extends BaseView {\n constructor(matrix) {\n super(matrix, matrix.rows, matrix.columns);\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(this.rows - rowIndex - 1, columnIndex, value);\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(this.rows - rowIndex - 1, columnIndex);\n }\n}\n\nclass MatrixRowView extends BaseView {\n constructor(matrix, row) {\n checkRowIndex(matrix, row);\n super(matrix, 1, matrix.columns);\n this.row = row;\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(this.row, columnIndex, value);\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(this.row, columnIndex);\n }\n}\n\nclass MatrixRowSelectionView extends BaseView {\n constructor(matrix, rowIndices) {\n checkRowIndices(matrix, rowIndices);\n super(matrix, rowIndices.length, matrix.columns);\n this.rowIndices = rowIndices;\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(this.rowIndices[rowIndex], columnIndex, value);\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(this.rowIndices[rowIndex], columnIndex);\n }\n}\n\nclass MatrixSelectionView extends BaseView {\n constructor(matrix, rowIndices, columnIndices) {\n checkRowIndices(matrix, rowIndices);\n checkColumnIndices(matrix, columnIndices);\n super(matrix, rowIndices.length, columnIndices.length);\n this.rowIndices = rowIndices;\n this.columnIndices = columnIndices;\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(\n this.rowIndices[rowIndex],\n this.columnIndices[columnIndex],\n value,\n );\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(\n this.rowIndices[rowIndex],\n this.columnIndices[columnIndex],\n );\n }\n}\n\nclass MatrixSubView extends BaseView {\n constructor(matrix, startRow, endRow, startColumn, endColumn) {\n checkRange(matrix, startRow, endRow, startColumn, endColumn);\n super(matrix, endRow - startRow + 1, endColumn - startColumn + 1);\n this.startRow = startRow;\n this.startColumn = startColumn;\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(\n this.startRow + rowIndex,\n this.startColumn + columnIndex,\n value,\n );\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(\n this.startRow + rowIndex,\n this.startColumn + columnIndex,\n );\n }\n}\n\nclass MatrixTransposeView extends BaseView {\n constructor(matrix) {\n super(matrix, matrix.columns, matrix.rows);\n }\n\n set(rowIndex, columnIndex, value) {\n this.matrix.set(columnIndex, rowIndex, value);\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.matrix.get(columnIndex, rowIndex);\n }\n}\n\nclass WrapperMatrix1D extends AbstractMatrix {\n constructor(data, options = {}) {\n const { rows = 1 } = options;\n\n if (data.length % rows !== 0) {\n throw new Error('the data length is not divisible by the number of rows');\n }\n super();\n this.rows = rows;\n this.columns = data.length / rows;\n this.data = data;\n }\n\n set(rowIndex, columnIndex, value) {\n let index = this._calculateIndex(rowIndex, columnIndex);\n this.data[index] = value;\n return this;\n }\n\n get(rowIndex, columnIndex) {\n let index = this._calculateIndex(rowIndex, columnIndex);\n return this.data[index];\n }\n\n _calculateIndex(row, column) {\n return row * this.columns + column;\n }\n}\n\nclass WrapperMatrix2D extends AbstractMatrix {\n constructor(data) {\n super();\n this.data = data;\n this.rows = data.length;\n this.columns = data[0].length;\n }\n\n set(rowIndex, columnIndex, value) {\n this.data[rowIndex][columnIndex] = value;\n return this;\n }\n\n get(rowIndex, columnIndex) {\n return this.data[rowIndex][columnIndex];\n }\n}\n\nfunction wrap(array, options) {\n if (isAnyArray(array)) {\n if (array[0] && isAnyArray(array[0])) {\n return new WrapperMatrix2D(array);\n } else {\n return new WrapperMatrix1D(array, options);\n }\n } else {\n throw new Error('the argument is not an array');\n }\n}\n\nclass LuDecomposition {\n constructor(matrix) {\n matrix = WrapperMatrix2D.checkMatrix(matrix);\n\n let lu = matrix.clone();\n let rows = lu.rows;\n let columns = lu.columns;\n let pivotVector = new Float64Array(rows);\n let pivotSign = 1;\n let i, j, k, p, s, t, v;\n let LUcolj, kmax;\n\n for (i = 0; i < rows; i++) {\n pivotVector[i] = i;\n }\n\n LUcolj = new Float64Array(rows);\n\n for (j = 0; j < columns; j++) {\n for (i = 0; i < rows; i++) {\n LUcolj[i] = lu.get(i, j);\n }\n\n for (i = 0; i < rows; i++) {\n kmax = Math.min(i, j);\n s = 0;\n for (k = 0; k < kmax; k++) {\n s += lu.get(i, k) * LUcolj[k];\n }\n LUcolj[i] -= s;\n lu.set(i, j, LUcolj[i]);\n }\n\n p = j;\n for (i = j + 1; i < rows; i++) {\n if (Math.abs(LUcolj[i]) > Math.abs(LUcolj[p])) {\n p = i;\n }\n }\n\n if (p !== j) {\n for (k = 0; k < columns; k++) {\n t = lu.get(p, k);\n lu.set(p, k, lu.get(j, k));\n lu.set(j, k, t);\n }\n\n v = pivotVector[p];\n pivotVector[p] = pivotVector[j];\n pivotVector[j] = v;\n\n pivotSign = -pivotSign;\n }\n\n if (j < rows && lu.get(j, j) !== 0) {\n for (i = j + 1; i < rows; i++) {\n lu.set(i, j, lu.get(i, j) / lu.get(j, j));\n }\n }\n }\n\n this.LU = lu;\n this.pivotVector = pivotVector;\n this.pivotSign = pivotSign;\n }\n\n isSingular() {\n let data = this.LU;\n let col = data.columns;\n for (let j = 0; j < col; j++) {\n if (data.get(j, j) === 0) {\n return true;\n }\n }\n return false;\n }\n\n solve(value) {\n value = Matrix.checkMatrix(value);\n\n let lu = this.LU;\n let rows = lu.rows;\n\n if (rows !== value.rows) {\n throw new Error('Invalid matrix dimensions');\n }\n if (this.isSingular()) {\n throw new Error('LU matrix is singular');\n }\n\n let count = value.columns;\n let X = value.subMatrixRow(this.pivotVector, 0, count - 1);\n let columns = lu.columns;\n let i, j, k;\n\n for (k = 0; k < columns; k++) {\n for (i = k + 1; i < columns; i++) {\n for (j = 0; j < count; j++) {\n X.set(i, j, X.get(i, j) - X.get(k, j) * lu.get(i, k));\n }\n }\n }\n for (k = columns - 1; k >= 0; k--) {\n for (j = 0; j < count; j++) {\n X.set(k, j, X.get(k, j) / lu.get(k, k));\n }\n for (i = 0; i < k; i++) {\n for (j = 0; j < count; j++) {\n X.set(i, j, X.get(i, j) - X.get(k, j) * lu.get(i, k));\n }\n }\n }\n return X;\n }\n\n get determinant() {\n let data = this.LU;\n if (!data.isSquare()) {\n throw new Error('Matrix must be square');\n }\n let determinant = this.pivotSign;\n let col = data.columns;\n for (let j = 0; j < col; j++) {\n determinant *= data.get(j, j);\n }\n return determinant;\n }\n\n get lowerTriangularMatrix() {\n let data = this.LU;\n let rows = data.rows;\n let columns = data.columns;\n let X = new Matrix(rows, columns);\n for (let i = 0; i < rows; i++) {\n for (let j = 0; j < columns; j++) {\n if (i > j) {\n X.set(i, j, data.get(i, j));\n } else if (i === j) {\n X.set(i, j, 1);\n } else {\n X.set(i, j, 0);\n }\n }\n }\n return X;\n }\n\n get upperTriangularMatrix() {\n let data = this.LU;\n let rows = data.rows;\n let columns = data.columns;\n let X = new Matrix(rows, columns);\n for (let i = 0; i < rows; i++) {\n for (let j = 0; j < columns; j++) {\n if (i <= j) {\n X.set(i, j, data.get(i, j));\n } else {\n X.set(i, j, 0);\n }\n }\n }\n return X;\n }\n\n get pivotPermutationVector() {\n return Array.from(this.pivotVector);\n }\n}\n\n/**\n * Transpose a square matrix in place, without allocating a copy.\n * Used to restore the logical layout of decomposition outputs that were\n * accumulated in transposed storage for cache-sequential inner loops.\n * @param {import('../matrix').default} matrix - square matrix, mutated in place\n * @returns {import('../matrix').default} the same matrix\n */\nfunction transposeSquareInPlace(matrix) {\n const data = matrix.data;\n const n = matrix.rows;\n for (let i = 0; i < n; i++) {\n const rowI = data[i];\n for (let j = i + 1; j < n; j++) {\n const tmp = rowI[j];\n rowI[j] = data[j][i];\n data[j][i] = tmp;\n }\n }\n return matrix;\n}\n\nfunction hypotenuse(a, b) {\n let r = 0;\n if (Math.abs(a) > Math.abs(b)) {\n r = b / a;\n return Math.abs(a) * Math.sqrt(1 + r * r);\n }\n if (b !== 0) {\n r = a / b;\n return Math.abs(b) * Math.sqrt(1 + r * r);\n }\n return 0;\n}\n\nclass QrDecomposition {\n constructor(value) {\n value = WrapperMatrix2D.checkMatrix(value);\n\n let qr = value.clone();\n let m = value.rows;\n let n = value.columns;\n let rdiag = new Float64Array(n);\n let i, j, k, s;\n\n for (k = 0; k < n; k++) {\n let nrm = 0;\n for (i = k; i < m; i++) {\n nrm = hypotenuse(nrm, qr.get(i, k));\n }\n if (nrm !== 0) {\n if (qr.get(k, k) < 0) {\n nrm = -nrm;\n }\n for (i = k; i < m; i++) {\n qr.set(i, k, qr.get(i, k) / nrm);\n }\n qr.set(k, k, qr.get(k, k) + 1);\n for (j = k + 1; j < n; j++) {\n s = 0;\n for (i = k; i < m; i++) {\n s += qr.get(i, k) * qr.get(i, j);\n }\n s = -s / qr.get(k, k);\n for (i = k; i < m; i++) {\n qr.set(i, j, qr.get(i, j) + s * qr.get(i, k));\n }\n }\n }\n rdiag[k] = -nrm;\n }\n\n this.QR = qr;\n this.Rdiag = rdiag;\n }\n\n solve(value) {\n value = Matrix.checkMatrix(value);\n\n let qr = this.QR;\n let m = qr.rows;\n\n if (value.rows !== m) {\n throw new Error('Matrix row dimensions must agree');\n }\n if (!this.isFullRank()) {\n throw new Error('Matrix is rank deficient');\n }\n\n let count = value.columns;\n let X = value.clone();\n let n = qr.columns;\n let i, j, k, s;\n\n for (k = 0; k < n; k++) {\n for (j = 0; j < count; j++) {\n s = 0;\n for (i = k; i < m; i++) {\n s += qr.get(i, k) * X.get(i, j);\n }\n s = -s / qr.get(k, k);\n for (i = k; i < m; i++) {\n X.set(i, j, X.get(i, j) + s * qr.get(i, k));\n }\n }\n }\n for (k = n - 1; k >= 0; k--) {\n for (j = 0; j < count; j++) {\n X.set(k, j, X.get(k, j) / this.Rdiag[k]);\n }\n for (i = 0; i < k; i++) {\n for (j = 0; j < count; j++) {\n X.set(i, j, X.get(i, j) - X.get(k, j) * qr.get(i, k));\n }\n }\n }\n\n return X.subMatrix(0, n - 1, 0, count - 1);\n }\n\n isFullRank() {\n let columns = this.QR.columns;\n for (let i = 0; i < columns; i++) {\n if (this.Rdiag[i] === 0) {\n return false;\n }\n }\n return true;\n }\n\n get upperTriangularMatrix() {\n let qr = this.QR;\n let n = qr.columns;\n let X = new Matrix(n, n);\n let i, j;\n for (i = 0; i < n; i++) {\n for (j = 0; j < n; j++) {\n if (i < j) {\n X.set(i, j, qr.get(i, j));\n } else if (i === j) {\n X.set(i, j, this.Rdiag[i]);\n } else {\n X.set(i, j, 0);\n }\n }\n }\n return X;\n }\n\n get orthogonalMatrix() {\n let qr = this.QR;\n let rows = qr.rows;\n let columns = qr.columns;\n let X = new Matrix(rows, columns);\n let i, j, k, s;\n\n for (k = columns - 1; k >= 0; k--) {\n for (i = 0; i < rows; i++) {\n X.set(i, k, 0);\n }\n X.set(k, k, 1);\n for (j = k; j < columns; j++) {\n if (qr.get(k, k) !== 0) {\n s = 0;\n for (i = k; i < rows; i++) {\n s += qr.get(i, k) * X.get(i, j);\n }\n\n s = -s / qr.get(k, k);\n\n for (i = k; i < rows; i++) {\n X.set(i, j, X.get(i, j) + s * qr.get(i, k));\n }\n }\n }\n }\n return X;\n }\n}\n\nclass SingularValueDecomposition {\n constructor(value, options = {}) {\n value = WrapperMatrix2D.checkMatrix(value);\n\n if (value.isEmpty()) {\n throw new Error('Matrix must be non-empty');\n }\n\n let m = value.rows;\n let n = value.columns;\n\n const {\n computeLeftSingularVectors = true,\n computeRightSingularVectors = true,\n autoTranspose = false,\n } = options;\n\n let wantu = Boolean(computeLeftSingularVectors);\n let wantv = Boolean(computeRightSingularVectors);\n\n // Work on the transpose of the input so the hot inner loops (which iterate\n // over rows for a fixed column) scan memory sequentially in the row-major\n // backing store. `at` holds the transpose: at.get(j, i) === a.get(i, j)\n // where `a` is the logical m x n working matrix.\n let swapped = false;\n let at;\n if (m < n) {\n if (!autoTranspose) {\n // eslint-disable-next-line no-console\n console.warn(\n 'Computing SVD on a matrix with more columns than rows. Consider enabling autoTranspose',\n );\n at = value.transpose();\n } else {\n at = value.clone();\n m = value.columns;\n n = value.rows;\n swapped = true;\n let aux = wantu;\n wantu = wantv;\n wantv = aux;\n }\n } else {\n at = value.transpose();\n }\n\n let nu = Math.min(m, n);\n let ni = Math.min(m + 1, n);\n let s = new Float64Array(ni);\n // U and V are stored transposed during the computation so the inner loops\n // (which always vary the row index) scan memory sequentially. They are\n // transposed back to their logical layout before being returned.\n // Ut.get(j, i) === U.get(i, j) and Vt.get(j, i) === V.get(i, j).\n let U = new Matrix(nu, m);\n let V = new Matrix(n, n);\n\n let e = new Float64Array(n);\n let work = new Float64Array(m);\n\n let si = new Float64Array(ni);\n for (let i = 0; i < ni; i++) si[i] = i;\n\n let nct = Math.min(m - 1, n);\n let nrt = Math.max(0, Math.min(n - 2, m));\n let mrc = Math.max(nct, nrt);\n\n for (let k = 0; k < mrc; k++) {\n if (k < nct) {\n s[k] = 0;\n for (let i = k; i < m; i++) {\n s[k] = hypotenuse(s[k], at.get(k, i));\n }\n if (s[k] !== 0) {\n if (at.get(k, k) < 0) {\n s[k] = -s[k];\n }\n for (let i = k; i < m; i++) {\n at.set(k, i, at.get(k, i) / s[k]);\n }\n at.set(k, k, at.get(k, k) + 1);\n }\n s[k] = -s[k];\n }\n\n for (let j = k + 1; j < n; j++) {\n if (k < nct && s[k] !== 0) {\n let t = 0;\n for (let i = k; i < m; i++) {\n t += at.get(k, i) * at.get(j, i);\n }\n t = -t / at.get(k, k);\n for (let i = k; i < m; i++) {\n at.set(j, i, at.get(j, i) + t * at.get(k, i));\n }\n }\n e[j] = at.get(j, k);\n }\n\n if (wantu && k < nct) {\n for (let i = k; i < m; i++) {\n U.set(k, i, at.get(k, i));\n }\n }\n\n if (k < nrt) {\n e[k] = 0;\n for (let i = k + 1; i < n; i++) {\n e[k] = hypotenuse(e[k], e[i]);\n }\n if (e[k] !== 0) {\n if (e[k + 1] < 0) {\n e[k] = 0 - e[k];\n }\n for (let i = k + 1; i < n; i++) {\n e[i] /= e[k];\n }\n e[k + 1] += 1;\n }\n e[k] = -e[k];\n if (k + 1 < m && e[k] !== 0) {\n for (let i = k + 1; i < m; i++) {\n work[i] = 0;\n }\n for (let i = k + 1; i < m; i++) {\n for (let j = k + 1; j < n; j++) {\n work[i] += e[j] * at.get(j, i);\n }\n }\n for (let j = k + 1; j < n; j++) {\n let t = -e[j] / e[k + 1];\n for (let i = k + 1; i < m; i++) {\n at.set(j, i, at.get(j, i) + t * work[i]);\n }\n }\n }\n if (wantv) {\n for (let i = k + 1; i < n; i++) {\n V.set(k, i, e[i]);\n }\n }\n }\n }\n\n let p = Math.min(n, m + 1);\n if (nct < n) {\n s[nct] = at.get(nct, nct);\n }\n if (m < p) {\n s[p - 1] = 0;\n }\n if (nrt + 1 < p) {\n e[nrt] = at.get(p - 1, nrt);\n }\n e[p - 1] = 0;\n\n if (wantu) {\n for (let j = nct; j < nu; j++) {\n for (let i = 0; i < m; i++) {\n U.set(j, i, 0);\n }\n U.set(j, j, 1);\n }\n for (let k = nct - 1; k >= 0; k--) {\n if (s[k] !== 0) {\n for (let j = k + 1; j < nu; j++) {\n let t = 0;\n for (let i = k; i < m; i++) {\n t += U.get(k, i) * U.get(j, i);\n }\n t = -t / U.get(k, k);\n for (let i = k; i < m; i++) {\n U.set(j, i, U.get(j, i) + t * U.get(k, i));\n }\n }\n for (let i = k; i < m; i++) {\n U.set(k, i, -U.get(k, i));\n }\n U.set(k, k, 1 + U.get(k, k));\n for (let i = 0; i < k - 1; i++) {\n U.set(k, i, 0);\n }\n } else {\n for (let i = 0; i < m; i++) {\n U.set(k, i, 0);\n }\n U.set(k, k, 1);\n }\n }\n }\n\n if (wantv) {\n for (let k = n - 1; k >= 0; k--) {\n if (k < nrt && e[k] !== 0) {\n for (let j = k + 1; j < n; j++) {\n let t = 0;\n for (let i = k + 1; i < n; i++) {\n t += V.get(k, i) * V.get(j, i);\n }\n t = -t / V.get(k, k + 1);\n for (let i = k + 1; i < n; i++) {\n V.set(j, i, V.get(j, i) + t * V.get(k, i));\n }\n }\n }\n for (let i = 0; i < n; i++) {\n V.set(k, i, 0);\n }\n V.set(k, k, 1);\n }\n }\n\n let pp = p - 1;\n let eps = Number.EPSILON;\n while (p > 0) {\n let k, kase;\n for (k = p - 2; k >= -1; k--) {\n if (k === -1) {\n break;\n }\n const alpha =\n Number.MIN_VALUE + eps * Math.abs(s[k] + Math.abs(s[k + 1]));\n if (Math.abs(e[k]) <= alpha || Number.isNaN(e[k])) {\n e[k] = 0;\n break;\n }\n }\n if (k === p - 2) {\n kase = 4;\n } else {\n let ks;\n for (ks = p - 1; ks >= k; ks--) {\n if (ks === k) {\n break;\n }\n let t =\n (ks !== p ? Math.abs(e[ks]) : 0) +\n (ks !== k + 1 ? Math.abs(e[ks - 1]) : 0);\n if (Math.abs(s[ks]) <= eps * t) {\n s[ks] = 0;\n break;\n }\n }\n if (ks === k) {\n kase = 3;\n } else if (ks === p - 1) {\n kase = 1;\n } else {\n kase = 2;\n k = ks;\n }\n }\n\n k++;\n\n switch (kase) {\n case 1: {\n let f = e[p - 2];\n e[p - 2] = 0;\n for (let j = p - 2; j >= k; j--) {\n let t = hypotenuse(s[j], f);\n let cs = s[j] / t;\n let sn = f / t;\n s[j] = t;\n if (j !== k) {\n f = -sn * e[j - 1];\n e[j - 1] = cs * e[j - 1];\n }\n if (wantv) {\n for (let i = 0; i < n; i++) {\n t = cs * V.get(j, i) + sn * V.get(p - 1, i);\n V.set(p - 1, i, -sn * V.get(j, i) + cs * V.get(p - 1, i));\n V.set(j, i, t);\n }\n }\n }\n break;\n }\n case 2: {\n let f = e[k - 1];\n e[k - 1] = 0;\n for (let j = k; j < p; j++) {\n let t = hypotenuse(s[j], f);\n let cs = s[j] / t;\n let sn = f / t;\n s[j] = t;\n f = -sn * e[j];\n e[j] = cs * e[j];\n if (wantu) {\n for (let i = 0; i < m; i++) {\n t = cs * U.get(j, i) + sn * U.get(k - 1, i);\n U.set(k - 1, i, -sn * U.get(j, i) + cs * U.get(k - 1, i));\n U.set(j, i, t);\n }\n }\n }\n break;\n }\n case 3: {\n const scale = Math.max(\n Math.abs(s[p - 1]),\n Math.abs(s[p - 2]),\n Math.abs(e[p - 2]),\n Math.abs(s[k]),\n Math.abs(e[k]),\n );\n const sp = s[p - 1] / scale;\n const spm1 = s[p - 2] / scale;\n const epm1 = e[p - 2] / scale;\n const sk = s[k] / scale;\n const ek = e[k] / scale;\n const b = ((spm1 + sp) * (spm1 - sp) + epm1 * epm1) / 2;\n const c = sp * epm1 * (sp * epm1);\n let shift = 0;\n if (b !== 0 || c !== 0) {\n if (b < 0) {\n shift = 0 - Math.sqrt(b * b + c);\n } else {\n shift = Math.sqrt(b * b + c);\n }\n shift = c / (b + shift);\n }\n let f = (sk + sp) * (sk - sp) + shift;\n let g = sk * ek;\n for (let j = k; j < p - 1; j++) {\n let t = hypotenuse(f, g);\n if (t === 0) t = Number.MIN_VALUE;\n let cs = f / t;\n let sn = g / t;\n if (j !== k) {\n e[j - 1] = t;\n }\n f = cs * s[j] + sn * e[j];\n e[j] = cs * e[j] - sn * s[j];\n g = sn * s[j + 1];\n s[j + 1] = cs * s[j + 1];\n if (wantv) {\n for (let i = 0; i < n; i++) {\n t = cs * V.get(j, i) + sn * V.get(j + 1, i);\n V.set(j + 1, i, -sn * V.get(j, i) + cs * V.get(j + 1, i));\n V.set(j, i, t);\n }\n }\n t = hypotenuse(f, g);\n if (t === 0) t = Number.MIN_VALUE;\n cs = f / t;\n sn = g / t;\n s[j] = t;\n f = cs * e[j] + sn * s[j + 1];\n s[j + 1] = -sn * e[j] + cs * s[j + 1];\n g = sn * e[j + 1];\n e[j + 1] = cs * e[j + 1];\n if (wantu && j < m - 1) {\n for (let i = 0; i < m; i++) {\n t = cs * U.get(j, i) + sn * U.get(j + 1, i);\n U.set(j + 1, i, -sn * U.get(j, i) + cs * U.get(j + 1, i));\n U.set(j, i, t);\n }\n }\n }\n e[p - 2] = f;\n break;\n }\n case 4: {\n if (s[k] <= 0) {\n s[k] = s[k] < 0 ? -s[k] : 0;\n if (wantv) {\n for (let i = 0; i <= pp; i++) {\n V.set(k, i, -V.get(k, i));\n }\n }\n }\n while (k < pp) {\n if (s[k] >= s[k + 1]) {\n break;\n }\n let t = s[k];\n s[k] = s[k + 1];\n s[k + 1] = t;\n if (wantv && k < n - 1) {\n for (let i = 0; i < n; i++) {\n t = V.get(k + 1, i);\n V.set(k + 1, i, V.get(k, i));\n V.set(k, i, t);\n }\n }\n if (wantu && k < m - 1) {\n for (let i = 0; i < m; i++) {\n t = U.get(k + 1, i);\n U.set(k + 1, i, U.get(k, i));\n U.set(k, i, t);\n }\n }\n k++;\n }\n p--;\n break;\n }\n // no default\n }\n }\n\n // Restore the logical (row-major) layout of the singular vectors, which were\n // accumulated in transposed storage for cache-sequential inner loops. V is\n // always square and U is square whenever the input is, so this is done in\n // place (no allocation) in the common case.\n U = U.isSquare() ? transposeSquareInPlace(U) : U.transpose();\n V = transposeSquareInPlace(V);\n\n if (swapped) {\n let tmp = V;\n V = U;\n U = tmp;\n }\n\n this.m = m;\n this.n = n;\n this.s = s;\n this.U = U;\n this.V = V;\n }\n\n solve(value) {\n let Y = value;\n let e = this.threshold;\n let scols = this.s.length;\n let Ls = Matrix.zeros(scols, scols);\n\n for (let i = 0; i < scols; i++) {\n if (Math.abs(this.s[i]) <= e) {\n Ls.set(i, i, 0);\n } else {\n Ls.set(i, i, 1 / this.s[i]);\n }\n }\n\n let U = this.U;\n let V = this.rightSingularVectors;\n\n let VL = V.mmul(Ls);\n let vrows = V.rows;\n let urows = U.rows;\n let VLU = Matrix.zeros(vrows, urows);\n\n for (let i = 0; i < vrows; i++) {\n for (let j = 0; j < urows; j++) {\n let sum = 0;\n for (let k = 0; k < scols; k++) {\n sum += VL.get(i, k) * U.get(j, k);\n }\n VLU.set(i, j, sum);\n }\n }\n\n return VLU.mmul(Y);\n }\n\n solveForDiagonal(value) {\n return this.solve(Matrix.diag(value));\n }\n\n inverse() {\n let V = this.V;\n let e = this.threshold;\n let vrows = V.rows;\n let vcols = V.columns;\n let X = new Matrix(vrows, this.s.length);\n\n for (let i = 0; i < vrows; i++) {\n for (let j = 0; j < vcols; j++) {\n if (Math.abs(this.s[j]) > e) {\n X.set(i, j, V.get(i, j) / this.s[j]);\n }\n }\n }\n\n let U = this.U;\n\n let urows = U.rows;\n let ucols = U.columns;\n let Y = new Matrix(vrows, urows);\n\n for (let i = 0; i < vrows; i++) {\n for (let j = 0; j < urows; j++) {\n let sum = 0;\n for (let k = 0; k < ucols; k++) {\n sum += X.get(i, k) * U.get(j, k);\n }\n Y.set(i, j, sum);\n }\n }\n\n return Y;\n }\n\n get condition() {\n return this.s[0] / this.s[Math.min(this.m, this.n) - 1];\n }\n\n get norm2() {\n return this.s[0];\n }\n\n get rank() {\n let tol = Math.max(this.m, this.n) * this.s[0] * Number.EPSILON;\n let r = 0;\n let s = this.s;\n for (let i = 0, ii = s.length; i < ii; i++) {\n if (s[i] > tol) {\n r++;\n }\n }\n return r;\n }\n\n get diagonal() {\n return Array.from(this.s);\n }\n\n get threshold() {\n return (Number.EPSILON / 2) * Math.max(this.m, this.n) * this.s[0];\n }\n\n get leftSingularVectors() {\n return this.U;\n }\n\n get rightSingularVectors() {\n return this.V;\n }\n\n get diagonalMatrix() {\n return Matrix.diag(this.s);\n }\n}\n\nfunction inverse(matrix, useSVD = false) {\n matrix = WrapperMatrix2D.checkMatrix(matrix);\n if (useSVD) {\n return new SingularValueDecomposition(matrix).inverse();\n } else {\n return solve(matrix, Matrix.eye(matrix.rows));\n }\n}\n\nfunction solve(leftHandSide, rightHandSide, useSVD = false) {\n leftHandSide = WrapperMatrix2D.checkMatrix(leftHandSide);\n rightHandSide = WrapperMatrix2D.checkMatrix(rightHandSide);\n if (useSVD) {\n return new SingularValueDecomposition(leftHandSide).solve(rightHandSide);\n } else {\n return leftHandSide.isSquare()\n ? new LuDecomposition(leftHandSide).solve(rightHandSide)\n : new QrDecomposition(leftHandSide).solve(rightHandSide);\n }\n}\n\nfunction determinant(matrix) {\n matrix = Matrix.checkMatrix(matrix);\n if (matrix.isSquare()) {\n if (matrix.columns === 0) {\n return 1;\n }\n\n let a, b, c, d;\n if (matrix.columns === 2) {\n // 2 x 2 matrix\n a = matrix.get(0, 0);\n b = matrix.get(0, 1);\n c = matrix.get(1, 0);\n d = matrix.get(1, 1);\n\n return a * d - b * c;\n } else if (matrix.columns === 3) {\n // 3 x 3 matrix\n let subMatrix0, subMatrix1, subMatrix2;\n subMatrix0 = new MatrixSelectionView(matrix, [1, 2], [1, 2]);\n subMatrix1 = new MatrixSelectionView(matrix, [1, 2], [0, 2]);\n subMatrix2 = new MatrixSelectionView(matrix, [1, 2], [0, 1]);\n a = matrix.get(0, 0);\n b = matrix.get(0, 1);\n c = matrix.get(0, 2);\n\n return (\n a * determinant(subMatrix0) -\n b * determinant(subMatrix1) +\n c * determinant(subMatrix2)\n );\n } else {\n // general purpose determinant using the LU decomposition\n return new LuDecomposition(matrix).determinant;\n }\n } else {\n throw Error('determinant can only be calculated for a square matrix');\n }\n}\n\nfunction xrange(n, exception) {\n let range = [];\n for (let i = 0; i < n; i++) {\n if (i !== exception) {\n range.push(i);\n }\n }\n return range;\n}\n\nfunction dependenciesOneRow(\n error,\n matrix,\n index,\n thresholdValue = 10e-10,\n thresholdError = 10e-10,\n) {\n if (error > thresholdError) {\n return new Array(matrix.rows + 1).fill(0);\n } else {\n let returnArray = matrix.addRow(index, [0]);\n for (let i = 0; i < returnArray.rows; i++) {\n if (Math.abs(returnArray.get(i, 0)) < thresholdValue) {\n returnArray.set(i, 0, 0);\n }\n }\n return returnArray.to1DArray();\n }\n}\n\nfunction linearDependencies(matrix, options = {}) {\n const { thresholdValue = 10e-10, thresholdError = 10e-10 } = options;\n matrix = Matrix.checkMatrix(matrix);\n\n let n = matrix.rows;\n let results = new Matrix(n, n);\n\n for (let i = 0; i < n; i++) {\n let b = Matrix.columnVector(matrix.getRow(i));\n let Abis = matrix.subMatrixRow(xrange(n, i)).transpose();\n let svd = new SingularValueDecomposition(Abis);\n let x = svd.solve(b);\n let error = Matrix.sub(b, Abis.mmul(x)).abs().max();\n results.setRow(\n i,\n dependenciesOneRow(error, x, i, thresholdValue, thresholdError),\n );\n }\n return results;\n}\n\nfunction pseudoInverse(matrix, threshold = Number.EPSILON) {\n matrix = Matrix.checkMatrix(matrix);\n if (matrix.isEmpty()) {\n // with a zero dimension, the pseudo-inverse is the transpose, since all 0xn and nx0 matrices are singular\n // (0xn)*(nx0)*(0xn) = 0xn\n // (nx0)*(0xn)*(nx0) = nx0\n return matrix.transpose();\n }\n let svdSolution = new SingularValueDecomposition(matrix, { autoTranspose: true });\n\n let U = svdSolution.leftSingularVectors;\n let V = svdSolution.rightSingularVectors;\n let s = svdSolution.diagonal;\n\n for (let i = 0; i < s.length; i++) {\n if (Math.abs(s[i]) > threshold) {\n s[i] = 1.0 / s[i];\n } else {\n s[i] = 0.0;\n }\n }\n\n return V.mmul(Matrix.diag(s).mmul(U.transpose()));\n}\n\nfunction covariance(xMatrix, yMatrix = xMatrix, options = {}) {\n xMatrix = new Matrix(xMatrix);\n let yIsSame = false;\n if (\n typeof yMatrix === 'object' &&\n !Matrix.isMatrix(yMatrix) &&\n !isAnyArray(yMatrix)\n ) {\n options = yMatrix;\n yMatrix = xMatrix;\n yIsSame = true;\n } else {\n yMatrix = new Matrix(yMatrix);\n }\n if (xMatrix.rows !== yMatrix.rows) {\n throw new TypeError('Both matrices must have the same number of rows');\n }\n const { center = true } = options;\n if (center) {\n xMatrix = xMatrix.center('column');\n if (!yIsSame) {\n yMatrix = yMatrix.center('column');\n }\n }\n const cov = xMatrix.transpose().mmul(yMatrix);\n for (let i = 0; i < cov.rows; i++) {\n for (let j = 0; j < cov.columns; j++) {\n cov.set(i, j, cov.get(i, j) * (1 / (xMatrix.rows - 1)));\n }\n }\n return cov;\n}\n\nfunction correlation(xMatrix, yMatrix = xMatrix, options = {}) {\n xMatrix = new Matrix(xMatrix);\n let yIsSame = false;\n if (\n typeof yMatrix === 'object' &&\n !Matrix.isMatrix(yMatrix) &&\n !isAnyArray(yMatrix)\n ) {\n options = yMatrix;\n yMatrix = xMatrix;\n yIsSame = true;\n } else {\n yMatrix = new Matrix(yMatrix);\n }\n if (xMatrix.rows !== yMatrix.rows) {\n throw new TypeError('Both matrices must have the same number of rows');\n }\n\n const { center = true, scale = true } = options;\n if (center) {\n xMatrix.center('column');\n if (!yIsSame) {\n yMatrix.center('column');\n }\n }\n if (scale) {\n xMatrix.scale('column');\n if (!yIsSame) {\n yMatrix.scale('column');\n }\n }\n\n const sdx = xMatrix.standardDeviation('column', { unbiased: true });\n const sdy = yIsSame\n ? sdx\n : yMatrix.standardDeviation('column', { unbiased: true });\n\n const corr = xMatrix.transpose().mmul(yMatrix);\n for (let i = 0; i < corr.rows; i++) {\n for (let j = 0; j < corr.columns; j++) {\n corr.set(\n i,\n j,\n corr.get(i, j) * (1 / (sdx[i] * sdy[j])) * (1 / (xMatrix.rows - 1)),\n );\n }\n }\n return corr;\n}\n\nclass EigenvalueDecomposition {\n constructor(matrix, options = {}) {\n const { assumeSymmetric = false } = options;\n\n matrix = WrapperMatrix2D.checkMatrix(matrix);\n if (!matrix.isSquare()) {\n throw new Error('Matrix is not a square matrix');\n }\n\n if (matrix.isEmpty()) {\n throw new Error('Matrix must be non-empty');\n }\n\n let n = matrix.columns;\n let V = new Matrix(n, n);\n let d = new Float64Array(n);\n let e = new Float64Array(n);\n let value = matrix;\n let i, j;\n\n let isSymmetric = false;\n if (assumeSymmetric) {\n isSymmetric = true;\n } else {\n isSymmetric = matrix.isSymmetric();\n }\n\n if (isSymmetric) {\n // tred2/tql2 access V almost exclusively down columns (the row index\n // varies in the hot loops). Storing V transposed turns those into\n // sequential row scans of the row-major backing store; we transpose it\n // back to the logical layout before returning. V.get(j, i) holds the\n // logical V(i, j).\n for (i = 0; i < n; i++) {\n for (j = 0; j < n; j++) {\n V.set(j, i, value.get(i, j));\n }\n }\n tred2(n, e, d, V);\n tql2(n, e, d, V);\n // V is square; restore the logical layout in place (no allocation).\n transposeSquareInPlace(V);\n } else {\n // The non-symmetric path (orthes/hqr2) has two O(n^3) phases with opposite\n // memory-layout preferences (the QR sweep favours column-major eigenvectors\n // while the back-transform favours row-major), so a single transposed\n // storage cannot help both. It is left in the original row-major layout.\n let H = new Matrix(n, n);\n let ort = new Float64Array(n);\n for (j = 0; j < n; j++) {\n for (i = 0; i < n; i++) {\n H.set(i, j, value.get(i, j));\n }\n }\n orthes(n, H, ort, V);\n hqr2(n, e, d, V, H);\n }\n\n this.n = n;\n this.e = e;\n this.d = d;\n this.V = V;\n }\n\n get realEigenvalues() {\n return Array.from(this.d);\n }\n\n get imaginaryEigenvalues() {\n return Array.from(this.e);\n }\n\n get eigenvectorMatrix() {\n return this.V;\n }\n\n get diagonalMatrix() {\n let n = this.n;\n let e = this.e;\n let d = this.d;\n let X = new Matrix(n, n);\n let i, j;\n for (i = 0; i < n; i++) {\n for (j = 0; j < n; j++) {\n X.set(i, j, 0);\n }\n X.set(i, i, d[i]);\n if (e[i] > 0) {\n X.set(i, i + 1, e[i]);\n } else if (e[i] < 0) {\n X.set(i, i - 1, e[i]);\n }\n }\n return X;\n }\n}\n\nfunction tred2(n, e, d, V) {\n let f, g, h, i, j, k, hh, scale;\n\n for (j = 0; j < n; j++) {\n d[j] = V.get(j, n - 1);\n }\n\n for (i = n - 1; i > 0; i--) {\n scale = 0;\n h = 0;\n for (k = 0; k < i; k++) {\n scale = scale + Math.abs(d[k]);\n }\n\n if (scale === 0) {\n e[i] = d[i - 1];\n for (j = 0; j < i; j++) {\n d[j] = V.get(j, i - 1);\n V.set(j, i, 0);\n V.set(i, j, 0);\n }\n } else {\n for (k = 0; k < i; k++) {\n d[k] /= scale;\n h += d[k] * d[k];\n }\n\n f = d[i - 1];\n g = Math.sqrt(h);\n if (f > 0) {\n g = -g;\n }\n\n e[i] = scale * g;\n h = h - f * g;\n d[i - 1] = f - g;\n for (j = 0; j < i; j++) {\n e[j] = 0;\n }\n\n for (j = 0; j < i; j++) {\n f = d[j];\n V.set(i, j, f);\n g = e[j] + V.get(j, j) * f;\n for (k = j + 1; k <= i - 1; k++) {\n g += V.get(j, k) * d[k];\n e[k] += V.get(j, k) * f;\n }\n e[j] = g;\n }\n\n f = 0;\n for (j = 0; j < i; j++) {\n e[j] /= h;\n f += e[j] * d[j];\n }\n\n hh = f / (h + h);\n for (j = 0; j < i; j++) {\n e[j] -= hh * d[j];\n }\n\n for (j = 0; j < i; j++) {\n f = d[j];\n g = e[j];\n for (k = j; k <= i - 1; k++) {\n V.set(j, k, V.get(j, k) - (f * e[k] + g * d[k]));\n }\n d[j] = V.get(j, i - 1);\n V.set(j, i, 0);\n }\n }\n d[i] = h;\n }\n\n for (i = 0; i < n - 1; i++) {\n V.set(i, n - 1, V.get(i, i));\n V.set(i, i, 1);\n h = d[i + 1];\n if (h !== 0) {\n for (k = 0; k <= i; k++) {\n d[k] = V.get(i + 1, k) / h;\n }\n\n for (j = 0; j <= i; j++) {\n g = 0;\n for (k = 0; k <= i; k++) {\n g += V.get(i + 1, k) * V.get(j, k);\n }\n for (k = 0; k <= i; k++) {\n V.set(j, k, V.get(j, k) - g * d[k]);\n }\n }\n }\n\n for (k = 0; k <= i; k++) {\n V.set(i + 1, k, 0);\n }\n }\n\n for (j = 0; j < n; j++) {\n d[j] = V.get(j, n - 1);\n V.set(j, n - 1, 0);\n }\n\n V.set(n - 1, n - 1, 1);\n e[0] = 0;\n}\n\nfunction tql2(n, e, d, V) {\n let g, h, i, j, k, l, m, p, r, dl1, c, c2, c3, el1, s, s2;\n\n for (i = 1; i < n; i++) {\n e[i - 1] = e[i];\n }\n\n e[n - 1] = 0;\n\n let f = 0;\n let tst1 = 0;\n let eps = Number.EPSILON;\n\n for (l = 0; l < n; l++) {\n tst1 = Math.max(tst1, Math.abs(d[l]) + Math.abs(e[l]));\n m = l;\n while (m < n) {\n if (Math.abs(e[m]) <= eps * tst1) {\n break;\n }\n m++;\n }\n\n if (m > l) {\n do {\n\n g = d[l];\n p = (d[l + 1] - g) / (2 * e[l]);\n r = hypotenuse(p, 1);\n if (p < 0) {\n r = -r;\n }\n\n d[l] = e[l] / (p + r);\n d[l + 1] = e[l] * (p + r);\n dl1 = d[l + 1];\n h = g - d[l];\n for (i = l + 2; i < n; i++) {\n d[i] -= h;\n }\n\n f = f + h;\n\n p = d[m];\n c = 1;\n c2 = c;\n c3 = c;\n el1 = e[l + 1];\n s = 0;\n s2 = 0;\n for (i = m - 1; i >= l; i--) {\n c3 = c2;\n c2 = c;\n s2 = s;\n g = c * e[i];\n h = c * p;\n r = hypotenuse(p, e[i]);\n e[i + 1] = s * r;\n s = e[i] / r;\n c = p / r;\n p = c * d[i] - s * g;\n d[i + 1] = h + s * (c * g + s * d[i]);\n\n for (k = 0; k < n; k++) {\n h = V.get(i + 1, k);\n V.set(i + 1, k, s * V.get(i, k) + c * h);\n V.set(i, k, c * V.get(i, k) - s * h);\n }\n }\n\n p = (-s * s2 * c3 * el1 * e[l]) / dl1;\n e[l] = s * p;\n d[l] = c * p;\n } while (Math.abs(e[l]) > eps * tst1);\n }\n d[l] = d[l] + f;\n e[l] = 0;\n }\n\n for (i = 0; i < n - 1; i++) {\n k = i;\n p = d[i];\n for (j = i + 1; j < n; j++) {\n if (d[j] < p) {\n k = j;\n p = d[j];\n }\n }\n\n if (k !== i) {\n d[k] = d[i];\n d[i] = p;\n for (j = 0; j < n; j++) {\n p = V.get(i, j);\n V.set(i, j, V.get(k, j));\n V.set(k, j, p);\n }\n }\n }\n}\n\nfunction orthes(n, H, ort, V) {\n let low = 0;\n let high = n - 1;\n let f, g, h, i, j, m;\n let scale;\n\n for (m = low + 1; m <= high - 1; m++) {\n scale = 0;\n for (i = m; i <= high; i++) {\n scale = scale + Math.abs(H.get(i, m - 1));\n }\n\n if (scale !== 0) {\n h = 0;\n for (i = high; i >= m; i--) {\n ort[i] = H.get(i, m - 1) / scale;\n h += ort[i] * ort[i];\n }\n\n g = Math.sqrt(h);\n if (ort[m] > 0) {\n g = -g;\n }\n\n h = h - ort[m] * g;\n ort[m] = ort[m] - g;\n\n for (j = m; j < n; j++) {\n f = 0;\n for (i = high; i >= m; i--) {\n f += ort[i] * H.get(i, j);\n }\n\n f = f / h;\n for (i = m; i <= high; i++) {\n H.set(i, j, H.get(i, j) - f * ort[i]);\n }\n }\n\n for (i = 0; i <= high; i++) {\n f = 0;\n for (j = high; j >= m; j--) {\n f += ort[j] * H.get(i, j);\n }\n\n f = f / h;\n for (j = m; j <= high; j++) {\n H.set(i, j, H.get(i, j) - f * ort[j]);\n }\n }\n\n ort[m] = scale * ort[m];\n H.set(m, m - 1, scale * g);\n }\n }\n\n for (i = 0; i < n; i++) {\n for (j = 0; j < n; j++) {\n V.set(i, j, i === j ? 1 : 0);\n }\n }\n\n for (m = high - 1; m >= low + 1; m--) {\n if (H.get(m, m - 1) !== 0) {\n for (i = m + 1; i <= high; i++) {\n ort[i] = H.get(i, m - 1);\n }\n\n for (j = m; j <= high; j++) {\n g = 0;\n for (i = m; i <= high; i++) {\n g += ort[i] * V.get(i, j);\n }\n\n g = g / ort[m] / H.get(m, m - 1);\n for (i = m; i <= high; i++) {\n V.set(i, j, V.get(i, j) + g * ort[i]);\n }\n }\n }\n }\n}\n\nfunction hqr2(nn, e, d, V, H) {\n let n = nn - 1;\n let low = 0;\n let high = nn - 1;\n let eps = Number.EPSILON;\n let exshift = 0;\n let norm = 0;\n let p = 0;\n let q = 0;\n let r = 0;\n let s = 0;\n let z = 0;\n let iter = 0;\n let i, j, k, l, m, t, w, x, y;\n let ra, sa, vr, vi;\n let notlast, cdivres;\n\n for (i = 0; i < nn; i++) {\n if (i < low || i > high) {\n d[i] = H.get(i, i);\n e[i] = 0;\n }\n\n for (j = Math.max(i - 1, 0); j < nn; j++) {\n norm = norm + Math.abs(H.get(i, j));\n }\n }\n\n while (n >= low) {\n l = n;\n while (l > low) {\n s = Math.abs(H.get(l - 1, l - 1)) + Math.abs(H.get(l, l));\n if (s === 0) {\n s = norm;\n }\n if (Math.abs(H.get(l, l - 1)) < eps * s) {\n break;\n }\n l--;\n }\n\n if (l === n) {\n H.set(n, n, H.get(n, n) + exshift);\n d[n] = H.get(n, n);\n e[n] = 0;\n n--;\n iter = 0;\n } else if (l === n - 1) {\n w = H.get(n, n - 1) * H.get(n - 1, n);\n p = (H.get(n - 1, n - 1) - H.get(n, n)) / 2;\n q = p * p + w;\n z = Math.sqrt(Math.abs(q));\n H.set(n, n, H.get(n, n) + exshift);\n H.set(n - 1, n - 1, H.get(n - 1, n - 1) + exshift);\n x = H.get(n, n);\n\n if (q >= 0) {\n z = p >= 0 ? p + z : p - z;\n d[n - 1] = x + z;\n d[n] = d[n - 1];\n if (z !== 0) {\n d[n] = x - w / z;\n }\n e[n - 1] = 0;\n e[n] = 0;\n x = H.get(n, n - 1);\n s = Math.abs(x) + Math.abs(z);\n p = x / s;\n q = z / s;\n r = Math.sqrt(p * p + q * q);\n p = p / r;\n q = q / r;\n\n for (j = n - 1; j < nn; j++) {\n z = H.get(n - 1, j);\n H.set(n - 1, j, q * z + p * H.get(n, j));\n H.set(n, j, q * H.get(n, j) - p * z);\n }\n\n for (i = 0; i <= n; i++) {\n z = H.get(i, n - 1);\n H.set(i, n - 1, q * z + p * H.get(i, n));\n H.set(i, n, q * H.get(i, n) - p * z);\n }\n\n for (i = low; i <= high; i++) {\n z = V.get(i, n - 1);\n V.set(i, n - 1, q * z + p * V.get(i, n));\n V.set(i, n, q * V.get(i, n) - p * z);\n }\n } else {\n d[n - 1] = x + p;\n d[n] = x + p;\n e[n - 1] = z;\n e[n] = -z;\n }\n\n n = n - 2;\n iter = 0;\n } else {\n x = H.get(n, n);\n y = 0;\n w = 0;\n if (l < n) {\n y = H.get(n - 1, n - 1);\n w = H.get(n, n - 1) * H.get(n - 1, n);\n }\n\n if (iter === 10) {\n exshift += x;\n for (i = low; i <= n; i++) {\n H.set(i, i, H.get(i, i) - x);\n }\n s = Math.abs(H.get(n, n - 1)) + Math.abs(H.get(n - 1, n - 2));\n // eslint-disable-next-line no-multi-assign\n x = y = 0.75 * s;\n w = -0.4375 * s * s;\n }\n\n if (iter === 30) {\n s = (y - x) / 2;\n s = s * s + w;\n if (s > 0) {\n s = Math.sqrt(s);\n if (y < x) {\n s = -s;\n }\n s = x - w / ((y - x) / 2 + s);\n for (i = low; i <= n; i++) {\n H.set(i, i, H.get(i, i) - s);\n }\n exshift += s;\n // eslint-disable-next-line no-multi-assign\n x = y = w = 0.964;\n }\n }\n\n iter = iter + 1;\n\n m = n - 2;\n while (m >= l) {\n z = H.get(m, m);\n r = x - z;\n s = y - z;\n p = (r * s - w) / H.get(m + 1, m) + H.get(m, m + 1);\n q = H.get(m + 1, m + 1) - z - r - s;\n r = H.get(m + 2, m + 1);\n s = Math.abs(p) + Math.abs(q) + Math.abs(r);\n p = p / s;\n q = q / s;\n r = r / s;\n if (m === l) {\n break;\n }\n if (\n Math.abs(H.get(m, m - 1)) * (Math.abs(q) + Math.abs(r)) <\n eps *\n (Math.abs(p) *\n (Math.abs(H.get(m - 1, m - 1)) +\n Math.abs(z) +\n Math.abs(H.get(m + 1, m + 1))))\n ) {\n break;\n }\n m--;\n }\n\n for (i = m + 2; i <= n; i++) {\n H.set(i, i - 2, 0);\n if (i > m + 2) {\n H.set(i, i - 3, 0);\n }\n }\n\n for (k = m; k <= n - 1; k++) {\n notlast = k !== n - 1;\n if (k !== m) {\n p = H.get(k, k - 1);\n q = H.get(k + 1, k - 1);\n r = notlast ? H.get(k + 2, k - 1) : 0;\n x = Math.abs(p) + Math.abs(q) + Math.abs(r);\n if (x !== 0) {\n p = p / x;\n q = q / x;\n r = r / x;\n }\n }\n\n if (x === 0) {\n break;\n }\n\n s = Math.sqrt(p * p + q * q + r * r);\n if (p < 0) {\n s = -s;\n }\n\n if (s !== 0) {\n if (k !== m) {\n H.set(k, k - 1, -s * x);\n } else if (l !== m) {\n H.set(k, k - 1, -H.get(k, k - 1));\n }\n\n p = p + s;\n x = p / s;\n y = q / s;\n z = r / s;\n q = q / p;\n r = r / p;\n\n for (j = k; j < nn; j++) {\n p = H.get(k, j) + q * H.get(k + 1, j);\n if (notlast) {\n p = p + r * H.get(k + 2, j);\n H.set(k + 2, j, H.get(k + 2, j) - p * z);\n }\n\n H.set(k, j, H.get(k, j) - p * x);\n H.set(k + 1, j, H.get(k + 1, j) - p * y);\n }\n\n for (i = 0; i <= Math.min(n, k + 3); i++) {\n p = x * H.get(i, k) + y * H.get(i, k + 1);\n if (notlast) {\n p = p + z * H.get(i, k + 2);\n H.set(i, k + 2, H.get(i, k + 2) - p * r);\n }\n\n H.set(i, k, H.get(i, k) - p);\n H.set(i, k + 1, H.get(i, k + 1) - p * q);\n }\n\n for (i = low; i <= high; i++) {\n p = x * V.get(i, k) + y * V.get(i, k + 1);\n if (notlast) {\n p = p + z * V.get(i, k + 2);\n V.set(i, k + 2, V.get(i, k + 2) - p * r);\n }\n\n V.set(i, k, V.get(i, k) - p);\n V.set(i, k + 1, V.get(i, k + 1) - p * q);\n }\n }\n }\n }\n }\n\n if (norm === 0) {\n return;\n }\n\n for (n = nn - 1; n >= 0; n--) {\n p = d[n];\n q = e[n];\n\n if (q === 0) {\n l = n;\n H.set(n, n, 1);\n for (i = n - 1; i >= 0; i--) {\n w = H.get(i, i) - p;\n r = 0;\n for (j = l; j <= n; j++) {\n r = r + H.get(i, j) * H.get(j, n);\n }\n\n if (e[i] < 0) {\n z = w;\n s = r;\n } else {\n l = i;\n if (e[i] === 0) {\n H.set(i, n, w !== 0 ? -r / w : -r / (eps * norm));\n } else {\n x = H.get(i, i + 1);\n y = H.get(i + 1, i);\n q = (d[i] - p) * (d[i] - p) + e[i] * e[i];\n t = (x * s - z * r) / q;\n H.set(i, n, t);\n H.set(\n i + 1,\n n,\n Math.abs(x) > Math.abs(z) ? (-r - w * t) / x : (-s - y * t) / z,\n );\n }\n\n t = Math.abs(H.get(i, n));\n if (eps * t * t > 1) {\n for (j = i; j <= n; j++) {\n H.set(j, n, H.get(j, n) / t);\n }\n }\n }\n }\n } else if (q < 0) {\n l = n - 1;\n\n if (Math.abs(H.get(n, n - 1)) > Math.abs(H.get(n - 1, n))) {\n H.set(n - 1, n - 1, q / H.get(n, n - 1));\n H.set(n - 1, n, -(H.get(n, n) - p) / H.get(n, n - 1));\n } else {\n cdivres = cdiv(0, -H.get(n - 1, n), H.get(n - 1, n - 1) - p, q);\n H.set(n - 1, n - 1, cdivres[0]);\n H.set(n - 1, n, cdivres[1]);\n }\n\n H.set(n, n - 1, 0);\n H.set(n, n, 1);\n for (i = n - 2; i >= 0; i--) {\n ra = 0;\n sa = 0;\n for (j = l; j <= n; j++) {\n ra = ra + H.get(i, j) * H.get(j, n - 1);\n sa = sa + H.get(i, j) * H.get(j, n);\n }\n\n w = H.get(i, i) - p;\n\n if (e[i] < 0) {\n z = w;\n r = ra;\n s = sa;\n } else {\n l = i;\n if (e[i] === 0) {\n cdivres = cdiv(-ra, -sa, w, q);\n H.set(i, n - 1, cdivres[0]);\n H.set(i, n, cdivres[1]);\n } else {\n x = H.get(i, i + 1);\n y = H.get(i + 1, i);\n vr = (d[i] - p) * (d[i] - p) + e[i] * e[i] - q * q;\n vi = (d[i] - p) * 2 * q;\n if (vr === 0 && vi === 0) {\n vr =\n eps *\n norm *\n (Math.abs(w) +\n Math.abs(q) +\n Math.abs(x) +\n Math.abs(y) +\n Math.abs(z));\n }\n cdivres = cdiv(\n x * r - z * ra + q * sa,\n x * s - z * sa - q * ra,\n vr,\n vi,\n );\n H.set(i, n - 1, cdivres[0]);\n H.set(i, n, cdivres[1]);\n if (Math.abs(x) > Math.abs(z) + Math.abs(q)) {\n H.set(\n i + 1,\n n - 1,\n (-ra - w * H.get(i, n - 1) + q * H.get(i, n)) / x,\n );\n H.set(\n i + 1,\n n,\n (-sa - w * H.get(i, n) - q * H.get(i, n - 1)) / x,\n );\n } else {\n cdivres = cdiv(\n -r - y * H.get(i, n - 1),\n -s - y * H.get(i, n),\n z,\n q,\n );\n H.set(i + 1, n - 1, cdivres[0]);\n H.set(i + 1, n, cdivres[1]);\n }\n }\n\n t = Math.max(Math.abs(H.get(i, n - 1)), Math.abs(H.get(i, n)));\n if (eps * t * t > 1) {\n for (j = i; j <= n; j++) {\n H.set(j, n - 1, H.get(j, n - 1) / t);\n H.set(j, n, H.get(j, n) / t);\n }\n }\n }\n }\n }\n }\n\n for (i = 0; i < nn; i++) {\n if (i < low || i > high) {\n for (j = i; j < nn; j++) {\n V.set(i, j, H.get(i, j));\n }\n }\n }\n\n for (j = nn - 1; j >= low; j--) {\n for (i = low; i <= high; i++) {\n z = 0;\n for (k = low; k <= Math.min(j, high); k++) {\n z = z + V.get(i, k) * H.get(k, j);\n }\n V.set(i, j, z);\n }\n }\n}\n\nfunction cdiv(xr, xi, yr, yi) {\n let r, d;\n if (Math.abs(yr) > Math.abs(yi)) {\n r = yi / yr;\n d = yr + r * yi;\n return [(xr + r * xi) / d, (xi - r * xr) / d];\n } else {\n r = yr / yi;\n d = yi + r * yr;\n return [(r * xr + xi) / d, (r * xi - xr) / d];\n }\n}\n\nclass CholeskyDecomposition {\n constructor(value) {\n value = WrapperMatrix2D.checkMatrix(value);\n if (!value.isSymmetric()) {\n throw new Error('Matrix is not symmetric');\n }\n\n let a = value;\n let dimension = a.rows;\n let l = new Matrix(dimension, dimension);\n let positiveDefinite = true;\n let i, j, k;\n\n for (j = 0; j < dimension; j++) {\n let d = 0;\n for (k = 0; k < j; k++) {\n let s = 0;\n for (i = 0; i < k; i++) {\n s += l.get(k, i) * l.get(j, i);\n }\n s = (a.get(j, k) - s) / l.get(k, k);\n l.set(j, k, s);\n d = d + s * s;\n }\n\n d = a.get(j, j) - d;\n\n positiveDefinite &&= d > 0;\n l.set(j, j, Math.sqrt(Math.max(d, 0)));\n for (k = j + 1; k < dimension; k++) {\n l.set(j, k, 0);\n }\n }\n\n this.L = l;\n this.positiveDefinite = positiveDefinite;\n }\n\n isPositiveDefinite() {\n return this.positiveDefinite;\n }\n\n solve(value) {\n value = WrapperMatrix2D.checkMatrix(value);\n\n let l = this.L;\n let dimension = l.rows;\n\n if (value.rows !== dimension) {\n throw new Error('Matrix dimensions do not match');\n }\n if (this.isPositiveDefinite() === false) {\n throw new Error('Matrix is not positive definite');\n }\n\n let count = value.columns;\n let B = value.clone();\n let i, j, k;\n\n for (k = 0; k < dimension; k++) {\n for (j = 0; j < count; j++) {\n for (i = 0; i < k; i++) {\n B.set(k, j, B.get(k, j) - B.get(i, j) * l.get(k, i));\n }\n B.set(k, j, B.get(k, j) / l.get(k, k));\n }\n }\n\n for (k = dimension - 1; k >= 0; k--) {\n for (j = 0; j < count; j++) {\n for (i = k + 1; i < dimension; i++) {\n B.set(k, j, B.get(k, j) - B.get(i, j) * l.get(i, k));\n }\n B.set(k, j, B.get(k, j) / l.get(k, k));\n }\n }\n\n return B;\n }\n\n get lowerTriangularMatrix() {\n return this.L;\n }\n}\n\nclass nipals {\n constructor(X, options = {}) {\n X = WrapperMatrix2D.checkMatrix(X);\n let { Y } = options;\n const {\n scaleScores = false,\n maxIterations = 1000,\n terminationCriteria = 1e-10,\n } = options;\n\n let u;\n if (Y) {\n if (isAnyArray(Y) && typeof Y[0] === 'number') {\n Y = Matrix.columnVector(Y);\n } else {\n Y = WrapperMatrix2D.checkMatrix(Y);\n }\n if (Y.rows !== X.rows) {\n throw new Error('Y should have the same number of rows as X');\n }\n u = Y.getColumnVector(0);\n } else {\n u = X.getColumnVector(0);\n }\n\n let diff = 1;\n let t, q, w, tOld;\n\n for (\n let counter = 0;\n counter < maxIterations && diff > terminationCriteria;\n counter++\n ) {\n w = X.transpose().mmul(u).div(u.transpose().mmul(u).get(0, 0));\n w = w.div(w.norm());\n\n t = X.mmul(w).div(w.transpose().mmul(w).get(0, 0));\n\n if (counter > 0) {\n diff = t.clone().sub(tOld).pow(2).sum();\n }\n tOld = t.clone();\n\n if (Y) {\n q = Y.transpose().mmul(t).div(t.transpose().mmul(t).get(0, 0));\n q = q.div(q.norm());\n\n u = Y.mmul(q).div(q.transpose().mmul(q).get(0, 0));\n } else {\n u = t;\n }\n }\n\n if (Y) {\n let p = X.transpose().mmul(t).div(t.transpose().mmul(t).get(0, 0));\n p = p.div(p.norm());\n let xResidual = X.clone().sub(t.clone().mmul(p.transpose()));\n let residual = u.transpose().mmul(t).div(t.transpose().mmul(t).get(0, 0));\n let yResidual = Y.clone().sub(\n t.clone().mulS(residual.get(0, 0)).mmul(q.transpose()),\n );\n\n this.t = t;\n this.p = p.transpose();\n this.w = w.transpose();\n this.q = q;\n this.u = u;\n this.s = t.transpose().mmul(t);\n this.xResidual = xResidual;\n this.yResidual = yResidual;\n this.betas = residual;\n } else {\n this.w = w.transpose();\n this.s = t.transpose().mmul(t).sqrt();\n if (scaleScores) {\n this.t = t.clone().div(this.s.get(0, 0));\n } else {\n this.t = t;\n }\n this.xResidual = X.sub(t.mmul(w.transpose()));\n }\n }\n}\n\nexports.AbstractMatrix = AbstractMatrix;\nexports.CHO = CholeskyDecomposition;\nexports.CholeskyDecomposition = CholeskyDecomposition;\nexports.DistanceMatrix = DistanceMatrix;\nexports.EVD = EigenvalueDecomposition;\nexports.EigenvalueDecomposition = EigenvalueDecomposition;\nexports.LU = LuDecomposition;\nexports.LuDecomposition = LuDecomposition;\nexports.Matrix = Matrix;\nexports.MatrixColumnSelectionView = MatrixColumnSelectionView;\nexports.MatrixColumnView = MatrixColumnView;\nexports.MatrixFlipColumnView = MatrixFlipColumnView;\nexports.MatrixFlipRowView = MatrixFlipRowView;\nexports.MatrixRowSelectionView = MatrixRowSelectionView;\nexports.MatrixRowView = MatrixRowView;\nexports.MatrixSelectionView = MatrixSelectionView;\nexports.MatrixSubView = MatrixSubView;\nexports.MatrixTransposeView = MatrixTransposeView;\nexports.NIPALS = nipals;\nexports.Nipals = nipals;\nexports.QR = QrDecomposition;\nexports.QrDecomposition = QrDecomposition;\nexports.SVD = SingularValueDecomposition;\nexports.SingularValueDecomposition = SingularValueDecomposition;\nexports.SymmetricMatrix = SymmetricMatrix;\nexports.WrapperMatrix1D = WrapperMatrix1D;\nexports.WrapperMatrix2D = WrapperMatrix2D;\nexports.correlation = correlation;\nexports.covariance = covariance;\nexports.default = Matrix;\nexports.determinant = determinant;\nexports.inverse = inverse;\nexports.linearDependencies = linearDependencies;\nexports.pseudoInverse = pseudoInverse;\nexports.solve = solve;\nexports.wrap = wrap;\n//# sourceMappingURL=matrix.js.map\n"],"names":["matrix","toString","isAnyArray","value","tag","max","input","options","fromIndex","toIndex","maxValue","i","min","minValue","rescale","output","currentMin","currentMax","factor","indent","indentData","inspectMatrix","inspectMatrixWithOptions","maxRows","maxColumns","maxNumSize","padMinus","inspectData","rows","columns","maxI","maxJ","result","loop","j","line","formatNumber","num","formatNumber2","len","str","fix","exp","installMathOperations","AbstractMatrix","Matrix","arg0","checkRowIndex","index","outer","checkColumnIndex","checkRowVector","vector","checkColumnVector","checkRowIndices","rowIndices","checkColumnIndices","columnIndices","checkRange","startRow","endRow","startColumn","endColumn","checkNumber","newArray","length","array","name","checkNonEmpty","sumByRow","sum","sumByColumn","sumAll","v","productByRow","productByColumn","productAll","varianceByRow","unbiased","mean","cols","variance","sum1","sum2","x","varianceByColumn","varianceAll","size","centerByRow","centerByColumn","centerAll","getScaleByRow","scale","scaleByRow","getScaleByColumn","scaleByColumn","getScaleAll","divider","scaleAll","newRows","newColumns","newData","newMatrix","row","column","random","interval","data","l","matrix1","matrix2","callback","copy","previousColumn","isEchelonForm","checked","isReducedEchelonForm","k","h","iMax","tmp","m","n","p","pivot","row1","row2","temp","column1","column2","by","idx","diag","type","vector2","vector1","dot","other","Bcolj","s","gramData","offset","rowj","scalar","bb","e","a11","b11","a12","b12","a21","b21","a22","b22","m1","m2","m3","m4","m5","m6","m7","c00","c01","c10","c11","a00","a01","a02","a10","a20","b00","b01","b02","b10","b20","m8","m9","m10","m11","m12","m13","m14","m15","m16","m17","m18","m19","m20","m21","m22","m23","c02","c12","c20","c21","c22","y","r1","c1","r2","c2","embed","mat","r","c","resultat","blockMult","a","b","halfRows","halfCols","middle","first","last","q","AxI","IxB","compareFunction","compareNumbers","indices","rowIndex","columnIndex","trace","from","to","center","col","isArrayOfNumbers","element","#initData","nRows","nColumns","arrayData","newRow","SymmetricMatrix","#matrix","diagonalSize","mask","sidesToRemove","passthroughs","sideIndex","compact","compactSize","DistanceMatrix","sideSize","compactLength","BaseView","MatrixColumnView","MatrixColumnSelectionView","MatrixFlipColumnView","MatrixFlipRowView","MatrixRowView","MatrixRowSelectionView","MatrixSelectionView","MatrixSubView","MatrixTransposeView","WrapperMatrix1D","WrapperMatrix2D","wrap","LuDecomposition","lu","pivotVector","pivotSign","t","LUcolj","kmax","count","X","determinant","transposeSquareInPlace","rowI","hypotenuse","QrDecomposition","qr","rdiag","nrm","SingularValueDecomposition","computeLeftSingularVectors","computeRightSingularVectors","autoTranspose","wantu","wantv","swapped","at","aux","nu","ni","U","V","work","si","nct","nrt","mrc","pp","eps","kase","alpha","ks","f","cs","sn","sp","spm1","epm1","sk","ek","shift","g","Y","scols","Ls","VL","vrows","urows","VLU","vcols","ucols","tol","ii","inverse","useSVD","solve","leftHandSide","rightHandSide","d","subMatrix0","subMatrix1","subMatrix2","xrange","exception","range","dependenciesOneRow","error","thresholdValue","thresholdError","returnArray","linearDependencies","results","Abis","pseudoInverse","threshold","svdSolution","covariance","xMatrix","yMatrix","yIsSame","cov","correlation","sdx","sdy","corr","EigenvalueDecomposition","assumeSymmetric","isSymmetric","tred2","tql2","H","ort","orthes","hqr2","hh","dl1","c3","el1","s2","tst1","low","high","nn","exshift","norm","z","iter","w","ra","sa","vr","vi","notlast","cdivres","cdiv","xr","xi","yr","yi","CholeskyDecomposition","dimension","positiveDefinite","B","nipals","scaleScores","maxIterations","terminationCriteria","u","diff","tOld","counter","xResidual","residual","yResidual"],"mappings":"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","x_google_ignoreList":[0]}