@performant-software/geospatial 3.0.6-beta.5 → 3.0.6-beta.6

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 (688) hide show
  1. package/dist/index.cjs100.js +1 -1
  2. package/dist/index.cjs100.js.map +1 -1
  3. package/dist/index.cjs101.js +1 -1
  4. package/dist/index.cjs101.js.map +1 -1
  5. package/dist/index.cjs102.js +1 -1
  6. package/dist/index.cjs102.js.map +1 -1
  7. package/dist/index.cjs103.js +1 -1
  8. package/dist/index.cjs103.js.map +1 -1
  9. package/dist/index.cjs104.js +1 -1
  10. package/dist/index.cjs104.js.map +1 -1
  11. package/dist/index.cjs105.js +1 -1
  12. package/dist/index.cjs105.js.map +1 -1
  13. package/dist/index.cjs106.js +1 -1
  14. package/dist/index.cjs106.js.map +1 -1
  15. package/dist/index.cjs107.js +1 -1
  16. package/dist/index.cjs107.js.map +1 -1
  17. package/dist/index.cjs108.js +1 -1
  18. package/dist/index.cjs108.js.map +1 -1
  19. package/dist/index.cjs109.js +1 -1
  20. package/dist/index.cjs109.js.map +1 -1
  21. package/dist/index.cjs110.js +1 -1
  22. package/dist/index.cjs110.js.map +1 -1
  23. package/dist/index.cjs111.js +1 -1
  24. package/dist/index.cjs111.js.map +1 -1
  25. package/dist/index.cjs112.js +1 -1
  26. package/dist/index.cjs112.js.map +1 -1
  27. package/dist/index.cjs113.js +1 -1
  28. package/dist/index.cjs113.js.map +1 -1
  29. package/dist/index.cjs114.js +1 -1
  30. package/dist/index.cjs114.js.map +1 -1
  31. package/dist/index.cjs115.js +1 -1
  32. package/dist/index.cjs115.js.map +1 -1
  33. package/dist/index.cjs116.js +1 -1
  34. package/dist/index.cjs116.js.map +1 -1
  35. package/dist/index.cjs117.js +1 -1
  36. package/dist/index.cjs117.js.map +1 -1
  37. package/dist/index.cjs118.js +1 -1
  38. package/dist/index.cjs118.js.map +1 -1
  39. package/dist/index.cjs119.js +1 -1
  40. package/dist/index.cjs119.js.map +1 -1
  41. package/dist/index.cjs120.js +1 -1
  42. package/dist/index.cjs120.js.map +1 -1
  43. package/dist/index.cjs121.js +1 -1
  44. package/dist/index.cjs121.js.map +1 -1
  45. package/dist/index.cjs122.js +1 -1
  46. package/dist/index.cjs122.js.map +1 -1
  47. package/dist/index.cjs123.js +1 -1
  48. package/dist/index.cjs123.js.map +1 -1
  49. package/dist/index.cjs124.js +1 -1
  50. package/dist/index.cjs124.js.map +1 -1
  51. package/dist/index.cjs125.js +1 -1
  52. package/dist/index.cjs125.js.map +1 -1
  53. package/dist/index.cjs126.js +1 -1
  54. package/dist/index.cjs126.js.map +1 -1
  55. package/dist/index.cjs127.js +1 -1
  56. package/dist/index.cjs127.js.map +1 -1
  57. package/dist/index.cjs128.js +1 -13
  58. package/dist/index.cjs128.js.map +1 -1
  59. package/dist/index.cjs129.js +1 -1
  60. package/dist/index.cjs129.js.map +1 -1
  61. package/dist/index.cjs130.js +13 -1
  62. package/dist/index.cjs130.js.map +1 -1
  63. package/dist/index.cjs131.js +1 -1
  64. package/dist/index.cjs131.js.map +1 -1
  65. package/dist/index.cjs132.js +1 -1
  66. package/dist/index.cjs132.js.map +1 -1
  67. package/dist/index.cjs133.js +1 -1
  68. package/dist/index.cjs133.js.map +1 -1
  69. package/dist/index.cjs134.js +1 -1
  70. package/dist/index.cjs134.js.map +1 -1
  71. package/dist/index.cjs135.js +1 -1
  72. package/dist/index.cjs135.js.map +1 -1
  73. package/dist/index.cjs136.js +1 -1
  74. package/dist/index.cjs136.js.map +1 -1
  75. package/dist/index.cjs137.js +1 -1
  76. package/dist/index.cjs137.js.map +1 -1
  77. package/dist/index.cjs138.js +1 -1
  78. package/dist/index.cjs138.js.map +1 -1
  79. package/dist/index.cjs139.js +1 -1
  80. package/dist/index.cjs139.js.map +1 -1
  81. package/dist/index.cjs140.js +1 -1
  82. package/dist/index.cjs140.js.map +1 -1
  83. package/dist/index.cjs141.js +1 -1
  84. package/dist/index.cjs141.js.map +1 -1
  85. package/dist/index.cjs142.js +1 -1
  86. package/dist/index.cjs142.js.map +1 -1
  87. package/dist/index.cjs143.js +1 -1
  88. package/dist/index.cjs143.js.map +1 -1
  89. package/dist/index.cjs144.js +1 -1
  90. package/dist/index.cjs144.js.map +1 -1
  91. package/dist/index.cjs145.js +1 -1
  92. package/dist/index.cjs145.js.map +1 -1
  93. package/dist/index.cjs146.js +1 -1
  94. package/dist/index.cjs146.js.map +1 -1
  95. package/dist/index.cjs147.js +1 -1
  96. package/dist/index.cjs147.js.map +1 -1
  97. package/dist/index.cjs148.js +1 -1
  98. package/dist/index.cjs148.js.map +1 -1
  99. package/dist/index.cjs149.js +1 -1
  100. package/dist/index.cjs149.js.map +1 -1
  101. package/dist/index.cjs150.js +1 -1
  102. package/dist/index.cjs150.js.map +1 -1
  103. package/dist/index.cjs151.js +1 -1
  104. package/dist/index.cjs151.js.map +1 -1
  105. package/dist/index.cjs152.js +1 -1
  106. package/dist/index.cjs152.js.map +1 -1
  107. package/dist/index.cjs153.js +1 -1
  108. package/dist/index.cjs153.js.map +1 -1
  109. package/dist/index.cjs154.js +1 -1
  110. package/dist/index.cjs154.js.map +1 -1
  111. package/dist/index.cjs155.js +1 -1
  112. package/dist/index.cjs155.js.map +1 -1
  113. package/dist/index.cjs156.js +1 -1
  114. package/dist/index.cjs156.js.map +1 -1
  115. package/dist/index.cjs157.js +1 -1
  116. package/dist/index.cjs157.js.map +1 -1
  117. package/dist/index.cjs158.js +1 -1
  118. package/dist/index.cjs158.js.map +1 -1
  119. package/dist/index.cjs159.js +1 -1
  120. package/dist/index.cjs159.js.map +1 -1
  121. package/dist/index.cjs160.js +1 -1
  122. package/dist/index.cjs160.js.map +1 -1
  123. package/dist/index.cjs161.js +1 -1
  124. package/dist/index.cjs161.js.map +1 -1
  125. package/dist/index.cjs162.js +1 -1
  126. package/dist/index.cjs162.js.map +1 -1
  127. package/dist/index.cjs163.js +1 -1
  128. package/dist/index.cjs163.js.map +1 -1
  129. package/dist/index.cjs164.js +1 -1
  130. package/dist/index.cjs164.js.map +1 -1
  131. package/dist/index.cjs165.js +1 -1
  132. package/dist/index.cjs165.js.map +1 -1
  133. package/dist/index.cjs166.js +1 -1
  134. package/dist/index.cjs166.js.map +1 -1
  135. package/dist/index.cjs167.js +1 -1
  136. package/dist/index.cjs167.js.map +1 -1
  137. package/dist/index.cjs168.js +1 -1
  138. package/dist/index.cjs168.js.map +1 -1
  139. package/dist/index.cjs169.js +1 -1
  140. package/dist/index.cjs169.js.map +1 -1
  141. package/dist/index.cjs170.js +1 -1
  142. package/dist/index.cjs170.js.map +1 -1
  143. package/dist/index.cjs171.js +1 -1
  144. package/dist/index.cjs171.js.map +1 -1
  145. package/dist/index.cjs172.js +1 -1
  146. package/dist/index.cjs172.js.map +1 -1
  147. package/dist/index.cjs173.js +1 -1
  148. package/dist/index.cjs173.js.map +1 -1
  149. package/dist/index.cjs174.js +1 -1
  150. package/dist/index.cjs174.js.map +1 -1
  151. package/dist/index.cjs175.js +1 -1
  152. package/dist/index.cjs175.js.map +1 -1
  153. package/dist/index.cjs176.js +1 -1
  154. package/dist/index.cjs176.js.map +1 -1
  155. package/dist/index.cjs177.js +1 -1
  156. package/dist/index.cjs177.js.map +1 -1
  157. package/dist/index.cjs178.js +1 -1
  158. package/dist/index.cjs178.js.map +1 -1
  159. package/dist/index.cjs179.js +1 -1
  160. package/dist/index.cjs179.js.map +1 -1
  161. package/dist/index.cjs180.js +1 -1
  162. package/dist/index.cjs180.js.map +1 -1
  163. package/dist/index.cjs181.js +1 -1
  164. package/dist/index.cjs181.js.map +1 -1
  165. package/dist/index.cjs182.js +1 -1
  166. package/dist/index.cjs182.js.map +1 -1
  167. package/dist/index.cjs183.js +1 -1
  168. package/dist/index.cjs183.js.map +1 -1
  169. package/dist/index.cjs184.js +1 -1
  170. package/dist/index.cjs191.js +1 -1
  171. package/dist/index.cjs191.js.map +1 -1
  172. package/dist/index.cjs192.js +1 -1
  173. package/dist/index.cjs192.js.map +1 -1
  174. package/dist/index.cjs193.js +1 -4
  175. package/dist/index.cjs193.js.map +1 -1
  176. package/dist/index.cjs194.js +4 -1
  177. package/dist/index.cjs194.js.map +1 -1
  178. package/dist/index.cjs195.js +1 -1
  179. package/dist/index.cjs195.js.map +1 -1
  180. package/dist/index.cjs196.js +1 -1
  181. package/dist/index.cjs196.js.map +1 -1
  182. package/dist/index.cjs197.js +1 -1
  183. package/dist/index.cjs197.js.map +1 -1
  184. package/dist/index.cjs198.js +1 -1
  185. package/dist/index.cjs198.js.map +1 -1
  186. package/dist/index.cjs199.js +1 -1
  187. package/dist/index.cjs199.js.map +1 -1
  188. package/dist/index.cjs200.js +1 -1
  189. package/dist/index.cjs200.js.map +1 -1
  190. package/dist/index.cjs201.js +1 -1
  191. package/dist/index.cjs201.js.map +1 -1
  192. package/dist/index.cjs202.js +1 -1
  193. package/dist/index.cjs202.js.map +1 -1
  194. package/dist/index.cjs203.js +1 -1
  195. package/dist/index.cjs203.js.map +1 -1
  196. package/dist/index.cjs204.js +1 -1
  197. package/dist/index.cjs204.js.map +1 -1
  198. package/dist/index.cjs205.js +1 -1
  199. package/dist/index.cjs205.js.map +1 -1
  200. package/dist/index.cjs206.js +1 -1
  201. package/dist/index.cjs206.js.map +1 -1
  202. package/dist/index.cjs207.js +1 -1
  203. package/dist/index.cjs207.js.map +1 -1
  204. package/dist/index.cjs208.js +1 -1
  205. package/dist/index.cjs208.js.map +1 -1
  206. package/dist/index.cjs209.js +1 -1
  207. package/dist/index.cjs209.js.map +1 -1
  208. package/dist/index.cjs210.js +1 -1
  209. package/dist/index.cjs210.js.map +1 -1
  210. package/dist/index.cjs211.js +1 -1
  211. package/dist/index.cjs211.js.map +1 -1
  212. package/dist/index.cjs212.js +1 -1
  213. package/dist/index.cjs212.js.map +1 -1
  214. package/dist/index.cjs213.js +1 -1
  215. package/dist/index.cjs213.js.map +1 -1
  216. package/dist/index.cjs214.js +1 -1
  217. package/dist/index.cjs214.js.map +1 -1
  218. package/dist/index.cjs215.js +1 -1
  219. package/dist/index.cjs215.js.map +1 -1
  220. package/dist/index.cjs216.js +1 -1
  221. package/dist/index.cjs216.js.map +1 -1
  222. package/dist/index.cjs217.js +1 -1
  223. package/dist/index.cjs217.js.map +1 -1
  224. package/dist/index.cjs218.js +1 -1
  225. package/dist/index.cjs218.js.map +1 -1
  226. package/dist/index.cjs219.js +1 -1
  227. package/dist/index.cjs219.js.map +1 -1
  228. package/dist/index.cjs220.js +1 -1
  229. package/dist/index.cjs220.js.map +1 -1
  230. package/dist/index.cjs221.js +1 -1
  231. package/dist/index.cjs221.js.map +1 -1
  232. package/dist/index.cjs222.js +1 -1
  233. package/dist/index.cjs222.js.map +1 -1
  234. package/dist/index.cjs223.js +1 -1
  235. package/dist/index.cjs223.js.map +1 -1
  236. package/dist/index.cjs224.js +1 -1
  237. package/dist/index.cjs224.js.map +1 -1
  238. package/dist/index.cjs225.js +1 -1
  239. package/dist/index.cjs225.js.map +1 -1
  240. package/dist/index.cjs226.js +1 -1
  241. package/dist/index.cjs226.js.map +1 -1
  242. package/dist/index.cjs227.js +1 -1
  243. package/dist/index.cjs227.js.map +1 -1
  244. package/dist/index.cjs228.js +1 -1
  245. package/dist/index.cjs228.js.map +1 -1
  246. package/dist/index.cjs229.js +1 -1
  247. package/dist/index.cjs229.js.map +1 -1
  248. package/dist/index.cjs23.js +1 -1
  249. package/dist/index.cjs230.js +1 -1
  250. package/dist/index.cjs230.js.map +1 -1
  251. package/dist/index.cjs231.js +1 -1
  252. package/dist/index.cjs231.js.map +1 -1
  253. package/dist/index.cjs232.js +1 -1
  254. package/dist/index.cjs232.js.map +1 -1
  255. package/dist/index.cjs233.js +1 -1
  256. package/dist/index.cjs233.js.map +1 -1
  257. package/dist/index.cjs234.js +1 -1
  258. package/dist/index.cjs234.js.map +1 -1
  259. package/dist/index.cjs235.js +1 -1
  260. package/dist/index.cjs235.js.map +1 -1
  261. package/dist/index.cjs236.js +1 -1
  262. package/dist/index.cjs236.js.map +1 -1
  263. package/dist/index.cjs237.js +1 -1
  264. package/dist/index.cjs237.js.map +1 -1
  265. package/dist/index.cjs240.js +1 -1
  266. package/dist/index.cjs243.js +1 -1
  267. package/dist/index.cjs246.js +1 -1
  268. package/dist/index.cjs249.js +1 -1
  269. package/dist/index.cjs25.js +1 -1
  270. package/dist/index.cjs250.js +1 -1
  271. package/dist/index.cjs251.js +1 -1
  272. package/dist/index.cjs255.js +1 -1
  273. package/dist/index.cjs259.js +1 -1
  274. package/dist/index.cjs259.js.map +1 -1
  275. package/dist/index.cjs26.js +1 -1
  276. package/dist/index.cjs260.js +1 -1
  277. package/dist/index.cjs260.js.map +1 -1
  278. package/dist/index.cjs27.js +1 -1
  279. package/dist/index.cjs29.js +1 -1
  280. package/dist/index.cjs30.js +1 -1
  281. package/dist/index.cjs31.js +1 -1
  282. package/dist/index.cjs32.js +1 -1
  283. package/dist/index.cjs33.js +1 -1
  284. package/dist/index.cjs34.js +1 -1
  285. package/dist/index.cjs35.js +1 -1
  286. package/dist/index.cjs37.js +1 -1
  287. package/dist/index.cjs38.js +1 -1
  288. package/dist/index.cjs39.js +1 -1
  289. package/dist/index.cjs40.js +1 -1
  290. package/dist/index.cjs42.js +1 -1
  291. package/dist/index.cjs43.js +1 -1
  292. package/dist/index.cjs44.js +1 -1
  293. package/dist/index.cjs45.js +1 -1
  294. package/dist/index.cjs46.js +1 -1
  295. package/dist/index.cjs47.js +1 -1
  296. package/dist/index.cjs48.js +1 -1
  297. package/dist/index.cjs49.js +1 -1
  298. package/dist/index.cjs50.js +1 -1
  299. package/dist/index.cjs57.js +1 -1
  300. package/dist/index.cjs59.js +1 -1
  301. package/dist/index.cjs63.js +1 -1
  302. package/dist/index.cjs63.js.map +1 -1
  303. package/dist/index.cjs64.js +1 -1
  304. package/dist/index.cjs64.js.map +1 -1
  305. package/dist/index.cjs77.js +1 -1
  306. package/dist/index.cjs80.js +1 -1
  307. package/dist/index.cjs81.js +1 -1
  308. package/dist/index.cjs81.js.map +1 -1
  309. package/dist/index.cjs82.js +1 -1
  310. package/dist/index.cjs82.js.map +1 -1
  311. package/dist/index.cjs83.js +1 -1
  312. package/dist/index.cjs83.js.map +1 -1
  313. package/dist/index.cjs84.js +1 -1
  314. package/dist/index.cjs84.js.map +1 -1
  315. package/dist/index.cjs85.js +1 -1
  316. package/dist/index.cjs85.js.map +1 -1
  317. package/dist/index.cjs86.js +1 -1
  318. package/dist/index.cjs86.js.map +1 -1
  319. package/dist/index.cjs87.js +1 -1
  320. package/dist/index.cjs87.js.map +1 -1
  321. package/dist/index.cjs88.js +1 -1
  322. package/dist/index.cjs88.js.map +1 -1
  323. package/dist/index.cjs89.js +1 -1
  324. package/dist/index.cjs89.js.map +1 -1
  325. package/dist/index.cjs90.js +1 -1
  326. package/dist/index.cjs90.js.map +1 -1
  327. package/dist/index.cjs91.js +1 -1
  328. package/dist/index.cjs91.js.map +1 -1
  329. package/dist/index.cjs92.js +1 -1
  330. package/dist/index.cjs92.js.map +1 -1
  331. package/dist/index.cjs93.js +1 -1
  332. package/dist/index.cjs93.js.map +1 -1
  333. package/dist/index.cjs94.js +1 -1
  334. package/dist/index.cjs94.js.map +1 -1
  335. package/dist/index.cjs95.js +1 -1
  336. package/dist/index.cjs95.js.map +1 -1
  337. package/dist/index.cjs96.js +1 -1
  338. package/dist/index.cjs96.js.map +1 -1
  339. package/dist/index.cjs97.js +1 -1
  340. package/dist/index.cjs97.js.map +1 -1
  341. package/dist/index.cjs98.js +1 -1
  342. package/dist/index.cjs98.js.map +1 -1
  343. package/dist/index.cjs99.js +1 -1
  344. package/dist/index.cjs99.js.map +1 -1
  345. package/dist/index.es100.js +5 -11
  346. package/dist/index.es100.js.map +1 -1
  347. package/dist/index.es101.js +9 -12
  348. package/dist/index.es101.js.map +1 -1
  349. package/dist/index.es102.js +11 -85
  350. package/dist/index.es102.js.map +1 -1
  351. package/dist/index.es103.js +13 -3
  352. package/dist/index.es103.js.map +1 -1
  353. package/dist/index.es104.js +85 -14
  354. package/dist/index.es104.js.map +1 -1
  355. package/dist/index.es105.js +3 -12
  356. package/dist/index.es105.js.map +1 -1
  357. package/dist/index.es106.js +14 -6
  358. package/dist/index.es106.js.map +1 -1
  359. package/dist/index.es107.js +11 -6
  360. package/dist/index.es107.js.map +1 -1
  361. package/dist/index.es108.js +5 -5
  362. package/dist/index.es108.js.map +1 -1
  363. package/dist/index.es109.js +6 -7
  364. package/dist/index.es109.js.map +1 -1
  365. package/dist/index.es110.js +6 -3
  366. package/dist/index.es110.js.map +1 -1
  367. package/dist/index.es111.js +8 -4
  368. package/dist/index.es111.js.map +1 -1
  369. package/dist/index.es112.js +3 -3
  370. package/dist/index.es112.js.map +1 -1
  371. package/dist/index.es113.js +4 -7
  372. package/dist/index.es113.js.map +1 -1
  373. package/dist/index.es114.js +4 -7
  374. package/dist/index.es114.js.map +1 -1
  375. package/dist/index.es115.js +6 -3
  376. package/dist/index.es115.js.map +1 -1
  377. package/dist/index.es116.js +6 -7
  378. package/dist/index.es116.js.map +1 -1
  379. package/dist/index.es117.js +3 -12
  380. package/dist/index.es117.js.map +1 -1
  381. package/dist/index.es118.js +7 -10
  382. package/dist/index.es118.js.map +1 -1
  383. package/dist/index.es119.js +12 -3
  384. package/dist/index.es119.js.map +1 -1
  385. package/dist/index.es120.js +10 -5
  386. package/dist/index.es120.js.map +1 -1
  387. package/dist/index.es121.js +3 -2
  388. package/dist/index.es121.js.map +1 -1
  389. package/dist/index.es122.js +4 -6
  390. package/dist/index.es122.js.map +1 -1
  391. package/dist/index.es123.js +2 -7
  392. package/dist/index.es123.js.map +1 -1
  393. package/dist/index.es124.js +6 -6
  394. package/dist/index.es124.js.map +1 -1
  395. package/dist/index.es125.js +7 -8
  396. package/dist/index.es125.js.map +1 -1
  397. package/dist/index.es126.js +7 -3
  398. package/dist/index.es126.js.map +1 -1
  399. package/dist/index.es127.js +9 -4
  400. package/dist/index.es127.js.map +1 -1
  401. package/dist/index.es128.js +3 -57
  402. package/dist/index.es128.js.map +1 -1
  403. package/dist/index.es129.js +4 -14
  404. package/dist/index.es129.js.map +1 -1
  405. package/dist/index.es130.js +57 -5
  406. package/dist/index.es130.js.map +1 -1
  407. package/dist/index.es131.js +13 -5
  408. package/dist/index.es131.js.map +1 -1
  409. package/dist/index.es132.js +5 -8
  410. package/dist/index.es132.js.map +1 -1
  411. package/dist/index.es133.js +5 -16
  412. package/dist/index.es133.js.map +1 -1
  413. package/dist/index.es134.js +8 -13
  414. package/dist/index.es134.js.map +1 -1
  415. package/dist/index.es135.js +16 -4
  416. package/dist/index.es135.js.map +1 -1
  417. package/dist/index.es136.js +13 -5
  418. package/dist/index.es136.js.map +1 -1
  419. package/dist/index.es137.js +4 -8
  420. package/dist/index.es137.js.map +1 -1
  421. package/dist/index.es138.js +3 -4
  422. package/dist/index.es138.js.map +1 -1
  423. package/dist/index.es139.js +6 -4
  424. package/dist/index.es139.js.map +1 -1
  425. package/dist/index.es140.js +6 -8
  426. package/dist/index.es140.js.map +1 -1
  427. package/dist/index.es141.js +7 -3
  428. package/dist/index.es141.js.map +1 -1
  429. package/dist/index.es142.js +9 -3
  430. package/dist/index.es142.js.map +1 -1
  431. package/dist/index.es143.js +3 -11
  432. package/dist/index.es143.js.map +1 -1
  433. package/dist/index.es144.js +3 -5
  434. package/dist/index.es144.js.map +1 -1
  435. package/dist/index.es145.js +11 -4
  436. package/dist/index.es145.js.map +1 -1
  437. package/dist/index.es146.js +5 -9
  438. package/dist/index.es146.js.map +1 -1
  439. package/dist/index.es147.js +4 -6
  440. package/dist/index.es147.js.map +1 -1
  441. package/dist/index.es148.js +8 -16
  442. package/dist/index.es148.js.map +1 -1
  443. package/dist/index.es149.js +5 -11
  444. package/dist/index.es149.js.map +1 -1
  445. package/dist/index.es150.js +17 -3
  446. package/dist/index.es150.js.map +1 -1
  447. package/dist/index.es151.js +12 -3
  448. package/dist/index.es151.js.map +1 -1
  449. package/dist/index.es152.js +3 -9
  450. package/dist/index.es152.js.map +1 -1
  451. package/dist/index.es153.js +3 -7
  452. package/dist/index.es153.js.map +1 -1
  453. package/dist/index.es154.js +8 -12
  454. package/dist/index.es154.js.map +1 -1
  455. package/dist/index.es155.js +6 -12
  456. package/dist/index.es155.js.map +1 -1
  457. package/dist/index.es156.js +12 -6
  458. package/dist/index.es156.js.map +1 -1
  459. package/dist/index.es157.js +12 -5
  460. package/dist/index.es157.js.map +1 -1
  461. package/dist/index.es158.js +6 -5
  462. package/dist/index.es158.js.map +1 -1
  463. package/dist/index.es159.js +5 -16
  464. package/dist/index.es159.js.map +1 -1
  465. package/dist/index.es160.js +5 -16
  466. package/dist/index.es160.js.map +1 -1
  467. package/dist/index.es161.js +16 -4
  468. package/dist/index.es161.js.map +1 -1
  469. package/dist/index.es162.js +16 -16
  470. package/dist/index.es162.js.map +1 -1
  471. package/dist/index.es163.js +4 -22
  472. package/dist/index.es163.js.map +1 -1
  473. package/dist/index.es164.js +17 -6
  474. package/dist/index.es164.js.map +1 -1
  475. package/dist/index.es165.js +23 -5
  476. package/dist/index.es165.js.map +1 -1
  477. package/dist/index.es166.js +5 -5
  478. package/dist/index.es166.js.map +1 -1
  479. package/dist/index.es167.js +5 -5
  480. package/dist/index.es167.js.map +1 -1
  481. package/dist/index.es168.js +6 -12
  482. package/dist/index.es168.js.map +1 -1
  483. package/dist/index.es169.js +5 -6
  484. package/dist/index.es169.js.map +1 -1
  485. package/dist/index.es170.js +11 -4
  486. package/dist/index.es170.js.map +1 -1
  487. package/dist/index.es171.js +5 -4
  488. package/dist/index.es171.js.map +1 -1
  489. package/dist/index.es172.js +3 -3
  490. package/dist/index.es172.js.map +1 -1
  491. package/dist/index.es173.js +3 -3
  492. package/dist/index.es173.js.map +1 -1
  493. package/dist/index.es174.js +4 -4
  494. package/dist/index.es174.js.map +1 -1
  495. package/dist/index.es175.js +4 -4
  496. package/dist/index.es175.js.map +1 -1
  497. package/dist/index.es176.js +4 -12
  498. package/dist/index.es176.js.map +1 -1
  499. package/dist/index.es177.js +4 -14
  500. package/dist/index.es177.js.map +1 -1
  501. package/dist/index.es178.js +12 -8
  502. package/dist/index.es178.js.map +1 -1
  503. package/dist/index.es179.js +14 -6
  504. package/dist/index.es179.js.map +1 -1
  505. package/dist/index.es180.js +8 -6
  506. package/dist/index.es180.js.map +1 -1
  507. package/dist/index.es181.js +6 -8
  508. package/dist/index.es181.js.map +1 -1
  509. package/dist/index.es182.js +7 -2
  510. package/dist/index.es182.js.map +1 -1
  511. package/dist/index.es183.js +9 -2
  512. package/dist/index.es183.js.map +1 -1
  513. package/dist/index.es184.js +2 -2
  514. package/dist/index.es191.js +2 -8
  515. package/dist/index.es191.js.map +1 -1
  516. package/dist/index.es192.js +7 -147
  517. package/dist/index.es192.js.map +1 -1
  518. package/dist/index.es193.js +142 -12191
  519. package/dist/index.es193.js.map +1 -1
  520. package/dist/index.es194.js +12199 -3
  521. package/dist/index.es194.js.map +1 -1
  522. package/dist/index.es195.js +1 -1
  523. package/dist/index.es195.js.map +1 -1
  524. package/dist/index.es196.js +3 -38
  525. package/dist/index.es196.js.map +1 -1
  526. package/dist/index.es197.js +38 -3
  527. package/dist/index.es197.js.map +1 -1
  528. package/dist/index.es198.js +3 -25
  529. package/dist/index.es198.js.map +1 -1
  530. package/dist/index.es199.js +25 -2
  531. package/dist/index.es199.js.map +1 -1
  532. package/dist/index.es200.js +0 -1
  533. package/dist/index.es200.js.map +1 -1
  534. package/dist/index.es201.js +1 -0
  535. package/dist/index.es201.js.map +1 -1
  536. package/dist/index.es202.js +2 -34
  537. package/dist/index.es202.js.map +1 -1
  538. package/dist/index.es203.js +32 -13
  539. package/dist/index.es203.js.map +1 -1
  540. package/dist/index.es204.js +11 -12
  541. package/dist/index.es204.js.map +1 -1
  542. package/dist/index.es205.js +13 -8
  543. package/dist/index.es205.js.map +1 -1
  544. package/dist/index.es206.js +9 -2
  545. package/dist/index.es206.js.map +1 -1
  546. package/dist/index.es207.js +6 -44
  547. package/dist/index.es207.js.map +1 -1
  548. package/dist/index.es208.js +4 -22
  549. package/dist/index.es208.js.map +1 -1
  550. package/dist/index.es209.js +4 -8
  551. package/dist/index.es209.js.map +1 -1
  552. package/dist/index.es210.js +3 -5
  553. package/dist/index.es210.js.map +1 -1
  554. package/dist/index.es211.js +3 -4
  555. package/dist/index.es211.js.map +1 -1
  556. package/dist/index.es212.js +9 -3
  557. package/dist/index.es212.js.map +1 -1
  558. package/dist/index.es213.js +22 -3
  559. package/dist/index.es213.js.map +1 -1
  560. package/dist/index.es214.js +21 -8
  561. package/dist/index.es214.js.map +1 -1
  562. package/dist/index.es215.js +11 -19
  563. package/dist/index.es215.js.map +1 -1
  564. package/dist/index.es216.js +14 -19
  565. package/dist/index.es216.js.map +1 -1
  566. package/dist/index.es217.js +5 -13
  567. package/dist/index.es217.js.map +1 -1
  568. package/dist/index.es218.js +8 -16
  569. package/dist/index.es218.js.map +1 -1
  570. package/dist/index.es219.js +6 -5
  571. package/dist/index.es219.js.map +1 -1
  572. package/dist/index.es220.js +20 -7
  573. package/dist/index.es220.js.map +1 -1
  574. package/dist/index.es221.js +8 -5
  575. package/dist/index.es221.js.map +1 -1
  576. package/dist/index.es222.js +9 -22
  577. package/dist/index.es222.js.map +1 -1
  578. package/dist/index.es223.js +4 -10
  579. package/dist/index.es223.js.map +1 -1
  580. package/dist/index.es224.js +11 -9
  581. package/dist/index.es224.js.map +1 -1
  582. package/dist/index.es225.js +9 -4
  583. package/dist/index.es225.js.map +1 -1
  584. package/dist/index.es226.js +21 -9
  585. package/dist/index.es226.js.map +1 -1
  586. package/dist/index.es227.js +11 -8
  587. package/dist/index.es227.js.map +1 -1
  588. package/dist/index.es228.js +18 -22
  589. package/dist/index.es228.js.map +1 -1
  590. package/dist/index.es229.js +4 -12
  591. package/dist/index.es229.js.map +1 -1
  592. package/dist/index.es23.js +2 -2
  593. package/dist/index.es230.js +16 -17
  594. package/dist/index.es230.js.map +1 -1
  595. package/dist/index.es231.js +12 -4
  596. package/dist/index.es231.js.map +1 -1
  597. package/dist/index.es232.js +3 -17
  598. package/dist/index.es232.js.map +1 -1
  599. package/dist/index.es233.js +4 -11
  600. package/dist/index.es233.js.map +1 -1
  601. package/dist/index.es234.js +45 -3
  602. package/dist/index.es234.js.map +1 -1
  603. package/dist/index.es235.js +22 -4
  604. package/dist/index.es235.js.map +1 -1
  605. package/dist/index.es236.js +3 -6
  606. package/dist/index.es236.js.map +1 -1
  607. package/dist/index.es237.js +6 -3
  608. package/dist/index.es237.js.map +1 -1
  609. package/dist/index.es240.js +1 -1
  610. package/dist/index.es243.js +1 -1
  611. package/dist/index.es246.js +1 -1
  612. package/dist/index.es249.js +2 -2
  613. package/dist/index.es25.js +1 -1
  614. package/dist/index.es250.js +1 -1
  615. package/dist/index.es251.js +2 -2
  616. package/dist/index.es255.js +1 -1
  617. package/dist/index.es259.js +70 -4
  618. package/dist/index.es259.js.map +1 -1
  619. package/dist/index.es26.js +1 -1
  620. package/dist/index.es260.js +4 -70
  621. package/dist/index.es260.js.map +1 -1
  622. package/dist/index.es27.js +2 -2
  623. package/dist/index.es29.js +2 -2
  624. package/dist/index.es30.js +2 -2
  625. package/dist/index.es31.js +2 -2
  626. package/dist/index.es32.js +1 -1
  627. package/dist/index.es33.js +1 -1
  628. package/dist/index.es34.js +2 -2
  629. package/dist/index.es35.js +2 -2
  630. package/dist/index.es37.js +2 -2
  631. package/dist/index.es38.js +2 -2
  632. package/dist/index.es39.js +2 -2
  633. package/dist/index.es40.js +1 -1
  634. package/dist/index.es42.js +1 -1
  635. package/dist/index.es43.js +4 -4
  636. package/dist/index.es44.js +5 -5
  637. package/dist/index.es45.js +5 -5
  638. package/dist/index.es46.js +1 -1
  639. package/dist/index.es47.js +3 -3
  640. package/dist/index.es48.js +4 -4
  641. package/dist/index.es49.js +2 -2
  642. package/dist/index.es50.js +2 -2
  643. package/dist/index.es57.js +1 -1
  644. package/dist/index.es59.js +6 -6
  645. package/dist/index.es63.js +1 -1
  646. package/dist/index.es64.js +1 -1
  647. package/dist/index.es77.js +1 -1
  648. package/dist/index.es80.js +2 -273
  649. package/dist/index.es80.js.map +1 -1
  650. package/dist/index.es81.js +2 -15
  651. package/dist/index.es81.js.map +1 -1
  652. package/dist/index.es82.js +273 -19
  653. package/dist/index.es82.js.map +1 -1
  654. package/dist/index.es83.js +14 -4
  655. package/dist/index.es83.js.map +1 -1
  656. package/dist/index.es84.js +18 -3
  657. package/dist/index.es84.js.map +1 -1
  658. package/dist/index.es85.js +3 -2
  659. package/dist/index.es85.js.map +1 -1
  660. package/dist/index.es86.js +3 -4
  661. package/dist/index.es86.js.map +1 -1
  662. package/dist/index.es87.js +1 -1
  663. package/dist/index.es87.js.map +1 -1
  664. package/dist/index.es88.js +5 -3
  665. package/dist/index.es88.js.map +1 -1
  666. package/dist/index.es89.js +4 -3
  667. package/dist/index.es89.js.map +1 -1
  668. package/dist/index.es90.js +3 -3
  669. package/dist/index.es90.js.map +1 -1
  670. package/dist/index.es91.js +3 -3
  671. package/dist/index.es91.js.map +1 -1
  672. package/dist/index.es92.js +3 -3
  673. package/dist/index.es92.js.map +1 -1
  674. package/dist/index.es93.js +3 -3
  675. package/dist/index.es93.js.map +1 -1
  676. package/dist/index.es94.js +3 -3
  677. package/dist/index.es94.js.map +1 -1
  678. package/dist/index.es95.js +3 -10
  679. package/dist/index.es95.js.map +1 -1
  680. package/dist/index.es96.js +3 -4
  681. package/dist/index.es96.js.map +1 -1
  682. package/dist/index.es97.js +9 -5
  683. package/dist/index.es97.js.map +1 -1
  684. package/dist/index.es98.js +4 -6
  685. package/dist/index.es98.js.map +1 -1
  686. package/dist/index.es99.js +5 -9
  687. package/dist/index.es99.js.map +1 -1
  688. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.es194.js","sources":["../../../node_modules/d3-geo/src/area.js"],"sourcesContent":["import adder from \"./adder\";\nimport {atan2, cos, quarterPi, radians, sin, tau} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nexport var areaRingSum = adder();\n\nvar areaSum = adder(),\n lambda00,\n phi00,\n lambda0,\n cosPhi0,\n sinPhi0;\n\nexport var areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaRingSum.reset();\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n var areaRing = +areaRingSum;\n areaSum.add(areaRing < 0 ? tau + areaRing : areaRing);\n this.lineStart = this.lineEnd = this.point = noop;\n },\n sphere: function() {\n areaSum.add(tau);\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n areaStream.point = areaPoint;\n lambda00 = lambda, phi00 = phi;\n lambda *= radians, phi *= radians;\n lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n phi = phi / 2 + quarterPi; // half the angular distance from south pole\n\n // Spherical excess E for a spherical triangle with vertices: south pole,\n // previous point, current point. Uses a formula derived from Cagnoli’s\n // theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n var dLambda = lambda - lambda0,\n sdLambda = dLambda >= 0 ? 1 : -1,\n adLambda = sdLambda * dLambda,\n cosPhi = cos(phi),\n sinPhi = sin(phi),\n k = sinPhi0 * sinPhi,\n u = cosPhi0 * cosPhi + k * cos(adLambda),\n v = k * sdLambda * sin(adLambda);\n areaRingSum.add(atan2(v, u));\n\n // Advance the previous points.\n lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\nexport default function(object) {\n areaSum.reset();\n stream(object, areaStream);\n return areaSum * 2;\n}\n"],"names":["adder"],"mappings":";AAKyBA,EAAM;AAEjBA,EAAM;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index.es194.js","sources":["../../../node_modules/turf-jsts/jsts.mjs"],"sourcesContent":["/* Polyfill service v3.13.0\n * For detailed credits and licence information see http://github.com/financial-times/polyfill-service\n *\n * - Array.prototype.fill, License: CC0 */\n\nif (!('fill' in Array.prototype)) {\n Object.defineProperty(Array.prototype, 'fill', {\n configurable: true,\n value: function fill (value) {\n if (this === undefined || this === null) {\n throw new TypeError(this + ' is not an object')\n }\n\n var arrayLike = Object(this);\n\n var length = Math.max(Math.min(arrayLike.length, 9007199254740991), 0) || 0;\n\n var relativeStart = 1 in arguments ? parseInt(Number(arguments[1]), 10) || 0 : 0;\n\n relativeStart = relativeStart < 0 ? Math.max(length + relativeStart, 0) : Math.min(relativeStart, length);\n\n var relativeEnd = 2 in arguments && arguments[2] !== undefined ? parseInt(Number(arguments[2]), 10) || 0 : length;\n\n relativeEnd = relativeEnd < 0 ? Math.max(length + arguments[2], 0) : Math.min(relativeEnd, length);\n\n while (relativeStart < relativeEnd) {\n arrayLike[relativeStart] = value;\n\n ++relativeStart;\n }\n\n return arrayLike\n },\n writable: true\n });\n}\n\n/**\n * Polyfill for IE support\n */\nNumber.isFinite = Number.isFinite || function (value) {\n return typeof value === 'number' && isFinite(value)\n};\n\nNumber.isInteger = Number.isInteger || function (val) {\n return typeof val === 'number' &&\n isFinite(val) &&\n Math.floor(val) === val\n};\n\nNumber.parseFloat = Number.parseFloat || parseFloat;\n\nNumber.isNaN = Number.isNaN || function (value) {\n return value !== value // eslint-disable-line\n};\n\n/**\n * Polyfill for IE support\n */\nMath.trunc = Math.trunc || function (x) {\n return x < 0 ? Math.ceil(x) : Math.floor(x)\n};\n\nvar NumberUtil = function NumberUtil () {};\n\nNumberUtil.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nNumberUtil.prototype.getClass = function getClass () {\n return NumberUtil\n};\nNumberUtil.prototype.equalsWithTolerance = function equalsWithTolerance (x1, x2, tolerance) {\n return Math.abs(x1 - x2) <= tolerance\n};\n\nvar IllegalArgumentException = (function (Error) {\n\tfunction IllegalArgumentException (message) {\n\t\tError.call(this, message);\n\t\tthis.name = 'IllegalArgumentException';\n\t\tthis.message = message;\n\t\tthis.stack = (new Error()).stack;\n\t}\n\n\tif ( Error ) IllegalArgumentException.__proto__ = Error;\n\tIllegalArgumentException.prototype = Object.create( Error && Error.prototype );\n\tIllegalArgumentException.prototype.constructor = IllegalArgumentException;\n\n\treturn IllegalArgumentException;\n}(Error));\n\nvar Double = function Double () {};\n\nvar staticAccessors$1 = { MAX_VALUE: { configurable: true } };\n\nDouble.isNaN = function isNaN (n) { return Number.isNaN(n) };\nDouble.doubleToLongBits = function doubleToLongBits (n) { return n };\nDouble.longBitsToDouble = function longBitsToDouble (n) { return n };\nDouble.isInfinite = function isInfinite (n) { return !Number.isFinite(n) };\nstaticAccessors$1.MAX_VALUE.get = function () { return Number.MAX_VALUE };\n\nObject.defineProperties( Double, staticAccessors$1 );\n\nvar Comparable = function Comparable () {};\n\nvar Clonable = function Clonable () {};\n\nvar Comparator = function Comparator () {};\n\nfunction Serializable () {}\n\n// import Assert from '../util/Assert'\n\nvar Coordinate = function Coordinate () {\n this.x = null;\n this.y = null;\n this.z = null;\n if (arguments.length === 0) {\n this.x = 0.0;\n this.y = 0.0;\n this.z = Coordinate.NULL_ORDINATE;\n } else if (arguments.length === 1) {\n var c = arguments[0];\n this.x = c.x;\n this.y = c.y;\n this.z = c.z;\n } else if (arguments.length === 2) {\n this.x = arguments[0];\n this.y = arguments[1];\n this.z = Coordinate.NULL_ORDINATE;\n } else if (arguments.length === 3) {\n this.x = arguments[0];\n this.y = arguments[1];\n this.z = arguments[2];\n }\n};\n\nvar staticAccessors = { DimensionalComparator: { configurable: true },serialVersionUID: { configurable: true },NULL_ORDINATE: { configurable: true },X: { configurable: true },Y: { configurable: true },Z: { configurable: true } };\nCoordinate.prototype.setOrdinate = function setOrdinate (ordinateIndex, value) {\n switch (ordinateIndex) {\n case Coordinate.X:\n this.x = value;\n break\n case Coordinate.Y:\n this.y = value;\n break\n case Coordinate.Z:\n this.z = value;\n break\n default:\n throw new IllegalArgumentException('Invalid ordinate index: ' + ordinateIndex)\n }\n};\nCoordinate.prototype.equals2D = function equals2D () {\n if (arguments.length === 1) {\n var other = arguments[0];\n if (this.x !== other.x) {\n return false\n }\n if (this.y !== other.y) {\n return false\n }\n return true\n } else if (arguments.length === 2) {\n var c = arguments[0];\n var tolerance = arguments[1];\n if (!NumberUtil.equalsWithTolerance(this.x, c.x, tolerance)) {\n return false\n }\n if (!NumberUtil.equalsWithTolerance(this.y, c.y, tolerance)) {\n return false\n }\n return true\n }\n};\nCoordinate.prototype.getOrdinate = function getOrdinate (ordinateIndex) {\n switch (ordinateIndex) {\n case Coordinate.X:\n return this.x\n case Coordinate.Y:\n return this.y\n case Coordinate.Z:\n return this.z\n default:\n }\n throw new IllegalArgumentException('Invalid ordinate index: ' + ordinateIndex)\n};\nCoordinate.prototype.equals3D = function equals3D (other) {\n return this.x === other.x &&\n this.y === other.y &&\n ((this.z === other.z || Double.isNaN(this.z)) &&\n Double.isNaN(other.z))\n};\nCoordinate.prototype.equals = function equals (other) {\n if (!(other instanceof Coordinate)) {\n return false\n }\n return this.equals2D(other)\n};\nCoordinate.prototype.equalInZ = function equalInZ (c, tolerance) {\n return NumberUtil.equalsWithTolerance(this.z, c.z, tolerance)\n};\nCoordinate.prototype.compareTo = function compareTo (o) {\n var other = o;\n if (this.x < other.x) { return -1 }\n if (this.x > other.x) { return 1 }\n if (this.y < other.y) { return -1 }\n if (this.y > other.y) { return 1 }\n return 0\n};\nCoordinate.prototype.clone = function clone () {\n // try {\n // var coord = null\n // return coord\n // } catch (e) {\n // if (e instanceof CloneNotSupportedException) {\n // Assert.shouldNeverReachHere(\"this shouldn't happen because this class is Cloneable\")\n // return null\n // } else throw e\n // } finally {}\n};\nCoordinate.prototype.copy = function copy () {\n return new Coordinate(this)\n};\nCoordinate.prototype.toString = function toString () {\n return '(' + this.x + ', ' + this.y + ', ' + this.z + ')'\n};\nCoordinate.prototype.distance3D = function distance3D (c) {\n var dx = this.x - c.x;\n var dy = this.y - c.y;\n var dz = this.z - c.z;\n return Math.sqrt(dx * dx + dy * dy + dz * dz)\n};\nCoordinate.prototype.distance = function distance (c) {\n var dx = this.x - c.x;\n var dy = this.y - c.y;\n return Math.sqrt(dx * dx + dy * dy)\n};\nCoordinate.prototype.hashCode = function hashCode () {\n var result = 17;\n result = 37 * result + Coordinate.hashCode(this.x);\n result = 37 * result + Coordinate.hashCode(this.y);\n return result\n};\nCoordinate.prototype.setCoordinate = function setCoordinate (other) {\n this.x = other.x;\n this.y = other.y;\n this.z = other.z;\n};\nCoordinate.prototype.interfaces_ = function interfaces_ () {\n return [Comparable, Clonable, Serializable]\n};\nCoordinate.prototype.getClass = function getClass () {\n return Coordinate\n};\nCoordinate.hashCode = function hashCode () {\n if (arguments.length === 1) {\n var x = arguments[0];\n var f = Double.doubleToLongBits(x);\n return Math.trunc((f ^ f) >>> 32)\n }\n};\nstaticAccessors.DimensionalComparator.get = function () { return DimensionalComparator };\nstaticAccessors.serialVersionUID.get = function () { return 6683108902428366910 };\nstaticAccessors.NULL_ORDINATE.get = function () { return Double.NaN };\nstaticAccessors.X.get = function () { return 0 };\nstaticAccessors.Y.get = function () { return 1 };\nstaticAccessors.Z.get = function () { return 2 };\n\nObject.defineProperties( Coordinate, staticAccessors );\n\nvar DimensionalComparator = function DimensionalComparator (dimensionsToTest) {\n this._dimensionsToTest = 2;\n if (arguments.length === 0) {} else if (arguments.length === 1) {\n var dimensionsToTest$1 = arguments[0];\n if (dimensionsToTest$1 !== 2 && dimensionsToTest$1 !== 3) { throw new IllegalArgumentException('only 2 or 3 dimensions may be specified') }\n this._dimensionsToTest = dimensionsToTest$1;\n }\n};\nDimensionalComparator.prototype.compare = function compare (o1, o2) {\n var c1 = o1;\n var c2 = o2;\n var compX = DimensionalComparator.compare(c1.x, c2.x);\n if (compX !== 0) { return compX }\n var compY = DimensionalComparator.compare(c1.y, c2.y);\n if (compY !== 0) { return compY }\n if (this._dimensionsToTest <= 2) { return 0 }\n var compZ = DimensionalComparator.compare(c1.z, c2.z);\n return compZ\n};\nDimensionalComparator.prototype.interfaces_ = function interfaces_ () {\n return [Comparator]\n};\nDimensionalComparator.prototype.getClass = function getClass () {\n return DimensionalComparator\n};\nDimensionalComparator.compare = function compare (a, b) {\n if (a < b) { return -1 }\n if (a > b) { return 1 }\n if (Double.isNaN(a)) {\n if (Double.isNaN(b)) { return 0 }\n return -1\n }\n if (Double.isNaN(b)) { return 1 }\n return 0\n};\n\n// import hasInterface from '../../../../hasInterface'\n// import CoordinateSequence from './CoordinateSequence'\n\nvar CoordinateSequenceFactory = function CoordinateSequenceFactory () {};\n\nCoordinateSequenceFactory.prototype.create = function create () {\n // if (arguments.length === 1) {\n // if (arguments[0] instanceof Array) {\n // let coordinates = arguments[0]\n // } else if (hasInterface(arguments[0], CoordinateSequence)) {\n // let coordSeq = arguments[0]\n // }\n // } else if (arguments.length === 2) {\n // let size = arguments[0]\n // let dimension = arguments[1]\n // }\n};\nCoordinateSequenceFactory.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nCoordinateSequenceFactory.prototype.getClass = function getClass () {\n return CoordinateSequenceFactory\n};\n\nvar Location = function Location () {};\n\nvar staticAccessors$4 = { INTERIOR: { configurable: true },BOUNDARY: { configurable: true },EXTERIOR: { configurable: true },NONE: { configurable: true } };\n\nLocation.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nLocation.prototype.getClass = function getClass () {\n return Location\n};\nLocation.toLocationSymbol = function toLocationSymbol (locationValue) {\n switch (locationValue) {\n case Location.EXTERIOR:\n return 'e'\n case Location.BOUNDARY:\n return 'b'\n case Location.INTERIOR:\n return 'i'\n case Location.NONE:\n return '-'\n default:\n }\n throw new IllegalArgumentException('Unknown location value: ' + locationValue)\n};\nstaticAccessors$4.INTERIOR.get = function () { return 0 };\nstaticAccessors$4.BOUNDARY.get = function () { return 1 };\nstaticAccessors$4.EXTERIOR.get = function () { return 2 };\nstaticAccessors$4.NONE.get = function () { return -1 };\n\nObject.defineProperties( Location, staticAccessors$4 );\n\nvar hasInterface = function (o, i) {\n return o.interfaces_ && o.interfaces_().indexOf(i) > -1\n};\n\nvar MathUtil = function MathUtil () {};\n\nvar staticAccessors$5 = { LOG_10: { configurable: true } };\n\nMathUtil.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nMathUtil.prototype.getClass = function getClass () {\n return MathUtil\n};\nMathUtil.log10 = function log10 (x) {\n var ln = Math.log(x);\n if (Double.isInfinite(ln)) { return ln }\n if (Double.isNaN(ln)) { return ln }\n return ln / MathUtil.LOG_10\n};\nMathUtil.min = function min (v1, v2, v3, v4) {\n var min = v1;\n if (v2 < min) { min = v2; }\n if (v3 < min) { min = v3; }\n if (v4 < min) { min = v4; }\n return min\n};\nMathUtil.clamp = function clamp () {\n if (typeof arguments[2] === 'number' && (typeof arguments[0] === 'number' && typeof arguments[1] === 'number')) {\n var x = arguments[0];\n var min = arguments[1];\n var max = arguments[2];\n if (x < min) { return min }\n if (x > max) { return max }\n return x\n } else if (Number.isInteger(arguments[2]) && (Number.isInteger(arguments[0]) && Number.isInteger(arguments[1]))) {\n var x$1 = arguments[0];\n var min$1 = arguments[1];\n var max$1 = arguments[2];\n if (x$1 < min$1) { return min$1 }\n if (x$1 > max$1) { return max$1 }\n return x$1\n }\n};\nMathUtil.wrap = function wrap (index, max) {\n if (index < 0) {\n return max - -index % max\n }\n return index % max\n};\nMathUtil.max = function max () {\n if (arguments.length === 3) {\n var v1 = arguments[0];\n var v2 = arguments[1];\n var v3 = arguments[2];\n var max = v1;\n if (v2 > max) { max = v2; }\n if (v3 > max) { max = v3; }\n return max\n } else if (arguments.length === 4) {\n var v1$1 = arguments[0];\n var v2$1 = arguments[1];\n var v3$1 = arguments[2];\n var v4 = arguments[3];\n var max$1 = v1$1;\n if (v2$1 > max$1) { max$1 = v2$1; }\n if (v3$1 > max$1) { max$1 = v3$1; }\n if (v4 > max$1) { max$1 = v4; }\n return max$1\n }\n};\nMathUtil.average = function average (x1, x2) {\n return (x1 + x2) / 2.0\n};\nstaticAccessors$5.LOG_10.get = function () { return Math.log(10) };\n\nObject.defineProperties( MathUtil, staticAccessors$5 );\n\nvar StringBuffer = function StringBuffer (str) {\n this.str = str;\n};\nStringBuffer.prototype.append = function append (e) {\n this.str += e;\n};\n\nStringBuffer.prototype.setCharAt = function setCharAt (i, c) {\n this.str = this.str.substr(0, i) + c + this.str.substr(i + 1);\n};\n\nStringBuffer.prototype.toString = function toString (e) {\n return this.str\n};\n\nvar Integer = function Integer (value) {\n this.value = value;\n};\nInteger.prototype.intValue = function intValue () {\n return this.value\n};\nInteger.prototype.compareTo = function compareTo (o) {\n if (this.value < o) { return -1 }\n if (this.value > o) { return 1 }\n return 0\n};\nInteger.isNaN = function isNaN (n) { return Number.isNaN(n) };\n\nvar Character = function Character () {};\n\nCharacter.isWhitespace = function isWhitespace (c) { return ((c <= 32 && c >= 0) || c === 127) };\nCharacter.toUpperCase = function toUpperCase (c) { return c.toUpperCase() };\n\nvar DD = function DD () {\n this._hi = 0.0;\n this._lo = 0.0;\n if (arguments.length === 0) {\n this.init(0.0);\n } else if (arguments.length === 1) {\n if (typeof arguments[0] === 'number') {\n var x = arguments[0];\n this.init(x);\n } else if (arguments[0] instanceof DD) {\n var dd = arguments[0];\n this.init(dd);\n } else if (typeof arguments[0] === 'string') {\n var str = arguments[0];\n DD.call(this, DD.parse(str));\n }\n } else if (arguments.length === 2) {\n var hi = arguments[0];\n var lo = arguments[1];\n this.init(hi, lo);\n }\n};\n\nvar staticAccessors$7 = { PI: { configurable: true },TWO_PI: { configurable: true },PI_2: { configurable: true },E: { configurable: true },NaN: { configurable: true },EPS: { configurable: true },SPLIT: { configurable: true },MAX_PRINT_DIGITS: { configurable: true },TEN: { configurable: true },ONE: { configurable: true },SCI_NOT_EXPONENT_CHAR: { configurable: true },SCI_NOT_ZERO: { configurable: true } };\nDD.prototype.le = function le (y) {\n return (this._hi < y._hi || this._hi === y._hi) && this._lo <= y._lo\n};\nDD.prototype.extractSignificantDigits = function extractSignificantDigits (insertDecimalPoint, magnitude) {\n var y = this.abs();\n var mag = DD.magnitude(y._hi);\n var scale = DD.TEN.pow(mag);\n y = y.divide(scale);\n if (y.gt(DD.TEN)) {\n y = y.divide(DD.TEN);\n mag += 1;\n } else if (y.lt(DD.ONE)) {\n y = y.multiply(DD.TEN);\n mag -= 1;\n }\n var decimalPointPos = mag + 1;\n var buf = new StringBuffer();\n var numDigits = DD.MAX_PRINT_DIGITS - 1;\n for (var i = 0; i <= numDigits; i++) {\n if (insertDecimalPoint && i === decimalPointPos) {\n buf.append('.');\n }\n var digit = Math.trunc(y._hi);\n if (digit < 0) {\n break\n }\n var rebiasBy10 = false;\n var digitChar = 0;\n if (digit > 9) {\n rebiasBy10 = true;\n digitChar = '9';\n } else {\n digitChar = '0' + digit;\n }\n buf.append(digitChar);\n y = y.subtract(DD.valueOf(digit)).multiply(DD.TEN);\n if (rebiasBy10) { y.selfAdd(DD.TEN); }\n var continueExtractingDigits = true;\n var remMag = DD.magnitude(y._hi);\n if (remMag < 0 && Math.abs(remMag) >= numDigits - i) { continueExtractingDigits = false; }\n if (!continueExtractingDigits) { break }\n }\n magnitude[0] = mag;\n return buf.toString()\n};\nDD.prototype.sqr = function sqr () {\n return this.multiply(this)\n};\nDD.prototype.doubleValue = function doubleValue () {\n return this._hi + this._lo\n};\nDD.prototype.subtract = function subtract () {\n if (arguments[0] instanceof DD) {\n var y = arguments[0];\n return this.add(y.negate())\n } else if (typeof arguments[0] === 'number') {\n var y$1 = arguments[0];\n return this.add(-y$1)\n }\n};\nDD.prototype.equals = function equals () {\n if (arguments.length === 1) {\n var y = arguments[0];\n return this._hi === y._hi && this._lo === y._lo\n }\n};\nDD.prototype.isZero = function isZero () {\n return this._hi === 0.0 && this._lo === 0.0\n};\nDD.prototype.selfSubtract = function selfSubtract () {\n if (arguments[0] instanceof DD) {\n var y = arguments[0];\n if (this.isNaN()) { return this }\n return this.selfAdd(-y._hi, -y._lo)\n } else if (typeof arguments[0] === 'number') {\n var y$1 = arguments[0];\n if (this.isNaN()) { return this }\n return this.selfAdd(-y$1, 0.0)\n }\n};\nDD.prototype.getSpecialNumberString = function getSpecialNumberString () {\n if (this.isZero()) { return '0.0' }\n if (this.isNaN()) { return 'NaN ' }\n return null\n};\nDD.prototype.min = function min (x) {\n if (this.le(x)) {\n return this\n } else {\n return x\n }\n};\nDD.prototype.selfDivide = function selfDivide () {\n if (arguments.length === 1) {\n if (arguments[0] instanceof DD) {\n var y = arguments[0];\n return this.selfDivide(y._hi, y._lo)\n } else if (typeof arguments[0] === 'number') {\n var y$1 = arguments[0];\n return this.selfDivide(y$1, 0.0)\n }\n } else if (arguments.length === 2) {\n var yhi = arguments[0];\n var ylo = arguments[1];\n var hc = null;\n var tc = null;\n var hy = null;\n var ty = null;\n var C = null;\n var c = null;\n var U = null;\n var u = null;\n C = this._hi / yhi;\n c = DD.SPLIT * C;\n hc = c - C;\n u = DD.SPLIT * yhi;\n hc = c - hc;\n tc = C - hc;\n hy = u - yhi;\n U = C * yhi;\n hy = u - hy;\n ty = yhi - hy;\n u = hc * hy - U + hc * ty + tc * hy + tc * ty;\n c = (this._hi - U - u + this._lo - C * ylo) / yhi;\n u = C + c;\n this._hi = u;\n this._lo = C - u + c;\n return this\n }\n};\nDD.prototype.dump = function dump () {\n return 'DD<' + this._hi + ', ' + this._lo + '>'\n};\nDD.prototype.divide = function divide () {\n if (arguments[0] instanceof DD) {\n var y = arguments[0];\n var hc = null;\n var tc = null;\n var hy = null;\n var ty = null;\n var C = null;\n var c = null;\n var U = null;\n var u = null;\n C = this._hi / y._hi;\n c = DD.SPLIT * C;\n hc = c - C;\n u = DD.SPLIT * y._hi;\n hc = c - hc;\n tc = C - hc;\n hy = u - y._hi;\n U = C * y._hi;\n hy = u - hy;\n ty = y._hi - hy;\n u = hc * hy - U + hc * ty + tc * hy + tc * ty;\n c = (this._hi - U - u + this._lo - C * y._lo) / y._hi;\n u = C + c;\n var zhi = u;\n var zlo = C - u + c;\n return new DD(zhi, zlo)\n } else if (typeof arguments[0] === 'number') {\n var y$1 = arguments[0];\n if (Double.isNaN(y$1)) { return DD.createNaN() }\n return DD.copy(this).selfDivide(y$1, 0.0)\n }\n};\nDD.prototype.ge = function ge (y) {\n return (this._hi > y._hi || this._hi === y._hi) && this._lo >= y._lo\n};\nDD.prototype.pow = function pow (exp) {\n if (exp === 0.0) { return DD.valueOf(1.0) }\n var r = new DD(this);\n var s = DD.valueOf(1.0);\n var n = Math.abs(exp);\n if (n > 1) {\n while (n > 0) {\n if (n % 2 === 1) {\n s.selfMultiply(r);\n }\n n /= 2;\n if (n > 0) { r = r.sqr(); }\n }\n } else {\n s = r;\n }\n if (exp < 0) { return s.reciprocal() }\n return s\n};\nDD.prototype.ceil = function ceil () {\n if (this.isNaN()) { return DD.NaN }\n var fhi = Math.ceil(this._hi);\n var flo = 0.0;\n if (fhi === this._hi) {\n flo = Math.ceil(this._lo);\n }\n return new DD(fhi, flo)\n};\nDD.prototype.compareTo = function compareTo (o) {\n var other = o;\n if (this._hi < other._hi) { return -1 }\n if (this._hi > other._hi) { return 1 }\n if (this._lo < other._lo) { return -1 }\n if (this._lo > other._lo) { return 1 }\n return 0\n};\nDD.prototype.rint = function rint () {\n if (this.isNaN()) { return this }\n var plus5 = this.add(0.5);\n return plus5.floor()\n};\nDD.prototype.setValue = function setValue () {\n if (arguments[0] instanceof DD) {\n var value = arguments[0];\n this.init(value);\n return this\n } else if (typeof arguments[0] === 'number') {\n var value$1 = arguments[0];\n this.init(value$1);\n return this\n }\n};\nDD.prototype.max = function max (x) {\n if (this.ge(x)) {\n return this\n } else {\n return x\n }\n};\nDD.prototype.sqrt = function sqrt () {\n if (this.isZero()) { return DD.valueOf(0.0) }\n if (this.isNegative()) {\n return DD.NaN\n }\n var x = 1.0 / Math.sqrt(this._hi);\n var ax = this._hi * x;\n var axdd = DD.valueOf(ax);\n var diffSq = this.subtract(axdd.sqr());\n var d2 = diffSq._hi * (x * 0.5);\n return axdd.add(d2)\n};\nDD.prototype.selfAdd = function selfAdd () {\n if (arguments.length === 1) {\n if (arguments[0] instanceof DD) {\n var y = arguments[0];\n return this.selfAdd(y._hi, y._lo)\n } else if (typeof arguments[0] === 'number') {\n var y$1 = arguments[0];\n var H = null;\n var h = null;\n var S = null;\n var s = null;\n var e = null;\n var f = null;\n S = this._hi + y$1;\n e = S - this._hi;\n s = S - e;\n s = y$1 - e + (this._hi - s);\n f = s + this._lo;\n H = S + f;\n h = f + (S - H);\n this._hi = H + h;\n this._lo = h + (H - this._hi);\n return this\n }\n } else if (arguments.length === 2) {\n var yhi = arguments[0];\n var ylo = arguments[1];\n var H$1 = null;\n var h$1 = null;\n var T = null;\n var t = null;\n var S$1 = null;\n var s$1 = null;\n var e$1 = null;\n var f$1 = null;\n S$1 = this._hi + yhi;\n T = this._lo + ylo;\n e$1 = S$1 - this._hi;\n f$1 = T - this._lo;\n s$1 = S$1 - e$1;\n t = T - f$1;\n s$1 = yhi - e$1 + (this._hi - s$1);\n t = ylo - f$1 + (this._lo - t);\n e$1 = s$1 + T;\n H$1 = S$1 + e$1;\n h$1 = e$1 + (S$1 - H$1);\n e$1 = t + h$1;\n var zhi = H$1 + e$1;\n var zlo = e$1 + (H$1 - zhi);\n this._hi = zhi;\n this._lo = zlo;\n return this\n }\n};\nDD.prototype.selfMultiply = function selfMultiply () {\n if (arguments.length === 1) {\n if (arguments[0] instanceof DD) {\n var y = arguments[0];\n return this.selfMultiply(y._hi, y._lo)\n } else if (typeof arguments[0] === 'number') {\n var y$1 = arguments[0];\n return this.selfMultiply(y$1, 0.0)\n }\n } else if (arguments.length === 2) {\n var yhi = arguments[0];\n var ylo = arguments[1];\n var hx = null;\n var tx = null;\n var hy = null;\n var ty = null;\n var C = null;\n var c = null;\n C = DD.SPLIT * this._hi;\n hx = C - this._hi;\n c = DD.SPLIT * yhi;\n hx = C - hx;\n tx = this._hi - hx;\n hy = c - yhi;\n C = this._hi * yhi;\n hy = c - hy;\n ty = yhi - hy;\n c = hx * hy - C + hx * ty + tx * hy + tx * ty + (this._hi * ylo + this._lo * yhi);\n var zhi = C + c;\n hx = C - zhi;\n var zlo = c + hx;\n this._hi = zhi;\n this._lo = zlo;\n return this\n }\n};\nDD.prototype.selfSqr = function selfSqr () {\n return this.selfMultiply(this)\n};\nDD.prototype.floor = function floor () {\n if (this.isNaN()) { return DD.NaN }\n var fhi = Math.floor(this._hi);\n var flo = 0.0;\n if (fhi === this._hi) {\n flo = Math.floor(this._lo);\n }\n return new DD(fhi, flo)\n};\nDD.prototype.negate = function negate () {\n if (this.isNaN()) { return this }\n return new DD(-this._hi, -this._lo)\n};\nDD.prototype.clone = function clone () {\n // try {\n // return null\n // } catch (ex) {\n // if (ex instanceof CloneNotSupportedException) {\n // return null\n // } else throw ex\n // } finally {}\n};\nDD.prototype.multiply = function multiply () {\n if (arguments[0] instanceof DD) {\n var y = arguments[0];\n if (y.isNaN()) { return DD.createNaN() }\n return DD.copy(this).selfMultiply(y)\n } else if (typeof arguments[0] === 'number') {\n var y$1 = arguments[0];\n if (Double.isNaN(y$1)) { return DD.createNaN() }\n return DD.copy(this).selfMultiply(y$1, 0.0)\n }\n};\nDD.prototype.isNaN = function isNaN () {\n return Double.isNaN(this._hi)\n};\nDD.prototype.intValue = function intValue () {\n return Math.trunc(this._hi)\n};\nDD.prototype.toString = function toString () {\n var mag = DD.magnitude(this._hi);\n if (mag >= -3 && mag <= 20) { return this.toStandardNotation() }\n return this.toSciNotation()\n};\nDD.prototype.toStandardNotation = function toStandardNotation () {\n var specialStr = this.getSpecialNumberString();\n if (specialStr !== null) { return specialStr }\n var magnitude = new Array(1).fill(null);\n var sigDigits = this.extractSignificantDigits(true, magnitude);\n var decimalPointPos = magnitude[0] + 1;\n var num = sigDigits;\n if (sigDigits.charAt(0) === '.') {\n num = '0' + sigDigits;\n } else if (decimalPointPos < 0) {\n num = '0.' + DD.stringOfChar('0', -decimalPointPos) + sigDigits;\n } else if (sigDigits.indexOf('.') === -1) {\n var numZeroes = decimalPointPos - sigDigits.length;\n var zeroes = DD.stringOfChar('0', numZeroes);\n num = sigDigits + zeroes + '.0';\n }\n if (this.isNegative()) { return '-' + num }\n return num\n};\nDD.prototype.reciprocal = function reciprocal () {\n var hc = null;\n var tc = null;\n var hy = null;\n var ty = null;\n var C = null;\n var c = null;\n var U = null;\n var u = null;\n C = 1.0 / this._hi;\n c = DD.SPLIT * C;\n hc = c - C;\n u = DD.SPLIT * this._hi;\n hc = c - hc;\n tc = C - hc;\n hy = u - this._hi;\n U = C * this._hi;\n hy = u - hy;\n ty = this._hi - hy;\n u = hc * hy - U + hc * ty + tc * hy + tc * ty;\n c = (1.0 - U - u - C * this._lo) / this._hi;\n var zhi = C + c;\n var zlo = C - zhi + c;\n return new DD(zhi, zlo)\n};\nDD.prototype.toSciNotation = function toSciNotation () {\n if (this.isZero()) { return DD.SCI_NOT_ZERO }\n var specialStr = this.getSpecialNumberString();\n if (specialStr !== null) { return specialStr }\n var magnitude = new Array(1).fill(null);\n var digits = this.extractSignificantDigits(false, magnitude);\n var expStr = DD.SCI_NOT_EXPONENT_CHAR + magnitude[0];\n if (digits.charAt(0) === '0') {\n throw new Error('Found leading zero: ' + digits)\n }\n var trailingDigits = '';\n if (digits.length > 1) { trailingDigits = digits.substring(1); }\n var digitsWithDecimal = digits.charAt(0) + '.' + trailingDigits;\n if (this.isNegative()) { return '-' + digitsWithDecimal + expStr }\n return digitsWithDecimal + expStr\n};\nDD.prototype.abs = function abs () {\n if (this.isNaN()) { return DD.NaN }\n if (this.isNegative()) { return this.negate() }\n return new DD(this)\n};\nDD.prototype.isPositive = function isPositive () {\n return (this._hi > 0.0 || this._hi === 0.0) && this._lo > 0.0\n};\nDD.prototype.lt = function lt (y) {\n return (this._hi < y._hi || this._hi === y._hi) && this._lo < y._lo\n};\nDD.prototype.add = function add () {\n if (arguments[0] instanceof DD) {\n var y = arguments[0];\n return DD.copy(this).selfAdd(y)\n } else if (typeof arguments[0] === 'number') {\n var y$1 = arguments[0];\n return DD.copy(this).selfAdd(y$1)\n }\n};\nDD.prototype.init = function init () {\n if (arguments.length === 1) {\n if (typeof arguments[0] === 'number') {\n var x = arguments[0];\n this._hi = x;\n this._lo = 0.0;\n } else if (arguments[0] instanceof DD) {\n var dd = arguments[0];\n this._hi = dd._hi;\n this._lo = dd._lo;\n }\n } else if (arguments.length === 2) {\n var hi = arguments[0];\n var lo = arguments[1];\n this._hi = hi;\n this._lo = lo;\n }\n};\nDD.prototype.gt = function gt (y) {\n return (this._hi > y._hi || this._hi === y._hi) && this._lo > y._lo\n};\nDD.prototype.isNegative = function isNegative () {\n return (this._hi < 0.0 || this._hi === 0.0) && this._lo < 0.0\n};\nDD.prototype.trunc = function trunc () {\n if (this.isNaN()) { return DD.NaN }\n if (this.isPositive()) { return this.floor(); } else { return this.ceil() }\n};\nDD.prototype.signum = function signum () {\n if (this._hi > 0) { return 1 }\n if (this._hi < 0) { return -1 }\n if (this._lo > 0) { return 1 }\n if (this._lo < 0) { return -1 }\n return 0\n};\nDD.prototype.interfaces_ = function interfaces_ () {\n return [Serializable, Comparable, Clonable]\n};\nDD.prototype.getClass = function getClass () {\n return DD\n};\nDD.sqr = function sqr (x) {\n return DD.valueOf(x).selfMultiply(x)\n};\nDD.valueOf = function valueOf () {\n if (typeof arguments[0] === 'string') {\n var str = arguments[0];\n return DD.parse(str)\n } else if (typeof arguments[0] === 'number') {\n var x = arguments[0];\n return new DD(x)\n }\n};\nDD.sqrt = function sqrt (x) {\n return DD.valueOf(x).sqrt()\n};\nDD.parse = function parse (str) {\n var i = 0;\n var strlen = str.length;\n while (Character.isWhitespace(str.charAt(i))) { i++; }\n var isNegative = false;\n if (i < strlen) {\n var signCh = str.charAt(i);\n if (signCh === '-' || signCh === '+') {\n i++;\n if (signCh === '-') { isNegative = true; }\n }\n }\n var val = new DD();\n var numDigits = 0;\n var numBeforeDec = 0;\n var exp = 0;\n while (true) {\n if (i >= strlen) { break }\n var ch = str.charAt(i);\n i++;\n if (Character.isDigit(ch)) {\n var d = ch - '0';\n val.selfMultiply(DD.TEN);\n val.selfAdd(d);\n numDigits++;\n continue\n }\n if (ch === '.') {\n numBeforeDec = numDigits;\n continue\n }\n if (ch === 'e' || ch === 'E') {\n var expStr = str.substring(i);\n try {\n exp = Integer.parseInt(expStr);\n } catch (ex) {\n if (ex instanceof Error) {\n throw new Error('Invalid exponent ' + expStr + ' in string ' + str)\n } else { throw ex }\n } finally {}\n break\n }\n throw new Error(\"Unexpected character '\" + ch + \"' at position \" + i + ' in string ' + str)\n }\n var val2 = val;\n var numDecPlaces = numDigits - numBeforeDec - exp;\n if (numDecPlaces === 0) {\n val2 = val;\n } else if (numDecPlaces > 0) {\n var scale = DD.TEN.pow(numDecPlaces);\n val2 = val.divide(scale);\n } else if (numDecPlaces < 0) {\n var scale$1 = DD.TEN.pow(-numDecPlaces);\n val2 = val.multiply(scale$1);\n }\n if (isNegative) {\n return val2.negate()\n }\n return val2\n};\nDD.createNaN = function createNaN () {\n return new DD(Double.NaN, Double.NaN)\n};\nDD.copy = function copy (dd) {\n return new DD(dd)\n};\nDD.magnitude = function magnitude (x) {\n var xAbs = Math.abs(x);\n var xLog10 = Math.log(xAbs) / Math.log(10);\n var xMag = Math.trunc(Math.floor(xLog10));\n var xApprox = Math.pow(10, xMag);\n if (xApprox * 10 <= xAbs) { xMag += 1; }\n return xMag\n};\nDD.stringOfChar = function stringOfChar (ch, len) {\n var buf = new StringBuffer();\n for (var i = 0; i < len; i++) {\n buf.append(ch);\n }\n return buf.toString()\n};\nstaticAccessors$7.PI.get = function () { return new DD(3.141592653589793116e+00, 1.224646799147353207e-16) };\nstaticAccessors$7.TWO_PI.get = function () { return new DD(6.283185307179586232e+00, 2.449293598294706414e-16) };\nstaticAccessors$7.PI_2.get = function () { return new DD(1.570796326794896558e+00, 6.123233995736766036e-17) };\nstaticAccessors$7.E.get = function () { return new DD(2.718281828459045091e+00, 1.445646891729250158e-16) };\nstaticAccessors$7.NaN.get = function () { return new DD(Double.NaN, Double.NaN) };\nstaticAccessors$7.EPS.get = function () { return 1.23259516440783e-32 };\nstaticAccessors$7.SPLIT.get = function () { return 134217729.0 };\nstaticAccessors$7.MAX_PRINT_DIGITS.get = function () { return 32 };\nstaticAccessors$7.TEN.get = function () { return DD.valueOf(10.0) };\nstaticAccessors$7.ONE.get = function () { return DD.valueOf(1.0) };\nstaticAccessors$7.SCI_NOT_EXPONENT_CHAR.get = function () { return 'E' };\nstaticAccessors$7.SCI_NOT_ZERO.get = function () { return '0.0E0' };\n\nObject.defineProperties( DD, staticAccessors$7 );\n\nvar CGAlgorithmsDD = function CGAlgorithmsDD () {};\n\nvar staticAccessors$6 = { DP_SAFE_EPSILON: { configurable: true } };\n\nCGAlgorithmsDD.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nCGAlgorithmsDD.prototype.getClass = function getClass () {\n return CGAlgorithmsDD\n};\nCGAlgorithmsDD.orientationIndex = function orientationIndex (p1, p2, q) {\n var index = CGAlgorithmsDD.orientationIndexFilter(p1, p2, q);\n if (index <= 1) { return index }\n var dx1 = DD.valueOf(p2.x).selfAdd(-p1.x);\n var dy1 = DD.valueOf(p2.y).selfAdd(-p1.y);\n var dx2 = DD.valueOf(q.x).selfAdd(-p2.x);\n var dy2 = DD.valueOf(q.y).selfAdd(-p2.y);\n return dx1.selfMultiply(dy2).selfSubtract(dy1.selfMultiply(dx2)).signum()\n};\nCGAlgorithmsDD.signOfDet2x2 = function signOfDet2x2 (x1, y1, x2, y2) {\n var det = x1.multiply(y2).selfSubtract(y1.multiply(x2));\n return det.signum()\n};\nCGAlgorithmsDD.intersection = function intersection (p1, p2, q1, q2) {\n var denom1 = DD.valueOf(q2.y).selfSubtract(q1.y).selfMultiply(DD.valueOf(p2.x).selfSubtract(p1.x));\n var denom2 = DD.valueOf(q2.x).selfSubtract(q1.x).selfMultiply(DD.valueOf(p2.y).selfSubtract(p1.y));\n var denom = denom1.subtract(denom2);\n var numx1 = DD.valueOf(q2.x).selfSubtract(q1.x).selfMultiply(DD.valueOf(p1.y).selfSubtract(q1.y));\n var numx2 = DD.valueOf(q2.y).selfSubtract(q1.y).selfMultiply(DD.valueOf(p1.x).selfSubtract(q1.x));\n var numx = numx1.subtract(numx2);\n var fracP = numx.selfDivide(denom).doubleValue();\n var x = DD.valueOf(p1.x).selfAdd(DD.valueOf(p2.x).selfSubtract(p1.x).selfMultiply(fracP)).doubleValue();\n var numy1 = DD.valueOf(p2.x).selfSubtract(p1.x).selfMultiply(DD.valueOf(p1.y).selfSubtract(q1.y));\n var numy2 = DD.valueOf(p2.y).selfSubtract(p1.y).selfMultiply(DD.valueOf(p1.x).selfSubtract(q1.x));\n var numy = numy1.subtract(numy2);\n var fracQ = numy.selfDivide(denom).doubleValue();\n var y = DD.valueOf(q1.y).selfAdd(DD.valueOf(q2.y).selfSubtract(q1.y).selfMultiply(fracQ)).doubleValue();\n return new Coordinate(x, y)\n};\nCGAlgorithmsDD.orientationIndexFilter = function orientationIndexFilter (pa, pb, pc) {\n var detsum = null;\n var detleft = (pa.x - pc.x) * (pb.y - pc.y);\n var detright = (pa.y - pc.y) * (pb.x - pc.x);\n var det = detleft - detright;\n if (detleft > 0.0) {\n if (detright <= 0.0) {\n return CGAlgorithmsDD.signum(det)\n } else {\n detsum = detleft + detright;\n }\n } else if (detleft < 0.0) {\n if (detright >= 0.0) {\n return CGAlgorithmsDD.signum(det)\n } else {\n detsum = -detleft - detright;\n }\n } else {\n return CGAlgorithmsDD.signum(det)\n }\n var errbound = CGAlgorithmsDD.DP_SAFE_EPSILON * detsum;\n if (det >= errbound || -det >= errbound) {\n return CGAlgorithmsDD.signum(det)\n }\n return 2\n};\nCGAlgorithmsDD.signum = function signum (x) {\n if (x > 0) { return 1 }\n if (x < 0) { return -1 }\n return 0\n};\nstaticAccessors$6.DP_SAFE_EPSILON.get = function () { return 1e-15 };\n\nObject.defineProperties( CGAlgorithmsDD, staticAccessors$6 );\n\nvar CoordinateSequence = function CoordinateSequence () {};\n\nvar staticAccessors$8 = { X: { configurable: true },Y: { configurable: true },Z: { configurable: true },M: { configurable: true } };\n\nstaticAccessors$8.X.get = function () { return 0 };\nstaticAccessors$8.Y.get = function () { return 1 };\nstaticAccessors$8.Z.get = function () { return 2 };\nstaticAccessors$8.M.get = function () { return 3 };\nCoordinateSequence.prototype.setOrdinate = function setOrdinate (index, ordinateIndex, value) {};\nCoordinateSequence.prototype.size = function size () {};\nCoordinateSequence.prototype.getOrdinate = function getOrdinate (index, ordinateIndex) {};\nCoordinateSequence.prototype.getCoordinate = function getCoordinate () {};\nCoordinateSequence.prototype.getCoordinateCopy = function getCoordinateCopy (i) {};\nCoordinateSequence.prototype.getDimension = function getDimension () {};\nCoordinateSequence.prototype.getX = function getX (index) {};\nCoordinateSequence.prototype.clone = function clone () {};\nCoordinateSequence.prototype.expandEnvelope = function expandEnvelope (env) {};\nCoordinateSequence.prototype.copy = function copy () {};\nCoordinateSequence.prototype.getY = function getY (index) {};\nCoordinateSequence.prototype.toCoordinateArray = function toCoordinateArray () {};\nCoordinateSequence.prototype.interfaces_ = function interfaces_ () {\n return [Clonable]\n};\nCoordinateSequence.prototype.getClass = function getClass () {\n return CoordinateSequence\n};\n\nObject.defineProperties( CoordinateSequence, staticAccessors$8 );\n\nvar Exception = function Exception () {};\n\nvar NotRepresentableException = (function (Exception$$1) {\n function NotRepresentableException () {\n Exception$$1.call(this, 'Projective point not representable on the Cartesian plane.');\n }\n\n if ( Exception$$1 ) NotRepresentableException.__proto__ = Exception$$1;\n NotRepresentableException.prototype = Object.create( Exception$$1 && Exception$$1.prototype );\n NotRepresentableException.prototype.constructor = NotRepresentableException;\n NotRepresentableException.prototype.interfaces_ = function interfaces_ () {\n return []\n };\n NotRepresentableException.prototype.getClass = function getClass () {\n return NotRepresentableException\n };\n\n return NotRepresentableException;\n}(Exception));\n\nvar System = function System () {};\n\nSystem.arraycopy = function arraycopy (src, srcPos, dest, destPos, len) {\n var c = 0;\n for (var i = srcPos; i < srcPos + len; i++) {\n dest[destPos + c] = src[i];\n c++;\n }\n};\n\nSystem.getProperty = function getProperty (name) {\n return {\n 'line.separator': '\\n'\n }[name]\n};\n\nvar HCoordinate = function HCoordinate () {\n this.x = null;\n this.y = null;\n this.w = null;\n if (arguments.length === 0) {\n this.x = 0.0;\n this.y = 0.0;\n this.w = 1.0;\n } else if (arguments.length === 1) {\n var p = arguments[0];\n this.x = p.x;\n this.y = p.y;\n this.w = 1.0;\n } else if (arguments.length === 2) {\n if (typeof arguments[0] === 'number' && typeof arguments[1] === 'number') {\n var _x = arguments[0];\n var _y = arguments[1];\n this.x = _x;\n this.y = _y;\n this.w = 1.0;\n } else if (arguments[0] instanceof HCoordinate && arguments[1] instanceof HCoordinate) {\n var p1 = arguments[0];\n var p2 = arguments[1];\n this.x = p1.y * p2.w - p2.y * p1.w;\n this.y = p2.x * p1.w - p1.x * p2.w;\n this.w = p1.x * p2.y - p2.x * p1.y;\n } else if (arguments[0] instanceof Coordinate && arguments[1] instanceof Coordinate) {\n var p1$1 = arguments[0];\n var p2$1 = arguments[1];\n this.x = p1$1.y - p2$1.y;\n this.y = p2$1.x - p1$1.x;\n this.w = p1$1.x * p2$1.y - p2$1.x * p1$1.y;\n }\n } else if (arguments.length === 3) {\n var _x$1 = arguments[0];\n var _y$1 = arguments[1];\n var _w = arguments[2];\n this.x = _x$1;\n this.y = _y$1;\n this.w = _w;\n } else if (arguments.length === 4) {\n var p1$2 = arguments[0];\n var p2$2 = arguments[1];\n var q1 = arguments[2];\n var q2 = arguments[3];\n var px = p1$2.y - p2$2.y;\n var py = p2$2.x - p1$2.x;\n var pw = p1$2.x * p2$2.y - p2$2.x * p1$2.y;\n var qx = q1.y - q2.y;\n var qy = q2.x - q1.x;\n var qw = q1.x * q2.y - q2.x * q1.y;\n this.x = py * qw - qy * pw;\n this.y = qx * pw - px * qw;\n this.w = px * qy - qx * py;\n }\n};\nHCoordinate.prototype.getY = function getY () {\n var a = this.y / this.w;\n if (Double.isNaN(a) || Double.isInfinite(a)) {\n throw new NotRepresentableException()\n }\n return a\n};\nHCoordinate.prototype.getX = function getX () {\n var a = this.x / this.w;\n if (Double.isNaN(a) || Double.isInfinite(a)) {\n throw new NotRepresentableException()\n }\n return a\n};\nHCoordinate.prototype.getCoordinate = function getCoordinate () {\n var p = new Coordinate();\n p.x = this.getX();\n p.y = this.getY();\n return p\n};\nHCoordinate.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nHCoordinate.prototype.getClass = function getClass () {\n return HCoordinate\n};\nHCoordinate.intersection = function intersection (p1, p2, q1, q2) {\n var px = p1.y - p2.y;\n var py = p2.x - p1.x;\n var pw = p1.x * p2.y - p2.x * p1.y;\n var qx = q1.y - q2.y;\n var qy = q2.x - q1.x;\n var qw = q1.x * q2.y - q2.x * q1.y;\n var x = py * qw - qy * pw;\n var y = qx * pw - px * qw;\n var w = px * qy - qx * py;\n var xInt = x / w;\n var yInt = y / w;\n if (Double.isNaN(xInt) || (Double.isInfinite(xInt) || Double.isNaN(yInt)) || Double.isInfinite(yInt)) {\n throw new NotRepresentableException()\n }\n return new Coordinate(xInt, yInt)\n};\n\nvar Envelope = function Envelope () {\n this._minx = null;\n this._maxx = null;\n this._miny = null;\n this._maxy = null;\n if (arguments.length === 0) {\n this.init();\n } else if (arguments.length === 1) {\n if (arguments[0] instanceof Coordinate) {\n var p = arguments[0];\n this.init(p.x, p.x, p.y, p.y);\n } else if (arguments[0] instanceof Envelope) {\n var env = arguments[0];\n this.init(env);\n }\n } else if (arguments.length === 2) {\n var p1 = arguments[0];\n var p2 = arguments[1];\n this.init(p1.x, p2.x, p1.y, p2.y);\n } else if (arguments.length === 4) {\n var x1 = arguments[0];\n var x2 = arguments[1];\n var y1 = arguments[2];\n var y2 = arguments[3];\n this.init(x1, x2, y1, y2);\n }\n};\n\nvar staticAccessors$9 = { serialVersionUID: { configurable: true } };\nEnvelope.prototype.getArea = function getArea () {\n return this.getWidth() * this.getHeight()\n};\nEnvelope.prototype.equals = function equals (other) {\n if (!(other instanceof Envelope)) {\n return false\n }\n var otherEnvelope = other;\n if (this.isNull()) {\n return otherEnvelope.isNull()\n }\n return this._maxx === otherEnvelope.getMaxX() && this._maxy === otherEnvelope.getMaxY() && this._minx === otherEnvelope.getMinX() && this._miny === otherEnvelope.getMinY()\n};\nEnvelope.prototype.intersection = function intersection (env) {\n if (this.isNull() || env.isNull() || !this.intersects(env)) { return new Envelope() }\n var intMinX = this._minx > env._minx ? this._minx : env._minx;\n var intMinY = this._miny > env._miny ? this._miny : env._miny;\n var intMaxX = this._maxx < env._maxx ? this._maxx : env._maxx;\n var intMaxY = this._maxy < env._maxy ? this._maxy : env._maxy;\n return new Envelope(intMinX, intMaxX, intMinY, intMaxY)\n};\nEnvelope.prototype.isNull = function isNull () {\n return this._maxx < this._minx\n};\nEnvelope.prototype.getMaxX = function getMaxX () {\n return this._maxx\n};\nEnvelope.prototype.covers = function covers () {\n if (arguments.length === 1) {\n if (arguments[0] instanceof Coordinate) {\n var p = arguments[0];\n return this.covers(p.x, p.y)\n } else if (arguments[0] instanceof Envelope) {\n var other = arguments[0];\n if (this.isNull() || other.isNull()) {\n return false\n }\n return other.getMinX() >= this._minx && other.getMaxX() <= this._maxx && other.getMinY() >= this._miny && other.getMaxY() <= this._maxy\n }\n } else if (arguments.length === 2) {\n var x = arguments[0];\n var y = arguments[1];\n if (this.isNull()) { return false }\n return x >= this._minx && x <= this._maxx && y >= this._miny && y <= this._maxy\n }\n};\nEnvelope.prototype.intersects = function intersects () {\n if (arguments.length === 1) {\n if (arguments[0] instanceof Envelope) {\n var other = arguments[0];\n if (this.isNull() || other.isNull()) {\n return false\n }\n return !(other._minx > this._maxx || other._maxx < this._minx || other._miny > this._maxy || other._maxy < this._miny)\n } else if (arguments[0] instanceof Coordinate) {\n var p = arguments[0];\n return this.intersects(p.x, p.y)\n }\n } else if (arguments.length === 2) {\n var x = arguments[0];\n var y = arguments[1];\n if (this.isNull()) { return false }\n return !(x > this._maxx || x < this._minx || y > this._maxy || y < this._miny)\n }\n};\nEnvelope.prototype.getMinY = function getMinY () {\n return this._miny\n};\nEnvelope.prototype.getMinX = function getMinX () {\n return this._minx\n};\nEnvelope.prototype.expandToInclude = function expandToInclude () {\n if (arguments.length === 1) {\n if (arguments[0] instanceof Coordinate) {\n var p = arguments[0];\n this.expandToInclude(p.x, p.y);\n } else if (arguments[0] instanceof Envelope) {\n var other = arguments[0];\n if (other.isNull()) {\n return null\n }\n if (this.isNull()) {\n this._minx = other.getMinX();\n this._maxx = other.getMaxX();\n this._miny = other.getMinY();\n this._maxy = other.getMaxY();\n } else {\n if (other._minx < this._minx) {\n this._minx = other._minx;\n }\n if (other._maxx > this._maxx) {\n this._maxx = other._maxx;\n }\n if (other._miny < this._miny) {\n this._miny = other._miny;\n }\n if (other._maxy > this._maxy) {\n this._maxy = other._maxy;\n }\n }\n }\n } else if (arguments.length === 2) {\n var x = arguments[0];\n var y = arguments[1];\n if (this.isNull()) {\n this._minx = x;\n this._maxx = x;\n this._miny = y;\n this._maxy = y;\n } else {\n if (x < this._minx) {\n this._minx = x;\n }\n if (x > this._maxx) {\n this._maxx = x;\n }\n if (y < this._miny) {\n this._miny = y;\n }\n if (y > this._maxy) {\n this._maxy = y;\n }\n }\n }\n};\nEnvelope.prototype.minExtent = function minExtent () {\n if (this.isNull()) { return 0.0 }\n var w = this.getWidth();\n var h = this.getHeight();\n if (w < h) { return w }\n return h\n};\nEnvelope.prototype.getWidth = function getWidth () {\n if (this.isNull()) {\n return 0\n }\n return this._maxx - this._minx\n};\nEnvelope.prototype.compareTo = function compareTo (o) {\n var env = o;\n if (this.isNull()) {\n if (env.isNull()) { return 0 }\n return -1\n } else {\n if (env.isNull()) { return 1 }\n }\n if (this._minx < env._minx) { return -1 }\n if (this._minx > env._minx) { return 1 }\n if (this._miny < env._miny) { return -1 }\n if (this._miny > env._miny) { return 1 }\n if (this._maxx < env._maxx) { return -1 }\n if (this._maxx > env._maxx) { return 1 }\n if (this._maxy < env._maxy) { return -1 }\n if (this._maxy > env._maxy) { return 1 }\n return 0\n};\nEnvelope.prototype.translate = function translate (transX, transY) {\n if (this.isNull()) {\n return null\n }\n this.init(this.getMinX() + transX, this.getMaxX() + transX, this.getMinY() + transY, this.getMaxY() + transY);\n};\nEnvelope.prototype.toString = function toString () {\n return 'Env[' + this._minx + ' : ' + this._maxx + ', ' + this._miny + ' : ' + this._maxy + ']'\n};\nEnvelope.prototype.setToNull = function setToNull () {\n this._minx = 0;\n this._maxx = -1;\n this._miny = 0;\n this._maxy = -1;\n};\nEnvelope.prototype.getHeight = function getHeight () {\n if (this.isNull()) {\n return 0\n }\n return this._maxy - this._miny\n};\nEnvelope.prototype.maxExtent = function maxExtent () {\n if (this.isNull()) { return 0.0 }\n var w = this.getWidth();\n var h = this.getHeight();\n if (w > h) { return w }\n return h\n};\nEnvelope.prototype.expandBy = function expandBy () {\n if (arguments.length === 1) {\n var distance = arguments[0];\n this.expandBy(distance, distance);\n } else if (arguments.length === 2) {\n var deltaX = arguments[0];\n var deltaY = arguments[1];\n if (this.isNull()) { return null }\n this._minx -= deltaX;\n this._maxx += deltaX;\n this._miny -= deltaY;\n this._maxy += deltaY;\n if (this._minx > this._maxx || this._miny > this._maxy) { this.setToNull(); }\n }\n};\nEnvelope.prototype.contains = function contains () {\n if (arguments.length === 1) {\n if (arguments[0] instanceof Envelope) {\n var other = arguments[0];\n return this.covers(other)\n } else if (arguments[0] instanceof Coordinate) {\n var p = arguments[0];\n return this.covers(p)\n }\n } else if (arguments.length === 2) {\n var x = arguments[0];\n var y = arguments[1];\n return this.covers(x, y)\n }\n};\nEnvelope.prototype.centre = function centre () {\n if (this.isNull()) { return null }\n return new Coordinate((this.getMinX() + this.getMaxX()) / 2.0, (this.getMinY() + this.getMaxY()) / 2.0)\n};\nEnvelope.prototype.init = function init () {\n if (arguments.length === 0) {\n this.setToNull();\n } else if (arguments.length === 1) {\n if (arguments[0] instanceof Coordinate) {\n var p = arguments[0];\n this.init(p.x, p.x, p.y, p.y);\n } else if (arguments[0] instanceof Envelope) {\n var env = arguments[0];\n this._minx = env._minx;\n this._maxx = env._maxx;\n this._miny = env._miny;\n this._maxy = env._maxy;\n }\n } else if (arguments.length === 2) {\n var p1 = arguments[0];\n var p2 = arguments[1];\n this.init(p1.x, p2.x, p1.y, p2.y);\n } else if (arguments.length === 4) {\n var x1 = arguments[0];\n var x2 = arguments[1];\n var y1 = arguments[2];\n var y2 = arguments[3];\n if (x1 < x2) {\n this._minx = x1;\n this._maxx = x2;\n } else {\n this._minx = x2;\n this._maxx = x1;\n }\n if (y1 < y2) {\n this._miny = y1;\n this._maxy = y2;\n } else {\n this._miny = y2;\n this._maxy = y1;\n }\n }\n};\nEnvelope.prototype.getMaxY = function getMaxY () {\n return this._maxy\n};\nEnvelope.prototype.distance = function distance (env) {\n if (this.intersects(env)) { return 0 }\n var dx = 0.0;\n if (this._maxx < env._minx) { dx = env._minx - this._maxx; } else if (this._minx > env._maxx) { dx = this._minx - env._maxx; }\n var dy = 0.0;\n if (this._maxy < env._miny) { dy = env._miny - this._maxy; } else if (this._miny > env._maxy) { dy = this._miny - env._maxy; }\n if (dx === 0.0) { return dy }\n if (dy === 0.0) { return dx }\n return Math.sqrt(dx * dx + dy * dy)\n};\nEnvelope.prototype.hashCode = function hashCode () {\n var result = 17;\n result = 37 * result + Coordinate.hashCode(this._minx);\n result = 37 * result + Coordinate.hashCode(this._maxx);\n result = 37 * result + Coordinate.hashCode(this._miny);\n result = 37 * result + Coordinate.hashCode(this._maxy);\n return result\n};\nEnvelope.prototype.interfaces_ = function interfaces_ () {\n return [Comparable, Serializable]\n};\nEnvelope.prototype.getClass = function getClass () {\n return Envelope\n};\nEnvelope.intersects = function intersects () {\n if (arguments.length === 3) {\n var p1 = arguments[0];\n var p2 = arguments[1];\n var q = arguments[2];\n if (q.x >= (p1.x < p2.x ? p1.x : p2.x) && q.x <= (p1.x > p2.x ? p1.x : p2.x) && (q.y >= (p1.y < p2.y ? p1.y : p2.y) && q.y <= (p1.y > p2.y ? p1.y : p2.y))) {\n return true\n }\n return false\n } else if (arguments.length === 4) {\n var p1$1 = arguments[0];\n var p2$1 = arguments[1];\n var q1 = arguments[2];\n var q2 = arguments[3];\n var minq = Math.min(q1.x, q2.x);\n var maxq = Math.max(q1.x, q2.x);\n var minp = Math.min(p1$1.x, p2$1.x);\n var maxp = Math.max(p1$1.x, p2$1.x);\n if (minp > maxq) { return false }\n if (maxp < minq) { return false }\n minq = Math.min(q1.y, q2.y);\n maxq = Math.max(q1.y, q2.y);\n minp = Math.min(p1$1.y, p2$1.y);\n maxp = Math.max(p1$1.y, p2$1.y);\n if (minp > maxq) { return false }\n if (maxp < minq) { return false }\n return true\n }\n};\nstaticAccessors$9.serialVersionUID.get = function () { return 5873921885273102420 };\n\nObject.defineProperties( Envelope, staticAccessors$9 );\n\nvar regExes = {\n 'typeStr': /^\\s*(\\w+)\\s*\\(\\s*(.*)\\s*\\)\\s*$/,\n 'emptyTypeStr': /^\\s*(\\w+)\\s*EMPTY\\s*$/,\n 'spaces': /\\s+/,\n 'parenComma': /\\)\\s*,\\s*\\(/,\n 'doubleParenComma': /\\)\\s*\\)\\s*,\\s*\\(\\s*\\(/, // can't use {2} here\n 'trimParens': /^\\s*\\(?(.*?)\\)?\\s*$/\n};\n\n/**\n * Class for reading and writing Well-Known Text.\n *\n * NOTE: Adapted from OpenLayers 2.11 implementation.\n */\n\n/** Create a new parser for WKT\n *\n * @param {GeometryFactory} geometryFactory\n * @return An instance of WKTParser.\n * @constructor\n * @private\n */\nvar WKTParser = function WKTParser (geometryFactory) {\n this.geometryFactory = geometryFactory || new GeometryFactory();\n};\n/**\n * Deserialize a WKT string and return a geometry. Supports WKT for POINT,\n * MULTIPOINT, LINESTRING, LINEARRING, MULTILINESTRING, POLYGON, MULTIPOLYGON,\n * and GEOMETRYCOLLECTION.\n *\n * @param {String} wkt A WKT string.\n * @return {Geometry} A geometry instance.\n * @private\n */\nWKTParser.prototype.read = function read (wkt) {\n var geometry, type, str;\n wkt = wkt.replace(/[\\n\\r]/g, ' ');\n var matches = regExes.typeStr.exec(wkt);\n if (wkt.search('EMPTY') !== -1) {\n matches = regExes.emptyTypeStr.exec(wkt);\n matches[2] = undefined;\n }\n if (matches) {\n type = matches[1].toLowerCase();\n str = matches[2];\n if (parse$1[type]) {\n geometry = parse$1[type].apply(this, [str]);\n }\n }\n\n if (geometry === undefined) { throw new Error('Could not parse WKT ' + wkt) }\n\n return geometry\n};\n\n/**\n * Serialize a geometry into a WKT string.\n *\n * @param {Geometry} geometry A feature or array of features.\n * @return {String} The WKT string representation of the input geometries.\n * @private\n */\nWKTParser.prototype.write = function write (geometry) {\n return this.extractGeometry(geometry)\n};\n\n/**\n * Entry point to construct the WKT for a single Geometry object.\n *\n * @param {Geometry} geometry\n * @return {String} A WKT string of representing the geometry.\n * @private\n */\nWKTParser.prototype.extractGeometry = function extractGeometry (geometry) {\n var type = geometry.getGeometryType().toLowerCase();\n if (!extract$1[type]) {\n return null\n }\n var wktType = type.toUpperCase();\n var data;\n if (geometry.isEmpty()) {\n data = wktType + ' EMPTY';\n } else {\n data = wktType + '(' + extract$1[type].apply(this, [geometry]) + ')';\n }\n return data\n};\n\n/**\n * Object with properties corresponding to the geometry types. Property values\n * are functions that do the actual data extraction.\n * @private\n */\nvar extract$1 = {\n coordinate: function coordinate (coordinate$1) {\n return coordinate$1.x + ' ' + coordinate$1.y\n },\n\n /**\n * Return a space delimited string of point coordinates.\n *\n * @param {Point}\n * point\n * @return {String} A string of coordinates representing the point.\n */\n point: function point (point$1) {\n return extract$1.coordinate.call(this, point$1._coordinates._coordinates[0])\n },\n\n /**\n * Return a comma delimited string of point coordinates from a multipoint.\n *\n * @param {MultiPoint}\n * multipoint\n * @return {String} A string of point coordinate strings representing the\n * multipoint.\n */\n multipoint: function multipoint (multipoint$1) {\n var this$1 = this;\n\n var array = [];\n for (var i = 0, len = multipoint$1._geometries.length; i < len; ++i) {\n array.push('(' + extract$1.point.apply(this$1, [multipoint$1._geometries[i]]) + ')');\n }\n return array.join(',')\n },\n\n /**\n * Return a comma delimited string of point coordinates from a line.\n *\n * @param {LineString} linestring\n * @return {String} A string of point coordinate strings representing the linestring.\n */\n linestring: function linestring (linestring$1) {\n var this$1 = this;\n\n var array = [];\n for (var i = 0, len = linestring$1._points._coordinates.length; i < len; ++i) {\n array.push(extract$1.coordinate.apply(this$1, [linestring$1._points._coordinates[i]]));\n }\n return array.join(',')\n },\n\n linearring: function linearring (linearring$1) {\n var this$1 = this;\n\n var array = [];\n for (var i = 0, len = linearring$1._points._coordinates.length; i < len; ++i) {\n array.push(extract$1.coordinate.apply(this$1, [linearring$1._points._coordinates[i]]));\n }\n return array.join(',')\n },\n\n /**\n * Return a comma delimited string of linestring strings from a\n * multilinestring.\n *\n * @param {MultiLineString} multilinestring\n * @return {String} A string of of linestring strings representing the multilinestring.\n */\n multilinestring: function multilinestring (multilinestring$1) {\n var this$1 = this;\n\n var array = [];\n for (var i = 0, len = multilinestring$1._geometries.length; i < len; ++i) {\n array.push('(' +\n extract$1.linestring.apply(this$1, [multilinestring$1._geometries[i]]) +\n ')');\n }\n return array.join(',')\n },\n\n /**\n * Return a comma delimited string of linear ring arrays from a polygon.\n *\n * @param {Polygon} polygon\n * @return {String} An array of linear ring arrays representing the polygon.\n */\n polygon: function polygon (polygon$1) {\n var this$1 = this;\n\n var array = [];\n array.push('(' + extract$1.linestring.apply(this, [polygon$1._shell]) + ')');\n for (var i = 0, len = polygon$1._holes.length; i < len; ++i) {\n array.push('(' + extract$1.linestring.apply(this$1, [polygon$1._holes[i]]) + ')');\n }\n return array.join(',')\n },\n\n /**\n * Return an array of polygon arrays from a multipolygon.\n *\n * @param {MultiPolygon} multipolygon\n * @return {String} An array of polygon arrays representing the multipolygon.\n */\n multipolygon: function multipolygon (multipolygon$1) {\n var this$1 = this;\n\n var array = [];\n for (var i = 0, len = multipolygon$1._geometries.length; i < len; ++i) {\n array.push('(' + extract$1.polygon.apply(this$1, [multipolygon$1._geometries[i]]) + ')');\n }\n return array.join(',')\n },\n\n /**\n * Return the WKT portion between 'GEOMETRYCOLLECTION(' and ')' for an\n * geometrycollection.\n *\n * @param {GeometryCollection} collection\n * @return {String} internal WKT representation of the collection.\n */\n geometrycollection: function geometrycollection (collection) {\n var this$1 = this;\n\n var array = [];\n for (var i = 0, len = collection._geometries.length; i < len; ++i) {\n array.push(this$1.extractGeometry(collection._geometries[i]));\n }\n return array.join(',')\n }\n};\n\n/**\n * Object with properties corresponding to the geometry types. Property values\n * are functions that do the actual parsing.\n * @private\n */\nvar parse$1 = {\n /**\n * Return point geometry given a point WKT fragment.\n *\n * @param {String} str A WKT fragment representing the point.\n * @return {Point} A point geometry.\n * @private\n */\n point: function point (str) {\n if (str === undefined) {\n return this.geometryFactory.createPoint()\n }\n\n var coords = str.trim().split(regExes.spaces);\n return this.geometryFactory.createPoint(new Coordinate(Number.parseFloat(coords[0]),\n Number.parseFloat(coords[1])))\n },\n\n /**\n * Return a multipoint geometry given a multipoint WKT fragment.\n *\n * @param {String} str A WKT fragment representing the multipoint.\n * @return {Point} A multipoint feature.\n * @private\n */\n multipoint: function multipoint (str) {\n var this$1 = this;\n\n if (str === undefined) {\n return this.geometryFactory.createMultiPoint()\n }\n\n var point;\n var points = str.trim().split(',');\n var components = [];\n for (var i = 0, len = points.length; i < len; ++i) {\n point = points[i].replace(regExes.trimParens, '$1');\n components.push(parse$1.point.apply(this$1, [point]));\n }\n return this.geometryFactory.createMultiPoint(components)\n },\n\n /**\n * Return a linestring geometry given a linestring WKT fragment.\n *\n * @param {String} str A WKT fragment representing the linestring.\n * @return {LineString} A linestring geometry.\n * @private\n */\n linestring: function linestring (str) {\n if (str === undefined) {\n return this.geometryFactory.createLineString()\n }\n\n var points = str.trim().split(',');\n var components = [];\n var coords;\n for (var i = 0, len = points.length; i < len; ++i) {\n coords = points[i].trim().split(regExes.spaces);\n components.push(new Coordinate(Number.parseFloat(coords[0]), Number.parseFloat(coords[1])));\n }\n return this.geometryFactory.createLineString(components)\n },\n\n /**\n * Return a linearring geometry given a linearring WKT fragment.\n *\n * @param {String} str A WKT fragment representing the linearring.\n * @return {LinearRing} A linearring geometry.\n * @private\n */\n linearring: function linearring (str) {\n if (str === undefined) {\n return this.geometryFactory.createLinearRing()\n }\n\n var points = str.trim().split(',');\n var components = [];\n var coords;\n for (var i = 0, len = points.length; i < len; ++i) {\n coords = points[i].trim().split(regExes.spaces);\n components.push(new Coordinate(Number.parseFloat(coords[0]), Number.parseFloat(coords[1])));\n }\n return this.geometryFactory.createLinearRing(components)\n },\n\n /**\n * Return a multilinestring geometry given a multilinestring WKT fragment.\n *\n * @param {String} str A WKT fragment representing the multilinestring.\n * @return {MultiLineString} A multilinestring geometry.\n * @private\n */\n multilinestring: function multilinestring (str) {\n var this$1 = this;\n\n if (str === undefined) {\n return this.geometryFactory.createMultiLineString()\n }\n\n var line;\n var lines = str.trim().split(regExes.parenComma);\n var components = [];\n for (var i = 0, len = lines.length; i < len; ++i) {\n line = lines[i].replace(regExes.trimParens, '$1');\n components.push(parse$1.linestring.apply(this$1, [line]));\n }\n return this.geometryFactory.createMultiLineString(components)\n },\n\n /**\n * Return a polygon geometry given a polygon WKT fragment.\n *\n * @param {String} str A WKT fragment representing the polygon.\n * @return {Polygon} A polygon geometry.\n * @private\n */\n polygon: function polygon (str) {\n var this$1 = this;\n\n if (str === undefined) {\n return this.geometryFactory.createPolygon()\n }\n\n var ring, linestring, linearring;\n var rings = str.trim().split(regExes.parenComma);\n var shell;\n var holes = [];\n for (var i = 0, len = rings.length; i < len; ++i) {\n ring = rings[i].replace(regExes.trimParens, '$1');\n linestring = parse$1.linestring.apply(this$1, [ring]);\n linearring = this$1.geometryFactory.createLinearRing(linestring._points);\n if (i === 0) {\n shell = linearring;\n } else {\n holes.push(linearring);\n }\n }\n return this.geometryFactory.createPolygon(shell, holes)\n },\n\n /**\n * Return a multipolygon geometry given a multipolygon WKT fragment.\n *\n * @param {String} str A WKT fragment representing the multipolygon.\n * @return {MultiPolygon} A multipolygon geometry.\n * @private\n */\n multipolygon: function multipolygon (str) {\n var this$1 = this;\n\n if (str === undefined) {\n return this.geometryFactory.createMultiPolygon()\n }\n\n var polygon;\n var polygons = str.trim().split(regExes.doubleParenComma);\n var components = [];\n for (var i = 0, len = polygons.length; i < len; ++i) {\n polygon = polygons[i].replace(regExes.trimParens, '$1');\n components.push(parse$1.polygon.apply(this$1, [polygon]));\n }\n return this.geometryFactory.createMultiPolygon(components)\n },\n\n /**\n * Return a geometrycollection given a geometrycollection WKT fragment.\n *\n * @param {String} str A WKT fragment representing the geometrycollection.\n * @return {GeometryCollection}\n * @private\n */\n geometrycollection: function geometrycollection (str) {\n var this$1 = this;\n\n if (str === undefined) {\n return this.geometryFactory.createGeometryCollection()\n }\n\n // separate components of the collection with |\n str = str.replace(/,\\s*([A-Za-z])/g, '|$1');\n var wktArray = str.trim().split('|');\n var components = [];\n for (var i = 0, len = wktArray.length; i < len; ++i) {\n components.push(this$1.read(wktArray[i]));\n }\n return this.geometryFactory.createGeometryCollection(components)\n }\n};\n\n/**\n * Writes the Well-Known Text representation of a {@link Geometry}. The\n * Well-Known Text format is defined in the <A\n * HREF=\"http://www.opengis.org/techno/specs.htm\"> OGC Simple Features\n * Specification for SQL</A>.\n * <p>\n * The <code>WKTWriter</code> outputs coordinates rounded to the precision\n * model. Only the maximum number of decimal places necessary to represent the\n * ordinates to the required precision will be output.\n * <p>\n * The SFS WKT spec does not define a special tag for {@link LinearRing}s.\n * Under the spec, rings are output as <code>LINESTRING</code>s.\n */\n\n/**\n * @param {GeometryFactory} geometryFactory\n * @constructor\n */\nvar WKTWriter = function WKTWriter (geometryFactory) {\n this.parser = new WKTParser(geometryFactory);\n};\n\n/**\n * Converts a <code>Geometry</code> to its Well-known Text representation.\n *\n * @param {Geometry} geometry a <code>Geometry</code> to process.\n * @return {string} a <Geometry Tagged Text> string (see the OpenGIS Simple\n * Features Specification).\n * @memberof WKTWriter\n */\nWKTWriter.prototype.write = function write (geometry) {\n return this.parser.write(geometry)\n};\n/**\n * Generates the WKT for a <tt>LINESTRING</tt> specified by two\n * {@link Coordinate}s.\n *\n * @param p0 the first coordinate.\n * @param p1 the second coordinate.\n *\n * @return the WKT.\n * @private\n */\nWKTWriter.toLineString = function toLineString (p0, p1) {\n if (arguments.length !== 2) {\n throw new Error('Not implemented')\n }\n return 'LINESTRING ( ' + p0.x + ' ' + p0.y + ', ' + p1.x + ' ' + p1.y + ' )'\n};\n\nvar RuntimeException = (function (Error) {\n function RuntimeException (message) {\n Error.call(this, message);\n this.name = 'RuntimeException';\n this.message = message;\n this.stack = (new Error()).stack;\n }\n\n if ( Error ) RuntimeException.__proto__ = Error;\n RuntimeException.prototype = Object.create( Error && Error.prototype );\n RuntimeException.prototype.constructor = RuntimeException;\n\n return RuntimeException;\n}(Error));\n\nvar AssertionFailedException = (function (RuntimeException$$1) {\n function AssertionFailedException () {\n RuntimeException$$1.call(this);\n if (arguments.length === 0) {\n RuntimeException$$1.call(this);\n } else if (arguments.length === 1) {\n var message = arguments[0];\n RuntimeException$$1.call(this, message);\n }\n }\n\n if ( RuntimeException$$1 ) AssertionFailedException.__proto__ = RuntimeException$$1;\n AssertionFailedException.prototype = Object.create( RuntimeException$$1 && RuntimeException$$1.prototype );\n AssertionFailedException.prototype.constructor = AssertionFailedException;\n AssertionFailedException.prototype.interfaces_ = function interfaces_ () {\n return []\n };\n AssertionFailedException.prototype.getClass = function getClass () {\n return AssertionFailedException\n };\n\n return AssertionFailedException;\n}(RuntimeException));\n\nvar Assert = function Assert () {};\n\nAssert.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nAssert.prototype.getClass = function getClass () {\n return Assert\n};\nAssert.shouldNeverReachHere = function shouldNeverReachHere () {\n if (arguments.length === 0) {\n Assert.shouldNeverReachHere(null);\n } else if (arguments.length === 1) {\n var message = arguments[0];\n throw new AssertionFailedException('Should never reach here' + (message !== null ? ': ' + message : ''))\n }\n};\nAssert.isTrue = function isTrue () {\n var assertion;\n var message;\n if (arguments.length === 1) {\n assertion = arguments[0];\n Assert.isTrue(assertion, null);\n } else if (arguments.length === 2) {\n assertion = arguments[0];\n message = arguments[1];\n if (!assertion) {\n if (message === null) {\n throw new AssertionFailedException()\n } else {\n throw new AssertionFailedException(message)\n }\n }\n }\n};\nAssert.equals = function equals () {\n var expectedValue;\n var actualValue;\n var message;\n if (arguments.length === 2) {\n expectedValue = arguments[0];\n actualValue = arguments[1];\n Assert.equals(expectedValue, actualValue, null);\n } else if (arguments.length === 3) {\n expectedValue = arguments[0];\n actualValue = arguments[1];\n message = arguments[2];\n if (!actualValue.equals(expectedValue)) {\n throw new AssertionFailedException('Expected ' + expectedValue + ' but encountered ' + actualValue + (message !== null ? ': ' + message : ''))\n }\n }\n};\n\nvar LineIntersector = function LineIntersector () {\n this._result = null;\n this._inputLines = Array(2).fill().map(function () { return Array(2); });\n this._intPt = new Array(2).fill(null);\n this._intLineIndex = null;\n this._isProper = null;\n this._pa = null;\n this._pb = null;\n this._precisionModel = null;\n this._intPt[0] = new Coordinate();\n this._intPt[1] = new Coordinate();\n this._pa = this._intPt[0];\n this._pb = this._intPt[1];\n this._result = 0;\n};\n\nvar staticAccessors$10 = { DONT_INTERSECT: { configurable: true },DO_INTERSECT: { configurable: true },COLLINEAR: { configurable: true },NO_INTERSECTION: { configurable: true },POINT_INTERSECTION: { configurable: true },COLLINEAR_INTERSECTION: { configurable: true } };\nLineIntersector.prototype.getIndexAlongSegment = function getIndexAlongSegment (segmentIndex, intIndex) {\n this.computeIntLineIndex();\n return this._intLineIndex[segmentIndex][intIndex]\n};\nLineIntersector.prototype.getTopologySummary = function getTopologySummary () {\n var catBuf = new StringBuffer();\n if (this.isEndPoint()) { catBuf.append(' endpoint'); }\n if (this._isProper) { catBuf.append(' proper'); }\n if (this.isCollinear()) { catBuf.append(' collinear'); }\n return catBuf.toString()\n};\nLineIntersector.prototype.computeIntersection = function computeIntersection (p1, p2, p3, p4) {\n this._inputLines[0][0] = p1;\n this._inputLines[0][1] = p2;\n this._inputLines[1][0] = p3;\n this._inputLines[1][1] = p4;\n this._result = this.computeIntersect(p1, p2, p3, p4);\n};\nLineIntersector.prototype.getIntersectionNum = function getIntersectionNum () {\n return this._result\n};\nLineIntersector.prototype.computeIntLineIndex = function computeIntLineIndex () {\n if (arguments.length === 0) {\n if (this._intLineIndex === null) {\n this._intLineIndex = Array(2).fill().map(function () { return Array(2); });\n this.computeIntLineIndex(0);\n this.computeIntLineIndex(1);\n }\n } else if (arguments.length === 1) {\n var segmentIndex = arguments[0];\n var dist0 = this.getEdgeDistance(segmentIndex, 0);\n var dist1 = this.getEdgeDistance(segmentIndex, 1);\n if (dist0 > dist1) {\n this._intLineIndex[segmentIndex][0] = 0;\n this._intLineIndex[segmentIndex][1] = 1;\n } else {\n this._intLineIndex[segmentIndex][0] = 1;\n this._intLineIndex[segmentIndex][1] = 0;\n }\n }\n};\nLineIntersector.prototype.isProper = function isProper () {\n return this.hasIntersection() && this._isProper\n};\nLineIntersector.prototype.setPrecisionModel = function setPrecisionModel (precisionModel) {\n this._precisionModel = precisionModel;\n};\nLineIntersector.prototype.isInteriorIntersection = function isInteriorIntersection () {\n var this$1 = this;\n\n if (arguments.length === 0) {\n if (this.isInteriorIntersection(0)) { return true }\n if (this.isInteriorIntersection(1)) { return true }\n return false\n } else if (arguments.length === 1) {\n var inputLineIndex = arguments[0];\n for (var i = 0; i < this._result; i++) {\n if (!(this$1._intPt[i].equals2D(this$1._inputLines[inputLineIndex][0]) || this$1._intPt[i].equals2D(this$1._inputLines[inputLineIndex][1]))) {\n return true\n }\n }\n return false\n }\n};\nLineIntersector.prototype.getIntersection = function getIntersection (intIndex) {\n return this._intPt[intIndex]\n};\nLineIntersector.prototype.isEndPoint = function isEndPoint () {\n return this.hasIntersection() && !this._isProper\n};\nLineIntersector.prototype.hasIntersection = function hasIntersection () {\n return this._result !== LineIntersector.NO_INTERSECTION\n};\nLineIntersector.prototype.getEdgeDistance = function getEdgeDistance (segmentIndex, intIndex) {\n var dist = LineIntersector.computeEdgeDistance(this._intPt[intIndex], this._inputLines[segmentIndex][0], this._inputLines[segmentIndex][1]);\n return dist\n};\nLineIntersector.prototype.isCollinear = function isCollinear () {\n return this._result === LineIntersector.COLLINEAR_INTERSECTION\n};\nLineIntersector.prototype.toString = function toString () {\n return WKTWriter.toLineString(this._inputLines[0][0], this._inputLines[0][1]) + ' - ' + WKTWriter.toLineString(this._inputLines[1][0], this._inputLines[1][1]) + this.getTopologySummary()\n};\nLineIntersector.prototype.getEndpoint = function getEndpoint (segmentIndex, ptIndex) {\n return this._inputLines[segmentIndex][ptIndex]\n};\nLineIntersector.prototype.isIntersection = function isIntersection (pt) {\n var this$1 = this;\n\n for (var i = 0; i < this._result; i++) {\n if (this$1._intPt[i].equals2D(pt)) {\n return true\n }\n }\n return false\n};\nLineIntersector.prototype.getIntersectionAlongSegment = function getIntersectionAlongSegment (segmentIndex, intIndex) {\n this.computeIntLineIndex();\n return this._intPt[this._intLineIndex[segmentIndex][intIndex]]\n};\nLineIntersector.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nLineIntersector.prototype.getClass = function getClass () {\n return LineIntersector\n};\nLineIntersector.computeEdgeDistance = function computeEdgeDistance (p, p0, p1) {\n var dx = Math.abs(p1.x - p0.x);\n var dy = Math.abs(p1.y - p0.y);\n var dist = -1.0;\n if (p.equals(p0)) {\n dist = 0.0;\n } else if (p.equals(p1)) {\n if (dx > dy) { dist = dx; } else { dist = dy; }\n } else {\n var pdx = Math.abs(p.x - p0.x);\n var pdy = Math.abs(p.y - p0.y);\n if (dx > dy) { dist = pdx; } else { dist = pdy; }\n if (dist === 0.0 && !p.equals(p0)) {\n dist = Math.max(pdx, pdy);\n }\n }\n Assert.isTrue(!(dist === 0.0 && !p.equals(p0)), 'Bad distance calculation');\n return dist\n};\nLineIntersector.nonRobustComputeEdgeDistance = function nonRobustComputeEdgeDistance (p, p1, p2) {\n var dx = p.x - p1.x;\n var dy = p.y - p1.y;\n var dist = Math.sqrt(dx * dx + dy * dy);\n Assert.isTrue(!(dist === 0.0 && !p.equals(p1)), 'Invalid distance calculation');\n return dist\n};\nstaticAccessors$10.DONT_INTERSECT.get = function () { return 0 };\nstaticAccessors$10.DO_INTERSECT.get = function () { return 1 };\nstaticAccessors$10.COLLINEAR.get = function () { return 2 };\nstaticAccessors$10.NO_INTERSECTION.get = function () { return 0 };\nstaticAccessors$10.POINT_INTERSECTION.get = function () { return 1 };\nstaticAccessors$10.COLLINEAR_INTERSECTION.get = function () { return 2 };\n\nObject.defineProperties( LineIntersector, staticAccessors$10 );\n\nvar RobustLineIntersector = (function (LineIntersector$$1) {\n function RobustLineIntersector () {\n LineIntersector$$1.apply(this, arguments);\n }\n\n if ( LineIntersector$$1 ) RobustLineIntersector.__proto__ = LineIntersector$$1;\n RobustLineIntersector.prototype = Object.create( LineIntersector$$1 && LineIntersector$$1.prototype );\n RobustLineIntersector.prototype.constructor = RobustLineIntersector;\n\n RobustLineIntersector.prototype.isInSegmentEnvelopes = function isInSegmentEnvelopes (intPt) {\n var env0 = new Envelope(this._inputLines[0][0], this._inputLines[0][1]);\n var env1 = new Envelope(this._inputLines[1][0], this._inputLines[1][1]);\n return env0.contains(intPt) && env1.contains(intPt)\n };\n RobustLineIntersector.prototype.computeIntersection = function computeIntersection () {\n if (arguments.length === 3) {\n var p = arguments[0];\n var p1 = arguments[1];\n var p2 = arguments[2];\n this._isProper = false;\n if (Envelope.intersects(p1, p2, p)) {\n if (CGAlgorithms.orientationIndex(p1, p2, p) === 0 && CGAlgorithms.orientationIndex(p2, p1, p) === 0) {\n this._isProper = true;\n if (p.equals(p1) || p.equals(p2)) {\n this._isProper = false;\n }\n this._result = LineIntersector$$1.POINT_INTERSECTION;\n return null\n }\n }\n this._result = LineIntersector$$1.NO_INTERSECTION;\n } else { return LineIntersector$$1.prototype.computeIntersection.apply(this, arguments) }\n };\n RobustLineIntersector.prototype.normalizeToMinimum = function normalizeToMinimum (n1, n2, n3, n4, normPt) {\n normPt.x = this.smallestInAbsValue(n1.x, n2.x, n3.x, n4.x);\n normPt.y = this.smallestInAbsValue(n1.y, n2.y, n3.y, n4.y);\n n1.x -= normPt.x;\n n1.y -= normPt.y;\n n2.x -= normPt.x;\n n2.y -= normPt.y;\n n3.x -= normPt.x;\n n3.y -= normPt.y;\n n4.x -= normPt.x;\n n4.y -= normPt.y;\n };\n RobustLineIntersector.prototype.safeHCoordinateIntersection = function safeHCoordinateIntersection (p1, p2, q1, q2) {\n var intPt = null;\n try {\n intPt = HCoordinate.intersection(p1, p2, q1, q2);\n } catch (e) {\n if (e instanceof NotRepresentableException) {\n intPt = RobustLineIntersector.nearestEndpoint(p1, p2, q1, q2);\n } else { throw e }\n } finally {}\n return intPt\n };\n RobustLineIntersector.prototype.intersection = function intersection (p1, p2, q1, q2) {\n var intPt = this.intersectionWithNormalization(p1, p2, q1, q2);\n if (!this.isInSegmentEnvelopes(intPt)) {\n intPt = new Coordinate(RobustLineIntersector.nearestEndpoint(p1, p2, q1, q2));\n }\n if (this._precisionModel !== null) {\n this._precisionModel.makePrecise(intPt);\n }\n return intPt\n };\n RobustLineIntersector.prototype.smallestInAbsValue = function smallestInAbsValue (x1, x2, x3, x4) {\n var x = x1;\n var xabs = Math.abs(x);\n if (Math.abs(x2) < xabs) {\n x = x2;\n xabs = Math.abs(x2);\n }\n if (Math.abs(x3) < xabs) {\n x = x3;\n xabs = Math.abs(x3);\n }\n if (Math.abs(x4) < xabs) {\n x = x4;\n }\n return x\n };\n RobustLineIntersector.prototype.checkDD = function checkDD (p1, p2, q1, q2, intPt) {\n var intPtDD = CGAlgorithmsDD.intersection(p1, p2, q1, q2);\n var isIn = this.isInSegmentEnvelopes(intPtDD);\n System.out.println('DD in env = ' + isIn + ' --------------------- ' + intPtDD);\n if (intPt.distance(intPtDD) > 0.0001) {\n System.out.println('Distance = ' + intPt.distance(intPtDD));\n }\n };\n RobustLineIntersector.prototype.intersectionWithNormalization = function intersectionWithNormalization (p1, p2, q1, q2) {\n var n1 = new Coordinate(p1);\n var n2 = new Coordinate(p2);\n var n3 = new Coordinate(q1);\n var n4 = new Coordinate(q2);\n var normPt = new Coordinate();\n this.normalizeToEnvCentre(n1, n2, n3, n4, normPt);\n var intPt = this.safeHCoordinateIntersection(n1, n2, n3, n4);\n intPt.x += normPt.x;\n intPt.y += normPt.y;\n return intPt\n };\n RobustLineIntersector.prototype.computeCollinearIntersection = function computeCollinearIntersection (p1, p2, q1, q2) {\n var p1q1p2 = Envelope.intersects(p1, p2, q1);\n var p1q2p2 = Envelope.intersects(p1, p2, q2);\n var q1p1q2 = Envelope.intersects(q1, q2, p1);\n var q1p2q2 = Envelope.intersects(q1, q2, p2);\n if (p1q1p2 && p1q2p2) {\n this._intPt[0] = q1;\n this._intPt[1] = q2;\n return LineIntersector$$1.COLLINEAR_INTERSECTION\n }\n if (q1p1q2 && q1p2q2) {\n this._intPt[0] = p1;\n this._intPt[1] = p2;\n return LineIntersector$$1.COLLINEAR_INTERSECTION\n }\n if (p1q1p2 && q1p1q2) {\n this._intPt[0] = q1;\n this._intPt[1] = p1;\n return q1.equals(p1) && !p1q2p2 && !q1p2q2 ? LineIntersector$$1.POINT_INTERSECTION : LineIntersector$$1.COLLINEAR_INTERSECTION\n }\n if (p1q1p2 && q1p2q2) {\n this._intPt[0] = q1;\n this._intPt[1] = p2;\n return q1.equals(p2) && !p1q2p2 && !q1p1q2 ? LineIntersector$$1.POINT_INTERSECTION : LineIntersector$$1.COLLINEAR_INTERSECTION\n }\n if (p1q2p2 && q1p1q2) {\n this._intPt[0] = q2;\n this._intPt[1] = p1;\n return q2.equals(p1) && !p1q1p2 && !q1p2q2 ? LineIntersector$$1.POINT_INTERSECTION : LineIntersector$$1.COLLINEAR_INTERSECTION\n }\n if (p1q2p2 && q1p2q2) {\n this._intPt[0] = q2;\n this._intPt[1] = p2;\n return q2.equals(p2) && !p1q1p2 && !q1p1q2 ? LineIntersector$$1.POINT_INTERSECTION : LineIntersector$$1.COLLINEAR_INTERSECTION\n }\n return LineIntersector$$1.NO_INTERSECTION\n };\n RobustLineIntersector.prototype.normalizeToEnvCentre = function normalizeToEnvCentre (n00, n01, n10, n11, normPt) {\n var minX0 = n00.x < n01.x ? n00.x : n01.x;\n var minY0 = n00.y < n01.y ? n00.y : n01.y;\n var maxX0 = n00.x > n01.x ? n00.x : n01.x;\n var maxY0 = n00.y > n01.y ? n00.y : n01.y;\n var minX1 = n10.x < n11.x ? n10.x : n11.x;\n var minY1 = n10.y < n11.y ? n10.y : n11.y;\n var maxX1 = n10.x > n11.x ? n10.x : n11.x;\n var maxY1 = n10.y > n11.y ? n10.y : n11.y;\n var intMinX = minX0 > minX1 ? minX0 : minX1;\n var intMaxX = maxX0 < maxX1 ? maxX0 : maxX1;\n var intMinY = minY0 > minY1 ? minY0 : minY1;\n var intMaxY = maxY0 < maxY1 ? maxY0 : maxY1;\n var intMidX = (intMinX + intMaxX) / 2.0;\n var intMidY = (intMinY + intMaxY) / 2.0;\n normPt.x = intMidX;\n normPt.y = intMidY;\n n00.x -= normPt.x;\n n00.y -= normPt.y;\n n01.x -= normPt.x;\n n01.y -= normPt.y;\n n10.x -= normPt.x;\n n10.y -= normPt.y;\n n11.x -= normPt.x;\n n11.y -= normPt.y;\n };\n RobustLineIntersector.prototype.computeIntersect = function computeIntersect (p1, p2, q1, q2) {\n this._isProper = false;\n if (!Envelope.intersects(p1, p2, q1, q2)) { return LineIntersector$$1.NO_INTERSECTION }\n var Pq1 = CGAlgorithms.orientationIndex(p1, p2, q1);\n var Pq2 = CGAlgorithms.orientationIndex(p1, p2, q2);\n if ((Pq1 > 0 && Pq2 > 0) || (Pq1 < 0 && Pq2 < 0)) {\n return LineIntersector$$1.NO_INTERSECTION\n }\n var Qp1 = CGAlgorithms.orientationIndex(q1, q2, p1);\n var Qp2 = CGAlgorithms.orientationIndex(q1, q2, p2);\n if ((Qp1 > 0 && Qp2 > 0) || (Qp1 < 0 && Qp2 < 0)) {\n return LineIntersector$$1.NO_INTERSECTION\n }\n var collinear = Pq1 === 0 && Pq2 === 0 && Qp1 === 0 && Qp2 === 0;\n if (collinear) {\n return this.computeCollinearIntersection(p1, p2, q1, q2)\n }\n if (Pq1 === 0 || Pq2 === 0 || Qp1 === 0 || Qp2 === 0) {\n this._isProper = false;\n if (p1.equals2D(q1) || p1.equals2D(q2)) {\n this._intPt[0] = p1;\n } else if (p2.equals2D(q1) || p2.equals2D(q2)) {\n this._intPt[0] = p2;\n } else if (Pq1 === 0) {\n this._intPt[0] = new Coordinate(q1);\n } else if (Pq2 === 0) {\n this._intPt[0] = new Coordinate(q2);\n } else if (Qp1 === 0) {\n this._intPt[0] = new Coordinate(p1);\n } else if (Qp2 === 0) {\n this._intPt[0] = new Coordinate(p2);\n }\n } else {\n this._isProper = true;\n this._intPt[0] = this.intersection(p1, p2, q1, q2);\n }\n return LineIntersector$$1.POINT_INTERSECTION\n };\n RobustLineIntersector.prototype.interfaces_ = function interfaces_ () {\n return []\n };\n RobustLineIntersector.prototype.getClass = function getClass () {\n return RobustLineIntersector\n };\n RobustLineIntersector.nearestEndpoint = function nearestEndpoint (p1, p2, q1, q2) {\n var nearestPt = p1;\n var minDist = CGAlgorithms.distancePointLine(p1, q1, q2);\n var dist = CGAlgorithms.distancePointLine(p2, q1, q2);\n if (dist < minDist) {\n minDist = dist;\n nearestPt = p2;\n }\n dist = CGAlgorithms.distancePointLine(q1, p1, p2);\n if (dist < minDist) {\n minDist = dist;\n nearestPt = q1;\n }\n dist = CGAlgorithms.distancePointLine(q2, p1, p2);\n if (dist < minDist) {\n minDist = dist;\n nearestPt = q2;\n }\n return nearestPt\n };\n\n return RobustLineIntersector;\n}(LineIntersector));\n\nvar RobustDeterminant = function RobustDeterminant () {};\n\nRobustDeterminant.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nRobustDeterminant.prototype.getClass = function getClass () {\n return RobustDeterminant\n};\nRobustDeterminant.orientationIndex = function orientationIndex (p1, p2, q) {\n var dx1 = p2.x - p1.x;\n var dy1 = p2.y - p1.y;\n var dx2 = q.x - p2.x;\n var dy2 = q.y - p2.y;\n return RobustDeterminant.signOfDet2x2(dx1, dy1, dx2, dy2)\n};\nRobustDeterminant.signOfDet2x2 = function signOfDet2x2 (x1, y1, x2, y2) {\n var sign = null;\n var swap = null;\n var k = null;\n sign = 1;\n if (x1 === 0.0 || y2 === 0.0) {\n if (y1 === 0.0 || x2 === 0.0) {\n return 0\n } else if (y1 > 0) {\n if (x2 > 0) {\n return -sign\n } else {\n return sign\n }\n } else {\n if (x2 > 0) {\n return sign\n } else {\n return -sign\n }\n }\n }\n if (y1 === 0.0 || x2 === 0.0) {\n if (y2 > 0) {\n if (x1 > 0) {\n return sign\n } else {\n return -sign\n }\n } else {\n if (x1 > 0) {\n return -sign\n } else {\n return sign\n }\n }\n }\n if (y1 > 0.0) {\n if (y2 > 0.0) {\n if (y1 <= y2) {\n \n } else {\n sign = -sign;\n swap = x1;\n x1 = x2;\n x2 = swap;\n swap = y1;\n y1 = y2;\n y2 = swap;\n }\n } else {\n if (y1 <= -y2) {\n sign = -sign;\n x2 = -x2;\n y2 = -y2;\n } else {\n swap = x1;\n x1 = -x2;\n x2 = swap;\n swap = y1;\n y1 = -y2;\n y2 = swap;\n }\n }\n } else {\n if (y2 > 0.0) {\n if (-y1 <= y2) {\n sign = -sign;\n x1 = -x1;\n y1 = -y1;\n } else {\n swap = -x1;\n x1 = x2;\n x2 = swap;\n swap = -y1;\n y1 = y2;\n y2 = swap;\n }\n } else {\n if (y1 >= y2) {\n x1 = -x1;\n y1 = -y1;\n x2 = -x2;\n y2 = -y2;\n } else {\n sign = -sign;\n swap = -x1;\n x1 = -x2;\n x2 = swap;\n swap = -y1;\n y1 = -y2;\n y2 = swap;\n }\n }\n }\n if (x1 > 0.0) {\n if (x2 > 0.0) {\n if (x1 <= x2) {\n \n } else {\n return sign\n }\n } else {\n return sign\n }\n } else {\n if (x2 > 0.0) {\n return -sign\n } else {\n if (x1 >= x2) {\n sign = -sign;\n x1 = -x1;\n x2 = -x2;\n } else {\n return -sign\n }\n }\n }\n while (true) {\n k = Math.floor(x2 / x1);\n x2 = x2 - k * x1;\n y2 = y2 - k * y1;\n if (y2 < 0.0) {\n return -sign\n }\n if (y2 > y1) {\n return sign\n }\n if (x1 > x2 + x2) {\n if (y1 < y2 + y2) {\n return sign\n }\n } else {\n if (y1 > y2 + y2) {\n return -sign\n } else {\n x2 = x1 - x2;\n y2 = y1 - y2;\n sign = -sign;\n }\n }\n if (y2 === 0.0) {\n if (x2 === 0.0) {\n return 0\n } else {\n return -sign\n }\n }\n if (x2 === 0.0) {\n return sign\n }\n k = Math.floor(x1 / x2);\n x1 = x1 - k * x2;\n y1 = y1 - k * y2;\n if (y1 < 0.0) {\n return sign\n }\n if (y1 > y2) {\n return -sign\n }\n if (x2 > x1 + x1) {\n if (y2 < y1 + y1) {\n return -sign\n }\n } else {\n if (y2 > y1 + y1) {\n return sign\n } else {\n x1 = x2 - x1;\n y1 = y2 - y1;\n sign = -sign;\n }\n }\n if (y1 === 0.0) {\n if (x1 === 0.0) {\n return 0\n } else {\n return sign\n }\n }\n if (x1 === 0.0) {\n return -sign\n }\n }\n};\n\nvar RayCrossingCounter = function RayCrossingCounter () {\n this._p = null;\n this._crossingCount = 0;\n this._isPointOnSegment = false;\n var p = arguments[0];\n this._p = p;\n};\nRayCrossingCounter.prototype.countSegment = function countSegment (p1, p2) {\n if (p1.x < this._p.x && p2.x < this._p.x) { return null }\n if (this._p.x === p2.x && this._p.y === p2.y) {\n this._isPointOnSegment = true;\n return null\n }\n if (p1.y === this._p.y && p2.y === this._p.y) {\n var minx = p1.x;\n var maxx = p2.x;\n if (minx > maxx) {\n minx = p2.x;\n maxx = p1.x;\n }\n if (this._p.x >= minx && this._p.x <= maxx) {\n this._isPointOnSegment = true;\n }\n return null\n }\n if ((p1.y > this._p.y && p2.y <= this._p.y) || (p2.y > this._p.y && p1.y <= this._p.y)) {\n var x1 = p1.x - this._p.x;\n var y1 = p1.y - this._p.y;\n var x2 = p2.x - this._p.x;\n var y2 = p2.y - this._p.y;\n var xIntSign = RobustDeterminant.signOfDet2x2(x1, y1, x2, y2);\n if (xIntSign === 0.0) {\n this._isPointOnSegment = true;\n return null\n }\n if (y2 < y1) { xIntSign = -xIntSign; }\n if (xIntSign > 0.0) {\n this._crossingCount++;\n }\n }\n};\nRayCrossingCounter.prototype.isPointInPolygon = function isPointInPolygon () {\n return this.getLocation() !== Location.EXTERIOR\n};\nRayCrossingCounter.prototype.getLocation = function getLocation () {\n if (this._isPointOnSegment) { return Location.BOUNDARY }\n if (this._crossingCount % 2 === 1) {\n return Location.INTERIOR\n }\n return Location.EXTERIOR\n};\nRayCrossingCounter.prototype.isOnSegment = function isOnSegment () {\n return this._isPointOnSegment\n};\nRayCrossingCounter.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nRayCrossingCounter.prototype.getClass = function getClass () {\n return RayCrossingCounter\n};\nRayCrossingCounter.locatePointInRing = function locatePointInRing () {\n if (arguments[0] instanceof Coordinate && hasInterface(arguments[1], CoordinateSequence)) {\n var p = arguments[0];\n var ring = arguments[1];\n var counter = new RayCrossingCounter(p);\n var p1 = new Coordinate();\n var p2 = new Coordinate();\n for (var i = 1; i < ring.size(); i++) {\n ring.getCoordinate(i, p1);\n ring.getCoordinate(i - 1, p2);\n counter.countSegment(p1, p2);\n if (counter.isOnSegment()) { return counter.getLocation() }\n }\n return counter.getLocation()\n } else if (arguments[0] instanceof Coordinate && arguments[1] instanceof Array) {\n var p$1 = arguments[0];\n var ring$1 = arguments[1];\n var counter$1 = new RayCrossingCounter(p$1);\n for (var i$1 = 1; i$1 < ring$1.length; i$1++) {\n var p1$1 = ring$1[i$1];\n var p2$1 = ring$1[i$1 - 1];\n counter$1.countSegment(p1$1, p2$1);\n if (counter$1.isOnSegment()) { return counter$1.getLocation() }\n }\n return counter$1.getLocation()\n }\n};\n\nvar CGAlgorithms = function CGAlgorithms () {};\n\nvar staticAccessors$3 = { CLOCKWISE: { configurable: true },RIGHT: { configurable: true },COUNTERCLOCKWISE: { configurable: true },LEFT: { configurable: true },COLLINEAR: { configurable: true },STRAIGHT: { configurable: true } };\n\nCGAlgorithms.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nCGAlgorithms.prototype.getClass = function getClass () {\n return CGAlgorithms\n};\nCGAlgorithms.orientationIndex = function orientationIndex (p1, p2, q) {\n return CGAlgorithmsDD.orientationIndex(p1, p2, q)\n};\nCGAlgorithms.signedArea = function signedArea () {\n if (arguments[0] instanceof Array) {\n var ring = arguments[0];\n if (ring.length < 3) { return 0.0 }\n var sum = 0.0;\n var x0 = ring[0].x;\n for (var i = 1; i < ring.length - 1; i++) {\n var x = ring[i].x - x0;\n var y1 = ring[i + 1].y;\n var y2 = ring[i - 1].y;\n sum += x * (y2 - y1);\n }\n return sum / 2.0\n } else if (hasInterface(arguments[0], CoordinateSequence)) {\n var ring$1 = arguments[0];\n var n = ring$1.size();\n if (n < 3) { return 0.0 }\n var p0 = new Coordinate();\n var p1 = new Coordinate();\n var p2 = new Coordinate();\n ring$1.getCoordinate(0, p1);\n ring$1.getCoordinate(1, p2);\n var x0$1 = p1.x;\n p2.x -= x0$1;\n var sum$1 = 0.0;\n for (var i$1 = 1; i$1 < n - 1; i$1++) {\n p0.y = p1.y;\n p1.x = p2.x;\n p1.y = p2.y;\n ring$1.getCoordinate(i$1 + 1, p2);\n p2.x -= x0$1;\n sum$1 += p1.x * (p0.y - p2.y);\n }\n return sum$1 / 2.0\n }\n};\nCGAlgorithms.distanceLineLine = function distanceLineLine (A, B, C, D) {\n if (A.equals(B)) { return CGAlgorithms.distancePointLine(A, C, D) }\n if (C.equals(D)) { return CGAlgorithms.distancePointLine(D, A, B) }\n var noIntersection = false;\n if (!Envelope.intersects(A, B, C, D)) {\n noIntersection = true;\n } else {\n var denom = (B.x - A.x) * (D.y - C.y) - (B.y - A.y) * (D.x - C.x);\n if (denom === 0) {\n noIntersection = true;\n } else {\n var rNumb = (A.y - C.y) * (D.x - C.x) - (A.x - C.x) * (D.y - C.y);\n var sNum = (A.y - C.y) * (B.x - A.x) - (A.x - C.x) * (B.y - A.y);\n var s = sNum / denom;\n var r = rNumb / denom;\n if (r < 0 || r > 1 || s < 0 || s > 1) {\n noIntersection = true;\n }\n }\n }\n if (noIntersection) {\n return MathUtil.min(CGAlgorithms.distancePointLine(A, C, D), CGAlgorithms.distancePointLine(B, C, D), CGAlgorithms.distancePointLine(C, A, B), CGAlgorithms.distancePointLine(D, A, B))\n }\n return 0.0\n};\nCGAlgorithms.isPointInRing = function isPointInRing (p, ring) {\n return CGAlgorithms.locatePointInRing(p, ring) !== Location.EXTERIOR\n};\nCGAlgorithms.computeLength = function computeLength (pts) {\n var n = pts.size();\n if (n <= 1) { return 0.0 }\n var len = 0.0;\n var p = new Coordinate();\n pts.getCoordinate(0, p);\n var x0 = p.x;\n var y0 = p.y;\n for (var i = 1; i < n; i++) {\n pts.getCoordinate(i, p);\n var x1 = p.x;\n var y1 = p.y;\n var dx = x1 - x0;\n var dy = y1 - y0;\n len += Math.sqrt(dx * dx + dy * dy);\n x0 = x1;\n y0 = y1;\n }\n return len\n};\nCGAlgorithms.isCCW = function isCCW (ring) {\n var nPts = ring.length - 1;\n if (nPts < 3) { throw new IllegalArgumentException('Ring has fewer than 4 points, so orientation cannot be determined') }\n var hiPt = ring[0];\n var hiIndex = 0;\n for (var i = 1; i <= nPts; i++) {\n var p = ring[i];\n if (p.y > hiPt.y) {\n hiPt = p;\n hiIndex = i;\n }\n }\n var iPrev = hiIndex;\n do {\n iPrev = iPrev - 1;\n if (iPrev < 0) { iPrev = nPts; }\n } while (ring[iPrev].equals2D(hiPt) && iPrev !== hiIndex)\n var iNext = hiIndex;\n do {\n iNext = (iNext + 1) % nPts;\n } while (ring[iNext].equals2D(hiPt) && iNext !== hiIndex)\n var prev = ring[iPrev];\n var next = ring[iNext];\n if (prev.equals2D(hiPt) || next.equals2D(hiPt) || prev.equals2D(next)) { return false }\n var disc = CGAlgorithms.computeOrientation(prev, hiPt, next);\n var isCCW = false;\n if (disc === 0) {\n isCCW = prev.x > next.x;\n } else {\n isCCW = disc > 0;\n }\n return isCCW\n};\nCGAlgorithms.locatePointInRing = function locatePointInRing (p, ring) {\n return RayCrossingCounter.locatePointInRing(p, ring)\n};\nCGAlgorithms.distancePointLinePerpendicular = function distancePointLinePerpendicular (p, A, B) {\n var len2 = (B.x - A.x) * (B.x - A.x) + (B.y - A.y) * (B.y - A.y);\n var s = ((A.y - p.y) * (B.x - A.x) - (A.x - p.x) * (B.y - A.y)) / len2;\n return Math.abs(s) * Math.sqrt(len2)\n};\nCGAlgorithms.computeOrientation = function computeOrientation (p1, p2, q) {\n return CGAlgorithms.orientationIndex(p1, p2, q)\n};\nCGAlgorithms.distancePointLine = function distancePointLine () {\n if (arguments.length === 2) {\n var p = arguments[0];\n var line = arguments[1];\n if (line.length === 0) { throw new IllegalArgumentException('Line array must contain at least one vertex') }\n var minDistance = p.distance(line[0]);\n for (var i = 0; i < line.length - 1; i++) {\n var dist = CGAlgorithms.distancePointLine(p, line[i], line[i + 1]);\n if (dist < minDistance) {\n minDistance = dist;\n }\n }\n return minDistance\n } else if (arguments.length === 3) {\n var p$1 = arguments[0];\n var A = arguments[1];\n var B = arguments[2];\n if (A.x === B.x && A.y === B.y) { return p$1.distance(A) }\n var len2 = (B.x - A.x) * (B.x - A.x) + (B.y - A.y) * (B.y - A.y);\n var r = ((p$1.x - A.x) * (B.x - A.x) + (p$1.y - A.y) * (B.y - A.y)) / len2;\n if (r <= 0.0) { return p$1.distance(A) }\n if (r >= 1.0) { return p$1.distance(B) }\n var s = ((A.y - p$1.y) * (B.x - A.x) - (A.x - p$1.x) * (B.y - A.y)) / len2;\n return Math.abs(s) * Math.sqrt(len2)\n }\n};\nCGAlgorithms.isOnLine = function isOnLine (p, pt) {\n var lineIntersector = new RobustLineIntersector();\n for (var i = 1; i < pt.length; i++) {\n var p0 = pt[i - 1];\n var p1 = pt[i];\n lineIntersector.computeIntersection(p, p0, p1);\n if (lineIntersector.hasIntersection()) {\n return true\n }\n }\n return false\n};\nstaticAccessors$3.CLOCKWISE.get = function () { return -1 };\nstaticAccessors$3.RIGHT.get = function () { return CGAlgorithms.CLOCKWISE };\nstaticAccessors$3.COUNTERCLOCKWISE.get = function () { return 1 };\nstaticAccessors$3.LEFT.get = function () { return CGAlgorithms.COUNTERCLOCKWISE };\nstaticAccessors$3.COLLINEAR.get = function () { return 0 };\nstaticAccessors$3.STRAIGHT.get = function () { return CGAlgorithms.COLLINEAR };\n\nObject.defineProperties( CGAlgorithms, staticAccessors$3 );\n\nvar GeometryComponentFilter = function GeometryComponentFilter () {};\n\nGeometryComponentFilter.prototype.filter = function filter (geom) {};\nGeometryComponentFilter.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nGeometryComponentFilter.prototype.getClass = function getClass () {\n return GeometryComponentFilter\n};\n\nvar Geometry = function Geometry () {\n var factory = arguments[0];\n\n this._envelope = null;\n this._factory = null;\n this._SRID = null;\n this._userData = null;\n this._factory = factory;\n this._SRID = factory.getSRID();\n};\n\nvar staticAccessors$11 = { serialVersionUID: { configurable: true },SORTINDEX_POINT: { configurable: true },SORTINDEX_MULTIPOINT: { configurable: true },SORTINDEX_LINESTRING: { configurable: true },SORTINDEX_LINEARRING: { configurable: true },SORTINDEX_MULTILINESTRING: { configurable: true },SORTINDEX_POLYGON: { configurable: true },SORTINDEX_MULTIPOLYGON: { configurable: true },SORTINDEX_GEOMETRYCOLLECTION: { configurable: true },geometryChangedFilter: { configurable: true } };\nGeometry.prototype.isGeometryCollection = function isGeometryCollection () {\n return this.getSortIndex() === Geometry.SORTINDEX_GEOMETRYCOLLECTION\n};\nGeometry.prototype.getFactory = function getFactory () {\n return this._factory\n};\nGeometry.prototype.getGeometryN = function getGeometryN (n) {\n return this\n};\nGeometry.prototype.getArea = function getArea () {\n return 0.0\n};\nGeometry.prototype.isRectangle = function isRectangle () {\n return false\n};\nGeometry.prototype.equals = function equals () {\n if (arguments[0] instanceof Geometry) {\n var g$1 = arguments[0];\n if (g$1 === null) { return false }\n return this.equalsTopo(g$1)\n } else if (arguments[0] instanceof Object) {\n var o = arguments[0];\n if (!(o instanceof Geometry)) { return false }\n var g = o;\n return this.equalsExact(g)\n }\n};\nGeometry.prototype.equalsExact = function equalsExact (other) {\n return this === other || this.equalsExact(other, 0)\n};\nGeometry.prototype.geometryChanged = function geometryChanged () {\n this.apply(Geometry.geometryChangedFilter);\n};\nGeometry.prototype.geometryChangedAction = function geometryChangedAction () {\n this._envelope = null;\n};\nGeometry.prototype.equalsNorm = function equalsNorm (g) {\n if (g === null) { return false }\n return this.norm().equalsExact(g.norm())\n};\nGeometry.prototype.getLength = function getLength () {\n return 0.0\n};\nGeometry.prototype.getNumGeometries = function getNumGeometries () {\n return 1\n};\nGeometry.prototype.compareTo = function compareTo () {\n if (arguments.length === 1) {\n var o = arguments[0];\n var other = o;\n if (this.getSortIndex() !== other.getSortIndex()) {\n return this.getSortIndex() - other.getSortIndex()\n }\n if (this.isEmpty() && other.isEmpty()) {\n return 0\n }\n if (this.isEmpty()) {\n return -1\n }\n if (other.isEmpty()) {\n return 1\n }\n return this.compareToSameClass(o)\n } else if (arguments.length === 2) {\n var other$1 = arguments[0];\n var comp = arguments[1];\n if (this.getSortIndex() !== other$1.getSortIndex()) {\n return this.getSortIndex() - other$1.getSortIndex()\n }\n if (this.isEmpty() && other$1.isEmpty()) {\n return 0\n }\n if (this.isEmpty()) {\n return -1\n }\n if (other$1.isEmpty()) {\n return 1\n }\n return this.compareToSameClass(other$1, comp)\n }\n};\nGeometry.prototype.getUserData = function getUserData () {\n return this._userData\n};\nGeometry.prototype.getSRID = function getSRID () {\n return this._SRID\n};\nGeometry.prototype.getEnvelope = function getEnvelope () {\n return this.getFactory().toGeometry(this.getEnvelopeInternal())\n};\nGeometry.prototype.checkNotGeometryCollection = function checkNotGeometryCollection (g) {\n if (g.getSortIndex() === Geometry.SORTINDEX_GEOMETRYCOLLECTION) {\n throw new IllegalArgumentException('This method does not support GeometryCollection arguments')\n }\n};\nGeometry.prototype.equal = function equal (a, b, tolerance) {\n if (tolerance === 0) {\n return a.equals(b)\n }\n return a.distance(b) <= tolerance\n};\nGeometry.prototype.norm = function norm () {\n var copy = this.copy();\n copy.normalize();\n return copy\n};\nGeometry.prototype.getPrecisionModel = function getPrecisionModel () {\n return this._factory.getPrecisionModel()\n};\nGeometry.prototype.getEnvelopeInternal = function getEnvelopeInternal () {\n if (this._envelope === null) {\n this._envelope = this.computeEnvelopeInternal();\n }\n return new Envelope(this._envelope)\n};\nGeometry.prototype.setSRID = function setSRID (SRID) {\n this._SRID = SRID;\n};\nGeometry.prototype.setUserData = function setUserData (userData) {\n this._userData = userData;\n};\nGeometry.prototype.compare = function compare (a, b) {\n var i = a.iterator();\n var j = b.iterator();\n while (i.hasNext() && j.hasNext()) {\n var aElement = i.next();\n var bElement = j.next();\n var comparison = aElement.compareTo(bElement);\n if (comparison !== 0) {\n return comparison\n }\n }\n if (i.hasNext()) {\n return 1\n }\n if (j.hasNext()) {\n return -1\n }\n return 0\n};\nGeometry.prototype.hashCode = function hashCode () {\n return this.getEnvelopeInternal().hashCode()\n};\nGeometry.prototype.isGeometryCollectionOrDerived = function isGeometryCollectionOrDerived () {\n if (this.getSortIndex() === Geometry.SORTINDEX_GEOMETRYCOLLECTION || this.getSortIndex() === Geometry.SORTINDEX_MULTIPOINT || this.getSortIndex() === Geometry.SORTINDEX_MULTILINESTRING || this.getSortIndex() === Geometry.SORTINDEX_MULTIPOLYGON) {\n return true\n }\n return false\n};\nGeometry.prototype.interfaces_ = function interfaces_ () {\n return [Clonable, Comparable, Serializable]\n};\nGeometry.prototype.getClass = function getClass () {\n return Geometry\n};\nGeometry.hasNonEmptyElements = function hasNonEmptyElements (geometries) {\n for (var i = 0; i < geometries.length; i++) {\n if (!geometries[i].isEmpty()) {\n return true\n }\n }\n return false\n};\nGeometry.hasNullElements = function hasNullElements (array) {\n for (var i = 0; i < array.length; i++) {\n if (array[i] === null) {\n return true\n }\n }\n return false\n};\nstaticAccessors$11.serialVersionUID.get = function () { return 8763622679187376702 };\nstaticAccessors$11.SORTINDEX_POINT.get = function () { return 0 };\nstaticAccessors$11.SORTINDEX_MULTIPOINT.get = function () { return 1 };\nstaticAccessors$11.SORTINDEX_LINESTRING.get = function () { return 2 };\nstaticAccessors$11.SORTINDEX_LINEARRING.get = function () { return 3 };\nstaticAccessors$11.SORTINDEX_MULTILINESTRING.get = function () { return 4 };\nstaticAccessors$11.SORTINDEX_POLYGON.get = function () { return 5 };\nstaticAccessors$11.SORTINDEX_MULTIPOLYGON.get = function () { return 6 };\nstaticAccessors$11.SORTINDEX_GEOMETRYCOLLECTION.get = function () { return 7 };\nstaticAccessors$11.geometryChangedFilter.get = function () { return geometryChangedFilter };\n\nObject.defineProperties( Geometry, staticAccessors$11 );\n\nvar geometryChangedFilter = function geometryChangedFilter () {};\n\ngeometryChangedFilter.interfaces_ = function interfaces_ () {\n return [GeometryComponentFilter]\n};\ngeometryChangedFilter.filter = function filter (geom) {\n geom.geometryChangedAction();\n};\n\nvar CoordinateFilter = function CoordinateFilter () {};\n\nCoordinateFilter.prototype.filter = function filter (coord) {};\nCoordinateFilter.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nCoordinateFilter.prototype.getClass = function getClass () {\n return CoordinateFilter\n};\n\nvar BoundaryNodeRule = function BoundaryNodeRule () {};\n\nvar staticAccessors$12 = { Mod2BoundaryNodeRule: { configurable: true },EndPointBoundaryNodeRule: { configurable: true },MultiValentEndPointBoundaryNodeRule: { configurable: true },MonoValentEndPointBoundaryNodeRule: { configurable: true },MOD2_BOUNDARY_RULE: { configurable: true },ENDPOINT_BOUNDARY_RULE: { configurable: true },MULTIVALENT_ENDPOINT_BOUNDARY_RULE: { configurable: true },MONOVALENT_ENDPOINT_BOUNDARY_RULE: { configurable: true },OGC_SFS_BOUNDARY_RULE: { configurable: true } };\n\nBoundaryNodeRule.prototype.isInBoundary = function isInBoundary (boundaryCount) {};\nBoundaryNodeRule.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nBoundaryNodeRule.prototype.getClass = function getClass () {\n return BoundaryNodeRule\n};\nstaticAccessors$12.Mod2BoundaryNodeRule.get = function () { return Mod2BoundaryNodeRule };\nstaticAccessors$12.EndPointBoundaryNodeRule.get = function () { return EndPointBoundaryNodeRule };\nstaticAccessors$12.MultiValentEndPointBoundaryNodeRule.get = function () { return MultiValentEndPointBoundaryNodeRule };\nstaticAccessors$12.MonoValentEndPointBoundaryNodeRule.get = function () { return MonoValentEndPointBoundaryNodeRule };\nstaticAccessors$12.MOD2_BOUNDARY_RULE.get = function () { return new Mod2BoundaryNodeRule() };\nstaticAccessors$12.ENDPOINT_BOUNDARY_RULE.get = function () { return new EndPointBoundaryNodeRule() };\nstaticAccessors$12.MULTIVALENT_ENDPOINT_BOUNDARY_RULE.get = function () { return new MultiValentEndPointBoundaryNodeRule() };\nstaticAccessors$12.MONOVALENT_ENDPOINT_BOUNDARY_RULE.get = function () { return new MonoValentEndPointBoundaryNodeRule() };\nstaticAccessors$12.OGC_SFS_BOUNDARY_RULE.get = function () { return BoundaryNodeRule.MOD2_BOUNDARY_RULE };\n\nObject.defineProperties( BoundaryNodeRule, staticAccessors$12 );\n\nvar Mod2BoundaryNodeRule = function Mod2BoundaryNodeRule () {};\n\nMod2BoundaryNodeRule.prototype.isInBoundary = function isInBoundary (boundaryCount) {\n return boundaryCount % 2 === 1\n};\nMod2BoundaryNodeRule.prototype.interfaces_ = function interfaces_ () {\n return [BoundaryNodeRule]\n};\nMod2BoundaryNodeRule.prototype.getClass = function getClass () {\n return Mod2BoundaryNodeRule\n};\n\nvar EndPointBoundaryNodeRule = function EndPointBoundaryNodeRule () {};\n\nEndPointBoundaryNodeRule.prototype.isInBoundary = function isInBoundary (boundaryCount) {\n return boundaryCount > 0\n};\nEndPointBoundaryNodeRule.prototype.interfaces_ = function interfaces_ () {\n return [BoundaryNodeRule]\n};\nEndPointBoundaryNodeRule.prototype.getClass = function getClass () {\n return EndPointBoundaryNodeRule\n};\n\nvar MultiValentEndPointBoundaryNodeRule = function MultiValentEndPointBoundaryNodeRule () {};\n\nMultiValentEndPointBoundaryNodeRule.prototype.isInBoundary = function isInBoundary (boundaryCount) {\n return boundaryCount > 1\n};\nMultiValentEndPointBoundaryNodeRule.prototype.interfaces_ = function interfaces_ () {\n return [BoundaryNodeRule]\n};\nMultiValentEndPointBoundaryNodeRule.prototype.getClass = function getClass () {\n return MultiValentEndPointBoundaryNodeRule\n};\n\nvar MonoValentEndPointBoundaryNodeRule = function MonoValentEndPointBoundaryNodeRule () {};\n\nMonoValentEndPointBoundaryNodeRule.prototype.isInBoundary = function isInBoundary (boundaryCount) {\n return boundaryCount === 1\n};\nMonoValentEndPointBoundaryNodeRule.prototype.interfaces_ = function interfaces_ () {\n return [BoundaryNodeRule]\n};\nMonoValentEndPointBoundaryNodeRule.prototype.getClass = function getClass () {\n return MonoValentEndPointBoundaryNodeRule\n};\n\n// import Iterator from './Iterator'\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/Collection.html\n *\n * @constructor\n * @private\n */\nvar Collection = function Collection () {};\n\nCollection.prototype.add = function add () {};\n\n/**\n * Appends all of the elements in the specified collection to the end of this\n * list, in the order that they are returned by the specified collection's\n * iterator (optional operation).\n * @param {javascript.util.Collection} c\n * @return {boolean}\n */\nCollection.prototype.addAll = function addAll () {};\n\n/**\n * Returns true if this collection contains no elements.\n * @return {boolean}\n */\nCollection.prototype.isEmpty = function isEmpty () {};\n\n/**\n * Returns an iterator over the elements in this collection.\n * @return {javascript.util.Iterator}\n */\nCollection.prototype.iterator = function iterator () {};\n\n/**\n * Returns an iterator over the elements in this collection.\n * @return {number}\n */\nCollection.prototype.size = function size () {};\n\n/**\n * Returns an array containing all of the elements in this collection.\n * @return {Array}\n */\nCollection.prototype.toArray = function toArray () {};\n\n/**\n * Removes a single instance of the specified element from this collection if it\n * is present. (optional)\n * @param {Object} e\n * @return {boolean}\n */\nCollection.prototype.remove = function remove () {};\n\n/**\n * @param {string=} message Optional message\n * @extends {Error}\n * @constructor\n * @private\n */\nfunction IndexOutOfBoundsException (message) {\n this.message = message || '';\n}\nIndexOutOfBoundsException.prototype = new Error();\n\n/**\n * @type {string}\n */\nIndexOutOfBoundsException.prototype.name = 'IndexOutOfBoundsException';\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/Iterator.html\n * @constructor\n * @private\n */\nvar Iterator = function Iterator () {};\n\nIterator.prototype.hasNext = function hasNext () {};\n\n/**\n * Returns the next element in the iteration.\n * @return {Object}\n */\nIterator.prototype.next = function next () {};\n\n/**\n * Removes from the underlying collection the last element returned by the\n * iterator (optional operation).\n */\nIterator.prototype.remove = function remove () {};\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/List.html\n *\n * @extends {javascript.util.Collection}\n * @constructor\n * @private\n */\nvar List = (function (Collection$$1) {\n function List () {\n Collection$$1.apply(this, arguments);\n }\n\n if ( Collection$$1 ) List.__proto__ = Collection$$1;\n List.prototype = Object.create( Collection$$1 && Collection$$1.prototype );\n List.prototype.constructor = List;\n\n List.prototype.get = function get () { };\n\n /**\n * Replaces the element at the specified position in this list with the\n * specified element (optional operation).\n * @param {number} index\n * @param {Object} e\n * @return {Object}\n */\n List.prototype.set = function set () { };\n\n /**\n * Returns true if this collection contains no elements.\n * @return {boolean}\n */\n List.prototype.isEmpty = function isEmpty () { };\n\n return List;\n}(Collection));\n\n/**\n * @param {string=} message Optional message\n * @extends {Error}\n * @constructor\n * @private\n */\nfunction NoSuchElementException (message) {\n this.message = message || '';\n}\nNoSuchElementException.prototype = new Error();\n\n/**\n * @type {string}\n */\nNoSuchElementException.prototype.name = 'NoSuchElementException';\n\n// import OperationNotSupported from './OperationNotSupported'\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/ArrayList.html\n *\n * @extends List\n * @private\n */\nvar ArrayList = (function (List$$1) {\n function ArrayList () {\n List$$1.call(this);\n this.array_ = [];\n\n if (arguments[0] instanceof Collection) {\n this.addAll(arguments[0]);\n }\n }\n\n if ( List$$1 ) ArrayList.__proto__ = List$$1;\n ArrayList.prototype = Object.create( List$$1 && List$$1.prototype );\n ArrayList.prototype.constructor = ArrayList;\n\n ArrayList.prototype.ensureCapacity = function ensureCapacity () {};\n ArrayList.prototype.interfaces_ = function interfaces_ () { return [List$$1, Collection] };\n\n /**\n * @override\n */\n ArrayList.prototype.add = function add (e) {\n if (arguments.length === 1) {\n this.array_.push(e);\n } else {\n this.array_.splice(arguments[0], arguments[1]);\n }\n return true\n };\n\n ArrayList.prototype.clear = function clear () {\n this.array_ = [];\n };\n\n /**\n * @override\n */\n ArrayList.prototype.addAll = function addAll (c) {\n var this$1 = this;\n\n for (var i = c.iterator(); i.hasNext();) {\n this$1.add(i.next());\n }\n return true\n };\n\n /**\n * @override\n */\n ArrayList.prototype.set = function set (index, element) {\n var oldElement = this.array_[index];\n this.array_[index] = element;\n return oldElement\n };\n\n /**\n * @override\n */\n ArrayList.prototype.iterator = function iterator () {\n return new Iterator_(this)\n };\n\n /**\n * @override\n */\n ArrayList.prototype.get = function get (index) {\n if (index < 0 || index >= this.size()) {\n throw new IndexOutOfBoundsException()\n }\n\n return this.array_[index]\n };\n\n /**\n * @override\n */\n ArrayList.prototype.isEmpty = function isEmpty () {\n return this.array_.length === 0\n };\n\n /**\n * @override\n */\n ArrayList.prototype.size = function size () {\n return this.array_.length\n };\n\n /**\n * @override\n */\n ArrayList.prototype.toArray = function toArray () {\n var this$1 = this;\n\n var array = [];\n\n for (var i = 0, len = this.array_.length; i < len; i++) {\n array.push(this$1.array_[i]);\n }\n\n return array\n };\n\n /**\n * @override\n */\n ArrayList.prototype.remove = function remove (o) {\n var this$1 = this;\n\n var found = false;\n\n for (var i = 0, len = this.array_.length; i < len; i++) {\n if (this$1.array_[i] === o) {\n this$1.array_.splice(i, 1);\n found = true;\n break\n }\n }\n\n return found\n };\n\n return ArrayList;\n}(List));\n\n/**\n * @extends {Iterator}\n * @param {ArrayList} arrayList\n * @constructor\n * @private\n */\nvar Iterator_ = (function (Iterator$$1) {\n function Iterator_ (arrayList) {\n Iterator$$1.call(this);\n /**\n * @type {ArrayList}\n * @private\n */\n this.arrayList_ = arrayList;\n /**\n * @type {number}\n * @private\n */\n this.position_ = 0;\n }\n\n if ( Iterator$$1 ) Iterator_.__proto__ = Iterator$$1;\n Iterator_.prototype = Object.create( Iterator$$1 && Iterator$$1.prototype );\n Iterator_.prototype.constructor = Iterator_;\n\n /**\n * @override\n */\n Iterator_.prototype.next = function next () {\n if (this.position_ === this.arrayList_.size()) {\n throw new NoSuchElementException()\n }\n return this.arrayList_.get(this.position_++)\n };\n\n /**\n * @override\n */\n Iterator_.prototype.hasNext = function hasNext () {\n if (this.position_ < this.arrayList_.size()) {\n return true\n } else {\n return false\n }\n };\n\n /**\n * TODO: should be in ListIterator\n * @override\n */\n Iterator_.prototype.set = function set (element) {\n return this.arrayList_.set(this.position_ - 1, element)\n };\n\n /**\n * @override\n */\n Iterator_.prototype.remove = function remove () {\n this.arrayList_.remove(this.arrayList_.get(this.position_));\n };\n\n return Iterator_;\n}(Iterator));\n\nvar CoordinateList = (function (ArrayList$$1) {\n function CoordinateList () {\n ArrayList$$1.call(this);\n if (arguments.length === 0) {\n } else if (arguments.length === 1) {\n var coord = arguments[0];\n this.ensureCapacity(coord.length);\n this.add(coord, true);\n } else if (arguments.length === 2) {\n var coord$1 = arguments[0];\n var allowRepeated = arguments[1];\n this.ensureCapacity(coord$1.length);\n this.add(coord$1, allowRepeated);\n }\n }\n\n if ( ArrayList$$1 ) CoordinateList.__proto__ = ArrayList$$1;\n CoordinateList.prototype = Object.create( ArrayList$$1 && ArrayList$$1.prototype );\n CoordinateList.prototype.constructor = CoordinateList;\n\n var staticAccessors = { coordArrayType: { configurable: true } };\n staticAccessors.coordArrayType.get = function () { return new Array(0).fill(null) };\n CoordinateList.prototype.getCoordinate = function getCoordinate (i) {\n return this.get(i)\n };\n CoordinateList.prototype.addAll = function addAll () {\n var this$1 = this;\n\n if (arguments.length === 2) {\n var coll = arguments[0];\n var allowRepeated = arguments[1];\n var isChanged = false;\n for (var i = coll.iterator(); i.hasNext();) {\n this$1.add(i.next(), allowRepeated);\n isChanged = true;\n }\n return isChanged\n } else { return ArrayList$$1.prototype.addAll.apply(this, arguments) }\n };\n CoordinateList.prototype.clone = function clone () {\n var this$1 = this;\n\n var clone = ArrayList$$1.prototype.clone.call(this);\n for (var i = 0; i < this.size(); i++) {\n clone.add(i, this$1.get(i).copy());\n }\n return clone\n };\n CoordinateList.prototype.toCoordinateArray = function toCoordinateArray () {\n return this.toArray(CoordinateList.coordArrayType)\n };\n CoordinateList.prototype.add = function add () {\n var this$1 = this;\n\n if (arguments.length === 1) {\n var coord = arguments[0];\n ArrayList$$1.prototype.add.call(this, coord);\n } else if (arguments.length === 2) {\n if (arguments[0] instanceof Array && typeof arguments[1] === 'boolean') {\n var coord$1 = arguments[0];\n var allowRepeated = arguments[1];\n this.add(coord$1, allowRepeated, true);\n return true\n } else if (arguments[0] instanceof Coordinate && typeof arguments[1] === 'boolean') {\n var coord$2 = arguments[0];\n var allowRepeated$1 = arguments[1];\n if (!allowRepeated$1) {\n if (this.size() >= 1) {\n var last = this.get(this.size() - 1);\n if (last.equals2D(coord$2)) { return null }\n }\n }\n ArrayList$$1.prototype.add.call(this, coord$2);\n } else if (arguments[0] instanceof Object && typeof arguments[1] === 'boolean') {\n var obj = arguments[0];\n var allowRepeated$2 = arguments[1];\n this.add(obj, allowRepeated$2);\n return true\n }\n } else if (arguments.length === 3) {\n if (typeof arguments[2] === 'boolean' && (arguments[0] instanceof Array && typeof arguments[1] === 'boolean')) {\n var coord$3 = arguments[0];\n var allowRepeated$3 = arguments[1];\n var direction = arguments[2];\n if (direction) {\n for (var i$1 = 0; i$1 < coord$3.length; i$1++) {\n this$1.add(coord$3[i$1], allowRepeated$3);\n }\n } else {\n for (var i$2 = coord$3.length - 1; i$2 >= 0; i$2--) {\n this$1.add(coord$3[i$2], allowRepeated$3);\n }\n }\n return true\n } else if (typeof arguments[2] === 'boolean' && (Number.isInteger(arguments[0]) && arguments[1] instanceof Coordinate)) {\n var i$3 = arguments[0];\n var coord$4 = arguments[1];\n var allowRepeated$4 = arguments[2];\n if (!allowRepeated$4) {\n var size = this.size();\n if (size > 0) {\n if (i$3 > 0) {\n var prev = this.get(i$3 - 1);\n if (prev.equals2D(coord$4)) { return null }\n }\n if (i$3 < size) {\n var next = this.get(i$3);\n if (next.equals2D(coord$4)) { return null }\n }\n }\n }\n ArrayList$$1.prototype.add.call(this, i$3, coord$4);\n }\n } else if (arguments.length === 4) {\n var coord$5 = arguments[0];\n var allowRepeated$5 = arguments[1];\n var start = arguments[2];\n var end = arguments[3];\n var inc = 1;\n if (start > end) { inc = -1; }\n for (var i = start; i !== end; i += inc) {\n this$1.add(coord$5[i], allowRepeated$5);\n }\n return true\n }\n };\n CoordinateList.prototype.closeRing = function closeRing () {\n if (this.size() > 0) { this.add(new Coordinate(this.get(0)), false); }\n };\n CoordinateList.prototype.interfaces_ = function interfaces_ () {\n return []\n };\n CoordinateList.prototype.getClass = function getClass () {\n return CoordinateList\n };\n\n Object.defineProperties( CoordinateList, staticAccessors );\n\n return CoordinateList;\n}(ArrayList));\n\nvar CoordinateArrays = function CoordinateArrays () {};\n\nvar staticAccessors$13 = { ForwardComparator: { configurable: true },BidirectionalComparator: { configurable: true },coordArrayType: { configurable: true } };\n\nstaticAccessors$13.ForwardComparator.get = function () { return ForwardComparator };\nstaticAccessors$13.BidirectionalComparator.get = function () { return BidirectionalComparator };\nstaticAccessors$13.coordArrayType.get = function () { return new Array(0).fill(null) };\n\nCoordinateArrays.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nCoordinateArrays.prototype.getClass = function getClass () {\n return CoordinateArrays\n};\nCoordinateArrays.isRing = function isRing (pts) {\n if (pts.length < 4) { return false }\n if (!pts[0].equals2D(pts[pts.length - 1])) { return false }\n return true\n};\nCoordinateArrays.ptNotInList = function ptNotInList (testPts, pts) {\n for (var i = 0; i < testPts.length; i++) {\n var testPt = testPts[i];\n if (CoordinateArrays.indexOf(testPt, pts) < 0) { return testPt }\n }\n return null\n};\nCoordinateArrays.scroll = function scroll (coordinates, firstCoordinate) {\n var i = CoordinateArrays.indexOf(firstCoordinate, coordinates);\n if (i < 0) { return null }\n var newCoordinates = new Array(coordinates.length).fill(null);\n System.arraycopy(coordinates, i, newCoordinates, 0, coordinates.length - i);\n System.arraycopy(coordinates, 0, newCoordinates, coordinates.length - i, i);\n System.arraycopy(newCoordinates, 0, coordinates, 0, coordinates.length);\n};\nCoordinateArrays.equals = function equals () {\n if (arguments.length === 2) {\n var coord1 = arguments[0];\n var coord2 = arguments[1];\n if (coord1 === coord2) { return true }\n if (coord1 === null || coord2 === null) { return false }\n if (coord1.length !== coord2.length) { return false }\n for (var i = 0; i < coord1.length; i++) {\n if (!coord1[i].equals(coord2[i])) { return false }\n }\n return true\n } else if (arguments.length === 3) {\n var coord1$1 = arguments[0];\n var coord2$1 = arguments[1];\n var coordinateComparator = arguments[2];\n if (coord1$1 === coord2$1) { return true }\n if (coord1$1 === null || coord2$1 === null) { return false }\n if (coord1$1.length !== coord2$1.length) { return false }\n for (var i$1 = 0; i$1 < coord1$1.length; i$1++) {\n if (coordinateComparator.compare(coord1$1[i$1], coord2$1[i$1]) !== 0) { return false }\n }\n return true\n }\n};\nCoordinateArrays.intersection = function intersection (coordinates, env) {\n var coordList = new CoordinateList();\n for (var i = 0; i < coordinates.length; i++) {\n if (env.intersects(coordinates[i])) { coordList.add(coordinates[i], true); }\n }\n return coordList.toCoordinateArray()\n};\nCoordinateArrays.hasRepeatedPoints = function hasRepeatedPoints (coord) {\n for (var i = 1; i < coord.length; i++) {\n if (coord[i - 1].equals(coord[i])) {\n return true\n }\n }\n return false\n};\nCoordinateArrays.removeRepeatedPoints = function removeRepeatedPoints (coord) {\n if (!CoordinateArrays.hasRepeatedPoints(coord)) { return coord }\n var coordList = new CoordinateList(coord, false);\n return coordList.toCoordinateArray()\n};\nCoordinateArrays.reverse = function reverse (coord) {\n var last = coord.length - 1;\n var mid = Math.trunc(last / 2);\n for (var i = 0; i <= mid; i++) {\n var tmp = coord[i];\n coord[i] = coord[last - i];\n coord[last - i] = tmp;\n }\n};\nCoordinateArrays.removeNull = function removeNull (coord) {\n var nonNull = 0;\n for (var i = 0; i < coord.length; i++) {\n if (coord[i] !== null) { nonNull++; }\n }\n var newCoord = new Array(nonNull).fill(null);\n if (nonNull === 0) { return newCoord }\n var j = 0;\n for (var i$1 = 0; i$1 < coord.length; i$1++) {\n if (coord[i$1] !== null) { newCoord[j++] = coord[i$1]; }\n }\n return newCoord\n};\nCoordinateArrays.copyDeep = function copyDeep () {\n if (arguments.length === 1) {\n var coordinates = arguments[0];\n var copy = new Array(coordinates.length).fill(null);\n for (var i = 0; i < coordinates.length; i++) {\n copy[i] = new Coordinate(coordinates[i]);\n }\n return copy\n } else if (arguments.length === 5) {\n var src = arguments[0];\n var srcStart = arguments[1];\n var dest = arguments[2];\n var destStart = arguments[3];\n var length = arguments[4];\n for (var i$1 = 0; i$1 < length; i$1++) {\n dest[destStart + i$1] = new Coordinate(src[srcStart + i$1]);\n }\n }\n};\nCoordinateArrays.isEqualReversed = function isEqualReversed (pts1, pts2) {\n for (var i = 0; i < pts1.length; i++) {\n var p1 = pts1[i];\n var p2 = pts2[pts1.length - i - 1];\n if (p1.compareTo(p2) !== 0) { return false }\n }\n return true\n};\nCoordinateArrays.envelope = function envelope (coordinates) {\n var env = new Envelope();\n for (var i = 0; i < coordinates.length; i++) {\n env.expandToInclude(coordinates[i]);\n }\n return env\n};\nCoordinateArrays.toCoordinateArray = function toCoordinateArray (coordList) {\n return coordList.toArray(CoordinateArrays.coordArrayType)\n};\nCoordinateArrays.atLeastNCoordinatesOrNothing = function atLeastNCoordinatesOrNothing (n, c) {\n return c.length >= n ? c : []\n};\nCoordinateArrays.indexOf = function indexOf (coordinate, coordinates) {\n for (var i = 0; i < coordinates.length; i++) {\n if (coordinate.equals(coordinates[i])) {\n return i\n }\n }\n return -1\n};\nCoordinateArrays.increasingDirection = function increasingDirection (pts) {\n for (var i = 0; i < Math.trunc(pts.length / 2); i++) {\n var j = pts.length - 1 - i;\n var comp = pts[i].compareTo(pts[j]);\n if (comp !== 0) { return comp }\n }\n return 1\n};\nCoordinateArrays.compare = function compare (pts1, pts2) {\n var i = 0;\n while (i < pts1.length && i < pts2.length) {\n var compare = pts1[i].compareTo(pts2[i]);\n if (compare !== 0) { return compare }\n i++;\n }\n if (i < pts2.length) { return -1 }\n if (i < pts1.length) { return 1 }\n return 0\n};\nCoordinateArrays.minCoordinate = function minCoordinate (coordinates) {\n var minCoord = null;\n for (var i = 0; i < coordinates.length; i++) {\n if (minCoord === null || minCoord.compareTo(coordinates[i]) > 0) {\n minCoord = coordinates[i];\n }\n }\n return minCoord\n};\nCoordinateArrays.extract = function extract (pts, start, end) {\n start = MathUtil.clamp(start, 0, pts.length);\n end = MathUtil.clamp(end, -1, pts.length);\n var npts = end - start + 1;\n if (end < 0) { npts = 0; }\n if (start >= pts.length) { npts = 0; }\n if (end < start) { npts = 0; }\n var extractPts = new Array(npts).fill(null);\n if (npts === 0) { return extractPts }\n var iPts = 0;\n for (var i = start; i <= end; i++) {\n extractPts[iPts++] = pts[i];\n }\n return extractPts\n};\n\nObject.defineProperties( CoordinateArrays, staticAccessors$13 );\n\nvar ForwardComparator = function ForwardComparator () {};\n\nForwardComparator.prototype.compare = function compare (o1, o2) {\n var pts1 = o1;\n var pts2 = o2;\n return CoordinateArrays.compare(pts1, pts2)\n};\nForwardComparator.prototype.interfaces_ = function interfaces_ () {\n return [Comparator]\n};\nForwardComparator.prototype.getClass = function getClass () {\n return ForwardComparator\n};\n\nvar BidirectionalComparator = function BidirectionalComparator () {};\n\nBidirectionalComparator.prototype.compare = function compare (o1, o2) {\n var pts1 = o1;\n var pts2 = o2;\n if (pts1.length < pts2.length) { return -1 }\n if (pts1.length > pts2.length) { return 1 }\n if (pts1.length === 0) { return 0 }\n var forwardComp = CoordinateArrays.compare(pts1, pts2);\n var isEqualRev = CoordinateArrays.isEqualReversed(pts1, pts2);\n if (isEqualRev) { return 0 }\n return forwardComp\n};\nBidirectionalComparator.prototype.OLDcompare = function OLDcompare (o1, o2) {\n var pts1 = o1;\n var pts2 = o2;\n if (pts1.length < pts2.length) { return -1 }\n if (pts1.length > pts2.length) { return 1 }\n if (pts1.length === 0) { return 0 }\n var dir1 = CoordinateArrays.increasingDirection(pts1);\n var dir2 = CoordinateArrays.increasingDirection(pts2);\n var i1 = dir1 > 0 ? 0 : pts1.length - 1;\n var i2 = dir2 > 0 ? 0 : pts1.length - 1;\n for (var i = 0; i < pts1.length; i++) {\n var comparePt = pts1[i1].compareTo(pts2[i2]);\n if (comparePt !== 0) { return comparePt }\n i1 += dir1;\n i2 += dir2;\n }\n return 0\n};\nBidirectionalComparator.prototype.interfaces_ = function interfaces_ () {\n return [Comparator]\n};\nBidirectionalComparator.prototype.getClass = function getClass () {\n return BidirectionalComparator\n};\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/Map.html\n *\n * @constructor\n * @private\n */\nvar Map$1 = function Map () {};\n\nMap$1.prototype.get = function get () {};\n/**\n * Associates the specified value with the specified key in this map (optional\n * operation).\n * @param {Object} key\n * @param {Object} value\n * @return {Object}\n */\nMap$1.prototype.put = function put () {};\n\n/**\n * Returns the number of key-value mappings in this map.\n * @return {number}\n */\nMap$1.prototype.size = function size () {};\n\n/**\n * Returns a Collection view of the values contained in this map.\n * @return {javascript.util.Collection}\n */\nMap$1.prototype.values = function values () {};\n\n/**\n * Returns a {@link Set} view of the mappings contained in this map.\n * The set is backed by the map, so changes to the map are\n * reflected in the set, and vice-versa.If the map is modified\n * while an iteration over the set is in progress (except through\n * the iterator's own <tt>remove</tt> operation, or through the\n * <tt>setValue</tt> operation on a map entry returned by the\n * iterator) the results of the iteration are undefined.The set\n * supports element removal, which removes the corresponding\n * mapping from the map, via the <tt>Iterator.remove</tt>,\n * <tt>Set.remove</tt>, <tt>removeAll</tt>, <tt>retainAll</tt> and\n * <tt>clear</tt> operations.It does not support the\n * <tt>add</tt> or <tt>addAll</tt> operations.\n *\n * @return {Set} a set view of the mappings contained in this map\n */\nMap$1.prototype.entrySet = function entrySet () {};\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/SortedMap.html\n *\n * @extends {Map}\n * @constructor\n * @private\n */\nvar SortedMap = (function (Map) {\n\tfunction SortedMap () {\n\t\tMap.apply(this, arguments);\n\t}if ( Map ) SortedMap.__proto__ = Map;\n\tSortedMap.prototype = Object.create( Map && Map.prototype );\n\tSortedMap.prototype.constructor = SortedMap;\n\n\t\n\n\treturn SortedMap;\n}(Map$1));\n\n/**\n * @param {string=} message Optional message\n * @extends {Error}\n * @constructor\n * @private\n */\nfunction OperationNotSupported (message) {\n this.message = message || '';\n}\nOperationNotSupported.prototype = new Error();\n\n/**\n * @type {string}\n */\nOperationNotSupported.prototype.name = 'OperationNotSupported';\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/Set.html\n *\n * @extends {Collection}\n * @constructor\n * @private\n */\nfunction Set() {}\nSet.prototype = new Collection();\n\n\n/**\n * Returns true if this set contains the specified element. More formally,\n * returns true if and only if this set contains an element e such that (o==null ?\n * e==null : o.equals(e)).\n * @param {Object} e\n * @return {boolean}\n */\nSet.prototype.contains = function() {};\n\n/**\n * @see http://docs.oracle.com/javase/6/docs/api/java/util/HashSet.html\n *\n * @extends {javascript.util.Set}\n * @constructor\n * @private\n */\nvar HashSet = (function (Set$$1) {\n function HashSet () {\n Set$$1.call(this);\n this.array_ = [];\n\n if (arguments[0] instanceof Collection) {\n this.addAll(arguments[0]);\n }\n }\n\n if ( Set$$1 ) HashSet.__proto__ = Set$$1;\n HashSet.prototype = Object.create( Set$$1 && Set$$1.prototype );\n HashSet.prototype.constructor = HashSet;\n\n /**\n * @override\n */\n HashSet.prototype.contains = function contains (o) {\n var this$1 = this;\n\n for (var i = 0, len = this.array_.length; i < len; i++) {\n var e = this$1.array_[i];\n if (e === o) {\n return true\n }\n }\n return false\n };\n\n /**\n * @override\n */\n HashSet.prototype.add = function add (o) {\n if (this.contains(o)) {\n return false\n }\n\n this.array_.push(o);\n\n return true\n };\n\n /**\n * @override\n */\n HashSet.prototype.addAll = function addAll (c) {\n var this$1 = this;\n\n for (var i = c.iterator(); i.hasNext();) {\n this$1.add(i.next());\n }\n return true\n };\n\n /**\n * @override\n */\n HashSet.prototype.remove = function remove (o) {\n // throw new javascript.util.OperationNotSupported()\n throw new Error()\n };\n\n /**\n * @override\n */\n HashSet.prototype.size = function size () {\n return this.array_.length\n };\n\n /**\n * @override\n */\n HashSet.prototype.isEmpty = function isEmpty () {\n return this.array_.length === 0\n };\n\n /**\n * @override\n */\n HashSet.prototype.toArray = function toArray () {\n var this$1 = this;\n\n var array = [];\n\n for (var i = 0, len = this.array_.length; i < len; i++) {\n array.push(this$1.array_[i]);\n }\n\n return array\n };\n\n /**\n * @override\n */\n HashSet.prototype.iterator = function iterator () {\n return new Iterator_$1(this)\n };\n\n return HashSet;\n}(Set));\n\n/**\n * @extends {Iterator}\n * @param {HashSet} hashSet\n * @constructor\n * @private\n */\nvar Iterator_$1 = (function (Iterator$$1) {\n function Iterator_ (hashSet) {\n Iterator$$1.call(this);\n /**\n * @type {HashSet}\n * @private\n */\n this.hashSet_ = hashSet;\n /**\n * @type {number}\n * @private\n */\n this.position_ = 0;\n }\n\n if ( Iterator$$1 ) Iterator_.__proto__ = Iterator$$1;\n Iterator_.prototype = Object.create( Iterator$$1 && Iterator$$1.prototype );\n Iterator_.prototype.constructor = Iterator_;\n\n /**\n * @override\n */\n Iterator_.prototype.next = function next () {\n if (this.position_ === this.hashSet_.size()) {\n throw new NoSuchElementException()\n }\n return this.hashSet_.array_[this.position_++]\n };\n\n /**\n * @override\n */\n Iterator_.prototype.hasNext = function hasNext () {\n if (this.position_ < this.hashSet_.size()) {\n return true\n } else {\n return false\n }\n };\n\n /**\n * @override\n */\n Iterator_.prototype.remove = function remove () {\n throw new OperationNotSupported()\n };\n\n return Iterator_;\n}(Iterator));\n\nvar BLACK = 0;\nvar RED = 1;\nfunction colorOf (p) { return (p === null ? BLACK : p.color) }\nfunction parentOf (p) { return (p === null ? null : p.parent) }\nfunction setColor (p, c) { if (p !== null) { p.color = c; } }\nfunction leftOf (p) { return (p === null ? null : p.left) }\nfunction rightOf (p) { return (p === null ? null : p.right) }\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/TreeMap.html\n *\n * @extends {SortedMap}\n * @constructor\n * @private\n */\nfunction TreeMap () {\n /**\n * @type {Object}\n * @private\n */\n this.root_ = null;\n /**\n * @type {number}\n * @private\n */\n this.size_ = 0;\n}\nTreeMap.prototype = new SortedMap();\n\n/**\n * @override\n */\nTreeMap.prototype.get = function (key) {\n var p = this.root_;\n while (p !== null) {\n var cmp = key['compareTo'](p.key);\n if (cmp < 0) { p = p.left; }\n else if (cmp > 0) { p = p.right; }\n else { return p.value }\n }\n return null\n};\n\n/**\n * @override\n */\nTreeMap.prototype.put = function (key, value) {\n if (this.root_ === null) {\n this.root_ = {\n key: key,\n value: value,\n left: null,\n right: null,\n parent: null,\n color: BLACK,\n getValue: function getValue () { return this.value },\n getKey: function getKey () { return this.key }\n };\n this.size_ = 1;\n return null\n }\n var t = this.root_;\n var parent;\n var cmp;\n do {\n parent = t;\n cmp = key['compareTo'](t.key);\n if (cmp < 0) {\n t = t.left;\n } else if (cmp > 0) {\n t = t.right;\n } else {\n var oldValue = t.value;\n t.value = value;\n return oldValue\n }\n } while (t !== null)\n var e = {\n key: key,\n left: null,\n right: null,\n value: value,\n parent: parent,\n color: BLACK,\n getValue: function getValue () { return this.value },\n getKey: function getKey () { return this.key }\n };\n if (cmp < 0) {\n parent.left = e;\n } else {\n parent.right = e;\n }\n this.fixAfterInsertion(e);\n this.size_++;\n return null\n};\n\n/**\n * @param {Object} x\n */\nTreeMap.prototype.fixAfterInsertion = function (x) {\n var this$1 = this;\n\n x.color = RED;\n while (x != null && x !== this.root_ && x.parent.color === RED) {\n if (parentOf(x) === leftOf(parentOf(parentOf(x)))) {\n var y = rightOf(parentOf(parentOf(x)));\n if (colorOf(y) === RED) {\n setColor(parentOf(x), BLACK);\n setColor(y, BLACK);\n setColor(parentOf(parentOf(x)), RED);\n x = parentOf(parentOf(x));\n } else {\n if (x === rightOf(parentOf(x))) {\n x = parentOf(x);\n this$1.rotateLeft(x);\n }\n setColor(parentOf(x), BLACK);\n setColor(parentOf(parentOf(x)), RED);\n this$1.rotateRight(parentOf(parentOf(x)));\n }\n } else {\n var y$1 = leftOf(parentOf(parentOf(x)));\n if (colorOf(y$1) === RED) {\n setColor(parentOf(x), BLACK);\n setColor(y$1, BLACK);\n setColor(parentOf(parentOf(x)), RED);\n x = parentOf(parentOf(x));\n } else {\n if (x === leftOf(parentOf(x))) {\n x = parentOf(x);\n this$1.rotateRight(x);\n }\n setColor(parentOf(x), BLACK);\n setColor(parentOf(parentOf(x)), RED);\n this$1.rotateLeft(parentOf(parentOf(x)));\n }\n }\n }\n this.root_.color = BLACK;\n};\n\n/**\n * @override\n */\nTreeMap.prototype.values = function () {\n var arrayList = new ArrayList();\n var p = this.getFirstEntry();\n if (p !== null) {\n arrayList.add(p.value);\n while ((p = TreeMap.successor(p)) !== null) {\n arrayList.add(p.value);\n }\n }\n return arrayList\n};\n\n/**\n * @override\n */\nTreeMap.prototype.entrySet = function () {\n var hashSet = new HashSet();\n var p = this.getFirstEntry();\n if (p !== null) {\n hashSet.add(p);\n while ((p = TreeMap.successor(p)) !== null) {\n hashSet.add(p);\n }\n }\n return hashSet\n};\n\n/**\n * @param {Object} p\n */\nTreeMap.prototype.rotateLeft = function (p) {\n if (p != null) {\n var r = p.right;\n p.right = r.left;\n if (r.left != null) { r.left.parent = p; }\n r.parent = p.parent;\n if (p.parent === null) { this.root_ = r; } else if (p.parent.left === p) { p.parent.left = r; } else { p.parent.right = r; }\n r.left = p;\n p.parent = r;\n }\n};\n\n/**\n * @param {Object} p\n */\nTreeMap.prototype.rotateRight = function (p) {\n if (p != null) {\n var l = p.left;\n p.left = l.right;\n if (l.right != null) { l.right.parent = p; }\n l.parent = p.parent;\n if (p.parent === null) { this.root_ = l; } else if (p.parent.right === p) { p.parent.right = l; } else { p.parent.left = l; }\n l.right = p;\n p.parent = l;\n }\n};\n\n/**\n * @return {Object}\n */\nTreeMap.prototype.getFirstEntry = function () {\n var p = this.root_;\n if (p != null) {\n while (p.left != null) {\n p = p.left;\n }\n }\n return p\n};\n\n/**\n * @param {Object} t\n * @return {Object}\n * @private\n */\nTreeMap.successor = function (t) {\n if (t === null) { return null } else if (t.right !== null) {\n var p = t.right;\n while (p.left !== null) {\n p = p.left;\n }\n return p\n } else {\n var p$1 = t.parent;\n var ch = t;\n while (p$1 !== null && ch === p$1.right) {\n ch = p$1;\n p$1 = p$1.parent;\n }\n return p$1\n }\n};\n\n/**\n * @override\n */\nTreeMap.prototype.size = function () {\n return this.size_\n};\n\nvar Lineal = function Lineal () {};\n\nLineal.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nLineal.prototype.getClass = function getClass () {\n return Lineal\n};\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/SortedSet.html\n *\n * @extends {Set}\n * @constructor\n * @private\n */\nfunction SortedSet () {}\nSortedSet.prototype = new Set();\n\n// import Iterator from './Iterator'\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/TreeSet.html\n *\n * @extends {SortedSet}\n * @constructor\n * @private\n */\nfunction TreeSet () {\n /**\n * @type {Array}\n * @private\n */\n this.array_ = [];\n\n if (arguments[0] instanceof Collection) {\n this.addAll(arguments[0]);\n }\n}\nTreeSet.prototype = new SortedSet();\n\n/**\n * @override\n */\nTreeSet.prototype.contains = function (o) {\n var this$1 = this;\n\n for (var i = 0, len = this.array_.length; i < len; i++) {\n var e = this$1.array_[i];\n if (e['compareTo'](o) === 0) {\n return true\n }\n }\n return false\n};\n\n/**\n * @override\n */\nTreeSet.prototype.add = function (o) {\n var this$1 = this;\n\n if (this.contains(o)) {\n return false\n }\n\n for (var i = 0, len = this.array_.length; i < len; i++) {\n var e = this$1.array_[i];\n if (e['compareTo'](o) === 1) {\n this$1.array_.splice(i, 0, o);\n return true\n }\n }\n\n this.array_.push(o);\n\n return true\n};\n\n/**\n * @override\n */\nTreeSet.prototype.addAll = function (c) {\n var this$1 = this;\n\n for (var i = c.iterator(); i.hasNext();) {\n this$1.add(i.next());\n }\n return true\n};\n\n/**\n * @override\n */\nTreeSet.prototype.remove = function (e) {\n throw new OperationNotSupported()\n};\n\n/**\n * @override\n */\nTreeSet.prototype.size = function () {\n return this.array_.length\n};\n\n/**\n * @override\n */\nTreeSet.prototype.isEmpty = function () {\n return this.array_.length === 0\n};\n\n/**\n * @override\n */\nTreeSet.prototype.toArray = function () {\n var this$1 = this;\n\n var array = [];\n\n for (var i = 0, len = this.array_.length; i < len; i++) {\n array.push(this$1.array_[i]);\n }\n\n return array\n};\n\n/**\n * @override\n */\nTreeSet.prototype.iterator = function () {\n return new Iterator_$2(this)\n};\n\n/**\n * @extends {javascript.util.Iterator}\n * @param {javascript.util.TreeSet} treeSet\n * @constructor\n * @private\n */\nvar Iterator_$2 = function (treeSet) {\n /**\n * @type {javascript.util.TreeSet}\n * @private\n */\n this.treeSet_ = treeSet;\n /**\n * @type {number}\n * @private\n */\n this.position_ = 0;\n};\n\n/**\n * @override\n */\nIterator_$2.prototype.next = function () {\n if (this.position_ === this.treeSet_.size()) {\n throw new NoSuchElementException()\n }\n return this.treeSet_.array_[this.position_++]\n};\n\n/**\n * @override\n */\nIterator_$2.prototype.hasNext = function () {\n if (this.position_ < this.treeSet_.size()) {\n return true\n } else {\n return false\n }\n};\n\n/**\n * @override\n */\nIterator_$2.prototype.remove = function () {\n throw new OperationNotSupported()\n};\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/Arrays.html\n *\n * @constructor\n * @private\n */\nvar Arrays = function Arrays () {};\n\nArrays.sort = function sort () {\n var a = arguments[0];\n var i;\n var t;\n var comparator;\n var compare;\n if (arguments.length === 1) {\n compare = function (a, b) {\n return a.compareTo(b)\n };\n a.sort(compare);\n } else if (arguments.length === 2) {\n comparator = arguments[1];\n compare = function (a, b) {\n return comparator['compare'](a, b)\n };\n a.sort(compare);\n } else if (arguments.length === 3) {\n t = a.slice(arguments[1], arguments[2]);\n t.sort();\n var r = a.slice(0, arguments[1]).concat(t, a.slice(arguments[2], a.length));\n a.splice(0, a.length);\n for (i = 0; i < r.length; i++) {\n a.push(r[i]);\n }\n } else if (arguments.length === 4) {\n t = a.slice(arguments[1], arguments[2]);\n comparator = arguments[3];\n compare = function (a, b) {\n return comparator['compare'](a, b)\n };\n t.sort(compare);\n r = a.slice(0, arguments[1]).concat(t, a.slice(arguments[2], a.length));\n a.splice(0, a.length);\n for (i = 0; i < r.length; i++) {\n a.push(r[i]);\n }\n }\n};\n/**\n * @param {Array} array\n * @return {ArrayList}\n */\nArrays.asList = function asList (array) {\n var arrayList = new ArrayList();\n for (var i = 0, len = array.length; i < len; i++) {\n arrayList.add(array[i]);\n }\n return arrayList\n};\n\nvar Dimension = function Dimension () {};\n\nvar staticAccessors$14 = { P: { configurable: true },L: { configurable: true },A: { configurable: true },FALSE: { configurable: true },TRUE: { configurable: true },DONTCARE: { configurable: true },SYM_FALSE: { configurable: true },SYM_TRUE: { configurable: true },SYM_DONTCARE: { configurable: true },SYM_P: { configurable: true },SYM_L: { configurable: true },SYM_A: { configurable: true } };\n\nstaticAccessors$14.P.get = function () { return 0 };\nstaticAccessors$14.L.get = function () { return 1 };\nstaticAccessors$14.A.get = function () { return 2 };\nstaticAccessors$14.FALSE.get = function () { return -1 };\nstaticAccessors$14.TRUE.get = function () { return -2 };\nstaticAccessors$14.DONTCARE.get = function () { return -3 };\nstaticAccessors$14.SYM_FALSE.get = function () { return 'F' };\nstaticAccessors$14.SYM_TRUE.get = function () { return 'T' };\nstaticAccessors$14.SYM_DONTCARE.get = function () { return '*' };\nstaticAccessors$14.SYM_P.get = function () { return '0' };\nstaticAccessors$14.SYM_L.get = function () { return '1' };\nstaticAccessors$14.SYM_A.get = function () { return '2' };\n\nDimension.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nDimension.prototype.getClass = function getClass () {\n return Dimension\n};\nDimension.toDimensionSymbol = function toDimensionSymbol (dimensionValue) {\n switch (dimensionValue) {\n case Dimension.FALSE:\n return Dimension.SYM_FALSE\n case Dimension.TRUE:\n return Dimension.SYM_TRUE\n case Dimension.DONTCARE:\n return Dimension.SYM_DONTCARE\n case Dimension.P:\n return Dimension.SYM_P\n case Dimension.L:\n return Dimension.SYM_L\n case Dimension.A:\n return Dimension.SYM_A\n default:\n }\n throw new IllegalArgumentException('Unknown dimension value: ' + dimensionValue)\n};\nDimension.toDimensionValue = function toDimensionValue (dimensionSymbol) {\n switch (Character.toUpperCase(dimensionSymbol)) {\n case Dimension.SYM_FALSE:\n return Dimension.FALSE\n case Dimension.SYM_TRUE:\n return Dimension.TRUE\n case Dimension.SYM_DONTCARE:\n return Dimension.DONTCARE\n case Dimension.SYM_P:\n return Dimension.P\n case Dimension.SYM_L:\n return Dimension.L\n case Dimension.SYM_A:\n return Dimension.A\n default:\n }\n throw new IllegalArgumentException('Unknown dimension symbol: ' + dimensionSymbol)\n};\n\nObject.defineProperties( Dimension, staticAccessors$14 );\n\nvar GeometryFilter = function GeometryFilter () {};\n\nGeometryFilter.prototype.filter = function filter (geom) {};\nGeometryFilter.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nGeometryFilter.prototype.getClass = function getClass () {\n return GeometryFilter\n};\n\nvar CoordinateSequenceFilter = function CoordinateSequenceFilter () {};\n\nCoordinateSequenceFilter.prototype.filter = function filter (seq, i) {};\nCoordinateSequenceFilter.prototype.isDone = function isDone () {};\nCoordinateSequenceFilter.prototype.isGeometryChanged = function isGeometryChanged () {};\nCoordinateSequenceFilter.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nCoordinateSequenceFilter.prototype.getClass = function getClass () {\n return CoordinateSequenceFilter\n};\n\nvar GeometryCollection = (function (Geometry$$1) {\n function GeometryCollection (geometries, factory) {\n Geometry$$1.call(this, factory);\n this._geometries = geometries || [];\n\n if (Geometry$$1.hasNullElements(this._geometries)) {\n throw new IllegalArgumentException('geometries must not contain null elements')\n }\n }\n\n if ( Geometry$$1 ) GeometryCollection.__proto__ = Geometry$$1;\n GeometryCollection.prototype = Object.create( Geometry$$1 && Geometry$$1.prototype );\n GeometryCollection.prototype.constructor = GeometryCollection;\n\n var staticAccessors = { serialVersionUID: { configurable: true } };\n GeometryCollection.prototype.computeEnvelopeInternal = function computeEnvelopeInternal () {\n var this$1 = this;\n\n var envelope = new Envelope();\n for (var i = 0; i < this._geometries.length; i++) {\n envelope.expandToInclude(this$1._geometries[i].getEnvelopeInternal());\n }\n return envelope\n };\n GeometryCollection.prototype.getGeometryN = function getGeometryN (n) {\n return this._geometries[n]\n };\n GeometryCollection.prototype.getSortIndex = function getSortIndex () {\n return Geometry$$1.SORTINDEX_GEOMETRYCOLLECTION\n };\n GeometryCollection.prototype.getCoordinates = function getCoordinates () {\n var this$1 = this;\n\n var coordinates = new Array(this.getNumPoints()).fill(null);\n var k = -1;\n for (var i = 0; i < this._geometries.length; i++) {\n var childCoordinates = this$1._geometries[i].getCoordinates();\n for (var j = 0; j < childCoordinates.length; j++) {\n k++;\n coordinates[k] = childCoordinates[j];\n }\n }\n return coordinates\n };\n GeometryCollection.prototype.getArea = function getArea () {\n var this$1 = this;\n\n var area = 0.0;\n for (var i = 0; i < this._geometries.length; i++) {\n area += this$1._geometries[i].getArea();\n }\n return area\n };\n GeometryCollection.prototype.equalsExact = function equalsExact () {\n var this$1 = this;\n\n if (arguments.length === 2) {\n var other = arguments[0];\n var tolerance = arguments[1];\n if (!this.isEquivalentClass(other)) {\n return false\n }\n var otherCollection = other;\n if (this._geometries.length !== otherCollection._geometries.length) {\n return false\n }\n for (var i = 0; i < this._geometries.length; i++) {\n if (!this$1._geometries[i].equalsExact(otherCollection._geometries[i], tolerance)) {\n return false\n }\n }\n return true\n } else { return Geometry$$1.prototype.equalsExact.apply(this, arguments) }\n };\n GeometryCollection.prototype.normalize = function normalize () {\n var this$1 = this;\n\n for (var i = 0; i < this._geometries.length; i++) {\n this$1._geometries[i].normalize();\n }\n Arrays.sort(this._geometries);\n };\n GeometryCollection.prototype.getCoordinate = function getCoordinate () {\n if (this.isEmpty()) { return null }\n return this._geometries[0].getCoordinate()\n };\n GeometryCollection.prototype.getBoundaryDimension = function getBoundaryDimension () {\n var this$1 = this;\n\n var dimension = Dimension.FALSE;\n for (var i = 0; i < this._geometries.length; i++) {\n dimension = Math.max(dimension, this$1._geometries[i].getBoundaryDimension());\n }\n return dimension\n };\n GeometryCollection.prototype.getDimension = function getDimension () {\n var this$1 = this;\n\n var dimension = Dimension.FALSE;\n for (var i = 0; i < this._geometries.length; i++) {\n dimension = Math.max(dimension, this$1._geometries[i].getDimension());\n }\n return dimension\n };\n GeometryCollection.prototype.getLength = function getLength () {\n var this$1 = this;\n\n var sum = 0.0;\n for (var i = 0; i < this._geometries.length; i++) {\n sum += this$1._geometries[i].getLength();\n }\n return sum\n };\n GeometryCollection.prototype.getNumPoints = function getNumPoints () {\n var this$1 = this;\n\n var numPoints = 0;\n for (var i = 0; i < this._geometries.length; i++) {\n numPoints += this$1._geometries[i].getNumPoints();\n }\n return numPoints\n };\n GeometryCollection.prototype.getNumGeometries = function getNumGeometries () {\n return this._geometries.length\n };\n GeometryCollection.prototype.reverse = function reverse () {\n var this$1 = this;\n\n var n = this._geometries.length;\n var revGeoms = new Array(n).fill(null);\n for (var i = 0; i < this._geometries.length; i++) {\n revGeoms[i] = this$1._geometries[i].reverse();\n }\n return this.getFactory().createGeometryCollection(revGeoms)\n };\n GeometryCollection.prototype.compareToSameClass = function compareToSameClass () {\n var this$1 = this;\n\n if (arguments.length === 1) {\n var o = arguments[0];\n var theseElements = new TreeSet(Arrays.asList(this._geometries));\n var otherElements = new TreeSet(Arrays.asList(o._geometries));\n return this.compare(theseElements, otherElements)\n } else if (arguments.length === 2) {\n var o$1 = arguments[0];\n var comp = arguments[1];\n var gc = o$1;\n var n1 = this.getNumGeometries();\n var n2 = gc.getNumGeometries();\n var i = 0;\n while (i < n1 && i < n2) {\n var thisGeom = this$1.getGeometryN(i);\n var otherGeom = gc.getGeometryN(i);\n var holeComp = thisGeom.compareToSameClass(otherGeom, comp);\n if (holeComp !== 0) { return holeComp }\n i++;\n }\n if (i < n1) { return 1 }\n if (i < n2) { return -1 }\n return 0\n }\n };\n GeometryCollection.prototype.apply = function apply () {\n var this$1 = this;\n\n if (hasInterface(arguments[0], CoordinateFilter)) {\n var filter = arguments[0];\n for (var i = 0; i < this._geometries.length; i++) {\n this$1._geometries[i].apply(filter);\n }\n } else if (hasInterface(arguments[0], CoordinateSequenceFilter)) {\n var filter$1 = arguments[0];\n if (this._geometries.length === 0) { return null }\n for (var i$1 = 0; i$1 < this._geometries.length; i$1++) {\n this$1._geometries[i$1].apply(filter$1);\n if (filter$1.isDone()) {\n break\n }\n }\n if (filter$1.isGeometryChanged()) { this.geometryChanged(); }\n } else if (hasInterface(arguments[0], GeometryFilter)) {\n var filter$2 = arguments[0];\n filter$2.filter(this);\n for (var i$2 = 0; i$2 < this._geometries.length; i$2++) {\n this$1._geometries[i$2].apply(filter$2);\n }\n } else if (hasInterface(arguments[0], GeometryComponentFilter)) {\n var filter$3 = arguments[0];\n filter$3.filter(this);\n for (var i$3 = 0; i$3 < this._geometries.length; i$3++) {\n this$1._geometries[i$3].apply(filter$3);\n }\n }\n };\n GeometryCollection.prototype.getBoundary = function getBoundary () {\n this.checkNotGeometryCollection(this);\n Assert.shouldNeverReachHere();\n return null\n };\n GeometryCollection.prototype.clone = function clone () {\n var this$1 = this;\n\n var gc = Geometry$$1.prototype.clone.call(this);\n gc._geometries = new Array(this._geometries.length).fill(null);\n for (var i = 0; i < this._geometries.length; i++) {\n gc._geometries[i] = this$1._geometries[i].clone();\n }\n return gc\n };\n GeometryCollection.prototype.getGeometryType = function getGeometryType () {\n return 'GeometryCollection'\n };\n GeometryCollection.prototype.copy = function copy () {\n var this$1 = this;\n\n var geometries = new Array(this._geometries.length).fill(null);\n for (var i = 0; i < geometries.length; i++) {\n geometries[i] = this$1._geometries[i].copy();\n }\n return new GeometryCollection(geometries, this._factory)\n };\n GeometryCollection.prototype.isEmpty = function isEmpty () {\n var this$1 = this;\n\n for (var i = 0; i < this._geometries.length; i++) {\n if (!this$1._geometries[i].isEmpty()) {\n return false\n }\n }\n return true\n };\n GeometryCollection.prototype.interfaces_ = function interfaces_ () {\n return []\n };\n GeometryCollection.prototype.getClass = function getClass () {\n return GeometryCollection\n };\n staticAccessors.serialVersionUID.get = function () { return -5694727726395021467 };\n\n Object.defineProperties( GeometryCollection, staticAccessors );\n\n return GeometryCollection;\n}(Geometry));\n\nvar MultiLineString = (function (GeometryCollection$$1) {\n function MultiLineString () {\n GeometryCollection$$1.apply(this, arguments);\n }\n\n if ( GeometryCollection$$1 ) MultiLineString.__proto__ = GeometryCollection$$1;\n MultiLineString.prototype = Object.create( GeometryCollection$$1 && GeometryCollection$$1.prototype );\n MultiLineString.prototype.constructor = MultiLineString;\n\n var staticAccessors = { serialVersionUID: { configurable: true } };\n\n MultiLineString.prototype.getSortIndex = function getSortIndex () {\n return Geometry.SORTINDEX_MULTILINESTRING\n };\n MultiLineString.prototype.equalsExact = function equalsExact () {\n if (arguments.length === 2) {\n var other = arguments[0];\n var tolerance = arguments[1];\n if (!this.isEquivalentClass(other)) {\n return false\n }\n return GeometryCollection$$1.prototype.equalsExact.call(this, other, tolerance)\n } else { return GeometryCollection$$1.prototype.equalsExact.apply(this, arguments) }\n };\n MultiLineString.prototype.getBoundaryDimension = function getBoundaryDimension () {\n if (this.isClosed()) {\n return Dimension.FALSE\n }\n return 0\n };\n MultiLineString.prototype.isClosed = function isClosed () {\n var this$1 = this;\n\n if (this.isEmpty()) {\n return false\n }\n for (var i = 0; i < this._geometries.length; i++) {\n if (!this$1._geometries[i].isClosed()) {\n return false\n }\n }\n return true\n };\n MultiLineString.prototype.getDimension = function getDimension () {\n return 1\n };\n MultiLineString.prototype.reverse = function reverse () {\n var this$1 = this;\n\n var nLines = this._geometries.length;\n var revLines = new Array(nLines).fill(null);\n for (var i = 0; i < this._geometries.length; i++) {\n revLines[nLines - 1 - i] = this$1._geometries[i].reverse();\n }\n return this.getFactory().createMultiLineString(revLines)\n };\n MultiLineString.prototype.getBoundary = function getBoundary () {\n return new BoundaryOp(this).getBoundary()\n };\n MultiLineString.prototype.getGeometryType = function getGeometryType () {\n return 'MultiLineString'\n };\n MultiLineString.prototype.copy = function copy () {\n var this$1 = this;\n\n var lineStrings = new Array(this._geometries.length).fill(null);\n for (var i = 0; i < lineStrings.length; i++) {\n lineStrings[i] = this$1._geometries[i].copy();\n }\n return new MultiLineString(lineStrings, this._factory)\n };\n MultiLineString.prototype.interfaces_ = function interfaces_ () {\n return [Lineal]\n };\n MultiLineString.prototype.getClass = function getClass () {\n return MultiLineString\n };\n staticAccessors.serialVersionUID.get = function () { return 8166665132445433741 };\n\n Object.defineProperties( MultiLineString, staticAccessors );\n\n return MultiLineString;\n}(GeometryCollection));\n\nvar BoundaryOp = function BoundaryOp () {\n this._geom = null;\n this._geomFact = null;\n this._bnRule = null;\n this._endpointMap = null;\n if (arguments.length === 1) {\n var geom = arguments[0];\n var bnRule = BoundaryNodeRule.MOD2_BOUNDARY_RULE;\n this._geom = geom;\n this._geomFact = geom.getFactory();\n this._bnRule = bnRule;\n } else if (arguments.length === 2) {\n var geom$1 = arguments[0];\n var bnRule$1 = arguments[1];\n this._geom = geom$1;\n this._geomFact = geom$1.getFactory();\n this._bnRule = bnRule$1;\n }\n};\nBoundaryOp.prototype.boundaryMultiLineString = function boundaryMultiLineString (mLine) {\n if (this._geom.isEmpty()) {\n return this.getEmptyMultiPoint()\n }\n var bdyPts = this.computeBoundaryCoordinates(mLine);\n if (bdyPts.length === 1) {\n return this._geomFact.createPoint(bdyPts[0])\n }\n return this._geomFact.createMultiPointFromCoords(bdyPts)\n};\nBoundaryOp.prototype.getBoundary = function getBoundary () {\n if (this._geom instanceof LineString) { return this.boundaryLineString(this._geom) }\n if (this._geom instanceof MultiLineString) { return this.boundaryMultiLineString(this._geom) }\n return this._geom.getBoundary()\n};\nBoundaryOp.prototype.boundaryLineString = function boundaryLineString (line) {\n if (this._geom.isEmpty()) {\n return this.getEmptyMultiPoint()\n }\n if (line.isClosed()) {\n var closedEndpointOnBoundary = this._bnRule.isInBoundary(2);\n if (closedEndpointOnBoundary) {\n return line.getStartPoint()\n } else {\n return this._geomFact.createMultiPoint()\n }\n }\n return this._geomFact.createMultiPoint([line.getStartPoint(), line.getEndPoint()])\n};\nBoundaryOp.prototype.getEmptyMultiPoint = function getEmptyMultiPoint () {\n return this._geomFact.createMultiPoint()\n};\nBoundaryOp.prototype.computeBoundaryCoordinates = function computeBoundaryCoordinates (mLine) {\n var this$1 = this;\n\n var bdyPts = new ArrayList();\n this._endpointMap = new TreeMap();\n for (var i = 0; i < mLine.getNumGeometries(); i++) {\n var line = mLine.getGeometryN(i);\n if (line.getNumPoints() === 0) { continue }\n this$1.addEndpoint(line.getCoordinateN(0));\n this$1.addEndpoint(line.getCoordinateN(line.getNumPoints() - 1));\n }\n for (var it = this._endpointMap.entrySet().iterator(); it.hasNext();) {\n var entry = it.next();\n var counter = entry.getValue();\n var valence = counter.count;\n if (this$1._bnRule.isInBoundary(valence)) {\n bdyPts.add(entry.getKey());\n }\n }\n return CoordinateArrays.toCoordinateArray(bdyPts)\n};\nBoundaryOp.prototype.addEndpoint = function addEndpoint (pt) {\n var counter = this._endpointMap.get(pt);\n if (counter === null) {\n counter = new Counter();\n this._endpointMap.put(pt, counter);\n }\n counter.count++;\n};\nBoundaryOp.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nBoundaryOp.prototype.getClass = function getClass () {\n return BoundaryOp\n};\nBoundaryOp.getBoundary = function getBoundary () {\n if (arguments.length === 1) {\n var g = arguments[0];\n var bop = new BoundaryOp(g);\n return bop.getBoundary()\n } else if (arguments.length === 2) {\n var g$1 = arguments[0];\n var bnRule = arguments[1];\n var bop$1 = new BoundaryOp(g$1, bnRule);\n return bop$1.getBoundary()\n }\n};\n\nvar Counter = function Counter () {\n this.count = null;\n};\nCounter.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nCounter.prototype.getClass = function getClass () {\n return Counter\n};\n\n// boundary\n\nfunction PrintStream () {}\n\nfunction StringReader () {}\n\nvar DecimalFormat = function DecimalFormat () {};\n\nfunction ByteArrayOutputStream () {}\n\nfunction IOException () {}\n\nfunction LineNumberReader () {}\n\nvar StringUtil = function StringUtil () {};\n\nvar staticAccessors$15 = { NEWLINE: { configurable: true },SIMPLE_ORDINATE_FORMAT: { configurable: true } };\n\nStringUtil.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nStringUtil.prototype.getClass = function getClass () {\n return StringUtil\n};\nStringUtil.chars = function chars (c, n) {\n var ch = new Array(n).fill(null);\n for (var i = 0; i < n; i++) {\n ch[i] = c;\n }\n return String(ch)\n};\nStringUtil.getStackTrace = function getStackTrace () {\n if (arguments.length === 1) {\n var t = arguments[0];\n var os = new ByteArrayOutputStream();\n var ps = new PrintStream(os);\n t.printStackTrace(ps);\n return os.toString()\n } else if (arguments.length === 2) {\n var t$1 = arguments[0];\n var depth = arguments[1];\n var stackTrace = '';\n var stringReader = new StringReader(StringUtil.getStackTrace(t$1));\n var lineNumberReader = new LineNumberReader(stringReader);\n for (var i = 0; i < depth; i++) {\n try {\n stackTrace += lineNumberReader.readLine() + StringUtil.NEWLINE;\n } catch (e) {\n if (e instanceof IOException) {\n Assert.shouldNeverReachHere();\n } else { throw e }\n } finally {}\n }\n return stackTrace\n }\n};\nStringUtil.split = function split (s, separator) {\n var separatorlen = separator.length;\n var tokenList = new ArrayList();\n var tmpString = '' + s;\n var pos = tmpString.indexOf(separator);\n while (pos >= 0) {\n var token = tmpString.substring(0, pos);\n tokenList.add(token);\n tmpString = tmpString.substring(pos + separatorlen);\n pos = tmpString.indexOf(separator);\n }\n if (tmpString.length > 0) { tokenList.add(tmpString); }\n var res = new Array(tokenList.size()).fill(null);\n for (var i = 0; i < res.length; i++) {\n res[i] = tokenList.get(i);\n }\n return res\n};\nStringUtil.toString = function toString () {\n if (arguments.length === 1) {\n var d = arguments[0];\n return StringUtil.SIMPLE_ORDINATE_FORMAT.format(d)\n }\n};\nStringUtil.spaces = function spaces (n) {\n return StringUtil.chars(' ', n)\n};\nstaticAccessors$15.NEWLINE.get = function () { return System.getProperty('line.separator') };\nstaticAccessors$15.SIMPLE_ORDINATE_FORMAT.get = function () { return new DecimalFormat('0.#') };\n\nObject.defineProperties( StringUtil, staticAccessors$15 );\n\nvar CoordinateSequences = function CoordinateSequences () {};\n\nCoordinateSequences.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nCoordinateSequences.prototype.getClass = function getClass () {\n return CoordinateSequences\n};\nCoordinateSequences.copyCoord = function copyCoord (src, srcPos, dest, destPos) {\n var minDim = Math.min(src.getDimension(), dest.getDimension());\n for (var dim = 0; dim < minDim; dim++) {\n dest.setOrdinate(destPos, dim, src.getOrdinate(srcPos, dim));\n }\n};\nCoordinateSequences.isRing = function isRing (seq) {\n var n = seq.size();\n if (n === 0) { return true }\n if (n <= 3) { return false }\n return seq.getOrdinate(0, CoordinateSequence.X) === seq.getOrdinate(n - 1, CoordinateSequence.X) && seq.getOrdinate(0, CoordinateSequence.Y) === seq.getOrdinate(n - 1, CoordinateSequence.Y)\n};\nCoordinateSequences.isEqual = function isEqual (cs1, cs2) {\n var cs1Size = cs1.size();\n var cs2Size = cs2.size();\n if (cs1Size !== cs2Size) { return false }\n var dim = Math.min(cs1.getDimension(), cs2.getDimension());\n for (var i = 0; i < cs1Size; i++) {\n for (var d = 0; d < dim; d++) {\n var v1 = cs1.getOrdinate(i, d);\n var v2 = cs2.getOrdinate(i, d);\n if (cs1.getOrdinate(i, d) === cs2.getOrdinate(i, d)) { continue }\n if (Double.isNaN(v1) && Double.isNaN(v2)) { continue }\n return false\n }\n }\n return true\n};\nCoordinateSequences.extend = function extend (fact, seq, size) {\n var newseq = fact.create(size, seq.getDimension());\n var n = seq.size();\n CoordinateSequences.copy(seq, 0, newseq, 0, n);\n if (n > 0) {\n for (var i = n; i < size; i++) { CoordinateSequences.copy(seq, n - 1, newseq, i, 1); }\n }\n return newseq\n};\nCoordinateSequences.reverse = function reverse (seq) {\n var last = seq.size() - 1;\n var mid = Math.trunc(last / 2);\n for (var i = 0; i <= mid; i++) {\n CoordinateSequences.swap(seq, i, last - i);\n }\n};\nCoordinateSequences.swap = function swap (seq, i, j) {\n if (i === j) { return null }\n for (var dim = 0; dim < seq.getDimension(); dim++) {\n var tmp = seq.getOrdinate(i, dim);\n seq.setOrdinate(i, dim, seq.getOrdinate(j, dim));\n seq.setOrdinate(j, dim, tmp);\n }\n};\nCoordinateSequences.copy = function copy (src, srcPos, dest, destPos, length) {\n for (var i = 0; i < length; i++) {\n CoordinateSequences.copyCoord(src, srcPos + i, dest, destPos + i);\n }\n};\nCoordinateSequences.toString = function toString () {\n if (arguments.length === 1) {\n var cs = arguments[0];\n var size = cs.size();\n if (size === 0) { return '()' }\n var dim = cs.getDimension();\n var buf = new StringBuffer();\n buf.append('(');\n for (var i = 0; i < size; i++) {\n if (i > 0) { buf.append(' '); }\n for (var d = 0; d < dim; d++) {\n if (d > 0) { buf.append(','); }\n buf.append(StringUtil.toString(cs.getOrdinate(i, d)));\n }\n }\n buf.append(')');\n return buf.toString()\n }\n};\nCoordinateSequences.ensureValidRing = function ensureValidRing (fact, seq) {\n var n = seq.size();\n if (n === 0) { return seq }\n if (n <= 3) { return CoordinateSequences.createClosedRing(fact, seq, 4) }\n var isClosed = seq.getOrdinate(0, CoordinateSequence.X) === seq.getOrdinate(n - 1, CoordinateSequence.X) && seq.getOrdinate(0, CoordinateSequence.Y) === seq.getOrdinate(n - 1, CoordinateSequence.Y);\n if (isClosed) { return seq }\n return CoordinateSequences.createClosedRing(fact, seq, n + 1)\n};\nCoordinateSequences.createClosedRing = function createClosedRing (fact, seq, size) {\n var newseq = fact.create(size, seq.getDimension());\n var n = seq.size();\n CoordinateSequences.copy(seq, 0, newseq, 0, n);\n for (var i = n; i < size; i++) { CoordinateSequences.copy(seq, 0, newseq, i, 1); }\n return newseq\n};\n\nvar LineString = (function (Geometry$$1) {\n function LineString (points, factory) {\n Geometry$$1.call(this, factory);\n this._points = null;\n this.init(points);\n }\n\n if ( Geometry$$1 ) LineString.__proto__ = Geometry$$1;\n LineString.prototype = Object.create( Geometry$$1 && Geometry$$1.prototype );\n LineString.prototype.constructor = LineString;\n\n var staticAccessors = { serialVersionUID: { configurable: true } };\n LineString.prototype.computeEnvelopeInternal = function computeEnvelopeInternal () {\n if (this.isEmpty()) {\n return new Envelope()\n }\n return this._points.expandEnvelope(new Envelope())\n };\n LineString.prototype.isRing = function isRing () {\n return this.isClosed() && this.isSimple()\n };\n LineString.prototype.getSortIndex = function getSortIndex () {\n return Geometry$$1.SORTINDEX_LINESTRING\n };\n LineString.prototype.getCoordinates = function getCoordinates () {\n return this._points.toCoordinateArray()\n };\n LineString.prototype.equalsExact = function equalsExact () {\n var this$1 = this;\n\n if (arguments.length === 2) {\n var other = arguments[0];\n var tolerance = arguments[1];\n if (!this.isEquivalentClass(other)) {\n return false\n }\n var otherLineString = other;\n if (this._points.size() !== otherLineString._points.size()) {\n return false\n }\n for (var i = 0; i < this._points.size(); i++) {\n if (!this$1.equal(this$1._points.getCoordinate(i), otherLineString._points.getCoordinate(i), tolerance)) {\n return false\n }\n }\n return true\n } else { return Geometry$$1.prototype.equalsExact.apply(this, arguments) }\n };\n LineString.prototype.normalize = function normalize () {\n var this$1 = this;\n\n for (var i = 0; i < Math.trunc(this._points.size() / 2); i++) {\n var j = this$1._points.size() - 1 - i;\n if (!this$1._points.getCoordinate(i).equals(this$1._points.getCoordinate(j))) {\n if (this$1._points.getCoordinate(i).compareTo(this$1._points.getCoordinate(j)) > 0) {\n CoordinateSequences.reverse(this$1._points);\n }\n return null\n }\n }\n };\n LineString.prototype.getCoordinate = function getCoordinate () {\n if (this.isEmpty()) { return null }\n return this._points.getCoordinate(0)\n };\n LineString.prototype.getBoundaryDimension = function getBoundaryDimension () {\n if (this.isClosed()) {\n return Dimension.FALSE\n }\n return 0\n };\n LineString.prototype.isClosed = function isClosed () {\n if (this.isEmpty()) {\n return false\n }\n return this.getCoordinateN(0).equals2D(this.getCoordinateN(this.getNumPoints() - 1))\n };\n LineString.prototype.getEndPoint = function getEndPoint () {\n if (this.isEmpty()) {\n return null\n }\n return this.getPointN(this.getNumPoints() - 1)\n };\n LineString.prototype.getDimension = function getDimension () {\n return 1\n };\n LineString.prototype.getLength = function getLength () {\n return CGAlgorithms.computeLength(this._points)\n };\n LineString.prototype.getNumPoints = function getNumPoints () {\n return this._points.size()\n };\n LineString.prototype.reverse = function reverse () {\n var seq = this._points.copy();\n CoordinateSequences.reverse(seq);\n var revLine = this.getFactory().createLineString(seq);\n return revLine\n };\n LineString.prototype.compareToSameClass = function compareToSameClass () {\n var this$1 = this;\n\n if (arguments.length === 1) {\n var o = arguments[0];\n var line = o;\n var i = 0;\n var j = 0;\n while (i < this._points.size() && j < line._points.size()) {\n var comparison = this$1._points.getCoordinate(i).compareTo(line._points.getCoordinate(j));\n if (comparison !== 0) {\n return comparison\n }\n i++;\n j++;\n }\n if (i < this._points.size()) {\n return 1\n }\n if (j < line._points.size()) {\n return -1\n }\n return 0\n } else if (arguments.length === 2) {\n var o$1 = arguments[0];\n var comp = arguments[1];\n var line$1 = o$1;\n return comp.compare(this._points, line$1._points)\n }\n };\n LineString.prototype.apply = function apply () {\n var this$1 = this;\n\n if (hasInterface(arguments[0], CoordinateFilter)) {\n var filter = arguments[0];\n for (var i = 0; i < this._points.size(); i++) {\n filter.filter(this$1._points.getCoordinate(i));\n }\n } else if (hasInterface(arguments[0], CoordinateSequenceFilter)) {\n var filter$1 = arguments[0];\n if (this._points.size() === 0) { return null }\n for (var i$1 = 0; i$1 < this._points.size(); i$1++) {\n filter$1.filter(this$1._points, i$1);\n if (filter$1.isDone()) { break }\n }\n if (filter$1.isGeometryChanged()) { this.geometryChanged(); }\n } else if (hasInterface(arguments[0], GeometryFilter)) {\n var filter$2 = arguments[0];\n filter$2.filter(this);\n } else if (hasInterface(arguments[0], GeometryComponentFilter)) {\n var filter$3 = arguments[0];\n filter$3.filter(this);\n }\n };\n LineString.prototype.getBoundary = function getBoundary () {\n return new BoundaryOp(this).getBoundary()\n };\n LineString.prototype.isEquivalentClass = function isEquivalentClass (other) {\n return other instanceof LineString\n };\n LineString.prototype.clone = function clone () {\n var ls = Geometry$$1.prototype.clone.call(this);\n ls._points = this._points.clone();\n return ls\n };\n LineString.prototype.getCoordinateN = function getCoordinateN (n) {\n return this._points.getCoordinate(n)\n };\n LineString.prototype.getGeometryType = function getGeometryType () {\n return 'LineString'\n };\n LineString.prototype.copy = function copy () {\n return new LineString(this._points.copy(), this._factory)\n };\n LineString.prototype.getCoordinateSequence = function getCoordinateSequence () {\n return this._points\n };\n LineString.prototype.isEmpty = function isEmpty () {\n return this._points.size() === 0\n };\n LineString.prototype.init = function init (points) {\n if (points === null) {\n points = this.getFactory().getCoordinateSequenceFactory().create([]);\n }\n if (points.size() === 1) {\n throw new IllegalArgumentException('Invalid number of points in LineString (found ' + points.size() + ' - must be 0 or >= 2)')\n }\n this._points = points;\n };\n LineString.prototype.isCoordinate = function isCoordinate (pt) {\n var this$1 = this;\n\n for (var i = 0; i < this._points.size(); i++) {\n if (this$1._points.getCoordinate(i).equals(pt)) {\n return true\n }\n }\n return false\n };\n LineString.prototype.getStartPoint = function getStartPoint () {\n if (this.isEmpty()) {\n return null\n }\n return this.getPointN(0)\n };\n LineString.prototype.getPointN = function getPointN (n) {\n return this.getFactory().createPoint(this._points.getCoordinate(n))\n };\n LineString.prototype.interfaces_ = function interfaces_ () {\n return [Lineal]\n };\n LineString.prototype.getClass = function getClass () {\n return LineString\n };\n staticAccessors.serialVersionUID.get = function () { return 3110669828065365560 };\n\n Object.defineProperties( LineString, staticAccessors );\n\n return LineString;\n}(Geometry));\n\nvar Puntal = function Puntal () {};\n\nPuntal.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nPuntal.prototype.getClass = function getClass () {\n return Puntal\n};\n\nvar Point = (function (Geometry$$1) {\n function Point (coordinates, factory) {\n Geometry$$1.call(this, factory);\n this._coordinates = coordinates || null;\n this.init(this._coordinates);\n }\n\n if ( Geometry$$1 ) Point.__proto__ = Geometry$$1;\n Point.prototype = Object.create( Geometry$$1 && Geometry$$1.prototype );\n Point.prototype.constructor = Point;\n\n var staticAccessors = { serialVersionUID: { configurable: true } };\n Point.prototype.computeEnvelopeInternal = function computeEnvelopeInternal () {\n if (this.isEmpty()) {\n return new Envelope()\n }\n var env = new Envelope();\n env.expandToInclude(this._coordinates.getX(0), this._coordinates.getY(0));\n return env\n };\n Point.prototype.getSortIndex = function getSortIndex () {\n return Geometry$$1.SORTINDEX_POINT\n };\n Point.prototype.getCoordinates = function getCoordinates () {\n return this.isEmpty() ? [] : [this.getCoordinate()]\n };\n Point.prototype.equalsExact = function equalsExact () {\n if (arguments.length === 2) {\n var other = arguments[0];\n var tolerance = arguments[1];\n if (!this.isEquivalentClass(other)) {\n return false\n }\n if (this.isEmpty() && other.isEmpty()) {\n return true\n }\n if (this.isEmpty() !== other.isEmpty()) {\n return false\n }\n return this.equal(other.getCoordinate(), this.getCoordinate(), tolerance)\n } else { return Geometry$$1.prototype.equalsExact.apply(this, arguments) }\n };\n Point.prototype.normalize = function normalize () {};\n Point.prototype.getCoordinate = function getCoordinate () {\n return this._coordinates.size() !== 0 ? this._coordinates.getCoordinate(0) : null\n };\n Point.prototype.getBoundaryDimension = function getBoundaryDimension () {\n return Dimension.FALSE\n };\n Point.prototype.getDimension = function getDimension () {\n return 0\n };\n Point.prototype.getNumPoints = function getNumPoints () {\n return this.isEmpty() ? 0 : 1\n };\n Point.prototype.reverse = function reverse () {\n return this.copy()\n };\n Point.prototype.getX = function getX () {\n if (this.getCoordinate() === null) {\n throw new Error('getX called on empty Point')\n }\n return this.getCoordinate().x\n };\n Point.prototype.compareToSameClass = function compareToSameClass () {\n if (arguments.length === 1) {\n var other = arguments[0];\n var point$1 = other;\n return this.getCoordinate().compareTo(point$1.getCoordinate())\n } else if (arguments.length === 2) {\n var other$1 = arguments[0];\n var comp = arguments[1];\n var point = other$1;\n return comp.compare(this._coordinates, point._coordinates)\n }\n };\n Point.prototype.apply = function apply () {\n if (hasInterface(arguments[0], CoordinateFilter)) {\n var filter = arguments[0];\n if (this.isEmpty()) {\n return null\n }\n filter.filter(this.getCoordinate());\n } else if (hasInterface(arguments[0], CoordinateSequenceFilter)) {\n var filter$1 = arguments[0];\n if (this.isEmpty()) { return null }\n filter$1.filter(this._coordinates, 0);\n if (filter$1.isGeometryChanged()) { this.geometryChanged(); }\n } else if (hasInterface(arguments[0], GeometryFilter)) {\n var filter$2 = arguments[0];\n filter$2.filter(this);\n } else if (hasInterface(arguments[0], GeometryComponentFilter)) {\n var filter$3 = arguments[0];\n filter$3.filter(this);\n }\n };\n Point.prototype.getBoundary = function getBoundary () {\n return this.getFactory().createGeometryCollection(null)\n };\n Point.prototype.clone = function clone () {\n var p = Geometry$$1.prototype.clone.call(this);\n p._coordinates = this._coordinates.clone();\n return p\n };\n Point.prototype.getGeometryType = function getGeometryType () {\n return 'Point'\n };\n Point.prototype.copy = function copy () {\n return new Point(this._coordinates.copy(), this._factory)\n };\n Point.prototype.getCoordinateSequence = function getCoordinateSequence () {\n return this._coordinates\n };\n Point.prototype.getY = function getY () {\n if (this.getCoordinate() === null) {\n throw new Error('getY called on empty Point')\n }\n return this.getCoordinate().y\n };\n Point.prototype.isEmpty = function isEmpty () {\n return this._coordinates.size() === 0\n };\n Point.prototype.init = function init (coordinates) {\n if (coordinates === null) {\n coordinates = this.getFactory().getCoordinateSequenceFactory().create([]);\n }\n Assert.isTrue(coordinates.size() <= 1);\n this._coordinates = coordinates;\n };\n Point.prototype.isSimple = function isSimple () {\n return true\n };\n Point.prototype.interfaces_ = function interfaces_ () {\n return [Puntal]\n };\n Point.prototype.getClass = function getClass () {\n return Point\n };\n staticAccessors.serialVersionUID.get = function () { return 4902022702746614570 };\n\n Object.defineProperties( Point, staticAccessors );\n\n return Point;\n}(Geometry));\n\nvar Polygonal = function Polygonal () {};\n\nPolygonal.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nPolygonal.prototype.getClass = function getClass () {\n return Polygonal\n};\n\nvar Polygon = (function (Geometry$$1) {\n function Polygon (shell, holes, factory) {\n Geometry$$1.call(this, factory);\n this._shell = null;\n this._holes = null;\n if (shell === null) {\n shell = this.getFactory().createLinearRing();\n }\n if (holes === null) {\n holes = [];\n }\n if (Geometry$$1.hasNullElements(holes)) {\n throw new IllegalArgumentException('holes must not contain null elements')\n }\n if (shell.isEmpty() && Geometry$$1.hasNonEmptyElements(holes)) {\n throw new IllegalArgumentException('shell is empty but holes are not')\n }\n this._shell = shell;\n this._holes = holes;\n }\n\n if ( Geometry$$1 ) Polygon.__proto__ = Geometry$$1;\n Polygon.prototype = Object.create( Geometry$$1 && Geometry$$1.prototype );\n Polygon.prototype.constructor = Polygon;\n\n var staticAccessors = { serialVersionUID: { configurable: true } };\n Polygon.prototype.computeEnvelopeInternal = function computeEnvelopeInternal () {\n return this._shell.getEnvelopeInternal()\n };\n Polygon.prototype.getSortIndex = function getSortIndex () {\n return Geometry$$1.SORTINDEX_POLYGON\n };\n Polygon.prototype.getCoordinates = function getCoordinates () {\n var this$1 = this;\n\n if (this.isEmpty()) {\n return []\n }\n var coordinates = new Array(this.getNumPoints()).fill(null);\n var k = -1;\n var shellCoordinates = this._shell.getCoordinates();\n for (var x = 0; x < shellCoordinates.length; x++) {\n k++;\n coordinates[k] = shellCoordinates[x];\n }\n for (var i = 0; i < this._holes.length; i++) {\n var childCoordinates = this$1._holes[i].getCoordinates();\n for (var j = 0; j < childCoordinates.length; j++) {\n k++;\n coordinates[k] = childCoordinates[j];\n }\n }\n return coordinates\n };\n Polygon.prototype.getArea = function getArea () {\n var this$1 = this;\n\n var area = 0.0;\n area += Math.abs(CGAlgorithms.signedArea(this._shell.getCoordinateSequence()));\n for (var i = 0; i < this._holes.length; i++) {\n area -= Math.abs(CGAlgorithms.signedArea(this$1._holes[i].getCoordinateSequence()));\n }\n return area\n };\n Polygon.prototype.isRectangle = function isRectangle () {\n if (this.getNumInteriorRing() !== 0) { return false }\n if (this._shell === null) { return false }\n if (this._shell.getNumPoints() !== 5) { return false }\n var seq = this._shell.getCoordinateSequence();\n var env = this.getEnvelopeInternal();\n for (var i = 0; i < 5; i++) {\n var x = seq.getX(i);\n if (!(x === env.getMinX() || x === env.getMaxX())) { return false }\n var y = seq.getY(i);\n if (!(y === env.getMinY() || y === env.getMaxY())) { return false }\n }\n var prevX = seq.getX(0);\n var prevY = seq.getY(0);\n for (var i$1 = 1; i$1 <= 4; i$1++) {\n var x$1 = seq.getX(i$1);\n var y$1 = seq.getY(i$1);\n var xChanged = x$1 !== prevX;\n var yChanged = y$1 !== prevY;\n if (xChanged === yChanged) { return false }\n prevX = x$1;\n prevY = y$1;\n }\n return true\n };\n Polygon.prototype.equalsExact = function equalsExact () {\n var this$1 = this;\n\n if (arguments.length === 2) {\n var other = arguments[0];\n var tolerance = arguments[1];\n if (!this.isEquivalentClass(other)) {\n return false\n }\n var otherPolygon = other;\n var thisShell = this._shell;\n var otherPolygonShell = otherPolygon._shell;\n if (!thisShell.equalsExact(otherPolygonShell, tolerance)) {\n return false\n }\n if (this._holes.length !== otherPolygon._holes.length) {\n return false\n }\n for (var i = 0; i < this._holes.length; i++) {\n if (!this$1._holes[i].equalsExact(otherPolygon._holes[i], tolerance)) {\n return false\n }\n }\n return true\n } else { return Geometry$$1.prototype.equalsExact.apply(this, arguments) }\n };\n Polygon.prototype.normalize = function normalize () {\n var this$1 = this;\n\n if (arguments.length === 0) {\n this.normalize(this._shell, true);\n for (var i = 0; i < this._holes.length; i++) {\n this$1.normalize(this$1._holes[i], false);\n }\n Arrays.sort(this._holes);\n } else if (arguments.length === 2) {\n var ring = arguments[0];\n var clockwise = arguments[1];\n if (ring.isEmpty()) {\n return null\n }\n var uniqueCoordinates = new Array(ring.getCoordinates().length - 1).fill(null);\n System.arraycopy(ring.getCoordinates(), 0, uniqueCoordinates, 0, uniqueCoordinates.length);\n var minCoordinate = CoordinateArrays.minCoordinate(ring.getCoordinates());\n CoordinateArrays.scroll(uniqueCoordinates, minCoordinate);\n System.arraycopy(uniqueCoordinates, 0, ring.getCoordinates(), 0, uniqueCoordinates.length);\n ring.getCoordinates()[uniqueCoordinates.length] = uniqueCoordinates[0];\n if (CGAlgorithms.isCCW(ring.getCoordinates()) === clockwise) {\n CoordinateArrays.reverse(ring.getCoordinates());\n }\n }\n };\n Polygon.prototype.getCoordinate = function getCoordinate () {\n return this._shell.getCoordinate()\n };\n Polygon.prototype.getNumInteriorRing = function getNumInteriorRing () {\n return this._holes.length\n };\n Polygon.prototype.getBoundaryDimension = function getBoundaryDimension () {\n return 1\n };\n Polygon.prototype.getDimension = function getDimension () {\n return 2\n };\n Polygon.prototype.getLength = function getLength () {\n var this$1 = this;\n\n var len = 0.0;\n len += this._shell.getLength();\n for (var i = 0; i < this._holes.length; i++) {\n len += this$1._holes[i].getLength();\n }\n return len\n };\n Polygon.prototype.getNumPoints = function getNumPoints () {\n var this$1 = this;\n\n var numPoints = this._shell.getNumPoints();\n for (var i = 0; i < this._holes.length; i++) {\n numPoints += this$1._holes[i].getNumPoints();\n }\n return numPoints\n };\n Polygon.prototype.reverse = function reverse () {\n var this$1 = this;\n\n var poly = this.copy();\n poly._shell = this._shell.copy().reverse();\n poly._holes = new Array(this._holes.length).fill(null);\n for (var i = 0; i < this._holes.length; i++) {\n poly._holes[i] = this$1._holes[i].copy().reverse();\n }\n return poly\n };\n Polygon.prototype.convexHull = function convexHull () {\n return this.getExteriorRing().convexHull()\n };\n Polygon.prototype.compareToSameClass = function compareToSameClass () {\n var this$1 = this;\n\n if (arguments.length === 1) {\n var o = arguments[0];\n var thisShell = this._shell;\n var otherShell = o._shell;\n return thisShell.compareToSameClass(otherShell)\n } else if (arguments.length === 2) {\n var o$1 = arguments[0];\n var comp = arguments[1];\n var poly = o$1;\n var thisShell$1 = this._shell;\n var otherShell$1 = poly._shell;\n var shellComp = thisShell$1.compareToSameClass(otherShell$1, comp);\n if (shellComp !== 0) { return shellComp }\n var nHole1 = this.getNumInteriorRing();\n var nHole2 = poly.getNumInteriorRing();\n var i = 0;\n while (i < nHole1 && i < nHole2) {\n var thisHole = this$1.getInteriorRingN(i);\n var otherHole = poly.getInteriorRingN(i);\n var holeComp = thisHole.compareToSameClass(otherHole, comp);\n if (holeComp !== 0) { return holeComp }\n i++;\n }\n if (i < nHole1) { return 1 }\n if (i < nHole2) { return -1 }\n return 0\n }\n };\n Polygon.prototype.apply = function apply (filter) {\n var this$1 = this;\n\n if (hasInterface(filter, CoordinateFilter)) {\n this._shell.apply(filter);\n for (var i$1 = 0; i$1 < this._holes.length; i$1++) {\n this$1._holes[i$1].apply(filter);\n }\n } else if (hasInterface(filter, CoordinateSequenceFilter)) {\n this._shell.apply(filter);\n if (!filter.isDone()) {\n for (var i$2 = 0; i$2 < this._holes.length; i$2++) {\n this$1._holes[i$2].apply(filter);\n if (filter.isDone()) { break }\n }\n }\n if (filter.isGeometryChanged()) { this.geometryChanged(); }\n } else if (hasInterface(filter, GeometryFilter)) {\n filter.filter(this);\n } else if (hasInterface(filter, GeometryComponentFilter)) {\n filter.filter(this);\n this._shell.apply(filter);\n for (var i = 0; i < this._holes.length; i++) {\n this$1._holes[i].apply(filter);\n }\n }\n };\n Polygon.prototype.getBoundary = function getBoundary () {\n var this$1 = this;\n\n if (this.isEmpty()) {\n return this.getFactory().createMultiLineString()\n }\n var rings = new Array(this._holes.length + 1).fill(null);\n rings[0] = this._shell;\n for (var i = 0; i < this._holes.length; i++) {\n rings[i + 1] = this$1._holes[i];\n }\n if (rings.length <= 1) { return this.getFactory().createLinearRing(rings[0].getCoordinateSequence()) }\n return this.getFactory().createMultiLineString(rings)\n };\n Polygon.prototype.clone = function clone () {\n var this$1 = this;\n\n var poly = Geometry$$1.prototype.clone.call(this);\n poly._shell = this._shell.clone();\n poly._holes = new Array(this._holes.length).fill(null);\n for (var i = 0; i < this._holes.length; i++) {\n poly._holes[i] = this$1._holes[i].clone();\n }\n return poly\n };\n Polygon.prototype.getGeometryType = function getGeometryType () {\n return 'Polygon'\n };\n Polygon.prototype.copy = function copy () {\n var this$1 = this;\n\n var shell = this._shell.copy();\n var holes = new Array(this._holes.length).fill(null);\n for (var i = 0; i < holes.length; i++) {\n holes[i] = this$1._holes[i].copy();\n }\n return new Polygon(shell, holes, this._factory)\n };\n Polygon.prototype.getExteriorRing = function getExteriorRing () {\n return this._shell\n };\n Polygon.prototype.isEmpty = function isEmpty () {\n return this._shell.isEmpty()\n };\n Polygon.prototype.getInteriorRingN = function getInteriorRingN (n) {\n return this._holes[n]\n };\n Polygon.prototype.interfaces_ = function interfaces_ () {\n return [Polygonal]\n };\n Polygon.prototype.getClass = function getClass () {\n return Polygon\n };\n staticAccessors.serialVersionUID.get = function () { return -3494792200821764533 };\n\n Object.defineProperties( Polygon, staticAccessors );\n\n return Polygon;\n}(Geometry));\n\nvar MultiPoint = (function (GeometryCollection$$1) {\n function MultiPoint () {\n GeometryCollection$$1.apply(this, arguments);\n }\n\n if ( GeometryCollection$$1 ) MultiPoint.__proto__ = GeometryCollection$$1;\n MultiPoint.prototype = Object.create( GeometryCollection$$1 && GeometryCollection$$1.prototype );\n MultiPoint.prototype.constructor = MultiPoint;\n\n var staticAccessors = { serialVersionUID: { configurable: true } };\n\n MultiPoint.prototype.getSortIndex = function getSortIndex () {\n return Geometry.SORTINDEX_MULTIPOINT\n };\n MultiPoint.prototype.isValid = function isValid () {\n return true\n };\n MultiPoint.prototype.equalsExact = function equalsExact () {\n if (arguments.length === 2) {\n var other = arguments[0];\n var tolerance = arguments[1];\n if (!this.isEquivalentClass(other)) {\n return false\n }\n return GeometryCollection$$1.prototype.equalsExact.call(this, other, tolerance)\n } else { return GeometryCollection$$1.prototype.equalsExact.apply(this, arguments) }\n };\n MultiPoint.prototype.getCoordinate = function getCoordinate () {\n if (arguments.length === 1) {\n var n = arguments[0];\n return this._geometries[n].getCoordinate()\n } else { return GeometryCollection$$1.prototype.getCoordinate.apply(this, arguments) }\n };\n MultiPoint.prototype.getBoundaryDimension = function getBoundaryDimension () {\n return Dimension.FALSE\n };\n MultiPoint.prototype.getDimension = function getDimension () {\n return 0\n };\n MultiPoint.prototype.getBoundary = function getBoundary () {\n return this.getFactory().createGeometryCollection(null)\n };\n MultiPoint.prototype.getGeometryType = function getGeometryType () {\n return 'MultiPoint'\n };\n MultiPoint.prototype.copy = function copy () {\n var this$1 = this;\n\n var points = new Array(this._geometries.length).fill(null);\n for (var i = 0; i < points.length; i++) {\n points[i] = this$1._geometries[i].copy();\n }\n return new MultiPoint(points, this._factory)\n };\n MultiPoint.prototype.interfaces_ = function interfaces_ () {\n return [Puntal]\n };\n MultiPoint.prototype.getClass = function getClass () {\n return MultiPoint\n };\n staticAccessors.serialVersionUID.get = function () { return -8048474874175355449 };\n\n Object.defineProperties( MultiPoint, staticAccessors );\n\n return MultiPoint;\n}(GeometryCollection));\n\nvar LinearRing = (function (LineString$$1) {\n function LinearRing (points, factory) {\n if (points instanceof Coordinate && factory instanceof GeometryFactory) {\n points = factory.getCoordinateSequenceFactory().create(points);\n }\n LineString$$1.call(this, points, factory);\n this.validateConstruction();\n }\n\n if ( LineString$$1 ) LinearRing.__proto__ = LineString$$1;\n LinearRing.prototype = Object.create( LineString$$1 && LineString$$1.prototype );\n LinearRing.prototype.constructor = LinearRing;\n\n var staticAccessors = { MINIMUM_VALID_SIZE: { configurable: true },serialVersionUID: { configurable: true } };\n LinearRing.prototype.getSortIndex = function getSortIndex () {\n return Geometry.SORTINDEX_LINEARRING\n };\n LinearRing.prototype.getBoundaryDimension = function getBoundaryDimension () {\n return Dimension.FALSE\n };\n LinearRing.prototype.isClosed = function isClosed () {\n if (this.isEmpty()) {\n return true\n }\n return LineString$$1.prototype.isClosed.call(this)\n };\n LinearRing.prototype.reverse = function reverse () {\n var seq = this._points.copy();\n CoordinateSequences.reverse(seq);\n var rev = this.getFactory().createLinearRing(seq);\n return rev\n };\n LinearRing.prototype.validateConstruction = function validateConstruction () {\n if (!this.isEmpty() && !LineString$$1.prototype.isClosed.call(this)) {\n throw new IllegalArgumentException('Points of LinearRing do not form a closed linestring')\n }\n if (this.getCoordinateSequence().size() >= 1 && this.getCoordinateSequence().size() < LinearRing.MINIMUM_VALID_SIZE) {\n throw new IllegalArgumentException('Invalid number of points in LinearRing (found ' + this.getCoordinateSequence().size() + ' - must be 0 or >= 4)')\n }\n };\n LinearRing.prototype.getGeometryType = function getGeometryType () {\n return 'LinearRing'\n };\n LinearRing.prototype.copy = function copy () {\n return new LinearRing(this._points.copy(), this._factory)\n };\n LinearRing.prototype.interfaces_ = function interfaces_ () {\n return []\n };\n LinearRing.prototype.getClass = function getClass () {\n return LinearRing\n };\n staticAccessors.MINIMUM_VALID_SIZE.get = function () { return 4 };\n staticAccessors.serialVersionUID.get = function () { return -4261142084085851829 };\n\n Object.defineProperties( LinearRing, staticAccessors );\n\n return LinearRing;\n}(LineString));\n\nvar MultiPolygon = (function (GeometryCollection$$1) {\n function MultiPolygon () {\n GeometryCollection$$1.apply(this, arguments);\n }\n\n if ( GeometryCollection$$1 ) MultiPolygon.__proto__ = GeometryCollection$$1;\n MultiPolygon.prototype = Object.create( GeometryCollection$$1 && GeometryCollection$$1.prototype );\n MultiPolygon.prototype.constructor = MultiPolygon;\n\n var staticAccessors = { serialVersionUID: { configurable: true } };\n\n MultiPolygon.prototype.getSortIndex = function getSortIndex () {\n return Geometry.SORTINDEX_MULTIPOLYGON\n };\n MultiPolygon.prototype.equalsExact = function equalsExact () {\n if (arguments.length === 2) {\n var other = arguments[0];\n var tolerance = arguments[1];\n if (!this.isEquivalentClass(other)) {\n return false\n }\n return GeometryCollection$$1.prototype.equalsExact.call(this, other, tolerance)\n } else { return GeometryCollection$$1.prototype.equalsExact.apply(this, arguments) }\n };\n MultiPolygon.prototype.getBoundaryDimension = function getBoundaryDimension () {\n return 1\n };\n MultiPolygon.prototype.getDimension = function getDimension () {\n return 2\n };\n MultiPolygon.prototype.reverse = function reverse () {\n var this$1 = this;\n\n var n = this._geometries.length;\n var revGeoms = new Array(n).fill(null);\n for (var i = 0; i < this._geometries.length; i++) {\n revGeoms[i] = this$1._geometries[i].reverse();\n }\n return this.getFactory().createMultiPolygon(revGeoms)\n };\n MultiPolygon.prototype.getBoundary = function getBoundary () {\n var this$1 = this;\n\n if (this.isEmpty()) {\n return this.getFactory().createMultiLineString()\n }\n var allRings = new ArrayList();\n for (var i = 0; i < this._geometries.length; i++) {\n var polygon = this$1._geometries[i];\n var rings = polygon.getBoundary();\n for (var j = 0; j < rings.getNumGeometries(); j++) {\n allRings.add(rings.getGeometryN(j));\n }\n }\n var allRingsArray = new Array(allRings.size()).fill(null);\n return this.getFactory().createMultiLineString(allRings.toArray(allRingsArray))\n };\n MultiPolygon.prototype.getGeometryType = function getGeometryType () {\n return 'MultiPolygon'\n };\n MultiPolygon.prototype.copy = function copy () {\n var this$1 = this;\n\n var polygons = new Array(this._geometries.length).fill(null);\n for (var i = 0; i < polygons.length; i++) {\n polygons[i] = this$1._geometries[i].copy();\n }\n return new MultiPolygon(polygons, this._factory)\n };\n MultiPolygon.prototype.interfaces_ = function interfaces_ () {\n return [Polygonal]\n };\n MultiPolygon.prototype.getClass = function getClass () {\n return MultiPolygon\n };\n staticAccessors.serialVersionUID.get = function () { return -551033529766975875 };\n\n Object.defineProperties( MultiPolygon, staticAccessors );\n\n return MultiPolygon;\n}(GeometryCollection));\n\nvar GeometryEditor = function GeometryEditor (factory) {\n this._factory = factory || null;\n this._isUserDataCopied = false;\n};\n\nvar staticAccessors$16 = { NoOpGeometryOperation: { configurable: true },CoordinateOperation: { configurable: true },CoordinateSequenceOperation: { configurable: true } };\nGeometryEditor.prototype.setCopyUserData = function setCopyUserData (isUserDataCopied) {\n this._isUserDataCopied = isUserDataCopied;\n};\nGeometryEditor.prototype.edit = function edit (geometry, operation) {\n if (geometry === null) { return null }\n var result = this.editInternal(geometry, operation);\n if (this._isUserDataCopied) {\n result.setUserData(geometry.getUserData());\n }\n return result\n};\nGeometryEditor.prototype.editInternal = function editInternal (geometry, operation) {\n if (this._factory === null) { this._factory = geometry.getFactory(); }\n if (geometry instanceof GeometryCollection) {\n return this.editGeometryCollection(geometry, operation)\n }\n if (geometry instanceof Polygon) {\n return this.editPolygon(geometry, operation)\n }\n if (geometry instanceof Point) {\n return operation.edit(geometry, this._factory)\n }\n if (geometry instanceof LineString) {\n return operation.edit(geometry, this._factory)\n }\n Assert.shouldNeverReachHere('Unsupported Geometry class: ' + geometry.getClass().getName());\n return null\n};\nGeometryEditor.prototype.editGeometryCollection = function editGeometryCollection (collection, operation) {\n var this$1 = this;\n\n var collectionForType = operation.edit(collection, this._factory);\n var geometries = new ArrayList();\n for (var i = 0; i < collectionForType.getNumGeometries(); i++) {\n var geometry = this$1.edit(collectionForType.getGeometryN(i), operation);\n if (geometry === null || geometry.isEmpty()) {\n continue\n }\n geometries.add(geometry);\n }\n if (collectionForType.getClass() === MultiPoint) {\n return this._factory.createMultiPoint(geometries.toArray([]))\n }\n if (collectionForType.getClass() === MultiLineString) {\n return this._factory.createMultiLineString(geometries.toArray([]))\n }\n if (collectionForType.getClass() === MultiPolygon) {\n return this._factory.createMultiPolygon(geometries.toArray([]))\n }\n return this._factory.createGeometryCollection(geometries.toArray([]))\n};\nGeometryEditor.prototype.editPolygon = function editPolygon (polygon, operation) {\n var this$1 = this;\n\n var newPolygon = operation.edit(polygon, this._factory);\n if (newPolygon === null) { newPolygon = this._factory.createPolygon(null); }\n if (newPolygon.isEmpty()) {\n return newPolygon\n }\n var shell = this.edit(newPolygon.getExteriorRing(), operation);\n if (shell === null || shell.isEmpty()) {\n return this._factory.createPolygon()\n }\n var holes = new ArrayList();\n for (var i = 0; i < newPolygon.getNumInteriorRing(); i++) {\n var hole = this$1.edit(newPolygon.getInteriorRingN(i), operation);\n if (hole === null || hole.isEmpty()) {\n continue\n }\n holes.add(hole);\n }\n return this._factory.createPolygon(shell, holes.toArray([]))\n};\nGeometryEditor.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nGeometryEditor.prototype.getClass = function getClass () {\n return GeometryEditor\n};\nGeometryEditor.GeometryEditorOperation = function GeometryEditorOperation () {};\nstaticAccessors$16.NoOpGeometryOperation.get = function () { return NoOpGeometryOperation };\nstaticAccessors$16.CoordinateOperation.get = function () { return CoordinateOperation };\nstaticAccessors$16.CoordinateSequenceOperation.get = function () { return CoordinateSequenceOperation };\n\nObject.defineProperties( GeometryEditor, staticAccessors$16 );\n\nvar NoOpGeometryOperation = function NoOpGeometryOperation () {};\n\nNoOpGeometryOperation.prototype.edit = function edit (geometry, factory) {\n return geometry\n};\nNoOpGeometryOperation.prototype.interfaces_ = function interfaces_ () {\n return [GeometryEditor.GeometryEditorOperation]\n};\nNoOpGeometryOperation.prototype.getClass = function getClass () {\n return NoOpGeometryOperation\n};\n\nvar CoordinateOperation = function CoordinateOperation () {};\n\nCoordinateOperation.prototype.edit = function edit (geometry, factory) {\n var coords = this.editCoordinates(geometry.getCoordinates(), geometry);\n if (coords === null) { return geometry }\n if (geometry instanceof LinearRing) {\n return factory.createLinearRing(coords)\n }\n if (geometry instanceof LineString) {\n return factory.createLineString(coords)\n }\n if (geometry instanceof Point) {\n if (coords.length > 0) {\n return factory.createPoint(coords[0])\n } else {\n return factory.createPoint()\n }\n }\n return geometry\n};\nCoordinateOperation.prototype.interfaces_ = function interfaces_ () {\n return [GeometryEditor.GeometryEditorOperation]\n};\nCoordinateOperation.prototype.getClass = function getClass () {\n return CoordinateOperation\n};\n\nvar CoordinateSequenceOperation = function CoordinateSequenceOperation () {};\n\nCoordinateSequenceOperation.prototype.edit = function edit (geometry, factory) {\n if (geometry instanceof LinearRing) {\n return factory.createLinearRing(this.edit(geometry.getCoordinateSequence(), geometry))\n }\n if (geometry instanceof LineString) {\n return factory.createLineString(this.edit(geometry.getCoordinateSequence(), geometry))\n }\n if (geometry instanceof Point) {\n return factory.createPoint(this.edit(geometry.getCoordinateSequence(), geometry))\n }\n return geometry\n};\nCoordinateSequenceOperation.prototype.interfaces_ = function interfaces_ () {\n return [GeometryEditor.GeometryEditorOperation]\n};\nCoordinateSequenceOperation.prototype.getClass = function getClass () {\n return CoordinateSequenceOperation\n};\n\nvar CoordinateArraySequence = function CoordinateArraySequence () {\n var this$1 = this;\n\n this._dimension = 3;\n this._coordinates = null;\n if (arguments.length === 1) {\n if (arguments[0] instanceof Array) {\n this._coordinates = arguments[0];\n this._dimension = 3;\n } else if (Number.isInteger(arguments[0])) {\n var size = arguments[0];\n this._coordinates = new Array(size).fill(null);\n for (var i = 0; i < size; i++) {\n this$1._coordinates[i] = new Coordinate();\n }\n } else if (hasInterface(arguments[0], CoordinateSequence)) {\n var coordSeq = arguments[0];\n if (coordSeq === null) {\n this._coordinates = new Array(0).fill(null);\n return null\n }\n this._dimension = coordSeq.getDimension();\n this._coordinates = new Array(coordSeq.size()).fill(null);\n for (var i$1 = 0; i$1 < this._coordinates.length; i$1++) {\n this$1._coordinates[i$1] = coordSeq.getCoordinateCopy(i$1);\n }\n }\n } else if (arguments.length === 2) {\n if (arguments[0] instanceof Array && Number.isInteger(arguments[1])) {\n var coordinates = arguments[0];\n var dimension = arguments[1];\n this._coordinates = coordinates;\n this._dimension = dimension;\n if (coordinates === null) { this._coordinates = new Array(0).fill(null); }\n } else if (Number.isInteger(arguments[0]) && Number.isInteger(arguments[1])) {\n var size$1 = arguments[0];\n var dimension$1 = arguments[1];\n this._coordinates = new Array(size$1).fill(null);\n this._dimension = dimension$1;\n for (var i$2 = 0; i$2 < size$1; i$2++) {\n this$1._coordinates[i$2] = new Coordinate();\n }\n }\n }\n};\n\nvar staticAccessors$18 = { serialVersionUID: { configurable: true } };\nCoordinateArraySequence.prototype.setOrdinate = function setOrdinate (index, ordinateIndex, value) {\n switch (ordinateIndex) {\n case CoordinateSequence.X:\n this._coordinates[index].x = value;\n break\n case CoordinateSequence.Y:\n this._coordinates[index].y = value;\n break\n case CoordinateSequence.Z:\n this._coordinates[index].z = value;\n break\n default:\n throw new IllegalArgumentException('invalid ordinateIndex')\n }\n};\nCoordinateArraySequence.prototype.size = function size () {\n return this._coordinates.length\n};\nCoordinateArraySequence.prototype.getOrdinate = function getOrdinate (index, ordinateIndex) {\n switch (ordinateIndex) {\n case CoordinateSequence.X:\n return this._coordinates[index].x\n case CoordinateSequence.Y:\n return this._coordinates[index].y\n case CoordinateSequence.Z:\n return this._coordinates[index].z\n default:\n }\n return Double.NaN\n};\nCoordinateArraySequence.prototype.getCoordinate = function getCoordinate () {\n if (arguments.length === 1) {\n var i = arguments[0];\n return this._coordinates[i]\n } else if (arguments.length === 2) {\n var index = arguments[0];\n var coord = arguments[1];\n coord.x = this._coordinates[index].x;\n coord.y = this._coordinates[index].y;\n coord.z = this._coordinates[index].z;\n }\n};\nCoordinateArraySequence.prototype.getCoordinateCopy = function getCoordinateCopy (i) {\n return new Coordinate(this._coordinates[i])\n};\nCoordinateArraySequence.prototype.getDimension = function getDimension () {\n return this._dimension\n};\nCoordinateArraySequence.prototype.getX = function getX (index) {\n return this._coordinates[index].x\n};\nCoordinateArraySequence.prototype.clone = function clone () {\n var this$1 = this;\n\n var cloneCoordinates = new Array(this.size()).fill(null);\n for (var i = 0; i < this._coordinates.length; i++) {\n cloneCoordinates[i] = this$1._coordinates[i].clone();\n }\n return new CoordinateArraySequence(cloneCoordinates, this._dimension)\n};\nCoordinateArraySequence.prototype.expandEnvelope = function expandEnvelope (env) {\n var this$1 = this;\n\n for (var i = 0; i < this._coordinates.length; i++) {\n env.expandToInclude(this$1._coordinates[i]);\n }\n return env\n};\nCoordinateArraySequence.prototype.copy = function copy () {\n var this$1 = this;\n\n var cloneCoordinates = new Array(this.size()).fill(null);\n for (var i = 0; i < this._coordinates.length; i++) {\n cloneCoordinates[i] = this$1._coordinates[i].copy();\n }\n return new CoordinateArraySequence(cloneCoordinates, this._dimension)\n};\nCoordinateArraySequence.prototype.toString = function toString () {\n var this$1 = this;\n\n if (this._coordinates.length > 0) {\n var strBuf = new StringBuffer(17 * this._coordinates.length);\n strBuf.append('(');\n strBuf.append(this._coordinates[0]);\n for (var i = 1; i < this._coordinates.length; i++) {\n strBuf.append(', ');\n strBuf.append(this$1._coordinates[i]);\n }\n strBuf.append(')');\n return strBuf.toString()\n } else {\n return '()'\n }\n};\nCoordinateArraySequence.prototype.getY = function getY (index) {\n return this._coordinates[index].y\n};\nCoordinateArraySequence.prototype.toCoordinateArray = function toCoordinateArray () {\n return this._coordinates\n};\nCoordinateArraySequence.prototype.interfaces_ = function interfaces_ () {\n return [CoordinateSequence, Serializable]\n};\nCoordinateArraySequence.prototype.getClass = function getClass () {\n return CoordinateArraySequence\n};\nstaticAccessors$18.serialVersionUID.get = function () { return -915438501601840650 };\n\nObject.defineProperties( CoordinateArraySequence, staticAccessors$18 );\n\nvar CoordinateArraySequenceFactory = function CoordinateArraySequenceFactory () {};\n\nvar staticAccessors$17 = { serialVersionUID: { configurable: true },instanceObject: { configurable: true } };\n\nCoordinateArraySequenceFactory.prototype.readResolve = function readResolve () {\n return CoordinateArraySequenceFactory.instance()\n};\nCoordinateArraySequenceFactory.prototype.create = function create () {\n if (arguments.length === 1) {\n if (arguments[0] instanceof Array) {\n var coordinates = arguments[0];\n return new CoordinateArraySequence(coordinates)\n } else if (hasInterface(arguments[0], CoordinateSequence)) {\n var coordSeq = arguments[0];\n return new CoordinateArraySequence(coordSeq)\n }\n } else if (arguments.length === 2) {\n var size = arguments[0];\n var dimension = arguments[1];\n if (dimension > 3) { dimension = 3; }\n if (dimension < 2) { return new CoordinateArraySequence(size) }\n return new CoordinateArraySequence(size, dimension)\n }\n};\nCoordinateArraySequenceFactory.prototype.interfaces_ = function interfaces_ () {\n return [CoordinateSequenceFactory, Serializable]\n};\nCoordinateArraySequenceFactory.prototype.getClass = function getClass () {\n return CoordinateArraySequenceFactory\n};\nCoordinateArraySequenceFactory.instance = function instance () {\n return CoordinateArraySequenceFactory.instanceObject\n};\n\nstaticAccessors$17.serialVersionUID.get = function () { return -4099577099607551657 };\nstaticAccessors$17.instanceObject.get = function () { return new CoordinateArraySequenceFactory() };\n\nObject.defineProperties( CoordinateArraySequenceFactory, staticAccessors$17 );\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/HashMap.html\n *\n * @extends {javascript.util.Map}\n * @constructor\n * @private\n */\nvar HashMap = (function (MapInterface) {\n function HashMap () {\n MapInterface.call(this);\n this.map_ = new Map();\n }\n\n if ( MapInterface ) HashMap.__proto__ = MapInterface;\n HashMap.prototype = Object.create( MapInterface && MapInterface.prototype );\n HashMap.prototype.constructor = HashMap;\n /**\n * @override\n */\n HashMap.prototype.get = function get (key) {\n return this.map_.get(key) || null\n };\n\n /**\n * @override\n */\n HashMap.prototype.put = function put (key, value) {\n this.map_.set(key, value);\n return value\n };\n\n /**\n * @override\n */\n HashMap.prototype.values = function values () {\n var arrayList = new ArrayList();\n var it = this.map_.values();\n var o = it.next();\n while (!o.done) {\n arrayList.add(o.value);\n o = it.next();\n }\n return arrayList\n };\n\n /**\n * @override\n */\n HashMap.prototype.entrySet = function entrySet () {\n var hashSet = new HashSet();\n this.map_.entries().forEach(function (entry) { return hashSet.add(entry); });\n return hashSet\n };\n\n /**\n * @override\n */\n HashMap.prototype.size = function size () {\n return this.map_.size()\n };\n\n return HashMap;\n}(Map$1));\n\nvar PrecisionModel = function PrecisionModel () {\n this._modelType = null;\n this._scale = null;\n if (arguments.length === 0) {\n this._modelType = PrecisionModel.FLOATING;\n } else if (arguments.length === 1) {\n if (arguments[0] instanceof Type) {\n var modelType = arguments[0];\n this._modelType = modelType;\n if (modelType === PrecisionModel.FIXED) {\n this.setScale(1.0);\n }\n } else if (typeof arguments[0] === 'number') {\n var scale = arguments[0];\n this._modelType = PrecisionModel.FIXED;\n this.setScale(scale);\n } else if (arguments[0] instanceof PrecisionModel) {\n var pm = arguments[0];\n this._modelType = pm._modelType;\n this._scale = pm._scale;\n }\n }\n};\n\nvar staticAccessors$19 = { serialVersionUID: { configurable: true },maximumPreciseValue: { configurable: true } };\nPrecisionModel.prototype.equals = function equals (other) {\n if (!(other instanceof PrecisionModel)) {\n return false\n }\n var otherPrecisionModel = other;\n return this._modelType === otherPrecisionModel._modelType && this._scale === otherPrecisionModel._scale\n};\nPrecisionModel.prototype.compareTo = function compareTo (o) {\n var other = o;\n var sigDigits = this.getMaximumSignificantDigits();\n var otherSigDigits = other.getMaximumSignificantDigits();\n return new Integer(sigDigits).compareTo(new Integer(otherSigDigits))\n};\nPrecisionModel.prototype.getScale = function getScale () {\n return this._scale\n};\nPrecisionModel.prototype.isFloating = function isFloating () {\n return this._modelType === PrecisionModel.FLOATING || this._modelType === PrecisionModel.FLOATING_SINGLE\n};\nPrecisionModel.prototype.getType = function getType () {\n return this._modelType\n};\nPrecisionModel.prototype.toString = function toString () {\n var description = 'UNKNOWN';\n if (this._modelType === PrecisionModel.FLOATING) {\n description = 'Floating';\n } else if (this._modelType === PrecisionModel.FLOATING_SINGLE) {\n description = 'Floating-Single';\n } else if (this._modelType === PrecisionModel.FIXED) {\n description = 'Fixed (Scale=' + this.getScale() + ')';\n }\n return description\n};\nPrecisionModel.prototype.makePrecise = function makePrecise () {\n if (typeof arguments[0] === 'number') {\n var val = arguments[0];\n if (Double.isNaN(val)) { return val }\n if (this._modelType === PrecisionModel.FLOATING_SINGLE) {\n var floatSingleVal = val;\n return floatSingleVal\n }\n if (this._modelType === PrecisionModel.FIXED) {\n return Math.round(val * this._scale) / this._scale\n }\n return val\n } else if (arguments[0] instanceof Coordinate) {\n var coord = arguments[0];\n if (this._modelType === PrecisionModel.FLOATING) { return null }\n coord.x = this.makePrecise(coord.x);\n coord.y = this.makePrecise(coord.y);\n }\n};\nPrecisionModel.prototype.getMaximumSignificantDigits = function getMaximumSignificantDigits () {\n var maxSigDigits = 16;\n if (this._modelType === PrecisionModel.FLOATING) {\n maxSigDigits = 16;\n } else if (this._modelType === PrecisionModel.FLOATING_SINGLE) {\n maxSigDigits = 6;\n } else if (this._modelType === PrecisionModel.FIXED) {\n maxSigDigits = 1 + Math.trunc(Math.ceil(Math.log(this.getScale()) / Math.log(10)));\n }\n return maxSigDigits\n};\nPrecisionModel.prototype.setScale = function setScale (scale) {\n this._scale = Math.abs(scale);\n};\nPrecisionModel.prototype.interfaces_ = function interfaces_ () {\n return [Serializable, Comparable]\n};\nPrecisionModel.prototype.getClass = function getClass () {\n return PrecisionModel\n};\nPrecisionModel.mostPrecise = function mostPrecise (pm1, pm2) {\n if (pm1.compareTo(pm2) >= 0) { return pm1 }\n return pm2\n};\nstaticAccessors$19.serialVersionUID.get = function () { return 7777263578777803835 };\nstaticAccessors$19.maximumPreciseValue.get = function () { return 9007199254740992.0 };\n\nObject.defineProperties( PrecisionModel, staticAccessors$19 );\n\nvar Type = function Type (name) {\n this._name = name || null;\n Type.nameToTypeMap.put(name, this);\n};\n\nvar staticAccessors$1$1 = { serialVersionUID: { configurable: true },nameToTypeMap: { configurable: true } };\nType.prototype.readResolve = function readResolve () {\n return Type.nameToTypeMap.get(this._name)\n};\nType.prototype.toString = function toString () {\n return this._name\n};\nType.prototype.interfaces_ = function interfaces_ () {\n return [Serializable]\n};\nType.prototype.getClass = function getClass () {\n return Type\n};\nstaticAccessors$1$1.serialVersionUID.get = function () { return -5528602631731589822 };\nstaticAccessors$1$1.nameToTypeMap.get = function () { return new HashMap() };\n\nObject.defineProperties( Type, staticAccessors$1$1 );\n\nPrecisionModel.Type = Type;\nPrecisionModel.FIXED = new Type('FIXED');\nPrecisionModel.FLOATING = new Type('FLOATING');\nPrecisionModel.FLOATING_SINGLE = new Type('FLOATING SINGLE');\n\nvar GeometryFactory = function GeometryFactory () {\n this._precisionModel = new PrecisionModel();\n this._SRID = 0;\n this._coordinateSequenceFactory = GeometryFactory.getDefaultCoordinateSequenceFactory();\n\n if (arguments.length === 0) {\n } else if (arguments.length === 1) {\n if (hasInterface(arguments[0], CoordinateSequenceFactory)) {\n this._coordinateSequenceFactory = arguments[0];\n } else if (arguments[0] instanceof PrecisionModel) {\n this._precisionModel = arguments[0];\n }\n } else if (arguments.length === 2) {\n this._precisionModel = arguments[0];\n this._SRID = arguments[1];\n } else if (arguments.length === 3) {\n this._precisionModel = arguments[0];\n this._SRID = arguments[1];\n this._coordinateSequenceFactory = arguments[2];\n }\n};\n\nvar staticAccessors$2 = { serialVersionUID: { configurable: true } };\nGeometryFactory.prototype.toGeometry = function toGeometry (envelope) {\n if (envelope.isNull()) {\n return this.createPoint(null)\n }\n if (envelope.getMinX() === envelope.getMaxX() && envelope.getMinY() === envelope.getMaxY()) {\n return this.createPoint(new Coordinate(envelope.getMinX(), envelope.getMinY()))\n }\n if (envelope.getMinX() === envelope.getMaxX() || envelope.getMinY() === envelope.getMaxY()) {\n return this.createLineString([new Coordinate(envelope.getMinX(), envelope.getMinY()), new Coordinate(envelope.getMaxX(), envelope.getMaxY())])\n }\n return this.createPolygon(this.createLinearRing([new Coordinate(envelope.getMinX(), envelope.getMinY()), new Coordinate(envelope.getMinX(), envelope.getMaxY()), new Coordinate(envelope.getMaxX(), envelope.getMaxY()), new Coordinate(envelope.getMaxX(), envelope.getMinY()), new Coordinate(envelope.getMinX(), envelope.getMinY())]), null)\n};\nGeometryFactory.prototype.createLineString = function createLineString (coordinates) {\n if (!coordinates) { return new LineString(this.getCoordinateSequenceFactory().create([]), this) }\n else if (coordinates instanceof Array) { return new LineString(this.getCoordinateSequenceFactory().create(coordinates), this) }\n else if (hasInterface(coordinates, CoordinateSequence)) { return new LineString(coordinates, this) }\n};\nGeometryFactory.prototype.createMultiLineString = function createMultiLineString () {\n if (arguments.length === 0) {\n return new MultiLineString(null, this)\n } else if (arguments.length === 1) {\n var lineStrings = arguments[0];\n return new MultiLineString(lineStrings, this)\n }\n};\nGeometryFactory.prototype.buildGeometry = function buildGeometry (geomList) {\n var geomClass = null;\n var isHeterogeneous = false;\n var hasGeometryCollection = false;\n for (var i = geomList.iterator(); i.hasNext();) {\n var geom = i.next();\n var partClass = geom.getClass();\n if (geomClass === null) {\n geomClass = partClass;\n }\n if (partClass !== geomClass) {\n isHeterogeneous = true;\n }\n if (geom.isGeometryCollectionOrDerived()) { hasGeometryCollection = true; }\n }\n if (geomClass === null) {\n return this.createGeometryCollection()\n }\n if (isHeterogeneous || hasGeometryCollection) {\n return this.createGeometryCollection(GeometryFactory.toGeometryArray(geomList))\n }\n var geom0 = geomList.iterator().next();\n var isCollection = geomList.size() > 1;\n if (isCollection) {\n if (geom0 instanceof Polygon) {\n return this.createMultiPolygon(GeometryFactory.toPolygonArray(geomList))\n } else if (geom0 instanceof LineString) {\n return this.createMultiLineString(GeometryFactory.toLineStringArray(geomList))\n } else if (geom0 instanceof Point) {\n return this.createMultiPoint(GeometryFactory.toPointArray(geomList))\n }\n Assert.shouldNeverReachHere('Unhandled class: ' + geom0.getClass().getName());\n }\n return geom0\n};\nGeometryFactory.prototype.createMultiPointFromCoords = function createMultiPointFromCoords (coordinates) {\n return this.createMultiPoint(coordinates !== null ? this.getCoordinateSequenceFactory().create(coordinates) : null)\n};\nGeometryFactory.prototype.createPoint = function createPoint () {\n if (arguments.length === 0) {\n return this.createPoint(this.getCoordinateSequenceFactory().create([]))\n } else if (arguments.length === 1) {\n if (arguments[0] instanceof Coordinate) {\n var coordinate = arguments[0];\n return this.createPoint(coordinate !== null ? this.getCoordinateSequenceFactory().create([coordinate]) : null)\n } else if (hasInterface(arguments[0], CoordinateSequence)) {\n var coordinates = arguments[0];\n return new Point(coordinates, this)\n }\n }\n};\nGeometryFactory.prototype.getCoordinateSequenceFactory = function getCoordinateSequenceFactory () {\n return this._coordinateSequenceFactory\n};\nGeometryFactory.prototype.createPolygon = function createPolygon () {\n if (arguments.length === 0) {\n return new Polygon(null, null, this)\n } else if (arguments.length === 1) {\n if (hasInterface(arguments[0], CoordinateSequence)) {\n var coordinates = arguments[0];\n return this.createPolygon(this.createLinearRing(coordinates))\n } else if (arguments[0] instanceof Array) {\n var coordinates$1 = arguments[0];\n return this.createPolygon(this.createLinearRing(coordinates$1))\n } else if (arguments[0] instanceof LinearRing) {\n var shell = arguments[0];\n return this.createPolygon(shell, null)\n }\n } else if (arguments.length === 2) {\n var shell$1 = arguments[0];\n var holes = arguments[1];\n return new Polygon(shell$1, holes, this)\n }\n};\nGeometryFactory.prototype.getSRID = function getSRID () {\n return this._SRID\n};\nGeometryFactory.prototype.createGeometryCollection = function createGeometryCollection () {\n if (arguments.length === 0) {\n return new GeometryCollection(null, this)\n } else if (arguments.length === 1) {\n var geometries = arguments[0];\n return new GeometryCollection(geometries, this)\n }\n};\nGeometryFactory.prototype.createGeometry = function createGeometry (g) {\n var editor = new GeometryEditor(this);\n return editor.edit(g, {\n edit: function () {\n if (arguments.length === 2) {\n var coordSeq = arguments[0];\n // const geometry = arguments[1]\n return this._coordinateSequenceFactory.create(coordSeq)\n }\n }\n })\n};\nGeometryFactory.prototype.getPrecisionModel = function getPrecisionModel () {\n return this._precisionModel\n};\nGeometryFactory.prototype.createLinearRing = function createLinearRing () {\n if (arguments.length === 0) {\n return this.createLinearRing(this.getCoordinateSequenceFactory().create([]))\n } else if (arguments.length === 1) {\n if (arguments[0] instanceof Array) {\n var coordinates = arguments[0];\n return this.createLinearRing(coordinates !== null ? this.getCoordinateSequenceFactory().create(coordinates) : null)\n } else if (hasInterface(arguments[0], CoordinateSequence)) {\n var coordinates$1 = arguments[0];\n return new LinearRing(coordinates$1, this)\n }\n }\n};\nGeometryFactory.prototype.createMultiPolygon = function createMultiPolygon () {\n if (arguments.length === 0) {\n return new MultiPolygon(null, this)\n } else if (arguments.length === 1) {\n var polygons = arguments[0];\n return new MultiPolygon(polygons, this)\n }\n};\nGeometryFactory.prototype.createMultiPoint = function createMultiPoint () {\n var this$1 = this;\n\n if (arguments.length === 0) {\n return new MultiPoint(null, this)\n } else if (arguments.length === 1) {\n if (arguments[0] instanceof Array) {\n var point = arguments[0];\n return new MultiPoint(point, this)\n } else if (arguments[0] instanceof Array) {\n var coordinates = arguments[0];\n return this.createMultiPoint(coordinates !== null ? this.getCoordinateSequenceFactory().create(coordinates) : null)\n } else if (hasInterface(arguments[0], CoordinateSequence)) {\n var coordinates$1 = arguments[0];\n if (coordinates$1 === null) {\n return this.createMultiPoint(new Array(0).fill(null))\n }\n var points = new Array(coordinates$1.size()).fill(null);\n for (var i = 0; i < coordinates$1.size(); i++) {\n var ptSeq = this$1.getCoordinateSequenceFactory().create(1, coordinates$1.getDimension());\n CoordinateSequences.copy(coordinates$1, i, ptSeq, 0, 1);\n points[i] = this$1.createPoint(ptSeq);\n }\n return this.createMultiPoint(points)\n }\n }\n};\nGeometryFactory.prototype.interfaces_ = function interfaces_ () {\n return [Serializable]\n};\nGeometryFactory.prototype.getClass = function getClass () {\n return GeometryFactory\n};\nGeometryFactory.toMultiPolygonArray = function toMultiPolygonArray (multiPolygons) {\n var multiPolygonArray = new Array(multiPolygons.size()).fill(null);\n return multiPolygons.toArray(multiPolygonArray)\n};\nGeometryFactory.toGeometryArray = function toGeometryArray (geometries) {\n if (geometries === null) { return null }\n var geometryArray = new Array(geometries.size()).fill(null);\n return geometries.toArray(geometryArray)\n};\nGeometryFactory.getDefaultCoordinateSequenceFactory = function getDefaultCoordinateSequenceFactory () {\n return CoordinateArraySequenceFactory.instance()\n};\nGeometryFactory.toMultiLineStringArray = function toMultiLineStringArray (multiLineStrings) {\n var multiLineStringArray = new Array(multiLineStrings.size()).fill(null);\n return multiLineStrings.toArray(multiLineStringArray)\n};\nGeometryFactory.toLineStringArray = function toLineStringArray (lineStrings) {\n var lineStringArray = new Array(lineStrings.size()).fill(null);\n return lineStrings.toArray(lineStringArray)\n};\nGeometryFactory.toMultiPointArray = function toMultiPointArray (multiPoints) {\n var multiPointArray = new Array(multiPoints.size()).fill(null);\n return multiPoints.toArray(multiPointArray)\n};\nGeometryFactory.toLinearRingArray = function toLinearRingArray (linearRings) {\n var linearRingArray = new Array(linearRings.size()).fill(null);\n return linearRings.toArray(linearRingArray)\n};\nGeometryFactory.toPointArray = function toPointArray (points) {\n var pointArray = new Array(points.size()).fill(null);\n return points.toArray(pointArray)\n};\nGeometryFactory.toPolygonArray = function toPolygonArray (polygons) {\n var polygonArray = new Array(polygons.size()).fill(null);\n return polygons.toArray(polygonArray)\n};\nGeometryFactory.createPointFromInternalCoord = function createPointFromInternalCoord (coord, exemplar) {\n exemplar.getPrecisionModel().makePrecise(coord);\n return exemplar.getFactory().createPoint(coord)\n};\nstaticAccessors$2.serialVersionUID.get = function () { return -6820524753094095635 };\n\nObject.defineProperties( GeometryFactory, staticAccessors$2 );\n\nvar geometryTypes = ['Point', 'MultiPoint', 'LineString', 'MultiLineString', 'Polygon', 'MultiPolygon'];\n\n/**\n * Class for reading and writing Well-Known Text.Create a new parser for GeoJSON\n * NOTE: Adapted from OpenLayers 2.11 implementation.\n */\n\n/**\n * Create a new parser for GeoJSON\n *\n * @param {GeometryFactory} geometryFactory\n * @return An instance of GeoJsonParser.\n * @constructor\n * @private\n */\nvar GeoJSONParser = function GeoJSONParser (geometryFactory) {\n this.geometryFactory = geometryFactory || new GeometryFactory();\n};\n/**\n * Deserialize a GeoJSON object and return the Geometry or Feature(Collection) with JSTS Geometries\n *\n * @param {}\n * A GeoJSON object.\n * @return {} A Geometry instance or object representing a Feature(Collection) with Geometry instances.\n * @private\n */\nGeoJSONParser.prototype.read = function read (json) {\n var obj;\n if (typeof json === 'string') {\n obj = JSON.parse(json);\n } else {\n obj = json;\n }\n\n var type = obj.type;\n\n if (!parse[type]) {\n throw new Error('Unknown GeoJSON type: ' + obj.type)\n }\n\n if (geometryTypes.indexOf(type) !== -1) {\n return parse[type].apply(this, [obj.coordinates])\n } else if (type === 'GeometryCollection') {\n return parse[type].apply(this, [obj.geometries])\n }\n\n // feature or feature collection\n return parse[type].apply(this, [obj])\n};\n\n/**\n * Serialize a Geometry object into GeoJSON\n *\n * @param {Geometry}\n * geometry A Geometry or array of Geometries.\n * @return {Object} A GeoJSON object represting the input Geometry/Geometries.\n * @private\n */\nGeoJSONParser.prototype.write = function write (geometry) {\n var type = geometry.getGeometryType();\n\n if (!extract[type]) {\n throw new Error('Geometry is not supported')\n }\n\n return extract[type].apply(this, [geometry])\n};\n\nvar parse = {\n /**\n * Parse a GeoJSON Feature object\n *\n * @param {Object}\n * obj Object to parse.\n *\n * @return {Object} Feature with geometry/bbox converted to JSTS Geometries.\n */\n Feature: function (obj) {\n var feature = {};\n\n // copy features\n for (var key in obj) {\n feature[key] = obj[key];\n }\n\n // parse geometry\n if (obj.geometry) {\n var type = obj.geometry.type;\n if (!parse[type]) {\n throw new Error('Unknown GeoJSON type: ' + obj.type)\n }\n feature.geometry = this.read(obj.geometry);\n }\n\n // bbox\n if (obj.bbox) {\n feature.bbox = parse.bbox.apply(this, [obj.bbox]);\n }\n\n return feature\n },\n\n /**\n * Parse a GeoJSON FeatureCollection object\n *\n * @param {Object}\n * obj Object to parse.\n *\n * @return {Object} FeatureCollection with geometry/bbox converted to JSTS Geometries.\n */\n FeatureCollection: function (obj) {\n var this$1 = this;\n\n var featureCollection = {};\n\n if (obj.features) {\n featureCollection.features = [];\n\n for (var i = 0; i < obj.features.length; ++i) {\n featureCollection.features.push(this$1.read(obj.features[i]));\n }\n }\n\n if (obj.bbox) {\n featureCollection.bbox = this.parse.bbox.apply(this, [obj.bbox]);\n }\n\n return featureCollection\n },\n\n /**\n * Convert the ordinates in an array to an array of Coordinates\n *\n * @param {Array}\n * array Array with {Number}s.\n *\n * @return {Array} Array with Coordinates.\n */\n coordinates: function (array) {\n var coordinates = [];\n for (var i = 0; i < array.length; ++i) {\n var sub = array[i];\n coordinates.push(new Coordinate(sub[0], sub[1]));\n }\n return coordinates\n },\n\n /**\n * Convert the bbox to a LinearRing\n *\n * @param {Array}\n * array Array with [xMin, yMin, xMax, yMax].\n *\n * @return {Array} Array with Coordinates.\n */\n bbox: function (array) {\n return this.geometryFactory.createLinearRing([\n new Coordinate(array[0], array[1]),\n new Coordinate(array[2], array[1]),\n new Coordinate(array[2], array[3]),\n new Coordinate(array[0], array[3]),\n new Coordinate(array[0], array[1])\n ])\n },\n\n /**\n * Convert an Array with ordinates to a Point\n *\n * @param {Array}\n * array Array with ordinates.\n *\n * @return {Point} Point.\n */\n Point: function (array) {\n var coordinate = new Coordinate(array[0], array[1]);\n return this.geometryFactory.createPoint(coordinate)\n },\n\n /**\n * Convert an Array with coordinates to a MultiPoint\n *\n * @param {Array}\n * array Array with coordinates.\n *\n * @return {MultiPoint} MultiPoint.\n */\n MultiPoint: function (array) {\n var this$1 = this;\n\n var points = [];\n for (var i = 0; i < array.length; ++i) {\n points.push(parse.Point.apply(this$1, [array[i]]));\n }\n return this.geometryFactory.createMultiPoint(points)\n },\n\n /**\n * Convert an Array with coordinates to a LineString\n *\n * @param {Array}\n * array Array with coordinates.\n *\n * @return {LineString} LineString.\n */\n LineString: function (array) {\n var coordinates = parse.coordinates.apply(this, [array]);\n return this.geometryFactory.createLineString(coordinates)\n },\n\n /**\n * Convert an Array with coordinates to a MultiLineString\n *\n * @param {Array}\n * array Array with coordinates.\n *\n * @return {MultiLineString} MultiLineString.\n */\n MultiLineString: function (array) {\n var this$1 = this;\n\n var lineStrings = [];\n for (var i = 0; i < array.length; ++i) {\n lineStrings.push(parse.LineString.apply(this$1, [array[i]]));\n }\n return this.geometryFactory.createMultiLineString(lineStrings)\n },\n\n /**\n * Convert an Array to a Polygon\n *\n * @param {Array}\n * array Array with shell and holes.\n *\n * @return {Polygon} Polygon.\n */\n Polygon: function (array) {\n var this$1 = this;\n\n var shellCoordinates = parse.coordinates.apply(this, [array[0]]);\n var shell = this.geometryFactory.createLinearRing(shellCoordinates);\n var holes = [];\n for (var i = 1; i < array.length; ++i) {\n var hole = array[i];\n var coordinates = parse.coordinates.apply(this$1, [hole]);\n var linearRing = this$1.geometryFactory.createLinearRing(coordinates);\n holes.push(linearRing);\n }\n return this.geometryFactory.createPolygon(shell, holes)\n },\n\n /**\n * Convert an Array to a MultiPolygon\n *\n * @param {Array}\n * array Array of arrays with shell and rings.\n *\n * @return {MultiPolygon} MultiPolygon.\n */\n MultiPolygon: function (array) {\n var this$1 = this;\n\n var polygons = [];\n for (var i = 0; i < array.length; ++i) {\n var polygon = array[i];\n polygons.push(parse.Polygon.apply(this$1, [polygon]));\n }\n return this.geometryFactory.createMultiPolygon(polygons)\n },\n\n /**\n * Convert an Array to a GeometryCollection\n *\n * @param {Array}\n * array Array of GeoJSON geometries.\n *\n * @return {GeometryCollection} GeometryCollection.\n */\n GeometryCollection: function (array) {\n var this$1 = this;\n\n var geometries = [];\n for (var i = 0; i < array.length; ++i) {\n var geometry = array[i];\n geometries.push(this$1.read(geometry));\n }\n return this.geometryFactory.createGeometryCollection(geometries)\n }\n};\n\nvar extract = {\n /**\n * Convert a Coordinate to an Array\n *\n * @param {Coordinate}\n * coordinate Coordinate to convert.\n *\n * @return {Array} Array of ordinates.\n */\n coordinate: function (coordinate) {\n return [coordinate.x, coordinate.y]\n },\n\n /**\n * Convert a Point to a GeoJSON object\n *\n * @param {Point}\n * point Point to convert.\n *\n * @return {Array} Array of 2 ordinates (paired to a coordinate).\n */\n Point: function (point) {\n var array = extract.coordinate.apply(this, [point.getCoordinate()]);\n return {\n type: 'Point',\n coordinates: array\n }\n },\n\n /**\n * Convert a MultiPoint to a GeoJSON object\n *\n * @param {MultiPoint}\n * multipoint MultiPoint to convert.\n *\n * @return {Array} Array of coordinates.\n */\n MultiPoint: function (multipoint) {\n var this$1 = this;\n\n var array = [];\n for (var i = 0; i < multipoint._geometries.length; ++i) {\n var point = multipoint._geometries[i];\n var geoJson = extract.Point.apply(this$1, [point]);\n array.push(geoJson.coordinates);\n }\n return {\n type: 'MultiPoint',\n coordinates: array\n }\n },\n\n /**\n * Convert a LineString to a GeoJSON object\n *\n * @param {LineString}\n * linestring LineString to convert.\n *\n * @return {Array} Array of coordinates.\n */\n LineString: function (linestring) {\n var this$1 = this;\n\n var array = [];\n var coordinates = linestring.getCoordinates();\n for (var i = 0; i < coordinates.length; ++i) {\n var coordinate = coordinates[i];\n array.push(extract.coordinate.apply(this$1, [coordinate]));\n }\n return {\n type: 'LineString',\n coordinates: array\n }\n },\n\n /**\n * Convert a MultiLineString to a GeoJSON object\n *\n * @param {MultiLineString}\n * multilinestring MultiLineString to convert.\n *\n * @return {Array} Array of Array of coordinates.\n */\n MultiLineString: function (multilinestring) {\n var this$1 = this;\n\n var array = [];\n for (var i = 0; i < multilinestring._geometries.length; ++i) {\n var linestring = multilinestring._geometries[i];\n var geoJson = extract.LineString.apply(this$1, [linestring]);\n array.push(geoJson.coordinates);\n }\n return {\n type: 'MultiLineString',\n coordinates: array\n }\n },\n\n /**\n * Convert a Polygon to a GeoJSON object\n *\n * @param {Polygon}\n * polygon Polygon to convert.\n *\n * @return {Array} Array with shell, holes.\n */\n Polygon: function (polygon) {\n var this$1 = this;\n\n var array = [];\n var shellGeoJson = extract.LineString.apply(this, [polygon._shell]);\n array.push(shellGeoJson.coordinates);\n for (var i = 0; i < polygon._holes.length; ++i) {\n var hole = polygon._holes[i];\n var holeGeoJson = extract.LineString.apply(this$1, [hole]);\n array.push(holeGeoJson.coordinates);\n }\n return {\n type: 'Polygon',\n coordinates: array\n }\n },\n\n /**\n * Convert a MultiPolygon to a GeoJSON object\n *\n * @param {MultiPolygon}\n * multipolygon MultiPolygon to convert.\n *\n * @return {Array} Array of polygons.\n */\n MultiPolygon: function (multipolygon) {\n var this$1 = this;\n\n var array = [];\n for (var i = 0; i < multipolygon._geometries.length; ++i) {\n var polygon = multipolygon._geometries[i];\n var geoJson = extract.Polygon.apply(this$1, [polygon]);\n array.push(geoJson.coordinates);\n }\n return {\n type: 'MultiPolygon',\n coordinates: array\n }\n },\n\n /**\n * Convert a GeometryCollection to a GeoJSON object\n *\n * @param {GeometryCollection}\n * collection GeometryCollection to convert.\n *\n * @return {Array} Array of geometries.\n */\n GeometryCollection: function (collection) {\n var this$1 = this;\n\n var array = [];\n for (var i = 0; i < collection._geometries.length; ++i) {\n var geometry = collection._geometries[i];\n var type = geometry.getGeometryType();\n array.push(extract[type].apply(this$1, [geometry]));\n }\n return {\n type: 'GeometryCollection',\n geometries: array\n }\n }\n};\n\n/**\n * Converts a geometry in GeoJSON to a {@link Geometry}.\n */\n\n/**\n * A <code>GeoJSONReader</code> is parameterized by a <code>GeometryFactory</code>,\n * to allow it to create <code>Geometry</code> objects of the appropriate\n * implementation. In particular, the <code>GeometryFactory</code> determines\n * the <code>PrecisionModel</code> and <code>SRID</code> that is used.\n *\n * @param {GeometryFactory} geometryFactory\n * @constructor\n */\nvar GeoJSONReader = function GeoJSONReader (geometryFactory) {\n this.geometryFactory = geometryFactory || new GeometryFactory();\n this.precisionModel = this.geometryFactory.getPrecisionModel();\n this.parser = new GeoJSONParser(this.geometryFactory);\n};\n/**\n * Reads a GeoJSON representation of a {@link Geometry}\n *\n * Will also parse GeoJSON Features/FeatureCollections as custom objects.\n *\n * @param {Object|String} geoJson a GeoJSON Object or String.\n * @return {Geometry|Object} a <code>Geometry or Feature/FeatureCollection representation.</code>\n * @memberof GeoJSONReader\n */\nGeoJSONReader.prototype.read = function read (geoJson) {\n var geometry = this.parser.read(geoJson);\n\n if (this.precisionModel.getType() === PrecisionModel.FIXED) {\n this.reducePrecision(geometry);\n }\n\n return geometry\n};\n\n// NOTE: this is a hack\nGeoJSONReader.prototype.reducePrecision = function reducePrecision (geometry) {\n var this$1 = this;\n\n var i, len;\n\n if (geometry.coordinate) {\n this.precisionModel.makePrecise(geometry.coordinate);\n } else if (geometry.points) {\n for (i = 0, len = geometry.points.length; i < len; i++) {\n this$1.precisionModel.makePrecise(geometry.points[i]);\n }\n } else if (geometry.geometries) {\n for (i = 0, len = geometry.geometries.length; i < len; i++) {\n this$1.reducePrecision(geometry.geometries[i]);\n }\n }\n};\n\n/**\n * @module GeoJSONWriter\n */\n\n/**\n * Writes the GeoJSON representation of a {@link Geometry}. The\n * The GeoJSON format is defined <A\n * HREF=\"http://geojson.org/geojson-spec.html\">here</A>.\n */\n\n/**\n * The <code>GeoJSONWriter</code> outputs coordinates rounded to the precision\n * model. Only the maximum number of decimal places necessary to represent the\n * ordinates to the required precision will be output.\n *\n * @param {GeometryFactory} geometryFactory\n * @constructor\n */\nvar GeoJSONWriter = function GeoJSONWriter () {\n this.parser = new GeoJSONParser(this.geometryFactory);\n};\n/**\n * Converts a <code>Geometry</code> to its GeoJSON representation.\n *\n * @param {Geometry}\n * geometry a <code>Geometry</code> to process.\n * @return {Object} The GeoJSON representation of the Geometry.\n * @memberof GeoJSONWriter\n */\nGeoJSONWriter.prototype.write = function write (geometry) {\n return this.parser.write(geometry)\n};\n\n/* eslint-disable no-undef */\n\n// io\n\nvar Position = function Position () {};\n\nvar staticAccessors$20 = { ON: { configurable: true },LEFT: { configurable: true },RIGHT: { configurable: true } };\n\nPosition.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nPosition.prototype.getClass = function getClass () {\n return Position\n};\nPosition.opposite = function opposite (position) {\n if (position === Position.LEFT) { return Position.RIGHT }\n if (position === Position.RIGHT) { return Position.LEFT }\n return position\n};\nstaticAccessors$20.ON.get = function () { return 0 };\nstaticAccessors$20.LEFT.get = function () { return 1 };\nstaticAccessors$20.RIGHT.get = function () { return 2 };\n\nObject.defineProperties( Position, staticAccessors$20 );\n\n/**\n * @param {string=} message Optional message\n * @extends {Error}\n * @constructor\n * @private\n */\nfunction EmptyStackException (message) {\n this.message = message || '';\n}\nEmptyStackException.prototype = new Error();\n\n/**\n * @type {string}\n */\nEmptyStackException.prototype.name = 'EmptyStackException';\n\n/**\n * @see http://download.oracle.com/javase/6/docs/api/java/util/Stack.html\n *\n * @extends {List}\n * @constructor\n * @private\n */\nfunction Stack () {\n /**\n * @type {Array}\n * @private\n */\n this.array_ = [];\n}\nStack.prototype = new List();\n\n/**\n * @override\n */\nStack.prototype.add = function (e) {\n this.array_.push(e);\n return true\n};\n\n/**\n * @override\n */\nStack.prototype.get = function (index) {\n if (index < 0 || index >= this.size()) {\n throw new Error()\n }\n\n return this.array_[index]\n};\n\n/**\n * Pushes an item onto the top of this stack.\n * @param {Object} e\n * @return {Object}\n */\nStack.prototype.push = function (e) {\n this.array_.push(e);\n return e\n};\n\n/**\n * Pushes an item onto the top of this stack.\n * @param {Object} e\n * @return {Object}\n */\nStack.prototype.pop = function (e) {\n if (this.array_.length === 0) {\n throw new EmptyStackException()\n }\n\n return this.array_.pop()\n};\n\n/**\n * Looks at the object at the top of this stack without removing it from the\n * stack.\n * @return {Object}\n */\nStack.prototype.peek = function () {\n if (this.array_.length === 0) {\n throw new EmptyStackException()\n }\n\n return this.array_[this.array_.length - 1]\n};\n\n/**\n * Tests if this stack is empty.\n * @return {boolean} true if and only if this stack contains no items; false\n * otherwise.\n */\nStack.prototype.empty = function () {\n if (this.array_.length === 0) {\n return true\n } else {\n return false\n }\n};\n\n/**\n * @return {boolean}\n */\nStack.prototype.isEmpty = function () {\n return this.empty()\n};\n\n/**\n * Returns the 1-based position where an object is on this stack. If the object\n * o occurs as an item in this stack, this method returns the distance from the\n * top of the stack of the occurrence nearest the top of the stack; the topmost\n * item on the stack is considered to be at distance 1. The equals method is\n * used to compare o to the items in this stack.\n *\n * NOTE: does not currently actually use equals. (=== is used)\n *\n * @param {Object} o\n * @return {number} the 1-based position from the top of the stack where the\n * object is located; the return value -1 indicates that the object is\n * not on the stack.\n */\nStack.prototype.search = function (o) {\n return this.array_.indexOf(o)\n};\n\n/**\n * @return {number}\n * @export\n */\nStack.prototype.size = function () {\n return this.array_.length\n};\n\n/**\n * @return {Array}\n */\nStack.prototype.toArray = function () {\n var this$1 = this;\n\n var array = [];\n\n for (var i = 0, len = this.array_.length; i < len; i++) {\n array.push(this$1.array_[i]);\n }\n\n return array\n};\n\nvar RightmostEdgeFinder = function RightmostEdgeFinder () {\n this._minIndex = -1;\n this._minCoord = null;\n this._minDe = null;\n this._orientedDe = null;\n};\nRightmostEdgeFinder.prototype.getCoordinate = function getCoordinate () {\n return this._minCoord\n};\nRightmostEdgeFinder.prototype.getRightmostSide = function getRightmostSide (de, index) {\n var side = this.getRightmostSideOfSegment(de, index);\n if (side < 0) { side = this.getRightmostSideOfSegment(de, index - 1); }\n if (side < 0) {\n this._minCoord = null;\n this.checkForRightmostCoordinate(de);\n }\n return side\n};\nRightmostEdgeFinder.prototype.findRightmostEdgeAtVertex = function findRightmostEdgeAtVertex () {\n var pts = this._minDe.getEdge().getCoordinates();\n Assert.isTrue(this._minIndex > 0 && this._minIndex < pts.length, 'rightmost point expected to be interior vertex of edge');\n var pPrev = pts[this._minIndex - 1];\n var pNext = pts[this._minIndex + 1];\n var orientation = CGAlgorithms.computeOrientation(this._minCoord, pNext, pPrev);\n var usePrev = false;\n if (pPrev.y < this._minCoord.y && pNext.y < this._minCoord.y && orientation === CGAlgorithms.COUNTERCLOCKWISE) {\n usePrev = true;\n } else if (pPrev.y > this._minCoord.y && pNext.y > this._minCoord.y && orientation === CGAlgorithms.CLOCKWISE) {\n usePrev = true;\n }\n if (usePrev) {\n this._minIndex = this._minIndex - 1;\n }\n};\nRightmostEdgeFinder.prototype.getRightmostSideOfSegment = function getRightmostSideOfSegment (de, i) {\n var e = de.getEdge();\n var coord = e.getCoordinates();\n if (i < 0 || i + 1 >= coord.length) { return -1 }\n if (coord[i].y === coord[i + 1].y) { return -1 }\n var pos = Position.LEFT;\n if (coord[i].y < coord[i + 1].y) { pos = Position.RIGHT; }\n return pos\n};\nRightmostEdgeFinder.prototype.getEdge = function getEdge () {\n return this._orientedDe\n};\nRightmostEdgeFinder.prototype.checkForRightmostCoordinate = function checkForRightmostCoordinate (de) {\n var this$1 = this;\n\n var coord = de.getEdge().getCoordinates();\n for (var i = 0; i < coord.length - 1; i++) {\n if (this$1._minCoord === null || coord[i].x > this$1._minCoord.x) {\n this$1._minDe = de;\n this$1._minIndex = i;\n this$1._minCoord = coord[i];\n }\n }\n};\nRightmostEdgeFinder.prototype.findRightmostEdgeAtNode = function findRightmostEdgeAtNode () {\n var node = this._minDe.getNode();\n var star = node.getEdges();\n this._minDe = star.getRightmostEdge();\n if (!this._minDe.isForward()) {\n this._minDe = this._minDe.getSym();\n this._minIndex = this._minDe.getEdge().getCoordinates().length - 1;\n }\n};\nRightmostEdgeFinder.prototype.findEdge = function findEdge (dirEdgeList) {\n var this$1 = this;\n\n for (var i = dirEdgeList.iterator(); i.hasNext();) {\n var de = i.next();\n if (!de.isForward()) { continue }\n this$1.checkForRightmostCoordinate(de);\n }\n Assert.isTrue(this._minIndex !== 0 || this._minCoord.equals(this._minDe.getCoordinate()), 'inconsistency in rightmost processing');\n if (this._minIndex === 0) {\n this.findRightmostEdgeAtNode();\n } else {\n this.findRightmostEdgeAtVertex();\n }\n this._orientedDe = this._minDe;\n var rightmostSide = this.getRightmostSide(this._minDe, this._minIndex);\n if (rightmostSide === Position.LEFT) {\n this._orientedDe = this._minDe.getSym();\n }\n};\nRightmostEdgeFinder.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nRightmostEdgeFinder.prototype.getClass = function getClass () {\n return RightmostEdgeFinder\n};\n\nvar TopologyException = (function (RuntimeException$$1) {\n function TopologyException (msg, pt) {\n RuntimeException$$1.call(this, TopologyException.msgWithCoord(msg, pt));\n this.pt = pt ? new Coordinate(pt) : null;\n this.name = 'TopologyException';\n }\n\n if ( RuntimeException$$1 ) TopologyException.__proto__ = RuntimeException$$1;\n TopologyException.prototype = Object.create( RuntimeException$$1 && RuntimeException$$1.prototype );\n TopologyException.prototype.constructor = TopologyException;\n TopologyException.prototype.getCoordinate = function getCoordinate () {\n return this.pt\n };\n TopologyException.prototype.interfaces_ = function interfaces_ () {\n return []\n };\n TopologyException.prototype.getClass = function getClass () {\n return TopologyException\n };\n TopologyException.msgWithCoord = function msgWithCoord (msg, pt) {\n if (!pt) { return msg + ' [ ' + pt + ' ]' }\n return msg\n };\n\n return TopologyException;\n}(RuntimeException));\n\nvar LinkedList = function LinkedList () {\n this.array_ = [];\n};\nLinkedList.prototype.addLast = function addLast (e) {\n this.array_.push(e);\n};\nLinkedList.prototype.removeFirst = function removeFirst () {\n return this.array_.shift()\n};\nLinkedList.prototype.isEmpty = function isEmpty () {\n return this.array_.length === 0\n};\n\nvar BufferSubgraph = function BufferSubgraph () {\n this._finder = null;\n this._dirEdgeList = new ArrayList();\n this._nodes = new ArrayList();\n this._rightMostCoord = null;\n this._env = null;\n this._finder = new RightmostEdgeFinder();\n};\nBufferSubgraph.prototype.clearVisitedEdges = function clearVisitedEdges () {\n for (var it = this._dirEdgeList.iterator(); it.hasNext();) {\n var de = it.next();\n de.setVisited(false);\n }\n};\nBufferSubgraph.prototype.getRightmostCoordinate = function getRightmostCoordinate () {\n return this._rightMostCoord\n};\nBufferSubgraph.prototype.computeNodeDepth = function computeNodeDepth (n) {\n var this$1 = this;\n\n var startEdge = null;\n for (var i = n.getEdges().iterator(); i.hasNext();) {\n var de = i.next();\n if (de.isVisited() || de.getSym().isVisited()) {\n startEdge = de;\n break\n }\n }\n if (startEdge === null) { throw new TopologyException('unable to find edge to compute depths at ' + n.getCoordinate()) }\n n.getEdges().computeDepths(startEdge);\n for (var i$1 = n.getEdges().iterator(); i$1.hasNext();) {\n var de$1 = i$1.next();\n de$1.setVisited(true);\n this$1.copySymDepths(de$1);\n }\n};\nBufferSubgraph.prototype.computeDepth = function computeDepth (outsideDepth) {\n this.clearVisitedEdges();\n var de = this._finder.getEdge();\n // const n = de.getNode()\n // const label = de.getLabel()\n de.setEdgeDepths(Position.RIGHT, outsideDepth);\n this.copySymDepths(de);\n this.computeDepths(de);\n};\nBufferSubgraph.prototype.create = function create (node) {\n this.addReachable(node);\n this._finder.findEdge(this._dirEdgeList);\n this._rightMostCoord = this._finder.getCoordinate();\n};\nBufferSubgraph.prototype.findResultEdges = function findResultEdges () {\n for (var it = this._dirEdgeList.iterator(); it.hasNext();) {\n var de = it.next();\n if (de.getDepth(Position.RIGHT) >= 1 && de.getDepth(Position.LEFT) <= 0 && !de.isInteriorAreaEdge()) {\n de.setInResult(true);\n }\n }\n};\nBufferSubgraph.prototype.computeDepths = function computeDepths (startEdge) {\n var this$1 = this;\n\n var nodesVisited = new HashSet();\n var nodeQueue = new LinkedList();\n var startNode = startEdge.getNode();\n nodeQueue.addLast(startNode);\n nodesVisited.add(startNode);\n startEdge.setVisited(true);\n while (!nodeQueue.isEmpty()) {\n var n = nodeQueue.removeFirst();\n nodesVisited.add(n);\n this$1.computeNodeDepth(n);\n for (var i = n.getEdges().iterator(); i.hasNext();) {\n var de = i.next();\n var sym = de.getSym();\n if (sym.isVisited()) { continue }\n var adjNode = sym.getNode();\n if (!nodesVisited.contains(adjNode)) {\n nodeQueue.addLast(adjNode);\n nodesVisited.add(adjNode);\n }\n }\n }\n};\nBufferSubgraph.prototype.compareTo = function compareTo (o) {\n var graph = o;\n if (this._rightMostCoord.x < graph._rightMostCoord.x) {\n return -1\n }\n if (this._rightMostCoord.x > graph._rightMostCoord.x) {\n return 1\n }\n return 0\n};\nBufferSubgraph.prototype.getEnvelope = function getEnvelope () {\n if (this._env === null) {\n var edgeEnv = new Envelope();\n for (var it = this._dirEdgeList.iterator(); it.hasNext();) {\n var dirEdge = it.next();\n var pts = dirEdge.getEdge().getCoordinates();\n for (var i = 0; i < pts.length - 1; i++) {\n edgeEnv.expandToInclude(pts[i]);\n }\n }\n this._env = edgeEnv;\n }\n return this._env\n};\nBufferSubgraph.prototype.addReachable = function addReachable (startNode) {\n var this$1 = this;\n\n var nodeStack = new Stack();\n nodeStack.add(startNode);\n while (!nodeStack.empty()) {\n var node = nodeStack.pop();\n this$1.add(node, nodeStack);\n }\n};\nBufferSubgraph.prototype.copySymDepths = function copySymDepths (de) {\n var sym = de.getSym();\n sym.setDepth(Position.LEFT, de.getDepth(Position.RIGHT));\n sym.setDepth(Position.RIGHT, de.getDepth(Position.LEFT));\n};\nBufferSubgraph.prototype.add = function add (node, nodeStack) {\n var this$1 = this;\n\n node.setVisited(true);\n this._nodes.add(node);\n for (var i = node.getEdges().iterator(); i.hasNext();) {\n var de = i.next();\n this$1._dirEdgeList.add(de);\n var sym = de.getSym();\n var symNode = sym.getNode();\n if (!symNode.isVisited()) { nodeStack.push(symNode); }\n }\n};\nBufferSubgraph.prototype.getNodes = function getNodes () {\n return this._nodes\n};\nBufferSubgraph.prototype.getDirectedEdges = function getDirectedEdges () {\n return this._dirEdgeList\n};\nBufferSubgraph.prototype.interfaces_ = function interfaces_ () {\n return [Comparable]\n};\nBufferSubgraph.prototype.getClass = function getClass () {\n return BufferSubgraph\n};\n\nvar TopologyLocation = function TopologyLocation () {\n var this$1 = this;\n\n this.location = null;\n if (arguments.length === 1) {\n if (arguments[0] instanceof Array) {\n var location = arguments[0];\n this.init(location.length);\n } else if (Number.isInteger(arguments[0])) {\n var on = arguments[0];\n this.init(1);\n this.location[Position.ON] = on;\n } else if (arguments[0] instanceof TopologyLocation) {\n var gl = arguments[0];\n this.init(gl.location.length);\n if (gl !== null) {\n for (var i = 0; i < this.location.length; i++) {\n this$1.location[i] = gl.location[i];\n }\n }\n }\n } else if (arguments.length === 3) {\n var on$1 = arguments[0];\n var left = arguments[1];\n var right = arguments[2];\n this.init(3);\n this.location[Position.ON] = on$1;\n this.location[Position.LEFT] = left;\n this.location[Position.RIGHT] = right;\n }\n};\nTopologyLocation.prototype.setAllLocations = function setAllLocations (locValue) {\n var this$1 = this;\n\n for (var i = 0; i < this.location.length; i++) {\n this$1.location[i] = locValue;\n }\n};\nTopologyLocation.prototype.isNull = function isNull () {\n var this$1 = this;\n\n for (var i = 0; i < this.location.length; i++) {\n if (this$1.location[i] !== Location.NONE) { return false }\n }\n return true\n};\nTopologyLocation.prototype.setAllLocationsIfNull = function setAllLocationsIfNull (locValue) {\n var this$1 = this;\n\n for (var i = 0; i < this.location.length; i++) {\n if (this$1.location[i] === Location.NONE) { this$1.location[i] = locValue; }\n }\n};\nTopologyLocation.prototype.isLine = function isLine () {\n return this.location.length === 1\n};\nTopologyLocation.prototype.merge = function merge (gl) {\n var this$1 = this;\n\n if (gl.location.length > this.location.length) {\n var newLoc = new Array(3).fill(null);\n newLoc[Position.ON] = this.location[Position.ON];\n newLoc[Position.LEFT] = Location.NONE;\n newLoc[Position.RIGHT] = Location.NONE;\n this.location = newLoc;\n }\n for (var i = 0; i < this.location.length; i++) {\n if (this$1.location[i] === Location.NONE && i < gl.location.length) { this$1.location[i] = gl.location[i]; }\n }\n};\nTopologyLocation.prototype.getLocations = function getLocations () {\n return this.location\n};\nTopologyLocation.prototype.flip = function flip () {\n if (this.location.length <= 1) { return null }\n var temp = this.location[Position.LEFT];\n this.location[Position.LEFT] = this.location[Position.RIGHT];\n this.location[Position.RIGHT] = temp;\n};\nTopologyLocation.prototype.toString = function toString () {\n var buf = new StringBuffer();\n if (this.location.length > 1) { buf.append(Location.toLocationSymbol(this.location[Position.LEFT])); }\n buf.append(Location.toLocationSymbol(this.location[Position.ON]));\n if (this.location.length > 1) { buf.append(Location.toLocationSymbol(this.location[Position.RIGHT])); }\n return buf.toString()\n};\nTopologyLocation.prototype.setLocations = function setLocations (on, left, right) {\n this.location[Position.ON] = on;\n this.location[Position.LEFT] = left;\n this.location[Position.RIGHT] = right;\n};\nTopologyLocation.prototype.get = function get (posIndex) {\n if (posIndex < this.location.length) { return this.location[posIndex] }\n return Location.NONE\n};\nTopologyLocation.prototype.isArea = function isArea () {\n return this.location.length > 1\n};\nTopologyLocation.prototype.isAnyNull = function isAnyNull () {\n var this$1 = this;\n\n for (var i = 0; i < this.location.length; i++) {\n if (this$1.location[i] === Location.NONE) { return true }\n }\n return false\n};\nTopologyLocation.prototype.setLocation = function setLocation () {\n if (arguments.length === 1) {\n var locValue = arguments[0];\n this.setLocation(Position.ON, locValue);\n } else if (arguments.length === 2) {\n var locIndex = arguments[0];\n var locValue$1 = arguments[1];\n this.location[locIndex] = locValue$1;\n }\n};\nTopologyLocation.prototype.init = function init (size) {\n this.location = new Array(size).fill(null);\n this.setAllLocations(Location.NONE);\n};\nTopologyLocation.prototype.isEqualOnSide = function isEqualOnSide (le, locIndex) {\n return this.location[locIndex] === le.location[locIndex]\n};\nTopologyLocation.prototype.allPositionsEqual = function allPositionsEqual (loc) {\n var this$1 = this;\n\n for (var i = 0; i < this.location.length; i++) {\n if (this$1.location[i] !== loc) { return false }\n }\n return true\n};\nTopologyLocation.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nTopologyLocation.prototype.getClass = function getClass () {\n return TopologyLocation\n};\n\nvar Label = function Label () {\n this.elt = new Array(2).fill(null);\n if (arguments.length === 1) {\n if (Number.isInteger(arguments[0])) {\n var onLoc = arguments[0];\n this.elt[0] = new TopologyLocation(onLoc);\n this.elt[1] = new TopologyLocation(onLoc);\n } else if (arguments[0] instanceof Label) {\n var lbl = arguments[0];\n this.elt[0] = new TopologyLocation(lbl.elt[0]);\n this.elt[1] = new TopologyLocation(lbl.elt[1]);\n }\n } else if (arguments.length === 2) {\n var geomIndex = arguments[0];\n var onLoc$1 = arguments[1];\n this.elt[0] = new TopologyLocation(Location.NONE);\n this.elt[1] = new TopologyLocation(Location.NONE);\n this.elt[geomIndex].setLocation(onLoc$1);\n } else if (arguments.length === 3) {\n var onLoc$2 = arguments[0];\n var leftLoc = arguments[1];\n var rightLoc = arguments[2];\n this.elt[0] = new TopologyLocation(onLoc$2, leftLoc, rightLoc);\n this.elt[1] = new TopologyLocation(onLoc$2, leftLoc, rightLoc);\n } else if (arguments.length === 4) {\n var geomIndex$1 = arguments[0];\n var onLoc$3 = arguments[1];\n var leftLoc$1 = arguments[2];\n var rightLoc$1 = arguments[3];\n this.elt[0] = new TopologyLocation(Location.NONE, Location.NONE, Location.NONE);\n this.elt[1] = new TopologyLocation(Location.NONE, Location.NONE, Location.NONE);\n this.elt[geomIndex$1].setLocations(onLoc$3, leftLoc$1, rightLoc$1);\n }\n};\nLabel.prototype.getGeometryCount = function getGeometryCount () {\n var count = 0;\n if (!this.elt[0].isNull()) { count++; }\n if (!this.elt[1].isNull()) { count++; }\n return count\n};\nLabel.prototype.setAllLocations = function setAllLocations (geomIndex, location) {\n this.elt[geomIndex].setAllLocations(location);\n};\nLabel.prototype.isNull = function isNull (geomIndex) {\n return this.elt[geomIndex].isNull()\n};\nLabel.prototype.setAllLocationsIfNull = function setAllLocationsIfNull () {\n if (arguments.length === 1) {\n var location = arguments[0];\n this.setAllLocationsIfNull(0, location);\n this.setAllLocationsIfNull(1, location);\n } else if (arguments.length === 2) {\n var geomIndex = arguments[0];\n var location$1 = arguments[1];\n this.elt[geomIndex].setAllLocationsIfNull(location$1);\n }\n};\nLabel.prototype.isLine = function isLine (geomIndex) {\n return this.elt[geomIndex].isLine()\n};\nLabel.prototype.merge = function merge (lbl) {\n var this$1 = this;\n\n for (var i = 0; i < 2; i++) {\n if (this$1.elt[i] === null && lbl.elt[i] !== null) {\n this$1.elt[i] = new TopologyLocation(lbl.elt[i]);\n } else {\n this$1.elt[i].merge(lbl.elt[i]);\n }\n }\n};\nLabel.prototype.flip = function flip () {\n this.elt[0].flip();\n this.elt[1].flip();\n};\nLabel.prototype.getLocation = function getLocation () {\n if (arguments.length === 1) {\n var geomIndex = arguments[0];\n return this.elt[geomIndex].get(Position.ON)\n } else if (arguments.length === 2) {\n var geomIndex$1 = arguments[0];\n var posIndex = arguments[1];\n return this.elt[geomIndex$1].get(posIndex)\n }\n};\nLabel.prototype.toString = function toString () {\n var buf = new StringBuffer();\n if (this.elt[0] !== null) {\n buf.append('A:');\n buf.append(this.elt[0].toString());\n }\n if (this.elt[1] !== null) {\n buf.append(' B:');\n buf.append(this.elt[1].toString());\n }\n return buf.toString()\n};\nLabel.prototype.isArea = function isArea () {\n if (arguments.length === 0) {\n return this.elt[0].isArea() || this.elt[1].isArea()\n } else if (arguments.length === 1) {\n var geomIndex = arguments[0];\n return this.elt[geomIndex].isArea()\n }\n};\nLabel.prototype.isAnyNull = function isAnyNull (geomIndex) {\n return this.elt[geomIndex].isAnyNull()\n};\nLabel.prototype.setLocation = function setLocation () {\n if (arguments.length === 2) {\n var geomIndex = arguments[0];\n var location = arguments[1];\n this.elt[geomIndex].setLocation(Position.ON, location);\n } else if (arguments.length === 3) {\n var geomIndex$1 = arguments[0];\n var posIndex = arguments[1];\n var location$1 = arguments[2];\n this.elt[geomIndex$1].setLocation(posIndex, location$1);\n }\n};\nLabel.prototype.isEqualOnSide = function isEqualOnSide (lbl, side) {\n return this.elt[0].isEqualOnSide(lbl.elt[0], side) && this.elt[1].isEqualOnSide(lbl.elt[1], side)\n};\nLabel.prototype.allPositionsEqual = function allPositionsEqual (geomIndex, loc) {\n return this.elt[geomIndex].allPositionsEqual(loc)\n};\nLabel.prototype.toLine = function toLine (geomIndex) {\n if (this.elt[geomIndex].isArea()) { this.elt[geomIndex] = new TopologyLocation(this.elt[geomIndex].location[0]); }\n};\nLabel.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nLabel.prototype.getClass = function getClass () {\n return Label\n};\nLabel.toLineLabel = function toLineLabel (label) {\n var lineLabel = new Label(Location.NONE);\n for (var i = 0; i < 2; i++) {\n lineLabel.setLocation(i, label.getLocation(i));\n }\n return lineLabel\n};\n\nvar EdgeRing = function EdgeRing () {\n this._startDe = null;\n this._maxNodeDegree = -1;\n this._edges = new ArrayList();\n this._pts = new ArrayList();\n this._label = new Label(Location.NONE);\n this._ring = null;\n this._isHole = null;\n this._shell = null;\n this._holes = new ArrayList();\n this._geometryFactory = null;\n var start = arguments[0];\n var geometryFactory = arguments[1];\n this._geometryFactory = geometryFactory;\n this.computePoints(start);\n this.computeRing();\n};\nEdgeRing.prototype.computeRing = function computeRing () {\n var this$1 = this;\n\n if (this._ring !== null) { return null }\n var coord = new Array(this._pts.size()).fill(null);\n for (var i = 0; i < this._pts.size(); i++) {\n coord[i] = this$1._pts.get(i);\n }\n this._ring = this._geometryFactory.createLinearRing(coord);\n this._isHole = CGAlgorithms.isCCW(this._ring.getCoordinates());\n};\nEdgeRing.prototype.isIsolated = function isIsolated () {\n return this._label.getGeometryCount() === 1\n};\nEdgeRing.prototype.computePoints = function computePoints (start) {\n var this$1 = this;\n\n this._startDe = start;\n var de = start;\n var isFirstEdge = true;\n do {\n if (de === null) { throw new TopologyException('Found null DirectedEdge') }\n if (de.getEdgeRing() === this$1) { throw new TopologyException('Directed Edge visited twice during ring-building at ' + de.getCoordinate()) }\n this$1._edges.add(de);\n var label = de.getLabel();\n Assert.isTrue(label.isArea());\n this$1.mergeLabel(label);\n this$1.addPoints(de.getEdge(), de.isForward(), isFirstEdge);\n isFirstEdge = false;\n this$1.setEdgeRing(de, this$1);\n de = this$1.getNext(de);\n } while (de !== this._startDe)\n};\nEdgeRing.prototype.getLinearRing = function getLinearRing () {\n return this._ring\n};\nEdgeRing.prototype.getCoordinate = function getCoordinate (i) {\n return this._pts.get(i)\n};\nEdgeRing.prototype.computeMaxNodeDegree = function computeMaxNodeDegree () {\n var this$1 = this;\n\n this._maxNodeDegree = 0;\n var de = this._startDe;\n do {\n var node = de.getNode();\n var degree = node.getEdges().getOutgoingDegree(this$1);\n if (degree > this$1._maxNodeDegree) { this$1._maxNodeDegree = degree; }\n de = this$1.getNext(de);\n } while (de !== this._startDe)\n this._maxNodeDegree *= 2;\n};\nEdgeRing.prototype.addPoints = function addPoints (edge, isForward, isFirstEdge) {\n var this$1 = this;\n\n var edgePts = edge.getCoordinates();\n if (isForward) {\n var startIndex = 1;\n if (isFirstEdge) { startIndex = 0; }\n for (var i = startIndex; i < edgePts.length; i++) {\n this$1._pts.add(edgePts[i]);\n }\n } else {\n var startIndex$1 = edgePts.length - 2;\n if (isFirstEdge) { startIndex$1 = edgePts.length - 1; }\n for (var i$1 = startIndex$1; i$1 >= 0; i$1--) {\n this$1._pts.add(edgePts[i$1]);\n }\n }\n};\nEdgeRing.prototype.isHole = function isHole () {\n return this._isHole\n};\nEdgeRing.prototype.setInResult = function setInResult () {\n var de = this._startDe;\n do {\n de.getEdge().setInResult(true);\n de = de.getNext();\n } while (de !== this._startDe)\n};\nEdgeRing.prototype.containsPoint = function containsPoint (p) {\n var shell = this.getLinearRing();\n var env = shell.getEnvelopeInternal();\n if (!env.contains(p)) { return false }\n if (!CGAlgorithms.isPointInRing(p, shell.getCoordinates())) { return false }\n for (var i = this._holes.iterator(); i.hasNext();) {\n var hole = i.next();\n if (hole.containsPoint(p)) { return false }\n }\n return true\n};\nEdgeRing.prototype.addHole = function addHole (ring) {\n this._holes.add(ring);\n};\nEdgeRing.prototype.isShell = function isShell () {\n return this._shell === null\n};\nEdgeRing.prototype.getLabel = function getLabel () {\n return this._label\n};\nEdgeRing.prototype.getEdges = function getEdges () {\n return this._edges\n};\nEdgeRing.prototype.getMaxNodeDegree = function getMaxNodeDegree () {\n if (this._maxNodeDegree < 0) { this.computeMaxNodeDegree(); }\n return this._maxNodeDegree\n};\nEdgeRing.prototype.getShell = function getShell () {\n return this._shell\n};\nEdgeRing.prototype.mergeLabel = function mergeLabel () {\n if (arguments.length === 1) {\n var deLabel = arguments[0];\n this.mergeLabel(deLabel, 0);\n this.mergeLabel(deLabel, 1);\n } else if (arguments.length === 2) {\n var deLabel$1 = arguments[0];\n var geomIndex = arguments[1];\n var loc = deLabel$1.getLocation(geomIndex, Position.RIGHT);\n if (loc === Location.NONE) { return null }\n if (this._label.getLocation(geomIndex) === Location.NONE) {\n this._label.setLocation(geomIndex, loc);\n return null\n }\n }\n};\nEdgeRing.prototype.setShell = function setShell (shell) {\n this._shell = shell;\n if (shell !== null) { shell.addHole(this); }\n};\nEdgeRing.prototype.toPolygon = function toPolygon (geometryFactory) {\n var this$1 = this;\n\n var holeLR = new Array(this._holes.size()).fill(null);\n for (var i = 0; i < this._holes.size(); i++) {\n holeLR[i] = this$1._holes.get(i).getLinearRing();\n }\n var poly = geometryFactory.createPolygon(this.getLinearRing(), holeLR);\n return poly\n};\nEdgeRing.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nEdgeRing.prototype.getClass = function getClass () {\n return EdgeRing\n};\n\nvar MinimalEdgeRing = (function (EdgeRing$$1) {\n function MinimalEdgeRing () {\n var start = arguments[0];\n var geometryFactory = arguments[1];\n EdgeRing$$1.call(this, start, geometryFactory);\n }\n\n if ( EdgeRing$$1 ) MinimalEdgeRing.__proto__ = EdgeRing$$1;\n MinimalEdgeRing.prototype = Object.create( EdgeRing$$1 && EdgeRing$$1.prototype );\n MinimalEdgeRing.prototype.constructor = MinimalEdgeRing;\n MinimalEdgeRing.prototype.setEdgeRing = function setEdgeRing (de, er) {\n de.setMinEdgeRing(er);\n };\n MinimalEdgeRing.prototype.getNext = function getNext (de) {\n return de.getNextMin()\n };\n MinimalEdgeRing.prototype.interfaces_ = function interfaces_ () {\n return []\n };\n MinimalEdgeRing.prototype.getClass = function getClass () {\n return MinimalEdgeRing\n };\n\n return MinimalEdgeRing;\n}(EdgeRing));\n\nvar MaximalEdgeRing = (function (EdgeRing$$1) {\n function MaximalEdgeRing () {\n var start = arguments[0];\n var geometryFactory = arguments[1];\n EdgeRing$$1.call(this, start, geometryFactory);\n }\n\n if ( EdgeRing$$1 ) MaximalEdgeRing.__proto__ = EdgeRing$$1;\n MaximalEdgeRing.prototype = Object.create( EdgeRing$$1 && EdgeRing$$1.prototype );\n MaximalEdgeRing.prototype.constructor = MaximalEdgeRing;\n MaximalEdgeRing.prototype.buildMinimalRings = function buildMinimalRings () {\n var this$1 = this;\n\n var minEdgeRings = new ArrayList();\n var de = this._startDe;\n do {\n if (de.getMinEdgeRing() === null) {\n var minEr = new MinimalEdgeRing(de, this$1._geometryFactory);\n minEdgeRings.add(minEr);\n }\n de = de.getNext();\n } while (de !== this._startDe)\n return minEdgeRings\n };\n MaximalEdgeRing.prototype.setEdgeRing = function setEdgeRing (de, er) {\n de.setEdgeRing(er);\n };\n MaximalEdgeRing.prototype.linkDirectedEdgesForMinimalEdgeRings = function linkDirectedEdgesForMinimalEdgeRings () {\n var this$1 = this;\n\n var de = this._startDe;\n do {\n var node = de.getNode();\n node.getEdges().linkMinimalDirectedEdges(this$1);\n de = de.getNext();\n } while (de !== this._startDe)\n };\n MaximalEdgeRing.prototype.getNext = function getNext (de) {\n return de.getNext()\n };\n MaximalEdgeRing.prototype.interfaces_ = function interfaces_ () {\n return []\n };\n MaximalEdgeRing.prototype.getClass = function getClass () {\n return MaximalEdgeRing\n };\n\n return MaximalEdgeRing;\n}(EdgeRing));\n\nvar GraphComponent = function GraphComponent () {\n this._label = null;\n this._isInResult = false;\n this._isCovered = false;\n this._isCoveredSet = false;\n this._isVisited = false;\n if (arguments.length === 0) {} else if (arguments.length === 1) {\n var label = arguments[0];\n this._label = label;\n }\n};\nGraphComponent.prototype.setVisited = function setVisited (isVisited) {\n this._isVisited = isVisited;\n};\nGraphComponent.prototype.setInResult = function setInResult (isInResult) {\n this._isInResult = isInResult;\n};\nGraphComponent.prototype.isCovered = function isCovered () {\n return this._isCovered\n};\nGraphComponent.prototype.isCoveredSet = function isCoveredSet () {\n return this._isCoveredSet\n};\nGraphComponent.prototype.setLabel = function setLabel (label) {\n this._label = label;\n};\nGraphComponent.prototype.getLabel = function getLabel () {\n return this._label\n};\nGraphComponent.prototype.setCovered = function setCovered (isCovered) {\n this._isCovered = isCovered;\n this._isCoveredSet = true;\n};\nGraphComponent.prototype.updateIM = function updateIM (im) {\n Assert.isTrue(this._label.getGeometryCount() >= 2, 'found partial label');\n this.computeIM(im);\n};\nGraphComponent.prototype.isInResult = function isInResult () {\n return this._isInResult\n};\nGraphComponent.prototype.isVisited = function isVisited () {\n return this._isVisited\n};\nGraphComponent.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nGraphComponent.prototype.getClass = function getClass () {\n return GraphComponent\n};\n\nvar Node = (function (GraphComponent$$1) {\n function Node () {\n GraphComponent$$1.call(this);\n this._coord = null;\n this._edges = null;\n var coord = arguments[0];\n var edges = arguments[1];\n this._coord = coord;\n this._edges = edges;\n this._label = new Label(0, Location.NONE);\n }\n\n if ( GraphComponent$$1 ) Node.__proto__ = GraphComponent$$1;\n Node.prototype = Object.create( GraphComponent$$1 && GraphComponent$$1.prototype );\n Node.prototype.constructor = Node;\n Node.prototype.isIncidentEdgeInResult = function isIncidentEdgeInResult () {\n for (var it = this.getEdges().getEdges().iterator(); it.hasNext();) {\n var de = it.next();\n if (de.getEdge().isInResult()) { return true }\n }\n return false\n };\n Node.prototype.isIsolated = function isIsolated () {\n return this._label.getGeometryCount() === 1\n };\n Node.prototype.getCoordinate = function getCoordinate () {\n return this._coord\n };\n Node.prototype.print = function print (out) {\n out.println('node ' + this._coord + ' lbl: ' + this._label);\n };\n Node.prototype.computeIM = function computeIM (im) {};\n Node.prototype.computeMergedLocation = function computeMergedLocation (label2, eltIndex) {\n var loc = Location.NONE;\n loc = this._label.getLocation(eltIndex);\n if (!label2.isNull(eltIndex)) {\n var nLoc = label2.getLocation(eltIndex);\n if (loc !== Location.BOUNDARY) { loc = nLoc; }\n }\n return loc\n };\n Node.prototype.setLabel = function setLabel () {\n if (arguments.length === 2) {\n var argIndex = arguments[0];\n var onLocation = arguments[1];\n if (this._label === null) {\n this._label = new Label(argIndex, onLocation);\n } else { this._label.setLocation(argIndex, onLocation); }\n } else { return GraphComponent$$1.prototype.setLabel.apply(this, arguments) }\n };\n Node.prototype.getEdges = function getEdges () {\n return this._edges\n };\n Node.prototype.mergeLabel = function mergeLabel () {\n var this$1 = this;\n\n if (arguments[0] instanceof Node) {\n var n = arguments[0];\n this.mergeLabel(n._label);\n } else if (arguments[0] instanceof Label) {\n var label2 = arguments[0];\n for (var i = 0; i < 2; i++) {\n var loc = this$1.computeMergedLocation(label2, i);\n var thisLoc = this$1._label.getLocation(i);\n if (thisLoc === Location.NONE) { this$1._label.setLocation(i, loc); }\n }\n }\n };\n Node.prototype.add = function add (e) {\n this._edges.insert(e);\n e.setNode(this);\n };\n Node.prototype.setLabelBoundary = function setLabelBoundary (argIndex) {\n if (this._label === null) { return null }\n var loc = Location.NONE;\n if (this._label !== null) { loc = this._label.getLocation(argIndex); }\n var newLoc = null;\n switch (loc) {\n case Location.BOUNDARY:\n newLoc = Location.INTERIOR;\n break\n case Location.INTERIOR:\n newLoc = Location.BOUNDARY;\n break\n default:\n newLoc = Location.BOUNDARY;\n break\n }\n this._label.setLocation(argIndex, newLoc);\n };\n Node.prototype.interfaces_ = function interfaces_ () {\n return []\n };\n Node.prototype.getClass = function getClass () {\n return Node\n };\n\n return Node;\n}(GraphComponent));\n\nvar NodeMap = function NodeMap () {\n this.nodeMap = new TreeMap();\n this.nodeFact = null;\n var nodeFact = arguments[0];\n this.nodeFact = nodeFact;\n};\nNodeMap.prototype.find = function find (coord) {\n return this.nodeMap.get(coord)\n};\nNodeMap.prototype.addNode = function addNode () {\n if (arguments[0] instanceof Coordinate) {\n var coord = arguments[0];\n var node = this.nodeMap.get(coord);\n if (node === null) {\n node = this.nodeFact.createNode(coord);\n this.nodeMap.put(coord, node);\n }\n return node\n } else if (arguments[0] instanceof Node) {\n var n = arguments[0];\n var node$1 = this.nodeMap.get(n.getCoordinate());\n if (node$1 === null) {\n this.nodeMap.put(n.getCoordinate(), n);\n return n\n }\n node$1.mergeLabel(n);\n return node$1\n }\n};\nNodeMap.prototype.print = function print (out) {\n for (var it = this.iterator(); it.hasNext();) {\n var n = it.next();\n n.print(out);\n }\n};\nNodeMap.prototype.iterator = function iterator () {\n return this.nodeMap.values().iterator()\n};\nNodeMap.prototype.values = function values () {\n return this.nodeMap.values()\n};\nNodeMap.prototype.getBoundaryNodes = function getBoundaryNodes (geomIndex) {\n var bdyNodes = new ArrayList();\n for (var i = this.iterator(); i.hasNext();) {\n var node = i.next();\n if (node.getLabel().getLocation(geomIndex) === Location.BOUNDARY) { bdyNodes.add(node); }\n }\n return bdyNodes\n};\nNodeMap.prototype.add = function add (e) {\n var p = e.getCoordinate();\n var n = this.addNode(p);\n n.add(e);\n};\nNodeMap.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nNodeMap.prototype.getClass = function getClass () {\n return NodeMap\n};\n\nvar Quadrant = function Quadrant () {};\n\nvar staticAccessors$21 = { NE: { configurable: true },NW: { configurable: true },SW: { configurable: true },SE: { configurable: true } };\n\nQuadrant.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nQuadrant.prototype.getClass = function getClass () {\n return Quadrant\n};\nQuadrant.isNorthern = function isNorthern (quad) {\n return quad === Quadrant.NE || quad === Quadrant.NW\n};\nQuadrant.isOpposite = function isOpposite (quad1, quad2) {\n if (quad1 === quad2) { return false }\n var diff = (quad1 - quad2 + 4) % 4;\n if (diff === 2) { return true }\n return false\n};\nQuadrant.commonHalfPlane = function commonHalfPlane (quad1, quad2) {\n if (quad1 === quad2) { return quad1 }\n var diff = (quad1 - quad2 + 4) % 4;\n if (diff === 2) { return -1 }\n var min = quad1 < quad2 ? quad1 : quad2;\n var max = quad1 > quad2 ? quad1 : quad2;\n if (min === 0 && max === 3) { return 3 }\n return min\n};\nQuadrant.isInHalfPlane = function isInHalfPlane (quad, halfPlane) {\n if (halfPlane === Quadrant.SE) {\n return quad === Quadrant.SE || quad === Quadrant.SW\n }\n return quad === halfPlane || quad === halfPlane + 1\n};\nQuadrant.quadrant = function quadrant () {\n if (typeof arguments[0] === 'number' && typeof arguments[1] === 'number') {\n var dx = arguments[0];\n var dy = arguments[1];\n if (dx === 0.0 && dy === 0.0) { throw new IllegalArgumentException('Cannot compute the quadrant for point ( ' + dx + ', ' + dy + ' )') }\n if (dx >= 0.0) {\n if (dy >= 0.0) { return Quadrant.NE; } else { return Quadrant.SE }\n } else {\n if (dy >= 0.0) { return Quadrant.NW; } else { return Quadrant.SW }\n }\n } else if (arguments[0] instanceof Coordinate && arguments[1] instanceof Coordinate) {\n var p0 = arguments[0];\n var p1 = arguments[1];\n if (p1.x === p0.x && p1.y === p0.y) { throw new IllegalArgumentException('Cannot compute the quadrant for two identical points ' + p0) }\n if (p1.x >= p0.x) {\n if (p1.y >= p0.y) { return Quadrant.NE; } else { return Quadrant.SE }\n } else {\n if (p1.y >= p0.y) { return Quadrant.NW; } else { return Quadrant.SW }\n }\n }\n};\nstaticAccessors$21.NE.get = function () { return 0 };\nstaticAccessors$21.NW.get = function () { return 1 };\nstaticAccessors$21.SW.get = function () { return 2 };\nstaticAccessors$21.SE.get = function () { return 3 };\n\nObject.defineProperties( Quadrant, staticAccessors$21 );\n\nvar EdgeEnd = function EdgeEnd () {\n this._edge = null;\n this._label = null;\n this._node = null;\n this._p0 = null;\n this._p1 = null;\n this._dx = null;\n this._dy = null;\n this._quadrant = null;\n if (arguments.length === 1) {\n var edge = arguments[0];\n this._edge = edge;\n } else if (arguments.length === 3) {\n var edge$1 = arguments[0];\n var p0 = arguments[1];\n var p1 = arguments[2];\n var label = null;\n this._edge = edge$1;\n this.init(p0, p1);\n this._label = label;\n } else if (arguments.length === 4) {\n var edge$2 = arguments[0];\n var p0$1 = arguments[1];\n var p1$1 = arguments[2];\n var label$1 = arguments[3];\n this._edge = edge$2;\n this.init(p0$1, p1$1);\n this._label = label$1;\n }\n};\nEdgeEnd.prototype.compareDirection = function compareDirection (e) {\n if (this._dx === e._dx && this._dy === e._dy) { return 0 }\n if (this._quadrant > e._quadrant) { return 1 }\n if (this._quadrant < e._quadrant) { return -1 }\n return CGAlgorithms.computeOrientation(e._p0, e._p1, this._p1)\n};\nEdgeEnd.prototype.getDy = function getDy () {\n return this._dy\n};\nEdgeEnd.prototype.getCoordinate = function getCoordinate () {\n return this._p0\n};\nEdgeEnd.prototype.setNode = function setNode (node) {\n this._node = node;\n};\nEdgeEnd.prototype.print = function print (out) {\n var angle = Math.atan2(this._dy, this._dx);\n var className = this.getClass().getName();\n var lastDotPos = className.lastIndexOf('.');\n var name = className.substring(lastDotPos + 1);\n out.print(' ' + name + ': ' + this._p0 + ' - ' + this._p1 + ' ' + this._quadrant + ':' + angle + ' ' + this._label);\n};\nEdgeEnd.prototype.compareTo = function compareTo (obj) {\n var e = obj;\n return this.compareDirection(e)\n};\nEdgeEnd.prototype.getDirectedCoordinate = function getDirectedCoordinate () {\n return this._p1\n};\nEdgeEnd.prototype.getDx = function getDx () {\n return this._dx\n};\nEdgeEnd.prototype.getLabel = function getLabel () {\n return this._label\n};\nEdgeEnd.prototype.getEdge = function getEdge () {\n return this._edge\n};\nEdgeEnd.prototype.getQuadrant = function getQuadrant () {\n return this._quadrant\n};\nEdgeEnd.prototype.getNode = function getNode () {\n return this._node\n};\nEdgeEnd.prototype.toString = function toString () {\n var angle = Math.atan2(this._dy, this._dx);\n var className = this.getClass().getName();\n var lastDotPos = className.lastIndexOf('.');\n var name = className.substring(lastDotPos + 1);\n return ' ' + name + ': ' + this._p0 + ' - ' + this._p1 + ' ' + this._quadrant + ':' + angle + ' ' + this._label\n};\nEdgeEnd.prototype.computeLabel = function computeLabel (boundaryNodeRule) {};\nEdgeEnd.prototype.init = function init (p0, p1) {\n this._p0 = p0;\n this._p1 = p1;\n this._dx = p1.x - p0.x;\n this._dy = p1.y - p0.y;\n this._quadrant = Quadrant.quadrant(this._dx, this._dy);\n Assert.isTrue(!(this._dx === 0 && this._dy === 0), 'EdgeEnd with identical endpoints found');\n};\nEdgeEnd.prototype.interfaces_ = function interfaces_ () {\n return [Comparable]\n};\nEdgeEnd.prototype.getClass = function getClass () {\n return EdgeEnd\n};\n\nvar DirectedEdge = (function (EdgeEnd$$1) {\n function DirectedEdge () {\n var edge = arguments[0];\n var isForward = arguments[1];\n EdgeEnd$$1.call(this, edge);\n this._isForward = null;\n this._isInResult = false;\n this._isVisited = false;\n this._sym = null;\n this._next = null;\n this._nextMin = null;\n this._edgeRing = null;\n this._minEdgeRing = null;\n this._depth = [0, -999, -999];\n this._isForward = isForward;\n if (isForward) {\n this.init(edge.getCoordinate(0), edge.getCoordinate(1));\n } else {\n var n = edge.getNumPoints() - 1;\n this.init(edge.getCoordinate(n), edge.getCoordinate(n - 1));\n }\n this.computeDirectedLabel();\n }\n\n if ( EdgeEnd$$1 ) DirectedEdge.__proto__ = EdgeEnd$$1;\n DirectedEdge.prototype = Object.create( EdgeEnd$$1 && EdgeEnd$$1.prototype );\n DirectedEdge.prototype.constructor = DirectedEdge;\n DirectedEdge.prototype.getNextMin = function getNextMin () {\n return this._nextMin\n };\n DirectedEdge.prototype.getDepth = function getDepth (position) {\n return this._depth[position]\n };\n DirectedEdge.prototype.setVisited = function setVisited (isVisited) {\n this._isVisited = isVisited;\n };\n DirectedEdge.prototype.computeDirectedLabel = function computeDirectedLabel () {\n this._label = new Label(this._edge.getLabel());\n if (!this._isForward) { this._label.flip(); }\n };\n DirectedEdge.prototype.getNext = function getNext () {\n return this._next\n };\n DirectedEdge.prototype.setDepth = function setDepth (position, depthVal) {\n if (this._depth[position] !== -999) {\n if (this._depth[position] !== depthVal) { throw new TopologyException('assigned depths do not match', this.getCoordinate()) }\n }\n this._depth[position] = depthVal;\n };\n DirectedEdge.prototype.isInteriorAreaEdge = function isInteriorAreaEdge () {\n var this$1 = this;\n\n var isInteriorAreaEdge = true;\n for (var i = 0; i < 2; i++) {\n if (!(this$1._label.isArea(i) && this$1._label.getLocation(i, Position.LEFT) === Location.INTERIOR && this$1._label.getLocation(i, Position.RIGHT) === Location.INTERIOR)) {\n isInteriorAreaEdge = false;\n }\n }\n return isInteriorAreaEdge\n };\n DirectedEdge.prototype.setNextMin = function setNextMin (nextMin) {\n this._nextMin = nextMin;\n };\n DirectedEdge.prototype.print = function print (out) {\n EdgeEnd$$1.prototype.print.call(this, out);\n out.print(' ' + this._depth[Position.LEFT] + '/' + this._depth[Position.RIGHT]);\n out.print(' (' + this.getDepthDelta() + ')');\n if (this._isInResult) { out.print(' inResult'); }\n };\n DirectedEdge.prototype.setMinEdgeRing = function setMinEdgeRing (minEdgeRing) {\n this._minEdgeRing = minEdgeRing;\n };\n DirectedEdge.prototype.isLineEdge = function isLineEdge () {\n var isLine = this._label.isLine(0) || this._label.isLine(1);\n var isExteriorIfArea0 = !this._label.isArea(0) || this._label.allPositionsEqual(0, Location.EXTERIOR);\n var isExteriorIfArea1 = !this._label.isArea(1) || this._label.allPositionsEqual(1, Location.EXTERIOR);\n return isLine && isExteriorIfArea0 && isExteriorIfArea1\n };\n DirectedEdge.prototype.setEdgeRing = function setEdgeRing (edgeRing) {\n this._edgeRing = edgeRing;\n };\n DirectedEdge.prototype.getMinEdgeRing = function getMinEdgeRing () {\n return this._minEdgeRing\n };\n DirectedEdge.prototype.getDepthDelta = function getDepthDelta () {\n var depthDelta = this._edge.getDepthDelta();\n if (!this._isForward) { depthDelta = -depthDelta; }\n return depthDelta\n };\n DirectedEdge.prototype.setInResult = function setInResult (isInResult) {\n this._isInResult = isInResult;\n };\n DirectedEdge.prototype.getSym = function getSym () {\n return this._sym\n };\n DirectedEdge.prototype.isForward = function isForward () {\n return this._isForward\n };\n DirectedEdge.prototype.getEdge = function getEdge () {\n return this._edge\n };\n DirectedEdge.prototype.printEdge = function printEdge (out) {\n this.print(out);\n out.print(' ');\n if (this._isForward) { this._edge.print(out); } else { this._edge.printReverse(out); }\n };\n DirectedEdge.prototype.setSym = function setSym (de) {\n this._sym = de;\n };\n DirectedEdge.prototype.setVisitedEdge = function setVisitedEdge (isVisited) {\n this.setVisited(isVisited);\n this._sym.setVisited(isVisited);\n };\n DirectedEdge.prototype.setEdgeDepths = function setEdgeDepths (position, depth) {\n var depthDelta = this.getEdge().getDepthDelta();\n if (!this._isForward) { depthDelta = -depthDelta; }\n var directionFactor = 1;\n if (position === Position.LEFT) { directionFactor = -1; }\n var oppositePos = Position.opposite(position);\n var delta = depthDelta * directionFactor;\n var oppositeDepth = depth + delta;\n this.setDepth(position, depth);\n this.setDepth(oppositePos, oppositeDepth);\n };\n DirectedEdge.prototype.getEdgeRing = function getEdgeRing () {\n return this._edgeRing\n };\n DirectedEdge.prototype.isInResult = function isInResult () {\n return this._isInResult\n };\n DirectedEdge.prototype.setNext = function setNext (next) {\n this._next = next;\n };\n DirectedEdge.prototype.isVisited = function isVisited () {\n return this._isVisited\n };\n DirectedEdge.prototype.interfaces_ = function interfaces_ () {\n return []\n };\n DirectedEdge.prototype.getClass = function getClass () {\n return DirectedEdge\n };\n DirectedEdge.depthFactor = function depthFactor (currLocation, nextLocation) {\n if (currLocation === Location.EXTERIOR && nextLocation === Location.INTERIOR) { return 1; } else if (currLocation === Location.INTERIOR && nextLocation === Location.EXTERIOR) { return -1 }\n return 0\n };\n\n return DirectedEdge;\n}(EdgeEnd));\n\nvar NodeFactory = function NodeFactory () {};\n\nNodeFactory.prototype.createNode = function createNode (coord) {\n return new Node(coord, null)\n};\nNodeFactory.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nNodeFactory.prototype.getClass = function getClass () {\n return NodeFactory\n};\n\nvar PlanarGraph = function PlanarGraph () {\n this._edges = new ArrayList();\n this._nodes = null;\n this._edgeEndList = new ArrayList();\n if (arguments.length === 0) {\n this._nodes = new NodeMap(new NodeFactory());\n } else if (arguments.length === 1) {\n var nodeFact = arguments[0];\n this._nodes = new NodeMap(nodeFact);\n }\n};\nPlanarGraph.prototype.printEdges = function printEdges (out) {\n var this$1 = this;\n\n out.println('Edges:');\n for (var i = 0; i < this._edges.size(); i++) {\n out.println('edge ' + i + ':');\n var e = this$1._edges.get(i);\n e.print(out);\n e.eiList.print(out);\n }\n};\nPlanarGraph.prototype.find = function find (coord) {\n return this._nodes.find(coord)\n};\nPlanarGraph.prototype.addNode = function addNode () {\n if (arguments[0] instanceof Node) {\n var node = arguments[0];\n return this._nodes.addNode(node)\n } else if (arguments[0] instanceof Coordinate) {\n var coord = arguments[0];\n return this._nodes.addNode(coord)\n }\n};\nPlanarGraph.prototype.getNodeIterator = function getNodeIterator () {\n return this._nodes.iterator()\n};\nPlanarGraph.prototype.linkResultDirectedEdges = function linkResultDirectedEdges () {\n for (var nodeit = this._nodes.iterator(); nodeit.hasNext();) {\n var node = nodeit.next();\n node.getEdges().linkResultDirectedEdges();\n }\n};\nPlanarGraph.prototype.debugPrintln = function debugPrintln (o) {\n System.out.println(o);\n};\nPlanarGraph.prototype.isBoundaryNode = function isBoundaryNode (geomIndex, coord) {\n var node = this._nodes.find(coord);\n if (node === null) { return false }\n var label = node.getLabel();\n if (label !== null && label.getLocation(geomIndex) === Location.BOUNDARY) { return true }\n return false\n};\nPlanarGraph.prototype.linkAllDirectedEdges = function linkAllDirectedEdges () {\n for (var nodeit = this._nodes.iterator(); nodeit.hasNext();) {\n var node = nodeit.next();\n node.getEdges().linkAllDirectedEdges();\n }\n};\nPlanarGraph.prototype.matchInSameDirection = function matchInSameDirection (p0, p1, ep0, ep1) {\n if (!p0.equals(ep0)) { return false }\n if (CGAlgorithms.computeOrientation(p0, p1, ep1) === CGAlgorithms.COLLINEAR && Quadrant.quadrant(p0, p1) === Quadrant.quadrant(ep0, ep1)) { return true }\n return false\n};\nPlanarGraph.prototype.getEdgeEnds = function getEdgeEnds () {\n return this._edgeEndList\n};\nPlanarGraph.prototype.debugPrint = function debugPrint (o) {\n System.out.print(o);\n};\nPlanarGraph.prototype.getEdgeIterator = function getEdgeIterator () {\n return this._edges.iterator()\n};\nPlanarGraph.prototype.findEdgeInSameDirection = function findEdgeInSameDirection (p0, p1) {\n var this$1 = this;\n\n for (var i = 0; i < this._edges.size(); i++) {\n var e = this$1._edges.get(i);\n var eCoord = e.getCoordinates();\n if (this$1.matchInSameDirection(p0, p1, eCoord[0], eCoord[1])) { return e }\n if (this$1.matchInSameDirection(p0, p1, eCoord[eCoord.length - 1], eCoord[eCoord.length - 2])) { return e }\n }\n return null\n};\nPlanarGraph.prototype.insertEdge = function insertEdge (e) {\n this._edges.add(e);\n};\nPlanarGraph.prototype.findEdgeEnd = function findEdgeEnd (e) {\n for (var i = this.getEdgeEnds().iterator(); i.hasNext();) {\n var ee = i.next();\n if (ee.getEdge() === e) { return ee }\n }\n return null\n};\nPlanarGraph.prototype.addEdges = function addEdges (edgesToAdd) {\n var this$1 = this;\n\n for (var it = edgesToAdd.iterator(); it.hasNext();) {\n var e = it.next();\n this$1._edges.add(e);\n var de1 = new DirectedEdge(e, true);\n var de2 = new DirectedEdge(e, false);\n de1.setSym(de2);\n de2.setSym(de1);\n this$1.add(de1);\n this$1.add(de2);\n }\n};\nPlanarGraph.prototype.add = function add (e) {\n this._nodes.add(e);\n this._edgeEndList.add(e);\n};\nPlanarGraph.prototype.getNodes = function getNodes () {\n return this._nodes.values()\n};\nPlanarGraph.prototype.findEdge = function findEdge (p0, p1) {\n var this$1 = this;\n\n for (var i = 0; i < this._edges.size(); i++) {\n var e = this$1._edges.get(i);\n var eCoord = e.getCoordinates();\n if (p0.equals(eCoord[0]) && p1.equals(eCoord[1])) { return e }\n }\n return null\n};\nPlanarGraph.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nPlanarGraph.prototype.getClass = function getClass () {\n return PlanarGraph\n};\nPlanarGraph.linkResultDirectedEdges = function linkResultDirectedEdges (nodes) {\n for (var nodeit = nodes.iterator(); nodeit.hasNext();) {\n var node = nodeit.next();\n node.getEdges().linkResultDirectedEdges();\n }\n};\n\nvar PolygonBuilder = function PolygonBuilder () {\n this._geometryFactory = null;\n this._shellList = new ArrayList();\n var geometryFactory = arguments[0];\n this._geometryFactory = geometryFactory;\n};\nPolygonBuilder.prototype.sortShellsAndHoles = function sortShellsAndHoles (edgeRings, shellList, freeHoleList) {\n for (var it = edgeRings.iterator(); it.hasNext();) {\n var er = it.next();\n if (er.isHole()) {\n freeHoleList.add(er);\n } else {\n shellList.add(er);\n }\n }\n};\nPolygonBuilder.prototype.computePolygons = function computePolygons (shellList) {\n var this$1 = this;\n\n var resultPolyList = new ArrayList();\n for (var it = shellList.iterator(); it.hasNext();) {\n var er = it.next();\n var poly = er.toPolygon(this$1._geometryFactory);\n resultPolyList.add(poly);\n }\n return resultPolyList\n};\nPolygonBuilder.prototype.placeFreeHoles = function placeFreeHoles (shellList, freeHoleList) {\n var this$1 = this;\n\n for (var it = freeHoleList.iterator(); it.hasNext();) {\n var hole = it.next();\n if (hole.getShell() === null) {\n var shell = this$1.findEdgeRingContaining(hole, shellList);\n if (shell === null) { throw new TopologyException('unable to assign hole to a shell', hole.getCoordinate(0)) }\n hole.setShell(shell);\n }\n }\n};\nPolygonBuilder.prototype.buildMinimalEdgeRings = function buildMinimalEdgeRings (maxEdgeRings, shellList, freeHoleList) {\n var this$1 = this;\n\n var edgeRings = new ArrayList();\n for (var it = maxEdgeRings.iterator(); it.hasNext();) {\n var er = it.next();\n if (er.getMaxNodeDegree() > 2) {\n er.linkDirectedEdgesForMinimalEdgeRings();\n var minEdgeRings = er.buildMinimalRings();\n var shell = this$1.findShell(minEdgeRings);\n if (shell !== null) {\n this$1.placePolygonHoles(shell, minEdgeRings);\n shellList.add(shell);\n } else {\n freeHoleList.addAll(minEdgeRings);\n }\n } else {\n edgeRings.add(er);\n }\n }\n return edgeRings\n};\nPolygonBuilder.prototype.containsPoint = function containsPoint (p) {\n for (var it = this._shellList.iterator(); it.hasNext();) {\n var er = it.next();\n if (er.containsPoint(p)) { return true }\n }\n return false\n};\nPolygonBuilder.prototype.buildMaximalEdgeRings = function buildMaximalEdgeRings (dirEdges) {\n var this$1 = this;\n\n var maxEdgeRings = new ArrayList();\n for (var it = dirEdges.iterator(); it.hasNext();) {\n var de = it.next();\n if (de.isInResult() && de.getLabel().isArea()) {\n if (de.getEdgeRing() === null) {\n var er = new MaximalEdgeRing(de, this$1._geometryFactory);\n maxEdgeRings.add(er);\n er.setInResult();\n }\n }\n }\n return maxEdgeRings\n};\nPolygonBuilder.prototype.placePolygonHoles = function placePolygonHoles (shell, minEdgeRings) {\n for (var it = minEdgeRings.iterator(); it.hasNext();) {\n var er = it.next();\n if (er.isHole()) {\n er.setShell(shell);\n }\n }\n};\nPolygonBuilder.prototype.getPolygons = function getPolygons () {\n var resultPolyList = this.computePolygons(this._shellList);\n return resultPolyList\n};\nPolygonBuilder.prototype.findEdgeRingContaining = function findEdgeRingContaining (testEr, shellList) {\n var testRing = testEr.getLinearRing();\n var testEnv = testRing.getEnvelopeInternal();\n var testPt = testRing.getCoordinateN(0);\n var minShell = null;\n var minEnv = null;\n for (var it = shellList.iterator(); it.hasNext();) {\n var tryShell = it.next();\n var tryRing = tryShell.getLinearRing();\n var tryEnv = tryRing.getEnvelopeInternal();\n if (minShell !== null) { minEnv = minShell.getLinearRing().getEnvelopeInternal(); }\n var isContained = false;\n if (tryEnv.contains(testEnv) && CGAlgorithms.isPointInRing(testPt, tryRing.getCoordinates())) { isContained = true; }\n if (isContained) {\n if (minShell === null || minEnv.contains(tryEnv)) {\n minShell = tryShell;\n }\n }\n }\n return minShell\n};\nPolygonBuilder.prototype.findShell = function findShell (minEdgeRings) {\n var shellCount = 0;\n var shell = null;\n for (var it = minEdgeRings.iterator(); it.hasNext();) {\n var er = it.next();\n if (!er.isHole()) {\n shell = er;\n shellCount++;\n }\n }\n Assert.isTrue(shellCount <= 1, 'found two shells in MinimalEdgeRing list');\n return shell\n};\nPolygonBuilder.prototype.add = function add () {\n if (arguments.length === 1) {\n var graph = arguments[0];\n this.add(graph.getEdgeEnds(), graph.getNodes());\n } else if (arguments.length === 2) {\n var dirEdges = arguments[0];\n var nodes = arguments[1];\n PlanarGraph.linkResultDirectedEdges(nodes);\n var maxEdgeRings = this.buildMaximalEdgeRings(dirEdges);\n var freeHoleList = new ArrayList();\n var edgeRings = this.buildMinimalEdgeRings(maxEdgeRings, this._shellList, freeHoleList);\n this.sortShellsAndHoles(edgeRings, this._shellList, freeHoleList);\n this.placeFreeHoles(this._shellList, freeHoleList);\n }\n};\nPolygonBuilder.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nPolygonBuilder.prototype.getClass = function getClass () {\n return PolygonBuilder\n};\n\nvar Boundable = function Boundable () {};\n\nBoundable.prototype.getBounds = function getBounds () {};\nBoundable.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nBoundable.prototype.getClass = function getClass () {\n return Boundable\n};\n\nvar ItemBoundable = function ItemBoundable () {\n this._bounds = null;\n this._item = null;\n var bounds = arguments[0];\n var item = arguments[1];\n this._bounds = bounds;\n this._item = item;\n};\nItemBoundable.prototype.getItem = function getItem () {\n return this._item\n};\nItemBoundable.prototype.getBounds = function getBounds () {\n return this._bounds\n};\nItemBoundable.prototype.interfaces_ = function interfaces_ () {\n return [Boundable, Serializable]\n};\nItemBoundable.prototype.getClass = function getClass () {\n return ItemBoundable\n};\n\nvar PriorityQueue = function PriorityQueue () {\n this._size = null;\n this._items = null;\n this._size = 0;\n this._items = new ArrayList();\n this._items.add(null);\n};\nPriorityQueue.prototype.poll = function poll () {\n if (this.isEmpty()) { return null }\n var minItem = this._items.get(1);\n this._items.set(1, this._items.get(this._size));\n this._size -= 1;\n this.reorder(1);\n return minItem\n};\nPriorityQueue.prototype.size = function size () {\n return this._size\n};\nPriorityQueue.prototype.reorder = function reorder (hole) {\n var this$1 = this;\n\n var child = null;\n var tmp = this._items.get(hole);\n for (; hole * 2 <= this._size; hole = child) {\n child = hole * 2;\n if (child !== this$1._size && this$1._items.get(child + 1).compareTo(this$1._items.get(child)) < 0) { child++; }\n if (this$1._items.get(child).compareTo(tmp) < 0) { this$1._items.set(hole, this$1._items.get(child)); } else { break }\n }\n this._items.set(hole, tmp);\n};\nPriorityQueue.prototype.clear = function clear () {\n this._size = 0;\n this._items.clear();\n};\nPriorityQueue.prototype.isEmpty = function isEmpty () {\n return this._size === 0\n};\nPriorityQueue.prototype.add = function add (x) {\n var this$1 = this;\n\n this._items.add(null);\n this._size += 1;\n var hole = this._size;\n this._items.set(0, x);\n for (; x.compareTo(this._items.get(Math.trunc(hole / 2))) < 0; hole /= 2) {\n this$1._items.set(hole, this$1._items.get(Math.trunc(hole / 2)));\n }\n this._items.set(hole, x);\n};\nPriorityQueue.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nPriorityQueue.prototype.getClass = function getClass () {\n return PriorityQueue\n};\n\nvar ItemVisitor = function ItemVisitor () {};\n\nItemVisitor.prototype.visitItem = function visitItem (item) {};\nItemVisitor.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nItemVisitor.prototype.getClass = function getClass () {\n return ItemVisitor\n};\n\nvar SpatialIndex = function SpatialIndex () {};\n\nSpatialIndex.prototype.insert = function insert (itemEnv, item) {};\nSpatialIndex.prototype.remove = function remove (itemEnv, item) {};\nSpatialIndex.prototype.query = function query () {\n // if (arguments.length === 1) {\n // const searchEnv = arguments[0]\n // } else if (arguments.length === 2) {\n // const searchEnv = arguments[0]\n // const visitor = arguments[1]\n // }\n};\nSpatialIndex.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nSpatialIndex.prototype.getClass = function getClass () {\n return SpatialIndex\n};\n\nvar AbstractNode = function AbstractNode () {\n this._childBoundables = new ArrayList();\n this._bounds = null;\n this._level = null;\n if (arguments.length === 0) {} else if (arguments.length === 1) {\n var level = arguments[0];\n this._level = level;\n }\n};\n\nvar staticAccessors$22 = { serialVersionUID: { configurable: true } };\nAbstractNode.prototype.getLevel = function getLevel () {\n return this._level\n};\nAbstractNode.prototype.size = function size () {\n return this._childBoundables.size()\n};\nAbstractNode.prototype.getChildBoundables = function getChildBoundables () {\n return this._childBoundables\n};\nAbstractNode.prototype.addChildBoundable = function addChildBoundable (childBoundable) {\n Assert.isTrue(this._bounds === null);\n this._childBoundables.add(childBoundable);\n};\nAbstractNode.prototype.isEmpty = function isEmpty () {\n return this._childBoundables.isEmpty()\n};\nAbstractNode.prototype.getBounds = function getBounds () {\n if (this._bounds === null) {\n this._bounds = this.computeBounds();\n }\n return this._bounds\n};\nAbstractNode.prototype.interfaces_ = function interfaces_ () {\n return [Boundable, Serializable]\n};\nAbstractNode.prototype.getClass = function getClass () {\n return AbstractNode\n};\nstaticAccessors$22.serialVersionUID.get = function () { return 6493722185909573708 };\n\nObject.defineProperties( AbstractNode, staticAccessors$22 );\n\nvar Collections = function Collections () {};\n\nCollections.reverseOrder = function reverseOrder () {\n return {\n compare: function compare (a, b) {\n return b.compareTo(a)\n }\n }\n};\nCollections.min = function min (l) {\n Collections.sort(l);\n return l.get(0)\n};\nCollections.sort = function sort (l, c) {\n var a = l.toArray();\n if (c) {\n Arrays.sort(a, c);\n } else {\n Arrays.sort(a);\n }\n var i = l.iterator();\n for (var pos = 0, alen = a.length; pos < alen; pos++) {\n i.next();\n i.set(a[pos]);\n }\n};\nCollections.singletonList = function singletonList (o) {\n var arrayList = new ArrayList();\n arrayList.add(o);\n return arrayList\n};\n\nvar BoundablePair = function BoundablePair () {\n this._boundable1 = null;\n this._boundable2 = null;\n this._distance = null;\n this._itemDistance = null;\n var boundable1 = arguments[0];\n var boundable2 = arguments[1];\n var itemDistance = arguments[2];\n this._boundable1 = boundable1;\n this._boundable2 = boundable2;\n this._itemDistance = itemDistance;\n this._distance = this.distance();\n};\nBoundablePair.prototype.expandToQueue = function expandToQueue (priQ, minDistance) {\n var isComp1 = BoundablePair.isComposite(this._boundable1);\n var isComp2 = BoundablePair.isComposite(this._boundable2);\n if (isComp1 && isComp2) {\n if (BoundablePair.area(this._boundable1) > BoundablePair.area(this._boundable2)) {\n this.expand(this._boundable1, this._boundable2, priQ, minDistance);\n return null\n } else {\n this.expand(this._boundable2, this._boundable1, priQ, minDistance);\n return null\n }\n } else if (isComp1) {\n this.expand(this._boundable1, this._boundable2, priQ, minDistance);\n return null\n } else if (isComp2) {\n this.expand(this._boundable2, this._boundable1, priQ, minDistance);\n return null\n }\n throw new IllegalArgumentException('neither boundable is composite')\n};\nBoundablePair.prototype.isLeaves = function isLeaves () {\n return !(BoundablePair.isComposite(this._boundable1) || BoundablePair.isComposite(this._boundable2))\n};\nBoundablePair.prototype.compareTo = function compareTo (o) {\n var nd = o;\n if (this._distance < nd._distance) { return -1 }\n if (this._distance > nd._distance) { return 1 }\n return 0\n};\nBoundablePair.prototype.expand = function expand (bndComposite, bndOther, priQ, minDistance) {\n var this$1 = this;\n\n var children = bndComposite.getChildBoundables();\n for (var i = children.iterator(); i.hasNext();) {\n var child = i.next();\n var bp = new BoundablePair(child, bndOther, this$1._itemDistance);\n if (bp.getDistance() < minDistance) {\n priQ.add(bp);\n }\n }\n};\nBoundablePair.prototype.getBoundable = function getBoundable (i) {\n if (i === 0) { return this._boundable1 }\n return this._boundable2\n};\nBoundablePair.prototype.getDistance = function getDistance () {\n return this._distance\n};\nBoundablePair.prototype.distance = function distance () {\n if (this.isLeaves()) {\n return this._itemDistance.distance(this._boundable1, this._boundable2)\n }\n return this._boundable1.getBounds().distance(this._boundable2.getBounds())\n};\nBoundablePair.prototype.interfaces_ = function interfaces_ () {\n return [Comparable]\n};\nBoundablePair.prototype.getClass = function getClass () {\n return BoundablePair\n};\nBoundablePair.area = function area (b) {\n return b.getBounds().getArea()\n};\nBoundablePair.isComposite = function isComposite (item) {\n return item instanceof AbstractNode\n};\n\nvar AbstractSTRtree = function AbstractSTRtree () {\n this._root = null;\n this._built = false;\n this._itemBoundables = new ArrayList();\n this._nodeCapacity = null;\n if (arguments.length === 0) {\n var nodeCapacity = AbstractSTRtree.DEFAULT_NODE_CAPACITY;\n this._nodeCapacity = nodeCapacity;\n } else if (arguments.length === 1) {\n var nodeCapacity$1 = arguments[0];\n Assert.isTrue(nodeCapacity$1 > 1, 'Node capacity must be greater than 1');\n this._nodeCapacity = nodeCapacity$1;\n }\n};\n\nvar staticAccessors$23 = { IntersectsOp: { configurable: true },serialVersionUID: { configurable: true },DEFAULT_NODE_CAPACITY: { configurable: true } };\nAbstractSTRtree.prototype.getNodeCapacity = function getNodeCapacity () {\n return this._nodeCapacity\n};\nAbstractSTRtree.prototype.lastNode = function lastNode (nodes) {\n return nodes.get(nodes.size() - 1)\n};\nAbstractSTRtree.prototype.size = function size () {\n var this$1 = this;\n\n if (arguments.length === 0) {\n if (this.isEmpty()) {\n return 0\n }\n this.build();\n return this.size(this._root)\n } else if (arguments.length === 1) {\n var node = arguments[0];\n var size = 0;\n for (var i = node.getChildBoundables().iterator(); i.hasNext();) {\n var childBoundable = i.next();\n if (childBoundable instanceof AbstractNode) {\n size += this$1.size(childBoundable);\n } else if (childBoundable instanceof ItemBoundable) {\n size += 1;\n }\n }\n return size\n }\n};\nAbstractSTRtree.prototype.removeItem = function removeItem (node, item) {\n var childToRemove = null;\n for (var i = node.getChildBoundables().iterator(); i.hasNext();) {\n var childBoundable = i.next();\n if (childBoundable instanceof ItemBoundable) {\n if (childBoundable.getItem() === item) { childToRemove = childBoundable; }\n }\n }\n if (childToRemove !== null) {\n node.getChildBoundables().remove(childToRemove);\n return true\n }\n return false\n};\nAbstractSTRtree.prototype.itemsTree = function itemsTree () {\n var this$1 = this;\n\n if (arguments.length === 0) {\n this.build();\n var valuesTree = this.itemsTree(this._root);\n if (valuesTree === null) { return new ArrayList() }\n return valuesTree\n } else if (arguments.length === 1) {\n var node = arguments[0];\n var valuesTreeForNode = new ArrayList();\n for (var i = node.getChildBoundables().iterator(); i.hasNext();) {\n var childBoundable = i.next();\n if (childBoundable instanceof AbstractNode) {\n var valuesTreeForChild = this$1.itemsTree(childBoundable);\n if (valuesTreeForChild !== null) { valuesTreeForNode.add(valuesTreeForChild); }\n } else if (childBoundable instanceof ItemBoundable) {\n valuesTreeForNode.add(childBoundable.getItem());\n } else {\n Assert.shouldNeverReachHere();\n }\n }\n if (valuesTreeForNode.size() <= 0) { return null }\n return valuesTreeForNode\n }\n};\nAbstractSTRtree.prototype.insert = function insert (bounds, item) {\n Assert.isTrue(!this._built, 'Cannot insert items into an STR packed R-tree after it has been built.');\n this._itemBoundables.add(new ItemBoundable(bounds, item));\n};\nAbstractSTRtree.prototype.boundablesAtLevel = function boundablesAtLevel () {\n var this$1 = this;\n\n if (arguments.length === 1) {\n var level = arguments[0];\n var boundables = new ArrayList();\n this.boundablesAtLevel(level, this._root, boundables);\n return boundables\n } else if (arguments.length === 3) {\n var level$1 = arguments[0];\n var top = arguments[1];\n var boundables$1 = arguments[2];\n Assert.isTrue(level$1 > -2);\n if (top.getLevel() === level$1) {\n boundables$1.add(top);\n return null\n }\n for (var i = top.getChildBoundables().iterator(); i.hasNext();) {\n var boundable = i.next();\n if (boundable instanceof AbstractNode) {\n this$1.boundablesAtLevel(level$1, boundable, boundables$1);\n } else {\n Assert.isTrue(boundable instanceof ItemBoundable);\n if (level$1 === -1) {\n boundables$1.add(boundable);\n }\n }\n }\n return null\n }\n};\nAbstractSTRtree.prototype.query = function query () {\n var this$1 = this;\n\n if (arguments.length === 1) {\n var searchBounds = arguments[0];\n this.build();\n var matches = new ArrayList();\n if (this.isEmpty()) {\n return matches\n }\n if (this.getIntersectsOp().intersects(this._root.getBounds(), searchBounds)) {\n this.query(searchBounds, this._root, matches);\n }\n return matches\n } else if (arguments.length === 2) {\n var searchBounds$1 = arguments[0];\n var visitor = arguments[1];\n this.build();\n if (this.isEmpty()) {\n return null\n }\n if (this.getIntersectsOp().intersects(this._root.getBounds(), searchBounds$1)) {\n this.query(searchBounds$1, this._root, visitor);\n }\n } else if (arguments.length === 3) {\n if (hasInterface(arguments[2], ItemVisitor) && (arguments[0] instanceof Object && arguments[1] instanceof AbstractNode)) {\n var searchBounds$2 = arguments[0];\n var node = arguments[1];\n var visitor$1 = arguments[2];\n var childBoundables = node.getChildBoundables();\n for (var i = 0; i < childBoundables.size(); i++) {\n var childBoundable = childBoundables.get(i);\n if (!this$1.getIntersectsOp().intersects(childBoundable.getBounds(), searchBounds$2)) {\n continue\n }\n if (childBoundable instanceof AbstractNode) {\n this$1.query(searchBounds$2, childBoundable, visitor$1);\n } else if (childBoundable instanceof ItemBoundable) {\n visitor$1.visitItem(childBoundable.getItem());\n } else {\n Assert.shouldNeverReachHere();\n }\n }\n } else if (hasInterface(arguments[2], List) && (arguments[0] instanceof Object && arguments[1] instanceof AbstractNode)) {\n var searchBounds$3 = arguments[0];\n var node$1 = arguments[1];\n var matches$1 = arguments[2];\n var childBoundables$1 = node$1.getChildBoundables();\n for (var i$1 = 0; i$1 < childBoundables$1.size(); i$1++) {\n var childBoundable$1 = childBoundables$1.get(i$1);\n if (!this$1.getIntersectsOp().intersects(childBoundable$1.getBounds(), searchBounds$3)) {\n continue\n }\n if (childBoundable$1 instanceof AbstractNode) {\n this$1.query(searchBounds$3, childBoundable$1, matches$1);\n } else if (childBoundable$1 instanceof ItemBoundable) {\n matches$1.add(childBoundable$1.getItem());\n } else {\n Assert.shouldNeverReachHere();\n }\n }\n }\n }\n};\nAbstractSTRtree.prototype.build = function build () {\n if (this._built) { return null }\n this._root = this._itemBoundables.isEmpty() ? this.createNode(0) : this.createHigherLevels(this._itemBoundables, -1);\n this._itemBoundables = null;\n this._built = true;\n};\nAbstractSTRtree.prototype.getRoot = function getRoot () {\n this.build();\n return this._root\n};\nAbstractSTRtree.prototype.remove = function remove () {\n var this$1 = this;\n\n if (arguments.length === 2) {\n var searchBounds = arguments[0];\n var item = arguments[1];\n this.build();\n if (this.getIntersectsOp().intersects(this._root.getBounds(), searchBounds)) {\n return this.remove(searchBounds, this._root, item)\n }\n return false\n } else if (arguments.length === 3) {\n var searchBounds$1 = arguments[0];\n var node = arguments[1];\n var item$1 = arguments[2];\n var found = this.removeItem(node, item$1);\n if (found) { return true }\n var childToPrune = null;\n for (var i = node.getChildBoundables().iterator(); i.hasNext();) {\n var childBoundable = i.next();\n if (!this$1.getIntersectsOp().intersects(childBoundable.getBounds(), searchBounds$1)) {\n continue\n }\n if (childBoundable instanceof AbstractNode) {\n found = this$1.remove(searchBounds$1, childBoundable, item$1);\n if (found) {\n childToPrune = childBoundable;\n break\n }\n }\n }\n if (childToPrune !== null) {\n if (childToPrune.getChildBoundables().isEmpty()) {\n node.getChildBoundables().remove(childToPrune);\n }\n }\n return found\n }\n};\nAbstractSTRtree.prototype.createHigherLevels = function createHigherLevels (boundablesOfALevel, level) {\n Assert.isTrue(!boundablesOfALevel.isEmpty());\n var parentBoundables = this.createParentBoundables(boundablesOfALevel, level + 1);\n if (parentBoundables.size() === 1) {\n return parentBoundables.get(0)\n }\n return this.createHigherLevels(parentBoundables, level + 1)\n};\nAbstractSTRtree.prototype.depth = function depth () {\n var this$1 = this;\n\n if (arguments.length === 0) {\n if (this.isEmpty()) {\n return 0\n }\n this.build();\n return this.depth(this._root)\n } else if (arguments.length === 1) {\n var node = arguments[0];\n var maxChildDepth = 0;\n for (var i = node.getChildBoundables().iterator(); i.hasNext();) {\n var childBoundable = i.next();\n if (childBoundable instanceof AbstractNode) {\n var childDepth = this$1.depth(childBoundable);\n if (childDepth > maxChildDepth) { maxChildDepth = childDepth; }\n }\n }\n return maxChildDepth + 1\n }\n};\nAbstractSTRtree.prototype.createParentBoundables = function createParentBoundables (childBoundables, newLevel) {\n var this$1 = this;\n\n Assert.isTrue(!childBoundables.isEmpty());\n var parentBoundables = new ArrayList();\n parentBoundables.add(this.createNode(newLevel));\n var sortedChildBoundables = new ArrayList(childBoundables);\n Collections.sort(sortedChildBoundables, this.getComparator());\n for (var i = sortedChildBoundables.iterator(); i.hasNext();) {\n var childBoundable = i.next();\n if (this$1.lastNode(parentBoundables).getChildBoundables().size() === this$1.getNodeCapacity()) {\n parentBoundables.add(this$1.createNode(newLevel));\n }\n this$1.lastNode(parentBoundables).addChildBoundable(childBoundable);\n }\n return parentBoundables\n};\nAbstractSTRtree.prototype.isEmpty = function isEmpty () {\n if (!this._built) { return this._itemBoundables.isEmpty() }\n return this._root.isEmpty()\n};\nAbstractSTRtree.prototype.interfaces_ = function interfaces_ () {\n return [Serializable]\n};\nAbstractSTRtree.prototype.getClass = function getClass () {\n return AbstractSTRtree\n};\nAbstractSTRtree.compareDoubles = function compareDoubles (a, b) {\n return a > b ? 1 : a < b ? -1 : 0\n};\nstaticAccessors$23.IntersectsOp.get = function () { return IntersectsOp };\nstaticAccessors$23.serialVersionUID.get = function () { return -3886435814360241337 };\nstaticAccessors$23.DEFAULT_NODE_CAPACITY.get = function () { return 10 };\n\nObject.defineProperties( AbstractSTRtree, staticAccessors$23 );\n\nvar IntersectsOp = function IntersectsOp () {};\n\nvar ItemDistance = function ItemDistance () {};\n\nItemDistance.prototype.distance = function distance (item1, item2) {};\nItemDistance.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nItemDistance.prototype.getClass = function getClass () {\n return ItemDistance\n};\n\nvar STRtree = (function (AbstractSTRtree$$1) {\n function STRtree (nodeCapacity) {\n nodeCapacity = nodeCapacity || STRtree.DEFAULT_NODE_CAPACITY;\n AbstractSTRtree$$1.call(this, nodeCapacity);\n }\n\n if ( AbstractSTRtree$$1 ) STRtree.__proto__ = AbstractSTRtree$$1;\n STRtree.prototype = Object.create( AbstractSTRtree$$1 && AbstractSTRtree$$1.prototype );\n STRtree.prototype.constructor = STRtree;\n\n var staticAccessors = { STRtreeNode: { configurable: true },serialVersionUID: { configurable: true },xComparator: { configurable: true },yComparator: { configurable: true },intersectsOp: { configurable: true },DEFAULT_NODE_CAPACITY: { configurable: true } };\n STRtree.prototype.createParentBoundablesFromVerticalSlices = function createParentBoundablesFromVerticalSlices (verticalSlices, newLevel) {\n var this$1 = this;\n\n Assert.isTrue(verticalSlices.length > 0);\n var parentBoundables = new ArrayList();\n for (var i = 0; i < verticalSlices.length; i++) {\n parentBoundables.addAll(this$1.createParentBoundablesFromVerticalSlice(verticalSlices[i], newLevel));\n }\n return parentBoundables\n };\n STRtree.prototype.createNode = function createNode (level) {\n return new STRtreeNode(level)\n };\n STRtree.prototype.size = function size () {\n if (arguments.length === 0) {\n return AbstractSTRtree$$1.prototype.size.call(this)\n } else { return AbstractSTRtree$$1.prototype.size.apply(this, arguments) }\n };\n STRtree.prototype.insert = function insert () {\n if (arguments.length === 2) {\n var itemEnv = arguments[0];\n var item = arguments[1];\n if (itemEnv.isNull()) {\n return null\n }\n AbstractSTRtree$$1.prototype.insert.call(this, itemEnv, item);\n } else { return AbstractSTRtree$$1.prototype.insert.apply(this, arguments) }\n };\n STRtree.prototype.getIntersectsOp = function getIntersectsOp () {\n return STRtree.intersectsOp\n };\n STRtree.prototype.verticalSlices = function verticalSlices (childBoundables, sliceCount) {\n var sliceCapacity = Math.trunc(Math.ceil(childBoundables.size() / sliceCount));\n var slices = new Array(sliceCount).fill(null);\n var i = childBoundables.iterator();\n for (var j = 0; j < sliceCount; j++) {\n slices[j] = new ArrayList();\n var boundablesAddedToSlice = 0;\n while (i.hasNext() && boundablesAddedToSlice < sliceCapacity) {\n var childBoundable = i.next();\n slices[j].add(childBoundable);\n boundablesAddedToSlice++;\n }\n }\n return slices\n };\n STRtree.prototype.query = function query () {\n if (arguments.length === 1) {\n var searchEnv = arguments[0];\n return AbstractSTRtree$$1.prototype.query.call(this, searchEnv)\n } else if (arguments.length === 2) {\n var searchEnv$1 = arguments[0];\n var visitor = arguments[1];\n AbstractSTRtree$$1.prototype.query.call(this, searchEnv$1, visitor);\n } else if (arguments.length === 3) {\n if (hasInterface(arguments[2], ItemVisitor) && (arguments[0] instanceof Object && arguments[1] instanceof AbstractNode)) {\n var searchBounds = arguments[0];\n var node = arguments[1];\n var visitor$1 = arguments[2];\n AbstractSTRtree$$1.prototype.query.call(this, searchBounds, node, visitor$1);\n } else if (hasInterface(arguments[2], List) && (arguments[0] instanceof Object && arguments[1] instanceof AbstractNode)) {\n var searchBounds$1 = arguments[0];\n var node$1 = arguments[1];\n var matches = arguments[2];\n AbstractSTRtree$$1.prototype.query.call(this, searchBounds$1, node$1, matches);\n }\n }\n };\n STRtree.prototype.getComparator = function getComparator () {\n return STRtree.yComparator\n };\n STRtree.prototype.createParentBoundablesFromVerticalSlice = function createParentBoundablesFromVerticalSlice (childBoundables, newLevel) {\n return AbstractSTRtree$$1.prototype.createParentBoundables.call(this, childBoundables, newLevel)\n };\n STRtree.prototype.remove = function remove () {\n if (arguments.length === 2) {\n var itemEnv = arguments[0];\n var item = arguments[1];\n return AbstractSTRtree$$1.prototype.remove.call(this, itemEnv, item)\n } else { return AbstractSTRtree$$1.prototype.remove.apply(this, arguments) }\n };\n STRtree.prototype.depth = function depth () {\n if (arguments.length === 0) {\n return AbstractSTRtree$$1.prototype.depth.call(this)\n } else { return AbstractSTRtree$$1.prototype.depth.apply(this, arguments) }\n };\n STRtree.prototype.createParentBoundables = function createParentBoundables (childBoundables, newLevel) {\n Assert.isTrue(!childBoundables.isEmpty());\n var minLeafCount = Math.trunc(Math.ceil(childBoundables.size() / this.getNodeCapacity()));\n var sortedChildBoundables = new ArrayList(childBoundables);\n Collections.sort(sortedChildBoundables, STRtree.xComparator);\n var verticalSlices = this.verticalSlices(sortedChildBoundables, Math.trunc(Math.ceil(Math.sqrt(minLeafCount))));\n return this.createParentBoundablesFromVerticalSlices(verticalSlices, newLevel)\n };\n STRtree.prototype.nearestNeighbour = function nearestNeighbour () {\n if (arguments.length === 1) {\n if (hasInterface(arguments[0], ItemDistance)) {\n var itemDist = arguments[0];\n var bp = new BoundablePair(this.getRoot(), this.getRoot(), itemDist);\n return this.nearestNeighbour(bp)\n } else if (arguments[0] instanceof BoundablePair) {\n var initBndPair = arguments[0];\n return this.nearestNeighbour(initBndPair, Double.POSITIVE_INFINITY)\n }\n } else if (arguments.length === 2) {\n if (arguments[0] instanceof STRtree && hasInterface(arguments[1], ItemDistance)) {\n var tree = arguments[0];\n var itemDist$1 = arguments[1];\n var bp$1 = new BoundablePair(this.getRoot(), tree.getRoot(), itemDist$1);\n return this.nearestNeighbour(bp$1)\n } else if (arguments[0] instanceof BoundablePair && typeof arguments[1] === 'number') {\n var initBndPair$1 = arguments[0];\n var maxDistance = arguments[1];\n var distanceLowerBound = maxDistance;\n var minPair = null;\n var priQ = new PriorityQueue();\n priQ.add(initBndPair$1);\n while (!priQ.isEmpty() && distanceLowerBound > 0.0) {\n var bndPair = priQ.poll();\n var currentDistance = bndPair.getDistance();\n if (currentDistance >= distanceLowerBound) { break }\n if (bndPair.isLeaves()) {\n distanceLowerBound = currentDistance;\n minPair = bndPair;\n } else {\n bndPair.expandToQueue(priQ, distanceLowerBound);\n }\n }\n return [minPair.getBoundable(0).getItem(), minPair.getBoundable(1).getItem()]\n }\n } else if (arguments.length === 3) {\n var env = arguments[0];\n var item = arguments[1];\n var itemDist$2 = arguments[2];\n var bnd = new ItemBoundable(env, item);\n var bp$2 = new BoundablePair(this.getRoot(), bnd, itemDist$2);\n return this.nearestNeighbour(bp$2)[0]\n }\n };\n STRtree.prototype.interfaces_ = function interfaces_ () {\n return [SpatialIndex, Serializable]\n };\n STRtree.prototype.getClass = function getClass () {\n return STRtree\n };\n STRtree.centreX = function centreX (e) {\n return STRtree.avg(e.getMinX(), e.getMaxX())\n };\n STRtree.avg = function avg (a, b) {\n return (a + b) / 2\n };\n STRtree.centreY = function centreY (e) {\n return STRtree.avg(e.getMinY(), e.getMaxY())\n };\n staticAccessors.STRtreeNode.get = function () { return STRtreeNode };\n staticAccessors.serialVersionUID.get = function () { return 259274702368956900 };\n staticAccessors.xComparator.get = function () {\n return {\n interfaces_: function () {\n return [Comparator]\n },\n compare: function (o1, o2) {\n return AbstractSTRtree$$1.compareDoubles(STRtree.centreX(o1.getBounds()), STRtree.centreX(o2.getBounds()))\n }\n }\n };\n staticAccessors.yComparator.get = function () {\n return {\n interfaces_: function () {\n return [Comparator]\n },\n compare: function (o1, o2) {\n return AbstractSTRtree$$1.compareDoubles(STRtree.centreY(o1.getBounds()), STRtree.centreY(o2.getBounds()))\n }\n }\n };\n staticAccessors.intersectsOp.get = function () {\n return {\n interfaces_: function () {\n return [AbstractSTRtree$$1.IntersectsOp]\n },\n intersects: function (aBounds, bBounds) {\n return aBounds.intersects(bBounds)\n }\n }\n };\n staticAccessors.DEFAULT_NODE_CAPACITY.get = function () { return 10 };\n\n Object.defineProperties( STRtree, staticAccessors );\n\n return STRtree;\n}(AbstractSTRtree));\n\nvar STRtreeNode = (function (AbstractNode$$1) {\n function STRtreeNode () {\n var level = arguments[0];\n AbstractNode$$1.call(this, level);\n }\n\n if ( AbstractNode$$1 ) STRtreeNode.__proto__ = AbstractNode$$1;\n STRtreeNode.prototype = Object.create( AbstractNode$$1 && AbstractNode$$1.prototype );\n STRtreeNode.prototype.constructor = STRtreeNode;\n STRtreeNode.prototype.computeBounds = function computeBounds () {\n var bounds = null;\n for (var i = this.getChildBoundables().iterator(); i.hasNext();) {\n var childBoundable = i.next();\n if (bounds === null) {\n bounds = new Envelope(childBoundable.getBounds());\n } else {\n bounds.expandToInclude(childBoundable.getBounds());\n }\n }\n return bounds\n };\n STRtreeNode.prototype.interfaces_ = function interfaces_ () {\n return []\n };\n STRtreeNode.prototype.getClass = function getClass () {\n return STRtreeNode\n };\n\n return STRtreeNode;\n}(AbstractNode));\n\nvar SegmentPointComparator = function SegmentPointComparator () {};\n\nSegmentPointComparator.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nSegmentPointComparator.prototype.getClass = function getClass () {\n return SegmentPointComparator\n};\nSegmentPointComparator.relativeSign = function relativeSign (x0, x1) {\n if (x0 < x1) { return -1 }\n if (x0 > x1) { return 1 }\n return 0\n};\nSegmentPointComparator.compare = function compare (octant, p0, p1) {\n if (p0.equals2D(p1)) { return 0 }\n var xSign = SegmentPointComparator.relativeSign(p0.x, p1.x);\n var ySign = SegmentPointComparator.relativeSign(p0.y, p1.y);\n switch (octant) {\n case 0:\n return SegmentPointComparator.compareValue(xSign, ySign)\n case 1:\n return SegmentPointComparator.compareValue(ySign, xSign)\n case 2:\n return SegmentPointComparator.compareValue(ySign, -xSign)\n case 3:\n return SegmentPointComparator.compareValue(-xSign, ySign)\n case 4:\n return SegmentPointComparator.compareValue(-xSign, -ySign)\n case 5:\n return SegmentPointComparator.compareValue(-ySign, -xSign)\n case 6:\n return SegmentPointComparator.compareValue(-ySign, xSign)\n case 7:\n return SegmentPointComparator.compareValue(xSign, -ySign)\n default:\n }\n Assert.shouldNeverReachHere('invalid octant value');\n return 0\n};\nSegmentPointComparator.compareValue = function compareValue (compareSign0, compareSign1) {\n if (compareSign0 < 0) { return -1 }\n if (compareSign0 > 0) { return 1 }\n if (compareSign1 < 0) { return -1 }\n if (compareSign1 > 0) { return 1 }\n return 0\n};\n\nvar SegmentNode = function SegmentNode () {\n this._segString = null;\n this.coord = null;\n this.segmentIndex = null;\n this._segmentOctant = null;\n this._isInterior = null;\n var segString = arguments[0];\n var coord = arguments[1];\n var segmentIndex = arguments[2];\n var segmentOctant = arguments[3];\n this._segString = segString;\n this.coord = new Coordinate(coord);\n this.segmentIndex = segmentIndex;\n this._segmentOctant = segmentOctant;\n this._isInterior = !coord.equals2D(segString.getCoordinate(segmentIndex));\n};\nSegmentNode.prototype.getCoordinate = function getCoordinate () {\n return this.coord\n};\nSegmentNode.prototype.print = function print (out) {\n out.print(this.coord);\n out.print(' seg # = ' + this.segmentIndex);\n};\nSegmentNode.prototype.compareTo = function compareTo (obj) {\n var other = obj;\n if (this.segmentIndex < other.segmentIndex) { return -1 }\n if (this.segmentIndex > other.segmentIndex) { return 1 }\n if (this.coord.equals2D(other.coord)) { return 0 }\n return SegmentPointComparator.compare(this._segmentOctant, this.coord, other.coord)\n};\nSegmentNode.prototype.isEndPoint = function isEndPoint (maxSegmentIndex) {\n if (this.segmentIndex === 0 && !this._isInterior) { return true }\n if (this.segmentIndex === maxSegmentIndex) { return true }\n return false\n};\nSegmentNode.prototype.isInterior = function isInterior () {\n return this._isInterior\n};\nSegmentNode.prototype.interfaces_ = function interfaces_ () {\n return [Comparable]\n};\nSegmentNode.prototype.getClass = function getClass () {\n return SegmentNode\n};\n\n// import Iterator from '../../../../java/util/Iterator'\nvar SegmentNodeList = function SegmentNodeList () {\n this._nodeMap = new TreeMap();\n this._edge = null;\n var edge = arguments[0];\n this._edge = edge;\n};\nSegmentNodeList.prototype.getSplitCoordinates = function getSplitCoordinates () {\n var this$1 = this;\n\n var coordList = new CoordinateList();\n this.addEndpoints();\n var it = this.iterator();\n var eiPrev = it.next();\n while (it.hasNext()) {\n var ei = it.next();\n this$1.addEdgeCoordinates(eiPrev, ei, coordList);\n eiPrev = ei;\n }\n return coordList.toCoordinateArray()\n};\nSegmentNodeList.prototype.addCollapsedNodes = function addCollapsedNodes () {\n var this$1 = this;\n\n var collapsedVertexIndexes = new ArrayList();\n this.findCollapsesFromInsertedNodes(collapsedVertexIndexes);\n this.findCollapsesFromExistingVertices(collapsedVertexIndexes);\n for (var it = collapsedVertexIndexes.iterator(); it.hasNext();) {\n var vertexIndex = it.next().intValue();\n this$1.add(this$1._edge.getCoordinate(vertexIndex), vertexIndex);\n }\n};\nSegmentNodeList.prototype.print = function print (out) {\n out.println('Intersections:');\n for (var it = this.iterator(); it.hasNext();) {\n var ei = it.next();\n ei.print(out);\n }\n};\nSegmentNodeList.prototype.findCollapsesFromExistingVertices = function findCollapsesFromExistingVertices (collapsedVertexIndexes) {\n var this$1 = this;\n\n for (var i = 0; i < this._edge.size() - 2; i++) {\n var p0 = this$1._edge.getCoordinate(i);\n // const p1 = this._edge.getCoordinate(i + 1)\n var p2 = this$1._edge.getCoordinate(i + 2);\n if (p0.equals2D(p2)) {\n collapsedVertexIndexes.add(new Integer(i + 1));\n }\n }\n};\nSegmentNodeList.prototype.addEdgeCoordinates = function addEdgeCoordinates (ei0, ei1, coordList) {\n var this$1 = this;\n\n // let npts = ei1.segmentIndex - ei0.segmentIndex + 2\n var lastSegStartPt = this._edge.getCoordinate(ei1.segmentIndex);\n var useIntPt1 = ei1.isInterior() || !ei1.coord.equals2D(lastSegStartPt);\n // if (!useIntPt1) {\n // npts--\n // }\n // const ipt = 0\n coordList.add(new Coordinate(ei0.coord), false);\n for (var i = ei0.segmentIndex + 1; i <= ei1.segmentIndex; i++) {\n coordList.add(this$1._edge.getCoordinate(i));\n }\n if (useIntPt1) {\n coordList.add(new Coordinate(ei1.coord));\n }\n};\nSegmentNodeList.prototype.iterator = function iterator () {\n return this._nodeMap.values().iterator()\n};\nSegmentNodeList.prototype.addSplitEdges = function addSplitEdges (edgeList) {\n var this$1 = this;\n\n this.addEndpoints();\n this.addCollapsedNodes();\n var it = this.iterator();\n var eiPrev = it.next();\n while (it.hasNext()) {\n var ei = it.next();\n var newEdge = this$1.createSplitEdge(eiPrev, ei);\n edgeList.add(newEdge);\n eiPrev = ei;\n }\n};\nSegmentNodeList.prototype.findCollapseIndex = function findCollapseIndex (ei0, ei1, collapsedVertexIndex) {\n if (!ei0.coord.equals2D(ei1.coord)) { return false }\n var numVerticesBetween = ei1.segmentIndex - ei0.segmentIndex;\n if (!ei1.isInterior()) {\n numVerticesBetween--;\n }\n if (numVerticesBetween === 1) {\n collapsedVertexIndex[0] = ei0.segmentIndex + 1;\n return true\n }\n return false\n};\nSegmentNodeList.prototype.findCollapsesFromInsertedNodes = function findCollapsesFromInsertedNodes (collapsedVertexIndexes) {\n var this$1 = this;\n\n var collapsedVertexIndex = new Array(1).fill(null);\n var it = this.iterator();\n var eiPrev = it.next();\n while (it.hasNext()) {\n var ei = it.next();\n var isCollapsed = this$1.findCollapseIndex(eiPrev, ei, collapsedVertexIndex);\n if (isCollapsed) { collapsedVertexIndexes.add(new Integer(collapsedVertexIndex[0])); }\n eiPrev = ei;\n }\n};\nSegmentNodeList.prototype.getEdge = function getEdge () {\n return this._edge\n};\nSegmentNodeList.prototype.addEndpoints = function addEndpoints () {\n var maxSegIndex = this._edge.size() - 1;\n this.add(this._edge.getCoordinate(0), 0);\n this.add(this._edge.getCoordinate(maxSegIndex), maxSegIndex);\n};\nSegmentNodeList.prototype.createSplitEdge = function createSplitEdge (ei0, ei1) {\n var this$1 = this;\n\n var npts = ei1.segmentIndex - ei0.segmentIndex + 2;\n var lastSegStartPt = this._edge.getCoordinate(ei1.segmentIndex);\n var useIntPt1 = ei1.isInterior() || !ei1.coord.equals2D(lastSegStartPt);\n if (!useIntPt1) {\n npts--;\n }\n var pts = new Array(npts).fill(null);\n var ipt = 0;\n pts[ipt++] = new Coordinate(ei0.coord);\n for (var i = ei0.segmentIndex + 1; i <= ei1.segmentIndex; i++) {\n pts[ipt++] = this$1._edge.getCoordinate(i);\n }\n if (useIntPt1) { pts[ipt] = new Coordinate(ei1.coord); }\n return new NodedSegmentString(pts, this._edge.getData())\n};\nSegmentNodeList.prototype.add = function add (intPt, segmentIndex) {\n var eiNew = new SegmentNode(this._edge, intPt, segmentIndex, this._edge.getSegmentOctant(segmentIndex));\n var ei = this._nodeMap.get(eiNew);\n if (ei !== null) {\n Assert.isTrue(ei.coord.equals2D(intPt), 'Found equal nodes with different coordinates');\n return ei\n }\n this._nodeMap.put(eiNew, eiNew);\n return eiNew\n};\nSegmentNodeList.prototype.checkSplitEdgesCorrectness = function checkSplitEdgesCorrectness (splitEdges) {\n var edgePts = this._edge.getCoordinates();\n var split0 = splitEdges.get(0);\n var pt0 = split0.getCoordinate(0);\n if (!pt0.equals2D(edgePts[0])) { throw new RuntimeException('bad split edge start point at ' + pt0) }\n var splitn = splitEdges.get(splitEdges.size() - 1);\n var splitnPts = splitn.getCoordinates();\n var ptn = splitnPts[splitnPts.length - 1];\n if (!ptn.equals2D(edgePts[edgePts.length - 1])) { throw new RuntimeException('bad split edge end point at ' + ptn) }\n};\nSegmentNodeList.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nSegmentNodeList.prototype.getClass = function getClass () {\n return SegmentNodeList\n};\n\n\n\n// class NodeVertexIterator {\n// constructor () {\n// this._nodeList = null\n// this._edge = null\n// this._nodeIt = null\n// this._currNode = null\n// this._nextNode = null\n// this._currSegIndex = 0\n// let nodeList = arguments[0]\n// this._nodeList = nodeList\n// this._edge = nodeList.getEdge()\n// this._nodeIt = nodeList.iterator()\n// this.readNextNode()\n// }\n// next () {\n// if (this._currNode === null) {\n// this._currNode = this._nextNode\n// this._currSegIndex = this._currNode.segmentIndex\n// this.readNextNode()\n// return this._currNode\n// }\n// if (this._nextNode === null) return null\n// if (this._nextNode.segmentIndex === this._currNode.segmentIndex) {\n// this._currNode = this._nextNode\n// this._currSegIndex = this._currNode.segmentIndex\n// this.readNextNode()\n// return this._currNode\n// }\n// if (this._nextNode.segmentIndex > this._currNode.segmentIndex) {}\n// return null\n// }\n// remove () {\n// // throw new UnsupportedOperationException(this.getClass().getName())\n// }\n// hasNext () {\n// if (this._nextNode === null) return false\n// return true\n// }\n// readNextNode () {\n// if (this._nodeIt.hasNext()) this._nextNode = this._nodeIt.next(); else this._nextNode = null\n// }\n// interfaces_ () {\n// return [Iterator]\n// }\n// getClass () {\n// return NodeVertexIterator\n// }\n// }\n\nvar Octant = function Octant () {};\n\nOctant.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nOctant.prototype.getClass = function getClass () {\n return Octant\n};\nOctant.octant = function octant () {\n if (typeof arguments[0] === 'number' && typeof arguments[1] === 'number') {\n var dx = arguments[0];\n var dy = arguments[1];\n if (dx === 0.0 && dy === 0.0) { throw new IllegalArgumentException('Cannot compute the octant for point ( ' + dx + ', ' + dy + ' )') }\n var adx = Math.abs(dx);\n var ady = Math.abs(dy);\n if (dx >= 0) {\n if (dy >= 0) {\n if (adx >= ady) { return 0; } else { return 1 }\n } else {\n if (adx >= ady) { return 7; } else { return 6 }\n }\n } else {\n if (dy >= 0) {\n if (adx >= ady) { return 3; } else { return 2 }\n } else {\n if (adx >= ady) { return 4; } else { return 5 }\n }\n }\n } else if (arguments[0] instanceof Coordinate && arguments[1] instanceof Coordinate) {\n var p0 = arguments[0];\n var p1 = arguments[1];\n var dx$1 = p1.x - p0.x;\n var dy$1 = p1.y - p0.y;\n if (dx$1 === 0.0 && dy$1 === 0.0) { throw new IllegalArgumentException('Cannot compute the octant for two identical points ' + p0) }\n return Octant.octant(dx$1, dy$1)\n }\n};\n\nvar SegmentString = function SegmentString () {};\n\nSegmentString.prototype.getCoordinates = function getCoordinates () {};\nSegmentString.prototype.size = function size () {};\nSegmentString.prototype.getCoordinate = function getCoordinate (i) {};\nSegmentString.prototype.isClosed = function isClosed () {};\nSegmentString.prototype.setData = function setData (data) {};\nSegmentString.prototype.getData = function getData () {};\nSegmentString.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nSegmentString.prototype.getClass = function getClass () {\n return SegmentString\n};\n\nvar NodableSegmentString = function NodableSegmentString () {};\n\nNodableSegmentString.prototype.addIntersection = function addIntersection (intPt, segmentIndex) {};\nNodableSegmentString.prototype.interfaces_ = function interfaces_ () {\n return [SegmentString]\n};\nNodableSegmentString.prototype.getClass = function getClass () {\n return NodableSegmentString\n};\n\nvar NodedSegmentString = function NodedSegmentString () {\n this._nodeList = new SegmentNodeList(this);\n this._pts = null;\n this._data = null;\n var pts = arguments[0];\n var data = arguments[1];\n this._pts = pts;\n this._data = data;\n};\nNodedSegmentString.prototype.getCoordinates = function getCoordinates () {\n return this._pts\n};\nNodedSegmentString.prototype.size = function size () {\n return this._pts.length\n};\nNodedSegmentString.prototype.getCoordinate = function getCoordinate (i) {\n return this._pts[i]\n};\nNodedSegmentString.prototype.isClosed = function isClosed () {\n return this._pts[0].equals(this._pts[this._pts.length - 1])\n};\nNodedSegmentString.prototype.getSegmentOctant = function getSegmentOctant (index) {\n if (index === this._pts.length - 1) { return -1 }\n return this.safeOctant(this.getCoordinate(index), this.getCoordinate(index + 1))\n};\nNodedSegmentString.prototype.setData = function setData (data) {\n this._data = data;\n};\nNodedSegmentString.prototype.safeOctant = function safeOctant (p0, p1) {\n if (p0.equals2D(p1)) { return 0 }\n return Octant.octant(p0, p1)\n};\nNodedSegmentString.prototype.getData = function getData () {\n return this._data\n};\nNodedSegmentString.prototype.addIntersection = function addIntersection () {\n if (arguments.length === 2) {\n var intPt$1 = arguments[0];\n var segmentIndex = arguments[1];\n this.addIntersectionNode(intPt$1, segmentIndex);\n } else if (arguments.length === 4) {\n var li = arguments[0];\n var segmentIndex$1 = arguments[1];\n // const geomIndex = arguments[2]\n var intIndex = arguments[3];\n var intPt = new Coordinate(li.getIntersection(intIndex));\n this.addIntersection(intPt, segmentIndex$1);\n }\n};\nNodedSegmentString.prototype.toString = function toString () {\n return WKTWriter.toLineString(new CoordinateArraySequence(this._pts))\n};\nNodedSegmentString.prototype.getNodeList = function getNodeList () {\n return this._nodeList\n};\nNodedSegmentString.prototype.addIntersectionNode = function addIntersectionNode (intPt, segmentIndex) {\n var normalizedSegmentIndex = segmentIndex;\n var nextSegIndex = normalizedSegmentIndex + 1;\n if (nextSegIndex < this._pts.length) {\n var nextPt = this._pts[nextSegIndex];\n if (intPt.equals2D(nextPt)) {\n normalizedSegmentIndex = nextSegIndex;\n }\n }\n var ei = this._nodeList.add(intPt, normalizedSegmentIndex);\n return ei\n};\nNodedSegmentString.prototype.addIntersections = function addIntersections (li, segmentIndex, geomIndex) {\n var this$1 = this;\n\n for (var i = 0; i < li.getIntersectionNum(); i++) {\n this$1.addIntersection(li, segmentIndex, geomIndex, i);\n }\n};\nNodedSegmentString.prototype.interfaces_ = function interfaces_ () {\n return [NodableSegmentString]\n};\nNodedSegmentString.prototype.getClass = function getClass () {\n return NodedSegmentString\n};\nNodedSegmentString.getNodedSubstrings = function getNodedSubstrings () {\n if (arguments.length === 1) {\n var segStrings = arguments[0];\n var resultEdgelist = new ArrayList();\n NodedSegmentString.getNodedSubstrings(segStrings, resultEdgelist);\n return resultEdgelist\n } else if (arguments.length === 2) {\n var segStrings$1 = arguments[0];\n var resultEdgelist$1 = arguments[1];\n for (var i = segStrings$1.iterator(); i.hasNext();) {\n var ss = i.next();\n ss.getNodeList().addSplitEdges(resultEdgelist$1);\n }\n }\n};\n\nvar LineSegment = function LineSegment () {\n this.p0 = null;\n this.p1 = null;\n if (arguments.length === 0) {\n this.p0 = new Coordinate();\n this.p1 = new Coordinate();\n } else if (arguments.length === 1) {\n var ls = arguments[0];\n this.p0 = new Coordinate(ls.p0);\n this.p1 = new Coordinate(ls.p1);\n } else if (arguments.length === 2) {\n this.p0 = arguments[0];\n this.p1 = arguments[1];\n } else if (arguments.length === 4) {\n var x0 = arguments[0];\n var y0 = arguments[1];\n var x1 = arguments[2];\n var y1 = arguments[3];\n this.p0 = new Coordinate(x0, y0);\n this.p1 = new Coordinate(x1, y1);\n }\n};\n\nvar staticAccessors$24 = { serialVersionUID: { configurable: true } };\nLineSegment.prototype.minX = function minX () {\n return Math.min(this.p0.x, this.p1.x)\n};\nLineSegment.prototype.orientationIndex = function orientationIndex () {\n if (arguments[0] instanceof LineSegment) {\n var seg = arguments[0];\n var orient0 = CGAlgorithms.orientationIndex(this.p0, this.p1, seg.p0);\n var orient1 = CGAlgorithms.orientationIndex(this.p0, this.p1, seg.p1);\n if (orient0 >= 0 && orient1 >= 0) { return Math.max(orient0, orient1) }\n if (orient0 <= 0 && orient1 <= 0) { return Math.max(orient0, orient1) }\n return 0\n } else if (arguments[0] instanceof Coordinate) {\n var p = arguments[0];\n return CGAlgorithms.orientationIndex(this.p0, this.p1, p)\n }\n};\nLineSegment.prototype.toGeometry = function toGeometry (geomFactory) {\n return geomFactory.createLineString([this.p0, this.p1])\n};\nLineSegment.prototype.isVertical = function isVertical () {\n return this.p0.x === this.p1.x\n};\nLineSegment.prototype.equals = function equals (o) {\n if (!(o instanceof LineSegment)) {\n return false\n }\n var other = o;\n return this.p0.equals(other.p0) && this.p1.equals(other.p1)\n};\nLineSegment.prototype.intersection = function intersection (line) {\n var li = new RobustLineIntersector();\n li.computeIntersection(this.p0, this.p1, line.p0, line.p1);\n if (li.hasIntersection()) { return li.getIntersection(0) }\n return null\n};\nLineSegment.prototype.project = function project () {\n if (arguments[0] instanceof Coordinate) {\n var p = arguments[0];\n if (p.equals(this.p0) || p.equals(this.p1)) { return new Coordinate(p) }\n var r = this.projectionFactor(p);\n var coord = new Coordinate();\n coord.x = this.p0.x + r * (this.p1.x - this.p0.x);\n coord.y = this.p0.y + r * (this.p1.y - this.p0.y);\n return coord\n } else if (arguments[0] instanceof LineSegment) {\n var seg = arguments[0];\n var pf0 = this.projectionFactor(seg.p0);\n var pf1 = this.projectionFactor(seg.p1);\n if (pf0 >= 1.0 && pf1 >= 1.0) { return null }\n if (pf0 <= 0.0 && pf1 <= 0.0) { return null }\n var newp0 = this.project(seg.p0);\n if (pf0 < 0.0) { newp0 = this.p0; }\n if (pf0 > 1.0) { newp0 = this.p1; }\n var newp1 = this.project(seg.p1);\n if (pf1 < 0.0) { newp1 = this.p0; }\n if (pf1 > 1.0) { newp1 = this.p1; }\n return new LineSegment(newp0, newp1)\n }\n};\nLineSegment.prototype.normalize = function normalize () {\n if (this.p1.compareTo(this.p0) < 0) { this.reverse(); }\n};\nLineSegment.prototype.angle = function angle () {\n return Math.atan2(this.p1.y - this.p0.y, this.p1.x - this.p0.x)\n};\nLineSegment.prototype.getCoordinate = function getCoordinate (i) {\n if (i === 0) { return this.p0 }\n return this.p1\n};\nLineSegment.prototype.distancePerpendicular = function distancePerpendicular (p) {\n return CGAlgorithms.distancePointLinePerpendicular(p, this.p0, this.p1)\n};\nLineSegment.prototype.minY = function minY () {\n return Math.min(this.p0.y, this.p1.y)\n};\nLineSegment.prototype.midPoint = function midPoint () {\n return LineSegment.midPoint(this.p0, this.p1)\n};\nLineSegment.prototype.projectionFactor = function projectionFactor (p) {\n if (p.equals(this.p0)) { return 0.0 }\n if (p.equals(this.p1)) { return 1.0 }\n var dx = this.p1.x - this.p0.x;\n var dy = this.p1.y - this.p0.y;\n var len = dx * dx + dy * dy;\n if (len <= 0.0) { return Double.NaN }\n var r = ((p.x - this.p0.x) * dx + (p.y - this.p0.y) * dy) / len;\n return r\n};\nLineSegment.prototype.closestPoints = function closestPoints (line) {\n var intPt = this.intersection(line);\n if (intPt !== null) {\n return [intPt, intPt]\n }\n var closestPt = new Array(2).fill(null);\n var minDistance = Double.MAX_VALUE;\n var dist = null;\n var close00 = this.closestPoint(line.p0);\n minDistance = close00.distance(line.p0);\n closestPt[0] = close00;\n closestPt[1] = line.p0;\n var close01 = this.closestPoint(line.p1);\n dist = close01.distance(line.p1);\n if (dist < minDistance) {\n minDistance = dist;\n closestPt[0] = close01;\n closestPt[1] = line.p1;\n }\n var close10 = line.closestPoint(this.p0);\n dist = close10.distance(this.p0);\n if (dist < minDistance) {\n minDistance = dist;\n closestPt[0] = this.p0;\n closestPt[1] = close10;\n }\n var close11 = line.closestPoint(this.p1);\n dist = close11.distance(this.p1);\n if (dist < minDistance) {\n minDistance = dist;\n closestPt[0] = this.p1;\n closestPt[1] = close11;\n }\n return closestPt\n};\nLineSegment.prototype.closestPoint = function closestPoint (p) {\n var factor = this.projectionFactor(p);\n if (factor > 0 && factor < 1) {\n return this.project(p)\n }\n var dist0 = this.p0.distance(p);\n var dist1 = this.p1.distance(p);\n if (dist0 < dist1) { return this.p0 }\n return this.p1\n};\nLineSegment.prototype.maxX = function maxX () {\n return Math.max(this.p0.x, this.p1.x)\n};\nLineSegment.prototype.getLength = function getLength () {\n return this.p0.distance(this.p1)\n};\nLineSegment.prototype.compareTo = function compareTo (o) {\n var other = o;\n var comp0 = this.p0.compareTo(other.p0);\n if (comp0 !== 0) { return comp0 }\n return this.p1.compareTo(other.p1)\n};\nLineSegment.prototype.reverse = function reverse () {\n var temp = this.p0;\n this.p0 = this.p1;\n this.p1 = temp;\n};\nLineSegment.prototype.equalsTopo = function equalsTopo (other) {\n return this.p0.equals(other.p0) &&\n (this.p1.equals(other.p1) || this.p0.equals(other.p1)) &&\n this.p1.equals(other.p0)\n};\nLineSegment.prototype.lineIntersection = function lineIntersection (line) {\n try {\n var intPt = HCoordinate.intersection(this.p0, this.p1, line.p0, line.p1);\n return intPt\n } catch (ex) {\n if (ex instanceof NotRepresentableException) {} else { throw ex }\n } finally {}\n return null\n};\nLineSegment.prototype.maxY = function maxY () {\n return Math.max(this.p0.y, this.p1.y)\n};\nLineSegment.prototype.pointAlongOffset = function pointAlongOffset (segmentLengthFraction, offsetDistance) {\n var segx = this.p0.x + segmentLengthFraction * (this.p1.x - this.p0.x);\n var segy = this.p0.y + segmentLengthFraction * (this.p1.y - this.p0.y);\n var dx = this.p1.x - this.p0.x;\n var dy = this.p1.y - this.p0.y;\n var len = Math.sqrt(dx * dx + dy * dy);\n var ux = 0.0;\n var uy = 0.0;\n if (offsetDistance !== 0.0) {\n if (len <= 0.0) { throw new Error('Cannot compute offset from zero-length line segment') }\n ux = offsetDistance * dx / len;\n uy = offsetDistance * dy / len;\n }\n var offsetx = segx - uy;\n var offsety = segy + ux;\n var coord = new Coordinate(offsetx, offsety);\n return coord\n};\nLineSegment.prototype.setCoordinates = function setCoordinates () {\n if (arguments.length === 1) {\n var ls = arguments[0];\n this.setCoordinates(ls.p0, ls.p1);\n } else if (arguments.length === 2) {\n var p0 = arguments[0];\n var p1 = arguments[1];\n this.p0.x = p0.x;\n this.p0.y = p0.y;\n this.p1.x = p1.x;\n this.p1.y = p1.y;\n }\n};\nLineSegment.prototype.segmentFraction = function segmentFraction (inputPt) {\n var segFrac = this.projectionFactor(inputPt);\n if (segFrac < 0.0) { segFrac = 0.0; } else if (segFrac > 1.0 || Double.isNaN(segFrac)) { segFrac = 1.0; }\n return segFrac\n};\nLineSegment.prototype.toString = function toString () {\n return 'LINESTRING( ' + this.p0.x + ' ' + this.p0.y + ', ' + this.p1.x + ' ' + this.p1.y + ')'\n};\nLineSegment.prototype.isHorizontal = function isHorizontal () {\n return this.p0.y === this.p1.y\n};\nLineSegment.prototype.distance = function distance () {\n if (arguments[0] instanceof LineSegment) {\n var ls = arguments[0];\n return CGAlgorithms.distanceLineLine(this.p0, this.p1, ls.p0, ls.p1)\n } else if (arguments[0] instanceof Coordinate) {\n var p = arguments[0];\n return CGAlgorithms.distancePointLine(p, this.p0, this.p1)\n }\n};\nLineSegment.prototype.pointAlong = function pointAlong (segmentLengthFraction) {\n var coord = new Coordinate();\n coord.x = this.p0.x + segmentLengthFraction * (this.p1.x - this.p0.x);\n coord.y = this.p0.y + segmentLengthFraction * (this.p1.y - this.p0.y);\n return coord\n};\nLineSegment.prototype.hashCode = function hashCode () {\n var bits0 = Double.doubleToLongBits(this.p0.x);\n bits0 ^= Double.doubleToLongBits(this.p0.y) * 31;\n var hash0 = Math.trunc(bits0) ^ Math.trunc(bits0 >> 32);\n var bits1 = Double.doubleToLongBits(this.p1.x);\n bits1 ^= Double.doubleToLongBits(this.p1.y) * 31;\n var hash1 = Math.trunc(bits1) ^ Math.trunc(bits1 >> 32);\n return hash0 ^ hash1\n};\nLineSegment.prototype.interfaces_ = function interfaces_ () {\n return [Comparable, Serializable]\n};\nLineSegment.prototype.getClass = function getClass () {\n return LineSegment\n};\nLineSegment.midPoint = function midPoint (p0, p1) {\n return new Coordinate((p0.x + p1.x) / 2, (p0.y + p1.y) / 2)\n};\nstaticAccessors$24.serialVersionUID.get = function () { return 3252005833466256227 };\n\nObject.defineProperties( LineSegment, staticAccessors$24 );\n\nvar MonotoneChainOverlapAction = function MonotoneChainOverlapAction () {\n this.tempEnv1 = new Envelope();\n this.tempEnv2 = new Envelope();\n this._overlapSeg1 = new LineSegment();\n this._overlapSeg2 = new LineSegment();\n};\nMonotoneChainOverlapAction.prototype.overlap = function overlap () {\n if (arguments.length === 2) {\n // const seg1 = arguments[0]\n // const seg2 = arguments[1]\n } else if (arguments.length === 4) {\n var mc1 = arguments[0];\n var start1 = arguments[1];\n var mc2 = arguments[2];\n var start2 = arguments[3];\n mc1.getLineSegment(start1, this._overlapSeg1);\n mc2.getLineSegment(start2, this._overlapSeg2);\n this.overlap(this._overlapSeg1, this._overlapSeg2);\n }\n};\nMonotoneChainOverlapAction.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nMonotoneChainOverlapAction.prototype.getClass = function getClass () {\n return MonotoneChainOverlapAction\n};\n\nvar MonotoneChain = function MonotoneChain () {\n this._pts = null;\n this._start = null;\n this._end = null;\n this._env = null;\n this._context = null;\n this._id = null;\n var pts = arguments[0];\n var start = arguments[1];\n var end = arguments[2];\n var context = arguments[3];\n this._pts = pts;\n this._start = start;\n this._end = end;\n this._context = context;\n};\nMonotoneChain.prototype.getLineSegment = function getLineSegment (index, ls) {\n ls.p0 = this._pts[index];\n ls.p1 = this._pts[index + 1];\n};\nMonotoneChain.prototype.computeSelect = function computeSelect (searchEnv, start0, end0, mcs) {\n var p0 = this._pts[start0];\n var p1 = this._pts[end0];\n mcs.tempEnv1.init(p0, p1);\n if (end0 - start0 === 1) {\n mcs.select(this, start0);\n return null\n }\n if (!searchEnv.intersects(mcs.tempEnv1)) { return null }\n var mid = Math.trunc((start0 + end0) / 2);\n if (start0 < mid) {\n this.computeSelect(searchEnv, start0, mid, mcs);\n }\n if (mid < end0) {\n this.computeSelect(searchEnv, mid, end0, mcs);\n }\n};\nMonotoneChain.prototype.getCoordinates = function getCoordinates () {\n var this$1 = this;\n\n var coord = new Array(this._end - this._start + 1).fill(null);\n var index = 0;\n for (var i = this._start; i <= this._end; i++) {\n coord[index++] = this$1._pts[i];\n }\n return coord\n};\nMonotoneChain.prototype.computeOverlaps = function computeOverlaps (mc, mco) {\n this.computeOverlapsInternal(this._start, this._end, mc, mc._start, mc._end, mco);\n};\nMonotoneChain.prototype.setId = function setId (id) {\n this._id = id;\n};\nMonotoneChain.prototype.select = function select (searchEnv, mcs) {\n this.computeSelect(searchEnv, this._start, this._end, mcs);\n};\nMonotoneChain.prototype.getEnvelope = function getEnvelope () {\n if (this._env === null) {\n var p0 = this._pts[this._start];\n var p1 = this._pts[this._end];\n this._env = new Envelope(p0, p1);\n }\n return this._env\n};\nMonotoneChain.prototype.getEndIndex = function getEndIndex () {\n return this._end\n};\nMonotoneChain.prototype.getStartIndex = function getStartIndex () {\n return this._start\n};\nMonotoneChain.prototype.getContext = function getContext () {\n return this._context\n};\nMonotoneChain.prototype.getId = function getId () {\n return this._id\n};\nMonotoneChain.prototype.computeOverlapsInternal = function computeOverlapsInternal (start0, end0, mc, start1, end1, mco) {\n var p00 = this._pts[start0];\n var p01 = this._pts[end0];\n var p10 = mc._pts[start1];\n var p11 = mc._pts[end1];\n if (end0 - start0 === 1 && end1 - start1 === 1) {\n mco.overlap(this, start0, mc, start1);\n return null\n }\n mco.tempEnv1.init(p00, p01);\n mco.tempEnv2.init(p10, p11);\n if (!mco.tempEnv1.intersects(mco.tempEnv2)) { return null }\n var mid0 = Math.trunc((start0 + end0) / 2);\n var mid1 = Math.trunc((start1 + end1) / 2);\n if (start0 < mid0) {\n if (start1 < mid1) { this.computeOverlapsInternal(start0, mid0, mc, start1, mid1, mco); }\n if (mid1 < end1) { this.computeOverlapsInternal(start0, mid0, mc, mid1, end1, mco); }\n }\n if (mid0 < end0) {\n if (start1 < mid1) { this.computeOverlapsInternal(mid0, end0, mc, start1, mid1, mco); }\n if (mid1 < end1) { this.computeOverlapsInternal(mid0, end0, mc, mid1, end1, mco); }\n }\n};\nMonotoneChain.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nMonotoneChain.prototype.getClass = function getClass () {\n return MonotoneChain\n};\n\nvar MonotoneChainBuilder = function MonotoneChainBuilder () {};\n\nMonotoneChainBuilder.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nMonotoneChainBuilder.prototype.getClass = function getClass () {\n return MonotoneChainBuilder\n};\nMonotoneChainBuilder.getChainStartIndices = function getChainStartIndices (pts) {\n var start = 0;\n var startIndexList = new ArrayList();\n startIndexList.add(new Integer(start));\n do {\n var last = MonotoneChainBuilder.findChainEnd(pts, start);\n startIndexList.add(new Integer(last));\n start = last;\n } while (start < pts.length - 1)\n var startIndex = MonotoneChainBuilder.toIntArray(startIndexList);\n return startIndex\n};\nMonotoneChainBuilder.findChainEnd = function findChainEnd (pts, start) {\n var safeStart = start;\n while (safeStart < pts.length - 1 && pts[safeStart].equals2D(pts[safeStart + 1])) {\n safeStart++;\n }\n if (safeStart >= pts.length - 1) {\n return pts.length - 1\n }\n var chainQuad = Quadrant.quadrant(pts[safeStart], pts[safeStart + 1]);\n var last = start + 1;\n while (last < pts.length) {\n if (!pts[last - 1].equals2D(pts[last])) {\n var quad = Quadrant.quadrant(pts[last - 1], pts[last]);\n if (quad !== chainQuad) { break }\n }\n last++;\n }\n return last - 1\n};\nMonotoneChainBuilder.getChains = function getChains () {\n if (arguments.length === 1) {\n var pts = arguments[0];\n return MonotoneChainBuilder.getChains(pts, null)\n } else if (arguments.length === 2) {\n var pts$1 = arguments[0];\n var context = arguments[1];\n var mcList = new ArrayList();\n var startIndex = MonotoneChainBuilder.getChainStartIndices(pts$1);\n for (var i = 0; i < startIndex.length - 1; i++) {\n var mc = new MonotoneChain(pts$1, startIndex[i], startIndex[i + 1], context);\n mcList.add(mc);\n }\n return mcList\n }\n};\nMonotoneChainBuilder.toIntArray = function toIntArray (list) {\n var array = new Array(list.size()).fill(null);\n for (var i = 0; i < array.length; i++) {\n array[i] = list.get(i).intValue();\n }\n return array\n};\n\nvar Noder = function Noder () {};\n\nNoder.prototype.computeNodes = function computeNodes (segStrings) {};\nNoder.prototype.getNodedSubstrings = function getNodedSubstrings () {};\nNoder.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nNoder.prototype.getClass = function getClass () {\n return Noder\n};\n\nvar SinglePassNoder = function SinglePassNoder () {\n this._segInt = null;\n if (arguments.length === 0) {} else if (arguments.length === 1) {\n var segInt = arguments[0];\n this.setSegmentIntersector(segInt);\n }\n};\nSinglePassNoder.prototype.setSegmentIntersector = function setSegmentIntersector (segInt) {\n this._segInt = segInt;\n};\nSinglePassNoder.prototype.interfaces_ = function interfaces_ () {\n return [Noder]\n};\nSinglePassNoder.prototype.getClass = function getClass () {\n return SinglePassNoder\n};\n\nvar MCIndexNoder = (function (SinglePassNoder$$1) {\n function MCIndexNoder (si) {\n if (si) { SinglePassNoder$$1.call(this, si); }\n else { SinglePassNoder$$1.call(this); }\n this._monoChains = new ArrayList();\n this._index = new STRtree();\n this._idCounter = 0;\n this._nodedSegStrings = null;\n this._nOverlaps = 0;\n }\n\n if ( SinglePassNoder$$1 ) MCIndexNoder.__proto__ = SinglePassNoder$$1;\n MCIndexNoder.prototype = Object.create( SinglePassNoder$$1 && SinglePassNoder$$1.prototype );\n MCIndexNoder.prototype.constructor = MCIndexNoder;\n\n var staticAccessors = { SegmentOverlapAction: { configurable: true } };\n MCIndexNoder.prototype.getMonotoneChains = function getMonotoneChains () {\n return this._monoChains\n };\n MCIndexNoder.prototype.getNodedSubstrings = function getNodedSubstrings () {\n return NodedSegmentString.getNodedSubstrings(this._nodedSegStrings)\n };\n MCIndexNoder.prototype.getIndex = function getIndex () {\n return this._index\n };\n MCIndexNoder.prototype.add = function add (segStr) {\n var this$1 = this;\n\n var segChains = MonotoneChainBuilder.getChains(segStr.getCoordinates(), segStr);\n for (var i = segChains.iterator(); i.hasNext();) {\n var mc = i.next();\n mc.setId(this$1._idCounter++);\n this$1._index.insert(mc.getEnvelope(), mc);\n this$1._monoChains.add(mc);\n }\n };\n MCIndexNoder.prototype.computeNodes = function computeNodes (inputSegStrings) {\n var this$1 = this;\n\n this._nodedSegStrings = inputSegStrings;\n for (var i = inputSegStrings.iterator(); i.hasNext();) {\n this$1.add(i.next());\n }\n this.intersectChains();\n };\n MCIndexNoder.prototype.intersectChains = function intersectChains () {\n var this$1 = this;\n\n var overlapAction = new SegmentOverlapAction(this._segInt);\n for (var i = this._monoChains.iterator(); i.hasNext();) {\n var queryChain = i.next();\n var overlapChains = this$1._index.query(queryChain.getEnvelope());\n for (var j = overlapChains.iterator(); j.hasNext();) {\n var testChain = j.next();\n if (testChain.getId() > queryChain.getId()) {\n queryChain.computeOverlaps(testChain, overlapAction);\n this$1._nOverlaps++;\n }\n if (this$1._segInt.isDone()) { return null }\n }\n }\n };\n MCIndexNoder.prototype.interfaces_ = function interfaces_ () {\n return []\n };\n MCIndexNoder.prototype.getClass = function getClass () {\n return MCIndexNoder\n };\n staticAccessors.SegmentOverlapAction.get = function () { return SegmentOverlapAction };\n\n Object.defineProperties( MCIndexNoder, staticAccessors );\n\n return MCIndexNoder;\n}(SinglePassNoder));\n\nvar SegmentOverlapAction = (function (MonotoneChainOverlapAction$$1) {\n function SegmentOverlapAction () {\n MonotoneChainOverlapAction$$1.call(this);\n this._si = null;\n var si = arguments[0];\n this._si = si;\n }\n\n if ( MonotoneChainOverlapAction$$1 ) SegmentOverlapAction.__proto__ = MonotoneChainOverlapAction$$1;\n SegmentOverlapAction.prototype = Object.create( MonotoneChainOverlapAction$$1 && MonotoneChainOverlapAction$$1.prototype );\n SegmentOverlapAction.prototype.constructor = SegmentOverlapAction;\n SegmentOverlapAction.prototype.overlap = function overlap () {\n if (arguments.length === 4) {\n var mc1 = arguments[0];\n var start1 = arguments[1];\n var mc2 = arguments[2];\n var start2 = arguments[3];\n var ss1 = mc1.getContext();\n var ss2 = mc2.getContext();\n this._si.processIntersections(ss1, start1, ss2, start2);\n } else { return MonotoneChainOverlapAction$$1.prototype.overlap.apply(this, arguments) }\n };\n SegmentOverlapAction.prototype.interfaces_ = function interfaces_ () {\n return []\n };\n SegmentOverlapAction.prototype.getClass = function getClass () {\n return SegmentOverlapAction\n };\n\n return SegmentOverlapAction;\n}(MonotoneChainOverlapAction));\n\nvar BufferParameters = function BufferParameters () {\n this._quadrantSegments = BufferParameters.DEFAULT_QUADRANT_SEGMENTS;\n this._endCapStyle = BufferParameters.CAP_ROUND;\n this._joinStyle = BufferParameters.JOIN_ROUND;\n this._mitreLimit = BufferParameters.DEFAULT_MITRE_LIMIT;\n this._isSingleSided = false;\n this._simplifyFactor = BufferParameters.DEFAULT_SIMPLIFY_FACTOR;\n\n if (arguments.length === 0) {} else if (arguments.length === 1) {\n var quadrantSegments = arguments[0];\n this.setQuadrantSegments(quadrantSegments);\n } else if (arguments.length === 2) {\n var quadrantSegments$1 = arguments[0];\n var endCapStyle = arguments[1];\n this.setQuadrantSegments(quadrantSegments$1);\n this.setEndCapStyle(endCapStyle);\n } else if (arguments.length === 4) {\n var quadrantSegments$2 = arguments[0];\n var endCapStyle$1 = arguments[1];\n var joinStyle = arguments[2];\n var mitreLimit = arguments[3];\n this.setQuadrantSegments(quadrantSegments$2);\n this.setEndCapStyle(endCapStyle$1);\n this.setJoinStyle(joinStyle);\n this.setMitreLimit(mitreLimit);\n }\n};\n\nvar staticAccessors$25 = { CAP_ROUND: { configurable: true },CAP_FLAT: { configurable: true },CAP_SQUARE: { configurable: true },JOIN_ROUND: { configurable: true },JOIN_MITRE: { configurable: true },JOIN_BEVEL: { configurable: true },DEFAULT_QUADRANT_SEGMENTS: { configurable: true },DEFAULT_MITRE_LIMIT: { configurable: true },DEFAULT_SIMPLIFY_FACTOR: { configurable: true } };\nBufferParameters.prototype.getEndCapStyle = function getEndCapStyle () {\n return this._endCapStyle\n};\nBufferParameters.prototype.isSingleSided = function isSingleSided () {\n return this._isSingleSided\n};\nBufferParameters.prototype.setQuadrantSegments = function setQuadrantSegments (quadSegs) {\n this._quadrantSegments = quadSegs;\n if (this._quadrantSegments === 0) { this._joinStyle = BufferParameters.JOIN_BEVEL; }\n if (this._quadrantSegments < 0) {\n this._joinStyle = BufferParameters.JOIN_MITRE;\n this._mitreLimit = Math.abs(this._quadrantSegments);\n }\n if (quadSegs <= 0) {\n this._quadrantSegments = 1;\n }\n if (this._joinStyle !== BufferParameters.JOIN_ROUND) {\n this._quadrantSegments = BufferParameters.DEFAULT_QUADRANT_SEGMENTS;\n }\n};\nBufferParameters.prototype.getJoinStyle = function getJoinStyle () {\n return this._joinStyle\n};\nBufferParameters.prototype.setJoinStyle = function setJoinStyle (joinStyle) {\n this._joinStyle = joinStyle;\n};\nBufferParameters.prototype.setSimplifyFactor = function setSimplifyFactor (simplifyFactor) {\n this._simplifyFactor = simplifyFactor < 0 ? 0 : simplifyFactor;\n};\nBufferParameters.prototype.getSimplifyFactor = function getSimplifyFactor () {\n return this._simplifyFactor\n};\nBufferParameters.prototype.getQuadrantSegments = function getQuadrantSegments () {\n return this._quadrantSegments\n};\nBufferParameters.prototype.setEndCapStyle = function setEndCapStyle (endCapStyle) {\n this._endCapStyle = endCapStyle;\n};\nBufferParameters.prototype.getMitreLimit = function getMitreLimit () {\n return this._mitreLimit\n};\nBufferParameters.prototype.setMitreLimit = function setMitreLimit (mitreLimit) {\n this._mitreLimit = mitreLimit;\n};\nBufferParameters.prototype.setSingleSided = function setSingleSided (isSingleSided) {\n this._isSingleSided = isSingleSided;\n};\nBufferParameters.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nBufferParameters.prototype.getClass = function getClass () {\n return BufferParameters\n};\nBufferParameters.bufferDistanceError = function bufferDistanceError (quadSegs) {\n var alpha = Math.PI / 2.0 / quadSegs;\n return 1 - Math.cos(alpha / 2.0)\n};\nstaticAccessors$25.CAP_ROUND.get = function () { return 1 };\nstaticAccessors$25.CAP_FLAT.get = function () { return 2 };\nstaticAccessors$25.CAP_SQUARE.get = function () { return 3 };\nstaticAccessors$25.JOIN_ROUND.get = function () { return 1 };\nstaticAccessors$25.JOIN_MITRE.get = function () { return 2 };\nstaticAccessors$25.JOIN_BEVEL.get = function () { return 3 };\nstaticAccessors$25.DEFAULT_QUADRANT_SEGMENTS.get = function () { return 8 };\nstaticAccessors$25.DEFAULT_MITRE_LIMIT.get = function () { return 5.0 };\nstaticAccessors$25.DEFAULT_SIMPLIFY_FACTOR.get = function () { return 0.01 };\n\nObject.defineProperties( BufferParameters, staticAccessors$25 );\n\nvar BufferInputLineSimplifier = function BufferInputLineSimplifier (inputLine) {\n this._distanceTol = null;\n this._isDeleted = null;\n this._angleOrientation = CGAlgorithms.COUNTERCLOCKWISE;\n this._inputLine = inputLine || null;\n};\n\nvar staticAccessors$26 = { INIT: { configurable: true },DELETE: { configurable: true },KEEP: { configurable: true },NUM_PTS_TO_CHECK: { configurable: true } };\nBufferInputLineSimplifier.prototype.isDeletable = function isDeletable (i0, i1, i2, distanceTol) {\n var p0 = this._inputLine[i0];\n var p1 = this._inputLine[i1];\n var p2 = this._inputLine[i2];\n if (!this.isConcave(p0, p1, p2)) { return false }\n if (!this.isShallow(p0, p1, p2, distanceTol)) { return false }\n return this.isShallowSampled(p0, p1, i0, i2, distanceTol)\n};\nBufferInputLineSimplifier.prototype.deleteShallowConcavities = function deleteShallowConcavities () {\n var this$1 = this;\n\n var index = 1;\n // const maxIndex = this._inputLine.length - 1\n var midIndex = this.findNextNonDeletedIndex(index);\n var lastIndex = this.findNextNonDeletedIndex(midIndex);\n var isChanged = false;\n while (lastIndex < this._inputLine.length) {\n var isMiddleVertexDeleted = false;\n if (this$1.isDeletable(index, midIndex, lastIndex, this$1._distanceTol)) {\n this$1._isDeleted[midIndex] = BufferInputLineSimplifier.DELETE;\n isMiddleVertexDeleted = true;\n isChanged = true;\n }\n if (isMiddleVertexDeleted) { index = lastIndex; } else { index = midIndex; }\n midIndex = this$1.findNextNonDeletedIndex(index);\n lastIndex = this$1.findNextNonDeletedIndex(midIndex);\n }\n return isChanged\n};\nBufferInputLineSimplifier.prototype.isShallowConcavity = function isShallowConcavity (p0, p1, p2, distanceTol) {\n var orientation = CGAlgorithms.computeOrientation(p0, p1, p2);\n var isAngleToSimplify = orientation === this._angleOrientation;\n if (!isAngleToSimplify) { return false }\n var dist = CGAlgorithms.distancePointLine(p1, p0, p2);\n return dist < distanceTol\n};\nBufferInputLineSimplifier.prototype.isShallowSampled = function isShallowSampled (p0, p2, i0, i2, distanceTol) {\n var this$1 = this;\n\n var inc = Math.trunc((i2 - i0) / BufferInputLineSimplifier.NUM_PTS_TO_CHECK);\n if (inc <= 0) { inc = 1; }\n for (var i = i0; i < i2; i += inc) {\n if (!this$1.isShallow(p0, p2, this$1._inputLine[i], distanceTol)) { return false }\n }\n return true\n};\nBufferInputLineSimplifier.prototype.isConcave = function isConcave (p0, p1, p2) {\n var orientation = CGAlgorithms.computeOrientation(p0, p1, p2);\n var isConcave = orientation === this._angleOrientation;\n return isConcave\n};\nBufferInputLineSimplifier.prototype.simplify = function simplify (distanceTol) {\n var this$1 = this;\n\n this._distanceTol = Math.abs(distanceTol);\n if (distanceTol < 0) { this._angleOrientation = CGAlgorithms.CLOCKWISE; }\n this._isDeleted = new Array(this._inputLine.length).fill(null);\n var isChanged = false;\n do {\n isChanged = this$1.deleteShallowConcavities();\n } while (isChanged)\n return this.collapseLine()\n};\nBufferInputLineSimplifier.prototype.findNextNonDeletedIndex = function findNextNonDeletedIndex (index) {\n var next = index + 1;\n while (next < this._inputLine.length && this._isDeleted[next] === BufferInputLineSimplifier.DELETE) { next++; }\n return next\n};\nBufferInputLineSimplifier.prototype.isShallow = function isShallow (p0, p1, p2, distanceTol) {\n var dist = CGAlgorithms.distancePointLine(p1, p0, p2);\n return dist < distanceTol\n};\nBufferInputLineSimplifier.prototype.collapseLine = function collapseLine () {\n var this$1 = this;\n\n var coordList = new CoordinateList();\n for (var i = 0; i < this._inputLine.length; i++) {\n if (this$1._isDeleted[i] !== BufferInputLineSimplifier.DELETE) { coordList.add(this$1._inputLine[i]); }\n }\n return coordList.toCoordinateArray()\n};\nBufferInputLineSimplifier.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nBufferInputLineSimplifier.prototype.getClass = function getClass () {\n return BufferInputLineSimplifier\n};\nBufferInputLineSimplifier.simplify = function simplify (inputLine, distanceTol) {\n var simp = new BufferInputLineSimplifier(inputLine);\n return simp.simplify(distanceTol)\n};\nstaticAccessors$26.INIT.get = function () { return 0 };\nstaticAccessors$26.DELETE.get = function () { return 1 };\nstaticAccessors$26.KEEP.get = function () { return 1 };\nstaticAccessors$26.NUM_PTS_TO_CHECK.get = function () { return 10 };\n\nObject.defineProperties( BufferInputLineSimplifier, staticAccessors$26 );\n\nvar OffsetSegmentString = function OffsetSegmentString () {\n this._ptList = null;\n this._precisionModel = null;\n this._minimimVertexDistance = 0.0;\n this._ptList = new ArrayList();\n};\n\nvar staticAccessors$28 = { COORDINATE_ARRAY_TYPE: { configurable: true } };\nOffsetSegmentString.prototype.getCoordinates = function getCoordinates () {\n var coord = this._ptList.toArray(OffsetSegmentString.COORDINATE_ARRAY_TYPE);\n return coord\n};\nOffsetSegmentString.prototype.setPrecisionModel = function setPrecisionModel (precisionModel) {\n this._precisionModel = precisionModel;\n};\nOffsetSegmentString.prototype.addPt = function addPt (pt) {\n var bufPt = new Coordinate(pt);\n this._precisionModel.makePrecise(bufPt);\n if (this.isRedundant(bufPt)) { return null }\n this._ptList.add(bufPt);\n};\nOffsetSegmentString.prototype.revere = function revere () {};\nOffsetSegmentString.prototype.addPts = function addPts (pt, isForward) {\n var this$1 = this;\n\n if (isForward) {\n for (var i = 0; i < pt.length; i++) {\n this$1.addPt(pt[i]);\n }\n } else {\n for (var i$1 = pt.length - 1; i$1 >= 0; i$1--) {\n this$1.addPt(pt[i$1]);\n }\n }\n};\nOffsetSegmentString.prototype.isRedundant = function isRedundant (pt) {\n if (this._ptList.size() < 1) { return false }\n var lastPt = this._ptList.get(this._ptList.size() - 1);\n var ptDist = pt.distance(lastPt);\n if (ptDist < this._minimimVertexDistance) { return true }\n return false\n};\nOffsetSegmentString.prototype.toString = function toString () {\n var fact = new GeometryFactory();\n var line = fact.createLineString(this.getCoordinates());\n return line.toString()\n};\nOffsetSegmentString.prototype.closeRing = function closeRing () {\n if (this._ptList.size() < 1) { return null }\n var startPt = new Coordinate(this._ptList.get(0));\n var lastPt = this._ptList.get(this._ptList.size() - 1);\n // const last2Pt = null\n // if (this._ptList.size() >= 2) last2Pt = this._ptList.get(this._ptList.size() - 2)\n if (startPt.equals(lastPt)) { return null }\n this._ptList.add(startPt);\n};\nOffsetSegmentString.prototype.setMinimumVertexDistance = function setMinimumVertexDistance (minimimVertexDistance) {\n this._minimimVertexDistance = minimimVertexDistance;\n};\nOffsetSegmentString.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nOffsetSegmentString.prototype.getClass = function getClass () {\n return OffsetSegmentString\n};\nstaticAccessors$28.COORDINATE_ARRAY_TYPE.get = function () { return new Array(0).fill(null) };\n\nObject.defineProperties( OffsetSegmentString, staticAccessors$28 );\n\nvar Angle = function Angle () {};\n\nvar staticAccessors$29 = { PI_TIMES_2: { configurable: true },PI_OVER_2: { configurable: true },PI_OVER_4: { configurable: true },COUNTERCLOCKWISE: { configurable: true },CLOCKWISE: { configurable: true },NONE: { configurable: true } };\n\nAngle.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nAngle.prototype.getClass = function getClass () {\n return Angle\n};\nAngle.toDegrees = function toDegrees (radians) {\n return radians * 180 / Math.PI\n};\nAngle.normalize = function normalize (angle) {\n while (angle > Math.PI) { angle -= Angle.PI_TIMES_2; }\n while (angle <= -Math.PI) { angle += Angle.PI_TIMES_2; }\n return angle\n};\nAngle.angle = function angle () {\n if (arguments.length === 1) {\n var p = arguments[0];\n return Math.atan2(p.y, p.x)\n } else if (arguments.length === 2) {\n var p0 = arguments[0];\n var p1 = arguments[1];\n var dx = p1.x - p0.x;\n var dy = p1.y - p0.y;\n return Math.atan2(dy, dx)\n }\n};\nAngle.isAcute = function isAcute (p0, p1, p2) {\n var dx0 = p0.x - p1.x;\n var dy0 = p0.y - p1.y;\n var dx1 = p2.x - p1.x;\n var dy1 = p2.y - p1.y;\n var dotprod = dx0 * dx1 + dy0 * dy1;\n return dotprod > 0\n};\nAngle.isObtuse = function isObtuse (p0, p1, p2) {\n var dx0 = p0.x - p1.x;\n var dy0 = p0.y - p1.y;\n var dx1 = p2.x - p1.x;\n var dy1 = p2.y - p1.y;\n var dotprod = dx0 * dx1 + dy0 * dy1;\n return dotprod < 0\n};\nAngle.interiorAngle = function interiorAngle (p0, p1, p2) {\n var anglePrev = Angle.angle(p1, p0);\n var angleNext = Angle.angle(p1, p2);\n return Math.abs(angleNext - anglePrev)\n};\nAngle.normalizePositive = function normalizePositive (angle) {\n if (angle < 0.0) {\n while (angle < 0.0) { angle += Angle.PI_TIMES_2; }\n if (angle >= Angle.PI_TIMES_2) { angle = 0.0; }\n } else {\n while (angle >= Angle.PI_TIMES_2) { angle -= Angle.PI_TIMES_2; }\n if (angle < 0.0) { angle = 0.0; }\n }\n return angle\n};\nAngle.angleBetween = function angleBetween (tip1, tail, tip2) {\n var a1 = Angle.angle(tail, tip1);\n var a2 = Angle.angle(tail, tip2);\n return Angle.diff(a1, a2)\n};\nAngle.diff = function diff (ang1, ang2) {\n var delAngle = null;\n if (ang1 < ang2) {\n delAngle = ang2 - ang1;\n } else {\n delAngle = ang1 - ang2;\n }\n if (delAngle > Math.PI) {\n delAngle = 2 * Math.PI - delAngle;\n }\n return delAngle\n};\nAngle.toRadians = function toRadians (angleDegrees) {\n return angleDegrees * Math.PI / 180.0\n};\nAngle.getTurn = function getTurn (ang1, ang2) {\n var crossproduct = Math.sin(ang2 - ang1);\n if (crossproduct > 0) {\n return Angle.COUNTERCLOCKWISE\n }\n if (crossproduct < 0) {\n return Angle.CLOCKWISE\n }\n return Angle.NONE\n};\nAngle.angleBetweenOriented = function angleBetweenOriented (tip1, tail, tip2) {\n var a1 = Angle.angle(tail, tip1);\n var a2 = Angle.angle(tail, tip2);\n var angDel = a2 - a1;\n if (angDel <= -Math.PI) { return angDel + Angle.PI_TIMES_2 }\n if (angDel > Math.PI) { return angDel - Angle.PI_TIMES_2 }\n return angDel\n};\nstaticAccessors$29.PI_TIMES_2.get = function () { return 2.0 * Math.PI };\nstaticAccessors$29.PI_OVER_2.get = function () { return Math.PI / 2.0 };\nstaticAccessors$29.PI_OVER_4.get = function () { return Math.PI / 4.0 };\nstaticAccessors$29.COUNTERCLOCKWISE.get = function () { return CGAlgorithms.COUNTERCLOCKWISE };\nstaticAccessors$29.CLOCKWISE.get = function () { return CGAlgorithms.CLOCKWISE };\nstaticAccessors$29.NONE.get = function () { return CGAlgorithms.COLLINEAR };\n\nObject.defineProperties( Angle, staticAccessors$29 );\n\nvar OffsetSegmentGenerator = function OffsetSegmentGenerator () {\n this._maxCurveSegmentError = 0.0;\n this._filletAngleQuantum = null;\n this._closingSegLengthFactor = 1;\n this._segList = null;\n this._distance = 0.0;\n this._precisionModel = null;\n this._bufParams = null;\n this._li = null;\n this._s0 = null;\n this._s1 = null;\n this._s2 = null;\n this._seg0 = new LineSegment();\n this._seg1 = new LineSegment();\n this._offset0 = new LineSegment();\n this._offset1 = new LineSegment();\n this._side = 0;\n this._hasNarrowConcaveAngle = false;\n var precisionModel = arguments[0];\n var bufParams = arguments[1];\n var distance = arguments[2];\n this._precisionModel = precisionModel;\n this._bufParams = bufParams;\n this._li = new RobustLineIntersector();\n this._filletAngleQuantum = Math.PI / 2.0 / bufParams.getQuadrantSegments();\n if (bufParams.getQuadrantSegments() >= 8 && bufParams.getJoinStyle() === BufferParameters.JOIN_ROUND) { this._closingSegLengthFactor = OffsetSegmentGenerator.MAX_CLOSING_SEG_LEN_FACTOR; }\n this.init(distance);\n};\n\nvar staticAccessors$27 = { OFFSET_SEGMENT_SEPARATION_FACTOR: { configurable: true },INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR: { configurable: true },CURVE_VERTEX_SNAP_DISTANCE_FACTOR: { configurable: true },MAX_CLOSING_SEG_LEN_FACTOR: { configurable: true } };\nOffsetSegmentGenerator.prototype.addNextSegment = function addNextSegment (p, addStartPoint) {\n this._s0 = this._s1;\n this._s1 = this._s2;\n this._s2 = p;\n this._seg0.setCoordinates(this._s0, this._s1);\n this.computeOffsetSegment(this._seg0, this._side, this._distance, this._offset0);\n this._seg1.setCoordinates(this._s1, this._s2);\n this.computeOffsetSegment(this._seg1, this._side, this._distance, this._offset1);\n if (this._s1.equals(this._s2)) { return null }\n var orientation = CGAlgorithms.computeOrientation(this._s0, this._s1, this._s2);\n var outsideTurn = (orientation === CGAlgorithms.CLOCKWISE && this._side === Position.LEFT) || (orientation === CGAlgorithms.COUNTERCLOCKWISE && this._side === Position.RIGHT);\n if (orientation === 0) {\n this.addCollinear(addStartPoint);\n } else if (outsideTurn) {\n this.addOutsideTurn(orientation, addStartPoint);\n } else {\n this.addInsideTurn(orientation, addStartPoint);\n }\n};\nOffsetSegmentGenerator.prototype.addLineEndCap = function addLineEndCap (p0, p1) {\n var seg = new LineSegment(p0, p1);\n var offsetL = new LineSegment();\n this.computeOffsetSegment(seg, Position.LEFT, this._distance, offsetL);\n var offsetR = new LineSegment();\n this.computeOffsetSegment(seg, Position.RIGHT, this._distance, offsetR);\n var dx = p1.x - p0.x;\n var dy = p1.y - p0.y;\n var angle = Math.atan2(dy, dx);\n switch (this._bufParams.getEndCapStyle()) {\n case BufferParameters.CAP_ROUND:\n this._segList.addPt(offsetL.p1);\n this.addFilletArc(p1, angle + Math.PI / 2, angle - Math.PI / 2, CGAlgorithms.CLOCKWISE, this._distance);\n this._segList.addPt(offsetR.p1);\n break\n case BufferParameters.CAP_FLAT:\n this._segList.addPt(offsetL.p1);\n this._segList.addPt(offsetR.p1);\n break\n case BufferParameters.CAP_SQUARE:\n var squareCapSideOffset = new Coordinate();\n squareCapSideOffset.x = Math.abs(this._distance) * Math.cos(angle);\n squareCapSideOffset.y = Math.abs(this._distance) * Math.sin(angle);\n var squareCapLOffset = new Coordinate(offsetL.p1.x + squareCapSideOffset.x, offsetL.p1.y + squareCapSideOffset.y);\n var squareCapROffset = new Coordinate(offsetR.p1.x + squareCapSideOffset.x, offsetR.p1.y + squareCapSideOffset.y);\n this._segList.addPt(squareCapLOffset);\n this._segList.addPt(squareCapROffset);\n break\n default:\n }\n};\nOffsetSegmentGenerator.prototype.getCoordinates = function getCoordinates () {\n var pts = this._segList.getCoordinates();\n return pts\n};\nOffsetSegmentGenerator.prototype.addMitreJoin = function addMitreJoin (p, offset0, offset1, distance) {\n var isMitreWithinLimit = true;\n var intPt = null;\n try {\n intPt = HCoordinate.intersection(offset0.p0, offset0.p1, offset1.p0, offset1.p1);\n var mitreRatio = distance <= 0.0 ? 1.0 : intPt.distance(p) / Math.abs(distance);\n if (mitreRatio > this._bufParams.getMitreLimit()) { isMitreWithinLimit = false; }\n } catch (ex) {\n if (ex instanceof NotRepresentableException) {\n intPt = new Coordinate(0, 0);\n isMitreWithinLimit = false;\n } else { throw ex }\n } finally {}\n if (isMitreWithinLimit) {\n this._segList.addPt(intPt);\n } else {\n this.addLimitedMitreJoin(offset0, offset1, distance, this._bufParams.getMitreLimit());\n }\n};\nOffsetSegmentGenerator.prototype.addFilletCorner = function addFilletCorner (p, p0, p1, direction, radius) {\n var dx0 = p0.x - p.x;\n var dy0 = p0.y - p.y;\n var startAngle = Math.atan2(dy0, dx0);\n var dx1 = p1.x - p.x;\n var dy1 = p1.y - p.y;\n var endAngle = Math.atan2(dy1, dx1);\n if (direction === CGAlgorithms.CLOCKWISE) {\n if (startAngle <= endAngle) { startAngle += 2.0 * Math.PI; }\n } else {\n if (startAngle >= endAngle) { startAngle -= 2.0 * Math.PI; }\n }\n this._segList.addPt(p0);\n this.addFilletArc(p, startAngle, endAngle, direction, radius);\n this._segList.addPt(p1);\n};\nOffsetSegmentGenerator.prototype.addOutsideTurn = function addOutsideTurn (orientation, addStartPoint) {\n if (this._offset0.p1.distance(this._offset1.p0) < this._distance * OffsetSegmentGenerator.OFFSET_SEGMENT_SEPARATION_FACTOR) {\n this._segList.addPt(this._offset0.p1);\n return null\n }\n if (this._bufParams.getJoinStyle() === BufferParameters.JOIN_MITRE) {\n this.addMitreJoin(this._s1, this._offset0, this._offset1, this._distance);\n } else if (this._bufParams.getJoinStyle() === BufferParameters.JOIN_BEVEL) {\n this.addBevelJoin(this._offset0, this._offset1);\n } else {\n if (addStartPoint) { this._segList.addPt(this._offset0.p1); }\n this.addFilletCorner(this._s1, this._offset0.p1, this._offset1.p0, orientation, this._distance);\n this._segList.addPt(this._offset1.p0);\n }\n};\nOffsetSegmentGenerator.prototype.createSquare = function createSquare (p) {\n this._segList.addPt(new Coordinate(p.x + this._distance, p.y + this._distance));\n this._segList.addPt(new Coordinate(p.x + this._distance, p.y - this._distance));\n this._segList.addPt(new Coordinate(p.x - this._distance, p.y - this._distance));\n this._segList.addPt(new Coordinate(p.x - this._distance, p.y + this._distance));\n this._segList.closeRing();\n};\nOffsetSegmentGenerator.prototype.addSegments = function addSegments (pt, isForward) {\n this._segList.addPts(pt, isForward);\n};\nOffsetSegmentGenerator.prototype.addFirstSegment = function addFirstSegment () {\n this._segList.addPt(this._offset1.p0);\n};\nOffsetSegmentGenerator.prototype.addLastSegment = function addLastSegment () {\n this._segList.addPt(this._offset1.p1);\n};\nOffsetSegmentGenerator.prototype.initSideSegments = function initSideSegments (s1, s2, side) {\n this._s1 = s1;\n this._s2 = s2;\n this._side = side;\n this._seg1.setCoordinates(s1, s2);\n this.computeOffsetSegment(this._seg1, side, this._distance, this._offset1);\n};\nOffsetSegmentGenerator.prototype.addLimitedMitreJoin = function addLimitedMitreJoin (offset0, offset1, distance, mitreLimit) {\n var basePt = this._seg0.p1;\n var ang0 = Angle.angle(basePt, this._seg0.p0);\n // const ang1 = Angle.angle(basePt, this._seg1.p1)\n var angDiff = Angle.angleBetweenOriented(this._seg0.p0, basePt, this._seg1.p1);\n var angDiffHalf = angDiff / 2;\n var midAng = Angle.normalize(ang0 + angDiffHalf);\n var mitreMidAng = Angle.normalize(midAng + Math.PI);\n var mitreDist = mitreLimit * distance;\n var bevelDelta = mitreDist * Math.abs(Math.sin(angDiffHalf));\n var bevelHalfLen = distance - bevelDelta;\n var bevelMidX = basePt.x + mitreDist * Math.cos(mitreMidAng);\n var bevelMidY = basePt.y + mitreDist * Math.sin(mitreMidAng);\n var bevelMidPt = new Coordinate(bevelMidX, bevelMidY);\n var mitreMidLine = new LineSegment(basePt, bevelMidPt);\n var bevelEndLeft = mitreMidLine.pointAlongOffset(1.0, bevelHalfLen);\n var bevelEndRight = mitreMidLine.pointAlongOffset(1.0, -bevelHalfLen);\n if (this._side === Position.LEFT) {\n this._segList.addPt(bevelEndLeft);\n this._segList.addPt(bevelEndRight);\n } else {\n this._segList.addPt(bevelEndRight);\n this._segList.addPt(bevelEndLeft);\n }\n};\nOffsetSegmentGenerator.prototype.computeOffsetSegment = function computeOffsetSegment (seg, side, distance, offset) {\n var sideSign = side === Position.LEFT ? 1 : -1;\n var dx = seg.p1.x - seg.p0.x;\n var dy = seg.p1.y - seg.p0.y;\n var len = Math.sqrt(dx * dx + dy * dy);\n var ux = sideSign * distance * dx / len;\n var uy = sideSign * distance * dy / len;\n offset.p0.x = seg.p0.x - uy;\n offset.p0.y = seg.p0.y + ux;\n offset.p1.x = seg.p1.x - uy;\n offset.p1.y = seg.p1.y + ux;\n};\nOffsetSegmentGenerator.prototype.addFilletArc = function addFilletArc (p, startAngle, endAngle, direction, radius) {\n var this$1 = this;\n\n var directionFactor = direction === CGAlgorithms.CLOCKWISE ? -1 : 1;\n var totalAngle = Math.abs(startAngle - endAngle);\n var nSegs = Math.trunc(totalAngle / this._filletAngleQuantum + 0.5);\n if (nSegs < 1) { return null }\n var initAngle = 0.0;\n var currAngleInc = totalAngle / nSegs;\n var currAngle = initAngle;\n var pt = new Coordinate();\n while (currAngle < totalAngle) {\n var angle = startAngle + directionFactor * currAngle;\n pt.x = p.x + radius * Math.cos(angle);\n pt.y = p.y + radius * Math.sin(angle);\n this$1._segList.addPt(pt);\n currAngle += currAngleInc;\n }\n};\nOffsetSegmentGenerator.prototype.addInsideTurn = function addInsideTurn (orientation, addStartPoint) {\n this._li.computeIntersection(this._offset0.p0, this._offset0.p1, this._offset1.p0, this._offset1.p1);\n if (this._li.hasIntersection()) {\n this._segList.addPt(this._li.getIntersection(0));\n } else {\n this._hasNarrowConcaveAngle = true;\n if (this._offset0.p1.distance(this._offset1.p0) < this._distance * OffsetSegmentGenerator.INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR) {\n this._segList.addPt(this._offset0.p1);\n } else {\n this._segList.addPt(this._offset0.p1);\n if (this._closingSegLengthFactor > 0) {\n var mid0 = new Coordinate((this._closingSegLengthFactor * this._offset0.p1.x + this._s1.x) / (this._closingSegLengthFactor + 1), (this._closingSegLengthFactor * this._offset0.p1.y + this._s1.y) / (this._closingSegLengthFactor + 1));\n this._segList.addPt(mid0);\n var mid1 = new Coordinate((this._closingSegLengthFactor * this._offset1.p0.x + this._s1.x) / (this._closingSegLengthFactor + 1), (this._closingSegLengthFactor * this._offset1.p0.y + this._s1.y) / (this._closingSegLengthFactor + 1));\n this._segList.addPt(mid1);\n } else {\n this._segList.addPt(this._s1);\n }\n this._segList.addPt(this._offset1.p0);\n }\n }\n};\nOffsetSegmentGenerator.prototype.createCircle = function createCircle (p) {\n var pt = new Coordinate(p.x + this._distance, p.y);\n this._segList.addPt(pt);\n this.addFilletArc(p, 0.0, 2.0 * Math.PI, -1, this._distance);\n this._segList.closeRing();\n};\nOffsetSegmentGenerator.prototype.addBevelJoin = function addBevelJoin (offset0, offset1) {\n this._segList.addPt(offset0.p1);\n this._segList.addPt(offset1.p0);\n};\nOffsetSegmentGenerator.prototype.init = function init (distance) {\n this._distance = distance;\n this._maxCurveSegmentError = distance * (1 - Math.cos(this._filletAngleQuantum / 2.0));\n this._segList = new OffsetSegmentString();\n this._segList.setPrecisionModel(this._precisionModel);\n this._segList.setMinimumVertexDistance(distance * OffsetSegmentGenerator.CURVE_VERTEX_SNAP_DISTANCE_FACTOR);\n};\nOffsetSegmentGenerator.prototype.addCollinear = function addCollinear (addStartPoint) {\n this._li.computeIntersection(this._s0, this._s1, this._s1, this._s2);\n var numInt = this._li.getIntersectionNum();\n if (numInt >= 2) {\n if (this._bufParams.getJoinStyle() === BufferParameters.JOIN_BEVEL || this._bufParams.getJoinStyle() === BufferParameters.JOIN_MITRE) {\n if (addStartPoint) { this._segList.addPt(this._offset0.p1); }\n this._segList.addPt(this._offset1.p0);\n } else {\n this.addFilletCorner(this._s1, this._offset0.p1, this._offset1.p0, CGAlgorithms.CLOCKWISE, this._distance);\n }\n }\n};\nOffsetSegmentGenerator.prototype.closeRing = function closeRing () {\n this._segList.closeRing();\n};\nOffsetSegmentGenerator.prototype.hasNarrowConcaveAngle = function hasNarrowConcaveAngle () {\n return this._hasNarrowConcaveAngle\n};\nOffsetSegmentGenerator.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nOffsetSegmentGenerator.prototype.getClass = function getClass () {\n return OffsetSegmentGenerator\n};\nstaticAccessors$27.OFFSET_SEGMENT_SEPARATION_FACTOR.get = function () { return 1.0E-3 };\nstaticAccessors$27.INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR.get = function () { return 1.0E-3 };\nstaticAccessors$27.CURVE_VERTEX_SNAP_DISTANCE_FACTOR.get = function () { return 1.0E-6 };\nstaticAccessors$27.MAX_CLOSING_SEG_LEN_FACTOR.get = function () { return 80 };\n\nObject.defineProperties( OffsetSegmentGenerator, staticAccessors$27 );\n\nvar OffsetCurveBuilder = function OffsetCurveBuilder () {\n this._distance = 0.0;\n this._precisionModel = null;\n this._bufParams = null;\n var precisionModel = arguments[0];\n var bufParams = arguments[1];\n this._precisionModel = precisionModel;\n this._bufParams = bufParams;\n};\nOffsetCurveBuilder.prototype.getOffsetCurve = function getOffsetCurve (inputPts, distance) {\n this._distance = distance;\n if (distance === 0.0) { return null }\n var isRightSide = distance < 0.0;\n var posDistance = Math.abs(distance);\n var segGen = this.getSegGen(posDistance);\n if (inputPts.length <= 1) {\n this.computePointCurve(inputPts[0], segGen);\n } else {\n this.computeOffsetCurve(inputPts, isRightSide, segGen);\n }\n var curvePts = segGen.getCoordinates();\n if (isRightSide) { CoordinateArrays.reverse(curvePts); }\n return curvePts\n};\nOffsetCurveBuilder.prototype.computeSingleSidedBufferCurve = function computeSingleSidedBufferCurve (inputPts, isRightSide, segGen) {\n var distTol = this.simplifyTolerance(this._distance);\n if (isRightSide) {\n segGen.addSegments(inputPts, true);\n var simp2 = BufferInputLineSimplifier.simplify(inputPts, -distTol);\n var n2 = simp2.length - 1;\n segGen.initSideSegments(simp2[n2], simp2[n2 - 1], Position.LEFT);\n segGen.addFirstSegment();\n for (var i = n2 - 2; i >= 0; i--) {\n segGen.addNextSegment(simp2[i], true);\n }\n } else {\n segGen.addSegments(inputPts, false);\n var simp1 = BufferInputLineSimplifier.simplify(inputPts, distTol);\n var n1 = simp1.length - 1;\n segGen.initSideSegments(simp1[0], simp1[1], Position.LEFT);\n segGen.addFirstSegment();\n for (var i$1 = 2; i$1 <= n1; i$1++) {\n segGen.addNextSegment(simp1[i$1], true);\n }\n }\n segGen.addLastSegment();\n segGen.closeRing();\n};\nOffsetCurveBuilder.prototype.computeRingBufferCurve = function computeRingBufferCurve (inputPts, side, segGen) {\n var distTol = this.simplifyTolerance(this._distance);\n if (side === Position.RIGHT) { distTol = -distTol; }\n var simp = BufferInputLineSimplifier.simplify(inputPts, distTol);\n var n = simp.length - 1;\n segGen.initSideSegments(simp[n - 1], simp[0], side);\n for (var i = 1; i <= n; i++) {\n var addStartPoint = i !== 1;\n segGen.addNextSegment(simp[i], addStartPoint);\n }\n segGen.closeRing();\n};\nOffsetCurveBuilder.prototype.computeLineBufferCurve = function computeLineBufferCurve (inputPts, segGen) {\n var distTol = this.simplifyTolerance(this._distance);\n var simp1 = BufferInputLineSimplifier.simplify(inputPts, distTol);\n var n1 = simp1.length - 1;\n segGen.initSideSegments(simp1[0], simp1[1], Position.LEFT);\n for (var i = 2; i <= n1; i++) {\n segGen.addNextSegment(simp1[i], true);\n }\n segGen.addLastSegment();\n segGen.addLineEndCap(simp1[n1 - 1], simp1[n1]);\n var simp2 = BufferInputLineSimplifier.simplify(inputPts, -distTol);\n var n2 = simp2.length - 1;\n segGen.initSideSegments(simp2[n2], simp2[n2 - 1], Position.LEFT);\n for (var i$1 = n2 - 2; i$1 >= 0; i$1--) {\n segGen.addNextSegment(simp2[i$1], true);\n }\n segGen.addLastSegment();\n segGen.addLineEndCap(simp2[1], simp2[0]);\n segGen.closeRing();\n};\nOffsetCurveBuilder.prototype.computePointCurve = function computePointCurve (pt, segGen) {\n switch (this._bufParams.getEndCapStyle()) {\n case BufferParameters.CAP_ROUND:\n segGen.createCircle(pt);\n break\n case BufferParameters.CAP_SQUARE:\n segGen.createSquare(pt);\n break\n default:\n }\n};\nOffsetCurveBuilder.prototype.getLineCurve = function getLineCurve (inputPts, distance) {\n this._distance = distance;\n if (distance < 0.0 && !this._bufParams.isSingleSided()) { return null }\n if (distance === 0.0) { return null }\n var posDistance = Math.abs(distance);\n var segGen = this.getSegGen(posDistance);\n if (inputPts.length <= 1) {\n this.computePointCurve(inputPts[0], segGen);\n } else {\n if (this._bufParams.isSingleSided()) {\n var isRightSide = distance < 0.0;\n this.computeSingleSidedBufferCurve(inputPts, isRightSide, segGen);\n } else { this.computeLineBufferCurve(inputPts, segGen); }\n }\n var lineCoord = segGen.getCoordinates();\n return lineCoord\n};\nOffsetCurveBuilder.prototype.getBufferParameters = function getBufferParameters () {\n return this._bufParams\n};\nOffsetCurveBuilder.prototype.simplifyTolerance = function simplifyTolerance (bufDistance) {\n return bufDistance * this._bufParams.getSimplifyFactor()\n};\nOffsetCurveBuilder.prototype.getRingCurve = function getRingCurve (inputPts, side, distance) {\n this._distance = distance;\n if (inputPts.length <= 2) { return this.getLineCurve(inputPts, distance) }\n if (distance === 0.0) {\n return OffsetCurveBuilder.copyCoordinates(inputPts)\n }\n var segGen = this.getSegGen(distance);\n this.computeRingBufferCurve(inputPts, side, segGen);\n return segGen.getCoordinates()\n};\nOffsetCurveBuilder.prototype.computeOffsetCurve = function computeOffsetCurve (inputPts, isRightSide, segGen) {\n var distTol = this.simplifyTolerance(this._distance);\n if (isRightSide) {\n var simp2 = BufferInputLineSimplifier.simplify(inputPts, -distTol);\n var n2 = simp2.length - 1;\n segGen.initSideSegments(simp2[n2], simp2[n2 - 1], Position.LEFT);\n segGen.addFirstSegment();\n for (var i = n2 - 2; i >= 0; i--) {\n segGen.addNextSegment(simp2[i], true);\n }\n } else {\n var simp1 = BufferInputLineSimplifier.simplify(inputPts, distTol);\n var n1 = simp1.length - 1;\n segGen.initSideSegments(simp1[0], simp1[1], Position.LEFT);\n segGen.addFirstSegment();\n for (var i$1 = 2; i$1 <= n1; i$1++) {\n segGen.addNextSegment(simp1[i$1], true);\n }\n }\n segGen.addLastSegment();\n};\nOffsetCurveBuilder.prototype.getSegGen = function getSegGen (distance) {\n return new OffsetSegmentGenerator(this._precisionModel, this._bufParams, distance)\n};\nOffsetCurveBuilder.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nOffsetCurveBuilder.prototype.getClass = function getClass () {\n return OffsetCurveBuilder\n};\nOffsetCurveBuilder.copyCoordinates = function copyCoordinates (pts) {\n var copy = new Array(pts.length).fill(null);\n for (var i = 0; i < copy.length; i++) {\n copy[i] = new Coordinate(pts[i]);\n }\n return copy\n};\n\nvar SubgraphDepthLocater = function SubgraphDepthLocater () {\n this._subgraphs = null;\n this._seg = new LineSegment();\n this._cga = new CGAlgorithms();\n var subgraphs = arguments[0];\n this._subgraphs = subgraphs;\n};\n\nvar staticAccessors$30 = { DepthSegment: { configurable: true } };\nSubgraphDepthLocater.prototype.findStabbedSegments = function findStabbedSegments () {\n var this$1 = this;\n\n if (arguments.length === 1) {\n var stabbingRayLeftPt = arguments[0];\n var stabbedSegments = new ArrayList();\n for (var i = this._subgraphs.iterator(); i.hasNext();) {\n var bsg = i.next();\n var env = bsg.getEnvelope();\n if (stabbingRayLeftPt.y < env.getMinY() || stabbingRayLeftPt.y > env.getMaxY()) { continue }\n this$1.findStabbedSegments(stabbingRayLeftPt, bsg.getDirectedEdges(), stabbedSegments);\n }\n return stabbedSegments\n } else if (arguments.length === 3) {\n if (hasInterface(arguments[2], List) && (arguments[0] instanceof Coordinate && arguments[1] instanceof DirectedEdge)) {\n var stabbingRayLeftPt$1 = arguments[0];\n var dirEdge = arguments[1];\n var stabbedSegments$1 = arguments[2];\n var pts = dirEdge.getEdge().getCoordinates();\n for (var i$1 = 0; i$1 < pts.length - 1; i$1++) {\n this$1._seg.p0 = pts[i$1];\n this$1._seg.p1 = pts[i$1 + 1];\n if (this$1._seg.p0.y > this$1._seg.p1.y) { this$1._seg.reverse(); }\n var maxx = Math.max(this$1._seg.p0.x, this$1._seg.p1.x);\n if (maxx < stabbingRayLeftPt$1.x) { continue }\n if (this$1._seg.isHorizontal()) { continue }\n if (stabbingRayLeftPt$1.y < this$1._seg.p0.y || stabbingRayLeftPt$1.y > this$1._seg.p1.y) { continue }\n if (CGAlgorithms.computeOrientation(this$1._seg.p0, this$1._seg.p1, stabbingRayLeftPt$1) === CGAlgorithms.RIGHT) { continue }\n var depth = dirEdge.getDepth(Position.LEFT);\n if (!this$1._seg.p0.equals(pts[i$1])) { depth = dirEdge.getDepth(Position.RIGHT); }\n var ds = new DepthSegment(this$1._seg, depth);\n stabbedSegments$1.add(ds);\n }\n } else if (hasInterface(arguments[2], List) && (arguments[0] instanceof Coordinate && hasInterface(arguments[1], List))) {\n var stabbingRayLeftPt$2 = arguments[0];\n var dirEdges = arguments[1];\n var stabbedSegments$2 = arguments[2];\n for (var i$2 = dirEdges.iterator(); i$2.hasNext();) {\n var de = i$2.next();\n if (!de.isForward()) { continue }\n this$1.findStabbedSegments(stabbingRayLeftPt$2, de, stabbedSegments$2);\n }\n }\n }\n};\nSubgraphDepthLocater.prototype.getDepth = function getDepth (p) {\n var stabbedSegments = this.findStabbedSegments(p);\n if (stabbedSegments.size() === 0) { return 0 }\n var ds = Collections.min(stabbedSegments);\n return ds._leftDepth\n};\nSubgraphDepthLocater.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nSubgraphDepthLocater.prototype.getClass = function getClass () {\n return SubgraphDepthLocater\n};\nstaticAccessors$30.DepthSegment.get = function () { return DepthSegment };\n\nObject.defineProperties( SubgraphDepthLocater, staticAccessors$30 );\n\nvar DepthSegment = function DepthSegment () {\n this._upwardSeg = null;\n this._leftDepth = null;\n var seg = arguments[0];\n var depth = arguments[1];\n this._upwardSeg = new LineSegment(seg);\n this._leftDepth = depth;\n};\nDepthSegment.prototype.compareTo = function compareTo (obj) {\n var other = obj;\n if (this._upwardSeg.minX() >= other._upwardSeg.maxX()) { return 1 }\n if (this._upwardSeg.maxX() <= other._upwardSeg.minX()) { return -1 }\n var orientIndex = this._upwardSeg.orientationIndex(other._upwardSeg);\n if (orientIndex !== 0) { return orientIndex }\n orientIndex = -1 * other._upwardSeg.orientationIndex(this._upwardSeg);\n if (orientIndex !== 0) { return orientIndex }\n return this._upwardSeg.compareTo(other._upwardSeg)\n};\nDepthSegment.prototype.compareX = function compareX (seg0, seg1) {\n var compare0 = seg0.p0.compareTo(seg1.p0);\n if (compare0 !== 0) { return compare0 }\n return seg0.p1.compareTo(seg1.p1)\n};\nDepthSegment.prototype.toString = function toString () {\n return this._upwardSeg.toString()\n};\nDepthSegment.prototype.interfaces_ = function interfaces_ () {\n return [Comparable]\n};\nDepthSegment.prototype.getClass = function getClass () {\n return DepthSegment\n};\n\nvar Triangle = function Triangle (p0, p1, p2) {\n this.p0 = p0 || null;\n this.p1 = p1 || null;\n this.p2 = p2 || null;\n};\nTriangle.prototype.area = function area () {\n return Triangle.area(this.p0, this.p1, this.p2)\n};\nTriangle.prototype.signedArea = function signedArea () {\n return Triangle.signedArea(this.p0, this.p1, this.p2)\n};\nTriangle.prototype.interpolateZ = function interpolateZ (p) {\n if (p === null) { throw new IllegalArgumentException('Supplied point is null.') }\n return Triangle.interpolateZ(p, this.p0, this.p1, this.p2)\n};\nTriangle.prototype.longestSideLength = function longestSideLength () {\n return Triangle.longestSideLength(this.p0, this.p1, this.p2)\n};\nTriangle.prototype.isAcute = function isAcute () {\n return Triangle.isAcute(this.p0, this.p1, this.p2)\n};\nTriangle.prototype.circumcentre = function circumcentre () {\n return Triangle.circumcentre(this.p0, this.p1, this.p2)\n};\nTriangle.prototype.area3D = function area3D () {\n return Triangle.area3D(this.p0, this.p1, this.p2)\n};\nTriangle.prototype.centroid = function centroid () {\n return Triangle.centroid(this.p0, this.p1, this.p2)\n};\nTriangle.prototype.inCentre = function inCentre () {\n return Triangle.inCentre(this.p0, this.p1, this.p2)\n};\nTriangle.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nTriangle.prototype.getClass = function getClass () {\n return Triangle\n};\nTriangle.area = function area (a, b, c) {\n return Math.abs(((c.x - a.x) * (b.y - a.y) - (b.x - a.x) * (c.y - a.y)) / 2)\n};\nTriangle.signedArea = function signedArea (a, b, c) {\n return ((c.x - a.x) * (b.y - a.y) - (b.x - a.x) * (c.y - a.y)) / 2\n};\nTriangle.det = function det (m00, m01, m10, m11) {\n return m00 * m11 - m01 * m10\n};\nTriangle.interpolateZ = function interpolateZ (p, v0, v1, v2) {\n var x0 = v0.x;\n var y0 = v0.y;\n var a = v1.x - x0;\n var b = v2.x - x0;\n var c = v1.y - y0;\n var d = v2.y - y0;\n var det = a * d - b * c;\n var dx = p.x - x0;\n var dy = p.y - y0;\n var t = (d * dx - b * dy) / det;\n var u = (-c * dx + a * dy) / det;\n var z = v0.z + t * (v1.z - v0.z) + u * (v2.z - v0.z);\n return z\n};\nTriangle.longestSideLength = function longestSideLength (a, b, c) {\n var lenAB = a.distance(b);\n var lenBC = b.distance(c);\n var lenCA = c.distance(a);\n var maxLen = lenAB;\n if (lenBC > maxLen) { maxLen = lenBC; }\n if (lenCA > maxLen) { maxLen = lenCA; }\n return maxLen\n};\nTriangle.isAcute = function isAcute (a, b, c) {\n if (!Angle.isAcute(a, b, c)) { return false }\n if (!Angle.isAcute(b, c, a)) { return false }\n if (!Angle.isAcute(c, a, b)) { return false }\n return true\n};\nTriangle.circumcentre = function circumcentre (a, b, c) {\n var cx = c.x;\n var cy = c.y;\n var ax = a.x - cx;\n var ay = a.y - cy;\n var bx = b.x - cx;\n var by = b.y - cy;\n var denom = 2 * Triangle.det(ax, ay, bx, by);\n var numx = Triangle.det(ay, ax * ax + ay * ay, by, bx * bx + by * by);\n var numy = Triangle.det(ax, ax * ax + ay * ay, bx, bx * bx + by * by);\n var ccx = cx - numx / denom;\n var ccy = cy + numy / denom;\n return new Coordinate(ccx, ccy)\n};\nTriangle.perpendicularBisector = function perpendicularBisector (a, b) {\n var dx = b.x - a.x;\n var dy = b.y - a.y;\n var l1 = new HCoordinate(a.x + dx / 2.0, a.y + dy / 2.0, 1.0);\n var l2 = new HCoordinate(a.x - dy + dx / 2.0, a.y + dx + dy / 2.0, 1.0);\n return new HCoordinate(l1, l2)\n};\nTriangle.angleBisector = function angleBisector (a, b, c) {\n var len0 = b.distance(a);\n var len2 = b.distance(c);\n var frac = len0 / (len0 + len2);\n var dx = c.x - a.x;\n var dy = c.y - a.y;\n var splitPt = new Coordinate(a.x + frac * dx, a.y + frac * dy);\n return splitPt\n};\nTriangle.area3D = function area3D (a, b, c) {\n var ux = b.x - a.x;\n var uy = b.y - a.y;\n var uz = b.z - a.z;\n var vx = c.x - a.x;\n var vy = c.y - a.y;\n var vz = c.z - a.z;\n var crossx = uy * vz - uz * vy;\n var crossy = uz * vx - ux * vz;\n var crossz = ux * vy - uy * vx;\n var absSq = crossx * crossx + crossy * crossy + crossz * crossz;\n var area3D = Math.sqrt(absSq) / 2;\n return area3D\n};\nTriangle.centroid = function centroid (a, b, c) {\n var x = (a.x + b.x + c.x) / 3;\n var y = (a.y + b.y + c.y) / 3;\n return new Coordinate(x, y)\n};\nTriangle.inCentre = function inCentre (a, b, c) {\n var len0 = b.distance(c);\n var len1 = a.distance(c);\n var len2 = a.distance(b);\n var circum = len0 + len1 + len2;\n var inCentreX = (len0 * a.x + len1 * b.x + len2 * c.x) / circum;\n var inCentreY = (len0 * a.y + len1 * b.y + len2 * c.y) / circum;\n return new Coordinate(inCentreX, inCentreY)\n};\n\nvar OffsetCurveSetBuilder = function OffsetCurveSetBuilder () {\n this._inputGeom = null;\n this._distance = null;\n this._curveBuilder = null;\n this._curveList = new ArrayList();\n var inputGeom = arguments[0];\n var distance = arguments[1];\n var curveBuilder = arguments[2];\n this._inputGeom = inputGeom;\n this._distance = distance;\n this._curveBuilder = curveBuilder;\n};\nOffsetCurveSetBuilder.prototype.addPoint = function addPoint (p) {\n if (this._distance <= 0.0) { return null }\n var coord = p.getCoordinates();\n var curve = this._curveBuilder.getLineCurve(coord, this._distance);\n this.addCurve(curve, Location.EXTERIOR, Location.INTERIOR);\n};\nOffsetCurveSetBuilder.prototype.addPolygon = function addPolygon (p) {\n var this$1 = this;\n\n var offsetDistance = this._distance;\n var offsetSide = Position.LEFT;\n if (this._distance < 0.0) {\n offsetDistance = -this._distance;\n offsetSide = Position.RIGHT;\n }\n var shell = p.getExteriorRing();\n var shellCoord = CoordinateArrays.removeRepeatedPoints(shell.getCoordinates());\n if (this._distance < 0.0 && this.isErodedCompletely(shell, this._distance)) { return null }\n if (this._distance <= 0.0 && shellCoord.length < 3) { return null }\n this.addPolygonRing(shellCoord, offsetDistance, offsetSide, Location.EXTERIOR, Location.INTERIOR);\n for (var i = 0; i < p.getNumInteriorRing(); i++) {\n var hole = p.getInteriorRingN(i);\n var holeCoord = CoordinateArrays.removeRepeatedPoints(hole.getCoordinates());\n if (this$1._distance > 0.0 && this$1.isErodedCompletely(hole, -this$1._distance)) { continue }\n this$1.addPolygonRing(holeCoord, offsetDistance, Position.opposite(offsetSide), Location.INTERIOR, Location.EXTERIOR);\n }\n};\nOffsetCurveSetBuilder.prototype.isTriangleErodedCompletely = function isTriangleErodedCompletely (triangleCoord, bufferDistance) {\n var tri = new Triangle(triangleCoord[0], triangleCoord[1], triangleCoord[2]);\n var inCentre = tri.inCentre();\n var distToCentre = CGAlgorithms.distancePointLine(inCentre, tri.p0, tri.p1);\n return distToCentre < Math.abs(bufferDistance)\n};\nOffsetCurveSetBuilder.prototype.addLineString = function addLineString (line) {\n if (this._distance <= 0.0 && !this._curveBuilder.getBufferParameters().isSingleSided()) { return null }\n var coord = CoordinateArrays.removeRepeatedPoints(line.getCoordinates());\n var curve = this._curveBuilder.getLineCurve(coord, this._distance);\n this.addCurve(curve, Location.EXTERIOR, Location.INTERIOR);\n};\nOffsetCurveSetBuilder.prototype.addCurve = function addCurve (coord, leftLoc, rightLoc) {\n if (coord === null || coord.length < 2) { return null }\n var e = new NodedSegmentString(coord, new Label(0, Location.BOUNDARY, leftLoc, rightLoc));\n this._curveList.add(e);\n};\nOffsetCurveSetBuilder.prototype.getCurves = function getCurves () {\n this.add(this._inputGeom);\n return this._curveList\n};\nOffsetCurveSetBuilder.prototype.addPolygonRing = function addPolygonRing (coord, offsetDistance, side, cwLeftLoc, cwRightLoc) {\n if (offsetDistance === 0.0 && coord.length < LinearRing.MINIMUM_VALID_SIZE) { return null }\n var leftLoc = cwLeftLoc;\n var rightLoc = cwRightLoc;\n if (coord.length >= LinearRing.MINIMUM_VALID_SIZE && CGAlgorithms.isCCW(coord)) {\n leftLoc = cwRightLoc;\n rightLoc = cwLeftLoc;\n side = Position.opposite(side);\n }\n var curve = this._curveBuilder.getRingCurve(coord, side, offsetDistance);\n this.addCurve(curve, leftLoc, rightLoc);\n};\nOffsetCurveSetBuilder.prototype.add = function add (g) {\n if (g.isEmpty()) { return null }\n if (g instanceof Polygon) { this.addPolygon(g); }\n else if (g instanceof LineString) { this.addLineString(g); }\n else if (g instanceof Point) { this.addPoint(g); }\n else if (g instanceof MultiPoint) { this.addCollection(g); }\n else if (g instanceof MultiLineString) { this.addCollection(g); }\n else if (g instanceof MultiPolygon) { this.addCollection(g); }\n else if (g instanceof GeometryCollection) { this.addCollection(g); }\n // else throw new UnsupportedOperationException(g.getClass().getName())\n};\nOffsetCurveSetBuilder.prototype.isErodedCompletely = function isErodedCompletely (ring, bufferDistance) {\n var ringCoord = ring.getCoordinates();\n // const minDiam = 0.0\n if (ringCoord.length < 4) { return bufferDistance < 0 }\n if (ringCoord.length === 4) { return this.isTriangleErodedCompletely(ringCoord, bufferDistance) }\n var env = ring.getEnvelopeInternal();\n var envMinDimension = Math.min(env.getHeight(), env.getWidth());\n if (bufferDistance < 0.0 && 2 * Math.abs(bufferDistance) > envMinDimension) { return true }\n return false\n};\nOffsetCurveSetBuilder.prototype.addCollection = function addCollection (gc) {\n var this$1 = this;\n\n for (var i = 0; i < gc.getNumGeometries(); i++) {\n var g = gc.getGeometryN(i);\n this$1.add(g);\n }\n};\nOffsetCurveSetBuilder.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nOffsetCurveSetBuilder.prototype.getClass = function getClass () {\n return OffsetCurveSetBuilder\n};\n\nvar PointOnGeometryLocator = function PointOnGeometryLocator () {};\n\nPointOnGeometryLocator.prototype.locate = function locate (p) {};\nPointOnGeometryLocator.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nPointOnGeometryLocator.prototype.getClass = function getClass () {\n return PointOnGeometryLocator\n};\n\nvar GeometryCollectionIterator = function GeometryCollectionIterator () {\n this._parent = null;\n this._atStart = null;\n this._max = null;\n this._index = null;\n this._subcollectionIterator = null;\n var parent = arguments[0];\n this._parent = parent;\n this._atStart = true;\n this._index = 0;\n this._max = parent.getNumGeometries();\n};\nGeometryCollectionIterator.prototype.next = function next () {\n if (this._atStart) {\n this._atStart = false;\n if (GeometryCollectionIterator.isAtomic(this._parent)) { this._index++; }\n return this._parent\n }\n if (this._subcollectionIterator !== null) {\n if (this._subcollectionIterator.hasNext()) {\n return this._subcollectionIterator.next()\n } else {\n this._subcollectionIterator = null;\n }\n }\n if (this._index >= this._max) {\n throw new NoSuchElementException()\n }\n var obj = this._parent.getGeometryN(this._index++);\n if (obj instanceof GeometryCollection) {\n this._subcollectionIterator = new GeometryCollectionIterator(obj);\n return this._subcollectionIterator.next()\n }\n return obj\n};\nGeometryCollectionIterator.prototype.remove = function remove () {\n throw new Error(this.getClass().getName())\n};\nGeometryCollectionIterator.prototype.hasNext = function hasNext () {\n if (this._atStart) {\n return true\n }\n if (this._subcollectionIterator !== null) {\n if (this._subcollectionIterator.hasNext()) {\n return true\n }\n this._subcollectionIterator = null;\n }\n if (this._index >= this._max) {\n return false\n }\n return true\n};\nGeometryCollectionIterator.prototype.interfaces_ = function interfaces_ () {\n return [Iterator]\n};\nGeometryCollectionIterator.prototype.getClass = function getClass () {\n return GeometryCollectionIterator\n};\nGeometryCollectionIterator.isAtomic = function isAtomic (geom) {\n return !(geom instanceof GeometryCollection)\n};\n\nvar SimplePointInAreaLocator = function SimplePointInAreaLocator () {\n this._geom = null;\n var geom = arguments[0];\n this._geom = geom;\n};\nSimplePointInAreaLocator.prototype.locate = function locate (p) {\n return SimplePointInAreaLocator.locate(p, this._geom)\n};\nSimplePointInAreaLocator.prototype.interfaces_ = function interfaces_ () {\n return [PointOnGeometryLocator]\n};\nSimplePointInAreaLocator.prototype.getClass = function getClass () {\n return SimplePointInAreaLocator\n};\nSimplePointInAreaLocator.isPointInRing = function isPointInRing (p, ring) {\n if (!ring.getEnvelopeInternal().intersects(p)) { return false }\n return CGAlgorithms.isPointInRing(p, ring.getCoordinates())\n};\nSimplePointInAreaLocator.containsPointInPolygon = function containsPointInPolygon (p, poly) {\n if (poly.isEmpty()) { return false }\n var shell = poly.getExteriorRing();\n if (!SimplePointInAreaLocator.isPointInRing(p, shell)) { return false }\n for (var i = 0; i < poly.getNumInteriorRing(); i++) {\n var hole = poly.getInteriorRingN(i);\n if (SimplePointInAreaLocator.isPointInRing(p, hole)) { return false }\n }\n return true\n};\nSimplePointInAreaLocator.containsPoint = function containsPoint (p, geom) {\n if (geom instanceof Polygon) {\n return SimplePointInAreaLocator.containsPointInPolygon(p, geom)\n } else if (geom instanceof GeometryCollection) {\n var geomi = new GeometryCollectionIterator(geom);\n while (geomi.hasNext()) {\n var g2 = geomi.next();\n if (g2 !== geom) { if (SimplePointInAreaLocator.containsPoint(p, g2)) { return true } }\n }\n }\n return false\n};\nSimplePointInAreaLocator.locate = function locate (p, geom) {\n if (geom.isEmpty()) { return Location.EXTERIOR }\n if (SimplePointInAreaLocator.containsPoint(p, geom)) { return Location.INTERIOR }\n return Location.EXTERIOR\n};\n\nvar EdgeEndStar = function EdgeEndStar () {\n this._edgeMap = new TreeMap();\n this._edgeList = null;\n this._ptInAreaLocation = [Location.NONE, Location.NONE];\n};\nEdgeEndStar.prototype.getNextCW = function getNextCW (ee) {\n this.getEdges();\n var i = this._edgeList.indexOf(ee);\n var iNextCW = i - 1;\n if (i === 0) { iNextCW = this._edgeList.size() - 1; }\n return this._edgeList.get(iNextCW)\n};\nEdgeEndStar.prototype.propagateSideLabels = function propagateSideLabels (geomIndex) {\n var startLoc = Location.NONE;\n for (var it = this.iterator(); it.hasNext();) {\n var e = it.next();\n var label = e.getLabel();\n if (label.isArea(geomIndex) && label.getLocation(geomIndex, Position.LEFT) !== Location.NONE) { startLoc = label.getLocation(geomIndex, Position.LEFT); }\n }\n if (startLoc === Location.NONE) { return null }\n var currLoc = startLoc;\n for (var it$1 = this.iterator(); it$1.hasNext();) {\n var e$1 = it$1.next();\n var label$1 = e$1.getLabel();\n if (label$1.getLocation(geomIndex, Position.ON) === Location.NONE) { label$1.setLocation(geomIndex, Position.ON, currLoc); }\n if (label$1.isArea(geomIndex)) {\n var leftLoc = label$1.getLocation(geomIndex, Position.LEFT);\n var rightLoc = label$1.getLocation(geomIndex, Position.RIGHT);\n if (rightLoc !== Location.NONE) {\n if (rightLoc !== currLoc) { throw new TopologyException('side location conflict', e$1.getCoordinate()) }\n if (leftLoc === Location.NONE) {\n Assert.shouldNeverReachHere('found single null side (at ' + e$1.getCoordinate() + ')');\n }\n currLoc = leftLoc;\n } else {\n Assert.isTrue(label$1.getLocation(geomIndex, Position.LEFT) === Location.NONE, 'found single null side');\n label$1.setLocation(geomIndex, Position.RIGHT, currLoc);\n label$1.setLocation(geomIndex, Position.LEFT, currLoc);\n }\n }\n }\n};\nEdgeEndStar.prototype.getCoordinate = function getCoordinate () {\n var it = this.iterator();\n if (!it.hasNext()) { return null }\n var e = it.next();\n return e.getCoordinate()\n};\nEdgeEndStar.prototype.print = function print (out) {\n System.out.println('EdgeEndStar: ' + this.getCoordinate());\n for (var it = this.iterator(); it.hasNext();) {\n var e = it.next();\n e.print(out);\n }\n};\nEdgeEndStar.prototype.isAreaLabelsConsistent = function isAreaLabelsConsistent (geomGraph) {\n this.computeEdgeEndLabels(geomGraph.getBoundaryNodeRule());\n return this.checkAreaLabelsConsistent(0)\n};\nEdgeEndStar.prototype.checkAreaLabelsConsistent = function checkAreaLabelsConsistent (geomIndex) {\n var edges = this.getEdges();\n if (edges.size() <= 0) { return true }\n var lastEdgeIndex = edges.size() - 1;\n var startLabel = edges.get(lastEdgeIndex).getLabel();\n var startLoc = startLabel.getLocation(geomIndex, Position.LEFT);\n Assert.isTrue(startLoc !== Location.NONE, 'Found unlabelled area edge');\n var currLoc = startLoc;\n for (var it = this.iterator(); it.hasNext();) {\n var e = it.next();\n var label = e.getLabel();\n Assert.isTrue(label.isArea(geomIndex), 'Found non-area edge');\n var leftLoc = label.getLocation(geomIndex, Position.LEFT);\n var rightLoc = label.getLocation(geomIndex, Position.RIGHT);\n if (leftLoc === rightLoc) {\n return false\n }\n if (rightLoc !== currLoc) {\n return false\n }\n currLoc = leftLoc;\n }\n return true\n};\nEdgeEndStar.prototype.findIndex = function findIndex (eSearch) {\n var this$1 = this;\n\n this.iterator();\n for (var i = 0; i < this._edgeList.size(); i++) {\n var e = this$1._edgeList.get(i);\n if (e === eSearch) { return i }\n }\n return -1\n};\nEdgeEndStar.prototype.iterator = function iterator () {\n return this.getEdges().iterator()\n};\nEdgeEndStar.prototype.getEdges = function getEdges () {\n if (this._edgeList === null) {\n this._edgeList = new ArrayList(this._edgeMap.values());\n }\n return this._edgeList\n};\nEdgeEndStar.prototype.getLocation = function getLocation (geomIndex, p, geom) {\n if (this._ptInAreaLocation[geomIndex] === Location.NONE) {\n this._ptInAreaLocation[geomIndex] = SimplePointInAreaLocator.locate(p, geom[geomIndex].getGeometry());\n }\n return this._ptInAreaLocation[geomIndex]\n};\nEdgeEndStar.prototype.toString = function toString () {\n var buf = new StringBuffer();\n buf.append('EdgeEndStar: ' + this.getCoordinate());\n buf.append('\\n');\n for (var it = this.iterator(); it.hasNext();) {\n var e = it.next();\n buf.append(e);\n buf.append('\\n');\n }\n return buf.toString()\n};\nEdgeEndStar.prototype.computeEdgeEndLabels = function computeEdgeEndLabels (boundaryNodeRule) {\n for (var it = this.iterator(); it.hasNext();) {\n var ee = it.next();\n ee.computeLabel(boundaryNodeRule);\n }\n};\nEdgeEndStar.prototype.computeLabelling = function computeLabelling (geomGraph) {\n var this$1 = this;\n\n this.computeEdgeEndLabels(geomGraph[0].getBoundaryNodeRule());\n this.propagateSideLabels(0);\n this.propagateSideLabels(1);\n var hasDimensionalCollapseEdge = [false, false];\n for (var it = this.iterator(); it.hasNext();) {\n var e = it.next();\n var label = e.getLabel();\n for (var geomi = 0; geomi < 2; geomi++) {\n if (label.isLine(geomi) && label.getLocation(geomi) === Location.BOUNDARY) { hasDimensionalCollapseEdge[geomi] = true; }\n }\n }\n for (var it$1 = this.iterator(); it$1.hasNext();) {\n var e$1 = it$1.next();\n var label$1 = e$1.getLabel();\n for (var geomi$1 = 0; geomi$1 < 2; geomi$1++) {\n if (label$1.isAnyNull(geomi$1)) {\n var loc = Location.NONE;\n if (hasDimensionalCollapseEdge[geomi$1]) {\n loc = Location.EXTERIOR;\n } else {\n var p = e$1.getCoordinate();\n loc = this$1.getLocation(geomi$1, p, geomGraph);\n }\n label$1.setAllLocationsIfNull(geomi$1, loc);\n }\n }\n }\n};\nEdgeEndStar.prototype.getDegree = function getDegree () {\n return this._edgeMap.size()\n};\nEdgeEndStar.prototype.insertEdgeEnd = function insertEdgeEnd (e, obj) {\n this._edgeMap.put(e, obj);\n this._edgeList = null;\n};\nEdgeEndStar.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nEdgeEndStar.prototype.getClass = function getClass () {\n return EdgeEndStar\n};\n\nvar DirectedEdgeStar = (function (EdgeEndStar$$1) {\n function DirectedEdgeStar () {\n EdgeEndStar$$1.call(this);\n this._resultAreaEdgeList = null;\n this._label = null;\n this._SCANNING_FOR_INCOMING = 1;\n this._LINKING_TO_OUTGOING = 2;\n }\n\n if ( EdgeEndStar$$1 ) DirectedEdgeStar.__proto__ = EdgeEndStar$$1;\n DirectedEdgeStar.prototype = Object.create( EdgeEndStar$$1 && EdgeEndStar$$1.prototype );\n DirectedEdgeStar.prototype.constructor = DirectedEdgeStar;\n DirectedEdgeStar.prototype.linkResultDirectedEdges = function linkResultDirectedEdges () {\n var this$1 = this;\n\n this.getResultAreaEdges();\n var firstOut = null;\n var incoming = null;\n var state = this._SCANNING_FOR_INCOMING;\n for (var i = 0; i < this._resultAreaEdgeList.size(); i++) {\n var nextOut = this$1._resultAreaEdgeList.get(i);\n var nextIn = nextOut.getSym();\n if (!nextOut.getLabel().isArea()) { continue }\n if (firstOut === null && nextOut.isInResult()) { firstOut = nextOut; }\n switch (state) {\n case this$1._SCANNING_FOR_INCOMING:\n if (!nextIn.isInResult()) { continue }\n incoming = nextIn;\n state = this$1._LINKING_TO_OUTGOING;\n break\n case this$1._LINKING_TO_OUTGOING:\n if (!nextOut.isInResult()) { continue }\n incoming.setNext(nextOut);\n state = this$1._SCANNING_FOR_INCOMING;\n break\n default:\n }\n }\n if (state === this._LINKING_TO_OUTGOING) {\n if (firstOut === null) { throw new TopologyException('no outgoing dirEdge found', this.getCoordinate()) }\n Assert.isTrue(firstOut.isInResult(), 'unable to link last incoming dirEdge');\n incoming.setNext(firstOut);\n }\n };\n DirectedEdgeStar.prototype.insert = function insert (ee) {\n var de = ee;\n this.insertEdgeEnd(de, de);\n };\n DirectedEdgeStar.prototype.getRightmostEdge = function getRightmostEdge () {\n var edges = this.getEdges();\n var size = edges.size();\n if (size < 1) { return null }\n var de0 = edges.get(0);\n if (size === 1) { return de0 }\n var deLast = edges.get(size - 1);\n var quad0 = de0.getQuadrant();\n var quad1 = deLast.getQuadrant();\n if (Quadrant.isNorthern(quad0) && Quadrant.isNorthern(quad1)) { return de0; } else if (!Quadrant.isNorthern(quad0) && !Quadrant.isNorthern(quad1)) { return deLast; } else {\n // const nonHorizontalEdge = null\n if (de0.getDy() !== 0) { return de0; } else if (deLast.getDy() !== 0) { return deLast }\n }\n Assert.shouldNeverReachHere('found two horizontal edges incident on node');\n return null\n };\n DirectedEdgeStar.prototype.print = function print (out) {\n System.out.println('DirectedEdgeStar: ' + this.getCoordinate());\n for (var it = this.iterator(); it.hasNext();) {\n var de = it.next();\n out.print('out ');\n de.print(out);\n out.println();\n out.print('in ');\n de.getSym().print(out);\n out.println();\n }\n };\n DirectedEdgeStar.prototype.getResultAreaEdges = function getResultAreaEdges () {\n var this$1 = this;\n\n if (this._resultAreaEdgeList !== null) { return this._resultAreaEdgeList }\n this._resultAreaEdgeList = new ArrayList();\n for (var it = this.iterator(); it.hasNext();) {\n var de = it.next();\n if (de.isInResult() || de.getSym().isInResult()) { this$1._resultAreaEdgeList.add(de); }\n }\n return this._resultAreaEdgeList\n };\n DirectedEdgeStar.prototype.updateLabelling = function updateLabelling (nodeLabel) {\n for (var it = this.iterator(); it.hasNext();) {\n var de = it.next();\n var label = de.getLabel();\n label.setAllLocationsIfNull(0, nodeLabel.getLocation(0));\n label.setAllLocationsIfNull(1, nodeLabel.getLocation(1));\n }\n };\n DirectedEdgeStar.prototype.linkAllDirectedEdges = function linkAllDirectedEdges () {\n var this$1 = this;\n\n this.getEdges();\n var prevOut = null;\n var firstIn = null;\n for (var i = this._edgeList.size() - 1; i >= 0; i--) {\n var nextOut = this$1._edgeList.get(i);\n var nextIn = nextOut.getSym();\n if (firstIn === null) { firstIn = nextIn; }\n if (prevOut !== null) { nextIn.setNext(prevOut); }\n prevOut = nextOut;\n }\n firstIn.setNext(prevOut);\n };\n DirectedEdgeStar.prototype.computeDepths = function computeDepths () {\n var this$1 = this;\n\n if (arguments.length === 1) {\n var de = arguments[0];\n var edgeIndex = this.findIndex(de);\n // const label = de.getLabel()\n var startDepth = de.getDepth(Position.LEFT);\n var targetLastDepth = de.getDepth(Position.RIGHT);\n var nextDepth = this.computeDepths(edgeIndex + 1, this._edgeList.size(), startDepth);\n var lastDepth = this.computeDepths(0, edgeIndex, nextDepth);\n if (lastDepth !== targetLastDepth) { throw new TopologyException('depth mismatch at ' + de.getCoordinate()) }\n } else if (arguments.length === 3) {\n var startIndex = arguments[0];\n var endIndex = arguments[1];\n var startDepth$1 = arguments[2];\n var currDepth = startDepth$1;\n for (var i = startIndex; i < endIndex; i++) {\n var nextDe = this$1._edgeList.get(i);\n // const label = nextDe.getLabel()\n nextDe.setEdgeDepths(Position.RIGHT, currDepth);\n currDepth = nextDe.getDepth(Position.LEFT);\n }\n return currDepth\n }\n };\n DirectedEdgeStar.prototype.mergeSymLabels = function mergeSymLabels () {\n for (var it = this.iterator(); it.hasNext();) {\n var de = it.next();\n var label = de.getLabel();\n label.merge(de.getSym().getLabel());\n }\n };\n DirectedEdgeStar.prototype.linkMinimalDirectedEdges = function linkMinimalDirectedEdges (er) {\n var this$1 = this;\n\n var firstOut = null;\n var incoming = null;\n var state = this._SCANNING_FOR_INCOMING;\n for (var i = this._resultAreaEdgeList.size() - 1; i >= 0; i--) {\n var nextOut = this$1._resultAreaEdgeList.get(i);\n var nextIn = nextOut.getSym();\n if (firstOut === null && nextOut.getEdgeRing() === er) { firstOut = nextOut; }\n switch (state) {\n case this$1._SCANNING_FOR_INCOMING:\n if (nextIn.getEdgeRing() !== er) { continue }\n incoming = nextIn;\n state = this$1._LINKING_TO_OUTGOING;\n break\n case this$1._LINKING_TO_OUTGOING:\n if (nextOut.getEdgeRing() !== er) { continue }\n incoming.setNextMin(nextOut);\n state = this$1._SCANNING_FOR_INCOMING;\n break\n default:\n }\n }\n if (state === this._LINKING_TO_OUTGOING) {\n Assert.isTrue(firstOut !== null, 'found null for first outgoing dirEdge');\n Assert.isTrue(firstOut.getEdgeRing() === er, 'unable to link last incoming dirEdge');\n incoming.setNextMin(firstOut);\n }\n };\n DirectedEdgeStar.prototype.getOutgoingDegree = function getOutgoingDegree () {\n if (arguments.length === 0) {\n var degree = 0;\n for (var it = this.iterator(); it.hasNext();) {\n var de = it.next();\n if (de.isInResult()) { degree++; }\n }\n return degree\n } else if (arguments.length === 1) {\n var er = arguments[0];\n var degree$1 = 0;\n for (var it$1 = this.iterator(); it$1.hasNext();) {\n var de$1 = it$1.next();\n if (de$1.getEdgeRing() === er) { degree$1++; }\n }\n return degree$1\n }\n };\n DirectedEdgeStar.prototype.getLabel = function getLabel () {\n return this._label\n };\n DirectedEdgeStar.prototype.findCoveredLineEdges = function findCoveredLineEdges () {\n var startLoc = Location.NONE;\n for (var it = this.iterator(); it.hasNext();) {\n var nextOut = it.next();\n var nextIn = nextOut.getSym();\n if (!nextOut.isLineEdge()) {\n if (nextOut.isInResult()) {\n startLoc = Location.INTERIOR;\n break\n }\n if (nextIn.isInResult()) {\n startLoc = Location.EXTERIOR;\n break\n }\n }\n }\n if (startLoc === Location.NONE) { return null }\n var currLoc = startLoc;\n for (var it$1 = this.iterator(); it$1.hasNext();) {\n var nextOut$1 = it$1.next();\n var nextIn$1 = nextOut$1.getSym();\n if (nextOut$1.isLineEdge()) {\n nextOut$1.getEdge().setCovered(currLoc === Location.INTERIOR);\n } else {\n if (nextOut$1.isInResult()) { currLoc = Location.EXTERIOR; }\n if (nextIn$1.isInResult()) { currLoc = Location.INTERIOR; }\n }\n }\n };\n DirectedEdgeStar.prototype.computeLabelling = function computeLabelling (geom) {\n var this$1 = this;\n\n EdgeEndStar$$1.prototype.computeLabelling.call(this, geom);\n this._label = new Label(Location.NONE);\n for (var it = this.iterator(); it.hasNext();) {\n var ee = it.next();\n var e = ee.getEdge();\n var eLabel = e.getLabel();\n for (var i = 0; i < 2; i++) {\n var eLoc = eLabel.getLocation(i);\n if (eLoc === Location.INTERIOR || eLoc === Location.BOUNDARY) { this$1._label.setLocation(i, Location.INTERIOR); }\n }\n }\n };\n DirectedEdgeStar.prototype.interfaces_ = function interfaces_ () {\n return []\n };\n DirectedEdgeStar.prototype.getClass = function getClass () {\n return DirectedEdgeStar\n };\n\n return DirectedEdgeStar;\n}(EdgeEndStar));\n\nvar OverlayNodeFactory = (function (NodeFactory$$1) {\n function OverlayNodeFactory () {\n NodeFactory$$1.apply(this, arguments);\n }\n\n if ( NodeFactory$$1 ) OverlayNodeFactory.__proto__ = NodeFactory$$1;\n OverlayNodeFactory.prototype = Object.create( NodeFactory$$1 && NodeFactory$$1.prototype );\n OverlayNodeFactory.prototype.constructor = OverlayNodeFactory;\n\n OverlayNodeFactory.prototype.createNode = function createNode (coord) {\n return new Node(coord, new DirectedEdgeStar())\n };\n OverlayNodeFactory.prototype.interfaces_ = function interfaces_ () {\n return []\n };\n OverlayNodeFactory.prototype.getClass = function getClass () {\n return OverlayNodeFactory\n };\n\n return OverlayNodeFactory;\n}(NodeFactory));\n\nvar OrientedCoordinateArray = function OrientedCoordinateArray () {\n this._pts = null;\n this._orientation = null;\n var pts = arguments[0];\n this._pts = pts;\n this._orientation = OrientedCoordinateArray.orientation(pts);\n};\nOrientedCoordinateArray.prototype.compareTo = function compareTo (o1) {\n var oca = o1;\n var comp = OrientedCoordinateArray.compareOriented(this._pts, this._orientation, oca._pts, oca._orientation);\n return comp\n};\nOrientedCoordinateArray.prototype.interfaces_ = function interfaces_ () {\n return [Comparable]\n};\nOrientedCoordinateArray.prototype.getClass = function getClass () {\n return OrientedCoordinateArray\n};\nOrientedCoordinateArray.orientation = function orientation (pts) {\n return CoordinateArrays.increasingDirection(pts) === 1\n};\nOrientedCoordinateArray.compareOriented = function compareOriented (pts1, orientation1, pts2, orientation2) {\n var dir1 = orientation1 ? 1 : -1;\n var dir2 = orientation2 ? 1 : -1;\n var limit1 = orientation1 ? pts1.length : -1;\n var limit2 = orientation2 ? pts2.length : -1;\n var i1 = orientation1 ? 0 : pts1.length - 1;\n var i2 = orientation2 ? 0 : pts2.length - 1;\n // const comp = 0\n while (true) {\n var compPt = pts1[i1].compareTo(pts2[i2]);\n if (compPt !== 0) { return compPt }\n i1 += dir1;\n i2 += dir2;\n var done1 = i1 === limit1;\n var done2 = i2 === limit2;\n if (done1 && !done2) { return -1 }\n if (!done1 && done2) { return 1 }\n if (done1 && done2) { return 0 }\n }\n};\n\nvar EdgeList = function EdgeList () {\n this._edges = new ArrayList();\n this._ocaMap = new TreeMap();\n};\nEdgeList.prototype.print = function print (out) {\n var this$1 = this;\n\n out.print('MULTILINESTRING ( ');\n for (var j = 0; j < this._edges.size(); j++) {\n var e = this$1._edges.get(j);\n if (j > 0) { out.print(','); }\n out.print('(');\n var pts = e.getCoordinates();\n for (var i = 0; i < pts.length; i++) {\n if (i > 0) { out.print(','); }\n out.print(pts[i].x + ' ' + pts[i].y);\n }\n out.println(')');\n }\n out.print(') ');\n};\nEdgeList.prototype.addAll = function addAll (edgeColl) {\n var this$1 = this;\n\n for (var i = edgeColl.iterator(); i.hasNext();) {\n this$1.add(i.next());\n }\n};\nEdgeList.prototype.findEdgeIndex = function findEdgeIndex (e) {\n var this$1 = this;\n\n for (var i = 0; i < this._edges.size(); i++) {\n if (this$1._edges.get(i).equals(e)) { return i }\n }\n return -1\n};\nEdgeList.prototype.iterator = function iterator () {\n return this._edges.iterator()\n};\nEdgeList.prototype.getEdges = function getEdges () {\n return this._edges\n};\nEdgeList.prototype.get = function get (i) {\n return this._edges.get(i)\n};\nEdgeList.prototype.findEqualEdge = function findEqualEdge (e) {\n var oca = new OrientedCoordinateArray(e.getCoordinates());\n var matchEdge = this._ocaMap.get(oca);\n return matchEdge\n};\nEdgeList.prototype.add = function add (e) {\n this._edges.add(e);\n var oca = new OrientedCoordinateArray(e.getCoordinates());\n this._ocaMap.put(oca, e);\n};\nEdgeList.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nEdgeList.prototype.getClass = function getClass () {\n return EdgeList\n};\n\nvar SegmentIntersector = function SegmentIntersector () {};\n\nSegmentIntersector.prototype.processIntersections = function processIntersections (e0, segIndex0, e1, segIndex1) {};\nSegmentIntersector.prototype.isDone = function isDone () {};\nSegmentIntersector.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nSegmentIntersector.prototype.getClass = function getClass () {\n return SegmentIntersector\n};\n\nvar IntersectionAdder = function IntersectionAdder () {\n this._hasIntersection = false;\n this._hasProper = false;\n this._hasProperInterior = false;\n this._hasInterior = false;\n this._properIntersectionPoint = null;\n this._li = null;\n this._isSelfIntersection = null;\n this.numIntersections = 0;\n this.numInteriorIntersections = 0;\n this.numProperIntersections = 0;\n this.numTests = 0;\n var li = arguments[0];\n this._li = li;\n};\nIntersectionAdder.prototype.isTrivialIntersection = function isTrivialIntersection (e0, segIndex0, e1, segIndex1) {\n if (e0 === e1) {\n if (this._li.getIntersectionNum() === 1) {\n if (IntersectionAdder.isAdjacentSegments(segIndex0, segIndex1)) { return true }\n if (e0.isClosed()) {\n var maxSegIndex = e0.size() - 1;\n if ((segIndex0 === 0 && segIndex1 === maxSegIndex) ||\n (segIndex1 === 0 && segIndex0 === maxSegIndex)) {\n return true\n }\n }\n }\n }\n return false\n};\nIntersectionAdder.prototype.getProperIntersectionPoint = function getProperIntersectionPoint () {\n return this._properIntersectionPoint\n};\nIntersectionAdder.prototype.hasProperInteriorIntersection = function hasProperInteriorIntersection () {\n return this._hasProperInterior\n};\nIntersectionAdder.prototype.getLineIntersector = function getLineIntersector () {\n return this._li\n};\nIntersectionAdder.prototype.hasProperIntersection = function hasProperIntersection () {\n return this._hasProper\n};\nIntersectionAdder.prototype.processIntersections = function processIntersections (e0, segIndex0, e1, segIndex1) {\n if (e0 === e1 && segIndex0 === segIndex1) { return null }\n this.numTests++;\n var p00 = e0.getCoordinates()[segIndex0];\n var p01 = e0.getCoordinates()[segIndex0 + 1];\n var p10 = e1.getCoordinates()[segIndex1];\n var p11 = e1.getCoordinates()[segIndex1 + 1];\n this._li.computeIntersection(p00, p01, p10, p11);\n if (this._li.hasIntersection()) {\n this.numIntersections++;\n if (this._li.isInteriorIntersection()) {\n this.numInteriorIntersections++;\n this._hasInterior = true;\n }\n if (!this.isTrivialIntersection(e0, segIndex0, e1, segIndex1)) {\n this._hasIntersection = true;\n e0.addIntersections(this._li, segIndex0, 0);\n e1.addIntersections(this._li, segIndex1, 1);\n if (this._li.isProper()) {\n this.numProperIntersections++;\n this._hasProper = true;\n this._hasProperInterior = true;\n }\n }\n }\n};\nIntersectionAdder.prototype.hasIntersection = function hasIntersection () {\n return this._hasIntersection\n};\nIntersectionAdder.prototype.isDone = function isDone () {\n return false\n};\nIntersectionAdder.prototype.hasInteriorIntersection = function hasInteriorIntersection () {\n return this._hasInterior\n};\nIntersectionAdder.prototype.interfaces_ = function interfaces_ () {\n return [SegmentIntersector]\n};\nIntersectionAdder.prototype.getClass = function getClass () {\n return IntersectionAdder\n};\nIntersectionAdder.isAdjacentSegments = function isAdjacentSegments (i1, i2) {\n return Math.abs(i1 - i2) === 1\n};\n\nvar EdgeIntersection = function EdgeIntersection () {\n this.coord = null;\n this.segmentIndex = null;\n this.dist = null;\n var coord = arguments[0];\n var segmentIndex = arguments[1];\n var dist = arguments[2];\n this.coord = new Coordinate(coord);\n this.segmentIndex = segmentIndex;\n this.dist = dist;\n};\nEdgeIntersection.prototype.getSegmentIndex = function getSegmentIndex () {\n return this.segmentIndex\n};\nEdgeIntersection.prototype.getCoordinate = function getCoordinate () {\n return this.coord\n};\nEdgeIntersection.prototype.print = function print (out) {\n out.print(this.coord);\n out.print(' seg # = ' + this.segmentIndex);\n out.println(' dist = ' + this.dist);\n};\nEdgeIntersection.prototype.compareTo = function compareTo (obj) {\n var other = obj;\n return this.compare(other.segmentIndex, other.dist)\n};\nEdgeIntersection.prototype.isEndPoint = function isEndPoint (maxSegmentIndex) {\n if (this.segmentIndex === 0 && this.dist === 0.0) { return true }\n if (this.segmentIndex === maxSegmentIndex) { return true }\n return false\n};\nEdgeIntersection.prototype.toString = function toString () {\n return this.coord + ' seg # = ' + this.segmentIndex + ' dist = ' + this.dist\n};\nEdgeIntersection.prototype.getDistance = function getDistance () {\n return this.dist\n};\nEdgeIntersection.prototype.compare = function compare (segmentIndex, dist) {\n if (this.segmentIndex < segmentIndex) { return -1 }\n if (this.segmentIndex > segmentIndex) { return 1 }\n if (this.dist < dist) { return -1 }\n if (this.dist > dist) { return 1 }\n return 0\n};\nEdgeIntersection.prototype.interfaces_ = function interfaces_ () {\n return [Comparable]\n};\nEdgeIntersection.prototype.getClass = function getClass () {\n return EdgeIntersection\n};\n\nvar EdgeIntersectionList = function EdgeIntersectionList () {\n this._nodeMap = new TreeMap();\n this.edge = null;\n var edge = arguments[0];\n this.edge = edge;\n};\nEdgeIntersectionList.prototype.print = function print (out) {\n out.println('Intersections:');\n for (var it = this.iterator(); it.hasNext();) {\n var ei = it.next();\n ei.print(out);\n }\n};\nEdgeIntersectionList.prototype.iterator = function iterator () {\n return this._nodeMap.values().iterator()\n};\nEdgeIntersectionList.prototype.addSplitEdges = function addSplitEdges (edgeList) {\n var this$1 = this;\n\n this.addEndpoints();\n var it = this.iterator();\n var eiPrev = it.next();\n while (it.hasNext()) {\n var ei = it.next();\n var newEdge = this$1.createSplitEdge(eiPrev, ei);\n edgeList.add(newEdge);\n eiPrev = ei;\n }\n};\nEdgeIntersectionList.prototype.addEndpoints = function addEndpoints () {\n var maxSegIndex = this.edge.pts.length - 1;\n this.add(this.edge.pts[0], 0, 0.0);\n this.add(this.edge.pts[maxSegIndex], maxSegIndex, 0.0);\n};\nEdgeIntersectionList.prototype.createSplitEdge = function createSplitEdge (ei0, ei1) {\n var this$1 = this;\n\n var npts = ei1.segmentIndex - ei0.segmentIndex + 2;\n var lastSegStartPt = this.edge.pts[ei1.segmentIndex];\n var useIntPt1 = ei1.dist > 0.0 || !ei1.coord.equals2D(lastSegStartPt);\n if (!useIntPt1) {\n npts--;\n }\n var pts = new Array(npts).fill(null);\n var ipt = 0;\n pts[ipt++] = new Coordinate(ei0.coord);\n for (var i = ei0.segmentIndex + 1; i <= ei1.segmentIndex; i++) {\n pts[ipt++] = this$1.edge.pts[i];\n }\n if (useIntPt1) { pts[ipt] = ei1.coord; }\n return new Edge(pts, new Label(this.edge._label))\n};\nEdgeIntersectionList.prototype.add = function add (intPt, segmentIndex, dist) {\n var eiNew = new EdgeIntersection(intPt, segmentIndex, dist);\n var ei = this._nodeMap.get(eiNew);\n if (ei !== null) {\n return ei\n }\n this._nodeMap.put(eiNew, eiNew);\n return eiNew\n};\nEdgeIntersectionList.prototype.isIntersection = function isIntersection (pt) {\n for (var it = this.iterator(); it.hasNext();) {\n var ei = it.next();\n if (ei.coord.equals(pt)) { return true }\n }\n return false\n};\nEdgeIntersectionList.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nEdgeIntersectionList.prototype.getClass = function getClass () {\n return EdgeIntersectionList\n};\n\nvar MonotoneChainIndexer = function MonotoneChainIndexer () {};\n\nMonotoneChainIndexer.prototype.getChainStartIndices = function getChainStartIndices (pts) {\n var this$1 = this;\n\n var start = 0;\n var startIndexList = new ArrayList();\n startIndexList.add(new Integer(start));\n do {\n var last = this$1.findChainEnd(pts, start);\n startIndexList.add(new Integer(last));\n start = last;\n } while (start < pts.length - 1)\n var startIndex = MonotoneChainIndexer.toIntArray(startIndexList);\n return startIndex\n};\nMonotoneChainIndexer.prototype.findChainEnd = function findChainEnd (pts, start) {\n var chainQuad = Quadrant.quadrant(pts[start], pts[start + 1]);\n var last = start + 1;\n while (last < pts.length) {\n var quad = Quadrant.quadrant(pts[last - 1], pts[last]);\n if (quad !== chainQuad) { break }\n last++;\n }\n return last - 1\n};\nMonotoneChainIndexer.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nMonotoneChainIndexer.prototype.getClass = function getClass () {\n return MonotoneChainIndexer\n};\nMonotoneChainIndexer.toIntArray = function toIntArray (list) {\n var array = new Array(list.size()).fill(null);\n for (var i = 0; i < array.length; i++) {\n array[i] = list.get(i).intValue();\n }\n return array\n};\n\nvar MonotoneChainEdge = function MonotoneChainEdge () {\n this.e = null;\n this.pts = null;\n this.startIndex = null;\n this.env1 = new Envelope();\n this.env2 = new Envelope();\n var e = arguments[0];\n this.e = e;\n this.pts = e.getCoordinates();\n var mcb = new MonotoneChainIndexer();\n this.startIndex = mcb.getChainStartIndices(this.pts);\n};\nMonotoneChainEdge.prototype.getCoordinates = function getCoordinates () {\n return this.pts\n};\nMonotoneChainEdge.prototype.getMaxX = function getMaxX (chainIndex) {\n var x1 = this.pts[this.startIndex[chainIndex]].x;\n var x2 = this.pts[this.startIndex[chainIndex + 1]].x;\n return x1 > x2 ? x1 : x2\n};\nMonotoneChainEdge.prototype.getMinX = function getMinX (chainIndex) {\n var x1 = this.pts[this.startIndex[chainIndex]].x;\n var x2 = this.pts[this.startIndex[chainIndex + 1]].x;\n return x1 < x2 ? x1 : x2\n};\nMonotoneChainEdge.prototype.computeIntersectsForChain = function computeIntersectsForChain () {\n if (arguments.length === 4) {\n var chainIndex0 = arguments[0];\n var mce = arguments[1];\n var chainIndex1 = arguments[2];\n var si = arguments[3];\n this.computeIntersectsForChain(this.startIndex[chainIndex0], this.startIndex[chainIndex0 + 1], mce, mce.startIndex[chainIndex1], mce.startIndex[chainIndex1 + 1], si);\n } else if (arguments.length === 6) {\n var start0 = arguments[0];\n var end0 = arguments[1];\n var mce$1 = arguments[2];\n var start1 = arguments[3];\n var end1 = arguments[4];\n var ei = arguments[5];\n var p00 = this.pts[start0];\n var p01 = this.pts[end0];\n var p10 = mce$1.pts[start1];\n var p11 = mce$1.pts[end1];\n if (end0 - start0 === 1 && end1 - start1 === 1) {\n ei.addIntersections(this.e, start0, mce$1.e, start1);\n return null\n }\n this.env1.init(p00, p01);\n this.env2.init(p10, p11);\n if (!this.env1.intersects(this.env2)) { return null }\n var mid0 = Math.trunc((start0 + end0) / 2);\n var mid1 = Math.trunc((start1 + end1) / 2);\n if (start0 < mid0) {\n if (start1 < mid1) { this.computeIntersectsForChain(start0, mid0, mce$1, start1, mid1, ei); }\n if (mid1 < end1) { this.computeIntersectsForChain(start0, mid0, mce$1, mid1, end1, ei); }\n }\n if (mid0 < end0) {\n if (start1 < mid1) { this.computeIntersectsForChain(mid0, end0, mce$1, start1, mid1, ei); }\n if (mid1 < end1) { this.computeIntersectsForChain(mid0, end0, mce$1, mid1, end1, ei); }\n }\n }\n};\nMonotoneChainEdge.prototype.getStartIndexes = function getStartIndexes () {\n return this.startIndex\n};\nMonotoneChainEdge.prototype.computeIntersects = function computeIntersects (mce, si) {\n var this$1 = this;\n\n for (var i = 0; i < this.startIndex.length - 1; i++) {\n for (var j = 0; j < mce.startIndex.length - 1; j++) {\n this$1.computeIntersectsForChain(i, mce, j, si);\n }\n }\n};\nMonotoneChainEdge.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nMonotoneChainEdge.prototype.getClass = function getClass () {\n return MonotoneChainEdge\n};\n\nvar Depth = function Depth () {\n var this$1 = this;\n\n this._depth = Array(2).fill().map(function () { return Array(3); });\n for (var i = 0; i < 2; i++) {\n for (var j = 0; j < 3; j++) {\n this$1._depth[i][j] = Depth.NULL_VALUE;\n }\n }\n};\n\nvar staticAccessors$31 = { NULL_VALUE: { configurable: true } };\nDepth.prototype.getDepth = function getDepth (geomIndex, posIndex) {\n return this._depth[geomIndex][posIndex]\n};\nDepth.prototype.setDepth = function setDepth (geomIndex, posIndex, depthValue) {\n this._depth[geomIndex][posIndex] = depthValue;\n};\nDepth.prototype.isNull = function isNull () {\n var this$1 = this;\n\n if (arguments.length === 0) {\n for (var i = 0; i < 2; i++) {\n for (var j = 0; j < 3; j++) {\n if (this$1._depth[i][j] !== Depth.NULL_VALUE) { return false }\n }\n }\n return true\n } else if (arguments.length === 1) {\n var geomIndex = arguments[0];\n return this._depth[geomIndex][1] === Depth.NULL_VALUE\n } else if (arguments.length === 2) {\n var geomIndex$1 = arguments[0];\n var posIndex = arguments[1];\n return this._depth[geomIndex$1][posIndex] === Depth.NULL_VALUE\n }\n};\nDepth.prototype.normalize = function normalize () {\n var this$1 = this;\n\n for (var i = 0; i < 2; i++) {\n if (!this$1.isNull(i)) {\n var minDepth = this$1._depth[i][1];\n if (this$1._depth[i][2] < minDepth) { minDepth = this$1._depth[i][2]; }\n if (minDepth < 0) { minDepth = 0; }\n for (var j = 1; j < 3; j++) {\n var newValue = 0;\n if (this$1._depth[i][j] > minDepth) { newValue = 1; }\n this$1._depth[i][j] = newValue;\n }\n }\n }\n};\nDepth.prototype.getDelta = function getDelta (geomIndex) {\n return this._depth[geomIndex][Position.RIGHT] - this._depth[geomIndex][Position.LEFT]\n};\nDepth.prototype.getLocation = function getLocation (geomIndex, posIndex) {\n if (this._depth[geomIndex][posIndex] <= 0) { return Location.EXTERIOR }\n return Location.INTERIOR\n};\nDepth.prototype.toString = function toString () {\n return 'A: ' + this._depth[0][1] + ',' + this._depth[0][2] + ' B: ' + this._depth[1][1] + ',' + this._depth[1][2]\n};\nDepth.prototype.add = function add () {\n var this$1 = this;\n\n if (arguments.length === 1) {\n var lbl = arguments[0];\n for (var i = 0; i < 2; i++) {\n for (var j = 1; j < 3; j++) {\n var loc = lbl.getLocation(i, j);\n if (loc === Location.EXTERIOR || loc === Location.INTERIOR) {\n if (this$1.isNull(i, j)) {\n this$1._depth[i][j] = Depth.depthAtLocation(loc);\n } else { this$1._depth[i][j] += Depth.depthAtLocation(loc); }\n }\n }\n }\n } else if (arguments.length === 3) {\n var geomIndex = arguments[0];\n var posIndex = arguments[1];\n var location = arguments[2];\n if (location === Location.INTERIOR) { this._depth[geomIndex][posIndex]++; }\n }\n};\nDepth.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nDepth.prototype.getClass = function getClass () {\n return Depth\n};\nDepth.depthAtLocation = function depthAtLocation (location) {\n if (location === Location.EXTERIOR) { return 0 }\n if (location === Location.INTERIOR) { return 1 }\n return Depth.NULL_VALUE\n};\nstaticAccessors$31.NULL_VALUE.get = function () { return -1 };\n\nObject.defineProperties( Depth, staticAccessors$31 );\n\nvar Edge = (function (GraphComponent$$1) {\n function Edge () {\n GraphComponent$$1.call(this);\n this.pts = null;\n this._env = null;\n this.eiList = new EdgeIntersectionList(this);\n this._name = null;\n this._mce = null;\n this._isIsolated = true;\n this._depth = new Depth();\n this._depthDelta = 0;\n if (arguments.length === 1) {\n var pts = arguments[0];\n Edge.call(this, pts, null);\n } else if (arguments.length === 2) {\n var pts$1 = arguments[0];\n var label = arguments[1];\n this.pts = pts$1;\n this._label = label;\n }\n }\n\n if ( GraphComponent$$1 ) Edge.__proto__ = GraphComponent$$1;\n Edge.prototype = Object.create( GraphComponent$$1 && GraphComponent$$1.prototype );\n Edge.prototype.constructor = Edge;\n Edge.prototype.getDepth = function getDepth () {\n return this._depth\n };\n Edge.prototype.getCollapsedEdge = function getCollapsedEdge () {\n var newPts = new Array(2).fill(null);\n newPts[0] = this.pts[0];\n newPts[1] = this.pts[1];\n var newe = new Edge(newPts, Label.toLineLabel(this._label));\n return newe\n };\n Edge.prototype.isIsolated = function isIsolated () {\n return this._isIsolated\n };\n Edge.prototype.getCoordinates = function getCoordinates () {\n return this.pts\n };\n Edge.prototype.setIsolated = function setIsolated (isIsolated) {\n this._isIsolated = isIsolated;\n };\n Edge.prototype.setName = function setName (name) {\n this._name = name;\n };\n Edge.prototype.equals = function equals (o) {\n var this$1 = this;\n\n if (!(o instanceof Edge)) { return false }\n var e = o;\n if (this.pts.length !== e.pts.length) { return false }\n var isEqualForward = true;\n var isEqualReverse = true;\n var iRev = this.pts.length;\n for (var i = 0; i < this.pts.length; i++) {\n if (!this$1.pts[i].equals2D(e.pts[i])) {\n isEqualForward = false;\n }\n if (!this$1.pts[i].equals2D(e.pts[--iRev])) {\n isEqualReverse = false;\n }\n if (!isEqualForward && !isEqualReverse) { return false }\n }\n return true\n };\n Edge.prototype.getCoordinate = function getCoordinate () {\n if (arguments.length === 0) {\n if (this.pts.length > 0) { return this.pts[0] }\n return null\n } else if (arguments.length === 1) {\n var i = arguments[0];\n return this.pts[i]\n }\n };\n Edge.prototype.print = function print (out) {\n var this$1 = this;\n\n out.print('edge ' + this._name + ': ');\n out.print('LINESTRING (');\n for (var i = 0; i < this.pts.length; i++) {\n if (i > 0) { out.print(','); }\n out.print(this$1.pts[i].x + ' ' + this$1.pts[i].y);\n }\n out.print(') ' + this._label + ' ' + this._depthDelta);\n };\n Edge.prototype.computeIM = function computeIM (im) {\n Edge.updateIM(this._label, im);\n };\n Edge.prototype.isCollapsed = function isCollapsed () {\n if (!this._label.isArea()) { return false }\n if (this.pts.length !== 3) { return false }\n if (this.pts[0].equals(this.pts[2])) { return true }\n return false\n };\n Edge.prototype.isClosed = function isClosed () {\n return this.pts[0].equals(this.pts[this.pts.length - 1])\n };\n Edge.prototype.getMaximumSegmentIndex = function getMaximumSegmentIndex () {\n return this.pts.length - 1\n };\n Edge.prototype.getDepthDelta = function getDepthDelta () {\n return this._depthDelta\n };\n Edge.prototype.getNumPoints = function getNumPoints () {\n return this.pts.length\n };\n Edge.prototype.printReverse = function printReverse (out) {\n var this$1 = this;\n\n out.print('edge ' + this._name + ': ');\n for (var i = this.pts.length - 1; i >= 0; i--) {\n out.print(this$1.pts[i] + ' ');\n }\n out.println('');\n };\n Edge.prototype.getMonotoneChainEdge = function getMonotoneChainEdge () {\n if (this._mce === null) { this._mce = new MonotoneChainEdge(this); }\n return this._mce\n };\n Edge.prototype.getEnvelope = function getEnvelope () {\n var this$1 = this;\n\n if (this._env === null) {\n this._env = new Envelope();\n for (var i = 0; i < this.pts.length; i++) {\n this$1._env.expandToInclude(this$1.pts[i]);\n }\n }\n return this._env\n };\n Edge.prototype.addIntersection = function addIntersection (li, segmentIndex, geomIndex, intIndex) {\n var intPt = new Coordinate(li.getIntersection(intIndex));\n var normalizedSegmentIndex = segmentIndex;\n var dist = li.getEdgeDistance(geomIndex, intIndex);\n var nextSegIndex = normalizedSegmentIndex + 1;\n if (nextSegIndex < this.pts.length) {\n var nextPt = this.pts[nextSegIndex];\n if (intPt.equals2D(nextPt)) {\n normalizedSegmentIndex = nextSegIndex;\n dist = 0.0;\n }\n }\n this.eiList.add(intPt, normalizedSegmentIndex, dist);\n };\n Edge.prototype.toString = function toString () {\n var this$1 = this;\n\n var buf = new StringBuffer();\n buf.append('edge ' + this._name + ': ');\n buf.append('LINESTRING (');\n for (var i = 0; i < this.pts.length; i++) {\n if (i > 0) { buf.append(','); }\n buf.append(this$1.pts[i].x + ' ' + this$1.pts[i].y);\n }\n buf.append(') ' + this._label + ' ' + this._depthDelta);\n return buf.toString()\n };\n Edge.prototype.isPointwiseEqual = function isPointwiseEqual (e) {\n var this$1 = this;\n\n if (this.pts.length !== e.pts.length) { return false }\n for (var i = 0; i < this.pts.length; i++) {\n if (!this$1.pts[i].equals2D(e.pts[i])) {\n return false\n }\n }\n return true\n };\n Edge.prototype.setDepthDelta = function setDepthDelta (depthDelta) {\n this._depthDelta = depthDelta;\n };\n Edge.prototype.getEdgeIntersectionList = function getEdgeIntersectionList () {\n return this.eiList\n };\n Edge.prototype.addIntersections = function addIntersections (li, segmentIndex, geomIndex) {\n var this$1 = this;\n\n for (var i = 0; i < li.getIntersectionNum(); i++) {\n this$1.addIntersection(li, segmentIndex, geomIndex, i);\n }\n };\n Edge.prototype.interfaces_ = function interfaces_ () {\n return []\n };\n Edge.prototype.getClass = function getClass () {\n return Edge\n };\n Edge.updateIM = function updateIM () {\n if (arguments.length === 2) {\n var label = arguments[0];\n var im = arguments[1];\n im.setAtLeastIfValid(label.getLocation(0, Position.ON), label.getLocation(1, Position.ON), 1);\n if (label.isArea()) {\n im.setAtLeastIfValid(label.getLocation(0, Position.LEFT), label.getLocation(1, Position.LEFT), 2);\n im.setAtLeastIfValid(label.getLocation(0, Position.RIGHT), label.getLocation(1, Position.RIGHT), 2);\n }\n } else { return GraphComponent$$1.prototype.updateIM.apply(this, arguments) }\n };\n\n return Edge;\n}(GraphComponent));\n\nvar BufferBuilder = function BufferBuilder (bufParams) {\n this._workingPrecisionModel = null;\n this._workingNoder = null;\n this._geomFact = null;\n this._graph = null;\n this._edgeList = new EdgeList();\n this._bufParams = bufParams || null;\n};\nBufferBuilder.prototype.setWorkingPrecisionModel = function setWorkingPrecisionModel (pm) {\n this._workingPrecisionModel = pm;\n};\nBufferBuilder.prototype.insertUniqueEdge = function insertUniqueEdge (e) {\n var existingEdge = this._edgeList.findEqualEdge(e);\n if (existingEdge !== null) {\n var existingLabel = existingEdge.getLabel();\n var labelToMerge = e.getLabel();\n if (!existingEdge.isPointwiseEqual(e)) {\n labelToMerge = new Label(e.getLabel());\n labelToMerge.flip();\n }\n existingLabel.merge(labelToMerge);\n var mergeDelta = BufferBuilder.depthDelta(labelToMerge);\n var existingDelta = existingEdge.getDepthDelta();\n var newDelta = existingDelta + mergeDelta;\n existingEdge.setDepthDelta(newDelta);\n } else {\n this._edgeList.add(e);\n e.setDepthDelta(BufferBuilder.depthDelta(e.getLabel()));\n }\n};\nBufferBuilder.prototype.buildSubgraphs = function buildSubgraphs (subgraphList, polyBuilder) {\n var processedGraphs = new ArrayList();\n for (var i = subgraphList.iterator(); i.hasNext();) {\n var subgraph = i.next();\n var p = subgraph.getRightmostCoordinate();\n var locater = new SubgraphDepthLocater(processedGraphs);\n var outsideDepth = locater.getDepth(p);\n subgraph.computeDepth(outsideDepth);\n subgraph.findResultEdges();\n processedGraphs.add(subgraph);\n polyBuilder.add(subgraph.getDirectedEdges(), subgraph.getNodes());\n }\n};\nBufferBuilder.prototype.createSubgraphs = function createSubgraphs (graph) {\n var subgraphList = new ArrayList();\n for (var i = graph.getNodes().iterator(); i.hasNext();) {\n var node = i.next();\n if (!node.isVisited()) {\n var subgraph = new BufferSubgraph();\n subgraph.create(node);\n subgraphList.add(subgraph);\n }\n }\n Collections.sort(subgraphList, Collections.reverseOrder());\n return subgraphList\n};\nBufferBuilder.prototype.createEmptyResultGeometry = function createEmptyResultGeometry () {\n var emptyGeom = this._geomFact.createPolygon();\n return emptyGeom\n};\nBufferBuilder.prototype.getNoder = function getNoder (precisionModel) {\n if (this._workingNoder !== null) { return this._workingNoder }\n var noder = new MCIndexNoder();\n var li = new RobustLineIntersector();\n li.setPrecisionModel(precisionModel);\n noder.setSegmentIntersector(new IntersectionAdder(li));\n return noder\n};\nBufferBuilder.prototype.buffer = function buffer (g, distance) {\n var precisionModel = this._workingPrecisionModel;\n if (precisionModel === null) { precisionModel = g.getPrecisionModel(); }\n this._geomFact = g.getFactory();\n var curveBuilder = new OffsetCurveBuilder(precisionModel, this._bufParams);\n var curveSetBuilder = new OffsetCurveSetBuilder(g, distance, curveBuilder);\n var bufferSegStrList = curveSetBuilder.getCurves();\n if (bufferSegStrList.size() <= 0) {\n return this.createEmptyResultGeometry()\n }\n this.computeNodedEdges(bufferSegStrList, precisionModel);\n this._graph = new PlanarGraph(new OverlayNodeFactory());\n this._graph.addEdges(this._edgeList.getEdges());\n var subgraphList = this.createSubgraphs(this._graph);\n var polyBuilder = new PolygonBuilder(this._geomFact);\n this.buildSubgraphs(subgraphList, polyBuilder);\n var resultPolyList = polyBuilder.getPolygons();\n if (resultPolyList.size() <= 0) {\n return this.createEmptyResultGeometry()\n }\n var resultGeom = this._geomFact.buildGeometry(resultPolyList);\n return resultGeom\n};\nBufferBuilder.prototype.computeNodedEdges = function computeNodedEdges (bufferSegStrList, precisionModel) {\n var this$1 = this;\n\n var noder = this.getNoder(precisionModel);\n noder.computeNodes(bufferSegStrList);\n var nodedSegStrings = noder.getNodedSubstrings();\n for (var i = nodedSegStrings.iterator(); i.hasNext();) {\n var segStr = i.next();\n var pts = segStr.getCoordinates();\n if (pts.length === 2 && pts[0].equals2D(pts[1])) { continue }\n var oldLabel = segStr.getData();\n var edge = new Edge(segStr.getCoordinates(), new Label(oldLabel));\n this$1.insertUniqueEdge(edge);\n }\n};\nBufferBuilder.prototype.setNoder = function setNoder (noder) {\n this._workingNoder = noder;\n};\nBufferBuilder.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nBufferBuilder.prototype.getClass = function getClass () {\n return BufferBuilder\n};\nBufferBuilder.depthDelta = function depthDelta (label) {\n var lLoc = label.getLocation(0, Position.LEFT);\n var rLoc = label.getLocation(0, Position.RIGHT);\n if (lLoc === Location.INTERIOR && rLoc === Location.EXTERIOR) { return 1; } else if (lLoc === Location.EXTERIOR && rLoc === Location.INTERIOR) { return -1 }\n return 0\n};\nBufferBuilder.convertSegStrings = function convertSegStrings (it) {\n var fact = new GeometryFactory();\n var lines = new ArrayList();\n while (it.hasNext()) {\n var ss = it.next();\n var line = fact.createLineString(ss.getCoordinates());\n lines.add(line);\n }\n return fact.buildGeometry(lines)\n};\n\nvar ScaledNoder = function ScaledNoder () {\n this._noder = null;\n this._scaleFactor = null;\n this._offsetX = null;\n this._offsetY = null;\n this._isScaled = false;\n if (arguments.length === 2) {\n var noder = arguments[0];\n var scaleFactor = arguments[1];\n this._noder = noder;\n this._scaleFactor = scaleFactor;\n this._offsetX = 0.0;\n this._offsetY = 0.0;\n this._isScaled = !this.isIntegerPrecision();\n } else if (arguments.length === 4) {\n var noder$1 = arguments[0];\n var scaleFactor$1 = arguments[1];\n var offsetX = arguments[2];\n var offsetY = arguments[3];\n this._noder = noder$1;\n this._scaleFactor = scaleFactor$1;\n this._offsetX = offsetX;\n this._offsetY = offsetY;\n this._isScaled = !this.isIntegerPrecision();\n }\n};\nScaledNoder.prototype.rescale = function rescale () {\n var this$1 = this;\n\n if (hasInterface(arguments[0], Collection)) {\n var segStrings = arguments[0];\n for (var i = segStrings.iterator(); i.hasNext();) {\n var ss = i.next();\n this$1.rescale(ss.getCoordinates());\n }\n } else if (arguments[0] instanceof Array) {\n var pts = arguments[0];\n // let p0 = null\n // let p1 = null\n // if (pts.length === 2) {\n // p0 = new Coordinate(pts[0])\n // p1 = new Coordinate(pts[1])\n // }\n for (var i$1 = 0; i$1 < pts.length; i$1++) {\n pts[i$1].x = pts[i$1].x / this$1._scaleFactor + this$1._offsetX;\n pts[i$1].y = pts[i$1].y / this$1._scaleFactor + this$1._offsetY;\n }\n if (pts.length === 2 && pts[0].equals2D(pts[1])) {\n System.out.println(pts);\n }\n }\n};\nScaledNoder.prototype.scale = function scale () {\n var this$1 = this;\n\n if (hasInterface(arguments[0], Collection)) {\n var segStrings = arguments[0];\n var nodedSegmentStrings = new ArrayList();\n for (var i = segStrings.iterator(); i.hasNext();) {\n var ss = i.next();\n nodedSegmentStrings.add(new NodedSegmentString(this$1.scale(ss.getCoordinates()), ss.getData()));\n }\n return nodedSegmentStrings\n } else if (arguments[0] instanceof Array) {\n var pts = arguments[0];\n var roundPts = new Array(pts.length).fill(null);\n for (var i$1 = 0; i$1 < pts.length; i$1++) {\n roundPts[i$1] = new Coordinate(Math.round((pts[i$1].x - this$1._offsetX) * this$1._scaleFactor), Math.round((pts[i$1].y - this$1._offsetY) * this$1._scaleFactor), pts[i$1].z);\n }\n var roundPtsNoDup = CoordinateArrays.removeRepeatedPoints(roundPts);\n return roundPtsNoDup\n }\n};\nScaledNoder.prototype.isIntegerPrecision = function isIntegerPrecision () {\n return this._scaleFactor === 1.0\n};\nScaledNoder.prototype.getNodedSubstrings = function getNodedSubstrings () {\n var splitSS = this._noder.getNodedSubstrings();\n if (this._isScaled) { this.rescale(splitSS); }\n return splitSS\n};\nScaledNoder.prototype.computeNodes = function computeNodes (inputSegStrings) {\n var intSegStrings = inputSegStrings;\n if (this._isScaled) { intSegStrings = this.scale(inputSegStrings); }\n this._noder.computeNodes(intSegStrings);\n};\nScaledNoder.prototype.interfaces_ = function interfaces_ () {\n return [Noder]\n};\nScaledNoder.prototype.getClass = function getClass () {\n return ScaledNoder\n};\n\nvar NodingValidator = function NodingValidator () {\n this._li = new RobustLineIntersector();\n this._segStrings = null;\n var segStrings = arguments[0];\n this._segStrings = segStrings;\n};\n\nvar staticAccessors$33 = { fact: { configurable: true } };\nNodingValidator.prototype.checkEndPtVertexIntersections = function checkEndPtVertexIntersections () {\n var this$1 = this;\n\n if (arguments.length === 0) {\n for (var i = this._segStrings.iterator(); i.hasNext();) {\n var ss = i.next();\n var pts = ss.getCoordinates();\n this$1.checkEndPtVertexIntersections(pts[0], this$1._segStrings);\n this$1.checkEndPtVertexIntersections(pts[pts.length - 1], this$1._segStrings);\n }\n } else if (arguments.length === 2) {\n var testPt = arguments[0];\n var segStrings = arguments[1];\n for (var i$1 = segStrings.iterator(); i$1.hasNext();) {\n var ss$1 = i$1.next();\n var pts$1 = ss$1.getCoordinates();\n for (var j = 1; j < pts$1.length - 1; j++) {\n if (pts$1[j].equals(testPt)) { throw new RuntimeException('found endpt/interior pt intersection at index ' + j + ' :pt ' + testPt) }\n }\n }\n }\n};\nNodingValidator.prototype.checkInteriorIntersections = function checkInteriorIntersections () {\n var this$1 = this;\n\n if (arguments.length === 0) {\n for (var i = this._segStrings.iterator(); i.hasNext();) {\n var ss0 = i.next();\n for (var j = this._segStrings.iterator(); j.hasNext();) {\n var ss1 = j.next();\n this$1.checkInteriorIntersections(ss0, ss1);\n }\n }\n } else if (arguments.length === 2) {\n var ss0$1 = arguments[0];\n var ss1$1 = arguments[1];\n var pts0 = ss0$1.getCoordinates();\n var pts1 = ss1$1.getCoordinates();\n for (var i0 = 0; i0 < pts0.length - 1; i0++) {\n for (var i1 = 0; i1 < pts1.length - 1; i1++) {\n this$1.checkInteriorIntersections(ss0$1, i0, ss1$1, i1);\n }\n }\n } else if (arguments.length === 4) {\n var e0 = arguments[0];\n var segIndex0 = arguments[1];\n var e1 = arguments[2];\n var segIndex1 = arguments[3];\n if (e0 === e1 && segIndex0 === segIndex1) { return null }\n var p00 = e0.getCoordinates()[segIndex0];\n var p01 = e0.getCoordinates()[segIndex0 + 1];\n var p10 = e1.getCoordinates()[segIndex1];\n var p11 = e1.getCoordinates()[segIndex1 + 1];\n this._li.computeIntersection(p00, p01, p10, p11);\n if (this._li.hasIntersection()) {\n if (this._li.isProper() || this.hasInteriorIntersection(this._li, p00, p01) || this.hasInteriorIntersection(this._li, p10, p11)) {\n throw new RuntimeException('found non-noded intersection at ' + p00 + '-' + p01 + ' and ' + p10 + '-' + p11)\n }\n }\n }\n};\nNodingValidator.prototype.checkValid = function checkValid () {\n this.checkEndPtVertexIntersections();\n this.checkInteriorIntersections();\n this.checkCollapses();\n};\nNodingValidator.prototype.checkCollapses = function checkCollapses () {\n var this$1 = this;\n\n if (arguments.length === 0) {\n for (var i = this._segStrings.iterator(); i.hasNext();) {\n var ss = i.next();\n this$1.checkCollapses(ss);\n }\n } else if (arguments.length === 1) {\n var ss$1 = arguments[0];\n var pts = ss$1.getCoordinates();\n for (var i$1 = 0; i$1 < pts.length - 2; i$1++) {\n this$1.checkCollapse(pts[i$1], pts[i$1 + 1], pts[i$1 + 2]);\n }\n }\n};\nNodingValidator.prototype.hasInteriorIntersection = function hasInteriorIntersection (li, p0, p1) {\n for (var i = 0; i < li.getIntersectionNum(); i++) {\n var intPt = li.getIntersection(i);\n if (!(intPt.equals(p0) || intPt.equals(p1))) { return true }\n }\n return false\n};\nNodingValidator.prototype.checkCollapse = function checkCollapse (p0, p1, p2) {\n if (p0.equals(p2)) { throw new RuntimeException('found non-noded collapse at ' + NodingValidator.fact.createLineString([p0, p1, p2])) }\n};\nNodingValidator.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nNodingValidator.prototype.getClass = function getClass () {\n return NodingValidator\n};\nstaticAccessors$33.fact.get = function () { return new GeometryFactory() };\n\nObject.defineProperties( NodingValidator, staticAccessors$33 );\n\nvar HotPixel = function HotPixel () {\n this._li = null;\n this._pt = null;\n this._originalPt = null;\n this._ptScaled = null;\n this._p0Scaled = null;\n this._p1Scaled = null;\n this._scaleFactor = null;\n this._minx = null;\n this._maxx = null;\n this._miny = null;\n this._maxy = null;\n this._corner = new Array(4).fill(null);\n this._safeEnv = null;\n var pt = arguments[0];\n var scaleFactor = arguments[1];\n var li = arguments[2];\n this._originalPt = pt;\n this._pt = pt;\n this._scaleFactor = scaleFactor;\n this._li = li;\n if (scaleFactor <= 0) { throw new IllegalArgumentException('Scale factor must be non-zero') }\n if (scaleFactor !== 1.0) {\n this._pt = new Coordinate(this.scale(pt.x), this.scale(pt.y));\n this._p0Scaled = new Coordinate();\n this._p1Scaled = new Coordinate();\n }\n this.initCorners(this._pt);\n};\n\nvar staticAccessors$34 = { SAFE_ENV_EXPANSION_FACTOR: { configurable: true } };\nHotPixel.prototype.intersectsScaled = function intersectsScaled (p0, p1) {\n var segMinx = Math.min(p0.x, p1.x);\n var segMaxx = Math.max(p0.x, p1.x);\n var segMiny = Math.min(p0.y, p1.y);\n var segMaxy = Math.max(p0.y, p1.y);\n var isOutsidePixelEnv = this._maxx < segMinx || this._minx > segMaxx || this._maxy < segMiny || this._miny > segMaxy;\n if (isOutsidePixelEnv) { return false }\n var intersects = this.intersectsToleranceSquare(p0, p1);\n Assert.isTrue(!(isOutsidePixelEnv && intersects), 'Found bad envelope test');\n return intersects\n};\nHotPixel.prototype.initCorners = function initCorners (pt) {\n var tolerance = 0.5;\n this._minx = pt.x - tolerance;\n this._maxx = pt.x + tolerance;\n this._miny = pt.y - tolerance;\n this._maxy = pt.y + tolerance;\n this._corner[0] = new Coordinate(this._maxx, this._maxy);\n this._corner[1] = new Coordinate(this._minx, this._maxy);\n this._corner[2] = new Coordinate(this._minx, this._miny);\n this._corner[3] = new Coordinate(this._maxx, this._miny);\n};\nHotPixel.prototype.intersects = function intersects (p0, p1) {\n if (this._scaleFactor === 1.0) { return this.intersectsScaled(p0, p1) }\n this.copyScaled(p0, this._p0Scaled);\n this.copyScaled(p1, this._p1Scaled);\n return this.intersectsScaled(this._p0Scaled, this._p1Scaled)\n};\nHotPixel.prototype.scale = function scale (val) {\n return Math.round(val * this._scaleFactor)\n};\nHotPixel.prototype.getCoordinate = function getCoordinate () {\n return this._originalPt\n};\nHotPixel.prototype.copyScaled = function copyScaled (p, pScaled) {\n pScaled.x = this.scale(p.x);\n pScaled.y = this.scale(p.y);\n};\nHotPixel.prototype.getSafeEnvelope = function getSafeEnvelope () {\n if (this._safeEnv === null) {\n var safeTolerance = HotPixel.SAFE_ENV_EXPANSION_FACTOR / this._scaleFactor;\n this._safeEnv = new Envelope(this._originalPt.x - safeTolerance, this._originalPt.x + safeTolerance, this._originalPt.y - safeTolerance, this._originalPt.y + safeTolerance);\n }\n return this._safeEnv\n};\nHotPixel.prototype.intersectsPixelClosure = function intersectsPixelClosure (p0, p1) {\n this._li.computeIntersection(p0, p1, this._corner[0], this._corner[1]);\n if (this._li.hasIntersection()) { return true }\n this._li.computeIntersection(p0, p1, this._corner[1], this._corner[2]);\n if (this._li.hasIntersection()) { return true }\n this._li.computeIntersection(p0, p1, this._corner[2], this._corner[3]);\n if (this._li.hasIntersection()) { return true }\n this._li.computeIntersection(p0, p1, this._corner[3], this._corner[0]);\n if (this._li.hasIntersection()) { return true }\n return false\n};\nHotPixel.prototype.intersectsToleranceSquare = function intersectsToleranceSquare (p0, p1) {\n var intersectsLeft = false;\n var intersectsBottom = false;\n this._li.computeIntersection(p0, p1, this._corner[0], this._corner[1]);\n if (this._li.isProper()) { return true }\n this._li.computeIntersection(p0, p1, this._corner[1], this._corner[2]);\n if (this._li.isProper()) { return true }\n if (this._li.hasIntersection()) { intersectsLeft = true; }\n this._li.computeIntersection(p0, p1, this._corner[2], this._corner[3]);\n if (this._li.isProper()) { return true }\n if (this._li.hasIntersection()) { intersectsBottom = true; }\n this._li.computeIntersection(p0, p1, this._corner[3], this._corner[0]);\n if (this._li.isProper()) { return true }\n if (intersectsLeft && intersectsBottom) { return true }\n if (p0.equals(this._pt)) { return true }\n if (p1.equals(this._pt)) { return true }\n return false\n};\nHotPixel.prototype.addSnappedNode = function addSnappedNode (segStr, segIndex) {\n var p0 = segStr.getCoordinate(segIndex);\n var p1 = segStr.getCoordinate(segIndex + 1);\n if (this.intersects(p0, p1)) {\n segStr.addIntersection(this.getCoordinate(), segIndex);\n return true\n }\n return false\n};\nHotPixel.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nHotPixel.prototype.getClass = function getClass () {\n return HotPixel\n};\nstaticAccessors$34.SAFE_ENV_EXPANSION_FACTOR.get = function () { return 0.75 };\n\nObject.defineProperties( HotPixel, staticAccessors$34 );\n\nvar MonotoneChainSelectAction = function MonotoneChainSelectAction () {\n this.tempEnv1 = new Envelope();\n this.selectedSegment = new LineSegment();\n};\nMonotoneChainSelectAction.prototype.select = function select () {\n if (arguments.length === 1) {\n // const seg = arguments[0]\n } else if (arguments.length === 2) {\n var mc = arguments[0];\n var startIndex = arguments[1];\n mc.getLineSegment(startIndex, this.selectedSegment);\n this.select(this.selectedSegment);\n }\n};\nMonotoneChainSelectAction.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nMonotoneChainSelectAction.prototype.getClass = function getClass () {\n return MonotoneChainSelectAction\n};\n\nvar MCIndexPointSnapper = function MCIndexPointSnapper () {\n this._index = null;\n var index = arguments[0];\n this._index = index;\n};\n\nvar staticAccessors$35 = { HotPixelSnapAction: { configurable: true } };\nMCIndexPointSnapper.prototype.snap = function snap () {\n if (arguments.length === 1) {\n var hotPixel = arguments[0];\n return this.snap(hotPixel, null, -1)\n } else if (arguments.length === 3) {\n var hotPixel$1 = arguments[0];\n var parentEdge = arguments[1];\n var hotPixelVertexIndex = arguments[2];\n var pixelEnv = hotPixel$1.getSafeEnvelope();\n var hotPixelSnapAction = new HotPixelSnapAction(hotPixel$1, parentEdge, hotPixelVertexIndex);\n this._index.query(pixelEnv, {\n interfaces_: function () {\n return [ItemVisitor]\n },\n visitItem: function (item) {\n var testChain = item;\n testChain.select(pixelEnv, hotPixelSnapAction);\n }\n });\n return hotPixelSnapAction.isNodeAdded()\n }\n};\nMCIndexPointSnapper.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nMCIndexPointSnapper.prototype.getClass = function getClass () {\n return MCIndexPointSnapper\n};\nstaticAccessors$35.HotPixelSnapAction.get = function () { return HotPixelSnapAction };\n\nObject.defineProperties( MCIndexPointSnapper, staticAccessors$35 );\n\nvar HotPixelSnapAction = (function (MonotoneChainSelectAction$$1) {\n function HotPixelSnapAction () {\n MonotoneChainSelectAction$$1.call(this);\n this._hotPixel = null;\n this._parentEdge = null;\n this._hotPixelVertexIndex = null;\n this._isNodeAdded = false;\n var hotPixel = arguments[0];\n var parentEdge = arguments[1];\n var hotPixelVertexIndex = arguments[2];\n this._hotPixel = hotPixel;\n this._parentEdge = parentEdge;\n this._hotPixelVertexIndex = hotPixelVertexIndex;\n }\n\n if ( MonotoneChainSelectAction$$1 ) HotPixelSnapAction.__proto__ = MonotoneChainSelectAction$$1;\n HotPixelSnapAction.prototype = Object.create( MonotoneChainSelectAction$$1 && MonotoneChainSelectAction$$1.prototype );\n HotPixelSnapAction.prototype.constructor = HotPixelSnapAction;\n HotPixelSnapAction.prototype.isNodeAdded = function isNodeAdded () {\n return this._isNodeAdded\n };\n HotPixelSnapAction.prototype.select = function select () {\n if (arguments.length === 2) {\n var mc = arguments[0];\n var startIndex = arguments[1];\n var ss = mc.getContext();\n if (this._parentEdge !== null) {\n if (ss === this._parentEdge && startIndex === this._hotPixelVertexIndex) { return null }\n }\n this._isNodeAdded = this._hotPixel.addSnappedNode(ss, startIndex);\n } else { return MonotoneChainSelectAction$$1.prototype.select.apply(this, arguments) }\n };\n HotPixelSnapAction.prototype.interfaces_ = function interfaces_ () {\n return []\n };\n HotPixelSnapAction.prototype.getClass = function getClass () {\n return HotPixelSnapAction\n };\n\n return HotPixelSnapAction;\n}(MonotoneChainSelectAction));\n\nvar InteriorIntersectionFinderAdder = function InteriorIntersectionFinderAdder () {\n this._li = null;\n this._interiorIntersections = null;\n var li = arguments[0];\n this._li = li;\n this._interiorIntersections = new ArrayList();\n};\nInteriorIntersectionFinderAdder.prototype.processIntersections = function processIntersections (e0, segIndex0, e1, segIndex1) {\n var this$1 = this;\n\n if (e0 === e1 && segIndex0 === segIndex1) { return null }\n var p00 = e0.getCoordinates()[segIndex0];\n var p01 = e0.getCoordinates()[segIndex0 + 1];\n var p10 = e1.getCoordinates()[segIndex1];\n var p11 = e1.getCoordinates()[segIndex1 + 1];\n this._li.computeIntersection(p00, p01, p10, p11);\n if (this._li.hasIntersection()) {\n if (this._li.isInteriorIntersection()) {\n for (var intIndex = 0; intIndex < this._li.getIntersectionNum(); intIndex++) {\n this$1._interiorIntersections.add(this$1._li.getIntersection(intIndex));\n }\n e0.addIntersections(this._li, segIndex0, 0);\n e1.addIntersections(this._li, segIndex1, 1);\n }\n }\n};\nInteriorIntersectionFinderAdder.prototype.isDone = function isDone () {\n return false\n};\nInteriorIntersectionFinderAdder.prototype.getInteriorIntersections = function getInteriorIntersections () {\n return this._interiorIntersections\n};\nInteriorIntersectionFinderAdder.prototype.interfaces_ = function interfaces_ () {\n return [SegmentIntersector]\n};\nInteriorIntersectionFinderAdder.prototype.getClass = function getClass () {\n return InteriorIntersectionFinderAdder\n};\n\nvar MCIndexSnapRounder = function MCIndexSnapRounder () {\n this._pm = null;\n this._li = null;\n this._scaleFactor = null;\n this._noder = null;\n this._pointSnapper = null;\n this._nodedSegStrings = null;\n var pm = arguments[0];\n this._pm = pm;\n this._li = new RobustLineIntersector();\n this._li.setPrecisionModel(pm);\n this._scaleFactor = pm.getScale();\n};\nMCIndexSnapRounder.prototype.checkCorrectness = function checkCorrectness (inputSegmentStrings) {\n var resultSegStrings = NodedSegmentString.getNodedSubstrings(inputSegmentStrings);\n var nv = new NodingValidator(resultSegStrings);\n try {\n nv.checkValid();\n } catch (ex) {\n if (ex instanceof Exception) {\n ex.printStackTrace();\n } else { throw ex }\n } finally {}\n};\nMCIndexSnapRounder.prototype.getNodedSubstrings = function getNodedSubstrings () {\n return NodedSegmentString.getNodedSubstrings(this._nodedSegStrings)\n};\nMCIndexSnapRounder.prototype.snapRound = function snapRound (segStrings, li) {\n var intersections = this.findInteriorIntersections(segStrings, li);\n this.computeIntersectionSnaps(intersections);\n this.computeVertexSnaps(segStrings);\n};\nMCIndexSnapRounder.prototype.findInteriorIntersections = function findInteriorIntersections (segStrings, li) {\n var intFinderAdder = new InteriorIntersectionFinderAdder(li);\n this._noder.setSegmentIntersector(intFinderAdder);\n this._noder.computeNodes(segStrings);\n return intFinderAdder.getInteriorIntersections()\n};\nMCIndexSnapRounder.prototype.computeVertexSnaps = function computeVertexSnaps () {\n var this$1 = this;\n\n if (hasInterface(arguments[0], Collection)) {\n var edges = arguments[0];\n for (var i0 = edges.iterator(); i0.hasNext();) {\n var edge0 = i0.next();\n this$1.computeVertexSnaps(edge0);\n }\n } else if (arguments[0] instanceof NodedSegmentString) {\n var e = arguments[0];\n var pts0 = e.getCoordinates();\n for (var i = 0; i < pts0.length; i++) {\n var hotPixel = new HotPixel(pts0[i], this$1._scaleFactor, this$1._li);\n var isNodeAdded = this$1._pointSnapper.snap(hotPixel, e, i);\n if (isNodeAdded) {\n e.addIntersection(pts0[i], i);\n }\n }\n }\n};\nMCIndexSnapRounder.prototype.computeNodes = function computeNodes (inputSegmentStrings) {\n this._nodedSegStrings = inputSegmentStrings;\n this._noder = new MCIndexNoder();\n this._pointSnapper = new MCIndexPointSnapper(this._noder.getIndex());\n this.snapRound(inputSegmentStrings, this._li);\n};\nMCIndexSnapRounder.prototype.computeIntersectionSnaps = function computeIntersectionSnaps (snapPts) {\n var this$1 = this;\n\n for (var it = snapPts.iterator(); it.hasNext();) {\n var snapPt = it.next();\n var hotPixel = new HotPixel(snapPt, this$1._scaleFactor, this$1._li);\n this$1._pointSnapper.snap(hotPixel);\n }\n};\nMCIndexSnapRounder.prototype.interfaces_ = function interfaces_ () {\n return [Noder]\n};\nMCIndexSnapRounder.prototype.getClass = function getClass () {\n return MCIndexSnapRounder\n};\n\nvar BufferOp = function BufferOp () {\n this._argGeom = null;\n this._distance = null;\n this._bufParams = new BufferParameters();\n this._resultGeometry = null;\n this._saveException = null;\n if (arguments.length === 1) {\n var g = arguments[0];\n this._argGeom = g;\n } else if (arguments.length === 2) {\n var g$1 = arguments[0];\n var bufParams = arguments[1];\n this._argGeom = g$1;\n this._bufParams = bufParams;\n }\n};\n\nvar staticAccessors$32 = { CAP_ROUND: { configurable: true },CAP_BUTT: { configurable: true },CAP_FLAT: { configurable: true },CAP_SQUARE: { configurable: true },MAX_PRECISION_DIGITS: { configurable: true } };\nBufferOp.prototype.bufferFixedPrecision = function bufferFixedPrecision (fixedPM) {\n var noder = new ScaledNoder(new MCIndexSnapRounder(new PrecisionModel(1.0)), fixedPM.getScale());\n var bufBuilder = new BufferBuilder(this._bufParams);\n bufBuilder.setWorkingPrecisionModel(fixedPM);\n bufBuilder.setNoder(noder);\n this._resultGeometry = bufBuilder.buffer(this._argGeom, this._distance);\n};\nBufferOp.prototype.bufferReducedPrecision = function bufferReducedPrecision () {\n var this$1 = this;\n\n if (arguments.length === 0) {\n for (var precDigits = BufferOp.MAX_PRECISION_DIGITS; precDigits >= 0; precDigits--) {\n try {\n this$1.bufferReducedPrecision(precDigits);\n } catch (ex) {\n if (ex instanceof TopologyException) {\n this$1._saveException = ex;\n } else { throw ex }\n } finally {}\n if (this$1._resultGeometry !== null) { return null }\n }\n throw this._saveException\n } else if (arguments.length === 1) {\n var precisionDigits = arguments[0];\n var sizeBasedScaleFactor = BufferOp.precisionScaleFactor(this._argGeom, this._distance, precisionDigits);\n var fixedPM = new PrecisionModel(sizeBasedScaleFactor);\n this.bufferFixedPrecision(fixedPM);\n }\n};\nBufferOp.prototype.computeGeometry = function computeGeometry () {\n this.bufferOriginalPrecision();\n if (this._resultGeometry !== null) { return null }\n var argPM = this._argGeom.getFactory().getPrecisionModel();\n if (argPM.getType() === PrecisionModel.FIXED) { this.bufferFixedPrecision(argPM); } else { this.bufferReducedPrecision(); }\n};\nBufferOp.prototype.setQuadrantSegments = function setQuadrantSegments (quadrantSegments) {\n this._bufParams.setQuadrantSegments(quadrantSegments);\n};\nBufferOp.prototype.bufferOriginalPrecision = function bufferOriginalPrecision () {\n try {\n var bufBuilder = new BufferBuilder(this._bufParams);\n this._resultGeometry = bufBuilder.buffer(this._argGeom, this._distance);\n } catch (ex) {\n if (ex instanceof RuntimeException) {\n this._saveException = ex;\n } else { throw ex }\n } finally {}\n};\nBufferOp.prototype.getResultGeometry = function getResultGeometry (distance) {\n this._distance = distance;\n this.computeGeometry();\n return this._resultGeometry\n};\nBufferOp.prototype.setEndCapStyle = function setEndCapStyle (endCapStyle) {\n this._bufParams.setEndCapStyle(endCapStyle);\n};\nBufferOp.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nBufferOp.prototype.getClass = function getClass () {\n return BufferOp\n};\nBufferOp.bufferOp = function bufferOp () {\n if (arguments.length === 2) {\n var g = arguments[0];\n var distance = arguments[1];\n var gBuf = new BufferOp(g);\n var geomBuf = gBuf.getResultGeometry(distance);\n return geomBuf\n } else if (arguments.length === 3) {\n if (Number.isInteger(arguments[2]) && (arguments[0] instanceof Geometry && typeof arguments[1] === 'number')) {\n var g$1 = arguments[0];\n var distance$1 = arguments[1];\n var quadrantSegments = arguments[2];\n var bufOp = new BufferOp(g$1);\n bufOp.setQuadrantSegments(quadrantSegments);\n var geomBuf$1 = bufOp.getResultGeometry(distance$1);\n return geomBuf$1\n } else if (arguments[2] instanceof BufferParameters && (arguments[0] instanceof Geometry && typeof arguments[1] === 'number')) {\n var g$2 = arguments[0];\n var distance$2 = arguments[1];\n var params = arguments[2];\n var bufOp$1 = new BufferOp(g$2, params);\n var geomBuf$2 = bufOp$1.getResultGeometry(distance$2);\n return geomBuf$2\n }\n } else if (arguments.length === 4) {\n var g$3 = arguments[0];\n var distance$3 = arguments[1];\n var quadrantSegments$1 = arguments[2];\n var endCapStyle = arguments[3];\n var bufOp$2 = new BufferOp(g$3);\n bufOp$2.setQuadrantSegments(quadrantSegments$1);\n bufOp$2.setEndCapStyle(endCapStyle);\n var geomBuf$3 = bufOp$2.getResultGeometry(distance$3);\n return geomBuf$3\n }\n};\nBufferOp.precisionScaleFactor = function precisionScaleFactor (g, distance, maxPrecisionDigits) {\n var env = g.getEnvelopeInternal();\n var envMax = MathUtil.max(Math.abs(env.getMaxX()), Math.abs(env.getMaxY()), Math.abs(env.getMinX()), Math.abs(env.getMinY()));\n var expandByDistance = distance > 0.0 ? distance : 0.0;\n var bufEnvMax = envMax + 2 * expandByDistance;\n var bufEnvPrecisionDigits = Math.trunc(Math.log(bufEnvMax) / Math.log(10) + 1.0);\n var minUnitLog10 = maxPrecisionDigits - bufEnvPrecisionDigits;\n var scaleFactor = Math.pow(10.0, minUnitLog10);\n return scaleFactor\n};\nstaticAccessors$32.CAP_ROUND.get = function () { return BufferParameters.CAP_ROUND };\nstaticAccessors$32.CAP_BUTT.get = function () { return BufferParameters.CAP_FLAT };\nstaticAccessors$32.CAP_FLAT.get = function () { return BufferParameters.CAP_FLAT };\nstaticAccessors$32.CAP_SQUARE.get = function () { return BufferParameters.CAP_SQUARE };\nstaticAccessors$32.MAX_PRECISION_DIGITS.get = function () { return 12 };\n\nObject.defineProperties( BufferOp, staticAccessors$32 );\n\nvar PointPairDistance = function PointPairDistance () {\n this._pt = [new Coordinate(), new Coordinate()];\n this._distance = Double.NaN;\n this._isNull = true;\n};\nPointPairDistance.prototype.getCoordinates = function getCoordinates () {\n return this._pt\n};\nPointPairDistance.prototype.getCoordinate = function getCoordinate (i) {\n return this._pt[i]\n};\nPointPairDistance.prototype.setMinimum = function setMinimum () {\n if (arguments.length === 1) {\n var ptDist = arguments[0];\n this.setMinimum(ptDist._pt[0], ptDist._pt[1]);\n } else if (arguments.length === 2) {\n var p0 = arguments[0];\n var p1 = arguments[1];\n if (this._isNull) {\n this.initialize(p0, p1);\n return null\n }\n var dist = p0.distance(p1);\n if (dist < this._distance) { this.initialize(p0, p1, dist); }\n }\n};\nPointPairDistance.prototype.initialize = function initialize () {\n if (arguments.length === 0) {\n this._isNull = true;\n } else if (arguments.length === 2) {\n var p0 = arguments[0];\n var p1 = arguments[1];\n this._pt[0].setCoordinate(p0);\n this._pt[1].setCoordinate(p1);\n this._distance = p0.distance(p1);\n this._isNull = false;\n } else if (arguments.length === 3) {\n var p0$1 = arguments[0];\n var p1$1 = arguments[1];\n var distance = arguments[2];\n this._pt[0].setCoordinate(p0$1);\n this._pt[1].setCoordinate(p1$1);\n this._distance = distance;\n this._isNull = false;\n }\n};\nPointPairDistance.prototype.getDistance = function getDistance () {\n return this._distance\n};\nPointPairDistance.prototype.setMaximum = function setMaximum () {\n if (arguments.length === 1) {\n var ptDist = arguments[0];\n this.setMaximum(ptDist._pt[0], ptDist._pt[1]);\n } else if (arguments.length === 2) {\n var p0 = arguments[0];\n var p1 = arguments[1];\n if (this._isNull) {\n this.initialize(p0, p1);\n return null\n }\n var dist = p0.distance(p1);\n if (dist > this._distance) { this.initialize(p0, p1, dist); }\n }\n};\nPointPairDistance.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nPointPairDistance.prototype.getClass = function getClass () {\n return PointPairDistance\n};\n\nvar DistanceToPointFinder = function DistanceToPointFinder () {};\n\nDistanceToPointFinder.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nDistanceToPointFinder.prototype.getClass = function getClass () {\n return DistanceToPointFinder\n};\nDistanceToPointFinder.computeDistance = function computeDistance () {\n if (arguments[2] instanceof PointPairDistance && (arguments[0] instanceof LineString && arguments[1] instanceof Coordinate)) {\n var line = arguments[0];\n var pt = arguments[1];\n var ptDist = arguments[2];\n var coords = line.getCoordinates();\n var tempSegment = new LineSegment();\n for (var i = 0; i < coords.length - 1; i++) {\n tempSegment.setCoordinates(coords[i], coords[i + 1]);\n var closestPt = tempSegment.closestPoint(pt);\n ptDist.setMinimum(closestPt, pt);\n }\n } else if (arguments[2] instanceof PointPairDistance && (arguments[0] instanceof Polygon && arguments[1] instanceof Coordinate)) {\n var poly = arguments[0];\n var pt$1 = arguments[1];\n var ptDist$1 = arguments[2];\n DistanceToPointFinder.computeDistance(poly.getExteriorRing(), pt$1, ptDist$1);\n for (var i$1 = 0; i$1 < poly.getNumInteriorRing(); i$1++) {\n DistanceToPointFinder.computeDistance(poly.getInteriorRingN(i$1), pt$1, ptDist$1);\n }\n } else if (arguments[2] instanceof PointPairDistance && (arguments[0] instanceof Geometry && arguments[1] instanceof Coordinate)) {\n var geom = arguments[0];\n var pt$2 = arguments[1];\n var ptDist$2 = arguments[2];\n if (geom instanceof LineString) {\n DistanceToPointFinder.computeDistance(geom, pt$2, ptDist$2);\n } else if (geom instanceof Polygon) {\n DistanceToPointFinder.computeDistance(geom, pt$2, ptDist$2);\n } else if (geom instanceof GeometryCollection) {\n var gc = geom;\n for (var i$2 = 0; i$2 < gc.getNumGeometries(); i$2++) {\n var g = gc.getGeometryN(i$2);\n DistanceToPointFinder.computeDistance(g, pt$2, ptDist$2);\n }\n } else {\n ptDist$2.setMinimum(geom.getCoordinate(), pt$2);\n }\n } else if (arguments[2] instanceof PointPairDistance && (arguments[0] instanceof LineSegment && arguments[1] instanceof Coordinate)) {\n var segment = arguments[0];\n var pt$3 = arguments[1];\n var ptDist$3 = arguments[2];\n var closestPt$1 = segment.closestPoint(pt$3);\n ptDist$3.setMinimum(closestPt$1, pt$3);\n }\n};\n\nvar BufferCurveMaximumDistanceFinder = function BufferCurveMaximumDistanceFinder (inputGeom) {\n this._maxPtDist = new PointPairDistance();\n this._inputGeom = inputGeom || null;\n};\n\nvar staticAccessors$36 = { MaxPointDistanceFilter: { configurable: true },MaxMidpointDistanceFilter: { configurable: true } };\nBufferCurveMaximumDistanceFinder.prototype.computeMaxMidpointDistance = function computeMaxMidpointDistance (curve) {\n var distFilter = new MaxMidpointDistanceFilter(this._inputGeom);\n curve.apply(distFilter);\n this._maxPtDist.setMaximum(distFilter.getMaxPointDistance());\n};\nBufferCurveMaximumDistanceFinder.prototype.computeMaxVertexDistance = function computeMaxVertexDistance (curve) {\n var distFilter = new MaxPointDistanceFilter(this._inputGeom);\n curve.apply(distFilter);\n this._maxPtDist.setMaximum(distFilter.getMaxPointDistance());\n};\nBufferCurveMaximumDistanceFinder.prototype.findDistance = function findDistance (bufferCurve) {\n this.computeMaxVertexDistance(bufferCurve);\n this.computeMaxMidpointDistance(bufferCurve);\n return this._maxPtDist.getDistance()\n};\nBufferCurveMaximumDistanceFinder.prototype.getDistancePoints = function getDistancePoints () {\n return this._maxPtDist\n};\nBufferCurveMaximumDistanceFinder.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nBufferCurveMaximumDistanceFinder.prototype.getClass = function getClass () {\n return BufferCurveMaximumDistanceFinder\n};\nstaticAccessors$36.MaxPointDistanceFilter.get = function () { return MaxPointDistanceFilter };\nstaticAccessors$36.MaxMidpointDistanceFilter.get = function () { return MaxMidpointDistanceFilter };\n\nObject.defineProperties( BufferCurveMaximumDistanceFinder, staticAccessors$36 );\n\nvar MaxPointDistanceFilter = function MaxPointDistanceFilter (geom) {\n this._maxPtDist = new PointPairDistance();\n this._minPtDist = new PointPairDistance();\n this._geom = geom || null;\n};\nMaxPointDistanceFilter.prototype.filter = function filter (pt) {\n this._minPtDist.initialize();\n DistanceToPointFinder.computeDistance(this._geom, pt, this._minPtDist);\n this._maxPtDist.setMaximum(this._minPtDist);\n};\nMaxPointDistanceFilter.prototype.getMaxPointDistance = function getMaxPointDistance () {\n return this._maxPtDist\n};\nMaxPointDistanceFilter.prototype.interfaces_ = function interfaces_ () {\n return [CoordinateFilter]\n};\nMaxPointDistanceFilter.prototype.getClass = function getClass () {\n return MaxPointDistanceFilter\n};\n\nvar MaxMidpointDistanceFilter = function MaxMidpointDistanceFilter (geom) {\n this._maxPtDist = new PointPairDistance();\n this._minPtDist = new PointPairDistance();\n this._geom = geom || null;\n};\nMaxMidpointDistanceFilter.prototype.filter = function filter (seq, index) {\n if (index === 0) { return null }\n var p0 = seq.getCoordinate(index - 1);\n var p1 = seq.getCoordinate(index);\n var midPt = new Coordinate((p0.x + p1.x) / 2, (p0.y + p1.y) / 2);\n this._minPtDist.initialize();\n DistanceToPointFinder.computeDistance(this._geom, midPt, this._minPtDist);\n this._maxPtDist.setMaximum(this._minPtDist);\n};\nMaxMidpointDistanceFilter.prototype.isDone = function isDone () {\n return false\n};\nMaxMidpointDistanceFilter.prototype.isGeometryChanged = function isGeometryChanged () {\n return false\n};\nMaxMidpointDistanceFilter.prototype.getMaxPointDistance = function getMaxPointDistance () {\n return this._maxPtDist\n};\nMaxMidpointDistanceFilter.prototype.interfaces_ = function interfaces_ () {\n return [CoordinateSequenceFilter]\n};\nMaxMidpointDistanceFilter.prototype.getClass = function getClass () {\n return MaxMidpointDistanceFilter\n};\n\nvar PolygonExtracter = function PolygonExtracter (comps) {\n this._comps = comps || null;\n};\nPolygonExtracter.prototype.filter = function filter (geom) {\n if (geom instanceof Polygon) { this._comps.add(geom); }\n};\nPolygonExtracter.prototype.interfaces_ = function interfaces_ () {\n return [GeometryFilter]\n};\nPolygonExtracter.prototype.getClass = function getClass () {\n return PolygonExtracter\n};\nPolygonExtracter.getPolygons = function getPolygons () {\n if (arguments.length === 1) {\n var geom = arguments[0];\n return PolygonExtracter.getPolygons(geom, new ArrayList())\n } else if (arguments.length === 2) {\n var geom$1 = arguments[0];\n var list = arguments[1];\n if (geom$1 instanceof Polygon) {\n list.add(geom$1);\n } else if (geom$1 instanceof GeometryCollection) {\n geom$1.apply(new PolygonExtracter(list));\n }\n return list\n }\n};\n\nvar LinearComponentExtracter = function LinearComponentExtracter () {\n this._lines = null;\n this._isForcedToLineString = false;\n if (arguments.length === 1) {\n var lines = arguments[0];\n this._lines = lines;\n } else if (arguments.length === 2) {\n var lines$1 = arguments[0];\n var isForcedToLineString = arguments[1];\n this._lines = lines$1;\n this._isForcedToLineString = isForcedToLineString;\n }\n};\nLinearComponentExtracter.prototype.filter = function filter (geom) {\n if (this._isForcedToLineString && geom instanceof LinearRing) {\n var line = geom.getFactory().createLineString(geom.getCoordinateSequence());\n this._lines.add(line);\n return null\n }\n if (geom instanceof LineString) { this._lines.add(geom); }\n};\nLinearComponentExtracter.prototype.setForceToLineString = function setForceToLineString (isForcedToLineString) {\n this._isForcedToLineString = isForcedToLineString;\n};\nLinearComponentExtracter.prototype.interfaces_ = function interfaces_ () {\n return [GeometryComponentFilter]\n};\nLinearComponentExtracter.prototype.getClass = function getClass () {\n return LinearComponentExtracter\n};\nLinearComponentExtracter.getGeometry = function getGeometry () {\n if (arguments.length === 1) {\n var geom = arguments[0];\n return geom.getFactory().buildGeometry(LinearComponentExtracter.getLines(geom))\n } else if (arguments.length === 2) {\n var geom$1 = arguments[0];\n var forceToLineString = arguments[1];\n return geom$1.getFactory().buildGeometry(LinearComponentExtracter.getLines(geom$1, forceToLineString))\n }\n};\nLinearComponentExtracter.getLines = function getLines () {\n if (arguments.length === 1) {\n var geom = arguments[0];\n return LinearComponentExtracter.getLines(geom, false)\n } else if (arguments.length === 2) {\n if (hasInterface(arguments[0], Collection) && hasInterface(arguments[1], Collection)) {\n var geoms = arguments[0];\n var lines$1 = arguments[1];\n for (var i = geoms.iterator(); i.hasNext();) {\n var g = i.next();\n LinearComponentExtracter.getLines(g, lines$1);\n }\n return lines$1\n } else if (arguments[0] instanceof Geometry && typeof arguments[1] === 'boolean') {\n var geom$1 = arguments[0];\n var forceToLineString = arguments[1];\n var lines = new ArrayList();\n geom$1.apply(new LinearComponentExtracter(lines, forceToLineString));\n return lines\n } else if (arguments[0] instanceof Geometry && hasInterface(arguments[1], Collection)) {\n var geom$2 = arguments[0];\n var lines$2 = arguments[1];\n if (geom$2 instanceof LineString) {\n lines$2.add(geom$2);\n } else {\n geom$2.apply(new LinearComponentExtracter(lines$2));\n }\n return lines$2\n }\n } else if (arguments.length === 3) {\n if (typeof arguments[2] === 'boolean' && (hasInterface(arguments[0], Collection) && hasInterface(arguments[1], Collection))) {\n var geoms$1 = arguments[0];\n var lines$3 = arguments[1];\n var forceToLineString$1 = arguments[2];\n for (var i$1 = geoms$1.iterator(); i$1.hasNext();) {\n var g$1 = i$1.next();\n LinearComponentExtracter.getLines(g$1, lines$3, forceToLineString$1);\n }\n return lines$3\n } else if (typeof arguments[2] === 'boolean' && (arguments[0] instanceof Geometry && hasInterface(arguments[1], Collection))) {\n var geom$3 = arguments[0];\n var lines$4 = arguments[1];\n var forceToLineString$2 = arguments[2];\n geom$3.apply(new LinearComponentExtracter(lines$4, forceToLineString$2));\n return lines$4\n }\n }\n};\n\nvar PointLocator = function PointLocator () {\n this._boundaryRule = BoundaryNodeRule.OGC_SFS_BOUNDARY_RULE;\n this._isIn = null;\n this._numBoundaries = null;\n if (arguments.length === 0) {} else if (arguments.length === 1) {\n var boundaryRule = arguments[0];\n if (boundaryRule === null) { throw new IllegalArgumentException('Rule must be non-null') }\n this._boundaryRule = boundaryRule;\n }\n};\nPointLocator.prototype.locateInternal = function locateInternal () {\n var this$1 = this;\n\n if (arguments[0] instanceof Coordinate && arguments[1] instanceof Polygon) {\n var p = arguments[0];\n var poly = arguments[1];\n if (poly.isEmpty()) { return Location.EXTERIOR }\n var shell = poly.getExteriorRing();\n var shellLoc = this.locateInPolygonRing(p, shell);\n if (shellLoc === Location.EXTERIOR) { return Location.EXTERIOR }\n if (shellLoc === Location.BOUNDARY) { return Location.BOUNDARY }\n for (var i = 0; i < poly.getNumInteriorRing(); i++) {\n var hole = poly.getInteriorRingN(i);\n var holeLoc = this$1.locateInPolygonRing(p, hole);\n if (holeLoc === Location.INTERIOR) { return Location.EXTERIOR }\n if (holeLoc === Location.BOUNDARY) { return Location.BOUNDARY }\n }\n return Location.INTERIOR\n } else if (arguments[0] instanceof Coordinate && arguments[1] instanceof LineString) {\n var p$1 = arguments[0];\n var l = arguments[1];\n if (!l.getEnvelopeInternal().intersects(p$1)) { return Location.EXTERIOR }\n var pt = l.getCoordinates();\n if (!l.isClosed()) {\n if (p$1.equals(pt[0]) || p$1.equals(pt[pt.length - 1])) {\n return Location.BOUNDARY\n }\n }\n if (CGAlgorithms.isOnLine(p$1, pt)) { return Location.INTERIOR }\n return Location.EXTERIOR\n } else if (arguments[0] instanceof Coordinate && arguments[1] instanceof Point) {\n var p$2 = arguments[0];\n var pt$1 = arguments[1];\n var ptCoord = pt$1.getCoordinate();\n if (ptCoord.equals2D(p$2)) { return Location.INTERIOR }\n return Location.EXTERIOR\n }\n};\nPointLocator.prototype.locateInPolygonRing = function locateInPolygonRing (p, ring) {\n if (!ring.getEnvelopeInternal().intersects(p)) { return Location.EXTERIOR }\n return CGAlgorithms.locatePointInRing(p, ring.getCoordinates())\n};\nPointLocator.prototype.intersects = function intersects (p, geom) {\n return this.locate(p, geom) !== Location.EXTERIOR\n};\nPointLocator.prototype.updateLocationInfo = function updateLocationInfo (loc) {\n if (loc === Location.INTERIOR) { this._isIn = true; }\n if (loc === Location.BOUNDARY) { this._numBoundaries++; }\n};\nPointLocator.prototype.computeLocation = function computeLocation (p, geom) {\n var this$1 = this;\n\n if (geom instanceof Point) {\n this.updateLocationInfo(this.locateInternal(p, geom));\n }\n if (geom instanceof LineString) {\n this.updateLocationInfo(this.locateInternal(p, geom));\n } else if (geom instanceof Polygon) {\n this.updateLocationInfo(this.locateInternal(p, geom));\n } else if (geom instanceof MultiLineString) {\n var ml = geom;\n for (var i = 0; i < ml.getNumGeometries(); i++) {\n var l = ml.getGeometryN(i);\n this$1.updateLocationInfo(this$1.locateInternal(p, l));\n }\n } else if (geom instanceof MultiPolygon) {\n var mpoly = geom;\n for (var i$1 = 0; i$1 < mpoly.getNumGeometries(); i$1++) {\n var poly = mpoly.getGeometryN(i$1);\n this$1.updateLocationInfo(this$1.locateInternal(p, poly));\n }\n } else if (geom instanceof GeometryCollection) {\n var geomi = new GeometryCollectionIterator(geom);\n while (geomi.hasNext()) {\n var g2 = geomi.next();\n if (g2 !== geom) { this$1.computeLocation(p, g2); }\n }\n }\n};\nPointLocator.prototype.locate = function locate (p, geom) {\n if (geom.isEmpty()) { return Location.EXTERIOR }\n if (geom instanceof LineString) {\n return this.locateInternal(p, geom)\n } else if (geom instanceof Polygon) {\n return this.locateInternal(p, geom)\n }\n this._isIn = false;\n this._numBoundaries = 0;\n this.computeLocation(p, geom);\n if (this._boundaryRule.isInBoundary(this._numBoundaries)) { return Location.BOUNDARY }\n if (this._numBoundaries > 0 || this._isIn) { return Location.INTERIOR }\n return Location.EXTERIOR\n};\nPointLocator.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nPointLocator.prototype.getClass = function getClass () {\n return PointLocator\n};\n\nvar GeometryLocation = function GeometryLocation () {\n this._component = null;\n this._segIndex = null;\n this._pt = null;\n if (arguments.length === 2) {\n var component = arguments[0];\n var pt = arguments[1];\n GeometryLocation.call(this, component, GeometryLocation.INSIDE_AREA, pt);\n } else if (arguments.length === 3) {\n var component$1 = arguments[0];\n var segIndex = arguments[1];\n var pt$1 = arguments[2];\n this._component = component$1;\n this._segIndex = segIndex;\n this._pt = pt$1;\n }\n};\n\nvar staticAccessors$38 = { INSIDE_AREA: { configurable: true } };\nGeometryLocation.prototype.isInsideArea = function isInsideArea () {\n return this._segIndex === GeometryLocation.INSIDE_AREA\n};\nGeometryLocation.prototype.getCoordinate = function getCoordinate () {\n return this._pt\n};\nGeometryLocation.prototype.getGeometryComponent = function getGeometryComponent () {\n return this._component\n};\nGeometryLocation.prototype.getSegmentIndex = function getSegmentIndex () {\n return this._segIndex\n};\nGeometryLocation.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nGeometryLocation.prototype.getClass = function getClass () {\n return GeometryLocation\n};\nstaticAccessors$38.INSIDE_AREA.get = function () { return -1 };\n\nObject.defineProperties( GeometryLocation, staticAccessors$38 );\n\nvar PointExtracter = function PointExtracter (pts) {\n this._pts = pts || null;\n};\nPointExtracter.prototype.filter = function filter (geom) {\n if (geom instanceof Point) { this._pts.add(geom); }\n};\nPointExtracter.prototype.interfaces_ = function interfaces_ () {\n return [GeometryFilter]\n};\nPointExtracter.prototype.getClass = function getClass () {\n return PointExtracter\n};\nPointExtracter.getPoints = function getPoints () {\n if (arguments.length === 1) {\n var geom = arguments[0];\n if (geom instanceof Point) {\n return Collections.singletonList(geom)\n }\n return PointExtracter.getPoints(geom, new ArrayList())\n } else if (arguments.length === 2) {\n var geom$1 = arguments[0];\n var list = arguments[1];\n if (geom$1 instanceof Point) {\n list.add(geom$1);\n } else if (geom$1 instanceof GeometryCollection) {\n geom$1.apply(new PointExtracter(list));\n }\n return list\n }\n};\n\nvar ConnectedElementLocationFilter = function ConnectedElementLocationFilter () {\n this._locations = null;\n var locations = arguments[0];\n this._locations = locations;\n};\nConnectedElementLocationFilter.prototype.filter = function filter (geom) {\n if (geom instanceof Point || geom instanceof LineString || geom instanceof Polygon) { this._locations.add(new GeometryLocation(geom, 0, geom.getCoordinate())); }\n};\nConnectedElementLocationFilter.prototype.interfaces_ = function interfaces_ () {\n return [GeometryFilter]\n};\nConnectedElementLocationFilter.prototype.getClass = function getClass () {\n return ConnectedElementLocationFilter\n};\nConnectedElementLocationFilter.getLocations = function getLocations (geom) {\n var locations = new ArrayList();\n geom.apply(new ConnectedElementLocationFilter(locations));\n return locations\n};\n\nvar DistanceOp = function DistanceOp () {\n this._geom = null;\n this._terminateDistance = 0.0;\n this._ptLocator = new PointLocator();\n this._minDistanceLocation = null;\n this._minDistance = Double.MAX_VALUE;\n if (arguments.length === 2) {\n var g0 = arguments[0];\n var g1 = arguments[1];\n this._geom = [g0, g1];\n this._terminateDistance = 0.0;\n } else if (arguments.length === 3) {\n var g0$1 = arguments[0];\n var g1$1 = arguments[1];\n var terminateDistance = arguments[2];\n this._geom = new Array(2).fill(null);\n this._geom[0] = g0$1;\n this._geom[1] = g1$1;\n this._terminateDistance = terminateDistance;\n }\n};\nDistanceOp.prototype.computeContainmentDistance = function computeContainmentDistance () {\n var this$1 = this;\n\n if (arguments.length === 0) {\n var locPtPoly = new Array(2).fill(null);\n this.computeContainmentDistance(0, locPtPoly);\n if (this._minDistance <= this._terminateDistance) { return null }\n this.computeContainmentDistance(1, locPtPoly);\n } else if (arguments.length === 2) {\n var polyGeomIndex = arguments[0];\n var locPtPoly$1 = arguments[1];\n var locationsIndex = 1 - polyGeomIndex;\n var polys = PolygonExtracter.getPolygons(this._geom[polyGeomIndex]);\n if (polys.size() > 0) {\n var insideLocs = ConnectedElementLocationFilter.getLocations(this._geom[locationsIndex]);\n this.computeContainmentDistance(insideLocs, polys, locPtPoly$1);\n if (this._minDistance <= this._terminateDistance) {\n this._minDistanceLocation[locationsIndex] = locPtPoly$1[0];\n this._minDistanceLocation[polyGeomIndex] = locPtPoly$1[1];\n return null\n }\n }\n } else if (arguments.length === 3) {\n if (arguments[2] instanceof Array && (hasInterface(arguments[0], List) && hasInterface(arguments[1], List))) {\n var locs = arguments[0];\n var polys$1 = arguments[1];\n var locPtPoly$2 = arguments[2];\n for (var i = 0; i < locs.size(); i++) {\n var loc = locs.get(i);\n for (var j = 0; j < polys$1.size(); j++) {\n this$1.computeContainmentDistance(loc, polys$1.get(j), locPtPoly$2);\n if (this$1._minDistance <= this$1._terminateDistance) { return null }\n }\n }\n } else if (arguments[2] instanceof Array && (arguments[0] instanceof GeometryLocation && arguments[1] instanceof Polygon)) {\n var ptLoc = arguments[0];\n var poly = arguments[1];\n var locPtPoly$3 = arguments[2];\n var pt = ptLoc.getCoordinate();\n if (Location.EXTERIOR !== this._ptLocator.locate(pt, poly)) {\n this._minDistance = 0.0;\n locPtPoly$3[0] = ptLoc;\n locPtPoly$3[1] = new GeometryLocation(poly, pt);\n\n return null\n }\n }\n }\n};\nDistanceOp.prototype.computeMinDistanceLinesPoints = function computeMinDistanceLinesPoints (lines, points, locGeom) {\n var this$1 = this;\n\n for (var i = 0; i < lines.size(); i++) {\n var line = lines.get(i);\n for (var j = 0; j < points.size(); j++) {\n var pt = points.get(j);\n this$1.computeMinDistance(line, pt, locGeom);\n if (this$1._minDistance <= this$1._terminateDistance) { return null }\n }\n }\n};\nDistanceOp.prototype.computeFacetDistance = function computeFacetDistance () {\n var locGeom = new Array(2).fill(null);\n var lines0 = LinearComponentExtracter.getLines(this._geom[0]);\n var lines1 = LinearComponentExtracter.getLines(this._geom[1]);\n var pts0 = PointExtracter.getPoints(this._geom[0]);\n var pts1 = PointExtracter.getPoints(this._geom[1]);\n this.computeMinDistanceLines(lines0, lines1, locGeom);\n this.updateMinDistance(locGeom, false);\n if (this._minDistance <= this._terminateDistance) { return null }\n locGeom[0] = null;\n locGeom[1] = null;\n this.computeMinDistanceLinesPoints(lines0, pts1, locGeom);\n this.updateMinDistance(locGeom, false);\n if (this._minDistance <= this._terminateDistance) { return null }\n locGeom[0] = null;\n locGeom[1] = null;\n this.computeMinDistanceLinesPoints(lines1, pts0, locGeom);\n this.updateMinDistance(locGeom, true);\n if (this._minDistance <= this._terminateDistance) { return null }\n locGeom[0] = null;\n locGeom[1] = null;\n this.computeMinDistancePoints(pts0, pts1, locGeom);\n this.updateMinDistance(locGeom, false);\n};\nDistanceOp.prototype.nearestLocations = function nearestLocations () {\n this.computeMinDistance();\n return this._minDistanceLocation\n};\nDistanceOp.prototype.updateMinDistance = function updateMinDistance (locGeom, flip) {\n if (locGeom[0] === null) { return null }\n if (flip) {\n this._minDistanceLocation[0] = locGeom[1];\n this._minDistanceLocation[1] = locGeom[0];\n } else {\n this._minDistanceLocation[0] = locGeom[0];\n this._minDistanceLocation[1] = locGeom[1];\n }\n};\nDistanceOp.prototype.nearestPoints = function nearestPoints () {\n this.computeMinDistance();\n var nearestPts = [this._minDistanceLocation[0].getCoordinate(), this._minDistanceLocation[1].getCoordinate()];\n return nearestPts\n};\nDistanceOp.prototype.computeMinDistance = function computeMinDistance () {\n var this$1 = this;\n\n if (arguments.length === 0) {\n if (this._minDistanceLocation !== null) { return null }\n this._minDistanceLocation = new Array(2).fill(null);\n this.computeContainmentDistance();\n if (this._minDistance <= this._terminateDistance) { return null }\n this.computeFacetDistance();\n } else if (arguments.length === 3) {\n if (arguments[2] instanceof Array && (arguments[0] instanceof LineString && arguments[1] instanceof Point)) {\n var line = arguments[0];\n var pt = arguments[1];\n var locGeom = arguments[2];\n if (line.getEnvelopeInternal().distance(pt.getEnvelopeInternal()) > this._minDistance) { return null }\n var coord0 = line.getCoordinates();\n var coord = pt.getCoordinate();\n for (var i = 0; i < coord0.length - 1; i++) {\n var dist = CGAlgorithms.distancePointLine(coord, coord0[i], coord0[i + 1]);\n if (dist < this$1._minDistance) {\n this$1._minDistance = dist;\n var seg = new LineSegment(coord0[i], coord0[i + 1]);\n var segClosestPoint = seg.closestPoint(coord);\n locGeom[0] = new GeometryLocation(line, i, segClosestPoint);\n locGeom[1] = new GeometryLocation(pt, 0, coord);\n }\n if (this$1._minDistance <= this$1._terminateDistance) { return null }\n }\n } else if (arguments[2] instanceof Array && (arguments[0] instanceof LineString && arguments[1] instanceof LineString)) {\n var line0 = arguments[0];\n var line1 = arguments[1];\n var locGeom$1 = arguments[2];\n if (line0.getEnvelopeInternal().distance(line1.getEnvelopeInternal()) > this._minDistance) { return null }\n var coord0$1 = line0.getCoordinates();\n var coord1 = line1.getCoordinates();\n for (var i$1 = 0; i$1 < coord0$1.length - 1; i$1++) {\n for (var j = 0; j < coord1.length - 1; j++) {\n var dist$1 = CGAlgorithms.distanceLineLine(coord0$1[i$1], coord0$1[i$1 + 1], coord1[j], coord1[j + 1]);\n if (dist$1 < this$1._minDistance) {\n this$1._minDistance = dist$1;\n var seg0 = new LineSegment(coord0$1[i$1], coord0$1[i$1 + 1]);\n var seg1 = new LineSegment(coord1[j], coord1[j + 1]);\n var closestPt = seg0.closestPoints(seg1);\n locGeom$1[0] = new GeometryLocation(line0, i$1, closestPt[0]);\n locGeom$1[1] = new GeometryLocation(line1, j, closestPt[1]);\n }\n if (this$1._minDistance <= this$1._terminateDistance) { return null }\n }\n }\n }\n }\n};\nDistanceOp.prototype.computeMinDistancePoints = function computeMinDistancePoints (points0, points1, locGeom) {\n var this$1 = this;\n\n for (var i = 0; i < points0.size(); i++) {\n var pt0 = points0.get(i);\n for (var j = 0; j < points1.size(); j++) {\n var pt1 = points1.get(j);\n var dist = pt0.getCoordinate().distance(pt1.getCoordinate());\n if (dist < this$1._minDistance) {\n this$1._minDistance = dist;\n locGeom[0] = new GeometryLocation(pt0, 0, pt0.getCoordinate());\n locGeom[1] = new GeometryLocation(pt1, 0, pt1.getCoordinate());\n }\n if (this$1._minDistance <= this$1._terminateDistance) { return null }\n }\n }\n};\nDistanceOp.prototype.distance = function distance () {\n if (this._geom[0] === null || this._geom[1] === null) { throw new IllegalArgumentException('null geometries are not supported') }\n if (this._geom[0].isEmpty() || this._geom[1].isEmpty()) { return 0.0 }\n this.computeMinDistance();\n return this._minDistance\n};\nDistanceOp.prototype.computeMinDistanceLines = function computeMinDistanceLines (lines0, lines1, locGeom) {\n var this$1 = this;\n\n for (var i = 0; i < lines0.size(); i++) {\n var line0 = lines0.get(i);\n for (var j = 0; j < lines1.size(); j++) {\n var line1 = lines1.get(j);\n this$1.computeMinDistance(line0, line1, locGeom);\n if (this$1._minDistance <= this$1._terminateDistance) { return null }\n }\n }\n};\nDistanceOp.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nDistanceOp.prototype.getClass = function getClass () {\n return DistanceOp\n};\nDistanceOp.distance = function distance (g0, g1) {\n var distOp = new DistanceOp(g0, g1);\n return distOp.distance()\n};\nDistanceOp.isWithinDistance = function isWithinDistance (g0, g1, distance) {\n var distOp = new DistanceOp(g0, g1, distance);\n return distOp.distance() <= distance\n};\nDistanceOp.nearestPoints = function nearestPoints (g0, g1) {\n var distOp = new DistanceOp(g0, g1);\n return distOp.nearestPoints()\n};\n\nvar PointPairDistance$2 = function PointPairDistance () {\n this._pt = [new Coordinate(), new Coordinate()];\n this._distance = Double.NaN;\n this._isNull = true;\n};\nPointPairDistance$2.prototype.getCoordinates = function getCoordinates () {\n return this._pt\n};\nPointPairDistance$2.prototype.getCoordinate = function getCoordinate (i) {\n return this._pt[i]\n};\nPointPairDistance$2.prototype.setMinimum = function setMinimum () {\n if (arguments.length === 1) {\n var ptDist = arguments[0];\n this.setMinimum(ptDist._pt[0], ptDist._pt[1]);\n } else if (arguments.length === 2) {\n var p0 = arguments[0];\n var p1 = arguments[1];\n if (this._isNull) {\n this.initialize(p0, p1);\n return null\n }\n var dist = p0.distance(p1);\n if (dist < this._distance) { this.initialize(p0, p1, dist); }\n }\n};\nPointPairDistance$2.prototype.initialize = function initialize () {\n if (arguments.length === 0) {\n this._isNull = true;\n } else if (arguments.length === 2) {\n var p0 = arguments[0];\n var p1 = arguments[1];\n this._pt[0].setCoordinate(p0);\n this._pt[1].setCoordinate(p1);\n this._distance = p0.distance(p1);\n this._isNull = false;\n } else if (arguments.length === 3) {\n var p0$1 = arguments[0];\n var p1$1 = arguments[1];\n var distance = arguments[2];\n this._pt[0].setCoordinate(p0$1);\n this._pt[1].setCoordinate(p1$1);\n this._distance = distance;\n this._isNull = false;\n }\n};\nPointPairDistance$2.prototype.toString = function toString () {\n return WKTWriter.toLineString(this._pt[0], this._pt[1])\n};\nPointPairDistance$2.prototype.getDistance = function getDistance () {\n return this._distance\n};\nPointPairDistance$2.prototype.setMaximum = function setMaximum () {\n if (arguments.length === 1) {\n var ptDist = arguments[0];\n this.setMaximum(ptDist._pt[0], ptDist._pt[1]);\n } else if (arguments.length === 2) {\n var p0 = arguments[0];\n var p1 = arguments[1];\n if (this._isNull) {\n this.initialize(p0, p1);\n return null\n }\n var dist = p0.distance(p1);\n if (dist > this._distance) { this.initialize(p0, p1, dist); }\n }\n};\nPointPairDistance$2.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nPointPairDistance$2.prototype.getClass = function getClass () {\n return PointPairDistance$2\n};\n\nvar DistanceToPoint = function DistanceToPoint () {};\n\nDistanceToPoint.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nDistanceToPoint.prototype.getClass = function getClass () {\n return DistanceToPoint\n};\nDistanceToPoint.computeDistance = function computeDistance () {\n if (arguments[2] instanceof PointPairDistance$2 && (arguments[0] instanceof LineString && arguments[1] instanceof Coordinate)) {\n var line = arguments[0];\n var pt = arguments[1];\n var ptDist = arguments[2];\n var tempSegment = new LineSegment();\n var coords = line.getCoordinates();\n for (var i = 0; i < coords.length - 1; i++) {\n tempSegment.setCoordinates(coords[i], coords[i + 1]);\n var closestPt = tempSegment.closestPoint(pt);\n ptDist.setMinimum(closestPt, pt);\n }\n } else if (arguments[2] instanceof PointPairDistance$2 && (arguments[0] instanceof Polygon && arguments[1] instanceof Coordinate)) {\n var poly = arguments[0];\n var pt$1 = arguments[1];\n var ptDist$1 = arguments[2];\n DistanceToPoint.computeDistance(poly.getExteriorRing(), pt$1, ptDist$1);\n for (var i$1 = 0; i$1 < poly.getNumInteriorRing(); i$1++) {\n DistanceToPoint.computeDistance(poly.getInteriorRingN(i$1), pt$1, ptDist$1);\n }\n } else if (arguments[2] instanceof PointPairDistance$2 && (arguments[0] instanceof Geometry && arguments[1] instanceof Coordinate)) {\n var geom = arguments[0];\n var pt$2 = arguments[1];\n var ptDist$2 = arguments[2];\n if (geom instanceof LineString) {\n DistanceToPoint.computeDistance(geom, pt$2, ptDist$2);\n } else if (geom instanceof Polygon) {\n DistanceToPoint.computeDistance(geom, pt$2, ptDist$2);\n } else if (geom instanceof GeometryCollection) {\n var gc = geom;\n for (var i$2 = 0; i$2 < gc.getNumGeometries(); i$2++) {\n var g = gc.getGeometryN(i$2);\n DistanceToPoint.computeDistance(g, pt$2, ptDist$2);\n }\n } else {\n ptDist$2.setMinimum(geom.getCoordinate(), pt$2);\n }\n } else if (arguments[2] instanceof PointPairDistance$2 && (arguments[0] instanceof LineSegment && arguments[1] instanceof Coordinate)) {\n var segment = arguments[0];\n var pt$3 = arguments[1];\n var ptDist$3 = arguments[2];\n var closestPt$1 = segment.closestPoint(pt$3);\n ptDist$3.setMinimum(closestPt$1, pt$3);\n }\n};\n\nvar DiscreteHausdorffDistance = function DiscreteHausdorffDistance () {\n this._g0 = null;\n this._g1 = null;\n this._ptDist = new PointPairDistance$2();\n this._densifyFrac = 0.0;\n var g0 = arguments[0];\n var g1 = arguments[1];\n this._g0 = g0;\n this._g1 = g1;\n};\n\nvar staticAccessors$39 = { MaxPointDistanceFilter: { configurable: true },MaxDensifiedByFractionDistanceFilter: { configurable: true } };\nDiscreteHausdorffDistance.prototype.getCoordinates = function getCoordinates () {\n return this._ptDist.getCoordinates()\n};\nDiscreteHausdorffDistance.prototype.setDensifyFraction = function setDensifyFraction (densifyFrac) {\n if (densifyFrac > 1.0 || densifyFrac <= 0.0) { throw new IllegalArgumentException('Fraction is not in range (0.0 - 1.0]') }\n this._densifyFrac = densifyFrac;\n};\nDiscreteHausdorffDistance.prototype.compute = function compute (g0, g1) {\n this.computeOrientedDistance(g0, g1, this._ptDist);\n this.computeOrientedDistance(g1, g0, this._ptDist);\n};\nDiscreteHausdorffDistance.prototype.distance = function distance () {\n this.compute(this._g0, this._g1);\n return this._ptDist.getDistance()\n};\nDiscreteHausdorffDistance.prototype.computeOrientedDistance = function computeOrientedDistance (discreteGeom, geom, ptDist) {\n var distFilter = new MaxPointDistanceFilter$1(geom);\n discreteGeom.apply(distFilter);\n ptDist.setMaximum(distFilter.getMaxPointDistance());\n if (this._densifyFrac > 0) {\n var fracFilter = new MaxDensifiedByFractionDistanceFilter(geom, this._densifyFrac);\n discreteGeom.apply(fracFilter);\n ptDist.setMaximum(fracFilter.getMaxPointDistance());\n }\n};\nDiscreteHausdorffDistance.prototype.orientedDistance = function orientedDistance () {\n this.computeOrientedDistance(this._g0, this._g1, this._ptDist);\n return this._ptDist.getDistance()\n};\nDiscreteHausdorffDistance.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nDiscreteHausdorffDistance.prototype.getClass = function getClass () {\n return DiscreteHausdorffDistance\n};\nDiscreteHausdorffDistance.distance = function distance () {\n if (arguments.length === 2) {\n var g0 = arguments[0];\n var g1 = arguments[1];\n var dist = new DiscreteHausdorffDistance(g0, g1);\n return dist.distance()\n } else if (arguments.length === 3) {\n var g0$1 = arguments[0];\n var g1$1 = arguments[1];\n var densifyFrac = arguments[2];\n var dist$1 = new DiscreteHausdorffDistance(g0$1, g1$1);\n dist$1.setDensifyFraction(densifyFrac);\n return dist$1.distance()\n }\n};\nstaticAccessors$39.MaxPointDistanceFilter.get = function () { return MaxPointDistanceFilter$1 };\nstaticAccessors$39.MaxDensifiedByFractionDistanceFilter.get = function () { return MaxDensifiedByFractionDistanceFilter };\n\nObject.defineProperties( DiscreteHausdorffDistance, staticAccessors$39 );\n\nvar MaxPointDistanceFilter$1 = function MaxPointDistanceFilter () {\n this._maxPtDist = new PointPairDistance$2();\n this._minPtDist = new PointPairDistance$2();\n this._euclideanDist = new DistanceToPoint();\n this._geom = null;\n var geom = arguments[0];\n this._geom = geom;\n};\nMaxPointDistanceFilter$1.prototype.filter = function filter (pt) {\n this._minPtDist.initialize();\n DistanceToPoint.computeDistance(this._geom, pt, this._minPtDist);\n this._maxPtDist.setMaximum(this._minPtDist);\n};\nMaxPointDistanceFilter$1.prototype.getMaxPointDistance = function getMaxPointDistance () {\n return this._maxPtDist\n};\nMaxPointDistanceFilter$1.prototype.interfaces_ = function interfaces_ () {\n return [CoordinateFilter]\n};\nMaxPointDistanceFilter$1.prototype.getClass = function getClass () {\n return MaxPointDistanceFilter$1\n};\n\nvar MaxDensifiedByFractionDistanceFilter = function MaxDensifiedByFractionDistanceFilter () {\n this._maxPtDist = new PointPairDistance$2();\n this._minPtDist = new PointPairDistance$2();\n this._geom = null;\n this._numSubSegs = 0;\n var geom = arguments[0];\n var fraction = arguments[1];\n this._geom = geom;\n this._numSubSegs = Math.trunc(Math.round(1.0 / fraction));\n};\nMaxDensifiedByFractionDistanceFilter.prototype.filter = function filter (seq, index) {\n var this$1 = this;\n\n if (index === 0) { return null }\n var p0 = seq.getCoordinate(index - 1);\n var p1 = seq.getCoordinate(index);\n var delx = (p1.x - p0.x) / this._numSubSegs;\n var dely = (p1.y - p0.y) / this._numSubSegs;\n for (var i = 0; i < this._numSubSegs; i++) {\n var x = p0.x + i * delx;\n var y = p0.y + i * dely;\n var pt = new Coordinate(x, y);\n this$1._minPtDist.initialize();\n DistanceToPoint.computeDistance(this$1._geom, pt, this$1._minPtDist);\n this$1._maxPtDist.setMaximum(this$1._minPtDist);\n }\n};\nMaxDensifiedByFractionDistanceFilter.prototype.isDone = function isDone () {\n return false\n};\nMaxDensifiedByFractionDistanceFilter.prototype.isGeometryChanged = function isGeometryChanged () {\n return false\n};\nMaxDensifiedByFractionDistanceFilter.prototype.getMaxPointDistance = function getMaxPointDistance () {\n return this._maxPtDist\n};\nMaxDensifiedByFractionDistanceFilter.prototype.interfaces_ = function interfaces_ () {\n return [CoordinateSequenceFilter]\n};\nMaxDensifiedByFractionDistanceFilter.prototype.getClass = function getClass () {\n return MaxDensifiedByFractionDistanceFilter\n};\n\nvar BufferDistanceValidator = function BufferDistanceValidator (input, bufDistance, result) {\n this._minValidDistance = null;\n this._maxValidDistance = null;\n this._minDistanceFound = null;\n this._maxDistanceFound = null;\n this._isValid = true;\n this._errMsg = null;\n this._errorLocation = null;\n this._errorIndicator = null;\n this._input = input || null;\n this._bufDistance = bufDistance || null;\n this._result = result || null;\n};\n\nvar staticAccessors$37 = { VERBOSE: { configurable: true },MAX_DISTANCE_DIFF_FRAC: { configurable: true } };\nBufferDistanceValidator.prototype.checkMaximumDistance = function checkMaximumDistance (input, bufCurve, maxDist) {\n var haus = new DiscreteHausdorffDistance(bufCurve, input);\n haus.setDensifyFraction(0.25);\n this._maxDistanceFound = haus.orientedDistance();\n if (this._maxDistanceFound > maxDist) {\n this._isValid = false;\n var pts = haus.getCoordinates();\n this._errorLocation = pts[1];\n this._errorIndicator = input.getFactory().createLineString(pts);\n this._errMsg = 'Distance between buffer curve and input is too large (' + this._maxDistanceFound + ' at ' + WKTWriter.toLineString(pts[0], pts[1]) + ')';\n }\n};\nBufferDistanceValidator.prototype.isValid = function isValid () {\n var posDistance = Math.abs(this._bufDistance);\n var distDelta = BufferDistanceValidator.MAX_DISTANCE_DIFF_FRAC * posDistance;\n this._minValidDistance = posDistance - distDelta;\n this._maxValidDistance = posDistance + distDelta;\n if (this._input.isEmpty() || this._result.isEmpty()) { return true }\n if (this._bufDistance > 0.0) {\n this.checkPositiveValid();\n } else {\n this.checkNegativeValid();\n }\n if (BufferDistanceValidator.VERBOSE) {\n System.out.println('Min Dist= ' + this._minDistanceFound + ' err= ' + (1.0 - this._minDistanceFound / this._bufDistance) + ' Max Dist= ' + this._maxDistanceFound + ' err= ' + (this._maxDistanceFound / this._bufDistance - 1.0));\n }\n return this._isValid\n};\nBufferDistanceValidator.prototype.checkNegativeValid = function checkNegativeValid () {\n if (!(this._input instanceof Polygon || this._input instanceof MultiPolygon || this._input instanceof GeometryCollection)) {\n return null\n }\n var inputCurve = this.getPolygonLines(this._input);\n this.checkMinimumDistance(inputCurve, this._result, this._minValidDistance);\n if (!this._isValid) { return null }\n this.checkMaximumDistance(inputCurve, this._result, this._maxValidDistance);\n};\nBufferDistanceValidator.prototype.getErrorIndicator = function getErrorIndicator () {\n return this._errorIndicator\n};\nBufferDistanceValidator.prototype.checkMinimumDistance = function checkMinimumDistance (g1, g2, minDist) {\n var distOp = new DistanceOp(g1, g2, minDist);\n this._minDistanceFound = distOp.distance();\n if (this._minDistanceFound < minDist) {\n this._isValid = false;\n var pts = distOp.nearestPoints();\n this._errorLocation = distOp.nearestPoints()[1];\n this._errorIndicator = g1.getFactory().createLineString(pts);\n this._errMsg = 'Distance between buffer curve and input is too small (' + this._minDistanceFound + ' at ' + WKTWriter.toLineString(pts[0], pts[1]) + ' )';\n }\n};\nBufferDistanceValidator.prototype.checkPositiveValid = function checkPositiveValid () {\n var bufCurve = this._result.getBoundary();\n this.checkMinimumDistance(this._input, bufCurve, this._minValidDistance);\n if (!this._isValid) { return null }\n this.checkMaximumDistance(this._input, bufCurve, this._maxValidDistance);\n};\nBufferDistanceValidator.prototype.getErrorLocation = function getErrorLocation () {\n return this._errorLocation\n};\nBufferDistanceValidator.prototype.getPolygonLines = function getPolygonLines (g) {\n var lines = new ArrayList();\n var lineExtracter = new LinearComponentExtracter(lines);\n var polys = PolygonExtracter.getPolygons(g);\n for (var i = polys.iterator(); i.hasNext();) {\n var poly = i.next();\n poly.apply(lineExtracter);\n }\n return g.getFactory().buildGeometry(lines)\n};\nBufferDistanceValidator.prototype.getErrorMessage = function getErrorMessage () {\n return this._errMsg\n};\nBufferDistanceValidator.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nBufferDistanceValidator.prototype.getClass = function getClass () {\n return BufferDistanceValidator\n};\nstaticAccessors$37.VERBOSE.get = function () { return false };\nstaticAccessors$37.MAX_DISTANCE_DIFF_FRAC.get = function () { return 0.012 };\n\nObject.defineProperties( BufferDistanceValidator, staticAccessors$37 );\n\nvar BufferResultValidator = function BufferResultValidator (input, distance, result) {\n this._isValid = true;\n this._errorMsg = null;\n this._errorLocation = null;\n this._errorIndicator = null;\n this._input = input || null;\n this._distance = distance || null;\n this._result = result || null;\n};\n\nvar staticAccessors$40 = { VERBOSE: { configurable: true },MAX_ENV_DIFF_FRAC: { configurable: true } };\nBufferResultValidator.prototype.isValid = function isValid () {\n this.checkPolygonal();\n if (!this._isValid) { return this._isValid }\n this.checkExpectedEmpty();\n if (!this._isValid) { return this._isValid }\n this.checkEnvelope();\n if (!this._isValid) { return this._isValid }\n this.checkArea();\n if (!this._isValid) { return this._isValid }\n this.checkDistance();\n return this._isValid\n};\nBufferResultValidator.prototype.checkEnvelope = function checkEnvelope () {\n if (this._distance < 0.0) { return null }\n var padding = this._distance * BufferResultValidator.MAX_ENV_DIFF_FRAC;\n if (padding === 0.0) { padding = 0.001; }\n var expectedEnv = new Envelope(this._input.getEnvelopeInternal());\n expectedEnv.expandBy(this._distance);\n var bufEnv = new Envelope(this._result.getEnvelopeInternal());\n bufEnv.expandBy(padding);\n if (!bufEnv.contains(expectedEnv)) {\n this._isValid = false;\n this._errorMsg = 'Buffer envelope is incorrect';\n this._errorIndicator = this._input.getFactory().toGeometry(bufEnv);\n }\n this.report('Envelope');\n};\nBufferResultValidator.prototype.checkDistance = function checkDistance () {\n var distValid = new BufferDistanceValidator(this._input, this._distance, this._result);\n if (!distValid.isValid()) {\n this._isValid = false;\n this._errorMsg = distValid.getErrorMessage();\n this._errorLocation = distValid.getErrorLocation();\n this._errorIndicator = distValid.getErrorIndicator();\n }\n this.report('Distance');\n};\nBufferResultValidator.prototype.checkArea = function checkArea () {\n var inputArea = this._input.getArea();\n var resultArea = this._result.getArea();\n if (this._distance > 0.0 && inputArea > resultArea) {\n this._isValid = false;\n this._errorMsg = 'Area of positive buffer is smaller than input';\n this._errorIndicator = this._result;\n }\n if (this._distance < 0.0 && inputArea < resultArea) {\n this._isValid = false;\n this._errorMsg = 'Area of negative buffer is larger than input';\n this._errorIndicator = this._result;\n }\n this.report('Area');\n};\nBufferResultValidator.prototype.checkPolygonal = function checkPolygonal () {\n if (!(this._result instanceof Polygon || this._result instanceof MultiPolygon)) { this._isValid = false; }\n this._errorMsg = 'Result is not polygonal';\n this._errorIndicator = this._result;\n this.report('Polygonal');\n};\nBufferResultValidator.prototype.getErrorIndicator = function getErrorIndicator () {\n return this._errorIndicator\n};\nBufferResultValidator.prototype.getErrorLocation = function getErrorLocation () {\n return this._errorLocation\n};\nBufferResultValidator.prototype.checkExpectedEmpty = function checkExpectedEmpty () {\n if (this._input.getDimension() >= 2) { return null }\n if (this._distance > 0.0) { return null }\n if (!this._result.isEmpty()) {\n this._isValid = false;\n this._errorMsg = 'Result is non-empty';\n this._errorIndicator = this._result;\n }\n this.report('ExpectedEmpty');\n};\nBufferResultValidator.prototype.report = function report (checkName) {\n if (!BufferResultValidator.VERBOSE) { return null }\n System.out.println('Check ' + checkName + ': ' + (this._isValid ? 'passed' : 'FAILED'));\n};\nBufferResultValidator.prototype.getErrorMessage = function getErrorMessage () {\n return this._errorMsg\n};\nBufferResultValidator.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nBufferResultValidator.prototype.getClass = function getClass () {\n return BufferResultValidator\n};\nBufferResultValidator.isValidMsg = function isValidMsg (g, distance, result) {\n var validator = new BufferResultValidator(g, distance, result);\n if (!validator.isValid()) { return validator.getErrorMessage() }\n return null\n};\nBufferResultValidator.isValid = function isValid (g, distance, result) {\n var validator = new BufferResultValidator(g, distance, result);\n if (validator.isValid()) { return true }\n return false\n};\nstaticAccessors$40.VERBOSE.get = function () { return false };\nstaticAccessors$40.MAX_ENV_DIFF_FRAC.get = function () { return 0.012 };\n\nObject.defineProperties( BufferResultValidator, staticAccessors$40 );\n\n// operation.buffer\n\nvar BasicSegmentString = function BasicSegmentString () {\n this._pts = null;\n this._data = null;\n var pts = arguments[0];\n var data = arguments[1];\n this._pts = pts;\n this._data = data;\n};\nBasicSegmentString.prototype.getCoordinates = function getCoordinates () {\n return this._pts\n};\nBasicSegmentString.prototype.size = function size () {\n return this._pts.length\n};\nBasicSegmentString.prototype.getCoordinate = function getCoordinate (i) {\n return this._pts[i]\n};\nBasicSegmentString.prototype.isClosed = function isClosed () {\n return this._pts[0].equals(this._pts[this._pts.length - 1])\n};\nBasicSegmentString.prototype.getSegmentOctant = function getSegmentOctant (index) {\n if (index === this._pts.length - 1) { return -1 }\n return Octant.octant(this.getCoordinate(index), this.getCoordinate(index + 1))\n};\nBasicSegmentString.prototype.setData = function setData (data) {\n this._data = data;\n};\nBasicSegmentString.prototype.getData = function getData () {\n return this._data\n};\nBasicSegmentString.prototype.toString = function toString () {\n return WKTWriter.toLineString(new CoordinateArraySequence(this._pts))\n};\nBasicSegmentString.prototype.interfaces_ = function interfaces_ () {\n return [SegmentString]\n};\nBasicSegmentString.prototype.getClass = function getClass () {\n return BasicSegmentString\n};\n\nvar InteriorIntersectionFinder = function InteriorIntersectionFinder () {\n this._findAllIntersections = false;\n this._isCheckEndSegmentsOnly = false;\n this._li = null;\n this._interiorIntersection = null;\n this._intSegments = null;\n this._intersections = new ArrayList();\n this._intersectionCount = 0;\n this._keepIntersections = true;\n var li = arguments[0];\n this._li = li;\n this._interiorIntersection = null;\n};\nInteriorIntersectionFinder.prototype.getInteriorIntersection = function getInteriorIntersection () {\n return this._interiorIntersection\n};\nInteriorIntersectionFinder.prototype.setCheckEndSegmentsOnly = function setCheckEndSegmentsOnly (isCheckEndSegmentsOnly) {\n this._isCheckEndSegmentsOnly = isCheckEndSegmentsOnly;\n};\nInteriorIntersectionFinder.prototype.getIntersectionSegments = function getIntersectionSegments () {\n return this._intSegments\n};\nInteriorIntersectionFinder.prototype.count = function count () {\n return this._intersectionCount\n};\nInteriorIntersectionFinder.prototype.getIntersections = function getIntersections () {\n return this._intersections\n};\nInteriorIntersectionFinder.prototype.setFindAllIntersections = function setFindAllIntersections (findAllIntersections) {\n this._findAllIntersections = findAllIntersections;\n};\nInteriorIntersectionFinder.prototype.setKeepIntersections = function setKeepIntersections (keepIntersections) {\n this._keepIntersections = keepIntersections;\n};\nInteriorIntersectionFinder.prototype.processIntersections = function processIntersections (e0, segIndex0, e1, segIndex1) {\n if (!this._findAllIntersections && this.hasIntersection()) { return null }\n if (e0 === e1 && segIndex0 === segIndex1) { return null }\n if (this._isCheckEndSegmentsOnly) {\n var isEndSegPresent = this.isEndSegment(e0, segIndex0) || this.isEndSegment(e1, segIndex1);\n if (!isEndSegPresent) { return null }\n }\n var p00 = e0.getCoordinates()[segIndex0];\n var p01 = e0.getCoordinates()[segIndex0 + 1];\n var p10 = e1.getCoordinates()[segIndex1];\n var p11 = e1.getCoordinates()[segIndex1 + 1];\n this._li.computeIntersection(p00, p01, p10, p11);\n if (this._li.hasIntersection()) {\n if (this._li.isInteriorIntersection()) {\n this._intSegments = new Array(4).fill(null);\n this._intSegments[0] = p00;\n this._intSegments[1] = p01;\n this._intSegments[2] = p10;\n this._intSegments[3] = p11;\n this._interiorIntersection = this._li.getIntersection(0);\n if (this._keepIntersections) { this._intersections.add(this._interiorIntersection); }\n this._intersectionCount++;\n }\n }\n};\nInteriorIntersectionFinder.prototype.isEndSegment = function isEndSegment (segStr, index) {\n if (index === 0) { return true }\n if (index >= segStr.size() - 2) { return true }\n return false\n};\nInteriorIntersectionFinder.prototype.hasIntersection = function hasIntersection () {\n return this._interiorIntersection !== null\n};\nInteriorIntersectionFinder.prototype.isDone = function isDone () {\n if (this._findAllIntersections) { return false }\n return this._interiorIntersection !== null\n};\nInteriorIntersectionFinder.prototype.interfaces_ = function interfaces_ () {\n return [SegmentIntersector]\n};\nInteriorIntersectionFinder.prototype.getClass = function getClass () {\n return InteriorIntersectionFinder\n};\nInteriorIntersectionFinder.createAllIntersectionsFinder = function createAllIntersectionsFinder (li) {\n var finder = new InteriorIntersectionFinder(li);\n finder.setFindAllIntersections(true);\n return finder\n};\nInteriorIntersectionFinder.createAnyIntersectionFinder = function createAnyIntersectionFinder (li) {\n return new InteriorIntersectionFinder(li)\n};\nInteriorIntersectionFinder.createIntersectionCounter = function createIntersectionCounter (li) {\n var finder = new InteriorIntersectionFinder(li);\n finder.setFindAllIntersections(true);\n finder.setKeepIntersections(false);\n return finder\n};\n\nvar FastNodingValidator = function FastNodingValidator () {\n this._li = new RobustLineIntersector();\n this._segStrings = null;\n this._findAllIntersections = false;\n this._segInt = null;\n this._isValid = true;\n var segStrings = arguments[0];\n this._segStrings = segStrings;\n};\nFastNodingValidator.prototype.execute = function execute () {\n if (this._segInt !== null) { return null }\n this.checkInteriorIntersections();\n};\nFastNodingValidator.prototype.getIntersections = function getIntersections () {\n return this._segInt.getIntersections()\n};\nFastNodingValidator.prototype.isValid = function isValid () {\n this.execute();\n return this._isValid\n};\nFastNodingValidator.prototype.setFindAllIntersections = function setFindAllIntersections (findAllIntersections) {\n this._findAllIntersections = findAllIntersections;\n};\nFastNodingValidator.prototype.checkInteriorIntersections = function checkInteriorIntersections () {\n this._isValid = true;\n this._segInt = new InteriorIntersectionFinder(this._li);\n this._segInt.setFindAllIntersections(this._findAllIntersections);\n var noder = new MCIndexNoder();\n noder.setSegmentIntersector(this._segInt);\n noder.computeNodes(this._segStrings);\n if (this._segInt.hasIntersection()) {\n this._isValid = false;\n return null\n }\n};\nFastNodingValidator.prototype.checkValid = function checkValid () {\n this.execute();\n if (!this._isValid) { throw new TopologyException(this.getErrorMessage(), this._segInt.getInteriorIntersection()) }\n};\nFastNodingValidator.prototype.getErrorMessage = function getErrorMessage () {\n if (this._isValid) { return 'no intersections found' }\n var intSegs = this._segInt.getIntersectionSegments();\n return 'found non-noded intersection between ' + WKTWriter.toLineString(intSegs[0], intSegs[1]) + ' and ' + WKTWriter.toLineString(intSegs[2], intSegs[3])\n};\nFastNodingValidator.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nFastNodingValidator.prototype.getClass = function getClass () {\n return FastNodingValidator\n};\nFastNodingValidator.computeIntersections = function computeIntersections (segStrings) {\n var nv = new FastNodingValidator(segStrings);\n nv.setFindAllIntersections(true);\n nv.isValid();\n return nv.getIntersections()\n};\n\nvar EdgeNodingValidator = function EdgeNodingValidator () {\n this._nv = null;\n var edges = arguments[0];\n this._nv = new FastNodingValidator(EdgeNodingValidator.toSegmentStrings(edges));\n};\nEdgeNodingValidator.prototype.checkValid = function checkValid () {\n this._nv.checkValid();\n};\nEdgeNodingValidator.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nEdgeNodingValidator.prototype.getClass = function getClass () {\n return EdgeNodingValidator\n};\nEdgeNodingValidator.toSegmentStrings = function toSegmentStrings (edges) {\n var segStrings = new ArrayList();\n for (var i = edges.iterator(); i.hasNext();) {\n var e = i.next();\n segStrings.add(new BasicSegmentString(e.getCoordinates(), e));\n }\n return segStrings\n};\nEdgeNodingValidator.checkValid = function checkValid (edges) {\n var validator = new EdgeNodingValidator(edges);\n validator.checkValid();\n};\n\nvar GeometryCollectionMapper = function GeometryCollectionMapper (mapOp) {\n this._mapOp = mapOp;\n};\nGeometryCollectionMapper.prototype.map = function map (gc) {\n var this$1 = this;\n\n var mapped = new ArrayList();\n for (var i = 0; i < gc.getNumGeometries(); i++) {\n var g = this$1._mapOp.map(gc.getGeometryN(i));\n if (!g.isEmpty()) { mapped.add(g); }\n }\n return gc.getFactory().createGeometryCollection(GeometryFactory.toGeometryArray(mapped))\n};\nGeometryCollectionMapper.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nGeometryCollectionMapper.prototype.getClass = function getClass () {\n return GeometryCollectionMapper\n};\nGeometryCollectionMapper.map = function map (gc, op) {\n var mapper = new GeometryCollectionMapper(op);\n return mapper.map(gc)\n};\n\nvar LineBuilder = function LineBuilder () {\n this._op = null;\n this._geometryFactory = null;\n this._ptLocator = null;\n this._lineEdgesList = new ArrayList();\n this._resultLineList = new ArrayList();\n var op = arguments[0];\n var geometryFactory = arguments[1];\n var ptLocator = arguments[2];\n this._op = op;\n this._geometryFactory = geometryFactory;\n this._ptLocator = ptLocator;\n};\nLineBuilder.prototype.collectLines = function collectLines (opCode) {\n var this$1 = this;\n\n for (var it = this._op.getGraph().getEdgeEnds().iterator(); it.hasNext();) {\n var de = it.next();\n this$1.collectLineEdge(de, opCode, this$1._lineEdgesList);\n this$1.collectBoundaryTouchEdge(de, opCode, this$1._lineEdgesList);\n }\n};\nLineBuilder.prototype.labelIsolatedLine = function labelIsolatedLine (e, targetIndex) {\n var loc = this._ptLocator.locate(e.getCoordinate(), this._op.getArgGeometry(targetIndex));\n e.getLabel().setLocation(targetIndex, loc);\n};\nLineBuilder.prototype.build = function build (opCode) {\n this.findCoveredLineEdges();\n this.collectLines(opCode);\n this.buildLines(opCode);\n return this._resultLineList\n};\nLineBuilder.prototype.collectLineEdge = function collectLineEdge (de, opCode, edges) {\n var label = de.getLabel();\n var e = de.getEdge();\n if (de.isLineEdge()) {\n if (!de.isVisited() && OverlayOp.isResultOfOp(label, opCode) && !e.isCovered()) {\n edges.add(e);\n de.setVisitedEdge(true);\n }\n }\n};\nLineBuilder.prototype.findCoveredLineEdges = function findCoveredLineEdges () {\n var this$1 = this;\n\n for (var nodeit = this._op.getGraph().getNodes().iterator(); nodeit.hasNext();) {\n var node = nodeit.next();\n node.getEdges().findCoveredLineEdges();\n }\n for (var it = this._op.getGraph().getEdgeEnds().iterator(); it.hasNext();) {\n var de = it.next();\n var e = de.getEdge();\n if (de.isLineEdge() && !e.isCoveredSet()) {\n var isCovered = this$1._op.isCoveredByA(de.getCoordinate());\n e.setCovered(isCovered);\n }\n }\n};\nLineBuilder.prototype.labelIsolatedLines = function labelIsolatedLines (edgesList) {\n var this$1 = this;\n\n for (var it = edgesList.iterator(); it.hasNext();) {\n var e = it.next();\n var label = e.getLabel();\n if (e.isIsolated()) {\n if (label.isNull(0)) { this$1.labelIsolatedLine(e, 0); } else { this$1.labelIsolatedLine(e, 1); }\n }\n }\n};\nLineBuilder.prototype.buildLines = function buildLines (opCode) {\n var this$1 = this;\n\n for (var it = this._lineEdgesList.iterator(); it.hasNext();) {\n var e = it.next();\n // const label = e.getLabel()\n var line = this$1._geometryFactory.createLineString(e.getCoordinates());\n this$1._resultLineList.add(line);\n e.setInResult(true);\n }\n};\nLineBuilder.prototype.collectBoundaryTouchEdge = function collectBoundaryTouchEdge (de, opCode, edges) {\n var label = de.getLabel();\n if (de.isLineEdge()) { return null }\n if (de.isVisited()) { return null }\n if (de.isInteriorAreaEdge()) { return null }\n if (de.getEdge().isInResult()) { return null }\n Assert.isTrue(!(de.isInResult() || de.getSym().isInResult()) || !de.getEdge().isInResult());\n if (OverlayOp.isResultOfOp(label, opCode) && opCode === OverlayOp.INTERSECTION) {\n edges.add(de.getEdge());\n de.setVisitedEdge(true);\n }\n};\nLineBuilder.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nLineBuilder.prototype.getClass = function getClass () {\n return LineBuilder\n};\n\nvar PointBuilder = function PointBuilder () {\n this._op = null;\n this._geometryFactory = null;\n this._resultPointList = new ArrayList();\n var op = arguments[0];\n var geometryFactory = arguments[1];\n // const ptLocator = arguments[2]\n this._op = op;\n this._geometryFactory = geometryFactory;\n};\nPointBuilder.prototype.filterCoveredNodeToPoint = function filterCoveredNodeToPoint (n) {\n var coord = n.getCoordinate();\n if (!this._op.isCoveredByLA(coord)) {\n var pt = this._geometryFactory.createPoint(coord);\n this._resultPointList.add(pt);\n }\n};\nPointBuilder.prototype.extractNonCoveredResultNodes = function extractNonCoveredResultNodes (opCode) {\n var this$1 = this;\n\n for (var nodeit = this._op.getGraph().getNodes().iterator(); nodeit.hasNext();) {\n var n = nodeit.next();\n if (n.isInResult()) { continue }\n if (n.isIncidentEdgeInResult()) { continue }\n if (n.getEdges().getDegree() === 0 || opCode === OverlayOp.INTERSECTION) {\n var label = n.getLabel();\n if (OverlayOp.isResultOfOp(label, opCode)) {\n this$1.filterCoveredNodeToPoint(n);\n }\n }\n }\n};\nPointBuilder.prototype.build = function build (opCode) {\n this.extractNonCoveredResultNodes(opCode);\n return this._resultPointList\n};\nPointBuilder.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nPointBuilder.prototype.getClass = function getClass () {\n return PointBuilder\n};\n\nvar GeometryTransformer = function GeometryTransformer () {\n this._inputGeom = null;\n this._factory = null;\n this._pruneEmptyGeometry = true;\n this._preserveGeometryCollectionType = true;\n this._preserveCollections = false;\n this._preserveType = false;\n};\nGeometryTransformer.prototype.transformPoint = function transformPoint (geom, parent) {\n return this._factory.createPoint(this.transformCoordinates(geom.getCoordinateSequence(), geom))\n};\nGeometryTransformer.prototype.transformPolygon = function transformPolygon (geom, parent) {\n var this$1 = this;\n\n var isAllValidLinearRings = true;\n var shell = this.transformLinearRing(geom.getExteriorRing(), geom);\n if (shell === null || !(shell instanceof LinearRing) || shell.isEmpty()) { isAllValidLinearRings = false; }\n var holes = new ArrayList();\n for (var i = 0; i < geom.getNumInteriorRing(); i++) {\n var hole = this$1.transformLinearRing(geom.getInteriorRingN(i), geom);\n if (hole === null || hole.isEmpty()) {\n continue\n }\n if (!(hole instanceof LinearRing)) { isAllValidLinearRings = false; }\n holes.add(hole);\n }\n if (isAllValidLinearRings) { return this._factory.createPolygon(shell, holes.toArray([])); } else {\n var components = new ArrayList();\n if (shell !== null) { components.add(shell); }\n components.addAll(holes);\n return this._factory.buildGeometry(components)\n }\n};\nGeometryTransformer.prototype.createCoordinateSequence = function createCoordinateSequence (coords) {\n return this._factory.getCoordinateSequenceFactory().create(coords)\n};\nGeometryTransformer.prototype.getInputGeometry = function getInputGeometry () {\n return this._inputGeom\n};\nGeometryTransformer.prototype.transformMultiLineString = function transformMultiLineString (geom, parent) {\n var this$1 = this;\n\n var transGeomList = new ArrayList();\n for (var i = 0; i < geom.getNumGeometries(); i++) {\n var transformGeom = this$1.transformLineString(geom.getGeometryN(i), geom);\n if (transformGeom === null) { continue }\n if (transformGeom.isEmpty()) { continue }\n transGeomList.add(transformGeom);\n }\n return this._factory.buildGeometry(transGeomList)\n};\nGeometryTransformer.prototype.transformCoordinates = function transformCoordinates (coords, parent) {\n return this.copy(coords)\n};\nGeometryTransformer.prototype.transformLineString = function transformLineString (geom, parent) {\n return this._factory.createLineString(this.transformCoordinates(geom.getCoordinateSequence(), geom))\n};\nGeometryTransformer.prototype.transformMultiPoint = function transformMultiPoint (geom, parent) {\n var this$1 = this;\n\n var transGeomList = new ArrayList();\n for (var i = 0; i < geom.getNumGeometries(); i++) {\n var transformGeom = this$1.transformPoint(geom.getGeometryN(i), geom);\n if (transformGeom === null) { continue }\n if (transformGeom.isEmpty()) { continue }\n transGeomList.add(transformGeom);\n }\n return this._factory.buildGeometry(transGeomList)\n};\nGeometryTransformer.prototype.transformMultiPolygon = function transformMultiPolygon (geom, parent) {\n var this$1 = this;\n\n var transGeomList = new ArrayList();\n for (var i = 0; i < geom.getNumGeometries(); i++) {\n var transformGeom = this$1.transformPolygon(geom.getGeometryN(i), geom);\n if (transformGeom === null) { continue }\n if (transformGeom.isEmpty()) { continue }\n transGeomList.add(transformGeom);\n }\n return this._factory.buildGeometry(transGeomList)\n};\nGeometryTransformer.prototype.copy = function copy (seq) {\n return seq.copy()\n};\nGeometryTransformer.prototype.transformGeometryCollection = function transformGeometryCollection (geom, parent) {\n var this$1 = this;\n\n var transGeomList = new ArrayList();\n for (var i = 0; i < geom.getNumGeometries(); i++) {\n var transformGeom = this$1.transform(geom.getGeometryN(i));\n if (transformGeom === null) { continue }\n if (this$1._pruneEmptyGeometry && transformGeom.isEmpty()) { continue }\n transGeomList.add(transformGeom);\n }\n if (this._preserveGeometryCollectionType) { return this._factory.createGeometryCollection(GeometryFactory.toGeometryArray(transGeomList)) }\n return this._factory.buildGeometry(transGeomList)\n};\nGeometryTransformer.prototype.transform = function transform (inputGeom) {\n this._inputGeom = inputGeom;\n this._factory = inputGeom.getFactory();\n if (inputGeom instanceof Point) { return this.transformPoint(inputGeom, null) }\n if (inputGeom instanceof MultiPoint) { return this.transformMultiPoint(inputGeom, null) }\n if (inputGeom instanceof LinearRing) { return this.transformLinearRing(inputGeom, null) }\n if (inputGeom instanceof LineString) { return this.transformLineString(inputGeom, null) }\n if (inputGeom instanceof MultiLineString) { return this.transformMultiLineString(inputGeom, null) }\n if (inputGeom instanceof Polygon) { return this.transformPolygon(inputGeom, null) }\n if (inputGeom instanceof MultiPolygon) { return this.transformMultiPolygon(inputGeom, null) }\n if (inputGeom instanceof GeometryCollection) { return this.transformGeometryCollection(inputGeom, null) }\n throw new IllegalArgumentException('Unknown Geometry subtype: ' + inputGeom.getClass().getName())\n};\nGeometryTransformer.prototype.transformLinearRing = function transformLinearRing (geom, parent) {\n var seq = this.transformCoordinates(geom.getCoordinateSequence(), geom);\n if (seq === null) { return this._factory.createLinearRing(null) }\n var seqSize = seq.size();\n if (seqSize > 0 && seqSize < 4 && !this._preserveType) { return this._factory.createLineString(seq) }\n return this._factory.createLinearRing(seq)\n};\nGeometryTransformer.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nGeometryTransformer.prototype.getClass = function getClass () {\n return GeometryTransformer\n};\n\nvar LineStringSnapper = function LineStringSnapper () {\n this._snapTolerance = 0.0;\n this._srcPts = null;\n this._seg = new LineSegment();\n this._allowSnappingToSourceVertices = false;\n this._isClosed = false;\n if (arguments[0] instanceof LineString && typeof arguments[1] === 'number') {\n var srcLine = arguments[0];\n var snapTolerance = arguments[1];\n LineStringSnapper.call(this, srcLine.getCoordinates(), snapTolerance);\n } else if (arguments[0] instanceof Array && typeof arguments[1] === 'number') {\n var srcPts = arguments[0];\n var snapTolerance$1 = arguments[1];\n this._srcPts = srcPts;\n this._isClosed = LineStringSnapper.isClosed(srcPts);\n this._snapTolerance = snapTolerance$1;\n }\n};\nLineStringSnapper.prototype.snapVertices = function snapVertices (srcCoords, snapPts) {\n var this$1 = this;\n\n var end = this._isClosed ? srcCoords.size() - 1 : srcCoords.size();\n for (var i = 0; i < end; i++) {\n var srcPt = srcCoords.get(i);\n var snapVert = this$1.findSnapForVertex(srcPt, snapPts);\n if (snapVert !== null) {\n srcCoords.set(i, new Coordinate(snapVert));\n if (i === 0 && this$1._isClosed) { srcCoords.set(srcCoords.size() - 1, new Coordinate(snapVert)); }\n }\n }\n};\nLineStringSnapper.prototype.findSnapForVertex = function findSnapForVertex (pt, snapPts) {\n var this$1 = this;\n\n for (var i = 0; i < snapPts.length; i++) {\n if (pt.equals2D(snapPts[i])) { return null }\n if (pt.distance(snapPts[i]) < this$1._snapTolerance) { return snapPts[i] }\n }\n return null\n};\nLineStringSnapper.prototype.snapTo = function snapTo (snapPts) {\n var coordList = new CoordinateList(this._srcPts);\n this.snapVertices(coordList, snapPts);\n this.snapSegments(coordList, snapPts);\n var newPts = coordList.toCoordinateArray();\n return newPts\n};\nLineStringSnapper.prototype.snapSegments = function snapSegments (srcCoords, snapPts) {\n var this$1 = this;\n\n if (snapPts.length === 0) { return null }\n var distinctPtCount = snapPts.length;\n if (snapPts[0].equals2D(snapPts[snapPts.length - 1])) { distinctPtCount = snapPts.length - 1; }\n for (var i = 0; i < distinctPtCount; i++) {\n var snapPt = snapPts[i];\n var index = this$1.findSegmentIndexToSnap(snapPt, srcCoords);\n if (index >= 0) {\n srcCoords.add(index + 1, new Coordinate(snapPt), false);\n }\n }\n};\nLineStringSnapper.prototype.findSegmentIndexToSnap = function findSegmentIndexToSnap (snapPt, srcCoords) {\n var this$1 = this;\n\n var minDist = Double.MAX_VALUE;\n var snapIndex = -1;\n for (var i = 0; i < srcCoords.size() - 1; i++) {\n this$1._seg.p0 = srcCoords.get(i);\n this$1._seg.p1 = srcCoords.get(i + 1);\n if (this$1._seg.p0.equals2D(snapPt) || this$1._seg.p1.equals2D(snapPt)) {\n if (this$1._allowSnappingToSourceVertices) { continue; } else { return -1 }\n }\n var dist = this$1._seg.distance(snapPt);\n if (dist < this$1._snapTolerance && dist < minDist) {\n minDist = dist;\n snapIndex = i;\n }\n }\n return snapIndex\n};\nLineStringSnapper.prototype.setAllowSnappingToSourceVertices = function setAllowSnappingToSourceVertices (allowSnappingToSourceVertices) {\n this._allowSnappingToSourceVertices = allowSnappingToSourceVertices;\n};\nLineStringSnapper.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nLineStringSnapper.prototype.getClass = function getClass () {\n return LineStringSnapper\n};\nLineStringSnapper.isClosed = function isClosed (pts) {\n if (pts.length <= 1) { return false }\n return pts[0].equals2D(pts[pts.length - 1])\n};\n\nvar GeometrySnapper = function GeometrySnapper (srcGeom) {\n this._srcGeom = srcGeom || null;\n};\n\nvar staticAccessors$41 = { SNAP_PRECISION_FACTOR: { configurable: true } };\nGeometrySnapper.prototype.snapTo = function snapTo (snapGeom, snapTolerance) {\n var snapPts = this.extractTargetCoordinates(snapGeom);\n var snapTrans = new SnapTransformer(snapTolerance, snapPts);\n return snapTrans.transform(this._srcGeom)\n};\nGeometrySnapper.prototype.snapToSelf = function snapToSelf (snapTolerance, cleanResult) {\n var snapPts = this.extractTargetCoordinates(this._srcGeom);\n var snapTrans = new SnapTransformer(snapTolerance, snapPts, true);\n var snappedGeom = snapTrans.transform(this._srcGeom);\n var result = snappedGeom;\n if (cleanResult && hasInterface(result, Polygonal)) {\n result = snappedGeom.buffer(0);\n }\n return result\n};\nGeometrySnapper.prototype.computeSnapTolerance = function computeSnapTolerance (ringPts) {\n var minSegLen = this.computeMinimumSegmentLength(ringPts);\n var snapTol = minSegLen / 10;\n return snapTol\n};\nGeometrySnapper.prototype.extractTargetCoordinates = function extractTargetCoordinates (g) {\n var ptSet = new TreeSet();\n var pts = g.getCoordinates();\n for (var i = 0; i < pts.length; i++) {\n ptSet.add(pts[i]);\n }\n return ptSet.toArray(new Array(0).fill(null))\n};\nGeometrySnapper.prototype.computeMinimumSegmentLength = function computeMinimumSegmentLength (pts) {\n var minSegLen = Double.MAX_VALUE;\n for (var i = 0; i < pts.length - 1; i++) {\n var segLen = pts[i].distance(pts[i + 1]);\n if (segLen < minSegLen) { minSegLen = segLen; }\n }\n return minSegLen\n};\nGeometrySnapper.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nGeometrySnapper.prototype.getClass = function getClass () {\n return GeometrySnapper\n};\nGeometrySnapper.snap = function snap (g0, g1, snapTolerance) {\n var snapGeom = new Array(2).fill(null);\n var snapper0 = new GeometrySnapper(g0);\n snapGeom[0] = snapper0.snapTo(g1, snapTolerance);\n var snapper1 = new GeometrySnapper(g1);\n snapGeom[1] = snapper1.snapTo(snapGeom[0], snapTolerance);\n return snapGeom\n};\nGeometrySnapper.computeOverlaySnapTolerance = function computeOverlaySnapTolerance () {\n if (arguments.length === 1) {\n var g = arguments[0];\n var snapTolerance = GeometrySnapper.computeSizeBasedSnapTolerance(g);\n var pm = g.getPrecisionModel();\n if (pm.getType() === PrecisionModel.FIXED) {\n var fixedSnapTol = 1 / pm.getScale() * 2 / 1.415;\n if (fixedSnapTol > snapTolerance) { snapTolerance = fixedSnapTol; }\n }\n return snapTolerance\n } else if (arguments.length === 2) {\n var g0 = arguments[0];\n var g1 = arguments[1];\n return Math.min(GeometrySnapper.computeOverlaySnapTolerance(g0), GeometrySnapper.computeOverlaySnapTolerance(g1))\n }\n};\nGeometrySnapper.computeSizeBasedSnapTolerance = function computeSizeBasedSnapTolerance (g) {\n var env = g.getEnvelopeInternal();\n var minDimension = Math.min(env.getHeight(), env.getWidth());\n var snapTol = minDimension * GeometrySnapper.SNAP_PRECISION_FACTOR;\n return snapTol\n};\nGeometrySnapper.snapToSelf = function snapToSelf (geom, snapTolerance, cleanResult) {\n var snapper0 = new GeometrySnapper(geom);\n return snapper0.snapToSelf(snapTolerance, cleanResult)\n};\nstaticAccessors$41.SNAP_PRECISION_FACTOR.get = function () { return 1e-9 };\n\nObject.defineProperties( GeometrySnapper, staticAccessors$41 );\n\nvar SnapTransformer = (function (GeometryTransformer$$1) {\n function SnapTransformer (snapTolerance, snapPts, isSelfSnap) {\n GeometryTransformer$$1.call(this);\n this._snapTolerance = snapTolerance || null;\n this._snapPts = snapPts || null;\n this._isSelfSnap = (isSelfSnap !== undefined) ? isSelfSnap : false;\n }\n\n if ( GeometryTransformer$$1 ) SnapTransformer.__proto__ = GeometryTransformer$$1;\n SnapTransformer.prototype = Object.create( GeometryTransformer$$1 && GeometryTransformer$$1.prototype );\n SnapTransformer.prototype.constructor = SnapTransformer;\n SnapTransformer.prototype.snapLine = function snapLine (srcPts, snapPts) {\n var snapper = new LineStringSnapper(srcPts, this._snapTolerance);\n snapper.setAllowSnappingToSourceVertices(this._isSelfSnap);\n return snapper.snapTo(snapPts)\n };\n SnapTransformer.prototype.transformCoordinates = function transformCoordinates (coords, parent) {\n var srcPts = coords.toCoordinateArray();\n var newPts = this.snapLine(srcPts, this._snapPts);\n return this._factory.getCoordinateSequenceFactory().create(newPts)\n };\n SnapTransformer.prototype.interfaces_ = function interfaces_ () {\n return []\n };\n SnapTransformer.prototype.getClass = function getClass () {\n return SnapTransformer\n };\n\n return SnapTransformer;\n}(GeometryTransformer));\n\nvar CommonBits = function CommonBits () {\n this._isFirst = true;\n this._commonMantissaBitsCount = 53;\n this._commonBits = 0;\n this._commonSignExp = null;\n};\nCommonBits.prototype.getCommon = function getCommon () {\n return Double.longBitsToDouble(this._commonBits)\n};\nCommonBits.prototype.add = function add (num) {\n var numBits = Double.doubleToLongBits(num);\n if (this._isFirst) {\n this._commonBits = numBits;\n this._commonSignExp = CommonBits.signExpBits(this._commonBits);\n this._isFirst = false;\n return null\n }\n var numSignExp = CommonBits.signExpBits(numBits);\n if (numSignExp !== this._commonSignExp) {\n this._commonBits = 0;\n return null\n }\n this._commonMantissaBitsCount = CommonBits.numCommonMostSigMantissaBits(this._commonBits, numBits);\n this._commonBits = CommonBits.zeroLowerBits(this._commonBits, 64 - (12 + this._commonMantissaBitsCount));\n};\nCommonBits.prototype.toString = function toString () {\n if (arguments.length === 1) {\n var bits = arguments[0];\n var x = Double.longBitsToDouble(bits);\n var numStr = Double.toBinaryString(bits);\n var padStr = '0000000000000000000000000000000000000000000000000000000000000000' + numStr;\n var bitStr = padStr.substring(padStr.length - 64);\n var str = bitStr.substring(0, 1) + ' ' + bitStr.substring(1, 12) + '(exp) ' + bitStr.substring(12) + ' [ ' + x + ' ]';\n return str\n }\n};\nCommonBits.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nCommonBits.prototype.getClass = function getClass () {\n return CommonBits\n};\nCommonBits.getBit = function getBit (bits, i) {\n var mask = 1 << i;\n return (bits & mask) !== 0 ? 1 : 0\n};\nCommonBits.signExpBits = function signExpBits (num) {\n return num >> 52\n};\nCommonBits.zeroLowerBits = function zeroLowerBits (bits, nBits) {\n var invMask = (1 << nBits) - 1;\n var mask = ~invMask;\n var zeroed = bits & mask;\n return zeroed\n};\nCommonBits.numCommonMostSigMantissaBits = function numCommonMostSigMantissaBits (num1, num2) {\n var count = 0;\n for (var i = 52; i >= 0; i--) {\n if (CommonBits.getBit(num1, i) !== CommonBits.getBit(num2, i)) { return count }\n count++;\n }\n return 52\n};\n\nvar CommonBitsRemover = function CommonBitsRemover () {\n this._commonCoord = null;\n this._ccFilter = new CommonCoordinateFilter();\n};\n\nvar staticAccessors$42 = { CommonCoordinateFilter: { configurable: true },Translater: { configurable: true } };\nCommonBitsRemover.prototype.addCommonBits = function addCommonBits (geom) {\n var trans = new Translater(this._commonCoord);\n geom.apply(trans);\n geom.geometryChanged();\n};\nCommonBitsRemover.prototype.removeCommonBits = function removeCommonBits (geom) {\n if (this._commonCoord.x === 0.0 && this._commonCoord.y === 0.0) { return geom }\n var invCoord = new Coordinate(this._commonCoord);\n invCoord.x = -invCoord.x;\n invCoord.y = -invCoord.y;\n var trans = new Translater(invCoord);\n geom.apply(trans);\n geom.geometryChanged();\n return geom\n};\nCommonBitsRemover.prototype.getCommonCoordinate = function getCommonCoordinate () {\n return this._commonCoord\n};\nCommonBitsRemover.prototype.add = function add (geom) {\n geom.apply(this._ccFilter);\n this._commonCoord = this._ccFilter.getCommonCoordinate();\n};\nCommonBitsRemover.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nCommonBitsRemover.prototype.getClass = function getClass () {\n return CommonBitsRemover\n};\nstaticAccessors$42.CommonCoordinateFilter.get = function () { return CommonCoordinateFilter };\nstaticAccessors$42.Translater.get = function () { return Translater };\n\nObject.defineProperties( CommonBitsRemover, staticAccessors$42 );\n\nvar CommonCoordinateFilter = function CommonCoordinateFilter () {\n this._commonBitsX = new CommonBits();\n this._commonBitsY = new CommonBits();\n};\nCommonCoordinateFilter.prototype.filter = function filter (coord) {\n this._commonBitsX.add(coord.x);\n this._commonBitsY.add(coord.y);\n};\nCommonCoordinateFilter.prototype.getCommonCoordinate = function getCommonCoordinate () {\n return new Coordinate(this._commonBitsX.getCommon(), this._commonBitsY.getCommon())\n};\nCommonCoordinateFilter.prototype.interfaces_ = function interfaces_ () {\n return [CoordinateFilter]\n};\nCommonCoordinateFilter.prototype.getClass = function getClass () {\n return CommonCoordinateFilter\n};\n\nvar Translater = function Translater () {\n this.trans = null;\n var trans = arguments[0];\n this.trans = trans;\n};\nTranslater.prototype.filter = function filter (seq, i) {\n var xp = seq.getOrdinate(i, 0) + this.trans.x;\n var yp = seq.getOrdinate(i, 1) + this.trans.y;\n seq.setOrdinate(i, 0, xp);\n seq.setOrdinate(i, 1, yp);\n};\nTranslater.prototype.isDone = function isDone () {\n return false\n};\nTranslater.prototype.isGeometryChanged = function isGeometryChanged () {\n return true\n};\nTranslater.prototype.interfaces_ = function interfaces_ () {\n return [CoordinateSequenceFilter]\n};\nTranslater.prototype.getClass = function getClass () {\n return Translater\n};\n\nvar SnapOverlayOp = function SnapOverlayOp (g1, g2) {\n this._geom = new Array(2).fill(null);\n this._snapTolerance = null;\n this._cbr = null;\n this._geom[0] = g1;\n this._geom[1] = g2;\n this.computeSnapTolerance();\n};\nSnapOverlayOp.prototype.selfSnap = function selfSnap (geom) {\n var snapper0 = new GeometrySnapper(geom);\n var snapGeom = snapper0.snapTo(geom, this._snapTolerance);\n return snapGeom\n};\nSnapOverlayOp.prototype.removeCommonBits = function removeCommonBits (geom) {\n this._cbr = new CommonBitsRemover();\n this._cbr.add(geom[0]);\n this._cbr.add(geom[1]);\n var remGeom = new Array(2).fill(null);\n remGeom[0] = this._cbr.removeCommonBits(geom[0].copy());\n remGeom[1] = this._cbr.removeCommonBits(geom[1].copy());\n return remGeom\n};\nSnapOverlayOp.prototype.prepareResult = function prepareResult (geom) {\n this._cbr.addCommonBits(geom);\n return geom\n};\nSnapOverlayOp.prototype.getResultGeometry = function getResultGeometry (opCode) {\n var prepGeom = this.snap(this._geom);\n var result = OverlayOp.overlayOp(prepGeom[0], prepGeom[1], opCode);\n return this.prepareResult(result)\n};\nSnapOverlayOp.prototype.checkValid = function checkValid (g) {\n if (!g.isValid()) {\n System.out.println('Snapped geometry is invalid');\n }\n};\nSnapOverlayOp.prototype.computeSnapTolerance = function computeSnapTolerance () {\n this._snapTolerance = GeometrySnapper.computeOverlaySnapTolerance(this._geom[0], this._geom[1]);\n};\nSnapOverlayOp.prototype.snap = function snap (geom) {\n var remGeom = this.removeCommonBits(geom);\n var snapGeom = GeometrySnapper.snap(remGeom[0], remGeom[1], this._snapTolerance);\n return snapGeom\n};\nSnapOverlayOp.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nSnapOverlayOp.prototype.getClass = function getClass () {\n return SnapOverlayOp\n};\nSnapOverlayOp.overlayOp = function overlayOp (g0, g1, opCode) {\n var op = new SnapOverlayOp(g0, g1);\n return op.getResultGeometry(opCode)\n};\nSnapOverlayOp.union = function union (g0, g1) {\n return SnapOverlayOp.overlayOp(g0, g1, OverlayOp.UNION)\n};\nSnapOverlayOp.intersection = function intersection (g0, g1) {\n return SnapOverlayOp.overlayOp(g0, g1, OverlayOp.INTERSECTION)\n};\nSnapOverlayOp.symDifference = function symDifference (g0, g1) {\n return SnapOverlayOp.overlayOp(g0, g1, OverlayOp.SYMDIFFERENCE)\n};\nSnapOverlayOp.difference = function difference (g0, g1) {\n return SnapOverlayOp.overlayOp(g0, g1, OverlayOp.DIFFERENCE)\n};\n\nvar SnapIfNeededOverlayOp = function SnapIfNeededOverlayOp (g1, g2) {\n this._geom = new Array(2).fill(null);\n this._geom[0] = g1;\n this._geom[1] = g2;\n};\nSnapIfNeededOverlayOp.prototype.getResultGeometry = function getResultGeometry (opCode) {\n var result = null;\n var isSuccess = false;\n var savedException = null;\n try {\n result = OverlayOp.overlayOp(this._geom[0], this._geom[1], opCode);\n var isValid = true;\n if (isValid) { isSuccess = true; }\n } catch (ex) {\n if (ex instanceof RuntimeException) {\n savedException = ex;\n } else { throw ex }\n } finally {}\n if (!isSuccess) {\n try {\n result = SnapOverlayOp.overlayOp(this._geom[0], this._geom[1], opCode);\n } catch (ex) {\n if (ex instanceof RuntimeException) {\n throw savedException\n } else { throw ex }\n } finally {}\n }\n return result\n};\nSnapIfNeededOverlayOp.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nSnapIfNeededOverlayOp.prototype.getClass = function getClass () {\n return SnapIfNeededOverlayOp\n};\nSnapIfNeededOverlayOp.overlayOp = function overlayOp (g0, g1, opCode) {\n var op = new SnapIfNeededOverlayOp(g0, g1);\n return op.getResultGeometry(opCode)\n};\nSnapIfNeededOverlayOp.union = function union (g0, g1) {\n return SnapIfNeededOverlayOp.overlayOp(g0, g1, OverlayOp.UNION)\n};\nSnapIfNeededOverlayOp.intersection = function intersection (g0, g1) {\n return SnapIfNeededOverlayOp.overlayOp(g0, g1, OverlayOp.INTERSECTION)\n};\nSnapIfNeededOverlayOp.symDifference = function symDifference (g0, g1) {\n return SnapIfNeededOverlayOp.overlayOp(g0, g1, OverlayOp.SYMDIFFERENCE)\n};\nSnapIfNeededOverlayOp.difference = function difference (g0, g1) {\n return SnapIfNeededOverlayOp.overlayOp(g0, g1, OverlayOp.DIFFERENCE)\n};\n\nvar MonotoneChain$2 = function MonotoneChain () {\n this.mce = null;\n this.chainIndex = null;\n var mce = arguments[0];\n var chainIndex = arguments[1];\n this.mce = mce;\n this.chainIndex = chainIndex;\n};\nMonotoneChain$2.prototype.computeIntersections = function computeIntersections (mc, si) {\n this.mce.computeIntersectsForChain(this.chainIndex, mc.mce, mc.chainIndex, si);\n};\nMonotoneChain$2.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nMonotoneChain$2.prototype.getClass = function getClass () {\n return MonotoneChain$2\n};\n\nvar SweepLineEvent = function SweepLineEvent () {\n this._label = null;\n this._xValue = null;\n this._eventType = null;\n this._insertEvent = null;\n this._deleteEventIndex = null;\n this._obj = null;\n if (arguments.length === 2) {\n var x = arguments[0];\n var insertEvent = arguments[1];\n this._eventType = SweepLineEvent.DELETE;\n this._xValue = x;\n this._insertEvent = insertEvent;\n } else if (arguments.length === 3) {\n var label = arguments[0];\n var x$1 = arguments[1];\n var obj = arguments[2];\n this._eventType = SweepLineEvent.INSERT;\n this._label = label;\n this._xValue = x$1;\n this._obj = obj;\n }\n};\n\nvar staticAccessors$43 = { INSERT: { configurable: true },DELETE: { configurable: true } };\nSweepLineEvent.prototype.isDelete = function isDelete () {\n return this._eventType === SweepLineEvent.DELETE\n};\nSweepLineEvent.prototype.setDeleteEventIndex = function setDeleteEventIndex (deleteEventIndex) {\n this._deleteEventIndex = deleteEventIndex;\n};\nSweepLineEvent.prototype.getObject = function getObject () {\n return this._obj\n};\nSweepLineEvent.prototype.compareTo = function compareTo (o) {\n var pe = o;\n if (this._xValue < pe._xValue) { return -1 }\n if (this._xValue > pe._xValue) { return 1 }\n if (this._eventType < pe._eventType) { return -1 }\n if (this._eventType > pe._eventType) { return 1 }\n return 0\n};\nSweepLineEvent.prototype.getInsertEvent = function getInsertEvent () {\n return this._insertEvent\n};\nSweepLineEvent.prototype.isInsert = function isInsert () {\n return this._eventType === SweepLineEvent.INSERT\n};\nSweepLineEvent.prototype.isSameLabel = function isSameLabel (ev) {\n if (this._label === null) { return false }\n return this._label === ev._label\n};\nSweepLineEvent.prototype.getDeleteEventIndex = function getDeleteEventIndex () {\n return this._deleteEventIndex\n};\nSweepLineEvent.prototype.interfaces_ = function interfaces_ () {\n return [Comparable]\n};\nSweepLineEvent.prototype.getClass = function getClass () {\n return SweepLineEvent\n};\nstaticAccessors$43.INSERT.get = function () { return 1 };\nstaticAccessors$43.DELETE.get = function () { return 2 };\n\nObject.defineProperties( SweepLineEvent, staticAccessors$43 );\n\nvar EdgeSetIntersector = function EdgeSetIntersector () {};\n\nEdgeSetIntersector.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nEdgeSetIntersector.prototype.getClass = function getClass () {\n return EdgeSetIntersector\n};\n\nvar SegmentIntersector$2 = function SegmentIntersector () {\n this._hasIntersection = false;\n this._hasProper = false;\n this._hasProperInterior = false;\n this._properIntersectionPoint = null;\n this._li = null;\n this._includeProper = null;\n this._recordIsolated = null;\n this._isSelfIntersection = null;\n this._numIntersections = 0;\n this.numTests = 0;\n this._bdyNodes = null;\n this._isDone = false;\n this._isDoneWhenProperInt = false;\n var li = arguments[0];\n var includeProper = arguments[1];\n var recordIsolated = arguments[2];\n this._li = li;\n this._includeProper = includeProper;\n this._recordIsolated = recordIsolated;\n};\nSegmentIntersector$2.prototype.isTrivialIntersection = function isTrivialIntersection (e0, segIndex0, e1, segIndex1) {\n if (e0 === e1) {\n if (this._li.getIntersectionNum() === 1) {\n if (SegmentIntersector$2.isAdjacentSegments(segIndex0, segIndex1)) { return true }\n if (e0.isClosed()) {\n var maxSegIndex = e0.getNumPoints() - 1;\n if ((segIndex0 === 0 && segIndex1 === maxSegIndex) ||\n (segIndex1 === 0 && segIndex0 === maxSegIndex)) {\n return true\n }\n }\n }\n }\n return false\n};\nSegmentIntersector$2.prototype.getProperIntersectionPoint = function getProperIntersectionPoint () {\n return this._properIntersectionPoint\n};\nSegmentIntersector$2.prototype.setIsDoneIfProperInt = function setIsDoneIfProperInt (isDoneWhenProperInt) {\n this._isDoneWhenProperInt = isDoneWhenProperInt;\n};\nSegmentIntersector$2.prototype.hasProperInteriorIntersection = function hasProperInteriorIntersection () {\n return this._hasProperInterior\n};\nSegmentIntersector$2.prototype.isBoundaryPointInternal = function isBoundaryPointInternal (li, bdyNodes) {\n for (var i = bdyNodes.iterator(); i.hasNext();) {\n var node = i.next();\n var pt = node.getCoordinate();\n if (li.isIntersection(pt)) { return true }\n }\n return false\n};\nSegmentIntersector$2.prototype.hasProperIntersection = function hasProperIntersection () {\n return this._hasProper\n};\nSegmentIntersector$2.prototype.hasIntersection = function hasIntersection () {\n return this._hasIntersection\n};\nSegmentIntersector$2.prototype.isDone = function isDone () {\n return this._isDone\n};\nSegmentIntersector$2.prototype.isBoundaryPoint = function isBoundaryPoint (li, bdyNodes) {\n if (bdyNodes === null) { return false }\n if (this.isBoundaryPointInternal(li, bdyNodes[0])) { return true }\n if (this.isBoundaryPointInternal(li, bdyNodes[1])) { return true }\n return false\n};\nSegmentIntersector$2.prototype.setBoundaryNodes = function setBoundaryNodes (bdyNodes0, bdyNodes1) {\n this._bdyNodes = new Array(2).fill(null);\n this._bdyNodes[0] = bdyNodes0;\n this._bdyNodes[1] = bdyNodes1;\n};\nSegmentIntersector$2.prototype.addIntersections = function addIntersections (e0, segIndex0, e1, segIndex1) {\n if (e0 === e1 && segIndex0 === segIndex1) { return null }\n this.numTests++;\n var p00 = e0.getCoordinates()[segIndex0];\n var p01 = e0.getCoordinates()[segIndex0 + 1];\n var p10 = e1.getCoordinates()[segIndex1];\n var p11 = e1.getCoordinates()[segIndex1 + 1];\n this._li.computeIntersection(p00, p01, p10, p11);\n if (this._li.hasIntersection()) {\n if (this._recordIsolated) {\n e0.setIsolated(false);\n e1.setIsolated(false);\n }\n this._numIntersections++;\n if (!this.isTrivialIntersection(e0, segIndex0, e1, segIndex1)) {\n this._hasIntersection = true;\n if (this._includeProper || !this._li.isProper()) {\n e0.addIntersections(this._li, segIndex0, 0);\n e1.addIntersections(this._li, segIndex1, 1);\n }\n if (this._li.isProper()) {\n this._properIntersectionPoint = this._li.getIntersection(0).copy();\n this._hasProper = true;\n if (this._isDoneWhenProperInt) {\n this._isDone = true;\n }\n if (!this.isBoundaryPoint(this._li, this._bdyNodes)) { this._hasProperInterior = true; }\n }\n }\n }\n};\nSegmentIntersector$2.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nSegmentIntersector$2.prototype.getClass = function getClass () {\n return SegmentIntersector$2\n};\nSegmentIntersector$2.isAdjacentSegments = function isAdjacentSegments (i1, i2) {\n return Math.abs(i1 - i2) === 1\n};\n\nvar SimpleMCSweepLineIntersector = (function (EdgeSetIntersector$$1) {\n function SimpleMCSweepLineIntersector () {\n EdgeSetIntersector$$1.call(this);\n this.events = new ArrayList();\n this.nOverlaps = null;\n }\n\n if ( EdgeSetIntersector$$1 ) SimpleMCSweepLineIntersector.__proto__ = EdgeSetIntersector$$1;\n SimpleMCSweepLineIntersector.prototype = Object.create( EdgeSetIntersector$$1 && EdgeSetIntersector$$1.prototype );\n SimpleMCSweepLineIntersector.prototype.constructor = SimpleMCSweepLineIntersector;\n SimpleMCSweepLineIntersector.prototype.prepareEvents = function prepareEvents () {\n var this$1 = this;\n\n Collections.sort(this.events);\n for (var i = 0; i < this.events.size(); i++) {\n var ev = this$1.events.get(i);\n if (ev.isDelete()) {\n ev.getInsertEvent().setDeleteEventIndex(i);\n }\n }\n };\n SimpleMCSweepLineIntersector.prototype.computeIntersections = function computeIntersections () {\n var this$1 = this;\n\n if (arguments.length === 1) {\n var si = arguments[0];\n this.nOverlaps = 0;\n this.prepareEvents();\n for (var i = 0; i < this.events.size(); i++) {\n var ev = this$1.events.get(i);\n if (ev.isInsert()) {\n this$1.processOverlaps(i, ev.getDeleteEventIndex(), ev, si);\n }\n if (si.isDone()) {\n break\n }\n }\n } else if (arguments.length === 3) {\n if (arguments[2] instanceof SegmentIntersector$2 && (hasInterface(arguments[0], List) && hasInterface(arguments[1], List))) {\n var edges0 = arguments[0];\n var edges1 = arguments[1];\n var si$1 = arguments[2];\n this.addEdges(edges0, edges0);\n this.addEdges(edges1, edges1);\n this.computeIntersections(si$1);\n } else if (typeof arguments[2] === 'boolean' && (hasInterface(arguments[0], List) && arguments[1] instanceof SegmentIntersector$2)) {\n var edges = arguments[0];\n var si$2 = arguments[1];\n var testAllSegments = arguments[2];\n if (testAllSegments) { this.addEdges(edges, null); } else { this.addEdges(edges); }\n this.computeIntersections(si$2);\n }\n }\n };\n SimpleMCSweepLineIntersector.prototype.addEdge = function addEdge (edge, edgeSet) {\n var this$1 = this;\n\n var mce = edge.getMonotoneChainEdge();\n var startIndex = mce.getStartIndexes();\n for (var i = 0; i < startIndex.length - 1; i++) {\n var mc = new MonotoneChain$2(mce, i);\n var insertEvent = new SweepLineEvent(edgeSet, mce.getMinX(i), mc);\n this$1.events.add(insertEvent);\n this$1.events.add(new SweepLineEvent(mce.getMaxX(i), insertEvent));\n }\n };\n SimpleMCSweepLineIntersector.prototype.processOverlaps = function processOverlaps (start, end, ev0, si) {\n var this$1 = this;\n\n var mc0 = ev0.getObject();\n for (var i = start; i < end; i++) {\n var ev1 = this$1.events.get(i);\n if (ev1.isInsert()) {\n var mc1 = ev1.getObject();\n if (!ev0.isSameLabel(ev1)) {\n mc0.computeIntersections(mc1, si);\n this$1.nOverlaps++;\n }\n }\n }\n };\n SimpleMCSweepLineIntersector.prototype.addEdges = function addEdges () {\n var this$1 = this;\n\n if (arguments.length === 1) {\n var edges = arguments[0];\n for (var i = edges.iterator(); i.hasNext();) {\n var edge = i.next();\n this$1.addEdge(edge, edge);\n }\n } else if (arguments.length === 2) {\n var edges$1 = arguments[0];\n var edgeSet = arguments[1];\n for (var i$1 = edges$1.iterator(); i$1.hasNext();) {\n var edge$1 = i$1.next();\n this$1.addEdge(edge$1, edgeSet);\n }\n }\n };\n SimpleMCSweepLineIntersector.prototype.interfaces_ = function interfaces_ () {\n return []\n };\n SimpleMCSweepLineIntersector.prototype.getClass = function getClass () {\n return SimpleMCSweepLineIntersector\n };\n\n return SimpleMCSweepLineIntersector;\n}(EdgeSetIntersector));\n\nvar IntervalRTreeNode = function IntervalRTreeNode () {\n this._min = Double.POSITIVE_INFINITY;\n this._max = Double.NEGATIVE_INFINITY;\n};\n\nvar staticAccessors$45 = { NodeComparator: { configurable: true } };\nIntervalRTreeNode.prototype.getMin = function getMin () {\n return this._min\n};\nIntervalRTreeNode.prototype.intersects = function intersects (queryMin, queryMax) {\n if (this._min > queryMax || this._max < queryMin) { return false }\n return true\n};\nIntervalRTreeNode.prototype.getMax = function getMax () {\n return this._max\n};\nIntervalRTreeNode.prototype.toString = function toString () {\n return WKTWriter.toLineString(new Coordinate(this._min, 0), new Coordinate(this._max, 0))\n};\nIntervalRTreeNode.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nIntervalRTreeNode.prototype.getClass = function getClass () {\n return IntervalRTreeNode\n};\nstaticAccessors$45.NodeComparator.get = function () { return NodeComparator };\n\nObject.defineProperties( IntervalRTreeNode, staticAccessors$45 );\n\nvar NodeComparator = function NodeComparator () {};\n\nNodeComparator.prototype.compare = function compare (o1, o2) {\n var n1 = o1;\n var n2 = o2;\n var mid1 = (n1._min + n1._max) / 2;\n var mid2 = (n2._min + n2._max) / 2;\n if (mid1 < mid2) { return -1 }\n if (mid1 > mid2) { return 1 }\n return 0\n};\nNodeComparator.prototype.interfaces_ = function interfaces_ () {\n return [Comparator]\n};\nNodeComparator.prototype.getClass = function getClass () {\n return NodeComparator\n};\n\nvar IntervalRTreeLeafNode = (function (IntervalRTreeNode$$1) {\n function IntervalRTreeLeafNode () {\n IntervalRTreeNode$$1.call(this);\n this._item = null;\n var min = arguments[0];\n var max = arguments[1];\n var item = arguments[2];\n this._min = min;\n this._max = max;\n this._item = item;\n }\n\n if ( IntervalRTreeNode$$1 ) IntervalRTreeLeafNode.__proto__ = IntervalRTreeNode$$1;\n IntervalRTreeLeafNode.prototype = Object.create( IntervalRTreeNode$$1 && IntervalRTreeNode$$1.prototype );\n IntervalRTreeLeafNode.prototype.constructor = IntervalRTreeLeafNode;\n IntervalRTreeLeafNode.prototype.query = function query (queryMin, queryMax, visitor) {\n if (!this.intersects(queryMin, queryMax)) { return null }\n visitor.visitItem(this._item);\n };\n IntervalRTreeLeafNode.prototype.interfaces_ = function interfaces_ () {\n return []\n };\n IntervalRTreeLeafNode.prototype.getClass = function getClass () {\n return IntervalRTreeLeafNode\n };\n\n return IntervalRTreeLeafNode;\n}(IntervalRTreeNode));\n\nvar IntervalRTreeBranchNode = (function (IntervalRTreeNode$$1) {\n function IntervalRTreeBranchNode () {\n IntervalRTreeNode$$1.call(this);\n this._node1 = null;\n this._node2 = null;\n var n1 = arguments[0];\n var n2 = arguments[1];\n this._node1 = n1;\n this._node2 = n2;\n this.buildExtent(this._node1, this._node2);\n }\n\n if ( IntervalRTreeNode$$1 ) IntervalRTreeBranchNode.__proto__ = IntervalRTreeNode$$1;\n IntervalRTreeBranchNode.prototype = Object.create( IntervalRTreeNode$$1 && IntervalRTreeNode$$1.prototype );\n IntervalRTreeBranchNode.prototype.constructor = IntervalRTreeBranchNode;\n IntervalRTreeBranchNode.prototype.buildExtent = function buildExtent (n1, n2) {\n this._min = Math.min(n1._min, n2._min);\n this._max = Math.max(n1._max, n2._max);\n };\n IntervalRTreeBranchNode.prototype.query = function query (queryMin, queryMax, visitor) {\n if (!this.intersects(queryMin, queryMax)) {\n return null\n }\n if (this._node1 !== null) { this._node1.query(queryMin, queryMax, visitor); }\n if (this._node2 !== null) { this._node2.query(queryMin, queryMax, visitor); }\n };\n IntervalRTreeBranchNode.prototype.interfaces_ = function interfaces_ () {\n return []\n };\n IntervalRTreeBranchNode.prototype.getClass = function getClass () {\n return IntervalRTreeBranchNode\n };\n\n return IntervalRTreeBranchNode;\n}(IntervalRTreeNode));\n\nvar SortedPackedIntervalRTree = function SortedPackedIntervalRTree () {\n this._leaves = new ArrayList();\n this._root = null;\n this._level = 0;\n};\nSortedPackedIntervalRTree.prototype.buildTree = function buildTree () {\n var this$1 = this;\n\n Collections.sort(this._leaves, new IntervalRTreeNode.NodeComparator());\n var src = this._leaves;\n var temp = null;\n var dest = new ArrayList();\n while (true) {\n this$1.buildLevel(src, dest);\n if (dest.size() === 1) { return dest.get(0) }\n temp = src;\n src = dest;\n dest = temp;\n }\n};\nSortedPackedIntervalRTree.prototype.insert = function insert (min, max, item) {\n if (this._root !== null) { throw new Error('Index cannot be added to once it has been queried') }\n this._leaves.add(new IntervalRTreeLeafNode(min, max, item));\n};\nSortedPackedIntervalRTree.prototype.query = function query (min, max, visitor) {\n this.init();\n this._root.query(min, max, visitor);\n};\nSortedPackedIntervalRTree.prototype.buildRoot = function buildRoot () {\n if (this._root !== null) { return null }\n this._root = this.buildTree();\n};\nSortedPackedIntervalRTree.prototype.printNode = function printNode (node) {\n System.out.println(WKTWriter.toLineString(new Coordinate(node._min, this._level), new Coordinate(node._max, this._level)));\n};\nSortedPackedIntervalRTree.prototype.init = function init () {\n if (this._root !== null) { return null }\n this.buildRoot();\n};\nSortedPackedIntervalRTree.prototype.buildLevel = function buildLevel (src, dest) {\n this._level++;\n dest.clear();\n for (var i = 0; i < src.size(); i += 2) {\n var n1 = src.get(i);\n var n2 = i + 1 < src.size() ? src.get(i) : null;\n if (n2 === null) {\n dest.add(n1);\n } else {\n var node = new IntervalRTreeBranchNode(src.get(i), src.get(i + 1));\n dest.add(node);\n }\n }\n};\nSortedPackedIntervalRTree.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nSortedPackedIntervalRTree.prototype.getClass = function getClass () {\n return SortedPackedIntervalRTree\n};\n\nvar ArrayListVisitor = function ArrayListVisitor () {\n this._items = new ArrayList();\n};\nArrayListVisitor.prototype.visitItem = function visitItem (item) {\n this._items.add(item);\n};\nArrayListVisitor.prototype.getItems = function getItems () {\n return this._items\n};\nArrayListVisitor.prototype.interfaces_ = function interfaces_ () {\n return [ItemVisitor]\n};\nArrayListVisitor.prototype.getClass = function getClass () {\n return ArrayListVisitor\n};\n\nvar IndexedPointInAreaLocator = function IndexedPointInAreaLocator () {\n this._index = null;\n var g = arguments[0];\n if (!hasInterface(g, Polygonal)) { throw new IllegalArgumentException('Argument must be Polygonal') }\n this._index = new IntervalIndexedGeometry(g);\n};\n\nvar staticAccessors$44 = { SegmentVisitor: { configurable: true },IntervalIndexedGeometry: { configurable: true } };\nIndexedPointInAreaLocator.prototype.locate = function locate (p) {\n var rcc = new RayCrossingCounter(p);\n var visitor = new SegmentVisitor(rcc);\n this._index.query(p.y, p.y, visitor);\n return rcc.getLocation()\n};\nIndexedPointInAreaLocator.prototype.interfaces_ = function interfaces_ () {\n return [PointOnGeometryLocator]\n};\nIndexedPointInAreaLocator.prototype.getClass = function getClass () {\n return IndexedPointInAreaLocator\n};\nstaticAccessors$44.SegmentVisitor.get = function () { return SegmentVisitor };\nstaticAccessors$44.IntervalIndexedGeometry.get = function () { return IntervalIndexedGeometry };\n\nObject.defineProperties( IndexedPointInAreaLocator, staticAccessors$44 );\n\nvar SegmentVisitor = function SegmentVisitor () {\n this._counter = null;\n var counter = arguments[0];\n this._counter = counter;\n};\nSegmentVisitor.prototype.visitItem = function visitItem (item) {\n var seg = item;\n this._counter.countSegment(seg.getCoordinate(0), seg.getCoordinate(1));\n};\nSegmentVisitor.prototype.interfaces_ = function interfaces_ () {\n return [ItemVisitor]\n};\nSegmentVisitor.prototype.getClass = function getClass () {\n return SegmentVisitor\n};\n\nvar IntervalIndexedGeometry = function IntervalIndexedGeometry () {\n this._index = new SortedPackedIntervalRTree();\n var geom = arguments[0];\n this.init(geom);\n};\nIntervalIndexedGeometry.prototype.init = function init (geom) {\n var this$1 = this;\n\n var lines = LinearComponentExtracter.getLines(geom);\n for (var i = lines.iterator(); i.hasNext();) {\n var line = i.next();\n var pts = line.getCoordinates();\n this$1.addLine(pts);\n }\n};\nIntervalIndexedGeometry.prototype.addLine = function addLine (pts) {\n var this$1 = this;\n\n for (var i = 1; i < pts.length; i++) {\n var seg = new LineSegment(pts[i - 1], pts[i]);\n var min = Math.min(seg.p0.y, seg.p1.y);\n var max = Math.max(seg.p0.y, seg.p1.y);\n this$1._index.insert(min, max, seg);\n }\n};\nIntervalIndexedGeometry.prototype.query = function query () {\n if (arguments.length === 2) {\n var min = arguments[0];\n var max = arguments[1];\n var visitor = new ArrayListVisitor();\n this._index.query(min, max, visitor);\n return visitor.getItems()\n } else if (arguments.length === 3) {\n var min$1 = arguments[0];\n var max$1 = arguments[1];\n var visitor$1 = arguments[2];\n this._index.query(min$1, max$1, visitor$1);\n }\n};\nIntervalIndexedGeometry.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nIntervalIndexedGeometry.prototype.getClass = function getClass () {\n return IntervalIndexedGeometry\n};\n\nvar GeometryGraph = (function (PlanarGraph$$1) {\n function GeometryGraph () {\n PlanarGraph$$1.call(this);\n this._parentGeom = null;\n this._lineEdgeMap = new HashMap();\n this._boundaryNodeRule = null;\n this._useBoundaryDeterminationRule = true;\n this._argIndex = null;\n this._boundaryNodes = null;\n this._hasTooFewPoints = false;\n this._invalidPoint = null;\n this._areaPtLocator = null;\n this._ptLocator = new PointLocator();\n if (arguments.length === 2) {\n var argIndex = arguments[0];\n var parentGeom = arguments[1];\n var boundaryNodeRule = BoundaryNodeRule.OGC_SFS_BOUNDARY_RULE;\n this._argIndex = argIndex;\n this._parentGeom = parentGeom;\n this._boundaryNodeRule = boundaryNodeRule;\n if (parentGeom !== null) {\n this.add(parentGeom);\n }\n } else if (arguments.length === 3) {\n var argIndex$1 = arguments[0];\n var parentGeom$1 = arguments[1];\n var boundaryNodeRule$1 = arguments[2];\n this._argIndex = argIndex$1;\n this._parentGeom = parentGeom$1;\n this._boundaryNodeRule = boundaryNodeRule$1;\n if (parentGeom$1 !== null) {\n this.add(parentGeom$1);\n }\n }\n }\n\n if ( PlanarGraph$$1 ) GeometryGraph.__proto__ = PlanarGraph$$1;\n GeometryGraph.prototype = Object.create( PlanarGraph$$1 && PlanarGraph$$1.prototype );\n GeometryGraph.prototype.constructor = GeometryGraph;\n GeometryGraph.prototype.insertBoundaryPoint = function insertBoundaryPoint (argIndex, coord) {\n var n = this._nodes.addNode(coord);\n var lbl = n.getLabel();\n var boundaryCount = 1;\n var loc = Location.NONE;\n loc = lbl.getLocation(argIndex, Position.ON);\n if (loc === Location.BOUNDARY) { boundaryCount++; }\n var newLoc = GeometryGraph.determineBoundary(this._boundaryNodeRule, boundaryCount);\n lbl.setLocation(argIndex, newLoc);\n };\n GeometryGraph.prototype.computeSelfNodes = function computeSelfNodes () {\n if (arguments.length === 2) {\n var li = arguments[0];\n var computeRingSelfNodes = arguments[1];\n return this.computeSelfNodes(li, computeRingSelfNodes, false)\n } else if (arguments.length === 3) {\n var li$1 = arguments[0];\n var computeRingSelfNodes$1 = arguments[1];\n var isDoneIfProperInt = arguments[2];\n var si = new SegmentIntersector$2(li$1, true, false);\n si.setIsDoneIfProperInt(isDoneIfProperInt);\n var esi = this.createEdgeSetIntersector();\n var isRings = this._parentGeom instanceof LinearRing || this._parentGeom instanceof Polygon || this._parentGeom instanceof MultiPolygon;\n var computeAllSegments = computeRingSelfNodes$1 || !isRings;\n esi.computeIntersections(this._edges, si, computeAllSegments);\n this.addSelfIntersectionNodes(this._argIndex);\n return si\n }\n };\n GeometryGraph.prototype.computeSplitEdges = function computeSplitEdges (edgelist) {\n for (var i = this._edges.iterator(); i.hasNext();) {\n var e = i.next();\n e.eiList.addSplitEdges(edgelist);\n }\n };\n GeometryGraph.prototype.computeEdgeIntersections = function computeEdgeIntersections (g, li, includeProper) {\n var si = new SegmentIntersector$2(li, includeProper, true);\n si.setBoundaryNodes(this.getBoundaryNodes(), g.getBoundaryNodes());\n var esi = this.createEdgeSetIntersector();\n esi.computeIntersections(this._edges, g._edges, si);\n return si\n };\n GeometryGraph.prototype.getGeometry = function getGeometry () {\n return this._parentGeom\n };\n GeometryGraph.prototype.getBoundaryNodeRule = function getBoundaryNodeRule () {\n return this._boundaryNodeRule\n };\n GeometryGraph.prototype.hasTooFewPoints = function hasTooFewPoints () {\n return this._hasTooFewPoints\n };\n GeometryGraph.prototype.addPoint = function addPoint () {\n if (arguments[0] instanceof Point) {\n var p = arguments[0];\n var coord = p.getCoordinate();\n this.insertPoint(this._argIndex, coord, Location.INTERIOR);\n } else if (arguments[0] instanceof Coordinate) {\n var pt = arguments[0];\n this.insertPoint(this._argIndex, pt, Location.INTERIOR);\n }\n };\n GeometryGraph.prototype.addPolygon = function addPolygon (p) {\n var this$1 = this;\n\n this.addPolygonRing(p.getExteriorRing(), Location.EXTERIOR, Location.INTERIOR);\n for (var i = 0; i < p.getNumInteriorRing(); i++) {\n var hole = p.getInteriorRingN(i);\n this$1.addPolygonRing(hole, Location.INTERIOR, Location.EXTERIOR);\n }\n };\n GeometryGraph.prototype.addEdge = function addEdge (e) {\n this.insertEdge(e);\n var coord = e.getCoordinates();\n this.insertPoint(this._argIndex, coord[0], Location.BOUNDARY);\n this.insertPoint(this._argIndex, coord[coord.length - 1], Location.BOUNDARY);\n };\n GeometryGraph.prototype.addLineString = function addLineString (line) {\n var coord = CoordinateArrays.removeRepeatedPoints(line.getCoordinates());\n if (coord.length < 2) {\n this._hasTooFewPoints = true;\n this._invalidPoint = coord[0];\n return null\n }\n var e = new Edge(coord, new Label(this._argIndex, Location.INTERIOR));\n this._lineEdgeMap.put(line, e);\n this.insertEdge(e);\n Assert.isTrue(coord.length >= 2, 'found LineString with single point');\n this.insertBoundaryPoint(this._argIndex, coord[0]);\n this.insertBoundaryPoint(this._argIndex, coord[coord.length - 1]);\n };\n GeometryGraph.prototype.getInvalidPoint = function getInvalidPoint () {\n return this._invalidPoint\n };\n GeometryGraph.prototype.getBoundaryPoints = function getBoundaryPoints () {\n var coll = this.getBoundaryNodes();\n var pts = new Array(coll.size()).fill(null);\n var i = 0;\n for (var it = coll.iterator(); it.hasNext();) {\n var node = it.next();\n pts[i++] = node.getCoordinate().copy();\n }\n return pts\n };\n GeometryGraph.prototype.getBoundaryNodes = function getBoundaryNodes () {\n if (this._boundaryNodes === null) { this._boundaryNodes = this._nodes.getBoundaryNodes(this._argIndex); }\n return this._boundaryNodes\n };\n GeometryGraph.prototype.addSelfIntersectionNode = function addSelfIntersectionNode (argIndex, coord, loc) {\n if (this.isBoundaryNode(argIndex, coord)) { return null }\n if (loc === Location.BOUNDARY && this._useBoundaryDeterminationRule) { this.insertBoundaryPoint(argIndex, coord); } else { this.insertPoint(argIndex, coord, loc); }\n };\n GeometryGraph.prototype.addPolygonRing = function addPolygonRing (lr, cwLeft, cwRight) {\n if (lr.isEmpty()) { return null }\n var coord = CoordinateArrays.removeRepeatedPoints(lr.getCoordinates());\n if (coord.length < 4) {\n this._hasTooFewPoints = true;\n this._invalidPoint = coord[0];\n return null\n }\n var left = cwLeft;\n var right = cwRight;\n if (CGAlgorithms.isCCW(coord)) {\n left = cwRight;\n right = cwLeft;\n }\n var e = new Edge(coord, new Label(this._argIndex, Location.BOUNDARY, left, right));\n this._lineEdgeMap.put(lr, e);\n this.insertEdge(e);\n this.insertPoint(this._argIndex, coord[0], Location.BOUNDARY);\n };\n GeometryGraph.prototype.insertPoint = function insertPoint (argIndex, coord, onLocation) {\n var n = this._nodes.addNode(coord);\n var lbl = n.getLabel();\n if (lbl === null) {\n n._label = new Label(argIndex, onLocation);\n } else { lbl.setLocation(argIndex, onLocation); }\n };\n GeometryGraph.prototype.createEdgeSetIntersector = function createEdgeSetIntersector () {\n return new SimpleMCSweepLineIntersector()\n };\n GeometryGraph.prototype.addSelfIntersectionNodes = function addSelfIntersectionNodes (argIndex) {\n var this$1 = this;\n\n for (var i = this._edges.iterator(); i.hasNext();) {\n var e = i.next();\n var eLoc = e.getLabel().getLocation(argIndex);\n for (var eiIt = e.eiList.iterator(); eiIt.hasNext();) {\n var ei = eiIt.next();\n this$1.addSelfIntersectionNode(argIndex, ei.coord, eLoc);\n }\n }\n };\n GeometryGraph.prototype.add = function add () {\n if (arguments.length === 1) {\n var g = arguments[0];\n if (g.isEmpty()) { return null }\n if (g instanceof MultiPolygon) { this._useBoundaryDeterminationRule = false; }\n if (g instanceof Polygon) { this.addPolygon(g); }\n else if (g instanceof LineString) { this.addLineString(g); }\n else if (g instanceof Point) { this.addPoint(g); }\n else if (g instanceof MultiPoint) { this.addCollection(g); }\n else if (g instanceof MultiLineString) { this.addCollection(g); }\n else if (g instanceof MultiPolygon) { this.addCollection(g); }\n else if (g instanceof GeometryCollection) { this.addCollection(g); }\n else { throw new Error(g.getClass().getName()) }\n } else { return PlanarGraph$$1.prototype.add.apply(this, arguments) }\n };\n GeometryGraph.prototype.addCollection = function addCollection (gc) {\n var this$1 = this;\n\n for (var i = 0; i < gc.getNumGeometries(); i++) {\n var g = gc.getGeometryN(i);\n this$1.add(g);\n }\n };\n GeometryGraph.prototype.locate = function locate (pt) {\n if (hasInterface(this._parentGeom, Polygonal) && this._parentGeom.getNumGeometries() > 50) {\n if (this._areaPtLocator === null) {\n this._areaPtLocator = new IndexedPointInAreaLocator(this._parentGeom);\n }\n return this._areaPtLocator.locate(pt)\n }\n return this._ptLocator.locate(pt, this._parentGeom)\n };\n GeometryGraph.prototype.findEdge = function findEdge () {\n if (arguments.length === 1) {\n var line = arguments[0];\n return this._lineEdgeMap.get(line)\n } else { return PlanarGraph$$1.prototype.findEdge.apply(this, arguments) }\n };\n GeometryGraph.prototype.interfaces_ = function interfaces_ () {\n return []\n };\n GeometryGraph.prototype.getClass = function getClass () {\n return GeometryGraph\n };\n GeometryGraph.determineBoundary = function determineBoundary (boundaryNodeRule, boundaryCount) {\n return boundaryNodeRule.isInBoundary(boundaryCount) ? Location.BOUNDARY : Location.INTERIOR\n };\n\n return GeometryGraph;\n}(PlanarGraph));\n\nvar GeometryGraphOp = function GeometryGraphOp () {\n this._li = new RobustLineIntersector();\n this._resultPrecisionModel = null;\n this._arg = null;\n if (arguments.length === 1) {\n var g0 = arguments[0];\n this.setComputationPrecision(g0.getPrecisionModel());\n this._arg = new Array(1).fill(null);\n this._arg[0] = new GeometryGraph(0, g0);\n } else if (arguments.length === 2) {\n var g0$1 = arguments[0];\n var g1 = arguments[1];\n var boundaryNodeRule = BoundaryNodeRule.OGC_SFS_BOUNDARY_RULE;\n if (g0$1.getPrecisionModel().compareTo(g1.getPrecisionModel()) >= 0) { this.setComputationPrecision(g0$1.getPrecisionModel()); } else { this.setComputationPrecision(g1.getPrecisionModel()); }\n this._arg = new Array(2).fill(null);\n this._arg[0] = new GeometryGraph(0, g0$1, boundaryNodeRule);\n this._arg[1] = new GeometryGraph(1, g1, boundaryNodeRule);\n } else if (arguments.length === 3) {\n var g0$2 = arguments[0];\n var g1$1 = arguments[1];\n var boundaryNodeRule$1 = arguments[2];\n if (g0$2.getPrecisionModel().compareTo(g1$1.getPrecisionModel()) >= 0) { this.setComputationPrecision(g0$2.getPrecisionModel()); } else { this.setComputationPrecision(g1$1.getPrecisionModel()); }\n this._arg = new Array(2).fill(null);\n this._arg[0] = new GeometryGraph(0, g0$2, boundaryNodeRule$1);\n this._arg[1] = new GeometryGraph(1, g1$1, boundaryNodeRule$1);\n }\n};\nGeometryGraphOp.prototype.getArgGeometry = function getArgGeometry (i) {\n return this._arg[i].getGeometry()\n};\nGeometryGraphOp.prototype.setComputationPrecision = function setComputationPrecision (pm) {\n this._resultPrecisionModel = pm;\n this._li.setPrecisionModel(this._resultPrecisionModel);\n};\nGeometryGraphOp.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nGeometryGraphOp.prototype.getClass = function getClass () {\n return GeometryGraphOp\n};\n\n// operation.geometrygraph\n\nvar GeometryMapper = function GeometryMapper () {};\n\nGeometryMapper.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nGeometryMapper.prototype.getClass = function getClass () {\n return GeometryMapper\n};\nGeometryMapper.map = function map () {\n if (arguments[0] instanceof Geometry && hasInterface(arguments[1], GeometryMapper.MapOp)) {\n var geom = arguments[0];\n var op = arguments[1];\n var mapped = new ArrayList();\n for (var i = 0; i < geom.getNumGeometries(); i++) {\n var g = op.map(geom.getGeometryN(i));\n if (g !== null) { mapped.add(g); }\n }\n return geom.getFactory().buildGeometry(mapped)\n } else if (hasInterface(arguments[0], Collection) && hasInterface(arguments[1], GeometryMapper.MapOp)) {\n var geoms = arguments[0];\n var op$1 = arguments[1];\n var mapped$1 = new ArrayList();\n for (var i$1 = geoms.iterator(); i$1.hasNext();) {\n var g$1 = i$1.next();\n var gr = op$1.map(g$1);\n if (gr !== null) { mapped$1.add(gr); }\n }\n return mapped$1\n }\n};\nGeometryMapper.MapOp = function MapOp () {};\n\nvar OverlayOp = (function (GeometryGraphOp) {\n function OverlayOp () {\n var g0 = arguments[0];\n var g1 = arguments[1];\n GeometryGraphOp.call(this, g0, g1);\n this._ptLocator = new PointLocator();\n this._geomFact = null;\n this._resultGeom = null;\n this._graph = null;\n this._edgeList = new EdgeList();\n this._resultPolyList = new ArrayList();\n this._resultLineList = new ArrayList();\n this._resultPointList = new ArrayList();\n this._graph = new PlanarGraph(new OverlayNodeFactory());\n this._geomFact = g0.getFactory();\n }\n\n if ( GeometryGraphOp ) OverlayOp.__proto__ = GeometryGraphOp;\n OverlayOp.prototype = Object.create( GeometryGraphOp && GeometryGraphOp.prototype );\n OverlayOp.prototype.constructor = OverlayOp;\n OverlayOp.prototype.insertUniqueEdge = function insertUniqueEdge (e) {\n var existingEdge = this._edgeList.findEqualEdge(e);\n if (existingEdge !== null) {\n var existingLabel = existingEdge.getLabel();\n var labelToMerge = e.getLabel();\n if (!existingEdge.isPointwiseEqual(e)) {\n labelToMerge = new Label(e.getLabel());\n labelToMerge.flip();\n }\n var depth = existingEdge.getDepth();\n if (depth.isNull()) {\n depth.add(existingLabel);\n }\n depth.add(labelToMerge);\n existingLabel.merge(labelToMerge);\n } else {\n this._edgeList.add(e);\n }\n };\n OverlayOp.prototype.getGraph = function getGraph () {\n return this._graph\n };\n OverlayOp.prototype.cancelDuplicateResultEdges = function cancelDuplicateResultEdges () {\n for (var it = this._graph.getEdgeEnds().iterator(); it.hasNext();) {\n var de = it.next();\n var sym = de.getSym();\n if (de.isInResult() && sym.isInResult()) {\n de.setInResult(false);\n sym.setInResult(false);\n }\n }\n };\n OverlayOp.prototype.isCoveredByLA = function isCoveredByLA (coord) {\n if (this.isCovered(coord, this._resultLineList)) { return true }\n if (this.isCovered(coord, this._resultPolyList)) { return true }\n return false\n };\n OverlayOp.prototype.computeGeometry = function computeGeometry (resultPointList, resultLineList, resultPolyList, opcode) {\n var geomList = new ArrayList();\n geomList.addAll(resultPointList);\n geomList.addAll(resultLineList);\n geomList.addAll(resultPolyList);\n if (geomList.isEmpty()) { return OverlayOp.createEmptyResult(opcode, this._arg[0].getGeometry(), this._arg[1].getGeometry(), this._geomFact) }\n return this._geomFact.buildGeometry(geomList)\n };\n OverlayOp.prototype.mergeSymLabels = function mergeSymLabels () {\n for (var nodeit = this._graph.getNodes().iterator(); nodeit.hasNext();) {\n var node = nodeit.next();\n node.getEdges().mergeSymLabels();\n }\n };\n OverlayOp.prototype.isCovered = function isCovered (coord, geomList) {\n var this$1 = this;\n\n for (var it = geomList.iterator(); it.hasNext();) {\n var geom = it.next();\n var loc = this$1._ptLocator.locate(coord, geom);\n if (loc !== Location.EXTERIOR) { return true }\n }\n return false\n };\n OverlayOp.prototype.replaceCollapsedEdges = function replaceCollapsedEdges () {\n var newEdges = new ArrayList();\n for (var it = this._edgeList.iterator(); it.hasNext();) {\n var e = it.next();\n if (e.isCollapsed()) {\n it.remove();\n newEdges.add(e.getCollapsedEdge());\n }\n }\n this._edgeList.addAll(newEdges);\n };\n OverlayOp.prototype.updateNodeLabelling = function updateNodeLabelling () {\n for (var nodeit = this._graph.getNodes().iterator(); nodeit.hasNext();) {\n var node = nodeit.next();\n var lbl = node.getEdges().getLabel();\n node.getLabel().merge(lbl);\n }\n };\n OverlayOp.prototype.getResultGeometry = function getResultGeometry (overlayOpCode) {\n this.computeOverlay(overlayOpCode);\n return this._resultGeom\n };\n OverlayOp.prototype.insertUniqueEdges = function insertUniqueEdges (edges) {\n var this$1 = this;\n\n for (var i = edges.iterator(); i.hasNext();) {\n var e = i.next();\n this$1.insertUniqueEdge(e);\n }\n };\n OverlayOp.prototype.computeOverlay = function computeOverlay (opCode) {\n this.copyPoints(0);\n this.copyPoints(1);\n this._arg[0].computeSelfNodes(this._li, false);\n this._arg[1].computeSelfNodes(this._li, false);\n this._arg[0].computeEdgeIntersections(this._arg[1], this._li, true);\n var baseSplitEdges = new ArrayList();\n this._arg[0].computeSplitEdges(baseSplitEdges);\n this._arg[1].computeSplitEdges(baseSplitEdges);\n // const splitEdges = baseSplitEdges\n this.insertUniqueEdges(baseSplitEdges);\n this.computeLabelsFromDepths();\n this.replaceCollapsedEdges();\n EdgeNodingValidator.checkValid(this._edgeList.getEdges());\n this._graph.addEdges(this._edgeList.getEdges());\n this.computeLabelling();\n this.labelIncompleteNodes();\n this.findResultAreaEdges(opCode);\n this.cancelDuplicateResultEdges();\n var polyBuilder = new PolygonBuilder(this._geomFact);\n polyBuilder.add(this._graph);\n this._resultPolyList = polyBuilder.getPolygons();\n var lineBuilder = new LineBuilder(this, this._geomFact, this._ptLocator);\n this._resultLineList = lineBuilder.build(opCode);\n var pointBuilder = new PointBuilder(this, this._geomFact, this._ptLocator);\n this._resultPointList = pointBuilder.build(opCode);\n this._resultGeom = this.computeGeometry(this._resultPointList, this._resultLineList, this._resultPolyList, opCode);\n };\n OverlayOp.prototype.labelIncompleteNode = function labelIncompleteNode (n, targetIndex) {\n var loc = this._ptLocator.locate(n.getCoordinate(), this._arg[targetIndex].getGeometry());\n n.getLabel().setLocation(targetIndex, loc);\n };\n OverlayOp.prototype.copyPoints = function copyPoints (argIndex) {\n var this$1 = this;\n\n for (var i = this._arg[argIndex].getNodeIterator(); i.hasNext();) {\n var graphNode = i.next();\n var newNode = this$1._graph.addNode(graphNode.getCoordinate());\n newNode.setLabel(argIndex, graphNode.getLabel().getLocation(argIndex));\n }\n };\n OverlayOp.prototype.findResultAreaEdges = function findResultAreaEdges (opCode) {\n for (var it = this._graph.getEdgeEnds().iterator(); it.hasNext();) {\n var de = it.next();\n var label = de.getLabel();\n if (label.isArea() && !de.isInteriorAreaEdge() && OverlayOp.isResultOfOp(label.getLocation(0, Position.RIGHT), label.getLocation(1, Position.RIGHT), opCode)) {\n de.setInResult(true);\n }\n }\n };\n OverlayOp.prototype.computeLabelsFromDepths = function computeLabelsFromDepths () {\n for (var it = this._edgeList.iterator(); it.hasNext();) {\n var e = it.next();\n var lbl = e.getLabel();\n var depth = e.getDepth();\n if (!depth.isNull()) {\n depth.normalize();\n for (var i = 0; i < 2; i++) {\n if (!lbl.isNull(i) && lbl.isArea() && !depth.isNull(i)) {\n if (depth.getDelta(i) === 0) {\n lbl.toLine(i);\n } else {\n Assert.isTrue(!depth.isNull(i, Position.LEFT), 'depth of LEFT side has not been initialized');\n lbl.setLocation(i, Position.LEFT, depth.getLocation(i, Position.LEFT));\n Assert.isTrue(!depth.isNull(i, Position.RIGHT), 'depth of RIGHT side has not been initialized');\n lbl.setLocation(i, Position.RIGHT, depth.getLocation(i, Position.RIGHT));\n }\n }\n }\n }\n }\n };\n OverlayOp.prototype.computeLabelling = function computeLabelling () {\n var this$1 = this;\n\n for (var nodeit = this._graph.getNodes().iterator(); nodeit.hasNext();) {\n var node = nodeit.next();\n node.getEdges().computeLabelling(this$1._arg);\n }\n this.mergeSymLabels();\n this.updateNodeLabelling();\n };\n OverlayOp.prototype.labelIncompleteNodes = function labelIncompleteNodes () {\n var this$1 = this;\n\n // let nodeCount = 0\n for (var ni = this._graph.getNodes().iterator(); ni.hasNext();) {\n var n = ni.next();\n var label = n.getLabel();\n if (n.isIsolated()) {\n // nodeCount++\n if (label.isNull(0)) { this$1.labelIncompleteNode(n, 0); } else { this$1.labelIncompleteNode(n, 1); }\n }\n n.getEdges().updateLabelling(label);\n }\n };\n OverlayOp.prototype.isCoveredByA = function isCoveredByA (coord) {\n if (this.isCovered(coord, this._resultPolyList)) { return true }\n return false\n };\n OverlayOp.prototype.interfaces_ = function interfaces_ () {\n return []\n };\n OverlayOp.prototype.getClass = function getClass () {\n return OverlayOp\n };\n\n return OverlayOp;\n}(GeometryGraphOp));\n\nOverlayOp.overlayOp = function (geom0, geom1, opCode) {\n var gov = new OverlayOp(geom0, geom1);\n var geomOv = gov.getResultGeometry(opCode);\n return geomOv\n};\nOverlayOp.intersection = function (g, other) {\n if (g.isEmpty() || other.isEmpty()) { return OverlayOp.createEmptyResult(OverlayOp.INTERSECTION, g, other, g.getFactory()) }\n if (g.isGeometryCollection()) {\n var g2 = other;\n return GeometryCollectionMapper.map(g, {\n interfaces_: function () {\n return [GeometryMapper.MapOp]\n },\n map: function (g) {\n return g.intersection(g2)\n }\n })\n }\n g.checkNotGeometryCollection(g);\n g.checkNotGeometryCollection(other);\n return SnapIfNeededOverlayOp.overlayOp(g, other, OverlayOp.INTERSECTION)\n};\nOverlayOp.symDifference = function (g, other) {\n if (g.isEmpty() || other.isEmpty()) {\n if (g.isEmpty() && other.isEmpty()) { return OverlayOp.createEmptyResult(OverlayOp.SYMDIFFERENCE, g, other, g.getFactory()) }\n if (g.isEmpty()) { return other.copy() }\n if (other.isEmpty()) { return g.copy() }\n }\n g.checkNotGeometryCollection(g);\n g.checkNotGeometryCollection(other);\n return SnapIfNeededOverlayOp.overlayOp(g, other, OverlayOp.SYMDIFFERENCE)\n};\nOverlayOp.resultDimension = function (opCode, g0, g1) {\n var dim0 = g0.getDimension();\n var dim1 = g1.getDimension();\n var resultDimension = -1;\n switch (opCode) {\n case OverlayOp.INTERSECTION:\n resultDimension = Math.min(dim0, dim1);\n break\n case OverlayOp.UNION:\n resultDimension = Math.max(dim0, dim1);\n break\n case OverlayOp.DIFFERENCE:\n resultDimension = dim0;\n break\n case OverlayOp.SYMDIFFERENCE:\n resultDimension = Math.max(dim0, dim1);\n break\n default:\n }\n return resultDimension\n};\nOverlayOp.createEmptyResult = function (overlayOpCode, a, b, geomFact) {\n var result = null;\n switch (OverlayOp.resultDimension(overlayOpCode, a, b)) {\n case -1:\n result = geomFact.createGeometryCollection(new Array(0).fill(null));\n break\n case 0:\n result = geomFact.createPoint();\n break\n case 1:\n result = geomFact.createLineString();\n break\n case 2:\n result = geomFact.createPolygon();\n break\n default:\n }\n return result\n};\nOverlayOp.difference = function (g, other) {\n if (g.isEmpty()) { return OverlayOp.createEmptyResult(OverlayOp.DIFFERENCE, g, other, g.getFactory()) }\n if (other.isEmpty()) { return g.copy() }\n g.checkNotGeometryCollection(g);\n g.checkNotGeometryCollection(other);\n return SnapIfNeededOverlayOp.overlayOp(g, other, OverlayOp.DIFFERENCE)\n};\nOverlayOp.isResultOfOp = function () {\n if (arguments.length === 2) {\n var label = arguments[0];\n var opCode = arguments[1];\n var loc0 = label.getLocation(0);\n var loc1 = label.getLocation(1);\n return OverlayOp.isResultOfOp(loc0, loc1, opCode)\n } else if (arguments.length === 3) {\n var loc0$1 = arguments[0];\n var loc1$1 = arguments[1];\n var overlayOpCode = arguments[2];\n if (loc0$1 === Location.BOUNDARY) { loc0$1 = Location.INTERIOR; }\n if (loc1$1 === Location.BOUNDARY) { loc1$1 = Location.INTERIOR; }\n switch (overlayOpCode) {\n case OverlayOp.INTERSECTION:\n return loc0$1 === Location.INTERIOR && loc1$1 === Location.INTERIOR\n case OverlayOp.UNION:\n return loc0$1 === Location.INTERIOR || loc1$1 === Location.INTERIOR\n case OverlayOp.DIFFERENCE:\n return loc0$1 === Location.INTERIOR && loc1$1 !== Location.INTERIOR\n case OverlayOp.SYMDIFFERENCE:\n return (loc0$1 === Location.INTERIOR && loc1$1 !== Location.INTERIOR) || (loc0$1 !== Location.INTERIOR && loc1$1 === Location.INTERIOR)\n default:\n }\n return false\n }\n};\nOverlayOp.INTERSECTION = 1;\nOverlayOp.UNION = 2;\nOverlayOp.DIFFERENCE = 3;\nOverlayOp.SYMDIFFERENCE = 4;\n\nvar FuzzyPointLocator = function FuzzyPointLocator () {\n this._g = null;\n this._boundaryDistanceTolerance = null;\n this._linework = null;\n this._ptLocator = new PointLocator();\n this._seg = new LineSegment();\n var g = arguments[0];\n var boundaryDistanceTolerance = arguments[1];\n this._g = g;\n this._boundaryDistanceTolerance = boundaryDistanceTolerance;\n this._linework = this.extractLinework(g);\n};\nFuzzyPointLocator.prototype.isWithinToleranceOfBoundary = function isWithinToleranceOfBoundary (pt) {\n var this$1 = this;\n\n for (var i = 0; i < this._linework.getNumGeometries(); i++) {\n var line = this$1._linework.getGeometryN(i);\n var seq = line.getCoordinateSequence();\n for (var j = 0; j < seq.size() - 1; j++) {\n seq.getCoordinate(j, this$1._seg.p0);\n seq.getCoordinate(j + 1, this$1._seg.p1);\n var dist = this$1._seg.distance(pt);\n if (dist <= this$1._boundaryDistanceTolerance) { return true }\n }\n }\n return false\n};\nFuzzyPointLocator.prototype.getLocation = function getLocation (pt) {\n if (this.isWithinToleranceOfBoundary(pt)) { return Location.BOUNDARY }\n return this._ptLocator.locate(pt, this._g)\n};\nFuzzyPointLocator.prototype.extractLinework = function extractLinework (g) {\n var extracter = new PolygonalLineworkExtracter();\n g.apply(extracter);\n var linework = extracter.getLinework();\n var lines = GeometryFactory.toLineStringArray(linework);\n return g.getFactory().createMultiLineString(lines)\n};\nFuzzyPointLocator.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nFuzzyPointLocator.prototype.getClass = function getClass () {\n return FuzzyPointLocator\n};\n\nvar PolygonalLineworkExtracter = function PolygonalLineworkExtracter () {\n this._linework = null;\n this._linework = new ArrayList();\n};\nPolygonalLineworkExtracter.prototype.getLinework = function getLinework () {\n return this._linework\n};\nPolygonalLineworkExtracter.prototype.filter = function filter (g) {\n var this$1 = this;\n\n if (g instanceof Polygon) {\n var poly = g;\n this._linework.add(poly.getExteriorRing());\n for (var i = 0; i < poly.getNumInteriorRing(); i++) {\n this$1._linework.add(poly.getInteriorRingN(i));\n }\n }\n};\nPolygonalLineworkExtracter.prototype.interfaces_ = function interfaces_ () {\n return [GeometryFilter]\n};\nPolygonalLineworkExtracter.prototype.getClass = function getClass () {\n return PolygonalLineworkExtracter\n};\n\nvar OffsetPointGenerator = function OffsetPointGenerator () {\n this._g = null;\n this._doLeft = true;\n this._doRight = true;\n var g = arguments[0];\n this._g = g;\n};\nOffsetPointGenerator.prototype.extractPoints = function extractPoints (line, offsetDistance, offsetPts) {\n var this$1 = this;\n\n var pts = line.getCoordinates();\n for (var i = 0; i < pts.length - 1; i++) {\n this$1.computeOffsetPoints(pts[i], pts[i + 1], offsetDistance, offsetPts);\n }\n};\nOffsetPointGenerator.prototype.setSidesToGenerate = function setSidesToGenerate (doLeft, doRight) {\n this._doLeft = doLeft;\n this._doRight = doRight;\n};\nOffsetPointGenerator.prototype.getPoints = function getPoints (offsetDistance) {\n var this$1 = this;\n\n var offsetPts = new ArrayList();\n var lines = LinearComponentExtracter.getLines(this._g);\n for (var i = lines.iterator(); i.hasNext();) {\n var line = i.next();\n this$1.extractPoints(line, offsetDistance, offsetPts);\n }\n return offsetPts\n};\nOffsetPointGenerator.prototype.computeOffsetPoints = function computeOffsetPoints (p0, p1, offsetDistance, offsetPts) {\n var dx = p1.x - p0.x;\n var dy = p1.y - p0.y;\n var len = Math.sqrt(dx * dx + dy * dy);\n var ux = offsetDistance * dx / len;\n var uy = offsetDistance * dy / len;\n var midX = (p1.x + p0.x) / 2;\n var midY = (p1.y + p0.y) / 2;\n if (this._doLeft) {\n var offsetLeft = new Coordinate(midX - uy, midY + ux);\n offsetPts.add(offsetLeft);\n }\n if (this._doRight) {\n var offsetRight = new Coordinate(midX + uy, midY - ux);\n offsetPts.add(offsetRight);\n }\n};\nOffsetPointGenerator.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nOffsetPointGenerator.prototype.getClass = function getClass () {\n return OffsetPointGenerator\n};\n\nvar OverlayResultValidator = function OverlayResultValidator () {\n this._geom = null;\n this._locFinder = null;\n this._location = new Array(3).fill(null);\n this._invalidLocation = null;\n this._boundaryDistanceTolerance = OverlayResultValidator.TOLERANCE;\n this._testCoords = new ArrayList();\n var a = arguments[0];\n var b = arguments[1];\n var result = arguments[2];\n this._boundaryDistanceTolerance = OverlayResultValidator.computeBoundaryDistanceTolerance(a, b);\n this._geom = [a, b, result];\n this._locFinder = [new FuzzyPointLocator(this._geom[0], this._boundaryDistanceTolerance), new FuzzyPointLocator(this._geom[1], this._boundaryDistanceTolerance), new FuzzyPointLocator(this._geom[2], this._boundaryDistanceTolerance)];\n};\n\nvar staticAccessors$46 = { TOLERANCE: { configurable: true } };\nOverlayResultValidator.prototype.reportResult = function reportResult (overlayOp, location, expectedInterior) {\n System.out.println('Overlay result invalid - A:' + Location.toLocationSymbol(location[0]) + ' B:' + Location.toLocationSymbol(location[1]) + ' expected:' + (expectedInterior ? 'i' : 'e') + ' actual:' + Location.toLocationSymbol(location[2]));\n};\nOverlayResultValidator.prototype.isValid = function isValid (overlayOp) {\n this.addTestPts(this._geom[0]);\n this.addTestPts(this._geom[1]);\n var isValid = this.checkValid(overlayOp);\n return isValid\n};\nOverlayResultValidator.prototype.checkValid = function checkValid () {\n var this$1 = this;\n\n if (arguments.length === 1) {\n var overlayOp = arguments[0];\n for (var i = 0; i < this._testCoords.size(); i++) {\n var pt = this$1._testCoords.get(i);\n if (!this$1.checkValid(overlayOp, pt)) {\n this$1._invalidLocation = pt;\n return false\n }\n }\n return true\n } else if (arguments.length === 2) {\n var overlayOp$1 = arguments[0];\n var pt$1 = arguments[1];\n this._location[0] = this._locFinder[0].getLocation(pt$1);\n this._location[1] = this._locFinder[1].getLocation(pt$1);\n this._location[2] = this._locFinder[2].getLocation(pt$1);\n if (OverlayResultValidator.hasLocation(this._location, Location.BOUNDARY)) { return true }\n return this.isValidResult(overlayOp$1, this._location)\n }\n};\nOverlayResultValidator.prototype.addTestPts = function addTestPts (g) {\n var ptGen = new OffsetPointGenerator(g);\n this._testCoords.addAll(ptGen.getPoints(5 * this._boundaryDistanceTolerance));\n};\nOverlayResultValidator.prototype.isValidResult = function isValidResult (overlayOp, location) {\n var expectedInterior = OverlayOp.isResultOfOp(location[0], location[1], overlayOp);\n var resultInInterior = location[2] === Location.INTERIOR;\n var isValid = !(expectedInterior ^ resultInInterior);\n if (!isValid) { this.reportResult(overlayOp, location, expectedInterior); }\n return isValid\n};\nOverlayResultValidator.prototype.getInvalidLocation = function getInvalidLocation () {\n return this._invalidLocation\n};\nOverlayResultValidator.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nOverlayResultValidator.prototype.getClass = function getClass () {\n return OverlayResultValidator\n};\nOverlayResultValidator.hasLocation = function hasLocation (location, loc) {\n for (var i = 0; i < 3; i++) {\n if (location[i] === loc) { return true }\n }\n return false\n};\nOverlayResultValidator.computeBoundaryDistanceTolerance = function computeBoundaryDistanceTolerance (g0, g1) {\n return Math.min(GeometrySnapper.computeSizeBasedSnapTolerance(g0), GeometrySnapper.computeSizeBasedSnapTolerance(g1))\n};\nOverlayResultValidator.isValid = function isValid (a, b, overlayOp, result) {\n var validator = new OverlayResultValidator(a, b, result);\n return validator.isValid(overlayOp)\n};\nstaticAccessors$46.TOLERANCE.get = function () { return 0.000001 };\n\nObject.defineProperties( OverlayResultValidator, staticAccessors$46 );\n\n// operation.overlay\n\nvar GeometryCombiner = function GeometryCombiner (geoms) {\n this._geomFactory = null;\n this._skipEmpty = false;\n this._inputGeoms = null;\n this._geomFactory = GeometryCombiner.extractFactory(geoms);\n this._inputGeoms = geoms;\n};\nGeometryCombiner.prototype.extractElements = function extractElements (geom, elems) {\n var this$1 = this;\n\n if (geom === null) { return null }\n for (var i = 0; i < geom.getNumGeometries(); i++) {\n var elemGeom = geom.getGeometryN(i);\n if (this$1._skipEmpty && elemGeom.isEmpty()) { continue }\n elems.add(elemGeom);\n }\n};\nGeometryCombiner.prototype.combine = function combine () {\n var this$1 = this;\n\n var elems = new ArrayList();\n for (var i = this._inputGeoms.iterator(); i.hasNext();) {\n var g = i.next();\n this$1.extractElements(g, elems);\n }\n if (elems.size() === 0) {\n if (this._geomFactory !== null) {\n return this._geomFactory.createGeometryCollection(null)\n }\n return null\n }\n return this._geomFactory.buildGeometry(elems)\n};\nGeometryCombiner.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nGeometryCombiner.prototype.getClass = function getClass () {\n return GeometryCombiner\n};\nGeometryCombiner.combine = function combine () {\n if (arguments.length === 1) {\n var geoms = arguments[0];\n var combiner = new GeometryCombiner(geoms);\n return combiner.combine()\n } else if (arguments.length === 2) {\n var g0 = arguments[0];\n var g1 = arguments[1];\n var combiner$1 = new GeometryCombiner(GeometryCombiner.createList(g0, g1));\n return combiner$1.combine()\n } else if (arguments.length === 3) {\n var g0$1 = arguments[0];\n var g1$1 = arguments[1];\n var g2 = arguments[2];\n var combiner$2 = new GeometryCombiner(GeometryCombiner.createList(g0$1, g1$1, g2));\n return combiner$2.combine()\n }\n};\nGeometryCombiner.extractFactory = function extractFactory (geoms) {\n if (geoms.isEmpty()) { return null }\n return geoms.iterator().next().getFactory()\n};\nGeometryCombiner.createList = function createList () {\n if (arguments.length === 2) {\n var obj0 = arguments[0];\n var obj1 = arguments[1];\n var list = new ArrayList();\n list.add(obj0);\n list.add(obj1);\n return list\n } else if (arguments.length === 3) {\n var obj0$1 = arguments[0];\n var obj1$1 = arguments[1];\n var obj2 = arguments[2];\n var list$1 = new ArrayList();\n list$1.add(obj0$1);\n list$1.add(obj1$1);\n list$1.add(obj2);\n return list$1\n }\n};\n\nvar CascadedPolygonUnion = function CascadedPolygonUnion () {\n this._inputPolys = null;\n this._geomFactory = null;\n var polys = arguments[0];\n this._inputPolys = polys;\n if (this._inputPolys === null) { this._inputPolys = new ArrayList(); }\n};\n\nvar staticAccessors$47 = { STRTREE_NODE_CAPACITY: { configurable: true } };\nCascadedPolygonUnion.prototype.reduceToGeometries = function reduceToGeometries (geomTree) {\n var this$1 = this;\n\n var geoms = new ArrayList();\n for (var i = geomTree.iterator(); i.hasNext();) {\n var o = i.next();\n var geom = null;\n if (hasInterface(o, List)) {\n geom = this$1.unionTree(o);\n } else if (o instanceof Geometry) {\n geom = o;\n }\n geoms.add(geom);\n }\n return geoms\n};\nCascadedPolygonUnion.prototype.extractByEnvelope = function extractByEnvelope (env, geom, disjointGeoms) {\n var intersectingGeoms = new ArrayList();\n for (var i = 0; i < geom.getNumGeometries(); i++) {\n var elem = geom.getGeometryN(i);\n if (elem.getEnvelopeInternal().intersects(env)) { intersectingGeoms.add(elem); } else { disjointGeoms.add(elem); }\n }\n return this._geomFactory.buildGeometry(intersectingGeoms)\n};\nCascadedPolygonUnion.prototype.unionOptimized = function unionOptimized (g0, g1) {\n var g0Env = g0.getEnvelopeInternal();\n var g1Env = g1.getEnvelopeInternal();\n if (!g0Env.intersects(g1Env)) {\n var combo = GeometryCombiner.combine(g0, g1);\n return combo\n }\n if (g0.getNumGeometries() <= 1 && g1.getNumGeometries() <= 1) { return this.unionActual(g0, g1) }\n var commonEnv = g0Env.intersection(g1Env);\n return this.unionUsingEnvelopeIntersection(g0, g1, commonEnv)\n};\nCascadedPolygonUnion.prototype.union = function union () {\n if (this._inputPolys === null) { throw new Error('union() method cannot be called twice') }\n if (this._inputPolys.isEmpty()) { return null }\n this._geomFactory = this._inputPolys.iterator().next().getFactory();\n var index = new STRtree(CascadedPolygonUnion.STRTREE_NODE_CAPACITY);\n for (var i = this._inputPolys.iterator(); i.hasNext();) {\n var item = i.next();\n index.insert(item.getEnvelopeInternal(), item);\n }\n this._inputPolys = null;\n var itemTree = index.itemsTree();\n var unionAll = this.unionTree(itemTree);\n return unionAll\n};\nCascadedPolygonUnion.prototype.binaryUnion = function binaryUnion () {\n if (arguments.length === 1) {\n var geoms = arguments[0];\n return this.binaryUnion(geoms, 0, geoms.size())\n } else if (arguments.length === 3) {\n var geoms$1 = arguments[0];\n var start = arguments[1];\n var end = arguments[2];\n if (end - start <= 1) {\n var g0 = CascadedPolygonUnion.getGeometry(geoms$1, start);\n return this.unionSafe(g0, null)\n } else if (end - start === 2) {\n return this.unionSafe(CascadedPolygonUnion.getGeometry(geoms$1, start), CascadedPolygonUnion.getGeometry(geoms$1, start + 1))\n } else {\n var mid = Math.trunc((end + start) / 2);\n var g0$1 = this.binaryUnion(geoms$1, start, mid);\n var g1 = this.binaryUnion(geoms$1, mid, end);\n return this.unionSafe(g0$1, g1)\n }\n }\n};\nCascadedPolygonUnion.prototype.repeatedUnion = function repeatedUnion (geoms) {\n var union = null;\n for (var i = geoms.iterator(); i.hasNext();) {\n var g = i.next();\n if (union === null) { union = g.copy(); } else { union = union.union(g); }\n }\n return union\n};\nCascadedPolygonUnion.prototype.unionSafe = function unionSafe (g0, g1) {\n if (g0 === null && g1 === null) { return null }\n if (g0 === null) { return g1.copy() }\n if (g1 === null) { return g0.copy() }\n return this.unionOptimized(g0, g1)\n};\nCascadedPolygonUnion.prototype.unionActual = function unionActual (g0, g1) {\n return CascadedPolygonUnion.restrictToPolygons(g0.union(g1))\n};\nCascadedPolygonUnion.prototype.unionTree = function unionTree (geomTree) {\n var geoms = this.reduceToGeometries(geomTree);\n var union = this.binaryUnion(geoms);\n return union\n};\nCascadedPolygonUnion.prototype.unionUsingEnvelopeIntersection = function unionUsingEnvelopeIntersection (g0, g1, common) {\n var disjointPolys = new ArrayList();\n var g0Int = this.extractByEnvelope(common, g0, disjointPolys);\n var g1Int = this.extractByEnvelope(common, g1, disjointPolys);\n var union = this.unionActual(g0Int, g1Int);\n disjointPolys.add(union);\n var overallUnion = GeometryCombiner.combine(disjointPolys);\n return overallUnion\n};\nCascadedPolygonUnion.prototype.bufferUnion = function bufferUnion () {\n if (arguments.length === 1) {\n var geoms = arguments[0];\n var factory = geoms.get(0).getFactory();\n var gColl = factory.buildGeometry(geoms);\n var unionAll = gColl.buffer(0.0);\n return unionAll\n } else if (arguments.length === 2) {\n var g0 = arguments[0];\n var g1 = arguments[1];\n var factory$1 = g0.getFactory();\n var gColl$1 = factory$1.createGeometryCollection([g0, g1]);\n var unionAll$1 = gColl$1.buffer(0.0);\n return unionAll$1\n }\n};\nCascadedPolygonUnion.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nCascadedPolygonUnion.prototype.getClass = function getClass () {\n return CascadedPolygonUnion\n};\nCascadedPolygonUnion.restrictToPolygons = function restrictToPolygons (g) {\n if (hasInterface(g, Polygonal)) {\n return g\n }\n var polygons = PolygonExtracter.getPolygons(g);\n if (polygons.size() === 1) { return polygons.get(0) }\n return g.getFactory().createMultiPolygon(GeometryFactory.toPolygonArray(polygons))\n};\nCascadedPolygonUnion.getGeometry = function getGeometry (list, index) {\n if (index >= list.size()) { return null }\n return list.get(index)\n};\nCascadedPolygonUnion.union = function union (polys) {\n var op = new CascadedPolygonUnion(polys);\n return op.union()\n};\nstaticAccessors$47.STRTREE_NODE_CAPACITY.get = function () { return 4 };\n\nObject.defineProperties( CascadedPolygonUnion, staticAccessors$47 );\n\nvar UnionOp = function UnionOp () {};\n\nUnionOp.prototype.interfaces_ = function interfaces_ () {\n return []\n};\nUnionOp.prototype.getClass = function getClass () {\n return UnionOp\n};\nUnionOp.union = function union (g, other) {\n if (g.isEmpty() || other.isEmpty()) {\n if (g.isEmpty() && other.isEmpty()) { return OverlayOp.createEmptyResult(OverlayOp.UNION, g, other, g.getFactory()) }\n if (g.isEmpty()) { return other.copy() }\n if (other.isEmpty()) { return g.copy() }\n }\n g.checkNotGeometryCollection(g);\n g.checkNotGeometryCollection(other);\n return SnapIfNeededOverlayOp.overlayOp(g, other, OverlayOp.UNION)\n};\n\n// operation.union\n\n// operation\n\n/**\n * Polyfill for IE support\n */\n\nexport { GeoJSONReader, GeoJSONWriter, OverlayOp, UnionOp, BufferOp };\n"],"names":["value","arrayLike","length","relativeStart","relativeEnd","val","x","NumberUtil","x1","x2","tolerance","IllegalArgumentException","Error","message","Double","staticAccessors$1","n","Comparable","Clonable","Comparator","Serializable","Coordinate","c","staticAccessors","ordinateIndex","other","o","dx","dy","dz","result","f","DimensionalComparator","dimensionsToTest","dimensionsToTest$1","o1","o2","c1","c2","compX","compY","compZ","a","b","CoordinateSequenceFactory","Location","staticAccessors$4","locationValue","hasInterface","i","MathUtil","staticAccessors$5","ln","v1","v2","v3","v4","min","max","x$1","min$1","max$1","index","v1$1","v2$1","v3$1","StringBuffer","str","e","Integer","Character","DD","dd","hi","lo","staticAccessors$7","y","insertDecimalPoint","magnitude","mag","scale","decimalPointPos","buf","numDigits","digit","rebiasBy10","digitChar","continueExtractingDigits","remMag","y$1","yhi","ylo","hc","tc","hy","ty","C","U","u","zhi","zlo","exp","r","s","fhi","flo","plus5","value$1","ax","axdd","diffSq","d2","H","h","S","H$1","h$1","T","t","S$1","s$1","e$1","f$1","hx","tx","specialStr","sigDigits","num","numZeroes","zeroes","digits","expStr","trailingDigits","digitsWithDecimal","strlen","isNegative","signCh","numBeforeDec","ch","d","ex","val2","numDecPlaces","scale$1","xAbs","xLog10","xMag","xApprox","len","CGAlgorithmsDD","staticAccessors$6","p1","p2","q","dx1","dy1","dx2","dy2","y1","y2","det","q1","q2","denom1","denom2","denom","numx1","numx2","numx","fracP","numy1","numy2","numy","fracQ","pa","pb","pc","detsum","detleft","detright","errbound","CoordinateSequence","staticAccessors$8","env","Exception","NotRepresentableException","Exception$$1","System","src","srcPos","dest","destPos","name","HCoordinate","p","_x","_y","p1$1","p2$1","_x$1","_y$1","_w","p1$2","p2$2","px","py","pw","qx","qy","qw","w","xInt","yInt","Envelope","staticAccessors$9","otherEnvelope","intMinX","intMinY","intMaxX","intMaxY","transX","transY","distance","deltaX","deltaY","minq","maxq","minp","maxp","regExes","WKTParser","geometryFactory","GeometryFactory","wkt","geometry","type","matches","parse$1","extract$1","wktType","data","coordinate$1","point$1","multipoint$1","this$1","array","linestring$1","linearring$1","multilinestring$1","polygon$1","multipolygon$1","collection","coords","point","points","components","line","lines","ring","linestring","linearring","rings","shell","holes","polygon","polygons","wktArray","WKTWriter","p0","RuntimeException","AssertionFailedException","RuntimeException$$1","Assert","assertion","expectedValue","actualValue","LineIntersector","staticAccessors$10","segmentIndex","intIndex","catBuf","p3","p4","dist0","dist1","precisionModel","inputLineIndex","dist","ptIndex","pt","pdx","pdy","RobustLineIntersector","LineIntersector$$1","intPt","env0","env1","CGAlgorithms","n1","n2","n3","n4","normPt","x3","x4","xabs","intPtDD","isIn","p1q1p2","p1q2p2","q1p1q2","q1p2q2","n00","n01","n10","n11","minX0","minY0","maxX0","maxY0","minX1","minY1","maxX1","maxY1","intMidX","intMidY","Pq1","Pq2","Qp1","Qp2","collinear","nearestPt","minDist","RobustDeterminant","sign","swap","k","RayCrossingCounter","minx","maxx","xIntSign","counter","p$1","ring$1","counter$1","i$1","staticAccessors$3","sum","x0","x0$1","sum$1","A","B","D","noIntersection","rNumb","sNum","pts","y0","nPts","hiPt","hiIndex","iPrev","iNext","prev","next","disc","isCCW","len2","minDistance","lineIntersector","GeometryComponentFilter","geom","Geometry","factory","staticAccessors$11","g$1","g","other$1","comp","copy","SRID","userData","j","aElement","bElement","comparison","geometries","geometryChangedFilter","CoordinateFilter","coord","BoundaryNodeRule","staticAccessors$12","boundaryCount","Mod2BoundaryNodeRule","EndPointBoundaryNodeRule","MultiValentEndPointBoundaryNodeRule","MonoValentEndPointBoundaryNodeRule","Collection","IndexOutOfBoundsException","Iterator","List","Collection$$1","NoSuchElementException","ArrayList","List$$1","element","oldElement","Iterator_","found","Iterator$$1","arrayList","CoordinateList","ArrayList$$1","coord$1","allowRepeated","coll","isChanged","clone","coord$2","allowRepeated$1","last","obj","allowRepeated$2","coord$3","allowRepeated$3","direction","i$2","i$3","coord$4","allowRepeated$4","size","coord$5","allowRepeated$5","start","end","inc","CoordinateArrays","staticAccessors$13","ForwardComparator","BidirectionalComparator","testPts","testPt","coordinates","firstCoordinate","newCoordinates","coord1","coord2","coord1$1","coord2$1","coordinateComparator","coordList","mid","tmp","nonNull","newCoord","srcStart","destStart","pts1","pts2","coordinate","compare","minCoord","npts","extractPts","iPts","forwardComp","isEqualRev","dir1","dir2","i1","i2","comparePt","Map$1","SortedMap","Map","OperationNotSupported","Set","HashSet","Set$$1","Iterator_$1","hashSet","BLACK","RED","colorOf","parentOf","setColor","leftOf","rightOf","TreeMap","key","cmp","parent","oldValue","l","Lineal","SortedSet","TreeSet","Iterator_$2","treeSet","Arrays","comparator","Dimension","staticAccessors$14","dimensionValue","dimensionSymbol","GeometryFilter","CoordinateSequenceFilter","seq","GeometryCollection","Geometry$$1","envelope","childCoordinates","area","otherCollection","dimension","numPoints","revGeoms","theseElements","otherElements","o$1","gc","thisGeom","otherGeom","holeComp","filter","filter$1","filter$2","filter$3","MultiLineString","GeometryCollection$$1","nLines","revLines","BoundaryOp","lineStrings","bnRule","geom$1","bnRule$1","mLine","bdyPts","LineString","closedEndpointOnBoundary","it","entry","valence","Counter","bop","bop$1","PrintStream","StringReader","DecimalFormat","ByteArrayOutputStream","IOException","LineNumberReader","StringUtil","staticAccessors$15","os","ps","t$1","depth","stackTrace","lineNumberReader","separator","separatorlen","tokenList","tmpString","pos","token","res","CoordinateSequences","minDim","dim","cs1","cs2","cs1Size","cs2Size","fact","newseq","cs","isClosed","otherLineString","revLine","line$1","ls","Puntal","Point","Polygonal","Polygon","shellCoordinates","prevX","prevY","xChanged","yChanged","otherPolygon","thisShell","otherPolygonShell","clockwise","uniqueCoordinates","minCoordinate","poly","otherShell","thisShell$1","otherShell$1","shellComp","nHole1","nHole2","thisHole","otherHole","MultiPoint","LinearRing","LineString$$1","rev","MultiPolygon","allRings","allRingsArray","GeometryEditor","staticAccessors$16","isUserDataCopied","operation","collectionForType","newPolygon","hole","NoOpGeometryOperation","CoordinateOperation","CoordinateSequenceOperation","CoordinateArraySequence","coordSeq","size$1","dimension$1","staticAccessors$18","cloneCoordinates","strBuf","CoordinateArraySequenceFactory","staticAccessors$17","HashMap","MapInterface","PrecisionModel","Type","modelType","pm","staticAccessors$19","otherPrecisionModel","otherSigDigits","description","floatSingleVal","maxSigDigits","pm1","pm2","staticAccessors$1$1","staticAccessors$2","geomList","geomClass","isHeterogeneous","hasGeometryCollection","partClass","geom0","isCollection","coordinates$1","shell$1","editor","ptSeq","multiPolygons","multiPolygonArray","geometryArray","multiLineStrings","multiLineStringArray","lineStringArray","multiPoints","multiPointArray","linearRings","linearRingArray","pointArray","polygonArray","exemplar","geometryTypes","GeoJSONParser","json","parse","extract","feature","featureCollection","sub","linearRing","multipoint","geoJson","multilinestring","shellGeoJson","holeGeoJson","multipolygon","GeoJSONReader","GeoJSONWriter","Position","staticAccessors$20","position","EmptyStackException","Stack","RightmostEdgeFinder","de","side","pPrev","pNext","orientation","usePrev","node","star","dirEdgeList","rightmostSide","TopologyException","msg","LinkedList","BufferSubgraph","startEdge","de$1","outsideDepth","nodesVisited","nodeQueue","startNode","sym","adjNode","graph","edgeEnv","dirEdge","nodeStack","symNode","TopologyLocation","location","on","gl","on$1","left","right","locValue","newLoc","temp","posIndex","locIndex","locValue$1","le","loc","Label","onLoc","lbl","geomIndex","onLoc$1","onLoc$2","leftLoc","rightLoc","geomIndex$1","onLoc$3","leftLoc$1","rightLoc$1","count","location$1","label","lineLabel","EdgeRing","isFirstEdge","degree","edge","isForward","edgePts","startIndex","startIndex$1","deLabel","deLabel$1","holeLR","MinimalEdgeRing","EdgeRing$$1","er","MaximalEdgeRing","minEdgeRings","minEr","GraphComponent","isVisited","isInResult","isCovered","im","Node","GraphComponent$$1","edges","out","label2","eltIndex","nLoc","argIndex","onLocation","thisLoc","NodeMap","nodeFact","node$1","bdyNodes","Quadrant","staticAccessors$21","quad","quad1","quad2","diff","halfPlane","EdgeEnd","edge$1","edge$2","p0$1","label$1","angle","className","lastDotPos","boundaryNodeRule","DirectedEdge","EdgeEnd$$1","depthVal","isInteriorAreaEdge","nextMin","minEdgeRing","isLine","isExteriorIfArea0","isExteriorIfArea1","edgeRing","depthDelta","directionFactor","oppositePos","delta","oppositeDepth","currLocation","nextLocation","NodeFactory","PlanarGraph","nodeit","ep0","ep1","eCoord","ee","edgesToAdd","de1","de2","nodes","PolygonBuilder","edgeRings","shellList","freeHoleList","resultPolyList","maxEdgeRings","dirEdges","testEr","testRing","testEnv","minShell","minEnv","tryShell","tryRing","tryEnv","isContained","shellCount","Boundable","ItemBoundable","bounds","item","PriorityQueue","minItem","child","ItemVisitor","SpatialIndex","itemEnv","AbstractNode","level","staticAccessors$22","childBoundable","Collections","alen","BoundablePair","boundable1","boundable2","itemDistance","priQ","isComp1","isComp2","nd","bndComposite","bndOther","children","bp","AbstractSTRtree","nodeCapacity","nodeCapacity$1","staticAccessors$23","childToRemove","valuesTree","valuesTreeForNode","valuesTreeForChild","boundables","level$1","top","boundables$1","boundable","searchBounds","searchBounds$1","visitor","searchBounds$2","visitor$1","childBoundables","searchBounds$3","matches$1","childBoundables$1","childBoundable$1","item$1","childToPrune","boundablesOfALevel","parentBoundables","maxChildDepth","childDepth","newLevel","sortedChildBoundables","IntersectsOp","ItemDistance","item1","item2","STRtree","AbstractSTRtree$$1","verticalSlices","STRtreeNode","sliceCount","sliceCapacity","slices","boundablesAddedToSlice","searchEnv","searchEnv$1","minLeafCount","itemDist","initBndPair","tree","itemDist$1","bp$1","initBndPair$1","maxDistance","distanceLowerBound","minPair","bndPair","currentDistance","itemDist$2","bnd","bp$2","aBounds","bBounds","AbstractNode$$1","SegmentPointComparator","octant","xSign","ySign","compareSign0","compareSign1","SegmentNode","segString","segmentOctant","maxSegmentIndex","SegmentNodeList","eiPrev","ei","collapsedVertexIndexes","vertexIndex","ei0","ei1","lastSegStartPt","useIntPt1","edgeList","newEdge","collapsedVertexIndex","numVerticesBetween","isCollapsed","maxSegIndex","ipt","NodedSegmentString","eiNew","splitEdges","split0","pt0","splitn","splitnPts","ptn","Octant","adx","ady","dx$1","dy$1","SegmentString","NodableSegmentString","intPt$1","li","segmentIndex$1","normalizedSegmentIndex","nextSegIndex","nextPt","segStrings","resultEdgelist","segStrings$1","resultEdgelist$1","ss","LineSegment","staticAccessors$24","seg","orient0","orient1","geomFactory","pf0","pf1","newp0","newp1","closestPt","close00","close01","close10","close11","factor","comp0","segmentLengthFraction","offsetDistance","segx","segy","ux","uy","offsetx","offsety","inputPt","segFrac","bits0","hash0","bits1","hash1","MonotoneChainOverlapAction","mc1","start1","mc2","start2","MonotoneChain","context","start0","end0","mcs","mc","mco","id","end1","p00","p01","p10","p11","mid0","mid1","MonotoneChainBuilder","startIndexList","safeStart","chainQuad","pts$1","mcList","list","Noder","SinglePassNoder","segInt","MCIndexNoder","SinglePassNoder$$1","si","segStr","segChains","inputSegStrings","overlapAction","SegmentOverlapAction","queryChain","overlapChains","testChain","MonotoneChainOverlapAction$$1","ss1","ss2","BufferParameters","quadrantSegments","quadrantSegments$1","endCapStyle","quadrantSegments$2","endCapStyle$1","joinStyle","mitreLimit","staticAccessors$25","quadSegs","simplifyFactor","isSingleSided","alpha","BufferInputLineSimplifier","inputLine","staticAccessors$26","i0","distanceTol","midIndex","lastIndex","isMiddleVertexDeleted","isAngleToSimplify","isConcave","simp","OffsetSegmentString","staticAccessors$28","bufPt","lastPt","ptDist","startPt","minimimVertexDistance","Angle","staticAccessors$29","radians","dx0","dy0","dotprod","anglePrev","angleNext","tip1","tail","tip2","a1","a2","ang1","ang2","delAngle","angleDegrees","crossproduct","angDel","OffsetSegmentGenerator","bufParams","staticAccessors$27","addStartPoint","outsideTurn","offsetL","offsetR","squareCapSideOffset","squareCapLOffset","squareCapROffset","offset0","offset1","isMitreWithinLimit","mitreRatio","radius","startAngle","endAngle","s1","s2","basePt","ang0","angDiff","angDiffHalf","midAng","mitreMidAng","mitreDist","bevelDelta","bevelHalfLen","bevelMidX","bevelMidY","bevelMidPt","mitreMidLine","bevelEndLeft","bevelEndRight","offset","sideSign","totalAngle","nSegs","initAngle","currAngleInc","currAngle","numInt","OffsetCurveBuilder","inputPts","isRightSide","posDistance","segGen","curvePts","distTol","simp2","simp1","lineCoord","bufDistance","SubgraphDepthLocater","subgraphs","staticAccessors$30","stabbingRayLeftPt","stabbedSegments","bsg","stabbingRayLeftPt$1","stabbedSegments$1","ds","DepthSegment","stabbingRayLeftPt$2","stabbedSegments$2","orientIndex","seg0","seg1","compare0","Triangle","m00","m01","m10","m11","v0","z","lenAB","lenBC","lenCA","maxLen","cx","cy","ay","bx","by","ccx","ccy","l1","l2","len0","frac","splitPt","uz","vx","vy","vz","crossx","crossy","crossz","absSq","area3D","len1","circum","inCentreX","inCentreY","OffsetCurveSetBuilder","inputGeom","curveBuilder","curve","offsetSide","shellCoord","holeCoord","triangleCoord","bufferDistance","tri","inCentre","distToCentre","cwLeftLoc","cwRightLoc","ringCoord","envMinDimension","PointOnGeometryLocator","GeometryCollectionIterator","SimplePointInAreaLocator","geomi","g2","EdgeEndStar","iNextCW","startLoc","currLoc","it$1","geomGraph","lastEdgeIndex","startLabel","eSearch","hasDimensionalCollapseEdge","geomi$1","DirectedEdgeStar","EdgeEndStar$$1","firstOut","incoming","state","nextOut","nextIn","de0","deLast","quad0","nodeLabel","prevOut","firstIn","edgeIndex","startDepth","targetLastDepth","nextDepth","lastDepth","endIndex","startDepth$1","currDepth","nextDe","degree$1","nextOut$1","nextIn$1","eLabel","eLoc","OverlayNodeFactory","NodeFactory$$1","OrientedCoordinateArray","oca","orientation1","orientation2","limit1","limit2","compPt","done1","done2","EdgeList","edgeColl","matchEdge","SegmentIntersector","e0","segIndex0","e1","segIndex1","IntersectionAdder","EdgeIntersection","EdgeIntersectionList","Edge","MonotoneChainIndexer","MonotoneChainEdge","mcb","chainIndex","chainIndex0","mce","chainIndex1","mce$1","Depth","staticAccessors$31","depthValue","minDepth","newValue","newPts","newe","isIsolated","isEqualForward","isEqualReverse","iRev","BufferBuilder","existingEdge","existingLabel","labelToMerge","mergeDelta","existingDelta","newDelta","subgraphList","polyBuilder","processedGraphs","subgraph","locater","emptyGeom","noder","curveSetBuilder","bufferSegStrList","resultGeom","nodedSegStrings","oldLabel","lLoc","rLoc","ScaledNoder","scaleFactor","noder$1","scaleFactor$1","offsetX","offsetY","nodedSegmentStrings","roundPts","roundPtsNoDup","splitSS","intSegStrings","NodingValidator","staticAccessors$33","ss$1","ss0","ss0$1","ss1$1","pts0","HotPixel","staticAccessors$34","segMinx","segMaxx","segMiny","segMaxy","isOutsidePixelEnv","intersects","pScaled","safeTolerance","intersectsLeft","intersectsBottom","segIndex","MonotoneChainSelectAction","MCIndexPointSnapper","staticAccessors$35","hotPixel","hotPixel$1","parentEdge","hotPixelVertexIndex","pixelEnv","hotPixelSnapAction","HotPixelSnapAction","MonotoneChainSelectAction$$1","InteriorIntersectionFinderAdder","MCIndexSnapRounder","inputSegmentStrings","resultSegStrings","nv","intersections","intFinderAdder","edge0","isNodeAdded","snapPts","snapPt","BufferOp","staticAccessors$32","fixedPM","bufBuilder","precDigits","precisionDigits","sizeBasedScaleFactor","argPM","gBuf","geomBuf","distance$1","bufOp","geomBuf$1","g$2","distance$2","params","bufOp$1","geomBuf$2","g$3","distance$3","bufOp$2","geomBuf$3","maxPrecisionDigits","envMax","expandByDistance","bufEnvMax","bufEnvPrecisionDigits","minUnitLog10","PointPairDistance","DistanceToPointFinder","tempSegment","pt$1","ptDist$1","pt$2","ptDist$2","segment","pt$3","ptDist$3","closestPt$1","BufferCurveMaximumDistanceFinder","staticAccessors$36","distFilter","MaxMidpointDistanceFilter","MaxPointDistanceFilter","bufferCurve","midPt","PolygonExtracter","comps","LinearComponentExtracter","lines$1","isForcedToLineString","forceToLineString","geoms","geom$2","lines$2","geoms$1","lines$3","forceToLineString$1","geom$3","lines$4","forceToLineString$2","PointLocator","boundaryRule","shellLoc","holeLoc","p$2","ptCoord","ml","mpoly","GeometryLocation","component","component$1","staticAccessors$38","PointExtracter","ConnectedElementLocationFilter","locations","DistanceOp","g0","g1","g0$1","g1$1","terminateDistance","locPtPoly","polyGeomIndex","locPtPoly$1","locationsIndex","polys","insideLocs","locs","polys$1","locPtPoly$2","ptLoc","locPtPoly$3","locGeom","lines0","lines1","flip","nearestPts","coord0","segClosestPoint","line0","line1","locGeom$1","coord0$1","dist$1","points0","points1","pt1","distOp","PointPairDistance$2","DistanceToPoint","DiscreteHausdorffDistance","staticAccessors$39","densifyFrac","discreteGeom","MaxPointDistanceFilter$1","fracFilter","MaxDensifiedByFractionDistanceFilter","fraction","delx","dely","BufferDistanceValidator","input","staticAccessors$37","bufCurve","maxDist","haus","distDelta","inputCurve","lineExtracter","BufferResultValidator","staticAccessors$40","padding","expectedEnv","bufEnv","distValid","inputArea","resultArea","checkName","validator","BasicSegmentString","InteriorIntersectionFinder","isCheckEndSegmentsOnly","findAllIntersections","keepIntersections","isEndSegPresent","finder","FastNodingValidator","intSegs","EdgeNodingValidator","GeometryCollectionMapper","mapOp","mapped","op","mapper","LineBuilder","ptLocator","opCode","targetIndex","OverlayOp","edgesList","PointBuilder","GeometryTransformer","isAllValidLinearRings","transGeomList","transformGeom","seqSize","LineStringSnapper","srcLine","snapTolerance","srcPts","snapTolerance$1","srcCoords","srcPt","snapVert","distinctPtCount","snapIndex","allowSnappingToSourceVertices","GeometrySnapper","srcGeom","staticAccessors$41","snapGeom","snapTrans","SnapTransformer","cleanResult","snappedGeom","ringPts","minSegLen","snapTol","ptSet","segLen","snapper0","snapper1","fixedSnapTol","minDimension","GeometryTransformer$$1","isSelfSnap","snapper","CommonBits","numBits","numSignExp","bits","numStr","padStr","bitStr","mask","nBits","invMask","zeroed","num1","num2","CommonBitsRemover","CommonCoordinateFilter","staticAccessors$42","trans","Translater","invCoord","xp","yp","SnapOverlayOp","remGeom","prepGeom","SnapIfNeededOverlayOp","isSuccess","savedException","isValid","MonotoneChain$2","SweepLineEvent","insertEvent","staticAccessors$43","deleteEventIndex","pe","ev","EdgeSetIntersector","SegmentIntersector$2","includeProper","recordIsolated","isDoneWhenProperInt","bdyNodes0","bdyNodes1","SimpleMCSweepLineIntersector","EdgeSetIntersector$$1","edges0","edges1","si$1","si$2","testAllSegments","edgeSet","ev0","mc0","ev1","edges$1","IntervalRTreeNode","staticAccessors$45","queryMin","queryMax","NodeComparator","mid2","IntervalRTreeLeafNode","IntervalRTreeNode$$1","IntervalRTreeBranchNode","SortedPackedIntervalRTree","ArrayListVisitor","IndexedPointInAreaLocator","IntervalIndexedGeometry","staticAccessors$44","rcc","SegmentVisitor","GeometryGraph","PlanarGraph$$1","parentGeom","argIndex$1","parentGeom$1","boundaryNodeRule$1","computeRingSelfNodes","li$1","computeRingSelfNodes$1","isDoneIfProperInt","esi","isRings","computeAllSegments","edgelist","lr","cwLeft","cwRight","eiIt","GeometryGraphOp","g0$2","GeometryMapper","op$1","mapped$1","gr","resultPointList","resultLineList","opcode","newEdges","overlayOpCode","baseSplitEdges","lineBuilder","pointBuilder","graphNode","newNode","ni","geom1","gov","geomOv","dim0","dim1","resultDimension","geomFact","loc0","loc1","loc0$1","loc1$1","FuzzyPointLocator","boundaryDistanceTolerance","extracter","PolygonalLineworkExtracter","linework","OffsetPointGenerator","offsetPts","doLeft","doRight","midX","midY","offsetLeft","offsetRight","OverlayResultValidator","staticAccessors$46","overlayOp","expectedInterior","overlayOp$1","ptGen","resultInInterior","GeometryCombiner","elems","elemGeom","combiner","combiner$1","combiner$2","obj0","obj1","obj0$1","obj1$1","obj2","list$1","CascadedPolygonUnion","staticAccessors$47","geomTree","disjointGeoms","intersectingGeoms","elem","g0Env","g1Env","combo","commonEnv","itemTree","unionAll","union","common","disjointPolys","g0Int","g1Int","overallUnion","gColl","factory$1","gColl$1","unionAll$1","UnionOp"],"mappings":"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","x_google_ignoreList":[0]}