data-structure-typed 1.43.1 → 1.44.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (786) hide show
  1. package/.eslintrc.js +3 -1
  2. package/CHANGELOG.md +1 -1
  3. package/README.md +7 -0
  4. package/benchmark/report.html +30 -30
  5. package/benchmark/report.json +201 -147
  6. package/dist/cjs/data-structures/binary-tree/avl-tree.js.map +1 -0
  7. package/dist/cjs/data-structures/binary-tree/binary-indexed-tree.js.map +1 -0
  8. package/dist/cjs/{src/data-structures → data-structures}/binary-tree/binary-tree.d.ts +8 -8
  9. package/dist/cjs/{src/data-structures → data-structures}/binary-tree/binary-tree.js +62 -62
  10. package/dist/cjs/data-structures/binary-tree/binary-tree.js.map +1 -0
  11. package/dist/cjs/data-structures/binary-tree/bst.js.map +1 -0
  12. package/dist/cjs/data-structures/binary-tree/index.js.map +1 -0
  13. package/dist/{mjs/src → cjs}/data-structures/binary-tree/rb-tree.d.ts +4 -4
  14. package/dist/cjs/{src/data-structures → data-structures}/binary-tree/rb-tree.js +1 -1
  15. package/dist/cjs/data-structures/binary-tree/rb-tree.js.map +1 -0
  16. package/dist/cjs/data-structures/binary-tree/segment-tree.js.map +1 -0
  17. package/dist/cjs/{src/data-structures → data-structures}/binary-tree/tree-multimap.js +50 -50
  18. package/dist/cjs/data-structures/binary-tree/tree-multimap.js.map +1 -0
  19. package/dist/{mjs/src → cjs}/data-structures/graph/abstract-graph.d.ts +37 -37
  20. package/dist/cjs/{src/data-structures → data-structures}/graph/abstract-graph.js +37 -37
  21. package/dist/cjs/data-structures/graph/abstract-graph.js.map +1 -0
  22. package/dist/cjs/data-structures/graph/directed-graph.js.map +1 -0
  23. package/dist/cjs/data-structures/graph/index.js.map +1 -0
  24. package/dist/cjs/data-structures/graph/map-graph.js.map +1 -0
  25. package/dist/cjs/data-structures/graph/undirected-graph.js.map +1 -0
  26. package/dist/cjs/data-structures/hash/coordinate-map.js.map +1 -0
  27. package/dist/cjs/data-structures/hash/coordinate-set.js.map +1 -0
  28. package/dist/cjs/data-structures/hash/hash-map.js.map +1 -0
  29. package/dist/cjs/data-structures/hash/hash-table.js.map +1 -0
  30. package/dist/cjs/data-structures/hash/index.js.map +1 -0
  31. package/dist/cjs/data-structures/hash/tree-map.js.map +1 -0
  32. package/dist/cjs/data-structures/hash/tree-set.js.map +1 -0
  33. package/dist/cjs/data-structures/heap/heap.js.map +1 -0
  34. package/dist/cjs/data-structures/heap/index.js.map +1 -0
  35. package/dist/cjs/data-structures/heap/max-heap.js.map +1 -0
  36. package/dist/cjs/data-structures/heap/min-heap.js.map +1 -0
  37. package/dist/cjs/data-structures/index.js.map +1 -0
  38. package/dist/cjs/data-structures/linked-list/doubly-linked-list.js.map +1 -0
  39. package/dist/cjs/data-structures/linked-list/index.js.map +1 -0
  40. package/dist/cjs/data-structures/linked-list/singly-linked-list.js.map +1 -0
  41. package/dist/cjs/data-structures/linked-list/skip-linked-list.js.map +1 -0
  42. package/dist/cjs/data-structures/matrix/index.js.map +1 -0
  43. package/dist/cjs/data-structures/matrix/matrix.js.map +1 -0
  44. package/dist/cjs/data-structures/matrix/matrix2d.js.map +1 -0
  45. package/dist/cjs/data-structures/matrix/navigator.js.map +1 -0
  46. package/dist/cjs/data-structures/matrix/vector2d.js.map +1 -0
  47. package/dist/cjs/data-structures/priority-queue/index.js.map +1 -0
  48. package/dist/cjs/data-structures/priority-queue/max-priority-queue.js.map +1 -0
  49. package/dist/cjs/data-structures/priority-queue/min-priority-queue.js.map +1 -0
  50. package/dist/cjs/data-structures/priority-queue/priority-queue.js.map +1 -0
  51. package/dist/cjs/data-structures/queue/deque.js.map +1 -0
  52. package/dist/cjs/data-structures/queue/index.js.map +1 -0
  53. package/dist/cjs/data-structures/queue/queue.js.map +1 -0
  54. package/dist/cjs/data-structures/stack/index.js.map +1 -0
  55. package/dist/cjs/data-structures/stack/stack.js.map +1 -0
  56. package/dist/cjs/data-structures/tree/index.js.map +1 -0
  57. package/dist/cjs/data-structures/tree/tree.js.map +1 -0
  58. package/dist/cjs/data-structures/trie/index.js.map +1 -0
  59. package/dist/cjs/data-structures/trie/trie.js.map +1 -0
  60. package/dist/cjs/index.js.map +1 -0
  61. package/dist/cjs/{src/interfaces → interfaces}/binary-tree.d.ts +1 -1
  62. package/dist/cjs/interfaces/binary-tree.js.map +1 -0
  63. package/dist/cjs/interfaces/doubly-linked-list.js.map +1 -0
  64. package/dist/cjs/{src/interfaces → interfaces}/graph.js.map +1 -1
  65. package/dist/cjs/{src/interfaces → interfaces}/heap.js.map +1 -1
  66. package/dist/cjs/interfaces/index.js.map +1 -0
  67. package/dist/cjs/interfaces/navigator.js.map +1 -0
  68. package/dist/cjs/interfaces/priority-queue.js.map +1 -0
  69. package/dist/cjs/interfaces/segment-tree.js.map +1 -0
  70. package/dist/cjs/interfaces/singly-linked-list.js.map +1 -0
  71. package/dist/cjs/types/data-structures/binary-tree/avl-tree.js.map +1 -0
  72. package/dist/cjs/types/data-structures/binary-tree/binary-indexed-tree.js.map +1 -0
  73. package/dist/cjs/types/data-structures/binary-tree/binary-tree.js.map +1 -0
  74. package/dist/cjs/types/data-structures/binary-tree/bst.js.map +1 -0
  75. package/dist/cjs/types/data-structures/binary-tree/index.js.map +1 -0
  76. package/dist/cjs/types/data-structures/binary-tree/rb-tree.js.map +1 -0
  77. package/dist/cjs/types/data-structures/binary-tree/segment-tree.js.map +1 -0
  78. package/dist/cjs/types/data-structures/binary-tree/tree-multimap.js.map +1 -0
  79. package/dist/cjs/types/data-structures/graph/abstract-graph.js.map +1 -0
  80. package/dist/cjs/types/data-structures/graph/directed-graph.js.map +1 -0
  81. package/dist/cjs/types/data-structures/graph/index.js.map +1 -0
  82. package/dist/cjs/types/data-structures/graph/map-graph.js.map +1 -0
  83. package/dist/cjs/types/data-structures/graph/undirected-graph.js.map +1 -0
  84. package/dist/cjs/types/data-structures/hash/coordinate-map.js.map +1 -0
  85. package/dist/cjs/types/data-structures/hash/coordinate-set.js.map +1 -0
  86. package/dist/cjs/types/data-structures/hash/hash-map.js.map +1 -0
  87. package/dist/cjs/types/data-structures/hash/hash-table.js.map +1 -0
  88. package/dist/cjs/types/data-structures/hash/index.js.map +1 -0
  89. package/dist/cjs/types/data-structures/hash/tree-map.js.map +1 -0
  90. package/dist/cjs/types/data-structures/hash/tree-set.js.map +1 -0
  91. package/dist/cjs/types/data-structures/heap/heap.js.map +1 -0
  92. package/dist/cjs/types/data-structures/heap/index.js.map +1 -0
  93. package/dist/cjs/types/data-structures/heap/max-heap.js.map +1 -0
  94. package/dist/cjs/types/data-structures/heap/min-heap.js.map +1 -0
  95. package/dist/cjs/types/data-structures/index.js.map +1 -0
  96. package/dist/cjs/types/data-structures/linked-list/doubly-linked-list.js.map +1 -0
  97. package/dist/cjs/types/data-structures/linked-list/index.js.map +1 -0
  98. package/dist/cjs/types/data-structures/linked-list/singly-linked-list.js.map +1 -0
  99. package/dist/cjs/types/data-structures/linked-list/skip-linked-list.js.map +1 -0
  100. package/dist/cjs/types/data-structures/matrix/index.js.map +1 -0
  101. package/dist/cjs/types/data-structures/matrix/matrix.js.map +1 -0
  102. package/dist/cjs/types/data-structures/matrix/matrix2d.js.map +1 -0
  103. package/dist/cjs/types/data-structures/matrix/navigator.js.map +1 -0
  104. package/dist/cjs/types/data-structures/matrix/vector2d.js.map +1 -0
  105. package/dist/cjs/types/data-structures/priority-queue/index.js.map +1 -0
  106. package/dist/cjs/types/data-structures/priority-queue/max-priority-queue.js.map +1 -0
  107. package/dist/cjs/types/data-structures/priority-queue/min-priority-queue.js.map +1 -0
  108. package/dist/cjs/types/data-structures/priority-queue/priority-queue.js.map +1 -0
  109. package/dist/cjs/types/data-structures/queue/deque.js.map +1 -0
  110. package/dist/cjs/types/data-structures/queue/index.js.map +1 -0
  111. package/dist/cjs/types/data-structures/queue/queue.js.map +1 -0
  112. package/dist/cjs/types/data-structures/stack/index.js.map +1 -0
  113. package/dist/cjs/types/data-structures/stack/stack.js.map +1 -0
  114. package/dist/cjs/types/data-structures/tree/index.js.map +1 -0
  115. package/dist/cjs/types/data-structures/tree/tree.js.map +1 -0
  116. package/dist/cjs/types/data-structures/trie/index.js.map +1 -0
  117. package/dist/cjs/types/data-structures/trie/trie.js.map +1 -0
  118. package/dist/cjs/types/helpers.js.map +1 -0
  119. package/dist/cjs/types/index.js.map +1 -0
  120. package/dist/cjs/types/utils/index.js.map +1 -0
  121. package/dist/cjs/{src/types → types}/utils/utils.js.map +1 -1
  122. package/dist/cjs/types/utils/validate-type.js.map +1 -0
  123. package/dist/cjs/utils/index.js.map +1 -0
  124. package/dist/cjs/utils/utils.js.map +1 -0
  125. package/dist/mjs/{src/data-structures → data-structures}/binary-tree/avl-tree.js +3 -8
  126. package/dist/mjs/{src/data-structures → data-structures}/binary-tree/binary-indexed-tree.js +3 -7
  127. package/dist/mjs/{src/data-structures → data-structures}/binary-tree/binary-tree.d.ts +8 -8
  128. package/dist/mjs/{src/data-structures → data-structures}/binary-tree/binary-tree.js +97 -102
  129. package/dist/mjs/{src/data-structures → data-structures}/binary-tree/bst.js +34 -39
  130. package/dist/mjs/data-structures/binary-tree/index.js +7 -0
  131. package/dist/{cjs/src → mjs}/data-structures/binary-tree/rb-tree.d.ts +4 -4
  132. package/dist/mjs/{src/data-structures → data-structures}/binary-tree/rb-tree.js +43 -48
  133. package/dist/mjs/{src/data-structures → data-structures}/binary-tree/segment-tree.js +2 -7
  134. package/dist/mjs/{src/data-structures → data-structures}/binary-tree/tree-multimap.js +60 -65
  135. package/dist/{cjs/src → mjs}/data-structures/graph/abstract-graph.d.ts +37 -37
  136. package/dist/mjs/{src/data-structures → data-structures}/graph/abstract-graph.js +46 -52
  137. package/dist/mjs/{src/data-structures → data-structures}/graph/directed-graph.js +9 -15
  138. package/dist/mjs/data-structures/graph/index.js +4 -0
  139. package/dist/mjs/{src/data-structures → data-structures}/graph/map-graph.js +4 -10
  140. package/dist/mjs/{src/data-structures → data-structures}/graph/undirected-graph.js +7 -13
  141. package/dist/mjs/{src/data-structures → data-structures}/hash/coordinate-map.js +1 -5
  142. package/dist/mjs/{src/data-structures → data-structures}/hash/coordinate-set.js +1 -5
  143. package/dist/mjs/{src/data-structures → data-structures}/hash/hash-map.js +1 -5
  144. package/dist/mjs/{src/data-structures → data-structures}/hash/hash-table.js +2 -7
  145. package/dist/mjs/data-structures/hash/index.js +6 -0
  146. package/dist/mjs/data-structures/hash/tree-map.js +2 -0
  147. package/dist/mjs/data-structures/hash/tree-set.js +2 -0
  148. package/dist/mjs/{src/data-structures → data-structures}/heap/heap.js +3 -9
  149. package/dist/mjs/data-structures/heap/index.js +3 -0
  150. package/dist/mjs/{src/data-structures → data-structures}/heap/max-heap.js +2 -6
  151. package/dist/mjs/{src/data-structures → data-structures}/heap/min-heap.js +2 -6
  152. package/dist/mjs/data-structures/index.js +11 -0
  153. package/dist/mjs/{src/data-structures → data-structures}/linked-list/doubly-linked-list.js +2 -7
  154. package/dist/mjs/data-structures/linked-list/index.js +3 -0
  155. package/dist/mjs/{src/data-structures → data-structures}/linked-list/singly-linked-list.js +2 -7
  156. package/dist/mjs/{src/data-structures → data-structures}/linked-list/skip-linked-list.js +2 -7
  157. package/dist/mjs/data-structures/matrix/index.js +4 -0
  158. package/dist/mjs/{src/data-structures → data-structures}/matrix/matrix.js +1 -5
  159. package/dist/mjs/{src/data-structures → data-structures}/matrix/matrix2d.js +4 -8
  160. package/dist/mjs/{src/data-structures → data-structures}/matrix/navigator.js +2 -7
  161. package/dist/mjs/{src/data-structures → data-structures}/matrix/vector2d.js +1 -5
  162. package/dist/mjs/{src/data-structures → data-structures}/priority-queue/max-priority-queue.js +2 -6
  163. package/dist/mjs/{src/data-structures → data-structures}/priority-queue/min-priority-queue.js +2 -6
  164. package/dist/mjs/data-structures/priority-queue/priority-queue.js +13 -0
  165. package/dist/mjs/{src/data-structures → data-structures}/queue/deque.js +4 -10
  166. package/dist/mjs/{src/data-structures → data-structures}/queue/queue.js +3 -8
  167. package/dist/mjs/{src/data-structures → data-structures}/stack/stack.js +1 -5
  168. package/dist/mjs/{src/data-structures → data-structures}/tree/tree.js +1 -5
  169. package/dist/mjs/{src/data-structures → data-structures}/trie/trie.js +2 -7
  170. package/dist/mjs/index.js +4 -0
  171. package/dist/mjs/{src/interfaces → interfaces}/binary-tree.d.ts +1 -1
  172. package/dist/mjs/interfaces/index.js +8 -0
  173. package/dist/mjs/{src/types → types}/data-structures/binary-tree/binary-tree.js +4 -7
  174. package/dist/mjs/types/data-structures/binary-tree/index.js +6 -0
  175. package/dist/mjs/types/data-structures/binary-tree/rb-tree.js +5 -0
  176. package/dist/mjs/types/data-structures/graph/directed-graph.js +6 -0
  177. package/dist/mjs/types/data-structures/graph/index.js +3 -0
  178. package/dist/mjs/types/data-structures/hash/hash-table.js +1 -0
  179. package/dist/mjs/types/data-structures/hash/index.js +1 -0
  180. package/dist/mjs/types/data-structures/hash/tree-map.d.ts +1 -0
  181. package/dist/mjs/types/data-structures/hash/tree-map.js +1 -0
  182. package/dist/mjs/types/data-structures/hash/tree-set.d.ts +1 -0
  183. package/dist/mjs/types/data-structures/hash/tree-set.js +1 -0
  184. package/dist/mjs/types/data-structures/heap/heap.d.ts +1 -0
  185. package/dist/mjs/types/data-structures/heap/heap.js +1 -0
  186. package/dist/mjs/types/data-structures/heap/index.js +1 -0
  187. package/dist/mjs/types/data-structures/heap/max-heap.d.ts +1 -0
  188. package/dist/mjs/types/data-structures/heap/max-heap.js +1 -0
  189. package/dist/mjs/types/data-structures/heap/min-heap.d.ts +1 -0
  190. package/dist/mjs/types/data-structures/heap/min-heap.js +1 -0
  191. package/dist/mjs/types/data-structures/index.js +11 -0
  192. package/dist/mjs/types/data-structures/linked-list/doubly-linked-list.d.ts +1 -0
  193. package/dist/mjs/types/data-structures/linked-list/doubly-linked-list.js +1 -0
  194. package/dist/mjs/types/data-structures/linked-list/index.js +2 -0
  195. package/dist/mjs/types/data-structures/linked-list/singly-linked-list.d.ts +1 -0
  196. package/dist/mjs/types/data-structures/linked-list/singly-linked-list.js +1 -0
  197. package/dist/mjs/types/data-structures/linked-list/skip-linked-list.d.ts +1 -0
  198. package/dist/mjs/types/data-structures/linked-list/skip-linked-list.js +1 -0
  199. package/dist/mjs/types/data-structures/matrix/index.js +1 -0
  200. package/dist/mjs/types/data-structures/matrix/matrix.d.ts +1 -0
  201. package/dist/mjs/types/data-structures/matrix/matrix.js +1 -0
  202. package/dist/mjs/types/data-structures/matrix/matrix2d.d.ts +1 -0
  203. package/dist/mjs/types/data-structures/matrix/matrix2d.js +1 -0
  204. package/dist/mjs/types/data-structures/matrix/navigator.js +1 -0
  205. package/dist/mjs/types/data-structures/matrix/vector2d.d.ts +1 -0
  206. package/dist/mjs/types/data-structures/matrix/vector2d.js +1 -0
  207. package/dist/mjs/types/data-structures/priority-queue/index.d.ts +3 -0
  208. package/dist/mjs/types/data-structures/priority-queue/index.js +3 -0
  209. package/dist/mjs/types/data-structures/priority-queue/max-priority-queue.d.ts +1 -0
  210. package/dist/mjs/types/data-structures/priority-queue/max-priority-queue.js +1 -0
  211. package/dist/mjs/types/data-structures/priority-queue/min-priority-queue.d.ts +1 -0
  212. package/dist/mjs/types/data-structures/priority-queue/min-priority-queue.js +1 -0
  213. package/dist/mjs/types/data-structures/priority-queue/priority-queue.d.ts +1 -0
  214. package/dist/mjs/types/data-structures/priority-queue/priority-queue.js +1 -0
  215. package/dist/mjs/types/data-structures/queue/deque.d.ts +1 -0
  216. package/dist/mjs/types/data-structures/queue/deque.js +1 -0
  217. package/dist/mjs/types/data-structures/queue/index.d.ts +2 -0
  218. package/dist/mjs/types/data-structures/queue/index.js +2 -0
  219. package/dist/mjs/types/data-structures/queue/queue.d.ts +1 -0
  220. package/dist/mjs/types/data-structures/queue/queue.js +1 -0
  221. package/dist/mjs/types/data-structures/stack/index.d.ts +1 -0
  222. package/dist/mjs/types/data-structures/stack/index.js +1 -0
  223. package/dist/mjs/types/data-structures/stack/stack.d.ts +1 -0
  224. package/dist/mjs/types/data-structures/stack/stack.js +1 -0
  225. package/dist/mjs/types/data-structures/tree/index.d.ts +1 -0
  226. package/dist/mjs/types/data-structures/tree/index.js +1 -0
  227. package/dist/mjs/types/data-structures/tree/tree.d.ts +1 -0
  228. package/dist/mjs/types/data-structures/tree/tree.js +1 -0
  229. package/dist/mjs/types/data-structures/trie/index.d.ts +1 -0
  230. package/dist/mjs/types/data-structures/trie/index.js +1 -0
  231. package/dist/mjs/types/data-structures/trie/trie.d.ts +1 -0
  232. package/dist/mjs/types/data-structures/trie/trie.js +1 -0
  233. package/dist/mjs/types/helpers.js +6 -0
  234. package/dist/mjs/types/index.js +3 -0
  235. package/dist/mjs/types/utils/index.js +2 -0
  236. package/dist/mjs/types/utils/utils.js +1 -0
  237. package/dist/mjs/types/utils/validate-type.js +1 -0
  238. package/dist/mjs/utils/index.js +1 -0
  239. package/dist/mjs/utils/utils.js +54 -0
  240. package/dist/umd/data-structure-typed.js +10593 -0
  241. package/dist/umd/data-structure-typed.min.js +5 -10
  242. package/dist/umd/data-structure-typed.min.js.map +1 -1
  243. package/package.json +14 -15
  244. package/src/data-structures/binary-tree/avl-tree.ts +2 -3
  245. package/src/data-structures/binary-tree/binary-tree.ts +85 -92
  246. package/src/data-structures/binary-tree/bst.ts +14 -22
  247. package/src/data-structures/binary-tree/rb-tree.ts +11 -20
  248. package/src/data-structures/binary-tree/tree-multimap.ts +56 -58
  249. package/src/data-structures/graph/abstract-graph.ts +6 -22
  250. package/src/data-structures/graph/directed-graph.ts +3 -9
  251. package/src/data-structures/graph/map-graph.ts +6 -6
  252. package/src/data-structures/graph/undirected-graph.ts +1 -2
  253. package/src/data-structures/heap/heap.ts +1 -6
  254. package/src/data-structures/trie/trie.ts +1 -1
  255. package/src/interfaces/binary-tree.ts +1 -1
  256. package/src/types/utils/validate-type.ts +2 -16
  257. package/test/integration/index.html +50 -4
  258. package/test/performance/data-structures/binary-tree/rb-tree.test.ts +18 -19
  259. package/test/performance/data-structures/hash/hash-map.test.ts +10 -13
  260. package/test/performance/data-structures/linked-list/doubly-linked-list.test.ts +16 -16
  261. package/test/performance/data-structures/priority-queue/max-priority-queue.test.ts +1 -3
  262. package/test/performance/data-structures/priority-queue/priority-queue.test.ts +10 -12
  263. package/test/performance/data-structures/queue/deque.test.ts +18 -19
  264. package/test/performance/data-structures/queue/queue.test.ts +18 -19
  265. package/test/performance/data-structures/stack/stack.test.ts +10 -11
  266. package/test/performance/reportor.ts +4 -5
  267. package/test/unit/data-structures/binary-tree/avl-tree.test.ts +0 -1
  268. package/test/unit/data-structures/binary-tree/binary-tree.test.ts +83 -61
  269. package/test/unit/data-structures/binary-tree/bst.test.ts +2 -6
  270. package/test/unit/data-structures/binary-tree/rb-tree.test.ts +34 -25
  271. package/test/unit/data-structures/graph/abstract-graph.test.ts +6 -6
  272. package/test/unit/data-structures/graph/directed-graph.test.ts +8 -28
  273. package/test/unit/data-structures/heap/heap.test.ts +1 -8
  274. package/test/unit/data-structures/priority-queue/priority-queue.test.ts +34 -12
  275. package/test/utils/json2html.ts +2 -6
  276. package/tsconfig-base.json +0 -1
  277. package/tsconfig-cjs.json +4 -3
  278. package/tsconfig-mjs.json +5 -3
  279. package/tsup.config.js +39 -17
  280. package/dist/cjs/src/data-structures/binary-tree/avl-tree.js.map +0 -1
  281. package/dist/cjs/src/data-structures/binary-tree/binary-indexed-tree.js.map +0 -1
  282. package/dist/cjs/src/data-structures/binary-tree/binary-tree.js.map +0 -1
  283. package/dist/cjs/src/data-structures/binary-tree/bst.js.map +0 -1
  284. package/dist/cjs/src/data-structures/binary-tree/index.js.map +0 -1
  285. package/dist/cjs/src/data-structures/binary-tree/rb-tree.js.map +0 -1
  286. package/dist/cjs/src/data-structures/binary-tree/segment-tree.js.map +0 -1
  287. package/dist/cjs/src/data-structures/binary-tree/tree-multimap.js.map +0 -1
  288. package/dist/cjs/src/data-structures/graph/abstract-graph.js.map +0 -1
  289. package/dist/cjs/src/data-structures/graph/directed-graph.js.map +0 -1
  290. package/dist/cjs/src/data-structures/graph/index.js.map +0 -1
  291. package/dist/cjs/src/data-structures/graph/map-graph.js.map +0 -1
  292. package/dist/cjs/src/data-structures/graph/undirected-graph.js.map +0 -1
  293. package/dist/cjs/src/data-structures/hash/coordinate-map.js.map +0 -1
  294. package/dist/cjs/src/data-structures/hash/coordinate-set.js.map +0 -1
  295. package/dist/cjs/src/data-structures/hash/hash-map.js.map +0 -1
  296. package/dist/cjs/src/data-structures/hash/hash-table.js.map +0 -1
  297. package/dist/cjs/src/data-structures/hash/index.js.map +0 -1
  298. package/dist/cjs/src/data-structures/hash/tree-map.js.map +0 -1
  299. package/dist/cjs/src/data-structures/hash/tree-set.js.map +0 -1
  300. package/dist/cjs/src/data-structures/heap/heap.js.map +0 -1
  301. package/dist/cjs/src/data-structures/heap/index.js.map +0 -1
  302. package/dist/cjs/src/data-structures/heap/max-heap.js.map +0 -1
  303. package/dist/cjs/src/data-structures/heap/min-heap.js.map +0 -1
  304. package/dist/cjs/src/data-structures/index.js.map +0 -1
  305. package/dist/cjs/src/data-structures/linked-list/doubly-linked-list.js.map +0 -1
  306. package/dist/cjs/src/data-structures/linked-list/index.js.map +0 -1
  307. package/dist/cjs/src/data-structures/linked-list/singly-linked-list.js.map +0 -1
  308. package/dist/cjs/src/data-structures/linked-list/skip-linked-list.js.map +0 -1
  309. package/dist/cjs/src/data-structures/matrix/index.js.map +0 -1
  310. package/dist/cjs/src/data-structures/matrix/matrix.js.map +0 -1
  311. package/dist/cjs/src/data-structures/matrix/matrix2d.js.map +0 -1
  312. package/dist/cjs/src/data-structures/matrix/navigator.js.map +0 -1
  313. package/dist/cjs/src/data-structures/matrix/vector2d.js.map +0 -1
  314. package/dist/cjs/src/data-structures/priority-queue/index.js.map +0 -1
  315. package/dist/cjs/src/data-structures/priority-queue/max-priority-queue.js.map +0 -1
  316. package/dist/cjs/src/data-structures/priority-queue/min-priority-queue.js.map +0 -1
  317. package/dist/cjs/src/data-structures/priority-queue/priority-queue.js.map +0 -1
  318. package/dist/cjs/src/data-structures/queue/deque.js.map +0 -1
  319. package/dist/cjs/src/data-structures/queue/index.js.map +0 -1
  320. package/dist/cjs/src/data-structures/queue/queue.js.map +0 -1
  321. package/dist/cjs/src/data-structures/stack/index.js.map +0 -1
  322. package/dist/cjs/src/data-structures/stack/stack.js.map +0 -1
  323. package/dist/cjs/src/data-structures/tree/index.js.map +0 -1
  324. package/dist/cjs/src/data-structures/tree/tree.js.map +0 -1
  325. package/dist/cjs/src/data-structures/trie/index.js.map +0 -1
  326. package/dist/cjs/src/data-structures/trie/trie.js.map +0 -1
  327. package/dist/cjs/src/index.js.map +0 -1
  328. package/dist/cjs/src/interfaces/binary-tree.js.map +0 -1
  329. package/dist/cjs/src/interfaces/doubly-linked-list.js.map +0 -1
  330. package/dist/cjs/src/interfaces/index.js.map +0 -1
  331. package/dist/cjs/src/interfaces/navigator.js.map +0 -1
  332. package/dist/cjs/src/interfaces/priority-queue.js.map +0 -1
  333. package/dist/cjs/src/interfaces/segment-tree.js.map +0 -1
  334. package/dist/cjs/src/interfaces/singly-linked-list.js.map +0 -1
  335. package/dist/cjs/src/types/data-structures/binary-tree/avl-tree.js.map +0 -1
  336. package/dist/cjs/src/types/data-structures/binary-tree/binary-indexed-tree.js.map +0 -1
  337. package/dist/cjs/src/types/data-structures/binary-tree/binary-tree.js.map +0 -1
  338. package/dist/cjs/src/types/data-structures/binary-tree/bst.js.map +0 -1
  339. package/dist/cjs/src/types/data-structures/binary-tree/index.js.map +0 -1
  340. package/dist/cjs/src/types/data-structures/binary-tree/rb-tree.js.map +0 -1
  341. package/dist/cjs/src/types/data-structures/binary-tree/segment-tree.js.map +0 -1
  342. package/dist/cjs/src/types/data-structures/binary-tree/tree-multimap.js.map +0 -1
  343. package/dist/cjs/src/types/data-structures/graph/abstract-graph.js.map +0 -1
  344. package/dist/cjs/src/types/data-structures/graph/directed-graph.js.map +0 -1
  345. package/dist/cjs/src/types/data-structures/graph/index.js.map +0 -1
  346. package/dist/cjs/src/types/data-structures/graph/map-graph.js.map +0 -1
  347. package/dist/cjs/src/types/data-structures/graph/undirected-graph.js.map +0 -1
  348. package/dist/cjs/src/types/data-structures/hash/coordinate-map.js.map +0 -1
  349. package/dist/cjs/src/types/data-structures/hash/coordinate-set.js.map +0 -1
  350. package/dist/cjs/src/types/data-structures/hash/hash-map.js.map +0 -1
  351. package/dist/cjs/src/types/data-structures/hash/hash-table.js.map +0 -1
  352. package/dist/cjs/src/types/data-structures/hash/index.js.map +0 -1
  353. package/dist/cjs/src/types/data-structures/hash/tree-map.js.map +0 -1
  354. package/dist/cjs/src/types/data-structures/hash/tree-set.js.map +0 -1
  355. package/dist/cjs/src/types/data-structures/heap/heap.js.map +0 -1
  356. package/dist/cjs/src/types/data-structures/heap/index.js.map +0 -1
  357. package/dist/cjs/src/types/data-structures/heap/max-heap.js.map +0 -1
  358. package/dist/cjs/src/types/data-structures/heap/min-heap.js.map +0 -1
  359. package/dist/cjs/src/types/data-structures/index.js.map +0 -1
  360. package/dist/cjs/src/types/data-structures/linked-list/doubly-linked-list.js.map +0 -1
  361. package/dist/cjs/src/types/data-structures/linked-list/index.js.map +0 -1
  362. package/dist/cjs/src/types/data-structures/linked-list/singly-linked-list.js.map +0 -1
  363. package/dist/cjs/src/types/data-structures/linked-list/skip-linked-list.js.map +0 -1
  364. package/dist/cjs/src/types/data-structures/matrix/index.js.map +0 -1
  365. package/dist/cjs/src/types/data-structures/matrix/matrix.js.map +0 -1
  366. package/dist/cjs/src/types/data-structures/matrix/matrix2d.js.map +0 -1
  367. package/dist/cjs/src/types/data-structures/matrix/navigator.js.map +0 -1
  368. package/dist/cjs/src/types/data-structures/matrix/vector2d.js.map +0 -1
  369. package/dist/cjs/src/types/data-structures/priority-queue/index.js.map +0 -1
  370. package/dist/cjs/src/types/data-structures/priority-queue/max-priority-queue.js.map +0 -1
  371. package/dist/cjs/src/types/data-structures/priority-queue/min-priority-queue.js.map +0 -1
  372. package/dist/cjs/src/types/data-structures/priority-queue/priority-queue.js.map +0 -1
  373. package/dist/cjs/src/types/data-structures/queue/deque.js.map +0 -1
  374. package/dist/cjs/src/types/data-structures/queue/index.js.map +0 -1
  375. package/dist/cjs/src/types/data-structures/queue/queue.js.map +0 -1
  376. package/dist/cjs/src/types/data-structures/stack/index.js.map +0 -1
  377. package/dist/cjs/src/types/data-structures/stack/stack.js.map +0 -1
  378. package/dist/cjs/src/types/data-structures/tree/index.js.map +0 -1
  379. package/dist/cjs/src/types/data-structures/tree/tree.js.map +0 -1
  380. package/dist/cjs/src/types/data-structures/trie/index.js.map +0 -1
  381. package/dist/cjs/src/types/data-structures/trie/trie.js.map +0 -1
  382. package/dist/cjs/src/types/helpers.js.map +0 -1
  383. package/dist/cjs/src/types/index.js.map +0 -1
  384. package/dist/cjs/src/types/utils/index.js.map +0 -1
  385. package/dist/cjs/src/types/utils/validate-type.js.map +0 -1
  386. package/dist/cjs/src/utils/index.js.map +0 -1
  387. package/dist/cjs/src/utils/utils.js.map +0 -1
  388. package/dist/mjs/src/data-structures/binary-tree/index.js +0 -23
  389. package/dist/mjs/src/data-structures/graph/index.js +0 -20
  390. package/dist/mjs/src/data-structures/hash/index.js +0 -22
  391. package/dist/mjs/src/data-structures/hash/tree-map.js +0 -6
  392. package/dist/mjs/src/data-structures/hash/tree-set.js +0 -6
  393. package/dist/mjs/src/data-structures/heap/index.js +0 -19
  394. package/dist/mjs/src/data-structures/index.js +0 -27
  395. package/dist/mjs/src/data-structures/linked-list/index.js +0 -19
  396. package/dist/mjs/src/data-structures/matrix/index.js +0 -20
  397. package/dist/mjs/src/data-structures/priority-queue/index.js +0 -19
  398. package/dist/mjs/src/data-structures/priority-queue/priority-queue.js +0 -17
  399. package/dist/mjs/src/data-structures/queue/index.js +0 -18
  400. package/dist/mjs/src/data-structures/stack/index.js +0 -17
  401. package/dist/mjs/src/data-structures/tree/index.js +0 -17
  402. package/dist/mjs/src/data-structures/trie/index.js +0 -17
  403. package/dist/mjs/src/index.js +0 -20
  404. package/dist/mjs/src/interfaces/binary-tree.js +0 -2
  405. package/dist/mjs/src/interfaces/doubly-linked-list.js +0 -2
  406. package/dist/mjs/src/interfaces/graph.js +0 -2
  407. package/dist/mjs/src/interfaces/heap.js +0 -2
  408. package/dist/mjs/src/interfaces/index.js +0 -24
  409. package/dist/mjs/src/interfaces/navigator.js +0 -2
  410. package/dist/mjs/src/interfaces/priority-queue.js +0 -2
  411. package/dist/mjs/src/interfaces/segment-tree.js +0 -2
  412. package/dist/mjs/src/interfaces/singly-linked-list.js +0 -2
  413. package/dist/mjs/src/types/data-structures/binary-tree/avl-tree.js +0 -2
  414. package/dist/mjs/src/types/data-structures/binary-tree/binary-indexed-tree.js +0 -2
  415. package/dist/mjs/src/types/data-structures/binary-tree/bst.js +0 -2
  416. package/dist/mjs/src/types/data-structures/binary-tree/index.js +0 -22
  417. package/dist/mjs/src/types/data-structures/binary-tree/rb-tree.js +0 -8
  418. package/dist/mjs/src/types/data-structures/binary-tree/segment-tree.js +0 -2
  419. package/dist/mjs/src/types/data-structures/binary-tree/tree-multimap.js +0 -2
  420. package/dist/mjs/src/types/data-structures/graph/abstract-graph.js +0 -2
  421. package/dist/mjs/src/types/data-structures/graph/directed-graph.js +0 -9
  422. package/dist/mjs/src/types/data-structures/graph/index.js +0 -19
  423. package/dist/mjs/src/types/data-structures/graph/map-graph.js +0 -2
  424. package/dist/mjs/src/types/data-structures/graph/undirected-graph.js +0 -2
  425. package/dist/mjs/src/types/data-structures/hash/coordinate-map.js +0 -2
  426. package/dist/mjs/src/types/data-structures/hash/coordinate-set.js +0 -2
  427. package/dist/mjs/src/types/data-structures/hash/hash-map.js +0 -2
  428. package/dist/mjs/src/types/data-structures/hash/hash-table.js +0 -2
  429. package/dist/mjs/src/types/data-structures/hash/index.js +0 -2
  430. package/dist/mjs/src/types/data-structures/hash/tree-map.js +0 -2
  431. package/dist/mjs/src/types/data-structures/hash/tree-set.js +0 -2
  432. package/dist/mjs/src/types/data-structures/heap/heap.js +0 -2
  433. package/dist/mjs/src/types/data-structures/heap/index.js +0 -17
  434. package/dist/mjs/src/types/data-structures/heap/max-heap.js +0 -2
  435. package/dist/mjs/src/types/data-structures/heap/min-heap.js +0 -2
  436. package/dist/mjs/src/types/data-structures/index.js +0 -27
  437. package/dist/mjs/src/types/data-structures/linked-list/doubly-linked-list.js +0 -2
  438. package/dist/mjs/src/types/data-structures/linked-list/index.js +0 -18
  439. package/dist/mjs/src/types/data-structures/linked-list/singly-linked-list.js +0 -2
  440. package/dist/mjs/src/types/data-structures/linked-list/skip-linked-list.js +0 -2
  441. package/dist/mjs/src/types/data-structures/matrix/index.js +0 -17
  442. package/dist/mjs/src/types/data-structures/matrix/matrix.js +0 -2
  443. package/dist/mjs/src/types/data-structures/matrix/matrix2d.js +0 -2
  444. package/dist/mjs/src/types/data-structures/matrix/navigator.js +0 -2
  445. package/dist/mjs/src/types/data-structures/matrix/vector2d.js +0 -2
  446. package/dist/mjs/src/types/data-structures/priority-queue/index.js +0 -19
  447. package/dist/mjs/src/types/data-structures/priority-queue/max-priority-queue.js +0 -2
  448. package/dist/mjs/src/types/data-structures/priority-queue/min-priority-queue.js +0 -2
  449. package/dist/mjs/src/types/data-structures/priority-queue/priority-queue.js +0 -2
  450. package/dist/mjs/src/types/data-structures/queue/deque.js +0 -2
  451. package/dist/mjs/src/types/data-structures/queue/index.js +0 -18
  452. package/dist/mjs/src/types/data-structures/queue/queue.js +0 -2
  453. package/dist/mjs/src/types/data-structures/stack/index.js +0 -17
  454. package/dist/mjs/src/types/data-structures/stack/stack.js +0 -2
  455. package/dist/mjs/src/types/data-structures/tree/index.js +0 -17
  456. package/dist/mjs/src/types/data-structures/tree/tree.js +0 -2
  457. package/dist/mjs/src/types/data-structures/trie/index.js +0 -17
  458. package/dist/mjs/src/types/data-structures/trie/trie.js +0 -2
  459. package/dist/mjs/src/types/helpers.js +0 -9
  460. package/dist/mjs/src/types/index.js +0 -19
  461. package/dist/mjs/src/types/utils/index.js +0 -18
  462. package/dist/mjs/src/types/utils/utils.js +0 -2
  463. package/dist/mjs/src/types/utils/validate-type.js +0 -2
  464. package/dist/mjs/src/utils/index.js +0 -17
  465. package/dist/mjs/src/utils/utils.js +0 -64
  466. package/dist/cjs/{src/data-structures → data-structures}/binary-tree/avl-tree.d.ts +0 -0
  467. package/dist/cjs/{src/data-structures → data-structures}/binary-tree/avl-tree.js +0 -0
  468. package/dist/cjs/{src/data-structures → data-structures}/binary-tree/binary-indexed-tree.d.ts +0 -0
  469. package/dist/cjs/{src/data-structures → data-structures}/binary-tree/binary-indexed-tree.js +0 -0
  470. package/dist/cjs/{src/data-structures → data-structures}/binary-tree/bst.d.ts +0 -0
  471. package/dist/cjs/{src/data-structures → data-structures}/binary-tree/bst.js +0 -0
  472. package/dist/cjs/{src/data-structures → data-structures}/binary-tree/index.d.ts +0 -0
  473. package/dist/cjs/{src/data-structures → data-structures}/binary-tree/index.js +0 -0
  474. package/dist/cjs/{src/data-structures → data-structures}/binary-tree/segment-tree.d.ts +0 -0
  475. package/dist/cjs/{src/data-structures → data-structures}/binary-tree/segment-tree.js +0 -0
  476. package/dist/{mjs/src → cjs}/data-structures/binary-tree/tree-multimap.d.ts +24 -24
  477. package/dist/cjs/{src/data-structures → data-structures}/graph/directed-graph.d.ts +0 -0
  478. package/dist/cjs/{src/data-structures → data-structures}/graph/directed-graph.js +0 -0
  479. package/dist/cjs/{src/data-structures → data-structures}/graph/index.d.ts +0 -0
  480. package/dist/cjs/{src/data-structures → data-structures}/graph/index.js +0 -0
  481. package/dist/cjs/{src/data-structures → data-structures}/graph/map-graph.d.ts +0 -0
  482. package/dist/cjs/{src/data-structures → data-structures}/graph/map-graph.js +0 -0
  483. package/dist/cjs/{src/data-structures → data-structures}/graph/undirected-graph.d.ts +0 -0
  484. package/dist/cjs/{src/data-structures → data-structures}/graph/undirected-graph.js +0 -0
  485. package/dist/cjs/{src/data-structures → data-structures}/hash/coordinate-map.d.ts +0 -0
  486. package/dist/cjs/{src/data-structures → data-structures}/hash/coordinate-map.js +0 -0
  487. package/dist/cjs/{src/data-structures → data-structures}/hash/coordinate-set.d.ts +0 -0
  488. package/dist/cjs/{src/data-structures → data-structures}/hash/coordinate-set.js +0 -0
  489. package/dist/cjs/{src/data-structures → data-structures}/hash/hash-map.d.ts +0 -0
  490. package/dist/cjs/{src/data-structures → data-structures}/hash/hash-map.js +0 -0
  491. package/dist/cjs/{src/data-structures → data-structures}/hash/hash-table.d.ts +0 -0
  492. package/dist/cjs/{src/data-structures → data-structures}/hash/hash-table.js +0 -0
  493. package/dist/cjs/{src/data-structures → data-structures}/hash/index.d.ts +0 -0
  494. package/dist/cjs/{src/data-structures → data-structures}/hash/index.js +0 -0
  495. package/dist/cjs/{src/data-structures → data-structures}/hash/tree-map.d.ts +0 -0
  496. package/dist/cjs/{src/data-structures → data-structures}/hash/tree-map.js +0 -0
  497. package/dist/cjs/{src/data-structures → data-structures}/hash/tree-set.d.ts +0 -0
  498. package/dist/cjs/{src/data-structures → data-structures}/hash/tree-set.js +0 -0
  499. package/dist/cjs/{src/data-structures → data-structures}/heap/heap.d.ts +0 -0
  500. package/dist/cjs/{src/data-structures → data-structures}/heap/heap.js +0 -0
  501. package/dist/cjs/{src/data-structures → data-structures}/heap/index.d.ts +0 -0
  502. package/dist/cjs/{src/data-structures → data-structures}/heap/index.js +0 -0
  503. package/dist/cjs/{src/data-structures → data-structures}/heap/max-heap.d.ts +0 -0
  504. package/dist/cjs/{src/data-structures → data-structures}/heap/max-heap.js +0 -0
  505. package/dist/cjs/{src/data-structures → data-structures}/heap/min-heap.d.ts +0 -0
  506. package/dist/cjs/{src/data-structures → data-structures}/heap/min-heap.js +0 -0
  507. package/dist/cjs/{src/data-structures → data-structures}/index.d.ts +0 -0
  508. package/dist/cjs/{src/data-structures → data-structures}/index.js +0 -0
  509. package/dist/cjs/{src/data-structures → data-structures}/linked-list/doubly-linked-list.d.ts +0 -0
  510. package/dist/cjs/{src/data-structures → data-structures}/linked-list/doubly-linked-list.js +0 -0
  511. package/dist/cjs/{src/data-structures → data-structures}/linked-list/index.d.ts +0 -0
  512. package/dist/cjs/{src/data-structures → data-structures}/linked-list/index.js +0 -0
  513. package/dist/cjs/{src/data-structures → data-structures}/linked-list/singly-linked-list.d.ts +0 -0
  514. package/dist/cjs/{src/data-structures → data-structures}/linked-list/singly-linked-list.js +0 -0
  515. package/dist/cjs/{src/data-structures → data-structures}/linked-list/skip-linked-list.d.ts +0 -0
  516. package/dist/cjs/{src/data-structures → data-structures}/linked-list/skip-linked-list.js +0 -0
  517. package/dist/cjs/{src/data-structures → data-structures}/matrix/index.d.ts +0 -0
  518. package/dist/cjs/{src/data-structures → data-structures}/matrix/index.js +0 -0
  519. package/dist/cjs/{src/data-structures → data-structures}/matrix/matrix.d.ts +0 -0
  520. package/dist/cjs/{src/data-structures → data-structures}/matrix/matrix.js +0 -0
  521. package/dist/cjs/{src/data-structures → data-structures}/matrix/matrix2d.d.ts +0 -0
  522. package/dist/cjs/{src/data-structures → data-structures}/matrix/matrix2d.js +0 -0
  523. package/dist/cjs/{src/data-structures → data-structures}/matrix/navigator.d.ts +0 -0
  524. package/dist/cjs/{src/data-structures → data-structures}/matrix/navigator.js +0 -0
  525. package/dist/cjs/{src/data-structures → data-structures}/matrix/vector2d.d.ts +0 -0
  526. package/dist/cjs/{src/data-structures → data-structures}/matrix/vector2d.js +0 -0
  527. package/dist/cjs/{src/data-structures → data-structures}/priority-queue/index.d.ts +0 -0
  528. package/dist/cjs/{src/data-structures → data-structures}/priority-queue/index.js +0 -0
  529. package/dist/cjs/{src/data-structures → data-structures}/priority-queue/max-priority-queue.d.ts +0 -0
  530. package/dist/cjs/{src/data-structures → data-structures}/priority-queue/max-priority-queue.js +0 -0
  531. package/dist/cjs/{src/data-structures → data-structures}/priority-queue/min-priority-queue.d.ts +0 -0
  532. package/dist/cjs/{src/data-structures → data-structures}/priority-queue/min-priority-queue.js +0 -0
  533. package/dist/cjs/{src/data-structures → data-structures}/priority-queue/priority-queue.d.ts +0 -0
  534. package/dist/cjs/{src/data-structures → data-structures}/priority-queue/priority-queue.js +0 -0
  535. package/dist/cjs/{src/data-structures → data-structures}/queue/deque.d.ts +0 -0
  536. package/dist/cjs/{src/data-structures → data-structures}/queue/deque.js +0 -0
  537. package/dist/cjs/{src/data-structures → data-structures}/queue/index.d.ts +0 -0
  538. package/dist/cjs/{src/data-structures → data-structures}/queue/index.js +0 -0
  539. package/dist/cjs/{src/data-structures → data-structures}/queue/queue.d.ts +0 -0
  540. package/dist/cjs/{src/data-structures → data-structures}/queue/queue.js +0 -0
  541. package/dist/cjs/{src/data-structures → data-structures}/stack/index.d.ts +0 -0
  542. package/dist/cjs/{src/data-structures → data-structures}/stack/index.js +0 -0
  543. package/dist/cjs/{src/data-structures → data-structures}/stack/stack.d.ts +0 -0
  544. package/dist/cjs/{src/data-structures → data-structures}/stack/stack.js +0 -0
  545. package/dist/cjs/{src/data-structures → data-structures}/tree/index.d.ts +0 -0
  546. package/dist/cjs/{src/data-structures → data-structures}/tree/index.js +0 -0
  547. package/dist/cjs/{src/data-structures → data-structures}/tree/tree.d.ts +0 -0
  548. package/dist/cjs/{src/data-structures → data-structures}/tree/tree.js +0 -0
  549. package/dist/cjs/{src/data-structures → data-structures}/trie/index.d.ts +0 -0
  550. package/dist/cjs/{src/data-structures → data-structures}/trie/index.js +0 -0
  551. package/dist/cjs/{src/data-structures → data-structures}/trie/trie.d.ts +0 -0
  552. package/dist/cjs/{src/data-structures → data-structures}/trie/trie.js +0 -0
  553. package/dist/cjs/{src/index.d.ts → index.d.ts} +0 -0
  554. package/dist/cjs/{src/index.js → index.js} +0 -0
  555. package/dist/cjs/{src/interfaces → interfaces}/binary-tree.js +0 -0
  556. package/dist/cjs/{src/interfaces → interfaces}/doubly-linked-list.d.ts +0 -0
  557. package/dist/cjs/{src/interfaces → interfaces}/doubly-linked-list.js +0 -0
  558. package/dist/cjs/{src/interfaces → interfaces}/graph.d.ts +0 -0
  559. package/dist/cjs/{src/interfaces → interfaces}/graph.js +0 -0
  560. package/dist/cjs/{src/interfaces → interfaces}/heap.d.ts +0 -0
  561. package/dist/cjs/{src/interfaces → interfaces}/heap.js +0 -0
  562. package/dist/cjs/{src/interfaces → interfaces}/index.d.ts +0 -0
  563. package/dist/cjs/{src/interfaces → interfaces}/index.js +0 -0
  564. package/dist/cjs/{src/interfaces → interfaces}/navigator.d.ts +0 -0
  565. package/dist/cjs/{src/interfaces → interfaces}/navigator.js +0 -0
  566. package/dist/cjs/{src/interfaces → interfaces}/priority-queue.d.ts +0 -0
  567. package/dist/cjs/{src/interfaces → interfaces}/priority-queue.js +0 -0
  568. package/dist/cjs/{src/interfaces → interfaces}/segment-tree.d.ts +0 -0
  569. package/dist/cjs/{src/interfaces → interfaces}/segment-tree.js +0 -0
  570. package/dist/cjs/{src/interfaces → interfaces}/singly-linked-list.d.ts +0 -0
  571. package/dist/cjs/{src/interfaces → interfaces}/singly-linked-list.js +0 -0
  572. package/dist/cjs/{src/types → types}/data-structures/binary-tree/avl-tree.d.ts +0 -0
  573. package/dist/cjs/{src/types → types}/data-structures/binary-tree/avl-tree.js +0 -0
  574. package/dist/cjs/{src/types → types}/data-structures/binary-tree/binary-indexed-tree.d.ts +0 -0
  575. package/dist/cjs/{src/types → types}/data-structures/binary-tree/binary-indexed-tree.js +0 -0
  576. package/dist/cjs/{src/types → types}/data-structures/binary-tree/binary-tree.d.ts +0 -0
  577. package/dist/cjs/{src/types → types}/data-structures/binary-tree/binary-tree.js +0 -0
  578. package/dist/cjs/{src/types → types}/data-structures/binary-tree/bst.d.ts +0 -0
  579. package/dist/cjs/{src/types → types}/data-structures/binary-tree/bst.js +0 -0
  580. package/dist/cjs/{src/types → types}/data-structures/binary-tree/index.d.ts +0 -0
  581. package/dist/cjs/{src/types → types}/data-structures/binary-tree/index.js +0 -0
  582. package/dist/cjs/{src/types → types}/data-structures/binary-tree/rb-tree.d.ts +0 -0
  583. package/dist/cjs/{src/types → types}/data-structures/binary-tree/rb-tree.js +0 -0
  584. package/dist/cjs/{src/types → types}/data-structures/binary-tree/segment-tree.d.ts +0 -0
  585. package/dist/cjs/{src/types → types}/data-structures/binary-tree/segment-tree.js +0 -0
  586. package/dist/cjs/{src/types → types}/data-structures/binary-tree/tree-multimap.d.ts +0 -0
  587. package/dist/cjs/{src/types → types}/data-structures/binary-tree/tree-multimap.js +0 -0
  588. package/dist/cjs/{src/types → types}/data-structures/graph/abstract-graph.d.ts +0 -0
  589. package/dist/cjs/{src/types → types}/data-structures/graph/abstract-graph.js +0 -0
  590. package/dist/cjs/{src/types → types}/data-structures/graph/directed-graph.d.ts +0 -0
  591. package/dist/cjs/{src/types → types}/data-structures/graph/directed-graph.js +0 -0
  592. package/dist/cjs/{src/types → types}/data-structures/graph/index.d.ts +0 -0
  593. package/dist/cjs/{src/types → types}/data-structures/graph/index.js +0 -0
  594. package/dist/cjs/{src/types → types}/data-structures/graph/map-graph.d.ts +0 -0
  595. package/dist/cjs/{src/types → types}/data-structures/graph/map-graph.js +0 -0
  596. package/dist/cjs/{src/types → types}/data-structures/graph/undirected-graph.d.ts +0 -0
  597. package/dist/cjs/{src/types → types}/data-structures/graph/undirected-graph.js +0 -0
  598. package/dist/cjs/{src/types → types}/data-structures/hash/coordinate-map.d.ts +0 -0
  599. package/dist/cjs/{src/types → types}/data-structures/hash/coordinate-map.js +0 -0
  600. package/dist/cjs/{src/types → types}/data-structures/hash/coordinate-set.d.ts +0 -0
  601. package/dist/cjs/{src/types → types}/data-structures/hash/coordinate-set.js +0 -0
  602. package/dist/cjs/{src/types → types}/data-structures/hash/hash-map.d.ts +0 -0
  603. package/dist/cjs/{src/types → types}/data-structures/hash/hash-map.js +0 -0
  604. package/dist/cjs/{src/types → types}/data-structures/hash/hash-table.d.ts +0 -0
  605. package/dist/cjs/{src/types → types}/data-structures/hash/hash-table.js +0 -0
  606. package/dist/cjs/{src/types → types}/data-structures/hash/index.d.ts +0 -0
  607. package/dist/cjs/{src/types → types}/data-structures/hash/index.js +0 -0
  608. package/dist/cjs/{src/types → types}/data-structures/hash/tree-map.d.ts +0 -0
  609. package/dist/cjs/{src/types → types}/data-structures/hash/tree-map.js +0 -0
  610. package/dist/cjs/{src/types → types}/data-structures/hash/tree-set.d.ts +0 -0
  611. package/dist/cjs/{src/types → types}/data-structures/hash/tree-set.js +0 -0
  612. package/dist/cjs/{src/types → types}/data-structures/heap/heap.d.ts +0 -0
  613. package/dist/cjs/{src/types → types}/data-structures/heap/heap.js +0 -0
  614. package/dist/cjs/{src/types → types}/data-structures/heap/index.d.ts +0 -0
  615. package/dist/cjs/{src/types → types}/data-structures/heap/index.js +0 -0
  616. package/dist/cjs/{src/types → types}/data-structures/heap/max-heap.d.ts +0 -0
  617. package/dist/cjs/{src/types → types}/data-structures/heap/max-heap.js +0 -0
  618. package/dist/cjs/{src/types → types}/data-structures/heap/min-heap.d.ts +0 -0
  619. package/dist/cjs/{src/types → types}/data-structures/heap/min-heap.js +0 -0
  620. package/dist/cjs/{src/types → types}/data-structures/index.d.ts +0 -0
  621. package/dist/cjs/{src/types → types}/data-structures/index.js +0 -0
  622. package/dist/cjs/{src/types → types}/data-structures/linked-list/doubly-linked-list.d.ts +0 -0
  623. package/dist/cjs/{src/types → types}/data-structures/linked-list/doubly-linked-list.js +0 -0
  624. package/dist/cjs/{src/types → types}/data-structures/linked-list/index.d.ts +0 -0
  625. package/dist/cjs/{src/types → types}/data-structures/linked-list/index.js +0 -0
  626. package/dist/cjs/{src/types → types}/data-structures/linked-list/singly-linked-list.d.ts +0 -0
  627. package/dist/cjs/{src/types → types}/data-structures/linked-list/singly-linked-list.js +0 -0
  628. package/dist/cjs/{src/types → types}/data-structures/linked-list/skip-linked-list.d.ts +0 -0
  629. package/dist/cjs/{src/types → types}/data-structures/linked-list/skip-linked-list.js +0 -0
  630. package/dist/cjs/{src/types → types}/data-structures/matrix/index.d.ts +0 -0
  631. package/dist/cjs/{src/types → types}/data-structures/matrix/index.js +0 -0
  632. package/dist/cjs/{src/types → types}/data-structures/matrix/matrix.d.ts +0 -0
  633. package/dist/cjs/{src/types → types}/data-structures/matrix/matrix.js +0 -0
  634. package/dist/cjs/{src/types → types}/data-structures/matrix/matrix2d.d.ts +0 -0
  635. package/dist/cjs/{src/types → types}/data-structures/matrix/matrix2d.js +0 -0
  636. package/dist/cjs/{src/types → types}/data-structures/matrix/navigator.d.ts +0 -0
  637. package/dist/cjs/{src/types → types}/data-structures/matrix/navigator.js +0 -0
  638. package/dist/cjs/{src/types → types}/data-structures/matrix/vector2d.d.ts +0 -0
  639. package/dist/cjs/{src/types → types}/data-structures/matrix/vector2d.js +0 -0
  640. package/dist/cjs/{src/types → types}/data-structures/priority-queue/index.d.ts +0 -0
  641. package/dist/cjs/{src/types → types}/data-structures/priority-queue/index.js +0 -0
  642. package/dist/cjs/{src/types → types}/data-structures/priority-queue/max-priority-queue.d.ts +0 -0
  643. package/dist/cjs/{src/types → types}/data-structures/priority-queue/max-priority-queue.js +0 -0
  644. package/dist/cjs/{src/types → types}/data-structures/priority-queue/min-priority-queue.d.ts +0 -0
  645. package/dist/cjs/{src/types → types}/data-structures/priority-queue/min-priority-queue.js +0 -0
  646. package/dist/cjs/{src/types → types}/data-structures/priority-queue/priority-queue.d.ts +0 -0
  647. package/dist/cjs/{src/types → types}/data-structures/priority-queue/priority-queue.js +0 -0
  648. package/dist/cjs/{src/types → types}/data-structures/queue/deque.d.ts +0 -0
  649. package/dist/cjs/{src/types → types}/data-structures/queue/deque.js +0 -0
  650. package/dist/cjs/{src/types → types}/data-structures/queue/index.d.ts +0 -0
  651. package/dist/cjs/{src/types → types}/data-structures/queue/index.js +0 -0
  652. package/dist/cjs/{src/types → types}/data-structures/queue/queue.d.ts +0 -0
  653. package/dist/cjs/{src/types → types}/data-structures/queue/queue.js +0 -0
  654. package/dist/cjs/{src/types → types}/data-structures/stack/index.d.ts +0 -0
  655. package/dist/cjs/{src/types → types}/data-structures/stack/index.js +0 -0
  656. package/dist/cjs/{src/types → types}/data-structures/stack/stack.d.ts +0 -0
  657. package/dist/cjs/{src/types → types}/data-structures/stack/stack.js +0 -0
  658. package/dist/cjs/{src/types → types}/data-structures/tree/index.d.ts +0 -0
  659. package/dist/cjs/{src/types → types}/data-structures/tree/index.js +0 -0
  660. package/dist/cjs/{src/types → types}/data-structures/tree/tree.d.ts +0 -0
  661. package/dist/cjs/{src/types → types}/data-structures/tree/tree.js +0 -0
  662. package/dist/cjs/{src/types → types}/data-structures/trie/index.d.ts +0 -0
  663. package/dist/cjs/{src/types → types}/data-structures/trie/index.js +0 -0
  664. package/dist/cjs/{src/types → types}/data-structures/trie/trie.d.ts +0 -0
  665. package/dist/cjs/{src/types → types}/data-structures/trie/trie.js +0 -0
  666. package/dist/cjs/{src/types → types}/helpers.d.ts +0 -0
  667. package/dist/cjs/{src/types → types}/helpers.js +0 -0
  668. package/dist/cjs/{src/types → types}/index.d.ts +0 -0
  669. package/dist/cjs/{src/types → types}/index.js +0 -0
  670. package/dist/cjs/{src/types → types}/utils/index.d.ts +0 -0
  671. package/dist/cjs/{src/types → types}/utils/index.js +0 -0
  672. package/dist/cjs/{src/types → types}/utils/utils.d.ts +0 -0
  673. package/dist/cjs/{src/types → types}/utils/utils.js +0 -0
  674. package/dist/cjs/{src/types → types}/utils/validate-type.d.ts +0 -0
  675. package/dist/cjs/{src/types → types}/utils/validate-type.js +0 -0
  676. package/dist/cjs/{src/utils → utils}/index.d.ts +0 -0
  677. package/dist/cjs/{src/utils → utils}/index.js +0 -0
  678. package/dist/cjs/{src/utils → utils}/utils.d.ts +0 -0
  679. package/dist/cjs/{src/utils → utils}/utils.js +0 -0
  680. package/dist/mjs/{src/data-structures → data-structures}/binary-tree/avl-tree.d.ts +0 -0
  681. package/dist/mjs/{src/data-structures → data-structures}/binary-tree/binary-indexed-tree.d.ts +0 -0
  682. package/dist/mjs/{src/data-structures → data-structures}/binary-tree/bst.d.ts +0 -0
  683. package/dist/mjs/{src/data-structures → data-structures}/binary-tree/index.d.ts +0 -0
  684. package/dist/mjs/{src/data-structures → data-structures}/binary-tree/segment-tree.d.ts +0 -0
  685. package/dist/{cjs/src → mjs}/data-structures/binary-tree/tree-multimap.d.ts +24 -24
  686. /package/dist/mjs/{src/data-structures → data-structures}/graph/directed-graph.d.ts +0 -0
  687. /package/dist/mjs/{src/data-structures → data-structures}/graph/index.d.ts +0 -0
  688. /package/dist/mjs/{src/data-structures → data-structures}/graph/map-graph.d.ts +0 -0
  689. /package/dist/mjs/{src/data-structures → data-structures}/graph/undirected-graph.d.ts +0 -0
  690. /package/dist/mjs/{src/data-structures → data-structures}/hash/coordinate-map.d.ts +0 -0
  691. /package/dist/mjs/{src/data-structures → data-structures}/hash/coordinate-set.d.ts +0 -0
  692. /package/dist/mjs/{src/data-structures → data-structures}/hash/hash-map.d.ts +0 -0
  693. /package/dist/mjs/{src/data-structures → data-structures}/hash/hash-table.d.ts +0 -0
  694. /package/dist/mjs/{src/data-structures → data-structures}/hash/index.d.ts +0 -0
  695. /package/dist/mjs/{src/data-structures → data-structures}/hash/tree-map.d.ts +0 -0
  696. /package/dist/mjs/{src/data-structures → data-structures}/hash/tree-set.d.ts +0 -0
  697. /package/dist/mjs/{src/data-structures → data-structures}/heap/heap.d.ts +0 -0
  698. /package/dist/mjs/{src/data-structures → data-structures}/heap/index.d.ts +0 -0
  699. /package/dist/mjs/{src/data-structures → data-structures}/heap/max-heap.d.ts +0 -0
  700. /package/dist/mjs/{src/data-structures → data-structures}/heap/min-heap.d.ts +0 -0
  701. /package/dist/mjs/{src/data-structures → data-structures}/index.d.ts +0 -0
  702. /package/dist/mjs/{src/data-structures → data-structures}/linked-list/doubly-linked-list.d.ts +0 -0
  703. /package/dist/mjs/{src/data-structures → data-structures}/linked-list/index.d.ts +0 -0
  704. /package/dist/mjs/{src/data-structures → data-structures}/linked-list/singly-linked-list.d.ts +0 -0
  705. /package/dist/mjs/{src/data-structures → data-structures}/linked-list/skip-linked-list.d.ts +0 -0
  706. /package/dist/mjs/{src/data-structures → data-structures}/matrix/index.d.ts +0 -0
  707. /package/dist/mjs/{src/data-structures → data-structures}/matrix/matrix.d.ts +0 -0
  708. /package/dist/mjs/{src/data-structures → data-structures}/matrix/matrix2d.d.ts +0 -0
  709. /package/dist/mjs/{src/data-structures → data-structures}/matrix/navigator.d.ts +0 -0
  710. /package/dist/mjs/{src/data-structures → data-structures}/matrix/vector2d.d.ts +0 -0
  711. /package/dist/mjs/{src/data-structures → data-structures}/priority-queue/index.d.ts +0 -0
  712. /package/dist/mjs/{src/types/data-structures/priority-queue/index.d.ts → data-structures/priority-queue/index.js} +0 -0
  713. /package/dist/mjs/{src/data-structures → data-structures}/priority-queue/max-priority-queue.d.ts +0 -0
  714. /package/dist/mjs/{src/data-structures → data-structures}/priority-queue/min-priority-queue.d.ts +0 -0
  715. /package/dist/mjs/{src/data-structures → data-structures}/priority-queue/priority-queue.d.ts +0 -0
  716. /package/dist/mjs/{src/data-structures → data-structures}/queue/deque.d.ts +0 -0
  717. /package/dist/mjs/{src/data-structures → data-structures}/queue/index.d.ts +0 -0
  718. /package/dist/mjs/{src/types/data-structures/queue/index.d.ts → data-structures/queue/index.js} +0 -0
  719. /package/dist/mjs/{src/data-structures → data-structures}/queue/queue.d.ts +0 -0
  720. /package/dist/mjs/{src/data-structures → data-structures}/stack/index.d.ts +0 -0
  721. /package/dist/mjs/{src/types/data-structures/stack/index.d.ts → data-structures/stack/index.js} +0 -0
  722. /package/dist/mjs/{src/data-structures → data-structures}/stack/stack.d.ts +0 -0
  723. /package/dist/mjs/{src/data-structures → data-structures}/tree/index.d.ts +0 -0
  724. /package/dist/mjs/{src/types/data-structures/tree/index.d.ts → data-structures/tree/index.js} +0 -0
  725. /package/dist/mjs/{src/data-structures → data-structures}/tree/tree.d.ts +0 -0
  726. /package/dist/mjs/{src/data-structures → data-structures}/trie/index.d.ts +0 -0
  727. /package/dist/mjs/{src/types/data-structures/trie/index.d.ts → data-structures/trie/index.js} +0 -0
  728. /package/dist/mjs/{src/data-structures → data-structures}/trie/trie.d.ts +0 -0
  729. /package/dist/mjs/{src/index.d.ts → index.d.ts} +0 -0
  730. /package/dist/mjs/{src/interfaces/doubly-linked-list.d.ts → interfaces/binary-tree.js} +0 -0
  731. /package/dist/mjs/{src/types/data-structures/linked-list → interfaces}/doubly-linked-list.d.ts +0 -0
  732. /package/dist/mjs/{src/interfaces/heap.d.ts → interfaces/doubly-linked-list.js} +0 -0
  733. /package/dist/mjs/{src/interfaces → interfaces}/graph.d.ts +0 -0
  734. /package/dist/mjs/{src/interfaces/navigator.d.ts → interfaces/graph.js} +0 -0
  735. /package/dist/mjs/{src/types/data-structures/heap → interfaces}/heap.d.ts +0 -0
  736. /package/dist/mjs/{src/interfaces/priority-queue.d.ts → interfaces/heap.js} +0 -0
  737. /package/dist/mjs/{src/interfaces → interfaces}/index.d.ts +0 -0
  738. /package/dist/mjs/{src/interfaces/segment-tree.d.ts → interfaces/navigator.d.ts} +0 -0
  739. /package/dist/mjs/{src/interfaces/singly-linked-list.d.ts → interfaces/navigator.js} +0 -0
  740. /package/dist/mjs/{src/types/data-structures/priority-queue → interfaces}/priority-queue.d.ts +0 -0
  741. /package/dist/mjs/{src/types/data-structures/binary-tree/binary-indexed-tree.d.ts → interfaces/priority-queue.js} +0 -0
  742. /package/dist/mjs/{src/types/data-structures/graph/undirected-graph.d.ts → interfaces/segment-tree.d.ts} +0 -0
  743. /package/dist/mjs/{src/types/data-structures/hash/coordinate-map.d.ts → interfaces/segment-tree.js} +0 -0
  744. /package/dist/mjs/{src/types/data-structures/linked-list → interfaces}/singly-linked-list.d.ts +0 -0
  745. /package/dist/mjs/{src/types/data-structures/hash/coordinate-set.d.ts → interfaces/singly-linked-list.js} +0 -0
  746. /package/dist/mjs/{src/types → types}/data-structures/binary-tree/avl-tree.d.ts +0 -0
  747. /package/dist/mjs/{src/types/data-structures/hash/hash-map.d.ts → types/data-structures/binary-tree/avl-tree.js} +0 -0
  748. /package/dist/mjs/{src/types/data-structures/hash/hash-table.d.ts → types/data-structures/binary-tree/binary-indexed-tree.d.ts} +0 -0
  749. /package/dist/mjs/{src/types/data-structures/hash/tree-map.d.ts → types/data-structures/binary-tree/binary-indexed-tree.js} +0 -0
  750. /package/dist/mjs/{src/types → types}/data-structures/binary-tree/binary-tree.d.ts +0 -0
  751. /package/dist/mjs/{src/types → types}/data-structures/binary-tree/bst.d.ts +0 -0
  752. /package/dist/mjs/{src/types/data-structures/hash/tree-set.d.ts → types/data-structures/binary-tree/bst.js} +0 -0
  753. /package/dist/mjs/{src/types → types}/data-structures/binary-tree/index.d.ts +0 -0
  754. /package/dist/mjs/{src/types → types}/data-structures/binary-tree/rb-tree.d.ts +0 -0
  755. /package/dist/mjs/{src/types → types}/data-structures/binary-tree/segment-tree.d.ts +0 -0
  756. /package/dist/mjs/{src/types/data-structures/heap/max-heap.d.ts → types/data-structures/binary-tree/segment-tree.js} +0 -0
  757. /package/dist/mjs/{src/types → types}/data-structures/binary-tree/tree-multimap.d.ts +0 -0
  758. /package/dist/mjs/{src/types/data-structures/heap/min-heap.d.ts → types/data-structures/binary-tree/tree-multimap.js} +0 -0
  759. /package/dist/mjs/{src/types → types}/data-structures/graph/abstract-graph.d.ts +0 -0
  760. /package/dist/mjs/{src/types/data-structures/linked-list/skip-linked-list.d.ts → types/data-structures/graph/abstract-graph.js} +0 -0
  761. /package/dist/mjs/{src/types → types}/data-structures/graph/directed-graph.d.ts +0 -0
  762. /package/dist/mjs/{src/types → types}/data-structures/graph/index.d.ts +0 -0
  763. /package/dist/mjs/{src/types → types}/data-structures/graph/map-graph.d.ts +0 -0
  764. /package/dist/mjs/{src/types/data-structures/matrix/matrix.d.ts → types/data-structures/graph/map-graph.js} +0 -0
  765. /package/dist/mjs/{src/types/data-structures/matrix/matrix2d.d.ts → types/data-structures/graph/undirected-graph.d.ts} +0 -0
  766. /package/dist/mjs/{src/types/data-structures/matrix/vector2d.d.ts → types/data-structures/graph/undirected-graph.js} +0 -0
  767. /package/dist/mjs/{src/types/data-structures/priority-queue/max-priority-queue.d.ts → types/data-structures/hash/coordinate-map.d.ts} +0 -0
  768. /package/dist/mjs/{src/types/data-structures/priority-queue/min-priority-queue.d.ts → types/data-structures/hash/coordinate-map.js} +0 -0
  769. /package/dist/mjs/{src/types/data-structures/queue/deque.d.ts → types/data-structures/hash/coordinate-set.d.ts} +0 -0
  770. /package/dist/mjs/{src/types/data-structures/queue/queue.d.ts → types/data-structures/hash/coordinate-set.js} +0 -0
  771. /package/dist/mjs/{src/types/data-structures/stack/stack.d.ts → types/data-structures/hash/hash-map.d.ts} +0 -0
  772. /package/dist/mjs/{src/types/data-structures/tree/tree.d.ts → types/data-structures/hash/hash-map.js} +0 -0
  773. /package/dist/mjs/{src/types/data-structures/trie/trie.d.ts → types/data-structures/hash/hash-table.d.ts} +0 -0
  774. /package/dist/mjs/{src/types → types}/data-structures/hash/index.d.ts +0 -0
  775. /package/dist/mjs/{src/types → types}/data-structures/heap/index.d.ts +0 -0
  776. /package/dist/mjs/{src/types → types}/data-structures/index.d.ts +0 -0
  777. /package/dist/mjs/{src/types → types}/data-structures/linked-list/index.d.ts +0 -0
  778. /package/dist/mjs/{src/types → types}/data-structures/matrix/index.d.ts +0 -0
  779. /package/dist/mjs/{src/types → types}/data-structures/matrix/navigator.d.ts +0 -0
  780. /package/dist/mjs/{src/types → types}/helpers.d.ts +0 -0
  781. /package/dist/mjs/{src/types → types}/index.d.ts +0 -0
  782. /package/dist/mjs/{src/types → types}/utils/index.d.ts +0 -0
  783. /package/dist/mjs/{src/types → types}/utils/utils.d.ts +0 -0
  784. /package/dist/mjs/{src/types → types}/utils/validate-type.d.ts +0 -0
  785. /package/dist/mjs/{src/utils → utils}/index.d.ts +0 -0
  786. /package/dist/mjs/{src/utils → utils}/utils.d.ts +0 -0
@@ -1,27 +1,22 @@
1
- "use strict";var dataStructureTyped=(()=>{var de=Object.defineProperty;var We=Object.getOwnPropertyDescriptor;var Qe=Object.getOwnPropertyNames;var Xe=Object.prototype.hasOwnProperty;var Ye=(a,e)=>{for(var t in e)de(a,t,{get:e[t],enumerable:!0})},$e=(a,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Qe(e))!Xe.call(a,n)&&n!==t&&de(a,n,{get:()=>e[n],enumerable:!(r=We(e,n))||r.enumerable});return a};var Je=a=>$e(de({},"__esModule",{value:!0}),a);var et={};Ye(et,{AVLTree:()=>J,AVLTreeNode:()=>F,AbstractEdge:()=>L,AbstractGraph:()=>I,AbstractVertex:()=>x,ArrayDeque:()=>Ve,BST:()=>D,BSTNode:()=>w,BinaryIndexedTree:()=>De,BinaryTree:()=>$,BinaryTreeNode:()=>B,CP:()=>le,Character:()=>ae,CoordinateMap:()=>ce,CoordinateSet:()=>pe,Deque:()=>_e,DirectedEdge:()=>A,DirectedGraph:()=>X,DirectedVertex:()=>S,DoublyLinkedList:()=>W,DoublyLinkedListNode:()=>v,FamilyPosition:()=>oe,FibonacciHeap:()=>Ke,FibonacciHeapNode:()=>te,HashMap:()=>me,HashTable:()=>fe,HashTableNode:()=>j,Heap:()=>R,IterationType:()=>Y,LinkedListQueue:()=>be,MapEdge:()=>se,MapGraph:()=>Ie,MapVertex:()=>ie,Matrix2D:()=>Ue,MatrixNTI2D:()=>Pe,MaxHeap:()=>we,MaxPriorityQueue:()=>Me,MinHeap:()=>ke,MinPriorityQueue:()=>Re,Navigator:()=>qe,ObjectDeque:()=>Ee,PriorityQueue:()=>M,Queue:()=>C,RBTNColor:()=>Se,RedBlackTree:()=>ze,RedBlackTreeNode:()=>P,SegmentTree:()=>Fe,SegmentTreeNode:()=>H,SinglyLinkedList:()=>G,SinglyLinkedListNode:()=>O,SkipList:()=>ye,SkipListNode:()=>Q,Stack:()=>Te,THUNK_SYMBOL:()=>Be,TopologicalProperty:()=>Ge,TreeMap:()=>ge,TreeMultimap:()=>Ae,TreeMultimapNode:()=>U,TreeNode:()=>He,TreeSet:()=>Ne,Trie:()=>je,TrieNode:()=>Z,UndirectedEdge:()=>ne,UndirectedGraph:()=>Le,UndirectedVertex:()=>re,Vector2D:()=>q,arrayRemove:()=>k,getMSB:()=>ve,isThunk:()=>Ce,toThunk:()=>Oe,trampoline:()=>ee,trampolineAsync:()=>Ze,uuidV4:()=>xe});var j=class{key;value;next;constructor(e,t){this.key=e,this.value=t,this.next=null}},fe=class a{static DEFAULT_CAPACITY=16;static LOAD_FACTOR=.75;constructor(e=a.DEFAULT_CAPACITY,t){this._hashFn=t||this._defaultHashFn,this._capacity=Math.max(e,a.DEFAULT_CAPACITY),this._size=0,this._buckets=new Array(this._capacity).fill(null)}_capacity;get capacity(){return this._capacity}_size;get size(){return this._size}_buckets;get buckets(){return this._buckets}_hashFn;get hashFn(){return this._hashFn}set(e,t){let r=this._hash(e),n=new j(e,t);if(!this._buckets[r])this._buckets[r]=n;else{let i=this._buckets[r];for(;i;){if(i.key===e){i.value=t;return}if(!i.next)break;i=i.next}i.next=n}this._size++,this._size/this._capacity>=a.LOAD_FACTOR&&this._expand()}get(e){let t=this._hash(e),r=this._buckets[t];for(;r;){if(r.key===e)return r.value;r=r.next}}delete(e){let t=this._hash(e),r=this._buckets[t],n=null;for(;r;){if(r.key===e){n?n.next=r.next:this._buckets[t]=r.next,this._size--,r.next=null;return}n=r,r=r.next}}_defaultHashFn(e){return(typeof e=="string"?this._murmurStringHashFn(e):this._objectHash(e))%this._capacity}_multiplicativeStringHashFn(e){let t=String(e),r=0;for(let n=0;n<t.length;n++){let i=t.charCodeAt(n),s=.618033988749895,l=1<<30;r=(r*s+i)%l}return Math.abs(r)}_murmurStringHashFn(e){let t=String(e),n=0;for(let i=0;i<t.length;i++){let s=t.charCodeAt(i);n=(n^s)*1540483477,n=(n^n>>>15)*668265261,n=n^n>>>15}return Math.abs(n)}_hash(e){return this.hashFn(e)}_stringHash(e){let t=0;for(let r=0;r<e.length;r++)t=t*31+e.charCodeAt(r)&4294967295;return t}_objectHash(e){return this._stringHash(JSON.stringify(e))}_expand(){let e=this._capacity*2,t=new Array(e).fill(null);for(let r of this._buckets){let n=r;for(;n;){let i=this._hash(n.key),s=new j(n.key,n.value);if(!t[i])t[i]=s;else{let l=t[i];for(;l.next;)l=l.next;l.next=s}n=n.next}}this._buckets=t,this._capacity=e}};var ce=class extends Map{constructor(e){super(),e!==void 0&&(this._joint=e)}_joint="_";get joint(){return this._joint}has(e){return super.has(e.join(this._joint))}set(e,t){return super.set(e.join(this._joint),t)}get(e){return super.get(e.join(this._joint))}delete(e){return super.delete(e.join(this._joint))}};var pe=class extends Set{constructor(e){super(),e!==void 0&&(this._joint=e)}_joint="_";get joint(){return this._joint}has(e){return super.has(e.join(this._joint))}add(e){return super.add(e.join(this._joint))}delete(e){return super.delete(e.join(this._joint))}};var ge=class{};var Ne=class{};var me=class{constructor(e=16,t=.75,r){this._initialCapacity=e,this._loadFactor=t,this._capacityMultiplier=2,this._size=0,this._table=new Array(e),this._hashFn=r||(n=>{let i=String(n),s=0;for(let l=0;l<i.length;l++)s+=i.charCodeAt(l);return s%this.table.length})}_initialCapacity;get initialCapacity(){return this._initialCapacity}_loadFactor;get loadFactor(){return this._loadFactor}_capacityMultiplier;get capacityMultiplier(){return this._capacityMultiplier}_size;get size(){return this._size}_table;get table(){return this._table}_hashFn;get hashFn(){return this._hashFn}set(e,t){this.size/this.table.length>=this.loadFactor&&this.resizeTable(this.table.length*this.capacityMultiplier);let n=this._hash(e);this.table[n]||(this.table[n]=[]);for(let i=0;i<this.table[n].length;i++)if(this.table[n][i][0]===e){this.table[n][i][1]=t;return}this.table[n].push([e,t]),this._size++}get(e){let t=this._hash(e);if(this.table[t]){for(let[r,n]of this.table[t])if(r===e)return n}}delete(e){let t=this._hash(e);if(this.table[t]){for(let r=0;r<this.table[t].length;r++)if(this.table[t][r][0]===e){this.table[t].splice(r,1),this._size--,this.size/this.table.length<this.loadFactor/this.capacityMultiplier&&this.resizeTable(this.table.length/this.capacityMultiplier);return}}}*entries(){for(let e of this.table)if(e)for(let[t,r]of e)yield[t,r]}[Symbol.iterator](){return this.entries()}clear(){this._size=0,this._table=new Array(this.initialCapacity)}isEmpty(){return this.size===0}_hash(e){return this._hashFn(e)}resizeTable(e){let t=new Array(e);for(let r of this._table)if(r)for(let[n,i]of r){let s=this._hash(n)%e;t[s]||(t[s]=[]),t[s].push([n,i])}this._table=t}};var O=class{value;next;constructor(e){this.value=e,this.next=null}},G=class a{constructor(){this._head=null,this._tail=null,this._length=0}_head;get head(){return this._head}_tail;get tail(){return this._tail}_length;get length(){return this._length}static fromArray(e){let t=new a;for(let r of e)t.push(r);return t}push(e){let t=new O(e);this.head?(this.tail.next=t,this._tail=t):(this._head=t,this._tail=t),this._length++}addLast(e){this.push(e)}pop(){if(!this.head)return;if(this.head===this.tail){let r=this.head.value;return this._head=null,this._tail=null,this._length--,r}let e=this.head;for(;e.next!==this.tail;)e=e.next;let t=this.tail.value;return e.next=null,this._tail=e,this._length--,t}popLast(){return this.pop()}shift(){if(!this.head)return;let e=this.head;return this._head=this.head.next,this._length--,e.value}popFirst(){return this.shift()}unshift(e){let t=new O(e);this.head?(t.next=this.head,this._head=t):(this._head=t,this._tail=t),this._length++}addFirst(e){this.unshift(e)}getAt(e){if(e<0||e>=this.length)return;let t=this.head;for(let r=0;r<e;r++)t=t.next;return t.value}getNodeAt(e){let t=this.head;for(let r=0;r<e;r++)t=t.next;return t}deleteAt(e){if(e<0||e>=this.length)return;if(e===0)return this.shift();if(e===this.length-1)return this.pop();let t=this.getNodeAt(e-1),r=t.next;return t.next=r.next,this._length--,r.value}delete(e){if(!e)return!1;let t;e instanceof O?t=e.value:t=e;let r=this.head,n=null;for(;r;){if(r.value===t)return n===null?(this._head=r.next,r===this.tail&&(this._tail=null)):(n.next=r.next,r===this.tail&&(this._tail=n)),this._length--,!0;n=r,r=r.next}return!1}insertAt(e,t){if(e<0||e>this.length)return!1;if(e===0)return this.unshift(t),!0;if(e===this.length)return this.push(t),!0;let r=new O(t),n=this.getNodeAt(e-1);return r.next=n.next,n.next=r,this._length++,!0}isEmpty(){return this.length===0}clear(){this._head=null,this._tail=null,this._length=0}toArray(){let e=[],t=this.head;for(;t;)e.push(t.value),t=t.next;return e}reverse(){if(!this.head||this.head===this.tail)return;let e=null,t=this.head,r=null;for(;t;)r=t.next,t.next=e,e=t,t=r;[this._head,this._tail]=[this.tail,this.head]}find(e){let t=this.head;for(;t;){if(e(t.value))return t.value;t=t.next}return null}indexOf(e){let t=0,r=this.head;for(;r;){if(r.value===e)return t;t++,r=r.next}return-1}getNode(e){let t=this.head;for(;t;){if(t.value===e)return t;t=t.next}return null}insertBefore(e,t){if(!this.head)return!1;let r;if(e instanceof O?r=e.value:r=e,this.head.value===r)return this.unshift(t),!0;let n=this.head;for(;n.next;){if(n.next.value===r){let i=new O(t);return i.next=n.next,n.next=i,this._length++,!0}n=n.next}return!1}insertAfter(e,t){let r;if(e instanceof O?r=e:r=this.getNode(e),r){let n=new O(t);return n.next=r.next,r.next=n,r===this.tail&&(this._tail=n),this._length++,!0}return!1}countOccurrences(e){let t=0,r=this.head;for(;r;)r.value===e&&t++,r=r.next;return t}forEach(e){let t=this.head,r=0;for(;t;)e(t.value,r),t=t.next,r++}map(e){let t=new a,r=this.head;for(;r;)t.push(e(r.value)),r=r.next;return t}filter(e){let t=new a,r=this.head;for(;r;)e(r.value)&&t.push(r.value),r=r.next;return t}reduce(e,t){let r=t,n=this.head;for(;n;)r=e(r,n.value),n=n.next;return r}*[Symbol.iterator](){let e=this.head;for(;e;)yield e.value,e=e.next}};var v=class{value;next;prev;constructor(e){this.value=e,this.next=null,this.prev=null}},W=class a{constructor(){this._head=null,this._tail=null,this._length=0}_head;get head(){return this._head}_tail;get tail(){return this._tail}_length;get length(){return this._length}get size(){return this.length}static fromArray(e){let t=new a;for(let r of e)t.push(r);return t}push(e){let t=new v(e);this.head?(t.prev=this.tail,this.tail.next=t,this._tail=t):(this._head=t,this._tail=t),this._length++}addLast(e){this.push(e)}pop(){if(!this.tail)return;let e=this.tail;return this.head===this.tail?(this._head=null,this._tail=null):(this._tail=e.prev,this.tail.next=null),this._length--,e.value}popLast(){return this.pop()}shift(){if(!this.head)return;let e=this.head;return this.head===this.tail?(this._head=null,this._tail=null):(this._head=e.next,this.head.prev=null),this._length--,e.value}popFirst(){return this.shift()}unshift(e){let t=new v(e);this.head?(t.next=this.head,this.head.prev=t,this._head=t):(this._head=t,this._tail=t),this._length++}addFirst(e){this.unshift(e)}getFirst(){return this.head?.value}getLast(){return this.tail?.value}getAt(e){if(e<0||e>=this.length)return;let t=this.head;for(let r=0;r<e;r++)t=t.next;return t.value}getNodeAt(e){if(e<0||e>=this.length)return null;let t=this.head;for(let r=0;r<e;r++)t=t.next;return t}getNode(e){let t=this.head;for(;t;){if(t.value===e)return t;t=t.next}return null}insertAt(e,t){if(e<0||e>this.length)return!1;if(e===0)return this.unshift(t),!0;if(e===this.length)return this.push(t),!0;let r=new v(t),n=this.getNodeAt(e-1),i=n.next;return r.prev=n,r.next=i,n.next=r,i.prev=r,this._length++,!0}insertBefore(e,t){let r;if(e instanceof v?r=e:r=this.getNode(e),r){let n=new v(t);return n.prev=r.prev,r.prev&&(r.prev.next=n),n.next=r,r.prev=n,r===this.head&&(this._head=n),this._length++,!0}return!1}deleteAt(e){if(e<0||e>=this.length)return;if(e===0)return this.shift();if(e===this.length-1)return this.pop();let t=this.getNodeAt(e),r=t.prev,n=t.next;return r.next=n,n.prev=r,this._length--,t.value}delete(e){let t;if(e instanceof v?t=e:t=this.getNode(e),t){if(t===this.head)this.shift();else if(t===this.tail)this.pop();else{let r=t.prev,n=t.next;r.next=n,n.prev=r,this._length--}return!0}return!1}toArray(){let e=[],t=this.head;for(;t;)e.push(t.value),t=t.next;return e}isEmpty(){return this.length===0}clear(){this._head=null,this._tail=null,this._length=0}find(e){let t=this.head;for(;t;){if(e(t.value))return t.value;t=t.next}return null}indexOf(e){let t=0,r=this.head;for(;r;){if(r.value===e)return t;t++,r=r.next}return-1}findBackward(e){let t=this.tail;for(;t;){if(e(t.value))return t.value;t=t.prev}return null}toArrayBackward(){let e=[],t=this.tail;for(;t;)e.push(t.value),t=t.prev;return e}reverse(){let e=this.head;for([this._head,this._tail]=[this.tail,this.head];e;){let t=e.next;[e.prev,e.next]=[e.next,e.prev],e=t}}forEach(e){let t=this.head,r=0;for(;t;)e(t.value,r),t=t.next,r++}map(e){let t=new a,r=this.head;for(;r;)t.push(e(r.value)),r=r.next;return t}filter(e){let t=new a,r=this.head;for(;r;)e(r.value)&&t.push(r.value),r=r.next;return t}reduce(e,t){let r=t,n=this.head;for(;n;)r=e(r,n.value),n=n.next;return r}insertAfter(e,t){let r;if(e instanceof v?r=e:r=this.getNode(e),r){let n=new v(t);return n.next=r.next,r.next&&(r.next.prev=n),n.prev=r,r.next=n,r===this.tail&&(this._tail=n),this._length++,!0}return!1}*[Symbol.iterator](){let e=this.head;for(;e;)yield e.value,e=e.next}};var Q=class{key;value;forward;constructor(e,t,r){this.key=e,this.value=t,this.forward=new Array(r)}},ye=class{constructor(e=16,t=.5){this._head=new Q(null,null,e),this._level=0,this._maxLevel=e,this._probability=t}_head;get head(){return this._head}_level;get level(){return this._level}_maxLevel;get maxLevel(){return this._maxLevel}_probability;get probability(){return this._probability}add(e,t){let r=new Q(e,t,this._randomLevel()),n=new Array(this.maxLevel).fill(this.head),i=this.head;for(let s=this.level-1;s>=0;s--){for(;i.forward[s]&&i.forward[s].key<e;)i=i.forward[s];n[s]=i}for(let s=0;s<r.forward.length;s++)r.forward[s]=n[s].forward[s],n[s].forward[s]=r;r.forward[0]!==null&&(this._level=Math.max(this.level,r.forward.length))}get(e){let t=this.head;for(let r=this.level-1;r>=0;r--)for(;t.forward[r]&&t.forward[r].key<e;)t=t.forward[r];if(t=t.forward[0],t&&t.key===e)return t.value}has(e){return this.get(e)!==void 0}delete(e){let t=new Array(this.maxLevel).fill(this.head),r=this.head;for(let n=this.level-1;n>=0;n--){for(;r.forward[n]&&r.forward[n].key<e;)r=r.forward[n];t[n]=r}if(r=r.forward[0],r&&r.key===e){for(let n=0;n<this.level&&t[n].forward[n]===r;n++)t[n].forward[n]=r.forward[n];for(;this.level>0&&this.head.forward[this.level-1]===null;)this._level--;return!0}return!1}getFirst(){let e=this.head.forward[0];return e?e.value:void 0}getLast(){let e=this.head;for(let t=this.level-1;t>=0;t--)for(;e.forward[t];)e=e.forward[t];return e.value}higher(e){let t=this.head;for(let n=this.level-1;n>=0;n--)for(;t.forward[n]&&t.forward[n].key<=e;)t=t.forward[n];let r=t.forward[0];return r?r.value:void 0}lower(e){let t=this.head,r=null;for(let n=this.level-1;n>=0;n--){for(;t.forward[n]&&t.forward[n].key<e;)t=t.forward[n];t.key<e&&(r=t)}return r?r.value:void 0}_randomLevel(){let e=1;for(;Math.random()<this.probability&&e<this.maxLevel;)e++;return e}};var Te=class a{constructor(e){this._elements=Array.isArray(e)?e:[]}_elements;get elements(){return this._elements}static fromArray(e){return new a(e)}isEmpty(){return this.elements.length===0}size(){return this.elements.length}peek(){return this.isEmpty()?null:this.elements[this.elements.length-1]}push(e){return this.elements.push(e),this}pop(){return this.isEmpty()?null:this.elements.pop()||null}toArray(){return this.elements.slice()}clear(){this._elements=[]}clone(){return new a(this.elements.slice())}};var be=class extends G{enqueue(e){this.push(e)}dequeue(){return this.shift()}getFirst(){return this.head?.value}peek(){return this.getFirst()}},C=class a{constructor(e){this._nodes=e||[],this._offset=0}_nodes;get nodes(){return this._nodes}_offset;get offset(){return this._offset}get size(){return this.nodes.length-this.offset}static fromArray(e){return new a(e)}push(e){return this.nodes.push(e),this}shift(){if(this.size===0)return;let e=this.getFirst();return this._offset+=1,this.offset*2<this.nodes.length||(this._nodes=this.nodes.slice(this.offset),this._offset=0),e}getFirst(){return this.size>0?this.nodes[this.offset]:void 0}peek(){return this.getFirst()}getLast(){return this.size>0?this.nodes[this.nodes.length-1]:void 0}peekLast(){return this.getLast()}enqueue(e){this.push(e)}dequeue(){return this.shift()}getAt(e){return this.nodes[e]}isEmpty(){return this.size===0}toArray(){return this.nodes.slice(this.offset)}clear(){this._nodes=[],this._offset=0}clone(){return new a(this.nodes.slice(this.offset))}*[Symbol.iterator](){for(let e of this.nodes)yield e}};var _e=class extends W{},Ee=class{constructor(e){e!==void 0&&(this._capacity=e)}_nodes={};get nodes(){return this._nodes}_capacity=Number.MAX_SAFE_INTEGER;get capacity(){return this._capacity}_first=-1;get first(){return this._first}_last=-1;get last(){return this._last}_size=0;get size(){return this._size}addFirst(e){if(this.size===0){let t=Math.floor(this.capacity/2);this._first=t,this._last=t}else this._first--;this.nodes[this.first]=e,this._size++}addLast(e){if(this.size===0){let t=Math.floor(this.capacity/2);this._first=t,this._last=t}else this._last++;this.nodes[this.last]=e,this._size++}popFirst(){if(!this.size)return;let e=this.getFirst();return delete this.nodes[this.first],this._first++,this._size--,e}getFirst(){if(this.size)return this.nodes[this.first]}popLast(){if(!this.size)return;let e=this.getLast();return delete this.nodes[this.last],this._last--,this._size--,e}getLast(){if(this.size)return this.nodes[this.last]}get(e){return this.nodes[this.first+e]||null}isEmpty(){return this.size<=0}},Ve=class{_nodes=[];get nodes(){return this._nodes}get size(){return this.nodes.length}addLast(e){return this.nodes.push(e)}popLast(){return this.nodes.pop()??null}popFirst(){return this.nodes.shift()??null}addFirst(e){return this.nodes.unshift(e)}getFirst(){return this.nodes[0]??null}getLast(){return this.nodes[this.nodes.length-1]??null}get(e){return this.nodes[e]??null}set(e,t){return this.nodes[e]=t}insert(e,t){return this.nodes.splice(e,0,t)}delete(e){return this.nodes.splice(e,1)}isEmpty(){return this.nodes.length===0}};var xe=function(){return"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx".replace(/[x]/g,function(a){let e=Math.random()*16|0;return(a=="x"?e:e&3|8).toString(16)})},k=function(a,e){let t=-1,r=a?a.length:0,n=[];for(;++t<r;){let i=a[t];e(i,t,a)&&(n.push(i),Array.prototype.splice.call(a,t--,1),r--)}return n},Be=Symbol("thunk"),Ce=a=>typeof a=="function"&&a.__THUNK__===Be,Oe=a=>{let e=()=>a();return e.__THUNK__=Be,e},ee=a=>Object.assign((...t)=>{let r=a(...t);for(;Ce(r)&&typeof r=="function";)r=r();return r},{cont:(...t)=>Oe(()=>a(...t))}),Ze=a=>Object.assign(async(...t)=>{let r=await a(...t);for(;Ce(r)&&typeof r=="function";)r=await r();return r},{cont:(...t)=>Oe(()=>a(...t))}),ve=a=>a<=0?0:1<<31-Math.clz32(a);var R=class a{constructor(e){this._comparator=e.comparator,e.nodes&&e.nodes.length>0&&(this._nodes=e.nodes,this.fix())}_nodes=[];get nodes(){return this._nodes}_comparator;get comparator(){return this._comparator}get size(){return this.nodes.length}get leaf(){return this.nodes[this.size-1]??void 0}static heapify(e){return new a(e)}add(e){return this.push(e)}push(e){return this.nodes.push(e),this.bubbleUp(this.nodes.length-1),this}poll(){if(this.nodes.length===0)return;if(this.nodes.length===1)return this.nodes.pop();let e=this.nodes[0];return this.nodes[0]=this.nodes.pop(),this.sinkDown(0),e}pop(){return this.poll()}peek(){if(this.nodes.length!==0)return this.nodes[0]}isEmpty(){return this.size===0}clear(){this._nodes=[]}refill(e){this._nodes=e,this.fix()}has(e){return this.nodes.includes(e)}dfs(e){let t=[],r=n=>{n<this.size&&(e==="in"?(r(2*n+1),t.push(this.nodes[n]),r(2*n+2)):e==="pre"?(t.push(this.nodes[n]),r(2*n+1),r(2*n+2)):e==="post"&&(r(2*n+1),r(2*n+2),t.push(this.nodes[n])))};return r(0),t}toArray(){return[...this.nodes]}getNodes(){return this.nodes}clone(){let e=new a({comparator:this.comparator});return e._nodes=[...this.nodes],e}sort(){let e=[],t=this.clone();for(;t.size!==0;){let r=t.poll();r&&e.push(r)}return e}bubbleUp(e){let t=this.nodes[e];for(;e>0;){let r=Math.floor((e-1)/2),n=this.nodes[r];if(this.comparator(t,n)<0)this.nodes[e]=n,this.nodes[r]=t,e=r;else break}}sinkDown(e){let t=2*e+1,r=2*e+2,n=this.nodes.length,i=e;if(t<n&&this.comparator(this.nodes[t],this.nodes[i])<0&&(i=t),r<n&&this.comparator(this.nodes[r],this.nodes[i])<0&&(i=r),i!==e){let s=this.nodes[e];this.nodes[e]=this.nodes[i],this.nodes[i]=s,this.sinkDown(i)}}fix(){for(let e=Math.floor(this.size/2);e>=0;e--)this.sinkDown(e)}},te=class{element;degree;left;right;child;parent;marked;constructor(e,t=0){this.element=e,this.degree=t,this.marked=!1}},Ke=class{constructor(e){if(this.clear(),this._comparator=e||this.defaultComparator,typeof this.comparator!="function")throw new Error("FibonacciHeap constructor: given comparator should be a function.")}_root;get root(){return this._root}_size=0;get size(){return this._size}_min;get min(){return this._min}_comparator;get comparator(){return this._comparator}clear(){this._root=void 0,this._min=void 0,this._size=0}add(e){return this.push(e)}push(e){let t=this.createNode(e);return t.left=t,t.right=t,this.mergeWithRoot(t),(!this.min||this.comparator(t.element,this.min.element)<=0)&&(this._min=t),this._size++,this}peek(){return this.min?this.min.element:void 0}consumeLinkedList(e){let t=[];if(!e)return t;let r=e,n=!1;for(;!(r===e&&n);)r===e&&(n=!0),r&&(t.push(r),r=r.right);return t}mergeWithChild(e,t){e.child?(t.right=e.child.right,t.left=e.child,e.child.right.left=t,e.child.right=t):e.child=t}poll(){return this.pop()}pop(){if(this.size===0)return;let e=this.min;if(e.child){let t=this.consumeLinkedList(e.child);for(let r of t)this.mergeWithRoot(r),r.parent=void 0}return this.removeFromRoot(e),e===e.right?(this._min=void 0,this._root=void 0):(this._min=e.right,this.consolidate()),this._size--,e.element}merge(e){if(e.size!==0){if(this.root&&e.root){let t=this.root,r=e.root,n=t.right,i=r.left;t.right=r,r.left=t,n.left=i,i.right=n}(!this.min||e.min&&this.comparator(e.min.element,this.min.element)<0)&&(this._min=e.min),this._size+=e.size,e.clear()}}defaultComparator(e,t){return e<t?-1:e>t?1:0}createNode(e){return new te(e)}mergeWithRoot(e){this.root?(e.right=this.root.right,e.left=this.root,this.root.right.left=e,this.root.right=e):this._root=e}removeFromRoot(e){this.root===e&&(this._root=e.right),e.left&&(e.left.right=e.right),e.right&&(e.right.left=e.left)}link(e,t){this.removeFromRoot(e),e.left=e,e.right=e,this.mergeWithChild(t,e),t.degree++,e.parent=t}consolidate(){let e=new Array(this.size),t=this.consumeLinkedList(this.root),r,n,i,s;for(let l of t){for(r=l,i=r.degree;e[i];)n=e[i],this.comparator(r.element,n.element)>0&&(s=r,r=n,n=s),this.link(n,r),e[i]=void 0,i++;e[i]=r}for(let l=0;l<this.size;l++)e[l]&&this.comparator(e[l].element,this.min.element)<=0&&(this._min=e[l])}};var we=class extends R{constructor(e={comparator:(t,r)=>{if(typeof t=="number"&&typeof r=="number")return r-t;throw new Error("The a, b params of compare function must be number")}}){super(e)}};var ke=class extends R{constructor(e={comparator:(t,r)=>{if(typeof t=="number"&&typeof r=="number")return t-r;throw new Error("The a, b params of compare function must be number")}}){super(e)}};var M=class extends R{constructor(e){super(e)}};var Re=class extends M{constructor(e={comparator:(t,r)=>{if(typeof t=="number"&&typeof r=="number")return t-r;throw new Error("The a, b params of compare function must be number")}}){super(e)}};var Me=class extends M{constructor(e={comparator:(t,r)=>{if(typeof t=="number"&&typeof r=="number")return r-t;throw new Error("The a, b params of compare function must be number")}}){super(e)}};var x=class{key;value;constructor(e,t){this.key=e,this.value=t}},L=class{value;weight;constructor(e,t){this.weight=e!==void 0?e:1,this.value=t,this._hashCode=xe()}_hashCode;get hashCode(){return this._hashCode}},I=class{_vertices=new Map;get vertices(){return this._vertices}getVertex(e){return this._vertices.get(e)||null}hasVertex(e){return this._vertices.has(this._getVertexKey(e))}addVertex(e,t){if(e instanceof x)return this._addVertexOnly(e);{let r=this.createVertex(e,t);return this._addVertexOnly(r)}}deleteVertex(e){let t=this._getVertexKey(e);return this._vertices.delete(t)}removeManyVertices(e){let t=[];for(let r of e)t.push(this.deleteVertex(r));return t.length>0}hasEdge(e,t){return!!this.getEdge(e,t)}addEdge(e,t,r,n){if(e instanceof L)return this._addEdgeOnly(e);if(t instanceof x||typeof t=="string"||typeof t=="number"){if(!(this.hasVertex(e)&&this.hasVertex(t)))return!1;e instanceof x&&(e=e.key),t instanceof x&&(t=t.key);let i=this.createEdge(e,t,r,n);return this._addEdgeOnly(i)}else throw new Error("dest must be a Vertex or vertex key while srcOrEdge is an Edge")}setEdgeWeight(e,t,r){let n=this.getEdge(e,t);return n?(n.weight=r,!0):!1}getAllPathsBetween(e,t,r=1e3){let n=[],i=this._getVertex(e),s=this._getVertex(t);if(!(i&&s))return[];let l=[];for(l.push({vertex:i,path:[i]});l.length>0;){let{vertex:o,path:u}=l.pop();if(o===s&&(n.push(u),n.length>=r))return n;let f=this.getNeighbors(o);for(let g of f)if(!u.includes(g)){let m=[...u,g];l.push({vertex:g,path:m})}}return n}getPathSumWeight(e){let t=0;for(let r=0;r<e.length;r++)t+=this.getEdge(e[r],e[r+1])?.weight||0;return t}getMinCostBetween(e,t,r){if(r===void 0&&(r=!1),r){let n=this.getAllPathsBetween(e,t),i=1/0;for(let s of n)i=Math.min(this.getPathSumWeight(s),i);return i}else{let n=this._getVertex(t),i=this._getVertex(e);if(!(i&&n))return null;let s=new Map,l=new C([i]);s.set(i,!0);let o=0;for(;l.size>0;){for(let u=0;u<l.size;u++){let f=l.shift();if(f===n)return o;if(f!==void 0){let g=this.getNeighbors(f);for(let m of g)s.has(m)||(s.set(m,!0),l.push(m))}}o++}return null}}getMinPathBetween(e,t,r,n=!1){if(r===void 0&&(r=!1),r)if(n){let i=this.getAllPathsBetween(e,t,1e4),s=1/0,l=-1,o=0;for(let u of i){let f=this.getPathSumWeight(u);f<s&&(s=f,l=o),o++}return i[l]||null}else return this.dijkstra(e,t,!0,!0)?.minPath??[];else{let i=[],s=this._getVertex(e),l=this._getVertex(t);if(!(s&&l))return[];let o=(u,f,g,m)=>{if(g.add(u),u===f){i=[s,...m];return}let E=this.getNeighbors(u);for(let b of E)g.has(b)||(m.push(b),o(b,f,g,m),m.pop());g.delete(u)};return o(s,l,new Set,[]),i}}dijkstraWithoutHeap(e,t,r,n){r===void 0&&(r=!1),n===void 0&&(n=!1),t===void 0&&(t=null);let i=1/0,s=null,l=[],o=[],u=this._vertices,f=new Map,g=new Set,m=new Map,E=this._getVertex(e),b=t?this._getVertex(t):null;if(!E)return null;for(let h of u){let d=h[1];d instanceof x&&f.set(d,1/0)}f.set(E,0),m.set(E,null);let y=()=>{let h=1/0,d=null;for(let[c,N]of f)g.has(c)||N<h&&(h=N,d=c);return d},T=h=>{for(let d of u){let c=d[1];if(c instanceof x){let N=[c],p=m.get(c);for(;p;)N.push(p),p=m.get(p);let _=N.reverse();d[1]===h&&(l=_),o.push(_)}}};for(let h=1;h<u.size;h++){let d=y();if(d){if(g.add(d),b&&b===d)return r&&(i=f.get(b)||1/0),n&&T(b),{distMap:f,preMap:m,seen:g,paths:o,minDist:i,minPath:l};let c=this.getNeighbors(d);for(let N of c)if(!g.has(N)){let p=this.getEdge(d,N);if(p){let _=f.get(d),V=f.get(N);_!==void 0&&V!==void 0&&p.weight+_<V&&(f.set(N,p.weight+_),m.set(N,d))}}}}return r&&f.forEach((h,d)=>{d!==E&&h<i&&(i=h,n&&(s=d))}),n&&T(s),{distMap:f,preMap:m,seen:g,paths:o,minDist:i,minPath:l}}dijkstra(e,t,r,n){r===void 0&&(r=!1),n===void 0&&(n=!1),t===void 0&&(t=null);let i=1/0,s=null,l=[],o=[],u=this._vertices,f=new Map,g=new Set,m=new Map,E=this._getVertex(e),b=t?this._getVertex(t):null;if(!E)return null;for(let h of u){let d=h[1];d instanceof x&&f.set(d,1/0)}let y=new M({comparator:(h,d)=>h.key-d.key});y.add({key:0,value:E}),f.set(E,0),m.set(E,null);let T=h=>{for(let d of u){let c=d[1];if(c instanceof x){let N=[c],p=m.get(c);for(;p;)N.push(p),p=m.get(p);let _=N.reverse();d[1]===h&&(l=_),o.push(_)}}};for(;y.size>0;){let h=y.poll(),d=h?.key,c=h?.value;if(d!==void 0&&c){if(g.add(c),b&&b===c)return r&&(i=f.get(b)||1/0),n&&T(b),{distMap:f,preMap:m,seen:g,paths:o,minDist:i,minPath:l};let N=this.getNeighbors(c);for(let p of N)if(!g.has(p)){let _=this.getEdge(c,p)?.weight;if(typeof _=="number"){let V=f.get(p);V&&d+_<V&&(y.add({key:d+_,value:p}),m.set(p,c),f.set(p,d+_))}}}}return r&&f.forEach((h,d)=>{d!==E&&h<i&&(i=h,n&&(s=d))}),n&&T(s),{distMap:f,preMap:m,seen:g,paths:o,minDist:i,minPath:l}}bellmanFord(e,t,r,n){r===void 0&&(r=!1),n===void 0&&(n=!1);let i=this._getVertex(e),s=[],l=new Map,o=new Map,u=1/0,f=[],g;if(t&&(g=!1),!i)return{hasNegativeCycle:g,distMap:l,preMap:o,paths:s,min:u,minPath:f};let m=this._vertices,E=m.size,b=this.edgeSet(),y=b.length;this._vertices.forEach(h=>{l.set(h,1/0)}),l.set(i,0);for(let h=1;h<E;++h)for(let d=0;d<y;++d){let c=this.getEndsOfEdge(b[d]);if(c){let[N,p]=c,_=b[d].weight,V=l.get(N),K=l.get(p);V!==void 0&&K!==void 0&&l.get(N)!==1/0&&V+_<K&&(l.set(p,V+_),n&&o.set(p,N))}}let T=null;if(r&&l.forEach((h,d)=>{d!==i&&h<u&&(u=h,n&&(T=d))}),n)for(let h of m){let d=h[1];if(d instanceof x){let c=[d],N=o.get(d);for(;N!==void 0;)c.push(N),N=o.get(N);let p=c.reverse();h[1]===T&&(f=p),s.push(p)}}for(let h=0;h<y;++h){let d=this.getEndsOfEdge(b[h]);if(d){let[c]=d,N=b[h].weight,p=l.get(c);p&&p!==1/0&&p+N<p&&(g=!0)}}return{hasNegativeCycle:g,distMap:l,preMap:o,paths:s,min:u,minPath:f}}floydWarshall(){let e=[...this._vertices],t=e.length,r=[],n=[];for(let i=0;i<t;i++){r[i]=[],n[i]=[];for(let s=0;s<t;s++)n[i][s]=null}for(let i=0;i<t;i++)for(let s=0;s<t;s++)r[i][s]=this.getEdge(e[i][1],e[s][1])?.weight||1/0;for(let i=0;i<t;i++)for(let s=0;s<t;s++)for(let l=0;l<t;l++)r[s][l]>r[s][i]+r[i][l]&&(r[s][l]=r[s][i]+r[i][l],n[s][l]=e[i][1]);return{costs:r,predecessor:n}}tarjan(e=!1,t=!1,r=!0,n=!1){e===void 0&&(e=!1),t===void 0&&(t=!1),r===void 0&&(r=!1),n===void 0&&(n=!1);let s=new Map,l=new Map,o=this._vertices;o.forEach(h=>{s.set(h,-1),l.set(h,1/0)});let[u]=o.values(),f=[],g=[],m=0,E=(h,d)=>{m++,s.set(h,m),l.set(h,m);let c=this.getNeighbors(h),N=0;for(let p of c)if(p!==d){s.get(p)===-1&&(N++,E(p,h));let _=l.get(p),V=l.get(h);V!==void 0&&_!==void 0&&l.set(h,Math.min(V,_));let K=s.get(h);if(_!==void 0&&K!==void 0&&(e&&(h===u&&N>=2||h!==u&&_>=K)&&f.push(h),t&&_>K)){let z=this.getEdge(h,p);z&&g.push(z)}}};E(u,null);let b=new Map,y=()=>{let h=new Map;return l.forEach((d,c)=>{h.has(d)?h.get(d)?.push(c):h.set(d,[c])}),h};r&&(b=y());let T=new Map;if(n){let h=new Map;h.size<1&&(h=y()),h.forEach((d,c)=>{d.length>1&&T.set(c,d)})}return{dfnMap:s,lowMap:l,bridges:g,cutVertexes:f,SCCs:b,cycles:T}}getDFNMap(){return this.tarjan(!1,!1,!1,!1).dfnMap}getLowMap(){return this.tarjan(!1,!1,!1,!1).lowMap}getCycles(){return this.tarjan(!1,!1,!1,!0).cycles}getCutVertexes(){return this.tarjan(!0,!1,!1,!1).cutVertexes}getSCCs(){return this.tarjan(!1,!1,!0,!1).SCCs}getBridges(){return this.tarjan(!1,!0,!1,!1).bridges}_addVertexOnly(e){return this.hasVertex(e)?!1:(this._vertices.set(e.key,e),!0)}_getVertex(e){let t=this._getVertexKey(e);return this._vertices.get(t)||null}_getVertexKey(e){return e instanceof x?e.key:e}};var S=class extends x{constructor(e,t){super(e,t)}},A=class extends L{src;dest;constructor(e,t,r,n){super(r,n),this.src=e,this.dest=t}},X=class extends I{constructor(){super()}_outEdgeMap=new Map;get outEdgeMap(){return this._outEdgeMap}_inEdgeMap=new Map;get inEdgeMap(){return this._inEdgeMap}createVertex(e,t){return new S(e,t??e)}createEdge(e,t,r,n){return new A(e,t,r??1,n)}getEdge(e,t){let r=[];if(e!==null&&t!==null){let n=this._getVertex(e),i=this._getVertex(t);if(n&&i){let s=this._outEdgeMap.get(n);s&&(r=s.filter(l=>l.dest===i.key))}}return r[0]||null}deleteEdgeSrcToDest(e,t){let r=this._getVertex(e),n=this._getVertex(t),i=null;if(!r||!n)return null;let s=this._outEdgeMap.get(r);s&&k(s,o=>o.dest===n.key);let l=this._inEdgeMap.get(n);return l&&(i=k(l,o=>o.src===r.key)[0]||null),i}deleteEdge(e){let t=null,r=this._getVertex(e.src),n=this._getVertex(e.dest);if(r&&n){let i=this._outEdgeMap.get(r);i&&i.length>0&&k(i,l=>l.src===r.key);let s=this._inEdgeMap.get(n);s&&s.length>0&&(t=k(s,l=>l.dest===n.key)[0])}return t}deleteEdgesBetween(e,t){let r=[];if(e&&t){let n=this.deleteEdgeSrcToDest(e,t),i=this.deleteEdgeSrcToDest(t,e);n&&r.push(n),i&&r.push(i)}return r}incomingEdgesOf(e){let t=this._getVertex(e);return t?this.inEdgeMap.get(t)||[]:[]}outgoingEdgesOf(e){let t=this._getVertex(e);return t?this._outEdgeMap.get(t)||[]:[]}degreeOf(e){return this.outDegreeOf(e)+this.inDegreeOf(e)}inDegreeOf(e){return this.incomingEdgesOf(e).length}outDegreeOf(e){return this.outgoingEdgesOf(e).length}edgesOf(e){return[...this.outgoingEdgesOf(e),...this.incomingEdgesOf(e)]}getEdgeSrc(e){return this._getVertex(e.src)}getEdgeDest(e){return this._getVertex(e.dest)}getDestinations(e){if(e===null)return[];let t=[],r=this.outgoingEdgesOf(e);for(let n of r){let i=this.getEdgeDest(n);i&&t.push(i)}return t}topologicalSort(e){e=e??"key";let t=new Map;for(let s of this.vertices)t.set(s[1],0);let r=[],n=!1,i=s=>{t.set(s,1);let l=this.getDestinations(s);for(let o of l){let u=t.get(o);u===0?i(o):u===1&&(n=!0)}t.set(s,2),r.push(s)};for(let s of this.vertices)t.get(s[1])===0&&i(s[1]);return n?null:(e==="key"&&(r=r.map(s=>s instanceof S?s.key:s)),r.reverse())}edgeSet(){let e=[];return this._outEdgeMap.forEach(t=>{e=[...e,...t]}),e}getNeighbors(e){let t=[],r=this._getVertex(e);if(r){let n=this.outgoingEdgesOf(r);for(let i of n){let s=this._getVertex(i.dest);s&&t.push(s)}}return t}getEndsOfEdge(e){if(!this.hasEdge(e.src,e.dest))return null;let t=this._getVertex(e.src),r=this._getVertex(e.dest);return t&&r?[t,r]:null}_addEdgeOnly(e){if(!(this.hasVertex(e.src)&&this.hasVertex(e.dest)))return!1;let t=this._getVertex(e.src),r=this._getVertex(e.dest);if(t&&r){let n=this._outEdgeMap.get(t);n?n.push(e):this._outEdgeMap.set(t,[e]);let i=this._inEdgeMap.get(r);return i?i.push(e):this._inEdgeMap.set(r,[e]),!0}else return!1}};var re=class extends x{constructor(e,t){super(e,t)}},ne=class extends L{vertices;constructor(e,t,r,n){super(r,n),this.vertices=[e,t]}},Le=class extends I{constructor(){super(),this._edges=new Map}_edges;get edges(){return this._edges}createVertex(e,t){return new re(e,t??e)}createEdge(e,t,r,n){return new ne(e,t,r??1,n)}getEdge(e,t){let r=[];if(e!==null&&t!==null){let n=this._getVertex(e),i=this._getVertex(t);n&&i&&(r=this._edges.get(n)?.filter(s=>s.vertices.includes(i.key)))}return r&&r[0]||null}deleteEdgeBetween(e,t){let r=this._getVertex(e),n=this._getVertex(t);if(!r||!n)return null;let i=this._edges.get(r),s=null;i&&(s=k(i,o=>o.vertices.includes(n.key))[0]||null);let l=this._edges.get(n);return l&&k(l,o=>o.vertices.includes(r.key)),s}deleteEdge(e){return this.deleteEdgeBetween(e.vertices[0],e.vertices[1])}degreeOf(e){let t=this._getVertex(e);return t&&this._edges.get(t)?.length||0}edgesOf(e){let t=this._getVertex(e);return t?this._edges.get(t)||[]:[]}edgeSet(){let e=new Set;return this._edges.forEach(t=>{t.forEach(r=>{e.add(r)})}),[...e]}getNeighbors(e){let t=[],r=this._getVertex(e);if(r){let n=this.edgesOf(r);for(let i of n){let s=this._getVertex(i.vertices.filter(l=>l!==r.key)[0]);s&&t.push(s)}}return t}getEndsOfEdge(e){if(!this.hasEdge(e.vertices[0],e.vertices[1]))return null;let t=this._getVertex(e.vertices[0]),r=this._getVertex(e.vertices[1]);return t&&r?[t,r]:null}_addEdgeOnly(e){for(let t of e.vertices){let r=this._getVertex(t);if(r===null)return!1;if(r){let n=this._edges.get(r);n?n.push(e):this._edges.set(r,[e])}}return!0}};var ie=class extends S{lat;long;constructor(e,t,r,n){super(e,t),this.lat=r,this.long=n}},se=class extends A{constructor(e,t,r,n){super(e,t,r,n)}},Ie=class extends X{constructor(e,t){super(),this._origin=e,this._bottomRight=t}_origin=[0,0];get origin(){return this._origin}_bottomRight;get bottomRight(){return this._bottomRight}createVertex(e,t,r=this.origin[0],n=this.origin[1]){return new ie(e,t,r,n)}createEdge(e,t,r,n){return new se(e,t,r,n)}};var Y=(t=>(t.ITERATIVE="ITERATIVE",t.RECURSIVE="RECURSIVE",t))(Y||{}),oe=(l=>(l.ROOT="ROOT",l.LEFT="LEFT",l.RIGHT="RIGHT",l.ROOT_LEFT="ROOT_LEFT",l.ROOT_RIGHT="ROOT_RIGHT",l.ISOLATED="ISOLATED",l.MAL_NODE="MAL_NODE",l))(oe||{});var Se=(t=>(t[t.RED=1]="RED",t[t.BLACK=0]="BLACK",t))(Se||{});var Ge=(r=>(r.VAL="VAL",r.NODE="NODE",r.ID="ID",r))(Ge||{});var le=(r=>(r.lt="lt",r.eq="eq",r.gt="gt",r))(le||{});var B=class{key;value;parent;constructor(e,t){this.key=e,this.value=t}_left;get left(){return this._left}set left(e){e&&(e.parent=this),this._left=e}_right;get right(){return this._right}set right(e){e&&(e.parent=this),this._right=e}get familyPosition(){let e=this;return this.parent?this.parent.left===e?this.left||this.right?"ROOT_LEFT":"LEFT":this.parent.right===e?this.left||this.right?"ROOT_RIGHT":"RIGHT":"MAL_NODE":this.left||this.right?"ROOT":"ISOLATED"}},$=class{iterationType="ITERATIVE";constructor(e){if(e){let{iterationType:t="ITERATIVE"}=e;this.iterationType=t}this._size=0}_root;get root(){return this._root}_size;get size(){return this._size}createNode(e,t){return new B(e,t)}add(e,t){let r=(s,l)=>{let o=new C([s]);for(;o.size>0;){let u=o.shift();if(l&&u.key===l.key){u.value=l.value;return}let f=this._addTo(l,u);if(f!==void 0)return f;u.left&&o.push(u.left),u.right&&o.push(u.right)}},n,i;if(e===null)i=null;else if(this.isNodeKey(e))i=this.createNode(e,t);else if(e instanceof B)i=e;else return;return this.root?n=r(this.root,i):(this._setRoot(i),i?this._size=1:this._size=0,n=this.root),n}addMany(e,t){return e.map((r,n)=>{if(r instanceof B)return this.add(r.key,r.value);if(r===null)return this.add(null);let i=t?.[n];return this.add(r,i)})}refill(e,t){return this.clear(),e.length===this.addMany(e,t).length}delete(e,t=this._defaultOneParamCallback){let r=[];if(!this.root)return r;(!t||t===this._defaultOneParamCallback)&&e instanceof B&&(t=o=>o);let n=this.getNode(e,t);if(!n)return r;let i=n?.parent?n.parent:null,s,l=n;if(n.left){if(n.left){let o=this.getRightMost(n.left);if(o){let u=o.parent;l=this._swap(n,o),u&&(u.right===o?u.right=o.left:u.left=o.left,s=u)}}}else if(!i)this._setRoot(null);else{let{familyPosition:o}=n;o==="LEFT"||o==="ROOT_LEFT"?i.left=n.right:(o==="RIGHT"||o==="ROOT_RIGHT")&&(i.right=n.right),s=i}return this._size=this.size-1,r.push({deleted:l,needBalanced:s}),r}getDepth(e,t=this.root){e=this.ensureNotKey(e),t=this.ensureNotKey(t);let r=0;for(;e?.parent;){if(e===t)return r;r++,e=e.parent}return r}getHeight(e=this.root,t=this.iterationType){if(e=this.ensureNotKey(e),!e)return-1;if(t==="RECURSIVE"){let r=n=>{if(!n)return-1;let i=r(n.left),s=r(n.right);return Math.max(i,s)+1};return r(e)}else{let r=[{node:e,depth:0}],n=0;for(;r.length>0;){let{node:i,depth:s}=r.pop();i.left&&r.push({node:i.left,depth:s+1}),i.right&&r.push({node:i.right,depth:s+1}),n=Math.max(n,s)}return n}}getMinHeight(e=this.root,t=this.iterationType){if(e=this.ensureNotKey(e),!e)return-1;if(t==="RECURSIVE"){let r=n=>{if(!n||!n.left&&!n.right)return 0;let i=r(n.left),s=r(n.right);return Math.min(i,s)+1};return r(e)}else{let r=[],n=e,i=null,s=new Map;for(;r.length>0||n;)if(n)r.push(n),n=n.left;else if(n=r[r.length-1],!n.right||i===n.right){if(n=r.pop(),n){let l=n.left?s.get(n.left)??-1:-1,o=n.right?s.get(n.right)??-1:-1;s.set(n,1+Math.min(l,o)),i=n,n=null}}else n=n.right;return s.get(e)??-1}}isPerfectlyBalanced(e=this.root){return this.getMinHeight(e)+1>=this.getHeight(e)}getNodes(e,t=this._defaultOneParamCallback,r=!1,n=this.root,i=this.iterationType){if((!t||t===this._defaultOneParamCallback)&&e instanceof B&&(t=l=>l),n=this.ensureNotKey(n),!n)return[];let s=[];if(i==="RECURSIVE"){let l=o=>{t(o)===e&&(s.push(o),r)||!o.left&&!o.right||(o.left&&l(o.left),o.right&&l(o.right))};l(n)}else{let l=new C([n]);for(;l.size>0;){let o=l.shift();if(o){if(t(o)===e&&(s.push(o),r))return s;o.left&&l.push(o.left),o.right&&l.push(o.right)}}}return s}has(e,t=this._defaultOneParamCallback,r=this.root,n=this.iterationType){return(!t||t===this._defaultOneParamCallback)&&e instanceof B&&(t=i=>i),this.getNodes(e,t,!0,r,n).length>0}getNode(e,t=this._defaultOneParamCallback,r=this.root,n=this.iterationType){return(!t||t===this._defaultOneParamCallback)&&e instanceof B&&(t=i=>i),this.getNodes(e,t,!0,r,n)[0]??null}getNodeByKey(e,t="ITERATIVE"){if(this.root)if(t==="RECURSIVE"){let r=n=>{if(n.key===e)return n;if(!(!n.left&&!n.right)){if(n.left)return r(n.left);if(n.right)return r(n.right)}};return r(this.root)}else{let r=new C([this.root]);for(;r.size>0;){let n=r.shift();if(n){if(n.key===e)return n;n.left&&r.push(n.left),n.right&&r.push(n.right)}}}}ensureNotKey(e,t="ITERATIVE"){return this.isNodeKey(e)?this.getNodeByKey(e,t):e}get(e,t=this._defaultOneParamCallback,r=this.root,n=this.iterationType){return(!t||t===this._defaultOneParamCallback)&&e instanceof B&&(t=i=>i),this.getNode(e,t,r,n)?.value??void 0}clear(){this._setRoot(void 0),this._size=0}isEmpty(){return this.size===0}getPathToRoot(e,t=!0){let r=[];if(e=this.ensureNotKey(e),!e)return r;for(;e.parent;)r.push(e),e=e.parent;return r.push(e),t?r.reverse():r}getLeftMost(e=this.root,t=this.iterationType){if(e=this.ensureNotKey(e),!e)return e;if(t==="RECURSIVE"){let r=n=>this.isRealNode(n.left)?r(n.left):n;return r(e)}else{let r=ee(n=>this.isRealNode(n.left)?r.cont(n.left):n);return r(e)}}getRightMost(e=this.root,t=this.iterationType){if(e=this.ensureNotKey(e),!e)return e;if(t==="RECURSIVE"){let r=n=>this.isRealNode(n.right)?r(n.right):n;return r(e)}else{let r=ee(n=>this.isRealNode(n.right)?r.cont(n.right):n);return r(e)}}isSubtreeBST(e,t=this.iterationType){if(e=this.ensureNotKey(e),!e)return!0;if(t==="RECURSIVE"){let r=(n,i,s)=>n?n.key<=i||n.key>=s?!1:r(n.left,i,n.key)&&r(n.right,n.key,s):!0;return r(e,Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER)}else{let r=[],n=Number.MIN_SAFE_INTEGER,i=e;for(;i||r.length>0;){for(;i;)r.push(i),i=i.left;if(i=r.pop(),!i||n>=i.key)return!1;n=i.key,i=i.right}return!0}}isBST(e=this.iterationType){return this.root===null?!0:this.isSubtreeBST(this.root,e)}subTreeTraverse(e=this._defaultOneParamCallback,t=this.root,r=this.iterationType,n=!1){t=this.ensureNotKey(t);let i=[];if(!t)return i;if(r==="RECURSIVE"){let s=l=>{l!==void 0&&(i.push(e(l)),n?(l&&this.isNodeOrNull(l.left)&&s(l.left),l&&this.isNodeOrNull(l.right)&&s(l.right)):(l&&l.left&&s(l.left),l&&l.right&&s(l.right)))};s(t)}else{let s=[t];for(;s.length>0;){let l=s.pop();l!==void 0&&(i.push(e(l)),n?(l&&this.isNodeOrNull(l.right)&&s.push(l.right),l&&this.isNodeOrNull(l.left)&&s.push(l.left)):(l&&l.right&&s.push(l.right),l&&l.left&&s.push(l.left)))}}return i}isRealNode(e){return e instanceof B&&e.key.toString()!=="NaN"}isNIL(e){return e instanceof B&&e.key.toString()==="NaN"}isNodeOrNull(e){return this.isRealNode(e)||e===null}isNodeKey(e){return typeof e=="number"}dfs(e=this._defaultOneParamCallback,t="in",r=this.root,n="ITERATIVE",i=!1){if(r=this.ensureNotKey(r),!r)return[];let s=[];if(n==="RECURSIVE"){let l=o=>{switch(t){case"in":i?(o&&this.isNodeOrNull(o.left)&&l(o.left),this.isNodeOrNull(o)&&s.push(e(o)),o&&this.isNodeOrNull(o.right)&&l(o.right)):(o&&o.left&&l(o.left),this.isRealNode(o)&&s.push(e(o)),o&&o.right&&l(o.right));break;case"pre":i?(this.isNodeOrNull(o)&&s.push(e(o)),o&&this.isNodeOrNull(o.left)&&l(o.left),o&&this.isNodeOrNull(o.right)&&l(o.right)):(this.isRealNode(o)&&s.push(e(o)),o&&o.left&&l(o.left),o&&o.right&&l(o.right));break;case"post":i?(o&&this.isNodeOrNull(o.left)&&l(o.left),o&&this.isNodeOrNull(o.right)&&l(o.right),this.isNodeOrNull(o)&&s.push(e(o))):(o&&o.left&&l(o.left),o&&o.right&&l(o.right),this.isRealNode(o)&&s.push(e(o)));break}};l(r)}else{let l=[{opt:0,node:r}];for(;l.length>0;){let o=l.pop();if(!(o===void 0||this.isNIL(o.node))){if(i){if(o.node===void 0)continue}else if(o.node===null||o.node===void 0)continue;if(o.opt===1)s.push(e(o.node));else switch(t){case"in":o.node&&l.push({opt:0,node:o.node.right}),l.push({opt:1,node:o.node}),o.node&&l.push({opt:0,node:o.node.left});break;case"pre":o.node&&l.push({opt:0,node:o.node.right}),o.node&&l.push({opt:0,node:o.node.left}),l.push({opt:1,node:o.node});break;case"post":l.push({opt:1,node:o.node}),o.node&&l.push({opt:0,node:o.node.right}),o.node&&l.push({opt:0,node:o.node.left});break;default:o.node&&l.push({opt:0,node:o.node.right}),l.push({opt:1,node:o.node}),o.node&&l.push({opt:0,node:o.node.left});break}}}}return s}bfs(e=this._defaultOneParamCallback,t=this.root,r=this.iterationType,n=!1){if(t=this.ensureNotKey(t),!t)return[];let i=[];if(r==="RECURSIVE"){let s=new C([t]),l=o=>{if(s.size===0)return;let u=s.shift();i.push(e(u)),n?(u&&this.isNodeOrNull(u.left)&&s.push(u.left),u&&this.isNodeOrNull(u.right)&&s.push(u.right)):(u.left&&s.push(u.left),u.right&&s.push(u.right)),l(o+1)};l(0)}else{let s=new C([t]);for(;s.size>0;){let l=s.size;for(let o=0;o<l;o++){let u=s.shift();i.push(e(u)),n?(u&&this.isNodeOrNull(u.left)&&s.push(u.left),u&&this.isNodeOrNull(u.right)&&s.push(u.right)):(u.left&&s.push(u.left),u.right&&s.push(u.right))}}}return i}listLevels(e=this._defaultOneParamCallback,t=this.root,r=this.iterationType,n=!1){t=this.ensureNotKey(t);let i=[];if(!t)return i;if(r==="RECURSIVE"){let s=(l,o)=>{i[o]||(i[o]=[]),i[o].push(e(l)),n?(l&&this.isNodeOrNull(l.left)&&s(l.left,o+1),l&&this.isNodeOrNull(l.right)&&s(l.right,o+1)):(l&&l.left&&s(l.left,o+1),l&&l.right&&s(l.right,o+1))};s(t,0)}else{let s=[[t,0]];for(;s.length>0;){let l=s.pop(),[o,u]=l;i[u]||(i[u]=[]),i[u].push(e(o)),n?(o&&this.isNodeOrNull(o.right)&&s.push([o.right,u+1]),o&&this.isNodeOrNull(o.left)&&s.push([o.left,u+1])):(o&&o.right&&s.push([o.right,u+1]),o&&o.left&&s.push([o.left,u+1]))}}return i}getPredecessor(e){if(e=this.ensureNotKey(e),!!this.isRealNode(e))if(e.left){let t=e.left;for(;!this.isRealNode(t)||this.isRealNode(t.right)&&t.right!==e;)t&&(t=t.right);return t}else return e}getSuccessor(e){if(e=this.ensureNotKey(e),!e)return;if(e.right)return this.getLeftMost(e.right);let t=e.parent;for(;t&&t&&e===t.right;)e=t,t=t.parent;return t}morris(e=this._defaultOneParamCallback,t="in",r=this.root){if(r=this.ensureNotKey(r),r===null)return[];let n=[],i=r,s=o=>{let u=null,f=null;for(;o;)f=o.right,o.right=u,u=o,o=f;return u},l=o=>{let u=s(o),f=u;for(;f;)n.push(e(f)),f=f.right;s(u)};switch(t){case"in":for(;i;){if(i.left){let o=this.getPredecessor(i);if(o.right)o.right=null;else{o.right=i,i=i.left;continue}}n.push(e(i)),i=i.right}break;case"pre":for(;i;){if(i.left){let o=this.getPredecessor(i);if(o.right)o.right=null;else{o.right=i,n.push(e(i)),i=i.left;continue}}else n.push(e(i));i=i.right}break;case"post":for(;i;){if(i.left){let o=this.getPredecessor(i);if(o.right===null){o.right=i,i=i.left;continue}else o.right=null,l(i.left)}i=i.right}l(r);break}return n}*[Symbol.iterator](e=this.root){if(e)if(this.iterationType==="ITERATIVE"){let t=[],r=e;for(;r||t.length>0;){for(;r;)t.push(r),r=r.left;r=t.pop(),r&&(yield r.key),r&&(r=r.right)}}else e.left&&(yield*this[Symbol.iterator](e.left)),yield e.key,e.right&&(yield*this[Symbol.iterator](e.right))}_defaultOneParamCallback=e=>e.key;_swap(e,t){if(e=this.ensureNotKey(e),t=this.ensureNotKey(t),e&&t){let{key:r,value:n}=t,i=this.createNode(r,n);return i&&(t.key=e.key,t.value=e.value,e.key=i.key,e.value=i.value),t}}_addTo(e,t){if(this.isNodeKey(t)&&(t=this.getNode(t)),t)return t.left===void 0?(t.left=e,e&&(this._size=this.size+1),t.left):t.right===void 0?(t.right=e,e&&(this._size=this.size+1),t.right):void 0}_setRoot(e){e&&(e.parent=void 0),this._root=e}print(e=this.root){if(e=this.ensureNotKey(e),!e)return;let t=n=>{let[i,,,]=r(n);for(let s of i)console.log(s)},r=n=>{if(!this.isRealNode(n))return[[],0,0,0];if(this.isRealNode(n)&&!this.isRealNode(n.right)&&!this.isRealNode(n.left)){let d=`${n.key}`,c=d.length,N=1,p=Math.floor(c/2);return[[d],c,N,p]}if(this.isRealNode(n)&&!this.isRealNode(n.right)){let[d,c,N,p]=r(n.left),_=`${n.key}`,V=_.length,K=" ".repeat(p+1)+"_".repeat(c-p-1)+_,z=" ".repeat(p)+"/"+" ".repeat(c-p-1+V),ue=d.map(he=>he+" ".repeat(V));return[[K,z,...ue],c+V,N+2,c+Math.floor(V/2)]}if(this.isRealNode(n)&&!this.isRealNode(n.left)){let[d,c,N,p]=r(n.right),_=`${n.key}`,V=_.length,K=_+"_".repeat(V)+" ".repeat(c-V),z=" ".repeat(p+V)+"\\"+" ".repeat(c-V-1),ue=d.map(he=>" ".repeat(p)+he);return[[K,z,...ue],c+V,N+2,Math.floor(p/2)]}let[i,s,l,o]=r(n.left),[u,f,g,m]=r(n.right),E=`${n.key}`,b=E.length,y=" ".repeat(o+1)+"_".repeat(s-o-1)+E+"_".repeat(m)+" ".repeat(f-m),T=" ".repeat(o)+"/"+" ".repeat(s-o-1+b+m)+"\\"+" ".repeat(f-m-1);l<g?i.push(...new Array(g-l).fill(" ".repeat(s))):g<l&&u.push(...new Array(l-g).fill(" ".repeat(f)));let h=i.map((d,c)=>d+" ".repeat(b)+u[c]);return[[y,T,...h],s+f+b,Math.max(l,g)+2,s+Math.floor(b/2)]};t(e)}};var w=class extends B{parent;constructor(e,t){super(e,t),this.parent=void 0,this._left=void 0,this._right=void 0}_left;get left(){return this._left}set left(e){e&&(e.parent=this),this._left=e}_right;get right(){return this._right}set right(e){e&&(e.parent=this),this._right=e}},D=class extends ${constructor(e){if(super(e),this._root=void 0,e!==void 0){let{comparator:t}=e;t!==void 0&&(this._comparator=t)}}_root;get root(){return this._root}createNode(e,t){return new w(e,t)}add(e,t){if(e===null)return;let r,n;if(e instanceof w?n=e:this.isNodeKey(e)?n=this.createNode(e,t):n=void 0,this.root===void 0)this._setRoot(n),this._size=this.size+1,r=this.root;else{let i=this.root,s=!0;for(;s;)i!==void 0&&n!==void 0?this._compare(i.key,n.key)==="eq"?(n&&(i.value=n.value),s=!1,r=i):this._compare(i.key,n.key)==="gt"?i.left===void 0?(n&&(n.parent=i),i.left=n,this._size=this.size+1,s=!1,r=i.left):i.left&&(i=i.left):this._compare(i.key,n.key)==="lt"&&(i.right===void 0?(n&&(n.parent=i),i.right=n,this._size=this.size+1,s=!1,r=i.right):i.right&&(i=i.right)):s=!1}return r}addMany(e,t,r=!0,n=this.iterationType){function i(y){return y.indexOf(void 0)===-1}if(!r||!i(e))return super.addMany(e,t).map(y=>y??void 0);let s=[],l=e.map((y,T)=>[y,t?.[T]]),o=[];function u(y){for(let[T]of y)if(T instanceof w)return!0;return!1}let f=y=>{for(let[T]of y)if(this.isNodeKey(T))return!0;return!1},g=[],m=[];if(u(l))o=l.sort((y,T)=>y[0].key-T[0].key);else if(f(l))o=l.sort((y,T)=>y[0]-T[0]);else throw new Error("Invalid input keysOrNodes");g=o.map(([y])=>y),m=o.map(([,y])=>y);let E=(y,T)=>{if(y.length===0)return;let h=Math.floor((y.length-1)/2),d=this.add(y[h],T?.[h]);s.push(d),E(y.slice(0,h),T?.slice(0,h)),E(y.slice(h+1),T?.slice(h+1))},b=()=>{let T=[[0,o.length-1]];for(;T.length>0;){let h=T.pop();if(h){let[d,c]=h;if(d<=c){let N=d+Math.floor((c-d)/2),p=this.add(g[N],m?.[N]);s.push(p),T.push([N+1,c]),T.push([d,N-1])}}}};return n==="RECURSIVE"?E(g,m):b(),s}lastKey(e=this.root,t=this.iterationType){return this._compare(0,1)==="lt"?this.getRightMost(e,t)?.key??0:this._compare(0,1)==="gt"?this.getLeftMost(e,t)?.key??0:this.getRightMost(e,t)?.key??0}getNodeByKey(e,t="ITERATIVE"){if(this.root)if(t==="RECURSIVE"){let r=n=>{if(n.key===e)return n;if(!(!n.left&&!n.right)){if(this._compare(n.key,e)==="gt"&&n.left)return r(n.left);if(this._compare(n.key,e)==="lt"&&n.right)return r(n.right)}};return r(this.root)}else{let r=new C([this.root]);for(;r.size>0;){let n=r.shift();if(n){if(this._compare(n.key,e)==="eq")return n;this._compare(n.key,e)==="gt"&&n.left&&r.push(n.left),this._compare(n.key,e)==="lt"&&n.right&&r.push(n.right)}}}}ensureNotKey(e,t="ITERATIVE"){return this.isNodeKey(e)?this.getNodeByKey(e,t):e}getNodes(e,t=this._defaultOneParamCallback,r=!1,n=this.root,i=this.iterationType){if(n=this.ensureNotKey(n),!n)return[];let s=[];if(i==="RECURSIVE"){let l=o=>{t(o)===e&&(s.push(o),r)||!o.left&&!o.right||(t===this._defaultOneParamCallback?(this._compare(o.key,e)==="gt"&&o.left&&l(o.left),this._compare(o.key,e)==="lt"&&o.right&&l(o.right)):(o.left&&l(o.left),o.right&&l(o.right)))};l(n)}else{let l=new C([n]);for(;l.size>0;){let o=l.shift();if(o){if(t(o)===e&&(s.push(o),r))return s;t===this._defaultOneParamCallback?(this._compare(o.key,e)==="gt"&&o.left&&l.push(o.left),this._compare(o.key,e)==="lt"&&o.right&&l.push(o.right)):(o.left&&l.push(o.left),o.right&&l.push(o.right))}}}return s}lesserOrGreaterTraverse(e=this._defaultOneParamCallback,t="lt",r=this.root,n=this.iterationType){r=this.ensureNotKey(r);let i=[];if(!r||!this.root)return i;let s=r.key;if(n==="RECURSIVE"){let l=o=>{this._compare(o.key,s)===t&&i.push(e(o)),!(!o.left&&!o.right)&&(o.left&&this._compare(o.left.key,s)===t&&l(o.left),o.right&&this._compare(o.right.key,s)===t&&l(o.right))};return l(this.root),i}else{let l=new C([this.root]);for(;l.size>0;){let o=l.shift();o&&(this._compare(o.key,s)===t&&i.push(e(o)),o.left&&this._compare(o.left.key,s)===t&&l.push(o.left),o.right&&this._compare(o.right.key,s)===t&&l.push(o.right))}return i}}perfectlyBalance(e=this.iterationType){let t=this.dfs(n=>n,"in"),r=t.length;if(this.clear(),t.length<1)return!1;if(e==="RECURSIVE"){let n=(i,s)=>{if(i>s)return;let l=i+Math.floor((s-i)/2),o=t[l];this.add(o.key,o.value),n(i,l-1),n(l+1,s)};return n(0,r-1),!0}else{let n=[[0,r-1]];for(;n.length>0;){let i=n.pop();if(i){let[s,l]=i;if(s<=l){let o=s+Math.floor((l-s)/2),u=t[o];debugger;this.add(u.key,u.value),n.push([o+1,l]),n.push([s,o-1])}}}return!0}}isAVLBalanced(e=this.iterationType){if(!this.root)return!0;let t=!0;if(e==="RECURSIVE"){let r=n=>{if(!n)return 0;let i=r(n.left),s=r(n.right);return Math.abs(i-s)>1&&(t=!1),Math.max(i,s)+1};r(this.root)}else{let r=[],n=this.root,i,s=new Map;for(;r.length>0||n;)if(n)r.push(n),n=n.left;else if(n=r[r.length-1],!n.right||i===n.right){if(n=r.pop(),n){let l=n.left?s.get(n.left)??-1:-1,o=n.right?s.get(n.right)??-1:-1;if(Math.abs(l-o)>1)return!1;s.set(n,1+Math.max(l,o)),i=n,n=void 0}}else n=n.right}return t}_comparator=(e,t)=>e-t;_setRoot(e){e&&(e.parent=void 0),this._root=e}_compare(e,t){let r=this._comparator(e,t);return r>0?"gt":r<0?"lt":"eq"}};var De=class{_freq;_max;constructor({frequency:e=0,max:t}){this._freq=e,this._max=t,this._freqMap={0:0},this._msb=ve(t),this._negativeCount=e<0?t:0}_freqMap;get freqMap(){return this._freqMap}_msb;get msb(){return this._msb}_negativeCount;get negativeCount(){return this._negativeCount}get freq(){return this._freq}get max(){return this._max}readSingle(e){return this._checkIndex(e),this._readSingle(e)}update(e,t){this._checkIndex(e);let r=this._readSingle(e);this._update(e,t),this._updateNegativeCount(r,r+t)}writeSingle(e,t){this._checkIndex(e),this._writeSingle(e,t)}read(e){if(!Number.isInteger(e))throw new Error("Invalid count");return this._read(Math.max(Math.min(e,this.max),0))}lowerBound(e){if(this.negativeCount>0)throw new Error("Sequence is not non-descending");return this._binarySearch(e,(t,r)=>t<r)}upperBound(e){if(this.negativeCount>0)throw new Error("Must not be descending");return this._binarySearch(e,(t,r)=>t<=r)}getPrefixSum(e){this._checkIndex(e),e++;let t=0;for(;e>0;)t+=this._getFrequency(e),e-=e&-e;return t}_getFrequency(e){return e in this.freqMap?this.freqMap[e]:this.freq*(e&-e)}_updateFrequency(e,t){this.freqMap[e]=this._getFrequency(e)+t}_checkIndex(e){if(!Number.isInteger(e))throw new Error("Invalid index: Index must be an integer.");if(e<0||e>=this.max)throw new Error("Index out of range: Index must be within the range [0, this.max).")}_readSingle(e){e=e+1;let t=this._getFrequency(e),r=e-(e&-e);for(e--;e!==r;)t-=this._getFrequency(e),e-=e&-e;return t}_updateNegativeCount(e,t){e<0&&t>=0?this._negativeCount--:e>=0&&t<0&&this._negativeCount++}_update(e,t){for(e=e+1;e<=this.max;)this._updateFrequency(e,t),e+=e&-e}_writeSingle(e,t){let r=this._readSingle(e);this._update(e,t-r),this._updateNegativeCount(r,t)}_read(e){let t=e,r=0;for(;t;)r+=this._getFrequency(t),t-=t&-t;return r}_binarySearch(e,t){let r=0,n=this.msb<<1,i=e;for(;n>r+1;){let s=r+n>>1,l=this._getFrequency(s);s<=this.max&&t(l,i)?(i-=l,r=s):n=s}return r}};var H=class{start=0;end=0;value=null;sum=0;left=null;right=null;constructor(e,t,r,n){this.start=e,this.end=t,this.sum=r,this.value=n||null}},Fe=class{constructor(e,t,r){t=t||0,r=r||e.length-1,this._values=e,this._start=t,this._end=r,e.length>0?this._root=this.build(t,r):(this._root=null,this._values=[])}_values=[];get values(){return this._values}_start=0;get start(){return this._start}_end;get end(){return this._end}_root;get root(){return this._root}build(e,t){if(e>t)return new H(e,t,0);if(e===t)return new H(e,t,this._values[e]);let r=e+Math.floor((t-e)/2),n=this.build(e,r),i=this.build(r+1,t),s=new H(e,t,n.sum+i.sum);return s.left=n,s.right=i,s}updateNode(e,t,r){let n=this.root||null;if(!n)return;let i=(s,l,o,u)=>{if(s.start===s.end&&s.start===l){s.sum=o,u!==void 0&&(s.value=u);return}let f=s.start+Math.floor((s.end-s.start)/2);l<=f?s.left&&i(s.left,l,o,u):s.right&&i(s.right,l,o,u),s.left&&s.right&&(s.sum=s.left.sum+s.right.sum)};i(n,e,t,r)}querySumByRange(e,t){let r=this.root||null;if(!r)return 0;if(e<0||t>=this.values.length||e>t)return NaN;let n=(i,s,l)=>{if(s<=i.start&&l>=i.end)return i.sum;let o=i.start+Math.floor((i.end-i.start)/2);if(l<=o)return i.left?n(i.left,s,l):NaN;if(s>o)return i.right?n(i.right,s,l):NaN;{let u=0,f=0;return i.left&&(u=n(i.left,s,o)),i.right&&(f=n(i.right,o+1,l)),u+f}};return n(r,e,t)}};var F=class extends w{height;constructor(e,t){super(e,t),this.height=0}},J=class extends D{constructor(e){super(e)}createNode(e,t){return new F(e,t)}add(e,t){if(e===null)return;let r=super.add(e,t);return r&&this._balancePath(r),r}delete(e,t=this._defaultOneParamCallback){e instanceof F&&(t=n=>n);let r=super.delete(e,t);for(let{needBalanced:n}of r)n&&this._balancePath(n);return r}_swap(e,t){if(e=this.ensureNotKey(e),t=this.ensureNotKey(t),e&&t){let{key:r,value:n,height:i}=t,s=this.createNode(r,n);return s&&(s.height=i,t.key=e.key,t.value=e.value,t.height=e.height,e.key=s.key,e.value=s.value,e.height=s.height),t}}_balanceFactor(e){return e.right?e.left?e.right.height-e.left.height:+e.height:-e.height}_updateHeight(e){if(!e.left&&!e.right)e.height=0;else if(e.left)e.right?e.height=1+Math.max(e.right.height,e.left.height):e.height=1+e.left.height;else{let t=e.right?e.right.height:0;e.height=1+t}}_balancePath(e){let t=this.getPathToRoot(e,!1);for(let r=0;r<t.length;r++){let n=t[r];switch(this._updateHeight(n),this._balanceFactor(n)){case-2:n&&n.left&&(this._balanceFactor(n.left)<=0?this._balanceLL(n):this._balanceLR(n));break;case 2:n&&n.right&&(this._balanceFactor(n.right)>=0?this._balanceRR(n):this._balanceRL(n))}}}_balanceLL(e){let t=e.parent,r=e.left;e.parent=r,r&&r.right&&(r.right.parent=e),r&&(r.parent=t),e===this.root?r&&this._setRoot(r):t?.left===e?t.left=r:t&&(t.right=r),r&&(e.left=r.right,r.right=e),this._updateHeight(e),r&&this._updateHeight(r)}_balanceLR(e){let t=e.parent,r=e.left,n;r&&(n=r.right),e&&(e.parent=n),r&&(r.parent=n),n&&(n.left&&(n.left.parent=r),n.right&&(n.right.parent=e),n.parent=t),e===this.root?n&&this._setRoot(n):t&&(t.left===e?t.left=n:t.right=n),n&&(e.left=n.right,r&&(r.right=n.left),n.left=r,n.right=e),this._updateHeight(e),r&&this._updateHeight(r),n&&this._updateHeight(n)}_balanceRR(e){let t=e.parent,r=e.right;e.parent=r,r&&(r.left&&(r.left.parent=e),r.parent=t),e===this.root?r&&this._setRoot(r):t&&(t.left===e?t.left=r:t.right=r),r&&(e.right=r.left,r.left=e),this._updateHeight(e),r&&this._updateHeight(r)}_balanceRL(e){let t=e.parent,r=e.right,n;r&&(n=r.left),e.parent=n,r&&(r.parent=n),n&&(n.left&&(n.left.parent=e),n.right&&(n.right.parent=r),n.parent=t),e===this.root?n&&this._setRoot(n):t&&(t.left===e?t.left=n:t.right=n),n&&(e.right=n.left),r&&n&&(r.left=n.right),n&&(n.left=e),n&&(n.right=r),this._updateHeight(e),r&&this._updateHeight(r),n&&this._updateHeight(n)}};var P=class extends w{color;constructor(e,t,r=0){super(e,t),this.color=r}},ze=class extends D{constructor(e){super(e),this._root=this.NIL}_root;get root(){return this._root}_size=0;get size(){return this._size}NIL=new P(NaN);add(e,t){let r;if(this.isNodeKey(e))r=this.createNode(e,t,1);else if(e instanceof P)r=e;else return void 0;r.left=this.NIL,r.right=this.NIL;let n,i=this.root;for(;i!==this.NIL;)n=i,i&&r.key<i.key?i=i.left:i=i?.right;if(r.parent=n,n===void 0?this._setRoot(r):r.key<n.key?n.left=r:n.right=r,r.parent===void 0){r.color=0,this._size++;return}if(r.parent.parent===void 0){this._size++;return}this._fixInsert(r),this._size++}createNode(e,t,r=0){return new P(e,t,r)}delete(e,t=this._defaultOneParamCallback){let r=[];return e===null||(i=>{let s=this.NIL,l,o;for(;i!==this.NIL;)i&&t(i)===e&&(s=i),i&&e&&t(i)<=e?i=i.right:i=i?.left;if(s===this.NIL){this._size--;return}o=s;let u=o.color;s.left===this.NIL?(l=s.right,this._rbTransplant(s,s.right)):s.right===this.NIL?(l=s.left,this._rbTransplant(s,s.left)):(o=this.getLeftMost(s.right),u=o.color,l=o.right,o.parent===s?l.parent=o:(this._rbTransplant(o,o.right),o.right=s.right,o.right.parent=o),this._rbTransplant(s,o),o.left=s.left,o.left.parent=o,o.color=s.color),u===0&&this._fixDelete(l),this._size--})(this.root),r}isRealNode(e){return e!==this.NIL&&e!==void 0}getNode(e,t=this._defaultOneParamCallback,r=this.root,n=this.iterationType){return e instanceof B&&(t=i=>i),r=this.ensureNotKey(r),this.getNodes(e,t,!0,r,n)[0]??void 0}getSuccessor(e){if(e.right!==this.NIL)return this.getLeftMost(e.right)??void 0;let t=e.parent;for(;t!==this.NIL&&t!==void 0&&e===t.right;)e=t,t=t.parent;return t}getPredecessor(e){if(e.left!==this.NIL)return this.getRightMost(e.left);let t=e.parent;for(;t!==this.NIL&&e===t.left;)e=t,t=t.parent;return t}clear(){this._root=this.NIL,this._size=0}_setRoot(e){e&&(e.parent=void 0),this._root=e}_leftRotate(e){if(e.right){let t=e.right;e.right=t.left,t.left!==this.NIL&&t.left&&(t.left.parent=e),t.parent=e.parent,e.parent===void 0?this._setRoot(t):e===e.parent.left?e.parent.left=t:e.parent.right=t,t.left=e,e.parent=t}}_rightRotate(e){if(e.left){let t=e.left;e.left=t.right,t.right!==this.NIL&&t.right&&(t.right.parent=e),t.parent=e.parent,e.parent===void 0?this._setRoot(t):e===e.parent.right?e.parent.right=t:e.parent.left=t,t.right=e,e.parent=t}}_fixDelete(e){let t;for(;e!==this.root&&e.color===0;)e.parent&&e===e.parent.left?(t=e.parent.right,t.color===1&&(t.color=0,e.parent.color=1,this._leftRotate(e.parent),t=e.parent.right),t.left!==void 0&&t.left.color===0&&t.right&&t.right.color===0?(t.color=1,e=e.parent):(t.right&&t.right.color===0&&(t.left&&(t.left.color=0),t.color=1,this._rightRotate(t),t=e.parent.right),t&&(t.color=e.parent.color),e.parent.color=0,t&&t.right&&(t.right.color=0),this._leftRotate(e.parent),e=this.root)):(t=e.parent.left,t.color===1&&(t.color=0,e.parent.color=1,this._rightRotate(e.parent),t=e.parent.left),t&&t.right&&t.right.color===0&&t.right.color===0?(t.color=1,e=e.parent):(t&&t.left&&t.left.color===0&&(t.right&&(t.right.color=0),t.color=1,this._leftRotate(t),t=e.parent.left),t&&(t.color=e.parent.color),e.parent.color=0,t&&t.left&&(t.left.color=0),this._rightRotate(e.parent),e=this.root));e.color=0}_rbTransplant(e,t){e.parent===void 0?this._setRoot(t):e===e.parent.left?e.parent.left=t:e.parent.right=t,t.parent=e.parent}_fixInsert(e){let t;for(;e.parent&&e.parent.color===1&&(e.parent.parent&&e.parent===e.parent.parent.right?(t=e.parent.parent.left,t&&t.color===1?(t.color=0,e.parent.color=0,e.parent.parent.color=1,e=e.parent.parent):(e===e.parent.left&&(e=e.parent,this._rightRotate(e)),e.parent.color=0,e.parent.parent.color=1,this._leftRotate(e.parent.parent))):(t=e.parent.parent.right,t&&t.color===1?(t.color=0,e.parent.color=0,e.parent.parent.color=1,e=e.parent.parent):(e===e.parent.right&&(e=e.parent,this._leftRotate(e)),e.parent.color=0,e.parent.parent.color=1,this._rightRotate(e.parent.parent))),e!==this.root););this.root.color=0}};var U=class extends F{count;constructor(e,t,r=1){super(e,t),this.count=r}},Ae=class extends J{constructor(e){super(e)}_count=0;get count(){return this._count}createNode(e,t,r){return new U(e,t,r)}add(e,t,r=1){if(e===null)return;let n,i;if(e instanceof U?i=this.createNode(e.key,e.value,e.count):e===void 0?i=void 0:i=this.createNode(e,t,r),!this.root)this._setRoot(i),this._size=this.size+1,i&&(this._count+=i.count),n=this.root;else{let s=this.root,l=!0;for(;l;)s?i&&(this._compare(s.key,i.key)==="eq"?(s.value=i.value,s.count+=i.count,this._count+=i.count,l=!1,n=s):this._compare(s.key,i.key)==="gt"?s.left===void 0?(s.left=i,this._size=this.size+1,this._count+=i.count,l=!1,n=s.left):s.left&&(s=s.left):this._compare(s.key,i.key)==="lt"&&(s.right===void 0?(s.right=i,this._size=this.size+1,this._count+=i.count,l=!1,n=s.right):s.right&&(s=s.right))):l=!1}return n&&this._balancePath(n),n}_addTo(e,t){if(t=this.ensureNotKey(t),t)return t.left===void 0?(t.left=e,e!==void 0&&(this._size=this.size+1,this._count+=e.count),t.left):t.right===void 0?(t.right=e,e!==void 0&&(this._size=this.size+1,this._count+=e.count),t.right):void 0}addMany(e,t){let r=[];for(let n=0;n<e.length;n++){let i=e[n];if(i instanceof U){r.push(this.add(i.key,i.value,i.count));continue}if(i===void 0){r.push(this.add(NaN,void 0,0));continue}r.push(this.add(i,t?.[n],1))}return r}perfectlyBalance(e=this.iterationType){let t=this.dfs(n=>n,"in"),r=t.length;if(t.length<1)return!1;if(this.clear(),e==="RECURSIVE"){let n=(i,s)=>{if(i>s)return;let l=i+Math.floor((s-i)/2),o=t[l];this.add(o.key,o.value,o.count),n(i,l-1),n(l+1,s)};return n(0,r-1),!0}else{let n=[[0,r-1]];for(;n.length>0;){let i=n.pop();if(i){let[s,l]=i;if(s<=l){let o=s+Math.floor((l-s)/2),u=t[o];this.add(u.key,u.value,u.count),n.push([o+1,l]),n.push([s,o-1])}}}return!0}}delete(e,t=this._defaultOneParamCallback,r=!1){let n=[];if(!this.root)return n;let i=this.getNode(e,t)??void 0;if(!i)return n;let s=i?.parent?i.parent:void 0,l,o=i;if(i.count>1&&!r)i.count--,this._count--;else{if(i.left){let u=i.left?this.getRightMost(i.left):void 0;if(u){let f=u.parent;o=this._swap(i,u),f&&(f.right===u?f.right=u.left:f.left=u.left,l=f)}}else if(!s)i.right!==void 0&&this._setRoot(i.right);else{let{familyPosition:u}=i;u==="LEFT"||u==="ROOT_LEFT"?s.left=i.right:(u==="RIGHT"||u==="ROOT_RIGHT")&&(s.right=i.right),l=s}this._size=this.size-1,o&&(this._count-=o.count)}return n.push({deleted:o,needBalanced:l}),l&&this._balancePath(l),n}clear(){super.clear(),this._count=0}_swap(e,t){if(e=this.ensureNotKey(e),t=this.ensureNotKey(t),e&&t){let{key:r,value:n,count:i,height:s}=t,l=this.createNode(r,n,i);return l&&(l.height=s,t.key=e.key,t.value=e.value,t.count=e.count,t.height=e.height,e.key=l.key,e.value=l.value,e.count=l.count,e.height=l.height),t}}};var He=class a{key;value;children;constructor(e,t,r){this.key=e,this.value=t||void 0,this.children=r||[]}addChildren(e){this.children||(this.children=[]),e instanceof a?this.children.push(e):this.children=this.children.concat(e)}getHeight(){let e=0;if(this){let t=(r,n)=>{n>e&&(e=n);let{children:i}=r;if(i)for(let s=0,l=i.length;s<l;s++)t(i[s],n+1)};t(this,0)}return e}};var Pe=class{_matrix;constructor(e){let{row:t,col:r,initialVal:n}=e;this._matrix=new Array(t).fill(void 0).map(()=>new Array(r).fill(n||0))}toArray(){return this._matrix}};var q=class a{constructor(e=0,t=0,r=1){this.x=e;this.y=t;this.w=r}get isZero(){return this.x===0&&this.y===0}get length(){return Math.sqrt(this.x*this.x+this.y*this.y)}get lengthSq(){return this.x*this.x+this.y*this.y}get rounded(){return new a(Math.round(this.x),Math.round(this.y))}static add(e,t){return new a(e.x+t.x,e.y+t.y)}static subtract(e,t){return new a(e.x-t.x,e.y-t.y)}static subtractValue(e,t){return new a(e.x-t,e.y-t)}static multiply(e,t){return new a(e.x*t,e.y*t)}static divide(e,t){return new a(e.x/t,e.y/t)}static equals(e,t){return e.x===t.x&&e.y===t.y}static equalsRounded(e,t,r=12){let n=a.abs(a.subtract(e,t));return n.x<r&&n.y<r}static normalize(e){let t=e.length;return t>2220446049250313e-31?a.divide(e,t):e}static truncate(e,t){return e.length>t?a.multiply(a.normalize(e),t):e}static perp(e){return new a(-e.y,e.x)}static reverse(e){return new a(-e.x,-e.y)}static abs(e){return new a(Math.abs(e.x),Math.abs(e.y))}static dot(e,t){return e.x*t.x+e.y*t.y}static distance(e,t){let r=t.y-e.y,n=t.x-e.x;return Math.sqrt(r*r+n*n)}static distanceSq(e,t){let r=t.y-e.y,n=t.x-e.x;return r*r+n*n}static sign(e,t){return e.y*t.x>e.x*t.y?-1:1}static angle(e){let t=new a(0,-1),r=Math.acos(a.dot(e,t)/(e.length*t.length));return a.sign(e,t)===1?Math.PI*2-r:r}static random(e,t){let r=Math.floor(Math.random()*e-e/2),n=Math.floor(Math.random()*t-t/2);return new a(r,n)}zero(){this.x=0,this.y=0}};var Ue=class a{_matrix;constructor(e){typeof e>"u"?this._matrix=a.identity:e instanceof q?(this._matrix=a.identity,this._matrix[0][0]=e.x,this._matrix[1][0]=e.y,this._matrix[2][0]=e.w):this._matrix=e}static get empty(){return[[],[],[]]}static get identity(){return[[1,0,0],[0,1,0],[0,0,1]]}get m(){return this._matrix}static add(e,t){let r=a.empty;for(let n=0;n<3;n++)for(let i=0;i<3;i++)r[n][i]=e.m[n][i]+t.m[n][i];return new a(r)}static subtract(e,t){let r=a.empty;for(let n=0;n<3;n++)for(let i=0;i<3;i++)r[n][i]=e.m[n][i]-t.m[n][i];return new a(r)}static multiply(e,t){let r=a.empty;for(let n=0;n<3;n++)for(let i=0;i<3;i++){r[n][i]=0;for(let s=0;s<3;s++)r[n][i]+=e.m[n][s]*t.m[s][i]}return new a(r)}static multiplyByValue(e,t){let r=a.empty;for(let n=0;n<3;n++)for(let i=0;i<3;i++)r[n][i]=e.m[n][i]*t;return new a(r)}static multiplyByVector(e,t){return a.multiply(e,new a(t)).toVector()}static view(e,t){let n=e/2,i=t/2,s=Math.cos(Math.PI);return new a([[1,0,n],[0,s*1,i],[0,0,1]])}static scale(e){return a.multiplyByValue(new a,e)}static rotate(e){let t=Math.cos(e),r=Math.sin(e);return new a([[t,-r,0],[r,t,0],[0,0,1]])}static translate(e){return new a([[1,0,e.x],[0,1,e.y],[0,0,e.w]])}toVector(){return new q(this._matrix[0][0],this._matrix[1][0])}};var ae=class a{direction;turn;constructor(e,t){this.direction=e,this.turn=()=>new a(t[e],t)}},qe=class{onMove;_matrix;_cur;_character;_VISITED;constructor({matrix:e,turning:t,onMove:r,init:{cur:n,charDir:i,VISITED:s}}){this._matrix=e,this._cur=n,this._character=new ae(i,t),this.onMove=r,this.onMove&&this.onMove(this._cur),this._VISITED=s,this._matrix[this._cur[0]][this._cur[1]]=this._VISITED}start(){for(;this.check(this._character.direction)||this.check(this._character.turn().direction);){let{direction:e}=this._character;this.check(e)?this.move(e):this.check(this._character.turn().direction)&&(this._character=this._character.turn())}}check(e){let t,r,n=this._matrix,[i,s]=this._cur;switch(e){case"up":if(r=n[i-1],!r)return!1;t=r[s];break;case"right":t=n[i][s+1];break;case"down":if(r=n[i+1],!r)return!1;t=r[s];break;case"left":t=n[i][s-1];break}return t!==void 0&&t!==this._VISITED}move(e){switch(e){case"up":this._cur[0]--;break;case"right":this._cur[1]++;break;case"down":this._cur[0]++;break;case"left":this._cur[1]--;break}let[t,r]=this._cur;this._matrix[t][r]=this._VISITED,this.onMove&&this.onMove(this._cur)}};var Z=class{key;children;isEnd;constructor(e){this.key=e,this.isEnd=!1,this.children=new Map}},je=class{constructor(e,t=!0){if(this._root=new Z(""),this._caseSensitive=t,e)for(let r of e)this.add(r)}_caseSensitive;get caseSensitive(){return this._caseSensitive}_root;get root(){return this._root}add(e){e=this._caseProcess(e);let t=this.root;for(let r of e){let n=t.children.get(r);n||(n=new Z(r),t.children.set(r,n)),t=n}return t.isEnd=!0,!0}has(e){e=this._caseProcess(e);let t=this.root;for(let r of e){let n=t.children.get(r);if(!n)return!1;t=n}return t.isEnd}delete(e){e=this._caseProcess(e);let t=!1,r=(n,i)=>{let s=e[i],l=n.children.get(s);return l?i===e.length-1?l.isEnd?(l.children.size>0?l.isEnd=!1:n.children.delete(s),t=!0,!0):!1:r(l,i+1)&&!n.isEnd&&l.children.size===0?(n.children.delete(s),!0):!1:!1};return r(this.root,0),t}getHeight(){let e=this.root,t=0;if(e){let r=(n,i)=>{i>t&&(t=i);let{children:s}=n;if(s)for(let l of s.entries())r(l[1],i+1)};r(e,0)}return t}hasPurePrefix(e){e=this._caseProcess(e);let t=this.root;for(let r of e){let n=t.children.get(r);if(!n)return!1;t=n}return!t.isEnd}hasPrefix(e){e=this._caseProcess(e);let t=this.root;for(let r of e){let n=t.children.get(r);if(!n)return!1;t=n}return!0}hasCommonPrefix(e){e=this._caseProcess(e);let t="",r=n=>{if(t+=n.key,t!==e&&!n.isEnd)if(n&&n.children&&n.children.size===1)r(Array.from(n.children.values())[0]);else return};return r(this.root),t===e}getLongestCommonPrefix(){let e="",t=r=>{if(e+=r.key,!r.isEnd)if(r&&r.children&&r.children.size===1)t(Array.from(r.children.values())[0]);else return};return t(this.root),e}getWords(e="",t=Number.MAX_SAFE_INTEGER,r=!1){e=this._caseProcess(e);let n=[],i=0;function s(o,u){for(let f of o.children.keys()){let g=o.children.get(f);g!==void 0&&s(g,u.concat(f))}if(o.isEnd){if(i>t-1)return;n.push(u),i++}}let l=this.root;if(e)for(let o of e){let u=l.children.get(o);u&&(l=u)}return(r||l!==this.root)&&s(l,e),n}_caseProcess(e){return this._caseSensitive||(e=e.toLowerCase()),e}};return Je(et);})();
2
- /**
1
+ "use strict";function t(t,e){if(e==null||e>t.length)e=t.length;for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}function e(t){if(Array.isArray(t))return t}function r(e){if(Array.isArray(e))return t(e)}function n(t){if(t===void 0){throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}return t}function i(t,e,r,n,i,a,u){try{var o=t[a](u);var s=o.value}catch(t){r(t);return}if(o.done){e(s)}else{Promise.resolve(s).then(n,i)}}function a(t){return function(){var e=this,r=arguments;return new Promise(function(n,a){var u=t.apply(e,r);function o(t){i(u,n,a,o,s,"next",t)}function s(t){i(u,n,a,o,s,"throw",t)}o(undefined)})}}function u(t,e){if(!(t instanceof e)){throw new TypeError("Cannot call a class as a function")}}function o(t,e,r){if(S()){o=Reflect.construct}else{o=function t(t,e,r){var n=[null];n.push.apply(n,e);var i=Function.bind.apply(t,n);var a=new i;if(r)m(a,r.prototype);return a}}return o.apply(null,arguments)}function s(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||false;n.configurable=true;if("value"in n)n.writable=true;Object.defineProperty(t,n.key,n)}}function l(t,e,r){if(e)s(t.prototype,e);if(r)s(t,r);return t}function h(t,e,r){if(typeof Reflect!=="undefined"&&Reflect.get){h=Reflect.get}else{h=function t(t,e,r){var n=x(t,e);if(!n)return;var i=Object.getOwnPropertyDescriptor(n,e);if(i.get){return i.get.call(r||t)}return i.value}}return h(t,e,r||t)}function f(t){f=Object.setPrototypeOf?Object.getPrototypeOf:function t(t){return t.__proto__||Object.getPrototypeOf(t)};return f(t)}function v(t,e){if(typeof e!=="function"&&e!==null){throw new TypeError("Super expression must either be null or a function")}t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:true,configurable:true}});if(e)m(t,e)}function c(t,e){if(e!=null&&typeof Symbol!=="undefined"&&e[Symbol.hasInstance]){return!!e[Symbol.hasInstance](t)}else{return t instanceof e}}function d(t){return Function.toString.call(t).indexOf("[native code]")!==-1}function y(t){if(typeof Symbol!=="undefined"&&t[Symbol.iterator]!=null||t["@@iterator"]!=null)return Array.from(t)}function g(t,e){var r=t==null?null:typeof Symbol!=="undefined"&&t[Symbol.iterator]||t["@@iterator"];if(r==null)return;var n=[];var i=true;var a=false;var u,o;try{for(r=r.call(t);!(i=(u=r.next()).done);i=true){n.push(u.value);if(e&&n.length===e)break}}catch(t){a=true;o=t}finally{try{if(!i&&r["return"]!=null)r["return"]()}finally{if(a)throw o}}return n}function p(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function k(t,e){if(e&&(N(e)==="object"||typeof e==="function")){return e}return n(t)}function m(t,e){m=Object.setPrototypeOf||function t(t,e){t.__proto__=e;return t};return m(t,e)}function b(t,r){return e(t)||g(t,r)||E(t,r)||p()}function x(t,e){while(!Object.prototype.hasOwnProperty.call(t,e)){t=f(t);if(t===null)break}return t}function w(t){return r(t)||y(t)||E(t)||_()}function N(t){"@swc/helpers - typeof";return t&&typeof Symbol!=="undefined"&&t.constructor===Symbol?"symbol":typeof t}function E(e,r){if(!e)return;if(typeof e==="string")return t(e,r);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor)n=e.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return t(e,r)}function M(t){var e=typeof Map==="function"?new Map:undefined;M=function t(t){if(t===null||!d(t))return t;if(typeof t!=="function"){throw new TypeError("Super expression must either be null or a function")}if(typeof e!=="undefined"){if(e.has(t))return e.get(t);e.set(t,r)}function r(){return o(t,arguments,f(this).constructor)}r.prototype=Object.create(t.prototype,{constructor:{value:r,enumerable:false,writable:true,configurable:true}});return m(r,t)};return M(t)}function S(){if(typeof Reflect==="undefined"||!Reflect.construct)return false;if(Reflect.construct.sham)return false;if(typeof Proxy==="function")return true;try{Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}));return true}catch(t){return false}}function R(t){var e=S();return function r(){var r=f(t),n;if(e){var i=f(this).constructor;n=Reflect.construct(r,arguments,i)}else{n=r.apply(this,arguments)}return k(this,n)}}function T(t,e){var r,n,i,a,u={label:0,sent:function(){if(i[0]&1)throw i[1];return i[1]},trys:[],ops:[]};return a={next:o(0),"throw":o(1),"return":o(2)},typeof Symbol==="function"&&(a[Symbol.iterator]=function(){return this}),a;function o(t){return function(e){return s([t,e])}}function s(a){if(r)throw new TypeError("Generator is already executing.");while(u)try{if(r=1,n&&(i=a[0]&2?n["return"]:a[0]?n["throw"]||((i=n["return"])&&i.call(n),0):n.next)&&!(i=i.call(n,a[1])).done)return i;if(n=0,i)a=[a[0]&2,i.value];switch(a[0]){case 0:case 1:i=a;break;case 4:u.label++;return{value:a[1],done:false};case 5:u.label++;n=a[1];a=[0];continue;case 7:a=u.ops.pop();u.trys.pop();continue;default:if(!(i=u.trys,i=i.length>0&&i[i.length-1])&&(a[0]===6||a[0]===2)){u=0;continue}if(a[0]===3&&(!i||a[1]>i[0]&&a[1]<i[3])){u.label=a[1];break}if(a[0]===6&&u.label<i[1]){u.label=i[1];i=a;break}if(i&&u.label<i[2]){u.label=i[2];u.ops.push(a);break}if(i[2])u.ops.pop();u.trys.pop();continue}a=e.call(t,u)}catch(t){a=[6,t];n=0}finally{r=i=0}if(a[0]&5)throw a[1];return{value:a[0]?a[1]:void 0,done:true}}}function O(t){var e=typeof Symbol==="function"&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&typeof t.length==="number")return{next:function(){if(t&&n>=t.length)t=void 0;return{value:t&&t[n++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}var dataStructureTyped=function(){var t=Object.defineProperty;var e=Object.getOwnPropertyDescriptor;var r=Object.getOwnPropertyNames;var i=Object.prototype.hasOwnProperty;var o=function(e,r,n){return r in e?t(e,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[r]=n};var s=function(e,r){for(var n in r)t(e,n,{get:r[n],enumerable:!0})},d=function(n,a,u,o){var s=true,l=false,h=undefined;if(a&&typeof a=="object"||typeof a=="function")try{var f=function(){var r=c.value;!i.call(n,r)&&r!==u&&t(n,r,{get:function(){return a[r]},enumerable:!(o=e(a,r))||o.enumerable})};for(var v=r(a)[Symbol.iterator](),c;!(s=(c=v.next()).done);s=true)f()}catch(t){l=true;h=t}finally{try{if(!s&&v.return!=null){v.return()}}finally{if(l){throw h}}}return n};var y=function(e){return d(t({},"__esModule",{value:!0}),e)};var g=function(t,e,r){return o(t,(typeof e==="undefined"?"undefined":N(e))!="symbol"?e+"":e,r),r};var p={};s(p,{AVLTree:function(){return tI},AVLTreeNode:function(){return tz},AbstractEdge:function(){return ts},AbstractGraph:function(){return tl},AbstractVertex:function(){return to},ArrayDeque:function(){return q},BST:function(){return tS},BSTNode:function(){return tM},BinaryIndexedTree:function(){return tR},BinaryTree:function(){return tE},BinaryTreeNode:function(){return tN},CP:function(){return tw},Character:function(){return tK},CoordinateMap:function(){return x},CoordinateSet:function(){return E},Deque:function(){return H},DirectedEdge:function(){return tf},DirectedGraph:function(){return tv},DirectedVertex:function(){return th},DoublyLinkedList:function(){return C},DoublyLinkedListNode:function(){return L},FamilyPosition:function(){return tm},FibonacciHeap:function(){return te},FibonacciHeapNode:function(){return tt},HashMap:function(){return I},HashTable:function(){return m},HashTableNode:function(){return _},Heap:function(){return $},IterationType:function(){return tk},LinkedListQueue:function(){return j},MapEdge:function(){return tp},MapGraph:function(){return t_},MapVertex:function(){return tg},Matrix2D:function(){return tj},MatrixNTI2D:function(){return tF},MaxHeap:function(){return tr},MaxPriorityQueue:function(){return tu},MinHeap:function(){return tn},MinPriorityQueue:function(){return ta},Navigator:function(){return tH},ObjectDeque:function(){return B},PriorityQueue:function(){return ti},Queue:function(){return K},RBTNColor:function(){return tb},RedBlackTree:function(){return tA},RedBlackTreeNode:function(){return tV},SegmentTree:function(){return tO},SegmentTreeNode:function(){return tT},SinglyLinkedList:function(){return A},SinglyLinkedListNode:function(){return V},SkipList:function(){return F},SkipListNode:function(){return P},Stack:function(){return D},THUNK_SYMBOL:function(){return W},TopologicalProperty:function(){return tx},TreeMap:function(){return S},TreeMultimap:function(){return tC},TreeMultimapNode:function(){return tL},TreeNode:function(){return tP},TreeSet:function(){return z},Trie:function(){return tq},TrieNode:function(){return tB},UndirectedEdge:function(){return td},UndirectedGraph:function(){return ty},UndirectedVertex:function(){return tc},Vector2D:function(){return tD},arrayRemove:function(){return G},getMSB:function(){return Z},isThunk:function(){return Q},toThunk:function(){return Y},trampoline:function(){return X},trampolineAsync:function(){return J},uuidV4:function(){return U}});var _=function t(e,r){u(this,t);g(this,"key");g(this,"value");g(this,"next");this.key=e,this.value=r,this.next=null},k=/*#__PURE__*/function(){function t(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:t.DEFAULT_CAPACITY,r=arguments.length>1?arguments[1]:void 0;u(this,t);g(this,"_capacity");g(this,"_size");g(this,"_buckets");g(this,"_hashFn");this._hashFn=r||this._defaultHashFn,this._capacity=Math.max(e,t.DEFAULT_CAPACITY),this._size=0,this._buckets=new Array(this._capacity).fill(null)}l(t,[{key:"capacity",get:function t(){return this._capacity}},{key:"size",get:function t(){return this._size}},{key:"buckets",get:function t(){return this._buckets}},{key:"hashFn",get:function t(){return this._hashFn}},{key:"set",value:function e(e,r){var n=this._hash(e),i=new _(e,r);if(!this._buckets[n])this._buckets[n]=i;else{var a=this._buckets[n];for(;a;){if(a.key===e){a.value=r;return}if(!a.next)break;a=a.next}a.next=i}this._size++,this._size/this._capacity>=t.LOAD_FACTOR&&this._expand()}},{key:"get",value:function t(t){var e=this._hash(t),r=this._buckets[e];for(;r;){if(r.key===t)return r.value;r=r.next}}},{key:"delete",value:function t(t){var e=this._hash(t),r=this._buckets[e],n=null;for(;r;){if(r.key===t){n?n.next=r.next:this._buckets[e]=r.next,this._size--,r.next=null;return}n=r,r=r.next}}},{key:"_defaultHashFn",value:function t(t){return(typeof t=="string"?this._murmurStringHashFn(t):this._objectHash(t))%this._capacity}},{key:"_multiplicativeStringHashFn",value:function t(t){var e=String(t),r=0;for(var n=0;n<e.length;n++){var i=e.charCodeAt(n),a=.618033988749895,u=1<<30;r=(r*a+i)%u}return Math.abs(r)}},{key:"_murmurStringHashFn",value:function t(t){var e=String(t),r=0;for(var n=0;n<e.length;n++){var i=e.charCodeAt(n);r=(r^i)*1540483477,r=(r^r>>>15)*668265261,r=r^r>>>15}return Math.abs(r)}},{key:"_hash",value:function t(t){return this.hashFn(t)}},{key:"_stringHash",value:function t(t){var e=0;for(var r=0;r<t.length;r++)e=e*31+t.charCodeAt(r)&4294967295;return e}},{key:"_objectHash",value:function t(t){return this._stringHash(JSON.stringify(t))}},{key:"_expand",value:function t(){var t=this._capacity*2,e=new Array(t).fill(null);var r=true,n=false,i=undefined;try{for(var a=this._buckets[Symbol.iterator](),u;!(r=(u=a.next()).done);r=true){var o=u.value;var s=o;for(;s;){var l=this._hash(s.key),h=new _(s.key,s.value);if(!e[l])e[l]=h;else{var f=e[l];for(;f.next;)f=f.next;f.next=h}s=s.next}}}catch(t){n=true;i=t}finally{try{if(!r&&a.return!=null){a.return()}}finally{if(n){throw i}}}this._buckets=e,this._capacity=t}}]);return t}();g(k,"DEFAULT_CAPACITY",16),g(k,"LOAD_FACTOR",.75);var m=k;var x=/*#__PURE__*/function(t){v(r,t);var e=R(r);function r(t){u(this,r);var i;i=e.call(this);g(n(i),"_joint","_");t!==void 0&&(i._joint=t);return i}l(r,[{key:"joint",get:function t(){return this._joint}},{key:"has",value:function t(t){return h(f(r.prototype),"has",this).call(this,t.join(this._joint))}},{key:"set",value:function t(t,e){return h(f(r.prototype),"set",this).call(this,t.join(this._joint),e)}},{key:"get",value:function t(t){return h(f(r.prototype),"get",this).call(this,t.join(this._joint))}},{key:"delete",value:function t(t){return h(f(r.prototype),"delete",this).call(this,t.join(this._joint))}}]);return r}(M(Map));var E=/*#__PURE__*/function(t){v(r,t);var e=R(r);function r(t){u(this,r);var i;i=e.call(this);g(n(i),"_joint","_");t!==void 0&&(i._joint=t);return i}l(r,[{key:"joint",get:function t(){return this._joint}},{key:"has",value:function t(t){return h(f(r.prototype),"has",this).call(this,t.join(this._joint))}},{key:"add",value:function t(t){return h(f(r.prototype),"add",this).call(this,t.join(this._joint))}},{key:"delete",value:function t(t){return h(f(r.prototype),"delete",this).call(this,t.join(this._joint))}}]);return r}(M(Set));var S=function t(){u(this,t)};var z=function t(){u(this,t)};var I=/*#__PURE__*/function(){function t(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:16,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:.75,n=arguments.length>2?arguments[2]:void 0;var i=this;u(this,t);g(this,"_initialCapacity");g(this,"_loadFactor");g(this,"_capacityMultiplier");g(this,"_size");g(this,"_table");g(this,"_hashFn");this._initialCapacity=e,this._loadFactor=r,this._capacityMultiplier=2,this._size=0,this._table=new Array(e),this._hashFn=n||function(t){var e=String(t),r=0;for(var n=0;n<e.length;n++)r+=e.charCodeAt(n);return r%i.table.length}}l(t,[{key:"initialCapacity",get:function t(){return this._initialCapacity}},{key:"loadFactor",get:function t(){return this._loadFactor}},{key:"capacityMultiplier",get:function t(){return this._capacityMultiplier}},{key:"size",get:function t(){return this._size}},{key:"table",get:function t(){return this._table}},{key:"hashFn",get:function t(){return this._hashFn}},{key:"set",value:function t(t,e){this.size/this.table.length>=this.loadFactor&&this.resizeTable(this.table.length*this.capacityMultiplier);var r=this._hash(t);this.table[r]||(this.table[r]=[]);for(var n=0;n<this.table[r].length;n++)if(this.table[r][n][0]===t){this.table[r][n][1]=e;return}this.table[r].push([t,e]),this._size++}},{key:"get",value:function t(t){var e=this._hash(t);if(this.table[e]){var r=true,n=false,i=undefined;try{for(var a=this.table[e][Symbol.iterator](),u;!(r=(u=a.next()).done);r=true){var o=b(u.value,2),s=o[0],l=o[1];if(s===t)return l}}catch(t){n=true;i=t}finally{try{if(!r&&a.return!=null){a.return()}}finally{if(n){throw i}}}}}},{key:"delete",value:function t(t){var e=this._hash(t);if(this.table[e]){for(var r=0;r<this.table[e].length;r++)if(this.table[e][r][0]===t){this.table[e].splice(r,1),this._size--,this.size/this.table.length<this.loadFactor/this.capacityMultiplier&&this.resizeTable(this.table.length/this.capacityMultiplier);return}}}},{key:"entries",value:function t(){var t,e,r,n,i,a,u,o,s,l,h,f,v,c,d,d;return T(this,function(y){switch(y.label){case 0:t=true,e=false,r=undefined,n=true,i=false,a=undefined;y.label=1;case 1:y.trys.push([1,12,13,14]);u=this.table[Symbol.iterator]();y.label=2;case 2:if(!!(n=(o=u.next()).done))return[3,11];s=o.value;if(!s)return[3,10];y.label=3;case 3:y.trys.push([3,8,9,10]);l=s[Symbol.iterator]();y.label=4;case 4:if(!!(t=(h=l.next()).done))return[3,7];f=b(h.value,2),v=f[0],c=f[1];return[4,[v,c]];case 5:y.sent();y.label=6;case 6:t=true;return[3,4];case 7:return[3,10];case 8:d=y.sent();e=true;r=d;return[3,10];case 9:try{if(!t&&l.return!=null){l.return()}}finally{if(e){throw r}}return[7];case 10:n=true;return[3,2];case 11:return[3,14];case 12:d=y.sent();i=true;a=d;return[3,14];case 13:try{if(!n&&u.return!=null){u.return()}}finally{if(i){throw a}}return[7];case 14:return[2]}})}},{key:Symbol.iterator,value:function t(){return this.entries()}},{key:"clear",value:function t(){this._size=0,this._table=new Array(this.initialCapacity)}},{key:"isEmpty",value:function t(){return this.size===0}},{key:"_hash",value:function t(t){return this._hashFn(t)}},{key:"resizeTable",value:function t(t){var e=new Array(t);var r=true,n=false,i=undefined,a=true,u=false,o=undefined;try{for(var s=this._table[Symbol.iterator](),l;!(a=(l=s.next()).done);a=true){var h=l.value;if(h)try{for(var f=h[Symbol.iterator](),v;!(r=(v=f.next()).done);r=true){var c=b(v.value,2),d=c[0],y=c[1];var g=this._hash(d)%t;e[g]||(e[g]=[]),e[g].push([d,y])}}catch(t){n=true;i=t}finally{try{if(!r&&f.return!=null){f.return()}}finally{if(n){throw i}}}}}catch(t){u=true;o=t}finally{try{if(!a&&s.return!=null){s.return()}}finally{if(u){throw o}}}this._table=e}}]);return t}();var V=function t(e){u(this,t);g(this,"value");g(this,"next");this.value=e,this.next=null},A=/*#__PURE__*/function(){function t(){u(this,t);g(this,"_head");g(this,"_tail");g(this,"_length");this._head=null,this._tail=null,this._length=0}l(t,[{key:"head",get:function t(){return this._head}},{key:"tail",get:function t(){return this._tail}},{key:"length",get:function t(){return this._length}},{key:"push",value:function t(t){var e=new V(t);this.head?(this.tail.next=e,this._tail=e):(this._head=e,this._tail=e),this._length++}},{key:"addLast",value:function t(t){this.push(t)}},{key:"pop",value:function t(){if(!this.head)return;if(this.head===this.tail){var t=this.head.value;return this._head=null,this._tail=null,this._length--,t}var e=this.head;for(;e.next!==this.tail;)e=e.next;var r=this.tail.value;return e.next=null,this._tail=e,this._length--,r}},{key:"popLast",value:function t(){return this.pop()}},{key:"shift",value:function t(){if(!this.head)return;var t=this.head;return this._head=this.head.next,this._length--,t.value}},{key:"popFirst",value:function t(){return this.shift()}},{key:"unshift",value:function t(t){var e=new V(t);this.head?(e.next=this.head,this._head=e):(this._head=e,this._tail=e),this._length++}},{key:"addFirst",value:function t(t){this.unshift(t)}},{key:"getAt",value:function t(t){if(t<0||t>=this.length)return;var e=this.head;for(var r=0;r<t;r++)e=e.next;return e.value}},{key:"getNodeAt",value:function t(t){var e=this.head;for(var r=0;r<t;r++)e=e.next;return e}},{key:"deleteAt",value:function t(t){if(t<0||t>=this.length)return;if(t===0)return this.shift();if(t===this.length-1)return this.pop();var e=this.getNodeAt(t-1),r=e.next;return e.next=r.next,this._length--,r.value}},{key:"delete",value:function t(t){if(!t)return!1;var e;c(t,V)?e=t.value:e=t;var r=this.head,n=null;for(;r;){if(r.value===e)return n===null?(this._head=r.next,r===this.tail&&(this._tail=null)):(n.next=r.next,r===this.tail&&(this._tail=n)),this._length--,!0;n=r,r=r.next}return!1}},{key:"insertAt",value:function t(t,e){if(t<0||t>this.length)return!1;if(t===0)return this.unshift(e),!0;if(t===this.length)return this.push(e),!0;var r=new V(e),n=this.getNodeAt(t-1);return r.next=n.next,n.next=r,this._length++,!0}},{key:"isEmpty",value:function t(){return this.length===0}},{key:"clear",value:function t(){this._head=null,this._tail=null,this._length=0}},{key:"toArray",value:function t(){var t=[],e=this.head;for(;e;)t.push(e.value),e=e.next;return t}},{key:"reverse",value:function t(){if(!this.head||this.head===this.tail)return;var t=null,e=this.head,r=null;for(;e;)r=e.next,e.next=t,t=e,e=r;var n;n=[this.tail,this.head],this._head=n[0],this._tail=n[1],n}},{key:"find",value:function t(t){var e=this.head;for(;e;){if(t(e.value))return e.value;e=e.next}return null}},{key:"indexOf",value:function t(t){var e=0,r=this.head;for(;r;){if(r.value===t)return e;e++,r=r.next}return-1}},{key:"getNode",value:function t(t){var e=this.head;for(;e;){if(e.value===t)return e;e=e.next}return null}},{key:"insertBefore",value:function t(t,e){if(!this.head)return!1;var r;if(c(t,V)?r=t.value:r=t,this.head.value===r)return this.unshift(e),!0;var n=this.head;for(;n.next;){if(n.next.value===r){var i=new V(e);return i.next=n.next,n.next=i,this._length++,!0}n=n.next}return!1}},{key:"insertAfter",value:function t(t,e){var r;if(c(t,V)?r=t:r=this.getNode(t),r){var n=new V(e);return n.next=r.next,r.next=n,r===this.tail&&(this._tail=n),this._length++,!0}return!1}},{key:"countOccurrences",value:function t(t){var e=0,r=this.head;for(;r;)r.value===t&&e++,r=r.next;return e}},{key:"forEach",value:function t(t){var e=this.head,r=0;for(;e;)t(e.value,r),e=e.next,r++}},{key:"map",value:function e(e){var r=new t,n=this.head;for(;n;)r.push(e(n.value)),n=n.next;return r}},{key:"filter",value:function e(e){var r=new t,n=this.head;for(;n;)e(n.value)&&r.push(n.value),n=n.next;return r}},{key:"reduce",value:function t(t,e){var r=e,n=this.head;for(;n;)r=t(r,n.value),n=n.next;return r}},{key:Symbol.iterator,value:function t(){var t;return T(this,function(e){switch(e.label){case 0:t=this.head;e.label=1;case 1:if(!t)return[3,4];return[4,t.value];case 2:e.sent(),t=t.next;e.label=3;case 3:return[3,1];case 4:return[2]}})}}],[{key:"fromArray",value:function e(e){var r=new t;var n=true,i=false,a=undefined;try{for(var u=e[Symbol.iterator](),o;!(n=(o=u.next()).done);n=true){var s=o.value;r.push(s)}}catch(t){i=true;a=t}finally{try{if(!n&&u.return!=null){u.return()}}finally{if(i){throw a}}}return r}}]);return t}();var L=function t(e){u(this,t);g(this,"value");g(this,"next");g(this,"prev");this.value=e,this.next=null,this.prev=null},C=/*#__PURE__*/function(){function t(){u(this,t);g(this,"_head");g(this,"_tail");g(this,"_length");this._head=null,this._tail=null,this._length=0}l(t,[{key:"head",get:function t(){return this._head}},{key:"tail",get:function t(){return this._tail}},{key:"length",get:function t(){return this._length}},{key:"size",get:function t(){return this.length}},{key:"push",value:function t(t){var e=new L(t);this.head?(e.prev=this.tail,this.tail.next=e,this._tail=e):(this._head=e,this._tail=e),this._length++}},{key:"addLast",value:function t(t){this.push(t)}},{key:"pop",value:function t(){if(!this.tail)return;var t=this.tail;return this.head===this.tail?(this._head=null,this._tail=null):(this._tail=t.prev,this.tail.next=null),this._length--,t.value}},{key:"popLast",value:function t(){return this.pop()}},{key:"shift",value:function t(){if(!this.head)return;var t=this.head;return this.head===this.tail?(this._head=null,this._tail=null):(this._head=t.next,this.head.prev=null),this._length--,t.value}},{key:"popFirst",value:function t(){return this.shift()}},{key:"unshift",value:function t(t){var e=new L(t);this.head?(e.next=this.head,this.head.prev=e,this._head=e):(this._head=e,this._tail=e),this._length++}},{key:"addFirst",value:function t(t){this.unshift(t)}},{key:"getFirst",value:function t(){var t;return(t=this.head)===null||t===void 0?void 0:t.value}},{key:"getLast",value:function t(){var t;return(t=this.tail)===null||t===void 0?void 0:t.value}},{key:"getAt",value:function t(t){if(t<0||t>=this.length)return;var e=this.head;for(var r=0;r<t;r++)e=e.next;return e.value}},{key:"getNodeAt",value:function t(t){if(t<0||t>=this.length)return null;var e=this.head;for(var r=0;r<t;r++)e=e.next;return e}},{key:"getNode",value:function t(t){var e=this.head;for(;e;){if(e.value===t)return e;e=e.next}return null}},{key:"insertAt",value:function t(t,e){if(t<0||t>this.length)return!1;if(t===0)return this.unshift(e),!0;if(t===this.length)return this.push(e),!0;var r=new L(e),n=this.getNodeAt(t-1),i=n.next;return r.prev=n,r.next=i,n.next=r,i.prev=r,this._length++,!0}},{key:"insertBefore",value:function t(t,e){var r;if(c(t,L)?r=t:r=this.getNode(t),r){var n=new L(e);return n.prev=r.prev,r.prev&&(r.prev.next=n),n.next=r,r.prev=n,r===this.head&&(this._head=n),this._length++,!0}return!1}},{key:"deleteAt",value:function t(t){if(t<0||t>=this.length)return;if(t===0)return this.shift();if(t===this.length-1)return this.pop();var e=this.getNodeAt(t),r=e.prev,n=e.next;return r.next=n,n.prev=r,this._length--,e.value}},{key:"delete",value:function t(t){var e;if(c(t,L)?e=t:e=this.getNode(t),e){if(e===this.head)this.shift();else if(e===this.tail)this.pop();else{var r=e.prev,n=e.next;r.next=n,n.prev=r,this._length--}return!0}return!1}},{key:"toArray",value:function t(){var t=[],e=this.head;for(;e;)t.push(e.value),e=e.next;return t}},{key:"isEmpty",value:function t(){return this.length===0}},{key:"clear",value:function t(){this._head=null,this._tail=null,this._length=0}},{key:"find",value:function t(t){var e=this.head;for(;e;){if(t(e.value))return e.value;e=e.next}return null}},{key:"indexOf",value:function t(t){var e=0,r=this.head;for(;r;){if(r.value===t)return e;e++,r=r.next}return-1}},{key:"findBackward",value:function t(t){var e=this.tail;for(;e;){if(t(e.value))return e.value;e=e.prev}return null}},{key:"toArrayBackward",value:function t(){var t=[],e=this.tail;for(;e;)t.push(e.value),e=e.prev;return t}},{key:"reverse",value:function t(){var t=this.head;var e;for(e=[this.tail,this.head],this._head=e[0],this._tail=e[1],e;t;){var r=t.next;var n;n=[t.next,t.prev],t.prev=n[0],t.next=n[1],n,t=r}}},{key:"forEach",value:function t(t){var e=this.head,r=0;for(;e;)t(e.value,r),e=e.next,r++}},{key:"map",value:function e(e){var r=new t,n=this.head;for(;n;)r.push(e(n.value)),n=n.next;return r}},{key:"filter",value:function e(e){var r=new t,n=this.head;for(;n;)e(n.value)&&r.push(n.value),n=n.next;return r}},{key:"reduce",value:function t(t,e){var r=e,n=this.head;for(;n;)r=t(r,n.value),n=n.next;return r}},{key:"insertAfter",value:function t(t,e){var r;if(c(t,L)?r=t:r=this.getNode(t),r){var n=new L(e);return n.next=r.next,r.next&&(r.next.prev=n),n.prev=r,r.next=n,r===this.tail&&(this._tail=n),this._length++,!0}return!1}},{key:Symbol.iterator,value:function t(){var t;return T(this,function(e){switch(e.label){case 0:t=this.head;e.label=1;case 1:if(!t)return[3,4];return[4,t.value];case 2:e.sent(),t=t.next;e.label=3;case 3:return[3,1];case 4:return[2]}})}}],[{key:"fromArray",value:function e(e){var r=new t;var n=true,i=false,a=undefined;try{for(var u=e[Symbol.iterator](),o;!(n=(o=u.next()).done);n=true){var s=o.value;r.push(s)}}catch(t){i=true;a=t}finally{try{if(!n&&u.return!=null){u.return()}}finally{if(i){throw a}}}return r}}]);return t}();var P=function t(e,r,n){u(this,t);g(this,"key");g(this,"value");g(this,"forward");this.key=e,this.value=r,this.forward=new Array(n)},F=/*#__PURE__*/function(){function t(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:16,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:.5;u(this,t);g(this,"_head");g(this,"_level");g(this,"_maxLevel");g(this,"_probability");this._head=new P(null,null,e),this._level=0,this._maxLevel=e,this._probability=r}l(t,[{key:"head",get:function t(){return this._head}},{key:"level",get:function t(){return this._level}},{key:"maxLevel",get:function t(){return this._maxLevel}},{key:"probability",get:function t(){return this._probability}},{key:"add",value:function t(t,e){var r=new P(t,e,this._randomLevel()),n=new Array(this.maxLevel).fill(this.head),i=this.head;for(var a=this.level-1;a>=0;a--){for(;i.forward[a]&&i.forward[a].key<t;)i=i.forward[a];n[a]=i}for(var u=0;u<r.forward.length;u++)r.forward[u]=n[u].forward[u],n[u].forward[u]=r;r.forward[0]!==null&&(this._level=Math.max(this.level,r.forward.length))}},{key:"get",value:function t(t){var e=this.head;for(var r=this.level-1;r>=0;r--)for(;e.forward[r]&&e.forward[r].key<t;)e=e.forward[r];if(e=e.forward[0],e&&e.key===t)return e.value}},{key:"has",value:function t(t){return this.get(t)!==void 0}},{key:"delete",value:function t(t){var e=new Array(this.maxLevel).fill(this.head),r=this.head;for(var n=this.level-1;n>=0;n--){for(;r.forward[n]&&r.forward[n].key<t;)r=r.forward[n];e[n]=r}if(r=r.forward[0],r&&r.key===t){for(var i=0;i<this.level&&e[i].forward[i]===r;i++)e[i].forward[i]=r.forward[i];for(;this.level>0&&this.head.forward[this.level-1]===null;)this._level--;return!0}return!1}},{key:"getFirst",value:function t(){var t=this.head.forward[0];return t?t.value:void 0}},{key:"getLast",value:function t(){var t=this.head;for(var e=this.level-1;e>=0;e--)for(;t.forward[e];)t=t.forward[e];return t.value}},{key:"higher",value:function t(t){var e=this.head;for(var r=this.level-1;r>=0;r--)for(;e.forward[r]&&e.forward[r].key<=t;)e=e.forward[r];var n=e.forward[0];return n?n.value:void 0}},{key:"lower",value:function t(t){var e=this.head,r=null;for(var n=this.level-1;n>=0;n--){for(;e.forward[n]&&e.forward[n].key<t;)e=e.forward[n];e.key<t&&(r=e)}return r?r.value:void 0}},{key:"_randomLevel",value:function t(){var t=1;for(;Math.random()<this.probability&&t<this.maxLevel;)t++;return t}}]);return t}();var D=/*#__PURE__*/function(){function t(e){u(this,t);g(this,"_elements");this._elements=Array.isArray(e)?e:[]}l(t,[{key:"elements",get:function t(){return this._elements}},{key:"isEmpty",value:function t(){return this.elements.length===0}},{key:"size",value:function t(){return this.elements.length}},{key:"peek",value:function t(){return this.isEmpty()?null:this.elements[this.elements.length-1]}},{key:"push",value:function t(t){return this.elements.push(t),this}},{key:"pop",value:function t(){return this.isEmpty()?null:this.elements.pop()||null}},{key:"toArray",value:function t(){return this.elements.slice()}},{key:"clear",value:function t(){this._elements=[]}},{key:"clone",value:function e(){return new t(this.elements.slice())}}],[{key:"fromArray",value:function e(e){return new t(e)}}]);return t}();var j=/*#__PURE__*/function(t){v(r,t);var e=R(r);function r(){u(this,r);return e.apply(this,arguments)}l(r,[{key:"enqueue",value:function t(t){this.push(t)}},{key:"dequeue",value:function t(){return this.shift()}},{key:"getFirst",value:function t(){var t;return(t=this.head)===null||t===void 0?void 0:t.value}},{key:"peek",value:function t(){return this.getFirst()}}]);return r}(A),K=/*#__PURE__*/function(){function t(e){u(this,t);g(this,"_nodes");g(this,"_offset");this._nodes=e||[],this._offset=0}l(t,[{key:"nodes",get:function t(){return this._nodes}},{key:"offset",get:function t(){return this._offset}},{key:"size",get:function t(){return this.nodes.length-this.offset}},{key:"push",value:function t(t){return this.nodes.push(t),this}},{key:"shift",value:function t(){if(this.size===0)return;var t=this.getFirst();return this._offset+=1,this.offset*2<this.nodes.length||(this._nodes=this.nodes.slice(this.offset),this._offset=0),t}},{key:"getFirst",value:function t(){return this.size>0?this.nodes[this.offset]:void 0}},{key:"peek",value:function t(){return this.getFirst()}},{key:"getLast",value:function t(){return this.size>0?this.nodes[this.nodes.length-1]:void 0}},{key:"peekLast",value:function t(){return this.getLast()}},{key:"enqueue",value:function t(t){this.push(t)}},{key:"dequeue",value:function t(){return this.shift()}},{key:"getAt",value:function t(t){return this.nodes[t]}},{key:"isEmpty",value:function t(){return this.size===0}},{key:"toArray",value:function t(){return this.nodes.slice(this.offset)}},{key:"clear",value:function t(){this._nodes=[],this._offset=0}},{key:"clone",value:function e(){return new t(this.nodes.slice(this.offset))}},{key:Symbol.iterator,value:function t(){var t,e,r,n,i,a,u;return T(this,function(o){switch(o.label){case 0:t=true,e=false,r=undefined;o.label=1;case 1:o.trys.push([1,6,7,8]);n=this.nodes[Symbol.iterator]();o.label=2;case 2:if(!!(t=(i=n.next()).done))return[3,5];a=i.value;return[4,a];case 3:o.sent();o.label=4;case 4:t=true;return[3,2];case 5:return[3,8];case 6:u=o.sent();e=true;r=u;return[3,8];case 7:try{if(!t&&n.return!=null){n.return()}}finally{if(e){throw r}}return[7];case 8:return[2]}})}}],[{key:"fromArray",value:function e(e){return new t(e)}}]);return t}();var H=/*#__PURE__*/function(t){v(r,t);var e=R(r);function r(){u(this,r);return e.apply(this,arguments)}return r}(C),B=/*#__PURE__*/function(){function t(e){u(this,t);g(this,"_nodes",{});g(this,"_capacity",Number.MAX_SAFE_INTEGER);g(this,"_first",-1);g(this,"_last",-1);g(this,"_size",0);e!==void 0&&(this._capacity=e)}l(t,[{key:"nodes",get:function t(){return this._nodes}},{key:"capacity",get:function t(){return this._capacity}},{key:"first",get:function t(){return this._first}},{key:"last",get:function t(){return this._last}},{key:"size",get:function t(){return this._size}},{key:"addFirst",value:function t(t){if(this.size===0){var e=Math.floor(this.capacity/2);this._first=e,this._last=e}else this._first--;this.nodes[this.first]=t,this._size++}},{key:"addLast",value:function t(t){if(this.size===0){var e=Math.floor(this.capacity/2);this._first=e,this._last=e}else this._last++;this.nodes[this.last]=t,this._size++}},{key:"popFirst",value:function t(){if(!this.size)return;var t=this.getFirst();return delete this.nodes[this.first],this._first++,this._size--,t}},{key:"getFirst",value:function t(){if(this.size)return this.nodes[this.first]}},{key:"popLast",value:function t(){if(!this.size)return;var t=this.getLast();return delete this.nodes[this.last],this._last--,this._size--,t}},{key:"getLast",value:function t(){if(this.size)return this.nodes[this.last]}},{key:"get",value:function t(t){return this.nodes[this.first+t]||null}},{key:"isEmpty",value:function t(){return this.size<=0}}]);return t}(),q=/*#__PURE__*/function(){function t(){u(this,t);g(this,"_nodes",[])}l(t,[{key:"nodes",get:function t(){return this._nodes}},{key:"size",get:function t(){return this.nodes.length}},{key:"addLast",value:function t(t){return this.nodes.push(t)}},{key:"popLast",value:function t(){var t;return(t=this.nodes.pop())!==null&&t!==void 0?t:null}},{key:"popFirst",value:function t(){var t;return(t=this.nodes.shift())!==null&&t!==void 0?t:null}},{key:"addFirst",value:function t(t){return this.nodes.unshift(t)}},{key:"getFirst",value:function t(){var t;return(t=this.nodes[0])!==null&&t!==void 0?t:null}},{key:"getLast",value:function t(){var t;return(t=this.nodes[this.nodes.length-1])!==null&&t!==void 0?t:null}},{key:"get",value:function t(t){var e;return(e=this.nodes[t])!==null&&e!==void 0?e:null}},{key:"set",value:function t(t,e){return this.nodes[t]=e}},{key:"insert",value:function t(t,e){return this.nodes.splice(t,0,e)}},{key:"delete",value:function t(t){return this.nodes.splice(t,1)}},{key:"isEmpty",value:function t(){return this.nodes.length===0}}]);return t}();var U=function t(){return"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx".replace(/[x]/g,function(t){var e=Math.random()*16|0;return(t=="x"?e:e&3|8).toString(16)})},G=function t(t,e){var r=-1,n=t?t.length:0,i=[];for(;++r<n;){var a=t[r];e(a,r,t)&&(i.push(a),Array.prototype.splice.call(t,r--,1),n--)}return i},W=Symbol("thunk"),Q=function(t){return typeof t=="function"&&t.__THUNK__===W},Y=function(t){var e=function(){return t()};return e.__THUNK__=W,e},X=function(t){return Object.assign(function(){for(var e=arguments.length,r=new Array(e),n=0;n<e;n++){r[n]=arguments[n]}var i=t.apply(void 0,w(r));for(;Q(i)&&typeof i=="function";)i=i();return i},{cont:function(){for(var e=arguments.length,r=new Array(e),n=0;n<e;n++){r[n]=arguments[n]}return Y(function(){return t.apply(void 0,w(r))})}})},J=function(t){return Object.assign(/*#__PURE__*/a(function(){var e,r,n,i;var a=arguments;return T(this,function(u){switch(u.label){case 0:for(e=a.length,r=new Array(e),n=0;n<e;n++){r[n]=a[n]}return[4,t.apply(void 0,w(r))];case 1:i=u.sent();u.label=2;case 2:if(!(Q(i)&&typeof i=="function"))return[3,5];return[4,i()];case 3:i=u.sent();u.label=4;case 4:return[3,2];case 5:return[2,i]}})}),{cont:function(){for(var e=arguments.length,r=new Array(e),n=0;n<e;n++){r[n]=arguments[n]}return Y(function(){return t.apply(void 0,w(r))})}})},Z=function(t){return t<=0?0:1<<31-Math.clz32(t)};var $=/*#__PURE__*/function(){function t(e){u(this,t);g(this,"_nodes",[]);g(this,"_comparator");this._comparator=e.comparator,e.nodes&&e.nodes.length>0&&(this._nodes=e.nodes,this.fix())}l(t,[{key:"nodes",get:function t(){return this._nodes}},{key:"comparator",get:function t(){return this._comparator}},{key:"size",get:function t(){return this.nodes.length}},{key:"leaf",get:function t(){var t;return(t=this.nodes[this.size-1])!==null&&t!==void 0?t:void 0}},{key:"add",value:function t(t){return this.push(t)}},{key:"push",value:function t(t){return this.nodes.push(t),this.bubbleUp(this.nodes.length-1),this}},{key:"poll",value:function t(){if(this.nodes.length===0)return;if(this.nodes.length===1)return this.nodes.pop();var t=this.nodes[0];return this.nodes[0]=this.nodes.pop(),this.sinkDown(0),t}},{key:"pop",value:function t(){return this.poll()}},{key:"peek",value:function t(){if(this.nodes.length!==0)return this.nodes[0]}},{key:"isEmpty",value:function t(){return this.size===0}},{key:"clear",value:function t(){this._nodes=[]}},{key:"refill",value:function t(t){this._nodes=t,this.fix()}},{key:"has",value:function t(t){return this.nodes.includes(t)}},{key:"dfs",value:function t(t){var e=this;var r=[],n=function(i){i<e.size&&(t==="in"?(n(2*i+1),r.push(e.nodes[i]),n(2*i+2)):t==="pre"?(r.push(e.nodes[i]),n(2*i+1),n(2*i+2)):t==="post"&&(n(2*i+1),n(2*i+2),r.push(e.nodes[i])))};return n(0),r}},{key:"toArray",value:function t(){return w(this.nodes)}},{key:"getNodes",value:function t(){return this.nodes}},{key:"clone",value:function e(){var e=new t({comparator:this.comparator});return e._nodes=w(this.nodes),e}},{key:"sort",value:function t(){var t=[],e=this.clone();for(;e.size!==0;){var r=e.poll();r&&t.push(r)}return t}},{key:"bubbleUp",value:function t(t){var e=this.nodes[t];for(;t>0;){var r=Math.floor((t-1)/2),n=this.nodes[r];if(this.comparator(e,n)<0)this.nodes[t]=n,this.nodes[r]=e,t=r;else break}}},{key:"sinkDown",value:function t(t){var e=2*t+1,r=2*t+2,n=this.nodes.length,i=t;if(e<n&&this.comparator(this.nodes[e],this.nodes[i])<0&&(i=e),r<n&&this.comparator(this.nodes[r],this.nodes[i])<0&&(i=r),i!==t){var a=this.nodes[t];this.nodes[t]=this.nodes[i],this.nodes[i]=a,this.sinkDown(i)}}},{key:"fix",value:function t(){for(var t=Math.floor(this.size/2);t>=0;t--)this.sinkDown(t)}}],[{key:"heapify",value:function e(e){return new t(e)}}]);return t}(),tt=function t(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;u(this,t);g(this,"element");g(this,"degree");g(this,"left");g(this,"right");g(this,"child");g(this,"parent");g(this,"marked");this.element=e,this.degree=r,this.marked=!1},te=/*#__PURE__*/function(){function t(e){u(this,t);g(this,"_root");g(this,"_size",0);g(this,"_min");g(this,"_comparator");if(this.clear(),this._comparator=e||this.defaultComparator,typeof this.comparator!="function")throw new Error("FibonacciHeap constructor: given comparator should be a function.")}l(t,[{key:"root",get:function t(){return this._root}},{key:"size",get:function t(){return this._size}},{key:"min",get:function t(){return this._min}},{key:"comparator",get:function t(){return this._comparator}},{key:"clear",value:function t(){this._root=void 0,this._min=void 0,this._size=0}},{key:"add",value:function t(t){return this.push(t)}},{key:"push",value:function t(t){var e=this.createNode(t);return e.left=e,e.right=e,this.mergeWithRoot(e),(!this.min||this.comparator(e.element,this.min.element)<=0)&&(this._min=e),this._size++,this}},{key:"peek",value:function t(){return this.min?this.min.element:void 0}},{key:"consumeLinkedList",value:function t(t){var e=[];if(!t)return e;var r=t,n=!1;for(;!(r===t&&n);)r===t&&(n=!0),r&&(e.push(r),r=r.right);return e}},{key:"mergeWithChild",value:function t(t,e){t.child?(e.right=t.child.right,e.left=t.child,t.child.right.left=e,t.child.right=e):t.child=e}},{key:"poll",value:function t(){return this.pop()}},{key:"pop",value:function t(){if(this.size===0)return;var t=this.min;if(t.child){var e=this.consumeLinkedList(t.child);var r=true,n=false,i=undefined;try{for(var a=e[Symbol.iterator](),u;!(r=(u=a.next()).done);r=true){var o=u.value;this.mergeWithRoot(o),o.parent=void 0}}catch(t){n=true;i=t}finally{try{if(!r&&a.return!=null){a.return()}}finally{if(n){throw i}}}}return this.removeFromRoot(t),t===t.right?(this._min=void 0,this._root=void 0):(this._min=t.right,this.consolidate()),this._size--,t.element}},{key:"merge",value:function t(t){if(t.size!==0){if(this.root&&t.root){var e=this.root,r=t.root,n=e.right,i=r.left;e.right=r,r.left=e,n.left=i,i.right=n}(!this.min||t.min&&this.comparator(t.min.element,this.min.element)<0)&&(this._min=t.min),this._size+=t.size,t.clear()}}},{key:"defaultComparator",value:function t(t,e){return t<e?-1:t>e?1:0}},{key:"createNode",value:function t(t){return new tt(t)}},{key:"mergeWithRoot",value:function t(t){this.root?(t.right=this.root.right,t.left=this.root,this.root.right.left=t,this.root.right=t):this._root=t}},{key:"removeFromRoot",value:function t(t){this.root===t&&(this._root=t.right),t.left&&(t.left.right=t.right),t.right&&(t.right.left=t.left)}},{key:"link",value:function t(t,e){this.removeFromRoot(t),t.left=t,t.right=t,this.mergeWithChild(e,t),e.degree++,t.parent=e}},{key:"consolidate",value:function t(){var t=new Array(this.size),e=this.consumeLinkedList(this.root),r,n,i,a;var u=true,o=false,s=undefined;try{for(var l=e[Symbol.iterator](),h;!(u=(h=l.next()).done);u=true){var f=h.value;for(r=f,i=r.degree;t[i];)n=t[i],this.comparator(r.element,n.element)>0&&(a=r,r=n,n=a),this.link(n,r),t[i]=void 0,i++;t[i]=r}}catch(t){o=true;s=t}finally{try{if(!u&&l.return!=null){l.return()}}finally{if(o){throw s}}}for(var v=0;v<this.size;v++)t[v]&&this.comparator(t[v].element,this.min.element)<=0&&(this._min=t[v])}}]);return t}();var tr=/*#__PURE__*/function(t){v(r,t);var e=R(r);function r(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{comparator:function(t,e){if(typeof t=="number"&&typeof e=="number")return e-t;throw new Error("The a, b params of compare function must be number")}};u(this,r);return e.call(this,t)}return r}($);var tn=/*#__PURE__*/function(t){v(r,t);var e=R(r);function r(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{comparator:function(t,e){if(typeof t=="number"&&typeof e=="number")return t-e;throw new Error("The a, b params of compare function must be number")}};u(this,r);return e.call(this,t)}return r}($);var ti=/*#__PURE__*/function(t){v(r,t);var e=R(r);function r(t){u(this,r);return e.call(this,t)}return r}($);var ta=/*#__PURE__*/function(t){v(r,t);var e=R(r);function r(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{comparator:function(t,e){if(typeof t=="number"&&typeof e=="number")return t-e;throw new Error("The a, b params of compare function must be number")}};u(this,r);return e.call(this,t)}return r}(ti);var tu=/*#__PURE__*/function(t){v(r,t);var e=R(r);function r(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{comparator:function(t,e){if(typeof t=="number"&&typeof e=="number")return e-t;throw new Error("The a, b params of compare function must be number")}};u(this,r);return e.call(this,t)}return r}(ti);var to=function t(e,r){u(this,t);g(this,"key");g(this,"value");this.key=e,this.value=r},ts=/*#__PURE__*/function(){function t(e,r){u(this,t);g(this,"value");g(this,"weight");g(this,"_hashCode");this.weight=e!==void 0?e:1,this.value=r,this._hashCode=U()}l(t,[{key:"hashCode",get:function t(){return this._hashCode}}]);return t}(),tl=/*#__PURE__*/function(){function t(){u(this,t);g(this,"_vertices",new Map)}l(t,[{key:"vertices",get:function t(){return this._vertices}},{key:"getVertex",value:function t(t){return this._vertices.get(t)||null}},{key:"hasVertex",value:function t(t){return this._vertices.has(this._getVertexKey(t))}},{key:"addVertex",value:function t(t,e){if(c(t,to))return this._addVertexOnly(t);{var r=this.createVertex(t,e);return this._addVertexOnly(r)}}},{key:"deleteVertex",value:function t(t){var e=this._getVertexKey(t);return this._vertices.delete(e)}},{key:"removeManyVertices",value:function t(t){var e=[];var r=true,n=false,i=undefined;try{for(var a=t[Symbol.iterator](),u;!(r=(u=a.next()).done);r=true){var o=u.value;e.push(this.deleteVertex(o))}}catch(t){n=true;i=t}finally{try{if(!r&&a.return!=null){a.return()}}finally{if(n){throw i}}}return e.length>0}},{key:"hasEdge",value:function t(t,e){return!!this.getEdge(t,e)}},{key:"addEdge",value:function t(t,e,r,n){if(c(t,ts))return this._addEdgeOnly(t);if(c(e,to)||typeof e=="string"||typeof e=="number"){if(!(this.hasVertex(t)&&this.hasVertex(e)))return!1;c(t,to)&&(t=t.key),c(e,to)&&(e=e.key);var i=this.createEdge(t,e,r,n);return this._addEdgeOnly(i)}else throw new Error("dest must be a Vertex or vertex key while srcOrEdge is an Edge")}},{key:"setEdgeWeight",value:function t(t,e,r){var n=this.getEdge(t,e);return n?(n.weight=r,!0):!1}},{key:"getAllPathsBetween",value:function t(t,e){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1e3;var n=[],i=this._getVertex(t),a=this._getVertex(e);if(!(i&&a))return[];var u=[];for(u.push({vertex:i,path:[i]});u.length>0;){var o=u.pop(),s=o.vertex,l=o.path;if(s===a&&(n.push(l),n.length>=r))return n;var h=this.getNeighbors(s);var f=true,v=false,c=undefined;try{for(var d=h[Symbol.iterator](),y;!(f=(y=d.next()).done);f=true){var g=y.value;if(!l.includes(g)){var p=w(l).concat([g]);u.push({vertex:g,path:p})}}}catch(t){v=true;c=t}finally{try{if(!f&&d.return!=null){d.return()}}finally{if(v){throw c}}}}return n}},{key:"getPathSumWeight",value:function t(t){var e;var r=0;for(var n=0;n<t.length;n++)r+=((e=this.getEdge(t[n],t[n+1]))===null||e===void 0?void 0:e.weight)||0;return r}},{key:"getMinCostBetween",value:function t(t,e,r){if(r===void 0&&(r=!1),r){var n=this.getAllPathsBetween(t,e),i=1/0;var a=true,u=false,o=undefined;try{for(var s=n[Symbol.iterator](),l;!(a=(l=s.next()).done);a=true){var h=l.value;i=Math.min(this.getPathSumWeight(h),i)}}catch(t){u=true;o=t}finally{try{if(!a&&s.return!=null){s.return()}}finally{if(u){throw o}}}return i}else{var f=this._getVertex(e),v=this._getVertex(t);if(!(v&&f))return null;var c=new Map,d=new K([v]);c.set(v,!0);var y=0;for(;d.size>0;){for(var g=0;g<d.size;g++){var p=d.shift();if(p===f)return y;if(p!==void 0){var _=this.getNeighbors(p);var k=true,m=false,b=undefined;try{for(var x=_[Symbol.iterator](),w;!(k=(w=x.next()).done);k=true){var N=w.value;c.has(N)||(c.set(N,!0),d.push(N))}}catch(t){m=true;b=t}finally{try{if(!k&&x.return!=null){x.return()}}finally{if(m){throw b}}}}}y++}return null}}},{key:"getMinPathBetween",value:function t(t,e,r){var n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;var i=this;var a;var u;if(r===void 0&&(r=!1),r)if(n){var o=this.getAllPathsBetween(t,e,1e4),s=1/0,l=-1,h=0;var f=true,v=false,c=undefined;try{for(var d=o[Symbol.iterator](),y;!(f=(y=d.next()).done);f=true){var g=y.value;var p=this.getPathSumWeight(g);p<s&&(s=p,l=h),h++}}catch(t){v=true;c=t}finally{try{if(!f&&d.return!=null){d.return()}}finally{if(v){throw c}}}return o[l]||null}else return(u=(a=this.dijkstra(t,e,!0,!0))===null||a===void 0?void 0:a.minPath)!==null&&u!==void 0?u:[];else{var _=[],k=this._getVertex(t),m=this._getVertex(e);if(!(k&&m))return[];var b=function(t,e,r,n){if(r.add(t),t===e){_=[k].concat(w(n));return}var a=i.getNeighbors(t);var u=true,o=false,s=undefined;try{for(var l=a[Symbol.iterator](),h;!(u=(h=l.next()).done);u=true){var f=h.value;r.has(f)||(n.push(f),b(f,e,r,n),n.pop())}}catch(t){o=true;s=t}finally{try{if(!u&&l.return!=null){l.return()}}finally{if(o){throw s}}}r.delete(t)};return b(k,m,new Set,[]),_}}},{key:"dijkstraWithoutHeap",value:function t(t,e,r,n){r===void 0&&(r=!1),n===void 0&&(n=!1),e===void 0&&(e=null);var i=1/0,a=null,u=[],o=[],s=this._vertices,l=new Map,h=new Set,f=new Map,v=this._getVertex(t),d=e?this._getVertex(e):null;if(!v)return null;var y=true,g=false,p=undefined;try{for(var _=s[Symbol.iterator](),k;!(y=(k=_.next()).done);y=true){var m=k.value;var x=m[1];c(x,to)&&l.set(x,1/0)}}catch(t){g=true;p=t}finally{try{if(!y&&_.return!=null){_.return()}}finally{if(g){throw p}}}l.set(v,0),f.set(v,null);var w=function(){var t=1/0,e=null;var r=true,n=false,i=undefined;try{for(var a=l[Symbol.iterator](),u;!(r=(u=a.next()).done);r=true){var o=b(u.value,2),s=o[0],f=o[1];h.has(s)||f<t&&(t=f,e=s)}}catch(t){n=true;i=t}finally{try{if(!r&&a.return!=null){a.return()}}finally{if(n){throw i}}}return e},N=function(t){var e=true,r=false,n=undefined;try{for(var i=s[Symbol.iterator](),a;!(e=(a=i.next()).done);e=true){var l=a.value;var h=l[1];if(c(h,to)){var v=[h],d=f.get(h);for(;d;)v.push(d),d=f.get(d);var y=v.reverse();l[1]===t&&(u=y),o.push(y)}}}catch(t){r=true;n=t}finally{try{if(!e&&i.return!=null){i.return()}}finally{if(r){throw n}}}};for(var E=1;E<s.size;E++){var M=w();if(M){if(h.add(M),d&&d===M)return r&&(i=l.get(d)||1/0),n&&N(d),{distMap:l,preMap:f,seen:h,paths:o,minDist:i,minPath:u};var S=this.getNeighbors(M);var R=true,T=false,O=undefined;try{for(var z=S[Symbol.iterator](),I;!(R=(I=z.next()).done);R=true){var V=I.value;if(!h.has(V)){var A=this.getEdge(M,V);if(A){var L=l.get(M),C=l.get(V);L!==void 0&&C!==void 0&&A.weight+L<C&&(l.set(V,A.weight+L),f.set(V,M))}}}}catch(t){T=true;O=t}finally{try{if(!R&&z.return!=null){z.return()}}finally{if(T){throw O}}}}}return r&&l.forEach(function(t,e){e!==v&&t<i&&(i=t,n&&(a=e))}),n&&N(a),{distMap:l,preMap:f,seen:h,paths:o,minDist:i,minPath:u}}},{key:"dijkstra",value:function t(t,e,r,n){r===void 0&&(r=!1),n===void 0&&(n=!1),e===void 0&&(e=null);var i=1/0,a=null,u=[],o=[],s=this._vertices,l=new Map,h=new Set,f=new Map,v=this._getVertex(t),d=e?this._getVertex(e):null;if(!v)return null;var y=true,g=false,p=undefined;try{for(var _=s[Symbol.iterator](),k;!(y=(k=_.next()).done);y=true){var m=k.value;var b=m[1];c(b,to)&&l.set(b,1/0)}}catch(t){g=true;p=t}finally{try{if(!y&&_.return!=null){_.return()}}finally{if(g){throw p}}}var x=new ti({comparator:function(t,e){return t.key-e.key}});x.add({key:0,value:v}),l.set(v,0),f.set(v,null);var w=function(t){var e=true,r=false,n=undefined;try{for(var i=s[Symbol.iterator](),a;!(e=(a=i.next()).done);e=true){var l=a.value;var h=l[1];if(c(h,to)){var v=[h],d=f.get(h);for(;d;)v.push(d),d=f.get(d);var y=v.reverse();l[1]===t&&(u=y),o.push(y)}}}catch(t){r=true;n=t}finally{try{if(!e&&i.return!=null){i.return()}}finally{if(r){throw n}}}};for(;x.size>0;){var N=x.poll(),E=N===null||N===void 0?void 0:N.key,M=N===null||N===void 0?void 0:N.value;if(E!==void 0&&M){if(h.add(M),d&&d===M)return r&&(i=l.get(d)||1/0),n&&w(d),{distMap:l,preMap:f,seen:h,paths:o,minDist:i,minPath:u};var S=this.getNeighbors(M);var R=true,T=false,O=undefined;try{for(var z=S[Symbol.iterator](),I;!(R=(I=z.next()).done);R=true){var V=I.value;if(!h.has(V)){var A;var L=(A=this.getEdge(M,V))===null||A===void 0?void 0:A.weight;if(typeof L=="number"){var C=l.get(V);C&&E+L<C&&(x.add({key:E+L,value:V}),f.set(V,M),l.set(V,E+L))}}}}catch(t){T=true;O=t}finally{try{if(!R&&z.return!=null){z.return()}}finally{if(T){throw O}}}}}return r&&l.forEach(function(t,e){e!==v&&t<i&&(i=t,n&&(a=e))}),n&&w(a),{distMap:l,preMap:f,seen:h,paths:o,minDist:i,minPath:u}}},{key:"bellmanFord",value:function t(t,e,r,n){r===void 0&&(r=!1),n===void 0&&(n=!1);var i=this._getVertex(t),a=[],u=new Map,o=new Map,s=1/0,l=[],h;if(e&&(h=!1),!i)return{hasNegativeCycle:h,distMap:u,preMap:o,paths:a,min:s,minPath:l};var f=this._vertices,v=f.size,d=this.edgeSet(),y=d.length;this._vertices.forEach(function(t){u.set(t,1/0)}),u.set(i,0);for(var g=1;g<v;++g)for(var p=0;p<y;++p){var _=this.getEndsOfEdge(d[p]);if(_){var k=b(_,2),m=k[0],x=k[1],w=d[p].weight,N=u.get(m),E=u.get(x);N!==void 0&&E!==void 0&&u.get(m)!==1/0&&N+w<E&&(u.set(x,N+w),n&&o.set(x,m))}}var M=null;var S=true,R=false,T=undefined;if(r&&u.forEach(function(t,e){e!==i&&t<s&&(s=t,n&&(M=e))}),n)try{for(var O=f[Symbol.iterator](),z;!(S=(z=O.next()).done);S=true){var I=z.value;var V=I[1];if(c(V,to)){var A=[V],L=o.get(V);for(;L!==void 0;)A.push(L),L=o.get(L);var C=A.reverse();I[1]===M&&(l=C),a.push(C)}}}catch(t){R=true;T=t}finally{try{if(!S&&O.return!=null){O.return()}}finally{if(R){throw T}}}for(var P=0;P<y;++P){var F=this.getEndsOfEdge(d[P]);if(F){var D=b(F,1),j=D[0],K=d[P].weight,H=u.get(j);H&&H!==1/0&&H+K<H&&(h=!0)}}return{hasNegativeCycle:h,distMap:u,preMap:o,paths:a,min:s,minPath:l}}},{key:"floydWarshall",value:function t(){var t;var e=w(this._vertices),r=e.length,n=[],i=[];for(var a=0;a<r;a++){n[a]=[],i[a]=[];for(var u=0;u<r;u++)i[a][u]=null}for(var o=0;o<r;o++)for(var s=0;s<r;s++)n[o][s]=((t=this.getEdge(e[o][1],e[s][1]))===null||t===void 0?void 0:t.weight)||1/0;for(var l=0;l<r;l++)for(var h=0;h<r;h++)for(var f=0;f<r;f++)n[h][f]>n[h][l]+n[l][f]&&(n[h][f]=n[h][l]+n[l][f],i[h][f]=e[l][1]);return{costs:n,predecessor:i}}},{key:"tarjan",value:function t(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;var i=this;t===void 0&&(t=!1),e===void 0&&(e=!1),r===void 0&&(r=!1),n===void 0&&(n=!1);var a=new Map,u=new Map,o=this._vertices;o.forEach(function(t){a.set(t,-1),u.set(t,1/0)});var s=b(o.values(),1),l=s[0],h=[],f=[],v=0,c=function(r,n){v++,a.set(r,v),u.set(r,v);var o=i.getNeighbors(r),s=0;var d=true,y=false,g=undefined;try{for(var p=o[Symbol.iterator](),_;!(d=(_=p.next()).done);d=true){var k=_.value;if(k!==n){a.get(k)===-1&&(s++,c(k,r));var m=u.get(k),b=u.get(r);b!==void 0&&m!==void 0&&u.set(r,Math.min(b,m));var x=a.get(r);if(m!==void 0&&x!==void 0&&(t&&(r===l&&s>=2||r!==l&&m>=x)&&h.push(r),e&&m>x)){var w=i.getEdge(r,k);w&&f.push(w)}}}}catch(t){y=true;g=t}finally{try{if(!d&&p.return!=null){p.return()}}finally{if(y){throw g}}}};c(l,null);var d=new Map,y=function(){var t=new Map;return u.forEach(function(e,r){var n;t.has(e)?(n=t.get(e))===null||n===void 0?void 0:n.push(r):t.set(e,[r])}),t};r&&(d=y());var g=new Map;if(n){var p=new Map;p.size<1&&(p=y()),p.forEach(function(t,e){t.length>1&&g.set(e,t)})}return{dfnMap:a,lowMap:u,bridges:f,cutVertexes:h,SCCs:d,cycles:g}}},{key:"getDFNMap",value:function t(){return this.tarjan(!1,!1,!1,!1).dfnMap}},{key:"getLowMap",value:function t(){return this.tarjan(!1,!1,!1,!1).lowMap}},{key:"getCycles",value:function t(){return this.tarjan(!1,!1,!1,!0).cycles}},{key:"getCutVertexes",value:function t(){return this.tarjan(!0,!1,!1,!1).cutVertexes}},{key:"getSCCs",value:function t(){return this.tarjan(!1,!1,!0,!1).SCCs}},{key:"getBridges",value:function t(){return this.tarjan(!1,!0,!1,!1).bridges}},{key:"_addVertexOnly",value:function t(t){return this.hasVertex(t)?!1:(this._vertices.set(t.key,t),!0)}},{key:"_getVertex",value:function t(t){var e=this._getVertexKey(t);return this._vertices.get(e)||null}},{key:"_getVertexKey",value:function t(t){return c(t,to)?t.key:t}}]);return t}();var th=/*#__PURE__*/function(t){v(r,t);var e=R(r);function r(t,n){u(this,r);return e.call(this,t,n)}return r}(to),tf=/*#__PURE__*/function(t){v(r,t);var e=R(r);function r(t,i,a,o){u(this,r);var s;s=e.call(this,a,o);g(n(s),"src");g(n(s),"dest");s.src=t,s.dest=i;return s}return r}(ts),tv=/*#__PURE__*/function(t){v(r,t);var e=R(r);function r(){u(this,r);var t;t=e.call(this);g(n(t),"_outEdgeMap",new Map);g(n(t),"_inEdgeMap",new Map);return t}l(r,[{key:"outEdgeMap",get:function t(){return this._outEdgeMap}},{key:"inEdgeMap",get:function t(){return this._inEdgeMap}},{key:"createVertex",value:function t(t,e){return new th(t,e!==null&&e!==void 0?e:t)}},{key:"createEdge",value:function t(t,e,r,n){return new tf(t,e,r!==null&&r!==void 0?r:1,n)}},{key:"getEdge",value:function t(t,e){var r=[];if(t!==null&&e!==null){var n=this._getVertex(t),i=this._getVertex(e);if(n&&i){var a=this._outEdgeMap.get(n);a&&(r=a.filter(function(t){return t.dest===i.key}))}}return r[0]||null}},{key:"deleteEdgeSrcToDest",value:function t(t,e){var r=this._getVertex(t),n=this._getVertex(e),i=null;if(!r||!n)return null;var a=this._outEdgeMap.get(r);a&&G(a,function(t){return t.dest===n.key});var u=this._inEdgeMap.get(n);return u&&(i=G(u,function(t){return t.src===r.key})[0]||null),i}},{key:"deleteEdge",value:function t(t){var e=null,r=this._getVertex(t.src),n=this._getVertex(t.dest);if(r&&n){var i=this._outEdgeMap.get(r);i&&i.length>0&&G(i,function(t){return t.src===r.key});var a=this._inEdgeMap.get(n);a&&a.length>0&&(e=G(a,function(t){return t.dest===n.key})[0])}return e}},{key:"deleteEdgesBetween",value:function t(t,e){var r=[];if(t&&e){var n=this.deleteEdgeSrcToDest(t,e),i=this.deleteEdgeSrcToDest(e,t);n&&r.push(n),i&&r.push(i)}return r}},{key:"incomingEdgesOf",value:function t(t){var e=this._getVertex(t);return e?this.inEdgeMap.get(e)||[]:[]}},{key:"outgoingEdgesOf",value:function t(t){var e=this._getVertex(t);return e?this._outEdgeMap.get(e)||[]:[]}},{key:"degreeOf",value:function t(t){return this.outDegreeOf(t)+this.inDegreeOf(t)}},{key:"inDegreeOf",value:function t(t){return this.incomingEdgesOf(t).length}},{key:"outDegreeOf",value:function t(t){return this.outgoingEdgesOf(t).length}},{key:"edgesOf",value:function t(t){return w(this.outgoingEdgesOf(t)).concat(w(this.incomingEdgesOf(t)))}},{key:"getEdgeSrc",value:function t(t){return this._getVertex(t.src)}},{key:"getEdgeDest",value:function t(t){return this._getVertex(t.dest)}},{key:"getDestinations",value:function t(t){if(t===null)return[];var e=[],r=this.outgoingEdgesOf(t);var n=true,i=false,a=undefined;try{for(var u=r[Symbol.iterator](),o;!(n=(o=u.next()).done);n=true){var s=o.value;var l=this.getEdgeDest(s);l&&e.push(l)}}catch(t){i=true;a=t}finally{try{if(!n&&u.return!=null){u.return()}}finally{if(i){throw a}}}return e}},{key:"topologicalSort",value:function t(t){var e=this;t=t!==null&&t!==void 0?t:"key";var r=new Map;var n=true,i=false,a=undefined;try{for(var u=this.vertices[Symbol.iterator](),o;!(n=(o=u.next()).done);n=true){var s=o.value;r.set(s[1],0)}}catch(t){i=true;a=t}finally{try{if(!n&&u.return!=null){u.return()}}finally{if(i){throw a}}}var l=[],h=!1,f=function(t){r.set(t,1);var n=e.getDestinations(t);var i=true,a=false,u=undefined;try{for(var o=n[Symbol.iterator](),s;!(i=(s=o.next()).done);i=true){var v=s.value;var c=r.get(v);c===0?f(v):c===1&&(h=!0)}}catch(t){a=true;u=t}finally{try{if(!i&&o.return!=null){o.return()}}finally{if(a){throw u}}}r.set(t,2),l.push(t)};var v=true,d=false,y=undefined;try{for(var g=this.vertices[Symbol.iterator](),p;!(v=(p=g.next()).done);v=true){var _=p.value;r.get(_[1])===0&&f(_[1])}}catch(t){d=true;y=t}finally{try{if(!v&&g.return!=null){g.return()}}finally{if(d){throw y}}}return h?null:(t==="key"&&(l=l.map(function(t){return c(t,th)?t.key:t})),l.reverse())}},{key:"edgeSet",value:function t(){var t=[];return this._outEdgeMap.forEach(function(e){t=w(t).concat(w(e))}),t}},{key:"getNeighbors",value:function t(t){var e=[],r=this._getVertex(t);if(r){var n=this.outgoingEdgesOf(r);var i=true,a=false,u=undefined;try{for(var o=n[Symbol.iterator](),s;!(i=(s=o.next()).done);i=true){var l=s.value;var h=this._getVertex(l.dest);h&&e.push(h)}}catch(t){a=true;u=t}finally{try{if(!i&&o.return!=null){o.return()}}finally{if(a){throw u}}}}return e}},{key:"getEndsOfEdge",value:function t(t){if(!this.hasEdge(t.src,t.dest))return null;var e=this._getVertex(t.src),r=this._getVertex(t.dest);return e&&r?[e,r]:null}},{key:"_addEdgeOnly",value:function t(t){if(!(this.hasVertex(t.src)&&this.hasVertex(t.dest)))return!1;var e=this._getVertex(t.src),r=this._getVertex(t.dest);if(e&&r){var n=this._outEdgeMap.get(e);n?n.push(t):this._outEdgeMap.set(e,[t]);var i=this._inEdgeMap.get(r);return i?i.push(t):this._inEdgeMap.set(r,[t]),!0}else return!1}}]);return r}(tl);var tc=/*#__PURE__*/function(t){v(r,t);var e=R(r);function r(t,n){u(this,r);return e.call(this,t,n)}return r}(to),td=/*#__PURE__*/function(t){v(r,t);var e=R(r);function r(t,i,a,o){u(this,r);var s;s=e.call(this,a,o);g(n(s),"vertices");s.vertices=[t,i];return s}return r}(ts),ty=/*#__PURE__*/function(t){v(r,t);var e=R(r);function r(){u(this,r);var t;t=e.call(this);g(n(t),"_edges");t._edges=new Map;return t}l(r,[{key:"edges",get:function t(){return this._edges}},{key:"createVertex",value:function t(t,e){return new tc(t,e!==null&&e!==void 0?e:t)}},{key:"createEdge",value:function t(t,e,r,n){return new td(t,e,r!==null&&r!==void 0?r:1,n)}},{key:"getEdge",value:function t(t,e){var r=[];if(t!==null&&e!==null){var n;var i=this._getVertex(t),a=this._getVertex(e);i&&a&&(r=(n=this._edges.get(i))===null||n===void 0?void 0:n.filter(function(t){return t.vertices.includes(a.key)}))}return r&&r[0]||null}},{key:"deleteEdgeBetween",value:function t(t,e){var r=this._getVertex(t),n=this._getVertex(e);if(!r||!n)return null;var i=this._edges.get(r),a=null;i&&(a=G(i,function(t){return t.vertices.includes(n.key)})[0]||null);var u=this._edges.get(n);return u&&G(u,function(t){return t.vertices.includes(r.key)}),a}},{key:"deleteEdge",value:function t(t){return this.deleteEdgeBetween(t.vertices[0],t.vertices[1])}},{key:"degreeOf",value:function t(t){var e;var r=this._getVertex(t);return r&&((e=this._edges.get(r))===null||e===void 0?void 0:e.length)||0}},{key:"edgesOf",value:function t(t){var e=this._getVertex(t);return e?this._edges.get(e)||[]:[]}},{key:"edgeSet",value:function t(){var t=new Set;return this._edges.forEach(function(e){e.forEach(function(e){t.add(e)})}),w(t)}},{key:"getNeighbors",value:function t(t){var e=[],r=this._getVertex(t);if(r){var n=this.edgesOf(r);var i=true,a=false,u=undefined;try{for(var o=n[Symbol.iterator](),s;!(i=(s=o.next()).done);i=true){var l=s.value;var h=this._getVertex(l.vertices.filter(function(t){return t!==r.key})[0]);h&&e.push(h)}}catch(t){a=true;u=t}finally{try{if(!i&&o.return!=null){o.return()}}finally{if(a){throw u}}}}return e}},{key:"getEndsOfEdge",value:function t(t){if(!this.hasEdge(t.vertices[0],t.vertices[1]))return null;var e=this._getVertex(t.vertices[0]),r=this._getVertex(t.vertices[1]);return e&&r?[e,r]:null}},{key:"_addEdgeOnly",value:function t(t){var e=true,r=false,n=undefined;try{for(var i=t.vertices[Symbol.iterator](),a;!(e=(a=i.next()).done);e=true){var u=a.value;var o=this._getVertex(u);if(o===null)return!1;if(o){var s=this._edges.get(o);s?s.push(t):this._edges.set(o,[t])}}}catch(t){r=true;n=t}finally{try{if(!e&&i.return!=null){i.return()}}finally{if(r){throw n}}}return!0}}]);return r}(tl);var tg=/*#__PURE__*/function(t){v(r,t);var e=R(r);function r(t,i,a,o){u(this,r);var s;s=e.call(this,t,i);g(n(s),"lat");g(n(s),"long");s.lat=a,s.long=o;return s}return r}(th),tp=/*#__PURE__*/function(t){v(r,t);var e=R(r);function r(t,n,i,a){u(this,r);return e.call(this,t,n,i,a)}return r}(tf),t_=/*#__PURE__*/function(t){v(r,t);var e=R(r);function r(t,i){u(this,r);var a;a=e.call(this);g(n(a),"_origin",[0,0]);g(n(a),"_bottomRight");a._origin=t,a._bottomRight=i;return a}l(r,[{key:"origin",get:function t(){return this._origin}},{key:"bottomRight",get:function t(){return this._bottomRight}},{key:"createVertex",value:function t(t,e){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.origin[0],n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:this.origin[1];return new tg(t,e,r,n)}},{key:"createEdge",value:function t(t,e,r,n){return new tp(t,e,r,n)}}]);return r}(tv);var tk=function(t){return t.ITERATIVE="ITERATIVE",t.RECURSIVE="RECURSIVE",t}(tk||{}),tm=function(t){return t.ROOT="ROOT",t.LEFT="LEFT",t.RIGHT="RIGHT",t.ROOT_LEFT="ROOT_LEFT",t.ROOT_RIGHT="ROOT_RIGHT",t.ISOLATED="ISOLATED",t.MAL_NODE="MAL_NODE",t}(tm||{});var tb=function(t){return t[t.RED=1]="RED",t[t.BLACK=0]="BLACK",t}(tb||{});var tx=function(t){return t.VAL="VAL",t.NODE="NODE",t.ID="ID",t}(tx||{});var tw=function(t){return t.lt="lt",t.eq="eq",t.gt="gt",t}(tw||{});var tN=/*#__PURE__*/function(){function t(e,r){u(this,t);g(this,"key");g(this,"value");g(this,"parent");g(this,"_left");g(this,"_right");this.key=e,this.value=r}l(t,[{key:"left",get:function t(){return this._left},set:function t(t){t&&(t.parent=this),this._left=t}},{key:"right",get:function t(){return this._right},set:function t(t){t&&(t.parent=this),this._right=t}},{key:"familyPosition",get:function t(){var t=this;return this.parent?this.parent.left===t?this.left||this.right?"ROOT_LEFT":"LEFT":this.parent.right===t?this.left||this.right?"ROOT_RIGHT":"RIGHT":"MAL_NODE":this.left||this.right?"ROOT":"ISOLATED"}}]);return t}(),tE=/*#__PURE__*/function(){function t(e){u(this,t);g(this,"iterationType","ITERATIVE");g(this,"_root");g(this,"_size");g(this,"_defaultOneParamCallback",function(t){return t.key});if(e){var r=e.iterationType,n=r===void 0?"ITERATIVE":r;this.iterationType=n}this._size=0}l(t,[{key:"root",get:function t(){return this._root}},{key:"size",get:function t(){return this._size}},{key:"createNode",value:function t(t,e){return new tN(t,e)}},{key:"add",value:function t(t,e){var r=this;var n=function(t,e){var n=new K([t]);for(;n.size>0;){var i=n.shift();if(e&&i.key===e.key){i.value=e.value;return}var a=r._addTo(e,i);if(a!==void 0)return a;i.left&&n.push(i.left),i.right&&n.push(i.right)}},i,a;if(t===null)a=null;else if(this.isNodeKey(t))a=this.createNode(t,e);else if(c(t,tN))a=t;else return;return this.root?i=n(this.root,a):(this._setRoot(a),a?this._size=1:this._size=0,i=this.root),i}},{key:"addMany",value:function t(t,e){var r=this;return t.map(function(t,n){if(c(t,tN))return r.add(t.key,t.value);if(t===null)return r.add(null);var i=e===null||e===void 0?void 0:e[n];return r.add(t,i)})}},{key:"refill",value:function t(t,e){return this.clear(),t.length===this.addMany(t,e).length}},{key:"delete",value:function t(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this._defaultOneParamCallback;var r=[];if(!this.root)return r;(!e||e===this._defaultOneParamCallback)&&c(t,tN)&&(e=function(t){return t});var n=this.getNode(t,e);if(!n)return r;var i=(n===null||n===void 0?void 0:n.parent)?n.parent:null,a,u=n;if(n.left){if(n.left){var o=this.getRightMost(n.left);if(o){var s=o.parent;u=this._swap(n,o),s&&(s.right===o?s.right=o.left:s.left=o.left,a=s)}}}else if(!i)this._setRoot(null);else{var l=n.familyPosition;l==="LEFT"||l==="ROOT_LEFT"?i.left=n.right:(l==="RIGHT"||l==="ROOT_RIGHT")&&(i.right=n.right),a=i}return this._size=this.size-1,r.push({deleted:u,needBalanced:a}),r}},{key:"getDepth",value:function t(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.root;t=this.ensureNotKey(t),e=this.ensureNotKey(e);var r=0;for(;t===null||t===void 0?void 0:t.parent;){if(t===e)return r;r++,t=t.parent}return r}},{key:"getHeight",value:function t(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.root,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.iterationType;if(t=this.ensureNotKey(t),!t)return-1;if(e==="RECURSIVE"){var r=function(t){if(!t)return-1;var e=r(t.left),n=r(t.right);return Math.max(e,n)+1};return r(t)}else{var n=[{node:t,depth:0}],i=0;for(;n.length>0;){var a=n.pop(),u=a.node,o=a.depth;u.left&&n.push({node:u.left,depth:o+1}),u.right&&n.push({node:u.right,depth:o+1}),i=Math.max(i,o)}return i}}},{key:"getMinHeight",value:function t(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.root,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.iterationType;if(t=this.ensureNotKey(t),!t)return-1;if(e==="RECURSIVE"){var r=function(t){if(!t||!t.left&&!t.right)return 0;var e=r(t.left),n=r(t.right);return Math.min(e,n)+1};return r(t)}else{var n=[],i=t,a=null,u=new Map;for(;n.length>0||i;)if(i)n.push(i),i=i.left;else if(i=n[n.length-1],!i.right||a===i.right){if(i=n.pop(),i){var o,s;var l=i.left?(o=u.get(i.left))!==null&&o!==void 0?o:-1:-1,h=i.right?(s=u.get(i.right))!==null&&s!==void 0?s:-1:-1;u.set(i,1+Math.min(l,h)),a=i,i=null}}else i=i.right;var f;return(f=u.get(t))!==null&&f!==void 0?f:-1}}},{key:"isPerfectlyBalanced",value:function t(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.root;return this.getMinHeight(t)+1>=this.getHeight(t)}},{key:"getNodes",value:function t(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this._defaultOneParamCallback,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:this.root,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:this.iterationType;if((!e||e===this._defaultOneParamCallback)&&c(t,tN)&&(e=function(t){return t}),n=this.ensureNotKey(n),!n)return[];var a=[];if(i==="RECURSIVE"){var u=function(n){e(n)===t&&(a.push(n),r)||!n.left&&!n.right||(n.left&&u(n.left),n.right&&u(n.right))};u(n)}else{var o=new K([n]);for(;o.size>0;){var s=o.shift();if(s){if(e(s)===t&&(a.push(s),r))return a;s.left&&o.push(s.left),s.right&&o.push(s.right)}}}return a}},{key:"has",value:function t(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this._defaultOneParamCallback,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.root,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:this.iterationType;return(!e||e===this._defaultOneParamCallback)&&c(t,tN)&&(e=function(t){return t}),this.getNodes(t,e,!0,r,n).length>0}},{key:"getNode",value:function t(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this._defaultOneParamCallback,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.root,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:this.iterationType;var i;return(!e||e===this._defaultOneParamCallback)&&c(t,tN)&&(e=function(t){return t}),(i=this.getNodes(t,e,!0,r,n)[0])!==null&&i!==void 0?i:null}},{key:"getNodeByKey",value:function t(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"ITERATIVE";if(this.root)if(e==="RECURSIVE"){var r=function(e){if(e.key===t)return e;if(!(!e.left&&!e.right)){if(e.left)return r(e.left);if(e.right)return r(e.right)}};return r(this.root)}else{var n=new K([this.root]);for(;n.size>0;){var i=n.shift();if(i){if(i.key===t)return i;i.left&&n.push(i.left),i.right&&n.push(i.right)}}}}},{key:"ensureNotKey",value:function t(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"ITERATIVE";return this.isNodeKey(t)?this.getNodeByKey(t,e):t}},{key:"get",value:function t(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this._defaultOneParamCallback,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.root,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:this.iterationType;var i;var a;return(!e||e===this._defaultOneParamCallback)&&c(t,tN)&&(e=function(t){return t}),(a=(i=this.getNode(t,e,r,n))===null||i===void 0?void 0:i.value)!==null&&a!==void 0?a:void 0}},{key:"clear",value:function t(){this._setRoot(void 0),this._size=0}},{key:"isEmpty",value:function t(){return this.size===0}},{key:"getPathToRoot",value:function t(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;var r=[];if(t=this.ensureNotKey(t),!t)return r;for(;t.parent;)r.push(t),t=t.parent;return r.push(t),e?r.reverse():r}},{key:"getLeftMost",value:function t(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.root,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.iterationType;var r=this;if(t=this.ensureNotKey(t),!t)return t;if(e==="RECURSIVE"){var n=function(t){return r.isRealNode(t.left)?n(t.left):t};return n(t)}else{var i=X(function(t){return r.isRealNode(t.left)?i.cont(t.left):t});return i(t)}}},{key:"getRightMost",value:function t(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.root,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.iterationType;var r=this;if(t=this.ensureNotKey(t),!t)return t;if(e==="RECURSIVE"){var n=function(t){return r.isRealNode(t.right)?n(t.right):t};return n(t)}else{var i=X(function(t){return r.isRealNode(t.right)?i.cont(t.right):t});return i(t)}}},{key:"isSubtreeBST",value:function t(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.iterationType;if(t=this.ensureNotKey(t),!t)return!0;if(e==="RECURSIVE"){var r=function(t,e,n){return t?t.key<=e||t.key>=n?!1:r(t.left,e,t.key)&&r(t.right,t.key,n):!0};return r(t,Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER)}else{var n=[],i=Number.MIN_SAFE_INTEGER,a=t;for(;a||n.length>0;){for(;a;)n.push(a),a=a.left;if(a=n.pop(),!a||i>=a.key)return!1;i=a.key,a=a.right}return!0}}},{key:"isBST",value:function t(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.iterationType;return this.root===null?!0:this.isSubtreeBST(this.root,t)}},{key:"subTreeTraverse",value:function t(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this._defaultOneParamCallback,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.root,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.iterationType,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;var i=this;e=this.ensureNotKey(e);var a=[];if(!e)return a;if(r==="RECURSIVE"){var u=function(e){e!==void 0&&(a.push(t(e)),n?(e&&i.isNodeOrNull(e.left)&&u(e.left),e&&i.isNodeOrNull(e.right)&&u(e.right)):(e&&e.left&&u(e.left),e&&e.right&&u(e.right)))};u(e)}else{var o=[e];for(;o.length>0;){var s=o.pop();s!==void 0&&(a.push(t(s)),n?(s&&this.isNodeOrNull(s.right)&&o.push(s.right),s&&this.isNodeOrNull(s.left)&&o.push(s.left)):(s&&s.right&&o.push(s.right),s&&s.left&&o.push(s.left)))}}return a}},{key:"isRealNode",value:function t(t){return c(t,tN)&&t.key.toString()!=="NaN"}},{key:"isNIL",value:function t(t){return c(t,tN)&&t.key.toString()==="NaN"}},{key:"isNodeOrNull",value:function t(t){return this.isRealNode(t)||t===null}},{key:"isNodeKey",value:function t(t){return typeof t=="number"}},{key:"dfs",value:function t(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this._defaultOneParamCallback,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"in",r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.root,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:"ITERATIVE",i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!1;var a=this;if(r=this.ensureNotKey(r),!r)return[];var u=[];if(n==="RECURSIVE"){var o=function(r){switch(e){case"in":i?(r&&a.isNodeOrNull(r.left)&&o(r.left),a.isNodeOrNull(r)&&u.push(t(r)),r&&a.isNodeOrNull(r.right)&&o(r.right)):(r&&r.left&&o(r.left),a.isRealNode(r)&&u.push(t(r)),r&&r.right&&o(r.right));break;case"pre":i?(a.isNodeOrNull(r)&&u.push(t(r)),r&&a.isNodeOrNull(r.left)&&o(r.left),r&&a.isNodeOrNull(r.right)&&o(r.right)):(a.isRealNode(r)&&u.push(t(r)),r&&r.left&&o(r.left),r&&r.right&&o(r.right));break;case"post":i?(r&&a.isNodeOrNull(r.left)&&o(r.left),r&&a.isNodeOrNull(r.right)&&o(r.right),a.isNodeOrNull(r)&&u.push(t(r))):(r&&r.left&&o(r.left),r&&r.right&&o(r.right),a.isRealNode(r)&&u.push(t(r)));break}};o(r)}else{var s=[{opt:0,node:r}];for(;s.length>0;){var l=s.pop();if(!(l===void 0||this.isNIL(l.node))){if(i){if(l.node===void 0)continue}else if(l.node===null||l.node===void 0)continue;if(l.opt===1)u.push(t(l.node));else switch(e){case"in":l.node&&s.push({opt:0,node:l.node.right}),s.push({opt:1,node:l.node}),l.node&&s.push({opt:0,node:l.node.left});break;case"pre":l.node&&s.push({opt:0,node:l.node.right}),l.node&&s.push({opt:0,node:l.node.left}),s.push({opt:1,node:l.node});break;case"post":s.push({opt:1,node:l.node}),l.node&&s.push({opt:0,node:l.node.right}),l.node&&s.push({opt:0,node:l.node.left});break;default:l.node&&s.push({opt:0,node:l.node.right}),s.push({opt:1,node:l.node}),l.node&&s.push({opt:0,node:l.node.left});break}}}}return u}},{key:"bfs",value:function t(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this._defaultOneParamCallback,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.root,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.iterationType,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;var i=this;if(e=this.ensureNotKey(e),!e)return[];var a=[];if(r==="RECURSIVE"){var u=new K([e]),o=function(e){if(u.size===0)return;var r=u.shift();a.push(t(r)),n?(r&&i.isNodeOrNull(r.left)&&u.push(r.left),r&&i.isNodeOrNull(r.right)&&u.push(r.right)):(r.left&&u.push(r.left),r.right&&u.push(r.right)),o(e+1)};o(0)}else{var s=new K([e]);for(;s.size>0;){var l=s.size;for(var h=0;h<l;h++){var f=s.shift();a.push(t(f)),n?(f&&this.isNodeOrNull(f.left)&&s.push(f.left),f&&this.isNodeOrNull(f.right)&&s.push(f.right)):(f.left&&s.push(f.left),f.right&&s.push(f.right))}}}return a}},{key:"listLevels",value:function t(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this._defaultOneParamCallback,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.root,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.iterationType,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;var i=this;e=this.ensureNotKey(e);var a=[];if(!e)return a;if(r==="RECURSIVE"){var u=function(e,r){a[r]||(a[r]=[]),a[r].push(t(e)),n?(e&&i.isNodeOrNull(e.left)&&u(e.left,r+1),e&&i.isNodeOrNull(e.right)&&u(e.right,r+1)):(e&&e.left&&u(e.left,r+1),e&&e.right&&u(e.right,r+1))};u(e,0)}else{var o=[[e,0]];for(;o.length>0;){var s=o.pop(),l=b(s,2),h=l[0],f=l[1];a[f]||(a[f]=[]),a[f].push(t(h)),n?(h&&this.isNodeOrNull(h.right)&&o.push([h.right,f+1]),h&&this.isNodeOrNull(h.left)&&o.push([h.left,f+1])):(h&&h.right&&o.push([h.right,f+1]),h&&h.left&&o.push([h.left,f+1]))}}return a}},{key:"getPredecessor",value:function t(t){if(t=this.ensureNotKey(t),!!this.isRealNode(t))if(t.left){var e=t.left;for(;!this.isRealNode(e)||this.isRealNode(e.right)&&e.right!==t;)e&&(e=e.right);return e}else return t}},{key:"getSuccessor",value:function t(t){if(t=this.ensureNotKey(t),!t)return;if(t.right)return this.getLeftMost(t.right);var e=t.parent;for(;e&&e&&t===e.right;)t=e,e=e.parent;return e}},{key:"morris",value:function t(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this._defaultOneParamCallback,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"in",r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.root;if(r=this.ensureNotKey(r),r===null)return[];var n=[],i=r,a=function(t){var e=null,r=null;for(;t;)r=t.right,t.right=e,e=t,t=r;return e},u=function(e){var r=a(e),i=r;for(;i;)n.push(t(i)),i=i.right;a(r)};switch(e){case"in":for(;i;){if(i.left){var o=this.getPredecessor(i);if(o.right)o.right=null;else{o.right=i,i=i.left;continue}}n.push(t(i)),i=i.right}break;case"pre":for(;i;){if(i.left){var s=this.getPredecessor(i);if(s.right)s.right=null;else{s.right=i,n.push(t(i)),i=i.left;continue}}else n.push(t(i));i=i.right}break;case"post":for(;i;){if(i.left){var l=this.getPredecessor(i);if(l.right===null){l.right=i,i=i.left;continue}else l.right=null,u(i.left)}i=i.right}u(r);break}return n}},{key:Symbol.iterator,value:function t(){var t,e,r,n,i,a;var u=arguments;return T(this,function(o){switch(o.label){case 0:t=u.length>0&&u[0]!==void 0?u[0]:this.root;if(!t)return[3,12];if(!(this.iterationType==="ITERATIVE"))return[3,6];e=[],r=t;o.label=1;case 1:if(!(r||e.length>0))return[3,5];for(;r;)e.push(r),r=r.left;r=e.pop();n=r;if(!n)return[3,3];return[4,r.key];case 2:n=o.sent();o.label=3;case 3:n,r&&(r=r.right);o.label=4;case 4:return[3,1];case 5:return[3,12];case 6:i=t.left;if(!i)return[3,8];return[5,O(this[Symbol.iterator](t.left))];case 7:i=o.sent();o.label=8;case 8:i;return[4,t.key];case 9:o.sent();a=t.right;if(!a)return[3,11];return[5,O(this[Symbol.iterator](t.right))];case 10:a=o.sent();o.label=11;case 11:a;o.label=12;case 12:return[2]}})}},{key:"print",value:function t(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.root;var e=this;if(t=this.ensureNotKey(t),!t)return;var r=function(t){var e=b(n(t),1),r=e[0];var i=true,a=false,u=undefined;try{for(var o=r[Symbol.iterator](),s;!(i=(s=o.next()).done);i=true){var l=s.value;console.log(l)}}catch(t){a=true;u=t}finally{try{if(!i&&o.return!=null){o.return()}}finally{if(a){throw u}}}},n=function(t){var r,i;if(!e.isRealNode(t))return[[],0,0,0];if(e.isRealNode(t)&&!e.isRealNode(t.right)&&!e.isRealNode(t.left)){var a="".concat(t.key),u=a.length,o=1,s=Math.floor(u/2);return[[a],u,o,s]}if(e.isRealNode(t)&&!e.isRealNode(t.right)){var l=b(n(t.left),4),h=l[0],f=l[1],v=l[2],c=l[3],d="".concat(t.key),y=d.length,g=" ".repeat(c+1)+"_".repeat(f-c-1)+d,p=" ".repeat(c)+"/"+" ".repeat(f-c-1+y),_=h.map(function(t){return t+" ".repeat(y)});return[[g,p].concat(w(_)),f+y,v+2,f+Math.floor(y/2)]}if(e.isRealNode(t)&&!e.isRealNode(t.left)){var k=b(n(t.right),4),m=k[0],x=k[1],N=k[2],E=k[3],M="".concat(t.key),S=M.length,R=M+"_".repeat(S)+" ".repeat(x-S),T=" ".repeat(E+S)+"\\"+" ".repeat(x-S-1),O=m.map(function(t){return" ".repeat(E)+t});return[[R,T].concat(w(O)),x+S,N+2,Math.floor(E/2)]}var z=b(n(t.left),4),I=z[0],V=z[1],A=z[2],L=z[3],C=b(n(t.right),4),P=C[0],F=C[1],D=C[2],j=C[3],K="".concat(t.key),H=K.length,B=" ".repeat(L+1)+"_".repeat(V-L-1)+K+"_".repeat(j)+" ".repeat(F-j),q=" ".repeat(L)+"/"+" ".repeat(V-L-1+H+j)+"\\"+" ".repeat(F-j-1);A<D?(r=I).push.apply(r,w(new Array(D-A).fill(" ".repeat(V)))):D<A&&(i=P).push.apply(i,w(new Array(A-D).fill(" ".repeat(F))));var U=I.map(function(t,e){return t+" ".repeat(H)+P[e]});return[[B,q].concat(w(U)),V+F+H,Math.max(A,D)+2,V+Math.floor(H/2)]};r(t)}},{key:"_swap",value:function t(t,e){if(t=this.ensureNotKey(t),e=this.ensureNotKey(e),t&&e){var r=e.key,n=e.value,i=this.createNode(r,n);return i&&(e.key=t.key,e.value=t.value,t.key=i.key,t.value=i.value),e}}},{key:"_addTo",value:function t(t,e){if(this.isNodeKey(e)&&(e=this.getNode(e)),e)return e.left===void 0?(e.left=t,t&&(this._size=this.size+1),e.left):e.right===void 0?(e.right=t,t&&(this._size=this.size+1),e.right):void 0}},{key:"_setRoot",value:function t(t){t&&(t.parent=void 0),this._root=t}}]);return t}();var tM=/*#__PURE__*/function(t){v(r,t);var e=R(r);function r(t,i){u(this,r);var a;a=e.call(this,t,i);g(n(a),"parent");g(n(a),"_left");g(n(a),"_right");a.parent=void 0,a._left=void 0,a._right=void 0;return a}l(r,[{key:"left",get:function t(){return this._left},set:function t(t){t&&(t.parent=this),this._left=t}},{key:"right",get:function t(){return this._right},set:function t(t){t&&(t.parent=this),this._right=t}}]);return r}(tN),tS=/*#__PURE__*/function(t){v(r,t);var e=R(r);function r(t){u(this,r);var i;i=e.call(this,t);g(n(i),"_root");g(n(i),"_comparator",function(t,e){return t-e});if(i._root=void 0,t!==void 0){var a=t.comparator;a!==void 0&&(i._comparator=a)}return i}l(r,[{key:"root",get:function t(){return this._root}},{key:"createNode",value:function t(t,e){return new tM(t,e)}},{key:"add",value:function t(t,e){if(t===null)return;var r,n;if(c(t,tM)?n=t:this.isNodeKey(t)?n=this.createNode(t,e):n=void 0,this.root===void 0)this._setRoot(n),this._size=this.size+1,r=this.root;else{var i=this.root,a=!0;for(;a;)i!==void 0&&n!==void 0?this._compare(i.key,n.key)==="eq"?(n&&(i.value=n.value),a=!1,r=i):this._compare(i.key,n.key)==="gt"?i.left===void 0?(n&&(n.parent=i),i.left=n,this._size=this.size+1,a=!1,r=i.left):i.left&&(i=i.left):this._compare(i.key,n.key)==="lt"&&(i.right===void 0?(n&&(n.parent=i),i.right=n,this._size=this.size+1,a=!1,r=i.right):i.right&&(i=i.right)):a=!1}return r}},{key:"addMany",value:function t(t,e){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:this.iterationType;var a=this;function u(t){return t.indexOf(void 0)===-1}if(!n||!u(t))return h(f(r.prototype),"addMany",this).call(this,t,e).map(function(t){return t!==null&&t!==void 0?t:void 0});var o=[],s=t.map(function(t,r){return[t,e===null||e===void 0?void 0:e[r]]}),l=[];function v(t){var e=true,r=false,n=undefined;try{for(var i=t[Symbol.iterator](),a;!(e=(a=i.next()).done);e=true){var u=b(a.value,1),o=u[0];if(c(o,tM))return!0}}catch(t){r=true;n=t}finally{try{if(!e&&i.return!=null){i.return()}}finally{if(r){throw n}}}return!1}var d=function(t){var e=true,r=false,n=undefined;try{for(var i=t[Symbol.iterator](),u;!(e=(u=i.next()).done);e=true){var o=b(u.value,1),s=o[0];if(a.isNodeKey(s))return!0}}catch(t){r=true;n=t}finally{try{if(!e&&i.return!=null){i.return()}}finally{if(r){throw n}}}return!1},y=[],g=[];if(v(s))l=s.sort(function(t,e){return t[0].key-e[0].key});else if(d(s))l=s.sort(function(t,e){return t[0]-e[0]});else throw new Error("Invalid input keysOrNodes");y=l.map(function(t){var e=b(t,1),r=e[0];return r}),g=l.map(function(t){var e=b(t,2),r=e[1];return r});var p=function(t,e){if(t.length===0)return;var r=Math.floor((t.length-1)/2),n=a.add(t[r],e===null||e===void 0?void 0:e[r]);o.push(n),p(t.slice(0,r),e===null||e===void 0?void 0:e.slice(0,r)),p(t.slice(r+1),e===null||e===void 0?void 0:e.slice(r+1))},_=function(){var t=[[0,l.length-1]];for(;t.length>0;){var e=t.pop();if(e){var r=b(e,2),n=r[0],i=r[1];if(n<=i){var u=n+Math.floor((i-n)/2),s=a.add(y[u],g===null||g===void 0?void 0:g[u]);o.push(s),t.push([u+1,i]),t.push([n,u-1])}}}};return i==="RECURSIVE"?p(y,g):_(),o}},{key:"lastKey",value:function t(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.root,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.iterationType;var r,n,i;var a,u,o;return this._compare(0,1)==="lt"?(a=(r=this.getRightMost(t,e))===null||r===void 0?void 0:r.key)!==null&&a!==void 0?a:0:this._compare(0,1)==="gt"?(u=(n=this.getLeftMost(t,e))===null||n===void 0?void 0:n.key)!==null&&u!==void 0?u:0:(o=(i=this.getRightMost(t,e))===null||i===void 0?void 0:i.key)!==null&&o!==void 0?o:0}},{key:"getNodeByKey",value:function t(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"ITERATIVE";var r=this;if(this.root)if(e==="RECURSIVE"){var n=function(e){if(e.key===t)return e;if(!(!e.left&&!e.right)){if(r._compare(e.key,t)==="gt"&&e.left)return n(e.left);if(r._compare(e.key,t)==="lt"&&e.right)return n(e.right)}};return n(this.root)}else{var i=new K([this.root]);for(;i.size>0;){var a=i.shift();if(a){if(this._compare(a.key,t)==="eq")return a;this._compare(a.key,t)==="gt"&&a.left&&i.push(a.left),this._compare(a.key,t)==="lt"&&a.right&&i.push(a.right)}}}}},{key:"ensureNotKey",value:function t(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"ITERATIVE";return this.isNodeKey(t)?this.getNodeByKey(t,e):t}},{key:"getNodes",value:function t(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this._defaultOneParamCallback,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:this.root,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:this.iterationType;var a=this;if(n=this.ensureNotKey(n),!n)return[];var u=[];if(i==="RECURSIVE"){var o=function(n){e(n)===t&&(u.push(n),r)||!n.left&&!n.right||(e===a._defaultOneParamCallback?(a._compare(n.key,t)==="gt"&&n.left&&o(n.left),a._compare(n.key,t)==="lt"&&n.right&&o(n.right)):(n.left&&o(n.left),n.right&&o(n.right)))};o(n)}else{var s=new K([n]);for(;s.size>0;){var l=s.shift();if(l){if(e(l)===t&&(u.push(l),r))return u;e===this._defaultOneParamCallback?(this._compare(l.key,t)==="gt"&&l.left&&s.push(l.left),this._compare(l.key,t)==="lt"&&l.right&&s.push(l.right)):(l.left&&s.push(l.left),l.right&&s.push(l.right))}}}return u}},{key:"lesserOrGreaterTraverse",value:function t(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this._defaultOneParamCallback,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"lt",r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.root,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:this.iterationType;var i=this;r=this.ensureNotKey(r);var a=[];if(!r||!this.root)return a;var u=r.key;if(n==="RECURSIVE"){var o=function(r){i._compare(r.key,u)===e&&a.push(t(r)),!(!r.left&&!r.right)&&(r.left&&i._compare(r.left.key,u)===e&&o(r.left),r.right&&i._compare(r.right.key,u)===e&&o(r.right))};return o(this.root),a}else{var s=new K([this.root]);for(;s.size>0;){var l=s.shift();l&&(this._compare(l.key,u)===e&&a.push(t(l)),l.left&&this._compare(l.left.key,u)===e&&s.push(l.left),l.right&&this._compare(l.right.key,u)===e&&s.push(l.right))}return a}}},{key:"perfectlyBalance",value:function t(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.iterationType;var e=this;var r=this.dfs(function(t){return t},"in"),n=r.length;if(this.clear(),r.length<1)return!1;if(t==="RECURSIVE"){var i=function(t,n){if(t>n)return;var a=t+Math.floor((n-t)/2),u=r[a];e.add(u.key,u.value),i(t,a-1),i(a+1,n)};return i(0,n-1),!0}else{var a=[[0,n-1]];for(;a.length>0;){var u=a.pop();if(u){var o=b(u,2),s=o[0],l=o[1];if(s<=l){var h=s+Math.floor((l-s)/2),f=r[h];debugger;this.add(f.key,f.value),a.push([h+1,l]),a.push([s,h-1])}}}return!0}}},{key:"isAVLBalanced",value:function t(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.iterationType;if(!this.root)return!0;var e=!0;if(t==="RECURSIVE"){var r=function(t){if(!t)return 0;var n=r(t.left),i=r(t.right);return Math.abs(n-i)>1&&(e=!1),Math.max(n,i)+1};r(this.root)}else{var n=[],i=this.root,a,u=new Map;for(;n.length>0||i;)if(i)n.push(i),i=i.left;else if(i=n[n.length-1],!i.right||a===i.right){if(i=n.pop(),i){var o,s;var l=i.left?(o=u.get(i.left))!==null&&o!==void 0?o:-1:-1,h=i.right?(s=u.get(i.right))!==null&&s!==void 0?s:-1:-1;if(Math.abs(l-h)>1)return!1;u.set(i,1+Math.max(l,h)),a=i,i=void 0}}else i=i.right}return e}},{key:"_setRoot",value:function t(t){t&&(t.parent=void 0),this._root=t}},{key:"_compare",value:function t(t,e){var r=this._comparator(t,e);return r>0?"gt":r<0?"lt":"eq"}}]);return r}(tE);var tR=/*#__PURE__*/function(){function t(e){var r=e.frequency,n=r===void 0?0:r,i=e.max;u(this,t);g(this,"_freq");g(this,"_max");g(this,"_freqMap");g(this,"_msb");g(this,"_negativeCount");this._freq=n,this._max=i,this._freqMap={0:0},this._msb=Z(i),this._negativeCount=n<0?i:0}l(t,[{key:"freqMap",get:function t(){return this._freqMap}},{key:"msb",get:function t(){return this._msb}},{key:"negativeCount",get:function t(){return this._negativeCount}},{key:"freq",get:function t(){return this._freq}},{key:"max",get:function t(){return this._max}},{key:"readSingle",value:function t(t){return this._checkIndex(t),this._readSingle(t)}},{key:"update",value:function t(t,e){this._checkIndex(t);var r=this._readSingle(t);this._update(t,e),this._updateNegativeCount(r,r+e)}},{key:"writeSingle",value:function t(t,e){this._checkIndex(t),this._writeSingle(t,e)}},{key:"read",value:function t(t){if(!Number.isInteger(t))throw new Error("Invalid count");return this._read(Math.max(Math.min(t,this.max),0))}},{key:"lowerBound",value:function t(t){if(this.negativeCount>0)throw new Error("Sequence is not non-descending");return this._binarySearch(t,function(t,e){return t<e})}},{key:"upperBound",value:function t(t){if(this.negativeCount>0)throw new Error("Must not be descending");return this._binarySearch(t,function(t,e){return t<=e})}},{key:"getPrefixSum",value:function t(t){this._checkIndex(t),t++;var e=0;for(;t>0;)e+=this._getFrequency(t),t-=t&-t;return e}},{key:"_getFrequency",value:function t(t){return t in this.freqMap?this.freqMap[t]:this.freq*(t&-t)}},{key:"_updateFrequency",value:function t(t,e){this.freqMap[t]=this._getFrequency(t)+e}},{key:"_checkIndex",value:function t(t){if(!Number.isInteger(t))throw new Error("Invalid index: Index must be an integer.");if(t<0||t>=this.max)throw new Error("Index out of range: Index must be within the range [0, this.max).")}},{key:"_readSingle",value:function t(t){t=t+1;var e=this._getFrequency(t),r=t-(t&-t);for(t--;t!==r;)e-=this._getFrequency(t),t-=t&-t;return e}},{key:"_updateNegativeCount",value:function t(t,e){t<0&&e>=0?this._negativeCount--:t>=0&&e<0&&this._negativeCount++}},{key:"_update",value:function t(t,e){for(t=t+1;t<=this.max;)this._updateFrequency(t,e),t+=t&-t}},{key:"_writeSingle",value:function t(t,e){var r=this._readSingle(t);this._update(t,e-r),this._updateNegativeCount(r,e)}},{key:"_read",value:function t(t){var e=t,r=0;for(;e;)r+=this._getFrequency(e),e-=e&-e;return r}},{key:"_binarySearch",value:function t(t,e){var r=0,n=this.msb<<1,i=t;for(;n>r+1;){var a=r+n>>1,u=this._getFrequency(a);a<=this.max&&e(u,i)?(i-=u,r=a):n=a}return r}}]);return t}();var tT=function t(e,r,n,i){u(this,t);g(this,"start",0);g(this,"end",0);g(this,"value",null);g(this,"sum",0);g(this,"left",null);g(this,"right",null);this.start=e,this.end=r,this.sum=n,this.value=i||null},tO=/*#__PURE__*/function(){function t(e,r,n){u(this,t);g(this,"_values",[]);g(this,"_start",0);g(this,"_end");g(this,"_root");r=r||0,n=n||e.length-1,this._values=e,this._start=r,this._end=n,e.length>0?this._root=this.build(r,n):(this._root=null,this._values=[])}l(t,[{key:"values",get:function t(){return this._values}},{key:"start",get:function t(){return this._start}},{key:"end",get:function t(){return this._end}},{key:"root",get:function t(){return this._root}},{key:"build",value:function t(t,e){if(t>e)return new tT(t,e,0);if(t===e)return new tT(t,e,this._values[t]);var r=t+Math.floor((e-t)/2),n=this.build(t,r),i=this.build(r+1,e),a=new tT(t,e,n.sum+i.sum);return a.left=n,a.right=i,a}},{key:"updateNode",value:function t(t,e,r){var n=this.root||null;if(!n)return;var i=function(t,e,r,n){if(t.start===t.end&&t.start===e){t.sum=r,n!==void 0&&(t.value=n);return}var a=t.start+Math.floor((t.end-t.start)/2);e<=a?t.left&&i(t.left,e,r,n):t.right&&i(t.right,e,r,n),t.left&&t.right&&(t.sum=t.left.sum+t.right.sum)};i(n,t,e,r)}},{key:"querySumByRange",value:function t(t,e){var r=this.root||null;if(!r)return 0;if(t<0||e>=this.values.length||t>e)return NaN;var n=function(t,e,r){if(e<=t.start&&r>=t.end)return t.sum;var i=t.start+Math.floor((t.end-t.start)/2);if(r<=i)return t.left?n(t.left,e,r):NaN;if(e>i)return t.right?n(t.right,e,r):NaN;{var a=0,u=0;return t.left&&(a=n(t.left,e,i)),t.right&&(u=n(t.right,i+1,r)),a+u}};return n(r,t,e)}}]);return t}();var tz=/*#__PURE__*/function(t){v(r,t);var e=R(r);function r(t,i){u(this,r);var a;a=e.call(this,t,i);g(n(a),"height");a.height=0;return a}return r}(tM),tI=/*#__PURE__*/function(t){v(r,t);var e=R(r);function r(t){u(this,r);return e.call(this,t)}l(r,[{key:"createNode",value:function t(t,e){return new tz(t,e)}},{key:"add",value:function t(t,e){if(t===null)return;var n=h(f(r.prototype),"add",this).call(this,t,e);return n&&this._balancePath(n),n}},{key:"delete",value:function t(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this._defaultOneParamCallback;c(t,tz)&&(e=function(t){return t});var n=h(f(r.prototype),"delete",this).call(this,t,e);var i=true,a=false,u=undefined;try{for(var o=n[Symbol.iterator](),s;!(i=(s=o.next()).done);i=true){var l=s.value,v=l.needBalanced;v&&this._balancePath(v)}}catch(t){a=true;u=t}finally{try{if(!i&&o.return!=null){o.return()}}finally{if(a){throw u}}}return n}},{key:"_swap",value:function t(t,e){if(t=this.ensureNotKey(t),e=this.ensureNotKey(e),t&&e){var r=e.key,n=e.value,i=e.height,a=this.createNode(r,n);return a&&(a.height=i,e.key=t.key,e.value=t.value,e.height=t.height,t.key=a.key,t.value=a.value,t.height=a.height),e}}},{key:"_balanceFactor",value:function t(t){return t.right?t.left?t.right.height-t.left.height:+t.height:-t.height}},{key:"_updateHeight",value:function t(t){if(!t.left&&!t.right)t.height=0;else if(t.left)t.right?t.height=1+Math.max(t.right.height,t.left.height):t.height=1+t.left.height;else{var e=t.right?t.right.height:0;t.height=1+e}}},{key:"_balancePath",value:function t(t){var e=this.getPathToRoot(t,!1);for(var r=0;r<e.length;r++){var n=e[r];switch(this._updateHeight(n),this._balanceFactor(n)){case-2:n&&n.left&&(this._balanceFactor(n.left)<=0?this._balanceLL(n):this._balanceLR(n));break;case 2:n&&n.right&&(this._balanceFactor(n.right)>=0?this._balanceRR(n):this._balanceRL(n))}}}},{key:"_balanceLL",value:function t(t){var e=t.parent,r=t.left;t.parent=r,r&&r.right&&(r.right.parent=t),r&&(r.parent=e),t===this.root?r&&this._setRoot(r):(e===null||e===void 0?void 0:e.left)===t?e.left=r:e&&(e.right=r),r&&(t.left=r.right,r.right=t),this._updateHeight(t),r&&this._updateHeight(r)}},{key:"_balanceLR",value:function t(t){var e=t.parent,r=t.left,n;r&&(n=r.right),t&&(t.parent=n),r&&(r.parent=n),n&&(n.left&&(n.left.parent=r),n.right&&(n.right.parent=t),n.parent=e),t===this.root?n&&this._setRoot(n):e&&(e.left===t?e.left=n:e.right=n),n&&(t.left=n.right,r&&(r.right=n.left),n.left=r,n.right=t),this._updateHeight(t),r&&this._updateHeight(r),n&&this._updateHeight(n)}},{key:"_balanceRR",value:function t(t){var e=t.parent,r=t.right;t.parent=r,r&&(r.left&&(r.left.parent=t),r.parent=e),t===this.root?r&&this._setRoot(r):e&&(e.left===t?e.left=r:e.right=r),r&&(t.right=r.left,r.left=t),this._updateHeight(t),r&&this._updateHeight(r)}},{key:"_balanceRL",value:function t(t){var e=t.parent,r=t.right,n;r&&(n=r.left),t.parent=n,r&&(r.parent=n),n&&(n.left&&(n.left.parent=t),n.right&&(n.right.parent=r),n.parent=e),t===this.root?n&&this._setRoot(n):e&&(e.left===t?e.left=n:e.right=n),n&&(t.right=n.left),r&&n&&(r.left=n.right),n&&(n.left=t),n&&(n.right=r),this._updateHeight(t),r&&this._updateHeight(r),n&&this._updateHeight(n)}}]);return r}(tS);var tV=/*#__PURE__*/function(t){v(r,t);var e=R(r);function r(t,i){var a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0;u(this,r);var o;o=e.call(this,t,i);g(n(o),"color");o.color=a;return o}return r}(tM),tA=/*#__PURE__*/function(t){v(r,t);var e=R(r);function r(t){u(this,r);var i;i=e.call(this,t);g(n(i),"NIL",new tV(NaN));g(n(i),"_root");g(n(i),"_size",0);i._root=i.NIL;return i}l(r,[{key:"root",get:function t(){return this._root}},{key:"size",get:function t(){return this._size}},{key:"add",value:function t(t,e){var r;if(this.isNodeKey(t))r=this.createNode(t,e,1);else if(c(t,tV))r=t;else return void 0;r.left=this.NIL,r.right=this.NIL;var n,i=this.root;for(;i!==this.NIL;)n=i,i&&r.key<i.key?i=i.left:i=i===null||i===void 0?void 0:i.right;if(r.parent=n,n===void 0?this._setRoot(r):r.key<n.key?n.left=r:n.right=r,r.parent===void 0){r.color=0,this._size++;return}if(r.parent.parent===void 0){this._size++;return}this._fixInsert(r),this._size++}},{key:"createNode",value:function t(t,e){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0;return new tV(t,e,r)}},{key:"delete",value:function t(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this._defaultOneParamCallback;var r=this;var n=[];return t===null||function(n){var i=r.NIL,a,u;for(;n!==r.NIL;)n&&e(n)===t&&(i=n),n&&t&&e(n)<=t?n=n.right:n=n===null||n===void 0?void 0:n.left;if(i===r.NIL){r._size--;return}u=i;var o=u.color;i.left===r.NIL?(a=i.right,r._rbTransplant(i,i.right)):i.right===r.NIL?(a=i.left,r._rbTransplant(i,i.left)):(u=r.getLeftMost(i.right),o=u.color,a=u.right,u.parent===i?a.parent=u:(r._rbTransplant(u,u.right),u.right=i.right,u.right.parent=u),r._rbTransplant(i,u),u.left=i.left,u.left.parent=u,u.color=i.color),o===0&&r._fixDelete(a),r._size--}(this.root),n}},{key:"isRealNode",value:function t(t){return t!==this.NIL&&t!==void 0}},{key:"getNode",value:function t(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this._defaultOneParamCallback,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:this.root,n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:this.iterationType;var i;return c(t,tN)&&(e=function(t){return t}),r=this.ensureNotKey(r),(i=this.getNodes(t,e,!0,r,n)[0])!==null&&i!==void 0?i:void 0}},{key:"getSuccessor",value:function t(t){var e;if(t.right!==this.NIL)return(e=this.getLeftMost(t.right))!==null&&e!==void 0?e:void 0;var r=t.parent;for(;r!==this.NIL&&r!==void 0&&t===r.right;)t=r,r=r.parent;return r}},{key:"getPredecessor",value:function t(t){if(t.left!==this.NIL)return this.getRightMost(t.left);var e=t.parent;for(;e!==this.NIL&&t===e.left;)t=e,e=e.parent;return e}},{key:"clear",value:function t(){this._root=this.NIL,this._size=0}},{key:"_setRoot",value:function t(t){t&&(t.parent=void 0),this._root=t}},{key:"_leftRotate",value:function t(t){if(t.right){var e=t.right;t.right=e.left,e.left!==this.NIL&&e.left&&(e.left.parent=t),e.parent=t.parent,t.parent===void 0?this._setRoot(e):t===t.parent.left?t.parent.left=e:t.parent.right=e,e.left=t,t.parent=e}}},{key:"_rightRotate",value:function t(t){if(t.left){var e=t.left;t.left=e.right,e.right!==this.NIL&&e.right&&(e.right.parent=t),e.parent=t.parent,t.parent===void 0?this._setRoot(e):t===t.parent.right?t.parent.right=e:t.parent.left=e,e.right=t,t.parent=e}}},{key:"_fixDelete",value:function t(t){var e;for(;t!==this.root&&t.color===0;)t.parent&&t===t.parent.left?(e=t.parent.right,e.color===1&&(e.color=0,t.parent.color=1,this._leftRotate(t.parent),e=t.parent.right),e.left!==void 0&&e.left.color===0&&e.right&&e.right.color===0?(e.color=1,t=t.parent):(e.right&&e.right.color===0&&(e.left&&(e.left.color=0),e.color=1,this._rightRotate(e),e=t.parent.right),e&&(e.color=t.parent.color),t.parent.color=0,e&&e.right&&(e.right.color=0),this._leftRotate(t.parent),t=this.root)):(e=t.parent.left,e.color===1&&(e.color=0,t.parent.color=1,this._rightRotate(t.parent),e=t.parent.left),e&&e.right&&e.right.color===0&&e.right.color===0?(e.color=1,t=t.parent):(e&&e.left&&e.left.color===0&&(e.right&&(e.right.color=0),e.color=1,this._leftRotate(e),e=t.parent.left),e&&(e.color=t.parent.color),t.parent.color=0,e&&e.left&&(e.left.color=0),this._rightRotate(t.parent),t=this.root));t.color=0}},{key:"_rbTransplant",value:function t(t,e){t.parent===void 0?this._setRoot(e):t===t.parent.left?t.parent.left=e:t.parent.right=e,e.parent=t.parent}},{key:"_fixInsert",value:function t(t){var e;for(;t.parent&&t.parent.color===1&&(t.parent.parent&&t.parent===t.parent.parent.right?(e=t.parent.parent.left,e&&e.color===1?(e.color=0,t.parent.color=0,t.parent.parent.color=1,t=t.parent.parent):(t===t.parent.left&&(t=t.parent,this._rightRotate(t)),t.parent.color=0,t.parent.parent.color=1,this._leftRotate(t.parent.parent))):(e=t.parent.parent.right,e&&e.color===1?(e.color=0,t.parent.color=0,t.parent.parent.color=1,t=t.parent.parent):(t===t.parent.right&&(t=t.parent,this._leftRotate(t)),t.parent.color=0,t.parent.parent.color=1,this._rightRotate(t.parent.parent))),t!==this.root););this.root.color=0}}]);return r}(tS);var tL=/*#__PURE__*/function(t){v(r,t);var e=R(r);function r(t,i){var a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1;u(this,r);var o;o=e.call(this,t,i);g(n(o),"count");o.count=a;return o}return r}(tz),tC=/*#__PURE__*/function(t){v(r,t);var e=R(r);function r(t){u(this,r);var i;i=e.call(this,t);g(n(i),"_count",0);return i}l(r,[{key:"count",get:function t(){return this._count}},{key:"createNode",value:function t(t,e,r){return new tL(t,e,r)}},{key:"add",value:function t(t,e){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1;if(t===null)return;var n,i;if(c(t,tL)?i=this.createNode(t.key,t.value,t.count):t===void 0?i=void 0:i=this.createNode(t,e,r),!this.root)this._setRoot(i),this._size=this.size+1,i&&(this._count+=i.count),n=this.root;else{var a=this.root,u=!0;for(;u;)a?i&&(this._compare(a.key,i.key)==="eq"?(a.value=i.value,a.count+=i.count,this._count+=i.count,u=!1,n=a):this._compare(a.key,i.key)==="gt"?a.left===void 0?(a.left=i,this._size=this.size+1,this._count+=i.count,u=!1,n=a.left):a.left&&(a=a.left):this._compare(a.key,i.key)==="lt"&&(a.right===void 0?(a.right=i,this._size=this.size+1,this._count+=i.count,u=!1,n=a.right):a.right&&(a=a.right))):u=!1}return n&&this._balancePath(n),n}},{key:"addMany",value:function t(t,e){var r=[];for(var n=0;n<t.length;n++){var i=t[n];if(c(i,tL)){r.push(this.add(i.key,i.value,i.count));continue}if(i===void 0){r.push(this.add(NaN,void 0,0));continue}r.push(this.add(i,e===null||e===void 0?void 0:e[n],1))}return r}},{key:"perfectlyBalance",value:function t(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.iterationType;var e=this;var r=this.dfs(function(t){return t},"in"),n=r.length;if(r.length<1)return!1;if(this.clear(),t==="RECURSIVE"){var i=function(t,n){if(t>n)return;var a=t+Math.floor((n-t)/2),u=r[a];e.add(u.key,u.value,u.count),i(t,a-1),i(a+1,n)};return i(0,n-1),!0}else{var a=[[0,n-1]];for(;a.length>0;){var u=a.pop();if(u){var o=b(u,2),s=o[0],l=o[1];if(s<=l){var h=s+Math.floor((l-s)/2),f=r[h];this.add(f.key,f.value,f.count),a.push([h+1,l]),a.push([s,h-1])}}}return!0}}},{key:"delete",value:function t(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this._defaultOneParamCallback,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;var n=[];if(!this.root)return n;var i;var a=(i=this.getNode(t,e))!==null&&i!==void 0?i:void 0;if(!a)return n;var u=(a===null||a===void 0?void 0:a.parent)?a.parent:void 0,o,s=a;if(a.count>1&&!r)a.count--,this._count--;else{if(a.left){var l=a.left?this.getRightMost(a.left):void 0;if(l){var h=l.parent;s=this._swap(a,l),h&&(h.right===l?h.right=l.left:h.left=l.left,o=h)}}else if(!u)a.right!==void 0&&this._setRoot(a.right);else{var f=a.familyPosition;f==="LEFT"||f==="ROOT_LEFT"?u.left=a.right:(f==="RIGHT"||f==="ROOT_RIGHT")&&(u.right=a.right),o=u}this._size=this.size-1,s&&(this._count-=s.count)}return n.push({deleted:s,needBalanced:o}),o&&this._balancePath(o),n}},{key:"clear",value:function t(){h(f(r.prototype),"clear",this).call(this),this._count=0}},{key:"_addTo",value:function t(t,e){if(e=this.ensureNotKey(e),e)return e.left===void 0?(e.left=t,t!==void 0&&(this._size=this.size+1,this._count+=t.count),e.left):e.right===void 0?(e.right=t,t!==void 0&&(this._size=this.size+1,this._count+=t.count),e.right):void 0}},{key:"_swap",value:function t(t,e){if(t=this.ensureNotKey(t),e=this.ensureNotKey(e),t&&e){var r=e.key,n=e.value,i=e.count,a=e.height,u=this.createNode(r,n,i);return u&&(u.height=a,e.key=t.key,e.value=t.value,e.count=t.count,e.height=t.height,t.key=u.key,t.value=u.value,t.count=u.count,t.height=u.height),e}}}]);return r}(tI);var tP=/*#__PURE__*/function(){function t(e,r,n){u(this,t);g(this,"key");g(this,"value");g(this,"children");this.key=e,this.value=r||void 0,this.children=n||[]}l(t,[{key:"addChildren",value:function e(e){this.children||(this.children=[]),c(e,t)?this.children.push(e):this.children=this.children.concat(e)}},{key:"getHeight",value:function t(){var t=0;if(this){var e=function(r,n){n>t&&(t=n);var i=r.children;if(i)for(var a=0,u=i.length;a<u;a++)e(i[a],n+1)};e(this,0)}return t}}]);return t}();var tF=/*#__PURE__*/function(){function t(e){u(this,t);g(this,"_matrix");var r=e.row,n=e.col,i=e.initialVal;this._matrix=new Array(r).fill(void 0).map(function(){return new Array(n).fill(i||0)})}l(t,[{key:"toArray",value:function t(){return this._matrix}}]);return t}();var tD=/*#__PURE__*/function(){function t(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1;u(this,t);this.x=e;this.y=r;this.w=n}l(t,[{key:"isZero",get:function t(){return this.x===0&&this.y===0}},{key:"length",get:function t(){return Math.sqrt(this.x*this.x+this.y*this.y)}},{key:"lengthSq",get:function t(){return this.x*this.x+this.y*this.y}},{key:"rounded",get:function e(){return new t(Math.round(this.x),Math.round(this.y))}},{key:"zero",value:function t(){this.x=0,this.y=0}}],[{key:"add",value:function e(e,r){return new t(e.x+r.x,e.y+r.y)}},{key:"subtract",value:function e(e,r){return new t(e.x-r.x,e.y-r.y)}},{key:"subtractValue",value:function e(e,r){return new t(e.x-r,e.y-r)}},{key:"multiply",value:function e(e,r){return new t(e.x*r,e.y*r)}},{key:"divide",value:function e(e,r){return new t(e.x/r,e.y/r)}},{key:"equals",value:function t(t,e){return t.x===e.x&&t.y===e.y}},{key:"equalsRounded",value:function e(e,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:12;var i=t.abs(t.subtract(e,r));return i.x<n&&i.y<n}},{key:"normalize",value:function e(e){var r=e.length;return r>2220446049250313e-31?t.divide(e,r):e}},{key:"truncate",value:function e(e,r){return e.length>r?t.multiply(t.normalize(e),r):e}},{key:"perp",value:function e(e){return new t(-e.y,e.x)}},{key:"reverse",value:function e(e){return new t(-e.x,-e.y)}},{key:"abs",value:function e(e){return new t(Math.abs(e.x),Math.abs(e.y))}},{key:"dot",value:function t(t,e){return t.x*e.x+t.y*e.y}},{key:"distance",value:function t(t,e){var r=e.y-t.y,n=e.x-t.x;return Math.sqrt(r*r+n*n)}},{key:"distanceSq",value:function t(t,e){var r=e.y-t.y,n=e.x-t.x;return r*r+n*n}},{key:"sign",value:function t(t,e){return t.y*e.x>t.x*e.y?-1:1}},{key:"angle",value:function e(e){var r=new t(0,-1),n=Math.acos(t.dot(e,r)/(e.length*r.length));return t.sign(e,r)===1?Math.PI*2-n:n}},{key:"random",value:function e(e,r){var n=Math.floor(Math.random()*e-e/2),i=Math.floor(Math.random()*r-r/2);return new t(n,i)}}]);return t}();var tj=/*#__PURE__*/function(){function t(e){u(this,t);g(this,"_matrix");(typeof e==="undefined"?"undefined":N(e))>"u"?this._matrix=t.identity:c(e,tD)?(this._matrix=t.identity,this._matrix[0][0]=e.x,this._matrix[1][0]=e.y,this._matrix[2][0]=e.w):this._matrix=e}l(t,[{key:"m",get:function t(){return this._matrix}},{key:"toVector",value:function t(){return new tD(this._matrix[0][0],this._matrix[1][0])}}],[{key:"empty",get:function t(){return[[],[],[]]}},{key:"identity",get:function t(){return[[1,0,0],[0,1,0],[0,0,1]]}},{key:"add",value:function e(e,r){var n=t.empty;for(var i=0;i<3;i++)for(var a=0;a<3;a++)n[i][a]=e.m[i][a]+r.m[i][a];return new t(n)}},{key:"subtract",value:function e(e,r){var n=t.empty;for(var i=0;i<3;i++)for(var a=0;a<3;a++)n[i][a]=e.m[i][a]-r.m[i][a];return new t(n)}},{key:"multiply",value:function e(e,r){var n=t.empty;for(var i=0;i<3;i++)for(var a=0;a<3;a++){n[i][a]=0;for(var u=0;u<3;u++)n[i][a]+=e.m[i][u]*r.m[u][a]}return new t(n)}},{key:"multiplyByValue",value:function e(e,r){var n=t.empty;for(var i=0;i<3;i++)for(var a=0;a<3;a++)n[i][a]=e.m[i][a]*r;return new t(n)}},{key:"multiplyByVector",value:function e(e,r){return t.multiply(e,new t(r)).toVector()}},{key:"view",value:function e(e,r){var n=e/2,i=r/2,a=Math.cos(Math.PI);return new t([[1,0,n],[0,a*1,i],[0,0,1]])}},{key:"scale",value:function e(e){return t.multiplyByValue(new t,e)}},{key:"rotate",value:function e(e){var r=Math.cos(e),n=Math.sin(e);return new t([[r,-n,0],[n,r,0],[0,0,1]])}},{key:"translate",value:function e(e){return new t([[1,0,e.x],[0,1,e.y],[0,0,e.w]])}}]);return t}();var tK=function t(e,r){u(this,t);g(this,"direction");g(this,"turn");this.direction=e,this.turn=function(){return new t(r[e],r)}},tH=/*#__PURE__*/function(){function t(e){var r=e.matrix,n=e.turning,i=e.onMove,a=e.init,o=a.cur,s=a.charDir,l=a.VISITED;u(this,t);g(this,"onMove");g(this,"_matrix");g(this,"_cur");g(this,"_character");g(this,"_VISITED");this._matrix=r,this._cur=o,this._character=new tK(s,n),this.onMove=i,this.onMove&&this.onMove(this._cur),this._VISITED=l,this._matrix[this._cur[0]][this._cur[1]]=this._VISITED}l(t,[{key:"start",value:function t(){for(;this.check(this._character.direction)||this.check(this._character.turn().direction);){var t=this._character,e=t.direction;this.check(e)?this.move(e):this.check(this._character.turn().direction)&&(this._character=this._character.turn())}}},{key:"check",value:function t(t){var e,r,n=this._matrix,i=b(this._cur,2),a=i[0],u=i[1];switch(t){case"up":if(r=n[a-1],!r)return!1;e=r[u];break;case"right":e=n[a][u+1];break;case"down":if(r=n[a+1],!r)return!1;e=r[u];break;case"left":e=n[a][u-1];break}return e!==void 0&&e!==this._VISITED}},{key:"move",value:function t(t){switch(t){case"up":this._cur[0]--;break;case"right":this._cur[1]++;break;case"down":this._cur[0]++;break;case"left":this._cur[1]--;break}var e=b(this._cur,2),r=e[0],n=e[1];this._matrix[r][n]=this._VISITED,this.onMove&&this.onMove(this._cur)}}]);return t}();var tB=function t(e){u(this,t);g(this,"key");g(this,"children");g(this,"isEnd");this.key=e,this.isEnd=!1,this.children=new Map},tq=/*#__PURE__*/function(){function t(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;u(this,t);g(this,"_caseSensitive");g(this,"_root");var n=true,i=false,a=undefined;if(this._root=new tB(""),this._caseSensitive=r,e)try{for(var o=e[Symbol.iterator](),s;!(n=(s=o.next()).done);n=true){var l=s.value;this.add(l)}}catch(t){i=true;a=t}finally{try{if(!n&&o.return!=null){o.return()}}finally{if(i){throw a}}}}l(t,[{key:"caseSensitive",get:function t(){return this._caseSensitive}},{key:"root",get:function t(){return this._root}},{key:"add",value:function t(t){t=this._caseProcess(t);var e=this.root;var r=true,n=false,i=undefined;try{for(var a=t[Symbol.iterator](),u;!(r=(u=a.next()).done);r=true){var o=u.value;var s=e.children.get(o);s||(s=new tB(o),e.children.set(o,s)),e=s}}catch(t){n=true;i=t}finally{try{if(!r&&a.return!=null){a.return()}}finally{if(n){throw i}}}return e.isEnd=!0,!0}},{key:"has",value:function t(t){t=this._caseProcess(t);var e=this.root;var r=true,n=false,i=undefined;try{for(var a=t[Symbol.iterator](),u;!(r=(u=a.next()).done);r=true){var o=u.value;var s=e.children.get(o);if(!s)return!1;e=s}}catch(t){n=true;i=t}finally{try{if(!r&&a.return!=null){a.return()}}finally{if(n){throw i}}}return e.isEnd}},{key:"delete",value:function t(t){t=this._caseProcess(t);var e=!1,r=function(n,i){var a=t[i],u=n.children.get(a);return u?i===t.length-1?u.isEnd?(u.children.size>0?u.isEnd=!1:n.children.delete(a),e=!0,!0):!1:r(u,i+1)&&!n.isEnd&&u.children.size===0?(n.children.delete(a),!0):!1:!1};return r(this.root,0),e}},{key:"getHeight",value:function t(){var t=this.root,e=0;if(t){var r=function(t,n){n>e&&(e=n);var i=t.children;var a=true,u=false,o=undefined;if(i)try{for(var s=i.entries()[Symbol.iterator](),l;!(a=(l=s.next()).done);a=true){var h=l.value;r(h[1],n+1)}}catch(t){u=true;o=t}finally{try{if(!a&&s.return!=null){s.return()}}finally{if(u){throw o}}}};r(t,0)}return e}},{key:"hasPurePrefix",value:function t(t){t=this._caseProcess(t);var e=this.root;var r=true,n=false,i=undefined;try{for(var a=t[Symbol.iterator](),u;!(r=(u=a.next()).done);r=true){var o=u.value;var s=e.children.get(o);if(!s)return!1;e=s}}catch(t){n=true;i=t}finally{try{if(!r&&a.return!=null){a.return()}}finally{if(n){throw i}}}return!e.isEnd}},{key:"hasPrefix",value:function t(t){t=this._caseProcess(t);var e=this.root;var r=true,n=false,i=undefined;try{for(var a=t[Symbol.iterator](),u;!(r=(u=a.next()).done);r=true){var o=u.value;var s=e.children.get(o);if(!s)return!1;e=s}}catch(t){n=true;i=t}finally{try{if(!r&&a.return!=null){a.return()}}finally{if(n){throw i}}}return!0}},{key:"hasCommonPrefix",value:function t(t){t=this._caseProcess(t);var e="",r=function(n){if(e+=n.key,e!==t&&!n.isEnd)if(n&&n.children&&n.children.size===1)r(Array.from(n.children.values())[0]);else return};return r(this.root),e===t}},{key:"getLongestCommonPrefix",value:function t(){var t="",e=function(r){if(t+=r.key,!r.isEnd)if(r&&r.children&&r.children.size===1)e(Array.from(r.children.values())[0]);else return};return e(this.root),t}},{key:"getWords",value:function t(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"",e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Number.MAX_SAFE_INTEGER,r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;t=this._caseProcess(t);var n=[],i=0;function a(t,r){var u=true,o=false,s=undefined;try{for(var l=t.children.keys()[Symbol.iterator](),h;!(u=(h=l.next()).done);u=true){var f=h.value;var v=t.children.get(f);v!==void 0&&a(v,r.concat(f))}}catch(t){o=true;s=t}finally{try{if(!u&&l.return!=null){l.return()}}finally{if(o){throw s}}}if(t.isEnd){if(i>e-1)return;n.push(r),i++}}var u=this.root;var o=true,s=false,l=undefined;if(t)try{for(var h=t[Symbol.iterator](),f;!(o=(f=h.next()).done);o=true){var v=f.value;var c=u.children.get(v);c&&(u=c)}}catch(t){s=true;l=t}finally{try{if(!o&&h.return!=null){h.return()}}finally{if(s){throw l}}}return(r||u!==this.root)&&a(u,t),n}},{key:"_caseProcess",value:function t(t){return this._caseSensitive||(t=t.toLowerCase()),t}}]);return t}();return y(p)}();/**
3
2
  * data-structure-typed
4
3
  *
5
4
  * @author Tyler Zeng
6
5
  * @copyright Copyright (c) 2022 Tyler Zeng <zrwusa@gmail.com>
7
6
  * @license MIT License
8
- */
9
- /**
7
+ *//**
10
8
  * @license MIT
11
9
  * @copyright Tyler Zeng <zrwusa@gmail.com>
12
10
  * @class
13
- */
14
- /**
11
+ *//**
15
12
  * data-structure-typed
16
13
  * @author Kirk Qi
17
14
  * @copyright Copyright (c) 2022 Kirk Qi <qilinaus@gmail.com>
18
15
  * @license MIT License
19
- */
20
- /**
16
+ *//**
21
17
  * data-structure-typed
22
18
  *
23
19
  * @author Kirk Qi
24
20
  * @copyright Copyright (c) 2022 Kirk Qi <qilinaus@gmail.com>
25
21
  * @license MIT License
26
- */
27
- //# sourceMappingURL=data-structure-typed.min.js.map
22
+ *///# sourceMappingURL=data-structure-typed.min.js.map