@arcgis/core 5.2.0-next.136 → 5.2.0-next.138
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.
- package/analysis/LineOfSightAnalysisObserver.d.ts +12 -0
- package/analysis/LineOfSightAnalysisObserver.js +1 -1
- package/analysis/LineOfSightAnalysisTarget.d.ts +12 -0
- package/analysis/LineOfSightAnalysisTarget.js +1 -1
- package/arcade/featureset/sources/FeatureLayerParquet.js +1 -1
- package/arcgisGlobal.d.ts +4 -0
- package/assets/components/assets/icon/blockHeightMedium16.json +1 -0
- package/assets/components/assets/icon/blockHeightMedium24.json +1 -0
- package/assets/components/assets/icon/blockHeightMedium32.json +1 -0
- package/assets/components/assets/icon/blockHeightShort16.json +1 -0
- package/assets/components/assets/icon/blockHeightShort24.json +1 -0
- package/assets/components/assets/icon/blockHeightShort32.json +1 -0
- package/assets/components/assets/icon/blockHeightTall16.json +1 -0
- package/assets/components/assets/icon/blockHeightTall24.json +1 -0
- package/assets/components/assets/icon/blockHeightTall32.json +1 -0
- package/assets/components/assets/icon/cursorCircle16.json +1 -0
- package/assets/components/assets/icon/cursorCircle24.json +1 -0
- package/assets/components/assets/icon/cursorCircle32.json +1 -0
- package/assets/components/assets/icon/dictionary16.json +1 -0
- package/assets/components/assets/icon/dictionary24.json +1 -0
- package/assets/components/assets/icon/dictionary32.json +1 -0
- package/assets/components/assets/icon/jobDependency16.json +1 -0
- package/assets/components/assets/icon/jobDependency24.json +1 -0
- package/assets/components/assets/icon/jobDependency32.json +1 -0
- package/assets/components/assets/icon/referenceChip16.json +1 -0
- package/assets/components/assets/icon/referenceChip24.json +1 -0
- package/assets/components/assets/icon/referenceChip32.json +1 -0
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/{4e6f95d8c624d513849a.js → 05963f57cbe5a5249496.js} +1 -1
- package/assets/esri/core/workers/chunks/{0b8681ca4a83e97f1f71.js → 067de1910190da228291.js} +1 -1
- package/assets/esri/core/workers/chunks/{3c0fd1c6cda44e9f40ab.js → 070684943698fa43c2b4.js} +1 -1
- package/assets/esri/core/workers/chunks/{bc1cb4b9a02e6c78deb7.js → 076e8d2e08ff2a013736.js} +1 -1
- package/assets/esri/core/workers/chunks/{c10e040368065411506a.js → 10445313d0d57b34511b.js} +1 -1
- package/assets/esri/core/workers/chunks/{d537c59b46cdaaf66034.js → 1188d0a136fffc009643.js} +1 -1
- package/assets/esri/core/workers/chunks/{20af3f085f60c32c6c53.js → 178083d8ed7707b45ca2.js} +1 -1
- package/assets/esri/core/workers/chunks/{f5efe3e800c6e23efcf3.js → 1819c45655c836b9a8d7.js} +1 -1
- package/assets/esri/core/workers/chunks/1b946714ca4a1a7359d4.js +2 -0
- package/assets/esri/core/workers/chunks/{d8d8b38ac8a91d9e45fc.js → 1cc744ab5eee5ee3bed8.js} +1 -1
- package/assets/esri/core/workers/chunks/{05e39b4de7f62c5b22cc.js → 20f75cc777af13fa249b.js} +1 -1
- package/assets/esri/core/workers/chunks/2a1ec30f9ad305763f81.js +2 -0
- package/assets/esri/core/workers/chunks/34570e6bbf559f18c1a5.js +1 -0
- package/assets/esri/core/workers/chunks/{60f6d5da9480dd36e877.js → 3dddae78286d05eb10fc.js} +1 -1
- package/assets/esri/core/workers/chunks/{9efd30bbd02ec0d1031b.js → 3ec3589f6e74d7cb87cf.js} +1 -1
- package/assets/esri/core/workers/chunks/{0bec054fca104f3bf141.js → 3f776d9fd2ab68b21fca.js} +1 -1
- package/assets/esri/core/workers/chunks/402a82c77420254831bc.js +1 -0
- package/assets/esri/core/workers/chunks/{e2ebf0ea3af2e6907987.js → 406f24ec13eb30d43405.js} +1 -1
- package/assets/esri/core/workers/chunks/43fc42405167a5537039.js +1 -0
- package/assets/esri/core/workers/chunks/{ddedc414bb478b376221.js → 46b2d4addfc73f9183a4.js} +1 -1
- package/assets/esri/core/workers/chunks/498d6dfd3bb0d3490548.js +1 -0
- package/assets/esri/core/workers/chunks/{36ef86701883a20dd6f6.js → 4a640548032355e57acd.js} +1 -1
- package/assets/esri/core/workers/chunks/5566f14afb63065e438f.js +1 -0
- package/assets/esri/core/workers/chunks/{c3b96d1d43afccd23e45.js → 590e6c70206122e4cc3c.js} +2 -2
- package/assets/esri/core/workers/chunks/{54860dd53a46cf4c47f3.js → 59295b99bdff4045a0e7.js} +1 -1
- package/assets/esri/core/workers/chunks/5aeb5e18514644fe2cf9.js +1 -0
- package/assets/esri/core/workers/chunks/{5da86409d70098fc6a10.js → 5b3cfe95314a75a735c1.js} +1 -1
- package/assets/esri/core/workers/chunks/{a54678bfa0f1807b61cd.js → 5c855af73ee3c3e764fb.js} +1 -1
- package/assets/esri/core/workers/chunks/{06da3409992bb1fa85b0.js → 5e90c1b49f2b7e21d05a.js} +39 -31
- package/assets/esri/core/workers/chunks/5fd099ca1024707387b2.js +1 -0
- package/assets/esri/core/workers/chunks/{30f808cac8a34f95ea6e.js → 6079d27f4ab319fb8f0c.js} +1 -1
- package/assets/esri/core/workers/chunks/66c2a28a851130b87c04.js +1 -0
- package/assets/esri/core/workers/chunks/{dac90b3631f7f7158f68.js → 67f15538c51838201fc7.js} +1 -1
- package/assets/esri/core/workers/chunks/{cfaba0470619786e1ef8.js → 68d8ae42ab71d01a70a5.js} +2 -2
- package/assets/esri/core/workers/chunks/6aebf7cfd294e88bf926.js +1 -0
- package/assets/esri/core/workers/chunks/{864e7030c4ddbfcf0114.js → 6ccf9535013fe672c93b.js} +1 -1
- package/assets/esri/core/workers/chunks/{ba7f0cf7e495d3ec2d55.js → 6e62581d933e7298d1f6.js} +1 -1
- package/assets/esri/core/workers/chunks/{83b5dd4029e00abd80bf.js → 700b1d5bc67b7e1b3ff3.js} +1 -1
- package/assets/esri/core/workers/chunks/{f9fea72cc222a30ef2f9.js → 72399062767abdfb0bee.js} +1 -1
- package/assets/esri/core/workers/chunks/{2a7fbfd77002a24bf737.js → 747461bb6a1bc2f0a64d.js} +1 -1
- package/assets/esri/core/workers/chunks/{c333f6ed42985bb2b11f.js → 7851aef196eea5d6c94e.js} +1 -1
- package/assets/esri/core/workers/chunks/{f0b6bd6fab5320c3082f.js → 7a05b18f655c1167ce0a.js} +1 -1
- package/assets/esri/core/workers/chunks/{04296b75d0f81fbd1bb5.js → 864194927d05ebc4cc31.js} +1 -1
- package/assets/esri/core/workers/chunks/{3c4a13a9f0b305394a26.js → 876f7633c15f1e31078d.js} +1 -1
- package/assets/esri/core/workers/chunks/{62298dba3f6cbdc3f4ae.js → 879b2f0ff1977bca9376.js} +1 -1
- package/assets/esri/core/workers/chunks/{b547b3bce729c9dac90d.js → 898359be6996fd9763b8.js} +1 -1
- package/assets/esri/core/workers/chunks/8cb716f110d164030309.js +1 -0
- package/assets/esri/core/workers/chunks/8dc1c3042267618fd710.js +2 -0
- package/assets/esri/core/workers/chunks/{625f02db93d7fbf175ca.js → 9001e9a1e81bce175ddd.js} +1 -1
- package/assets/esri/core/workers/chunks/{9ffa6c8d93d3443834c6.js → 912080c90b5cc2e817cf.js} +1 -1
- package/assets/esri/core/workers/chunks/96c50a0dda0f1503ef92.js +2 -0
- package/assets/esri/core/workers/chunks/{13e4379441499599c3b5.js → 9cbde13e536676767900.js} +1 -1
- package/assets/esri/core/workers/chunks/{408db4f32850b77264ae.js → 9cd3fcb5fca6f9dbbcd8.js} +1 -1
- package/assets/esri/core/workers/chunks/a054da6cbd8ee4774a57.js +1 -0
- package/assets/esri/core/workers/chunks/a05790444115e4cf1bcc.js +1 -0
- package/assets/esri/core/workers/chunks/{d1f2685782b423ef87a6.js → a556dd4e9e6d35e33a2c.js} +1 -1
- package/assets/esri/core/workers/chunks/{00d576d355599c88931e.js → bc38def1983089514e4b.js} +1 -1
- package/assets/esri/core/workers/chunks/{0725e515f3004bdd5c56.js → ca2adcbcf44454484fd5.js} +1 -1
- package/assets/esri/core/workers/chunks/{f3507b9e831ffd7a6bf8.js → cca8bd07bcd1d267a2e8.js} +1 -1
- package/assets/esri/core/workers/chunks/cfae60b9d2f2939e9c16.js +1 -0
- package/assets/esri/core/workers/chunks/{1d6b2a64f4e40e5cc13d.js → d201fbf3ceff946d2bd6.js} +1 -1
- package/assets/esri/core/workers/chunks/{4439078780d9ba49fd26.js → d51bb11baadc741c46bc.js} +1 -1
- package/assets/esri/core/workers/chunks/db1ab9b9c8bf5c7635d3.js +1 -0
- package/assets/esri/core/workers/chunks/de02a6a1f4810f99e9bb.js +1 -0
- package/assets/esri/core/workers/chunks/e630f3c56c077cb2bd8e.js +1 -0
- package/assets/esri/core/workers/chunks/e81173724e8de8c1e65b.js +1 -0
- package/assets/esri/core/workers/chunks/{2025288bed125594ceda.js → f6e62d2d279a328cbed7.js} +1 -1
- package/assets/esri/core/workers/chunks/{47c19778fcee7154ca38.js → f8bc474434fd365ab174.js} +1 -1
- package/assets/esri/core/workers/chunks/{9a20dc26cb9c7b2087cf.js → f95a1f878c9c1146180e.js} +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ar.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.bg.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.bs.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ca.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.cs.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.da.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.de.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.el.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.en.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.es.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.et.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.fi.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.fr.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.he.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.hr.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.hu.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.id.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.it.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ja.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ko.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.lt.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.lv.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.nl.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.no.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.pl.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.pt-BR.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.pt-PT.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ro.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.ru.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.sk.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.sl.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.sr.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.sv.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.th.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.tr.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.uk.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.vi.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.zh-CN.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.zh-HK.json +1 -1
- package/assets/esri/widgets/BatchAttributeForm/t9n/messages.zh-TW.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/messages.ar.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/messages.bg.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/messages.bs.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/messages.ca.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/messages.cs.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/messages.da.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/messages.de.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/messages.el.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/messages.es.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/messages.et.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/messages.fi.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/messages.fr.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/messages.he.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/messages.hr.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/messages.hu.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/messages.id.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/messages.it.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/messages.ja.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/messages.ko.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/messages.lt.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/messages.lv.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/messages.nl.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/messages.no.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/messages.pl.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/messages.pt-BR.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/messages.pt-PT.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/messages.ro.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/messages.ru.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/messages.sk.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/messages.sl.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/messages.sr.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/messages.sv.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/messages.th.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/messages.tr.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/messages.uk.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/messages.vi.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/messages.zh-CN.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/messages.zh-HK.json +1 -1
- package/assets/esri/widgets/FeatureForm/t9n/messages.zh-TW.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.ar.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.bg.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.bs.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.ca.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.cs.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.da.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.de.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.el.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.en.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.es.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.et.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.fi.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.fr.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.he.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.hr.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.hu.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.id.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.it.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.ja.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.ko.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.lt.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.lv.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.nl.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.no.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.pl.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.pt-BR.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.pt-PT.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.ro.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.ru.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.sk.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.sl.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.sr.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.sv.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.th.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.tr.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.uk.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.vi.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.zh-CN.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.zh-HK.json +1 -1
- package/assets/esri/widgets/OrientedImageryViewer/t9n/messages.zh-TW.json +1 -1
- package/chunks/Bufferer-CclWhXVb.js +1 -1
- package/chunks/Component.glsl.js +3 -3
- package/chunks/DefaultMaterial.glsl.js +2 -2
- package/chunks/Distance2DCalculator-DjIp2uQi.js +1 -1
- package/chunks/Envelope.js +1 -1
- package/chunks/Envelope2D.js +1 -1
- package/chunks/FocusArea.glsl.js +8 -10
- package/chunks/GaussianSplat.glsl.js +2 -2
- package/chunks/GeodeticDistanceCalculator-zRp89-dW.js +1 -1
- package/chunks/GeodeticUtils.js +1 -1
- package/chunks/Geometry.js +1 -1
- package/chunks/GeometryCleaner-CIE8Wfmb.js +1 -1
- package/chunks/GlobalIllumination.glsl.js +3 -3
- package/chunks/LineMarker.glsl.js +35 -42
- package/chunks/MultiPathImpl.js +1 -1
- package/chunks/OperatorAffineTransform.js +1 -1
- package/chunks/OperatorClip.js +1 -1
- package/chunks/OperatorDensify.js +1 -1
- package/chunks/OperatorDistance.js +1 -1
- package/chunks/OperatorGeneralize.js +1 -1
- package/chunks/OperatorGeodesicBuffer.js +1 -1
- package/chunks/OperatorGeodeticArea.js +1 -1
- package/chunks/OperatorGeodeticDensifyByLength.js +1 -1
- package/chunks/OperatorGeodeticDistance.js +1 -1
- package/chunks/OperatorGeodeticLength.js +1 -1
- package/chunks/OperatorGraphicBuffer.js +1 -1
- package/chunks/OperatorIntegrate.js +1 -1
- package/chunks/OperatorMultiPartToSinglePart.js +1 -1
- package/chunks/OperatorProximity.js +1 -1
- package/chunks/OperatorProximityGeodesic.js +1 -1
- package/chunks/OperatorShapePreservingLength.js +1 -1
- package/chunks/OperatorShapePreservingProject.js +1 -1
- package/chunks/OperatorSimplifyOGC.js +1 -1
- package/chunks/Path.glsl.js +2 -2
- package/chunks/Point2D.js +1 -1
- package/chunks/RealisticTree.glsl.js +2 -2
- package/chunks/RibbonLine.glsl.js +51 -57
- package/chunks/SideCalculator2D-DX0718xq.js +1 -1
- package/chunks/Terrain.glsl.js +2 -2
- package/chunks/Transformation2D.js +1 -1
- package/chunks/UnitFactory.js +1 -1
- package/config.js +1 -1
- package/core/workers/RemoteClient.js +1 -1
- package/core/workers/workerFactory.js +1 -1
- package/editing/fieldUtils.d.ts +12 -0
- package/editing/sharedTemplates/templateDefinitions/TemplateDefinitionBase.js +1 -1
- package/geometry/operators/extendOperator.js +1 -1
- package/geometry/operators/gx/operatorAlphaShape.js +1 -1
- package/geometry/operators/gx/operatorBoundary.js +1 -1
- package/geometry/operators/gx/operatorBuffer.js +1 -1
- package/geometry/operators/gx/operatorConvexHull.js +1 -1
- package/geometry/operators/gx/operatorLabelPoint.js +1 -1
- package/geometry/operators/gx/operatorLinesToPolygons.js +1 -1
- package/geometry/operators/gx/operatorLocateBetween.js +1 -1
- package/geometry/operators/gx/operatorMinimumBoundingCircle.js +1 -1
- package/geometry/operators/gx/operatorOffset.js +1 -1
- package/geometry/operators/gx/operatorPolygonOverlay.js +1 -1
- package/geometry/operators/gx/operatorPolygonSlicer.js +1 -1
- package/geometry/operators/gx/operatorSymmetricDifference.js +1 -1
- package/geometry/operators/isNearOperator.js +1 -1
- package/geometry/operators/reshapeOperator.js +1 -1
- package/geometry/operators/support/jsonConverter.js +1 -1
- package/geometry/support/curves/ellipticArc7Utils.js +1 -1
- package/geometry/support/ellipseUtils.js +2 -0
- package/interfaces.d.ts +15 -18
- package/kernel.js +1 -1
- package/layers/LinkChartLayer.js +1 -1
- package/layers/ParquetLayer.js +1 -1
- package/layers/graphics/sources/support/ParquetSourceWorker.js +1 -1
- package/layers/list/LayerItemCollection.d.ts +1 -0
- package/layers/list/types.d.ts +5 -1
- package/layers/orientedImagery/core/coverageUtils.js +1 -1
- package/layers/orientedImagery/queries.js +1 -1
- package/layers/support/TimeSeriesCalculation.d.ts +1 -1
- package/layers/support/TimeSeriesCalculation.js +1 -1
- package/layers/support/dataSeriesUtils.d.ts +10 -0
- package/layers/support/timeSeriesUtils.js +17 -6
- package/libs/lyr3d/Lyr3DModule.js +1 -1
- package/networks/UtilityNetwork.d.ts +15 -0
- package/networks/UtilityNetwork.js +1 -1
- package/package.json +4 -4
- package/popup/FeatureContent.d.ts +14 -1
- package/popup/FeatureContent.js +1 -1
- package/popup/FeatureContentCollection.d.ts +4 -10
- package/popup/FeatureContentCollection.js +1 -1
- package/popup/actions.js +1 -1
- package/popup/support/featureUtils.js +1 -1
- package/renderers/support/RenderingInfo.js +1 -1
- package/renderers/support/renderingInfoUtils.js +1 -1
- package/renderers/visualVariables/SizeVariable.d.ts +16 -20
- package/renderers/visualVariables/support/SizeStop.d.ts +6 -2
- package/rest/networks/support/TraceLocation.js +1 -1
- package/rest/networks/support/TraceResult.d.ts +7 -0
- package/rest/networks/support/TraceResult.js +1 -1
- package/smartMapping/renderers/color.js +1 -1
- package/smartMapping/renderers/opacity.js +1 -1
- package/smartMapping/renderers/size.js +1 -1
- package/smartMapping/renderers/support/timeSeriesUtils.js +1 -1
- package/smartMapping/statistics/histogramForTimeSeries.d.ts +11 -0
- package/smartMapping/statistics/histogramForTimeSeries.js +2 -0
- package/smartMapping/statistics/summaryStatisticsForTimeSeries.d.ts +11 -0
- package/smartMapping/statistics/summaryStatisticsForTimeSeries.js +2 -0
- package/smartMapping/statistics/support/timeSeriesUtils.js +24 -0
- package/smartMapping/statistics/types.d.ts +50 -0
- package/support/tests/serviceMockDependencies.js +1 -1
- package/support/tests/setupServiceMocksMesh.js +1 -1
- package/symbols/cim/CIMPlacements.js +1 -1
- package/symbols/cim/callouts/calloutAnalysisUtils.js +1 -1
- package/symbols/cim/callouts/effects/BackgroundCallout.js +1 -1
- package/symbols/cim/callouts/effects/BalloonCallout.js +1 -1
- package/symbols/cim/callouts/effects/PointSymbolCallout.js +1 -1
- package/symbols/cim/callouts/effects/calloutUtils.js +1 -1
- package/symbols/cim/cimAnalyzer.js +1 -1
- package/views/2d/analysis/AreaMeasurement/AreaMeasurementTool.js +1 -1
- package/views/2d/analysis/DistanceMeasurement/DistanceMeasurementTool.js +1 -1
- package/views/2d/engine/vectorTiles/decluttering/CollisionJob.js +1 -1
- package/views/2d/engine/vectorTiles/decluttering/SymbolFader.js +1 -1
- package/views/2d/engine/vectorTiles/decluttering/jobsUtil.js +1 -1
- package/views/2d/engine/webgl/collisions/LabelMetric.js +1 -1
- package/views/2d/engine/webgl/definitions.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/animated/AAnimatedShader.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/animated/AnimatedPolyMeshWriters.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/animated/ComputedAnimatedParams.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/markers/ComputedMarkerParams.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/mesh/CalloutMeshWriterPolicy.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/shaders/AFeatureShader.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/text/TextParams.js +1 -1
- package/views/2d/engine/webgl/shaderGraph/techniques/text/TextShader.js +1 -1
- package/views/2d/layers/SketchLayerView2D.js +1 -1
- package/views/2d/layers/features/layerAdapters/AnnotationLayerAdapter.js +1 -1
- package/views/2d/layers/features/layerAdapters/CatalogFootprintLayerAdapter.js +1 -1
- package/views/2d/layers/features/layerAdapters/DimensionLayerAdapter.js +1 -1
- package/views/2d/layers/features/layerAdapters/FeatureLayerAdapter.js +1 -1
- package/views/2d/layers/features/layerAdapters/InMemoryLayerAdapter.js +1 -1
- package/views/2d/layers/features/layerAdapters/KnowledgeGraphSublayerAdapter.js +1 -1
- package/views/2d/layers/features/layerAdapters/OGCFeatureLayerAdapter.js +1 -1
- package/views/2d/layers/features/layerAdapters/OrientedImageryLayerAdapter.js +1 -1
- package/views/2d/layers/features/layerAdapters/ParquetLayerAdapter.js +1 -1
- package/views/2d/layers/features/layerAdapters/StreamLayerAdapter.js +1 -1
- package/views/2d/layers/features/layerAdapters/SubtypeGroupLayerAdapter.js +1 -1
- package/views/2d/layers/features/layerAdapters/labelingUtils.js +1 -1
- package/views/2d/layers/features/schema/ExceedsLimitCache.js +1 -1
- package/views/2d/layers/features/schema/TimeSchema.js +2 -0
- package/views/2d/layers/features/schema/processor/LabelMatcherSchema.js +1 -1
- package/views/2d/layers/features/schema/processor/MatcherSchema.js +1 -1
- package/views/2d/layers/features/schema/processor/symbols/SymbolSchema.js +1 -1
- package/views/2d/layers/features/sources/FeatureSourceQueryInfo.js +1 -1
- package/views/2d/layers/features/sources/strategies/ParquetTileLoadStrategy.js +1 -1
- package/views/2d/layers/support/annodime/cimAnnotations.js +1 -1
- package/views/2d/layers/support/vectorTileDebugUtils.js +1 -1
- package/views/2d/layers/support/visualVariableSimpleUtils.js +1 -1
- package/views/2d/types.d.ts +2 -1
- package/views/3d/analysis/LineOfSight/LineOfSightEditTool.js +1 -1
- package/views/3d/analysis/LineOfSight/LineOfSightItemManipulatedObject3D.js +1 -1
- package/views/3d/analysis/LineOfSight/LineOfSightItemTool.js +1 -1
- package/views/3d/analysis/LineOfSightAnalysisView3D.d.ts +24 -0
- package/views/3d/analysis/Viewshed/ViewshedEditTool.js +1 -1
- package/views/3d/analysis/Viewshed/ViewshedObserverManipulatedObject3D.js +1 -1
- package/views/3d/analysis/Viewshed/ViewshedPlacementController.js +1 -1
- package/views/3d/analysis/Viewshed/ViewshedSubTool.js +1 -1
- package/views/3d/analysis/VolumeMeasurement/VolumeMeasurementShiftTool.js +1 -1
- package/views/3d/camera/constraintUtils.js +1 -1
- package/views/3d/input/handlers/ground/GroundDoubleClickMove.js +1 -1
- package/views/3d/input/handlers/ground/GroundNavigation.js +1 -1
- package/views/3d/interactive/editingTools/tooltipUtils3D.js +1 -1
- package/views/3d/interactive/placementTools/GroundNavigationPlacementTool3D.js +1 -1
- package/views/3d/layers/graphics/Graphics3DLineSymbolLayer.js +1 -1
- package/views/3d/layers/i3s/I3SOverrides.js +1 -1
- package/views/3d/layers/support/FastSymbolUpdates.js +1 -1
- package/views/3d/state/controllers/GroundNavigationController.js +1 -1
- package/views/3d/state/controllers/momentum/GroundNavigationMomentumController.js +1 -1
- package/views/3d/state/utils/OffsetCorrectionController.js +1 -1
- package/views/3d/state/utils/groundNavigationUtils.js +1 -1
- package/views/3d/webgl-engine/collections/Component/Material/ComponentMaterial.js +1 -1
- package/views/3d/webgl-engine/collections/Component/Material/ComponentTechniqueConfiguration.js +1 -1
- package/views/3d/webgl-engine/core/shaderLibrary/shading/EvaluateSceneLighting.glsl.js +16 -8
- package/views/3d/webgl-engine/core/shaderLibrary/shading/LineStipple.glsl.js +5 -1
- package/views/3d/webgl-engine/core/shaderLibrary/shading/evaluateSceneLightingFragment.glsl.js +12 -0
- package/views/3d/webgl-engine/core/shaderLibrary/terrain/Overlay.glsl.js +2 -2
- package/views/3d/webgl-engine/effects/focusArea/FocusArea.glsl.js +1 -1
- package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.glsl.js +1 -1
- package/views/3d/webgl-engine/effects/globalIllumination/GlobalIllumination.js +1 -1
- package/views/3d/webgl-engine/lib/BindParameters.js +1 -1
- package/views/3d/webgl-engine/shaders/LineMarker.glsl.js +1 -1
- package/views/3d/webgl-engine/shaders/RibbonLine.glsl.js +1 -1
- package/views/SelectionManager.d.ts +3 -3
- package/views/draw/support/Reshape.js +1 -1
- package/views/interactive/options/bindViewToolOptions.js +1 -1
- package/views/interactive/sketch/SketchLabelOptions.d.ts +3 -0
- package/views/interactive/sketch/SketchLabelOptions.js +1 -1
- package/views/interactive/sketch/SketchTooltipOptions.d.ts +3 -0
- package/views/interactive/sketch/SketchTooltipOptions.js +1 -1
- package/views/interactive/sketch/SketchValueOptions.d.ts +3 -0
- package/views/interactive/sketch/SketchValueOptions.js +1 -1
- package/views/interactive/snapping/SnappingOptions.d.ts +3 -0
- package/views/interactive/snapping/SnappingOptions.js +1 -1
- package/views/interactive/snapping/snappingUtils.js +1 -1
- package/views/interactive/tooltip/fields/parsingAndFormattingUtils.js +1 -1
- package/views/layers/SketchLayerView.d.ts +34 -0
- package/views/layers/SketchLayerView.js +2 -0
- package/views/layers/types.d.ts +3 -2
- package/views/selection/types.d.ts +15 -4
- package/widgets/BasemapGallery/BasemapGalleryViewModel.js +1 -1
- package/widgets/BasemapGallery.js +1 -1
- package/widgets/Bookmarks/BookmarksViewModel.d.ts +4 -0
- package/widgets/Bookmarks/BookmarksVisibleElements.d.ts +5 -1
- package/widgets/Bookmarks/types.d.ts +2 -0
- package/widgets/Editor/EditorViewModel.d.ts +31 -30
- package/widgets/Editor/EditorViewModel.js +1 -1
- package/widgets/Editor/components/Settings.js +1 -1
- package/widgets/Editor/types.d.ts +44 -0
- package/widgets/Editor.d.ts +30 -27
- package/widgets/Editor.js +1 -1
- package/widgets/FeatureTable/FeatureTableViewModel.d.ts +1 -1
- package/widgets/FeatureTable/FeatureTableViewModel.js +1 -1
- package/widgets/FeatureTable/support/FeatureStore.d.ts +1 -1
- package/widgets/FeatureTable/support/FeatureStore.js +1 -1
- package/widgets/FeatureTable.d.ts +6 -0
- package/widgets/FeatureTable.js +1 -1
- package/widgets/Histogram/types.d.ts +10 -2
- package/widgets/HistogramRangeSlider/types.d.ts +4 -1
- package/widgets/LayerList/LayerListViewModel.d.ts +2 -1
- package/widgets/Legend/LegendViewModel.d.ts +2 -0
- package/widgets/Legend/styles/card/CardView.d.ts +2 -0
- package/widgets/Legend/styles/classic/ClassicView.d.ts +4 -1
- package/widgets/Legend.d.ts +3 -0
- package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.d.ts +7 -0
- package/widgets/OrientedImageryViewer/OrientedImageryViewerViewModel.js +1 -1
- package/widgets/OrientedImageryViewer/components/OrientedImageryVideoViewModel.js +1 -1
- package/widgets/OrientedImageryViewer/support/VideoFeatureCache.js +2 -0
- package/widgets/OrientedImageryViewer/types.d.ts +9 -0
- package/widgets/OrientedImageryViewer.d.ts +7 -0
- package/widgets/OrientedImageryViewer.js +2 -2
- package/widgets/PanoramicVideoViewer.js +1 -1
- package/widgets/PanoramicViewer/PanoramicVideoViewerViewModel.js +1 -1
- package/widgets/ScaleRangeSlider/types.d.ts +9 -2
- package/widgets/Sketch/SketchViewModel.d.ts +32 -1
- package/widgets/Sketch/SketchViewModel.js +1 -1
- package/widgets/Sketch.d.ts +27 -1
- package/widgets/Sketch.js +1 -1
- package/widgets/Slider/types.d.ts +58 -13
- package/widgets/Slider.d.ts +6 -0
- package/widgets/smartMapping/BinaryColorSizeSlider/BinaryColorSizeSliderViewModel.d.ts +2 -0
- package/widgets/smartMapping/ClassedColorSlider/ClassedColorSliderViewModel.d.ts +2 -0
- package/widgets/smartMapping/ClassedSizeSlider/ClassedSizeSliderViewModel.d.ts +2 -0
- package/widgets/smartMapping/ColorSizeSlider/ColorSizeSliderViewModel.d.ts +2 -0
- package/widgets/smartMapping/ColorSlider/ColorSliderViewModel.d.ts +2 -0
- package/widgets/smartMapping/HeatmapSlider/HeatmapSliderViewModel.d.ts +2 -0
- package/widgets/smartMapping/OpacitySlider/OpacitySliderViewModel.d.ts +2 -0
- package/widgets/smartMapping/SizeSlider/SizeSliderViewModel.d.ts +3 -0
- package/widgets/smartMapping/SmartMappingPrimaryHandleSliderViewModel.d.ts +2 -0
- package/widgets/smartMapping/SmartMappingSliderViewModel.d.ts +2 -0
- package/widgets/smartMapping/types.d.ts +30 -7
- package/widgets/support/FilterBuilder/FilterBuilderViewModel.d.ts +21 -11
- package/widgets/support/FilterBuilder/FilterBuilderViewModel.js +1 -1
- package/widgets/support/FilterBuilder/types.d.ts +28 -0
- package/widgets/support/FilterBuilder.js +1 -1
- package/widgets/support/FilterCondition/FilterConditionViewModel.d.ts +24 -0
- package/widgets/support/FilterCondition/FilterConditionViewModel.js +1 -1
- package/widgets/support/FilterCondition/types.d.ts +16 -1
- package/widgets/support/FilterCondition.js +1 -1
- package/widgets/support/SnappingControls/snappingLayerListUtils.js +1 -1
- package/widgets/support/iconUtils.js +1 -1
- package/assets/esri/core/workers/chunks/0606ab6fdfc1dfea3856.js +0 -1
- package/assets/esri/core/workers/chunks/078dcd17f46403d44b24.js +0 -1
- package/assets/esri/core/workers/chunks/1289204f8ca96032c17a.js +0 -1
- package/assets/esri/core/workers/chunks/12b5a645c0987a0efe54.js +0 -2
- package/assets/esri/core/workers/chunks/152fe3d6ad7aebbd23d1.js +0 -1
- package/assets/esri/core/workers/chunks/17b938ba49fb1e7ab8c4.js +0 -1
- package/assets/esri/core/workers/chunks/1dbb3e25e005a8220779.js +0 -2
- package/assets/esri/core/workers/chunks/3d6fef25af7e1a51e1bd.js +0 -1
- package/assets/esri/core/workers/chunks/3ef367c9b7bf1588307d.js +0 -1
- package/assets/esri/core/workers/chunks/5f4feca26102088ea565.js +0 -1
- package/assets/esri/core/workers/chunks/74211d096cc3296e0968.js +0 -1
- package/assets/esri/core/workers/chunks/7926faab76a721a2e1c4.js +0 -1
- package/assets/esri/core/workers/chunks/ad28486bc6afaa346de5.js +0 -1
- package/assets/esri/core/workers/chunks/ad29c729e90b5866713c.js +0 -1
- package/assets/esri/core/workers/chunks/b72a2514aa4cc4ae7d1b.js +0 -1
- package/assets/esri/core/workers/chunks/bb51cf52b8ea8283f4f8.js +0 -1
- package/assets/esri/core/workers/chunks/be761749f8d77fbd9df5.js +0 -1
- package/assets/esri/core/workers/chunks/dbfd25aa0d19aed5890c.js +0 -1
- package/assets/esri/core/workers/chunks/de28a86775235bd5d3c4.js +0 -2
- package/assets/esri/core/workers/chunks/f6cfc901267a229de7a1.js +0 -2
- package/assets/esri/core/workers/chunks/fb147097149a89e671ff.js +0 -1
- package/support/revision.js +0 -2
- /package/assets/esri/core/workers/chunks/{1dbb3e25e005a8220779.js.LICENSE.txt → 1b946714ca4a1a7359d4.js.LICENSE.txt} +0 -0
- /package/assets/esri/core/workers/chunks/{f6cfc901267a229de7a1.js.LICENSE.txt → 2a1ec30f9ad305763f81.js.LICENSE.txt} +0 -0
- /package/assets/esri/core/workers/chunks/{c3b96d1d43afccd23e45.js.LICENSE.txt → 590e6c70206122e4cc3c.js.LICENSE.txt} +0 -0
- /package/assets/esri/core/workers/chunks/{cfaba0470619786e1ef8.js.LICENSE.txt → 68d8ae42ab71d01a70a5.js.LICENSE.txt} +0 -0
- /package/assets/esri/core/workers/chunks/{de28a86775235bd5d3c4.js.LICENSE.txt → 8dc1c3042267618fd710.js.LICENSE.txt} +0 -0
- /package/assets/esri/core/workers/chunks/{12b5a645c0987a0efe54.js.LICENSE.txt → 96c50a0dda0f1503ef92.js.LICENSE.txt} +0 -0
package/chunks/MultiPathImpl.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
|
|
2
|
-
import{i as e,a as t,g as n,r,G as i,B as a,C as o,t as s,d as c,A as l,j as u,o as d,q as f,h as p,f as m,D as h,k as g,p as _}from"./Geometry.js";import{K as v,L as y,M as b,N as x,O as S,V as C,r as w,Q as T,R as E,U as D,W as O,E as k,X as ee,k as A,Y as j,Z as te,_ as ne,$ as M,A as re,a0 as N,a1 as ie,a2 as ae,P,u as oe,a3 as se,a as ce,B as le,S as ue,T as de,a4 as fe}from"./Envelope.js";import{E as F,d as I,a4 as pe,P as L,b as me,i as he,Q as ge,a5 as _e,c as R,a6 as ve,a7 as z,M as B,r as V,a8 as ye,Z as H,a9 as be,T as xe,g as Se,m as U,aa as Ce,s as we,ab as W,I as Te,K as Ee,G as De,e as Oe,ac as ke,ad as Ae,ae as je,af as Me,ag as Ne,ah as Pe,ai as Fe,aj as Ie,ak as G,l as Le,al as Re,j as ze,am as Be,an as Ve,J as He,o as Ue,ao as We,ap as Ge,aq as Ke,ar as qe,as as Je,at as Ye,a as Xe,X as Ze,au as Qe,av as $e,w as et,aw as tt,ax as nt,x as rt,ay as it,az as at,aA as ot,aB as st,aC as ct,aD as lt,aE as ut,v as dt,p as ft,aF as pt,aG as mt,aH as ht,aI as gt,aJ as _t,aK as vt,a2 as yt}from"./Point2D.js";import{Envelope2D as K}from"./Envelope2D.js";import{T as bt}from"./Transformation2D.js";import{G as xt}from"./GeometryCursor.js";class St{posStream=null;streams=null;get(e){return e>0?this.streams[e-1]:this.posStream}set(e,t){e>0?this.streams[e-1]=t:this.posStream=t}destroyAndSetSize(e){if(this.streams=null,e>1){this.streams=Array(e-1);for(let t=0;t<e-1;++t)this.streams[t]=null}this.posStream=null}swap(e){[this.streams,e.streams]=[e.streams,this.streams],[this.posStream,e.posStream]=[e.posStream,this.posStream]}empty(){return this.posStream===null&&this.streams===null}}function Ct(e,n,r,i,a){(n<0||r<0||i<1||n+i*(r-1)+1>e.size())&&t(`Index out of bound`);for(let t=n,o=n+i*(r-1)+1;t<o;t+=i)e.writeAsDbl(t,a(e.readAsDbl(t)))}function wt(e,t,n){if(!e)t.forEach(n);else for(let e=t.length-1;e>=0;--e)n(t[e])}function Tt(e,t){let n=ge(e),r=t.length/he();for(let e=0;e<t.length;++e){let e=Math.trunc(n*r);n=ge(n);let i=Math.trunc(n*r),a=t[e];t[e]=t[i],t[i]=a}}function Et(e,t,n){if(e.length===0)return;let r=0,i=0;for(++i;i!==e.length;++i)t(e[r],e[i])||(n(r,i),r=i);n(r,i)}function Dt(e,t,n,r,i){_e(e,t,r-t,(e,t)=>i(e,t)?-1:1)}function Ot(e,t,n){if(!(n<=t))for(;t<n;)e[n]=R(e[t],e[t]=e[n]),t++,n--}function kt(e,t,n,r){Ot(e,t,n-1),Ot(e,n,r-1),e.reverse()}function At(e,t,n){let r=e.getDescription().getTotalComponentCount();e.setX(t[0]),e.setY(t[1]),me(e.getAttributeArray(),t,0,2,r-2)}var jt=C;const Mt=`can not assign an empty point to a vertex`;class Nt{constructor(e){if(e!==void 0&&e.move)this.m_description=e.move.m_description,e.move.m_description=v(),this.m_vertexAttributes=e.move.m_vertexAttributes,e.move.m_vertexAttributes=new St,this.m_envelopeData=e.move.m_envelopeData,e.move.m_envelopeData=new y,this.m_pointCount=e.move.m_pointCount,this.m_reservedPointCount=e.move.m_reservedPointCount,this.m_flags=e.move.m_flags,this.m_bFillRule=e.move.m_bFillRule,this.m_bPathStarted=e.move.m_bPathStarted,this.m_bPolygon=e.move.m_bPolygon,this.m_simpleTolerance=e.move.m_simpleTolerance;else{let t=e!==void 0&&e.vd?e.vd:v();this.m_description=t,this.m_vertexAttributes=new St,this.m_envelopeData=new y,this.m_pointCount=0,this.m_reservedPointCount=-1,this.m_flags=4063,this.m_bFillRule=this.m_bPathStarted=this.m_bPolygon=!1,this.m_simpleTolerance=0,e!==void 0&&e.copy&&e.copy.copyTo(this)}}equalsBase(t,n){if(!e(t.getGeometryType()))return!1;let r=t;if(this===r)return!0;if(!this.m_description.equals(r.getDescription())||this.isEmptyImpl()!==r.isEmptyImpl())return!1;if(this.isEmptyImpl())return!0;let i=this.getPointCount();if(i!==r.getPointCount())return!1;for(let e=0;e<this.m_description.getAttributeCount();e++){let t=this.m_description.getSemantics(e),a=this.getAttributeStreamRef(t),o=r.getAttributeStreamRef(t),s=jt.getComponentCount(t);if(!a.equals(o,0,i*s,n))return!1}if(n){if(!this.equalsImplTol(t,n))return!1}else if(!this.equalsImpl(t))return!1;return!0}transformAttribute(e,n,r,i,a){if(this.addAttribute(e),!this.isEmpty()&&(r!==0||i!==1)){if(e===0){let e=new bt;a===0?n===0?(e.setShiftCoords(r,0),e.scale(i,1)):n===1?(e.setShiftCoords(0,r),e.scale(1,i)):t(``):n===0?(e.setScaleCoords(1/i,1),e.shiftCoords(-r,0)):n===1?(e.setScaleCoords(1,1/i),e.shiftCoords(0,-r)):t(``),this.applyTransformation(e);return}Ct(this.getAttributeStreamRef(e),n,this.getPointCount(),jt.getComponentCount(e),te(r,i,a)),this.notifyModified()}}getDescription(){return this.m_description}assignVertexDescription(e){this.m_description!==e&&this.assignVertexDescriptionImpl(e)}mergeVertexDescriptionImpl(e){let t=this.getDescription(),n=b(t,e);this.assignVertexDescription(n)}mergeVertexDescription(e){this.m_description!==e&&(this.m_description.hasAttributesFrom(e)||this.mergeVertexDescriptionImpl(e))}hasAttribute(e){return this.m_description.hasAttribute(e)}addAttribute(e){if(this.m_description.hasAttribute(e))return;let t=x(this.m_description,e);this.assignVertexDescription(t)}dropAttribute(e){if(!this.m_description.hasAttribute(e))return;let t=S(this.m_description,e);this.assignVertexDescription(t)}dropAllAttributes(){let e=v();e!==this.m_description&&this.assignVertexDescription(e)}getAttributeStreamRef(e){this.throwIfEmpty(),this.m_description.hasAttribute(e)||t(`AttributeStream : Geometry does not have the attribute`);let n=this.m_description.getAttributeIndex(e);return this.m_vertexAttributes.get(n)}setAttributeStreamRef(e,n){n||t(`stream`),n&&jt.getPersistence(e)!==n.getPersistence()&&t(``),this.addAttribute(e);let r=this.m_description.getAttributeIndex(e);this.m_vertexAttributes.empty()&&this.m_vertexAttributes.destroyAndSetSize(this.m_description.getAttributeCount()),this.m_vertexAttributes.set(r,n),this.notifyModifiedFlags(2001)}notifyModifiedFlags(e){e===65535&&(this.m_reservedPointCount=-1,this.notifyModifiedAllImpl()),this.setDirtyFlagProtected(e,!0),this.clearAccelerators(),e&32&&this.verifyAllStreamsAfterSizeChange()}notifyModified(){this.notifyModifiedFlags(2001)}getPointCount(){return this.m_pointCount}getPointByVal(e,t){let n=t;n.assignVertexDescription(this.m_description);for(let t=0;t<this.m_description.getAttributeCount();t++){let r=this.m_description.getSemantics(t);for(let i=0,a=jt.getComponentCount(r);i<a;i++){let o=this.m_vertexAttributes.get(t).readAsDbl(a*e+i);n.setAttributeBasic(r,i,o)}}}setPointByValNoCurves(e,n){let r=n;r.isEmpty()&&t(Mt);let i=r.getDescription();i!==this.m_description&&this.mergeVertexDescription(i);let a=this.m_vertexAttributes.get(0);a.write(e*2,r.getX()),a.write(e*2+1,r.getY());for(let t=1,n=this.m_description.getAttributeCount();t<n;t++){let n=this.m_description.getSemantics(t),i=jt.getComponentCount(n);for(let a=0;a<i;a++){let o=r.getAttributeAsDbl(n,a);this.m_vertexAttributes.get(t).writeAsDbl(e*i+a,o)}}this.notifyModifiedFlags(2001)}setPointByValFromArrayNoCurves(e,t,r,i){n(0)}getPointByValAsArray(e,t,r,i){n(0)}isEmpty(){return this.isEmptyImpl()}isEmptyImpl(){return this.m_pointCount===0}getAttributeAsDbl(e,t,n){let i=jt.getComponentCount(e);n>=i&&r(``);let a=this.m_description.getAttributeIndex(e);return a>=0?this.m_vertexAttributes.get(a).readAsDbl(t*i+n):jt.getDefaultValue(e)}queryAttributeAsDbl(e,t,n,i){let a=jt.getComponentCount(e);i<a&&r(``);let o=this.m_description.getAttributeIndex(e);if(o>=0){let e=t*a,r=this.m_vertexAttributes.get(o);for(let t=0;t<a;t++)n[t]=r.readAsDbl(e+t)}else{let t=jt.getDefaultValue(e);for(let e=0;e<a;e++)n[e]=t}}getAttributeAsInt(e,t,n){return Math.trunc(this.getAttributeAsDbl(e,t,n))}queryAttributeAsInt(e,t,r,i){n(0)}setAttributeNoCurves(e,t,n,i){let a=jt.getComponentCount(e);n>=a&&r(``),this.addAttribute(e);let o=this.m_description.getAttributeIndex(e);this.notifyModifiedFlags(2001),this.m_vertexAttributes.get(o).writeAsDbl(t*a+n,i)}setAttributeFromArrayNoCurves(e,t,n,i){(t<0||t>=this.m_pointCount)&&r(``);let a=jt.getComponentCount(e);i<a&&r(``),this.addAttribute(e);let o=this.m_description.getAttributeIndex(e);this.notifyModifiedFlags(2001);let s=this.m_vertexAttributes.get(o);for(let e=0;e<a;++e)s.writeAsDbl(t*a+e,n[e])}getXY(e){return this.m_vertexAttributes.get(0).readPoint2D(e*2)}queryXY(e,t){return this.m_vertexAttributes.get(0).queryPoint2D(e*2,t)}setXYNoCurves(e,t){this.m_vertexAttributes.get(0).writePoint2D(e*2,t),this.notifyModifiedFlags(2001)}setXYCoordsNoCurves(e,t,n){let r=this.m_vertexAttributes.get(0);r.write(e*2,t),r.write(e*2+1,n),this.notifyModifiedFlags(2001)}getXYZ(e){let t=this.m_vertexAttributes.get(0),n=A.getNAN();return n.x=t.read(e*2),n.y=t.read(e*2+1),n.z=this.m_description.hasAttribute(1)?this.m_vertexAttributes.get(1).read(e):jt.getDefaultValue(1),n}setXYZNoCurves(e,t){this.addAttribute(1),this.notifyModifiedFlags(2001);let n=this.m_vertexAttributes.get(0);n.write(e*2,t.x),n.write(e*2+1,t.y),this.m_vertexAttributes.get(1).write(e,t.z)}queryEnvelope(e){e instanceof K||e instanceof w?this.updateEnvelope(e):(this.updateAllDirtyIntervals(!0),this.m_envelopeData.copyTo(this.m_description,e))}queryLooseEnvelope(e){this.updateLooseEnvelope(e)}queryInterval(e,t){let n=F.constructEmpty();return this.isEmptyImpl()?n:(this.updateAllDirtyIntervals(!0),this.m_envelopeData.queryInterval(this.m_description,e,t,n),n)}setAttributeBasic(e,t,n){this.setAttributeImpl(e,t,n)}setAttributeImpl(e,t,n){if(this.addAttribute(e),this.isEmpty())return;let r=!1,i=jt.getComponentCount(e),a=this.getAttributeStreamRef(e),o=Number.isNaN(n);if(a.getPersistence()===1){let e=a;for(let a=t,s=this.m_pointCount*i;a<s;a+=i){let t=e.read(a);(!o&&t!==n||!Number.isNaN(t))&&(e.write(a,n),r=!0)}}else for(let e=t,o=this.m_pointCount*i;e<o;e+=i)a.readAsDbl(e)!==n&&(a.writeAsDbl(e,n),r=!0);r&&this.notifyModifiedFlags(2001)}replaceNaNs(e,t){if(this.addAttribute(e),this.isEmpty())return;let n=!1,r=jt.getComponentCount(e),i=this.getAttributeStreamRef(e);for(let e=0;e<r;e++)if(i.getPersistence()===1){let e=i;for(let i=0,a=this.m_pointCount*r;i<a;i++){let r=e.read(i);Number.isNaN(r)&&(e.write(i,t),n=!0)}}else for(let e=0,a=this.m_pointCount*r;e<a;e++){let r=i.readAsDbl(e);Number.isNaN(r)&&(i.writeAsDbl(e,t),n=!0)}n&&this.notifyModifiedFlags(2001)}calculateLength3D(e){return n(0),0}setEnvelopeForImport(e){this.m_description.equals(e.getDescription())||t(``),this.m_envelopeData=new y({moveEnv:e}),this.setDirtyFlagProtected(192,!1)}copyTo(e){e.getGeometryType()!==this.getGeometryType()&&t(``),this!==e&&this.copyToUnchecked(e,!1)}queryCoordinates(e,n,r,i){let a=i<0?this.m_pointCount:i;if(a=Math.min(a,r+n),(r<0||a<r||this.m_pointCount>0&&r>=this.m_pointCount)&&t(``),this.m_pointCount===0)return a;let o=this.getAttributeStreamRef(0);for(let t=2*r,n=2*a,i=0;t<n;t+=2,i++)o.queryPoint2D(t,e[i]);return a}queryCoordinates3D(e,n,r,i){let a=i<0?this.m_pointCount:i;if(a=Math.min(a,r+n),(r<0||a<r||this.m_pointCount>0&&r>=this.m_pointCount)&&t(``),this.m_pointCount===0)return a;let o=this.getAttributeStreamRef(0),s=null,c=jt.getDefaultValue(1),l=this.m_description.hasAttribute(1);l&&(s=this.getAttributeStreamRef(1));let u=0;for(let t=r;t<a;t++,u++)e[u].x=o.read(2*t),e[u].y=o.read(2*t+1),e[u].z=l?s.read(t):c;return a}clearAndSetDirtyFlagProtected(e,t){let n=0,r=e&~t,i=t|r;n=this.m_flags,(n&i)!==t&&(this.m_flags=n&~r|t)}getIsSimple(e,t){t[0]=0;let n=-1,r=this.m_flags,i=this.m_simpleTolerance;return r&1||(n=(r&14)>>1,t[0]=i,i<e&&(n=-1)),n}setIsSimple(e,t,r=!1){if(e===2?n(this.getGeometryType()===i.enumPolyline):e===1?n(this.getGeometryType()===i.enumMultiPoint||this.getGeometryType()===i.enumPolyline):e===3&&n(this.getGeometryType()===i.enumPolygon),e===-1)this.setDirtyFlagProtected(17,!0);else{let n=e<<1;r||(n|=16),this.clearAndSetDirtyFlagProtected(31,n),this.m_simpleTolerance!==t&&(this.m_simpleTolerance=t)}}attributeStreamIsAllocated(e){this.throwIfEmpty();let t=this.m_description.getAttributeIndex(e);return t>=0&&this.m_vertexAttributes.get(t)!==null}capacity(){return this.m_reservedPointCount===-1&&this.m_pointCount===0?0:this.m_reservedPointCount}getDescriptionImpl(){return this.m_description}copyToUnchecked(e,t=!1){t&&this.hasDirtyFlag(32)&&a(`Cannot do shallow clone on unprepared geometry`);let r=e,o=this.getGeometryType(),s=r.getGeometryType();n(o===s||o===i.enumPolygon&&s===i.enumPolyline,`failure in copyToUnchcked`),r.clearAccelerators(),r.m_description=this.m_description,r.m_vertexAttributes.destroyAndSetSize(0),r.m_envelopeData.releaseAttributes();let c=this.m_description.getAttributeCount(),l=new St;if(!this.m_vertexAttributes.empty()){l.destroyAndSetSize(c);for(let e=0;e<c;e++)if(this.m_vertexAttributes.get(e)){if(t)l.set(e,this.m_vertexAttributes.get(e));else{let t=jt.getComponentCount(this.m_description.getSemantics(e));l.set(e,this.m_vertexAttributes.get(e).restrictedClone(this.getPointCount()*t))}}}if(this.m_envelopeData.copyToIfNotNull(this.m_description,r.m_envelopeData),r.m_flags=this.m_flags,r.m_simpleTolerance=this.m_simpleTolerance,o!==s){let e=[NaN];r.getIsSimple(0,e)>=3?r.setIsSimple(1,e[0]):r.setIsSimple(-1,0)}r.m_vertexAttributes.swap(l),l.destroyAndSetSize(0),r.m_pointCount=this.m_pointCount,r.hasDirtyFlag(32)||r.m_vertexAttributes.empty()?(n(!t||r.m_pointCount===0),r.m_reservedPointCount=-1):r.m_reservedPointCount=r.m_pointCount;try{this.copyToImpl(r,t)}catch(e){throw r.setEmpty(),e}r.verifyAllStreamsAfterSizeChange()}buildRasterizedGeometryAccelerator(e,t){return!1}getAccelerators(){return this.m_accelerators}clearAccelerators(){this.m_accelerators&&this.m_accelerators.release(),this.m_accelerators=null}ensureUniqueAccelerators(){if(this.m_accelerators&&!this.m_accelerators.uniqueUse()){let e=this.m_accelerators.clone();this.m_accelerators.release(),this.m_accelerators=e}}interpolateTwoVertices(e,t,i,a){(e<0||e>=this.m_pointCount)&&r(``),(t<0||t>=this.m_pointCount)&&r(``),a.assignVertexDescription(this.m_description);let o=I(jt.maxComponentCount(),NaN),s=I(jt.maxComponentCount(),NaN),c=T(),l=0;for(let r=0;r<this.m_description.getAttributeCount();r++){let a=this.m_description.getSemantics(r),u=jt.getInterpolation(a),d=jt.getComponentCount(a),f=jt.getDefaultValue(a);this.queryAttributeAsDbl(a,e,o,d),this.queryAttributeAsDbl(a,t,s,d),n(l+d<=j),pe(u,o,s,c,l,d,i,f),l+=d}At(a,c)}getShortestDistance(e,t){return L.distance(this.getXY(e),this.getXY(t))}getShortestSqrDistance(e,t){return L.sqrDistance(this.getXY(e),this.getXY(t))}resizeImpl(e){if(e<0&&t(),e=Math.ceil(e),e===this.m_pointCount)return;this.m_pointCount=e;let n=this.m_pointCount<=this.m_reservedPointCount?2001:4095;this.notifyModifiedFlags(n)}m_description;m_vertexAttributes;m_envelopeData;m_pointCount;m_reservedPointCount;m_flags;m_bFillRule;m_bPathStarted;m_bPolygon;m_simpleTolerance;m_accelerators=null;assignVertexDescriptionImpl(e){if(!this.m_vertexAttributes.empty()){let t=E();D(e,this.m_description,t);let n=new St;n.destroyAndSetSize(e.getAttributeCount());for(let r=0;r<e.getAttributeCount();r++){let e=t[r];e===-1?this.m_reservedPointCount=-1:n.set(r,this.m_vertexAttributes.get(e))}n.swap(this.m_vertexAttributes)}this.m_description=e,this.m_envelopeData.releaseAttributes(),this.notifyModifiedFlags(4095)}hasDirtyFlag(e){return(this.m_flags&e)!==0}setDirtyFlagProtected(e,t){t?this.m_flags|=e:this.m_flags&=~e}notifyModifiedAllImpl(){}verifyAllStreamsAfterSizeChange(){this.hasDirtyFlag(32)&&this.verifyAllStreamsAfterSizeChangeImpl()}verifyAllStreamsAfterSizeChangeImpl(){if(this.hasDirtyFlag(32)){if(this.m_reservedPointCount<this.m_pointCount){this.m_vertexAttributes.empty()&&this.m_vertexAttributes.destroyAndSetSize(this.m_description.getAttributeCount()),this.m_reservedPointCount=-1;let e=2**53-1,t=0;t=this.m_pointCount<4?3:this.m_pointCount<=128?this.m_pointCount*2:Math.trunc((this.m_pointCount*4+2)/3);for(let n=0;n<this.m_description.getAttributeCount();n++){let r=this.m_description.getSemantics(n),i=0;if(this.m_vertexAttributes.get(n)!==null){let e=jt.getComponentCount(r);i=this.m_vertexAttributes.get(n).size()/e,i<this.m_pointCount&&(this.m_vertexAttributes.get(n).resize(t*e,jt.getDefaultValue(r)),i=t)}else this.m_vertexAttributes.set(n,O(r,t)),i=t;i<e&&(e=i)}this.m_reservedPointCount=e}this.verifyStreamsAfterSizeChangeExtraImpl(),this.setDirtyFlagProtected(32,!1)}}verifyStreamsAfterSizeChangeExtraImpl(){}updateAllDirtyIntervals(e){if(e?this.hasDirtyFlag(192):this.hasDirtyFlag(128)){if(this.isEmpty()){this.hasDirtyFlag(192)&&this.m_envelopeData.setEmpty(this.m_description),this.setDirtyFlagProtected(192,!1);return}let t=this.updateXYImpl(e),n=new k({vd:this.m_description});n.setEnvelope(t);for(let e=1;e<this.m_description.getAttributeCount();e++){let t=this.m_description.getSemantics(e),r=jt.getComponentCount(t),i=this.m_vertexAttributes.get(e);for(let e=0;e<r;e++){let a=new F;a.setEmpty();for(let t=0;t<this.m_pointCount;t++){let n=i.readAsDbl(t*r+e);a.mergeCoordinate(n)}n.setIntervalEnvelope(t,e,a)}}(e?this.hasDirtyFlag(192):this.hasDirtyFlag(128))&&(this.m_envelopeData=new y({moveEnv:n}),this.clearDirtyIntervalsFlag(e))}}updateXYImpl(e){let t=K.constructEmpty(),n=this.m_vertexAttributes.get(0);return t.mergePointsInterleaved(n,0,this.m_pointCount),t}updateEnvelope3D(e){n(0)}updateLooseEnvelope(e){this.updateAllDirtyIntervals(!1),e instanceof K?e.assign(this.m_envelopeData.m_envelope2D):this.m_envelopeData.queryEnvelope3D(this.m_description,e)}updateEnvelope(e){this.updateAllDirtyIntervals(!0),e.assign(this.m_envelopeData.m_envelope2D)}setEmptyImpl(){this.m_pointCount=0,this.m_reservedPointCount=-1,this.m_vertexAttributes.destroyAndSetSize(0),this.notifyModifiedFlags(4095)}clearDirtyIntervalsFlag(e){this.setDirtyFlagProtected(192,!1)}reserveImpl(e,n){if(e<0&&t(``),e===0)return;e=Math.ceil(e);let r=e;if(this.m_reservedPointCount<r){this.m_vertexAttributes.empty()&&this.m_vertexAttributes.destroyAndSetSize(this.m_description.getAttributeCount()),n?(this.m_vertexAttributes.get(0)===null&&this.m_vertexAttributes.set(0,ee(0,0)),this.m_vertexAttributes.get(0).resizeRounded(r*2),r=this.m_vertexAttributes.get(0).size()>>1):this.m_vertexAttributes.get(0)===null?this.m_vertexAttributes.set(0,ee(0,r)):this.m_vertexAttributes.get(0).resize(r*2);for(let e=1;e<this.m_description.getAttributeCount();e++){let t=this.m_description.getSemantics(e),n=jt.getComponentCount(t);this.m_vertexAttributes.get(e)===null?this.m_vertexAttributes.set(e,ee(t,r)):this.m_vertexAttributes.get(e).resize(r*n)}this.reserveImplImpl(r,n),this.m_reservedPointCount=r}}reserveRounded(e){e<0&&t(),e=Math.ceil(e),this.reserveImpl(e,!0)}reserveImplImpl(e,t){}throwIfEmpty(){this.isEmptyImpl()&&o(``)}exportVertexAttributes(){let e=this.getPointCount(),t=this.m_description.getAttributeIndex(1),n=this.m_description.getAttributeIndex(2),r=this.m_vertexAttributes.posStream,i=t>0?this.m_vertexAttributes.get(t):void 0,a=n>0?this.m_vertexAttributes.get(n):void 0;return{vertexCount:e,vertexXY:r?.getArray()??new Float64Array,vertexZ:i?.getArray(),vertexM:a?.getArray()}}}class Pt extends Nt{static type=i.enumMultiPoint;constructor(e){super(e),e&&(e.points?this.addPoints2D(e.points,e.pointsSize,0,-1):e.point&&this.add(e.point))}assignCopy(e){return e.copyTo(this),this}assignMove(e){return e.copyTo(this),e.setEmpty(),this}insertPoint2D(e,n){e>this.getPointCount()&&t(`invalid point index`),e<0&&(e=this.getPointCount());let r=this.m_pointCount;this.resizeNoInit(this.m_pointCount+1);for(let t=0,i=this.m_description.getAttributeCount();t<i;t++){let i=this.m_description.getSemantics(t),a=C.getComponentCount(i);if(i===0)this.m_vertexAttributes.get(t).insert(a*e,n,a*r);else{let n=C.getDefaultValue(i);this.m_vertexAttributes.get(t).insertRange(a*e,n,a,a*r)}}this.notifyModifiedFlags(2001)}insertPoint(e,n){n.isEmpty()&&t(Mt),e<0&&(e=this.getPointCount()),this.mergeVertexDescription(n.getDescription());let r=this.m_pointCount;this.resizeNoInit(this.m_pointCount+1);for(let t=0,i=this.m_description.getAttributeCount();t<i;t++){let i=this.m_description.getSemantics(t),a=C.getComponentCount(i);if(n.hasAttribute(i))this.m_vertexAttributes.get(t).insertAttributes(a*e,n,i,a*r);else{let n=C.getDefaultValue(i);this.m_vertexAttributes.get(t).insertRange(a*e,n,a,a*r)}}this.notifyModifiedFlags(2001)}insertPoints(e,t,n){if((e>this.getPointCount()||n<0)&&r(``),e<0&&(e=this.getPointCount()),n===0)return;let i=t[0].getDescription();this.mergeVertexDescription(i);let a=this.m_pointCount;this.resizeNoInit(this.m_pointCount+n);for(let r=0,o=this.m_description.getAttributeCount();r<o;r++){let o=this.m_description.getSemantics(r),s=C.getComponentCount(o);if(this.m_vertexAttributes.get(r)){if(i.hasAttribute(o))this.m_vertexAttributes.get(r).insertAttributesFromPoints(e*s,t,n,o,a*s);else{let t=C.getDefaultValue(o);this.m_vertexAttributes.get(r).insertRange(s*e,t,s*n,s*a)}}}this.notifyModifiedFlags(2001)}insertPoints2D(e,n,r){if((e>this.getPointCount()||r<0)&&t(`invalid point index`),e<0&&(e=this.getPointCount()),r===0)return;let i=this.m_pointCount;this.resizeNoInit(this.m_pointCount+r);for(let t=0,a=this.m_description.getAttributeCount();t<a;t++){let a=this.m_description.getSemantics(t),o=C.getComponentCount(a);if(this.m_vertexAttributes.get(t)){if(a===0)this.m_vertexAttributes.get(t).insertRangeFromPoints(o*e,n,0,r,!0,o*i);else{let n=C.getDefaultValue(a);this.m_vertexAttributes.get(t).insertRange(o*e,n,o,o*i)}}}this.notifyModifiedFlags(2001)}removePoints(e,t){if((e<0||t<0||e+t>this.getPointCount())&&r(`remove_points`),t!==0){for(let n=0,r=this.m_description.getAttributeCount();n<r;n++)if(this.m_vertexAttributes.get(n)){let r=this.m_description.getSemantics(n),i=C.getComponentCount(r);this.m_vertexAttributes.get(n).eraseRange(i*e,i*t,i*this.m_pointCount)}this.m_pointCount-=t,this.m_reservedPointCount>0&&(this.m_reservedPointCount-=t),this.notifyModifiedFlags(2001)}}removePoint(e){for(let t=0,n=this.m_description.getAttributeCount();t<n;t++)if(this.m_vertexAttributes.get(t)){let n=this.m_description.getSemantics(t),r=C.getComponentCount(n);this.m_vertexAttributes.get(t).eraseRange(r*e,r,r*this.m_pointCount)}this.m_pointCount--,this.m_reservedPointCount>0&&this.m_reservedPointCount--,this.notifyModifiedFlags(2001)}calculateEnvelope2D(){return this.updateXYImpl(!0)}resizeNoInit(e){this.resizeImpl(e)}resizeAndInitNonPositionAttributes(e){let t=this.m_pointCount;if(this.resizeImpl(e),this.m_pointCount>t)for(let e=1,n=this.m_description.getAttributeCount();e<n;e++){let n=this.m_description.getSemantics(e),r=C.getDefaultValue(n),i=C.getComponentCount(n);this.m_vertexAttributes.get(e).insertRange(i*t,r,i*(this.m_pointCount-t),i*t)}}queryCoordinates3D(e,n,r,i){let a=i<0?this.m_pointCount:i;if(a=Math.min(a,r+n),(r<0||a<r||this.m_pointCount>0&&r>=this.m_pointCount)&&t(``),this.m_pointCount===0)return a;let o=this.getAttributeStreamRef(0),s=null,c=C.getDefaultValue(1),l=this.m_description.hasAttribute(1);l&&(s=this.getAttributeStreamRef(1));let u=0;for(let t=r;t<a;t++,u++)e[u].x=o.read(2*t),e[u].y=o.read(2*t+1),e[u].z=l?s.read(t):c;return a}queryAttributeAsInt(e,t,r,i){n(0)}add(e){e.isEmpty()&&t(Mt),this.resizeAndInitNonPositionAttributes(this.m_pointCount+1),this.setPointByValNoCurves(this.m_pointCount-1,e)}addXY(e,t){this.resizeAndInitNonPositionAttributes(this.m_pointCount+1);let n=new L(e,t);this.setXYNoCurves(this.m_pointCount-1,n)}addXYZ(e,t,n){this.resizeAndInitNonPositionAttributes(this.m_pointCount+1);let r=new A;r.setCoords(e,t,n),this.setXYZNoCurves(this.m_pointCount-1,r)}addPoint2D(e){this.addXY(e.x,e.y)}addPoint3D(e){this.addXYZ(e.x,e.y,e.z)}addPoints(e,n,r){this===e&&t(`Multi_point_impl.add`);let i=r<0?e.getPointCount():r;if((n<0||n>e.getPointCount()||i<n)&&t(``),n===i)return;let a=e.getDescription();this.mergeVertexDescription(a);let o=i-n,s=this.m_pointCount;this.resizeNoInit(this.m_pointCount+o);for(let t=0,r=this.m_description.getAttributeCount();t<r;t++){let r=this.m_description.getSemantics(t),i=C.getComponentCount(r),c=this.getAttributeStreamRef(r);if(a.hasAttribute(r)){let t=e.getAttributeStreamRef(r);c.insertRangeFromStream(s*i,t,n*i,o*i,!0,1,s*i)}else{let e=C.getDefaultValue(r);c.insertRange(s*i,e,o*i,s*i)}}}addPoints2D(e,n,r,i){let a=n,o=i<0?a:i;if((a<0||r<0||r>a||o<r)&&t(``),r===o)return;a=o-r;let s=this.m_pointCount;this.resizeAndInitNonPositionAttributes(this.m_pointCount+a);let c=this.getAttributeStreamRef(0);for(let t=0;t<a;++t)c.writePoint2D(2*(s+t),e[r+t]);this.notifyModifiedFlags(2001)}addPoints3D(e,n,r,i){let a=n,o=i<0?a:i;if((a<0||r<0||r>a||o<r)&&t(``),this.addAttribute(1),r===o)return;a=o-r;let s=this.m_pointCount;this.resizeAndInitNonPositionAttributes(this.m_pointCount+a);let c=this.getAttributeStreamRef(0),l=new L;for(let t=0;t<a;t++)l.x=e[r+t].x,l.y=e[r+t].y,c.writePoint2D(2*(s+t),l);let u=this.getAttributeStreamRef(1);for(let t=0;t<a;t++)u.write(s+t,e[r+t].z);this.notifyModifiedFlags(2001)}setPointByVal(e,t){this.setPointByValNoCurves(e,t)}setXY(e,t){this.setXYNoCurves(e,t)}setXYCoords(e,t,n){this.setXYCoordsNoCurves(e,t,n)}setXYZ(e,t){this.setXYZNoCurves(e,t)}setAttribute(e,t,n,r){this.setAttributeNoCurves(e,t,n,r)}getGeometryType(){return i.enumMultiPoint}getDimension(){return 0}createInstance(){return new Pt({vd:this.getDescription()})}setEmpty(){this.setEmptyImpl()}applyTransformation(e){if(this.isEmpty()||e.isIdentity())return;let t=this.m_vertexAttributes.get(0);e.m_TransformationType===1?t.applyTransformation(e,0,this.m_pointCount):s(`3d xform not impl`),this.notifyModifiedFlags(2001)}calculateArea2D(){return 0}calculateLength2D(){return 0}calculateLength3D(e){return 0}equals(e,t){return e.getGeometryType()===i.enumMultiPoint&&this.equalsBase(e,t)}queryEnvelope(e){e.m_EnvelopeType===4?(this.updateAllDirtyIntervals(!0),this.m_envelopeData.copyTo(this.m_description,e)):e.m_EnvelopeType===2?this.updateEnvelope(e):s(``)}getImpl(){return this}getBoundary(){return null}reserve(e){this.reserveImpl(e)}clone(){let e=this.createInstance();return this.copyTo(e),e}swap(e){n(0)}buildQuadTreeAccelerator(e){return!1}getHashCodeImpl(){return n(0),0}equalsImpl(e){return!0}equalsImplTol(e,t){return!0}copyToImpl(e,t){}toFlatGeometry(){return{type:`multipoint`,...this.exportVertexAttributes(),...ne}}}class Ft{m_EnvelopeType=5;envAabb=K.constructEmpty();envRot=K.constructEmpty();static constructEmpty(){return new Ft}width(){return this.envAabb.width()}height(){return this.envAabb.height()}maxDim(){return Math.max(this.width(),this.height())}setEmpty(){this.envAabb.setEmpty(),this.envRot.setEmpty()}setCoords(e){this.envAabb.setCoords(e),this.envRot.setCoords({x:Rt(e),y:zt(e)})}setFromPoints(e,t){this.setEmpty(),this.mergePoints(e,t)}mergeNe(e){this.envAabb.mergeNe(e),this.envRot.mergeNeCoords(Rt(e),zt(e))}mergePoints(e,t){this.envAabb.mergePoints(e,t);for(let n=0;n<t;)if(this.envRot.isEmpty()){let t=Rt(e[n]),r=zt(e[n]);this.envRot.setCoords({x:t,y:r}),n++}else{for(let r=n;r<t;r++){let t=Rt(e[r]),n=zt(e[r]);this.envRot.mergeNeCoords(t,n)}break}}isIntersectingPoint2D(e){return!!(this.envAabb.contains(e)&&this.envRot.containsCoords(Rt(e),zt(e)))}isIntersectingW(e){return this.envAabb.isIntersecting(e.envAabb)&&this.envRot.isIntersecting(e.envRot)}containsW(e){return!!(this.envAabb.containsEnvelope(e.envAabb)&&this.envRot.containsEnvelope(e.envRot))}containsPoint2D(e){return this.isIntersectingPoint2D(e)}intersectW(e){let t=this.envAabb.intersect(e.envAabb),n=this.envRot.intersect(e.envRot);return t&&!n&&this.envAabb.setEmpty(),n&&!t&&this.envRot.setEmpty(),t&&n}inflate(e){this.envAabb.inflateCoords(e,e);let t=e*ve();this.envRot.inflateCoords(t,t),t<0&&Ft.st_reduceEmpty(this)}static st_reduceEmpty(e){let t=e.envAabb.isEmpty(),n=e.envRot.isEmpty();t&&!n?e.envRot.setEmpty():n&&!t&&e.envAabb.setEmpty()}sqrMaxMinDistance(e){let t=this.envAabb.sqrMaxMinDistance(e),n=this.envRot.sqrMaxMinDistance(Bt(e))/2;return Math.max(t,n)}sqrMinDistance(e){let t=this.envAabb.sqrMinDistance(e),n=this.envRot.sqrMinDistance(Bt(e))/2;return Math.max(t,n)}sqrMaxDistance(e){let t=this.envAabb.sqrMaxDistance(e),n=this.envRot.sqrMaxDistance(Bt(e))/2;return Math.max(t,n)}getEnvelope2D(){return this.envAabb}getRotatedEnvelope2D(){return this.envRot}xyRot(e,t){let n=It(e.x,e.y),r=Lt(e.x,e.y);t.setCoords(n,r)}}function It(e,t){return e-t}function Lt(e,t){return e+t}function Rt(e){return e.x-e.y}function zt(e){return e.x+e.y}function Bt(e){return new L(Rt(e),zt(e))}class q{x=H.getNAN();y=H.getNAN();static getNAN(){return new q}static constructPoint2D(e){let t=new q;return t.x.set(e.x),t.y.set(e.y),t}static constructCoords(e,t){let n=new q;return n.x.set(e),n.y.set(t),n}static constructCoordsE(e,t){let n=new q;return n.setCoordsE(e,t),n}get 0(){return this.x.clone()}set 0(e){this.x.setE(e)}get 1(){return this.y.clone()}set 1(e){this.y.setE(e)}clone(){return new q().setE(this)}scaleThis(e){return this.x.mulThisE(e),this.y.mulThisE(e),this}setCoords(e,t){return this.x.set(e),this.y.set(t),this}setCoordsE(e,t){return this.x.setE(e),this.y.setE(t),this}set(e){return this.x.set(e.x),this.y.set(e.y),this}setE(e){return this.x.setE(e.x),this.y.setE(e.y),this}setWithEps(e,t){return this.x.setWithEps(e.x,t),this.y.setWithEps(e.y,t),this}getUnitVector(){let e=this.clone();return e.normalize(),e}sqrLength(){return this.x.sqr().addE(this.y.sqr())}length(){return this.sqrLength().sqrt()}mulE(e){let t=new q;return t.setCoordsE(this.x.mulE(e),this.y.mulE(e)),t}mul(e){let t=new q;return t.setCoordsE(this.x.mul(e),this.y.mul(e)),t}mulThis(e){return this.x.mulThis(e),this.y.mulThis(e),this}mulThisE(e){return this.x.mulThisE(e),this.y.mulThisE(e),this}divE(e){return this.clone().divThisE(e)}divThisE(e){return this.x.divThisE(e),this.y.divThisE(e),this}normalize(){let e=this.length();e.value()===0?(this.x=be.clone(),this.y=xe.clone()):(this.x.divThisE(e),this.y.divThisE(e))}addE(e){return this.clone().addThisE(e)}addThisE(e){return this.x.addThisE(e.x),this.y.addThisE(e.y),this}subE(e){return this.clone().subThisE(e)}subThisE(e){return this.x.subThisE(e.x),this.y.subThisE(e.y),this}static distance(e,t){return e.subE(t).length()}negateThis(){return this.x.negateThis(),this.y.negateThis(),this}eq(e){return this.x.eq(e.x)&&this.y.eq(e.y)}isZero(){return this.x.isZero()&&this.y.isZero()}isTrueZero(){return!this.x.value()&&!this.y.value()}rotateDirect(e,t){let n=this.x.mulE(e).subThisE(this.y.mulE(t)),r=this.x.mulE(t).addThisE(this.y.mulE(e));return this.x.setE(n),this.y.setE(r),this}rotateReverse(e,t){let n=this.x.mulE(e).addThisE(this.y.mulE(t)),r=this.x.negate().mulThisE(t).addThisE(this.y.mulE(e));return this.x.setE(n),this.y.setE(r),this}dotProduct(e){return this.x.mulE(e.x).addE(this.y.mulE(e.y))}crossProduct(e){return this.x.mulE(e.y).subE(this.y.mulE(e.x))}value(){return L.construct(this.x.value(),this.y.value())}}class Vt{a11=new H(1);a12=new H(0);a21=new H(0);a22=new H(1);clone(){let e=new Vt;return e.a11.setE(this.a11),e.a12.setE(this.a12),e.a21.setE(this.a21),e.a22.setE(this.a22),e}assign(e){return this.a11.setE(e.a11),this.a12.setE(e.a12),this.a21.setE(e.a21),this.a22.setE(e.a22),this}mulThis(e){let t=this.a11.mulE(e.a11).addThisE(this.a12.mulE(e.a21)),n=this.a11.mulE(e.a12).addThisE(this.a12.mulE(e.a22)),r=this.a21.mulE(e.a11).addThisE(this.a22.mulE(e.a21)),i=this.a21.mulE(e.a12).addThisE(this.a22.mulE(e.a22));return this.a11=t,this.a12=n,this.a21=r,this.a22=i,this}mulLeftThis(e){let t=e.clone();return this.assign(t.mulThis(this)),this}det(){return this.a11.mulE(this.a22).subThisE(this.a12.mulE(this.a21))}invertThis(){let e=this.det();if(e.value()!==0){let t=this.a22.divE(e),n=this.a12.negate().divThisE(e),r=this.a21.negate().divThisE(e),i=this.a11.divE(e);this.a11=t,this.a12=n,this.a21=r,this.a22=i}else this.setZero();return!e.isZero()}transposeThis(){return this.a21=R(this.a12,this.a12=this.a21),this}eigenSymmetric(e,t){let n=this.a12.clone();n.addThisE(this.a21),n.mulThisByPower2(.5);let r=new H(1),i=new H(0);if(n.isZero())e[0].setE(this.a11),e[1].setE(this.a22);else{let t=new H(1);if(this.a11.ne(this.a22)){let a=this.a11.subE(this.a22).divE(n);a.mulThisByPower2(.5);let o=a.sqr();t.setE(a),t.absThis(),t.subThisE(o.add(1).sqrtThis()),a.gt(xe)&&t.negateThis();let s=t.sqr().addThis(1).sqrtThis().invThis();i=t.mulE(s),r.setE(s);let c=t.mulE(n);e[0]=this.a11.addE(c),e[1]=this.a22.subE(c)}else r=new H(1/Math.sqrt(2)),i=r.clone(),e[0]=this.a11.addE(n),e[1]=this.a22.subE(n)}t[0].x=r.toDouble(),t[0].y=i.toDouble(),t[1].x=i.negate().toDouble(),t[1].y=r.toDouble(),Math.abs(e[0].toDouble())>Math.abs(e[1].toDouble())&&(e[1]=R(e[0],e[0]=e[1]),t[1]=R(t[0],t[0]=t[1]))}setZero(){this.a11.set(0),this.a21.set(0),this.a12.set(0),this.a22.set(0)}}class J{x;y;static constructPoint2D(e){return new J(B.constructDouble(e.x),B.constructDouble(e.y))}constructor(e,t){if(e===void 0){this.x=new B().setNAN(),this.y=new B().setNAN();return}this.x=e.clone(),this.y=t.clone()}assignPoint2D(e){return this.x.setDouble(e.x),this.y.setDouble(e.y),this}setCoords(e,t){return this.x.setThis(e),this.y.setThis(t),this}asPoint2D(){return new L(this.x.value(),this.y.value())}crossProduct(e){return this.x.mul(e.y).sub(this.y.mul(e.x))}leftPerpendicularThis(){let e=this.x.clone();this.x=this.y.clone().negate(),this.y=e}clone(){return new J(this.x,this.y)}dotProduct(e){return this.x.mul(e.x).add(this.y.mul(e.y))}add(e){return new J(this.x.add(e.x),this.y.add(e.y))}sub(e){return new J(this.x.sub(e.x),this.y.sub(e.y))}sqrLength(){return this.x.sqr().addThis(this.y.sqr())}mulThis(e){return this.x.mulThis(e),this.y.mulThis(e),this}mul(e){return this.clone().mulThis(e)}subThis(e){return this.x.subThis(e.x),this.y.subThis(e.y),this}addThis(e){return this.x.addThis(e.x),this.y.addThis(e.y),this}}var Ht=C;function Ut(e){let t=!1;for(let n=0;n<2;n++){let r=z(e[0][n],e[3][n]);r>0?(z(e[0][n],e[1][n])<0&&(e[1][n]=e[0][n],t=!0),z(e[1][n],e[3][n])<0&&(e[1][n]=e[3][n],t=!0),z(e[0][n],e[2][n])<0&&(e[2][n]=e[0][n],t=!0),z(e[2][n],e[3][n])<0&&(e[2][n]=e[3][n],t=!0),z(e[1][n],e[2][n])<0&&(e[2][n]=e[1][n],t=!0)):r<0?(z(e[0][n],e[1][n])>0&&(e[1][n]=e[0][n],t=!0),z(e[1][n],e[3][n])>0&&(e[1][n]=e[3][n],t=!0),z(e[0][n],e[2][n])>0&&(e[2][n]=e[0][n],t=!0),z(e[2][n],e[3][n])>0&&(e[2][n]=e[3][n],t=!0),z(e[1][n],e[2][n])>0&&(e[2][n]=e[1][n],t=!0)):(e[1][n]!==e[0][n]||e[2][n]!==e[0][n])&&(e[1][n]=e[0][n],e[2][n]=e[0][n],t=!0)}return t}function Wt(e){let t=z(e[0].y,e[1].y),n=z(e[1].y,e[2].y),r=z(e[2].y,e[3].y);if(t>=0&&n>=0&&r>=0||t<=0&&n<=0&&r<=0){let t=z(e[0].x,e[1].x),n=z(e[1].x,e[2].x),r=z(e[2].x,e[3].x);if(t>=0&&n>=0&&r>=0||t<=0&&n<=0&&r<=0)return!0}return!1}function Gt(e,t){let n=e.getStartXY();if(n.equals(t.getStartXY())||n.equals(t.getEndXY()))return!0;let r=e.getEndXY();return!!(r.equals(t.getStartXY())||r.equals(t.getEndXY()))}function Kt(e,t){let n=e.calculateLowerLength2D();return n>t?!1:e.isLine()||(n=e.calculateUpperLength2D(),n<=t)?!0:t!==0&&e.calculateLength2D()<=t}function qt(e,t,n){let r=U(L,4),a=e.queryControlPointsHelper(r),o=U(L,4),s=t.queryControlPointsHelper(o);r[0].equals(o[0])||l(``);let c=e.getGeometryType();if(c===t.getGeometryType()&&r.map((e,t)=>o[t].equals(e)).reduce((e,t)=>e&&t)){if(c===i.enumRationalBezier2){let n=e,r=t,i=[0,0,0],a=[0,0,0];if(n.queryWeights(i),r.queryWeights(a),i.map((e,t)=>a[t]===e).reduce((e,t)=>e&&t))return 0}else return 0}for(;a>2&&r[1].equals(r[0]);)r.splice(1,1),a--;for(;s>2&&o[1].equals(o[0]);)o.splice(1,1),s--;(r[1].equals(r[0])||o[1].equals(r[0]))&&l(``);let u=L.compareVectorsOrigin(r[0],r[1],o[1]);if(u===0){let n=J.constructPoint2D(r[0]),i=new J;e.queryCoord2DMP(1e-16,i),i.sub(n);let a=new J;return t.queryCoord2DMP(1e-16,a),a.sub(n),a.crossProduct(i).sign()}return u}function Jt(e,t,r,i,a,o,s,c){let l=e.calculateUpperLength2D(),u=t.calculateUpperLength2D(),d=e,f=t,p=!1;l>u&&(f=R(d,d=f),i=R(r,r=i),u=R(l,l=u),p=!0);let m=r===0;{s[0]=+!!m;let e=d.getCoord2D(s[0]);c[0]=f.getClosestCoordinate(e,!1);let t=f.getCoord2D(c[0]);if(L.distance(e,t)<=a){let t=[.5,.75,.25,.1,.9],n=!0;for(let r=0;r<t.length;r++)if(e.assign(d.getCoord2D(t[r])),!f.isCloserThanDistance(e,new F(0,1),a)){n=!1;break}if(n)return p&&(c[0]=R(s[0],s[0]=c[0])),1}}if(l<=a*3)return 0;let h=we(Math.max(a/l,.1),0,.5),g=.01*a,_=0,v=0,y=h,b=-1,x=0,S=1/32;for(let e=0;;e++){n(e<4095);let t=m?h:1-h,r=d.getCoord2D(t),l=f.getClosestCoordinate(r,!1);if(l===i)return x;let u=f.getCoord2D(l),C=L.distance(r,u);if(e===0&&(b=C),C<=g?(S=.5,v=C,_=h):(y=h,b=C),Math.abs(v-b)>g*.1&&y-_>1e-16){h=V(_,y,S);continue}if(s[x]=t,c[x]=l,p&&(c[x]=R(s[x],s[x]=c[x])),o===1||x===1)return x===1&&s[0]>s[1]&&(s[1]=R(s[0],s[0]=s[1]),c[1]=R(c[0],c[0]=c[1])),x+1;x++,_=y,v=b,y=.8,b=-1,h=.8,S=1/32,g=10*a,e=0}}function Yt(e,t,n,r,i,a,o,s,c){if(W(n,0,1)&&W(r,0,1)&&L.distance(e.getCoord2D(n),t.getCoord2D(r))===0){let c=1e-12,l=new q,u=Te();if(e.queryDerivative(new H(n,u),l),l.isTrueZero()){let t=n===1?-1e-12:c;e.queryDerivative(new H(n,u).add(t),l)}n===1&&l.negateThis();let d=new q;if(t.queryDerivative(new H(r,u),d),d.isTrueZero()){let e=n===1?-1e-12:c;t.queryDerivative(new H(r,u).add(e),d)}r===1&&d.negateThis(),l.isZero()||l.normalize(),d.isZero()||d.normalize();let f=l.dotProduct(d),p=l.crossProduct(d);if(p.scaleError(3),f.ge(xe)&&(p.isZero()||Math.abs(p.value())<(()=>{{let n=e.calculateUpperLength2D(),r=t.calculateUpperLength2D();return Math.min(i*.01/Math.min(n,r),1e-10)}})()))return Jt(e,t,n,r,i,a,o,s)}return 0}function Xt(e,t,r){return n(e.isCurve()||t.isCurve()),!!(e.getStartXY().equals(t.getStartXY())&&Yt(e,t,0,0,r,2,[0,0],[0,0])||e.getEndXY().equals(t.getEndXY())&&Yt(e,t,1,1,r,2,[0,0],[0,0])||e.getStartXY().equals(t.getEndXY())&&Yt(e,t,0,1,r,2,[0,0],[0,0])||e.getEndXY().equals(t.getStartXY())&&Yt(e,t,1,0,r,2,[0,0],[0,0]))}function Zt(e,t){e.m_XStart=t.x,e.m_YStart=t.y}function Qt(e,t,n){e.m_XStart=t,e.m_YStart=n}function $t(e,t){e.m_XEnd=t.x,e.m_YEnd=t.y}function en(e,t,n){e.m_XEnd=t,e.m_YEnd=n}function tn(e,t,n){t?(e.m_XEnd!==n.x||e.m_YEnd!==n.y)&&(e.m_XEnd=n.x,e.m_YEnd=n.y,e.endPointModified()):(e.m_XStart!==n.x||e.m_YStart!==n.y)&&(e.m_XStart=n.x,e.m_YStart=n.y,e.endPointModified())}function nn(e,t){let n=new A;return t?(n.x=e.m_XEnd,n.y=e.m_YEnd):(n.x=e.m_XStart,n.y=e.m_YStart),n.z=rn(e,t),n}function rn(e,t){return e.m_description.hasZ()?e.m_attributes[t*(e.m_description.getTotalComponentCount()-2)]:Ht.getDefaultValue(1)}function an(e,t,n){e.m_description.hasZ()||e.addAttribute(1),t?(e.m_XEnd!==n.x||e.m_YEnd!==n.y)&&(e.m_XEnd=n.x,e.m_YEnd=n.y,e.endPointModified()):(e.m_XStart!==n.x||e.m_YStart!==n.y)&&(e.m_XStart=n.x,e.m_YStart=n.y,e.endPointModified()),e.m_attributes[(e.m_description.getTotalComponentCount()-2)*t]=n.z}function on(e,t,n){n.assignVertexDescription(e.m_description);let r=t===0?e.m_XStart:e.m_XEnd,i=t===0?e.m_YStart:e.m_YEnd;n.setXYCoords(r,i);for(let r=1;r<e.m_description.getAttributeCount();r++){let i=e.m_description.getSemantics(r);for(let r=0,a=Ht.getComponentCount(i);r<a;r++){let a=cn(e,t,i,r);n.setAttributeBasic(i,r,a)}}}function sn(e,t,n){n.isEmpty()&&o(``),tn(e,t,n.getXY());let r=n.getDescription();r!==e.m_description&&e.mergeVertexDescription(r);for(let i=1,a=r.getAttributeCount();i<a;i++){let a=r.getSemantics(i),o=Ht.getComponentCount(a);for(let r=0;r<o;r++){let i=n.getAttributeAsDbl(a,r);ln(e,t,a,r,i)}}}function cn(e,t,n,i){if((t<0||t>1)&&r(``),n===0)return(i<0||i>=2)&&r(``),t===0?i===0?e.m_XStart:e.m_YStart:i===0?e.m_XEnd:e.m_YEnd;let a=Ht.getComponentCount(n);(i<0||i>=a)&&r(``);let o=e.m_description.getAttributeIndex(n);return o>=0?e.m_attributes[t*(e.m_description.getTotalComponentCount()-2)+e.m_description.getPointAttributeOffset(o)-2+i]:Ht.getDefaultValue(n)}function ln(e,t,n,i,a){if((t<0||t>1)&&r(``),n===0){t===0?i===0?e.m_XStart=a:i===1?e.m_YStart=a:r(``):t===1?i===0?e.m_XEnd=a:i===1?e.m_YEnd=a:r(``):r(``),e.endPointModified();return}let o=Ht.getComponentCount(n);(i<0||i>=o)&&r(``);let s=e.m_description.getAttributeIndex(n);s<0&&(e.addAttribute(n),s=e.m_description.getAttributeIndex(n)),e.m_attributes[t*(e.m_description.getTotalComponentCount()-2)+e.m_description.getPointAttributeOffset(s)-2+i]=a}function un(e,t){if(e===t)return;t.isEmpty()&&o(``);let n=t.getDescription();n!==e.m_description&&e.mergeVertexDescription(n);for(let r=1,i=n.getAttributeCount();r<i;r++){let i=n.getSemantics(r),a=Ht.getComponentCount(i);for(let n=0;n<a;n++){let r=cn(t,0,i,n);ln(e,0,i,n,r),r=cn(t,1,i,n),ln(e,1,i,n,r)}}}function dn(e,t){let n=E();D(t,e.m_description,n);let r=null,i=t.getTotalComponentCount()-2,a=e.m_description?e.m_description.getTotalComponentCount()-2:0;if(i>0&&(r=I(2*i,NaN),me(r,t.getDefaultPointAttributes(),0,2,i),me(r,t.getDefaultPointAttributes(),i,2,i),e.m_description!==null))for(let o=1;o<t.getAttributeCount();o++){let s=n[o];if(s!==-1){let n=e.m_description.getPointAttributeOffset(s)-2,c=t.getPointAttributeOffset(o)-2,l=Ht.getComponentCount(t.getSemantics(o));for(let t=0;t<l;++t)r[c]=e.m_attributes[n],r[i+c]=e.m_attributes[a+n]}}e.m_attributes=r,e.m_description=t}function fn(e){return e.absNorm()*Se()}function pn(e,t){return Math.max(e.absNorm(),t.absNorm())*Se()}function mn(e,t,n){let r=new Ft;e.queryEnvelopeW(F.unit(),r);let i=new Ft;return t.queryEnvelopeW(F.unit(),i),i.inflate(n),!r.isIntersectingW(i)}function hn(e,t,n){let r=Ce(e,n),i=Ce(t,n);r.sort((e,t)=>e.compare(t)),i.sort((e,t)=>e.compare(t));for(let e=0;e<3;e++){if(r[e].compare(i[e])<0)return-1;if(r[e].compare(i[e])!==0)return 1}return 0}var gn=C;class _n{m_XStart;m_YStart;m_XEnd;m_YEnd;m_attributes;m_description;constructor(e){if(e.copy){this.m_XStart=e.copy.m_XStart,this.m_YStart=e.copy.m_YStart,this.m_XEnd=e.copy.m_XEnd,this.m_YEnd=e.copy.m_YEnd,this.m_description=e.copy.m_description,this.m_attributes=null,this.m_description&&this.m_description.getTotalComponentCount()-2&&(this.m_attributes=e.copy.m_attributes.slice());return}if(e.move){this.m_description=e.move.m_description,e.move.m_description=null,this.m_attributes=e.move.m_attributes,e.move.m_attributes=null,this.m_XStart=e.move.m_XStart,this.m_YStart=e.move.m_YStart,this.m_XEnd=e.move.m_XEnd,this.m_YEnd=e.move.m_YEnd;return}if(e.XStart!==void 0){this.m_XStart=e.XStart,this.m_YStart=e.YStart,this.m_XEnd=e.XEnd,this.m_YEnd=e.YEnd,this.m_attributes=null,this.m_description=e.vd?e.vd:v(),e.vd&&this.setDefaultAttributeValues();return}if(e.ZStart!==void 0){this.m_XStart=e.XStart,this.m_YStart=e.YStart,this.m_XEnd=e.XEnd,this.m_YEnd=e.YEnd,this.m_description=e.vd?e.vd:M(),e.vd?(this.setDefaultAttributeValues(),this.addAttribute(1),this.m_attributes[0]=e.ZStart,this.m_attributes[this.m_description.getTotalComponentCount()-2]=e.ZEnd):this.m_attributes=[e.ZStart,e.ZEnd];return}if(e.start){this.m_XStart=e.start.x,this.m_YStart=e.start.y,this.m_XEnd=e.end.x,this.m_YEnd=e.end.y,this.m_attributes=null,this.m_description=v();return}if(e.start3D){this.m_XStart=e.start3D.x,this.m_YStart=e.start3D.y,this.m_XEnd=e.end3D.x,this.m_YEnd=e.end3D.y,this.m_description=e.vd?e.vd:M(),e.vd?(this.setDefaultAttributeValues(),this.addAttribute(1),this.m_attributes[0]=e.start3D.z,this.m_attributes[this.m_description.getTotalComponentCount()-2]=e.end3D.z):this.m_attributes=[e.start3D.z,e.end3D.z];return}c(`bad constructor params`),this.m_XStart=this.m_YStart=this.m_XEnd=this.m_YEnd=NaN}setDefaultAttributeValues(){let e=this.m_description.getTotalComponentCount()-2;e>0&&(this.m_attributes===null&&(this.m_attributes=I(e*2,NaN)),me(this.m_attributes,this.m_description.getDefaultPointAttributes(),0,2,e),me(this.m_attributes,this.m_description.getDefaultPointAttributes(),e,2,e))}absNormXYZ(e){return s(`not implemented`),0}queryWeights(e){}snapControlPoints3D(){return s(`not implemented`),!1}setCoordsForIntersector3D(e,t,n){s(`not implemented`)}transformAttribute(e,t,n,r,i){s(``)}mergeVertexDescriptionImpl(e){let t=this.getDescription(),n=b(t,e);this.assignVertexDescription(n)}changeEndPoints(e,t){let n=e.getXY(),r=t.getXY();this.changeEndPoints2D(n,r);let i=e.getDescription();i!==this.getDescription()&&this.mergeVertexDescription(i),i=t.getDescription(),i!==this.getDescription()&&this.mergeVertexDescription(i);for(let n=1,r=i.getAttributeCount();n<r;n++){let r=i.getSemantics(n),a=gn.getComponentCount(r);for(let n=0;n<a;n++){let i=e.getAttributeAsDbl(r,n);ln(this,0,r,n,i);let a=t.getAttributeAsDbl(r,n);ln(this,1,r,n,a)}}}getStartXY(){return new L(this.m_XStart,this.m_YStart)}setStartXY(e){this.m_XStart=e.x,this.m_YStart=e.y,this.endPointModified()}setStartXYCoords(e,t){this.m_XStart=e,this.m_YStart=t,this.endPointModified()}getStartXYZ(){return nn(this,0)}setStartXYZ(e){an(this,0,e)}setStartXYZCoords(e,t,n){an(this,0,A.construct(e,t,n))}queryStart(e){on(this,0,e)}setStart(e){sn(this,0,e)}setStart2D(e){this.setStartXY(e)}getStartAttributeAsDbl(e,t){return cn(this,0,e,t)}getStartAttributeAsInt(e,t){return n(0),0}setStartAttribute(e,t,n){ln(this,0,e,t,n)}setStartAttributesFromPoint(e,t){let n=e.getDescription(),r=t&&n.hasZ()?2:1;for(let t=r,i=n.getAttributeCount();t<i;++t){let r=n.getSemantics(t),i=gn.getComponentCount(r);for(let t=0;t<i;++t){let n=e.getAttributeAsDbl(r,t);this.setStartAttribute(r,t,n)}}}setEndAttributesFromPoint(e,t){let n=e.getDescription(),r=t&&n.hasZ()?2:1;for(let t=r,i=n.getAttributeCount();t<i;++t){let r=n.getSemantics(t),i=gn.getComponentCount(r);for(let t=0;t<i;++t){let n=e.getAttributeAsDbl(r,t);this.setEndAttribute(r,t,n)}}}getStartX(){return this.m_XStart}getStartY(){return this.m_YStart}getStartZ(){return n(0),0}getEndX(){return this.m_XEnd}getEndY(){return this.m_YEnd}getEndZ(){return n(0),0}getEndXY(){return new L(this.m_XEnd,this.m_YEnd)}setEndXY(e){this.m_XEnd=e.x,this.m_YEnd=e.y,this.endPointModified()}setEndXYCoords(e,t){this.m_XEnd=e,this.m_YEnd=t,this.endPointModified()}getEndXYZ(){return nn(this,1)}setEndXYZ(e){an(this,1,e)}setEndXYZCoords(e,t,n){an(this,1,A.construct(e,t,n))}queryEnd(e){on(this,1,e)}setEnd(e){sn(this,1,e)}setEnd2D(e){this.setEndXY(e)}getEndAttributeAsDbl(e,t){return cn(this,1,e,t)}getEndAttributeAsInt(e,t){return n(0),0}setEndAttribute(e,t,n){ln(this,1,e,t,n)}getDimension(){return 1}copyTo(e){if(this===e)return;e.getGeometryType()!==this.getGeometryType()&&t(``);let n=e;n.assignVertexDescription(this.m_description),n.m_attributes&&me(n.m_attributes,this.m_attributes,0,0,(this.m_description.getTotalComponentCount()-2)*2),n.m_XStart=this.m_XStart,n.m_YStart=this.m_YStart,n.m_XEnd=this.m_XEnd,n.m_YEnd=this.m_YEnd,this.copyToImpl(n)}isEmpty(){return this.isEmptyImpl()}isClosed(){return this.m_XStart===this.m_XEnd&&this.m_YStart===this.m_YEnd}setEmpty(){}calculateArea2D(){return 0}queryInterval(e,t){let n=F.constructEmpty();return n.vmin=cn(this,0,e,t),n.vmax=n.vmin,n.mergeNeCoordinate(cn(this,1,e,t)),n}calculateLength3D(e){return n(0),0}getCoord3D(e){return n(0),{}}getCoord2D(e){let t=L.getNAN();return this.queryCoord2D(e,t),t}queryCoord3D(e,t){n(0)}getCoordZ(e){return n(0),0}queryCoord(e,t){t.assignVertexDescription(this.m_description),t.setXY(this.getCoord2D(e));for(let n=1,r=this.m_description.getAttributeCount();n<r;n++){let r=this.m_description.getSemantics(n),i=gn.getComponentCount(r);for(let n=0;n<i;n++){let i=this.getAttributeAsDbl(e,r,n);t.setAttributeBasic(r,n,i)}}}isCloserThanDistance(e,t,n){let r=K.constructEmpty();if(this.queryLooseEnvelopeOnInterval(t,r),r.distance(e)>n)return!1;let i=this.getClosestCoordinateOnInterval(e,t,n);return!Number.isNaN(i)&&L.distance(e,this.getCoord2D(i))<=n}isMonotoneQuickAndDirty(){return!1}static s_maxMonotonicPartParams=8;isTrue3D(){return!1}getReversed(){let e=this.clone();return e.reverse(),e}reverse(){this.m_XEnd=R(this.m_XStart,this.m_XStart=this.m_XEnd),this.m_YEnd=R(this.m_YStart,this.m_YStart=this.m_YEnd),this.reverseImpl();for(let e=1,t=this.m_description.getAttributeCount();e<t;e++){let t=this.m_description.getSemantics(e);for(let e=0,n=gn.getComponentCount(t);e<n;e++){let n=cn(this,0,t,e),r=cn(this,1,t,e);ln(this,0,t,e,r),ln(this,1,t,e,n)}}return this.afterCompletedModification(),this}isEmptyImpl(){return!1}isCircular(){return!1}distance(e,t,r,i){if(!t&&this.isIntersecting(e,0,!1)){if(r!==null||i!==null){let t=I(9,NaN),a=I(9,NaN),o=this.intersect(e,null,t,a,0);n(o<=9),o===0&&c(``),r!==null&&(r[0]=t[0]),i!==null&&(i[0]=a[0])}return 0}let a=Number.MAX_VALUE,o,s=-1,l=a;return o=this.getStartXY(),s=e.getClosestCoordinate(o,!1),o.subThis(e.getCoord2D(s)),l=o.length(),l<a&&(a=l,i!==null&&(i[0]=s),r!==null&&(r[0]=0)),o=this.getEndXY(),s=e.getClosestCoordinate(o,!1),o.subThis(e.getCoord2D(s)),l=o.length(),l<a&&(a=l,i!==null&&(i[0]=s),r!==null&&(r[0]=1)),o=e.getStartXY(),s=this.getClosestCoordinate(o,!1),o.subThis(this.getCoord2D(s)),l=o.length(),l<a&&(a=l,r!==null&&(r[0]=s),i!==null&&(i[0]=0)),o=e.getEndXY(),s=this.getClosestCoordinate(o,!1),o.subThis(this.getCoord2D(s)),l=o.length(),l<a&&(a=l,r!==null&&(r[0]=s),i!==null&&(i[0]=1)),a}calculateSubLengthFromStart(e){return this.tToLength(e)}calculateSubLength(e,t){return t===e?0:this.tToLength(t)-this.tToLength(e)}static recalculateParentT(e,t,n){return V(e,t,n)}moveTo(e){let t=this.isClosed(),n=new bt;n.setShift(e.sub(this.getStartXY())),this.applyTransformation(n),t?this.changeEndPoints2D(e,e):this.changeEndPoints2D(e,this.getEndXY())}moveTo3D(e){n(0)}getDescription(){return this.m_description}assignVertexDescription(e){dn(this,e)}mergeVertexDescription(e){this.m_description!==e&&(this.m_description.hasAttributesFrom(e)||this.mergeVertexDescriptionImpl(e))}hasAttribute(e){return this.m_description.hasAttribute(e)}addAttribute(e){if(this.m_description.hasAttribute(e))return;let t=x(this.m_description,e);this.assignVertexDescription(t)}dropAttribute(e){if(!this.m_description.hasAttribute(e))return;let t=S(this.m_description,e);this.assignVertexDescription(t)}dropAllAttributes(){let e=v();e!==this.m_description&&this.assignVertexDescription(e)}swap(e){if(this===e)return;e.getGeometryType()!==this.getGeometryType()&&t(`wrong geometry type`);let n=e;n.m_description=R(this.m_description,this.m_description=n.m_description),n.m_XStart=R(this.m_XStart,this.m_XStart=n.m_XStart),n.m_YStart=R(this.m_YStart,this.m_YStart=n.m_YStart),n.m_XEnd=R(this.m_XEnd,this.m_XEnd=n.m_XEnd),n.m_YEnd=R(this.m_YEnd,this.m_YEnd=n.m_YEnd),n.m_attributes=R(this.m_attributes,this.m_attributes=n.m_attributes),this.swapImpl(n)}equals(e,t){if(this.getGeometryType()!==e.getGeometryType())return!1;let n=t===void 0;n&&(t=0);let r=e;if(this===r)return!0;if(this.m_description!==r.m_description||Math.abs(this.m_XStart-r.m_XStart)>t||Math.abs(this.m_XEnd-r.m_XEnd)>t||Math.abs(this.m_YStart-r.m_YStart)>t||Math.abs(this.m_YEnd-r.m_YEnd)>t)return!1;for(let e=0,n=(this.m_description.getTotalComponentCount()-2)*2;e<n;e++)if(!ye(this.m_attributes[e],r.m_attributes[e],t))return!1;return n?this.equalsImpl(r):this.equalsImplTol(r,t)}getImpl(){return this}setAttributeBasic(e,n,r){if(this.addAttribute(e),e===0&&this.isCurve()){(n<0||n>1)&&t(``);let e=new bt,i=n===0?r:0,a=n===1?r:0;e.setShiftCoords(i,a),n===0?e.xx=0:e.yy=0,this.applyTransformation(e)}else this.setStartAttribute(e,n,r),this.setEndAttribute(e,n,r)}replaceNaNs(e,t){if(this.addAttribute(e),this.isEmpty())return;let n=gn.getComponentCount(e);for(let r=0;r<n;r++){let n=this.getStartAttributeAsDbl(e,r);Number.isNaN(n)&&this.setStartAttribute(e,r,t);let i=this.getEndAttributeAsDbl(e,r);Number.isNaN(i)&&this.setEndAttribute(e,r,t)}}}class vn extends xt{m_index;gc;dim;constructor(e,t){super(),this.m_index=-1,this.gc=e,this.dim=t}next(){for(;;){if(this.m_index>=this.gc.getGeometryCount()||(this.m_index++,this.m_index===this.gc.getGeometryCount()))return null;let e=this.gc.getGeometry(this.m_index);if(this.dim===-1||1<<e.getDimension()&this.dim)return e}return null}getGeometryID(){return this.m_index}tock(){return!0}getRank(){return 1}}class yn{static type=i.enumGeometryCollection;m_description;m_geoms=[];constructor(e){if(this.m_description=v(),e){if(e.vd){this.m_description=e.vd;return}if(e.copy){e.copy.copyTo(this);return}t(`constructor argument not recognized`)}}getGeometryCount(){return this.m_geoms.length}reserve(e){}addGeometry(e){if(e.getGeometryType()===i.enumGeometryCollection){let t=e;for(let e=0,n=t.getGeometryCount();e<n;e++)this.addGeometry(t.getGeometry(e))}else this.m_geoms.push(e.clone()),this.mergeVertexDescription(e.getDescription())}addCursor(e){for(let t=e.next();t!==null;t=e.next())this.addGeometry(t)}getGeometry(e){return(e<0||e>=this.m_geoms.length)&&t(`Geometry_collection.get_geometry`),this.m_geoms[e]}modifiedElementIndex(e){this.mergeVertexDescription(this.getGeometry(e).getDescription())}modifiedElement(e){this.mergeVertexDescription(e.getDescription())}getGeometryType(){return i.enumGeometryCollection}getDimension(){let e=0;for(let t of this.m_geoms)e=Math.max(e,t.getDimension());return e}getDescription(){return this.m_description}assignVertexDescription(e){this.m_description!==e&&this.assignVertexDescriptionImpl(e)}assignVertexDescriptionImpl(e){for(let t of this.m_geoms)t.assignVertexDescription(e);this.m_description=e}mergeVertexDescription(e){this.m_description!==e&&(this.m_description.hasAttributesFrom(e)||this.mergeVertexDescriptionImpl(e))}hasAttribute(e){return this.m_description.hasAttribute(e)}addAttribute(e){if(this.m_description.hasAttribute(e))return;let t=x(this.m_description,e);this.assignVertexDescription(t)}dropAttribute(e){if(!this.m_description.hasAttribute(e))return;let t=S(this.m_description,e);this.assignVertexDescription(t)}dropAllAttributes(){let e=v();e!==this.m_description&&this.assignVertexDescription(e)}queryInterval(e,t){let n=new F,r=new F;r.setEmpty();for(let i of this.m_geoms)n=i.queryInterval(e,t),r.merge(n);return r}queryEnvelope(e){if(e.m_EnvelopeType===4){let t=new k;e.setEmpty(),e.assignVertexDescription(this.m_description);for(let n of this.m_geoms)n.queryEnvelope(t),e.merge(t)}else if(e.m_EnvelopeType===2){let t=new K;e.setEmpty();for(let n of this.m_geoms)n.queryEnvelope(t),e.mergeEnvelope2D(t)}s(`3d envelope case not implemented`)}queryLooseEnvelope(e){if(e.m_EnvelopeType===2){let t=new K;e.setEmpty();for(let n of this.m_geoms)n.queryLooseEnvelope(t),e.mergeEnvelope2D(t)}s(`3d not impl`)}isEmpty(){return this.m_geoms.length===0}setEmpty(){this.m_geoms.length=0}applyTransformation(e){if(e.m_TransformationType===1)for(let t of this.m_geoms)t.applyTransformation(e);s(`3d xform not impl`)}transformAttribute(e,t,n,r,i){for(let a of this.m_geoms)a.transformAttribute(e,t,n,r,i)}createInstance(){return new yn({vd:this.getDescription()})}copyTo(e){e.getGeometryType()!==i.enumGeometryCollection&&t(``);let n=e;if(n!==this){n.m_geoms.length=0,n.assignVertexDescription(this.m_description);for(let e of this.m_geoms)n.m_geoms.push(e.clone())}}calculateArea2D(){let e=new Ee(0);for(let t of this.m_geoms)e.pe(t.calculateArea2D());return e.getResult()}calculateLength2D(){let e=new Ee(0);for(let t of this.m_geoms)e.pe(t.calculateLength2D());return e.getResult()}calculateLength3D(e){return n(0),0}getBoundary(){let e=this.createInstance(),t=e;for(let e of this.m_geoms){let n=e.getBoundary();n&&t.m_geoms.push(n)}return e}clone(){return new yn({copy:this})}equals(e,t){if(e===this)return!0;if(e.getGeometryType()!==i.enumGeometryCollection)return!1;let n=e;if(this.m_description!==n.m_description||this.m_geoms.length!==n.m_geoms.length)return!1;for(let e=0;e<this.m_geoms.length;++e)if(!this.m_geoms[e].equals(n.m_geoms[e],t))return!1;return!0}swap(e){e.getGeometryType()!==i.enumGeometryCollection&&t(``);let n=e;n!==this&&(this.m_geoms=R(n.m_geoms,n.m_geoms=this.m_geoms))}setAttributeBasic(e,t,n){for(let r of this.m_geoms)r.setAttributeBasic(e,t,n)}replaceNaNs(e,t){for(let n of this.m_geoms)n.replaceNaNs(e,t)}getImpl(){return this}mergeVertexDescriptionImpl(e){let t=this.getDescription(),n=b(t,e);this.assignVertexDescription(n)}}function bn(e,t=-1){return new vn(e,t)}class xn extends _n{constructor(e){super(e)}}class Sn extends xn{isTrue3D(){return!0}constructor(e){super(e)}}function Cn(e,t,n){wn(t,e.getStartXY(),e.getEndXY(),n)}function wn(e,t,n,r){He(t,n,e,r)}function Tn(e,t){return V(e.m_XStart,e.m_XEnd,t)}function En(e,t){return V(e.m_YStart,e.m_YEnd,t)}function Dn(e,t){let n=e.getStartZ(),r=e.getEndZ();return V(n,r,t)}function On(e,t,n){let r=q.constructPoint2D(e.getStartXY()),i=q.constructPoint2D(e.getEndXY());n.setCoordsE(i.x.subE(r.x),i.y.subE(r.y))}function kn(e,t,n){t.value()<=.5?We(2,q.constructPoint2D(e.getStartXY()),q.constructPoint2D(e.getEndXY()),t,n):Ge(2,q.constructPoint2D(e.getStartXY()),q.constructPoint2D(e.getEndXY()),t,n)}function An(e,t,n){e.m_XStart=t.x,e.m_YStart=t.y,e.m_XEnd=n.x,e.m_YEnd=n.y,e.afterCompletedModification()}function jn(e,t){let n=e.getStartXYZ();n.z*=t;let r=e.getEndXYZ();return r.z*=t,n.norm(1)+r.norm(1)}function Mn(e){if(e.m_YEnd<e.m_YStart||e.m_YEnd===e.m_YStart&&e.m_XEnd<e.m_XStart){e.m_XEnd=R(e.m_XStart,e.m_XStart=e.m_XEnd),e.m_YEnd=R(e.m_YStart,e.m_YStart=e.m_YEnd);for(let t=0,n=e.m_description.getTotalComponentCount()-2;t<n;t++)e.m_attributes[t+n]=R(e.m_attributes[t],e.m_attributes[t]=e.m_attributes[t+n])}}function Nn(e,t,n,r){let i=0;if((e.m_XStart===t.m_XStart&&e.m_YStart===t.m_YStart||e.m_XStart===t.m_XEnd&&e.m_YStart===t.m_YEnd)&&(i++,!r))return 1;if(e.m_XEnd===t.m_XStart&&e.m_YEnd===t.m_YStart||e.m_XEnd===t.m_XEnd&&e.m_YEnd===t.m_YEnd){if(i++,i===2)return 2;if(!r)return 1}return t.isIntersectingPoint(e.getStartXY(),n,!0)||t.isIntersectingPoint(e.getEndXY(),n,!0)||e.isIntersectingPoint(t.getStartXY(),n,!0)||e.isIntersectingPoint(t.getEndXY(),n,!0)?4:r&&i?0:In(e,t)?4:0}function Pn(e,t,n,r,i,a,o,s){r!==null&&rt(r,2,NaN),i!==null&&rt(i,2,NaN),n!==null&&it(n,L,2);let c=Fn(e,t,2,n,r,i,a,o,s);return r&&(r.length=c),i&&(i.length=c),n&&(n.length=c),c}function Fn(e,t,n,r,i,a,o,s,c){let l=Rn(e,t.getStartXY(),o,!1),u=Rn(e,t.getEndXY(),o,!1),d=Rn(t,e.getStartXY(),o,!1),f=Rn(t,e.getEndXY(),o,!1),p=0,m=0;if(!Number.isNaN(l)){let n=!1;s&&W(l,0,1)&&e.getCoord2D(l).isEqualPoint2D(t.getStartXY())&&(p++,n=!0),n||(i&&(i[m]=l),a&&(a[m]=0),r&&r[m].setCoords(t.m_XStart,t.m_YStart),m++)}if(!Number.isNaN(u)){let o=!1;s&&W(u,0,1)&&e.getCoord2D(u).isEqualPoint2D(t.getEndXY())&&(p++,o=!0),o||(n>m&&(i&&(i[m]=u),a&&(a[m]=1),r&&r[m].setCoords(t.m_XEnd,t.m_YEnd)),m++)}if(m!==2&&!Number.isNaN(d)&&(l!==0||d!==0)&&(u!==0||d!==1)){let o=!1;s&&W(d,0,1)&&t.getCoord2D(d).isEqualPoint2D(e.getStartXY())&&(p++,o=!0),o||(n>m&&(i&&(i[m]=0),a&&(a[m]=d),r&&r[m].setCoords(e.m_XStart,e.m_YStart)),m++)}if(m!==2&&!Number.isNaN(f)&&(l!==1||f!==0)&&(u!==1||f!==1)){let o=!1;s&&W(f,0,1)&&t.getCoord2D(f).isEqualPoint2D(e.getEndXY())&&(p++,o=!0),o||(n>m&&(i&&(i[m]=1),a&&(a[m]=f),r&&r[m].setCoords(t.m_XEnd,t.m_YEnd)),m++)}if(m>0)return c&&(a=R(i,i=a)),m===2&&n>=2&&i&&i[0]>i[1]&&(i[1]=R(i[0],i[0]=i[1]),a&&(a[1]=R(a[0],a[0]=a[1])),r&&(r[1]=R(r[0],r[0]=r[1]))),m;if(p>0)return 0;let h=Un(e,t,o);return Number.isNaN(h.x)?0:(r&&(r[0]=e.getCoord2D(h.x)),i&&(i[0]=h.x),a&&(a[0]=h.y),1)}function In(e,t){let n=zn(e,t.m_XStart,t.m_YStart),r=zn(e,t.m_XEnd,t.m_YEnd);if(n<0&&r<0||n>0&&r>0)return!1;let i=zn(t,e.m_XStart,e.m_YStart),a=zn(t,e.m_XEnd,e.m_YEnd);return i<0&&a<0||i>0&&a>0?!1:Hn(e)>Hn(t)?Vn(e,t):Vn(t,e)}function Ln(e,t){let n={bIntersect:!1,t1:NaN,t2:NaN},r=e.m_XEnd-e.m_XStart,i=e.m_YEnd-e.m_YStart,a=t.m_XEnd-t.m_XStart,o=t.m_YEnd-t.m_YStart,s=a*i-r*o;if(s===0)return n;let c=t.m_XStart-e.m_XStart,l=t.m_YStart-e.m_YStart,u=a*l-c*o,d=r*l-c*i,f=1/s;return n.t1=u*f,n.t2=d*f,n.bIntersect=!0,n}function Rn(e,t,n,r){let i=L.getNAN(),a=L.getNAN(),o=!1;e.m_YEnd<e.m_YStart||e.m_YEnd===e.m_YStart&&e.m_XEnd<e.m_XStart?(i.setCoords(e.m_XEnd,e.m_YEnd),a.setCoords(e.m_XStart,e.m_YStart),o=!0):(i.setCoords(e.m_XStart,e.m_YStart),a.setCoords(e.m_XEnd,e.m_YEnd));let s=+!!o,c=+!o,l=L.getNAN();l.setSub(t,i);let u=l.length(),d=u*3*Te();if(u<=Math.max(n,d))return r&&u===0?NaN:s;if(l.setSub(t,a),u=l.length(),d=u*3*Te(),u<=Math.max(n,d))return r&&u===0?NaN:c;l.setCoords(a.x-i.x,a.y-i.y);let f=l.length();if(f>0){let e=1/f;l.scale(e);let r=L.getNAN();r.setSub(t,i);let u=r.dotProduct(l),d=8*r.dotProductAbs(l)*Te();l.leftPerpendicularThis();let p=r.dotProduct(l),m=8*r.dotProductAbs(l)*Te(),h=Math.max(n,d);if(u<-h||u>f+h)return NaN;if(Math.abs(p)<=Math.max(n,m)){let r=u*e;r=we(r,0,1);let l=L.getNAN();if(wn(r,i,a,l),L.distance(l,t)<=n){if(r<.5){if(L.distance(l,i)<=n&&L.distance(t,i)<=n)return s}else if(L.distance(l,a)<=n&&L.distance(t,a)<=n)return c;return o?1-r:r}}}return NaN}function zn(e,t,n){let r=L.getNAN();r.setCoords(t,n),r.subThis(e.getStartXY());let i=L.getNAN();i.setSub(e.getEndXY(),e.getStartXY());let a=i.crossProduct(r),o=4*Te()*(Math.abs(i.x*r.y)+Math.abs(i.y*r.x));return a>o?-1:+(a<-o)}function Bn(e,t,n,r){let i=r?e.m_XStart:e.m_XEnd,a=r?e.m_YStart:e.m_YEnd,o=L.getNAN();return o.x=t.getEndX()-i,o.y=t.getEndY()-a,n.dotProduct(o)>3*Te()*n.dotProductAbs(o)?(o.x=t.getStartX()-i,o.y=t.getStartY()-a,n.dotProduct(o)<=3*Te()*n.dotProductAbs(o)):!0}function Vn(e,t){let n=L.getNAN();return n.x=e.m_XEnd-e.m_XStart,n.y=e.m_YEnd-e.m_YStart,!(!Bn(e,t,n,!1)||(n.negateThis(),!Bn(e,t,n,!0)))}function Hn(e){let t=e.m_XStart-e.m_XEnd,n=e.m_YStart-e.m_YEnd;return t*t+n*n}function Un(e,t,n){let r=e.m_XEnd-e.m_XStart,i=e.m_YEnd-e.m_YStart,a=t.m_XEnd-t.m_XStart,o=t.m_YEnd-t.m_YStart,s=a*i-r*o;if(s===0)return L.getNAN();let c=4*Te()*(Math.abs(a*i)+Math.abs(r*o)),l=t.m_XStart-e.m_XStart,u=t.m_YStart-e.m_YStart,d=a*u-l*o,f=4*Te()*(Math.abs(a*u)+Math.abs(l*o)),p=d/s,m=Math.abs(s),h=(f*m+c*Math.abs(d))/(s*s)+Te()*Math.abs(p);if(p<-h||p>1+h)return L.getNAN();let g=r*u-l*i,_=4*Te()*(Math.abs(r*u)+Math.abs(l*i)),v=g/s,y=(_*m+c*Math.abs(g))/(s*s)+Te()*Math.abs(v);if(v<-y||v>1+y)return L.getNAN();let b=we(p,0,1),x=we(v,0,1),S=L.getNAN();Cn(e,b,S);let C=L.getNAN();if(Cn(t,x,C),!n||L.distance(S,C)>n){let r=L.getNAN();He(S,C,.5,r),b=e.getClosestCoordinate(r,!1),x=t.getClosestCoordinate(r,!1);let i=L.getNAN();Cn(e,b,i);let a=L.getNAN();Cn(t,x,a),i.subThis(a);let o=i.length(),s=(e.absNorm()+t.absNorm())*Se();if(o>Math.max(n,s))return L.getNAN()}return new L(b,x)}class Wn{constructor(e){if(this.m_currentSegmentIndex=-1,this.m_nextSegmentIndex=0,this.m_nextPathIndex=0,this.m_currentPathIndex=-1,this.m_parent=e.parent,this.m_buffer=new this.m_parent.m_segmentBufferCTor,this.m_description=e.parent.getDescription(),this.m_segmentCount=this.getSegmentCount(this.m_nextPathIndex),e.pointIndex!==void 0){(e.pointIndex<0||e.pointIndex>=e.parent.getPointCount())&&r(``);let t=e.parent.getPathIndexFromPointIndex(e.pointIndex);this.m_currentPathIndex=t,this.m_nextPathIndex=t+1,this.m_nextSegmentIndex=e.pointIndex-e.parent.getPathStart(t),this.m_segmentCount=this.getSegmentCount(this.m_currentPathIndex)}else if(e.pathIndex!==void 0){(e.pathIndex<0||e.pathIndex>=e.parent.getPathCount()||e.segmentIndex<0)&&r(``);let t=+!e.parent.isClosedPath(e.pathIndex);e.segmentIndex>=e.parent.getPathSize(e.pathIndex)-t&&r(``),this.m_nextSegmentIndex=e.segmentIndex,this.m_currentPathIndex=e.pathIndex,this.m_nextPathIndex=this.m_nextSegmentIndex+1,this.m_segmentCount=this.getSegmentCount(this.m_nextPathIndex)}this.prepare(),this.m_pathBegin=-1,this.m_bCurrentPathClosed=!1,this.m_bStripAttributes=!1,this.m_prevPathIndex=-1,this.m_prevSegmentIndex=-1,this.m_bNeedsUpdate=!1,this.m_currentPathIndex>-1&&(this.m_pathBegin=this.m_parent.getPathStart(this.m_currentPathIndex),this.m_bCurrentPathClosed=this.m_parent.isClosedPath(this.m_currentPathIndex))}stripAttributes(){this.m_bStripAttributes=!0}prepare(){this.m_bCirculator=!1,this.m_parent.isEmptyImpl()?(this.m_segFlagStream=null,this.m_xyStream=null):(this.m_segFlagStream=this.m_parent.getSegmentFlagsStreamRef(),this.m_xyStream=this.m_parent.getAttributeStreamRef(0))}nextPath(){return this.m_currentPathIndex=this.m_nextPathIndex,this.m_currentPathIndex>=this.m_parent.getPathCount()?!1:(this.m_currentSegmentIndex=-1,this.m_nextSegmentIndex=0,this.m_segmentCount=this.getSegmentCount(this.m_currentPathIndex),this.m_pathBegin=this.m_parent.getPathStart(this.m_currentPathIndex),this.m_bCurrentPathClosed=this.m_parent.isClosedPath(this.m_currentPathIndex),this.m_nextPathIndex++,!0)}previousPath(){return this.m_nextPathIndex!==0&&(this.m_nextPathIndex--,this.m_currentSegmentIndex=-1,this.m_nextSegmentIndex=0,this.m_segmentCount=this.getSegmentCount(this.m_nextPathIndex),this.m_currentPathIndex=this.m_nextPathIndex,this.m_pathBegin=this.m_parent.getPathStart(this.m_currentPathIndex),this.m_bCurrentPathClosed=this.m_parent.isClosedPath(this.m_currentPathIndex),this.resetToLastSegment(),!0)}getSegmentCount(e){return this.m_parent.isEmptyImpl()?0:this.m_parent.getSegmentCountPath(e)}resetToFirstPath(){this.m_currentSegmentIndex=-1,this.m_nextSegmentIndex=-1,this.m_segmentCount=-1,this.m_nextPathIndex=0,this.m_currentPathIndex=-1,this.m_pathBegin=-1,this.m_bCurrentPathClosed=!1}resetToLastPath(){this.m_nextPathIndex=this.m_parent.getPathCount(),this.m_currentPathIndex=-1,this.m_currentSegmentIndex=-1,this.m_nextSegmentIndex=-1,this.m_segmentCount=-1,this.m_pathBegin=-1}resetToPath(e){(e<0||e>this.m_parent.getPathCount())&&r(``),this.m_nextPathIndex=e,this.m_currentPathIndex=-1,this.m_currentSegmentIndex=-1,this.m_nextSegmentIndex=-1,this.m_segmentCount=-1,this.m_pathBegin=-1,this.m_bCurrentPathClosed=!1}isLastPath(){return this.m_currentPathIndex===this.m_parent.getPathCount()-1}isFirstSegmentInPath(){return this.m_currentSegmentIndex===0}isLastSegmentInPath(){return this.m_currentSegmentIndex===this.m_segmentCount-1}resetToFirstSegment(){this.m_currentSegmentIndex=-1,this.m_nextSegmentIndex=0}resetToLastSegment(){this.m_nextSegmentIndex=this.m_segmentCount,this.m_currentSegmentIndex=-1}resetTo(e){this.m_parent!==e.m_parent&&f(``),this.m_currentSegmentIndex=e.m_currentSegmentIndex,this.m_nextSegmentIndex=e.m_nextSegmentIndex,this.m_currentPathIndex=e.m_currentPathIndex,this.m_nextPathIndex=e.m_nextPathIndex,this.m_segmentCount=e.m_segmentCount,this.m_bCirculator=e.m_bCirculator,this.m_pathBegin=e.m_pathBegin,this.m_bCurrentPathClosed=e.m_bCurrentPathClosed,this.m_bStripAttributes=e.m_bStripAttributes,this.m_description=e.m_description}resetToVertex(e,t){if(this.m_currentPathIndex>=0&&this.m_currentPathIndex<this.m_parent.getPathCount()){let t=this.getPathBegin();if(e>=t&&e<this.m_parent.getPathEnd(this.m_currentPathIndex)){this.m_currentSegmentIndex=-1,this.m_nextSegmentIndex=e-t;return}}let n;n=t>=0&&t<this.m_parent.getPathCount()&&e>=this.m_parent.getPathStart(t)&&e<this.m_parent.getPathEnd(t)?t:this.m_parent.getPathIndexFromPointIndex(e),this.m_nextPathIndex=n+1,this.m_currentPathIndex=n,this.m_currentSegmentIndex=-1,this.m_nextSegmentIndex=e-this.m_parent.getPathStart(n),this.m_segmentCount=this.getSegmentCount(n),this.m_pathBegin=this.m_parent.getPathStart(this.m_currentPathIndex),this.m_bCurrentPathClosed=this.m_parent.isClosedPath(this.m_currentPathIndex)}hasNextSegment(){return this.m_nextSegmentIndex<this.m_segmentCount}hasPreviousSegment(){return this.m_nextSegmentIndex>0}nextSegment(){return this.m_currentSegmentIndex!==this.m_nextSegmentIndex&&this.updateSegment(),this.m_bCirculator?this.m_nextSegmentIndex=(this.m_nextSegmentIndex+1)%this.m_segmentCount:(this.m_nextSegmentIndex===this.m_segmentCount&&r(`Segment_iterator_impl::next_segment`),this.m_nextSegmentIndex++),this.m_buffer.get()}previousSegment(){return this.m_bCirculator?this.m_nextSegmentIndex=(this.m_segmentCount+this.m_nextSegmentIndex-1)%this.m_segmentCount:(this.m_nextSegmentIndex===0&&r(``),this.m_nextSegmentIndex--),this.m_nextSegmentIndex!==this.m_currentSegmentIndex&&this.updateSegment(),this.m_buffer.get()}nextCurve(){if(!this.m_parent.hasNonLinearSegments())return this.resetToLastSegment(),null;let e=0;for(;;){if(this.m_nextSegmentIndex===this.m_segmentCount||e===this.m_segmentCount)return null;let t=this.getPathBegin()+this.m_nextSegmentIndex;if((this.m_segFlagStream.read(t)&31)==1){this.m_bCirculator?this.m_nextSegmentIndex=(this.m_nextSegmentIndex+1)%this.m_segmentCount:this.m_nextSegmentIndex++,e++;continue}this.updateSegment();break}return this.m_currentSegmentIndex!==this.m_nextSegmentIndex&&this.updateSegment(),this.m_bCirculator?this.m_nextSegmentIndex=(this.m_nextSegmentIndex+1)%this.m_segmentCount:(this.m_nextSegmentIndex===this.m_segmentCount&&r(``),this.m_nextSegmentIndex++),this.m_buffer.get()}getPathBegin(){return this.m_pathBegin}getPathIndex(){return this.m_currentPathIndex}getStartPointIndex(){return this.getPathBegin()+this.m_currentSegmentIndex}getEndPointIndex(){return this.isClosingSegment()?this.getPathBegin():this.getStartPointIndex()+1}updateSegment(){(this.m_nextSegmentIndex<0||this.m_nextSegmentIndex>=this.m_segmentCount||this.m_currentPathIndex<0)&&r(``),this.m_currentSegmentIndex=this.m_nextSegmentIndex,this.m_parent.getSegmentFromPath(this.m_currentPathIndex,this.m_currentSegmentIndex,this.m_buffer,this.m_bStripAttributes)}isClosingSegment(){return this.m_bCurrentPathClosed&&this.m_currentSegmentIndex===this.m_segmentCount-1}isCurve(){return this.m_segFlagStream!==null&&(this.m_segFlagStream.read(this.m_currentSegmentIndex)&31)!=1}isPathClosed(){return this.m_bCurrentPathClosed}setCirculator(e){this.m_bCirculator=e}getImpl(){return this}m_buffer;m_currentSegmentIndex;m_nextSegmentIndex;m_nextPathIndex;m_currentPathIndex;m_parent;m_segFlagStream=null;m_xyStream=null;m_description;m_segmentCount;m_pathBegin;m_bCurrentPathClosed;m_bCirculator=!1;m_bStripAttributes;m_prevPathIndex;m_prevSegmentIndex;m_bNeedsUpdate}class Gn{m_rasterizedGeometry=null;m_quadTree=null;m_quadTreeForPaths=null;m_refCount=1;constructor(e){e&&e.copyTo(this)}getRasterizedGeometry(){return this.m_rasterizedGeometry}copyTo(e){e!==this&&(n(e.uniqueUse()),e.m_quadTree=this.m_quadTree,e.m_quadTreeForPaths=this.m_quadTreeForPaths,e.m_rasterizedGeometry=this.m_rasterizedGeometry)}clone(){let e=new Gn;return this.copyTo(e),e}uniqueUse(){return this.m_refCount===1}addRef(){++this.m_refCount}release(){--this.m_refCount===0&&(this.m_rasterizedGeometry=null,this.m_quadTree=null,this.m_quadTreeForPaths=null)}setRasterizedGeometry(e){n(this.uniqueUse())}setQuadTree(e){n(this.uniqueUse()),this.m_quadTree=e}setQuadTreeForPaths(e){n(this.uniqueUse()),this.m_quadTreeForPaths=e}getQuadTree(){return this.m_quadTree}getQuadTreeForPaths(){return this.m_quadTreeForPaths}}function Kn(e){return!(e.isEmpty()||e.getGeometryType()!==i.enumPolyline&&e.getGeometryType()!==i.enumPolygon||e.getPointCount()<20)}function qn(e){return!(e.isEmpty()||e.getGeometryType()!==i.enumPolyline&&e.getGeometryType()!==i.enumPolygon||e.getPointCount()<20)}function Jn(e,t){return e.readPoint2D(t+4)}function Yn(e){let t=e.getGeometryType();if(t===i.enumEllipticArc)return 10;if(t===i.enumBezier)return 4;if(t===i.enumRationalBezier2)return 5;if(t===i.enumBezier2)return 2;c(``)}function Xn(e){let t=e&31;return t===4?10:t===2?4:t===8?5:t===16?2:0}function Zn(e,t,n,r){let i=e.getPathStart(t),a=e.getPathEnd(t);if(a-i<3)return;let o=i*2,s=L.getNAN();n.queryPoint2D(o,s);let c=s.x,l=s.y,u=L.getNAN();n.queryPoint2D(o+2,u);let d=L.getNAN();for(let e=o+4,t=a*2;e<t;e+=2)n.queryPoint2D(e,d),r.pe((d.x-s.x)*(u.y-l)),s.setCoordsPoint2D(u),u.setCoordsPoint2D(d);r.pe((c-s.x)*(u.y-l))}function Qn(e,t,n){for(;t.hasNextSegment();){let e=t.nextCurve();if(e===null)break;n.pe(2*e.calculateArea2DHelper())}}var Y=C;class $n{m_segmentFlags=null;m_segmentParamIndex=null;m_segmentParams=null;static toSegType(e){let t=0;switch(e){case i.enumLine:t=1;break;case i.enumBezier:t=2;break;case i.enumEllipticArc:t=4;break;case i.enumRationalBezier2:t=8;break;case i.enumBezier2:t=16;break;default:c(``)}return t}m_curveCount;m_bezierCount;m_arcCount;m_rbezier2Count;m_bezier2Count;m_curveParamWritePoint;constructor(){this.m_curveCount=0,this.m_bezierCount=0,this.m_arcCount=0,this.m_rbezier2Count=0,this.m_bezier2Count=0,this.m_curveParamWritePoint=0}assignCopy(e){return this.m_segmentFlags=e.m_segmentFlags,this.m_segmentParamIndex=e.m_segmentParamIndex,this.m_segmentParams=e.m_segmentParams,this.m_curveCount=e.m_curveCount,this.m_bezierCount=e.m_bezierCount,this.m_arcCount=e.m_arcCount,this.m_rbezier2Count=e.m_rbezier2Count,this.m_bezier2Count=e.m_bezier2Count,this.m_curveParamWritePoint=e.m_curveParamWritePoint,this}}class er extends Nt{constructor(e){super(e),e.move?(this.m_bPolygon=e.move.m_bPolygon,this.m_cachedLength2D=e.move.m_cachedLength2D,this.m_cachedArea2D=e.move.m_cachedArea2D,this.m_currentPathIndex=e.move.m_currentPathIndex,this.m_cachedRingAreas2D=e.move.m_cachedRingAreas2D,this.m_paths=e.move.m_paths,this.m_pathFlags=e.move.m_pathFlags,this.m_curveData=e.move.m_curveData,e.move.m_curveData=null,e.move.setEmpty()):(this.m_bPolygon=e.bPolygon,this.m_cachedLength2D=0,this.m_cachedArea2D=0,this.m_currentPathIndex=0)}getGeometryType(){return this.m_bPolygon?i.enumPolygon:i.enumPolyline}getDimension(){return this.m_bPolygon?2:1}changeRingStartPoint(e){n(this.m_bPolygon);let r=this.getPathIndexFromPointIndex(e),i=this.getPathStart(r);if(i===e)return;let a=this.getPathEnd(r);(e>=a||e<i)&&t(`change_ring_start_point`);for(let t=0,n=this.m_description.getAttributeCount();t<n;t++){let n=this.m_description.getSemantics(t),r=Y.getComponentCount(n);this.m_vertexAttributes.get(t).rotate(i*r,e*r,a*r)}this.hasNonLinearSegments()&&(this.m_curveData.m_segmentFlags.rotate(i,e,a),this.m_curveData.m_segmentParamIndex.rotate(i,e,a))}setFillRule(e){this.m_bFillRule=e===1}getFillRule(){return+!!this.m_bFillRule}isExteriorRingOGC(e){return this.m_bPolygon?(this.updateOGCFlagsProtected(),!!(this.m_pathFlags.read(e)&8)):!1}isExteriorRing(e){return this.calculateRingArea2D(e)>0}calculateRingArea2D(e){return this.m_bPolygon?(this.updateRingAreas2DProtected(),this.m_cachedRingAreas2D.read(e)):0}updateRingAreas2DProtected(){if(!this.hasDirtyFlag(1024))return;let e=this.getPathCount();if(e===0){this.hasDirtyFlag(1024)&&(this.m_cachedArea2D=0),this.setDirtyFlagProtected(1024,!1);return}let t=new re(e),n=new Ee(0),r=new Ee(0);if(this.m_pointCount!==0){let i=this.getAttributeStreamRef(0);if(this.hasNonLinearSegments()){let e=new Wn({parent:this});for(e.stripAttributes();e.nextPath();){r.reset();let a=e.getPathIndex();Zn(this,a,i,r),Qn(this,e,r);let o=r.getResult()*.5;n.add(o),t.write(a,o)}}else for(let a=0;a<e;a++){r.reset(),Zn(this,a,i,r);let e=r.getResult()*.5;n.add(e),t.write(a,e)}}this.hasDirtyFlag(1024)&&(this.m_cachedArea2D=n.getResult(),this.m_cachedRingAreas2D=t,this.setDirtyFlagProtected(1024,!1))}getOGCPolygonCount(){if(!this.m_bPolygon)return 0;this.updateOGCFlagsProtected();let e=0,t=this.getPathCount();for(let n=0;n<t;n++)this.m_pathFlags.read(n)&8&&e++;return e}getHashCodeImpl(){return n(0),0}equalsImpl(e){let t=e,n=this.getPathCount();if(n!==t.getPathCount())return!1;let r=this.hasNonLinearSegments();if(r!==t.hasNonLinearSegments()||r&&(this.m_curveData.m_curveCount!==t.m_curveData.m_curveCount||this.m_curveData.m_bezierCount!==t.m_curveData.m_bezierCount)||this.m_paths&&!this.m_paths.equals(t.m_paths,0,n+1)||this.m_bFillRule!==t.m_bFillRule||!this.m_bPolygon&&this.m_pathFlags&&!this.m_pathFlags.equals(t.m_pathFlags,0,n))return!1;if(this.hasNonLinearSegments()){if(!this.m_curveData.m_segmentFlags.equals(t.m_curveData.m_segmentFlags,0,this.getPointCount()))return!1;for(let e=0,n=this.getPointCount();e<n;e++){let n=this.m_curveData.m_segmentFlags.read(e);if(!er.isNonLinearSegmentFlag(n))continue;let r=this.m_curveData.m_segmentParamIndex.read(e),i=t.m_curveData.m_segmentParamIndex.read(e),a=Xn(n);for(let e=0;e<a;e++){let n=this.m_curveData.m_segmentParams.read(r+e),a=t.m_curveData.m_segmentParams.read(i+e);if(!De(n,a))return!1}}}return!0}equalsImplTol(e,t){let n=e,r=this.getPathCount();if(r!==n.getPathCount())return!1;let i=this.hasNonLinearSegments();if(i!==n.hasNonLinearSegments()||i&&(this.m_curveData.m_curveCount!==n.m_curveData.m_curveCount||this.m_curveData.m_bezierCount!==n.m_curveData.m_bezierCount)||this.m_paths&&!this.m_paths.equals(n.m_paths,0,r+1)||this.m_bFillRule!==n.m_bFillRule||!this.m_bPolygon&&this.m_pathFlags&&!this.m_pathFlags.equals(n.m_pathFlags,0,r))return!1;if(!i)return!0;if(!this.m_curveData.m_segmentFlags.equals(n.m_curveData.m_segmentFlags,0,this.getPointCount()))return!1;let a=this.querySegmentIterator(),o=n.querySegmentIterator();for(;a.nextPath();){if(!o.nextPath())return!1;for(;a.hasNextSegment();){let e=a.nextCurve(),n=o.nextCurve();if(!(e&&n&&e.equals(n,t))){if(!e&&!n)break;return!1}}}return!0}reserveImplImpl(e,t){this.m_curveData&&this.m_curveData.m_segmentFlags&&(this.m_curveData.m_segmentFlags.resize(e,1),this.m_curveData.m_segmentParamIndex.resize(e,-1),this.checkCompactSegmentParams())}verifyStreamsAfterSizeChangeExtraImpl(){this.m_paths||(this.m_paths=N(1,0),this.m_pathFlags=ie(1,0)),this.m_curveData&&this.m_curveData.m_segmentFlags&&(this.m_curveData.m_segmentFlags.resize(this.m_reservedPointCount,1),this.m_curveData.m_segmentParamIndex.resize(this.m_reservedPointCount,-1),this.checkCompactSegmentParams())}copyToImpl(e,t){let n=e;n.m_bPathStarted=!1,n.m_bFillRule=this.m_bFillRule,n.m_paths=this.m_paths?t?this.m_paths:this.m_paths.clone():null,n.m_pathFlags=this.m_pathFlags?t?this.m_pathFlags:this.m_pathFlags.clone():null,this.m_curveData&&(n.m_curveData||=new $n,n.m_curveData.assignCopy(this.m_curveData),n.m_curveData.m_curveCount=0,n.updateCurveCounter(this.m_curveData.m_curveCount),t||(this.m_curveData.m_segmentParamIndex?n.m_curveData.m_segmentParamIndex=this.m_curveData.m_segmentParamIndex.clone():n.m_curveData.m_segmentParamIndex=null,this.m_curveData.m_segmentFlags?n.m_curveData.m_segmentFlags=this.m_curveData.m_segmentFlags.clone():n.m_curveData.m_segmentFlags=null,this.m_curveData.m_segmentParams?n.m_curveData.m_segmentParams=this.m_curveData.m_segmentParams.clone():n.m_curveData.m_segmentParams=null)),n.hasDirtyFlag(512)||(n.m_cachedLength2D=this.m_cachedLength2D),n.m_cachedRingAreas2D=null,n.hasDirtyFlag(1024)||(n.m_cachedArea2D=this.m_cachedArea2D,this.m_cachedRingAreas2D!==null&&(n.m_cachedRingAreas2D=t?this.m_cachedRingAreas2D:this.m_cachedRingAreas2D.clone()))}calculateArea2D(){return this.m_bPolygon?(this.updateRingAreas2DProtected(),this.m_cachedArea2D):0}calculateLength2D(){if(!this.hasDirtyFlag(512))return this.m_cachedLength2D;let e=this.querySegmentIterator(),t=new Ee(0);for(;e.nextPath();)for(;e.hasNextSegment();)t.add(e.nextSegment().calculateLength2D());return this.hasDirtyFlag(512)&&(this.m_cachedLength2D=t.getResult()),this.setDirtyFlagProtected(512,!1),t.getResult()}calculatePathLength2D(e){let t=this.querySegmentIteratorAtVertex(this.getPathStart(e)),n=new Ee(0);for(;t.hasNextSegment();)n.add(t.nextSegment().calculateLength2D());return n.getResult()}calculateLength3D(e){return n(0),0}calculatePathLength3D(e,t){return n(0),0}copyTo(e){u(e.getGeometryType())||t(``),this!==e&&super.copyTo(e)}swap(e){n(0)}setPointByVal(e,t){this.setPointByValWithCurves(e,t)}setPointByValWithCurves(e,t){if(this.hasNonLinearSegments()){let n=t.getXY();if(this.setXYCoordsWithCurves(e,n.x,n.y),this.m_description.getAttributeCount()===1)return}this.setPointByValNoCurves(e,t)}setXYCoordsWithCurves(e,t,n){if(this.hasNonLinearSegments()){let r=er.getPathIndexFromPointIndexImpl(this.m_paths,this.getPathCount(),e,this.m_currentPathIndex);this.m_currentPathIndex=r;let i=this.getPrevSegmentTypeFromPath(r,e),a=this.getNextSegmentType(e);if(i!==1||a!==1){let o=e-1,s=new $;i!==1&&(this.isClosedPath(r)&&e===this.getPathStart(r)&&(o=this.getPathEnd(r)-1),this.getSegmentBuffer(o,s,!0));let c=new $;a!==1&&this.getSegmentBuffer(e,c,!0);let l=e+1;this.setXYCoordsNoCurves(e,t,n);let u=new L(t,n);i!==1&&(s.get().changeEndPoints2D(s.get().getStartXY(),u),this.replaceSegmentImpl(o,e,s.get(),!0)),a!==1&&(c.get().changeEndPoints2D(u,c.get().getEndXY()),this.replaceSegmentImpl(e,l,c.get(),!0));return}}this.setXYCoordsNoCurves(e,t,n)}setXYZWithCurves(e,t){this.hasNonLinearSegments()?(this.setXYCoordsWithCurves(e,t.x,t.y),this.setAttributeNoCurves(1,e,0,t.z)):this.setXYZNoCurves(e,t)}setAttributeWithCurves(e,t,n,r){if(e!==0||!this.hasNonLinearSegments())this.setAttributeNoCurves(e,t,n,r);else{let e=this.getXY(t);n===0?e.x=r:e.y=r,this.setXYCoordsWithCurves(t,e.x,e.y)}}setXY(e,t){this.setXYCoordsWithCurves(e,t.x,t.y)}setXYCoords(e,t,n){this.setXYCoordsWithCurves(e,t,n)}setXYZ(e,t){this.setXYZWithCurves(e,t)}setAttribute(e,t,n,r){this.setAttributeWithCurves(e,t,n,r)}setAttributeWithCurvesFromArray(e,t,n,i){if(e!==0||!this.hasNonLinearSegments())this.setAttributeFromArrayNoCurves(e,t,n,i);else{i<2&&r(``);let e=this.getXY(t);e.x=n[0],e.y=n[1],this.setXYCoordsWithCurves(t,e.x,e.y)}}setAttributeFromArray(e,t,n,r){this.setAttributeWithCurvesFromArray(e,t,n,r)}hasNonLinearSegments(){return this.getCurveCount()!==0}getSegmentCount(){let e=this.getPointCount();if(!this.m_bPolygon){e-=this.getPathCount();for(let t=0,n=this.getPathCount();t<n;t++)this.isClosedPath(t)&&e++}return e}getSegmentCountPath(e){let t=this.getPathSize(e);return!this.isClosedPath(e)&&t>0&&t--,t}add(e,n){this===e&&t(`Multi_path_impl::add`);for(let t=0,r=e.getPathCount();t<r;t++)this.addPath(e,t,!n)}addPath(e,t,n){this.insertPath(-1,e,t,n)}addPathPoint2D(e,t,n){this.insertPath2D(-1,e,0,t,n)}addPathMultiPoint(e,t,n,r){n<0&&(n=e.getPointCount()-t),this.insertPointsFromMultipoint(-1,0,e,t,n,r)}addSegmentsFromPath(e,n,i,a,o){if(this===e&&t(`Multi_path_impl.add_segments_from_path`),!o&&this.getPathCount()===0&&(o=!0),n<0&&(n=e.getPathCount()-1),(n>=e.getPathCount()||i<0||a<0||i+a>e.getSegmentCountPath(n))&&r(`add_segments_from_path`),a===0)return;let s=e.getPathStart(n),c=e.isClosedPath(n)&&i+a===e.getSegmentCountPath(n);this.m_bPathStarted=!1,this.mergeVertexDescription(e.getDescription());let l=a,u=s+i,d=u+1;o&&(l++,d--),!o&&e.hasNonLinearSegments()&&e.m_curveData.m_segmentFlags.read(u)!==1&&(e.getXY(u).equals(this.getXY(this.m_pointCount-1))||t(`add_segments_from_path: start point mismatch`));let f=this.m_pointCount;if(this.resizeImpl(this.m_pointCount+l),this.verifyAllStreamsAfterSizeChange(),o){if(l===0)return;this.m_paths.add(this.m_pointCount);let t=e.m_pathFlags.read(n);this.m_bPolygon&&(t|=1),this.m_pathFlags.write(this.m_pathFlags.size()-1,t),this.m_pathFlags.add(0)}else this.m_paths.write(this.m_pathFlags.size()-1,this.m_pointCount);let p=c?l-1:l;for(let t=0,n=this.m_description.getAttributeCount();t<n;t++){let n=this.m_description.getSemantics(t),r=Y.getComponentCount(n),i=e.m_description.getAttributeIndex(n);if(p>0){if(i<0||!e.m_vertexAttributes.get(i)){let e=Y.getDefaultValue(n);this.m_vertexAttributes.get(t).insertRange(r*f,e,p*r,r*f),c&&this.m_vertexAttributes.get(t).insertRange(r*f+p*r,e,r,r*f);continue}this.m_vertexAttributes.get(t).insertRangeFromStream(r*f,e.m_vertexAttributes.get(i),r*d,p*r,!0,r,r*f)}c&&this.m_vertexAttributes.get(t).insertRangeFromStream(r*(f+p),e.m_vertexAttributes.get(i),r*s,r,!0,r,r*(f+p))}if(this.hasNonLinearSegments()&&this.initSegmentData(0),e.hasNonLinearSegments()){let t=0;for(let n=0,r=u;n<a;n++){let n=e.m_curveData.m_segmentFlags.read(r);t+=Xn(n),r++}if(t>0){this.initSegmentData(t);let n=u,r=f-+!o,i=0;for(let t=0;t<a;t++){let t=e.m_curveData.m_segmentFlags.read(n);if(this.m_curveData.m_segmentFlags.write(r,t),er.isNonLinearSegmentFlag(t)){i++;let a=e.m_curveData.m_segmentParamIndex.read(n),o=Xn(t);this.m_curveData.m_segmentParamIndex.write(r,this.m_curveData.m_curveParamWritePoint);for(let t=0;t<o;t++){let t=e.m_curveData.m_segmentParams.read(a);this.m_curveData.m_segmentParams.write(this.m_curveData.m_curveParamWritePoint,t),this.m_curveData.m_curveParamWritePoint++,a++}this.incCurveType(t,1)}else this.m_curveData.m_segmentParamIndex.write(r,-1);r++,n++}this.modifyCurveCounter(i)}}if(c){let e=this.getPathCount()-1,t=this.getPathStart(e),n=this.getPathEnd(e)-1,r=this.getXY(t),i=this.getXY(n);r.isEqualPoint2D(i)&&(--this.m_pointCount,this.m_paths.write(e+1,this.m_pointCount))}this.notifyModifiedFlags(2001)}reverseAllPaths(){for(let e=0,t=this.getPathCount();e<t;e++)this.reversePath(e)}reversePath(e){e>=this.getPathCount()&&t(``);let n=this.getPathSize(e);if(n===0)return;let r=this.getPathStart(e),i=this.isClosedPath(e);if(this.hasNonLinearSegments()){let e=r,t=new this.m_segmentBufferCTor,a=!1;for(let r=0;r<n;r++,e++){let n=this.m_curveData.m_segmentFlags.read(e);if(!er.isNonLinearSegmentFlag(n))continue;a=!0,this.querySegment(e,t,!0),t.get().reverse();let r=this.m_curveData.m_segmentParamIndex.read(e);t.get().writeInBufferStream(this.m_curveData.m_segmentParams,r)}if(a){let e=+!i;this.m_curveData.m_segmentFlags.reverseRange(r,n-e,1),this.m_curveData.m_segmentParamIndex.reverseRange(r,n-e,1)}}let a=+!!i;for(let e=0,t=this.m_description.getAttributeCount();e<t;e++)if(this.m_vertexAttributes.get(e)){let t=this.m_description.getSemantics(e),i=Y.getComponentCount(t);this.m_vertexAttributes.get(e).reverseRange(i*(r+a),i*(n-a),i)}let o=this.m_pathFlags.read(e)&6;if(o){let t=0;o&4&&(t|=2),o&2&&(t|=4),this.m_pathFlags.clearBits(e,6),this.m_pathFlags.setBits(e,t)}this.notifyModifiedFlags(1233)}removePath(e){let n=this.getPathCount();e<0&&(e=n-1),e>=n&&t(``);let r=this.getPathStart(e),i=this.getPathSize(e);for(let e=0,t=this.m_description.getAttributeCount();e<t;e++)if(this.m_vertexAttributes.get(e)){let t=this.m_description.getSemantics(e),n=Y.getComponentCount(t);this.m_vertexAttributes.get(e).eraseRange(n*r,n*i,n*this.m_pointCount)}if(this.hasNonLinearSegments()){let e=0;for(let t=r,n=r+i;t<n;t++){let n=this.m_curveData.m_segmentFlags.read(t);er.isNonLinearSegmentFlag(n)&&(this.incCurveType(n,-1),e++)}this.modifyCurveCounter(-e),this.m_curveData.m_segmentFlags.eraseRange(r,i,this.m_pointCount),this.m_curveData.m_segmentParamIndex.eraseRange(r,i,this.m_pointCount)}for(let t=e+1;t<=n;t++){let e=this.m_paths.read(t);this.m_paths.write(t-1,e-i)}if(this.m_pathFlags)for(let t=e+1;t<=n;t++){let e=this.m_pathFlags.read(t);this.m_pathFlags.write(t-1,e)}this.m_paths.resize(n),this.m_pathFlags.resize(n),this.m_pointCount-=i,this.m_reservedPointCount-=i,e===n-1&&(this.m_bPathStarted=!1),this.notifyModifiedFlags(2001),this.checkCompactSegmentParams(),this.dbgVerifyCurves()}dbgVerifyCurves(){}insertPath(e,n,r,i){this===n&&t(`Multi_path_impl::insert_path`);let a=this.getPathCount();if(!i&&n.hasNonLinearSegmentsPath(r))return e=this.insertPath(e,n,r,!0),this.reversePath(e),e;r>=n.getPathCount()&&t(``),e>a&&t(``),e<0&&(e=a),r<0&&(r=n.getPathCount()-1),this.m_bPathStarted=!1,this.mergeVertexDescription(n.getDescription());let o=n.getPathStart(r),s=n.getPathSize(r);if(s===0)return this.insertPath2D(e,null,0,0,!0);let c=this.m_pointCount,l=n.isClosedPath(r)&&!i?1:0;this.resizeImpl(this.m_pointCount+s),this.verifyAllStreamsAfterSizeChange();let u=e<a?this.getPathStart(e):c;for(let e=0,t=this.m_description.getAttributeCount();e<t;e++){let t=this.m_description.getSemantics(e),r=n.getDescription().getAttributeIndex(t),a=Y.getComponentCount(t);if(r>=0&&n.m_vertexAttributes.get(r))l!==0&&this.m_vertexAttributes.get(e).insertRangeFromStream(u*a,n.m_vertexAttributes.get(r),a*o,a,!0,a,a*c),this.m_vertexAttributes.get(e).insertRangeFromStream((u+l)*a,n.m_vertexAttributes.get(r),a*(o+l),a*(s-l),i,a,a*(c+l));else{let n=Y.getDefaultValue(t);this.m_vertexAttributes.get(e).insertRange(u*a,n,a*s,a*c)}}let d=c+s;this.m_paths.add(d);for(let t=a;t>=e+1;t--){let e=this.m_paths.read(t-1);this.m_paths.write(t,e+s)}this.m_pathFlags.add(0);for(let t=a-1;t>=e+1;t--){let e=this.m_pathFlags.read(t);e&=-9,this.m_pathFlags.write(t+1,e)}let f=n.getPathFlagsStreamRef().read(r);if(f&=-9,this.m_bPolygon&&(f|=1),this.m_pathFlags.write(e,f),n.hasNonLinearSegments()){this.initSegmentData(0);let e=o,t=0;for(let r=0;r<s;r++){let r=n.m_curveData.m_segmentFlags.read(e);t+=Xn(r),e++}if(t>0){this.m_curveData.m_segmentFlags===null?(this.m_curveData.m_segmentFlags=ie(this.m_pointCount,1),this.m_curveData.m_segmentParamIndex=N(this.m_pointCount,-1)):(this.m_curveData.m_segmentFlags.insertRange(u,1,s,c),this.m_curveData.m_segmentParamIndex.insertRange(u,-1,s,c)),this.m_curveData.m_segmentParams?this.m_curveData.m_segmentParams.resize(this.m_curveData.m_curveParamWritePoint+t):this.m_curveData.m_segmentParams=ae(t),e=o;let r=u,i=0;for(let t=0;t<s;t++){let t=n.m_curveData.m_segmentFlags.read(e);if(er.isNonLinearSegmentFlag(t)){this.m_curveData.m_segmentFlags.write(r,t),this.m_curveData.m_segmentParamIndex.write(r,this.m_curveData.m_curveParamWritePoint);let a=Xn(t),o=n.m_curveData.m_segmentParamIndex.read(e);for(let e=0;e<a;e++){let e=n.m_curveData.m_segmentParams.read(o);this.m_curveData.m_segmentParams.write(this.m_curveData.m_curveParamWritePoint,e),this.m_curveData.m_curveParamWritePoint++,o++}i++,this.incCurveType(t,1)}e++,r++}this.modifyCurveCounter(i)}}return this.notifyModifiedFlags(2001),e}insertPath2D(e,n,r,i,a){let o=this.getPathCount();(e>o||r<0)&&t(``),e<0&&(e=o),this.m_bPathStarted=!1;let s=this.m_pointCount;this.resizeImpl(this.m_pointCount+i),i===0&&this.notifyModifiedFlags(32),this.verifyAllStreamsAfterSizeChange();let c=e<o?this.getPathStart(e):s;if(n)this.m_vertexAttributes.get(0).insertRangeFromPoints(2*c,n,r,i,a,2*s);else{let e=Y.getDefaultValue(0);this.m_vertexAttributes.get(0).insertRange(2*c,e,i*2,2*s)}for(let e=1,t=this.m_description.getAttributeCount();e<t;e++){let t=this.m_description.getSemantics(e),n=Y.getComponentCount(t),r=Y.getDefaultValue(t);this.m_vertexAttributes.get(e).insertRange(c*n,r,n*i,n*s)}this.m_paths.add(this.m_pointCount);for(let t=o;t>=e+1;t--){let e=this.m_paths.read(t-1);this.m_paths.write(t,e+i)}this.m_pathFlags.add(0);for(let t=o-1;t>=e+1;t--){let e=this.m_pathFlags.read(t);e&=-9,this.m_pathFlags.write(t+1,e)}return this.m_bPolygon&&this.m_pathFlags.write(e,1),this.hasNonLinearSegments()&&(this.m_curveData.m_segmentFlags.insertRange(c,1,i,s),this.m_curveData.m_segmentParamIndex.insertRange(c,-1,i,s)),this.notifyModifiedFlags(2001),e}insertPathFromMultipoint(e,n,r,i,a){let o=n.getImpl(),s=this.getPathCount();(e>s||r<0)&&t(``);let c=i<0?o.getPointCount()-r:i;if(c>o.getPointCount()&&t(``),r>=o.getPointCount()&&t(`pointsOffset`),e<0&&(e=s),this.m_bPathStarted=!1,this.mergeVertexDescription(o.getDescription()),c===0){this.insertPath2D(e,null,0,0,!0);return}let l=this.m_pointCount,u=r;this.resizeImpl(this.m_pointCount+c),this.verifyAllStreamsAfterSizeChange();let d=e<s?this.getPathStart(e):l;for(let e=0,t=this.m_description.getAttributeCount();e<t;e++){let t=this.m_description.getSemantics(e),n=o.getDescription().getAttributeIndex(t),r=Y.getComponentCount(t);if(n>=0){let n=o.getAttributeStreamRef(t);this.m_vertexAttributes.get(e).insertRangeFromStream(d*r,n,r*u,r*c,a,r,r*l)}else{let n=Y.getDefaultValue(t);this.m_vertexAttributes.get(e).insertRange(d*r,n,r*c,r*l)}}let f=l+c;this.m_paths.add(f);for(let t=s;t>=e+1;t--){let e=this.m_paths.read(t-1);this.m_paths.write(t,e+c)}this.m_pathFlags.add(0);for(let t=s-1;t>=e+1;t--){let e=this.m_pathFlags.read(t);e&=-9,this.m_pathFlags.write(t+1,e)}let p=0;this.m_bPolygon&&(p|=1),this.m_pathFlags.write(e,p),this.notifyModifiedFlags(2001)}insertPoints(e,n,i,a,o,s,c){if(this===i&&t(`Multi_path_impl.insert_points`),e<0&&(e=this.getPathCount()),a<0&&(a=i.getPathCount()-1),(e>this.getPathCount()||n>=0&&n>this.getPathSize(e)||a>=i.getPathCount()||s>i.getPathSize(a))&&r(``),!s)return;if(this.mergeVertexDescription(i.m_description),e===this.getPathCount()){this.m_paths.add(this.m_pointCount);let e=i.m_pathFlags.read(a);e&=-9,this.m_bPolygon?this.m_pathFlags.add(e|1):this.m_pathFlags.add(e)}n<0&&(n=this.getPathSize(e));let l=this.m_pointCount;this.resizeImpl(this.m_pointCount+s),this.verifyAllStreamsAfterSizeChange();let u=this.getPathStart(e),d=u+n;s<0&&(s=i.getPathSize(a));let f=i.getPathStart(a),p=f+s;for(let e=0,t=this.m_description.getAttributeCount();e<t;e++){let t=this.m_description.getSemantics(e),r=Y.getComponentCount(t),a=i.m_description.getAttributeIndex(t);if(a<0||!i.m_vertexAttributes.get(a)){let n=Y.getDefaultValue(t);this.m_vertexAttributes.get(e).insertRange(r*d,n,p*r,r*l);continue}this.m_vertexAttributes.get(e)?.insertRangeFromStream(r*(u+n),i.m_vertexAttributes.get(a),r*(f+o),s*r,c,r,r*l)}this.hasNonLinearSegments()&&(this.m_curveData.m_segmentFlags.insertRange(u+n,1,s,l),this.m_curveData.m_segmentParamIndex.insertRange(u+n,-1,s,l),n>0&&this.isNonLinearSegment(u+n-1)&&(this.incCurveType(this.m_curveData.m_segmentFlags.read(u+n-1),-1),this.m_curveData.m_segmentFlags.write(u+n-1,1),this.m_curveData.m_segmentParamIndex.write(u+n-1,-1),this.modifyCurveCounter(-1)));for(let t=e+1,n=this.getPathCount();t<=n;t++){let e=this.m_paths.read(t);this.m_paths.write(t,e+s)}this.notifyModifiedFlags(2001)}insertPointsFromPoints(e,t,n,i,a,o){if(e<0&&(e=this.getPathCount()),(e>this.getPathCount()||t>this.getPathSize(e)||i<0)&&r(``),!a)return;e===this.getPathCount()&&(this.m_paths.add(this.m_pointCount),this.m_bPolygon?this.m_pathFlags.add(1):this.m_pathFlags.add(0)),t<0&&(t=this.getPathSize(e));let s=this.m_pointCount;this.resizeImpl(this.m_pointCount+a),this.verifyAllStreamsAfterSizeChange();let c=this.getPathStart(e);this.m_vertexAttributes.get(0).insertRangeFromPoints(2*(c+t),n,i,a,o,2*s);for(let e=1,n=this.m_description.getAttributeCount();e<n;e++){let n=this.m_description.getSemantics(e),r=Y.getComponentCount(n),i=Y.getDefaultValue(n);this.m_vertexAttributes.get(e).insertRange((c+t)*r,i,r*a,r*s)}this.hasNonLinearSegments()&&(this.m_curveData.m_segmentFlags.insertRange(c+t,1,a,s),this.m_curveData.m_segmentParamIndex.insertRange(c+t,-1,a,s),t>0&&this.isNonLinearSegment(c+t-1)&&(this.incCurveType(this.m_curveData.m_segmentFlags.read(c+t-1),-1),this.m_curveData.m_segmentFlags.write(c+t-1,1),this.m_curveData.m_segmentParamIndex.write(c+t-1,-1),this.modifyCurveCounter(-1)));for(let t=e+1,n=this.getPathCount();t<=n;t++)this.m_paths.write(t,this.m_paths.read(t)+a);this.notifyModifiedFlags(2001)}insertPointsFromMultipoint(e,t,n,i,a,o){let s=n.getImpl(),c=this.getPathCount();e<0&&(e=this.getPathCount());let l=s.getPointCount();if((i<0||i>l)&&r(``),(a<0||i+a>l)&&(a=l-i),t<0&&(t=e<c?this.getPathSize(e):0),(e>c||e<c&&t>this.getPathSize(e)||e===c&&t>0||a<0)&&r(``),!a)return;this.mergeVertexDescription(s.getDescription()),e===c&&(this.m_paths.add(this.m_pointCount),this.m_bPolygon?this.m_pathFlags.add(1):this.m_pathFlags.add(0)),t<0&&(t=this.getPathSize(e));let u=this.m_pointCount;this.resizeImpl(this.m_pointCount+a),this.verifyAllStreamsAfterSizeChange();let d=this.getPathStart(e),f=d+t,p=0+a;for(let e=0,n=this.m_description.getAttributeCount();e<n;e++){let n=this.m_description.getSemantics(e),r=Y.getComponentCount(n);if(s.getDescription().getAttributeIndex(n)<0){let t=Y.getDefaultValue(n);this.m_vertexAttributes.get(e).insertRange(r*f,t,p*r,r*u);continue}let c=s.getAttributeStreamRef(n);this.m_vertexAttributes.get(e).insertRangeFromStream(r*(d+t),c,r*(0+i),a*r,o,r,r*u)}this.hasNonLinearSegments()&&(this.m_curveData.m_segmentFlags.insertRange(d+t,1,a,u),this.m_curveData.m_segmentParamIndex.insertRange(d+t,-1,a,u),t>0&&this.isNonLinearSegment(d+t-1)&&(this.incCurveType(this.m_curveData.m_segmentFlags.read(d+t-1),-1),this.m_curveData.m_segmentFlags.write(d+t-1,1),this.m_curveData.m_segmentParamIndex.write(d+t-1,-1),this.modifyCurveCounter(-1)));for(let t=e+1,n=this.getPathCount();t<=n;t++){let e=this.m_paths.read(t);this.m_paths.write(t,e+a)}this.notifyModifiedFlags(2001)}insertPoint2D(e,t,n){let i=this.getPathCount();e<0&&(e=i),(e>i||e<i&&t>this.getPathSize(e))&&r(``),e===i&&this.addPathPoint2D(null,0,!0);let a=this.m_pointCount;this.resizeImpl(this.m_pointCount+1),this.verifyAllStreamsAfterSizeChange();let o=this.getPathStart(e),s=t<0?this.getPathSize(e)+o:t+o,c=this.m_vertexAttributes.get(0);if(s===a)this.m_paths.write(e+1,a+1),c.writePoint2D(s*2,n);else{c.insert(2*s,n,2*a);for(let e=1,t=this.m_description.getAttributeCount();e<t;e++){let t=this.m_description.getSemantics(e),n=Y.getComponentCount(t),r=Y.getDefaultValue(t);this.m_vertexAttributes.get(e).insertRange(n*s,r,n,n*a)}this.m_curveData&&this.m_curveData.m_segmentFlags&&(this.m_curveData.m_segmentFlags.insertRange(s,1,1,a),this.m_curveData.m_segmentParamIndex.insertRange(s,-1,1,a));for(let t=e+1,n=i;t<=n;t++)this.m_paths.write(t,this.m_paths.read(t)+1)}this.m_curveData&&this.m_curveData.m_segmentFlags&&s>o&&this.isNonLinearSegment(s-1)&&(this.incCurveType(this.m_curveData.m_segmentFlags.read(s-1),-1),this.modifyCurveCounter(-1),this.m_curveData.m_segmentFlags.write(s-1,1),this.m_curveData.m_segmentParamIndex.write(s-1,-1)),this.notifyModifiedFlags(2001)}insertPoint(e,t,n){let i=this.getPathCount();e<0&&(e=i),(e>i||e<i&&t>this.getPathSize(e))&&r(``),e===i&&this.addPathPoint2D(null,0,!0);let a=this.m_pointCount;this.resizeImpl(this.m_pointCount+1),this.verifyAllStreamsAfterSizeChange();let o=this.getPathStart(e),s=t<0?this.getPathSize(e)+o:t+o;if(s===a)this.m_paths.write(e+1,a+1),this.setPointByValNoCurves(s,n);else{let t=n.getDescription();this.m_description!==t&&this.mergeVertexDescription(t);for(let e=0,r=this.m_description.getAttributeCount();e<r;e++){let r=this.m_description.getSemantics(e),i=Y.getComponentCount(r);if(t.hasAttribute(r))this.m_vertexAttributes.get(e).insertAttributes(i*s,n,r,i*a);else{let t=Y.getDefaultValue(r);this.m_vertexAttributes.get(e).insertRange(i*s,t,i,i*a)}}this.m_curveData&&this.m_curveData.m_segmentFlags&&(this.m_curveData.m_segmentFlags.insertRange(s,1,1,a),this.m_curveData.m_segmentParamIndex.insertRange(s,-1,1,a));for(let t=e+1,n=i;t<=n;t++)this.m_paths.write(t,this.m_paths.read(t)+1)}this.m_curveData&&this.m_curveData.m_segmentFlags&&s>o&&this.isNonLinearSegment(s-1)&&(this.incCurveType(this.m_curveData.m_segmentFlags.read(s-1),-1),this.modifyCurveCounter(-1),this.m_curveData.m_segmentFlags.write(s-1,1),this.m_curveData.m_segmentParamIndex.write(s-1,-1)),this.notifyModifiedFlags(2001)}removePointFromPath(e,t){let n=this.getPathCount();e<0&&(e=n-1),(e>=n||t>=this.getPathSize(e))&&r(`Multi_path.remove_point`);let i=this.getPathStart(e),a=this.isClosedPath(e);t<0&&(t=this.getPathSize(e)-1),t<0&&r(`Multi_path.remove_point`);let o=i+t;for(let e=0,t=this.m_description.getAttributeCount();e<t;e++)if(this.m_vertexAttributes.get(e)){let t=this.m_description.getSemantics(e),n=Y.getComponentCount(t);this.m_vertexAttributes.get(e).eraseRange(n*o,n,n*this.m_pointCount)}if(this.m_curveData&&this.m_curveData.m_segmentFlags){this.checkCompactSegmentParams();let t=0;if(o>i&&this.isNonLinearSegment(o-1))t+=1,this.incCurveType(this.m_curveData.m_segmentFlags.read(o-1),-1),this.m_curveData.m_segmentFlags.write(o-1,1),this.m_curveData.m_segmentParamIndex.write(o-1,-1);else{let n=this.getPathEnd(e);a&&i+1<n&&this.isNonLinearSegment(n-1)&&(this.incCurveType(this.m_curveData.m_segmentFlags.read(n-1),-1),this.m_curveData.m_segmentFlags.write(n-1,1),this.m_curveData.m_segmentParamIndex.write(n-1,-1),t+=1)}this.isNonLinearSegment(o)&&(this.incCurveType(this.m_curveData.m_segmentFlags.read(o),-1),t+=1),t>0&&this.modifyCurveCounter(-t),this.m_curveData.m_segmentFlags.eraseRange(o,1,this.m_pointCount),this.m_curveData.m_segmentParamIndex.eraseRange(o,1,this.m_pointCount)}for(let t=n;t>=e+1;t--){let e=this.m_paths.read(t);this.m_paths.write(t,e-1)}this.m_pointCount--,this.m_reservedPointCount--,this.notifyModifiedFlags(2001)}removePoint(e){let t;t=e<0?this.getPathCount()-1:this.getPathIndexFromPointIndex(e),this.removePointFromPath(t,e-this.getPathStart(t))}getNextSegmentType(e){return this.hasNonLinearSegments()?this.m_curveData.m_segmentFlags.read(e):1}getPrevSegmentTypeFromPath(e,t){if(!this.hasNonLinearSegments())return 1;let n=this.getPathStart(e);if(t>n)return this.m_curveData.m_segmentFlags.read(t-1);if(t===n){if(this.isClosedPath(e)){let t=this.getPathEnd(e);return this.m_curveData.m_segmentFlags.read(t-1)}return 1}c(``)}getNumberOfCurves(e){if(!this.hasNonLinearSegments())return 0;let t=0;for(let n=this.getPathStart(e),r=this.getPathEnd(e);n<r;n++)er.isNonLinearSegmentFlag(this.m_curveData.m_segmentFlags.read(n))&&++t;return t}getPathCount(){return this.m_paths?this.m_paths.size()-1:0}getPathSize(e){return this.m_paths.read(e+1)-this.m_paths.read(e)}getPathStart(e){return this.m_paths.read(e)}getPathEnd(e){return this.m_paths.read(e+1)}getPathIndexFromPointIndex(e,t=-1){t===-1&&(t=this.m_currentPathIndex);let n=this.getPathCount(),r=er.getPathIndexFromPointIndexImpl(this.m_paths,n,e,t);return this.m_currentPathIndex=r,r}startPathCoords(e,t){this.startPathPoint(new P({x:e,y:t}))}startPath(e){this.startPathPoint(new P({pt:e}))}startPath3D(e){this.startPathPoint(new P({x:e.x,y:e.y,z:e.z}))}startPath3DCoords(e,t,n){this.startPathPoint(new P({x:e,y:t,z:n}))}startPathPoint(e){e.isEmpty()&&t(``);let n=e.getDescription(),r;if(this.m_description!==n){this.mergeVertexDescription(n);let t=new P({vd:this.m_description});e.copyCommonAttributesTo(t),r=t}else r=e;this.m_bPathStarted?this.setPointByValNoCurves(this.m_pointCount-1,r):(this.insertPoint(-1,-1,r),this.m_bPathStarted=!0)}beforeNewSegmentHelper2(){this.m_paths=N(2),this.m_paths.write(0,0),this.m_pathFlags=ie(2,0),this.m_bPolygon&&this.m_pathFlags.write(0,1)}beforeNewSegmentHelper1(){this.m_paths===null?this.beforeNewSegmentHelper2():(this.m_paths.add(0),this.m_pathFlags.add(0),this.m_bPolygon&&this.m_pathFlags.write(this.m_pathFlags.size()-2,1))}beforeNewSegment(e){this.m_pointCount===0&&!this.m_bPathStarted&&this.startPathCoords(0,0);let t=this.m_pointCount,n=this.m_paths.size()-1,r=t+e;this.m_paths.write(n,r),this.resizeImpl(r),this.m_bPathStarted&&=!1}finishLineTo(){if(this.hasNonLinearSegments()){let e=this.m_curveData.m_segmentFlags.read(this.m_pointCount-1);e!==1&&(this.m_curveData.m_segmentFlags.write(this.m_pointCount-1,1),this.m_curveData.m_segmentParamIndex.write(this.m_pointCount-1,-1),this.modifyCurveCounter(-1),this.incCurveType(e,-1))}}lineToCoords(e,t){if(this.beforeNewSegment(1),this.m_description.getAttributeCount()===1)this.setXYCoordsNoCurves(this.m_pointCount-1,e,t);else{let n=T(),r=new P({vd:this.m_description,attribBuffer:n,initDefaultValues:!0});r.setXYCoords(e,t),this.setPointByValNoCurves(this.m_pointCount-1,r)}this.finishLineTo()}lineTo(e){this.lineToCoords(e.x,e.y)}lineTo3D(e){this.beforeNewSegment(1);let t=b(this.m_description,M()),n=T(),r=new P({vd:t,attribBuffer:n,initDefaultValues:!0});r.setXYZ(e),this.setPointByValNoCurves(this.m_pointCount-1,r),this.finishLineTo()}lineTo3DCoords(e,t,n){this.lineTo3D(new A(e,t,n))}lineToPoint(e){if(this.beforeNewSegment(1),this.m_description===e.getDescription())this.setPointByValNoCurves(this.m_pointCount-1,e);else{this.mergeVertexDescription(e.getDescription());let t=T(),n=new P({vd:this.m_description,attribBuffer:t,initDefaultValues:!1});e.copyCommonAttributesTo(n),this.setPointByValNoCurves(this.m_pointCount-1,n)}this.finishLineTo()}openPathAndDuplicateStartVertex(e){this.m_bPolygon&&c(``);let n=this.getPathCount();if(e>n&&t(``),!this.isClosedPath(e))return;this.m_pathFlags||c(``);let r=this.m_pointCount,i=this.getPathStart(e),a=this.getPathEnd(e);if(a-i!==0){this.resizeImpl(this.m_pointCount+1),this.verifyAllStreamsAfterSizeChange();for(let e=0,t=this.m_description.getAttributeCount();e<t;e++)if(this.m_vertexAttributes.get(e)){let t=this.m_description.getSemantics(e),n=Y.getComponentCount(t);this.m_vertexAttributes.get(e).insertRangeFromStream(n*a,this.m_vertexAttributes.get(e),n*i,n,!0,1,n*r)}for(let t=n;t>e;t--){let e=this.m_paths.read(t);this.m_paths.write(t,e+1)}this.hasNonLinearSegments()&&(this.m_curveData.m_segmentFlags.insertRange(a,1,1,r),this.m_curveData.m_segmentParamIndex.insertRange(a,-1,1,r)),this.m_pathFlags.clearBits(e,1)}}openPath(e){this.m_bPolygon&&c(``),e>this.getPathCount()&&t(``),this.m_pathFlags||c(``),this.m_pathFlags.clearBits(e,1)}isStrongPathStart(e){return!!(this.m_pathFlags.read(e)&2)}setStrongPathStart(e,t){t?this.m_pathFlags.setBits(e,2):this.m_pathFlags.clearBits(e,2)}isStrongPathEnd(e){return!!(this.m_pathFlags.read(e)&4)}setStrongPathEnd(e,t){t?this.m_pathFlags.setBits(e,4):this.m_pathFlags.clearBits(e,4)}clearStrongPathEnds(){for(let e=0,t=this.getPathCount();e<t;++e)this.m_pathFlags.clearBits(e,6)}openAllPathsAndDuplicateStartVertex(){if(this.m_bPolygon&&c(``),this.isEmpty())return;this.m_pathFlags||c(``);let e=0,t=this.getPathCount();for(let n=0;n<t;n++)this.isClosedPath(n)&&(this.getPathSize(n)>0?e++:this.m_pathFlags.clearBits(n,1));if(e===0)return;let n=this.hasNonLinearSegments(),r=0,i=this.getPathCount(),a=this.m_description.getAttributeCount(),o=Array(a),s=null,l=null;for(let t=0;t<i;++t){let i=this.getPathStart(t),c=this.getPathSize(t),u=this.isClosedPath(t);if(c>0){let t=i+r;for(let n=0;n<a;n++)if(this.m_vertexAttributes.get(n)){let r=this.m_description.getSemantics(n),a=Y.getComponentCount(r);if(!o[n]){let t=a*(this.m_pointCount+e),i=ee(r,t);o[n]=i}o[n].writeRange(t*a,c*a,this.m_vertexAttributes.get(n),i*a,!0,1),u&&o[n].writeRange((t+c)*a,a,this.m_vertexAttributes.get(n),i*a,!0,1)}if(n){if(s===null){let t=this.m_pointCount+e;s=ie(t),l=N(t)}s.writeRange(t,c,this.m_curveData.m_segmentFlags,i,!0,1),l.writeRange(t,c,this.m_curveData.m_segmentParamIndex,i,!0,1),u&&(s.write(t+c,1),l.write(t+c,-1))}}this.m_paths.write(t,i+r),u&&(this.m_pathFlags.clearBits(t,1),++r)}this.m_paths.write(i,this.m_pointCount+e),this.m_pathFlags.clearBits(i,1);for(let e=0;e<a;e++)this.m_vertexAttributes.get(e)&&this.m_vertexAttributes.set(e,o[e]);n&&(this.m_curveData.m_segmentFlags=s,this.m_curveData.m_segmentParamIndex=l),this.m_pointCount+=e,this.m_reservedPointCount>0&&(this.m_reservedPointCount=this.m_pointCount)}closePathWithLine(e){e===void 0&&(e=this.getPathCount()-1),this.throwIfEmpty(),(e<0||e>=this.getPathCount())&&t(`close_path_with_line`),e===this.getPathCount()-1&&(this.m_bPathStarted=!1);let n=this.m_pathFlags.read(e);if(n&1||this.m_pathFlags.write(e,n|1),this.m_curveData&&this.m_curveData.m_segmentFlags){let t=this.getPathEnd(e)-1,n=this.m_curveData.m_segmentFlags.read(t);n!==1&&(this.m_curveData.m_segmentFlags.write(t,1),this.m_curveData.m_segmentParamIndex.write(t,-1),this.incCurveType(n,-1),this.modifyCurveCounter(-1))}this.notifyModifiedFlags(2001)}closeLastPathWithSegment(e){this.closePathWithSegment(this.getPathCount()-1,e)}closePathWithSegment(e,n){if(this.throwIfEmpty(),(e<0||e>=this.getPathCount())&&t(`close_path_with_line`),n.getEndXY().equals(this.getXY(this.getPathStart(e)))||t(`close_path_with_segment: end point mismatch`),e===this.getPathCount()-1)this.m_bPathStarted=!1,this.addSegment(n,!1),--this.m_pointCount,this.m_paths.write(e+1,this.m_pointCount);else{this.mergeVertexDescription(n.getDescription());let r=n.getStartXY(),a=this.getPathEnd(e)-1;r.equals(this.getXY(a))||t(`close_path_with_segment: start point mismatch`);let o=n.getGeometryType();if(o===i.enumLine){this.closePathWithLine(e);return}{let e=Yn(n);this.initSegmentData(e);let t=$n.toSegType(o),r=this.m_curveData.m_segmentFlags.read(a);if(r!==t)this.m_curveData.m_segmentParamIndex.write(a,this.m_curveData.m_curveParamWritePoint),n.writeInBufferStream(this.m_curveData.m_segmentParams,this.m_curveData.m_curveParamWritePoint),this.m_curveData.m_curveParamWritePoint+=e,this.incCurveType(t,1),r===1?this.modifyCurveCounter(1):this.incCurveType(r,-1);else{let e=this.m_curveData.m_segmentParamIndex.read(a);n.writeInBufferStream(this.m_curveData.m_segmentParams,e)}this.m_curveData.m_segmentFlags.write(a,t)}}let r=this.m_pathFlags.read(e);r&1||this.m_pathFlags.write(e,r|1),this.notifyModifiedFlags(2001)}closeAllPaths(){if(this.m_bPolygon||this.isEmptyImpl())return;this.m_bPathStarted=!1;let e=!1;for(let t=0,n=this.m_paths.size()-1;t<n;t++){if(this.isClosedPath(t))continue;let n=this.m_pathFlags.read(t);this.m_pathFlags.write(t,n|1),e=!0}e&&this.notifyModifiedFlags(512)}isClosedPath(e){return!!(this.m_pathFlags.read(e)&1)}isClosedPathInXYPlane(e){if(this.isClosedPath(e))return!0;let t=this.getPathStart(e),n=this.getPathEnd(e)-1;if(t>n)return!1;let r=this.getXY(t),i=this.getXY(n);return r.isEqualPoint2D(i)}isClosedPathIn3D(e){return n(0),!1}hasNonLinearSegmentsPath(e){if(!this.hasNonLinearSegments())return!1;for(let t=this.getPathStart(e),n=this.getPathEnd(e);t<n;t++)if(er.isNonLinearSegmentFlag(this.m_curveData.m_segmentFlags.read(t)))return!0;return!1}isNonLinearSegment(e){return!(this.getSegmentFlags(e)&1)}addEnvelope(e,t){if(e.isEmpty())return;let n=this.m_pointCount===0;if(e instanceof K)this.startPathCoords(e.xmin,e.ymin),t?(this.lineToCoords(e.xmax,e.ymin),this.lineToCoords(e.xmax,e.ymax),this.lineToCoords(e.xmin,e.ymax)):(this.lineToCoords(e.xmin,e.ymax),this.lineToCoords(e.xmax,e.ymax),this.lineToCoords(e.xmax,e.ymin));else{let n=e.getDescription(),r=T(),i=new P({vd:n,attribBuffer:r,initDefaultValues:!1});for(let n=0;n<4;n++){let r=t?4-n-1:n;e.queryCornerByVal(r,i),n===0?this.startPathPoint(i):this.lineToPoint(i)}}this.closePathWithLine(),this.m_bPathStarted=!1,n&&!t&&(this.setDirtyFlagProtected(256,!1),this.m_bPolygon&&Math.min(e.width(),e.height())>0&&this.setIsSimple(3,0))}addPathFromClosedSegment(e,n){if(e.isClosed()||t(`add_path_from_closedSegment: segment must be closed`),n){let t=e.getReversed(),n=new P;t.queryStart(n),this.startPathPoint(n),this.closeLastPathWithSegment(t)}else{let t=new P;e.queryStart(t),this.startPathPoint(t),this.closeLastPathWithSegment(e)}}addSegment_(e,n){let r=e.getDescription();this.mergeVertexDescription(r);let a=T(),o=new P({vd:r,attribBuffer:a,initDefaultValues:!1}),s=e.getGeometryType();if(s===i.enumLine)(n||this.isEmptyImpl())&&(e.queryStart(o),this.startPathPoint(o)),e.queryEnd(o),this.lineToPoint(o);else{let r=!1;if((n||this.isEmptyImpl())&&(r=!0),r||e.getStartXY().equals(this.getXY(this.m_pointCount-1))||t(`add_segment: start point mismatch`),r&&(e.queryStart(o),this.startPathPoint(o)),this.beforeNewSegment(1),e.queryEnd(o),o.getDescription()===this.m_description)this.setPointByVal(this.m_pointCount-1,o);else{let e=T(),t=new P({vd:this.m_description,attribBuffer:e,initDefaultValues:!1});o.copyCommonAttributesTo(t),this.setPointByVal(this.m_pointCount-1,t)}let i=Yn(e);this.initSegmentData(i),this.m_curveData.m_segmentParamIndex.write(this.m_pointCount-2,this.m_curveData.m_curveParamWritePoint),e.writeInBufferStream(this.m_curveData.m_segmentParams,this.m_curveData.m_curveParamWritePoint),this.m_curveData.m_curveParamWritePoint+=i;let a=$n.toSegType(s);this.incCurveType(a,1),this.modifyCurveCounter(1),this.m_curveData.m_segmentFlags.write(this.m_pointCount-2,a)}}addSegment(e,t,n){n?t?this.addPathFromClosedSegment(e,!1):this.closeLastPathWithSegment(e):this.addSegment_(e,t)}interpolateAttributesRange(e,n,r,i){for(let n=e;n<r-1;n++)this.isClosedPath(n)&&t(`cannot interpolate across closed paths`);let a=this.m_description.getAttributeCount();if(a===1)return;let o=this.calculateSubLength2D(e,n,r,i);if(o!==0)for(let t=1;t<a;t++){let a=this.m_description.getSemantics(t);this.interpolateAttributesSemanticsImpl(a,e,n,r,i,o)}}interpolateAttributesSemantics(e,n,r,i,a){if(e===0)return;this.hasAttribute(e)||t(`does not have the given attribute`),Y.getInterpolation(e)===2&&t(`angular interpolation`);for(let e=n;e<i-1;e++)this.isClosedPath(e)&&t(`cannot interpolate across closed paths`);let o=this.calculateSubLength2D(n,r,i,a);o!==0&&this.interpolateAttributesSemanticsImpl(e,n,r,i,a,o)}interpolateAttributesPath(e,t,n){let r=this.m_description.getAttributeCount();if(r===1||t===n)return;let i=this.calculatePathSubLength2D(e,t,n);for(let a=1;a<r;a++){let r=this.m_description.getSemantics(a);this.interpolateAttributesSemanticsPathImpl(r,e,t,n,i)}}interpolateAttributesSemanticsPath(e,n,r,i){if(e===0)return;this.hasAttribute(e)||t(`does not have the given attribute`),Y.getInterpolation(e)===2&&t(`angular interpolation`);let a=this.calculatePathSubLength2D(n,r,i);a!==0&&this.interpolateAttributesSemanticsPathImpl(e,n,r,i,a)}interpolateAttributesSemanticsImpl(e,t,n,r,i,a){let o=this.querySegmentIterator(),s=this.getPathStart(t)+n,c=this.getPathStart(r)+i,l=Y.getComponentCount(e),u=I(Y.maxComponentCount(),NaN);this.queryAttributeAsDbl(e,s,u,l);let d=I(Y.maxComponentCount(),NaN);this.queryAttributeAsDbl(e,c,d,l);let f=I(Y.maxComponentCount(),NaN);me(f,u,0,0,l);let p=0,m=Y.getDefaultValue(e),h=Y.getInterpolation(e);o.resetToVertex(s,t);do if(o.hasNextSegment()){if(o.nextSegment(),o.getStartPointIndex()===c)return;this.setAttributeFromArray(e,o.getStartPointIndex(),f,l),o.previousSegment();do{let t=o.nextSegment();if(o.getEndPointIndex()===c)return;let n=t.calculateLength2D();p+=n;let r=p/a;pe(h,u,d,f,0,l,r,m),o.isClosingSegment()||this.setAttributeFromArray(e,o.getEndPointIndex(),f,l)}while(o.hasNextSegment())}while(o.nextPath())}interpolateAttributesSemanticsPathImpl(e,t,r,i,a){n(e!==0);let o=this.querySegmentIterator(),s=Y.getInterpolation(e),c=this.getPathStart(t)+r,l=this.getPathStart(t)+i;if(l===c)return;let u=Y.getComponentCount(e),d=I(Y.maxComponentCount(),NaN);this.queryAttributeAsDbl(e,c,d,u);let f=I(Y.maxComponentCount(),NaN);this.queryAttributeAsDbl(e,l,f,u);let p=new Ee(0);o.resetToVertex(c,t),o.setCirculator(this.isClosedPath(t));let m=Y.getDefaultValue(e),h=I(Y.maxComponentCount(),NaN);me(h,d,0,0,u);let g=a===0,_=.5;do{let t=o.nextSegment();if(this.setAttributeFromArrayNoCurves(e,o.getStartPointIndex(),h,u),!g){let e=t.calculateLength2D();p.pe(e),_=p.getResult()/a}pe(s,d,f,h,0,u,_,m)}while(o.getEndPointIndex()!==l)}querySegment(e,n,r){let i=this.getPathIndexFromPointIndex(e),a=e-this.getPathStart(i);a>=this.getSegmentCountPath(i)&&t(`get_segment`),this.getSegmentFromPath(i,a,n,r)}getSegment(e,t){let n=new this.m_segmentBufferCTor;return this.getSegmentBuffer(e,n,t),n.releaseSegment()}getSegmentType(e){let n=this.getPathIndexFromPointIndex(e),r=e-this.getPathStart(n);return r>=this.getSegmentCountPath(n)&&t(`get_segment`),this.getSegmentTypeFromPath(n,r)}getSegmentFromPath(e,t,n,r){let i=this.getPathStart(e)+t,a=this.getSegmentFlagsStreamRef(),o=1;switch(a&&(o=a.read(i)&31),o){case 1:n.createLine();break;case 2:n.createCubicBezier();break;case 4:n.createEllipticArc();break;case 8:n.createQuadraticRationalBezier();break;case 16:n.createQuadraticBezier();break;default:c(``)}let s=n.get(),l=null;r?(l=v(),s.assignVertexDescription(l)):s.assignVertexDescription(this.m_description);let u;if(u=i===this.getPathEnd(e)-1&&this.isClosedPath(e)?this.getPathStart(e):i+1,Zt(s,this.getXY(i)),$t(s,this.getXY(u)),!r)for(let e=1,t=this.m_description.getAttributeCount();e<t;e++){let t=this.m_description.getSemantics(e),n=Y.getComponentCount(t);for(let e=0;e<n;e++){let n=this.getAttributeAsDbl(t,i,e);s.setStartAttribute(t,e,n);let r=this.getAttributeAsDbl(t,u,e);s.setEndAttribute(t,e,r)}}if(er.isNonLinearSegmentFlag(o)){let e=this.m_curveData.m_segmentParamIndex.read(i);s.readFromBufferStream(this.m_curveData.m_segmentParams,e)}}replaceLinearEllipticalArcsWithTrueLines(){if(!this.hasNonLinearSegments()||this.m_curveData.m_arcCount===0)return!1;let e=!1;for(let t=0,n=this.getPointCount();t<n;t++)if(this.m_curveData.m_segmentFlags.read(t)===4){let n=this.m_curveData.m_segmentParamIndex.read(t);Jn(this.m_curveData.m_segmentParams,n).isNAN()&&(this.m_curveData.m_segmentFlags.write(t,1),this.m_curveData.m_segmentParamIndex.write(t,-1),this.incCurveType(4,-1),this.modifyCurveCounter(-1),e=!0)}return e&&this.checkCompactSegmentParams(),e}queryPointAlongPath(e,n,r,i=!1){let a={iSegment:-1},o=i?a:{tSegment:0};if(r.setEmpty(),this.isEmpty()||((e<0||e>=this.getPathCount())&&t(`query_point_along_path`),n<0))return a;let s=this.getPathSize(e);if(s===0)return a;if(s===1)return this.getPointByVal(this.getPathStart(e),r),o.tSegment=0,a.iSegment=this.getPathStart(e),a;let c=this.querySegmentIteratorAtVertex(this.getPathStart(e)),l=new Ee(0);for(;c.hasNextSegment();){let e=c.nextSegment(),t=e.calculateLength2D(),i=l.getResult();if(l.add(t),l.getResult()>=n){let s=n-i;s>t&&(s=t);let l=e.lengthToT(s);return e.queryCoord(l,r),o.tSegment=l,a.iSegment=c.getStartPointIndex(),a}}if(this.isClosedPath(e)){let t=this.getPathStart(e);return this.getPointByVal(t,r),o.tSegment=1,a.iSegment=this.getPathEnd(e)-1,a}{let t=this.getPathEnd(e)-1;return this.getPointByVal(t,r),this.getPathSize(e)>1?(o.tSegment=1,a.iSegment=this.getPathEnd(e)-2,a):(o.tSegment=0,a.iSegment=this.getPathStart(e),a)}}queryPointsAlongPath(e,n,r,i,a,o){{let e=0;for(let s=0;s<n;++s)i&&i[s].setEmpty(),a&&(a[s]=-1),o&&(o[s]=0),e>r[s]&&t(`query_points_along`),e=r[s]}let s=this.getPathSize(e);if(n===0||s===0)return 0;if(s===1){let t=this.getPathStart(e);return i&&this.getPointByVal(t,i[0]),o&&(o[0]=0),a&&(a[0]=t),1}let c=this.getPathStart(e),l=new Ee(0),u=this.querySegmentIteratorAtVertex(c),d=0,f=0,p=r[d];for(;u.hasNextSegment();){let e=u.nextSegment(),t=e.calculateLength2D(),s=l.getResult();for(l.add(t);l.getResult()>=p;){let c=p-s;c>t&&(c=t);let l=e.lengthToT(c);if(i&&e.queryCoord(l,i[f]),o&&(o[f]=l),a&&(a[f]=u.getStartPointIndex()),f++,d++,p=r[d],d===n)return f}}if(this.isClosedPath(e)){let t=this.getPathStart(e);i&&this.getPointByVal(t,i[f]),o&&(o[f]=0),a&&(a[f]=t),f++}else if(this.getPathSize(e)>1){let t=this.getPathEnd(e)-2;i&&this.getPointByVal(t+1,i[f]),o&&(o[f]=1),a&&(a[f]=t),f++}return f}queryPointsAlong(e,n,r,i,a){{let o=0;for(let s=0;s<e;++s)r&&r[s].setEmpty(),i&&(i[s]=-1),a&&(a[s]=0),o>n[s]&&t(`query_points_along`),o=n[s]}if(e===0)return 0;let o=new Ee(0),s=this.querySegmentIterator(),c=-1,l=0,u=0,d=n[l];for(;s.nextPath();)for(;s.hasNextSegment();){c=s.getPathIndex();let t=s.nextSegment(),f=t.calculateLength2D(),p=o.getResult();for(o.add(f);o.getResult()>=d;){let o=d-p;o>f&&(o=f);let c=t.lengthToT(o);if(r&&t.queryCoord(c,r[u]),a&&(a[u]=c),i&&(i[u]=s.getStartPointIndex()),u++,l++,d=n[l],l===e)return u}}if(c<0)return 0;if(this.isClosedPath(c)){let e=this.getPathStart(c);r&&this.getPointByVal(e,r[u]),a&&(a[u]=0),i&&(i[u]=e),u++}else if(this.getPathSize(c)>1){let e=this.getPathEnd(c)-2;r&&this.getPointByVal(e+1,r[u]),a&&(a[u]=1),i&&(i[u]=e),u++}return u}querySegmentIterator(){return new Wn({parent:this})}querySegmentIteratorAtVertex(e){return new Wn({parent:this,pointIndex:e})}queryPathEnvelope(e,t){this.queryPathEnvelopeImpl(e,t,!0)}queryLoosePathEnvelope(e,t){this.queryPathEnvelopeImpl(e,t,!1)}queryPathEnvelopeImpl(e,r,i){if(r instanceof k&&n(0,`not implemented for Envelope`),r instanceof w&&n(0,`not implemented for Envelope3D`),(e>=this.getPathCount()||e<0)&&t(``),this.isEmpty()){r.setEmpty();return}let a=this.getAttributeStreamRef(0),o=K.constructEmpty();o.setEmpty();for(let t=this.getPathStart(e)*2,r=2*this.getPathEnd(e);t<r;){let e=r-t;n(!(e&1)),o.mergePointsInterleaved(a,t/2,e/2),t+=e}if(r.setCoords({env2D:o}),this.hasNonLinearSegmentsPath(e)){let t=this.querySegmentIterator();if(t.resetToPath(e),t.nextPath())for(;t.hasNextSegment();){let e=t.nextCurve();if(e){let t=K.constructEmpty();i?e.queryEnvelope(t):e.queryLooseEnvelope(t),r.mergeEnvelope2D(t)}else break}else n(0)}}checkCompactSegmentParams(){if(!this.m_curveData||this.m_curveData.m_segmentParams===null||this.m_curveData.m_segmentParams.size()<=this.m_vertexAttributes.get(0).size())return!1;let e=Xn(4)*this.m_curveData.m_arcCount+Xn(2)*this.m_curveData.m_bezierCount+Xn(8)*this.m_curveData.m_rbezier2Count+Xn(16)*this.m_curveData.m_bezier2Count;return this.m_curveData.m_segmentParams.size()>Math.max(3*e>>1,10)?(this.forceCompactSegmentParams(),!0):(this.m_pointCount===0&&(this.m_curveData.m_curveParamWritePoint=0),!1)}forceCompactSegmentParams(){let e=0;for(let t=0,n=this.getPointCount();t<n;t++){let n=this.m_curveData.m_segmentFlags.read(t);if(er.isNonLinearSegmentFlag(n)){let t=Xn(n);e+=t}}let t=ae(e),n=0;for(let e=0,r=this.getPointCount();e<r;e++){let r=this.m_curveData.m_segmentFlags.read(e);if(er.isNonLinearSegmentFlag(r)){let i=this.m_curveData.m_segmentParamIndex.read(e);this.m_curveData.m_segmentParamIndex.write(e,n);let a=Xn(r);for(let e=0;e<a;e++)t.write(n,this.m_curveData.m_segmentParams.read(i)),n++,i++}}this.m_curveData.m_segmentParams=t,this.m_curveData.m_curveParamWritePoint=n}setEmpty(){this.m_curveData&&=(this.removeAllCurvesFromGlobalCounter(),null),this.m_bPathStarted=!1,this.m_paths=null,this.m_pathFlags=null,this.setEmptyImpl()}applyTransformation(e){this.applyTransformationToPath(e,-1)}applyTransformation3D(e){n(0)}getImpl(){return this}reserve(e){this.reserveImpl(e),e>0&&!this.m_paths&&(this.m_paths=N(0),this.m_pathFlags=ie(0),this.m_paths.reserve(2),this.m_pathFlags.reserve(2),this.m_paths.resize(1,0),this.m_pathFlags.resize(1,+!!this.m_bPolygon))}reserveParts(e,t){if(this.reserveImpl(e),t>0){this.m_paths?(this.m_paths.reserve(t+1),this.m_pathFlags.reserve(t+1)):(this.m_paths=N(0),this.m_pathFlags=ie(0),this.m_paths.reserve(t+1),this.m_pathFlags.reserve(t+1),this.m_paths.resize(1,0),this.m_pathFlags.resize(1,+!!this.m_bPolygon));return}}clone(){let e=this.createInstance();return this.copyTo(e),e}queryLimitedSegmentIterator(e){return new tr(this,e)}getPathStreamRef(){return this.throwIfEmpty(),this.m_paths}setPathStreamRef(e){this.m_paths=e}getSegmentFlagsStreamRef(){return this.throwIfEmpty(),this.m_curveData==null?null:this.m_curveData.m_segmentFlags}getPathFlagsStreamRef(){return this.throwIfEmpty(),this.m_pathFlags}setPathFlagsStreamRef(e){this.m_pathFlags=e}getSegmentIndexStreamRef(){return this.throwIfEmpty(),this.m_curveData===null?null:this.m_curveData.m_segmentParamIndex}getSegmentDataStreamRef(){return this.throwIfEmpty(),this.m_curveData===null?null:this.m_curveData.m_segmentParams}setSegmentData(e,t,n,r){this.m_curveData||=new $n,this.m_curveData.m_segmentFlags=n,this.m_curveData.m_segmentParams=t,this.m_curveData.m_segmentParamIndex=e,this.m_curveData.m_curveParamWritePoint=r}static getPathIndexFromPointIndexImpl(e,t,n,r){if(r>=0&&r<t){if(n>=e.read(r)){if(n<e.read(r+1))return r;r++}else r--;if(r>=0&&r<t&&n>=e.read(r)&&n<e.read(r+1))return r}if(t<5){for(let r=0;r<t;r++)if(n<e.read(r+1))return r;d(``)}let i=0,a=t-1;for(;a>i;){let t=i+(a-i>>1);if(n<e.read(t))a=t-1;else if(n>=e.read(t+1))i=t+1;else return t}return i}getHighestPointIndex(e){n(e>=0&&e<this.getPathCount());let t=this.getAttributeStreamRef(0),r=this.getPathEnd(e),i=this.getPathStart(e),a=-1,o=new L;o.y=-1/0,o.x=-1/0;for(let e=i+0;e<r;e++){let n=t.readPoint2D(2*e);o.compare(n)===-1&&(a=e,o.setCoordsPoint2D(n))}return a}applyTransformationToPath(e,n){if(n>=this.getPathCount()&&t(`apply_transformation`),this.isEmpty()||e.isIdentity())return;let r=this.m_vertexAttributes.get(0);if(!(n<0?this.hasNonLinearSegments():this.hasNonLinearSegmentsPath(n))){let t,i;n<0?(t=0,i=this.m_pointCount):(t=this.getPathStart(n),i=this.getPathEnd(n)),r.applyTransformation(e,t*2,i-t),this.notifyModifiedFlags(2001);return}let i=new this.m_segmentBufferCTor,a=this.getPathCount(),o=n<0?0:n;do{let t=this.getPathStart(o),a=this.getPathEnd(o),s=this.isClosedPath(o),c=r.readPoint2D(t*2);if(!this.hasNonLinearSegmentsPath(o)){r.applyTransformation(e,t*2,a-t);continue}let l=L.getNAN();for(let n=t;n<a;++n){if((this.m_curveData.m_segmentFlags.read(n)&31)!=1){let o=s&&n+1===a;o&&r.writePoint2D(2*t,c),this.getSegmentBuffer(n,i,!0),i.get().applyTransformation(e);let l=this.m_curveData.m_segmentParamIndex.read(n);i.get().writeInBufferStream(this.m_curveData.m_segmentParams,l),r.writePoint2D(2*n,i.get().getStartXY()),o&&r.writePoint2D(2*t,i.get().getEndXY());continue}let o=2*n;r.queryPoint2D(o,l),e.transformInPlace(l),r.writePoint2D(o,l)}if(o===n)break}while(++o<a);this.notifyModifiedFlags(2001)}calculateSubLength2D(e,t,n,r){let i=this.getPathStart(e)+t,a=this.getPathStart(n)+r;(a<i||i<0||a>this.getPointCount()-1)&&f(``);let o=this.querySegmentIterator(),s=0;o.resetToVertex(i,e);do{for(;o.hasNextSegment();){let e=o.nextSegment();if(o.getStartPointIndex()===a)break;let t=e.calculateLength2D();s+=t}if(o.getStartPointIndex()===a)break}while(o.nextPath());return s}calculatePathSubLength2D(e,n,r){let i=this.getPathStart(e)+n,a=this.getPathStart(e)+r;(i<0||a>this.getPointCount()-1)&&f(``);let o=this.querySegmentIterator();if(i>a&&(this.isClosedPath(e)||t(`cannot iterate across an open path`),o.setCirculator(!0)),i===a)return 0;let s=0,c=0;o.resetToVertex(i,e);do c+=s,s=o.nextSegment().calculateLength2D();while(o.getStartPointIndex()!==a);return c}calculateEnvelope2D(e){return this.updateXYImpl(e)}updateXYImpl(e){let t=super.updateXYImpl(e);if(this.hasNonLinearSegments()){let n=K.constructEmpty(),r=this.querySegmentIterator();for(;r.nextPath();)for(;r.hasNextSegment();){let i=r.nextCurve();if(i)e?i.queryEnvelope(n):i.queryLooseEnvelope(n),t.mergeEnvelope2D(n);else break}}return t}notifyModifiedAllImpl(){this.m_pointCount=this.m_paths===null||!this.m_paths.size()?0:this.m_paths.read(this.m_paths.size()-1)}setDirtyOGCFlags(e){this.setDirtyFlagProtected(16,e)}hasDirtyOGCStartFlags(){return this.hasDirtyFlag(16)}setDirtyRingAreas2D(e){this.setDirtyFlagProtected(1024,e)}hasDirtyRingAreas2D(){return this.hasDirtyFlag(1024)}static isNonLinearSegmentFlag(e){return!(e&1)}addAndExplicitlyOpenAllPaths(e,n){this===e&&t(`Multi_path_impl::add`);let r=this.getPathCount();for(let t=0,i=e.getPathCount();t<i;t++)this.addPath(e,t,!n),this.openPathAndDuplicateStartVertex(r),r++}getSegmentFlags(e){return this.m_curveData!==null&&this.m_curveData.m_segmentFlags!==null?this.m_curveData.m_segmentFlags.read(e):1}getSegmentBuffer(e,n,r){let i=this.getPathIndexFromPointIndex(e),a=e-this.getPathStart(i);a>=this.getSegmentCountPath(i)&&t(`getSegmentBuffer`),this.getSegmentFromPath(i,a,n,r)}getSegmentTypeFromPath(e,t){let n=this.getPathStart(e)+t,r=this.getSegmentFlagsStreamRef(),a=1;switch(r&&(a=r.read(n)&31),a){case 1:return i.enumLine;case 2:return i.enumBezier;case 4:return i.enumEllipticArc;case 8:return i.enumRationalBezier2;case 16:return i.enumBezier2;default:c(``)}}ensureXYMonotoneSegments(){if(!this.m_curveData)return!1;let e=!1;for(let t=0,n=this.getPathCount();t<n;t++){let n=this.getPathStart(t),r=this.getPathEnd(t),i=r-n;for(let t=n;t<r;t++){let r=this.m_curveData.m_segmentFlags.read(t)&31;if(r===1)continue;r!==2&&s(`ensure_xy_monotone_segments`);let a=(t-n+1)%i+n,o=this.m_curveData.m_segmentParamIndex.read(t),c=U(L,4);c[0]=this.getXY(t),c[3]=this.getXY(a),c[1].x=this.m_curveData.m_segmentParams.read(o),c[1].y=this.m_curveData.m_segmentParams.read(o+1),c[2].x=this.m_curveData.m_segmentParams.read(o+2),c[2].y=this.m_curveData.m_segmentParams.read(o+3),Ut(c)&&(e=!0,this.m_curveData.m_segmentParams.write(o,c[1].x),this.m_curveData.m_segmentParams.write(o+1,c[1].y),this.m_curveData.m_segmentParams.write(o+2,c[2].x),this.m_curveData.m_segmentParams.write(o+3,c[2].y))}}return e&&this.notifyModifiedFlags(2001),e}buildRasterizedGeometryAccelerator(e,t){return!1}buildQuadTreeAccelerator(e){if(this.m_accelerators||=new Gn,this.m_accelerators.getQuadTree()!==null)return!0;this.ensureUniqueAccelerators(),this.m_accelerators.setQuadTree(null);let t=oe(this);return this.m_accelerators.setQuadTree(t),!0}buildQuadTreeForPathsAccelerator(e){if(this.m_accelerators||=new Gn,this.m_accelerators.getQuadTreeForPaths()!==null)return!0;this.ensureUniqueAccelerators(),this.m_accelerators.setQuadTreeForPaths(null);let t=se(this);return this.m_accelerators.setQuadTreeForPaths(t),!0}updateCurveCounter(e){this.modifyCurveCounter(e-this.getCurveCount())}removeAllCurvesFromGlobalCounter(){this.m_curveData&&(er.st_totalCurveCount-=this.m_curveData.m_curveCount,this.m_curveData.m_curveCount=0,this.m_curveData.m_bezierCount=0,this.m_curveData.m_arcCount=0,this.m_curveData.m_bezier2Count=0,this.m_curveData.m_rbezier2Count=0,this.m_curveData.m_curveParamWritePoint=0)}modifyCurveCounter(e){e&&(this.m_curveData||=new $n,er.st_totalCurveCount+=e,this.m_curveData.m_curveCount+=e)}getCurveCount(){return this.m_curveData?this.m_curveData.m_curveCount:0}incCurveType(e,t){this.m_curveData||=new $n,e&2?this.m_curveData.m_bezierCount+=t:e&4?this.m_curveData.m_arcCount+=t:e&8?this.m_curveData.m_rbezier2Count+=t:e&16&&(this.m_curveData.m_bezier2Count+=t)}getCurveWritePoint(){return this.m_curveData===null?0:this.m_curveData.m_curveParamWritePoint}initSegmentData(e){this.m_curveData===null&&(this.m_curveData=new $n);let t=this.m_reservedPointCount>0?this.m_reservedPointCount:this.m_pointCount;this.m_curveData.m_segmentParamIndex===null&&(this.m_curveData.m_segmentFlags=ie(t,1),this.m_curveData.m_segmentParamIndex=N(t,-1));let n=this.m_curveData.m_curveParamWritePoint+e;this.m_curveData.m_segmentParams===null?this.m_curveData.m_segmentParams=ae(n):n!==this.m_curveData.m_segmentParams.size()&&this.m_curveData.m_segmentParams.resize(n,0),this.m_curveData.m_segmentFlags.size()<t&&(this.m_curveData.m_segmentFlags.resize(t,1),this.m_curveData.m_segmentParamIndex.resize(t,-1))}updateCurveWritePoint(e){this.m_curveData===null&&(this.m_curveData=new $n),this.m_curveData.m_curveParamWritePoint=e}static st_totalCurveCount=0;updateOGCFlagsHelper(){let e=this.getPathCount();if(e===0)return;let t=this.m_pathFlags,n=0;for(let r=0;r<e;r++){let e=this.m_cachedRingAreas2D.read(r);n===0&&(n=Oe(e)),e*n>0||n===0?t.setBits(r,8):t.clearBits(r,8)}}updateOGCFlagsProtected(){this.hasDirtyFlag(16)&&(this.updateRingAreas2DProtected(),this.updateOGCFlagsHelper(),this.setDirtyFlagProtected(16,!1))}replaceSegment(e,r,i){(e<0||e>=this.getPointCount())&&t(`Multi_path_impl.replace_segment`),n(r.isCurve());let a=this.getPathIndexFromPointIndex(e),o=this.getPathStart(a),s=(e-o+1)%this.getPathSize(a)+o;{let t=this.getXY(e),i=this.getXY(s),a=!t.isEqualPoint2D(r.getStartXY())||!i.isEqualPoint2D(r.getEndXY());n(!a)}this.replaceSegmentImpl(e,s,r,i)}replaceSegmentImpl(e,t,r,i){let a=r.getDescription();this.mergeVertexDescription(a);let o=I(32,NaN),s=new P({vd:a,attribBuffer:o,initDefaultValues:!1}),c=this.m_curveData===null?1:this.m_curveData.m_segmentFlags.read(e)&31,l=Xn(c),u=Yn(r),d=!1,f;l>=u?(n(this.m_curveData!==null),d=!0,f=this.m_curveData.m_segmentParamIndex.read(e)):(this.initSegmentData(u),d=!1,f=this.m_curveData.m_curveParamWritePoint);let p=r.getGeometryType(),m=$n.toSegType(p);i||(r.queryStart(s),this.setPointByValNoCurves(e,s),r.queryEnd(s),this.setPointByValNoCurves(t,s)),this.m_curveData.m_segmentParamIndex.write(e,m===1?-1:f),this.m_curveData.m_segmentFlags.write(e,m),m!==1&&r.writeInBufferStream(this.m_curveData.m_segmentParams,f),d||(this.m_curveData.m_curveParamWritePoint+=u),c!==m&&(this.incCurveType(c,-1),this.incCurveType(m,1),this.modifyCurveCounter(c===1?1:-1))}setAttributeImpl(e,n,r){if(this.addAttribute(e),!this.isEmpty()){if(this.hasNonLinearSegments()&&e===0){(n<0||n>1)&&t(``);let e=new bt,i=n===0?r:0,a=n===0?0:1;e.setShiftCoords(i,a),n===0?e.xx=0:e.yy=0,this.applyTransformation(e)}else super.setAttributeImpl(e,n,r)}}toFlatGeometry(){let e=this.m_bPolygon?`polygon`:`polyline`,t=this.getPathCount(),n=this.m_paths?this.m_paths.getArray():new Int32Array,r=this.m_paths?this.m_pathFlags.getArray():new Int8Array,i,a,o,s=0,c=0;if(this.m_curveData){let{m_segmentFlags:e,m_segmentParamIndex:t,m_segmentParams:n}=this.m_curveData;i=e?.getArray()??new Int8Array,a=t?.getArray()??new Int32Array,o=n?.getArray()??new Float64Array,s=this.m_curveData.m_arcCount,c=this.m_curveData.m_bezierCount}return{type:e,...this.exportVertexAttributes(),partCount:t,partOffsets:n,partFlags:r,segmentFlags:i,segmentIndices:a,segmentParams:o,segmentCountArc:s,segmentCountBezier:c}}m_cachedLength2D;m_cachedArea2D;m_currentPathIndex;m_cachedRingAreas2D=null;m_paths=null;m_pathFlags=null;m_curveData=null;m_segmentBufferCTor}class tr{constructor(e,t){this.m_extentOfInterest=new K(t),this.m_bfirst=!0,this.m_prevIndex=-100,this.m_parent=e}nextSegment(){return this.m_bfirst&&this.prepare_(),this.m_quadTree?this.nextSegmentQt():this.nextSegmentNoQt()}getPathIndex(){return this.m_segIter.getPathIndex()}getStartPointIndex(){return this.m_segIter.getStartPointIndex()}getEndPointIndex(){return this.m_segIter.getEndPointIndex()}isClosingSegment(){return this.m_segIter.isClosingSegment()}isPathClosed(){return this.m_segIter.isPathClosed()}m_extentOfInterest;m_bfirst;m_prevIndex;m_parent;m_segIter=null;m_quadTree=null;m_qtIter=null;prepare_(){let e=this.m_parent.getAccelerators();e&&(this.m_quadTree=e.getQuadTree(),this.m_quadTree&&(this.m_qtIter=this.m_quadTree.getSortedIterator(this.m_extentOfInterest,0))),this.m_segIter=this.m_parent.querySegmentIterator()}nextSegmentQt(){this.m_bfirst=!1;let e=this.m_qtIter.next();if(e===-1)return null;let t=this.m_quadTree.getElement(e);return(t!==this.m_prevIndex+1||this.m_segIter.isLastSegmentInPath())&&(this.m_segIter.resetToVertex(t,this.m_segIter.getPathIndex()),this.m_prevIndex=t),this.m_segIter.nextSegment()}nextSegmentNoQt(){do{if(!this.m_bfirst&&this.m_segIter.hasNextSegment()){let e=this.m_segIter.nextSegment(),t=K.constructEmpty();if(e.queryLooseEnvelope(t),!t.isIntersecting(this.m_extentOfInterest))continue;return e}if(this.m_bfirst=!1,!this.m_segIter.nextPath())return null}while(1)}}class nr extends er{static type=i.enumPolyline;constructor(e){e?e.vd?(super({vd:e.vd,bPolygon:!1}),this.m_segmentBufferCTor=$):e.copy?(super({vd:e.copy.getDescription(),bPolygon:!1}),this.m_segmentBufferCTor=$,e.copy.copyTo(this)):e.move?(super({move:e.move}),this.m_segmentBufferCTor=$):e.start?(super({vd:e.start.getDescription(),bPolygon:!1}),this.m_segmentBufferCTor=$,this.startPathPoint(e.start),this.lineToPoint(e.end)):e.path?(super({bPolygon:!1}),this.m_segmentBufferCTor=$,this.addPathPoint2D(e.path,e.pointCount,e.bForward)):c(`bad constructor arg`):(super({bPolygon:!1}),this.m_segmentBufferCTor=$)}getBoundary(){return ar(this)}assignCopy(e){return this!==e&&e.copyTo(this),this}assignMove(e){return e.copyTo(this),this}getGeometryType(){return nr.type}getDimension(){return 1}createInstance(){return new nr({vd:this.getDescription()})}equals(e,t){return this.equalsBase(e,t)}}var rr=i;function ir(e,t){if(e.isEmpty())return!1;let n=e.getGeometryType();if(n===rr.enumPolygon)return e.calculateArea2D()!==0;if(n===rr.enumPolyline)return or(e.getImpl(),t,!0).bNotEmpty;if(n===rr.enumEnvelope)return!0;if(p(n))return!!e.isClosed();if(m(n))return!1;if(n===rr.enumGeometryCollection){let n=e;for(let e=0,r=n.getGeometryCount();e<r;e++)if(ir(n.getGeometry(e),t))return!0;return!1}s(``)}function ar(e,t){let n=e.getGeometryType();if(n===rr.enumPolygon){let t=new nr({vd:e.getDescription()});return e.isEmpty()||e.copyToUnchecked(t),t}if(n===rr.enumPolyline)return or(e.getImpl(),t,!1).boundary;if(n===rr.enumEnvelope){let t=new nr({vd:e.getDescription()});return e.isEmpty()||t.addEnvelope(e,!1),t}if(p(n)){let t=new Pt({vd:e.getDescription()});if(!e.isEmpty()&&!e.isClosed()){let n=new P;t.reserve(2),e.queryStart(n),t.add(n),e.queryEnd(n),t.add(n)}return t}if(n===rr.enumGeometryCollection){let n=e,r=null;for(let i=0,a=n.getGeometryCount();i<a;i++){let a=ar(n.getGeometry(i),t);if(a!==null){r===null&&(r=e.createInstance());let t=a;r.addGeometry(t)}}return r}if(m(n))return new P({vd:e.getDescription()});s(``)}function or(e,t,n){let r=e,i=null;if(n||(i=new Pt({vd:r.getDescription()})),!r.isEmpty()){let e=new ce(0);for(let t=0,n=r.getPathCount();t<n;t++)if(r.getPathSize(t)>0&&!r.isClosedPathInXYPlane(t)){let n=r.getPathStart(t);e.add(n);let i=r.getPathEnd(t)-1;e.add(i)}if(e.size()>0){let t=new le,a=r.getAttributeStreamRef(0);t.sort(e,0,e.size(),{userSort(e,t,n){let r=L.getNAN(),i=L.getNAN();n.sort(e,t,(e,t)=>(a.queryPoint2D(2*e,r),a.queryPoint2D(2*t,i),r.compare(i)))},getValue(e){return a.read(2*e+1)}});let o=a.readPoint2D(2*e.read(0)),s=0,c=1,l=new P;for(let t=1,r=e.size();t<r;t++){let r=a.readPoint2D(2*e.read(t));if(r.isEqualPoint2D(o))e.read(s)>e.read(t)?(e.write(s,ze()),s=t):e.write(t,ze()),c++;else{if(!(c&1))e.write(s,ze());else if(n)return{bNotEmpty:!0,boundary:new Pt({})};o=r,s=t,c=1}}if(!(c&1))e.write(s,ze());else if(n)return{bNotEmpty:!0,boundary:new Pt({})};if(!n){e.sort(0,e.size());for(let t=0,n=e.size();t<n&&e.read(t)!==ze();t++)r.getPointByVal(e.read(t),l),i.add(l)}}}return n?{bNotEmpty:!1,boundary:new Pt({})}:{bNotEmpty:!1,boundary:i}}function sr(e,t,r,i){let a=4*Te()*(Math.abs(t.vmin)+Math.abs(t.vmax)),o=Te();if(e.getMaxDerivative()===1){n(r>0);let o=mr(e,0,t,Te(),a);return i[0]=o.root,o.cRoots}let s,c=[],l=new F(t.vmin-a,t.vmax+a);c.push(new L(l.vmin,l.vmax));let u=0;for(let n=e.getMaxDerivative()-1;n>=0;n--){s=c,c=[];for(let l=0,d=s.length;l<d;l++){if(s[l][0]<s[l][1]){let d,f,p;if(n===e.getMaxDerivative()-1?{root:d,funcAtRoot:f,cRoots:p}=mr(e,n,F.construct(s[l][0],s[l][1]),o,a*.5):{root:d,funcAtRoot:f,cRoots:p}=hr(e,n,F.construct(s[l][0],s[l][1]),o,a*.5),p===1){if(n===0)u<r&&(s[l][0]<=t.vmin&&s[l][1]>=t.vmin&&d!==t.vmin&&e.getValue(0,t.vmin)===0&&(d=t.vmin),s[l][0]<=t.vmax&&s[l][1]>=t.vmax&&d!==t.vmax&&e.getValue(0,t.vmax)===0&&(d=t.vmax),i[u]=t.snapClip(d),u>0?i[u]-i[u-1]>a&&u++:u++);else{let e=L.getNAN();e[0]=s[l][0],e[1]=d,c.push(e);let t=L.getNAN();t[0]=d,t[1]=s[l][1],c.push(t)}continue}}c.push(s[l])}}return u}function cr(e,t,n,r){let i=new H,a=vr(new H(e),new H(t),n,i);return r[0]=i.value(),a}function lr(e,t,n,r,i,a){let o=U(H,2),s=yr(new H(e),new H(t),new H(n),r,i,o);return a[0]=o[0].value(),a[1]=o[1].value(),s}function ur(e,t,n,r,i,a,o){let s=U(H,3),c=br(new H(e),new H(t),new H(n),new H(r),i,a,s);return o[0]=s[0].value(),o[1]=s[1].value(),o[2]=s[2].value(),c}function dr(e,t,n,r,i,a,o,s){return pr(e,t,n,r,i,a,o,s)}function fr(e,t,n,r,i,a){return _r(e,t,n,r,i,a)}function pr(e,t,n,r,i,a,o,s){let c=I(n*n,NaN);c.fill(0),me(s,r,0,0,n);let l=I(n,NaN),u=I(n,NaN),d=I(n,NaN),f=e(s,n,t),p=0;for(p=0;p<100;p++){let r=f;for(let e=0;e<n;++e)u[e]=s[e];if(p%n===0){c.fill(0);for(let e=0;e<n;e++)c[e*n+e]=1}let o=0,m=0;for(let r=0;r<n;++r){for(let e=0;e<n;++e)l[e]=c[r*n+e];let u=f;f=gr(e,t,s,l,i,a,n);let d=u-f;d>o&&(m=r,o=d)}for(let e=0;e<n;e++)l[e]=s[e]-u[e],d[e]=s[e]+(s[e]-u[e]);let h=e(d,n,t);if(h<r&&2*(r-2*f+h)*Xe(r-f-o)<Xe(r-h)*o){f=gr(e,t,s,l,i,a,n);for(let e=0;e<n;++e)c[m*n+e]=c[(n-1)*n+e],c[(n-1)*n+e]=l[e]}if(r<=f)return e(s,n,t)}return f}function mr(e,t,n,r,i){let a={root:0,funcAtRoot:0,cRoots:0},o=n.vmin,s=n.vmax,l=0,u=Number.MAX_VALUE,d=e.getValue(t,o),f=e.getValue(t,s),p=0,m=0,h=0;if(d>=0&&f>=0||d<=0&&f<=0)return Math.abs(d)<Math.abs(f)?(a.funcAtRoot=d,a.root=o,a.cRoots=+(d===0),a):(a.funcAtRoot=f,a.root=s,a.cRoots=+(f===0),a);Math.abs(d)<Math.abs(f)&&(s=R(o,o=s),f=R(d,d=f)),l=o,p=d;let g=!0,_=0;for(;f!==0&&Math.abs(o-s)>r*Math.abs(s)+i;_++){let n=_>64;if(!n){m=d!==p&&f!==p?o*f*p/((d-f)*(d-p))+s*d*p/((f-d)*(f-p))+l*d*f/((p-d)*(p-f)):s-f*(s-o)/(f-d);let e=(3*o+s)/4;if(n=!(m>e&&m<s||m>s&&m<e),!n){let e=r*Math.abs(s)+i;if(g){let t=Math.abs(s-l);n=Math.abs(m-s)>=t*.5||t<e}else{let t=Math.abs(l-u);n=Math.abs(m-s)>=t*.5||t<e}}}if(n?(m=(o+s)/2,g=!0):g=!1,h=e.getValue(t,m),h===0)return a.root=m,a.funcAtRoot=h,a.cRoots=1,a;if(!n){let n=o-m,r=m-s;if(Math.abs(n)>10*Math.abs(r)){let n=s+r*3;for(let r=0;r<2;r++){let r=e.getValue(t,n);Oe(d)*Oe(r)>0?(o=n,d=r):n=V(o,s,.75)}}else if(Math.abs(r)>10*Math.abs(n)){let r=o-n*3;for(let n=0;n<2;++n){let n=e.getValue(t,r);Oe(f)*Oe(n)>0?(s=r,f=n):r=V(o,s,.25)}}}u=l,l=s,p=f,Oe(d)*Oe(h)<0?(s=m,f=h):(o=m,d=h),Math.abs(d)<Math.abs(f)&&(s=R(o,o=s),f=R(d,d=f)),_===128&&c(`Root_finder iterations exceeded`)}return a.root=s,a.funcAtRoot=f,a.cRoots=1,a}function hr(e,t,n,r,i){let a={root:0,funcAtRoot:0,cRoots:0},o=n.vmin,s=e.getValue(t,o),l=n.vmax,u=e.getValue(t,l);if(s>=0&&u>=0||s<=0&&u<=0)return Math.abs(s)<Math.abs(u)?(a.funcAtRoot=s,a.root=o,a.cRoots=+(s===0),a):(a.funcAtRoot=u,a.root=l,a.cRoots=+(u===0),a);u<0&&(u=R(s,s=u),l=R(o,o=l));let d=(o+l)*.5,f=Math.abs(l-o),p=f,m=e.getValue(t,d),h=e.getValue(t+1,d),g=4,_=1,v=0,y=0,b=1,x=0;for(;++x<100;){x>32||h===0||b===2&&v>1||b===1&&g<4?(b=1,_>1&&_--):(b=2,y>1&&Math.abs(2*m)>Math.abs(f*h)&&_++),f=p;let n,r=!1;if(b===1)do{if(y>2){let e=16*Math.abs(f);if(Math.abs(o-l)*.5>e){let t=Math.min(o,l),r=Math.max(o,l);if(d===t){n=d,d=t+e,p=d-n;break}if(d===r){n=d,d=r-e,p=d-n;break}}}p=(l-o)*.5,n=d,d=o+p,r=o===d||l===d}while(0);else for(;;){p=_*m/h,n=d,d-=p,r=d===n;let e=Math.min(o,l),t=Math.max(o,l);if(d<e){if(_>1){d=n,_--;continue}p=n-e,d=e}else if(d>t){if(_>1){d=n,_--;continue}p=n-t,d=t}break}if(r||Math.abs(p)<i){n!==d&&(m=e.getValue(t,d));break}m=e.getValue(t,d),h=e.getValue(t+1,d);let a=o,c=l;m<0?(s=m,o=d):(u=m,l=d),b===2&&(o===a&&l===c||y>1&&Math.abs(p)>=.5001*Math.abs(f))?v++:v=0,b===1?(g++,y=0):(g=0,y++)}return x===100&&c(`Root_finder iterations exceeded`),a.root=d,a.funcAtRoot=m,a.cRoots=1,a}function gr(e,t,n,r,i,a,o){let s=r.slice(0,o),c=0;for(let e=0;e<o;e++)c+=r[e]*r[e];if(c=Math.sqrt(c),c>0)for(let e=0;e<o;e++)s[e]/=c;let l=-1/0,u=1/0;{let e=I(o,0);for(let t=0;t<o;t++)e[t]=t;e.sort((e,t)=>{let n=Math.abs(s[e]),r=Math.abs(s[t]);return n<r?-1:+(n>r)});for(let t=0;t<o;t++){let r=e[t];if(s[r]===0)continue;let o=(i[r]-n[r])/s[r],c=(a[r]-n[r])/s[r];c<o&&(c=R(o,o=c)),o>l&&(l=o),c<u&&(u=c)}}let d=0,f=(Math.abs(l)+Math.abs(u))*Te()*100,p=I(o,NaN),m=s.slice();function h(r,i){for(let e=0,t=o;e<t;e++)p[e]=n[e]+r*m[e];return e(p,o,t)}f>0&&(d=fr(h,null,l,0,u,f));let g=h(d);for(let e=0,t=o;e<t;e++)n[e]=we(p[e],i[e],a[e]);return g}function _r(e,t,n,r,i,a){let o=yt(),s=r,c=e(s,t),l=n,u=i,d=e(l,t),f=e(u,t);c>d&&(c=d,s=l),c>f&&(c=f,s=u);let p=l,m=u,h=d,g=f;h>g&&(h=R(g,g=h),m=R(p,p=m));let _=s-p,v=p-m,y=Math.min(a,u-l)*.5,b=y*2,x=0,S=0;for(;S<100&&!(u-l<=b);++S){let n=l+(u-l)*.5,r=x>0;if(!r&&Math.abs(v)<=y&&(r=!0,x=3),!r){let e=s-p,t=s-m,n=e*(c-g),i=t*(c-h),a=t*i-e*n;i=2*(i-n),i>0&&(a=-a),i=Math.abs(i),i===0||Math.abs(a)>=Math.abs(i*v/2)||a<=i*(l-s)||a>=i*(u-s)?(r=!0,x=3):(v=_,_=a/i)}r&&(v=s>=n?l-s:u-s,_=o*v,x--);let i=s+_;i<l+y?i=l+y:i>u-y&&(i=u-y);let a=e(i,t);a<c?(i>=s?(l=s,d=c):(u=s,f=c),m=p,p=s,s=i,g=h,h=c,c=a):(i<s?(l=i,d=a):(u=i,f=a),a<=h||p===s?(m=p,p=i,g=h,h=a):(a<=g||m===s||m===p)&&(m=i,g=a))}return s}function vr(e,t,n,r){return e.isZero()?t.isZero()?-1:0:(r.setE(t.clone().negateThis().divThisE(e)),+!!n.containsCoordinate(r.value()))}function yr(e,t,n,r,i,a){if(e.value()===0)return i?(a[0].set(1),+!!r.containsCoordinate(a[0].value())):vr(t,n,r,a[0]);if(i){let t=2;return a[0].set(1),a[1].setE(n).divThisE(e),a[1].eq(a[0])&&(a[1].set(1),t=1),r.containsCoordinate(a[1].value())||(t=1),r.containsCoordinate(a[0].value())||(t--,a[0].setE(a[1])),t===2&&a[0].value()>a[1].value()&&(a[1]=R(a[0],a[0]=a[1])),t}let o=t.clone().sqrThis().subThisE(e.clone().mulThisE(n).mulThisE(Ke));if(o.lt(xe))return 0;let s=new H(t.value()>=0?1:-1),c=o.clone().sqrtThis(),l=new H(-.5).mulThisE(t.clone().addThisE(s.clone().mulThisE(c))),u=0;a[0].setE(l.divE(e));let d=new H(a[0].value()),f=new H(e.value()).mulE(d).addE(new H(t.value()).mulE(d).addE(new H(n.value())));return f.isZero()||Dr(a[0],e,t,n,a[0]),r.containsCoordinate(a[0].value())&&u++,c.value()!==0&&l.value()!==0?(a[u].assign(n.divE(l)),d.set(a[u].value()),f.assign(new H(e.value()).mulE(d).addE(new H(t.value()).mulE(d).addE(new H(n.value())))),f.isZero()||Dr(a[u],e,t,n,a[u]),r.containsCoordinate(a[u].value())&&u++,u===2&&a[0].value()>a[1].value()&&(a[1]=R(a[0],a[0]=a[1])),u):u}function br(e,t,n,r,i,a,o){if(e.value()===0)return yr(t,n,r,i,a,o);if(a){let n=1;o[0].set(1);let a=o.slice(n),s=yr(e,t.addE(e),r.negate(),i,!1,a);if(s>0){n+=s;for(let e=1;e<n;e++)o[e].eq(be)&&(o[n-1]=R(o[e],o[e]=o[n-1]),n--)}let c=o.slice(0,n);c.sort((e,t)=>e.value()<t.value()?-1:+(e.value()>t.value()));for(let e=0;e<n;++e)o[e]=c[e];return n}return Or(e,t,n,r,i,o)}function xr(e,n,r,i,a,o){return(o<n||n<0)&&t(`nth_degree_real_roots`),kr(e,n,r,i,a)}function Sr(e,t,n,r){return{coef0:e.clone(),coef1:t.clone(),coef2:n.clone(),coef3:r.clone(),calcF(e){return this.coef0.clone().mulThis(e).addThisE(this.coef1).mulThis(e).addThisE(this.coef2).mulThis(e).addThisE(this.coef3)},calcDF(e){return this.coef0.clone().mulThis(3).mulThis(e).addThisE(this.coef1.clone().mulThisByPower2(2)).mulThis(e).addThisE(this.coef2)},estimateError(e){let t=Math.abs(e),n=((this.coef0.eps()*t+this.coef1.eps())*t+this.coef2.eps())*t+this.coef3.eps()+this.calcF(e).eps(),r=this.coef0.clone().mulThis(e).mulThis(3).addThisE(this.coef1.clone().mulThis(2)).mulThis(e).addThisE(this.coef2);if(r.isZero()){let t=this.coef0.clone().mulThis(e).mulThis(6).addThisE(this.coef1.clone().mulThis(2));if(t.isZero()){let e=this.coef0.clone().mulThis(6);return(6*n/Math.abs(e.value()))**(1/3)}return Math.sqrt(2*n/Math.abs(t.value()))}return n/Math.abs(r.value())}}}class Cr{coefs;derivCoefs1=[];derivCoefs2=[];lastDeriv1=-1;lastDeriv2=-1;lastUsed=-1;curCoefs=null;power;truePower;updateCoefs(e){if(this.lastDeriv1===e){this.curCoefs=this.derivCoefs1,this.lastUsed=1;return}if(this.lastDeriv2===e){this.curCoefs=this.derivCoefs2,this.lastUsed=2;return}let t;this.lastUsed===1?(t=this.derivCoefs2,this.lastDeriv2=e,this.lastUsed=2):(t=this.derivCoefs1,this.lastDeriv1=e,this.lastUsed=1),t.length=0;for(let n=0,r=this.truePower-e;n<=r;++n){t.push(this.coefs[n+e].clone());let r=n+e,i=r--;for(let t=1;t<e;t++)i*=r--;t[n].mulThis(i)}this.curCoefs=t}constructor(e,t,n,r){this.coefs=e,this.power=t,this.truePower=0;for(let e=t;e>=1;e--)if(this.coefs[e].value()!==0){this.truePower=e;break}}getMaxDerivative(){return this.truePower+1}getValue(e,t){let n=this.coefs;e===0?n=this.coefs:(this.updateCoefs(e),n=this.curCoefs);let r=new Ee(0),i=1;for(let a=0,o=this.truePower-e;a<=o;++a)r.pe(i*n[a].value()),i*=t;return r.getResult()}getError(e){let t=Math.abs(e),n=new Ee(0),r=new H(1),i=new H(0);for(let e=0,a=this.power;e<=a;++e)i.addThisE(this.coefs[e].mulE(r)),n.pe(r.value()*this.coefs[e].eps()),r.mulThis(t);n.pe(i.eps());let a=1;for(let t=1;t<=this.truePower;++t){a*=t,this.updateCoefs(t);let r=new H(1),i=new H(0);for(let n=0,a=this.truePower-t;n<=a;++n)i.addThisE(this.curCoefs[n].mulE(r)),r.mulThis(e);if(!i.isZero())return(a*n.getResult()/Math.abs(i.value()))**(1/t)}return 0}}function wr(e,t,n,r,i,a){let o=e,s=t,c=s-o;if(!a){let n=r.calcF(e).value(),i=r.calcF(t).value();if((n>0||n>i)&&(s=R(o,o=s),i=R(n,n=i)),n>=0||i<=0)return!1}let l=!1,u=n,d,f=0;for(;f<100;f++){let e=r.calcF(u);if(d=r.calcDF(u),d.isZero())return!1;if(!e.value()||f>3&&e.isZero()){l=!0;break}a||(e.value()<0?o=u:s=u);let t=e.value()/d.value(),n=u-t;a||(n>=o&&n<=s||n>=s&&n<=o)&&Math.abs(t)<=.5*c?(u=n,c=Math.abs(t)):(c=Math.abs((s-o)*.5),u=(o+s)*.5)}return l?(i.set(u,r.estimateError(u)),!0):!1}function Tr(e,t,n,r,i,a,o,s){return wr(e,t,n.value(),Sr(r,i,a,o),s,!1)}class Er{coefs=U(H,3);constructor(e,t,n){this.coefs[0].setE(e),this.coefs[1].setE(t),this.coefs[2].setE(n)}calcF(e){let t=new H(e);return this.coefs[0].mulE(t).addE(this.coefs[1]).mulE(t).addE(this.coefs[2])}calcDF(e){let t=new H(e);return H.st_mulByPower2(this.coefs[0],2).mulE(t).addE(this.coefs[1])}estimateError(e){let t=Math.abs(e),n=(this.coefs[0].eps()*t+this.coefs[1].eps())*t+this.coefs[2].eps()+this.calcF(e).eps(),r=new H(2).mulE(this.coefs[0]).mul(e).addE(this.coefs[1]);if(r.isZero()){let e=this.coefs[0].value();return Math.sqrt(n/Math.abs(e))}return n/Math.abs(r.value())}}function Dr(e,t,n,r,i){return wr(0,0,e.value(),new Er(t,n,r),i,!0)}function Or(e,t,n,r,i,a){let o=U(H,3),s=0,l=t.negate().divThisE(e.clone().mulThis(3));i.containsCoordinate(l.value())&&(o[0].setE(l),s=1);let u=U(H,2),d=yr(e.mul(3),t.mul(2),n,i,!1,u);if(d<0)return r.isZero()?-1:0;for(let e=0;e<d;e++)i.containsCoordinate(u[e].value())&&o[s++].setE(u[e]);_e(o,0,s,(e,t)=>e.value()<t.value()?-1:+(e.value()>t.value()));let f=U(H,5);f[0].set(i.vmin);for(let e=0;e<s;e++)f[1+e].setE(o[e]);f[1+s].set(i.vmax);let p=s+2,m=1,h=0;{let i=f[0].clone();if(e.clone().mulThisE(i).addThisE(t).mulThisE(i).addThisE(n).mulThisE(i).addThisE(r).isZero()){let o=Sr(e,t,n,r);i.setError(o.estimateError(i.value())),a[h]=i,h++,m++}}for(let o=m;o<p;o++){let s=f[o].clone(),l=e.clone().mulThisE(s).addThisE(t).mulThisE(s).addThisE(n).mulThisE(s).addThisE(r).isZero();if(l||!f[o].eq(f[o-1])){if(l||Tr(f[o-1].value(),f[o].value(),f[o-1].clone().addThisE(f[o]).divThisByPower2(2),e,t,n,r,s)){if(h>0&&s.eq(a[h-1]))continue;if(h>=3&&c(`cubic_polynomial_solver_too_many_roots`),l){let i=Sr(e,t,n,r);s.setError(i.estimateError(s.value()))}a[h]=s,h++}if(f[o].value()===i.vmax)break;if(l){o++;continue}}}return h}function kr(e,t,n,r,i,a){let o=new Cr(e,t,n,Te()),s=0;if(o.truePower===2)s=yr(e[2],e[1],e[0],n,r,i);else if(o.truePower===1)s=vr(e[1],e[0],n,i[0]);else if(o.truePower===0)return e[0].value()?0:-1;else{let e=[];e.length=t,s=sr(o,n,t,e);for(let t=0;t<s;t++)i[t].set(e[t])}for(let e=0;e<s;e++)i[e].setError(o.getError(i[e].value()));return s}var Ar=C;class jr extends xn{static type=i.enumRationalBezier2;m_cp;m_weights;m_cachedValues;constructor(e){if(e===void 0||Me(e,`vd`)){super({vd:e?.vd,XStart:0,YStart:0,XEnd:0,YEnd:0}),this.m_cp=new L(0,0),this.m_weights=[1,0,1];return}if(e.fromPoint&&e.weight?e={fromPoint:e.fromPoint,controlPoint1:e.controlPoint1,toPoint:e.toPoint,weight0:1,weight1:e.weight,weight2:1}:e.points&&e.weight?e={fromPoint:e.points[0],controlPoint1:e.points[1],toPoint:e.points[2],weight0:1,weight1:e.weight,weight2:1}:e.points&&e.weights&&(e={fromPoint:e.points[0],controlPoint1:e.points[1],toPoint:e.points[2],weight0:e.weights[0],weight1:e.weights[1],weight2:e.weights[2]}),e.fromPoint&&e.weight0){super({start:e.fromPoint,end:e.toPoint}),(e.weight0<=0||e.weight1<0||e.weight2<=0)&&t(`weights`),this.m_cp=e.controlPoint1.clone(),this.m_weights=[e.weight0,e.weight1,e.weight2];return}if(e.copy){super(e),this.m_cp=e.copy.m_cp.clone(),this.m_weights=e.copy.m_weights.slice();return}if(e.move){super(e),this.m_cp=e.move.m_cp.clone(),this.m_weights=e.move.m_weights.slice();return}s(`unexpected constructor param`)}getBoundary(){return ar(this)}assignMove(e){return this}assignCopy(e){return e.copyTo(this),this}construct(e,t,n,r){this.dropAllAttributes(),this.setCpsAndWeights(e,t,n,1,r,1),gs(this)}constructWeights(e,t,n,r,i,a){this.dropAllAttributes(),this.setCpsAndWeights(e,t,n,r,i,a),gs(this)}constructArray(e,t){this.construct(e[0],e[1],e[2],t)}constructArrayWeights(e,t){this.dropAllAttributes(),this.setCpsAndWeightsArray(e,t),gs(this)}convertToStandardForm(){}getStandardFormWeight(){return this.m_weights[1]/Math.sqrt(this.m_weights[0]*this.m_weights[2])}getGeometryType(){return i.enumRationalBezier2}queryEnvelope(e){if(e instanceof K){if(e.setCoords(this.getStartXY()),e.mergeNe(this.getEndXY()),e.contains(this.m_cp))return;let t=Hs(this);if(t!==null){let n=new L;for(let r of t.specialPoints)this.queryCoord2D(r,n),e.mergeNe(n)}else{let t=[],n=U(L,3);this.queryControlPoints(n),ys(n,this.m_weights,t);let r=new L;for(let n of t)this.queryCoord2D(n,r),e.mergeNe(r)}}}applyTransformation(e){if(e instanceof bt){let t=U(L,3);this.queryControlPoints(t),e.transformPoints2D(t,3,t),this.setStartXY(t[0]),this.m_cp.assign(t[1]),this.setEndXY(t[2]),this.afterCompletedModification();return}}createInstance(){return new jr({vd:this.m_description})}calculateLength2D(){return bs(this,1,!1)}calculateLowerLength2D(){return L.distance(this.getStartXY(),this.getEndXY())}calculateUpperLength2D(){return this.calculateUpperLength2D_()}calculateUpperLength2D_(){return this.m_weights[1]>0?L.distance(this.getStartXY(),this.m_cp)+L.distance(this.getEndXY(),this.m_cp):L.distance(this.getStartXY(),this.getEndXY())}queryCoord2D(e,t){return this.queryCoord2DExtension(e,t,!0)}queryCoord2DE(e,t){gc(this,e,t)}queryCoord2DExtension(e,t,n){if(n){if(e<0){Cn(new Q({start:this.getStartXY(),end:this.getStartXY().add(this.getTangent(0).getUnitVector())}),e,t);return}if(e>1){Cn(new Q({start:this.getEndXY(),end:this.getEndXY().add(this.getTangent(1).getUnitVector())}),e-1,t);return}}let r=U(L,3);this.queryControlPoints(r),bc(r,this.m_weights,e,t)}getCoordX(e){let t=new L;return this.queryCoord2DExtension(e,t,!0),t.x}getCoordY(e){let t=new L;return this.queryCoord2DExtension(e,t,!0),t.y}cut(e,t,n){let r=new $;return this.queryCut(e,t,r,n),r.releaseSegment()}queryCut(e,t,n,r){let i=n.createQuadraticRationalBezier();if(this.cutBezierIgnoreAttributes(e,t,i),r)return;i.assignVertexDescription(this.m_description);let a=this.m_description.getAttributeCount();if(a>1){for(let t=1;t<a;t++){let n=this.m_description.getSemantics(t),r=Ar.getComponentCount(n);for(let t=0;t<r;t++){let r=this.getAttributeAsDbl(e,n,t);i.setStartAttribute(n,t,r)}}for(let e=1;e<a;e++){let n=this.m_description.getSemantics(e),r=Ar.getComponentCount(n);for(let e=0;e<r;e++){let r=this.getAttributeAsDbl(t,n,e);i.setEndAttribute(n,e,r)}}}}queryDerivative(e,t){As(this,e,t)}cutBezierIgnoreAttributes(e,n,r){(e<0||n>1||e>n)&&t(`Quadratic_rational_bezier.cut_bezier_ignore_attributes`);let i=U(L,3);this.queryControlPoints(i);let a=[0,0,0];tc(i,this.m_weights,e,n,i,a),r.setControlPointsAndWeights(i,a)}splitBezierIgnoreAttributes(e,t,n){}getAttributeAsDbl(e,t,n){if(t===0)return n===0?this.getCoordX(e):this.getCoordY(e);let r=this.calculateLength2D(),i=r>0?this.tToLength(e)/r:0,a=Ar.getInterpolation(t),o=this.getStartAttributeAsDbl(t,n),s=this.getEndAttributeAsDbl(t,n);return ke(a,o,s,i,Ar.getDefaultValue(t))}getClosestCoordinate(e,t){return Ws(this,e,F.unit(),t,-1)}getClosestCoordinateOnInterval(e,t,n=-1){return Ws(this,e,t,!1,n)}getYMonotonicParts(e,t){return this.getMonotonicParts(e,t)}getMonotonicParts(e,r){e.length<2&&t(``);let i=vs(this),a=0;if(i.specialPointsCount()===2)return 0;n(e.length>=i.specialPointsCount()-1);for(let t=1,n=i.specialPointsCount();t<n;++t)this.queryCut(i.specialPoints[t-1],i.specialPoints[t],e[a],r),a++;for(let t=0;t<a;++t)Zs(e[t].get());return a}intersectionWithAxis2D(e,t,n,r){n&&(n.length=9),r&&(r.length=9);let i=[,,,],a=U(H,2),o=new F(0,1),s=0,c=U(L,3);if(this.queryControlPoints(c),e){if(i[0]=new H(c[0].y).sub(t).mul(this.m_weights[0]),i[1]=new H(c[1].y).sub(t).mul(this.m_weights[1]),i[2]=i[0].subE(i[1].mul(2)).addE(new H(c[2].y).sub(t).mul(this.m_weights[2])),i[1]=i[1].subE(i[0]).mulThisByPower2(2),s=yr(i[2],i[1],i[0],o,!1,a),n)for(let e=0;e<s;e++)n[e]=this.getCoordX(a[e].value())}else if(i[0]=new H(c[0].x).sub(t).mul(this.m_weights[0]),i[1]=new H(c[1].x).sub(t).mul(this.m_weights[1]),i[2]=i[0].subE(i[1].mul(2)).addE(new H(c[2].x).sub(t).mul(this.m_weights[2])),i[1]=i[1].subE(i[0]).mulThisByPower2(2),s=yr(i[2],i[1],i[0],o,!1,a),n)for(let e=0;e<s;e++)n[e]=this.getCoordY(a[e].value());if(r)for(let e=0;e<s;e++)r[e]=a[e].value();else n&&_e(n,0,s,Ze);return s}intersectionOfYMonotonicWithAxisX(e,t){if(this.m_YStart===this.m_YEnd)return e===this.m_YStart?t:NaN;if(e===this.m_YStart)return this.m_XStart;if(e===this.m_YEnd)return this.m_XEnd;let r=[NaN,NaN],i=this.intersectionWithAxis2D(!0,e,r,null);return n(i!==2),i===-1?t:r[0]}isCurve(){return!0}isDegenerate(e){return Kt(this,e)}isDegenerate3D(e,t){return!1}queryLooseEnvelope(e){if(e instanceof K){e.setCoords({pt:this.getStartXY()}),e.mergeNe(this.m_cp),e.mergeNe(this.getEndXY());return}}clone(e){let t=this.createInstance();return this.copyTo(t),t}queryInterval(e,t){if(e===0){let e=K.constructEmpty();this.queryEnvelope(e);let n=F.constructEmpty();return t===0?e.queryIntervalX(n):e.queryIntervalY(n),n}return super.queryInterval(e,t)}queryLooseEnvelopeOnInterval(e,t){let n=U(L,3);this.queryControlPoints(n),tc(n,this.m_weights,e.vmin,e.vmax,n,[0,0,0]),t.setFromPoints(n,3)}changeEndPoints2D(e,t){if(e.isEqual(this.m_XStart,this.m_YStart)&&t.isEqual(this.m_XEnd,this.m_YEnd))return;let n=this.m_cp.isEqual(this.m_XStart,this.m_YStart),r=this.m_cp.isEqual(this.m_XEnd,this.m_YEnd);this.setStartXY(e),this.setEndXY(t),n?this.m_cp.setCoordsPoint2D(e):r&&this.m_cp.setCoordsPoint2D(t),this.normalizeAfterEndpointChange()}tToLength(e){return bs(this,e,!0)}lengthToT(e){return Ps(this,e)}calculateWeightedAreaCentroid2D(e){let t=Rs(this),n=Fs(this);return t.x+=(this.getStartX()-e.x)*n,t.y+=(this.getStartY()-e.y)*n,t}calculateWeightedCentroid2D(){let e=new L;return this.isDegenerate(0)?(e.setCoords(0,0),e):Vs(this)?(e.assign(this.getCoord2D(.5).mul(this.calculateLength2D())),e):(e.assign($s(this,1)),e)}getControlPoint1(){return this.m_cp.clone()}setControlPoint1(e){this.m_cp.setCoordsPoint2D(e),this.afterCompletedModification()}queryWeights(e){for(let t=0;t<3;++t)e[t]=this.m_weights[t]}queryCoord2DMP(e,t){let n=U(L,3);return this.queryControlPoints(n),vc(n.map(e=>J.constructPoint2D(e)),this.m_weights.map(e=>B.constructDouble(e)),B.constructDouble(e),t)}setWeights(e){}queryControlPoints(e){e[0].assign(this.getStartXY()),e[1].assign(this.m_cp),e[2].assign(this.getEndXY())}queryControlPointsHelper(e){return this.queryControlPoints(e),3}setControlPointsAndWeights(e,t){this.setCpsAndWeightsArray(e,t),this.afterCompletedModification()}getTangent(e){let t=U(L,3);return this.queryControlPoints(t),Ms(t,this.m_weights,e)}getDerivative(e){let t=we(e,0,1),n=U(L,4);return xs(this,1,t,n),n[1]}getCurvature(e){let t=U(L,4);xs(this,2,e,t);let n=t[1].sqrLength();return n===0?NaN:(t[1].divThis(Math.sqrt(n)),t[1].crossProduct(t[2])/n)}isIntersecting(e,t,n){return!1}isIntersectingPoint(e,t,n){return!1}isIntersectingPoint3D(e,t,n,r,i=1){return!1}isMonotoneQuickAndDirty(){let e=U(L,3);return this.queryControlPoints(e),Xs(e)}getMonotonicPartParams(e,n){let r=vs(this),i=r.specialPointsCount();if(!n)return r.specialPointsCount();e<i&&t(``);for(let e=0;e<i;e++)n[e]=r.specialPoints[e];return i}normalizeAfterEndpointChange(){return!1}orientBottomUp(){if(this.m_YEnd<this.m_YStart||this.m_YEnd===this.m_YStart&&this.m_XEnd<this.m_XStart){this.m_XEnd=R(this.m_XStart,this.m_XStart=this.m_XEnd),this.m_YEnd=R(this.m_YStart,this.m_YStart=this.m_YEnd),this.m_weights[2]=R(this.m_weights[0],this.m_weights[0]=this.m_weights[2]);for(let e=0,t=this.m_description.getTotalComponentCount()-2;e<t;e++)this.m_attributes[e+t]=R(this.m_attributes[e],this.m_attributes[e]=this.m_attributes[e+t]);this.m_cachedValues=null}}isLine(){return!1}isDegenerateToLineHelper(e){let t=U(L,3);this.queryControlPoints(t);let n=t[2].sub(t[0]),r=n.length();if(L.distance(t[0],t[1])+L.distance(t[2],t[1])-r>e)return!1;let i=e,a=t[1].clone();return a.subThis(t[0]),!(Math.abs(a.crossProduct(n))/r>i)}copyIgnoreAttributes(e){let t=U(L,3);this.queryControlPoints(t);let n=[0,0,0];this.queryWeights(n),e.setControlPointsAndWeights(t,n)}calculateArea2DHelper(){return Fs(this)}absNorm(){return this.getStartXY().norm(1)+this.getEndXY().norm(1)+this.m_cp.norm(1)}absNormXYZ(e){return n(0),0}queryEnvelopeW(e,t){Js(this,e,t)}setSegmentFromCoordsForStitcher(e,t){let n=[0,0,0];this.queryWeights(n),this.constructWeights(e[0],this.getControlPoint1(),e[t-1],n[0],n[1],n[2])}writeInBufferStream(e,t){let n=new Float64Array(5);return n[0]=this.m_cp.x,n[1]=this.m_cp.y,n[2]=this.m_weights[0],n[3]=this.m_weights[1],n[4]=this.m_weights[2],e.writeRangeFromArray(t,n.length,n,!0,1),t+=n.length}readFromBufferStream(e,t){let n=new Float64Array(5);e.queryRange(t,n.length,n,!0,1),this.m_cp.x=n[0],this.m_cp.y=n[1],this.m_weights[0]=n[2],this.m_weights[1]=n[3],this.m_weights[2]=n[4],this.m_cachedValues=null}snapControlPoints(e){let t=U(L,3);this.queryControlPoints(t);let n=L.sqrDistance(t[1],t[0]),r=L.sqrDistance(t[1],t[2]),i=t[0].clone(),a=n;n>r&&(i=t[2].clone(),a=r);let o=!1;return a<=e&&a!==0&&(o=!0,this.setControlPoint1(i)),o}needsSnapControlPoints(e){if(!e)return!1;let t=U(L,3);this.queryControlPoints(t);let n=L.sqrDistance(t[1],t[0]),r=L.sqrDistance(t[1],t[2]);t[0].clone();let i=n;return n>r&&(t[2].clone(),i=r),i<=e&&i!==0}calculateSpecialPointsForCracking(e,t){return 0}ensureXYMonotone(){return Zs(this)}setCoordsForIntersector(e,t,n){rc(this,e,t,n)}copyToImpl(e){let t=e;t.m_cp.setCoordsPoint2D(this.m_cp),t.m_weights[0]=this.m_weights[0],t.m_weights[1]=this.m_weights[1],t.m_weights[2]=this.m_weights[2],Us(t,Hs(this))}reverseImpl(){this.m_weights[2]=R(this.m_weights[0],this.m_weights[0]=this.m_weights[2])}equalsImpl(e){let t=e;if(!this.m_cp.equals(t.m_cp))return!1;for(let e=0;e<3;e++)if(this.m_weights[e]!==t.m_weights[e])return!1;return!0}equalsImplTol(e,t){let n=e;if(!this.m_cp.isEqualPoint2D(n.m_cp,t))return!1;let r=U(L,3);this.queryControlPoints(r);let i=U(L,3);n.queryControlPoints(i);let a=[n.m_weights[0],n.m_weights[1],n.m_weights[2]];for(let e=0;e<3;e++){let n=new A;n.setCoordsPoint2DZ(r[e].mul(this.m_weights[e]),this.m_weights[e]);let o=new A;if(o.setCoordsPoint2DZ(i[e].mul(a[e]),a[e]),!n.isEqual(o,t))return!1}return!0}swapImpl(e){let t=e;t.m_cp=R(this.m_cp,this.m_cp=t.m_cp),t.m_weights=R(this.m_weights,this.m_weights=t.m_weights),_s(this,t)}afterCompletedModification(){gs(this)}intersect(e,t,n,r,i){return pu(!1,this,e,t,n,r,i)}intersectPoint(e,t,n){return qs(this,e,t,n)}endPointModified(){gs(this)}clearEndPointModified(){}setCpsAndWeights(e,n,r,i,a,o){(i<=0||o<=0||a<0)&&t(`weights`),(e.isNAN()||n.isNAN()||r.isNAN())&&t(`NAN control points in bezier are not supported`),this.setStartXY(e),this.m_cp.assign(n),this.m_weights[0]=i,this.m_weights[1]=a,this.m_weights[2]=o,this.setEndXY(r)}setCpsAndWeightsArray(e,t){this.setCpsAndWeights(e[0],e[1],e[2],t[0],t[1],t[2])}}var Mr=C;class Nr extends xn{static type=i.enumBezier2;constructor(e){e===void 0||Me(e,`vd`)?(super({vd:e?.vd,XStart:0,YStart:0,XEnd:0,YEnd:0}),this.m_cp=new L(0,0)):e.from?(super({XStart:e.from.x,YStart:e.from.y,XEnd:e.to.x,YEnd:e.to.y,...e.vd}),this.m_cp=e.cp.clone()):e.points?(super({XStart:e.points[0].x,YStart:e.points[0].y,XEnd:e.points[2].x,YEnd:e.points[2].y,...e.vd}),this.m_cp=e.points[1].clone()):e.copy?(super(e),this.m_cp=e.copy.m_cp.clone()):c(`unexpected constructor args`)}getBoundary(){return ar(this)}assignCopy(e){return this!==e&&e.copyTo(this),this}construct(e,t,n){this.setStartXY(e),this.m_cp.assign(t),this.setEndXY(n),li(this)}constructPoints(e){this.setStartXY(e[0]),this.m_cp.assign(e[1]),this.setEndXY(e[2]),li(this)}getGeometryType(){return i.enumBezier2}queryEnvelope(e){if(e.m_EnvelopeType===2){if(e.setCoords(this.getStartXY()),e.mergeNe(this.getEndXY()),e.contains(this.m_cp))return;let t=wi(this);if(t!==null){let n=new L;for(let r of t.specialPoints)this.queryCoord2D(r,n),e.mergeNe(n)}else{let t=[];fi(this,t);let n=new L;for(let r of t)this.queryCoord2D(r,n),e.mergeNe(n)}return}s(`env type not impl`)}applyTransformation(e){if(e.m_TransformationType===1){let t=U(L,3);this.queryControlPoints(t),e.transformPoints2D(t,3,t),this.setStartXY(t[0]),this.m_cp.assign(t[1]),this.setEndXY(t[2]),this.afterCompletedModification();return}n(0)}createInstance(){return new Nr({vd:this.m_description})}calculateLength2D(){return pi(this,1,!1)}calculateLowerLength2D(){return L.distance(this.getStartXY(),this.getEndXY())}calculateUpperLength2D(){return this.calculateUpperLength2D_()}calculateUpperLength2D_(){return L.distance(this.getStartXY(),this.m_cp)+L.distance(this.getEndXY(),this.m_cp)}queryCoord2D(e,t){this.queryCoord2DExtended(e,t,!1)}queryCoord2DExtended(e,t,n){let r=U(L,3);this.queryControlPoints(r),Xi(r,e,t,n)}queryCoord2DE(e,t){Zi(this,e,t)}queryCoord2DMP(e,t){n(!1,`bernstein polynomials not ported`)}getCoordX(e){if(e<0||e>1){let t=new L;return this.queryCoord2DExtended(e,t,!0),t.x}if(e<=.5){let t=Ne(this.getStartX(),this.m_cp.x,e),n=Ne(this.m_cp.x,this.getEndX(),e);return Ne(t,n,e)}{let t=Pe(this.getStartX(),this.m_cp.x,e),n=Pe(this.m_cp.x,this.getEndX(),e);return Pe(t,n,e)}}getCoordY(e){if(e<0||e>1){let t=new L;return this.queryCoord2DExtended(e,t,!0),t.y}if(e<=.5){let t=Ne(this.getStartX(),this.m_cp.x,e),n=Ne(this.m_cp.x,this.getEndX(),e);return Ne(t,n,e)}{let t=Pe(this.getStartY(),this.m_cp.y,e),n=Pe(this.m_cp.y,this.getEndY(),e);return Pe(t,n,e)}}cut(e,t,n){let r=new $;return this.queryCut(e,t,r,n),r.releaseSegment()}queryCut(e,t,n,r){let i=n.createQuadraticBezier();if(this.cutBezierIgnoreAttributes(e,t,i),r)return;i.assignVertexDescription(this.m_description);let a=this.m_description.getAttributeCount();if(a>1){for(let t=1;t<a;t++){let n=this.m_description.getSemantics(t),r=Mr.getComponentCount(n);for(let t=0;t<r;t++){let r=this.getAttributeAsDbl(e,n,t);i.setStartAttribute(n,t,r)}}for(let e=1;e<a;e++){let n=this.m_description.getSemantics(e),r=Mr.getComponentCount(n);for(let e=0;e<r;e++){let r=this.getAttributeAsDbl(t,n,e);i.setEndAttribute(n,e,r)}}}}queryDerivative(e,t){$i(this,e,t)}cutBezierIgnoreAttributes(e,n,r){if((e<0||n>1||e>n)&&t(`Quadratic_bezier.cut_bezier_ignore_attributes`),e===0&&n===1){r.setStartXY(this.getStartXY()),r.m_cp.assign(this.m_cp),r.setEndXY(this.getEndXY());return}let i=U(L,3);this.queryControlPoints(i),Ii(i,e,n,i),r.constructPoints(i)}splitBezierIgnoreAttributes(e,t,r){n(0)}getAttributeAsDbl(e,t,n){if(t===0)return n===0?this.getCoordX(e):this.getCoordY(e);let r=this.calculateLength2D(),i=r>0?this.tToLength(e)/r:0,a=Mr.getInterpolation(t),o=this.getStartAttributeAsDbl(t,n),s=this.getEndAttributeAsDbl(t,n);return ke(a,o,s,i,Mr.getDefaultValue(t))}getClosestCoordinate(e,t){return Ei(this,e,F.unit(),t)}getClosestCoordinateOnInterval(e,t,n=-1){return Ei(this,e,t,!1)}getYMonotonicParts(e,t){return this.getMonotonicParts(e,t)}getMonotonicParts(e,r){e.length<2&&t(``);let i=di(this),a=0;if(i.specialPointsCount()===2)return 0;n(e.length>=i.specialPointsCount()-1);for(let t=1,n=i.specialPointsCount();t<n;++t)this.queryCut(i.specialPoints[t-1],i.specialPoints[t],e[a],r),a++;for(let t=0;t<a;++t)Mi(e[t].get());return a}intersectionWithAxis2D(e,t,n,r){let i=U(H,3),a=U(H,2),o=new F(0,1),s=0;if(e){if(i[0]=new H(this.getStartY()).sub(t),i[1]=new H(this.m_cp.y).subE(new H(this.getStartY())).mulThisByPower2(2),i[2]=new H(this.getStartY()).add(this.getEndY()).subE(new H(this.m_cp.y).mulThisByPower2(2)),s=yr(i[2],i[1],i[0],o,!1,a),n)for(let e=0;e<s;e++)n[e]=this.getCoordX(a[e].value())}else if(i[0]=new H(this.getStartX()).sub(t),i[1]=new H(this.m_cp.x).subE(new H(this.getStartX())).mulThisByPower2(2),i[2]=new H(this.getStartX()).add(this.getEndX()).subE(new H(this.m_cp.x).mulThisByPower2(2)),s=yr(i[2],i[1],i[0],o,!1,a),n)for(let e=0;e<s;e++)n[e]=this.getCoordY(a[e].value());if(r)for(let e=0;e<s;e++)r[e]=a[e].value();else n&&Fe(n,s);return s}intersectionOfYMonotonicWithAxisX(e,t){if(this.m_YStart===this.m_YEnd)return e===this.m_YStart?t:NaN;if(e===this.m_YStart)return this.m_XStart;if(e===this.m_YEnd)return this.m_XEnd;let r=[0,0],i=this.intersectionWithAxis2D(!0,e,r,null);return n(i!==2),i===-1?t:r[0]}isCurve(){return!0}isLine(){return!1}isDegenerate(e){return Kt(this,e)}isDegenerate3D(e,t){return n(0),!1}queryLooseEnvelope(e){if(e.m_EnvelopeType===2){e.setCoords(this.getStartXY()),e.mergeNe(this.m_cp),e.mergeNe(this.getEndXY());return}n(0)}clone(e){let t=this.createInstance();return this.copyTo(t),t}queryInterval(e,t){if(e===0){let e=new K;this.queryEnvelope(e);let n=new F;return t===0?e.queryIntervalX(n):e.queryIntervalY(n),n}return super.queryInterval(e,t)}queryLooseEnvelopeOnInterval(e,t){let n=U(L,4);this.queryControlPoints(n),Ii(n,e.vmin,e.vmax,n),t.setFromPoints(n,4)}changeEndPoints2D(e,t){if(e.isEqual(this.m_XStart,this.m_YStart)&&t.isEqual(this.m_XEnd,this.m_YEnd))return;let n=this.m_cp.isEqual(this.m_XStart,this.m_YStart),r=this.m_cp.isEqual(this.m_XEnd,this.m_YEnd);this.setStartXY(e),this.setEndXY(t),n?this.m_cp.setCoordsPoint2D(e):r&&this.m_cp.setCoordsPoint2D(t),this.normalizeAfterEndpointChange()}tToLength(e){return pi(this,e,!0)}lengthToT(e){return bi(this,e)}calculateWeightedAreaCentroid2D(e){let t=U(L,3);Ki(this,t);let n=t[2],r=t[1],i=new L,a=n.y*r.x-n.x*r.y;i.x=-((4*n.x+5*r.x)*a)/60,i.y=-((4*n.y+5*r.y)*a)/60;let o=xi(this);return i.x+=(t[0].x-e.x)*o,i.y+=(t[0].y-e.y)*o,i}calculateWeightedCentroid2D(){let e=new L;return this.isDegenerate(0)?(e.setCoords(0,0),e):Ci(this)?(e.assign(this.getCoord2D(.5).mul(this.calculateLength2D())),e):(e.assign(Pi(this,1)),e)}getControlPoint1(){return this.m_cp.clone()}setControlPoint1(e){this.m_cp.setCoordsPoint2D(e),this.afterCompletedModification()}queryControlPoints(e){e[0].assign(this.getStartXY()),e[1].assign(this.m_cp),e[2].assign(this.getEndXY())}queryControlPointsHelper(e){return this.queryControlPoints(e),3}setControlPoints(e){for(let n=0;n<3;n++)e[n].isNAN()&&t(`NaN control points in bezier are not supported`);this.m_XStart=e[0].x,this.m_YStart=e[0].y,this.m_cp.setCoordsPoint2D(e[1]),this.m_XEnd=e[2].x,this.m_YEnd=e[2].y,this.afterCompletedModification()}getTangent(e){let t=we(e,0,1),n=_i(this,1,t);return n.isZero()&&(n=_i(this,2,t),t===1&&n.negateThis()),n}getDerivative(e){let t=we(e,0,1);return _i(this,1,t)}getCurvature(e){let t=_i(this,1,e),n=_i(this,2,e),r=t.sqrLength();return r===0?NaN:(t.divThis(Math.sqrt(r)),t.crossProduct(n)/r)}isIntersecting(e,t,n){return lu(!1,this,e,t,n)!==0}isIntersectingPoint(e,t,n){if(n&&(e.isEqualPoint2D(this.getStartXY())||e.isEqualPoint2D(this.getEndXY())))return!1;let r=new K;if(this.queryLooseEnvelope(r),r.inflateCoords(t,t),!r.contains(e))return!1;let i=this.getClosestCoordinate(e,!1),a=new L;return this.queryCoord2D(i,a),L.distance(a,e)<=t}isIntersectingPoint3D(e,t,r,i,a=1){return n(0),!1}isMonotoneQuickAndDirty(){return!1}getMonotonicPartParams(e,n){let r=di(this),i=r.specialPointsCount();if(!n)return r.specialPointsCount();e<i&&t(``);for(let e=0;e<i;e++)n[e]=r.specialPoints[e];return i}normalizeAfterEndpointChange(){return!1}orientBottomUp(){if(this.m_YEnd<this.m_YStart||this.m_YEnd===this.m_YStart&&this.m_XEnd<this.m_XStart){R(this.m_XStart,this.m_XStart=this.m_XEnd),R(this.m_YStart,this.m_YStart=this.m_YEnd);for(let e=0,t=this.m_description.getTotalComponentCount()-2;e<t;e++)this.m_attributes[e+t]=R(this.m_attributes[e],this.m_attributes[e]=this.m_attributes[e+t]);this.m_cachedValues=null}}isDegenerateToLineHelper(e){let t=U(L,3);this.queryControlPoints(t);let n=t[2].sub(t[0]),r=n.length();if(L.distance(t[0],t[1])+L.distance(t[2],t[1])-r>e)return!1;let i=e,a=t[1].clone();return a.subThis(t[0]),!(Math.abs(a.crossProduct(n))/r>i)}copyIgnoreAttributes(e){let t=U(L,3);this.queryControlPoints(t),e.setControlPoints(t)}calculateArea2DHelper(){return xi(this)}absNorm(){return Ri(this)}queryEnvelopeW(e,t){let n=U(L,3);this.queryControlPoints(n),Ai(n,e,t)}setSegmentFromCoordsForStitcher(e,t){this.construct(e[0],this.getControlPoint1(),e[t-1])}snapControlPoints(e){return ia(this,e)}writeInBufferStream(e,t){let n=new Float64Array(2);return n[0]=this.m_cp.x,n[1]=this.m_cp.y,e.writeRangeFromArray(t,n.length,n,!0,1),t+=n.length}readFromBufferStream(e,t){let n=new Float64Array(2);e.queryRange(t,n.length,n,!0,1),this.m_cp.x=n[0],this.m_cp.y=n[1],this.m_cachedValues=null}needsSnapControlPoints(e){return aa(this,e)}calculateSpecialPointsForCracking(e,t){return 0}ensureXYMonotone(){return Mi(this)}setCoordsForIntersector(e,t,n){Li(this,e,t,n)}copyToImpl(e){let t=e;t.m_cp.setCoordsPoint2D(this.m_cp),Ti(t,wi(this))}reverseImpl(){}equalsImplTol(e,t){let n=e;return!!this.m_cp.isEqualPoint2D(n.m_cp,t)}equalsImpl(e){let t=e;return!!this.m_cp.equals(t.m_cp)}swapImpl(e){let t=e;t.m_cp=R(this.m_cp,this.m_cp=t.m_cp),ui(this,t)}afterCompletedModification(){li(this)}intersect(e,t,n,r,i){return pu(!1,this,e,t,n,r,i)}intersectPoint(e,t,n){return Oi(this,e,t.length,t,n)}endPointModified(){li(this)}clearEndPointModified(){}m_cp;m_cachedValues}class Pr{m_elements;m_zeroCtor;constructor(e){if(e.coefsT){this.m_zeroCtor=e.zeroCtor,this.m_elements=e.coefsT.map(e=>e.clone()),n(this.m_elements.length===e.power+1),this.updatePower();return}if(e.coef0){this.m_zeroCtor=e.zeroCtor,this.m_elements=[e.coef0.clone()];return}if(e.copy)this.m_zeroCtor=e.copy.m_zeroCtor,this.m_elements=e.copy.m_elements.map(e=>e.clone());else{this.m_zeroCtor=e.zeroCtor,this.m_elements=[new this.m_zeroCtor];return}}construct(e,t){return this.m_elements=e.map(e=>e.clone()),this.updatePower(),this}construct0(e){return this.m_elements.length=0,this.m_elements.push(e.clone()),this.updatePower(),this}assignCopy(e){return this.m_elements=e.m_elements.map(e=>e.clone()),this.updatePower(),this}assignMove(e){return this.m_elements=e.m_elements,e.m_elements=[],this.updatePower(),this}power(){return this.m_elements.length-1}addElement(e){this.m_elements.push(e.clone())}scaleRangeToUnitInterval(e,t){let n=t;n.subThis(e);let r=this.power();for(let t=0;t<=r;t++){let i=new this.m_zeroCtor;for(let n=t;n<=r;n++){let r=this.m_elements[n];r.mulDoubleThis(_t(n,t));let a=e.pow(n-t);r.mulThis(a),i.addThis(r)}let a=n.pow(t);i.mulThis(a),this.m_elements[t]=i}}fmSubThis(e,t){return n(0),this}addThis(e){let t=Math.min(this.power(),e.power());for(let n=0;n<=t;++n)this.m_elements[n].addThis(e.m_elements[n]);let n=e.power();this.m_elements.length=Math.max(this.power(),e.power())+1;for(let r=t+1;r<=n;++r)this.m_elements[r]=e.m_elements[r];return this.updatePower(),this}add0(e){return this.m_elements[0].addThis(e),this.updatePower(),this}addNumber0(e){return n(0),this}sub(e){let t=Math.min(this.power(),e.power());for(let n=0;n<=t;++n)this.m_elements[n].subThis(e.m_elements[n]);let n=e.power();this.m_elements.length=Math.max(this.power(),e.power())+1;for(let r=t+1;r<=n;++r)this.m_elements[r]=e.m_elements[r].clone(),this.m_elements[r].negateThis();return this.updatePower(),this}sub0(e){return n(0),this}subNumber0(e){return n(0),this}subShifted(e,t){let n=this.power(),r=e.power()+t,i=Math.min(this.power(),r),a=0;for(let n=t;n<=i;++n)this.m_elements[n].subThis(e.m_elements[a]),a++;if(r<=n)return this.updatePower(),this;this.m_elements.length=r+1;for(let e=n+1;e<this.m_elements.length;++e)this.m_elements[e]=new this.m_zeroCtor;for(let t=i+1;t<=r;++t)this.m_elements[t].subThis(e.m_elements[a++]);return this.updatePower(),this}subShiftedWithCoef(e,t,n){let r=this.power(),i=e.power()+n,a=Math.min(this.power(),i),o=0;for(let r=n;r<=a;++r)this.m_elements[r].fmSubThis(e.m_elements[o],t),o++;if(i<=r)return this.updatePower(),this;this.m_elements.length=i+1;for(let e=r+1;e<this.m_elements.length;++e)this.m_elements[e]=new this.m_zeroCtor;for(let n=a+1;n<=i;++n)this.m_elements[n].fmSubThis(e.m_elements[o++],t);return this.updatePower(),this}mulThis(e){if(this.constructor===e.constructor){let t=e,n=[];for(let e=0,r=this.power();e<=r;e++)for(let r=0,i=t.power();r<=i;r++){let i=this.m_elements[e].clone();i.mulThis(t.m_elements[r]),e+r<n.length?n[e+r].addThis(i):n.push(i)}this.m_elements=n}else for(let t=0,n=this.power();t<=n;t++)this.m_elements[t].mulThis(e);return this.updatePower(),this}mulElementThis(e){for(let t=0,n=this.power();t<=n;t++)this.m_elements[t].mulThis(e);return this.updatePower(),this}mulDoubleThis(e){for(let t=0,n=this.power();t<=n;t++)this.m_elements[t].mulDoubleThis(e);return this.updatePower(),this}mulNumber0(e){return n(0),this}mulBigint0(e){return n(0),this}mulBigIntThis(e){return n(0),this}mulInt320(e){return n(0),this}div0(e){return n(0),this}absThis(){return n(0),this}div(e,t,n){if(this.power()<e.power()){n.assignCopy(this),t.setZero();return}n.setZero(),t.setZero();let r=e.getElement(e.power()),i=this.clone(),a=i.power(),o=i.power()-e.power(),s=o;for(t.m_elements=U(t.m_zeroCtor,o+1);;){if(a<e.power()){n.assignMove(i);break}if(a===i.power()){let n=i.getElement(i.power());n.divThis(r),i.subShiftedWithCoef(e,n,i.power()-e.power()),t.m_elements[s]=n.clone()}s--,a--}n.updatePower(),t.updatePower()}divThis(e){return n(0),this}subThis(e){let t=Math.min(this.power(),e.power());for(let n=0;n<=t;++n)this.m_elements[n].subThis(e.m_elements[n]);let n=e.power();this.m_elements.length=Math.max(this.power(),e.power())+1;for(let r=t+1;r<=n;++r)this.m_elements[r]=e.m_elements[r].clone(),this.m_elements[r].negateThis();return this.updatePower(),this}sub0This(e){return this.m_elements[0].subThis(e),this.updatePower(),this}subFrom(e,t){n(0)}isZero(){return this.power()===0&&this.m_elements[0].isZero()}negateThis(){for(let e=this.m_elements.length-1;e>=0;e--)this.m_elements[e].negateThis();return this}getElement(e){return this.m_elements[e].clone()}setElement(e,t){return this.m_elements[e]=t.clone(),this}evaluate(e){let t=this.power(),n=this.m_elements[t].clone();for(let r=t-1;r>=0;--r)n.mulThis(e),n.addThis(this.m_elements[r]);return n}equals(e){if(this===e)return!0;if(this.power()!==e.power())return!1;for(let t=this.m_elements.length-1;t>=0;t--)if(!this.m_elements[t].equals(e.m_elements[t]))return!1;return!0}updatePower(){for(let e=this.m_elements.length-1;e>0&&this.m_elements[e].isZero();e--)this.m_elements.pop();return this}setZero(){return this.m_elements.length=1,this.m_elements[0]=new this.m_zeroCtor,this.updatePower(),this}derivative(e){if(this.power()<e)return this.clone().setZero();if(e===0)return this.clone();let t=new this.constructor({coefsT:this.m_elements.slice(e),power:this.power()-e});for(let n=e,r=this.power();n<=r;n++){let r=BigInt(n);for(let t=n-1,i=n-e;t>i;--t)r*=BigInt(t);t.m_elements[n-e].mulBigIntThis(r)}return t.updatePower(),t}derivative1This(){if(this.m_elements.length>1){this.m_elements=this.m_elements.slice(1);for(let e=1,t=this.power();e<=t;e++)this.m_elements[e].mulThis(B.constructInt32(e+1))}else this.m_elements.length=0,this.m_elements.push(new this.m_zeroCtor);return this}limitPrecisionThis(e){let t=this.power();for(let n=t;n>=0;--n)this.m_elements[n].limitPrecisionThis(e);return this.updatePower(),this}hiBitIndex(){return this.m_elements.reduce((e,t)=>{let n=t.hiBitIndex();return e<n?n:e},0)}shiftRight(e){return this.m_elements.splice(0,e),this.updatePower(),this}evaluateDerivative(e){let t=this.power(),n=this.m_elements[t];n.mulDoubleThis(t);for(let r=t-1;r>=1;--r){n.mulThis(e);let t=this.m_elements[r];t.mulDoubleThis(r),n.addThis(t)}return n}static evaluateCoefs(e,t,n){let r=e.power();n.construct0(e.getElement(0).evaluate(t));for(let i=1;i<=r;++i)n.addElement(e.getElement(i).evaluate(t));n.updatePower()}}class X extends Pr{constructor(e){super(e===void 0?{zeroCtor:B}:{...e,zeroCtor:B})}clone(){return new X({copy:this})}absEvaluate(e){let t=this.power(),n=this.m_elements[t].clone();n.absThis();let r=e.clone();r.absThis();for(let e=t-1;e>=0;--e)n.mulThis(r),n.addThis(this.m_elements[e].abs());return n}}class Fr extends Pr{constructor(e){super(e===void 0?{zeroCtor:X}:{...e,zeroCtor:X})}clone(){return new Fr({copy:this})}constructFromMPValues(e,t){this.m_elements.length=0;for(let n=0;n<=t;++n)this.m_elements.push(new X({coef0:e[n]}));return this.updatePower(),this}}function Ir(){return{polypoly1:new Fr,polypoly2:new Fr,polyX2:new X,polyY2:new X,polyX2Deriv:new X,polyY2Deriv:new X,polypolyX1:new Fr,polypolyY1:new Fr,polypolyX1Deriv:new Fr,polypolyY1Deriv:new Fr,lazyPolypolyD1:new Fr,lazyPolypolyD1Deriv:new Fr,lazyPolyD2:new X,lazyPolyD2Deriv:null,polypoly11:new Fr,polypoly12:new Fr,tempPp:new Fr,tempPp1:new Fr,tempPp2:new Fr,tempP:new X,tempP1:new X,tempP2:new X}}function Lr(e,t,r,i,a,o,s,l,u,d,f,p,m,h,g,_,v,y,b,x=!1){let S=Ir();S.polyX2.construct(s,l),S.polyY2.construct(u,d),S.polypolyX1.constructFromMPValues(e,t),S.polypolyY1.constructFromMPValues(r,i),S.polypoly11.assignCopy(S.polypolyX1),S.polypoly12.assignCopy(S.polypolyY1),f&&(S.lazyPolyD2.construct(f,p),S.polypoly11.mulElementThis(S.lazyPolyD2),S.polypoly12.mulElementThis(S.lazyPolyD2)),a?(S.lazyPolypolyD1.constructFromMPValues(a,o),S.lazyPolypolyD1Deriv=new Fr({copy:S.lazyPolypolyD1}),S.lazyPolypolyD1Deriv.derivative1This(),S.tempPp.assignCopy(S.lazyPolypolyD1),S.tempPp.mulElementThis(S.polyX2),S.polypoly11.subThis(S.tempPp),S.tempPp.assignCopy(S.lazyPolypolyD1),S.tempPp.mulElementThis(S.polyY2),S.polypoly12.subThis(S.tempPp)):(S.polypoly11.sub0This(S.polyX2),S.polypoly12.sub0This(S.polyY2)),S.polypolyX1Deriv.assignCopy(S.polypolyX1),S.polypolyX1Deriv.derivative1This(),S.polypolyY1Deriv.assignCopy(S.polypolyY1),S.polypolyY1Deriv.derivative1This(),a&&(S.polypolyX1Deriv.mulThis(S.lazyPolypolyD1),S.tempPp2.assignCopy(S.lazyPolypolyD1Deriv),S.tempPp2.mulThis(S.polypolyX1),S.polypolyX1Deriv.subThis(S.tempPp2),S.polypolyY1Deriv.mulThis(S.lazyPolypolyD1),S.tempPp2.assignCopy(S.lazyPolypolyD1Deriv),S.tempPp2.mulThis(S.polypolyY1),S.polypolyY1Deriv.subThis(S.tempPp2)),S.polyX2Deriv.assignCopy(S.polyX2),S.polyX2Deriv.derivative1This(),S.polyY2Deriv.assignCopy(S.polyY2),S.polyY2Deriv.derivative1This(),f&&(n(S.lazyPolyD2Deriv===null),S.lazyPolyD2Deriv=new X({copy:S.lazyPolyD2}),S.lazyPolyD2Deriv.derivative1This(),S.polyX2Deriv.mulThis(S.lazyPolyD2),S.tempP1.assignCopy(S.lazyPolyD2Deriv),S.tempP1.mulThis(S.polyX2),S.polyX2Deriv.subThis(S.tempP1),S.polyY2Deriv.mulThis(S.lazyPolyD2),S.tempP1.assignCopy(S.lazyPolyD2Deriv),S.tempP1.mulThis(S.polyY2),S.polyY2Deriv.subThis(S.tempP1)),S.polypoly1.assignCopy(S.polypoly11),S.polypoly1.mulElementThis(S.polyX2Deriv),S.tempPp.assignCopy(S.polypoly12),S.tempPp.mulElementThis(S.polyY2Deriv),S.polypoly1.addThis(S.tempPp),S.polypoly2.assignCopy(S.polypolyX1Deriv),S.polypoly2.mulElementThis(S.polyY2Deriv),S.tempPp.assignCopy(S.polypolyY1Deriv),S.tempPp.mulElementThis(S.polyX2Deriv),S.polypoly2.subThis(S.tempPp);let C=[],w=[];v||=[],_||=[],qr(S.polypoly11,S.polypoly12,S.tempP);let T=je.ldexp(-59).toDouble(),E=[],D=Jr(S.tempP,m,g,T,64,E,y,y);if(D<0)return-1;for(let e=0;e<D;e++){let t=S.tempP1,r=S.tempP2;X.evaluateCoefs(S.polypoly11,E[e],t);let i=ut(t.m_elements,t.power()+1);i.sort((e,t)=>e.compare(t)),X.evaluateCoefs(S.polypoly12,E[e],r);let a=ut(r.m_elements,r.power()+1);a.sort((e,t)=>e.compare(t));let o=i[0],s=i.at(-1),l=a[0],u=a.at(-1);s.subThis(o),u.subThis(l);let d=s.subThis(u).GEZ(),f=je.ldexp(-59).toDouble(),p=[],g;if(g=Jr(d?t:r,m,h,f,58,p,y,y),g<0&&c(`mp_curve_proximity`),g>0){let i=d?r:t;for(let t=0;t<g;t++){let r;if(d){let n=S.tempP;X.evaluateCoefs(S.polypoly12,E[e].addDouble(2**-52),n),r=n.evaluate(p[t])}else{let n=S.tempP;X.evaluateCoefs(S.polypoly11,E[e].addDouble(2**-52),n),r=n.evaluate(p[t])}let a=i.evaluateDerivative(p[t]).abs().mulDoubleThis(2**-52),o=i.evaluate(p[t]);a.addThis(r.sub(o).absThis()),a.ldexpThis(3),o.absThis(),o.lt(a)?w.push(Ue(p[t].toDouble(),E[e].toDouble())):n(o.gte(a))}}}D=w.length,qr(S.polypoly1,S.polypoly2,S.tempP);let O=[],k=Jr(S.tempP,m,g,T,64,O);k<0&&(k=0);for(let e=0;e<k;e++){X.evaluateCoefs(S.polypoly1,O[e],S.tempP1);let t=[],n=Jr(S.tempP1,m,h,T,64,t);if(n!==0){if(X.evaluateCoefs(S.polypoly2,O[e],S.tempP2),n<0){if(n=Jr(S.tempP2,m,h,T,64,t),n<0)continue;for(let r=0;r<n;r++)C.push(Ue(t[r].toDouble(),O[e].toDouble()))}else{let r=S.tempP2.absEvaluate(je);r.mulThis(B.constructDouble(1e-12));for(let i=0;i<n;i++){let n=S.tempP2.evaluate(t[i]);n.absThis(),n.lt(r)&&C.push(Ue(t[i].toDouble(),O[e].toDouble()))}}}}if(k=C.length,D===0&&k===0)return 0;C=C.concat(w),C.sort((e,t)=>x?Ze(e.second,t.second):Ze(e.first,t.first));let ee=dt(C,(e,t)=>e.first===t.first&&e.second===t.second);C=C.slice(0,ee),_.length=0,v.length=0;for(let e of C)_.push(e.first),v.push(e.second);return n(_.length===v.length),v.length}function Rr(e,t,n,r,i,a,o){if(e.power()===0)return e.isZero()?-1:0;let s=e.evaluate(B.constructInt32(1)).isZero();if(e.power()===1){let n=Vr(e.getElement(1),e.getElement(0),t,a.at(0));return a[0].limitPrecisionThis(r),n===1?(a[0].limitPrecisionThis(r),1):0}return e.power()===2?Hr(e.getElement(2),e.getElement(1),e.getElement(0),r,t,s,a):e.power()===3?Ur(e.getElement(3),e.getElement(2),e.getElement(1),e.getElement(0),r,t,s,a):e.power()===4?Wr(e.getElement(4),e.getElement(3),e.getElement(2),e.getElement(1),e.getElement(0),r,t,s,a):$r(e,t,n,r,s,i,a,o)}function zr(){return{polyIntersect:new X,polyX1:new X,polyY1:new X,polyX1Deriv:new X,polyY1Deriv:new X,lazyPolyD1:new X,lazyPolyD1Deriv:new X,tempP:new X,tempP1:new X,tempP2:new X,polypoly1Proximity:new Fr,polypoly2Proximity:new Fr}}function Br(e,t,n,r,i,a,o,s,c,l,u,d,f){let p=zr();p.polyX1.construct(e,t),p.polyY1.construct(n,r),p.polyX1Deriv.assignCopy(p.polyX1),p.polyX1Deriv.derivative1This(),p.polyY1Deriv.assignCopy(p.polyY1),p.polyY1Deriv.derivative1This(),p.polyIntersect.assignCopy(p.polyX1),p.polyIntersect.mulThis(p.polyX1),p.polyIntersect.mulElementThis(o[0]),p.tempP.assignCopy(p.polyY1),p.tempP.mulThis(p.polyY1),p.tempP.mulElementThis(o[1]),p.polyIntersect.addThis(p.tempP),i?(p.lazyPolyD1.construct(i,a),p.tempP.assignCopy(p.lazyPolyD1),p.tempP.mulThis(p.lazyPolyD1),p.tempP.mulElementThis(o[2]),p.polyIntersect.addThis(p.tempP)):p.polyIntersect.add0(o[2]);{let i=o[0].clone(),a=i.clone();a.sqrThis();let s=o[1].clone(),c=s.clone();c.sqrThis();let l=o[2].clone(),u=i.clone();u.subThis(s),p.polyX1.construct(e,t),p.polyX1Deriv.assignCopy(p.polyX1),p.polyX1Deriv.derivative1This(),p.polyY1.construct(n,r),p.polyY1Deriv.assignCopy(p.polyY1),p.polyY1Deriv.derivative1This(),p.tempP.assignCopy(p.polyX1),p.tempP.mulThis(p.polyX1),p.tempP.mulElementThis(c),p.tempP.mulElementThis(l),p.polypoly1Proximity.construct0(p.tempP),p.tempP.assignCopy(p.polyX1),p.tempP.mulThis(s.mul(u).mul(l).ldexpThis(1)),p.polypoly1Proximity.addElement(p.tempP),p.tempP.assignCopy(p.polyX1),p.tempP.mulThis(p.polyX1),p.tempP.mulElementThis(i.mul(c)),p.tempP1.assignCopy(p.polyY1),p.tempP1.mulThis(p.polyY1),p.tempP1.mulElementThis(a.mul(s)),p.tempP.addThis(p.tempP1),p.tempP.add0(u.mul(u).mul(l)),p.polypoly1Proximity.addElement(p.tempP),p.tempP.assignCopy(p.polyX1),p.tempP.mulElementThis(u.mul(i).mul(s).ldexpThis(1)),p.polypoly1Proximity.addElement(p.tempP),p.tempP.construct0(i.mul(u).mul(u)),p.polypoly1Proximity.addElement(p.tempP),p.polypoly1Proximity.updatePower(),p.tempP.construct0(lt),p.polypoly2Proximity.construct0(p.tempP),p.tempP.assignCopy(p.polyX1),p.tempP.mulThis(p.polyX1Deriv),p.tempP1.assignCopy(p.polyY1),p.tempP1.mulThis(p.polyY1Deriv),p.tempP.addThis(p.tempP1),p.tempP.mulElementThis(i.mul(s)),p.polypoly2Proximity.addElement(p.tempP),p.tempP.assignCopy(p.polyX1Deriv),p.tempP.mulElementThis(u.mul(i)),p.polypoly2Proximity.addElement(p.tempP),p.polypoly2Proximity.updatePower()}let m=[],h=[];u===null&&(u=[]);let g=2*p.polyIntersect.power()+58,_=2**-52*.5,v=[],y=Jr(p.polyIntersect,s,c,_,g,v,d,d);if(y<0)return-1;for(let e of v)h.push(e.toDouble());qr(p.polypoly1Proximity,p.polypoly2Proximity,p.tempP),g=2*p.tempP.power()+58,v.length=0;let b=Jr(p.tempP,s,c,_,g,v);if(b<0&&(b=0),y===0&&b===0)return 0;for(let e of v)m.push(e.toDouble());let x=m.concat(h);u.length=x.length,me(u,x,0,0,x.length),et(u);let S=dt(u,(e,t)=>Ze(e,t)===0);return u.length=S,u.length}function Vr(e,t,n,r){return e.isZero()?t.isZero()?-1:0:(r.setThis(t),r.negateThis(),r.divThis(e),n.isEmpty()?1:+!!n.containsCoordinate(r.value()))}function Hr(e,t,n,r,i,a,o){if(e.isZero())return a?(o[0].setInt32(1),+!!i.containsCoordinate(1)):Vr(t,n,i,o[0]);if(a){let t=2;return o[0].setInt32(1),n.equals(e)?(o[1].setInt32(1),t=1):o[1].setThis(n.div(e)),i.containsCoordinate(o[1].value())||(t=1),i.containsCoordinate(o[0].value())||(t--,o[0].setThis(o[1])),t===2&&o[0].value()>o[1].value()&&(o[1]=R(o[0],o[0]=o[1])),t}let s=t.clone();s.sqrThis();let c=e.clone();if(c.mulThis(n).ldexpThis(2).negateThis().addThis(s),c.LZ())return 0;let l=r+2,u=B.sqrt(c,l),d=u.clone();t.LZ()&&d.negateThis(),d.addThis(t).limitPrecisionThis(l).ldexpThis(-1).negateThis();let f=0;return o[0].setThis(d).divThis(B.constructAssign(e,l)).limitPrecisionThis(r),(i.isEmpty()||i.containsCoordinate(o[0].value()))&&f++,!u.isZero()&&!d.isZero()?(o[f].setThis(n).divThis(d).limitPrecisionThis(r),(i.isEmpty()||i.containsCoordinate(o[f].value()))&&f++,f===2&&o[0].gt(o[1])&&(o[1]=R(o[0],o[0]=o[1])),f):f}function Ur(e,t,r,i,a,o,s,c){if(e.isZero())return Hr(t,r,i,a,o,s,c);let l=(e,t)=>{if(e>0){let n=t+e;for(let e=1;e<n;e++)c[e].equals(c[0])&&(c[n-1]=R(c[e],c[e]=c[n-1]),n--);t=n}return _e(c,0,t,(e,t)=>e.compare(t)),t};if(i.isZero()){let n=0;return o.containsCoordinate(0)&&(c[0].setInt32(0),n=1),l(Hr(e,t,r,a,o,s,c.slice(1)),n)}if(s){let n=0;o.containsCoordinate(1)&&(c[0].setInt32(1),n=1);let r=t.add(e),s=i.negate();return l(Hr(e,r,s,a,o,e.add(r).add(s).isZero(),c.slice(n)),n)}let u=new B,d=new B,f=new B,p=t.clone();if(p.isZero())d.setThis(r),d.divThis(e),f.setThis(i),f.divThis(e);else{p.divThis(e).divDoubleThis(3).negateThis();let n=t.clone();n.sqrThis();let a=e.clone();a.sqrThis(),d.setThis(e),d.mulThis(r).mulDoubleThis(3).subThis(n).divThis(a).divDoubleThis(3),f.setThis(n),f.mulThis(t),f.ldexpThis(1),u.setThis(e),u.mulThis(t).mulThis(r).mulDoubleThis(9),f.subThis(u),u.setThis(a),u.mulThis(i).mulDoubleThis(27),f.addThis(u),f.divThis(a).divThis(e).divDoubleThis(27)}if(d.isZero()){let e=f.clone();return e.negateThis(),e.isZero()?(c[0].setThis(p),ti(o,a,c,1)):(c[0].setThis(B.cubicRoot(e,a).add(p)),ti(o,a,c,1))}let m=f.clone();if(m.sqrThis().ldexpThis(-2),u.setThis(d.clone()),u.sqrThis().mulThis(d).divDoubleThis(27),m.addThis(u),m.isZero())return c[0].setThis(f),c[0].mulDoubleThis(3).divThis(d),c[1].setThis(c[0]),c[1].negateThis(),c[1].ldexpThis(-1),c[0].addThis(p),c[1].addThis(p),ti(o,a,c,2);if(m.GZ())return m.setThis(B.sqrt(m,a+8)),u.setThis(f),u.ldexpThis(-1).negateThis(),u.addThis(m),c[0].setThis(B.cubicRoot(u,a+8)),u.setThis(f),u.ldexpThis(-1).negateThis(),u.subThis(m),c[0].addThis(B.cubicRoot(u,a+8)),c[0].addThis(p),ti(o,a,c,1);u.setThis(d),u.divDoubleThis(3).negateThis(),n(u.GEZ());let h=B.sqrt(u,a+8),g=h.clone();g.negateThis(),g.addThis(p),h.addThis(p);let _=B.constructDouble(o.isEmpty()?-Number.MAX_VALUE:o.vmin),v=B.constructDouble(o.isEmpty()?Number.MAX_VALUE:o.vmax),y=new X({zeroCtor:B});y.construct0(i),y.addElement(r),y.addElement(t),y.addElement(e);let b=new X({copy:y});b.derivative1This();let x=0,S=U(B,4);S[x++].setThis(_),g.gt(_)&&g.lt(v)&&S[x++].setThis(g),h.gt(_)&&h.lt(v)&&S[x++].setThis(h),S[x++].setThis(v);let C=a*3,w=52,T=2**-52;for(;w<C;)2*w<=C?(T*=T,w*=2):(T*=2**-52,w+=52);w+=2;let E=0,D=!1;for(let e=1;e<x;e++)if(Zr(y,b,S[e-1],S[e],T,w,c[0])){E=1,D=e+1<x;break}if(!E)return 0;if(D){let e=new X({zeroCtor:B,coef0:c[0]});e.negateThis(),e.addElement(je);let t=new X({zeroCtor:B}),r=new X({zeroCtor:B});y.div(e,t,r),n(t.power()===2),n(r.power()===0);let i=Hr(t.getElement(2),t.getElement(1),t.getElement(0),a,o,!1,c.slice(1));n(i>=0&&i<=2),E+=i}return ti(o,a,c,E)}function Wr(e,t,n,r,i,a,o,s,c){if(e.isZero())return Ur(t,n,r,i,a,o,s,c);let l=(e,t)=>{if(e>0){let n=t+e;for(let e=1;e<n;e++)c[e].equals(c[0])&&(c[n-1]=R(c[e],c[e]=c[n-1]),n--);t=n}return _e(c,0,t,(e,t)=>e.compare(t)),t};if(i.isZero()){let i=0;return o.containsCoordinate(0)&&(c[0].setInt32(0),i=1),l(Ur(e,t,n,r,a,o,s,c.slice(i)),i)}let u=new X({zeroCtor:B,coef0:i});if(u.addElement(r),u.addElement(n),u.addElement(t),u.addElement(e),s){let e=0;o.containsCoordinate(1)&&(c[0].setInt32(1),e=1);let t=new X({zeroCtor:B,coef0:B.constructInt32(-1)});t.addElement(B.constructInt32(1));let n=new X({zeroCtor:B}),r=new X({zeroCtor:B});return u.div(t,n,r),l(Ur(n.power()===3?n.getElement(3):lt.clone(),n.power()>=2?n.getElement(2):lt.clone(),n.power()>=1?n.getElement(1):lt.clone(),n.getElement(0),a,o,n.evaluate(je).isZero(),c.slice(e)),e)}if(u.getElement(0).isZero()){let e=0;for(o.containsCoordinate(0)&&(e=1,c[0].setDouble(0));u.getElement(0).isZero()&&u.power()>0;)u.shiftRight(1);let t=Ur(u.power()===3?u.getElement(3):lt.clone(),u.power()>=2?u.getElement(2):lt.clone(),u.power()>=1?u.getElement(1):lt.clone(),u.getElement(0),a,o,!1,c.slice(e));return t>0&&(e+=t),_e(c,0,e,(e,t)=>e.compare(t)),e}let d=52,f=2**-52;for(;d<a;)2*d<=a?(f*=f,d*=2):(f*=2**-52,d+=52);d+=2;let p=ei(u),m=B.constructDouble(Math.max(Math.abs(o.vmax),Math.abs(o.vmin)));return f=(p.lt(m)?p:m).mul(B.constructDouble(f)).toDouble(),$r(u,o,f,d,s,!1,c,4)}function Gr(e,t){let n=e,r=t;r.power()>n.power()&&(r=R(n,n=r));let i=n.power()-r.power(),a=new X({copy:n.getElement(n.power())});n.mulThis(r.getElement(r.power()));for(let e=0,t=n.power();e<t;e++)if(e>=i){let t=new X({copy:r.getElement(e-i)});t.mulThis(a);let o=n.getElement(e).sub(t);n.setElement(e,o)}n.setElement(n.power(),n.getElement(n.power()).setZero()),n.updatePower(),Kr(n)}function Kr(e){let t=0;for(;t<e.power()&&e.getElement(t).isZero();)t++;return t>0&&(e.shiftRight(t),!0)}function qr(e,t,n){let r=e.clone(),i=t.clone();for(Kr(r),Kr(i);r.power()!==0||i.power()!==0;)Gr(r,i);n.assignMove(r.getElement(0))}function Jr(e,t,n,r,i,a,o=!1,s=!1){a.length=0;let c=e.power(),l=U(B,2*c+4),u=Rr(e,n||F.unit(),r,i,!1,l,l.length);if(u>0){a.length=0;for(let e=0;e<u;e++){let t=l[e];e>0&&t.lte(a.at(-1))||a.push(t.clone())}return a.length}return u}function Yr(e,t,r){if(n(r>=1),e.power()===0)return e.isZero()?-1:0;let i=e.getElement(0);return i.negateThis(),i.divThis(e.getElement(1)),t[0].setThis(i),1}function Xr(e,t,r,i){if(e.power()<2)return Yr(e,r,i);n(i>=1);let a=e.getElement(1);a.mulThis(e.getElement(1));let o=e.getElement(0);if(o.mulThis(e.getElement(2)),o.ldexpThis(2),a.subThis(o),a.LZ())return 0;if(a.isZero()){let n=e.getElement(1);return n.negateThis(),n.divThis(e.getElement(2)),n.ldexpThis(-1),n.limitPrecisionThis(t),r[0].setThis(n),1}n(i>=2),a=B.sqrt(a,t+8);let s=e.getElement(1);s.negateThis();let c=s.clone();c.subThis(a),c.divThis(e.getElement(2)),c.ldexpThis(-1),c.limitPrecisionThis(t);let l=s.clone();return l.addThis(a),l.divThis(e.getElement(2)),l.ldexpThis(-1),l.limitPrecisionThis(t),c.lt(l)?(r[0].setThis(c),r[1].setThis(l)):(r[1].setThis(c),r[0].setThis(l)),2}function Zr(e,t,n,r,i,a,o){let s=n.clone(),l=r.clone();s.limitPrecisionThis(a),l.limitPrecisionThis(a);let u=e.evaluate(s);u.limitPrecisionThis(a+2);let d=e.evaluate(l);if(d.limitPrecisionThis(a+2),u.GEZ()&&d.GEZ()||u.LEZ()&&d.LEZ())return u.absLessAbs(d)?(o=s,u.isZero()):(o=l,d.isZero());let f=d.LZ();f&&(d=R(u,u=d),l=R(s,s=l));let p=f?l:s,m=f?s:l,h=s.add(l).ldexpThis(-1);h.limitPrecisionThis(a);let g=l.sub(s);g.limitPrecisionThis(a),g.absThis();let _=g.clone(),v=e.evaluate(h),y=t.evaluate(h),b=new X({copy:e}),x=new X({copy:t});{let n=Math.max(e.hiBitIndex(),t.hiBitIndex()),r=je.clone();r.ldexpThis(-(a+2));for(let i=64;i<n;){b.limitPrecisionThis(i),x.limitPrecisionThis(i);let a=b.evaluate(h),o=x.evaluate(h),s=a.sub(v),c=o.sub(y);if(s.divThis(v).absThis().lt(r)&&(y.isZero()||c.divThis(y).absThis().lt(r)))break;b.assignCopy(e),x.assignCopy(t),i=Math.min(i+64,n)}v.limitPrecisionThis(a+2),y.limitPrecisionThis(a+2)}let S=4,C=1,w=0,T=0,E=1,D=B.constructDouble(i*.25),O=B.constructDouble(.5001),k=0;for(;++k<300;){if(k>32&&w>0||y.isZero()||E===2&&w>1||E===1&&S<4)E=1,C>1&&C--;else if(E=2,T>1){let e=g.mul(y);e.absThis(),e.ldexpThis(-3),e.absLessAbs(v)&&C++}g.setThis(_);let e=new B,t=!1;if(E===1)do{if(T>2){let t=g.clone();if(t.absThis(),t.ldexpThis(4),m.sub(p).ldexpThis(-1).gt(t)){if(h.equals(p)){e.setThis(h),h.setThis(p.add(t)),h.limitPrecisionThis(a),_.setThis(h.sub(e));break}if(h.equals(m)){e.setThis(h),h.setThis(m.sub(t)),h.limitPrecisionThis(a),_.setThis(h.sub(e));break}}}_.setThis(l.sub(s)),_.ldexpThis(-1),_.limitPrecisionThis(a),e.setThis(h),h.setThis(s.add(_)),h.limitPrecisionThis(a),h.lt(p)?h.setThis(p):h.gt(m)&&h.setThis(m),t=s.equals(h)||l.equals(h)}while(0);else for(;;){if(_.setThis(v.div(y)),_.limitPrecisionThis(a),C!==1&&_.mulDoubleThis(C),e.setThis(h),h.subThis(_),h.limitPrecisionThis(a),t=h.equals(e),h.lt(p)){if(C>1){h.setThis(e),C--;continue}_.setThis(e.sub(p)),h.setThis(p)}else if(h.gt(m)){if(C>1){h.setThis(e),C--;continue}_.setThis(e.sub(m)),h.setThis(m)}break}if(t||_.absLessAbs(D)){e.equals(h)||(v=b.evaluate(h),v.limitPrecisionThis(a+2));break}v=b.evaluate(h),v.limitPrecisionThis(a+2),y=x.evaluate(h),y.limitPrecisionThis(a+2);let n=s.clone(),r=l.clone();v.LZ()?(u.setThis(v),s.setThis(h)):(d.setThis(v),l.setThis(h)),E===2&&(s.equals(n)&&l.equals(r)||T>1&&!_.absLessAbs(O.mul(g)))?w++:w=0,E===1?(S++,T=0):(S=0,T++)}return k>=300&&c(`Root_finder iterations exceeded`),o.setThis(h),!0}function Qr(e,t,n,r,i){let a=e.evaluate(n);if(a.isZero())return!0;let o=B.constructDouble(r*.5),s=n.clone();s.subThis(o);let c=e.evaluate(s),l=n.clone();l.addThis(o);let u=e.evaluate(l);if(c.LZ()&&u.GZ()||c.GZ()&&u.LZ()||(a.GZ()?c.LEZ()||u.LEZ():c.GEZ()||u.GEZ()))return!0;let d=c.LEZ()&&u.LEZ(),f=c.GEZ()&&u.GEZ(),p=!1;return d?a.gt(c)&&a.gt(u)&&(p=!0):f&&a.lt(c)&&a.lt(u)&&(p=!0),p?a.absThis().lt(B.constructDouble(1e-17)):!1}function $r(e,t,r,i,a,o,s,c){n(r>0),n(c>=e.power());let l=s,u=[],d=[],f=new X({zeroCtor:e.m_zeroCtor}),p=new X({zeroCtor:e.m_zeroCtor}),m=new X({zeroCtor:e.m_zeroCtor}),h=B.constructDouble(r),g=B.constructDouble(t.vmin),_=B.constructDouble(t.vmax),v=g.sub(h),y=_.add(h),b=ei(e),x=b.clone();if(x.negateThis(),v.lt(x))v.setThis(x.sub(h));else if(v.gt(b))return 0;if(y.gt(b))y.setThis(b.add(h));else if(y.lt(x))return 0;let S=e,C=null;if(a){let t=new X({coef0:B.constructInt32(-1)});t.addElement(je),C=new X,S=C;let n=new X,r=new X;for(e.div(t,n,r),C.assignCopy(n);S.evaluate(je).isZero();)S.div(t,n,r),C.assignCopy(n)}let w=!1;if(S.power()>0&&S.getElement(0).isZero())for(w=!0,C||(C=new X({copy:S}),S=C);S.getElement(0).isZero();)C.shiftRight(1);let T=i+S.power()*2+2,E=r/2**(S.power()+2),D=T;if(lt.gt(v)&<.lt(y)){for(let e=0,t=S.power();e<t;e++)if(S.getElement(e).isZero()){u.push(lt.clone());break}}for(let e=S.power()-1;e>0;e--){if(E*=2,T-=2,D-=2,S.power()-e===1){p.assignMove(S.derivative(e)),Yr(p,l,c)===1&&(l[0].gt(v)&&l[0].lt(y)&&!l[0].isZero()&&u.push(l[0].clone()),f.assignMove(p),m.assignMove(S.derivative(e-1)));continue}if(S.power()-e===2){p.assignMove(S.derivative(e));let t=Xr(p,T,l,c);n(t>=0&&t<=2);for(let e=0;e<t;e++)l[e].gt(v)&&l[e].lt(y)&&!l[e].isZero()&&u.push(l[e].clone());if(u.length>1&&u.sort((e,t)=>e.compare(t)),u.length>0){let e=u[0].sub(h);e.limitPrecisionThis(D),d.push(Ue(v.clone(),e));let t=u.length===1?y.clone():u[1].sub(h);e=u[0].add(h),e.limitPrecisionThis(D),t.limitPrecisionThis(D),d.push(Ue(e,t)),u.length>1&&(t=u.length===2?y.clone():u[2].sub(h),t.limitPrecisionThis(D),e=u[1].add(h),e.limitPrecisionThis(D),d.push(Ue(e,t)),u.length>2&&(e=u[2].add(h),e.limitPrecisionThis(D),d.push(Ue(e,y.clone()))))}else d.push(Ue(v.clone(),y.clone()));f.assignCopy(p),m.assignMove(S.derivative(e-1));continue}{p.assignMove(m),m.assignMove(S.derivative(e-1));let t=[];for(let e=0,n=d.length;e<n;++e)if(d[e].first.lte(d[e].second)){let n=new B;if(Zr(p,f,d[e].first,d[e].second,E,T,n)){u.push(n);let r=n.sub(h);r.limitPrecisionThis(D),t.push(Ue(d[e].first,r)),r=n.add(h),r.limitPrecisionThis(D),t.push(Ue(r,d[e].second))}else t.push(d[e])}d=t,t=[],f.assignMove(p)}}u.sort((e,t)=>e.compare(t)),d.length===0&&(f.assignMove(S.derivative(S.power())),f.isZero()||d.push(Ue(v.clone(),y.clone())));let O=0,k=0,ee=0,A=new B;for(;;){if(k<d.length){if(d[k].first.gt(d[k].second)){k++;continue}let e=!1;if(ee<u.length&&u[ee].lt(d[k].first)&&(e=!0),!e){Zr(S,f,d[k].first,d[k].second,r,i,A)&&(A.lt(g)?l[O++].setThis(g):A.gt(_)?l[O++].setThis(_):l[O++].setThis(A)),k++;continue}}if(ee<u.length){(ee===0||!u[ee-1].equals(u[ee]))&&Qr(S,f,u[ee],r)&&(A.setThis(u[ee]),A.lt(g)?A.setThis(g):A.gt(_)&&A.setThis(_),(O===0||!l[O].equals(A))&&l[O++].setThis(A)),ee++;continue}break}return w&<.gt(v)&<.lt(y)&&(l[O++].setThis(lt),_e(l,0,O,(e,t)=>e.compare(t))),a&&je.gt(v)&&je.lt(y)&&(l[O++].setThis(je),_e(l,0,O,(e,t)=>e.compare(t))),O}function ei(e){let t=e.getElement(e.power());t.limitPrecisionThis(53),t.absThis();let n=lt.clone();for(let t=0,r=e.power();t<r;t++){let r=e.getElement(t);r.limitPrecisionThis(53),r.gt(n)&&n.setThis(r)}return n.divThis(t),n.addThis(je),n.mulThis(B.constructDouble(1+2**-52*100)),n}function ti(e,t,n,r){let i=r;if(!e.isEmpty()){i=0;for(let t=0;t<r;++t)e.containsCoordinate(n[t].value())&&(i!==t&&n[i].setThis(n[t]),i++)}i>1&&(n[0].gt(n[1])&&(n[1]=R(n[0],n[0]=n[1])),i>2&&(n[0].gt(n[2])&&(n[2]=R(n[0],n[0]=n[2])),n[1].gt(n[2])&&(n[2]=R(n[1],n[1]=n[2]))));for(let e=0;e<i;++e)n[e].limitPrecisionThis(t);return i}function ni(e,t,n,r,i,a){return ai(e,t,n,a,r,i)}function ri(e,t,n,r,i,a){let o=i;if(r)return a[0]=1,o=.5*(t-e)*(n(e)+n(t)),o;let s=a[0],c=(t-e)/s,l=e,u=new Ee(0);for(let e=1;e<=a[0];++e){let t=(e-.5)*c;u.add(n(l+t))}return o=.5*(o+(t-e)*u.getResult()/s),a[0]*=2,o}function ii(e,t,n,r,i,a,o){let s=0,c=Math.abs(i-n[e]),l=I(t,NaN),u=I(t,NaN);for(let a=0;a<t;++a){let t=Math.abs(i-n[e+a]);t<c&&(s=a,c=t),l[a]=r[e+a],u[a]=r[e+a]}let d=0,f=0,p=0;a[0]=r[e+s],s--;for(let r=1;r<t;r++){for(let a=0;a<t-r;a++){if(f=n[e+a]-i,p=n[e+a+r]-i,d=f-p,d===0)return!1;let t=(l[a+1]-u[a])/d;l[a]=f*t,u[a]=p*t}2*(s+1)<t-r?o[0]=l[s+1]:(o[0]=u[s],s--),a[0]+=o[0]}return!0}function ai(e,n,r,i,a,o){if(r<n&&t(`xTo < xFrom`),r===n)return 0;let s=[0],l=Number.MAX_VALUE,u=[Number.MAX_VALUE],d=0,f=I(33,NaN),p=I(33,NaN),m=[0];f[0]=1;let h=0,g=0;for(let t=0;t<32;t++){if(d=ri(n,r,i,t===0,d,m),p[t]=d,t+1>=e){ii(t+1-e,e,f,p,0,s,u)||c(`polynomial_interpolation`);let n=a*Math.abs(s[0])+o,r=Math.abs(l-s[0]);if(r<=n&&Math.abs(u[0])<=n){if(h++,h>1&&(r<=.1*g||g===0||h>2))return s[0]}else h=0;g=r,l=s[0]}p[t+1]=p[t],f[t+1]=.25*f[t]}return s[0]}class oi{specialPoints;specialPointsLength;area;centroid_x;centroid_y;constructor(){this.area=NaN,this.centroid_x=NaN,this.centroid_y=0,this.specialPoints=[],this.specialPointsLength=[]}specialPointsCount(){return this.specialPoints.length}}let si=class{b;len;constructor(e,t){this.b=e,this.len=t}getMaxDerivative(){return 1}getValue(e,t){return e===0?this.len-pi(this.b,t,!1):0}getError(e){return n(0),0}};function ci(e,t,n,r,i){let a=!0,o=U(L,3);e.queryControlPoints(o);let s=+!a,c=o[1][s]-o[0][s],l=o[2][s]-o[0][s],u=ni(5,t,n,r,i,e=>{let t;if(e<=.5){let n=Ne(0,c,e),r=Ne(c,l,e);t=Ne(n,r,e)}else{let n=Pe(0,c,e),r=Pe(c,l,e);t=Pe(n,r,e)}let n=vi(o,1,e);return t*n.length()});a=!1,s=+!a,c=o[1][s]-o[0][s],l=o[2][s]-o[0][s];let d=ni(5,t,n,r,i,e=>{let t;if(e<=.5){let n=Ne(0,c,e),r=Ne(c,l,e);t=Ne(n,r,e)}else{let n=Pe(0,c,e),r=Pe(c,l,e);t=Pe(n,r,e)}let n=vi(o,1,e);return t*n.length()});return new L(u,d)}function li(e){e.m_cachedValues=null}function ui(e,t){t.m_cachedValues=R(e.m_cachedValues,e.m_cachedValues=t.m_cachedValues)}function di(e){if(e.m_cachedValues)return e.m_cachedValues;let t=new oi;return fi(e,t.specialPoints),Ti(e,t),t}function fi(e,t){let n=U(L,3);e.queryControlPoints(n);let r=U(H,8);r[0].set(0);let i=1;{let e=U(H,3);qi(n,e,!1);let t=U(H,2),a=new F(0,1),o=vr(e[2].mul(2),e[1],a,t[0]);o<0&&(o=0);for(let e=0;e<o;e++)W(t[e].value(),0,1)||(r[i]=t[e],i++)}{let e=U(H,3);Ji(n,e,!1);let t=U(H,2),a=new F(0,1),o=vr(e[2].mul(2),e[1],a,t[0]);o<0&&(o=0);for(let e=0;e<o;e++)W(t[e].value(),0,1)||(r[i]=t[e],i++)}if(r[i].set(1),i++,i>2){_e(r,0,i,(e,t)=>e.value()-t.value());let e=0,t=r[0].value(),n=1;for(let a=1;a<i;a++){if(r[a].eq(r[a-1])){t+=r[a].value(),n++;continue}n>1&&(t/=n,r[e].set(t)),e++,r[e]=r[a],t=r[a].value(),n=1}e++,i=e}r[0].set(0),r[i-1].set(1),t.length=i;for(let e=0;e<i;e++)t[e]=r[e].value()}function pi(e,t,n){let r=U(L,3);return e.queryControlPoints(r),mi(r,t,n)}function mi(e,t,n){if(n){if(t<0)return t;if(t>1)return t-1+mi(e,1,!1)}if(t===1)return hi(e);let r=U(L,3);return Fi(e,t,r,null),hi(r)}function hi(e){if(e[0].equals(e[1]))return L.distance(e[2],e[0]);if(e[1].equals(e[2]))return L.distance(e[0],e[2]);let t=L.distance(e[0],e[1])+L.distance(e[2],e[1]),n=L.distance(e[0],e[2]);if(t-n<=t*2**-52)return n;let r=U(L,3);Gi(e,r,!0);let i=4*(Xe(r[2].x)+Xe(r[2].y)),a=2*(r[2].x*r[1].x+r[2].y*r[1].y),o=Xe(r[1].x)+Xe(r[1].y);if((Math.abs(a)+Math.abs(o))*1e-14>=Math.abs(i))return Math.abs(o)*1e-14>=Math.abs(a)?Math.sqrt(o)*1:2/(3*a)*((a*1+o)**1.5-o**1.5);let s=a/i,c=o/i,l=c-s*s,u=1+s;if(l===0)return s>=0&&u>=0||s<=0&&u<=0?Math.abs(Math.sqrt(i)*.5*(u*u-s*s)):Math.sqrt(i)*.5*(u*u+s*s);let d=Math.sqrt(l+u*u),f=Math.sqrt(c);return Math.sqrt(i)*.5*(u*d-s*f+l*Math.log(Math.abs((u+d)/(s+f))))}function gi(e,t){let n=we(t,0,1),r=vi(e,1,n);return r.isZero()&&(r=vi(e,2,n)),r}function _i(e,t,n){let r=U(L,3);return e.queryControlPoints(r),vi(r,t,n)}function vi(e,t,n){if(t===1){let t=e[1].sub(e[0]).mul(1-n).add(e[2].sub(e[1]).mul(n));return t.mulThis(2),t}return t===2?e[2].sub(e[1]).sub(e[1].sub(e[0]).mul(2)):L.construct(0,0)}function yi(e,t,n){{let t=q.constructPoint2D(e[1]).subE(q.constructPoint2D(e[0])),r=new H(1).subE(n),i=q.constructPoint2D(e[2]).subE(q.constructPoint2D(e[1])),a=t.mulE(r).addE(i.mulE(n));return a.mulThisE(new H(2)),a}}function bi(e,t,n){let r=pi(e,1,!1);if(t<=0)return t;if(t>=r)return t-r+1;let i=new si(e,t),a=[0];return sr(i,F.unit(),1,a)!==1&&c(``),a[0]}function xi(e){let t=U(L,3);return e.queryControlPoints(t),Si(t)}function Si(e){return-e[1].sub(e[0]).crossProduct(e[2].sub(e[0]))/3}function Ci(e){let t=L.distance(e.getStartXY(),e.getEndXY()),n=e.calculateUpperLength2D(),r=2**-52*8*n;return n-t<=r}function wi(e){return e.m_cachedValues}function Ti(e,t){e.m_cachedValues=t}function Ei(e,t,n,r,i){h(F.unit().contains(n),`QuadraticBezierHelper::getClosestCoordinateSegment`);let a=U(L,3);e.queryControlPoints(a);let o=Number.MAX_VALUE,s=[0],c=Di(a,t,s);if(n.containsCoordinate(s[0]))o=L.distance(t,c);else{s[0]=n.vmin,Xi(a,s[0],c),o=L.distance(c,t);let e=new L;Xi(a,n.vmax,e);let r=L.distance(e,t);o>r&&(c.setCoordsPoint2D(e),s[0]=n.vmax,o=r)}if(!r)return s[0];if(n.vmin<=0){let r=new L;e.queryCoord2DExtended(-1,r,!0);let i=new L;e.queryCoord2D(n.vmin,i);let a=new Q({start:r,end:i}),l=a.getClosestCoordinate(t,!0);if(l<1){let e=a.getCoord2D(l),n=L.distance(e,t);n<o&&(o=n,s[0]=l-1,c.assign(e))}}if(n.vmin>=1){let r=new L;e.queryCoord2DExtended(2,r,!0);let i=new L;e.queryCoord2D(n.vmax,i);let a=new Q({start:i,end:r}),l=a.getClosestCoordinate(t,!0);if(l>0){let e=a.getCoord2D(l),n=L.distance(e,t);n<o&&(o=n,s[0]=1+l,c.assign(e))}}return s[0]}function Di(e,t,n){let r=e[2].sub(e[1]).sub(e[1].sub(e[0])),i=e[1].sub(e[0]),a=e[0].sub(t),o=a.dotProduct(i),s=a.dotProduct(r)+i.dotProduct(i)*2,c=i.dotProduct(r)*3,l=r.dotProduct(r),u=I(3,NaN),d=ur(l,c,s,o,F.unit(),!1,u),f=e[0].clone(),p=0,m=L.sqrDistance(e[0],t),h=L.sqrDistance(e[2],t);h<m&&(p=1,f.assign(e[2]),m=h);for(let n=0;n<d;n++){let r=new L;Xi(e,u[n],r),h=L.sqrDistance(r,t),h<m&&(m=h,f.assign(r),p=u[n])}return n&&(n[0]=p),f}function Oi(e,t,n,r,i,a){let o=new Ft;if(ki(e,F.unit(),o),o.inflate(i),!o.isIntersectingPoint2D(t))return 0;let s=new L,c=Ei(e,t,F.unit(),!1);return e.queryCoord2D(c,s),L.distance(s,t)<=i?(r&&(r[0]=c),1):0}function ki(e,t,n){let r=U(L,3);e.queryControlPoints(r),Ai(r,t,n)}function Ai(e,t,n){if(t.equalsRange(0,1)){n.setFromPoints(e,3);return}let r=U(L,3);Ii(e,t.vmin,t.vmax,r),n.setFromPoints(r,3)}function ji(e,t,n){n.setEmpty();let r=[];r.push(new F(0,1));let i=Math.max(t.width(),t.height())*.5;for(;r.length;){let a=r.at(-1);r.pop();let o=new Ft;if(Ai(e,a,o),o.isIntersectingW(t)){let e=Math.max(o.width(),o.height());if(t.containsW(o)||e<=i||a.width()<1e-12)n.merge(a);else{let e=a.getCenter();r.push(F.construct(a.vmin,e)),r.push(F.construct(e,a.vmax))}}}}function Mi(e){let t=U(L,3);e.queryControlPoints(t);let n=Ni(t);return n&&(e.m_cp.setCoordsPoint2D(t[1]),e.afterCompletedModification()),n}function Ni(e){let t=!1;for(let n=0;n<2;n++){let r=z(e[0][n],e[2][n]);r>0?(z(e[0][n],e[1][n])<0&&(e[1][n]=e[0][n],t=!0),z(e[1][n],e[2][n])<0&&(e[1][n]=e[2][n],t=!0)):r<0?(z(e[0][n],e[1][n])>0&&(e[1][n]=e[0][n],t=!0),z(e[1][n],e[2][n])>0&&(e[1][n]=e[2][n],t=!0)):e[1][n]!==e[0][n]&&(e[1][n]=e[0][n],t=!0)}return t}function Pi(e,n,r){r===void 0&&(r=n,n=0);let i=new L;if(n<0||r>1)return i.setNAN(),i;if(n>r&&t(`calculate_sub_weighted_centroid`),n===r||e.isDegenerate(0))return i.setCoords(0,0),i;let a=di(e),o=fn(e),s=Math.min(o/e.calculateUpperLength2D(),1e-7),c=n,l=0;for(let e=1,t=a.specialPointsCount();e<t;e++)if(n<a.specialPoints[e]){l=e-1;break}i.setCoords(0,0);for(let t=l+1,n=a.specialPointsCount();t<n;t++){let n=Math.min(a.specialPoints[t],r),l=ci(e,c,n,s,o);if(i.addThis(l),c=n,r<=a.specialPoints[t])break}return i.add(e.getStartXY().mul(e.calculateLength2D()))}function Fi(e,t,n,r){new L().setCoordsPoint2D(e[0]),new L().setCoordsPoint2D(e[1]),new L().setCoordsPoint2D(e[2]);let i=new L,a=new L,o=new L;if(He(e[0],e[1],t,i),He(e[1],e[2],t,a),He(i,a,t,o),n&&(n[0].assign(e[0]),n[1].assign(i),n[2].assign(o)),r){let t=e[2];r[0].assign(o),r[1].assign(a),r[2].assign(t)}}function Ii(e,t,n,r){if(t===n){let n=new L;Xi(e,t,n),r[0]=n,r[1]=n,r[2]=n;return}let i=U(L,3);Fi(e,n,i,null),Fi(i,t/n,null,i),Xi(e,t,i[0]),Xi(e,n,i[2]),r[0].setCoordsPoint2D(i[0]),r[1].setCoordsPoint2D(i[1]),r[2].setCoordsPoint2D(i[2])}function Li(e,t,n,r){if(t.isEqual(e.m_XStart,e.m_YStart)&&n.isEqual(e.m_XEnd,e.m_YEnd))return;let i=r?e.isMonotoneQuickAndDirty():!1,a=new bt,o=U(L,3);o[0].setCoords(e.m_XStart,e.m_YStart),o[2].setCoords(e.m_XEnd,e.m_YEnd);let s=new L;s.setSub(o[2],o[0]),s.leftPerpendicularThis(),o[1].setAdd(o[0],s);let c=U(L,3);c[0].setCoordsPoint2D(t),c[2].setCoordsPoint2D(n),s.setSub(c[2],c[0]),s.leftPerpendicularThis(),c[1].setAdd(c[0],s),a.setFromTwoTriangles(o,c)?a.transformInPlace(e.m_cp):He(t,n,.5,e.m_cp),e.changeEndPoints2D(t,n),i&&Mi(e)}function Ri(e){return e.getStartXY().norm(1)+e.getEndXY().norm(1)+e.m_cp.norm(1)}function zi(e,t,n,r,i){if(i){if(du(t,n)!==0)return e?4:2}else if(Gt(t,n))return 1;return Hi(e,t,n,null,null,null,r,i??!1,!0,!1)===0?0:4}function Bi(e,t,n,r,i){if(i){if(du(t,n)!==0)return e?4:2}else if(Gt(t,n))return 1;return Ui(e,t,n,null,null,null,r,i??!1,!0,!1)===0?0:4}function Vi(e,t,n,r,i){if(i){if(du(t,n)!==0)return 2}else if(Gt(t,n))return 1;return Wi(e,t,n,null,null,null,r,i??!1,!0,!1)===0?0:4}function Hi(e,t,r,i,a,o,s,c,l,u){if(a!=null&&(a.length=0),o!==null&&(o.length=0),i!==null&&(i.length=0),r.isDegenerate(0)){let e=[0,0],n=t.intersectPoint(r.getStartXY(),e,s);if(n>0){if(a!==null)for(let t=0;t<n;t++)a.push(e[t]);if(o!==null)for(let e=0;e<n;e++)o.push(0);if(i!==null)for(let r=0;r<n;r++){let n=new L;t.queryCoord2D(e[r],n),i.push(n)}}return n}let d=pn(t,r);if(s=Math.max(s,d),t.isDegenerateToLineHelper(d)){let e=new Q({start:t.getStartXY(),end:t.getEndXY()}),n=Pn(e,r,i,a,o,s,c,u);if(a)for(let r=0;r<n;++r){let n=e.getCoord2D(a[r]);a[r]=t.getClosestCoordinate(n,!1)}return n}if(mn(t,r,s))return 0;let f=J.constructPoint2D(r.getStartXY()),p=J.constructPoint2D(r.getEndXY()).sub(f),m=p.clone();m.leftPerpendicularThis();let h=J.constructPoint2D(t.m_cp).sub(J.constructPoint2D(t.getStartXY())),g=J.constructPoint2D(t.getEndXY()).sub(J.constructPoint2D(t.m_cp)),_=h.dotProduct(m).toDouble(),v=g.sub(h).dotProduct(m).toDouble(),y=I(12,NaN),b=I(12,NaN),x=cr(v,_,F.unit(),y);x<0&&(y[0]=0,y[1]=1,x=2);let S=0;for(let e=0,n=S;e<x;++e){let i=t.getCoord2D(y[e+n]);b[S]=r.getClosestCoordinate(i,!1),L.distance(i,r.getCoord2D(b[S]))<=s&&(y[S]=y[e+n],S++)}let C,w=U(L,3);t.queryControlPoints(w);{let e=U(J,3);if(Yi(w,e,!1),e[0]=e[0].sub(f),p.x.abs().gte(p.y.abs())){let t=p.y.div(p.x);v=e[2].y.sub(e[2].x.mul(t)).toDouble(),_=e[1].y.sub(e[1].x.mul(t)).toDouble(),C=e[0].y.sub(e[0].x.mul(t)).toDouble()}else{let t=p.x.div(p.y);v=e[2].x.sub(e[2].y.mul(t)).toDouble(),_=e[1].x.sub(e[1].y.mul(t)).toDouble(),C=e[0].x.sub(e[0].y.mul(t)).toDouble()}}let T=t.getEndXY().equals(r.getStartXY())||t.getEndXY().equals(r.getEndXY()),E=[0,0];x=lr(v,_,C,F.unit(),T,E);for(let e=0,n=S;e<x;++e){y[e+n]=E[e];let i=t.getCoord2D(y[e+n]);b[S]=r.getClosestCoordinate(i,!1),L.distance(i,r.getCoord2D(b[S]))<=s&&(y[S]=y[e+n],S++)}n(S<y.length+4),x=t.intersectPoint(r.getStartXY(),E,s);for(let e=0;e<x;e++)y[S]=E[e],b[S++]=0;x=t.intersectPoint(r.getEndXY(),E,s);for(let e=0;e<x;e++)y[S]=E[e],b[S++]=1;x=r.intersectPoint(t.getStartXY(),E,s);for(let e=0;e<x;e++)b[S]=E[e],y[S++]=0;x=r.intersectPoint(t.getEndXY(),E,s);for(let e=0;e<x;e++)b[S]=E[e],y[S++]=0;return S===0?0:gu(e,t,r,y,b,S,i,a,o,s,c,l,u)}function Ui(e,t,n,r,i,a,o,s,c,l){if(Z(n))return Hi(e,t,new Q({start:n.getStartXY(),end:n.getEndXY()}),r,i,a,o,s,c,l);let u=pn(t,n);if(o=Math.max(o,u),mn(t,n,o))return 0;let d=[],f=[],p=U(L,3);{t.queryControlPoints(p);let e=U(L,3),r=new bt;n.canonicToWorldTransformation(r);let i=new bt;i.setInvert(r),i.transformPoints2D(p,3,e);let a=U(J,3);Yi(e,a);let c=[a[0].x,a[1].x,a[2].x],l=[a[0].y,a[1].y,a[2].y],u=U(B,3);u[0].setDouble(n.getSemiMinorAxis()),u[0].sqrThis(),u[1].setDouble(n.getSemiMajorAxis()),u[1].sqrThis(),u[2]=u[0],u[2].mul(u[1]),u[2].negate();let m=Br(c,2,l,2,null,0,u,!0,F.unit(),F.unit(),d,s);if(m>0){let e=0;for(let r=0;r<m;r++){let i=new L;t.queryCoord2D(d[r],i);let a=n.getClosestCoordinate(i,!1),s=new L;n.queryCoord2D(a,s),L.distance(i,s)<=o&&(d[e]=d[r],f.push(a),e++)}d.length=e}}let m=[0,1];for(let e=0;e<2;e++)do{let t=e===0?n.getStartXY():n.getEndXY(),r=[0];Di(p,t,r);let i=new L;Xi(p,r[0],i),L.distance(t,i)<=o&&(d.push(r[0]),f.push(m[e]))}while(0);for(let e=0;e<2;e++){let t=[0,2];do{let r=n.getClosestCoordinate(p[t[e]],!1),i=new L;n.queryCoord2D(r,i),L.distance(p[t[e]],i)<=o&&(d.push(m[e]),f.push(r))}while(0)}return gu(e,t,n,d,f,d.length,r,i,a,o,s,c,l)}function Wi(e,t,n,r,i,a,o,s,c,l){let u=U(L,3);t.queryControlPoints(u);let d=U(L,3);if(n.queryControlPoints(d),hn(u,d,3)<0)return Wi(e,n,t,r,a,i,o,s,c,!l);let f=pn(t,n);if(o=Math.max(o,f),mn(t,n,o))return 0;if(oa(t,n,r,i,a,o,s,c,l))return 2;let p=new F(0,1),m=new F(0,1);{let e=new Ft;Ai(u,F.unit(),e);let t=new Ft;Ai(d,F.unit(),t);let n=Math.max(e.maxDim(),t.maxDim());if(e.inflate(o*3),t.inflate(o*3),!e.intersectW(t))return 0;if(e.maxDim()<n*.1){if(ji(u,e,p),ji(d,e,m),p.isEmpty()||m.isEmpty())return 0;Ii(u,p.vmin,p.vmax,u),Ii(d,m.vmin,m.vmax,d)}}let h=vu(u,2,d,2,o);if(h===0)return 0;let g=[],_=[];if(h===-1){let e=U(J,3);Yi(u,e);let t=[e[0].x,e[1].x,e[2].x],n=[e[0].y,e[1].y,e[2].y],r=U(J,3);Yi(d,r);let i=Lr(t,2,n,2,null,0,[r[0].x,r[1].x,r[2].x],2,[r[0].y,r[1].y,r[2].y],2,null,0,!0,F.unit(),F.unit(),g,_,l,s,l);if(i>0){let e=0;for(let t=0;t<i;t++){let n=new L,r=new L;Xi(d,_[t],r),Xi(u,g[t],n),L.distance(n,r)<=o&&(g[e]=g[t],_[e]=_[t],e++)}g.length=e,_.length=e}}for(let e=0;e<2;e++){let t=e===0?u:d,n=e===0?d:u;for(let r=0;r<2;r++){let i=r===0?0:2,a=[0];Di(n,t[i],a);let s=new L;Xi(n,a[0],s),L.distance(t[i],s)<=o&&(e===0?(g.push(i===0?0:1),_.push(a[0])):(_.push(i===0?0:1),g.push(a[0])))}}if(g.length===0)return 0;if(!p.equalsRange(0,1))for(let e=0;e<g.length;++e)g[e]=Nr.recalculateParentT(p.vmin,p.vmax,g[e]);if(!m.equalsRange(0,1))for(let e=0;e<_.length;++e)_[e]=Nr.recalculateParentT(m.vmin,m.vmax,_[e]);return gu(e,t,n,g,_,g.length,r,i,a,o,s,c,l)}function Gi(e,t,n=!1){let r=e[1].sub(e[0]);t[1].assign(r.mul(2)),t[2].assign(e[2].sub(e[1]).sub(r)),n?t[0].setCoords(0,0):t[0].assign(e[0])}function Ki(e,t,n=!1){let r=U(L,3);e.queryControlPoints(r),Gi(r,t,n)}function qi(e,t,n=!1){let r=new H(e[1][0]).subE(new H(e[0][0]));t[1]=r.mul(2),t[2]=new H(e[2][0]).subE(new H(e[1][0])).subE(r),n?t[0].set(0):t[0].set(e[0][0])}function Ji(e,t,n=!1){let r=new H(e[1][1]).subE(new H(e[0][1]));t[1]=r.mul(2),t[2]=new H(e[2][1]).subE(new H(e[1][1])).subE(r),n?t[0].set(0):t[0].set(e[0][1])}function Yi(e,t,n=!1){let r=J.constructPoint2D(e[1]),i=r.sub(J.constructPoint2D(e[0]));t[1]=i.mul(B.constructInt32(2)),t[2]=J.constructPoint2D(e[2]).sub(r).sub(i),t[0]=n?new J(lt,lt):J.constructPoint2D(e[0])}function Xi(e,t,n,r){if(r){if(t<0){Cn(new Q({start:e[0],end:e[0].add(gi(e,0).getUnitVector())}),t,n);return}if(t>1){Cn(new Q({start:e[2],end:e[2].add(gi(e,1).getUnitVector())}),t-1,n);return}}if(t<=.5){let r=e[1].clone(),i=new L;Je(2,e[0],r,t,i);let a=new L;Je(2,r,e[2],t,a);let o=new L;Je(2,i,a,t,o),n.assign(o)}else{let r=e[1].clone(),i=new L;Ye(2,e[0],r,t,i);let a=new L;Ye(2,r,e[2],t,a);let o=new L;Ye(2,i,a,t,o),n.assign(o)}}function Zi(e,t,n){let r=U(L,3);e.queryControlPoints(r),Qi(r,t,n)}function Qi(e,t,n){if(t.value()<=.5){let r=q.constructPoint2D(e[1]),i=new q;We(2,q.constructPoint2D(e[0]),r,t,i);let a=new q;We(2,r,q.constructPoint2D(e[2]),t,a);let o=new q;We(2,i,a,t,o),n.setE(o)}else{let r=q.constructPoint2D(e[1]),i=new q;Ge(2,q.constructPoint2D(e[0]),r,t,i);let a=new q;Ge(2,r,q.constructPoint2D(e[2]),t,a);let o=new q;Ge(2,i,a,t,o),n.setE(o)}}function $i(e,t,n){let r=U(L,4);e.queryControlPoints(r),ea(r,t,n)}function ea(e,t,n){t.value()<0&&t.set(0,t.eps()),t.value()>1&&t.set(1,t.eps()),n.setE(yi(e,1,t))}function ta(e,t){let n=1;e[1].isEqualPoint2D(e[0])&&(n=2,e[2].isEqualPoint2D(e[0])&&(n=3));let r=2;e[2].isEqualPoint2D(e[3])&&(r=1,e[1].isEqualPoint2D(e[3])&&(r=0)),t[0].assign(e[0]),t[2].assign(e[3]);let i=L.intersectLinesAtOnePoint(e[0],e[n],e[r],e[3]),a=new L;He(e[0],e[3],.5,a);let o=new L;Co(e,.5,o);let s=new L;t[1].assign(i),Xi(t,.5,s);let c=new L;t[1].assign(a),Xi(t,.5,c);let l=L.sqrDistance(o,s),u=L.sqrDistance(o,c);return l<u?(t[1].setCoordsPoint2D(i),Math.sqrt(l)):(t[1].setCoordsPoint2D(a),Math.sqrt(u))}function na(e,t,n){n[0].assign(e[0]),n[1].assign(e[1]),n[2].assign(e[2]);let r=new L;bc(e,t,.5,r);let i=new L;Xi(n,.5,i);let a=L.sqrDistance(r,i);return Math.sqrt(a)}function ra(e,t){t[0].assign(e[0]),t[3].assign(e[2]),He(e[0],e[1],2/3,t[1]),He(e[1],e[2],1/3,t[2])}function ia(e,t){let n=U(L,3);e.queryControlPoints(n);let r=L.sqrDistance(n[1],n[0]),i=L.sqrDistance(n[1],n[2]),a=n[0].clone(),o=r;r>i&&(a=n[2].clone(),o=i);let s=!1;return o<=t&&o!==0&&(s=!0,e.setControlPoint1(a)),s}function aa(e,t){if(!t)return!1;let n=U(L,3);e.queryControlPoints(n);let r=L.sqrDistance(n[1],n[0]),i=L.sqrDistance(n[1],n[2]);n[0].clone();let a=r;return r>i&&(n[2].clone(),a=i),a<=t&&a!==0}function oa(e,t,n,r,i,a,o,s,c){let l=U(L,3);e.queryControlPoints(l);let u=U(L,3);if(t.queryControlPoints(u),l[0].equals(u[0])){if(l[1].equals(u[1])&&l[2].equals(u[2]))return n&&(n.length=0,n.push(l[0]),n.push(l[2])),r&&(r.length=0,r.push(0),r.push(1)),i&&(i.length=0,i.push(0),i.push(1)),!0;if(!l[0].equals(u[2]))return!1}return l[0].equals(u[2])&&l[1].equals(u[1])&&l[2].equals(u[0])?(r&&(r.length=0,r.push(0),r.push(1),c&&(r[1]=R(r[0],r[0]=r[1]))),i&&(i.length=0,i.push(1),i.push(0),c&&(i[1]=R(i[0],i[0]=i[1]))),n&&(n.length=0,n.push(l[0]),n.push(l[2]),c&&(n[1]=R(n[0],n[0]=n[1]))),!0):!1}const sa=[[.33998104358485626,.6521451548625461],[.8611363115940526,.34785484513745385]],ca=[[.1834346424956498,.362683783378362],[.525532409916329,.31370664587788727],[.7966664774136267,.22238103445337448],[.9602898564975363,.10122853629037626]],la=[[.09501250983763744,.1894506104550685],[.2816035507792589,.18260341504492358],[.45801677765722737,.16915651939500254],[.6178762444026438,.14959598881657674],[.755404408355003,.12462897125553388],[.8656312023878318,.09515851168249279],[.9445750230732326,.062253523938647894],[.9894009349916499,.027152459411754096]],ua=[[.04830766568773832,.0965400885147278],[.1444719615827965,.09563872007927486],[.23928736225213706,.09384439908080457],[.33186860228212767,.09117387869576389],[.42135127613063533,.08765209300440381],[.5068999089322294,.08331192422694675],[.5877157572407623,.07819389578707031],[.6630442669302152,.0723457941088485],[.7321821187402897,.06582222277636185],[.7944837959679424,.058684093478535544],[.84936761373257,.050998059262376175],[.8963211557660521,.04283589802222668],[.9349060759377397,.03427386291302143],[.9647622555875064,.02539206530926206],[.9856115115452684,.01627439473090567],[.9972638618494816,.007018610009470096]],da=[[.024350292663424433,.048690957009139724],[.07299312178779904,.04857546744150343],[.12146281929612056,.048344762234802954],[.16964442042399283,.04799938859645831],[.21742364374000708,.04754016571483031],[.2646871622087674,.04696818281621002],[.31132287199021097,.046284796581314416],[.3572201583376681,.04549162792741814],[.4022701579639916,.044590558163756566],[.4463660172534641,.04358372452932345],[.48940314570705296,.04247351512365359],[.5312794640198946,.04126256324262353],[.571895646202634,.03995374113272034],[.6111553551723933,.038550153178615626],[.6489654712546573,.03705512854024005],[.6852363130542333,.035472213256882386],[.7198818501716109,.033805161837141606],[.7528199072605319,.03205792835485155],[.7839723589433414,.030234657072402478],[.8132653151227975,.028339672614259483],[.8406292962525803,.02637746971505466],[.8659993981540928,.024352702568710874],[.8893154459951141,.022270173808383253],[.9105221370785028,.02013482315353021],[.9295691721319396,.017951715775697343],[.9464113748584028,.015726030476024718],[.9610087996520538,.013463047896718643],[.973326827789911,.011168139460131128],[.983336253884626,.008846759826363947],[.9910133714767443,.006504457968978363],[.9963401167719553,.004147033260562468],[.9993050417357722,.001783280721696433]],fa=[[.012223698960615764,.024446180196262518],[.03666379096873349,.024431569097850044],[.06108196960413957,.02440235563384958],[.08546364050451549,.024358557264690626],[.10979423112764375,.024300200167971867],[.13405919946118777,.02422731922281525],[.15824404271422493,.024139957989019287],[.18233430598533718,.024038168681024052],[.2063155909020792,.023922012136703457],[.23017356422666,.023791557781003402],[.2538939664226943,.023646883584447616],[.2774626201779044,.02348807601653591],[.3008654388776772,.02331522999406276],[.32408843502441337,.023128448824387027],[.3471177285976355,.022927844143686846],[.369939555349859,.02271353585023646],[.39254027503326744,.022485652032744968],[.414906379552275,.022244328893799764],[.43702450103710416,.02198971066846049],[.4588814198335522,.021721949538052076],[.48046407240417205,.02144120553920846],[.5017595591361445,.02114764646822135],[.5227551520511755,.02084144778075115],[.5434383024128103,.02052279248696007],[.5637966482266181,.020191871042130043],[.5838180216287631,.01984888123283086],[.6034904561585486,.019494028058706602],[.6228021939105849,.019127523609950944],[.6417416925623075,.01874958694054471],[.660297632272646,.01836044393733134],[.6784589224477192,.017960327185008687],[.6962147083695144,.017549475827117706],[.7135543776835874,.01712813542311138],[.7304675667419088,.016696557801589205],[.746944166797062,.016255000909785187],[.7629743300440948,.015803728659399347],[.7785484755064119,.015343010768865144],[.7936572947621933,.014873122602147314],[.8082917575079137,.014394345004166847],[.8224431169556439,.013906964132951985],[.8361029150609068,.013411271288616333],[.8492629875779689,.012907562739267348],[.8619154689395485,.012396139543950923],[.8740527969580318,.01187730737274028],[.8856677173453972,.011351376324080417],[.8967532880491582,.010818660739503076],[.9073028834017568,.010279479015832158],[.9173101980809605,.009734153415006806],[.9267692508789478,.009183009871660874],[.9356743882779164,.00862637779861675],[.9440202878302202,.008064589890486059],[.9518019613412644,.0074979819256347285],[.9590147578536999,.006926892566898814],[.9656543664319652,.006351663161707189],[.9717168187471366,.005772637542865698],[.9771984914639074,.00519016183267633],[.9820961084357185,.004604584256702955],[.9864067427245862,.004016254983738642],[.9901278184917344,.0034255260409102157],[.9932571129002129,.0028327514714579912],[.9957927585349812,.0022382884309626186],[.997733248625514,.0016425030186690294],[.9990774599773758,.0010458126793403489],[.9998248879471319,.00044938096029209035]];function pa(e,t,n,r){let i=.5*(r-n),a=n+i,o=new Ee(0);for(let n=0,r=Math.trunc(e/2);n<r;++n){let r,s;switch(e){case 4:r=sa[n][0],s=sa[n][1];break;case 8:r=ca[n][0],s=ca[n][1];break;case 16:r=la[n][0],s=la[n][1];break;case 32:r=ua[n][0],s=ua[n][1];break;case 64:r=da[n][0],s=da[n][1];break;case 128:r=fa[n][0],s=fa[n][1];break;default:throw Error(`Quadrature_integral: invalid n`)}let c=ht(-i,r,a),l=ht(i,r,a);o.pe(t(c)*s),o.pe(t(l)*s)}return o.getResult()*i}class ma extends er{static type=i.enumPolygon;constructor(e){e?e.vd?(super({vd:e.vd,bPolygon:!0}),this.m_segmentBufferCTor=$):e.copy?(super({vd:e.copy.getDescription(),bPolygon:!0}),this.m_segmentBufferCTor=$,e.copy.copyTo(this)):e.move?(super({move:e.move}),this.m_segmentBufferCTor=$):e.envelope?s(`envelope constructor not impl`):c(`bad arg to polygon constructor`):(super({bPolygon:!0}),this.m_segmentBufferCTor=$)}assignMove(e){return e.copyTo(this),this}assignCopy(e){return e.copyTo(this),this}getBoundary(){return ar(this)}getExteriorRingCount(){return this.getOGCPolygonCount()}getGeometryType(){return ma.type}getDimension(){return 2}createInstance(){return new ma({vd:this.getDescription()})}equals(e,t){return this.equalsBase(e,t)}}function ha(e,n){let r=n,a=null;r||=(a=g(e)?M():v(),a);let o;switch(e){case i.enumPoint:o=new P({vd:r});break;case i.enumLine:o=new Q({vd:r});break;case i.enumBezier:o=new ls({vd:r});break;case i.enumEllipticArc:o=new zc({vd:r});break;case i.enumRationalBezier2:o=new jr({vd:r});break;case i.enumBezier2:o=new Nr({vd:r});break;case i.enumEnvelope:o=new k({vd:r});break;case i.enumMultiPoint:o=new Pt({vd:r});break;case i.enumPolyline:o=new nr({vd:r});break;case i.enumPolygon:o=new ma({vd:r});break;case i.enumMultipatch:s(`multipatch not impl`);break;case i.enumGeometryCollection:o=new yn({vd:r});break;default:t(`Geometry.create`)}return o}var ga=C;const _a=-1,va=1;class ya{m_shape;constructor(e){this.m_shape=e}userSort(e,t,n){this.m_shape.sortVerticesSimpleByYHelper(n,e,t)}getValue(e){return this.m_shape.getY(e)}}function ba(e){return e.parent!==void 0}class xa{m_parent;m_geometry;m_path;m_vertex;m_firstVertex;m_index;m_bFirst;m_bSkipMultiPoints;m_selection;m_bOneGeom;constructor(e){ba(e)?(this.m_parent=e.parent,this.m_geometry=e.geometry,this.m_path=e.path,this.m_vertex=e.vertex,this.m_firstVertex=e.firstVertex,this.m_index=e.selection?0:e.index,this.m_bSkipMultiPoints=e.bSkipMultiPoints,this.m_selection=e.selection,this.m_bOneGeom=e.bOneGeom,this.m_bFirst=!0):(this.m_parent=e.copy.m_parent,this.m_geometry=e.copy.m_geometry,this.m_path=e.copy.m_path,this.m_vertex=e.copy.m_vertex,this.m_index=e.copy.m_index,this.m_bSkipMultiPoints=e.copy.m_bSkipMultiPoints,this.m_firstVertex=e.copy.m_firstVertex,this.m_bFirst=!0,this.m_selection=e.copy.m_selection,this.m_bOneGeom=e.copy.m_bOneGeom)}moveToNextHelper(){for(this.m_path=this.m_parent.getNextPath(this.m_path),this.m_index=0;this.m_geometry!==-1;){for(;this.m_path!==-1;this.m_path=this.m_parent.getNextPath(this.m_path))if(this.m_vertex=this.m_parent.getFirstVertex(this.m_path),this.m_firstVertex=this.m_vertex,this.m_vertex!==-1)return this.m_vertex;if(this.m_bOneGeom)return-1;if(this.m_geometry=this.m_parent.getNextGeometry(this.m_geometry),this.m_geometry===-1)break;(!this.m_bSkipMultiPoints||u(this.m_parent.getGeometryType(this.m_geometry)))&&(this.m_path=this.m_parent.getFirstPath(this.m_geometry))}return-1}nextSelection(){for(;this.m_index<this.m_parent.m_selectedVertices.length;){let e=this.m_parent.m_selectedVertices[this.m_index++];if(e!==-1&&(this.m_path=this.m_parent.getPathFromVertex(e),!(this.m_bOneGeom&&this.m_geometry!==this.m_parent.getGeometryFromPath(this.m_path))))return this.m_geometry=this.m_parent.getGeometryFromPath(this.m_path),e}return-1}next(){return this.m_selection?this.nextSelection():this.m_bFirst?(this.m_bFirst=!1,this.m_vertex):this.m_vertex===-1?-1:(this.m_vertex=this.m_parent.getNextVertex(this.m_vertex),this.m_index++,this.m_vertex!==-1&&this.m_vertex!==this.m_firstVertex?this.m_vertex:this.moveToNextHelper())}currentGeometry(){return this.m_geometry}currentPath(){return this.m_path}static create_(e,t,n,r,i,a,o,s,c){return new xa({parent:e,geometry:t,path:n,vertex:r,firstVertex:i,index:a,bSkipMultiPoints:o,selection:s,bOneGeom:c})}}class Sa{parentage;constructor(e){this.parentage=e}equals(e){return this.parentage===e.parentage}}class Ca{m_pathCount;m_pointCount;m_firstGeometry;m_lastGeometry;m_vertexIndexList;m_verticesMp=null;m_vertices=null;m_xyStream=null;m_vertexDescription=null;m_bHasAttributes;m_segments=null;m_weights=null;m_ranks=null;m_segmentWeights=null;m_segmentRanks=null;m_indices=[];m_deletedIndices=[];m_pathIndexList;m_pathAreas=[];m_pathLengths=[];m_pathindices=[];m_deletedPathIndices=[];m_geometryIndexList;m_geometryIndices=[];m_selectedVertices=[];m_selectedCount;m_selectionIndex;m_selection;m_bucketSort;m_helperPoint=null;m_forceSetEnvelope=w.constructEmpty();m_hasForceSetEnvelope=0;m_workPoint2D=L.getNAN();m_workPoint2_2D=L.getNAN();m_segmentParentageIndex;m_curveStitcher=null;setPrevPath(e,t){this.m_pathIndexList.setField(e,1,t)}setNextPath(e,t){this.m_pathIndexList.setField(e,2,t)}setPathFlags(e,t){this.m_pathIndexList.setField(e,6,t)}getPathFlags(e){return this.m_pathIndexList.getField(e,6)}setPathGeometry(e,t){this.m_pathIndexList.setField(e,7,t)}getPathIndex(e){return this.m_pathIndexList.getField(e,0)}setNextGeometry(e,t){this.m_geometryIndexList.setField(e,1,t)}setPrevGeometry(e,t){this.m_geometryIndexList.setField(e,0,t)}getGeometryIndex(e){return this.m_geometryIndexList.getField(e,7)}setFirstPath(e,t){this.m_geometryIndexList.setField(e,3,t)}setLastPath(e,t){this.m_geometryIndexList.setField(e,4,t)}newGeometry(e){let t=this.m_geometryIndexList.newElement();return this.m_geometryIndexList.setField(t,2,e),this.m_geometryIndexList.setField(t,5,0),this.m_geometryIndexList.setField(t,6,0),this.m_geometryIndexList.setField(t,7,this.m_geometryIndexList.elementToIndex(t)),t}freeGeometry(e){this.m_geometryIndexList.deleteElement(e)}newPath(e){let t=this.m_pathIndexList.newElement(),n=this.m_pathIndexList.elementToIndex(t);if(this.m_pathIndexList.setField(t,0,n),this.m_pathIndexList.setField(t,3,0),this.m_pathIndexList.setField(t,6,0),this.setPathGeometry(t,e),n>=this.m_pathAreas.length){let e=Math.trunc(n<16?16:n*3/2);this.m_pathAreas.length=e,this.m_pathLengths.length=e}return this.m_pathAreas[n]=0,this.m_pathLengths[n]=0,this.m_pathCount++,t}freePath(e){this.m_pathIndexList.deleteElement(e),this.m_pathCount--}newVertex(e){let t=this.m_vertexIndexList.newElement(),n=e>=0?e:this.m_vertexIndexList.elementToIndex(t);if(this.m_vertexIndexList.setField(t,0,n),e<0){if(n>=this.m_vertices.getPointCount()){let e=Math.trunc(n<16?16:n*3/2);this.m_vertices.reserveRounded(e),this.m_vertices.resizeNoInit(e),this.m_segments!==null&&(this.m_segments.length=e),this.m_xyStream=this.m_vertices.getAttributeStreamRef(0)}this.m_segments&&(this.m_segments[n]=null)}return this.m_pointCount++,t}freeVertex(e){this.unselect(e);let t=this.getVertexIndex(e);this.m_vertexIndexList.deleteElement(e),this.m_pointCount--;for(let e=0,n=this.m_indices.length;e<n;e++){if(e===this.m_selectionIndex)continue;let n=this.m_indices[e];n!==null&&n.size()>t&&n.write(t,-1)}this.m_weights&&this.m_weights.size()>t&&this.m_weights.write(t,1),this.m_ranks&&this.m_ranks.size()>t&&this.m_ranks.write(t,1),this.m_segmentWeights&&this.m_segmentWeights.size()>t&&this.m_segmentWeights.write(t,1),this.m_segmentRanks&&this.m_segmentRanks.size()>t&&this.m_segmentRanks.write(t,1),this.m_segments&&this.setSegmentToIndex(t,null)}insertVertex_(e,t,n,r){this.m_hasForceSetEnvelope=0;let i=t===-1?this.getLastVertex(e):this.getPrevVertex(t),a=i===-1?-1:this.getNextVertex(i),o=this.newVertex(n===null?this.m_pointCount:-1),s=this.getVertexIndex(o);n!==null&&this.m_vertices.setPointByValNoCurves(s,n),this.setPathToVertex(o,e),this.setNextVertex(o,a),this.setPrevVertex(o,i),a!==-1&&this.setPrevVertex(a,o),i!==-1&&this.setNextVertex(i,o);let c=this.isClosedPath(e),l=this.getFirstVertex(e);t===-1&&this.setLastVertex(e,o),t===l&&(!c||!r||l===-1)&&this.setFirstVertex(e,o),c&&a===-1&&(this.setNextVertex(o,o),this.setPrevVertex(o,o)),this.setPathSize(e,this.getPathSize(e)+1);let u=this.getGeometryFromPath(e);return this.setGeometryVertexCount(u,this.getPointCount(u)+1),o}getHelperPoint(){return this.m_helperPoint||(this.m_helperPoint=new P({vd:this.m_vertices.getDescription()}),this.m_helperPoint.setXYCoords(0,0)),this.m_helperPoint}addMultiPoint(e,t){let n=this.createGeometry(e.getGeometryType(),e.getDescription());return this.appendMultiPoint(n,e,t),n}addPoint_(e,t){let n=this.createGeometry(i.enumMultiPoint,e.getDescription());return this.appendPoint(n,e,t),n}appendMultiPath_(e,t){if(t.isEmpty())return;let n=t.getImpl();this.m_vertices.reserveRounded(this.m_vertices.getPointCount()+n.getPointCount()),this.m_verticesMp.addPoints(t,0,n.getPointCount()),this.m_xyStream=this.m_vertices.getAttributeStreamRef(0);let r=this.m_segments!==null||n.getSegmentFlagsStreamRef()!==null;this.m_vertexIndexList.setCapacity(this.m_vertexIndexList.size()+n.getPointCount()),this.m_pathIndexList.setCapacity(this.m_pathIndexList.size()+n.getPathCount());for(let t=0,i=n.getPathCount();t<i;t++){if(n.getPathSize(t)===0)continue;let i=this.insertPath(e,-1);this.setClosedPath(i,n.isClosedPath(t));for(let e=n.getPathStart(t),a=n.getPathEnd(t);e<a;e++){let t=this.insertVertex_(i,-1,null,!1);if(r){let r=this.getVertexIndex(t);if(n.getSegmentFlags(e)&1)this.setSegmentToIndex(r,null);else{let t=new $;n.querySegment(e,t,!0),this.setSegmentToIndex(r,t.releaseSegment())}}}n.isStrongPathStart(t)&&this.setStrongPathStart(i,!0),n.isStrongPathEnd(t)&&this.setStrongPathEnd(i,!0)}}addMultiPath(e,t){let n=this.createGeometry(e.getGeometryType(),e.getDescription());return e.getGeometryType()===i.enumPolygon&&this.setFillRule(n,e.getFillRule()),this.appendMultiPath(n,e,t),n}appendMultiPathPolyline(e,t,n){let r=t.getImpl(),i=this.m_segments!==null||r.getSegmentFlagsStreamRef()!==null,a=new K;t.queryEnvelope(a);{let a=n.clone(),o=r.getPointCount(),s=r.getAccelerators();if(s&&s.getQuadTree()&&(o=s.getQuadTree().getIntersectionCount(a,0,r.getPointCount()+1)),o<t.getPointCount()){if(o===0)return;let n=r.queryLimitedSegmentIterator(a),s=-1,c=-100,l=-1,u=0,d=-1,f=-1,p=!1,m=n.nextSegment();if(m!==null)for(;;m=n.nextSegment()){let a=m===null,o=m===null?s:n.getPathIndex(),h=m===null?c:n.getStartPointIndex();if(a||(s===o&&c+1===h?u++:a=!0),a){if(d!==-1){let e=-1,n=-1;if(u===l){this.setClosedPath(f,p);let i=r.getPathEnd(s);this.m_vertices.reserveRounded(this.m_vertices.getPointCount()+i-d),this.m_verticesMp.addPoints(t,d,i),n=r.getPathSize(s),e=i-1}else if(!p||c+1<r.getPathEnd(s))this.m_vertices.reserveRounded(this.m_vertices.getPointCount()+c+2-d),this.m_verticesMp.addPoints(t,d,c+2),n=c-d+2,e=c;else{this.m_vertices.reserveRounded(this.m_vertices.getPointCount()+c+2-d),this.m_verticesMp?.addPoints(t,d,c+1),e=c,n=c-d+1;let i=r.getPathStart(s);this.m_verticesMp.addPoints(t,i,i+1),n+=1}this.m_xyStream=this.m_vertices.getAttributeStreamRef(0);for(let t=0,a=d;t<n;t++,a++){let t=this.insertVertex_(f,-1,null,!1);if(i){let n=this.getVertexIndex(t);if(r.getSegmentFlags(a)&1||a>e)this.setSegmentToIndex(n,null);else{let e=new $;r.getSegmentBuffer(a,e,!0),this.setSegmentToIndex(n,e.releaseSegment())}}}}if(m===null)break;u=1,d=h,s===o?f=this.insertPath(e,-1):(f=this.insertPath(e,-1),this.setClosedPath(f,!1),l=r.getSegmentCountPath(o),p=r.isClosedPath(o),s=o)}c=h}return}}this.appendMultiPath_(e,t)}appendMultiPathPolygon(e,t,r){let i=t.getImpl(),a=this.m_segments!==null||i.getSegmentFlagsStreamRef()!==null,o=K.constructEmpty();t.queryEnvelope(o),n(r.isIntersecting(o)&&!r.containsEnvelope(o));let s=K.construct(-1/0,r.ymin,1/0,r.ymax),c=K.construct(r.xmin,-1/0,r.xmax,1/0),l=i.getAccelerators();if(l&&l.getQuadTree()){let e=l.getQuadTree(),t=e.getIntersectionCount(s,0,0);t>e.getIntersectionCount(c,0,t+1)&&(c=R(s,s=c))}else s.height()>c.width()&&(c=R(s,s=c));let u=[],d=i.queryLimitedSegmentIterator(s),f=-1,p=-100,m=-1,h=0,g=-1,_=-1,v=-1,y=!0,b=d.nextSegment();if(b!==null)for(;;b=d.nextSegment()){let r=b===null,o=b===null?f:d.getPathIndex(),s=b===null?p:d.getStartPointIndex();if(r||(o===f?p+1===s?h++:r=!0:(r=f>=0,f<0&&(f=o,m=i.getSegmentCountPath(f),g=s,v=-1,h=1))),r){if(u.length!==0||m!==h){(u.length===0||u[0].first!==g)&&(this.m_vertices.reserveRounded(this.m_vertices.getPointCount()+1),this.m_verticesMp.addPoints(t,g,g+1),_===-1&&(_=g),v===-1&&(v=this.insertPath(e,-1),this.setClosedPath(v,!0)),this.m_xyStream=this.m_vertices.getAttributeStreamRef(0),this.insertVertex_(v,-1,null,!1));for(let{first:r,second:o}of u){_===-1&&(_=r);let s=-1,c=-1,l=r+o-1;if(o===m){let e=l+1;c=e-r,this.m_vertices.reserveRounded(this.m_vertices.getPointCount()+c),this.m_verticesMp.addPoints(t,r,e),s=l,n(u.length===1)}else if(l+1<i.getPathEnd(f)){let e=l+2;c=e-r,this.m_vertices.reserveRounded(this.m_vertices.getPointCount()+c),this.m_verticesMp.addPoints(t,r,e),s=l}else{let e=i.getPathStart(f),n=e===_?0:1,a=l+1;c=a-r+n,this.m_vertices.reserveRounded(this.m_vertices.getPointCount()+(a-r)+n),this.m_verticesMp.addPoints(t,r,a),s=l,n>0&&this.m_verticesMp?.addPoints(t,e,e+1)}this.m_xyStream=this.m_vertices.getAttributeStreamRef(0),v===-1&&(v=this.insertPath(e,-1),this.setClosedPath(v,!0));for(let e=0,t=r;e<c;e++,t++){let e=this.insertVertex_(v,-1,null,!1);if(a){let n=this.getVertexIndex(e);if(i.getSegmentFlags(t)&1||t>s)this.setSegmentToIndex(n,null);else{let e=new $;i.getSegmentBuffer(t,e,!0),this.setSegmentToIndex(n,e.releaseSegment())}}}}if(u.length===0||u.at(-1).first+u.at(-1).second!==g+h){let e=g+h;e===t.getPathEnd(f)&&(e=t.getPathStart(f)),_!==e&&(this.m_vertices.reserveRounded(this.m_vertices.getPointCount()+1),this.m_verticesMp.addPoints(t,e,e+1),this.insertVertex_(v,-1,null,!1))}}u.length=0,y=!0,o!==f&&(f=o,m=i.getSegmentCountPath(f),v=-1,_=-1),g=s,h=1}if(b){let e=K.constructEmpty();b.queryLooseEnvelope(e),c.isIntersecting(e)?(y?u.push(Ue(s,1)):u.at(-1).second++,y=!1):y=!0}else break;p=s}}appendMultiPath(e,t,n){if(n===void 0){this.appendMultiPath_(e,t);return}if(t.isEmpty())return;let r=t.getGeometryType()===i.enumPolygon,a=K.constructEmpty();t.queryEnvelope(a),n.isIntersecting(a)&&(!n.containsEnvelope(a)&&t.getPointCount()>10?r?this.appendMultiPathPolygon(e,t,n):this.appendMultiPathPolyline(e,t,n):this.appendMultiPath_(e,t))}appendPoint(e,t,n){if(t.isEmpty()||n!==void 0&&!n.contains(t.getXY()))return;this.m_vertices.reserveRounded(this.m_vertices.getPointCount()+1),this.m_verticesMp.add(t),this.m_xyStream=this.m_vertices.getAttributeStreamRef(0),this.m_vertexIndexList.setCapacity(this.m_vertexIndexList.size()+1);let r=this.insertPath(e,-1);this.insertVertex_(r,-1,null,!1)}appendMultiPoint_(e,t){this.m_vertices.reserveRounded(this.m_vertices.getPointCount()+t.getPointCount()),this.m_verticesMp.addPoints(t,0,t.getPointCount()),this.m_xyStream=this.m_vertices.getAttributeStreamRef(0),this.m_vertexIndexList.setCapacity(this.m_vertexIndexList.size()+t.getPointCount());let n=this.insertPath(e,-1);for(let e=0,r=t.getPointCount();e<r;e++)this.insertVertex_(n,-1,null,!1)}appendMultiPoint(e,t,n){if(n===void 0){this.appendMultiPoint_(e,t);return}let r=t.getAttributeStreamRef(0),i=0;for(let e=0,a=t.getPointCount();e<a;e++){let t=r.readPoint2D(e*2);n.contains(t)&&i++}this.m_vertices.reserveRounded(this.m_vertices.getPointCount()+i);let a=-1,o=-1,s=0;for(let e=0,i=t.getPointCount();e<i;e++){let i=r.readPoint2D(e*2);n.contains(i)?(a===-1&&(a=e,o=e),o++):a>=0&&(this.m_verticesMp.addPoints(t,a,o-a),a=-1,s++)}if(a>0&&(this.m_verticesMp.addPoints(t,a,o-a),s++),!s)return;this.m_xyStream=this.m_vertices.getAttributeStreamRef(0),this.m_vertexIndexList.setCapacity(this.m_vertexIndexList.size()+i);let c=this.insertPath(e,-1);for(let e=0,i=t.getPointCount();e<i;e++){let t=r.readPoint2D(e*2);n.contains(t)&&this.insertVertex_(c,-1,null,!1)}}splitSegmentForward(e,n,r,a,o){let s=this.getNextVertex(e);s===-1&&t(`Edit_shape.split_segment_forward_`);let c=this.getHelperPoint(),l=this.getPathFromVertex(e),u=e,d=this.hasSegmentParentage();for(let e=0,t=n.getResultSegmentCount(r);e<t;e++){let a=this.getVertexIndex(u),f=this.getNextVertex(u),p=n.getResultSegment(r,e),m=null;if(p.getGeometryType()!==i.enumLine&&(m=p.clone(),m.dropAllAttributes()),e===0&&(p.queryStart(c),this.setSegmentToIndex(a,null),this.setPointEx(u,c,n.getResultSegmentStartPointRank(r,e),n.getResultSegmentStartPointWeight(r,e),o)),this.setSegmentRank(u,n.getResultSegmentInteriorRank(r,e)),this.setSegmentWeight(u,n.getResultSegmentInteriorWeight(r,e)),d){let t=n.getResultSegmentSegmentParentage(r,e),i=n.getResultSegmentStartPointIsBreak(r,e);this.setSegmentParentageAndBreak(u,t,i)}if(p.queryEnd(c),e<t-1){this.setSegmentToIndex(a,m);let t=this.insertVertex(l,f,c);this.setWeight(t,n.getResultSegmentEndPointWeight(r,e)),this.setRank(t,n.getResultSegmentEndPointRank(r,e)),this.select(t),u=t}else{this.setPointEx(s,c,n.getResultSegmentEndPointRank(r,e),n.getResultSegmentEndPointWeight(r,e),o);let t=n.getResultSegmentEndPointIsBreak(r,e);this.setSegmentParentageBreakVertex(s,t),this.setSegmentToIndex(a,m)}}}splitSegmentBackward(e,n,r,a,o){let s=this.getNextVertex(e);s===-1&&t(`Edit_shape.split_segment_backward_`);let c=this.getHelperPoint(),l=this.getPathFromVertex(e),u=e,d=this.hasSegmentParentage();for(let e=0,t=n.getResultSegmentCount(r);e<t;e++){let a=t-e-1,f=this.getVertexIndex(u),p=this.getNextVertex(u),m=n.getResultSegment(r,a),h=null;if(m.getGeometryType()!==i.enumLine&&(h=m.clone(),h.reverse(),h.dropAllAttributes()),e===0&&(m.queryEnd(c),this.setSegmentToIndex(f,null),this.setPointEx(u,c,n.getResultSegmentEndPointRank(r,a),n.getResultSegmentEndPointWeight(r,a),o),this.setSegmentParentageAndBreak(u,n.getResultSegmentSegmentParentage(r,a),n.getResultSegmentEndPointIsBreak(r,a))),m.getGeometryType()===i.enumLine?this.setSegmentToIndex(f,null):this.setSegmentToIndex(f,h),this.setSegmentRank(u,n.getResultSegmentInteriorRank(r,a)),this.setSegmentWeight(u,n.getResultSegmentInteriorWeight(r,a)),m.queryStart(c),e<t-1){let e=this.insertVertex(l,p,c);this.setWeight(e,n.getResultSegmentStartPointWeight(r,a)),this.setRank(e,n.getResultSegmentStartPointRank(r,a)),this.select(e),u=e,d&&this.setSegmentParentageAndBreak(e,n.getResultSegmentSegmentParentage(r,a),n.getResultSegmentEndPointIsBreak(r,a))}else this.setPointEx(s,c,n.getResultSegmentStartPointRank(r,a),n.getResultSegmentStartPointWeight(r,a),o)}}selected_(e){return this.getUserIndex(e,this.m_selectionIndex)>=0}allocateIndex(e=!0){if(this.m_deletedIndices.length){let t=this.m_deletedIndices.pop();return e&&t.setRange(-1,0,t.size()),t}return e?N(0,-1):N(0)}recycleUserIndex(e){this.m_deletedIndices.push(e)}allocatePathIndex(){if(this.m_deletedPathIndices.length){let e=this.m_deletedPathIndices.at(-1);return this.m_deletedPathIndices.pop(),e}return N(0)}recyclePathUserIndex(e){this.m_deletedPathIndices.push(e)}peelALoop_(e,t,n){let r=this.getNextVertex(e),i=this.getNextVertex(t),a=this.getVertexIndex(e),o=this.getVertexIndex(t);if(this.setNextVertex(e,i),this.setPrevVertex(i,e),this.setNextVertex(t,r),this.setPrevVertex(r,t),this.m_segments){let e=this.getSegmentFromIndex(a),t=this.getSegmentFromIndex(o);this.setSegmentToIndex(o,null),this.setSegmentToIndex(a,t),this.setSegmentToIndex(o,e)}if(this.hasSegmentParentage()){let n=this.getSegmentParentage(t),r=this.getSegmentParentage(e);(n!==-1||r!==-1)&&(r=R(n,n=r),this.setSegmentParentageAndBreak(e,r),this.setSegmentParentageAndBreak(t,n))}if(n){let t=this.getPathFromVertex(e),n=this.getGeometryFromPath(t),a=[!1],o=this.insertClosedPath(n,-1,r,this.getFirstVertex(t),a);a[0]&&this.setFirstVertex(t,i);let s=this.getPathSize(t),c=this.getPathSize(o);return s-=c,this.setPathSize(t,s),o}return-1}sortVerticesSimpleByYHelper(e,t,n){e.sort(t,n,(e,t)=>{let n=this.compareVerticesSimpleY(e,t);if(n===0){let r=this.getPathInternalIndexFromVertex(e),i=this.getPathInternalIndexFromVertex(t);n=r<i?-1:+(r>i)}return n})}sortVerticesSimpleByYHelper3D(e,t,r){n(0)}constructor(){this.m_pathCount=0,this.m_pointCount=0,this.m_firstGeometry=-1,this.m_lastGeometry=-1,this.m_vertexIndexList=new ue(5),this.m_pathIndexList=new ue(8),this.m_geometryIndexList=new ue(8),this.m_bHasAttributes=!1,this.m_selectedCount=0,this.m_selectionIndex=-1,this.m_selection=!1,this.m_bucketSort=new le,this.m_segmentParentageIndex=-1}getTotalPointCount(){return this.m_pointCount}getEnvelope2D(e){if(this.m_hasForceSetEnvelope!==0)return new K(this.m_forceSetEnvelope.xmin,this.m_forceSetEnvelope.ymin,this.m_forceSetEnvelope.xmax,this.m_forceSetEnvelope.ymax);let t=this.hasCurves(),n=K.constructEmpty(),r=this.queryVertexIterator(),i=!0;for(let e=r.next();e!==-1;e=r.next()){if(i?n.merge(this.getXY(e)):n.mergeNe(this.getXY(e)),t){let t=this.getSegment(e);if(t!==null){let e=K.constructEmpty();t.queryLooseEnvelope(e),n.mergeEnvelope2D(e)}}i=!1}return n}getEnvelope3D(e){return n(0),w.constructEmpty()}forceSetEnvelope2D(e){this.m_hasForceSetEnvelope=1,this.m_forceSetEnvelope.setCoords(e.xmin,e.ymin,0,e.xmax,e.ymax,0)}forceSetEnvelope3D(e){n(0)}forgetForceSetEnvelope(){this.m_hasForceSetEnvelope=0}getGeometryCount(){return this.m_geometryIndexList.size()}addGeometry(e,n){let r=e.getGeometryType();if(u(r))return this.addMultiPath(e,n);if(r===i.enumMultiPoint)return this.addMultiPoint(e,n);if(r===i.enumPoint)return this.addPoint_(e,n);if(r===i.enumEnvelope){let t=new ma;return t.addEnvelope(e,!1),this.addMultiPath(t,n)}t(``)}appendGeometry(e,n){this.mergeVertexDescription(n.getDescription());let r=n.getGeometryType();if(u(r)){this.appendMultiPath(e,n);return}if(r===i.enumMultiPoint){this.appendMultiPoint(e,n);return}t(``)}assignRankToGeometryVertices(e,t){t<1&&(t=1);let n=this.queryVertexIterator();for(let e=n.next();e!==-1;e=n.next())this.setRank(e,t),this.setSegmentRank(e,t)}collapseAllGeometriesToFirst(){this.collapseGeometriesToFirst(i.enumUnknown)}collapseGeometriesToFirst(e){this.dbgVerifyVertexCounts();let t=-1,n=-1,r=-1;for(let a=this.getFirstGeometry();a!==-1;){if(e===i.enumUnknown||this.getGeometryType(a)===e){if(t===-1){t=a,n=this.getPathCount(t),r=this.getPointCount(t),a=this.getNextGeometry(a);continue}for(let e=this.getFirstPath(a);e!==-1;e=this.getNextPath(e))this.setPathGeometry(e,t);n+=this.getPathCount(a),r+=this.getPointCount(a);let e=this.getLastPath(t),i=this.getFirstPath(a);e===-1?this.setFirstPath(t,i):this.setNextPath(e,i),i!==-1&&(this.setPrevPath(i,e),this.setLastPath(t,this.getLastPath(a))),this.setFirstPath(a,-1),this.setLastPath(a,-1);let o=a;a=this.getNextGeometry(a),this.setGeometryVertexCount(o,0),this.removeGeometry(o);continue}a=this.getNextGeometry(a)}return t!==-1&&(this.setGeometryVertexCount(t,r),this.setGeometryPathCount(t,n),this.dbgVerifyVertexCounts()),t}setFillRule(e,t){let n=this.m_geometryIndexList.getField(e,2);n&=-134217729,n|=t===1?134217728:0,this.m_geometryIndexList.setField(e,2,n)}getFillRule(e){return this.m_geometryIndexList.getField(e,2)&134217728?1:0}setGeometryModified(e,t){let n=this.m_geometryIndexList.getField(e,2);!!(n&67108864)!==t&&(n&=-67108865,n|=t?67108864:0,this.m_geometryIndexList.setField(e,2,n))}getGeometryModified(e){return!!(this.m_geometryIndexList.getField(e,2)&67108864)}setGeometryModifiedWithVertex(e,t){let n=this.getPathFromVertex(e),r=this.getGeometryFromPath(n);this.setGeometryModified(r,t)}getGeometryModifiedWithVertex(e){let t=this.getPathFromVertex(e),n=this.getGeometryFromPath(t);return this.getGeometryModified(n)}swapGeometry(e,t){let n=this.getFirstPath(e),r=this.getFirstPath(t),i=this.getLastPath(e),a=this.getLastPath(t);for(let n=this.getFirstPath(e);n!==-1;n=this.getNextPath(n))this.setPathGeometry(n,t);for(let n=this.getFirstPath(t);n!==-1;n=this.getNextPath(n))this.setPathGeometry(n,e);this.setFirstPath(e,r),this.setFirstPath(t,n),this.setLastPath(e,a),this.setLastPath(t,i);let o=this.getPointCount(e),s=this.getPathCount(e),c=this.getPointCount(t),l=this.getPathCount(t);this.setGeometryVertexCount(e,c),this.setGeometryVertexCount(t,o),this.setGeometryPathCount(e,l),this.setGeometryPathCount(t,s);let u=this.m_geometryIndexList.getField(e,2),d=this.m_geometryIndexList.getField(t,2);this.m_geometryIndexList.setField(e,2,d),this.m_geometryIndexList.setField(t,2,u)}addPathFromMultiPath(e,t,n){let r=this.createGeometry(n?i.enumPolygon:i.enumPolyline,e.getDescription()),a=e.getImpl();if(e.getPathSize(t)<2)return r;this.m_vertices.reserveRounded(this.m_vertices.getPointCount()+e.getPathSize(t)),this.m_verticesMp.addPoints(e,e.getPathStart(t),a.getPathEnd(t)),this.m_xyStream=this.m_vertices.getAttributeStreamRef(0);let o=this.insertPath(r,-1);this.setClosedPath(o,a.isClosedPath(t)||n);let s=this.m_segments!==null||a.getSegmentFlagsStreamRef()!==null;for(let e=a.getPathStart(t),n=a.getPathEnd(t);e<n;e++){let t=this.insertVertex_(o,-1,null,!1);if(s){let n=this.getVertexIndex(t);if(a.getSegmentFlags(e)&1)this.setSegmentToIndex(n,null);else{let t=new $;a.querySegment(e,t,!0),this.setSegmentToIndex(n,t.releaseSegment())}}}return a.isStrongPathStart(t)&&this.setStrongPathStart(o,!0),a.isStrongPathEnd(t)&&this.setStrongPathEnd(o,!0),r}getGeometry(e){let t=this.getGeometryType(e),n=ha(t,this.m_verticesMp.getDescription()),r=this.getPointCount(e);if(r===0)return n;if(u(t)){let t=n.getImpl(),i=this.getPathCount(e),a=N(i+1),o=ie(i+1,0),s=n.getDescription(),c=this.hasCurves();for(let n=0,c=s.getAttributeCount();n<c;n++){let c=s.getSemantics(n),l=ga.getComponentCount(c),u=O(c,r),d=this.m_vertices.getAttributeStreamRef(c),f=0,p=0,m=0;for(let t=this.getFirstPath(e);t!==-1;t=this.getNextPath(t)){let e=0;this.isClosedPath(t)&&(e|=1),this.isExterior(t)&&(e|=8),this.isStrongPathStart(t)&&(e|=2),this.isStrongPathEnd(t)&&(e|=4),e&&o.setBits(p,e);let n=this.getPathSize(t);if(a.write(p++,m),m+=n,c===0){let e=d,n=u,r;for(let i=this.getFirstVertex(t);f<m;i=this.getNextVertex(i),f++){let t=this.getVertexIndex(i);r=e.readPoint2D(t*2),n.writePoint2D(f*2,r)}}else for(let e=this.getFirstVertex(t);f<m;e=this.getNextVertex(e),f++){let t=this.getVertexIndex(e);for(let e=0;e<l;e++){let n=d.readAsDbl(t*l+e);u.writeAsDbl(f*l+e,n)}}}t.setAttributeStreamRef(c,u),a.write(i,r)}if(t.setPathFlagsStreamRef(o),t.setPathStreamRef(a),t.notifyModifiedFlags(65535),c){let n=0,r=0;for(let i=this.getFirstPath(e);i!==-1;i=this.getNextPath(i)){let e=this.getPathSize(i);n+=e;for(let e=this.getFirstVertex(i);r<n;e=this.getNextVertex(e)){let n=this.getSegment(e);n!==null&&n.isCurve()&&t.replaceSegment(r,n,!0),r++}}}}else if(t===i.enumMultiPoint){let t=n.getImpl(),i=n.getDescription();t.reserve(r),t.resizeNoInit(r);for(let n=0,r=i.getAttributeCount();n<r;n++){let r=i.getSemantics(n),a=ga.getComponentCount(r),o=t.getAttributeStreamRef(r),s=this.m_vertices.getAttributeStreamRef(r),c=0,l=this.getFirstPath(e),u=this.getPathSize(l);for(let e=this.getFirstVertex(l);c<u;e=this.getNextVertex(e),c++){let t=this.getVertexIndex(e);for(let e=0;e<a;e++){let n=s.readAsDbl(t*a+e);o.writeAsDbl(c*a+e,n)}}t.setAttributeStreamRef(r,o)}t.notifyModifiedFlags(65535)}else c(`getGeometry`);return n}queryPointGeometryOnly(e,n){this.getGeometryType(e)!==i.enumMultiPoint&&t(`get_point_geometry_only`);let r=this.getPointCount(e);if(r>1&&t(`get_point_geometry_only`),r===0){n.assignVertexDescription(this.m_vertexDescription),n.setEmpty();return}let a=this.getFirstPath(e),o=this.getFirstVertex(a);this.queryPoint(o,n)}removeGeometry(e){for(let t=this.getFirstPath(e);t!==-1;t=this.removePath(t));let t=this.getPrevGeometry(e),n=this.getNextGeometry(e);return t===-1?this.m_firstGeometry=n:this.setNextGeometry(t,n),n===-1?this.m_lastGeometry=t:this.setPrevGeometry(n,t),this.freeGeometry(e),n}createGeometry(e,t){t===void 0&&(t=v());let n=this.newGeometry(e);return this.m_vertices||=(this.m_verticesMp=new Pt({vd:t}),this.m_verticesMp.getImpl()),this.mergeVertexDescription(t),this.m_firstGeometry===-1?(this.m_firstGeometry=n,this.m_lastGeometry=n):(this.setPrevGeometry(n,this.m_lastGeometry),this.setNextGeometry(this.m_lastGeometry,n),this.m_lastGeometry=n),n}getFirstGeometry(){return this.m_firstGeometry}getLastGeometry(){return this.m_lastGeometry}getNextGeometry(e){return this.m_geometryIndexList.getField(e,1)}getPrevGeometry(e){return this.m_geometryIndexList.getField(e,0)}getGeometryType(e){return this.m_geometryIndexList.getField(e,2)&16777215}setGeometryUserIndex(e,t,n){let r=this.m_geometryIndices[t],i=this.getGeometryIndex(e);i>=r.size()&&r.resize(Math.max(i*1.25,16),-1),r.write(i,n)}getGeometryUserIndex(e,t){let n=this.getGeometryIndex(e),r=this.m_geometryIndices[t];return n<r.size()?r.read(n):-1}createGeometryUserIndex(){for(let e=0;e<this.m_geometryIndices.length;e++)if(this.m_geometryIndices[e]===null)return this.m_geometryIndices[e]=N(0),e;this.m_geometryIndices.push(N(0));let e=this.m_geometryIndices.length-1;return n(e>=0&&e<=2**53-1),e}removeGeometryUserIndex(e){for(this.m_geometryIndices[e]=null;this.m_geometryIndices.length>0&&this.m_geometryIndices.at(-1)===null;)this.m_geometryIndices.pop()}getFirstPath(e){return this.m_geometryIndexList.getField(e,3)}getLastPath(e){return this.m_geometryIndexList.getField(e,4)}hasPointFeatures(){for(let e=this.getFirstGeometry();e!==-1;e=this.getNextGeometry(e))if(!u(this.getGeometryType(e)))return!0;return!1}getPointCount(e){return this.m_geometryIndexList.getField(e,5)}getPathCount(e){return this.m_geometryIndexList.getField(e,6)}filterClosePoints(e,t,r,a,o){let s=e*e,c=0,l=this.hasCurves(),d=this.hasSegmentParentage();for(let e=o===-1?this.getFirstGeometry():o;e!==-1;e=o===-1?this.getNextGeometry(e):-1){let o=this.getGeometryType(e);if(!u(o)||r&&o!==i.enumPolygon)continue;let f=this.getGeometryType(e)===i.enumPolygon,p=this.getGeometryModified(e);for(let r=this.getFirstPath(e);r!==-1;){let i=0;for(let t=this.getFirstVertex(r);i<Math.trunc(this.getPathSize(r)/2);){let o=this.getNextVertex(t);if(o===-1)break;let u=this.getXY(t),f=this.getXY(o),m=L.sqrDistance(u,f),h=!0;do if(m<=s){if(l){let e=this.getSegment(t);if(e!==null){let t=e.calculateLength2D();if(m=t*t,m>s)break}}if(m===0?c===0&&(c=-1):c=1,o!==this.getLastVertex(r)){let r=d&&(this.getSegmentParentageBreakVertex(t)||this.getSegmentParentageBreakVertex(o));if(this.transferAllDataToTheVertex(o,t,!0),this.removeVertex(o,!1),a&&!p&&(this.setGeometryModified(e,!0),p=!0),d&&t!==o){this.setSegmentParentageBreakVertex(t,r);let e=this.getNextVertex(t);n(e!==-1),this.isDiscontinuousSegmentParentage(e)&&this.setSegmentParentageBreakVertex(e,!0)}}h=!1}while(0);h&&(t=this.getNextVertex(t)),i++}let o=this.getFirstVertex(r);for(let t=this.isClosedPath(r)?o:this.getLastVertex(r);this.getPathSize(r)>0;){let i=this.getPrevVertex(t);if(i!==-1){let u=this.getXY(i),f=this.getXY(t),m=L.sqrDistance(u,f),h=!0;do if(m<=s){if(l){let e=this.getSegment(i);if(e!==null){let t=e.calculateLength2D();if(m=t*t,m>s)break}}if(m===0?c===0&&(c=-1):c=1,d){n(this.m_segmentParentageIndex>=0);let e=this.getUserIndex(t,this.m_segmentParentageIndex);this.transferAllDataToTheVertex(i,t,!0),this.setUserIndex(t,this.m_segmentParentageIndex,e)}else this.transferAllDataToTheVertex(i,t,!0);let u=d&&(this.getSegmentParentageBreakVertex(t)||this.getSegmentParentageBreakVertex(i));this.removeVertex(i,!0),a&&!p&&(this.setGeometryModified(e,!0),p=!0),d&&i!==t&&(u||this.isDiscontinuousSegmentParentage(t))&&this.setSegmentParentageBreakVertex(t,!0),o===i&&(o=this.getFirstVertex(r)),h=!1}while(0);if(h&&(t=this.getPrevVertex(t),t===o))break}else break}let u=this.getPathSize(r),m=t&&u<(f?3:2);m&&f&&u===2&&l&&(m=!this.pathHasCurves(r)),m?(r=this.removePath(r),c===0&&(c=-1),a&&!p&&(this.setGeometryModified(e,!0),p=!0)):r=this.getNextPath(r)}}return c}filterClosePoints3D(e,t,r,i,a,o){return n(0),0}hasDegenerateSegments(e){for(let t=this.getFirstGeometry();t!==-1;t=this.getNextGeometry(t))if(u(this.getGeometryType(t)))for(let n=this.getFirstPath(t);n!==-1;){let t=this.getPathSize(n);if(t===0)return!0;let r=this.getFirstVertex(n);for(let n=0;n<t;n++){let t=this.getNextVertex(r);if(t===-1)break;let n=this.getVertexIndex(r),i=this.getSegmentFromIndex(n),a=0;if(i!==null){if(a=i.calculateLowerLength2D(),a<=e&&(a=i.calculateUpperLength2D(),a<=e||(a=i.calculateLength2D(),a<=e)))return!0}else{let r=this.getVertexIndex(t);if(a=this.m_vertices.getShortestDistance(n,r),a<=e)return!0}r=t}n=this.getNextPath(n)}return!1}hasDegenerateSegments3D(e,t){return n(0),!1}transferAllDataToTheVertex(e,t,n=!1){let r=this.getVertexIndex(e),i=this.getVertexIndex(t);if(n){let e=1,t=1;if(this.m_ranks&&(e=this.getRankWithIndex(r),t=this.getRankWithIndex(i)),e>t&&this.setRankWithIndex(i,e),e>=t&&this.m_weights){let n=this.getWeightWithIndex(r),a=this.getWeightWithIndex(i);(e>t||n>a)&&this.setWeightWithIndex(i,n)}}else{if(this.m_weights){let e=this.getWeightWithIndex(r);this.setWeightWithIndex(i,e)}if(this.m_ranks){let e=this.getRankWithIndex(r);this.setRankWithIndex(i,e)}}if(this.m_segmentWeights){let e=this.getSegmentWeightWithIndex(r);this.setSegmentWeightWithIndex(i,e)}if(this.m_segmentRanks){let e=this.getSegmentRankWithIndex(r);this.setSegmentRankWithIndex(i,e)}for(let n=0,r=this.m_indices.length;n<r;n++)if(n!==this.m_selectionIndex&&this.m_indices[n]!==null){let r=this.getUserIndex(e,n);this.setUserIndex(t,n,r)}let a=this.selected(e);a!==this.selected(t)&&(a?this.select(t):this.unselect(t))}splitSegmentAxisAware(e,n,r,i,a){let o=0,s=this.getNextVertex(e);s===-1&&t(``);let c=this.getVertexIndex(e),l=this.getVertexIndex(s),u=this.getSegmentFromIndex(c),d=this.m_vertices.getShortestDistance(c,l),f=this.getPathFromVertex(e),p=this.m_bHasAttributes;p&&u&&(d=u.calculateLength2D());let m=this.getSegmentParentage(e),h=this.getHelperPoint();if(u){let e=0,t=0,a=-1;for(let g=0;g<r;g++){let r=n[g];if(e<r&&r<1){let n=u.cut(e,r);if(i!==null&&(g>0&&n.setStartXY(i[g-1]),n.setEndXY(i[g]),n.normalizeAfterEndpointChange(),t=g),p){let e=d>0?u.calculateSubLengthFromStart(r)/d:0;this.m_vertices.interpolateTwoVertices(c,l,e,h)}h.setXY(n.getEndXY()),a=this.insertVertex(f,s,h),o++;let _=this.getPrevVertex(a),v=this.getVertexIndex(_);this.setSegmentToIndex(v,n),m!==-1&&this.setSegmentParentageAndBreak(a,m,!1),e=r}}if(a!==-1){let n=u.cut(e,1);i!==null&&(n.setStartXY(i[t]),n.normalizeAfterEndpointChange());let r=this.getVertexIndex(a);this.setSegmentToIndex(r,n)}}else{let e=0;for(let t=0;t<r;t++){let r=n[t];if(e<r&&r<1){this.m_vertices.interpolateTwoVertices(c,l,r,h);let e=this.insertVertex(f,s,h);o++,m!==-1&&this.setSegmentParentageAndBreak(e,m,!1)}e=r}}return o}splitSegment(e,t,n,r=null){return this.splitSegmentAxisAware(e,t,n,r,-1)}snapControlPoints(e,n,r){this.getNextVertex(e)===-1&&t(``);let i=e,a=!1;for(let e=0;e<n;++e){let e=this.getVertexIndex(i),t=this.getSegmentFromIndex(e);if(t){let e=t.snapControlPoints(r);a||=e}i=this.getNextVertex(i)}return a}snapControlPointsOnSelection(e){if(!this.hasCurves())return!1;let t=0,n=this.queryVertexIteratorOnSelection();for(let r=n.next();r!==-1;r=n.next()){let n=this.getVertexIndex(r),i=this.getSegmentFromIndex(n);i&&(t|=+!!i.snapControlPoints(e))}return t!==0}calculateSubLength2D(e,t,r){return n(0),0}setPoint(e,t,n){if(this.setPointOnly(e,t),this.m_segments!==null){let r=this.getVertexIndex(e),i=this.getSegmentFromIndex(r);i!==null&&(i.setStartXY(t.getXY()),i.normalizeAfterEndpointChange(),n&&i.ensureXYMonotone());let a=this.getPrevVertex(e);if(a!==-1){let e=this.getVertexIndex(a),r=this.getSegmentFromIndex(e);r!==null&&(r.setEndXY(t.getXY()),r.normalizeAfterEndpointChange(),n&&r.ensureXYMonotone())}}}setPointEx(e,t,n,r,i){this.setPoint(e,t,i);let a=this.getVertexIndex(e);this.setWeightWithIndex(a,r),this.setRankWithIndex(a,n)}setPointOnly(e,t){let n=this.getVertexIndex(e);this.m_vertices.setPointByValNoCurves(n,t)}setPointOnlyEx(e,t,r,i){n(0)}queryPoint(e,t){let n=this.getVertexIndex(e);this.m_vertices.getPointByVal(n,t)}setXY(e,t){this.setXYCoords(e,t.x,t.y)}setXYCoords(e,t,n){let r=this.getVertexIndex(e);if(this.m_vertices?.setXYCoordsNoCurves(r,t,n),this.m_segments!==null){let i=this.getSegmentFromIndex(r);i!==null&&(i.setStartXYCoords(t,n),i.normalizeAfterEndpointChange());let a=this.getPrevVertex(e);if(a!==-1){let e=this.getVertexIndex(a),r=this.getSegmentFromIndex(e);r!=null&&(r.setEndXYCoords(t,n),r.normalizeAfterEndpointChange())}}}setXYMonotonic(e,t,n){let r=this.getVertexIndex(e);if(this.m_vertices.setXYCoordsNoCurves(r,t,n),this.m_segments!==null){let i=this.getSegmentFromIndex(r);if(i!==null){let e=i.getEndXY();i.setCoordsForIntersector(new L(t,n),e,!1),i.ensureXYMonotone()}let a=this.getPrevVertex(e);if(a!==-1){let e=this.getVertexIndex(a),r=this.getSegmentFromIndex(e);if(r!==null){let e=r.getStartXY();r.setCoordsForIntersector(e,new L(t,n),!1),r.ensureXYMonotone()}}}}setXYMonotonicPoint2D(e,t){this.setXYMonotonic(e,t.x,t.y)}queryXY(e,t){let n=this.getVertexIndex(e);return this.m_vertices.queryXY(n,t)}getXY(e){let t=this.getVertexIndex(e);return this.m_vertices.getXY(t)}getXYWithIndex(e){return this.m_xyStream.readPoint2D(e*2)}static setSegDefault(e,t,r){n(0)}setXYZ(e,t,r){n(0)}setXYZCoords(e,t,r,i){n(0)}queryXYZ(e,t){n(0)}getXYZ(e){return n(0),A.getNAN()}getXYZWithIndex(e){return n(0),A.getNAN()}mergeVertexDescription(e){this.m_verticesMp.mergeVertexDescription(e),this.m_vertexDescription=this.m_verticesMp.getDescription(),this.m_bHasAttributes=this.m_vertexDescription.getAttributeCount()>1}addAttribute(e){n(0)}getAttributeAsDbl(e,t,n){return this.m_vertices.getAttributeAsDbl(e,this.getVertexIndex(t),n)}queryAttributeAsDbl(e,t,r,i){n(0)}setAttribute(e,t,r,i){n(0)}setAttributeInt(e,t,r,i){n(0)}getVertexDescription(){return this.m_vertexDescription}getMinPathVertexY(e){return n(0),0}getVertexIndex(e){return this.m_vertexIndexList.getField(e,0)}getY(e){let t=this.getVertexIndex(e);return this.m_vertices.queryXY(t,this.m_workPoint2D),this.m_workPoint2D.y}getX(e){return this.getXY(e).x}isEqualXY(e,t){return this.queryXY(e,this.m_workPoint2D),this.queryXY(t,this.m_workPoint2_2D),this.m_workPoint2D.isEqualPoint2D(this.m_workPoint2_2D)}isEqualXYPoint2D(e,t){return this.queryXY(e,this.m_workPoint2D),this.m_workPoint2D.isEqualPoint2D(t)}isEqualXYZPoint3D(e,t){return n(0),!1}setWeight(e,t){t<1&&(t=1);let n=t===1;if(this.m_weights==null){if(n)return;this.m_weights=ae(this.m_vertices.getPointCount(),1)}let r=this.getVertexIndex(e);if(r>=this.m_weights.size()){if(n)return;this.m_weights.resize(r+1,1)}this.m_weights.write(r,t)}setWeightWithIndex(e,t){t<1&&(t=1);let n=t===1;if(this.m_weights===null){if(n)return;this.m_weights=ae(this.m_vertices.getPointCount(),1)}if(e>=this.m_weights.size()){if(n)return;this.m_weights.resize(e+1,1)}this.m_weights.write(e,t)}getWeight(e){if(this.m_weights===null)return 1;let t=this.getVertexIndex(e);return t>=this.m_weights.size()?1:this.m_weights.read(t)}getWeightWithIndex(e){return this.m_weights===null||e>=this.m_weights.size()?1:this.m_weights.read(e)}getRank(e){if(this.m_ranks===null)return 1;let t=this.getVertexIndex(e);return t>=this.m_ranks.size()?1:this.m_ranks.read(t)}getRankWithIndex(e){return this.m_ranks===null||e>=this.m_ranks.size()?1:this.m_ranks.read(e)}setRank(e,t){t<1&&(t=1);let n=t===1;if(this.m_ranks===null){if(n)return;this.m_ranks=N(this.m_vertices.getPointCount(),1)}let r=this.getVertexIndex(e);if(r>=this.m_ranks.size()){if(n)return;this.m_ranks.resize(r+1,1)}this.m_ranks.write(r,t)}setRankWithIndex(e,t){t<1&&(t=1);let n=t===1;if(this.m_ranks===null){if(n)return;this.m_ranks=N(this.m_vertices.getPointCount(),1)}if(e>=this.m_ranks.size()){if(n)return;this.m_ranks.resize(e+1,1)}this.m_ranks.write(e,t)}setSegmentWeight(e,t){t<1&&(t=1);let n=t===1;if(this.m_segmentWeights===null){if(n)return;this.m_segmentWeights=ae(this.m_vertices.getPointCount(),1)}let r=this.getVertexIndex(e);if(r>=this.m_segmentWeights.size()){if(n)return;this.m_segmentWeights.resize(r+1,1)}this.m_segmentWeights.write(r,t)}setSegmentWeightWithIndex(e,t){t<1&&(t=1);let n=t===1;if(this.m_segmentWeights==null){if(n)return;this.m_segmentWeights=ae(this.m_vertices.getPointCount(),1)}if(e>=this.m_segmentWeights.size()){if(n)return;this.m_segmentWeights.resize(e+1,1)}this.m_segmentWeights.write(e,t)}getSegmentWeight(e){if(this.m_segmentWeights===null)return 1;let t=this.getVertexIndex(e);return t>=this.m_segmentWeights.size()?1:this.m_segmentWeights.read(t)}getSegmentWeightWithIndex(e){return this.m_segmentWeights==null||e>=this.m_segmentWeights.size()?1:this.m_segmentWeights.read(e)}getSegmentRank(e){if(this.m_segmentRanks===null)return Ca.st_defaultRank;let t=this.getVertexIndex(e);return t>=this.m_segmentRanks.size()?Ca.st_defaultRank:this.m_segmentRanks.read(t)}getSegmentRankWithIndex(e){return this.m_segmentRanks===null||e>=this.m_segmentRanks.size()?1:this.m_segmentRanks.read(e)}setSegmentRank(e,t){t<1&&(t=1);let n=t===1;if(this.m_segmentRanks===null){if(n)return;this.m_segmentRanks=N(this.m_vertices.getPointCount(),1)}let r=this.getVertexIndex(e);if(r>=this.m_segmentRanks.size()){if(n)return;this.m_segmentRanks.resize(r+1,1)}this.m_segmentRanks.write(r,t)}setSegmentRankWithIndex(e,t){t<1&&(t=1);let n=t===1;if(this.m_segmentRanks===null){if(n)return;this.m_segmentRanks=N(this.m_vertices.getPointCount(),1)}if(e>=this.m_segmentRanks.size()){if(n)return;this.m_segmentRanks.resize(e+1,1)}this.m_segmentRanks.write(e,t)}static st_defaultRank=1;removeWeights(){this.m_weights=null,this.m_segmentWeights=null}removeRanks(){this.m_ranks=null,this.m_segmentRanks=null}setUserIndex(e,t,n){let r=this.m_indices[t],i=this.getVertexIndex(e);if(r.size()<=i){if(n!==-1)r.resize(this.m_vertices.getPointCount(),-1);else return}r.write(i,n)}getUserIndex(e,t){let n=this.getVertexIndex(e),r=this.m_indices[t];return n<r.size()?r.read(n):-1}addToUserIndex(e,t,n){let r=this.m_indices[t],i=this.getVertexIndex(e);r.size()<=i&&r.resize(this.m_vertices.getPointCount(),-1);let a=r.read(i);r.write(i,a+n)}createUserIndex(){for(let e=0;e<this.m_indices.length;e++)if(this.m_indices[e]===null)return this.m_indices[e]=this.allocateIndex(),e;this.m_indices.push(this.allocateIndex());let e=this.m_indices.length-1;return n(e>=0&&e<=he()),e}createUserIndexUninitialized(){for(let e=0;e<this.m_indices.length;e++)if(this.m_indices[e]===null)return this.m_indices[e]=this.allocateIndex(!1),e;this.m_indices.push(this.allocateIndex(!1));let e=this.m_indices.length-1;return n(e>=0&&e<=2**53-1),e}fillUserIndexForGeometry(e,t,n){let r=this.m_indices[t],i=r.size();for(let t=this.getFirstPath(e);t!==-1;t=this.getNextPath(t)){let e=this.getFirstVertex(t);for(let a=0,o=this.getPathSize(t);a<o;a++,e=this.getNextVertex(e)){let t=this.getVertexIndex(e);t<i&&r.write(t,n)}}}fillUserIndexForSelection(e,t){n(0)}removeUserIndex(e){for(this.recycleUserIndex(this.m_indices[e]),this.m_indices[e]=null;this.m_indices.length>0&&this.m_indices[this.m_indices.length-1]===null;)this.m_indices.pop()}replaceCurveWithLine(e){if(this.m_segments!==null){let t=this.getVertexIndex(e);this.setSegmentToIndex(t,null)}}queryLineConnector(e,t,n=!1){let r=this.getNextVertex(e);if(r===-1)return!1;if(!this.m_bHasAttributes||n){let n=this.getXY(e);t.setStartXY(n);let i=this.getXY(r);t.setEndXY(i)}else{let n=new P({vd:this.getVertexDescription()});this.queryPoint(e,n),t.setStart(n),this.queryPoint(r,n),t.setEnd(n)}return!0}queryLineConnector3D(e,t,r=!1){return n(0),!1}hasCurves(){return this.m_segments!==null}geometryHasCurves(e){return n(0),!1}pathHasCurves(e){if(!this.hasCurves())return!1;let t=this.getFirstVertex(e);if(t===-1)return!1;let n=this.getPathSize(e),r=t;for(let e=0;e<n;e++,r=this.getNextVertex(r)){let e=this.getSegment(r);if(e!==null&&e.getGeometryType()!==i.enumLine)return!0}return!1}insertPath(e,n){let r=-1;n===-1?r=this.getLastPath(e):(e!==this.getGeometryFromPath(n)&&t(``),r=this.getPrevPath(n));let i=this.newPath(e);return n!==-1&&this.setPrevPath(n,i),this.setNextPath(i,n),this.setPrevPath(i,r),r===-1?this.setFirstPath(e,i):this.setNextPath(r,i),n===-1&&this.setLastPath(e,i),this.setGeometryPathCount(e,this.getPathCount(e)+1),i}removePath(e){let t=this.getPrevPath(e),n=this.getNextPath(e),r=this.getGeometryFromPath(e);return t===-1?this.setFirstPath(r,n):this.setNextPath(t,n),n===-1?this.setLastPath(r,t):this.setPrevPath(n,t),this.clearPath(e),this.setGeometryPathCount(r,this.getPathCount(r)-1),this.freePath(e),n}clearPath(e){let t=this.getFirstVertex(e);if(t!==-1){let n=t;for(let t=0,r=this.getPathSize(e);t<r;t++){let e=n;n=this.getNextVertex(n),this.freeVertex(e)}let r=this.getGeometryFromPath(e);this.setGeometryVertexCount(r,this.getPointCount(r)-this.getPathSize(e))}this.setPathSize(e,0)}getNextPath(e){return this.m_pathIndexList.getField(e,2)}getPrevPath(e){return this.m_pathIndexList.getField(e,1)}getPathSize(e){return this.m_pathIndexList.getField(e,3)}isClosedPath(e){return!!(this.getPathFlags(e)&1)}setClosedPath(e,t){if(this.isClosedPath(e)===t)return;if(this.getPathSize(e)>0){let n=this.getFirstVertex(e),r=this.getLastVertex(e);if(t){this.setNextVertex(r,n),this.setPrevVertex(n,r);let e=this.getVertexIndex(r);this.setSegmentToIndex(e,null)}else{this.setNextVertex(r,-1),this.setPrevVertex(n,-1);let e=this.getVertexIndex(r);this.setSegmentToIndex(e,null)}}let n=(this.getPathFlags(e)|1)-1;this.setPathFlags(e,n|+!!t)}closeAllPaths(e){n(0)}isStrongPathStart(e){return!!(this.getPathFlags(e)&8)}isStrongPathEnd(e){return!!(this.getPathFlags(e)&16)}setStrongPathStart(e,t){let n=(this.getPathFlags(e)|8)-8;this.setPathFlags(e,n|(t?8:0))}setStrongPathEnd(e,t){let n=(this.getPathFlags(e)|16)-16;this.setPathFlags(e,n|(t?16:0))}getGeometryFromPath(e){return this.m_pathIndexList.getField(e,7)}isExterior(e){return!!(this.getPathFlags(e)&2)}setExterior(e,t){let n=(this.getPathFlags(e)|2)-2;this.setPathFlags(e,n|(t?2:0))}getRingArea(e){if(this.isRingAreaValid(e))return this.m_pathAreas[this.getPathIndex(e)];let t=this.getFirstVertex(e);if(t===-1)return 0;let n=this.getXY(t),r=new Ee(0),a=this.getPathSize(e);if(a>2){let e=n.clone(),i=e.x,o=e.y,s=this.getNextVertex(t),c=this.getXY(s);s=this.getNextVertex(s);let l=L.getNAN();for(let t=2;t<a;t++,s=this.getNextVertex(s))this.queryXY(s,l),r.pe((l.x-e.x)*(c.y-o)),e.setCoordsPoint2D(c),c.setCoordsPoint2D(l);r.pe((i-e.x)*(c.y-o))}if(this.hasCurves()){let e=t;for(let t=0;t<a;t++,e=this.getNextVertex(e)){let t=this.getSegment(e);if(t===null||t.getGeometryType()===i.enumLine)continue;let n=t.calculateArea2DHelper()*2;r.pe(n)}}this.setRingAreaValid(e,!0);let o=r.getResult()*.5;return this.m_pathAreas[this.getPathIndex(e)]=o,o}getPathIndexInternal(e){return this.getPathIndex(e)}getPathInternalIndexFromVertex(e){return this.getPathIndex(this.getPathFromVertex(e))}setPathUserIndex(e,t,n){let r=this.m_pathindices[t],i=this.getPathIndex(e);r.size()<this.m_pathAreas.length&&r.resize(this.m_pathAreas.length,-1),r.write(i,n)}getPathUserIndex(e,t){let n=this.getPathIndex(e),r=this.m_pathindices[t];return n<r.size()?r.read(n):-1}createPathUserIndex(){for(let e=0;e<this.m_pathindices.length;e++)if(this.m_pathindices[e]===null)return this.m_pathindices[e]=this.allocatePathIndex(),e;this.m_pathindices.push(this.allocatePathIndex());let e=this.m_pathindices.length-1;return n(e>=0&&e<=2**53-1),e}fillPathUserIndexForGeometry(e,t,n){let r=this.m_pathindices[t],i=r.size();for(let t=this.getFirstPath(e);t!==-1;t=this.getNextPath(t)){let e=this.getPathIndex(t);e<i&&r.write(e,n)}}removePathUserIndex(e){for(this.recyclePathUserIndex(this.m_pathindices[e]),this.m_pathindices[e]=null;this.m_pathindices.length>0&&this.m_pathindices.at(-1)===null;)this.m_pathindices.pop()}movePath(e,n,r){if(r===-1&&t(``),n===r)return;let i=this.getNextPath(r),a=this.getPrevPath(r),o=this.getGeometryFromPath(r);a===-1?this.setFirstPath(o,i):this.setNextPath(a,i),i===-1?this.setLastPath(o,a):this.setPrevPath(i,a),this.setGeometryVertexCount(o,this.getPointCount(o)-this.getPathSize(r)),this.setGeometryPathCount(o,this.getPathCount(o)-1),a=n===-1?this.getLastPath(e):this.getPrevPath(n),this.setPrevPath(r,a),this.setNextPath(r,n),n===-1?this.setLastPath(e,r):this.setPrevPath(n,r),a===-1?this.setFirstPath(e,r):this.setNextPath(a,r),this.setGeometryVertexCount(e,this.getPointCount(e)+this.getPathSize(r)),this.setGeometryPathCount(e,this.getPathCount(e)+1),this.setPathGeometry(r,e)}addVertex(e,t){return this.m_vertices.getPointByVal(this.getVertexIndex(t),this.getHelperPoint()),this.insertVertex_(e,-1,this.getHelperPoint(),!1)}insertVertex(e,t,n){return this.insertVertex_(e,t,n,!0)}removeVertex(e,t){let n=this.getPathFromVertex(e),r=this.getPrevVertex(e),i=this.getNextVertex(e);r!==-1&&this.setNextVertex(r,i);let a=this.getPathSize(n);if(e===this.getFirstVertex(n)&&this.setFirstVertex(n,a>1?i:-1),i!==-1&&this.setPrevVertex(i,r),e===this.getLastVertex(n)&&this.setLastVertex(n,a>1?r:-1),this.hasCurves()&&r!==-1&&i!==-1){let n=this.getVertexIndex(e),a=this.getVertexIndex(r),o=this.getVertexIndex(i);if(t){let e=this.getSegmentFromIndex(a);if(e!==null){let t=this.m_vertices.getXY(o);e.setEndXY(t),e.normalizeAfterEndpointChange()}this.setSegmentToIndex(n,null)}else{let e=this.getSegmentFromIndex(n);if(this.setSegmentToIndex(n,null),e!==null){let t=this.m_vertices.getXY(a);e.setStartXY(t),e.normalizeAfterEndpointChange()}this.setSegmentToIndex(a,e)}}this.setPathSize(n,a-1);let o=this.getGeometryFromPath(n);return this.setGeometryVertexCount(o,this.getPointCount(o)-1),this.freeVertex(e),i}removeVertices(e,t){n(e!==t);let r=this.getPathFromVertex(e),i=this.getPrevVertex(e),a=this.getPrevVertex(t);i!==-1&&this.setNextVertex(i,t);let o=this.getPathSize(r),s=this.getVertexIndex(e);this.setSegmentToIndex(s,null),this.setPrevVertex(t,i),this.setPrevVertex(e,-1),this.setNextVertex(a,-1);let c=0,l=e,u=this.getFirstVertex(r),d=!1;for(;;){let e=this.getNextVertex(l);if(d||=u===l,this.freeVertex(l),c++,l===a)break;l=e}o-=c,d&&this.setFirstVertex(r,o>0?t:-1),this.setPathSize(r,o);let f=this.getGeometryFromPath(r);this.setGeometryVertexCount(f,this.getPointCount(f)-c)}getFirstVertex(e){return this.m_pathIndexList.getField(e,4)}getLastVertex(e){return this.m_pathIndexList.getField(e,5)}getNextVertex(e){return this.m_vertexIndexList.getField(e,2)}getPrevVertex(e){return this.m_vertexIndexList.getField(e,1)}getNextVertexEx(e,t){return t>0?this.m_vertexIndexList.getField(e,2):this.m_vertexIndexList.getField(e,1)}getPrevVertexEx(e,t){return t>0?this.m_vertexIndexList.getField(e,1):this.m_vertexIndexList.getField(e,2)}getPathFromVertex(e){return this.m_vertexIndexList.getField(e,3)}addPoint(e,t){return this.insertVertex_(e,-1,t,!1)}getGeometryFromVertex(e){return this.getGeometryFromPath(this.getPathFromVertex(e))}replaceNaNs(e,t){this.m_vertexDescription.hasAttribute(e)||c(``),this.m_vertices.replaceNaNs(e,t)}removeNaNVertices(){for(let e=this.getFirstGeometry();e!==-1;e=this.getNextGeometry(e))for(let t=this.getFirstPath(e);t!==-1;t=this.getNextPath(t)){let e=this.getFirstVertex(t);for(let n=0,r=this.getPathSize(t);n<r;n++)e=this.getXY(e).isFinite()?this.getNextVertex(e):this.removeVertex(e,!0)}}queryVertexIterator(e=-1){return this.queryVertexIteratorEx(!1,e)}queryVertexIteratorEx(e,t=-1){let n=-1,r=-1,i=-1,a=-1,o=0,s=!1;for(n=t===-1?this.getFirstGeometry():t;n!==-1;n=this.getNextGeometry(n))if(!e||u(this.getGeometryType(n))){for(r=this.getFirstPath(n);r!==-1;r=this.getNextPath(r))if(i=this.getFirstVertex(r),a=i,o=0,i!==-1){s=!0;break}if(s||t!==-1)break}return s||(n=-1),xa.create_(this,n,r,i,a,o,e,!1,t!==-1)}queryVertexIteratorOnSelection(e=-1){return this.m_selection?xa.create_(this,e,-1,-1,-1,-1,!1,!0,e!==-1):this.queryVertexIteratorEx(!1,e)}hasSelection(){return this.m_selection}createEmptySelection(){n(0)}removeSelection(){this.m_selection&&(this.m_selectedVertices.length=0,this.removeUserIndex(this.m_selectionIndex),this.m_selectionIndex=-1,this.m_selection=!1,this.m_selectedCount=0)}select(e){return this.selected(e)?!0:(this.setUserIndex(e,this.m_selectionIndex,this.m_selectedVertices.length),this.m_selectedVertices.push(e),this.m_selectedCount++,!1)}unselect(e){if(!this.m_selection)return;let t=this.getUserIndex(e,this.m_selectionIndex);t>=0&&(this.m_selectedVertices[t]=-1,this.setUserIndex(e,this.m_selectionIndex,-1),this.m_selectedCount--)}selected(e){return!this.m_selection||this.selected_(e)}getSelectedCount(){return this.m_selection?this.m_selectedCount:this.getTotalPointCount()}createSelectionForCrackingAndClustering(e,t){return n(0),!1}peelALoop(e,t){this.peelALoop_(e,t,!1)}peelALoopIntoAPath(e,t){return this.peelALoop_(e,t,!0)}applyTransformation(e){if(this.m_verticesMp.applyTransformation(e),this.m_segments!==null)for(let t=0,n=this.m_segments.length;t<n;t++)this.m_segments[t]&&this.m_segments[t].applyTransformation(e)}setGeometryType(e,t){this.m_geometryIndexList.setField(e,2,t)}splitSegmentWithIntersector(e,t,n,r,i){r?this.splitSegmentForward(e,t,n,!0,i):this.splitSegmentBackward(e,t,n,!0,i)}setPrevVertex(e,t){this.m_vertexIndexList.setField(e,1,t)}setNextVertex(e,t){this.m_vertexIndexList.setField(e,2,t)}setPathToVertex(e,t){this.m_vertexIndexList.setField(e,3,t)}setPathSize(e,t){this.m_pathIndexList.setField(e,3,t)}setFirstVertex(e,t){this.m_pathIndexList.setField(e,4,t)}setLastVertex(e,t){this.m_pathIndexList.setField(e,5,t)}getSegment(e){if(this.m_segments!=null){let t=this.getVertexIndex(e);return this.getSegmentFromIndex(t)}return null}isCurve(e){if(this.m_segments===null)return!1;let t=this.getVertexIndex(e);return this.m_segments.length>t&&this.m_segments[t]!==null}querySegment(e,t,n=!0,r=!1){let i=this.getNextVertex(e);if(i===-1)return!1;let a=this.getSegment(e);if(!a)return!n&&(this.queryLineConnector(e,t.createLine(),r),!0);if(t.copyFrom(a,!0),r)return!0;if(this.m_vertexDescription.getAttributeCount()>1){let n=this.getHelperPoint();this.queryPoint(e,n),t.get().setStart(n),this.queryPoint(i,n),t.get().setEnd(n)}return!0}getSegmentFromIndex(e){return(this.m_segments!==null&&this.m_segments.length>e?this.m_segments[e]:null)||null}getAndClearSegmentFromIndex(e){return(this.m_segments!==null&&this.m_segments.length>e?this.m_segments[e]:null)||null}setSegmentToIndex(e,t){if(this.m_hasForceSetEnvelope=0,this.m_segments===null){if(!t)return;this.m_segments=[],this.m_segments.length=this.m_vertices.getPointCount()}e>=this.m_segments.length&&(this.m_segments.length=e+1),this.m_segments[e]=t}setGeometryPathCount(e,t){this.m_geometryIndexList.setField(e,6,t)}setGeometryVertexCount(e,t){this.m_geometryIndexList.setField(e,5,t)}ringParentageCheckInternal(e,t){return n(0),!1}reverseRingInternal(e){let t=this.hasCurves(),n=this.hasSegmentParentage(),r=null,i=-1,a=e;if(t){let e=this.getVertexIndex(a);r=this.getAndClearSegmentFromIndex(e)}n&&(i=this.getSegmentParentage(a));do{let e=this.getPrevVertex(a),o=this.getNextVertex(a);if(this.setNextVertex(a,e),this.setPrevVertex(a,o),t){let e=this.getVertexIndex(o),t=this.getSegmentFromIndex(e);r&&r.reverse(),this.setSegmentToIndex(e,r),r=t}if(n){let e=this.getSegmentParentage(o);this.setSegmentParentagePreserveBreak(o,i),i=e}a=o}while(a!==e);this.dbgVerifyIntegrity(e)}setTotalPointCount(e){this.m_pointCount=e}removePathOnly(e){let t=this.getPrevPath(e),n=this.getNextPath(e),r=this.getGeometryFromPath(e);t===-1?this.setFirstPath(r,n):this.setNextPath(t,n),n===-1?this.setLastPath(r,t):this.setPrevPath(n,t),this.setFirstVertex(e,-1),this.setLastVertex(e,-1),this.freePath(e)}insertClosedPath(e,t,n,r,i){let a=this.insertPath(e,-1),o=0,s=n;for(i[0]=!1;;){s===r&&(i[0]=!0),this.setPathToVertex(s,a),o++;let e=this.getNextVertex(s);if(e===n)break;s=e}return this.setClosedPath(a,!0),this.setPathSize(a,o),i[0]&&(n=r),this.setFirstVertex(a,n),this.setLastVertex(a,this.getPrevVertex(n)),this.setRingAreaValid(a,!1),a}findVertex2D(e,t){return n(0),0}findVertex3D(e,t,r){return n(0),0}dbgVerifyMonotone(){}dbgCheckSelection(){}dbgVerifySegment(e){}dbgVerifyIntegrity(e,t=!0){}dbgVerifyVertexCounts(){}dbgVerifyCurves(){}dbgDumpGeometry(e,t){}getNextNthVertex(e,t){if(t===0)return e;let n=e;for(let e=0;e<t;++e)if(n=t>0?this.getNextVertex(n):this.getPrevVertex(n),n===-1)return-1;return n}removeVertexInternal(e,t){let n=this.getPrevVertex(e),r=this.getNextVertex(e);if(n!==-1&&this.setNextVertex(n,r),r!==-1&&this.setPrevVertex(r,n),this.hasCurves()&&n!==-1&&r!==-1){let i=this.getVertexIndex(e),a=this.getVertexIndex(n),o=this.getVertexIndex(r);if(t){let e=this.getSegmentFromIndex(a);if(e!==null){let t=this.m_vertices.getXY(o);e.setEndXY(t),e.normalizeAfterEndpointChange()}this.setSegmentToIndex(i,null)}else{let e=this.getSegmentFromIndex(i);if(this.setSegmentToIndex(i,null),e!==null){let t=this.m_vertices.getXY(a);e.setStartXY(t),e.normalizeAfterEndpointChange()}this.setSegmentToIndex(a,e)}}return this.freeVertex(e),r}isRingAreaValid(e){return!!(this.getPathFlags(e)&4)}setRingAreaValid(e,t){let n=(this.getPathFlags(e)|4)-4;this.setPathFlags(e,n|(t?4:0))}compareVerticesSimpleY(e,t){return this.queryXY(e,this.m_workPoint2D),this.queryXY(t,this.m_workPoint2_2D),this.m_workPoint2D.compare(this.m_workPoint2_2D)}compareVerticesSimpleY3D(e,t){return this.getXYZ(e).compare(this.getXYZ(t))}compareVerticesSimpleX(e,t){return this.getXY(e).compareX(this.getXY(t))}sortVerticesSimpleByYHeapMerge(e,t){n(0)}sortVerticesSimpleByY(e,t,n){this.m_bucketSort.sort(e,t,n,new ya(this))}sortVerticesSimpleByX(e,t,r){n(0)}sortVerticesSimpleByY3D(e,t,r){n(0)}snapVertexForPoleClipping(e,t){let n=this.getPrevVertex(e);n!==-1&&this.replaceCurveWithLine(n),this.getNextVertex(e)!==-1&&this.replaceCurveWithLine(e);let r=new L;this.queryXY(e,r),r.y=t,this.setXY(e,r)}setSegmentParentageAndBreak(e,t,r=!0){if(this.m_segmentParentageIndex===-1){if(t===-1)return;this.m_segmentParentageIndex=this.createUserIndex()}t>=0&&(n(t<=ze()>>1),t<<=1,t|=+!!r),this.setUserIndex(e,this.m_segmentParentageIndex,t)}setSegmentParentagePreserveBreak(e,t){if(n(t>=-1),this.m_segmentParentageIndex===-1){if(t===-1)return;this.m_segmentParentageIndex=this.createUserIndex()}if(t>=0){n(t<=ze()>>1),t<<=1;let r=this.getSegmentParentageBreakVertex(e);t|=+!!r}this.setUserIndex(e,this.m_segmentParentageIndex,t)}getSegmentParentage(e){if(this.m_segmentParentageIndex===-1)return-1;let t=this.getUserIndex(e,this.m_segmentParentageIndex);return t<0?t:t>>1}getOriginalSegmentInfo(e){if(this.m_segmentParentageIndex!==-1){let t=this.getSegmentParentage(e);return new Sa(t)}return new Sa(-1)}setSegmentParentageBreakVertex(e,t){if(this.m_segmentParentageIndex===-1)return;let n=this.getUserIndex(e,this.m_segmentParentageIndex);n<0||!!(n&1)!==t&&(t?n|=1:n&=ze()>>1<<1,this.setUserIndex(e,this.m_segmentParentageIndex,n))}getSegmentParentageBreakVertex(e){if(this.m_segmentParentageIndex===-1)return!0;let t=this.getUserIndex(e,this.m_segmentParentageIndex);return t<0||!!(t&1)}isDiscontinuousSegmentParentage(e){let t=this.getPrevVertex(e);return t!==-1&&this.getSegmentParentage(t)!==this.getSegmentParentage(e)}setCurveStitcherPointer(e){this.m_curveStitcher=e}hasSegmentParentage(){return this.m_segmentParentageIndex!==-1}deleteSegmentParentage(){this.m_segmentParentageIndex!==-1&&(this.removeUserIndex(this.m_segmentParentageIndex),this.m_segmentParentageIndex=-1),this.m_curveStitcher=null}clearSegments(){this.m_segments=null}}function wa(e){if(e.isEmpty())return new ma({vd:e.getDescription()});if(u(e.getGeometryType())&&e.hasNonLinearSegments())return Ea(e);let t=e.getImpl(),n=t.getPointCount();if(n<=2){if(n===1||t.getXY(0).equals(t.getXY(1))){let e=new P({vd:t.getDescription()});return t.getPointByVal(0,e),e}{let e=new P,n=new nr({vd:t.getDescription()});return t.getPointByVal(0,e),n.startPathPoint(e),t.getPointByVal(1,e),n.lineToPoint(e),n}}let r=t.getAttributeStreamRef(0),i=new Ma({stream:r,n}),a=1,o=r.readPoint2D(0),s=new L;for(;a<n&&r.queryPoint2D(a<<1,s).equals(o);)a++;if(i.m_treeHull.addElement(0),a<n){i.m_treeHull.addBiggestElement(a);let e=new L;for(let n=a+1;n<t.getPointCount();n++){r.queryPoint2D(n<<1,e);let t=i.treeHull(e);t!==-1&&i.m_treeHull.setElement(t,n)}}let c=t.getDescription(),l=c.getAttributeCount()>1,d=i.m_treeHull.size(),f=null;if(d>=2){f=d>=3?new ma({vd:c}):new nr({vd:c});let e=f.getImpl();e.reserve(i.m_treeHull.size()),e.addPathPoint2D(null,0,!0);let n=new L;for(let a=i.m_treeHull.getFirst();a!==-1;a=i.m_treeHull.getNext(a))if(l){let n=new P;t.getPointByVal(i.m_treeHull.getElement(a),n),e.insertPoint(0,-1,n)}else r.queryPoint2D(i.m_treeHull.getElement(a)<<1,n),e.insertPoint2D(0,-1,n)}else if(l){let e=new P({vd:c});t.getPointByVal(i.m_treeHull.getElement(i.m_treeHull.getFirst()),e),f=e}else{let e=r.readPoint2D(i.m_treeHull.getElement(i.m_treeHull.getFirst())<<1);f=new P(e)}return f}function Ta(e,t,n,r=!1){if(t<=262144)return Fa(e,t,n,r);let i=new Ma({points:e,n:t}),a=1,o=e[0];for(;a<t&&e[a].equals(o);)a++;if(i.m_treeHull.addElement(0),a<t){i.m_treeHull.addBiggestElement(a);for(let n=a+1;n<t;n++){let t=e[n],r=i.treeHull(t);r!==-1&&i.m_treeHull.setElement(r,n)}}let s=0;for(let e=i.m_treeHull.getFirst();e!==-1;e=i.m_treeHull.getNext(e))n[s++]=i.m_treeHull.getElement(e);return s}function Ea(e){n(e.hasNonLinearSegments()&&!e.isEmpty());let t=new Ma;return t.addGeometry(e),t.getBoundingGeometry()}function Da(e,n,r){if((n<0||n>=e.getPathCount())&&t(`path index`),e.hasNonLinearSegmentsPath(n))return!1;let i=e.getImpl(),a=i.getPathStart(n),o=i.getPathEnd(n),s=!i.isClosedPath(n)&&i.isClosedPathInXYPlane(n),c=i.getAttributeStreamRef(0),l=2*a,u=2*o;if(s&&(u-=2),u-l<6)return!0;let d=c.readPoint2D(l),f=c.readPoint2D(l+2),p=c.readPoint2D(l+4);if(!Ia(L.orientationRobust(f,p,d)))return!1;let m=f.clone(),h=new L;for(let e=l+6;e<u;e+=2)if(h.assign(f),f.assign(p),c.queryPoint2D(e,p),!Ia(L.orientationRobust(f,p,d))||!Ia(L.orientationRobust(m,p,d))||!Ia(L.orientationRobust(f,p,h)))return!1;return!0}function Oa(e,t,n){e.setNAN(),t.setCoords(1,0),n.setCoords(0,0)}function ka(e,t,n,r,a){if(Oa(n,r,a),e.isEmpty())return;if(e.getGeometryType()===i.enumPoint){n.assign(e.getXY());return}let o=e,s=o.getPointCount();if(s!==0){if(s===1){n.assign(o.getXY(0));return}Aa(o,s,t,n,r,a)}}function Aa(e,t,n,r,i,a){if(t===2){let t=e.getXY(0),n=e.getXY(1);r.assign(t.add(n).mul(.5));let o=n.sub(t);i=za(o),a.setCoords(.5*o.length(),0)}else{let o=Number.MAX_VALUE,s=[0,1,0,0],c=new Be(4,2);for(c.set(0,0,0),c.set(0,1,1),c.set(1,0,1),c.set(1,1,2);s[0]<t;++s[0],Ba(c,0,t)){s[1]===s[0]&&(++s[1],Ba(c,1,t));for(let n=1;;++n){for(;;){let r=Va(e.getXY(c.get(0,0)),e.getXY(c.get(0,1)),e.getXY(c.get(n,0)),e.getXY(c.get(n,1)),n^2);if(r>0||(++s[n],Ba(c,n,t),r===0))break}if(n===3)break;s[n+1]<s[n]&&(s[n+1]=s[n],c.set(n+1,0,c.get(n,0)),c.set(n+1,1,c.get(n,1)))}let l=e.getXY(c.get(0,0)).add(e.getXY(c.get(2,0))).mul(.5),u=za(e.getXY(c.get(0,1)).sub(e.getXY(c.get(0,0)))),d=new L;d.x=Math.max(0,u.dotProduct(e.getXY(c.get(1,0)).sub(e.getXY(c.get(3,0))))),d.y=Math.max(0,u.crossProduct(e.getXY(c.get(0,0)).sub(e.getXY(c.get(2,0)))));let f,p;if(n?(f=d.x*d.y,p=f<o):(f=d.y,p=f<o),p){o=f;let t=e.getXY(c.get(1,0)),n=e.getXY(c.get(3,0)),s=t.add(n).mul(.5).sub(l);r.assign(l.add(u.mul(u.dotProduct(s)))),i.assign(u),a.assign(d)}}a.mulThis(.5),a.x<a.y&&(a.y=R(a.x,a.x=a.y),i.leftPerpendicularThis())}i.y<0?i.negateThis():i.y===0&&(i.x=1)}class ja{m_convexHull;m_handleP=-1;m_handleQ=-1;m_currentSupport=-1;m_area=0;m_bDone=!0;m_function;constructor(e){n(0),this.m_convexHull=e,this.m_function=this.done_}next(){return n(0),!1}get_vertex_handle_p(){return n(0),0}get_vertex_handle_q(){return n(0),0}get_current_support(){return n(0),0}getNext(e){return n(0),0}getPrev(e){return n(0),0}intialize_(){return n(0),!1}increment_(){return n(0),!1}increment_q_(){return n(0),!1}increment_p_(){return n(0),!1}parallel_edge_with_q_support_(){return n(0),!1}parallel_edge_with_p_support_(){return n(0),!1}done_(){return n(0),!1}}class Ma{m_treeHull=new de;m_shape=null;m_stream=null;m_points=null;m_geometryHandle=-1;m_pathHandle=-1;m_getXY=this.nullGetXY;m_deleteNode=this.nullDeleteNode;nullGetXY(e){return c(`m_getXY is null`),{}}nullDeleteNode(e){c(`m_deleteNode is null`)}constructor(e){if(!e){this.m_treeHull.setCapacity(20),this.m_shape=new Ca,this.m_geometryHandle=this.m_shape.createGeometry(i.enumMultiPoint),this.m_pathHandle=this.m_shape.insertPath(this.m_geometryHandle,-1),this.m_getXY=this.getXYShape,this.m_deleteNode=this.deleteNodeShape,this.m_stream=null,this.m_points=null;return}if(e.stream){this.m_treeHull.setCapacity(Math.min(20,e.n)),this.m_stream=e.stream,this.m_getXY=this.getXYStream,this.m_deleteNode=this.deleteNodeStream,this.m_points=null,this.m_geometryHandle=-1,this.m_pathHandle=-1;return}if(e.points){this.m_treeHull.setCapacity(Math.min(20,e.n)),this.m_points=e.points,this.m_getXY=this.getXYPoints,this.m_deleteNode=this.deleteNodePoints,this.m_stream=null,this.m_geometryHandle=-1,this.m_pathHandle=-1;return}f(`unrecognized constructor parameter`)}getXYShape(e){return this.m_shape.getXY(e)}getXYStream(e){return this.m_stream.readPoint2D(e<<1)}getXYPoints(e){return n(0),new L}deleteNodeShape(e){let t=this.m_treeHull.getElement(e);this.m_treeHull.deleteNode(e),this.m_shape.removeVertex(t,!1)}deleteNodeStream(e){this.m_treeHull.deleteNode(e)}deleteNodePoints(e){n(0)}addGeometry(n){if(n.isEmpty())return;let r=n.getGeometryType();if(r===i.enumGeometryCollection){let e=n;for(let t=0,n=e.getGeometryCount();t<n;t++)this.addGeometry(e.getGeometry(t))}else e(r)?this.addMultiVertexGeometry(n):p(r)?this.addSegment(n,!1):r===i.enumEnvelope?this.addEnvelope(n):r===i.enumPoint?this.addPoint(n):t(`Convex_hull: geometry not supported`)}getBoundingGeometry(){let e=new P,t=this.m_treeHull.getFirst(),n=new ma({vd:this.m_shape.getVertexDescription()});if(this.m_treeHull.size()===0)return n;n.reserve(this.m_treeHull.size()),this.m_shape.queryPoint(this.m_treeHull.getElement(t),e),n.startPathPoint(e);for(let r=this.m_treeHull.getNext(t);r!==-1;r=this.m_treeHull.getNext(r))this.m_shape.queryPoint(this.m_treeHull.getElement(r),e),n.lineToPoint(e);return n}getAntipodalPairsIterator(){return n(0),new ja(this)}getXY(e){return n(0),new L}getXYWithIndex(e){return n(0),new L}getFirst(){return n(0),0}getLast(){return n(0),0}getNext(e){return n(0),0}getPrev(e){return n(0),0}getVertexIndex(e){return n(0),0}getPointCount(){return n(0),0}addMultiVertexGeometry(e){let t=new P,n=e.getImpl(),r=new L;for(let i=0;i<e.getPointCount();i++){n.queryXY(i,r);let a=this.addPoint2D(r);if(a!==-1){e.getPointByVal(i,t);let n=this.m_shape.addPoint(this.m_pathHandle,t);this.m_treeHull.setElement(a,n)}}if(u(e.getGeometryType())){let t=e;if(t.hasNonLinearSegments()){let e=t.querySegmentIterator();for(;e.nextPath();)for(;e.hasNextSegment();){let t=e.nextCurve();t!==null&&this.addSegment(t,!0)}}}}addEnvelope(e){let t=new P;for(let n=0;n<4;n++){let r=new L;e.queryCorner(n,r);let i=this.addPoint2D(r);if(i!==-1){e.queryCornerByVal(n,t);let r=this.m_shape.addPoint(this.m_pathHandle,t);this.m_treeHull.setElement(i,r)}}}static querySegmentControlPoints(e,r,a){let o=e.getGeometryType();if(n(o!==i.enumLine),o===i.enumEllipticArc){let t=e,n=60*Math.PI/180,i=Math.abs(t.getSweepAngle());if(i>n){let e=Math.min(6,Math.ceil(i/n)),a=1/e,o=new $;t.queryStart(r[0]);let s=1;for(let n=0;n<e;n++){t.queryCut(n*a,(n+1)*a,o);let i=U(L,3);Gl(o.get(),i);let c=L.calculateLength(i,3),l=L.calculateLength(i,2),u=c>0?l/c:.5;n<e-1?o.get().queryEnd(r[s+1]):t.queryEnd(r[s+1]),P.lerp(r[s-1],r[s+1],u,r[s]),r[s].setXY(i[1]),s+=2}return s}{let t=U(L,3);Gl(e,t);let n=L.calculateLength(t,3);e.queryStart(r[0]),e.queryEnd(r[2]);let i=L.calculateLength(t,2),a=n>0?i/n:.5;return P.lerp(r[0],r[2],a,r[1]),r[1].setXY(t[1]),3}}if(o===i.enumBezier){let t=e,n=U(L,4);t.queryControlPoints(n);let i=L.calculateLength(n,4),a=L.calculateLength(n,2),o=L.calculateLength(n,3);e.queryStart(r[0]),e.queryEnd(r[3]);let s=i>0?a/i:.5;P.lerp(r[0],r[3],s,r[1]),r[1].setXY(n[1]);let c=i>0?o/i:.5;return P.lerp(r[0],r[3],c,r[2]),r[2].setXY(n[2]),4}if(o===i.enumBezier2){let t=e,n=U(L,3);t.queryControlPoints(n);let i=L.calculateLength(n,3);e.queryStart(r[0]),e.queryEnd(r[2]);let a=L.calculateLength(n,2),o=i>0?a/i:.5;return P.lerp(r[0],r[2],o,r[1]),r[1].setXY(n[1]),3}if(o===i.enumRationalBezier2){let t=e,n=U(L,3);t.queryControlPoints(n);let i=L.calculateLength(n,3);e.queryStart(r[0]),e.queryEnd(r[2]);let a=L.calculateLength(n,2),o=i>0?a/i:.5;return P.lerp(r[0],r[2],o,r[1]),r[1].setXY(n[1]),3}t(`Convex_hull: segment type not supported`)}addSegment(e,t){if(!t){let t=new P,n=e.getStartXY(),r=this.addPoint2D(n);if(r!==-1){e.queryStart(t);let n=this.m_shape.addPoint(this.m_pathHandle,t);this.m_treeHull.setElement(r,n)}let i=e.getEndXY(),a=this.addPoint2D(i);if(a!==-1){e.queryEnd(t);let n=this.m_shape.addPoint(this.m_pathHandle,t);this.m_treeHull.setElement(a,n)}}if(e.isCurve()){let t=U(P,13),n=Ma.querySegmentControlPoints(e,t,t.length);for(let e=1,r=n-1;e<r;++e){let n=t[e].getXY(),r=this.addPoint2D(n);if(r!==-1){let n=this.m_shape.addPoint(this.m_pathHandle,t[e]);this.m_treeHull.setElement(r,n)}}}}addPoint(e){let t=e.getXY(),n=this.addPoint2D(t);if(n!==-1){let t=this.m_shape.addPoint(this.m_pathHandle,e);this.m_treeHull.setElement(n,t)}}addPoint2D(e){let t=-1;if(this.m_treeHull.size()===0)return t=this.m_treeHull.addElement(-4),t;if(this.m_treeHull.size()===1){let n=this.m_treeHull.getElement(this.m_treeHull.getFirst()),r=this.m_shape.getXY(n);return e.equals(r)||(t=this.m_treeHull.addBiggestElement(-5)),t}return t=this.treeHull(e),t}treeHull(e){let t=-1;do{let n=this.m_treeHull.getFirst(),r=this.m_treeHull.getLast(),i=this.m_treeHull.getElement(n),a=this.m_treeHull.getElement(r),o=this.m_getXY(i),s=this.m_getXY(a),c=L.orientationRobust(s,e,o);if(Ia(c)){t=this.m_treeHull.addBiggestElement(-1);let i=this.treeHullWalkBackward(e,r,n);i!==n&&this.treeHullWalkForward(e,n,this.m_treeHull.getPrev(i));break}if(La(c)){let i=this.m_treeHull.getRoot(),a=this.m_treeHull.getFirst(),s=this.m_treeHull.getLast(),c=-1,l=-1,u=-1;for(;a!==this.m_treeHull.getPrev(s);){l=this.m_treeHull.getElement(i);let t=this.m_getXY(l);La(L.orientationRobust(t,e,o))?(s=i,i=this.m_treeHull.getLeft(i)):(a=i,i=this.m_treeHull.getRight(i))}i=s,c=a,l=this.m_treeHull.getElement(i),u=this.m_treeHull.getElement(c);let d=this.m_getXY(l),f=this.m_getXY(u);if(c!==n&&!Ia(L.orientationRobust(f,e,d)))break;t=this.m_treeHull.addElementAtPosition(c,i,-2,!0,!1),this.treeHullWalkForward(e,i,r),this.treeHullWalkBackward(e,c,n);break}{let i=Ra(e,s,o);if(i===-1){let i=this.m_treeHull.getPrev(r);this.m_treeHull.deleteNode(r),t=this.m_treeHull.addBiggestElement(-3),this.treeHullWalkBackward(e,i,n)}else if(i===1){let i=this.m_treeHull.getNext(n);this.m_treeHull.deleteNode(n),t=this.m_treeHull.addElementAtPosition(-1,i,-3,!0,!1),this.treeHullWalkForward(e,i,r)}break}}while(0);return t}treeHullWalkForward(e,t,n){if(t===n)return n;let r=t,i=this.m_treeHull.getElement(r),a=this.m_treeHull.getNext(r),o=this.m_getXY(i);for(;r!==n&&this.m_treeHull.size()>2;){let t=this.m_treeHull.getElement(a),n=this.m_getXY(t);if(Ia(L.orientationRobust(n,e,o)))break;let s=r;r=a,i=t,o.assign(n),a=this.m_treeHull.getNext(r),this.m_deleteNode(s)}return r}treeHullWalkBackward(e,t,n){if(t===n)return n;let r=t,i=this.m_treeHull.getElement(r),a=this.m_treeHull.getPrev(r),o=this.m_getXY(i);for(;r!==n&&this.m_treeHull.size()>2;){let t=this.m_treeHull.getElement(a),n=this.m_getXY(t);if(Ia(L.orientationRobust(o,e,n)))break;let s=r;r=a,i=t,o.assign(n),a=this.m_treeHull.getPrev(r),this.m_deleteNode(s)}return r}}function Na(e,t,n){let r=t.sub(e),i=n.sub(t);if(r.x===0)return i.x>0?-1:0;if(r.y===0)return i.y>0?1:i.y<0?-1:0;let a=r.crossProduct(i),o=4*2**-52*(Math.abs(i.x*r.y)+Math.abs(i.y*r.x));return a>o?1:a<-o?-1:L.orientationRobust(e,t,n)}function Pa(e,t,n){let r=t.sub(e),i=n.sub(t);if(r.x===0)return i.x<0?-1:0;if(r.y===0)return i.y>0?-1:+(i.y<0);let a=r.crossProduct(i),o=4*2**-52*(Math.abs(i.x*r.y)+Math.abs(i.y*r.x));return a>o?1:a<-o?-1:L.orientationRobust(e,t,n)}function Fa(e,t,n,r){let i=new ce(0);for(let e=0;e<t;e++)i.add(e);r||le.sortEx(i,0,t,{userSort(t,n,r){r.sort(t,n,(t,n)=>e[t].compareX(e[n]))},getValue(t){return e[t].x}});let a=0;continueForward:for(let r=0;r<t;++r){let t=i.read(r);for(;a>=2;){let o=n[a-2],s=n[a-1];if(e[s].equals(e[t])){i.write(r,-1);continue continueForward}if(Na(e[o],e[s],e[t])>=0)a--;else{s===i.read(r-1)&&i.write(r-1,-1);break}}n[a++]=t,a===2&&e[t].equals(e[n[0]])&&(i.write(1,-1),a--)}let o=a+1;continueBackward:for(let r=t-2;r>=0;--r){let t=i.read(r);if(!(t<0)){for(;a>=o;){let r=n[a-2],i=n[a-1];if(e[i].equals(e[t]))continue continueBackward;if(Pa(e[r],e[i],e[t])>=0)a--;else break}if(r!==0){let r=n[a-1];n[a++]=t,e[t].equals(e[r])&&a--}}}return a>1&&e[n[0]].equals(e[n[a-1]])&&a--,a}function Ia(e){return e<0}function La(e){return e>0}function Ra(e,t,n){let r=-1;r=t.y===n.y?0:t.x===n.x?1:Math.abs(t.x-n.x)>=Math.abs(t.y-n.y)?0:1;let i=-1;return i=t[r]<n[r]?e[r]<t[r]?-1:+(n[r]<e[r]):t[r]<e[r]?-1:+(e[r]<n[r]),i}function za(e){return e=e.clone(),e.divThis(Math.max(Math.abs(e.x),Math.abs(e.y))),e.normalize(),e}function Ba(e,t,n){e.inc(t,0)===n&&e.set(t,0,0),e.inc(t,1)===n&&e.set(t,1,0)}function Va(e,n,r,i,a){switch(a){case 0:break;case 1:n.rightPerpendicularThis(),e.rightPerpendicularThis();break;case 2:n.negateThis(),e.negateThis();break;case 3:n.leftPerpendicularThis(),e.leftPerpendicularThis();break;default:t(``)}return L.orientationRobustEx(e,n,r,i)}class Ha{specialPoints;length;constructor(){this.length=NaN,this.specialPoints=[]}specialPointsCount(){return this.specialPoints.length}}function Ua(e){return Wa(e.calculateUpperLength2D())}function Wa(e){return Te()*256*e}function Ga(e){let t=L.distance(e.getStartXY(),e.getEndXY()),n=e.calculateUpperLength2D(),r=2**-52*8*n;return n-t<=r}function Ka(e,t,n=!1){t[1].setCoords(e.m_cp[0].x-e.getStartX(),e.m_cp[0].y-e.getStartY()),t[1].mulThis(3),t[2].setCoords(e.m_cp[1].x-e.m_cp[0].x,e.m_cp[1].y-e.m_cp[0].y),t[2].mulThis(3),t[3]=e.getEndXY().sub(e.getStartXY()),t[3].subThis(t[2]),t[2].subThis(t[1]),n?t[0].setCoords(0,0):t[0]=e.getStartXY()}function qa(e,t,n){let r=U(L,4);e.queryControlPoints(r),Ya(r,t,n)}function Ja(e,t,n){let r=U(L,4);e.queryControlPoints(r),Xa(r,t,n)}function Ya(e,t,n){let r=e[1].x;r-=e[0].x,r*=3;let i=e[2].x;i-=e[1].x,i*=3;let a=e[3].x;a-=e[0].x,a-=i,i-=r,t[3].setWithEps(a),t[2].setWithEps(i),t[1].setWithEps(r),n?t[0].set(0):t[0].set(e[0].x)}function Xa(e,t,n){let r=e[1].y;r-=e[0].y,r*=3;let i=e[2].y;i-=e[1].y,i*=3;let a=e[3].y;a-=e[0].y,a-=i,i-=r,t[3].setWithEps(a),t[2].setWithEps(i),t[1].setWithEps(r),n?t[0].set(0):t[0].set(e[0].y)}function Za(e,t,n=!1){let r=U(J,4);r[0].assignPoint2D(e[0]),r[1].assignPoint2D(e[1]),r[2].assignPoint2D(e[2]),r[3].assignPoint2D(e[3]),t[1].setCoords(r[1].x.sub(r[0].x),r[1].y.sub(r[0].y)),t[1].mulThis(B.constructInt32(3)),t[2].setCoords(r[2].x.sub(r[1].x),r[2].y.sub(r[1].y)),t[2].mulThis(B.constructInt32(3)),t[3]=r[3].sub(r[0]),t[3]=t[3].sub(t[2]),t[2]=t[2].sub(t[1]),n?t[0].setCoords(lt,lt):t[0]=r[0].clone()}function Qa(e,t,n){if(n){if(t<0)return t;if(t>1)return t-1+Qa(e,1,!1)}if(e.isDegenerate(0))return 0;let r=t===1,i=to(e);if(r&&!Number.isNaN(i.length)&&!Number.isNaN(i.length))return i.length;let a=Ua(e),o=a/e.calculateUpperLength2D(),s=0,c=0;for(let n=1,r=i.specialPointsCount();n<r;n++){let r=i.specialPoints[n],l=is(e,c,Math.min(t,r),o,a);if(s+=l,t<=r)break;c=r}return r&&(i.length=s),s}function $a(e,t,n){let r=Qa(e,1,!1);if(t<=0)return t;if(t>=r)return t-r+1;let i=new ns(e,t),a=[0];return sr(i,F.unit(),1,a)!==1&&c(``),a[0]}function eo(e,n,r){r===void 0&&(r=n,n=0);let i=new L;if(n<0||r>1)return i.setNAN(),i;if(n>r&&t(`calculate_sub_weightedCentroid`),n===r||e.isDegenerate(0))return i.setCoords(0,0),i;let a=to(e),o=Ua(e),s=o/e.calculateUpperLength2D(),c=n,l=0;for(let e=1,t=a.specialPointsCount();e<t;e++)if(n<a.specialPoints[e]){l=e-1;break}i.setCoords(0,0);for(let t=l+1,n=a.specialPointsCount();t<n;t++){let n=Math.min(a.specialPoints[t],r),l=as(e,c,n,s,o);if(i.addThis(l),c=n,r<=a.specialPoints[t])break}return i.add(e.getStartXY().mul(e.calculateLength2D()))}function to(e){if(e.m_cachedValues)return e.m_cachedValues;let t=new Ha,n=U(H,8),r=U(L,4);e.queryControlPoints(r);let i=Xo(r,n);t.specialPoints=[];for(let e=0;e<i;e++)t.specialPoints.push(n[e].value());return ro(e,t),t}function no(e){let t=null;return t=e.m_cachedValues,t}function ro(e,t){e.m_cachedValues=t}function io(e){e.m_cachedValues=null}function ao(e,t){t.m_cachedValues=R(e.m_cachedValues,e.m_cachedValues=t.m_cachedValues)}function oo(e,t,n,r){if(t.isEqual(e.m_XStart,e.m_YStart)&&n.isEqual(e.m_XEnd,e.m_YEnd))return;let i=r?e.isMonotoneQuickAndDirty():!1,a=new bt,o=U(L,3);o[0].setCoords(e.m_XStart,e.m_YStart),o[2].setCoords(e.m_XEnd,e.m_YEnd);let s=new L;s.setSub(o[2],o[0]),s.leftPerpendicularThis(),o[1].setAdd(o[0],s);let c=U(L,3);c[0].setCoordsPoint2D(t),c[2].setCoordsPoint2D(n),s.setSub(c[2],c[0]),s.leftPerpendicularThis(),c[1].setAdd(c[0],s),a.setFromTwoTriangles(o,c)?a.transformPoints2D(e.m_cp,2,e.m_cp):(He(t,n,1/3,e.m_cp[0]),He(t,n,2/3,e.m_cp[1])),e.changeEndPoints2D(t,n),i&&_o(e)}function so(e,t,n,r,i){return{tmin:e,tmax:t,t:n,d:r,pt:i.clone()}}function co(e,t,n,r){let i=U(L,4);e.queryControlPoints(i);let a=I(18,NaN),o=sr(new Ho(i,t,NaN),F.construct(n,r),18,a),s=new L;e.queryCoord2D(n,s);let c=n,l=L.distance(s,t),u=new L;e.queryCoord2D(r,u);let d=L.distance(u,t);d<l&&(l=d,c=r,s.assign(u));for(let n=0;n<o;n++){e.queryCoord2D(a[n],u);let r=L.distance(u,t);r<l&&(l=r,c=a[n],s.assign(u))}return so(n,r,c,l,s)}function lo(e,t){let r=U(H,4);qa(e,r,!0);let i=U(H,4);Ja(e,i,!0);let a=r[3].clone(),o=r[2].clone(),s=r[1].clone(),c=i[3].clone(),l=i[2].clone(),u=i[1].clone(),d=o.mulE(s).addE(l.mulE(u)).mul(4),f=o.mulE(o).mul(8).addE(a.mulE(s).mul(12)).addE(l.mulE(l).mul(8).addE(c.mulE(u).mul(12))),p=a.mulE(o).addE(c.mulE(l)).mul(36),m=a.mulE(a).addE(c.mulE(c)).mul(36),h=U(H,3),g=br(m,p,f,d,new F(0,1),!1,h);if(n(g<=3),g>0){let n=ho(e,1,0).sqrLength(),r=ho(e,1,1).sqrLength(),i=n;t.set(0),i<r&&(i=r,t.set(1));for(let n=0;n<g;n++){let r=ho(e,1,h[n].value()).sqrLength();r<i&&(i=r,t=h[n])}}}function uo(e,t,n,r){if(t===1){let t=1-n,i=t*t,a=n*n,o=e[1].sub(e[0]),s=e[2].sub(e[1]),c=e[3].sub(e[2]),l=o.mul(i).add(s.mul(2*t*n)).add(c.mul(a));r.assign(l.mul(3))}else if(t===2){let t=1-n,i=e[2].sub(e[1]).sub(e[1].sub(e[0])),a=e[3].sub(e[2]).sub(e[2].sub(e[1])),o=i.mul(t).add(a.mul(n));r.assign(o.mul(6))}else if(t===3){let t=e[2].sub(e[1]),n=e[3].sub(t.mul(3)).sub(e[0]);r.assign(n.mul(6))}else r.setCoords(0,0)}function fo(e,t,n,r){{let t=be.subE(n),i=t.sqr(),a=n.sqr(),o=e[1].subE(e[0]).mulE(i).addE(e[2].subE(e[1]).mulE(new H(2).mulE(t).mulE(n))).addE(e[3].subE(e[2]).mulE(a));r.setE(o.mulE(new H(3)))}}function po(e,t,n){let r=new L;return uo(e,t,n,r),r}function mo(e,t,n){let r=[q.constructPoint2D(e[0]),q.constructPoint2D(e[1]),q.constructPoint2D(e[2]),q.constructPoint2D(e[3])],i=new q;return fo(r,t,n,i),i}function ho(e,t,n){let r=U(L,4);return e.queryControlPoints(r),po(r,t,n)}function go(e){let t=e.m_cp[0].sub(e.getStartXY()),n=e.m_cp[1].sub(e.m_cp[0]),r=e.getEndXY().sub(e.getStartXY());return t.mulThis(3),n.mulThis(3),r.subThis(n),n.subThis(t),(3*r.x*(2*n.y+5*t.y)-3*r.y*(2*n.x+5*t.x)+10*(n.x*t.y-n.y*t.x))/60}function _o(e){let t=U(L,4);e.queryControlPoints(t);let n=vo(t);return n&&(e.m_cp[0].setCoordsPoint2D(t[1]),e.m_cp[1].setCoordsPoint2D(t[2]),e.afterCompletedModification()),n}function vo(e){return Ut(e)}function yo(e){return Wt(e)}function bo(e,t,n){let r=new L,i=new L,a=new L,o=new L,s=new L;t<=.5?(Je(2,e[0],e[1],t,r),Je(2,e[1],e[2],t,i),Je(2,e[2],e[3],t,a),Je(2,r,i,t,o),Je(2,i,a,t,s),Je(2,o,s,t,n)):(Ye(2,e[0],e[1],t,r),Ye(2,e[1],e[2],t,i),Ye(2,e[2],e[3],t,a),Ye(2,r,i,t,o),Ye(2,i,a,t,s),Ye(2,o,s,t,n))}function xo(e,t,r,i){n(t>=0&&t<=1);let a=new L,o=new L,s=new L,c=new L,l=new L,u=new L;t<=.5?(Je(2,e[0],e[1],t,a),Je(2,e[1],e[2],t,o),Je(2,e[2],e[3],t,s),Je(2,a,o,t,c),Je(2,o,s,t,l),Je(2,c,l,t,u)):(Ye(2,e[0],e[1],t,a),Ye(2,e[1],e[2],t,o),Ye(2,e[2],e[3],t,s),Ye(2,a,o,t,c),Ye(2,o,s,t,l),Ye(2,c,l,t,u));let d=e[3].clone();r&&(r[0].assign(e[0]),r[1].assign(a),r[2].assign(c),r[3].assign(u)),i&&(i[0].assign(u),i[1].assign(l),i[2].assign(s),i[3].assign(d))}function So(e,t,r,i){if(n(t>=0&&r<=1&&t<=r),t===r){let n=new L;Co(e,t,n),i[0].assign(n),i[1].assign(n),i[2].assign(n),i[3].assign(n);return}if(t===0&&r===1){for(let t=0;t<4;++t)i[t].assign(e[t]);return}let a=U(L,4);xo(e,r,a,null),xo(a,r>0?t/r:0,null,a),Co(e,t,a[0]),Co(e,r,a[3]),i[0].setCoordsPoint2D(a[0]),i[1].setCoordsPoint2D(a[1]),i[2].setCoordsPoint2D(a[2]),i[3].setCoordsPoint2D(a[3])}function Co(e,t,n,r){if(r){if(t<0){Cn(new Q({start:e[0],end:e[0].add(Eo(e,0).getUnitVector())}),t,n);return}if(t>1){Cn(new Q({start:e[3],end:e[3].add(Eo(e,1).getUnitVector())}),t-1,n);return}}if(t<=.5){let r=new L;Je(2,e[0],e[1],t,r);let i=new L;Je(2,e[1],e[2],t,i);let a=new L;Je(2,e[2],e[3],t,a);let o=new L;Je(2,r,i,t,o);let s=new L;Je(2,i,a,t,s),Je(2,o,s,t,n)}else{let r=new L;Ye(2,e[0],e[1],t,r);let i=new L;Ye(2,e[1],e[2],t,i);let a=new L;Ye(2,e[2],e[3],t,a);let o=new L;Ye(2,r,i,t,o);let s=new L;Ye(2,i,a,t,s),Ye(2,o,s,t,n)}}function wo(e,t,n){if(t.value()<=.5){let r=new q;We(2,q.constructPoint2D(e[0]),q.constructPoint2D(e[1]),t,r);let i=new q;We(2,q.constructPoint2D(e[1]),q.constructPoint2D(e[2]),t,i);let a=new q;We(2,q.constructPoint2D(e[2]),q.constructPoint2D(e[3]),t,a);let o=new q;We(2,r,i,t,o);let s=new q;We(2,i,a,t,s),We(2,o,s,t,n)}else{let r=new q;Ge(2,q.constructPoint2D(e[0]),q.constructPoint2D(e[1]),t,r);let i=new q;Ge(2,q.constructPoint2D(e[1]),q.constructPoint2D(e[2]),t,i);let a=new q;Ge(2,q.constructPoint2D(e[2]),q.constructPoint2D(e[3]),t,a);let o=new q;Ge(2,r,i,t,o);let s=new q;Ge(2,i,a,t,s),Ge(2,o,s,t,n)}}function To(e,t,n){let r=U(L,4);e.queryControlPoints(r),wo(r,t,n)}function Eo(e,t){let n=we(t,0,1),r=po(e,1,n);return r.isZero()&&(r=po(e,2,n),r.isZero()?r=po(e,3,n):n===1&&r.negateThis()),r}function Do(e,t,n){let r=U(L,4);e.queryControlPoints(r),Oo(r,t,n)}function Oo(e,t,n){t.value()<0&&t.set(0,t.eps()),t.value()>1&&t.set(1,t.eps()),n.setE(mo(e,1,t))}function ko(e,t,n,r,i){if(i){if(du(t,n)!==0)return e?4:2}else if(Gt(t,n))return 1;return Po(e,t,n,null,null,null,r,i!==void 0&&i,!0,!1)===0?0:4}function Ao(e,t,n,r,i){if(i){if(du(t,n)!==0)return e?4:2}else if(Gt(t,n))return 1;return Fo(e,t,n,null,null,null,r,i!==void 0&&i,!0,!1)===0?0:4}function jo(e,t,n,r,i){if(i){if(du(t,n)!==0)return 2}else if(Gt(t,n))return 1;return Io(e,t,n,null,null,null,r,i!==void 0&&i,!0,!1)===0?0:4}function Mo(e,t,n,r,i){if(i){if(du(t,n)!==0)return e?4:2}else if(Gt(t,n))return 1;return Lo(e,t,n,null,null,null,r,i!==void 0&&i,!0,!1)===0?0:4}function No(e,t,n,r,i){if(i){if(du(t,n)!==0)return e?4:2}else if(Gt(t,n))return 1;return Ro(e,t,n,null,null,null,r,i??!1,!0,!1)===0?0:4}function Po(e,t,n,r,i,a,o,s,c,l){if(i!==null&&(i.length=0),a!=null&&(a.length=0),r!==null&&(r.length=0),n.isDegenerate(0)){let e=[0,0,0],s=t.intersectPoint(n.getStartXY(),e,o);if(s>0){if(i!==null)for(let t=0;t<s;t++)i.push(e[t]);if(a!==null)for(let e=0;e<s;e++)a.push(0);if(r!=null)for(let n=0;n<s;n++){let i=new L;t.queryCoord2D(e[n],i),r.push(i)}}return s}let u=pn(t,n);if(o=Math.max(o,u),mn(t,n,o))return 0;let d=U(L,4);Ka(t,d);let f=n.getEndXY();f.subThis(n.getStartXY());let p=f.clone();p.leftPerpendicularThis();let m=d[3].dotProduct(p)*3,h=d[2].dotProduct(p)*2,g=d[1].dotProduct(p),_=I(15,NaN),v=I(15,NaN),y=lr(m,h,g,F.unit(),!1,_);y<0&&(_[0]=0,_[1]=1,y=2);let b=0;for(let e=0,r=b;e<y;++e){let i=t.getCoord2D(_[e+r]);v[b]=n.getClosestCoordinate(i,!1),L.distance(i,n.getCoord2D(v[b]))<=o&&(_[b]=_[e+r],b++)}let x;if(d[0].subThis(n.getStartXY()),Math.abs(f.x)>=Math.abs(f.y)){let e=f.y/f.x;m=d[3].y-d[3].x*e,h=d[2].y-d[2].x*e,g=d[1].y-d[1].x*e,x=d[0].y-d[0].x*e}else{let e=f.x/f.y;m=d[3].x-d[3].y*e,h=d[2].x-d[2].y*e,g=d[1].x-d[1].y*e,x=d[0].x-d[0].y*e}let S=t.getEndXY().equals(n.getStartXY())||t.getEndXY().equals(n.getEndXY()),C=[0,0,0];y=ur(m,h,g,x,F.unit(),S,C);for(let e=0,r=b;e<y;++e){_[e+r]=C[e];let i=t.getCoord2D(_[e+r]);v[b]=n.getClosestCoordinate(i,!1),L.distance(i,n.getCoord2D(v[b]))<=o&&(_[b]=_[e+r],b++)}y=t.intersectPoint(n.getStartXY(),C,o);for(let e=0;e<y;e++)_[b]=C[e],v[b++]=0;y=t.intersectPoint(n.getEndXY(),C,o);for(let e=0;e<y;e++)_[b]=C[e],v[b++]=1;return n.intersectPoint(t.getStartXY(),C,o)!==0&&(v[b]=C[0],_[b++]=0),n.intersectPoint(t.getEndXY(),C,o)!==0&&(v[b]=C[0],_[b++]=1),b===0?0:gu(e,t,n,_,v,b,r,i,a,o,s,c,l)}function Fo(e,t,n,r,i,a,o,s,c,l){if(Z(n))return Po(e,t,new Q({start:n.getStartXY(),end:n.getEndXY()}),r,i,a,o,s,c,l);let u=pn(t,n);if(o=Math.max(o,u),mn(t,n,o))return 0;let d=[],f=[],p=[],m=U(L,4);{t.queryControlPoints(m);let e=U(L,4),r=new bt;n.canonicToWorldTransformation(r);let i=new bt;i.setInvert(r),i.transformPoints2D(m,4,e);let a=U(J,4);Za(e,a);let c=[a[0].x,a[1].x,a[2].x,a[3].x],l=[a[0].y,a[1].y,a[2].y,a[3].y],u=U(B,3);u[0].setDouble(n.getSemiMinorAxis()),u[0].sqrThis(),u[1].setDouble(n.getSemiMajorAxis()),u[1].sqrThis(),u[2].setThis(u[0]),u[2].mulThis(u[1]),u[2].negateThis();let h=Br(c,3,l,3,null,0,u,!0,F.unit(),F.unit(),f,s);if(h>0){let e=0;for(let r=0;r<h;r++){let i=new L;t.queryCoord2D(f[r],i);let a=n.getClosestCoordinate(i,!1),s=new L;n.queryCoord2D(a,s),L.distance(i,s)<=o&&(d.push(i.clone()),f[e]=f[r],p.push(a),e++)}f.length=e,d.length=e}}let h=[0,1];for(let e=0;e<2;e++)do{let t=e===0?n.getStartXY():n.getEndXY(),r=[0];Uo(m,t,F.unit(),!1,-1,1,r);let i=new L;Co(m,r[0],i),L.distance(t,i)<=o&&(f.push(r[0]),p.push(h[e]),d.push(i.clone()))}while(0);for(let e=0;e<2;e++){let t=[0,3];do{let r=n.getClosestCoordinate(m[t[e]],!1),i=new L;n.queryCoord2D(r,i),L.distance(m[t[e]],i)<=o&&(f.push(h[e]),p.push(r),d.push(i.clone()))}while(0)}return gu(e,t,n,f,p,f.length,r,i,a,o,s,c,l)}function Io(e,t,r,i,a,o,s,c,l,u){let d=U(L,4);t.queryControlPoints(d);let f=U(L,4);if(r.queryControlPoints(f),hn(d,f,4)<0)return Io(e,r,t,i,o,a,s,c,l,!u);let p=pn(t,r);if(s=Math.max(s,p),mn(t,r,s))return 0;if(os(t,r,i,a,o,s,c,l,u))return 2;let m=new F(0,1),h=new F(0,1);{let e=new Ft;Vo(d,new F(0,1),e);let t=new Ft;Vo(f,new F(0,1),t);let n=Math.max(e.maxDim(),t.maxDim());if(e.inflate(s*3),t.inflate(s*3),!e.intersectW(t))return 0;if(e.maxDim()<n*.1){if(es(d,e,m),m.isEmpty()||(es(f,e,h),h.isEmpty()))return 0;So(d,m.vmin,m.vmax,d),So(f,h.vmin,h.vmax,f)}}let g=vu(d,3,f,3,s);if(g===0)return 0;let _=[],v=[],y=[],b=!1;if(g===-1){let e=U(J,4);Za(d,e);let t=[e[0].x,e[1].x,e[2].x,e[3].x],n=[e[0].y,e[1].y,e[2].y,e[3].y],r=U(J,4);Za(f,r);let i=[r[0].x,r[1].x,r[2].x,r[3].x],a=[r[0].y,r[1].y,r[2].y,r[3].y],o=[],c=[],u=Lr(t,3,n,3,null,0,i,3,a,3,null,0,!0,F.unit(),F.unit(),o,c,l);if(u>0)for(let e=0;e<u;e++){let t=new L;Co(f,c[e],t);let n=new L;Co(d,o[e],n),L.distance(n,t)<=s&&(_.push(n.clone()),y.push(c[e]),v.push(o[e]))}else u===-1&&(b=!0)}for(let e=0;e<2;e++){let t=e===0?d:f,n=e===0?f:d;for(let r=0;r<2;r++){let i=r===0?0:3,a=[0];Uo(n,t[i],F.unit(),!1,-1,1,a);let o=new L;Co(n,a[0],o),L.distance(t[i],o)<=s&&(e===0?(v.push(i===0?0:1),y.push(a[0])):(y.push(i===0?0:1),v.push(a[0])),_.push(o.clone()))}}if(v.length===0&&b){let e=t.calculateUpperLength2D()>r.calculateUpperLength2D();{let i=[0,0];if(Jo(e?t:r,i,!0)===2&&(n(F.unit().containsCoordinate(i[0])),!F.unit().containsCoordinate(i[1]))){let t=new L;Co(e?d:f,i[0],t);let n=[0,0];Uo(e?f:d,t,F.unit(),!1,-1,2,n)===1&&(_.push(t.clone()),v.push(e?i[0]:n[0]),y.push(e?n[0]:i[0]))}}}if(v.length===0)return 0;if(!m.equalsRange(0,1))for(let e=0;e<v.length;++e)v[e]=ls.recalculateParentT(m.vmin,m.vmax,v[e]);if(!h.equalsRange(0,1))for(let e=0;e<y.length;++e)y[e]=ls.recalculateParentT(h.vmin,h.vmax,y[e]);return gu(e,t,r,v,y,v.length,i,a,o,s,c,l,u)}function Lo(e,t,r,i,a,o,s,c,l,u){let d=pn(t,r);if(r.isDegenerateToLineHelper(d)){let n=new Q({start:r.getStartXY(),end:r.getEndXY()}),d=Po(e,t,n,i,a,o,s,c,l,u);if(o)for(let e=0;e<d;++e){let t=n.getCoord2D(o[e]);o[e]=r.getClosestCoordinate(t,!1)}return d}if(s=Math.max(s,d),mn(t,r,s))return 0;let f=U(L,4);t.queryControlPoints(f);let p=U(L,3);r.queryControlPoints(p);let m=new F(0,1),h=new F(0,1),g=[0,0,0];r.queryWeights(g);let _=[1,Sc(g),1];{let e=new Ft;Vo(f,new F(0,1),e);let t=new Ft;Ys(p,_,new F(0,1),t);let n=Math.max(e.maxDim(),t.maxDim());if(e.inflate(s*3),t.inflate(s*3),!e.intersectW(t))return 0;if(e.maxDim()<n*.1){if(es(f,e,m),m.isEmpty()||(xc(p,_,e,h),h.isEmpty()))return 0;So(f,m.vmin,m.vmax,f),tc(p,_,h.vmin,h.vmax,p,_)}}let v=vu(f,3,p,2,s);if(v===0)return 0;let y=[],b=[],x=[];if(v===-1){let e=U(J,4);Za(f,e);let t=[e[0].x,e[1].x,e[2].x,e[3].x],n=[e[0].y,e[1].y,e[2].y,e[3].y],r=U(B,3),i=U(B,3),a=U(B,3);pc(p,_,r,i,a);let o=[],c=[],u=Lr(r,2,i,2,a,2,t,3,n,3,null,0,!0,F.unit(),F.unit(),c,o,l);if(u>0)for(let e=0;e<u;e++){let t=new L;Co(f,o[e],t);let n=new L;bc(p,_,c[e],n),L.distance(t,n)<=s&&(y.push(t.clone()),b.push(o[e]),x.push(c[e]))}}for(let e=0;e<2;e++){let t,r;e===0?(t=f,r=p):(r=f,t=p);for(let i=0;i<2;i++){let a=i===0?0:t.length-1,o=[0],c=new L;if(e===0){let e=Gs(r,_,t[a],F.unit(),!1,-1,1,o);n(e===1),bc(r,_,o[0],c)}else{let e=Uo(r,t[a],F.unit(),!1,-1,1,o);n(e===1),Co(r,o[0],c)}L.distance(t[a],c)<=s&&(e===0?(b.push(a===0?0:1),x.push(o[0])):(x.push(a===0?0:1),b.push(o[0])),y.push(c.clone()))}}if(b.length===0)return 0;if(!m.equalsRange(0,1))for(let e=0;e<b.length;++e)b[e]=ls.recalculateParentT(m.vmin,m.vmax,b[e]);if(!h.equalsRange(0,1))for(let e=0;e<x.length;++e)x[e]=jr.recalculateParentT(h.vmin,h.vmax,x[e]);for(let e=0;e<x.length;++e)x[e]=Cc(g,x[e]);return gu(e,t,r,b,x,b.length,i,a,o,s,c,l,u)}function Ro(e,t,r,i,a,o,s,c,l,u){let d=pn(t,r);if(s=Math.max(s,d),mn(t,r,s))return 0;let f=U(L,4);t.queryControlPoints(f);let p=U(L,3);r.queryControlPoints(p);let m=vu(f,3,p,2,s);if(m===0)return 0;let h=[],g=[],_=[];if(m===-1){let e=U(J,4);Za(f,e);let n=[e[0].x,e[1].x,e[2].x,e[3].x],i=[e[0].y,e[1].y,e[2].y,e[3].y],a=U(J,3);Yi(p,a);let o=Lr([a[0].x,a[1].x,a[2].x],2,[a[0].y,a[1].y,a[2].y],2,null,0,n,3,i,3,null,0,!0,F.unit(),F.unit(),_,g,c);if(o>0){let e=0;for(let n=0;n<o;n++){let i=new L;t.queryCoord2D(g[n],i);let a=new L;r.queryCoord2D(_[n],a),L.distance(i,a)<=s&&(h.push(i.clone()),g[e]=g[n],_[e]=_[n],e++)}g.length=e,h.length=e}}for(let e=0;e<2;e++){let t,r;e===0?(t=f,r=p):(r=f,t=p);for(let i=0;i<2;i++){let a=i===0?0:t.length-1,o=[0],c=new L;if(e===0)Di(r,t[a],o),Xi(r,o[0],c);else{let e=Uo(r,t[a],F.unit(),!1,-1,1,o);n(e===1),Co(r,o[0],c)}L.distance(t[a],c)<=s&&(e===0?(g.push(a===0?0:1),_.push(o[0])):(_.push(a===0?0:1),g.push(o[0])),h.push(c.clone()))}}return gu(e,t,r,g,_,g.length,i,a,o,s,c,l,u)}function zo(e,t,i,a,o){let s=new Ft;if(Bo(e,F.unit(),s),s.inflate(a),!s.isIntersectingPoint2D(t))return 0;let c=to(e),l=0,u=c.specialPoints[0],d=[];for(let r=1,i=c.specialPoints.length;r<i;++r){let i=c.specialPoints[r],a=co(e,t,u,i);if(d.length===0)d.push(a);else if(a.t===a.tmin)n(d.at(-1).d<=a.d),d.at(-1).tmax=a.tmax;else if(d.at(-1).t===d.at(-1).tmax){n(d.at(-1).d>=a.d);let e=d.at(-1).tmin;d[d.length-1]=a,d.at(-1).tmin=e}else d.push(a);u=i}for(let e of d)if(e.d<=a){let t=e.t;i?(l>=i.length&&r(``),i[l]=t,l++):l++}return l}function Bo(e,t,n){let r=U(L,4);e.queryControlPoints(r),Vo(r,t,n)}function Vo(e,t,n){if(t.equalsRange(0,1)){n.setFromPoints(e,4);return}let r=U(L,4);So(e,t.vmin,t.vmax,r),n.setFromPoints(r,4)}let Ho=class{controlPoints;point;maxDistance;dbgCounter=0;constructor(e,t,n){this.controlPoints=e,this.point=t.clone(),this.maxDistance=n}getMaxDerivative(){return 6}getValue(e,t){switch(e){case 0:{let e=new L;Co(this.controlPoints,t,e);let n=po(this.controlPoints,1,t);return e.sub(this.point).dotProduct(n)*2}case 1:{let e=new L;Co(this.controlPoints,t,e);let n=po(this.controlPoints,1,t),r=po(this.controlPoints,2,t);return(e.sub(this.point).dotProduct(r)+n.dotProduct(n))*2}case 2:{let e=new L;Co(this.controlPoints,t,e);let n=po(this.controlPoints,1,t),r=po(this.controlPoints,2,t),i=po(this.controlPoints,3,t);return(e.sub(this.point).dotProduct(i)+3*n.dotProduct(r))*2}case 3:{let e=po(this.controlPoints,1,t),n=po(this.controlPoints,2,t),r=po(this.controlPoints,3,t);return(4*e.dotProduct(r)+3*n.sqrLength())*2}case 4:{let e=po(this.controlPoints,2,t),n=po(this.controlPoints,3,t);return 10*e.dotProduct(n)*2}case 5:{let e=po(this.controlPoints,3,t);return 10*e.dotProduct(e)*2}default:return 0}}getError(e){return 0}isInterestingInterval(e,t){if(e>=0&&t<=1){let n=U(L,4);So(this.controlPoints,e,t,n);let r=new Ft;if(r.setFromPoints(n,4),Math.sqrt(r.sqrMinDistance(this.point))>this.maxDistance)return!1}return!0}};function Uo(e,t,r,i,a,o,s){h(F.unit().contains(r)&&o>0,`getClosestCoordinate`),(a<0||Number.isNaN(a))&&(a=Number.MAX_VALUE);let c=[],l=new L;Co(e,r.vmin,l);let u=L.distance(l,t);if(u<=a&&c.push(new L(r.vmin,u)),r.vmin!==r.vmax&&(Co(e,r.vmax,l),u=L.distance(l,t),u<=a&&c.push(new L(r.vmax,u))),r.width()>0){let n=I(18,NaN),i=sr(new Ho(e,t,a),r,18,n);for(let r=0;r<i;r++)Co(e,n[r],l),u=L.distance(l,t),!(u>a)&&c.push(new L(n[r],u))}if(i){n(r.equals(F.unit()));{Co(e,-1,l,!0);let n=new L;Co(e,0,n);let r=new Q({start:l,end:n}),i=r.getClosestCoordinate(t,!0);i<1&&(l.assign(r.getCoord2D(i)),u=L.distance(l,t),u<=a&&c.push(new L(i-1,u)))}{Co(e,2,l,!0);let n=new L;Co(e,r.vmax,n);let i=new Q({start:n,end:l}),o=i.getClosestCoordinate(t,!0);o>0&&(l.assign(i.getCoord2D(o)),u=L.distance(l,t),u<=a&&c.push(new L(1+o,u)))}}if(!c.length)return 0;c.sort((e,t)=>e.compare(t));let d=0,f=c[0].x;if(s[d++]=f,d<o){let t=fe(e,4,!1).total(),n=c[0].y;for(let e=1,r=c.length;e<r;e++)if(c[e].y>n+t){c.length=e;break}c.sort((e,t)=>Ze(e.x,t.x)),d=0,s[d++]=c[0].x;for(let e=1,t=c.length;e<t;e++)c[e].x!==s[d-1]&&d<o&&(s[d++]=c[e].x)}return d}function Wo(e,t,n,r,i,a,o){let s=U(L,4);return e.queryControlPoints(s),Uo(s,t,n,r,i,a,o)}function Go(e){return e.getStartXY().norm(1)+e.getEndXY().norm(1)+e.m_cp[0].norm(1)+e.m_cp[1].norm(1)}function Ko(e){return e[0].norm(1)+e[1].norm(1)+e[2].norm(1)+e[3].norm(1)}function qo(e,t,r){if(n(r>=2),r===2){let n=new L;He(t[0],t[r-1],1/3,n);let i=new L;He(t[0],t[r-1],2/3,i),e.construct(t[0],n,i,t[r-1]);return}let i=t[0],a=t[r-1],o=[0,0],s=Wo(e,i,F.unit(),!1,NaN,2,o),c=[0,0],l=Wo(e,a,F.unit(),!1,NaN,2,c),u=[];for(let n=0;n<s;n++)for(let s=0;s<l;s++){let l=o[n],d=c[s],f=l>d,p=(n,o)=>{let s=I(r-2,NaN),c=()=>{let e=0;for(let n=1,i=r-1;n<i;n++){e+=L.distance(t[n-1],t[n]);let r=e;s[n-1]=r}e+=L.distance(t[r-2],t[r-1]),f&&s.reverse();for(let t=1,n=r-1;t<n;t++)s[t-1]/=e,f&&(s[t-1]=1-s[t-1])},u=!1,p=!1;{let t=new $;f?(e.queryCut(d,l,t,!0),n.assign(t.get().getControlPoint2()),o.assign(t.get().getControlPoint1())):(e.queryCut(l,d,t,!0),n.assign(t.get().getControlPoint1()),o.assign(t.get().getControlPoint2())),i.equals(n)&&(u=!0),a.equals(o)&&(p=!0)}c();let m=Number.MAX_VALUE,h=n.clone(),g=o.clone();for(let e=0;e<5;e++)m=ss(!0,!1,i,h,g,a,u,p,s,r-2,t,r);for(let e=0;e<30;e++){let e=h.clone();g.clone();let n=ss(!0,!0,i,h,g,a,u,p,s,r-2,t,r);if(m<=n&&e.equals(h)&&e.equals(g))break;m=n}c();let _=!1,v=Number.MAX_VALUE,y=n.clone(),b=o.clone();for(let e=0;e<30;e++){let e=y.clone();b.clone();let n=ss(_,!0,i,y,b,a,u,p,s,r-2,t,r);if(v<=n&&e.equals(y)&&e.equals(b))break;_=!0,v=n}return v<m?(n.assign(y),o.assign(b)):(n.assign(h),o.assign(g),v=m),v},m=new L,h=new L,g=[p(m,h),L.distance(i,m)+L.distance(m,h)+L.distance(h,a),m.x,m.y,h.x,h.y];u.splice(u.length,0,...g)}let d=u[0],f=u[1],p=0;for(let e=6;e<u.length;e+=6)u[e]<d&&(d=u[e],f=u[e+1],p=e);let m=p;for(let e=0;e<u.length;e+=6)e!==p&&u[e+1]<f&&Math.abs(d-u[e])<d*10&&(f=u[e+1],m=e);e.construct(i,new L(u[m+2],u[m+3]),new L(u[m+4],u[m+5]),a)}function Jo(e,t,n=!1){let r=U(L,4);e.queryControlPoints(r);let i=U(J,4);Za(r,i,!0);let a,o,s,c=i[3].x.isZero(),l=i[3].y.isZero();if(!c&&!l){i[2].x.divThis(i[3].x),i[1].x.divThis(i[3].x),i[2].y.divThis(i[3].y),i[1].y.divThis(i[3].y);let e=i[2].x.sub(i[2].y);if(e.isZero())return 0;a=i[1].x.sub(i[1].y).div(e).negate(),o=i[2].x.clone(),s=i[1].x.clone()}else if(c&&!l){if(i[2].x.isZero())return 0;a=i[1].x.div(i[2].x).negate(),o=i[2].y.div(i[3].y),s=i[1].y.div(i[3].y)}else if(!c&&l){if(i[2].y.isZero())return 0;a=i[1].y.div(i[2].y).negate(),o=i[2].x.div(i[3].x),s=i[1].x.div(i[3].x)}else return 0;if(!n&&a.abs().value()>2)return 0;let u=[0,0],d=e.getStartXY().equals(e.getEndXY()),f=lr(1,-a.toDouble(),a.add(o).mul(a).add(s).toDouble(),F.unit(),d,u);if(f===0)return 0;if(u[0]>=0&&u[0]<=1){let e=a.toDouble()-u[0];if(n||e>=0&&e<=1)return t[0]=u[0],t[1]=e,t[0]>t[1]&&(t[1]=R(t[0],t[0]=t[1])),2}if(f===2&&u[1]>=0&&u[1]<=1){let e=a.toDouble()-u[1];if(n||e>=0&&e<=1)return t[0]=u[1],t[1]=e,t[0]>t[1]&&(t[1]=R(t[0],t[0]=t[1])),2}return 0}function Yo(e,t,n){let r=e[1].mulE(t[2]).subThisE(e[2].mulE(t[1])),i=e[1].mulE(t[3]).subThisE(e[3].mulE(t[1])).mulThis(3),a=e[2].mulE(t[3]).subThisE(e[3].mulE(t[2])).mulThis(3),o=U(H,2),s=yr(a,i,r,new F(0,1),!1,o);s<0&&(s=0);let c=0;for(let e=0;e<s;e++)W(o[e].value(),0,1)||(n[c].setE(o[e]),c++);return c}function Xo(e,t){t[0].set(0);let r=1,i=U(H,4);Ya(e,i,!0);let a=U(H,4);Xa(e,a,!0);{let e=i[3].mul(3),n=i[2].mul(2),a=i[1].clone(),o=U(H,2),s=yr(e,n,a,new F(0,1),!1,o);s<0&&(s=0);for(let e=0;e<s;e++)W(o[e].value(),0,1)||(t[r]=o[e],r++)}{let e=a[3].mul(3),n=a[2].mul(2),i=a[1].clone(),o=U(H,2),s=yr(e,n,i,new F(0,1),!1,o);s<0&&(s=0);for(let e=0;e<s;e++)W(o[e].value(),0,1)||(t[r]=o[e],r++)}let o=Yo(i,a,t.slice(r));if(r+=o,t[r].set(1),r++,r>2){_e(t,0,r,(e,t)=>{let n=e.value(),r=t.value();return n<r?-1:+(n>r)});let n=0,i=t[0].clone(),a=0,o=Ko(e)*Te(),s=new L;bo(e,t[0].value(),s);for(let c=1;c<r;c++){let r=new L;if(bo(e,t[c].value(),r),t[c].eq(i)||r.isEqualPoint2D(s,o)){if(n!==0){if(t[c].eps()===0)i.setE(t[c]),a=0;else if(a!==0){let e=Xe(1/t[c].eps()),n=1/a,r=e+n;i.set((t[c].value()*e+i.value()*n)/r),a=1/r,i.setError(Math.sqrt(a))}t[n].setE(i),bo(e,i.value(),s)}continue}n++,t[n].setE(t[c]),i.setE(t[c]),bo(e,i.value(),s),a=Xe(t[c].eps())}n++,r=n}return r===1&&(r=2,t[1].set(1)),n(t[0].value()===0),n(t[r-1].value()===1),r}function Zo(e,t,n,r,i){let a=U(H,4),o=U(H,3),s=new F(0,1),c=0;if(t){if(Xa(e,a,!1),c=br(a[3],a[2],a[1],a[0].sub(n),s,!1,o),r)for(let t=0;t<c;t++){let n=new L;Co(e,o[t].value(),n),r[t]=n.x}}else if(Ya(e,a,!1),c=br(a[3],a[2],a[1],a[0].sub(n),s,!1,o),r)for(let t=0;t<c;t++){let n=new L;Co(e,o[t].value(),n),r[t]=n.y}if(i)for(let e=0;e<c;e++)i[e]=o[e].value();else r&&_e(r,0,c,Ze);return c}function Qo(e,t,n,r){let i=$o(e,t,n,r.getEnvelope2D());if(i.isEmpty())return new F(i);let a=U(L,n);for(let t=0;t<n;++t)r.xyRot(e[t],a[t]);let o=$o(a,t,n,r.getRotatedEnvelope2D());return i.intersect(new F(o)),new F(i)}function $o(e,t,n,r){let i=U(L,n);for(let e=0;e<n;++e)i[e]=new L(e/(n-1),0);let a=(e,t,n,r)=>{let i=new H(t.x).subE(new H(e.x)).divE(new H(t.y).subE(new H(e.y))).mulE(new H(n).subE(new H(e.y))).addE(new H(e.x));if(i.eps()>.1){let r=(t.x-e.x)/(t.y-e.y)*(n-e.y)+e.x;i.set(r,Te())}if(i.lt(new H(0))||i.gt(new H(1)))return!1;let a=i.value()-i.eps();a=we(a,0,1);let o=i.value()+i.eps();return o=we(o,0,1),r.mergeCoordinate(a),r.mergeCoordinate(o),!0},o=[];{let t=(e,t)=>{o.length=n;let r=Ta(i,n,o,!0),s=new F;s.setEmpty();let c=n=>n.y<e?-1:+(n.y>t),l=i[o[0]],u=c(l);u===0&&s.mergeCoordinate(l.x);for(let n=1;n<=r;++n){let d=i[o[n%r]],f=c(d);f===0&&s.mergeCoordinate(d.x);let p=0;f!==u&&(p=f*u===0?f===1||u===1?2:1:3,p&1&&a(l,d,e,s),p&2&&a(l,d,t,s)),l=d,u=f}return s};for(let t=0;t<n;++t)i[t].y=e[t].x;let s=t(r.xmin,r.xmax);if(s.isEmpty())return new F(s);for(let t=0;t<n;++t)i[t].y=e[t].y;let c=t(r.ymin,r.ymax);return s.intersect(new F(c)),new F(s)}}function es(e,t,n){n.setEmpty(),n.merge(Qo(e,null,4,t))}function ts(e,t,n){n.length=0;{let t=new H;lo(e,t);let r=new q;if(Do(e,t,r),r.isZero())return!t.isZero()&&!t.eq(new H(1))?(n.push(t.value()),1):0}let r=U(H,4);qa(e,r,!0);let i=U(H,4);Ja(e,i,!0);let a=U(H,6),o=r[3].negate().mulE(i[1]).addE(r[2].mulE(i[2]).mul(2)).addE(r[1].mulE(i[3])),s=r[3].negate().mulE(i[1]).subE(r[2].mulE(i[2]).mul(2)).addE(r[1].mulE(i[3])),c=r[2].mulE(r[2]).subE(i[2].mulE(i[2]));a[0]=i[1].mulE(i[1]).mulE(o).addE(r[1].mulE(r[1]).mulE(s)).addE(r[1].mulE(i[1]).mulE(c).mul(2)).mul(6),a[1]=r[2].mulE(i[1]).subE(r[1].mulE(i[2])).mulE(r[2].mulE(r[2]).addE(r[1].mulE(r[3]).mul(2)).addE(i[2].mulE(i[2])).addE(i[1].mulE(i[3]).mul(2))).mul(24);let l=r[1].mulE(i[2]).mulE(i[2]).mulE(i[3]),u=r[2].mulE(r[2]).mulE(r[3]).mulE(i[1]).subE(l).mul(156),d=r[3].mulE(i[1]).subE(r[1].mulE(i[3])),f=r[3].mulE(i[1]).subE(r[1].mulE(i[3])),p=r[1].mulE(r[3]).mulE(f).addE(i[1].mulE(i[3]).mulE(d)).mul(72),m=i[1].mulE(i[3]).subE(r[1].mulE(r[3])),h=r[2].mulE(i[2]).mulE(m).mul(120),g=r[1].mulE(r[2]).mulE(r[2]).mulE(i[3]),_=r[3].mulE(i[1]).mulE(i[2]).mulE(i[2]).subE(g).mul(36);a[2]=u.addE(p).addE(h).addE(_);let v=r[2].mulE(r[3]).mulE(r[3]).mulE(i[1]).subE(r[1].mulE(i[2]).mulE(i[3]).mulE(i[3])).mul(360),y=r[2].mulE(i[2]).mulE(r[2].mulE(r[3]).subE(i[2].mulE(i[3]))).addE(r[3].mulE(i[2]).mulE(i[2]).mulE(i[2])).subE(r[2].mulE(r[2]).mulE(r[2]).mulE(i[3])).mul(24),b=r[2].mulE(i[1]).mulE(i[3]).mulE(i[3]).subE(r[1].mulE(r[3]).mulE(r[3]).mulE(i[2])).mul(72),x=r[3].mulE(i[3]).mulE(i[1].mulE(i[2]).subE(r[1].mulE(r[2]))).mul(288);a[3]=v.addE(y).addE(b).addE(x),a[4]=i[3].mulE(i[3]).addE(r[3].mulE(r[3])).mulE(r[3].mulE(i[1]).subE(r[1].mulE(i[3]))).mul(270).addE(r[3].mulE(i[2]).subE(r[2].mulE(i[3]))).mulE(r[2].mulE(r[3]).addE(i[2].mulE(i[3]))).mul(180),a[5]=r[3].mulE(i[2]).subE(r[2].mulE(i[3])).mulE(r[3].mulE(r[3]).addE(i[3].mulE(i[3]))).mul(216);let S=U(H,5),C=xr(a,5,new F(0,1),!1,S,5);if(C>0){let r=Math.abs(e.getCurvature(0)),i=0,a=Math.abs(e.getCurvature(1));(a>r||!Number.isFinite(a))&&(i=1);for(let t=0;t<C;t++){let n=Math.abs(e.getCurvature(S[t].value()));e.getCoord2D(S[t].value()),(n>r||!Number.isFinite(n))&&(r=n,i=S[t].value())}if((!Number.isFinite(r)||1/r<t)&&!W(i,0,1)){let t=e.getCoord2D(i);if(!t.equals(e.getStartXY())&&!t.equals(e.getEndXY()))return n.push(i),1}}if(!e.isClosed()){let t=[0,0],r=Jo(e,t,!1);for(let e=0;e<r;e++)t[e]>0&&t[e]<1&&n.push(t[e]);return n.length}return 0}class ns{b;len;constructor(e,t){this.b=e,this.len=t}getMaxDerivative(){return 1}getValue(e,t){return e===0?this.len-Qa(this.b,t,!1):0}getError(e){return 0}}function rs(e,t,r,i,a,o,s){for(;;){let c=L.distance(t[0],t[3]),l=L.distance(t[0],t[1])+L.distance(t[1],t[2])+L.distance(t[2],t[3]);if(l-c<=i+r*l)return e+V(c,l,.5);let u=e=>po(t,1,e).length();{n(s<12);let c=u(0),d=u(1);a[0]+=2,c>d&&(d=R(c,c=d),t[3]=R(t[0],t[0]=t[3]),t[2]=R(t[1],t[1]=t[2]));let f=c/(c+d),p=1,m=l;for(;f<1/32&&m>=32*(i+r*m);){p/=4;let e=u(p);a[0]++,f=c/(e+c);let n=new L;if(Co(t,p*.5,n),m=L.distance(n,t[0]),m<=i){let e=new L;Co(t,p,e),m+=L.distance(e,n)}}if(p!==1){let n=U(L,4);xo(t,p,t,n),e=rs(e,n,r,i,a,0,s+1),o++,s++;continue}}a[0]+=8;let d=pa(8,u,0,1);a[0]+=16;let f=pa(16,u,0,1),p=Math.abs(d-f)>i+r*l;if(!p)return e+f;if(o<3){let n=U(L,4);xo(t,.5,t,n),e=rs(e,n,r,i,a,o+1,s+1),o++,s++;continue}a[0]+=32;let m=pa(32,u,0,1);if(p=Math.abs(f-m)>i+r*l,!p)return e+m;a[0]+=64;let h=pa(64,u,0,1);if(p=Math.abs(m-h)>i+r*l,!p)return e+h;a[0]+=128;let g=pa(128,u,0,1);return p=Math.abs(h-g)>i+r*l,e+g}}function is(e,t,n,r,i){if(n===t)return 0;let a=U(L,4);e.queryControlPoints(a);let o=U(L,4);return So(a,t,n,o),rs(0,o,r,i,[0],0,0)}function as(e,t,n,r,i){let a=!0,o=ni(5,t,n,r,i,t=>{let n=ho(e,1,t);return(a?e.getCoordX(t)-e.getStartX():e.getCoordY(t)-e.getStartY())*n.length()});a=!1;let s=ni(5,t,n,r,i,t=>{let n=ho(e,1,t);return(a?e.getCoordX(t)-e.getStartX():e.getCoordY(t)-e.getStartY())*n.length()});return new L(o,s)}function os(e,t,n,r,i,a,o,s,c){let l=U(L,4);e.queryControlPoints(l);let u=U(L,4);if(t.queryControlPoints(u),l[0].equals(u[0])){if(l[1].equals(u[1])&&l[2].equals(u[2])&&l[3].equals(u[3]))return n&&(n.length=0,n.push(l[0]),n.push(l[3])),r&&(r.length=0,r.push(0),r.push(1)),i&&(i.length=0,i.push(0),i.push(1)),!0;if(!l[0].equals(u[3]))return!1}return l[0].equals(u[3])&&l[1].equals(u[2])&&l[2].equals(u[1])&&l[3].equals(u[0])?(r&&(r.length=0,r.push(0),r.push(1),c&&(r[1]=R(r[0],r[0]=r[1]))),i&&(i.length=0,i.push(1),i.push(0),c&&(i[1]=R(i[0],i[0]=i[1]))),n&&(n.length=0,n.push(l[0]),n.push(l[3]),c&&(n[1]=R(n[0],n[0]=n[1]))),!0):!1}function ss(e,t,r,i,a,o,s,c,l,u,d,f){n(u+2===f);let p=0,m=0,h=0,g=0,_=0,v=0,y=0,b=(e,t)=>{let n=1-t,s=r.mul(gt(n)),c=i.mul(3*t*n*n),l=a.mul(3*t*t*n),u=o.mul(gt(t));return s.add(c).add(l).add(u).sub(d[e]).sqrLength()};for(let t=1,n=f-1;t<n;t++){let n=l[t-1];if(e){t>2?(n=we(2*l[t-2]-l[t-3],0,1),l[t-1]=n):t===2&&(n=we(2*l[t-2],0,1),l[t-1]=n);let e=(e,t,n)=>{let s=-1;for(let c=0;!(Math.abs(t-s)<1e-12||c===10);c++){let c=t*t,l=1-t,u=l*l,f=u*l,p=r.x-2*i.x+a.x,m=r.x-3*i.x+3*a.x-o.x,h=r.y-2*i.y+a.y,g=r.y-3*i.y+3*a.y-o.y,_=r.x-i.x-2*p*t+m*c,v=-d[e].x+r.x*f+t*(3*i.x*u+t*(3*a.x*l+o.x*t)),y=r.y-i.y-2*h*t+g*c,b=-d[e].y+r.y*f+t*(3*i.y*u+t*(3*a.y*l+o.y*t)),x=-6*(_*v+y*b),S=6*(3*Xe(_)-(-2*p+2*m*t)*v)+6*(3*Xe(y)-(-2*h+2*g*t)*b);if(s=t,S!==0){let e=t-x/S;t=we(e,n,1)}else break}return s};{let n=b(t,l[t-1]),r=e(t,l[t-1],0),i=b(t,r);if(n*1.01<i){let n=t>1?l[t-2]:0,a=e(t,(l[t-1]-n)*.3+n,0),o=b(t,a);o<i&&(i=o,r=a)}n>i&&(l[t-1]=r)}}let s=l[t-1],c=s*s,u=c*s,f=1-s,x=f*f,S=x*f;p+=3*c*x*x,m+=3*u*S,h+=3*c*c*x;let C=-(S*r.x+u*o.x-d[t].x);g+=C*s*x,_+=C*c*f;let w=-(S*r.y+u*o.y-d[t].y);v+=w*s*x,y+=w*c*f}if(t){let e=p*h-m*m;Math.abs(e)>=(Math.abs(p*h)+Math.abs(m*m))*1e-12+1e-10?(s||(i.x=(g*h-_*m)/e,i.y=(v*h-y*m)/e),c||(a.x=(p*_-m*g)/e,a.y=(p*y-m*v)/e)):(He(r,o,.3,i),He(r,o,.6,a))}let x=0;for(let e=1,t=f-1;e<t;e++)x+=b(e,l[e-1]);return x}var cs=C;class ls extends xn{static type=i.enumBezier;constructor(e){e&&e.cp?(super({start:e.cp[0],end:e.cp[3],vd:e.vd}),this.m_cp=U(L,2),this.m_cp[0].assign(e.cp[1]),this.m_cp[1].assign(e.cp[2])):e===void 0||Me(e,`vd`)?(super({vd:e?.vd,XStart:0,YStart:0,XEnd:0,YEnd:0}),this.m_cp=U(L,2),this.m_cp[0].setCoords(0,0),this.m_cp[1].setCoords(0,0)):e.from?(super({start:e.from,end:e.to,vd:e.vd}),this.m_cp=U(L,2),this.m_cp[0].assign(e.cp1),this.m_cp[1].assign(e.cp2)):(super({XStart:0,YStart:0,XEnd:0,YEnd:0,vd:e.vd}),c(`unrecognized constructor params`),this.m_cp=U(L,2),this.m_cp[0].setCoords(0,0),this.m_cp[1].setCoords(0,0)),this.m_cachedValues=0}getBoundary(){return ar(this)}construct(e,t,n,r){this.m_XStart=e.x,this.m_YStart=e.y,this.m_XEnd=r.x,this.m_YEnd=r.y,this.m_cp[0].assign(t),this.m_cp[1].assign(n),this.afterCompletedModification()}constructPoints(e){this.m_XStart=e[0].x,this.m_YStart=e[0].y,this.m_XEnd=e[3].x,this.m_YEnd=e[3].y,this.m_cp[0].assign(e[1]),this.m_cp[1].assign(e[2]),this.afterCompletedModification()}constructFromQuadratic(e){let t=U(L,4);ra(e,t),this.constructPoints(t)}constructFromQuadraticSegment(e){this.dropAllAttributes(),this.assignVertexDescription(e.getDescription()),this.m_XStart=e.getStartX(),this.m_YStart=e.getStartY(),this.m_XEnd=e.getEndX(),this.m_YEnd=e.getEndY(),Ie(2,e.getStartXY(),e.getControlPoint1(),2/3,this.m_cp[0]),Ie(2,e.getControlPoint1(),e.getEndXY(),1/3,this.m_cp[1]),this.afterCompletedModification(),un(this,e)}getGeometryType(){return i.enumBezier}queryEnvelope(e){if(e.m_EnvelopeType!==2){n(0);return}if(e.setCoords(this.getStartXY()),e.mergeNe(this.getEndXY()),e.contains(this.m_cp[0])&&e.contains(this.m_cp[1]))return;let t=no(this);if(t!==null){let n=new L;for(let r of t.specialPoints)this.queryCoord2D(r,n),e.mergeNe(n);return}let r=U(H,8),i=U(L,4);this.queryControlPoints(i);let a=Xo(i,r),o=new L;for(let t=1;t<a-1;t++)this.queryCoord2D(r[t].value(),o),e.mergeNe(o)}applyTransformation(e){if(e.m_TransformationType===1){let t=U(L,4);this.queryControlPoints(t),e.transformPoints2D(t,4,t),this.setStartXY(t[0]),this.m_cp[0].assign(t[1]),this.m_cp[1].assign(t[2]),this.setEndXY(t[3]),io(this);return}n(0)}createInstance(){return new ls({vd:this.m_description})}calculateLength2D(){return Qa(this,1,!1)}calculateLowerLength2D(){return L.distance(this.getStartXY(),this.getEndXY())}calculateUpperLength2D(){return L.distance(this.getStartXY(),this.m_cp[0])+L.distance(this.m_cp[0],this.m_cp[1])+L.distance(this.getEndXY(),this.m_cp[1])}queryCoord2D(e,t){return this.queryCoord2DExtends(e,t,!0)}queryCoord2DMP(e,t){n(0)}queryCoord2DExtends(e,t,n){let r=U(L,4);this.queryControlPoints(r),Co(r,e,t,n)}queryCoord2DE(e,t){To(this,e,t)}getCoordX(e){if(e<0||e>1){let t=new L;return this.queryCoord2DExtends(e,t,!0),t.x}let t=V(this.getStartX(),this.m_cp[0].x,e),n=V(this.m_cp[0].x,this.m_cp[1].x,e),r=V(this.m_cp[1].x,this.getEndX(),e),i=V(t,n,e),a=V(n,r,e);return V(i,a,e)}getCoordY(e){if(e<0||e>1){let t=new L;return this.queryCoord2DExtends(e,t,!0),t.y}let t=V(this.getStartY(),this.m_cp[0].y,e),n=V(this.m_cp[0].y,this.m_cp[1].y,e),r=V(this.m_cp[1].y,this.getEndY(),e),i=V(t,n,e),a=V(n,r,e);return V(i,a,e)}cut(e,t,n){let r=new $;return this.queryCut(e,t,r,n),r.releaseSegment()}queryCut(e,t,n,r){let i=n.createCubicBezier();if(this.cutBezierIgnoreAttributes(e,t,i),r)return;i.assignVertexDescription(this.m_description);let a=this.m_description.getAttributeCount();if(a>1){for(let t=1;t<a;t++){let n=this.m_description.getSemantics(t),r=cs.getComponentCount(n);for(let t=0;t<r;t++){let r=this.getAttributeAsDbl(e,n,t);i.setStartAttribute(n,t,r)}}for(let e=1;e<a;e++){let n=this.m_description.getSemantics(e),r=cs.getComponentCount(n);for(let e=0;e<r;e++){let r=this.getAttributeAsDbl(t,n,e);i.setEndAttribute(n,e,r)}}}}queryDerivative(e,t){Do(this,e,t)}cutBezierIgnoreAttributes(e,n,r){(e<0||n>1||e>n)&&t(`Cubic_bezier.cut_bezier_ignore_attributes`);let i=U(L,4);this.queryControlPoints(i);let a=U(L,4);So(i,e,n,a),r.setControlPoints(a)}splitBezierIgnoreAttributes(e,n,r){this===n&&this===r&&t(`Cubic_bezier.split_bezier_ignore_attributes`);let i=U(L,4);this.queryControlPoints(i);let a=U(L,4),o=U(L,4);xo(i,e,a,o),n&&n.setControlPoints(a),r&&r.setControlPoints(o)}getAttributeAsDbl(e,t,n){if(t===0)return n===0?this.getCoordX(e):this.getCoordY(e);if(e===0)return this.getStartAttributeAsDbl(t,n);if(e===1)return this.getEndAttributeAsDbl(t,n);let r=this.getStartAttributeAsDbl(t,n),i=this.getEndAttributeAsDbl(t,n),a=this.calculateLength2D(),o=a>0?this.tToLength(e)/a:0,s=cs.getInterpolation(t);return ke(s,r,i,o,cs.getDefaultValue(t))}getClosestCoordinate(e,t){let n=[NaN];return Wo(this,e,F.unit(),t,-1,1,n),n[0]}getClosestCoordinateOnInterval(e,t,n=-1){let r=[NaN];return Wo(this,e,t,!1,n,1,r)===0?NaN:r[0]}getYMonotonicParts(e,t=!1){return this.getMonotonicParts(e,t)}getMonotonicParts(e,r){e.length<2&&t(``);let i=to(this);if(i.specialPointsCount()===2&&this.isMonotoneQuickAndDirty())return 0;let a=0;n(e.length>=i.specialPointsCount()-1);for(let t=1,n=i.specialPointsCount();t<n;++t)this.queryCut(i.specialPoints[t-1],i.specialPoints[t],e[a],r),a++;for(let t=0;t<a;++t)_o(e[t].get());return a}intersectionWithAxis2D(e,t,n,r){let i=U(L,4);return this.queryControlPoints(i),Zo(i,e,t,n,r)}intersectionOfYMonotonicWithAxisX(e,t){if(this.m_YStart===this.m_YEnd)return e===this.m_YStart?t:NaN;if(e===this.m_YStart)return this.m_XStart;if(e===this.m_YEnd)return this.m_XEnd;let r=[0,0],i=this.intersectionWithAxis2D(!0,e,r,null);return n(i!==2),i===-1?t:r[0]}isCurve(){return!0}isDegenerate(e){return Kt(this,e)}isDegenerate3D(e,t){return n(0),!1}queryLooseEnvelope(e){if(e.m_EnvelopeType===2){e.setCoords({pt:this.getStartXY()}),e.mergeNe(this.m_cp[0]),e.mergeNe(this.m_cp[1]),e.mergeNe(this.getEndXY());return}n(0)}clone(e){let t=this.createInstance();return this.copyTo(t),t}queryInterval(e,t){if(e===0){let e=K.constructEmpty();this.queryEnvelope(e);let n=F.constructEmpty();return t===0?e.queryIntervalX(n):e.queryIntervalY(n),n}return super.queryInterval(e,t)}queryLooseEnvelopeOnInterval(e,t){let n=U(L,4);this.queryControlPoints(n),So(n,e.vmin,e.vmax,n),t.setFromPoints(n,4)}changeEndPoints2D(e,t){if(e.isEqual(this.m_XStart,this.m_YStart)&&t.isEqual(this.m_XEnd,this.m_YEnd))return;let n=this.m_cp[0].isEqual(this.m_XStart,this.m_YStart),r=this.m_cp[0].isEqual(this.m_XEnd,this.m_YEnd),i=this.m_cp[1].isEqual(this.m_XStart,this.m_YStart),a=this.m_cp[1].isEqual(this.m_XEnd,this.m_YEnd);this.setStartXY(e),this.setEndXY(t),n?this.m_cp[0].setCoordsPoint2D(e):r&&this.m_cp[0].setCoordsPoint2D(t),a?this.m_cp[1].setCoordsPoint2D(t):i&&this.m_cp[1].setCoordsPoint2D(e),this.normalizeAfterEndpointChange()}tToLength(e){return Qa(this,e,!0)}lengthToT(e){return $a(this,e)}calculateWeightedAreaCentroid2D(e){let t=U(L,4);Ka(this,t);let n=t[3],r=t[2],i=t[1],a=new L;a.x=(5*n.x*n.x*(7*r.y+16*i.y)+n.x*(-35*n.y*r.x+40*r.x*r.y-80*n.y*i.x+140*r.x*i.y+112*i.x*i.y)-2*(n.y*(20*r.x*r.x+70*r.x*i.x+56*i.x*i.x)-7*(4*r.x+5*i.x)*(-(r.y*i.x)+r.x*i.y)))/840,a.y=(-5*n.y*n.y*(7*r.x+16*i.x)+n.y*(5*n.x*(7*r.y+16*i.y)-4*(10*r.x*r.y+35*r.y*i.x+28*i.x*i.y))+2*(-7*(4*r.y+5*i.y)*(r.y*i.x-r.x*i.y)+n.x*(20*r.y*r.y+70*r.y*i.y+56*i.y*i.y)))/840;let o=go(this);return a.x+=(t[0].x-e.x)*o,a.y+=(t[0].y-e.y)*o,a}calculateWeightedCentroid2D(){let e=new L;return this.isDegenerate(0)?(e.setCoords(0,0),e):Ga(this)?(e.assign(this.getCoord2D(.5).mul(this.calculateLength2D())),e):(e.assign(eo(this,1)),e)}getControlPoint1(){return this.m_cp[0].clone()}setControlPoint1(e){this.m_cp[0].setCoordsPoint2D(e),this.afterCompletedModification()}getControlPoint2(){return this.m_cp[1].clone()}setControlPoint2(e){this.m_cp[1].setCoordsPoint2D(e),this.afterCompletedModification()}queryControlPoints(e){e[0].assign(this.getStartXY()),e[1].assign(this.m_cp[0]),e[2].assign(this.m_cp[1]),e[3].assign(this.getEndXY())}queryControlPointsHelper(e){return this.queryControlPoints(e),4}setControlPoints(e){for(let n=0;n<4;n++)e[n].isNAN()&&t(`NAN control points in bezier are not supported`);this.m_XStart=e[0].x,this.m_YStart=e[0].y,this.m_cp[0].setCoordsPoint2D(e[1]),this.m_cp[1].setCoordsPoint2D(e[2]),this.m_XEnd=e[3].x,this.m_YEnd=e[3].y,this.afterCompletedModification()}getTangent(e){let t=U(L,4);return this.queryControlPoints(t),Eo(t,e)}getDerivative(e){let t=U(L,4);return this.queryControlPoints(t),po(t,1,e)}getCurvature(e){let t=ho(this,1,e),n=ho(this,2,e),r=t.sqrLength();return r===0?NaN:(t.divThis(Math.sqrt(r)),t.crossProduct(n)/r)}isIntersectingPoint(e,t,n){if(n&&(e.equals(this.getStartXY())||e.equals(this.getEndXY())))return!1;let r=new K;if(this.queryLooseEnvelope(r),r.inflateCoords(t,t),!r.contains(e))return!1;let i=this.getClosestCoordinate(e,!1),a=new L;return this.queryCoord2D(i,a),L.distance(a,e)<=t}isIntersectingPoint3D(e,t,r,i,a=1){return n(0),!1}isMonotoneQuickAndDirty(){let e=U(L,4);return this.queryControlPoints(e),yo(e)}getMonotonicPartParams(e,r){let i=to(this),a=i.specialPointsCount();if(n(_n.s_maxMonotonicPartParams>=a),!r)return i.specialPointsCount();e<a&&t(``);for(let e=0;e<a;e++)r[e]=i.specialPoints[e];return a}normalizeAfterEndpointChange(){return!1}orientBottomUp(){if(this.m_YEnd<this.m_YStart||this.m_YEnd===this.m_YStart&&this.m_XEnd<this.m_XStart){this.m_XEnd=R(this.m_XStart,this.m_XStart=this.m_XEnd),this.m_YEnd=R(this.m_YStart,this.m_YStart=this.m_YEnd);for(let e=0,t=this.m_description.getTotalComponentCount()-2;e<t;e++)this.m_attributes[e+t]=R(this.m_attributes[e],this.m_attributes[e]=this.m_attributes[e+t]);this.m_cp[1]=R(this.m_cp[0],this.m_cp[0]=this.m_cp[1]),this.m_cachedValues=null}}findMinDeriv(){let e=new H;return lo(this,e),e.value()}isLine(){return!1}isDegenerateToLineHelper(e){let t=U(L,4);this.queryControlPoints(t);let n=t[3].sub(t[0]),r=n.length();if(L.distance(t[0],t[1])+L.distance(t[2],t[1])+L.distance(t[2],t[3])-r>e)return!1;let i=e,a=t[1].clone();a.subThis(t[0]);let o=Math.abs(a.crossProduct(n))/r;return!(o>i||(a=t[2].clone(),a.subThis(t[1]),o=Math.abs(a.crossProduct(n))/r,o>i))}copyIgnoreAttributes(e){let t=U(L,4);this.queryControlPoints(t),e.setControlPoints(t)}calculateArea2DHelper(){return go(this)}absNorm(){return Go(this)}queryEnvelopeW(e,t){Bo(this,e,t)}setSegmentFromCoordsForStitcher(e,t){qo(this,e,t)}writeInBufferStream(e,t){let n=new Float64Array(4);return this.writeInBuffer_(n),e.writeRangeFromArray(t,n.length,n,!0,1),t+=n.length}writeInBuffer_(e){return e[0]=this.m_cp[0].x,e[1]=this.m_cp[0].y,e[2]=this.m_cp[1].x,e[3]=this.m_cp[1].y,4}readFromBufferStream(e,t){let n=new Float64Array(4);e.queryRange(t,n.length,n,!0,1),this.readFromBuffer_(n)}readFromBuffer_(e){this.m_cp=U(L,2),this.m_cp[0].x=e[0],this.m_cp[0].y=e[1],this.m_cp[1].x=e[2],this.m_cp[1].y=e[3],this.m_cachedValues=null}snapControlPoints(e){let t=U(L,4);this.queryControlPoints(t);let n=(t,n,r)=>{let i=L.sqrDistance(t,r),a=!1;return i<=e&&(a=!t.equals(r),t.setCoordsPoint2D(r),L.sqrDistance(n,r)<=e&&(a||=!n.equals(r),n.setCoordsPoint2D(r))),a},r=n(t[1],t[2],t[0]),i=n(t[2],t[1],t[3]);return(r||i)&&this.setControlPoints(t),r||i}needsSnapControlPoints(e){if(!e)return!1;let t=U(L,4);this.queryControlPoints(t);let n=(t,n,r)=>{let i=L.sqrDistance(t,r),a=!1;return i<=e&&(a=!t.equals(r),t.setCoordsPoint2D(r),L.sqrDistance(n,r)<=e&&(a||=!n.equals(r),n.setCoordsPoint2D(r))),a},r=n(t[1],t[2],t[0]),i=n(t[2],t[1],t[3]);return r||i}calculateSpecialPointsForCracking(e,t){return ts(this,e,t)}ensureXYMonotone(){return _o(this)}setCoordsForIntersector(e,t,n){oo(this,e,t,n)}copyToImpl(e){let t=e;t.m_cp[0].assign(this.m_cp[0]),t.m_cp[1].assign(this.m_cp[1]),ro(t,no(this))}reverseImpl(){this.m_cp[1]=R(this.m_cp[0],this.m_cp[0]=this.m_cp[1])}equalsImpl(e){let t=e;return!(!this.m_cp[0].equals(t.m_cp[0])||!this.m_cp[1].equals(t.m_cp[1]))}equalsImplTol(e,t){let n=e;return!(!this.m_cp[0].isEqualPoint2D(n.m_cp[0],t)||!this.m_cp[1].isEqualPoint2D(n.m_cp[1],t))}swapImpl(e){let t=e;t.m_cp[0]=R(this.m_cp[0],this.m_cp[0]=t.m_cp[0]),t.m_cp[1]=R(this.m_cp[1],this.m_cp[1]=t.m_cp[1]),ao(this,t)}afterCompletedModification(){io(this)}isIntersecting(e,t,n){return lu(!1,this,e,t,n)!==0}intersect(e,t,n,r,i){return pu(!1,this,e,t,n,r,i)}intersectPoint(e,t,n){return zo(this,e,t,n)}endPointModified(){io(this)}clearEndPointModified(){}m_cp;m_cachedValues}class us{specialPoints;specialPointsLength;length;area;centroidX;centroidY;constructor(){this.length=NaN,this.area=NaN,this.centroidX=NaN,this.centroidY=0,this.specialPoints=[],this.specialPointsLength=[]}specialPointsCount(){return this.specialPoints.length}}function ds(e,t,r,i,a,o,s,c){for(;;){let l=L.distance(t[0],t[2]),u=L.distance(t[0],t[1])+L.distance(t[1],t[2]);if(u-l<=a+i*u)return e+V(l,u,.5);let d=U(L,4),f=e=>(Ss(t,r,1,e,d),d[1].length());if(s===0&&c<8){n(c<8);let l=f(0),d=f(1);o[0]+=2,l>d&&(d=R(l,l=d),t[2]=R(t[0],t[0]=t[2]),r[2]=R(r[0],r[0]=r[2]));let p=l/(l+d),m=1,h=u;for(;p<1/32&&h>=a+i*h;){m/=4;let e=f(m);o[0]++,p=l/(e+l);let n=new L;if(bc(t,r,m*.5,n),h=L.distance(n,t[0]),h<=a){let e=new L;bc(t,r,m,e),h+=L.distance(e,n)}}if(m!==1){let n=U(L,3),l=[0,0,0];ec(t,r,m,t,r,n,l),e=ds(e,n,l,i,a,o,0,c+1),s++,c++;continue}}let p=!1;o[0]+=8;let m=pa(8,f,0,1);o[0]+=16;let h=pa(16,f,0,1);if(p=Math.abs(m-h)>a+i*u,!p)return e+h;if(s<8&&c<9){let n=U(L,3),l=[0,0,0];ec(t,r,.5,t,r,n,l),e=ds(e,n,l,i,a,o,s+1,c+1),s++,c++;continue}o[0]+=32;let g=pa(32,f,0,1);if(p=Math.abs(h-g)>a+i*u,!p)return e+g;o[0]+=64;let _=pa(64,f,0,1);if(p=Math.abs(g-_)>a+i*u,!p)return e+_;o[0]+=128;let v=pa(128,f,0,1);return p=Math.abs(_-v)>a+i*u,e+v}}function fs(e,t,n,r,i){if(n===t)return 0;let a=U(L,3),o=[0,0,0];e.queryControlPoints(a),e.queryWeights(o);let s=[0,0,0],c=U(L,3);return tc(a,o,t,n,c,s),ds(0,c,s,r,i,[0],0,0)}class ps{controlPoints;weights;point;constructor(e,t,n){this.controlPoints=Ce(e,3),this.weights=[0,0,0],me(this.weights,t,0,0,3),this.point=n.clone()}getMaxDerivative(){return 3}getValue(e,t){if(e===0){let e=new L;bc(this.controlPoints,this.weights,t,e);let n=U(L,4);return Ss(this.controlPoints,this.weights,1,t,n),e.sub(this.point).dotProduct(n[1])*2}if(e===1){let e=new L;bc(this.controlPoints,this.weights,t,e);let n=U(L,4);return Ss(this.controlPoints,this.weights,2,t,n),(e.sub(this.point).dotProduct(n[2])+n[1].dotProduct(n[1]))*2}if(e===2){let e=new L;bc(this.controlPoints,this.weights,t,e);let n=U(L,4);return Ss(this.controlPoints,this.weights,3,t,n),(e.sub(this.point).dotProduct(n[3])+3*n[1].dotProduct(n[2]))*2}return 0}getError(e){return n(0),0}}function ms(e,t,n,r){let i=Ks(0,0,0,0,L.getNAN()),a=I(18,NaN),o=U(L,3);e.queryControlPoints(o),o[2].subThis(t),o[1].subThis(t),o[0].subThis(t);let s=[0,0,0];e.queryWeights(s);let c=[1,Sc(s),1],l=wc(s,n),u=wc(s,r),d=sr(new ps(o,c,new L(0,0)),F.construct(l,u),18,a);bc(o,c,l,i.pt),i.t=l,i.d=L.distance(i.pt,new L(0,0));let f=new L;bc(o,c,u,f);let p=L.distance(f,new L(0,0));p<i.d&&(i.d=p,i.t=u,i.pt.assign(f));for(let e=0;e<d;e++){bc(o,c,a[e],f);let t=L.distance(f,new L(0,0));t<i.d&&(i.d=t,i.t=Cc(s,a[e]),i.pt.assign(f))}return i}function hs(e,t,n,r,i){let a=!0,o=U(L,4),s=ni(5,t,n,r,i,t=>(xs(e,1,t,o),(a?e.getCoordX(t)-e.getStartX():e.getCoordY(t)-e.getStartY())*o[1].length()));a=!1;let c=ni(5,t,n,r,i,t=>(xs(e,1,t,o),(a?e.getCoordX(t)-e.getStartX():e.getCoordY(t)-e.getStartY())*o[1].length()));return new L(s,c)}function gs(e){e.m_cachedValues=null}function _s(e,t){t.m_cachedValues=R(e.m_cachedValues,e.m_cachedValues=t.m_cachedValues)}function vs(e){if(e.m_cachedValues)return e.m_cachedValues;let t=new us,n=U(L,3);e.queryControlPoints(n);let r=[0,0,0];return e.queryWeights(r),ys(n,r,t.specialPoints),Us(e,t),t}function ys(e,t,n){if(t[1]===0){n.length=0,n.push(0),n.push(1);return}let r=U(H,8);r[0].set(0);let i=1;{let n=new H(e[1].x).subThis(e[0].x).mulThis(t[1]).mulThis(t[0]),a=new H(e[2].x).subThis(e[0].x).mulThis(t[2]).mulThis(t[0]),o=n.subE(a).addThisE(new H(e[2].x).subThis(e[1].x).mulThis(t[2]).mulThis(t[1]));a.subThisE(n.mul(2));let s=U(H,2),c=yr(o,a,n,new F(0,1),!1,s);c<0&&(c=0);for(let e=0;e<c;e++)W(s[e].value(),0,1)||(r[i]=s[e],i++)}{let n=new H(e[1].y).subThis(e[0].y).mulThis(t[1]).mulThis(t[0]),a=new H(e[2].y).subThis(e[0].y).mulThis(t[2]).mulThis(t[0]),o=n.subE(a).addThisE(new H(e[2].y).subThis(e[1].y).mulThis(t[2]).mulThis(t[1]));a.subThisE(n.mul(2));let s=U(H,2),c=yr(o,a,n,new F(0,1),!1,s);c<0&&(c=0);for(let e=0;e<c;e++)W(s[e].value(),0,1)||(r[i]=s[e],i++)}if(r[i].set(1),i++,i>2){_e(r,0,i,(e,t)=>Ze(e.value(),t.value()));let e=0,t=r[0].value(),n=1;for(let a=1;a<i;a++){if(r[a].eq(r[a-1])){t+=r[a].value(),n++;continue}n>1&&(t/=n,r[e].set(t)),e++,r[e]=r[a],t=r[a].value(),n=1}e++,i=e}r[0].set(0),r[i-1].set(1),n.length=i;for(let e=0;e<i;e++)n[e]=r[e].value()}function bs(e,t,n){if(n){if(t<0)return t;if(t>1)return t-1+bs(e,1,!1)}if(e.isDegenerate(0))return 0;let r=t===1,i=vs(e);if(r&&!Number.isNaN(i.length))return i.length;let a=zs(e),o=a/e.calculateUpperLength2D(),s=0,c=0;for(let n=1,r=i.specialPointsCount();n<r;n++){let r=i.specialPoints[n],l=fs(e,c,Math.min(t,r),o,a);if(s+=l,t<=r)break;c=r}return r&&(i.length=s),s}function xs(e,t,n,r){let i=U(L,3);e.queryControlPoints(i);let a=[0,0,0];e.queryWeights(a),Ss(i,a,t,n,r)}function Ss(e,t,n,r,i){let a=[e[0],e[1],e[2]],o=[t[0],t[1],t[2]],s=U(L,4);Cs(a,o,n,r,s);for(let e=0;e<=n;e++)i[e].setCoords(s[e].x,s[e].y)}function Cs(e,t,r,i,a){n(r>0);let o=[e[0].clone(),e[1].clone(),e[2].clone()];if(!o[0].isZero()){for(let e=1;e<3;++e)o[e].subThis(o[0]);o[0].setCoords(0,0)}let s=ws(o,t,0,i),l=Es(t,0,i),u=s.divide(l);if(a[0].assign(u),r===0)return;let d=[t[1]*t[0],t[2]*t[0]*.5,t[1]*t[2]],f=[e[1].sub(e[0]),e[2].sub(e[0]),e[2].sub(e[1])],p=ws(f,d,0,i).mul(2),m=l*l,h=p.divide(m);if(a[1].assign(h),r===1)return;let g=Es(t,1,i),_=ws(f,d,1,i).mul(2),v=2*l*g,y=_.sub(h.mul(v)).divide(m);if(a[2].assign(y),r===2)return;let b=ws(f,d,2,i).mul(2),x=Es(t,2,i),S=2*(g*g+l*x),C=b.sub(y.mul(v).mul(2)).sub(h.mul(S)).divide(m);a[3].assign(C),r!==3&&c(``)}function ws(e,t,n,r){if(n===0){if(r<=.5){let n=new L;Je(2,e[0].mul(t[0]),e[1].mul(t[1]),r,n);let i=new L;Je(2,e[1].mul(t[1]),e[2].mul(t[2]),r,i);let a=new L;return Je(2,n,i,r,a),a}{let n=new L;Ye(2,e[0].mul(t[0]),e[1].mul(t[1]),r,n);let i=new L;Ye(2,e[1].mul(t[1]),e[2].mul(t[2]),r,i);let a=new L;return Ye(2,n,i,r,a),a}}if(n===1){let n=e[1].mul(t[1]),i=n.sub(e[0].mul(t[0])).mul(1-r).add(e[2].mul(t[2]).sub(n).mul(r));return i.mulThis(2),i}if(n===2){let n=e[1].mul(t[1]),r=e[2].mul(t[2]).sub(n).sub(n.sub(e[0].mul(t[0])));return r.mulThis(2),r}c(``)}function Ts(e,t,n,r){if(r.toDouble()<=.5){let n=new q;We(2,e[0].mulE(t[0]),e[1].mulE(t[1]),r,n);let i=new q;We(2,e[1].mulE(t[1]),e[2].mulE(t[2]),r,i);let a=new q;return We(2,n,i,r,a),a}{let n=new q;Ge(2,e[0].mulE(t[0]),e[1].mulE(t[1]),r,n);let i=new q;Ge(2,e[1].mulE(t[1]),e[2].mulE(t[2]),r,i);let a=new q;return Ge(2,n,i,r,a),a}}function Es(e,t,n){if(t===0){let t=V(e[0],e[1],n),r=V(e[1],e[2],n);return V(t,r,n)}if(t===1)return((1-n)*(e[1]-e[0])+(e[2]-e[1])*n)*2;if(t===2)return(e[2]-e[1]-(e[1]-e[0]))*2;c(``)}function Ds(e,t,n){if(n.toDouble()<=.5){let t=at(e[0],e[1],n),r=at(e[1],e[2],n);return at(t,r,n)}{let t=ot(e[0],e[1],n),r=ot(e[1],e[2],n);return ot(t,r,n)}}function Os(e,t,n,r,i){let a=[q.constructPoint2D(e[0]),q.constructPoint2D(e[1]),q.constructPoint2D(e[2])];a[2].subThisE(a[0]),a[1].subThisE(a[0]),a[0].setCoords(0,0),ks(a,[new H(t[0]),new H(t[1]),new H(t[2])],n,r,i)}function ks(e,t,r,i,a){n(r>0);let o=[e[0].clone(),e[1].clone(),e[2].clone()];if(!o[0].isZero()){for(let e=1;e<3;++e)o[e].subThisE(o[0]);o[0]=q.constructCoords(0,0)}let s=Ts(o,t,0,i),c=Ds(t,0,i),l=s.divE(c);a[0].setE(l);let u=[t[1].mulE(t[0]),t[2].mulE(t[0]).mul(.5),t[1].mulE(t[2])],d=Ts([e[1].subE(e[0]),e[2].subE(e[0]),e[2].subE(e[1])],u,0,i).mul(2),f=c.sqr(),p=d.divE(f);a[1].setE(p)}function As(e,t,n){let r=U(L,3);e.queryControlPoints(r);let i=I(3,NaN);e.queryWeights(i),js(r,i,t,n)}function js(e,t,n,r){n.value()<0&&n.set(0,n.eps()),n.value()>1&&n.set(1,n.eps());let i=U(q,4);Os(e,t,1,n,i),r.setE(i[1])}function Ms(e,t,n){let r=we(n,0,1),i=U(L,4);if(Ss(e,t,3,r,i),i[1].isZero()){if(i[2].isZero())return i[3];{let e=i[2].clone();return r===1&&e.negateThis(),e}}return i[1]}class Ns{b;len=0;constructor(e,t){this.b=e,this.len=t}getMaxDerivative(){return 1}getValue(e,t){return e===0?this.len-bs(this.b,t,!1):0}getError(e){return n(0),0}}function Ps(e,t,n){let r=bs(e,1,!1);if(t<=0)return t;if(t>=r)return t-r+1;let i=new Ns(e,t),a=[0];return sr(i,F.unit(),1,a)!==1&&c(``),a[0]}function Fs(e){let t=U(L,3),n=[0,0,0];return e.queryControlPoints(t),e.queryWeights(n),Is(t,n)}function Is(e,t){let r=Sc(t);if(r===1)return Si(e);if(r===0)return 0;let i=[new L(0,0),e[1].sub(e[0]),e[2].sub(e[0])],a=i[1].crossProduct(i[2]);if(r<1){n(r>0);let e=1-r,t;if(e<.01)t=-1/3+e*(2/15+e*(3/35+e*(16/315+e*(20/693+e*(16/1001+56/6435*e)))));else{let n=e*(1+r),i=Math.atan2(Math.sqrt(e),Math.sqrt(1+r));t=r*(.5*r-vt(n)*i)/n}return a*t}{let e=(r-1)*(r+1);return .25*r/e**1.5*(-2*r*Math.sqrt(e)*a-4*i[1].y*i[2].x*Math.atanh(Math.sqrt((r-1)/(r+1)))-i[1].x*i[2].y*Math.log(-1+2*r*(r-Math.sqrt(e))))}}function Ls(e,t){let r=Sc(t);if(r===1){let t=U(L,3);Gi(e,t);let n=t[2].clone(),r=t[1].clone(),i=new L,a=n.y*r.x-n.x*r.y;return i.x=-((4*n.x+5*r.x)*a)/60,i.y=-((4*n.y+5*r.y)*a)/60,i}if(r===0)return new L(0,0);n(r>0);let i=e[1].sub(e[0]),a=e[2].sub(e[0]);if(r<1){let e=Math.sqrt(1-r),t=Math.sqrt(1+r),n=(i.y*a.x-i.x*a.y)*r/(e*t)**5/12,o=Math.atan2(e,t),s=r*e*t,c=r*r,l=i.mul((2+c)*2),u=a.mul(2*c-5),d=l.add(u).mul(s),f=a.sub(i.mul(c*2)).mul(o*6);return d.add(f).mul(n)}{let e=Math.sqrt(r-1),t=Math.sqrt(r+1),n=(i.y*a.x-i.x*a.y)*r/(e*t)**5/12,o=Math.atanh(e/t),s=r*e*t,c=r*r,l=i.mul(4).sub(a.mul(5)),u=i.add(a).mul(2*c),d=l.add(u).mul(s),f=a.sub(i.mul(c*2)).mul(o*6);return d.add(f).mul(n)}}function Rs(e){let t=U(L,3),n=[0,0,0];return e.queryControlPoints(t),e.queryWeights(n),Ls(t,n)}function zs(e){return Bs(e.calculateUpperLength2D())}function Bs(e){return Te()*256*e}function Vs(e){if(e.m_weights[1]===0)return!0;let t=L.distance(e.getStartXY(),e.getEndXY()),n=e.calculateUpperLength2D(),r=2**-52*8*n;return n-t<=r}function Hs(e){return e.m_cachedValues}function Us(e,t){e.m_cachedValues=t}function Ws(e,t,n,r,i){let a=U(L,3);e.queryControlPoints(a);let o=[0,0,0];e.queryWeights(o);let s=[0];return Gs(a,o,t,F.unit(),r,i,1,s)===1?s[0]:NaN}function Gs(e,t,r,i,a,o,s,c){h(F.unit().contains(i)&&s>0,``),(o<0||Number.isNaN(o))&&(o=Number.MAX_VALUE);let l=[,,,];for(let t=0;t<3;++t)l[t]=e[t].sub(r);let u=Sc(t),d=J.constructPoint2D(l[0]),f=J.constructPoint2D(l[1]),p=J.constructPoint2D(l[2]),m=B.constructDouble(u),g=m.clone();g.ldexpThis(1);let _=d.dotProduct(f.sub(d)).mul(m),v=m.mul(m.addDouble(2)),y=p.sub(f.mul(v.ldexp(1))),b=f.sqrLength().mul(m.mul(m).ldexp(1)).add(d.sqrLength().mul(m.ldexp(2).subDouble(1))).add(d.dotProduct(y)),x=p.sub(f.mul(g)).add(d.mul(g.subDouble(1))),S=f.mul(m).sub(d).dotProduct(x).mulDouble(3),C=f.dotProduct(p).mul(m.subDouble(3).mul(m)).ldexp(1),w=f.sqrLength().mul(m.mul(m).ldexp(2)),T=d.sqrLength().mul(m.ldexp(2).subDouble(3)),E=d.dotProduct(p.sub(f.mul(m.mulDouble(3).subDouble(1)).mul(m))).ldexp(1),D=p.sqrLength().addThis(C).addThis(w).addThis(T).addThis(E),O=d.add(p).sub(f.mul(g)),k=m.subDouble(1),ee=p.sub(d).dotProduct(O).mul(k),A=new L(0,0),j=[],te=new L;bc(l,t,i.vmin,te);let ne=L.distance(te,A);if(ne<=o&&j.push(new L(i.vmin,ne)),i.vmin!==i.vmax&&(bc(l,t,i.vmax,te),ne=L.distance(te,A),ne<=o&&j.push(new L(i.vmax,ne))),i.width()>0){let e=l[2].isZero(),n=U(B,4),r=Wr(ee,D,S,b,_,58,i,e,n);for(let e=0;e<r;e++){if(!i.containsExclusiveCoordinate(n[e].toDouble()))continue;let r=n[e].toDouble();r=Cc(t,r);let a=new L;bc(l,t,r,a),ne=L.distance(a,A),ne<=o&&j.push(new L(r,ne))}}if(a){n(i.equals(F.unit()));{bc(l,t,-1,te,!0);let e=new L;bc(l,t,0,e);let n=new Q({start:te,end:e}),r=n.getClosestCoordinate(A,!0);r<1&&(te=n.getCoord2D(r),ne=L.distance(te,A),ne<=o&&j.push(new L(r-1,ne)))}{bc(l,t,2,te,!0);let e=new L;bc(l,t,i.vmax,e);let n=new Q({start:e,end:te}),r=n.getClosestCoordinate(A,!0);r>0&&(te=n.getCoord2D(r),ne=L.distance(te,A),ne<=o&&j.push(new L(1+r,ne)))}}if(!j.length)return 0;j.sort((e,t)=>e.compare(t));let M=0,re=j[0].x;if(c[M++]=re,M<s){let e=fe(l,4,!1).total(),t=j[0].y;for(let n=1,r=j.length;n<r;n++)if(j[n].y>t+e){j.length=n;break}j.sort((e,t)=>Ze(e.x,t.x)),M=0,c[M++]=j[0].x;for(let e=1,t=j.length;e<t;e++)j[e].x!==c[M-1]&&M<s&&(c[M++]=j[e].x)}return M}function Ks(e,t,n,r,i){return{tmin:e,tmax:t,t:n,d:r,pt:i.clone()}}function qs(e,t,r,i,a){let o=new Ft;if(Js(e,F.unit(),o),o.inflate(i),!o.isIntersectingPoint2D(t))return 0;let s=vs(e),c=0,l=[],u=s.specialPoints[0];for(let r=1,i=s.specialPoints.length;r<i;++r){let i=s.specialPoints[r],a=ms(e,t,u,i);if(l.length===0)l.push(a);else if(a.t===a.tmin)n(l.at(-1).d<=a.d),l.at(-1).tmax=a.tmax;else if(l.at(-1).t===l.at(-1).tmax){n(l.at(-1).d>=a.d);let e=l.at(-1).tmin;l[l.length-1]=a,l.at(-1).tmin=e}else l.push(a);u=i}for(let e of l)if(e.d<=i){let t=e.t;r&&(r[c]=t),c++}return c}function Js(e,t,n){let r=U(L,3);e.queryControlPoints(r);let i=[0,0,0];e.queryWeights(i),Ys(r,i,t,n)}function Ys(e,t,n,r){if(n.equalsRange(0,1)){r.setFromPoints(e,3);return}let i=U(L,3);tc(e,t,n.vmin,n.vmax,i,[0,0,0]),r.setFromPoints(i,3)}function Xs(e){let t=z(e[0].y,e[1].y),n=z(e[1].y,e[2].y);if(t>=0&&n>=0||t<=0&&n<=0){let t=z(e[0].x,e[1].x),n=z(e[1].x,e[2].x);if(t>=0&&n>=0||t<=0&&n<=0)return!0}return!1}function Zs(e){let t=U(L,3);e.queryControlPoints(t);let n=Qs(t);return n&&(e.m_cp.setCoordsPoint2D(t[1]),e.afterCompletedModification()),n}function Qs(e){let t=!1;for(let n=0;n<2;n++){let r=z(e[0][n],e[2][n]);r>0?(z(e[0][n],e[1][n])<0&&(e[1][n]=e[0][n],t=!0),z(e[1][n],e[2][n])<0&&(e[1][n]=e[2][n],t=!0)):r<0?(z(e[0][n],e[1][n])>0&&(e[1][n]=e[0][n],t=!0),z(e[1][n],e[2][n])>0&&(e[1][n]=e[2][n],t=!0)):e[1][n]!==e[0][n]&&(e[1][n]=e[0][n],t=!0)}return t}function $s(e,n,r){r===void 0&&(r=n,n=0);let i=new L;if(n<0||r>1)return i.setNAN(),i;if(n>r&&t(`calculate_sub_weighted_centroid`),n===r||e.isDegenerate(0))return i.setCoords(0,0),i;let a=vs(e),o=zs(e),s=o/e.calculateUpperLength2D(),c=n,l=0;for(let e=1,t=a.specialPointsCount();e<t;e++)if(n<a.specialPoints[e]){l=e-1;break}i.setCoords(0,0);for(let t=l+1,n=a.specialPointsCount();t<n;t++){let n=Math.min(a.specialPoints[t],r),l=hs(e,c,n,s,o);if(i.addThis(l),c=n,r<=a.specialPoints[t])break}return i.add(e.getStartXY().mul(e.calculateLength2D()))}function ec(e,t,r,i,a,o,s){n(r>=0&&r<=1&&i!==o&&a!==s),n(t[0]>0&&t[2]>0&&t[1]>=0);let c=[1,Sc(t),1],l=wc(t,r),u=Ce(e,3),d=U(A,3);mc(u,c,d);let f=U(A,3),p=U(A,3);Tc(d,l,i?f:null,o?p:null),Ec(t,r,a,s);let m=Xs(u);if(i){for(let e=0;e<3;++e)yc(f[e],i[e]);Oc(u,i),m&&Qs(i)}if(o){for(let e=0;e<3;++e)yc(p[e],o[e]);Oc(u,o),m&&Qs(o)}}function tc(e,t,r,i,a,o){if(n(r>=0&&i<=1&&r<=i),r===i){let n=new L,i=hc(e,t,r,n);Dc(e,n),a[0].assign(n),a[1].assign(n),a[2].assign(n),o[0]=i,o[1]=i,o[2]=i;return}if(r===0&&i===1){a[0].assign(e[0]),a[1].assign(e[1]),a[2].assign(e[2]),o[0]=t[0],o[1]=t[1],o[2]=t[2];return}let s=U(A,3);{let n=[1,Sc(t),1],a=wc(t,r),o=wc(t,i);mc(e,n,s),Tc(s,o,s,null),Tc(s,a>=o?1:a/o,null,s)}let c=[0,0,0];Ec(t,i,c,null),Ec(c,r/i,null,c);let l=Xs(e),u=U(L,3);yc(s[1],u[1]),bc(e,t,r,u[0]),bc(e,t,i,u[2]),Oc(e,u);for(let e=0;e<3;++e)a[e].assign(u[e]),o[e]=c[e];l&&Qs(a)}function nc(e,t,n){let r=Sc(t),i=[1,r,1],a=4*r/(3*(1+r));n[0].assign(e[0]),n[3].assign(e[2]),He(e[0],e[1],a,n[1]),He(e[2],e[1],a,n[2]),new ls({cp:n}),new jr({points:e,weight:r});let o=0,s=.1,c=0;for(let t=0;t<9;t++,s+=.1){let t=new L;bc(e,i,s,t);let r=new L;Co(n,s,r);let a=L.sqrDistance(t,r);a>o&&(o=a,c=s)}{let t=new L;bc(e,i,c,t);let r=[0];Uo(n,t,F.unit(),!1,-1,1,r);let a=new L;return Co(n,r[0],a),o=L.sqrDistance(t,a),Math.sqrt(o)}}function rc(e,t,n,r){if(t.isEqual(e.m_XStart,e.m_YStart)&&n.isEqual(e.m_XEnd,e.m_YEnd))return;let i=r?e.isMonotoneQuickAndDirty():!1,a=new bt,o=U(L,3);o[0].setCoords(e.m_XStart,e.m_YStart),o[2].setCoords(e.m_XEnd,e.m_YEnd);let s=new L;s.setSub(o[2],o[0]),s.leftPerpendicularThis(),o[1].setAdd(o[0],s);let c=U(L,3);c[0].setCoordsPoint2D(t),c[2].setCoordsPoint2D(n),s.setSub(c[2],c[0]),s.leftPerpendicularThis(),c[1].setAdd(c[0],s),a.setFromTwoTriangles(o,c)?a.transformInPlace(e.m_cp):He(t,n,.5,e.m_cp),e.changeEndPoints2D(t,n),i&&Zs(e)}function ic(e,t,n,r,i){if(i){if(du(t,n)!==0)return e?4:2}else if(Gt(t,n))return 1;return cc(e,t,n,null,null,null,r,i!==void 0&&i,!0,!1)===0?0:4}function ac(e,t,n,r,i){if(i){if(du(t,n)!==0)return e?4:2}else if(Gt(t,n))return 1;return lc(e,t,n,null,null,null,r,i??!1,!0,!1)===0?0:4}function oc(e,t,n,r,i){if(i){let r=du(t,n);if(r!==0){if(e){if(r===1){if(t.m_weights[0]===n.m_weights[0]&&t.m_weights[1]===n.m_weights[1]&&t.m_weights[2]===n.m_weights[2])return 2}else if(t.m_weights[0]===n.m_weights[2]&&t.m_weights[1]===n.m_weights[1]&&t.m_weights[2]===n.m_weights[0])return 2;return 4}return 2}}else if(Gt(t,n))return 1;return uc(e,t,n,null,null,null,r,i!==void 0&&i,!0,!1)===0?0:4}function sc(e,t,n,r,i){if(i){if(du(t,n)!==0)return e?4:2}else if(Gt(t,n))return 1;return dc(e,t,n,null,null,null,r,i??!1,!0,!1)===0?0:4}function cc(e,t,r,i,a,o,s,c,l,u){if(a!==null&&(a.length=0),o!==null&&(o.length=0),i!==null&&(i.length=0),r.isDegenerate(0)){let e=[0,0],n=t.intersectPoint(r.getStartXY(),e,s);if(n>0){if(a!==null)for(let t=0;t<n;t++)a.push(e[t]);if(o!=null)for(let e=0;e<n;e++)o.push(0);if(i!=null)for(let r=0;r<n;r++){let n=new L;t.queryCoord2D(e[r],n),i.push(n)}}return n}let d=pn(t,r);if(s=Math.max(s,d),t.isDegenerateToLineHelper(d)){let e=new Q({start:t.getStartXY(),end:t.getEndXY()}),n=Pn(e,r,i,a,o,s,c,u);if(a)for(let r=0;r<n;++r){let n=e.getCoord2D(a[r]);a[r]=t.getClosestCoordinate(n,!1)}return n}if(mn(t,r,s))return 0;let f=U(L,3);t.queryControlPoints(f);let p=[0,0,0];t.queryWeights(p);let m=[1,Sc(p),1],h=r.getEndXY().sub(r.getStartXY()),g=h.clone();g.leftPerpendicularThis();let _=f[0].clone(),v=f[1].clone(),y=f[2].clone(),b=v.sub(_),x=y.sub(_),S=y.sub(v),C=m[0],w=m[1],T=m[2],E=C*w,D=C*T,O=w*T,k=b.dotProduct(g)*E,ee=x.dotProduct(g)*D,A=S.dotProduct(g)*O,j=k,te=ee-k*2,ne=A+ee-ee,M=I(13,NaN),re=I(13,NaN),N=lr(ne,te,j,F.unit(),!1,M);N<0&&(M[0]=0,M[1]=1,N=2);let ie=0;for(let e=0,t=ie;e<N;++e){let n=new L;bc(f,m,M[e+t],n),re[ie]=r.getClosestCoordinate(n,!1),L.distance(n,r.getCoord2D(re[ie]))<=s&&(M[ie]=M[e+t],ie++)}let ae=U(L,3),P=U(L,3);if(t.queryControlPoints(P),P[0].subThis(r.getStartXY()),P[1].subThis(r.getStartXY()),P[2].subThis(r.getStartXY()),fc(P,m,ae,!1),Math.abs(h.x)>=Math.abs(h.y)){let e=h.y/h.x;ne=ae[2].y-ae[2].x*e,te=ae[1].y-ae[1].x*e,j=ae[0].y-ae[0].x*e}else{let e=h.x/h.y;ne=ae[2].x-ae[2].y*e,te=ae[1].x-ae[1].y*e,j=ae[0].x-ae[0].y*e}let oe=t.getEndXY().equals(r.getStartXY())||t.getEndXY().equals(r.getEndXY()),se=[0,0];N=lr(ne,te,j,F.unit(),oe,se);for(let e=0,t=ie;e<N;++e){M[e+t]=se[e];let n=new L;bc(f,m,M[e+t],n),re[ie]=r.getClosestCoordinate(n,!1),L.distance(n,r.getCoord2D(re[ie]))<=s&&(M[ie]=M[e+t],ie++)}n(ie<M.length+4);for(let e=0;e<ie;e++)M[e]=Cc(p,M[e]);N=t.intersectPoint(r.getStartXY(),se,s);for(let e=0;e<N;e++)M[ie]=se[e],re[ie++]=0;N=t.intersectPoint(r.getEndXY(),se,s);for(let e=0;e<N;e++)M[ie]=se[e],re[ie++]=1;N=r.intersectPoint(t.getStartXY(),se,s);for(let e=0;e<N;e++)re[ie]=se[e],M[ie++]=0;N=r.intersectPoint(t.getEndXY(),se,s);for(let e=0;e<N;e++)re[ie]=se[e],M[ie++]=1;return ie===0?0:gu(e,t,r,M,re,ie,i,a,o,s,c,l,u)}function lc(e,t,n,r,i,a,o,s,c,l){if(Z(n))return cc(e,t,new Q({start:n.getStartXY(),end:n.getEndXY()}),r,i,a,o,s,c,l);let u=pn(t,n);if(o=Math.max(o,u),mn(t,n,o))return 0;let d=[],f=[],p=U(L,4);{t.queryControlPoints(p);let e=U(L,4),r=new bt;n.canonicToWorldTransformation(r);let i=new bt;i.setInvert(r),i.transformPoints2D(p,4,e);let a=U(B,3),c=U(B,3),l=U(B,3),u=[0,0,0];t.queryWeights(u),pc(e,u,a,c,l);let m=U(B,3);m[0].setDouble(n.getSemiMinorAxis()),m[0].sqrThis(),m[1].setDouble(n.getSemiMajorAxis()),m[1].sqrThis(),m[2].setThis(m[0]),m[2].mulThis(m[1]),m[2].negateThis();let h=Br(a,2,c,2,l,2,m,!0,F.unit(),F.unit(),d,s);if(h>0){let e=0;for(let r=0;r<h;r++){let i=new L;t.queryCoord2D(d[r],i);let a=n.getClosestCoordinate(i,!1),s=new L;n.queryCoord2D(a,s),L.distance(i,s)<=o&&(d[e]=d[r],f.push(a),e++)}d.length=e}}let m=[0,1];for(let e=0;e<2;e++)do{let r=e===0?n.getStartXY():n.getEndXY(),i=Ws(t,r,F.unit(),!1,-1),a=new L;t.queryCoord2D(i,a),L.distance(r,a)<=o&&(d.push(i),f.push(m[e]))}while(0);for(let e=0;e<2;e++){let t=[0,3];do{let r=n.getClosestCoordinate(p[t[e]],!1),i=new L;n.queryCoord2D(r,i),L.distance(p[t[e]],i)<=o&&(d.push(m[e]),f.push(r))}while(0)}return gu(e,t,n,d,f,d.length,r,i,a,o,s,c,l)}function uc(e,t,r,i,a,o,s,c,l,u){let d=U(L,3);t.queryControlPoints(d);let f=U(L,3);if(r.queryControlPoints(f),hn(d,f,3)<0)return uc(e,r,t,i,o,a,s,c,l,!u);let p=pn(t,r);if(t.isDegenerateToLineHelper(p)){let n=new Q({start:t.getStartXY(),end:t.getEndXY()}),d=cc(e,r,n,i,o,a,s,c,l,!u);if(a)for(let e=0;e<d;++e){let r=n.getCoord2D(a[e]);a[e]=t.getClosestCoordinate(r,!1)}return d}if(r.isDegenerateToLineHelper(p)){let n=new Q({start:r.getStartXY(),end:r.getEndXY()}),d=cc(e,t,n,i,a,o,s,c,l,u);if(o)for(let e=0;e<d;++e){let t=n.getCoord2D(o[e]);o[e]=r.getClosestCoordinate(t,!1)}return d}if(s=Math.max(s,p),mn(t,r,s))return 0;let m=I(3,NaN);t.queryWeights(m);let h=I(3,NaN);r.queryWeights(h);let g=[1,Sc(m),1],_=[1,Sc(h),1],v=new F(0,1),y=new F(0,1);{let e=Ft.constructEmpty();Ys(d,g,new F(0,1),e);let t=Ft.constructEmpty();Ys(f,_,new F(0,1),t);let n=Math.max(e.maxDim(),t.maxDim());if(e.inflate(s*3),t.inflate(s*3),!e.intersectW(t))return 0;if(e.maxDim()<n*.1){if(xc(d,g,e,v),xc(f,_,e,y),v.isEmpty()||y.isEmpty())return 0;tc(d,g,v.vmin,v.vmax,d,g),tc(f,_,y.vmin,y.vmax,f,_)}}let b=vu(d,2,f,2,s);if(b===0)return 0;let x=[],S=[];if(b===-1){let e=U(B,3),t=U(B,3),n=U(B,3);pc(d,g,e,t,n);let r=U(B,3),i=U(B,3),a=U(B,3);pc(f,_,r,i,a);let o=[],p=[],m=Lr(e,2,t,2,n,2,r,2,i,2,a,2,!0,F.unit(),F.unit(),o,p,c,l,u);if(m>0)for(let e=0;e<m;e++){let t=new L;bc(f,_,p[e],t);let n=new L;bc(d,g,o[e],n),L.distance(n,t)<=s&&(x.push(o[e]),S.push(p[e]))}}for(let e=0;e<2;e++){let t,r,i;e===0?(t=d,r=f,i=_):(t=f,r=d,i=g);for(let a=0;a<2;a++){let o=a===0?0:t.length-1,c=new L,l=[0],u=Gs(r,i,t[o],F.unit(),!1,-1,1,l);n(u===1),bc(r,i,l[0],c),L.distance(t[o],c)<=s&&(e===0?(x.push(o===0?0:1),S.push(l[0])):(S.push(o===0?0:1),x.push(l[0])))}}if(x.length===0)return 0;if(!v.equalsRange(0,1))for(let e=0;e<x.length;++e)x[e]=jr.recalculateParentT(v.vmin,v.vmax,x[e]);if(!y.equalsRange(0,1))for(let e=0;e<S.length;++e)S[e]=jr.recalculateParentT(y.vmin,y.vmax,S[e]);for(let e=0;e<x.length;++e)x[e]=Cc(m,x[e]);for(let e=0;e<S.length;++e)S[e]=Cc(h,S[e]);return gu(e,t,r,x,S,x.length,i,a,o,s,c,l,u)}function dc(e,t,n,r,i,a,o,s,c,l){if(t.isLine())return Hi(e,n,new Q({start:t.getStartXY(),end:t.getEndXY()}),r,a,i,o,s,c,!l);if(n.isLine())return cc(e,t,new Q({start:n.getStartXY(),end:n.getEndXY()}),r,i,a,o,s,c,l);let u=pn(t,n);if(o=Math.max(o,u),mn(t,n,o))return 0;let d=U(L,3);t.queryControlPoints(d);let f=U(L,3);n.queryControlPoints(f);let p=vu(d,2,f,2,o);if(p===0)return 0;let m=[],h=[];if(p===-1){let e=U(B,3),r=U(B,3),i=U(B,3),a=[0,0,0];t.queryWeights(a),pc(d,a,e,r,i);let u=U(J,3);Yi(f,u);let p=Lr(e,2,r,2,i,2,[u[0].x,u[1].x,u[2].x],2,[u[0].y,u[1].y,u[2].y],2,null,0,!0,F.unit(),F.unit(),m,h,s,c,l);if(p>0){let e=0;for(let r=0;r<p;r++){let i=new L;n.queryCoord2D(h[r],i);let a=new L;t.queryCoord2D(m[r],a),L.distance(a,i)<=o&&(m[e]=m[r],h[e]=h[r],e++)}m.length=e,h.length=e}}for(let e=0;e<2;e++){let r;r=e===0?d:f;for(let i=0;i<2;i++){let a=i===0?0:r.length-1,s,c=new L;e===0?(s=Ei(n,r[a],F.unit(),!1),n.queryCoord2D(s,c)):(s=Ws(t,r[a],F.unit(),!1,-1),t.queryCoord2D(s,c)),L.distance(r[a],c)<=o&&(e===0?(m.push(a===0?0:1),h.push(s)):(h.push(a===0?0:1),m.push(s)))}}return gu(e,t,n,m,h,m.length,r,i,a,o,s,c,l)}function fc(e,t,n,r=!1){let i=U(L,3);r?(i[0].setCoordsPoint2D(e[0]),i[1].setCoordsPoint2D(e[1]),i[1].subThis(i[0]),i[2].setCoordsPoint2D(e[2]),i[2].subThis(i[0]),i[0].setCoords(0,0)):(i[0].setCoordsPoint2D(e[0]),i[1].setCoordsPoint2D(e[1]),i[2].setCoordsPoint2D(e[2])),i[0].mulThis(t[0]),i[1].mulThis(t[1]),i[2].mulThis(t[2]),n[1].setCoords(i[1].x-i[0].x,i[1].y-i[0].y),n[2].setCoordsPoint2D(i[2].sub(i[1])),n[2].subThis(n[1]),n[1].x*=2,n[1].y*=2,n[0].setCoordsPoint2D(i[0])}function pc(e,t,n,r,i){let a=B.constructDouble(t[0]),o=B.constructDouble(t[1]),s=B.constructDouble(t[2]);n[0].setDouble(e[0].x),n[0].mulThis(a),n[1].setDouble(e[1].x),n[1].mulThis(o),n[2].setDouble(e[2].x),n[2].mulThis(s),n[2].subThis(n[1]),n[1].subThis(n[0]),n[2].subThis(n[1]),n[1].ldexpThis(1),r[0].setDouble(e[0].y),r[0].mulThis(a),r[1].setDouble(e[1].y),r[1].mulThis(o),r[2].setDouble(e[2].y),r[2].mulThis(s),r[2].subThis(r[1]),r[1].subThis(r[0]),r[2].subThis(r[1]),r[1].ldexpThis(1),i[0].setDouble(t[0]),i[1].setDouble(t[1]),i[2].setThis(i[1]),i[2].ldexpThis(1),i[2].negateThis(),i[2].addThis(i[0]),i[2].addDoubleThis(t[2]),i[1].subThis(i[0]),i[1].ldexpThis(1)}function mc(e,t,n){for(let r=0;r<3;++r)n[r].setCoordsPoint2DZ(e[r].mul(t[r]),t[r])}function hc(e,t,n,r){if(n===0)return r.assign(e[0]),t[0];if(n===1)return r.assign(e[2]),t[2];let i=[e[0].x*t[0],e[1].x*t[1],e[2].x*t[2]],a=[e[0].y*t[0],e[1].y*t[1],e[2].y*t[2]],o=[t[0],t[1],t[2]],s=n,c,l,u;if(n<=.5){let e=Ne(i[0],i[1],s),t=Ne(i[1],i[2],s);c=V(e,t,s);let n=Ne(a[0],a[1],s),r=Ne(a[1],a[2],s);l=V(n,r,s);let d=Ne(o[0],o[1],s),f=Ne(o[1],o[2],s);u=Ne(d,f,s)}else{let e=Pe(i[0],i[1],s),t=Pe(i[1],i[2],s);c=Pe(e,t,s);let n=Pe(a[0],a[1],s),r=Pe(a[1],a[2],s);l=Pe(n,r,s);let d=Pe(o[0],o[1],s),f=Pe(o[1],o[2],s);u=Pe(d,f,s)}return c/=u,l/=u,r.setCoords(c,l),Dc(e,r),u}function gc(e,t,n){let r=U(L,3);e.queryControlPoints(r);let i=[0,0,0];e.queryWeights(i),_c([q.constructPoint2D(r[0]),q.constructPoint2D(r[1]),q.constructPoint2D(r[2])],[new H(i[0]),new H(i[1]),new H(i[2])],t,n)}function _c(e,t,n,r){if(n.value()===0){r.setE(e[0]);return}if(n.value()===1){r.setE(e[2]);return}let i=[e[0].x.mulE(t[0]),e[1].x.mulE(t[1]),e[2].x.mulE(t[2])],a=[e[0].y.mulE(t[0]),e[1].y.mulE(t[1]),e[2].y.mulE(t[2])],o=[t[0].clone(),t[1].clone(),t[2].clone()],s=new H,c=new H,l=new H;if(n.value()<=.5){let e=at(i[0],i[1],n),t=at(i[1],i[2],n);s.setE(at(e,t,n));let r=at(a[0],a[1],n),u=at(a[1],a[2],n);c.setE(at(r,u,n));let d=at(o[0],o[1],n),f=at(o[1],o[2],n);l.setE(at(d,f,n))}else{let e=ot(i[0],i[1],n),t=ot(i[1],i[2],n);s.setE(ot(e,t,n));let r=ot(a[0],a[1],n),u=ot(a[1],a[2],n);c.setE(ot(r,u,n));let d=ot(o[0],o[1],n),f=ot(o[1],o[2],n);l.setE(ot(d,f,n))}s.divThisE(l),c.divThisE(l);let u=new L(s.value(),c.value());Dc([e[0].value(),e[1].value(),e[2].value()],u),r.x.set(u.x,s.eps()),r.y.set(u.y,c.eps())}function vc(e,t,n,r){let i=n.lte(qe)?B.lerpLo:B.lerpHi,[a,o,s]=[t.map((t,n)=>e[n].x.mul(t)),t.map((t,n)=>e[n].y.mul(t)),t].map(([e,t,r])=>i(i(e,t,n),i(t,r,n),n)),c=new L(a.divThis(s).value(),o.divThis(s).value());Dc(e.map(e=>e.asPoint2D()),c),r.x=B.constructDouble(c.x),r.y=B.constructDouble(c.y)}function yc(e,t){return t.setCoords(e.x/e.z,e.y/e.z),e.z}function bc(e,t,n,r,i){if(i){if(n<0){Cn(new Q({start:e[0],end:e[0].add(Ms(e,t,0).getUnitVector())}),n,r);return}if(n>1){Cn(new Q({start:e[2],end:e[2].add(Ms(e,t,1).getUnitVector())}),n-1,r);return}}hc(e,t,n,r)}function xc(e,t,n,r){r.setEmpty();let i=[];i.push(new F(0,1));let a=Math.max(n.width(),n.height())*.5;for(;i.length;){let o=i.at(-1);i.pop();let s=new Ft;if(Ys(e,t,o,s),s.isIntersectingW(n)){let e=Math.max(s.width(),s.height());if(n.containsW(s)||e<=a||o.width()<1e-12)r.merge(o);else{let e=o.getCenter();i.push(F.construct(o.vmin,e)),i.push(F.construct(e,o.vmax))}}}}function Sc(e){return e[1]/Math.sqrt(e[0]*e[2])}function Cc(e,t){let n=Math.sqrt(e[2]/e[0]);return t/V(n,1,t)}function wc(e,t){let n=Math.sqrt(e[0]/e[2]);return t/V(n,1,t)}function Tc(e,t,r,i){n(t>=0&&t<=1),new A().setCoordsPoint3D(e[0]),new A().setCoordsPoint3D(e[1]),new A().setCoordsPoint3D(e[2]);let a=new A,o=new A,s=new A;Ie(3,e[0],e[1],t,a),Ie(3,e[1],e[2],t,o),Ie(3,a,o,t,s);let c=e[2].clone();r&&(r[0].assign(e[0]),r[1].assign(a),r[2].assign(s)),i&&(i[0].assign(s),i[1].assign(o),i[2].assign(c))}function Ec(e,t,r,i){let a=[e[0],e[1],e[2]];n(t>=0&&t<=1&&r!==i);let o=V(a[0],a[1],t),s=V(a[1],a[2],t),c=V(o,s,t);r&&(r[0]=a[0],r[1]=o,r[2]=c),i&&(i[0]=c,i[1]=s,i[2]=a[2])}function Dc(e,t){let n=F.constructEmpty();n.vmin=n.vmax=e[0].x,n.mergeNeCoordinate(e[1].x),n.mergeNeCoordinate(e[2].x),t.x=we(t.x,n.vmin,n.vmax),n.vmin=n.vmax=e[0].y,n.mergeNeCoordinate(e[1].y),n.mergeNeCoordinate(e[2].y),t.y=we(t.y,n.vmin,n.vmax)}function Oc(e,t){let n=new F;n.vmin=n.vmax=e[0].x,n.mergeNeCoordinate(e[1].x),n.mergeNeCoordinate(e[2].x),t[0].x=we(t[0].x,n.vmin,n.vmax),t[1].x=we(t[1].x,n.vmin,n.vmax),t[2].x=we(t[2].x,n.vmin,n.vmax),n.vmin=n.vmax=e[0].y,n.mergeNeCoordinate(e[1].y),n.mergeNeCoordinate(e[2].y),t[0].y=we(t[0].y,n.vmin,n.vmax),t[1].y=we(t[1].y,n.vmin,n.vmax),t[2].y=we(t[2].y,n.vmin,n.vmax)}const kc=ct/180,Ac=180/ct;function jc(e){let t=e;return t>=-360&&t<720?(t<0?t+=360:t>=360&&(t-=360),t):(t=ft(t,360),t<0&&(t+=360),t)}function Mc(e){let t=e;return t=jc(t),t>180&&(t-=360),t}function Nc(e){return e*kc}function Pc(e){return e*Ac}function Fc(e){let t=$e(),n=e;return n>=-t&&n<t*2?(n<0&&(n+=t),n>=t&&(n-=t),n):(n=ft(n,t),n<0&&(n+=t),n)}function Ic(e){let t=G(),n=e;return n>-t&&n<=t?n:(n=Fc(n),n>t&&(n-=$e()),n)}function Lc(e,t){return Mc(t-e)}var Rc=C;class zc extends xn{static type=i.enumEllipticArc;m_semiMajorAxis;m_minorMajorRatio;m_rotation;m_cosr;m_sinr;m_center;m_sweepAngle;m_startAngle;m_interior;m_bits;m_cachedValues;constructor(e){if(e===void 0||Me(e,`vd`)){super({vd:e?.vd,XStart:0,YStart:0,XEnd:0,YEnd:0}),this.m_semiMajorAxis=0,this.m_minorMajorRatio=1,this.m_rotation=0,this.m_cosr=1,this.m_sinr=0,this.m_center=new L(0,0),this.m_sweepAngle=0,this.m_startAngle=0,this.m_interior=new L(0,0),this.m_bits=0;return}if(e.copy){super(e),this!==e.copy&&(this.m_center=new L(0,0),this.m_interior=new L(0,0),e.copy.copyToImpl(this));return}if(e.move)super(e),this.m_semiMajorAxis=e.move.m_semiMajorAxis,this.m_minorMajorRatio=e.move.m_minorMajorRatio,this.m_rotation=e.move.m_rotation,this.m_cosr=e.move.m_cosr,this.m_sinr=e.move.m_sinr,this.m_center=e.move.m_center.clone(),this.m_sweepAngle=e.move.m_sweepAngle,this.m_startAngle=e.move.m_startAngle,this.m_interior=e.move.m_interior.clone(),this.m_bits=e.move.m_bits,this.m_cachedValues=e.move.m_cachedValues,e.move.m_cachedValues=null;else if(e.fromPoint){super({XStart:0,YStart:0,XEnd:0,YEnd:0}),this.m_center=new L(0,0),this.m_interior=new L(0,0),this.constructCircularArcThreePoint(e.fromPoint,e.toPoint,e.interiorPoint);return}else if(e.center){super({XStart:0,YStart:0,XEnd:0,YEnd:0}),this.m_center=new L(0,0),this.m_interior=new L(0,0),this.constructCircleRadius(e.radius,e.center,e.bIsCounterClockwise);return}else if(e.semiMajorAxis){super({XStart:0,YStart:0,XEnd:0,YEnd:0}),this.constructEllipticArcEndPoints(e.fromPoint,e.toPoint,e.semiMajorAxis,e.minorMajorRatio,e.axisXRotationRad,e.bBigArc,e.bIsCounterClockwise);return}}getBoundary(){return ar(this)}assignCopy(e){return this!==e&&e.copyTo(this),this}constructCircleRadius(e,t,n=!1){return this.constructEllipse(e,1,t,0,n),this.setProjectionBehavior(0),this.afterCompletedModification(),this}constructCircleCenterAndPoint(e,t,n=!1){let r=L.distance(e,t);return this.constructEllipticArcEndPointsCenter(t,t,r,1,0,!0,n,e),this.setProjectionBehavior(0),this.afterCompletedModification(),this}constructTwoPointCircle(e,t,n=!1){let r=L.lerp(e,t,.5);return this.constructCircleCenterAndPoint(r,e,n),this}constructLineEllipticArc(e,t){return Ol(this,e,t,1),this}constructLineCircularArc(e,t){return Ol(this,e,t,0),this}constructEllipse(e,t,n,r,i=!1){this.m_semiMajorAxis=Math.abs(e),this.m_minorMajorRatio=Math.abs(t),this.m_minorMajorRatio>1&&(this.m_semiMajorAxis*=this.m_minorMajorRatio,this.m_minorMajorRatio=1/this.m_minorMajorRatio);let a=new L(0,this.m_minorMajorRatio*this.m_semiMajorAxis),o=Math.cos(r),s=Math.sin(r);return a.rotateDirect(o,s),a.addThis(n),this.constructEllipticArcEndPointsCenter(a,a,this.m_semiMajorAxis,this.m_minorMajorRatio,r,!0,i,n),this}inflate(e){if(this.isDegenerateToLine())return;let t=this.getSemiMinorAxis()+e;if(t=t<=0?0:(this.getSemiMajorAxis()+e)/this.getSemiMajorAxis(),this.isCircular()){let e=new bt;e.setShiftCoords(-this.m_center.x,-this.m_center.y),e.scale(t,t),e.shiftCoords(this.m_center.x,this.m_center.y),this.applyTransformation(e)}else{let e=new bt;this.canonicToWorldTransformation(e);let n=e.clone();n.invertPreciseThis(),n.scale(t,t),n.multiply(e),this.applyTransformation(n)}}constructEnclosingCircle(e,t,n=!1){return Yl(this,e,t,n),this}constructThreePointCircle(e,t,n,r=!1){if(!e.equals(t)&&!t.equals(n)&&!e.equals(n)){let i=L.calculateCircleCenterFromThreePoints(e,t,n);if(!i.isFinite()||!Number.isFinite(L.distance(e,i))){let r=L.distance(e,t),i=L.distance(e,n);this.constructLineCircularArc(e,r>=i?t:n)}return this.constructCircleCenterAndPoint(i,e,r)}{let i=e.clone(),a=t.clone(),o=n.clone();return i.equals(a)&&a.assign(o),this.constructTwoPointCircle(i,a,r)}}constructCircularArcThreePoint(e,t,n){let r=new H(e.x),i=new H(t.x),a=new H(n.x),o=new H(e.y),s=new H(t.y),c=new H(n.y),l=new H(.5),u=i.subE(r),d=s.subE(o),f=a.subE(r),p=c.subE(o),m=u.mulE(p).subThisE(d.mulE(f));if(m.scaleError(10),m.isZero()){if(!u.isZero()||!d.isZero())return Ol(this,e,t,0),this;{let r=e.clone().addThis(t).mulThis(.5).addThis(n).mulThis(.5),i=n.sub(r).length();this.constructEllipticArcEndPointsCenter(e,t,i,1,0,!0,!1,r),this.m_interior.assign(n)}return this.setProjectionBehavior(0),this}let h=u.sqr().addThisE(d.sqr()).mulThisE(l),g=f.sqr().addThisE(p.sqr()).mulThisE(l),_=h.mulE(p).subThisE(g.mulE(d)),v=u.mulE(g).subThisE(f.mulE(h));_.divThisE(m),v.divThisE(m);let y=_.sqr().addThisE(v.sqr());y.sqrtThis();let b=_.addE(r),x=v.addE(o),S=e.x-b.value(),C=e.y-x.value(),w=Math.atan2(C,S);S=t.x-b.value(),C=t.y-x.value();let T=Math.atan2(C,S);S=n.x-b.value(),C=n.y-x.value();let E=Math.atan2(C,S),D=E-2*G();for(;D<w;)D+=2*G();let O=T-2*G();for(;O<D;)O+=2*G();let k=E+2*G();for(;k>w;)k-=2*G();let ee=T+2*G();for(;ee>k;)ee-=2*G();let A;A=O-w<w-ee?O-w:ee-w;let j=new L(b.value(),x.value());return this.constructEllipticArcEndPointsCenter(e,t,y.value(),1,0,Math.abs(A)>G(),A>0,j),this.m_interior.assign(n),this.setProjectionBehavior(0),this.afterCompletedModification(),this}constructCircularArc(e,t,n,r){return this.constructEllipticArcGeneral(e,1,t,n,r,0),this.setProjectionBehavior(0),this.afterCompletedModification(),this}constructEllipticArcEndPoints(e,t,n,r,i,a,o){return Dl(this,e,t,n,r,i,a,o)}constructEllipticArcEndPointsCenter(e,t,n,r,i,a,o,s){return Dl(this,e,t,n,r,i,a,o,s)}constructEllipticArcGeneral(e,t,n,r,i,a){this.m_semiMajorAxis=Math.abs(e),this.m_minorMajorRatio=Math.abs(t),this.m_minorMajorRatio>1&&(this.m_semiMajorAxis*=this.m_minorMajorRatio,this.m_minorMajorRatio=1/this.m_minorMajorRatio);let o=Ic(a),s=Math.cos(o),c=Math.sin(o),l=new L(this.m_semiMajorAxis,this.m_minorMajorRatio*this.m_semiMajorAxis),u=L.getNAN(),d=Ic(r);u.x=l.x*Math.cos(d),u.y=l.y*Math.sin(d),u.rotateDirect(s,c),u.addThis(n);let f=Qe(i,$e()),p=f;Math.abs(p)===$e()&&(p=0);let m=L.getNAN();return m.x=l.x*Math.cos(d+p),m.y=l.y*Math.sin(d+p),m.rotateDirect(s,c),m.addThis(n),this.constructEllipticArcEndPointsCenter(u,m,this.m_semiMajorAxis,this.m_minorMajorRatio,o,Math.abs(f)>G(),f>0,n)}constructEllipticArcAsNURB(e,n,r,i){return(i>=1||i<0)&&t(`construct_elliptic_arc_as_NURB: weight`),n.isFinite()||t(`construct_elliptic_arc_as_NURB: control_point`),Kl([e,n,r],i*i,null,!1,this),this}constructCanonic(e){return this.assignCopy(e),e.isDegenerateToLine()||e.m_center.isEqual(0,0)&&this.m_rotation===0?this:(this.m_XStart=e.getSemiMajorAxis()*Math.cos(e.m_startAngle),this.m_YStart=e.getSemiMinorAxis()*Math.sin(e.m_startAngle),this.m_XEnd=e.getSemiMajorAxis()*Math.cos(e.getEndAngle()),this.m_YEnd=e.getSemiMinorAxis()*Math.sin(e.getEndAngle()),this.m_center.setCoords(0,0),this.m_rotation=0,this.m_cosr=1,this.m_sinr=0,Zl(this),this.afterCompletedModification(),e!==this&&un(this,e),this)}isCircular(){return this.m_minorMajorRatio===1&&this.m_rotation===0&&!this.isDegenerateToLine()}isDegenerateToLineHelper(e){if(this.isLine())return!0;if(this.isMajor())return!1;let t=this.getEndXY().sub(this.getStartXY()).length();return!(this.calculateLength2D()-t>e)}isDegenerateToLine(){return Z(this)}getCenter(){return this.m_center.clone()}setCenter(e){if(!this.m_center.isNAN()){let t=e.sub(this.m_center);this.m_XStart+=t.x,this.m_YStart+=t.y,this.m_XEnd+=t.x,this.m_YEnd+=t.y,this.m_interior.addThis(t),this.m_center.assign(e),this.endPointModified(),this.normalizeAfterEndpointChange()}}getAxisXRotation(){return this.m_rotation}getSemiAxes(){return L.construct(this.m_semiMajorAxis,this.m_semiMajorAxis*this.m_minorMajorRatio)}getSemiMajorAxis(){return this.m_semiMajorAxis}getSemiMinorAxis(){return this.m_semiMajorAxis*this.m_minorMajorRatio}getMinorMajorRatio(){return this.m_minorMajorRatio}isClockwise(){return!Rl(this)}isMajor(){return Bl(this)}getSweepAngle(){return this.m_sweepAngle}getStartAngle(){return this.m_startAngle}getEndAngle(){return this.m_startAngle+this.m_sweepAngle}getGeometryType(){return i.enumEllipticArc}queryEnvelope(e){if(e.m_EnvelopeType===4){e.setEmpty(),e.assignVertexDescription(this.m_description);let t=K.constructEmpty();this.queryEnvelope(t),e.setEnvelope(t);for(let t=1,n=this.m_description.getAttributeCount();t<n;t++){let n=this.m_description.getSemantics(t);for(let r=Rc.getComponentCount(n);t<r;t++){let t=this.queryInterval(n,0);e.setIntervalEnvelope(n,0,t)}}}else e.m_EnvelopeType===2?nu(this,F.unit(),e):s(`3d not impl`)}applyTransformation(e){Ml(this,e,!1,null,null)}createInstance(){return new zc}calculateLength2D(){return xl(this,0,1)}queryControlPointsHelper(e){c(``)}queryCoord2D(e,t){if(Z(this)){wn(e,this.getStartXY(),this.getEndXY(),t);return}if(e===0)t.assign(L.construct(this.m_XStart,this.m_YStart));else if(e===1)t.assign(L.construct(this.m_XEnd,this.m_YEnd));else{let n=_l(this,e),r=new L(this.m_semiMajorAxis*Math.cos(n),this.getSemiMinorAxis()*Math.sin(n));r.rotateDirect(this.m_cosr,this.m_sinr),r.addThis(this.m_center),t.assign(r)}}queryCoord2DE(e,t){cl(this,e,t)}queryCoord2DMP(e,t){s(``)}getCoordX(e){let t=new L;return this.queryCoord2D(e,t),t.x}getCoordY(e){let t=new L;return this.queryCoord2D(e,t),t.y}cut(e,t,n){let r=new $;return this.queryCut(e,t,r,n),r.releaseSegment()}queryCut(e,t,n,r){let i=n.createEllipticArc();r&&i.dropAllAttributes();let a=e===0&&t===1;if(a&&!r){this.copyTo(i);return}let o=L.getNAN();this.queryCoord2D(e,o);let s=L.getNAN();if(this.queryCoord2D(t,s),!a){if(o.equals(s))t-e>.5&&this.isMajor()&&this.isClosed()?(a=!0,e=0,t=1):t===1?e=t:t=e;else if(e>0&&o.isEqual(this.m_XStart,this.m_YStart)&&(e=0),t<1&&s.isEqual(this.m_XEnd,this.m_YEnd)&&(t=1),a=e===0&&t===1,a&&!r){this.copyTo(i);return}}if(i.m_center.assign(this.m_center),i.m_semiMajorAxis=this.m_semiMajorAxis,i.m_minorMajorRatio=this.m_minorMajorRatio,i.m_interior.assign(this.m_interior),i.m_rotation=this.m_rotation,i.m_cosr=this.m_cosr,i.m_sinr=this.m_sinr,i.m_sweepAngle=this.m_sweepAngle,i.m_startAngle=this.m_startAngle,i.m_bits=this.m_bits,Qt(i,o.x,o.y),en(i,s.x,s.y),a){Pl(i,Sl(this));return}i.m_startAngle=_l(this,e),i.m_sweepAngle=_l(this,t)-i.m_startAngle,i.m_startAngle=fl(i.m_startAngle),zl(i,Math.abs(i.m_sweepAngle)>G()),r&&i.assignVertexDescription(this.m_description),Zl(i),hl(i);let c=this.m_description.getAttributeCount();if(c>1&&!r){for(let t=1;t<c;t++){let n=this.m_description.getSemantics(t),r=Rc.getComponentCount(n);for(let t=0;t<r;t++){let r=this.getAttributeAsDbl(e,n,t);i.setStartAttribute(n,t,r)}}for(let e=1;e<c;e++){let n=this.m_description.getSemantics(e),r=Rc.getComponentCount(n);for(let e=0;e<r;e++){let r=this.getAttributeAsDbl(t,n,e);i.setEndAttribute(n,e,r)}}}i.afterCompletedModification()}queryDerivative(e,t){ou(this,e,t)}cutArcIgnoreAttributes(e,t,n){let r=e===0&&t===1,i=new L;this.queryCoord2D(e,i);let a=new L;if(this.queryCoord2D(t,a),r||(i.equals(a)?t-e>.5&&this.isMajor()&&this.isClosed()?(r=!0,e=0,t=1):t===1?e=t:t=e:(e>0&&i.isEqual(this.m_XStart,this.m_YStart)&&(e=0),t<1&&a.isEqual(this.m_XEnd,this.m_YEnd)&&(t=1),r=e===0&&t===1)),n.m_center.assign(this.m_center),n.m_semiMajorAxis=this.m_semiMajorAxis,n.m_minorMajorRatio=this.m_minorMajorRatio,n.m_interior.assign(this.m_interior),n.m_rotation=this.m_rotation,n.m_cosr=this.m_cosr,n.m_sinr=this.m_sinr,n.m_sweepAngle=this.m_sweepAngle,n.m_startAngle=this.m_startAngle,n.m_bits=this.m_bits,Qt(n,i.x,i.y),en(n,a.x,a.y),r){Pl(n,Sl(this));return}n.m_startAngle=_l(this,e),n.m_sweepAngle=_l(this,t)-n.m_startAngle,n.m_startAngle=fl(n.m_startAngle),zl(n,Math.abs(n.m_sweepAngle)>Math.PI),Zl(n),n.afterCompletedModification()}changeEndPoints2D(e,t){wl(this,e,t,!1)}getAttributeAsDbl(e,t,n){if(t===0)return n===0?this.getCoordX(e):this.getCoordY(e);if(e===0)return this.getStartAttributeAsDbl(t,n);if(e===1)return this.getEndAttributeAsDbl(t,n);let r=this.calculateLength2D(),i=r>0?this.tToLength(e)/r:0,a=Rc.getInterpolation(t),o=this.getStartAttributeAsDbl(t,n),s=this.getEndAttributeAsDbl(t,n);return ke(a,o,s,i,Rc.getDefaultValue(t))}getClosestCoordinate(e,t){return ru(this,e,F.unit(),t)}getClosestCoordinateOnInterval(e,t,n=-1){return ru(this,e,t,!1)}getYMonotonicParts(e,r=!1){e.length<2&&t(``);let i=this.getSemiAxes(),a=Math.atan2(i.y*this.m_cosr,i.x*this.m_sinr),o=a+G(),s=I(3,NaN),c=0;if(s[0]=gl(this,a),s[0]>0&&s[0]<1&&c++,s[1]=gl(this,o),s[1]>0&&s[1]<1&&(s[c]=s[1],c++),c===0)return 0;s[c]=1,c++,n(e.length>=c);let l=0;for(let t=0;t<c;t++){let n=s[t];this.queryCut(l,n,e[t],r),l=n}return c}getMonotonicParts(e,r){if(e.length<4&&t(``),this.isDegenerateToLine())return e[0].createEllipticArc().assignCopy(this),r&&e[0].get().dropAllAttributes(),1;let i=this.getSemiAxes(),a=I(4,NaN);a[0]=Math.atan2(i.y*this.m_cosr,i.x*this.m_sinr),a[1]=a[0]+G(),a[2]=Math.atan2(-i.y*this.m_sinr,i.x*this.m_cosr),a[3]=a[2]+G();let o=I(5,NaN),s=0;for(let e=0;e<4;e++)o[s]=gl(this,a[e]),o[s]>0&&o[s]<1&&s++;if(s===0)return 0;Fe(o,s),o[s-1]<1&&(o[s]=1,s++),n(e.length>=s);let c=0;for(let t=0;t<s;t++){let n=o[t];this.queryCut(c,n,e[t],r),c=n}return s}intersectionWithAxis2D(e,t,n,r){if(Z(this))return new Q({start:this.getStartXY(),end:this.getEndXY()}).intersectionWithAxis2D(e,t,n,r);let i,a,o=new H(t),s=this.getSemiAxes();if(e){if(t>this.m_center.y+s.x||t<this.m_center.y-s.x)return 0;i=new H(s.x).mulThis(this.m_sinr),a=new H(s.y).mulThis(this.m_cosr),o.subThis(this.m_center.y)}else{if(t>this.m_center.x+s.x||t<this.m_center.x-s.x)return 0;i=new H(s.x).mulThis(this.m_cosr),a=new H(s.y).mulThis(-this.m_sinr),o.subThis(this.m_center.x)}let c=i.sqr(),l=a.sqr(),u=c.addE(l),d=a.mulE(o).mulThis(-2),f=o.sqr().subThisE(c),p=d.sqr().subThisE(u.mulE(f).mulThis(4)),m=i.mulE(o).mulThis(-2),h=o.sqr().subThisE(l),g=m.sqr().subThisE(u.mulE(h).mulThis(4)),_=p.eps()*Math.abs(g.value())<=g.eps()*Math.abs(p.value());_?i.isZero()&&(_=!1):a.isZero()&&(_=!0),_||(d.setE(m),f.setE(h));let v=U(H,2),y=yr(u,d,f,F.construct(-1,1),!1,v);if(y===0)return 0;let b=[0,0],x=0;for(let e=0;e<y;e++){let t=new H,n=new H;_?(t.setE(v[e]),n.setE(o.subE(a.mulE(v[e])).divThisE(i))):(n.setE(v[e]),t.setE(o.subE(i.mulE(v[e])).divThisE(a)));let r=Math.atan2(t.value(),n.value()),s=gl(this,r);s>=0&&s<=1&&(b[x]=s,x++)}return y=x,y===0?0:(y===2&&b[0]>b[1]&&(b[1]=R(b[0],b[0]=b[1])),r&&me(r,b,0,0,y),n&&(n[0]=e?this.getCoordX(b[0]):this.getCoordY(b[0]),y>1&&(n[1]=e?this.getCoordX(b[1]):this.getCoordY(b[1]),!r&&n[0]>n[1]&&(n[1]=R(n[0],n[0]=n[1])))),y)}intersectionOfYMonotonicWithAxisX(e,t){if(this.m_YStart===this.m_YEnd)return e===this.m_YStart?t:NaN;if(e===this.m_YStart)return this.m_XStart;if(e===this.m_YEnd)return this.m_XEnd;let n=[0,0];return this.intersectionWithAxis2D(!0,e,n,null)===-1?t:n[0]}isCurve(){return!0}isDegenerate(e){return Kt(this,e)}isDegenerate3D(e,t){return n(0),!1}queryLooseEnvelope(e){if(e.m_EnvelopeType===3){s(`3d not impl`);return}this.queryLooseEnvelopeOnInterval(new F(0,1),e)}clone(e){let t=new zc;return this.copyTo(t),t}queryInterval(e,t){if(e===0){if(Z(this))return t===0?F.construct(this.getStartX(),this.getEndX()):F.construct(this.getStartY(),this.getEndY());let e,n=this.getSemiAxes();e=t===0?Math.atan2(-n.y*this.m_sinr,n.x*this.m_cosr):Math.atan2(n.y*this.m_cosr,n.x*this.m_sinr);let r=e+Math.PI,i=[0,0];i[0]=gl(this,e),i[1]=gl(this,r);let a=t===0?F.construct(this.getStartX(),this.getEndX()):F.construct(this.getStartY(),this.getEndY()),o=new L;for(let e=0;e<2;e++){let n=i[e];n>0&&n<1&&(this.queryCoord2D(n,o),a.mergeNeCoordinate(t===0?o.x:o.y))}return a}return super.queryInterval(e,t)}queryLooseEnvelopeOnInterval(e,t){let n=new F(0,1);if(n.intersect(e),n.isEmpty()){t.setEmpty();return}if(Z(this)){t.setCoords(this.getCoord2D(n.vmin)),t.mergeNe(this.getCoord2D(n.vmax));return}let r=this.getCoord2D(n.vmin),i=this.getCoord2D(n.vmax);if(this.m_minorMajorRatio===1&&Math.abs(this.m_sweepAngle)*n.width()<=Le){let e=L.lerp(r,i,.5),n=e.sub(this.m_center);n.normalize(),e=e.add(n.mul(L.distance(r,i)*.5)),t.setCoords(r),t.mergeNe(i),t.mergeNe(e);return}nu(this,n,t)}tToLength(e){return Z(this)?e*L.distance(this.getStartXY(),this.getEndXY()):this.m_minorMajorRatio===1?Math.abs(this.getSweepAngle()*e)*this.m_semiMajorAxis:kl(this,e)}parametricAngleToT(e){return gl(this,e)}tToParametricAngle(e){return _l(this,e)}lengthToT(e){if(Z(this)){let t=L.distance(this.getStartXY(),this.getEndXY());return t===0?0:e/t}if(this.m_minorMajorRatio===1){let t=Math.abs(this.getSweepAngle())*this.m_semiMajorAxis;return t===0?0:e/t}return Al(this,e)}calculateWeightedAreaCentroid2D(e){if(Z(this)){let e=new L;return e.setCoords(0,0),e}let t=Xl(this),n=this.getStartXY().sub(this.m_center),r=this.getEndXY().sub(this.m_center),i=this.m_semiMajorAxis,a=this.getSemiMinorAxis(),o=this.m_startAngle+this.m_sweepAngle,s=new L;s.x=i*a*(i*this.m_cosr*(-Math.sin(o)+Math.sin(this.m_startAngle))+a*(-Math.cos(o)+Math.cos(this.m_startAngle))*this.m_sinr)/3,s.y=i*a*(a*(Math.cos(o)-Math.cos(this.m_startAngle))*this.m_cosr+i*(-Math.sin(o)+Math.sin(this.m_startAngle))*this.m_sinr)/3;let c=r.add(n).mul(r.crossProduct(n)/6);return s.x-=c.x,s.y-=c.y,s.add(this.m_center.sub(e).mul(t))}calculateWeightedCentroid2D(){let e=new L;if(this.isDegenerate(0))return e.setCoords(0,0),e;if(Z(this))return e.assign(this.getCoord2D(.5).mul(this.calculateLength2D())),e;let t=this.m_startAngle,n=this.m_startAngle+this.m_sweepAngle;if(n<t){let e=t;t=n,n=e}let r=Math.sin(t),i=Math.sin(n),a=Math.cos(t),o=Math.cos(n);if(this.m_minorMajorRatio===1){let t=this.getSemiMajorAxis(),n=t*t,s=n*(i-r),c=n*(a-o);e.setCoords(s,c)}else{let t=this.getSemiMajorAxis(),n=this.getSemiMinorAxis(),s=t*t,c=n*n,l=t*n,u=s-c,d=u/c,f=u/s,p=Math.sqrt(d),m=Math.sqrt(f),h=.5*l*(Math.asinh(p*i)/p+i*Math.sqrt(1+d*i*i))-.5*l*(Math.asinh(p*r)/p+r*Math.sqrt(1+d*r*r)),g=-.5*l*(Math.asin(m*o)/m+o*Math.sqrt(1-f*o*o))- -.5*l*(Math.asin(m*a)/m+a*Math.sqrt(1-f*a*a));e.setCoords(h,g)}return e.rotateDirect(this.m_cosr,this.m_sinr),e.assign(e.add(this.m_center.mul(this.calculateLength2D()))),e}isIntersectingPoint(e,t,n){if(n&&(e.isEqualPoint2D(this.getStartXY())||e.isEqualPoint2D(this.getEndXY())))return!1;if(!Z(this)){let n=L.distance(e,this.m_center),r=this.getSemiAxes();if(n<r.x-t||n>r.y+t)return!1}let r=this.getClosestCoordinate(e,!1),i=new L;return this.queryCoord2D(r,i),L.distance(i,e)<=t}isIntersectingPoint3D(e,t,r,i,a=1){return n(0),!1}getTangent(e){if(Z(this))return this.getEndXY().sub(this.getStartXY());{let t=_l(this,e),n=new L;return n.setCoords(-this.m_semiMajorAxis*Math.sin(t),this.getSemiMinorAxis()*Math.cos(t)),this.m_rotation&&n.rotateDirect(this.m_cosr,this.m_sinr),n.scale(this.getSweepAngle()),n}}getDerivative(e){if(Z(this))return this.getEndXY().sub(this.getStartXY());{let t=_l(this,e),n=new L;return n.setCoords(-this.m_semiMajorAxis*Math.sin(t),this.getSemiMinorAxis()*Math.cos(t)),this.m_rotation&&n.rotateDirect(this.m_cosr,this.m_sinr),n.scale(this.getSweepAngle()),n}}normalizeAfterEndpointChange(){return Hl(this)?Z(this)?(Ul(this),!1):Wl(this,!1):!1}projectionBehavior(){return(this.m_bits&4)>>2}setProjectionBehavior(e){this.m_bits=this.m_bits&-5|e<<2}convertToCanonic(e){let t=new L(e.x,e.y);return t.subThis(this.m_center),t.rotateReverse(this.m_cosr,this.m_sinr),t}convertFromCanonic(e){let t=new L(e.x,e.y);return t.rotateDirect(this.m_cosr,this.m_sinr),t.addThis(this.m_center),t}canonicToWorldTransformation(e){e.setRotate(this.m_cosr,this.m_sinr),e.shiftCoords(this.m_center.x,this.m_center.y)}getCurvature(e){let t=_l(this,e),n=new L,r=this.getSemiMinorAxis();n.setCoords(-this.m_semiMajorAxis*Math.sin(t),r*Math.cos(t));let i=new L;i.setCoords(-this.m_semiMajorAxis*Math.cos(t),-r*Math.sin(t)),this.m_rotation&&(n.rotateDirect(this.m_cosr,this.m_sinr),i.rotateDirect(this.m_cosr,this.m_sinr));let a=n.sqrLength();if(a===0)return NaN;let o=Math.sqrt(a);return n.divThis(o),n.crossProduct(i)/a}getMonotonicPartParams(e,n){let r=I(6,NaN);r[0]=0;let i=1;if(this.isDegenerateToLine())r[1]=1,i=2;else{let e=this.getSemiAxes(),t=I(4,NaN);this.m_rotation?(t[0]=Math.atan2(e.y*this.m_cosr,e.x*this.m_sinr),t[1]=t[0]+Math.PI,t[2]=Math.atan2(-e.y*this.m_sinr,e.x*this.m_cosr),t[3]=t[2]+Math.PI):(t[0]=0,t[1]=Math.PI,t[2]=Math.PI*.5,t[3]=Re());for(let e=0;e<4;e++){let n=gl(this,t[e]);n>0&&n<1&&(r[i]=n,i++)}i>2&&Fe(r,i),r[i]=1,i++}if(n){e<i&&t(``);for(let e=0;e<i;e++)n[e]=r[e]}return i}calculateLowerLength2D(){let e=L.distance(this.getStartXY(),this.getEndXY());if(this.isDegenerateToLine())return e;let t=Math.abs(this.m_sweepAngle)*this.getSemiMinorAxis();return Math.max(t,e)}calculateUpperLength2D(){let e=L.distance(this.getStartXY(),this.getEndXY());if(this.isDegenerateToLine())return e;let t=Math.abs(this.m_sweepAngle)*this.getSemiMajorAxis();return Math.max(t,e)}orientBottomUp(){if(this.m_YEnd<this.m_YStart||this.m_YEnd===this.m_YStart&&this.m_XEnd<this.m_XStart){this.m_XEnd=R(this.m_XStart,this.m_XStart=this.m_XEnd),this.m_YEnd=R(this.m_YStart,this.m_YStart=this.m_YEnd);for(let e=0,t=this.m_description.getTotalComponentCount()-2;e<t;e++)this.m_attributes[e+t]=R(this.m_attributes[e],this.m_attributes[e]=this.m_attributes[e+t]);this.m_startAngle+=this.m_sweepAngle,this.m_sweepAngle=-this.m_sweepAngle}}isLine(){return Z(this)}copyIgnoreAttributes(e){e.m_XStart=this.m_XStart,e.m_YStart=this.m_YStart,e.m_XEnd=this.m_XEnd,e.m_YEnd=this.m_YEnd,e.m_center.assign(this.m_center),e.m_semiMajorAxis=this.m_semiMajorAxis,e.m_minorMajorRatio=this.m_minorMajorRatio,e.m_interior.assign(this.m_interior),e.m_rotation=this.m_rotation,e.m_cosr=this.m_cosr,e.m_sinr=this.m_sinr,e.m_sweepAngle=this.m_sweepAngle,e.m_startAngle=this.m_startAngle,e.m_bits=this.m_bits,Fl(e)}calculateArea2DHelper(){return Xl(this)}absNorm(){let e=this.getStartXY().norm(1)+this.getEndXY().norm(1);return this.isDegenerateToLine()||(e+=this.m_center.norm(1),e+=this.m_semiMajorAxis),e}queryEnvelopeW(e,t){if(t.setCoords(this.getCoord2D(e.vmin)),t.mergeNe(this.getCoord2D(e.vmax)),Z(this))return;let n=this.getSemiAxes(),r=I(8,NaN);{let e=Math.atan2(-n.y*this.m_sinr,n.x*this.m_cosr),t=e+Math.PI,i=Math.atan2(n.y*this.m_cosr,n.x*this.m_sinr),a=i+Math.PI;r[0]=gl(this,e),r[1]=gl(this,t),r[2]=gl(this,i),r[3]=gl(this,a)}{let e=this.m_cosr+this.m_sinr,t=this.m_cosr-this.m_sinr,i=Math.atan2(-n.y*e,n.x*t),a=i+Math.PI,o=Math.atan2(n.y*t,n.x*e),s=o+Math.PI;r[4]=gl(this,i),r[5]=gl(this,a),r[6]=gl(this,o),r[7]=gl(this,s)}let i=L.getNAN();for(let n=0;n<8;n++){let a=r[n];e.containsExclusiveCoordinate(a)&&(this.queryCoord2D(a,i),t.mergeNe(i))}}setSegmentFromCoordsForStitcher(e,t){Tl(this,e,t)}writeInBufferStream(e,t){let n=new Float64Array(10);return n[0]=this.m_bits,n[1]=this.m_semiMajorAxis,n[2]=this.m_minorMajorRatio,n[3]=this.m_rotation,n[4]=this.m_center.x,n[5]=this.m_center.y,n[6]=this.m_sweepAngle,n[7]=this.m_startAngle,n[8]=this.m_interior.x,n[9]=this.m_interior.y,e.writeRangeFromArray(t,n.length,n,!0,1),t+n.length}readFromBufferStream(e,t){let n=new Float64Array(10);e.queryRange(t,n.length,n,!0,1),this.m_bits=n[0],this.m_semiMajorAxis=n[1],this.m_minorMajorRatio=n[2],this.m_rotation=n[3],this.m_center.x=n[4],this.m_center.y=n[5],this.m_sweepAngle=n[6],this.m_startAngle=n[7],this.m_interior.x=n[8],this.m_interior.y=n[9],this.m_cosr=Math.cos(this.m_rotation),this.m_sinr=Math.sin(this.m_rotation),this.m_cachedValues=null}snapControlPoints(e){return!1}needsSnapControlPoints(e){return!1}calculateSpecialPointsForCracking(e,t){return c(`should not1; be called`),0}ensureXYMonotone(){if(Z(this))return!1;if(this.getStartXY().equals(this.getEndXY()))return Ol(this,this.getStartXY(),this.getEndXY(),this.projectionBehavior()),!0;let e=U(L,3),t=Gl(this,e);if(Qs(e)){let n=!1;if(this.projectionBehavior()===0){let r=new K;r.setCoords({pt:e[0]}),r.mergeNe(e[2]);let i=new L;i.setSub(e[2],e[0]),i.leftPerpendicularThis(),i.normalize(),i.scale(L.distance(e[2],e[0]));let a=L.lerp(e[2],e[0],.5),o=a.sub(i),s=a.add(i);r.clipLine(o,s);let c=L.getClosestCoordinate(o,s,e[1],!1);e[1]=L.lerp(o,s,c);let l=e[2].sub(e[1]),u=e[0].sub(e[1]),d=l.crossProduct(u),f=l.dotProduct(u);t=Ve()-Math.abs(.5*Math.atan2(d,f)),n=!0}return Kl(e,t*t,null,n,this),!0}return!1}setCoordsForIntersector(e,t,n){wl(this,e,t,n)}getInteriorPoint(){return this.m_interior.clone()}copyToImpl(e){let t=e;t.m_center.assign(this.m_center),t.m_semiMajorAxis=this.m_semiMajorAxis,t.m_minorMajorRatio=this.m_minorMajorRatio,t.m_interior.assign(this.m_interior),t.m_rotation=this.m_rotation,t.m_cosr=this.m_cosr,t.m_sinr=this.m_sinr,t.m_sweepAngle=this.m_sweepAngle,t.m_startAngle=this.m_startAngle,t.m_bits=this.m_bits,Pl(t,Sl(this))}reverseImpl(){Ll(this,!Rl(this)),hl(this),(this.projectionBehavior()!==0||this.getStartXY().equals(this.getEndXY()))&&Zl(this)}equalsImpl(e){let t=e;if(this.m_bits!==t.m_bits||this.m_semiMajorAxis!==t.m_semiMajorAxis||this.m_minorMajorRatio!==t.m_minorMajorRatio||!this.m_center.isEqualPoint2D(t.m_center)&&(!this.m_center.isNAN()||!t.m_center.isNAN())||this.m_rotation!==t.m_rotation||!this.m_interior.equals(t.m_interior))return!1;let n=t.m_sweepAngle;if(this.m_sweepAngle!==n)return!1;let r=t.m_startAngle;return this.m_startAngle===r}equalsImplTol(e,t){let n=e;if(this.m_bits!==n.m_bits)return!1;if(this.m_center.isNAN()&&n.m_center.isNAN())return!0;if(this.m_center.isNAN()!==n.m_center.isNAN()||!this.getSemiAxes().isEqualPoint2D(n.getSemiAxes(),t)||!this.m_center.isEqualPoint2D(n.m_center,t))return!1;let r=Math.abs(Nc(Mc(Pc(this.m_rotation-n.m_rotation)))),i=Math.abs(G()-r),a=Math.min(r,i);if(this.m_semiMajorAxis*Math.abs(a)>t)return!1;let o=this.getCoord2D(.5),s=n.getCoord2D(.5);return!!o.isEqualPoint2D(s,t)}swapImpl(e){let t=e;this.m_center=R(t.m_center,t.m_center=this.m_center),this.m_semiMajorAxis=R(t.m_semiMajorAxis,t.m_semiMajorAxis=this.m_semiMajorAxis),this.m_minorMajorRatio=R(t.m_minorMajorRatio,t.m_minorMajorRatio=this.m_minorMajorRatio),this.m_interior=R(t.m_interior,t.m_interior=this.m_interior),this.m_rotation=R(t.m_rotation,t.m_rotation=this.m_rotation),this.m_cosr=R(t.m_cosr,t.m_cosr=this.m_cosr),this.m_sinr=R(t.m_sinr,t.m_sinr=this.m_sinr),this.m_sweepAngle=R(t.m_sweepAngle,t.m_sweepAngle=this.m_sweepAngle),this.m_startAngle=R(t.m_startAngle,t.m_startAngle=this.m_startAngle),this.m_bits=R(t.m_bits,t.m_bits=this.m_bits),Il(this,t)}afterCompletedModification(){Ul(this),Fl(this)}intersect(e,t,n,r,i){return pu(!1,this,e,t,n,r,i)}intersectPoint(e,t,n){if(t.length<2&&r(``),Z(this))return new Q({start:this.getStartXY(),end:this.getEndXY()}).intersectPoint(e,t,n);{let t=L.distance(e,this.m_center);if(t>this.m_semiMajorAxis+n||t<this.getSemiMinorAxis()-n)return 0}let i=this.getClosestCoordinate(e,!1),a=L.getNAN();return this.queryCoord2D(i,a),L.distance(a,e)<=n?W(i,0,1)&&(this.queryCoord2D(+(i===0),a),L.distance(a,e)<=n)?(t&&(t[0]=0,t[1]=1),2):(t&&(t[0]=i),1):0}isIntersecting(e,t,n){return lu(!1,this,e,t,n)!==0}endPointModified(){this.m_bits|=8,Fl(this)}clearEndPointModified(){Ul(this)}}function Bc(e,t,n){e.isEmpty()&&o(``),_(e);let r=e.getImpl(),i=[];return Uc(r.getPointCount(),i),Wc(Hc(r),i,r.getPointCount(),t)}function Vc(e,t,n,r){let i=[];return Uc(t,i),Wc(e,i,t,n)}function Hc(e){return{at(t){return e.getXY(t)}}}function Uc(e,t){t.length=e;for(let e=0;e<t.length;++e)t[e]=e;e>3&&Tt(e,t)}function Wc(e,t,n,r,i){let a=0,o=[0,0,0],s=0,c=0;for(let i=0;i<3;++i){let l=!1;for(;c<n;){let n=e.at(t[c]),u=1;if(a===3?u=L.inCircleRobust(e.at(r[0]),e.at(r[1]),e.at(r[2]),n):a===2?u=L.inCircleRobust3Point(e.at(r[0]),e.at(r[1]),n):a===1&&n.equals(e.at(r[0]))&&(u=0),u<=0){if(u<0&&i+1<3){t[s]=R(t[c],t[c]=t[s]);for(let e=0;e<a;e++)if(r[e]===t[c]){o[e]=c;break}s++}c++;continue}l=!0;let d=0;for(let e=0;e<a;e++)o[e]>c&&(r[d]=r[e],o[d]=o[e],d++);a=d,r[a]=t[c],o[a]=c,a++,a<3?c=s:(L.orientationRobust(e.at(r[0]),e.at(r[1]),e.at(r[2]))===1&&(r[2]=R(r[0],r[0]=r[2]),o[2]=R(o[0],o[0]=o[2])),c++)}if(!l)break;if(i+1<3){s=0;let n=!1;for(let e=0;e<a;e++)for(let t=e+1;t<a;t++)o[e]>o[t]&&(o[t]=R(o[e],o[e]=o[t]),r[t]=R(r[e],r[e]=r[t]),n=!0);for(let e=0;e<a;e++)t[o[e]]=R(t[e],t[e]=t[o[e]]),o[e]=e;n&&a===3&&L.orientationRobust(e.at(r[0]),e.at(r[1]),e.at(r[2]))===1&&(r[2]=R(r[0],r[0]=r[2]),o[2]=R(o[0],o[0]=o[2]))}c=a}return a}function Gc(e,t,n,r,i,a){return new Xc(0,0,0,null,!1,he()).densifyEx(e,t,n,r,!1,a)}function Kc(e,n,r,a){return Number.isFinite(n)||t(`replace_all_curves_with_beziers: maxDeviation`),el(i.enumBezier,e,n,r)}function qc(e,t,r,a,o,c,l,u){c&&(c.length=0),l&&(l.length=0);let d=e.getGeometryType();if(d===i.enumLine)return c&&(c.push(e.getStartXY()),c.push(L.getNAN()),c.push(L.getNAN()),c.push(e.getEndXY())),l&&(l.push(0),l.push(1)),1;if(d===i.enumBezier){if(!a)return c&&(c.push(e.getStartXY()),c.push(e.getControlPoint1()),c.push(e.getControlPoint2()),c.push(e.getEndXY())),l&&(l.push(0),l.push(1)),1;let t=I(9,NaN),n=e.getMonotonicPartParams(t.length,t);if(t.length=n,n=Zc(e,r,t),n===2&&o&&(t[1]=.5,t.push(1),n=3),l&&l.splice(0,0,...t.slice(0,n)),c){let r=new $;for(let i=1;i<n;i++){let n=t[i-1],a=t[i];e.queryCut(n,a,r,!0);let o=r.get();_o(o),i===1&&c.push(o.getStartXY()),c.push(o.getControlPoint1()),c.push(o.getControlPoint2()),c.push(o.getEndXY())}}return n-1}if(d===i.enumEllipticArc){let i=e;if(i.isDegenerateToLine()||i.isDegenerate(0))return c&&(c.push(e.getStartXY()),c.push(L.getNAN()),c.push(L.getNAN()),c.push(e.getEndXY())),l&&(l.push(0),l.push(1)),1;if(a&&(o||!i.isMonotoneQuickAndDirty())){let s=I(6,NaN),u=i.getMonotonicPartParams(s.length,s);s.length=u,u=Zc(e,r,s),u===2&&o&&(s[1]=.5,s.push(1),u=3);let d=0;if(u>2){let e=new $,o=l||[],f=0;for(let p=1;p<u;p++){let m=s[f],h=s[p];if(i.queryCut(m,h,e,!0),e.get().isDegenerate(0))continue;let g=o.length,_=tl(p===1,e.get(),t,r,a,c,l);n(_>0),d+=_;let v=p===u-1,y=s[f],b=e.get().getSweepAngle()/i.getSweepAngle();for(let e=g,t=o.length;e<t;e++)if(!v||e+1<t?o[e]=y+o[e]*b:o[e]=1,c){let t=e*3,n=i.getCoord2D(o[e]);c[t].setCoordsPoint2D(n),t>0&&vo(c.slice(t-3))}f=p}return d}}return tl(!0,i,t,r,a,c,l)}if(d===i.enumRationalBezier2){let n=e;if(a&&(o||!n.isMonotoneQuickAndDirty())){let i=I(6,NaN),a=n.getMonotonicPartParams(i.length,i);i.length=a,a=Zc(e,r,i),a===2&&o&&(i[1]=.5,i.push(1),a=3);let s=0;if(a>2){let e=new $,o=l||[];for(let u=1;u<a;u++){let d=i[u-1],f=i[u];n.queryCut(d,f,e,!0);let p=o.length;s+=rl(u===1,e.get(),t,r,!1,c,l);let m=u===a-1,h=i[u-1];for(let e=p,t=o.length;e<t;e++)if(!m||e+1<t?o[e]=h+o[e]:o[e]=1,c){let t=e*3,r=n.getCoord2D(o[e]);c[t].setCoordsPoint2D(r),t>0&&Ni(c.slice(t-3))}}return s}}return rl(!0,n,t,r,a,c,l)}if(d===i.enumBezier2){let n=e,i=U(L,3);n.queryControlPoints(i);let s=new ls;s.constructFromQuadratic(i);let u=qc(s,t,r,a,o,c,l);if(c!=null&&l!=null)for(let e=1,t=0;e<u;++e,t+=3){let r=new L;n.queryCoord2D(l[e],r);let i=c[t+3];r.equals(i)||(c[t+3].setCoordsPoint2D(r),a&&vo(c.slice(t,t+4)))}return u}s(``)}function Jc(e,t,n,r,a,o,c,l){o&&(o.length=0),c&&(c.length=0);let u=e.getGeometryType();if(u===i.enumLine)return o&&(o.push(e.getStartXY()),o.push(L.getNAN()),o.push(e.getEndXY())),c&&(c.push(0),c.push(1)),1;if(u===i.enumBezier2){let t=I(9,NaN),r=e.getMonotonicPartParams(t.length,t);if(t.length=r,r=Zc(e,n,t),c&&c.splice(0,0,...t.slice(0,r)),o){let n=new $;for(let i=1;i<r;i++){let r=t[i-1],a=t[i];e.queryCut(r,a,n,!0);let s=n.get();Mi(s),i===1&&o.push(s.getStartXY()),o.push(s.getControlPoint1()),o.push(s.getEndXY())}}return r-1}if(u===i.enumEllipticArc){let i=e;if(i.isDegenerateToLine()||i.isDegenerate(0))return o&&(o.push(e.getStartXY()),o.push(L.getNAN()),o.push(e.getEndXY())),c&&(c.push(0),c.push(1)),1;if(!i.isMonotoneQuickAndDirty()){let r=I(6,NaN),a=i.getMonotonicPartParams(r.length,r);r.length=a,a=Zc(e,n,r);let s=0;if(a>2){let e=new $,l=c||[];for(let u=1;u<a;u++){let d=r[u-1],f=r[u];i.queryCut(d,f,e,!0);let p=l.length,m=il(u===1,e.get(),t,n,!1,o,c);s+=m;let h=u===a-1,g=r[u-1],_=e.get().getSweepAngle()/i.getSweepAngle();for(let e=p,t=l.length;e<t;e++)if(!h||e+1<t?l[e]=g+l[e]*_:l[e]=1,o){let t=e*2,n=i.getCoord2D(l[e]);o[t].setCoordsPoint2D(n),t>0&&Ni(o.slice(t-2))}}return s}}return tl(!0,i,t,n,r,o,c)}if(u===i.enumBezier){let i=e;if(!i.isMonotoneQuickAndDirty()){let r=I(6,NaN),a=i.getMonotonicPartParams(r.length,r);r.length=a,a=Zc(e,n,r);let s=0;if(a>2){let e=new $,l=c||[];for(let u=1;u<a;u++){let d=r[u-1],f=r[u];i.queryCut(d,f,e,!0);let p=l.length;s+=al(u===1,e.get(),t,n,!1,o,c);let m=u===a-1,h=r[u-1];for(let e=p,t=l.length;e<t;e++)if(!m||e+1<t?l[e]=h+l[e]:l[e]=1,o){let t=e*2,n=i.getCoord2D(l[e]);o[t].setCoordsPoint2D(n),t>0&&Ni(o.slice(t-2))}}return s}}return al(!0,i,t,n,r,o,c)}if(u===i.enumRationalBezier2){let i=e;if(!i.isMonotoneQuickAndDirty()){let r=I(6,NaN),a=i.getMonotonicPartParams(r.length,r);r.length=a,a=Zc(e,n,r);let s=0;if(a>2){let e=new $,l=c||[];for(let u=1;u<a;u++){let d=r[u-1],f=r[u];i.queryCut(d,f,e,!0);let p=l.length;s+=nl(u===1,e.get(),t,n,!1,o,c);let m=u===a-1,h=r[u-1];for(let e=p,t=l.length;e<t;e++)if(!m||e+1<t?l[e]=h+l[e]:l[e]=1,o){let t=e*2,n=i.getCoord2D(l[e]);o[t].setCoordsPoint2D(n),t>0&&Ni(o.slice(t-2))}}return s}}return nl(!0,i,t,n,r,o,c)}s(``)}function Yc(e,t,r,a,o,s,c,l,u){let d=e.getGeometryType();if(s&&(s.length=0,c.length=0),l&&(l.length=0),d===i.enumEllipticArc){let t=e;if(t.isDegenerateToLine()||t.isDegenerate(0))return s&&(s.push(e.getStartXY()),s.push(L.getNAN()),s.push(e.getEndXY()),c.push(NaN),c.push(NaN),c.push(NaN)),l&&(l.push(0),l.push(1)),1}let f=I(9,NaN),p;if(o)p=e.getMonotonicPartParams(f.length,f),f.length=p,p=Zc(e,r,f);else{if(p=2,f[0]=0,f[1]=1,d===zc.type){let t=e.getSweepAngle();t>Math.PI*.9&&(Math.min(3,Math.trunc(t/(Math.PI*2/3)+.5))>2?(f[0]=0,f[1]=1/3,f[2]=2/3,f[3]=1,p=4):(f[0]=0,f[1]=.5,f[2]=1,p=3))}else n(d===jr.type);f.length=p}if(p===2&&a&&(f[1]=.5,f.push(1),p=3),s){let t=new $,n=1;for(;n<p;){let r=f[n-1],a=f[n];e.queryCut(r,a,t,!0);let l=U(L,3),u=[1,1,1];if(d===i.enumEllipticArc){let e=t.get();if(Math.abs(e.getSweepAngle())>Math.PI*.9){let e=(a-r)/3;f.splice(n,0,r+e),f.splice(n+1,0,r+2*e),p+=2;continue}u[1]=Gl(e,l)}else{let e=t.get();e.queryControlPoints(l),e.queryWeights(u)}o&&Qs(l),n===1&&(s.push(l[0].clone()),c.push(u[0])),s.push(l[1].clone()),s.push(l[2].clone()),c.push(u[1]),c.push(u[2]),n++}}return l&&(l.length=p,me(l,f,0,0,p)),p-1}class Xc{m_maxLength;m_maxDeviation;m_maxAngle;m_cosMaxAngle;m_minStep;m_maxSegmentsPerCurve;m_segmentBuffer=null;m_dummyPoint=new P;m_progressTracker;m_progressCounter=0;m_bSetDensifyFlag;m_bOnlyCurveDensify;static constructDefault(e){return new Xc(0,0,0,e,!1,he())}constructor(e,t,n,r,i,a){this.m_progressTracker=r,this.m_bSetDensifyFlag=i,this.m_maxLength=e,this.m_maxDeviation=t,this.m_maxAngle=n>Ve()?Ve():n,this.m_cosMaxAngle=Math.cos(this.m_maxAngle),this.m_bOnlyCurveDensify=this.m_maxAngle>0||this.m_maxDeviation>0,this.m_maxSegmentsPerCurve=a,h(this.m_maxSegmentsPerCurve>0,`this.m_maxSegmentsPerCurve > 0`),this.m_minStep=1/this.m_maxSegmentsPerCurve}densify(e){return this.densifyGeom(e)}densifySegment(e,t){this.densifySegmentEx(e,null,!0,!1,t)}densifyEx(e,t,n,r,i,a){return this.m_maxLength=t,this.m_maxDeviation=n,this.m_maxAngle=r>Ve()?Ve():r,this.m_cosMaxAngle=Math.cos(this.m_maxAngle),this.m_bOnlyCurveDensify=this.m_maxAngle>0||this.m_maxDeviation>0,this.m_bSetDensifyFlag=i,this.m_maxSegmentsPerCurve=a,h(this.m_maxSegmentsPerCurve>0,`this.m_maxSegmentsPerCurve > 0`),this.m_minStep=1/this.m_maxSegmentsPerCurve,this.densifyGeom(e)}densifyGeom(e){if(e.isEmpty()||e.getDimension()<1)return e;let t=e.getGeometryType();if(g(t))return e;if(u(t))return this.densifyMultiPath(e);if(p(t))return this.densifySegmentImpl(e);if(t===i.enumEnvelope)return this.densifyEnvelope(e);c(``)}densifySegmentEx(e,t,n,r,a){let o=e.getGeometryType();if(!(this.m_maxLength>0)&&(!this.m_bOnlyCurveDensify||o===i.enumLine)&&(!r||n)){t?o===i.enumLine?t.addSegment(e,n):(n&&(e.queryStart(this.m_dummyPoint),t.startPathPoint(this.m_dummyPoint)),e.queryEnd(this.m_dummyPoint),t.lineToPoint(this.m_dummyPoint)):(n&&a.push(0),a.push(1));return}if(o===i.enumBezier){this.densifyCubicBezier(e,t,n,r,a);return}if(o===i.enumRationalBezier2){this.densifyRationalBezier2(e,t,n,r,a);return}if(o===i.enumBezier2){this.densifyBezier2(e,t,n,r,a);return}if(o===i.enumEllipticArc&&!e.isLine()&&e.getMinorMajorRatio()<.25){this.densifyEllipticArc(e,t,n,r,a);return}let s=1;this.m_maxLength>0&&(s=this.calculateLengthSubdivisionStep(e,this.m_maxLength)),this.m_maxDeviation>0&&(s=Math.min(s,this.calculateDeviationSubdivisionStep(e,this.m_maxDeviation))),this.m_maxAngle>0&&(s=Math.min(s,this.calculateAngularSubdivisionStep(e,this.m_maxAngle))),this.densifySegmentByLength(e,s,t,n,r,a)}densifyMultiPath(e){if(!e.hasNonLinearSegments()){if(e.getDescription().getAttributeCount()===1)return this.densifyMultiPathLinear(e);if(!(this.m_maxLength>0))return e}let t=e.createInstance();t.getGeometryType()===i.enumPolygon&&t.setFillRule(e.getFillRule()),t.reserve(e.getPointCount());let n=e.getImpl().querySegmentIterator();for(;n.nextPath();){let e=!0;for(;n.hasNextSegment();){let r=n.nextSegment(),i=n.isClosingSegment();this.densifySegmentEx(r,t,e,i,null),i&&t.closePathWithLine(),e=!1}}return t}densifySegmentImpl(e){let t=new nr({vd:e.getDescription()});return this.densifySegmentEx(e,t,!0,!1,[0]),t}densifyEnvelope(e){let t=new ma({vd:e.getDescription()});t.addEnvelope(e,!1);let n=K.constructEmpty();e.queryEnvelope(n);let r=n.width(),i=n.height();return!(this.m_maxLength>0)||r<=this.m_maxLength&&i<=this.m_maxLength?t:this.densifyMultiPath(t)}densifyMultiPathLinear(e){if(!(this.m_maxLength>0))return e;let t=e.createInstance();t.getGeometryType()===i.enumPolygon&&t.setFillRule(e.getFillRule()),t.reserve(e.getPointCount());let n=t.getImpl(),r=e.getImpl(),a=r.getAttributeStreamRef(0),o=new Q;for(let e=0,i=r.getPathCount();e<i;e++){let i=r.isClosedPath(e);if(r.getPathSize(e)===0)continue;let s=r.getPathStart(e),c=a.readPoint2D(s*2),l=c.clone();n.startPath(c);for(let i=s+1,c=r.getPathEnd(e);i<c;i++){let e=a.readPoint2D(i*2),r=L.distance(l,e);if(r>this.m_maxLength){let t=Math.ceil(r/this.m_maxLength);t>he()&&(t=he());let i=1/t,a,s;l.compare(e)<0?(o.setStartXY(l),o.setEndXY(e),a=0,s=1):(o.setStartXY(e),o.setEndXY(l),a=t-2,s=-1);let c;for(let e=0,r=t-1;e<r;e++,a+=s){this.progress_(),c=i*(a+1);let e=new L;o.queryCoord2D(c,e),n.lineTo(e),this.m_bSetDensifyFlag&&n.setAttributeNoCurves(10,n.getPointCount()-1,0,1)}}else this.progress_();t.lineTo(e),l.assign(e)}if(i){let e=L.distance(l,c);if(e>this.m_maxLength){let t=c,r=Math.ceil(e/this.m_maxLength);r>he()&&(r=he());let i=1/r,a,s;l.compare(t)<0?(o.setStartXY(l),o.setEndXY(t),a=0,s=1):(o.setStartXY(t),o.setEndXY(l),a=r-2,s=-1);let u=new L(0,0),d;for(let e=0,t=r-1;e<t;e++,a+=s)this.progress_(),d=i*(a+1),o.queryCoord2D(d,u),n.lineTo(u),this.m_bSetDensifyFlag&&n.setAttributeNoCurves(10,n.getPointCount()-1,0,1)}n.closePathWithLine()}}return t}densifySegmentByLength(e,t,r,a,o,c){n(e.getGeometryType()!==i.enumBezier);let l=e.getStartXY().compare(e.getEndXY());l===0&&t<1&&(e.getGeometryType()===i.enumEllipticArc?l=e.getSweepAngle()<0?1:-1:s(`densify segment by length`));let u=0;if(a&&(r?(e.queryStart(this.m_dummyPoint),r.startPathPoint(this.m_dummyPoint)):c.push(0),++u),t*this.m_maxSegmentsPerCurve<1&&(t=1/this.m_maxSegmentsPerCurve),t<1){this.m_segmentBuffer||=new $;let n=Math.ceil(1/t);n>he()&&(n=he()),t=1/n,this.m_segmentBuffer.create(e.getGeometryType());let i=e,a,o;l<0?(a=0,o=1):(e.copyTo(this.m_segmentBuffer.get()),this.m_segmentBuffer.get().reverse(),a=n-2,o=-1,i=this.m_segmentBuffer.get());let s,d=n-1;for(let e=0;e<d;e++,a+=o)s=t*(a+1),r?(i.queryCoord(s,this.m_dummyPoint),r.lineToPoint(this.m_dummyPoint),this.m_bSetDensifyFlag&&s!==1&&s!==0&&r.setAttribute(10,r.getPointCount()-1,0,1)):c.push(l>0?1-s:s),this.progress_();s=1,u+=d}(!o||o&&a&&u<2)&&(r?(e.queryEnd(this.m_dummyPoint),r.lineToPoint(this.m_dummyPoint)):c.push(1))}densifyCubicBezier(e,t,n,r,i){let a=new ls,o=e,s=e.calculateUpperLength2D(),c=e.getStartXY().compare(e.getEndXY());if(c===0&&s>0){let t=U(L,4);e.queryControlPoints(t),c=t[1].compare(t[2]),c===0&&(c=t[1].compare(t[0]))}c>0&&(e.copyTo(a),a.reverse(),o=a);let l=0;n&&(t?(e.queryStart(this.m_dummyPoint),t.startPathPoint(this.m_dummyPoint)):i.push(0),++l);let u=[],d=[],f=Math.trunc(Math.log2(this.m_maxSegmentsPerCurve)),p=!0,m=0;if(c>0)for(u.push([o.getStartXY(),o.getControlPoint1(),o.getControlPoint2(),o.getEndXY(),new L(0,1)]),d.push(0);u.length;){this.progress_();let e=u.at(-1),a=d.at(-1),s=e[4].x,c=e[4].y;if(a<f&&this.bezierNeedsSplit(e)){p&&=(m=o.findMinDeriv(),!1);let t=(s+c)*.5;Math.abs(m-t)<(c-s)*.4&&(t=m);let n=(t-s)/(c-s),r=e[0].mul(1-n).add(e[1].mul(n)),i=e[1].mul(1-n).add(e[2].mul(n)),l=e[2].mul(1-n).add(e[3].mul(n)),f=r.mul(1-n).add(i.mul(n)),h=i.mul(1-n).add(l.mul(n)),g=f.mul(1-n).add(h.mul(n)),_=e[3];e[1]=r,e[2]=f,e[3]=g,e[4].setCoords(s,t);let v=[g,h,l,_,new L(t,c)];u.push(v),d[d.length-1]=a+1,d.push(a+1);continue}u.pop(),d.pop(),(u.length>0||!r||r&&n&&l<2)&&(t?(o.queryCoord(s,this.m_dummyPoint),t.lineToPoint(this.m_dummyPoint),this.m_bSetDensifyFlag&&s!==1&&s!==0&&t.setAttribute(10,t.getPointCount()-1,0,1)):i.push(1-s),++l)}else for(u.push([o.getStartXY(),o.getControlPoint1(),o.getControlPoint2(),o.getEndXY(),new L(0,1)]),d.push(0);u.length;){this.progress_();let e=u.at(-1),a=d.at(-1),s=e[4].x,c=e[4].y;if(a<f&&this.bezierNeedsSplit(e)){p&&=(m=o.findMinDeriv(),!1);let t=(s+c)*.5;Math.abs(m-t)<(c-s)*.4&&(t=m);let n=(t-s)/(c-s),r=e[0].mul(1-n).add(e[1].mul(n)),i=e[1].mul(1-n).add(e[2].mul(n)),l=e[2].mul(1-n).add(e[3].mul(n)),f=r.mul(1-n).add(i.mul(n)),h=i.mul(1-n).add(l.mul(n)),g=f.mul(1-n).add(h.mul(n)),_=e[0];e[0]=g,e[1]=h,e[2]=l,e[4].setCoords(t,c);let v=[_,r,f,g,new L(s,t)];u.push(v),d[d.length-1]=a+1,d.push(a+1);continue}u.pop(),d.pop(),(u.length>0||!r||r&&n&&l<2)&&(t?(o.queryCoord(c,this.m_dummyPoint),t.lineToPoint(this.m_dummyPoint),this.m_bSetDensifyFlag&&c!==1&&c!==0&&t.setAttribute(10,t.getPointCount()-1,0,1)):i.push(c),++l)}}densifyRationalBezier2(e,t,n,r,i){let a=new jr,o=e,s=e.calculateUpperLength2D(),c=e.getStartXY().compare(e.getEndXY());c===0&&s>0&&(c=0),c>0&&(e.copyTo(a),a.reverse(),o=a);let l=0;n&&(t?(e.queryStart(this.m_dummyPoint),t.startPathPoint(this.m_dummyPoint)):i.push(0),++l);let u=Math.trunc(Math.log2(this.m_maxSegmentsPerCurve)),d=new jr,f=[],p=[];for(f.push(new F(0,1)),p.push(0);f.length;){this.progress_();let e=f.at(-1).clone(),a=p.at(-1);if(a<u&&this.rationalBezier2NeedsSplit(o,d,e.vmin,e.vmax)){let t=e.getCenter();c>0?(f.at(-1).vmax=t,f.push(new F(t,e.vmax))):(f.at(-1).vmin=t,f.push(new F(e.vmin,t))),p[p.length-1]=a+1,p.push(a+1);continue}if(f.pop(),p.pop(),f.length>0||!r||r&&n&&l<2){let n=c>0?e.vmin:e.vmax;t?(o.queryCoord(n,this.m_dummyPoint),t.lineToPoint(this.m_dummyPoint),this.m_bSetDensifyFlag&&n!==1&&n!==0&&t.setAttribute(10,t.getPointCount()-1,0,1)):i.push(c>0?1-n:n),++l}}}densifyBezier2(e,t,n,r,i){let a=new Nr,o=e,s=e.calculateUpperLength2D(),c=e.getStartXY().compare(e.getEndXY());c===0&&s>0&&(c=0),c>0&&(e.copyTo(a),a.reverse(),o=a);let l=0;n&&(t?(e.queryStart(this.m_dummyPoint),t.startPathPoint(this.m_dummyPoint)):i.push(0),++l);let u=Math.ceil(Math.log2(this.m_maxSegmentsPerCurve)),d=new Nr,f=[],p=[];for(f.push(new F(0,1)),p.push(0);f.length;){this.progress_();let e=f.at(-1).clone(),a=p.at(-1);if(a<u&&this.bezier2NeedsSplit(o,d,e.vmin,e.vmax)){let t=e.getCenter();c>0?(f.at(-1).vmax=t,f.push(new F(t,e.vmax))):(f.at(-1).vmin=t,f.push(new F(e.vmin,t))),p[p.length-1]=a+1,p.push(a+1);continue}if(f.pop(),p.pop(),f.length>0||!r||r&&n&&l<2){let n=c>0?e.vmin:e.vmax;t?(o.queryCoord(n,this.m_dummyPoint),t.lineToPoint(this.m_dummyPoint),this.m_bSetDensifyFlag&&n!==1&&n!==0&&t.setAttribute(10,t.getPointCount()-1,0,1)):i.push(c>0?1-n:n),++l}}}densifyEllipticArc(e,t,n,r,i){let a=new zc,o=e,s=e.calculateUpperLength2D(),c=e.getStartXY().compare(e.getEndXY());c===0&&s>0&&(c=+!e.isClockwise()),c>0&&(e.copyTo(a),a.reverse(),o=a);let l=0;n&&(t?(e.queryStart(this.m_dummyPoint),t.startPathPoint(this.m_dummyPoint)):i.push(0),++l);let u=Math.trunc(Math.log2(this.m_maxSegmentsPerCurve)),d=new zc,f=[],p=[];for(f.push(new F(0,1)),p.push(0);f.length;){this.progress_();let e=f.at(-1).clone(),a=p.at(-1);if(a<u&&this.ellipticArcNeedsSplit(o,d,e.vmin,e.vmax)){let t=e.getCenter();c>0?(f.at(-1).vmax=t,f.push(new F(t,e.vmax))):(f.at(-1).vmin=t,f.push(new F(e.vmin,t))),p[p.length-1]=a+1,p.push(a+1);continue}if(f.pop(),p.pop(),f.length>0||!r||r&&n&&l<2){let n=c>0?e.vmin:e.vmax;t?(o.queryCoord(n,this.m_dummyPoint),t.lineToPoint(this.m_dummyPoint),this.m_bSetDensifyFlag&&n!==1&&n!==0&&t.setAttribute(10,t.getPointCount()-1,0,1)):i.push(c>0?1-n:n),++l}}}calculateLengthSubdivisionStep(e,t){let n=e.calculateUpperLength2D();if(!e.isCurve())return n?t/n:1;if(e.getGeometryType()===i.enumEllipticArc){let r=e;if(r.isCircular()||r.isDegenerate(0)||r.isDegenerateToLine()){let e=t/n;return e<this.m_minStep&&(e=this.m_minStep),e}return t/n*r.getSemiAxes().y/r.getSemiAxes().x}e.getGeometryType()===i.enumBezier&&s(``),s(``)}calculateDeviationSubdivisionStep(e,t){if(!e.isCurve())return 1;if(e.getGeometryType()===i.enumEllipticArc){let n=e;if(n.isDegenerate(0)||n.isDegenerateToLine())return 1;{let r=n.getSemiMajorAxis(),i=1-t/r,a=Math.PI/2;if(i>0){let e=4*Math.sqrt(t/r*.5);a=Math.min(Math.PI/2,Math.abs(e))}a=Math.max(a,2*Math.PI/this.m_maxSegmentsPerCurve);let o=a*r;return this.calculateLengthSubdivisionStep(e,o)}}s(``)}calculateAngularSubdivisionStep(e,t){if(!e.isCurve())return 1;if(e.getGeometryType()===i.enumEllipticArc){let n=e;return n.isDegenerate(0)||n.isDegenerateToLine()?1:this.calculateLengthSubdivisionStep(e,t*n.getSemiMinorAxis())}s(``)}rationalBezier2NeedsSplit(e,t,n,r){e.cutBezierIgnoreAttributes(n,r,t);let i=!1;if(this.m_maxLength>0&&t.calculateUpperLength2D()>this.m_maxLength)return i=!0,!0;let a=U(L,3);t.queryControlPoints(a);let o=[0,0,0];return t.queryWeights(o),!i&&this.m_maxDeviation>0&&(i=!Xc.checkRationalBezier2MaxDeviation(a,o,this.m_maxDeviation)),!i&&this.m_maxAngle>0&&(i=!Xc.checkRationalBezier2MaxAngle(a,o,this.m_cosMaxAngle)),i}bezier2NeedsSplit(e,t,n,r){e.cutBezierIgnoreAttributes(n,r,t);let i=!1;if(this.m_maxLength>0&&t.calculateUpperLength2D()>this.m_maxLength)return i=!0,!0;let a=U(L,3);return t.queryControlPoints(a),!i&&this.m_maxDeviation>0&&(i=!Xc.checkBezier2MaxDeviation(a,this.m_maxDeviation)),!i&&this.m_maxAngle>0&&(i=!Xc.checkBezier2MaxAngle(a,this.m_cosMaxAngle)),i}ellipticArcNeedsSplit(e,t,n,r){e.cutArcIgnoreAttributes(n,r,t);let i=!1;return this.m_maxLength>0&&t.calculateUpperLength2D()>this.m_maxLength?(i=!0,!0):(!i&&this.m_maxDeviation>0&&(i=!Xc.checkEllipticArcMaxDeviation(t,this.m_maxDeviation)),!i&&this.m_maxAngle>0&&(i=!Xc.checkEllipticArcMaxAngle(t,this.m_cosMaxAngle)),i)}bezierNeedsSplit(e){let t=!1;return this.m_maxLength>0&&L.distance(e[0],e[1])+L.distance(e[1],e[2])+L.distance(e[2],e[3])>this.m_maxLength?(t=!0,!0):(!t&&this.m_maxDeviation>0&&(t=!Xc.checkBezierMaxDeviation(e,this.m_maxDeviation)),!t&&this.m_maxAngle>0&&(t=!Xc.checkBezierMaxAngle(e,this.m_cosMaxAngle)),t)}progress_(){}static checkBezierMaxDeviation(e,t){let n=e[3].sub(e[0]);if(n.sqrLength()>0){let r=n.clone();r.leftPerpendicularThis(),r.normalize();let i=r.dotProduct(e[0].sub(e[1])),a=r.dotProduct(e[0].sub(e[2]));if(Math.max(Math.abs(i),Math.abs(a))<=t){let t=new L;Co(e,.5,t,!1);let r=t.sub(e[0]).dotProduct(n);return r>=0&&r<=n.sqrLength()}return!1}return Math.max(e[0].sub(e[1]).sqrLength(),e[0].sub(e[2]).sqrLength())<=t*t}static checkBezierMaxAngle(e,t){if(e[0].equals(e[3]))return!!(e[0].equals(e[1])&&e[1].equals(e[2]));let n=e[3].sub(e[0]);n.normalize();{let r=e[1].sub(e[0]),i=r.dotProduct(n);if(i<0||r.length()*t>i)return!1}{let r=e[2].sub(e[0]),i=r.dotProduct(n);if(i<0||r.length()*t>i)return!1}{let r=e[2].sub(e[1]),i=r.dotProduct(n);if(i<0||r.length()*t>i)return!1}return!0}static checkRationalBezier2MaxDeviation(e,t,n){if(t[1]===0)return!1;let r=e[2].sub(e[0]);if(r.sqrLength()>0){let t=r.clone();t.leftPerpendicularThis(),t.normalize();let i=t.dotProduct(e[0].sub(e[1]));if(Math.abs(i)<=n){let t=e[1].sub(e[0]).dotProduct(r);return t>=0&&t<=r.sqrLength()}return!1}return e[0].sub(e[1]).sqrLength()<=n*n}static checkRationalBezier2MaxAngle(e,t,n){if(t[1]===0)return!1;if(e[0].equals(e[2]))return!!e[0].equals(e[1]);let r=e[2].sub(e[0]);r.normalize();{let t=e[1].sub(e[0]),i=t.dotProduct(r);if(i<0||t.length()*n>i)return!1}return!0}static checkBezier2MaxDeviation(e,t){let n=e[2].sub(e[0]);if(n.sqrLength()>0){let r=n.clone();r.leftPerpendicularThis(),r.normalize();let i=r.dotProduct(e[0].sub(e[1]));if(Math.abs(i)<=t){let t=e[1].sub(e[0]).dotProduct(n);return t>=0&&t<=n.sqrLength()}return!1}return e[0].sub(e[1]).sqrLength()<=t*t}static checkBezier2MaxAngle(e,t){if(e[0].equals(e[2]))return!!e[0].equals(e[1]);let n=e[2].sub(e[0]);n.normalize();{let r=e[1].sub(e[0]),i=r.dotProduct(n);if(i<0||r.length()*t>i)return!1}return!0}static checkEllipticArcMaxDeviation(e,t){if(Math.abs(e.getSweepAngle())<Math.PI){let n=e.getEndXY().sub(e.getStartXY()),r=[0,0];if(iu(e,n,r)===1){let n=e.getCoord2D(r[0]),i=L.getClosestCoordinate(e.getStartXY(),e.getEndXY(),n),a=new L;return He(e.getStartXY(),e.getEndXY(),i,a),L.distance(n,a)<=t}}let n=e.getCoord2D(.5),r=new L;return He(e.getEndXY(),e.getStartXY(),.5,r),L.distance(n,r)<=t}static checkEllipticArcMaxAngle(e,t){let n=e.getTangent(0),r=e.getTangent(1),i=n.dotProduct(r);return!(i<0||n.length()*r.length()*t>i)}static checkTypeForReplace(e,t){return e.getGeometryType()===t?t!==i.enumEllipticArc||e.isCircular():!1}}function Zc(e,t,n){let r=n.length;if(t<=0||r<=2)return r;let i=0,a=I(r-1,NaN);for(let t=1,o=r;t<o;t++){let r=e.tToLength(n[t]);a[t-1]=r-i,i=r}for(;a.length>1;){let e=a.findIndex(e=>e<=t*2);if(e===-1)break;let r=e+1,i=e+1;if(e>0){let t=e-1;(i===a.length||a[t]>a[i])&&(i=t,r--)}a[i]+=a[e],a.splice(e,1),n.splice(r,1)}return n.length}function Qc(e,t,n,r,i){let a=[],o=[],s=qc(t,n,0,r,!1,a,o),c=new ls,l=i,u=t.getDescription();c.assignVertexDescription(u);let d=u.getAttributeCount()>1,f=new P,p=new Q;for(let n=0,r=0;n<s;n++){if(a[r+1].isNAN()){if(d){let e=o[n];t.queryCoord(e,f),p.setStart(f),e=o[n+1],t.queryCoord(e,f),p.setEnd(f)}p.setStartXY(a[r]),p.setEndXY(a[r+3]),e.addSegment(p,l)}else{if(d){let e=o[n];t.queryCoord(e,f),c.setStart(f),e=o[n+1],t.queryCoord(e,f),c.setEnd(f)}c.setStartXY(a[r]),c.setControlPoint1(a[r+1]),c.setControlPoint2(a[r+2]),c.setEndXY(a[r+3]),e.addSegment(c,l)}r+=3,l=!1}}function $c(e,t,n,r,i){let a=[],o=[],s=Jc(t,n,0,r,!1,a,o),c=new Nr,l=i,u=t.getDescription();c.assignVertexDescription(u);let d=u.getAttributeCount()>1,f=new P,p=new Q;for(let n=0,r=0;n<s;n++){if(a[r+1].isNAN()){if(d){let e=o[n];t.queryCoord(e,f),p.setStart(f),e=o[n+1],t.queryCoord(e,f),p.setEnd(f)}p.setStartXY(a[r]),p.setEndXY(a[r+2]),e.addSegment(p,l)}else{if(d){let e=o[n];t.queryCoord(e,f),c.setStart(f),e=o[n+1],t.queryCoord(e,f),c.setEnd(f)}c.setStartXY(a[r]),c.setControlPoint1(a[r+1]),c.setEndXY(a[r+2]),e.addSegment(c,l)}r+=2,l=!1}}function el(e,t,r,a,o){n(e===i.enumBezier||e===i.enumEllipticArc||e===i.enumBezier2);let s=t.createInstance();s.getGeometryType()===i.enumPolygon&&s.setFillRule(t.getFillRule());let l=t.querySegmentIterator();for(let o=0,u=t.getPathCount();o<u;++o){if(!t.hasNonLinearSegmentsPath(o)){s.addPath(t,o,!0);continue}let u=t.getPathStart(o),d=!0,f=0;for(l.resetToPath(o),n(l.nextPath());l.hasNextSegment();){let n=l.nextCurve();if(n){let p=l.getStartPointIndex()-u,m=p-f;m>0&&(s.addSegmentsFromPath(t,o,f,m,d),d=!1),f=p+1,e===i.enumBezier?Qc(s,n,r,a,d):e===i.enumBezier2?$c(s,n,r,a,d):c(``),d=!1}else break}let p=t.getSegmentCountPath(o);p-f!==0&&s.addSegmentsFromPath(t,o,f,p-f,d)}return s}function tl(e,t,n,r,i,a,o,s){let c=t.clone();c.dropAllAttributes();let l=(e,t,n,r)=>(t&&(e&&t.push(r.getStartXY()),t.push(L.getNAN()),t.push(L.getNAN()),t.push(r.getEndXY())),n&&(e&&n.push(0),n.push(1)),1);if(c.isDegenerateToLine()||c.isDegenerate(0))return l(e,a,o,t);let u=c.getStartXY(),d=c.getEndXY(),f=c.getSemiAxes(),p=new bt;if(c.isCircular())p.setIdentity();else{let e=c.getAxisXRotation();p.setScaleCoords(1,c.getMinorMajorRatio()),p.rotateAngle(e)}let m=c.getCenter();p.shift(m);let h=p.clone();h.invertThis(),c.applyTransformation(h);let g=c.getSweepAngle();if(g===0)return l(e,a,o,t);let _=K.constructEmpty();_.setCoords({center:m,width:2*f.x,height:2*f.x});let v=_.calculateToleranceFromEnvelope()*.05,y=4*(Math.max(n/f.x,v/f.x)/.0741)**(1/6);y=Math.min(y,Math.PI/2);let b=Fc(c.getStartAngle()),x=g>0?Math.floor(b/y):Math.ceil(b/y);x*=y;let S=g>0?y:-y;x+S===b&&(x+=S);let C=4/3*Math.tan(Math.abs(y)/4);g>0&&(C=-C),o&&e&&o.push(0);let w=y/Math.abs(g),T=(x-b)/g,E=u.clone(),D=new L;c.queryCoord2D(0,D);let O=D.clone(),k=1-w*.01,ee=0,A=0;for(;T<1;){T+=w;let n;if(A>0&&T<k)n=C;else{T>=k&&(T=1);let e=(T-A)*g;n=4/3*Math.tan(Math.abs(e)/4),g>0&&(n=-n)}c.queryCoord2D(T,D);let s=new L;p.queryTransform(D,s);let l=t.getClosestCoordinate(s,!1);if(t.queryCoord2D(l,s),T!==1&&(L.distance(E,s)<=2*r||L.distance(s,d)<=2*r))continue;E.setCoordsPoint2D(s);let f=U(L,4);f[0].assign(O),f[3].assign(D),f[1].rightPerpendicularOther(O),f[1].scaleAddThis(n,O),f[2].leftPerpendicularOther(D),f[2].scaleAddThis(n,D),p.transformPoints2D(f,3,f),f[3].assign(s),A===0&&f[0].setCoordsPoint2D(u),T===1&&f[3].setCoordsPoint2D(d),i&&vo(f);let m=!0;for(let e=1;e<4;e++)if(!f[e].isEqualPoint2D(f[0])){m=!1;break}m||(o&&o.push(l),a&&(A===0&&e&&a.push(f[0].clone()),a.push(f[1].clone()),a.push(f[2].clone()),a.push(f[3].clone())),ee++),A=T,O.setCoordsPoint2D(D)}return ee}function nl(e,t,n,r,i,a,o,s){t.clone().dropAllAttributes();let c=new K;t.queryLooseEnvelope(c);let l=c.calculateToleranceFromEnvelope()*.05,u=Math.max(n,l);o&&e&&o.push(0);let d=0,f=U(L,3);t.queryControlPoints(f);let p=[0,0,0];t.queryWeights(p);let m=[],h=I(9,NaN),g=t.getMonotonicPartParams(h.length,h);h.length=g,g=Zc(t,r,h);let _=0,v=e;for(let e=1;e<g;e++){let t=h[e];for(m.push(_),m.push(t);m.length>1;){let e=m.at(-1);m.pop();let t=m.at(-1),n=U(L,3);tc(f,p,e,t,n,[0,0,0]);let r=U(L,3),i=na(n,p,r),s=m.length>16;u>=i||s?(o.push(t),a&&(v&&=(a.push(r[0]),!1),a.push(r[1]),a.push(r[2])),d++):(m.push((e+t)*.5),m.push(e))}_=t}return d}function rl(e,t,n,r,i,a,o,s){t.clone().dropAllAttributes();let c=new K;t.queryLooseEnvelope(c);let l=c.calculateToleranceFromEnvelope()*.05,u=Math.max(n,l);o&&e&&o.push(0);let d=0,f=U(L,3);t.queryControlPoints(f);let p=[0,0,0];t.queryWeights(p);let m=[],h=I(9,NaN),g=0;i?(g=t.getMonotonicPartParams(h.length,h),h.length=g,g=Zc(t,r,h)):(h.length=2,g=2,h[0]=0,h[1]=1);let _=0,v=e;for(let e=1;e<g;e++){let t=h[e];for(m.length=0,m.push(t),m.push(_);m.length>1;){let e=m.at(-1);m.pop();let t=m.at(-1),n=U(L,3),r=[0,0,0];tc(f,p,e,t,n,r);let i=U(L,4),s=nc(n,r,i),c=m.length>16;u>=s||c?(o.push(t),a&&(v&&=(a.push(i[0]),!1),a.push(i[1]),a.push(i[2]),a.push(i[3])),d++):(m.push((e+t)*.5),m.push(e))}_=t}return d}function il(e,t,n,r,i,a,o,s){let c=t.clone();if(c.dropAllAttributes(),c.isDegenerateToLine()||c.getSweepAngle()===0)return a&&(e&&a.push(t.getStartXY()),a.push(L.getNAN()),a.push(t.getEndXY())),o&&(e&&o.push(0),o.push(1)),1;let l=c.getStartXY(),u=c.getEndXY(),d=c.getSemiAxes(),f=new bt;if(c.isCircular())f.setIdentity();else{let e=c.getAxisXRotation();f.setScaleCoords(1,c.getMinorMajorRatio()),f.rotateAngle(e)}let p=c.getCenter();f.shift(p);let m=f.clone();m.invertThis(),c.applyTransformation(m);let h=K.constructEmpty();h.setCoords({center:p,width:2*d.x,height:2*d.x});let g=h.calculateToleranceFromEnvelope()*.05,_=Math.max(n/d.x,g/d.x),v=Math.sqrt(2*_+_*_),y=Math.sqrt(2*v*(1+_-v))*2;y=Math.min(y,Math.PI/2);let b=c.getSweepAngle(),x=Math.ceil(Math.abs(b)/y),S=Math.max(x,1);y=b/S;let C=1/S,w=Math.tan(Math.abs(y)/2);b>0&&(w=-w),o&&e&&o.push(0);let T=new L;c.queryCoord2D(0,T);for(let t=0;t<S;t++){let n=T.clone(),r=(t+1)*C;if(o&&o.push(r),!a)continue;c.queryCoord2D(r,T);let i=U(L,3);i[0].assign(n),i[2].assign(T),i[1].rightPerpendicularOther(i[0]),i[1].mulThis(w),i[1].addThis(i[0]),f.transformPoints2D(i,3,i),t===0&&i[0].setCoordsPoint2D(l),t===S-1&&i[2].setCoordsPoint2D(u),t===0&&e&&a.push(i[0]),a.push(i[1]),a.push(i[2])}return S}function al(e,t,n,r,i,a,o,s){t.clone().dropAllAttributes();let c=new K;t.queryLooseEnvelope(c);let l=c.calculateToleranceFromEnvelope()*.05,u=Math.max(n,l);o&&e&&o.push(0);let d=0,f=U(L,4);t.queryControlPoints(f);let p=[],m=I(9,NaN),h=t.getMonotonicPartParams(m.length,m);m.length=h,h=Zc(t,r,m);let g=0,_=e;for(let e=1;e<h;e++){let t=m[e];for(p.push(g),p.push(t);p.length>1;){let e=p.at(-1);p.pop();let t=p.at(-1),n=U(L,4);So(f,e,t,n);let r=U(L,3),i=ta(n,r),s=p.length>16;u>=i||s?(o.push(t),a&&(_&&=(a.push(r[0]),!1),a.push(r[1]),a.push(r[2])),d++):(p.push((e+t)*.5),p.push(e))}g=t}return d}function ol(){return{e2:0,completeE:0}}class sl{m_arc;m_sqrChordLength;constructor(e,t){this.m_arc=e,this.m_sqrChordLength=t}getMaxDerivative(){return 1}getValue(e,t){return e===0?L.sqrDistance(this.m_arc.getCoord2D(t),this.m_arc.getCoord2D(1-t))-this.m_sqrChordLength:0}getError(e){return 0}}function cl(e,t,n){if(Z(e)){kn(new Q({start:e.getStartXY(),end:e.getEndXY()}),t,n);return}if(t.value()===0)n.set(e.getStartXY());else if(t.value()===1)n.set(e.getEndXY());else{let r=new H;vl(e,t,r);let i=new H,a=new H;H.st_cosAndSin(r,i,a);let o=q.constructCoordsE(new H(e.m_semiMajorAxis).mulThisE(i),new H(e.m_semiMajorAxis).mulThis(e.m_minorMajorRatio).mulThisE(a)),s=new H(e.m_rotation);H.st_cosAndSin(s,i,a),o.rotateDirect(i,a),o.addThisE(q.constructPoint2D(e.m_center)),n.setE(o)}}function ll(e,t){return e.convertToCanonic(t)}function ul(e,t){let n=new F(e.getStartAngle(),e.getEndAngle());n.normalize();let r=$e(),i=ft(t,r);if(i<n.vmin){let e=i+r;for(;e<n.vmin;)e+=r;return n.containsCoordinate(e)?e:n.vmin-i<e-n.vmax?i:e}if(i>n.vmax){let e=i-r;for(;e>n.vmax;)e-=r;return n.containsCoordinate(e)||n.vmin-e<i-n.vmax?e:i}return i}function dl(e,t,n,r){let i=e.m_startAngle,a=e.m_sweepAngle,o=1e-12;for(;i>G();)i-=2*G();for(;i<=-G();)i+=2*G();if(!Number.isNaN(t)){for(;t>G();)t-=2*G();for(;t<=-G();)t+=2*G();!n&&t>i&&(t-=2*G()),n&&t<i&&(t+=2*G()),a=t-i,Math.abs(a)<o&&!r&&(a=n?2*G():-2*G()),Math.abs(a)>2*G()-o&&r&&(a=0)}Math.abs(a)>2*G()-o&&(a=a>=0?2*G():-2*G(),e.setEndXY(e.getStartXY())),Math.abs(a)<o&&(a=0,e.setEndXY(e.getStartXY())),r=Math.abs(a)<=G(),a&&(n=a>0),e.m_startAngle=fl(i),e.m_sweepAngle=a,zl(e,!r),Ll(e,n)}function fl(e){let t=e,n=!1;return t<=-G()?(t+=$e(),n=!0):t>G()&&(t-=$e(),n=!0),t<=-G()?(t=ft(t,$e()),t<=-G()&&(t+=$e()),n=!0):t>G()&&(t=ft(t,$e()),t>G()&&(t-=$e()),n=!0),n&&(t>G()||t<=-G())&&(t=G()),t}function pl(e,t,n){let r=n,i=r.getSemiAxes(),a=new L(i.x*Math.cos(e[0]),i.y*Math.sin(e[0]));return a=r.convertFromCanonic(a),L.sqrDistance(a,r.getStartXY())}function ml(e,t,n){let r=n,i=r.getSemiAxes(),a=e[0]+r.getStartAngle(),o=new L(i.x*Math.cos(a),i.y*Math.sin(a));return o=r.convertFromCanonic(o),L.sqrDistance(o,r.getEndXY())}function hl(e){if(e.m_center.isNAN()){e.m_startAngle=0,e.m_sweepAngle=0;return}let t=e.getStartXY(),n=e.getEndXY(),r=t.equals(n),i=Bl(e),a=Rl(e),o=e.projectionBehavior();if(r){let n=e.convertToCanonic(t),r=new L(e.m_semiMajorAxis,e.m_semiMajorAxis*e.m_minorMajorRatio);n.x/=r.x,n.y/=r.y,e.m_startAngle=fl(Math.atan2(n.y,n.x)),e.m_sweepAngle=i?a?$e():-$e():0}else{let r=e.convertToCanonic(t),s=new L(e.m_semiMajorAxis,e.m_semiMajorAxis*e.m_minorMajorRatio);r.x/=s.x,r.y/=s.y;let c=e.convertToCanonic(n);c.x/=s.x,c.y/=s.y,e.m_startAngle=Math.atan2(r.y,r.x),e.m_sweepAngle=L.calculateAngle(r,c),a?e.m_sweepAngle<0&&(e.m_sweepAngle+=$e()):e.m_sweepAngle>0&&(e.m_sweepAngle-=$e()),e.m_startAngle=fl(e.m_startAngle);let l=pl([e.m_startAngle],1,e);if(l=Math.sqrt(l),l>.25*fn(e)){let t=e.m_startAngle-1e-4,n=e.m_startAngle+1e-4,r=[0];dr(pl,e,1,[e.m_startAngle],[t],[n],1e-14,r),e.m_startAngle=fl(r[0])}if(l=ml([e.m_sweepAngle],1,e),l=Math.sqrt(l),l>.25*fn(e)){let t=e.m_sweepAngle-1e-4,n=e.m_sweepAngle+1e-4,r=[0];dr(ml,e,1,[e.m_sweepAngle],[t],[n],1e-14,r),e.m_sweepAngle=r[0]}let u=Math.abs(e.m_sweepAngle)>G();if(zl(e,u),i!==u&&!i&&Math.abs(e.m_sweepAngle)>G()*1.5){Ol(e,t,n,o);return}if(e.m_sweepAngle===0||a!==e.m_sweepAngle>0){Ol(e,t,n,o);return}}}function gl(e,t){return(ul(e,t)-e.getStartAngle())/e.getSweepAngle()}function _l(e,t){return e.m_startAngle+t*e.m_sweepAngle}function vl(e,t,n){n.assign(new H(e.m_startAngle).addE(t.mulE(new H(e.m_sweepAngle))))}function yl(e,t){let n=new H(e.m_cosr).sqrThis(),r=new H(e.m_sinr).sqrThis(),i=new H(e.m_minorMajorRatio),a=new H(1/e.m_minorMajorRatio),o=i.mulE(n).addThisE(a.mulE(r)),s=i.subE(a).mulThis(2*e.m_cosr*e.m_sinr),c=i.mulE(r).addThisE(a.mulE(n));t[0]=o,t[1]=s,t[2]=c,t[3]=new H(-e.m_semiMajorAxis).mulThis(e.m_semiMajorAxis).mulThis(e.m_minorMajorRatio)}function bl(e,t){let n=new Vt;n.a11.setE(e[0]),n.a12=H.st_mulByPower2(e[1],.5),n.a21.setE(n.a12),n.a22.setE(e[2]);let r=[L.getNAN(),L.getNAN()],i=[new H,new H];n.eigenSymmetric(i,r);let a=e[3].clone();return a.negateThis(),a.invThis(),i[0].mulThisE(a),i[1].mulThisE(a),i[0].sqrtThis().invThis(),i[1].sqrtThis().invThis(),t.x=i[0].toDouble(),t.y=i[1].toDouble(),Math.atan2(r[0].y,r[0].x)}function xl(e,t,n){if(Z(e))return(n-t)*L.distance(e.getStartXY(),e.getEndXY());if(e.m_minorMajorRatio===1)return Math.abs(e.getSweepAngle()*(t-n))*e.m_semiMajorAxis;let r=kl(e,t);return kl(e,n)-r}function Sl(e){return e.m_cachedValues}function Cl(e){if(e.m_cachedValues)return e.m_cachedValues;let t=ol();return t.e2=El(e),t.completeE=st(t.e2),e.m_cachedValues=t,t}function wl(e,t,n,r){if(!(t.isEqual(e.m_XStart,e.m_YStart)&&n.isEqual(e.m_XEnd,e.m_YEnd))){if(Z(e)){e.m_XStart=t.x,e.m_YStart=t.y,e.m_XEnd=n.x,e.m_YEnd=n.y,Zl(e),e.afterCompletedModification();return}if(r&&Math.abs(e.getSweepAngle())<=Ve()*1.01){let r=U(L,3),i=Gl(e,r);if(Xs(r)){if(r[0].assign(t),r[2].assign(n),Qs(r),e.projectionBehavior()!==0)Kl(r,i*i,null,!1,e);else{let t=L.sqrDistance(r[1],r[0]),n=L.sqrDistance(r[1],r[2]),i=0,a=2;t<n&&(a=R(i,i=a));let o=r[a].sub(r[i]),s=o.length();o.divThis(s);let c=r[1].sub(r[i]),l=c.length(),u=c.dotProduct(o)/l,d=c.crossProduct(o)/l,f=new L;He(r[i],r[a],.5,f);let p=.5*s/d*we(1-u,0,1),m=r[1].side(r[i],r[a]),h=o.clone();m?h.leftPerpendicularThis():h.rightPerpendicularThis();let g=f.sub(h.mul(p));e.constructCircularArcThreePoint(r[0],r[2],g)}return}}e.projectionBehavior()===0?su(e,t,n):cu(e,t,n)}}function Tl(e,t,n){let r=e.projectionBehavior()===0;if(n<=2){Ol(e,t[0],t[n-1],+!r);return}if(r){e.constructCircularArcThreePoint(t[0],t[n-1],t[Math.trunc(n/2)]);let r=new L;e.queryCoord2D(.5,r),e.m_interior.setCoordsPoint2D(r);return}let i=e.getSemiMajorAxis(),a=e.getMinorMajorRatio(),o=e.getAxisXRotation(),s=e.getCenter(),c=[,,,,];c[0]=e.isMajor(),c[1]=!c[0],c[2]=c[0],c[3]=!c[0];let l=[,,,,];l[0]=e.isClockwise(),l[1]=l[0],l[2]=!l[0],l[3]=!l[0];let u=Math.trunc(n<5?1:(n+4)/5),d=U(zc,4),f=I(4,NaN),p=0;for(let e=0;e<4;e++){d[e].constructEllipticArcEndPointsCenter(t[0],t[n-1],i,a,o,c[e],l[e],s),f[e]=0;let r=0;for(let i=u;i<n-1;i+=u){let n=d[e].getClosestCoordinate(t[i],!1);f[e]+=L.sqrDistance(d[e].getCoord2D(n),t[i]),r++}f[e]/=r,f[e]<f[p]&&(p=e)}e.assignCopy(d[p])}function El(e){return 1-Xe(e.m_minorMajorRatio)}function Dl(e,t,n,r,i,a,o,s,c){return e.m_bits=0,e.m_rotation=a,Zt(e,t),$t(e,n),e.m_cosr=Math.cos(a),e.m_sinr=Math.sin(a),zl(e,o),Ll(e,s),c===void 0?e.m_center.setNAN():e.m_center.assign(c),e.setProjectionBehavior(1),e.m_semiMajorAxis=r,e.m_minorMajorRatio=i,Wl(e,c===void 0)}function Ol(e,t,n,r){e.m_bits=0,e.m_rotation=0,Zt(e,t),$t(e,n),e.m_interior.assign(t.add(n).mul(.5)),e.m_startAngle=0,e.m_sweepAngle=0,e.m_cosr=1,e.m_sinr=0,zl(e,!1),Ll(e,!1),e.m_center.setNAN(),e.m_semiMajorAxis=1,e.m_minorMajorRatio=0,e.setProjectionBehavior(r),e.afterCompletedModification()}function Z(e){return e.m_center.isNAN()}function kl(e,t){if(t===0)return 0;let n=Cl(e),r=_l(e,t),i=Ve(),a=jl(e),o=tt(r+i,n.e2,n.completeE),s=e.m_semiMajorAxis*(o-a);return Math.abs(s)}function Al(e,t){if(Z(e)){let n=L.distance(e.getStartXY(),e.getEndXY());return n===0?0:t/n}if(e.m_minorMajorRatio===1){let n=Math.abs(e.getSweepAngle()*e.m_semiMajorAxis);return n===0?0:t/n}if(t===0)return 0;let n=e.getSweepAngle();if(n===0)return .5;let r=Cl(e),i=Ve(),a=jl(e);n<0&&(t=-t);let o=t/e.m_semiMajorAxis+a,s=nt(o,r.e2,r.completeE);return s-=i,s-=e.getStartAngle(),s/n}function jl(e){let t=Cl(e);return tt(e.getStartAngle()+Ve(),t.e2,t.completeE)}function Ml(e,t,r,i,a){if(t.m_TransformationType===2){n(0);return}if(n(!Hl(e)),t.isIdentity()&&(!i||i.equals(e.getStartXY())&&a.equals(e.getEndXY())))return;Fl(e);let o=L.getNAN(),s=L.getNAN();if(i===null?(o.x=e.m_XStart,o.y=e.m_YStart,t.transformInPlace(o),s.x=e.m_XEnd,s.y=e.m_YEnd,t.transformInPlace(s)):(o=i,s=a),Z(e)){e.m_XStart=o.x,e.m_YStart=o.y,e.m_XEnd=s.x,e.m_YEnd=s.y;return}let c=e.m_center.clone();if(t.transformInPlace(c),r||t.isUniformNoRotation()){let n=Rl(e);if(t.isReflective()&&(n=!n),e.projectionBehavior()===0){if(!o.equals(s)){let n=e.m_interior.clone();t.transformInPlace(n),e.constructCircularArcThreePoint(o,s,n);return}Nl(e,o,s,c,n,!1);return}let r=new L(e.m_cosr,e.m_sinr);t.transformWithoutTranslateInPlace(r);let i=Math.atan2(r.y,r.x),a=e.getSemiAxes();t.transformWithoutTranslateInPlace(a);let l=e.m_center.clone();t.transformInPlace(l),e.constructEllipticArcEndPointsCenter(o,s,a.x,a.y/a.x,i,e.isMajor(),n,l);return}{{let n=[,,,,];yl(e,n);let r=new Vt;if(r.a11.setE(n[0]),r.a12.setE(n[1]),r.a12.mulThisByPower2(.5),r.a21.setE(r.a12),r.a22.setE(n[2]),!r.det().isZero()){let i=new Vt;if(i.a11.set(t.xx),i.a12.set(t.xy),i.a21.set(t.yx),i.a22.set(t.yy),i.invertThis()){let a=i.clone();a.transposeThis();let l=r.clone();if(l.mulThis(i),l.mulLeftThis(a),!l.det().isZero()){let r=U(H,4);r[0].setE(l.a11),r[1].setE(l.a12),r[1].mulThisByPower2(2),r[2].setE(l.a22),r[3].setE(n[3]);let i=L.getNAN(),a=bl(r,i),u=Rl(e);t.isReflective()&&(u=!u),e.constructEllipticArcEndPointsCenter(o,s,i.x,i.y/i.x,a,e.isMajor(),u,c);return}}}}let n=[L.getNAN(),L.getNAN(),L.getNAN()];n[0].setCoords(e.getSemiMajorAxis(),0),n[0].rotateDirect(e.m_cosr,e.m_sinr),n[1].setCoords(e.getSemiMajorAxis(),e.getSemiMinorAxis()),n[1].rotateDirect(e.m_cosr,e.m_sinr),n[2].setCoords(0,e.getSemiMinorAxis()),n[2].rotateDirect(e.m_cosr,e.m_sinr);let r=e.isClockwise();r&&(n[2]=R(n[0],n[0]=n[2])),t.transformWithoutTranslateArray(n,3,n),t.isReflective()&&(r=!r);let i=new L(0,0),a=e.createInstance();Kl(n,.5,i,!1,a),e.constructEllipticArcEndPointsCenter(o,s,a.getSemiMajorAxis(),a.getMinorMajorRatio(),a.getAxisXRotation(),e.isMajor(),!r,c)}}function Nl(e,t,n,r,i,a){let o=(r.sub(t).length()+r.sub(n).length())*.5;e.m_center.assign(r),e.m_startAngle=Math.atan2(t.y-e.m_center.y,t.x-e.m_center.x),dl(e,Math.atan2(n.y-e.m_center.y,n.x-e.m_center.x),i,a);let s=e.constructEllipticArcEndPointsCenter(t,n,o,1,0,Math.abs(e.m_sweepAngle)>Math.PI,e.m_sweepAngle>0,r);return e.setProjectionBehavior(0),s}function Pl(e,t){e.m_cachedValues=t}function Fl(e){e.m_cachedValues=null}function Il(e,t){t.m_cachedValues=R(e.m_cachedValues,e.m_cachedValues=t.m_cachedValues)}function Ll(e,t){let n=+!!t;e.m_bits=e.m_bits&-2|n}function Rl(e){return!!(e.m_bits&1)}function zl(e,t){let n=+!!t;e.m_bits=e.m_bits&-3|n<<1}function Bl(e){return!!(e.m_bits&2)}function Vl(e){if(e.m_center.isNAN())return!1;let t=new q;t.setWithEps(e.getStartXY(),8),t.subThisE(new q().setWithEps(e.m_center,8));let n=new H;n.setWithEps(e.m_rotation,8);let r=new H,i=new H;H.st_cosAndSin(n,r,i),t.rotateReverse(r,i);let a=new q;a.setWithEps(e.getEndXY()),a.subThisE(q.constructPoint2D(e.m_center)),a.rotateReverse(r,i);let o=new H;o.setWithEps(e.m_semiMajorAxis,8);let s=o.clone(),c=new H;c.setWithEps(e.m_minorMajorRatio),s.mulThisE(c),t.x.divThisE(o),t.y.divThisE(s),a.x.divThisE(o),a.y.divThisE(s);let l=t.x.sqr().addThisE(t.y.sqr()).subThisE(be),u=a.x.sqr().addThisE(a.y.sqr()).subThisE(be);return!l.isZero()||!u.isZero()}function Hl(e){return!!(e.m_bits&8)}function Ul(e){e.m_bits&=-9}function Wl(e,t){Ul(e);let r=e.getStartXY(),i=e.getEndXY(),a=!1,o=Bl(e),s=Rl(e),c=e.projectionBehavior(),l=r.equals(i),u=e.m_minorMajorRatio===0||e.m_semiMajorAxis===0;if(Number.isNaN(e.m_minorMajorRatio)&&(e.m_semiMajorAxis===0?e.m_minorMajorRatio=1:d(`NAN minor major ratio and non-zero major axis`)),u||=t?l:e.m_center.isNAN(),u)return Ol(e,r,i,c),!0;e.m_semiMajorAxis=Math.abs(e.m_semiMajorAxis),e.m_minorMajorRatio=Math.abs(e.m_minorMajorRatio),e.m_minorMajorRatio>1&&(e.m_semiMajorAxis*=e.m_minorMajorRatio,e.m_minorMajorRatio=1/e.m_minorMajorRatio);let f=new L(e.m_semiMajorAxis,e.m_semiMajorAxis*e.m_minorMajorRatio);if(n(f.y>0&&f.x>=f.y),l){let t=e.convertToCanonic(r);n(!f.isZero()),t.x/=f.x,t.y/=f.y;let i=Math.sqrt(Xe(t.x)+Xe(t.y));if(a=i!==1,e.m_semiMajorAxis*=i,f.mulThis(i),e.m_startAngle=fl(Math.atan2(t.y,t.x)),!o)return e.m_interior.assign(r),e.m_sweepAngle=0,e.afterCompletedModification(),a;e.m_sweepAngle=s?$e():-$e()}else{let t=e.m_center.isNAN()||Vl(e);if(!t){let n=e.convertToCanonic(r);n.x/=f.x,n.y/=f.y;let a=new L(1,0);e.m_startAngle=L.calculateAngle(a,n);let o=e.convertToCanonic(i);o.x/=f.x,o.y/=f.y,e.m_sweepAngle=L.calculateAngle(n,o),t=!Jl(e)}if(t){a=!0;let t=r.sub(i).mulThis(.5);t.rotateReverse(e.m_cosr,e.m_sinr);let n=Xe(t.x/f.x)+Xe(t.y/f.y);n>1&&(n=Math.sqrt(n),e.m_semiMajorAxis*=n,f.mulThis(n));let c=new L(0,0);{let e=f.x*f.x,n=f.y*f.y,r=e*t.y*t.y+n*t.x*t.x,i=e*n-r;if(i>0){let e=Math.sqrt(i/r);c.setCoords(f.x*t.y/f.y,-f.y*t.x/f.x),c.mulThis(e),o===s&&c.negateThis()}}{let t=new L(c.x,c.y);t.rotateDirect(e.m_cosr,e.m_sinr),t.addThis(r.add(i).mulThis(.5)),e.m_center.assign(t)}}if(hl(e),!Jl(e))return Ol(e,r,i,c),!0}return Zl(e),e.afterCompletedModification(),a}function Gl(e,t){n(Math.abs(e.getSweepAngle())<Math.PI*15/16);let r=e.getSemiMajorAxis(),i=e.getSemiMinorAxis(),a;if(r===0)return t[0].setCoordsPoint2D(e.getStartXY()),t[1].setCoordsPoint2D(e.getStartXY()),t[2].setCoordsPoint2D(e.getStartXY()),a=1,a;if(i===0)return t[0].setCoordsPoint2D(e.getStartXY()),t[2].setCoordsPoint2D(e.getEndXY()),t[1]=L.lerp(t[0],t[2],.5),a=1,a;let o=e.getSweepAngle(),s=e.getStartAngle(),c=s+o,l=new L(-r*Math.sin(s),i*Math.cos(s)),u=new L(-r*Math.sin(c),i*Math.cos(c));l.normalize(),u.normalize(),l.rotateDirect(e.m_cosr,e.m_sinr),u.rotateDirect(e.m_cosr,e.m_sinr),t[0].setCoordsPoint2D(e.getStartXY()),t[2].setCoordsPoint2D(e.getEndXY()),t[1].setSub(t[2],t[0]);let d=l.crossProduct(u);return t[1].assign(l.mul(t[1].crossProduct(u)/d)),t[1].addThis(t[0]),a=Math.cos(o*.5),a}function Kl(e,t,r,i,a){if(i){let n=.5,r=Math.sqrt(t),i=Xe(.5)+2*r*n*.5+Xe(n),o=e[0].mul(Xe(.5)).add(e[1].mul(2*r*n*.5)).add(e[2].mul(Xe(n))).divThis(i);return a.constructCircularArcThreePoint(e[0],e[2],o),!0}let o=e[0].sub(e[1]),s=e[2].sub(e[1]),c=o.crossProduct(s),l=o.dotProduct(s),u=t;n(u<=1),n(u>0);let d=.5/(1-u),f=o.sqrLength(),p=l,m=s.sqrLength(),h=Xe(c),g=o.sub(s).sqrLength();if(h===0||l<=-(Math.sqrt(f)*Math.sqrt(m)))return Ol(a,e[0],e[2],1),!1;let _=[0,0],v=new F;v.setInfinite();let y=lr(2*h,-(g/u+4*p),2*(1-u)/u,v,!1,_);if(y===0)return Ol(a,e[0],e[2],1),!1;y===1&&(_[1]=_[0]);let b=Math.sqrt(d/_[0]),x=Math.sqrt(d/_[1]),S=.5/u,C=S-m*_[0],w=S-f*_[0];Math.abs(C)>Math.abs(w)?w=p*_[0]-S+1:C=p*_[0]-S+1;let T=o.mul(C).add(s.mul(w)),E=T.norm(1)<b*1e-15?0:Math.atan2(T.y,T.x)+Math.PI,D=o.add(s),O=r?r.clone():e[1].add(D.mul(d)),k=e[0].sub(O),ee=e[2].sub(O),A=k.crossProduct(ee)<0;return new zc,a.constructEllipticArcEndPointsCenter(e[0],e[2],b,x/b,E,!1,!A,O)}function ql(e,t,n,r,i){return Kl(e,t,n,r,i)}function Jl(e){let t=fn(e),n=!1;{let r=new L(e.m_semiMajorAxis*Math.cos(e.m_startAngle),e.getSemiMinorAxis()*Math.sin(e.m_startAngle));r.rotateDirect(e.m_cosr,e.m_sinr),r.addThis(e.m_center),n=L.distance(e.getStartXY(),r)>t}let r=!1;if(!n){let n=new L(e.m_semiMajorAxis*Math.cos(e.m_startAngle+e.m_sweepAngle),e.getSemiMinorAxis()*Math.sin(e.m_startAngle+e.m_sweepAngle));n.rotateDirect(e.m_cosr,e.m_sinr),n.addThis(e.m_center),r=L.distance(e.getEndXY(),n)>t}return!n&&!r}function Yl(e,n,r,i){r===0&&t(`construct_enclosing_circle`);let a=[0,0,0],o=Vc(n,r,a);if(o===1)e.constructCircleRadius(0,n[a[0]],i);else if(o===2){let t=L.lerp(n[a[0]],n[a[1]],.5),r=L.distance(n[a[0]],t),o=L.distance(n[a[1]],t);e.constructCircleRadius(Math.max(r,o),t,i)}else if(o===3){let t=L.calculateCircleCenterFromThreePoints(n[a[0]],n[a[1]],n[a[2]]),r=L.distance(n[a[0]],t),o=L.distance(n[a[1]],t),s=L.distance(n[a[2]],t);e.constructCircleRadius(Math.max(r,o,s),t,i)}else c(`unexpected`)}function Xl(e){if(Z(e)||e.isDegenerate(0))return 0;let t=e.m_semiMajorAxis,n=e.getSemiMinorAxis(),r=t*t+n*n,i=e.getStartAngle(),a=e.getEndAngle(),o=e.m_center.y-e.m_YStart,s=e.m_cosr,c=e.m_sinr,l=1,u=0;e.m_rotation&&(l=(s-c)*(s+c),u=2*s*c);let d=2*Math.cos(a+i)*Math.sin(a-i),f=-.5*(a-i)+.25*l*d,p=-2*Math.sin((a+i)*.5)*Math.sin((a-i)*.5),m=(f*n+p*s*o)*t/r,h=0;if(e.m_rotation){let e=-2*Math.sin(a+i)*Math.sin(a-i),t=2*Math.cos((a+i)*.5)*Math.sin((a-i)*.5),s=n*o/r;h=.125*e*u-s*t*c}let g=-.5*(e.m_XEnd-e.m_XStart)*(e.m_YEnd-e.m_YStart);return r*(m+h)+g}function Zl(e){e.queryCoord2D(.5,e.m_interior)}function Ql(e,t,n,r,i){if(i){if(du(t,n)!==0)return 2}else if(Gt(t,n))return 1;return eu(e,t,n,null,null,null,r,i!==void 0&&i,!0,!1)===0?0:4}function $l(e,t,n,r,i){if(i){if(du(t,n)!==0)return 2}else if(Gt(t,n))return 1;return tu(e,t,n,null,null,null,r,i!==void 0&&i,!0,!1)===0?0:4}function eu(e,t,r,i,a,o,s,c,l,u){if(Z(t))return Pn(new Q({start:t.getStartXY(),end:t.getEndXY()}),r,i,a,o,s,c,u);a!==null&&(a.length=0),o!==null&&(o.length=0),i!==null&&(i.length=0);let d=pn(t,r);if(s=Math.max(d,s),mn(t,r,s))return 0;let f=r.getStartXY();f.subThis(t.m_center);let p=r.getEndXY();p.subThis(t.m_center),f.rotateReverse(t.m_cosr,t.m_sinr),p.rotateReverse(t.m_cosr,t.m_sinr);let m=p.clone();m.subThis(f);let h=t.m_semiMajorAxis,g=1/h,_=t.getSemiMinorAxis(),v=1/_,y=m.clone();y.leftPerpendicularThis();let b=Math.atan2(_*y.y,h*y.x),x=I(16,NaN),S=I(16,NaN),C=0,w=[b,b+Math.PI];for(let e=0;e<2;++e){let n=gl(t,w[e]);if(n>=0&&n<=1){x[C]=n;let e=t.getCoord2D(x[C]);S[C]=r.getClosestCoordinate(e,!1),L.distance(e,r.getCoord2D(S[C]))<=s&&C++}}let T=f.x*g,E=f.y*v,D=m.x*g,O=m.y*v,k=T*T+E*E-1,ee=(T*D+E*O)*2,A=lr(D*D+O*O,ee,k,F.unit(),!1,S);n(A>=0);for(let e=0;e<A;e++){let n=m.mul(S[e]).add(f);n.x*=g,n.y*=v;let i=gl(t,Math.atan2(n.y,n.x));if(i>=0&&i<=1){x[C]=i;let e=t.getCoord2D(i);S[C]=r.getClosestCoordinate(e,!1),L.distance(e,r.getCoord2D(S[C]))<=s&&C++}}n(C<x.length+4);let j=I(16,NaN);A=t.intersectPoint(r.getStartXY(),j,s);for(let e=0;e<A;e++,C++)x[C]=j[e],S[C]=0;A=t.intersectPoint(r.getEndXY(),j,s);for(let e=0;e<A;e++,C++)x[C]=j[e],S[C]=1;A=r.intersectPoint(t.getStartXY(),j,s);for(let e=0;e<A;e++,C++)x[C]=0,S[C]=j[e];A=r.intersectPoint(t.getEndXY(),j,s);for(let e=0;e<A;e++,C++)x[C]=1,S[C]=j[e];return C===0?0:gu(e,t,r,x,S,C,i,a,o,s,c,l,u)}function tu(e,t,r,i,a,o,s,c,l,u){if(Z(t))return eu(e,r,new Q({start:t.getStartXY(),end:t.getEndXY()}),i,o,a,s,c,l,!u);if(Z(r))return eu(e,t,new Q({start:r.getStartXY(),end:r.getEndXY()}),i,a,o,s,c,l,u);let d=pn(t,r);s=Math.max(s,d);let f=!1;{let e=t.getSemiAxes(),i=t.getCenter(),u=r.getSemiAxes(),d=r.getCenter(),p=L.distance(d,i),m=e.x+u.x;if(p>m+s)return 0;if(e.y>u.x){if(p+u.x+s<e.y)return 0}else if(u.y>e.x&&p+e.x+s<u.y)return 0;if(l&&!c){let i=t.m_minorMajorRatio===1&&t.isClosed()&&t.isMajor(),s=r.m_minorMajorRatio===1&&r.isClosed()&&r.isMajor();if(i&&s&&(f=!0,p<=m&&Math.max(e.x,u.x)<=Math.min(e.x,u.x)+p))return n(!a&&!o),1}}if(!f&&mn(t,r,s))return 0;let p=[],m=[],h=Yc(t,0,0,!1,!1,p,m,null),g=[],_=[],v=Yc(r,0,0,!1,!1,g,_,null);if(h===1&&v===1){let e=new jr({points:p,weights:m}),n=new jr({points:g,weights:_}),d=[],f=[],h=uc(!1,e,n,i,a===null?null:d,o===null?null:f,s,c,l,u);if(h>0&&a!==null||o!==null){a&&(a.length=0),o&&(o.length=0);for(let i=0;i<h;++i){if(a){if(W(d[i],0,1))a.push(d[i]);else{let n=e.tToLength(d[i]),r=t.lengthToT(n);a.push(r)}}if(o){if(W(f[i],0,1))o.push(f[i]);else{let e=n.tToLength(f[i]),t=r.lengthToT(e);o.push(t)}}}}return h}let y=[],b=[],x=0,S=l&&!c;for(let e=0;e<h;e++){let n=new jr({points:p.slice(2*e,2*e+3),weights:m.slice(2*e,2*e+3)}),i=0;for(let a=0;a<v;a++){b.length<=a&&b.push(new jr({points:g.slice(2*a,2*a+3),weights:_.slice(2*a,2*a+3)}));let o=[],c=[],l=S?null:o,u=S?null:c,d=uc(!1,n,b[a],null,l,u,s,!1,S,!1);if(d>0&&S)return 1;for(let s=0;s<d;++s){if(o[s]===0&&e===0)o[s]=0;else if(o[s]===1&&e===h-1)o[s]=1;else{let e=n.tToLength(o[s])+x,r=t.lengthToT(e);o[s]=r}if(c[s]===0&&a===0)c[s]=0;else if(c[s]===1&&a===v-1)c[s]=1;else{let e=b[a].tToLength(c[s])+i,t=r.lengthToT(e);c[s]=t}y.push(Ue(o[s],c[s]))}i+=b[a].calculateLength2D()}x+=n.calculateLength2D()}if(y.length===0)return 0;if(c&&(y=y.filter(e=>W(e.first,0,1)&&W(e.second,0,1)?!t.getCoord2D(e.first).equals(r.getCoord2D(e.second)):!0)),l)return y.length;let C=[],w=[];for(let e of y)C.push(e.first),w.push(e.second);return gu(e,t,r,C,w,C.length,i,a,o,s,c,l,u)}function nu(e,t,n){if(n.setCoords(e.getCoord2D(t.vmin)),n.mergeNe(e.getCoord2D(t.vmax)),Z(e))return;let r=e.getSemiAxes(),i=[0,0,0,0];{let t=Math.atan2(-r.y*e.m_sinr,r.x*e.m_cosr),n=t+Math.PI,a=Math.atan2(r.y*e.m_cosr,r.x*e.m_sinr),o=a+Math.PI;i[0]=gl(e,t),i[1]=gl(e,n),i[2]=gl(e,a),i[3]=gl(e,o)}let a=new L;for(let r=0;r<4;r++){let o=i[r];t.containsExclusiveCoordinate(o)&&(e.queryCoord2D(o,a),n.mergeNe(a))}}function ru(e,t,r,i,a){if(e.m_semiMajorAxis===0)return r.vmin;let o=L.getNAN();e.queryCoord2D(r.vmin,o);let s=L.getNAN();if(e.queryCoord2D(r.vmax,s),Z(e))return new Q({start:o,end:s}).getClosestCoordinate(t,i);let c=ll(e,t);if(o=ll(e,o),s=ll(e,s),e.m_minorMajorRatio===1){if(c.isEqual(0,0))return r.vmin;let t=gl(e,Math.atan2(c.y,c.x));return i||r.containsCoordinate(t)?t:L.distance(c,o)<=L.distance(c,s)?r.vmin:r.vmax}let l=e.getSemiMajorAxis(),u=e.getSemiMinorAxis(),d=(l-u)*(l+u),f=Xe(d),p=c.x,m=c.y,h=Xe(u*m),g=u*d*m*2,_=[new H(h),new H(g),new H(f-Xe(l*p)-h),new H(-g),new H(-f)],v=U(H,4),y=xr(_,4,new F(-1,1),!1,v,4),b=r.vmin,x=L.sqrDistance(c,o);{let e=L.sqrDistance(c,s);e<x&&(b=r.vmax,x=e)}n(!i);let S=I(8,NaN);for(let t=0;t<y;++t){let n=v[t].value(),r=Math.sqrt(1-n*n),i=Math.atan2(n,r),a=Math.atan2(n,-r);S[t*2]=gl(e,i),S[t*2+1]=gl(e,a)}S=S.slice(0,y*2),et(S);for(let n=0,i=2*y;n<i;++n)if(S[n]>r.vmin&&S[n]<r.vmax){let r=L.sqrDistance(t,e.getCoord2D(S[n]));x>r&&(x=r,b=S[n])}return b}function iu(e,t,r){n(!Z(e));let i=new bt;i.setRotateAngle(-e.getAxisXRotation());let a=new L;i.queryTransform(t,a);let o=Math.atan2(-a.x*e.getMinorMajorRatio(),a.y),s=o+G(),c=gl(e,o),l=gl(e,s);l<c&&(l=R(c,c=l));let u=0;return c>=0&&c<=1&&(r[u++]=c),l>=0&&l<=1&&(r[u++]=l),u}function au(e,t,n){return e.m_semiMajorAxis!==t.m_semiMajorAxis||e.isMajor()===t.isMajor()||!e.m_center.equals(t.m_center)||e.m_sinr!==t.m_sinr||e.m_cosr!==t.m_cosr||e.m_minorMajorRatio!==t.m_minorMajorRatio?!1:n?e.isClockwise()!==t.isClockwise():e.isClockwise()===t.isClockwise()}function ou(e,t,n){if(Z(e)){n.setE(q.constructPoint2D(e.getEndXY()).subE(q.constructPoint2D(e.getStartXY())));return}{let r=new H;vl(e,t,r);let i=new q;if(i.setCoordsE(new H(e.m_semiMajorAxis).negate().mulE(new H().setSin(r)),new H(e.getSemiMinorAxis()).mulE(new H().setCos(r))),e.m_rotation){let t=new H(e.m_rotation);i.rotateDirect(new H().setCos(t),new H().setSin(t))}i.scaleThis(new H(e.getSweepAngle())),n.setE(i)}}function su(e,t,n,r){let i=e.getStartXY(),a=e.getEndXY(),o=i.equals(a),s=t.equals(n);if(!o&&!s){let r=new bt;r.setShiftCoords(-e.m_XStart,-e.m_YStart);let o=L.distance(t,n),s=L.distance(i,a),c=o/s;r.scale(c,c);let l=a.sub(i);l.divThis(s);let u=n.sub(t);u.divThis(o);let d=l.crossProduct(u),f=u.dotProduct(l);r.rotate(f,d),r.shiftCoords(t.x,t.y),Ml(e,r,!0,t,n);return}let c=new L;if(e.queryCoord2D(.5,c),s){if(o){let r=e.m_center.add(t.sub(i));e.constructEllipticArcEndPointsCenter(t,n,e.getSemiMajorAxis(),1,0,!0,!e.isClockwise(),r),e.setProjectionBehavior(0)}else if(!e.isMajor())e.constructCircularArcThreePoint(t,n,t);else{let r=c.sub(t).getUnitVector().mul(2*e.getSemiMajorAxis()).add(t);e.constructCircularArcThreePoint(t,n,r)}return}let l=t.add(n).mul(.5),u=n.sub(t);u.rightPerpendicularThis();let d=l.add(u),f=L.getClosestCoordinate(l,d,e.getCenter(),!0),p=new L;He(l,d,f,p);let m=L.distance(t,p);e.constructEllipticArcEndPointsCenter(t,n,m,1,0,!0,!e.isClockwise(),p),e.setProjectionBehavior(0)}function cu(e,t,r,i){let a=e.getStartXY(),o=e.getEndXY(),s=a.equals(o),c=t.equals(r);if(!s&&!c){let n=new bt;n.initializeFromTwoPoints(a,o,t,r),Ml(e,n,!0,t,r),e.endPointModified(),e.normalizeAfterEndpointChange();return}if(!e.isMajor()){Ol(e,t,r,1);return}if(s&&c){let n=e.m_center.add(t.sub(a));e.constructEllipticArcEndPointsCenter(t,r,e.getSemiMajorAxis(),e.getMinorMajorRatio(),e.getAxisXRotation(),!0,!e.isClockwise(),n);return}if(!s){let n=($e()-Math.abs(e.getSweepAngle()))*.5,i=(e.getSweepAngle()+n*Oe(e.getSweepAngle()))/e.getSweepAngle(),a=new L;e.queryCoord2D(i,a),e.constructEllipticArcEndPointsCenter(a,a,e.getSemiMajorAxis(),e.getMinorMajorRatio(),e.getAxisXRotation(),!0,!e.isClockwise(),e.getCenter());let o=e.getCenter().add(t.sub(a));e.constructEllipticArcEndPointsCenter(t,r,e.getSemiMajorAxis(),e.getMinorMajorRatio(),e.getAxisXRotation(),!0,!e.isClockwise(),o);return}let l=L.sqrDistance(t,r),u=L.sqrDistance(e.getCoord2D(.25),e.getCoord2D(.75)),d=.25,f=.75;if(l<u){let t=new sl(e,l),r=[0],i=sr(t,F.construct(0,.25),1,r);i>0&&(n(i===1),d=r[0],f=1-r[0])}let p=e.getCoord2D(d),m=e.getCoord2D(f);n(!p.equals(m)),e.constructEllipticArcEndPointsCenter(p,m,e.getSemiMajorAxis(),e.getMinorMajorRatio(),e.getAxisXRotation(),!0,!e.isClockwise(),e.m_center),cu(e,t,r)}function lu(e,t,n,r,i){return uu(e,!1,t,n,r,i)}function uu(e,t,n,r,a,o){let s=n.getGeometryType(),l=r.getGeometryType(),u=Math.max(a,pn(n,r));if(s===i.enumLine&&l===i.enumLine)return Nn(n,r,u,o);let d=n,f=r,p=n.getStartXY(),m=n.getEndXY();if(p.compare(m)>0&&(d=n.clone().reverse()),p=r.getStartXY(),m=r.getEndXY(),p.compare(m)>0&&(f=r.clone().reverse()),t){if(n.equals(r))return 2;if(Xt(n,r,u))return 4}switch(s){case i.enumLine:switch(l){case i.enumEllipticArc:return Ql(e,f,d,u,o);case i.enumBezier:return ko(e,f,d,u,o);case i.enumRationalBezier2:return ic(e,f,d,u,o);case i.enumBezier2:return zi(e,f,d,u,o);default:c(``)}break;case i.enumEllipticArc:switch(l){case i.enumLine:return Ql(e,d,f,u,o);case i.enumEllipticArc:return $l(e,d,f,u,o);case i.enumBezier:return Ao(e,f,d,u,o);case i.enumRationalBezier2:return ac(e,f,d,u,o);case i.enumBezier2:return Bi(e,f,d,u,o);default:c(``)}break;case i.enumBezier:switch(l){case i.enumLine:return ko(e,d,f,u,o);case i.enumEllipticArc:return Ao(e,d,f,u,o);case i.enumBezier:return jo(e,d,f,u,o);case i.enumRationalBezier2:return Mo(e,d,f,u,o);case i.enumBezier2:return No(e,d,f,u,o);default:c(``)}break;case i.enumRationalBezier2:switch(l){case i.enumLine:return ic(e,d,f,u,o);case i.enumEllipticArc:return ac(e,d,f,u,o);case i.enumBezier:return Mo(e,f,d,u,o);case i.enumRationalBezier2:return oc(e,d,f,u,o);case i.enumBezier2:return sc(e,d,f,u,o);default:c(``)}break;case i.enumBezier2:switch(l){case i.enumLine:return zi(e,d,f,u,o);case i.enumEllipticArc:return Bi(e,d,f,u,o);case i.enumBezier:return No(e,f,d,u,o);case i.enumRationalBezier2:return sc(e,f,d,u,o);case i.enumBezier2:return Vi(e,d,f,u,o);default:c(``)}break;default:c(``)}}function du(e,t,n=!0){if(!n&&!fu(e,t))return 0;let r=e.isLine()&&t.isLine();if(e.getStartXY().equals(t.getStartXY())&&e.getEndXY().equals(t.getEndXY())){if(r)return 1;let n=e.getGeometryType();if(n!==t.getGeometryType())return 0;if(n===i.enumBezier){let n=e,r=t;return n.getControlPoint1().equals(r.getControlPoint1())&&n.getControlPoint2().equals(r.getControlPoint2())?1:0}if(n===i.enumEllipticArc)return+!!au(e,t,!1);if(n===i.enumRationalBezier2){let n=e,r=t;if(n.getControlPoint1().equals(r.getControlPoint1())&&n.getStandardFormWeight()===r.getStandardFormWeight())return 1}else if(n===i.enumBezier2){let n=e,r=t;if(n.getControlPoint1().equals(r.getControlPoint1()))return 1}return 0}if(e.getStartXY().equals(t.getEndXY())&&e.getEndXY().equals(t.getStartXY())){if(r)return-1;let n=e.getGeometryType();if(n!==t.getGeometryType())return 0;if(n===i.enumBezier){let n=e,r=t;return n.getControlPoint1().equals(r.getControlPoint2())&&n.getControlPoint2().equals(r.getControlPoint1())?-1:0}if(n===i.enumEllipticArc)return au(e,t,!0),-1;if(n===i.enumRationalBezier2){let n=e,r=t;if(n.getControlPoint1().equals(r.getControlPoint1())&&n.getStandardFormWeight()===r.getStandardFormWeight())return-1}else if(n===i.enumBezier2){let n=e,r=t;if(n.getControlPoint1().equals(r.getControlPoint1()))return-1}return 0}return 0}function fu(e,t){let n=e.getGeometryType();return!(n!==t.getGeometryType()||n===i.enumEllipticArc&&e.projectionBehavior()!==t.projectionBehavior())}function pu(e,n,r,a,o,s,l){!o&&s&&t(``);let u=n.getGeometryType(),d=r.getGeometryType(),f=Math.max(l,pn(n,r));if(a&&(a.length=0),o&&(o.length=0),s&&(s.length=0),u===i.enumLine&&d===i.enumLine)return Pn(n,r,a,o,s,f,!1,!1);let p=n,m=r,h=n.getStartXY(),g=n.getEndXY(),_=!1,v=!1;h.compare(g)>0&&(p=n.clone(!0).reverse(),_=!0),h=r.getStartXY(),g=r.getEndXY(),h.compare(g)>0&&(m=r.clone(!0).reverse(),v=!0);let y=0;switch(u){case i.enumLine:switch(d){case i.enumEllipticArc:y=eu(e,m,p,a,s,o,f,!1,!1,!0);break;case i.enumBezier:y=Po(e,m,p,a,s,o,f,!1,!1,!0);break;case i.enumRationalBezier2:y=cc(e,m,p,a,s,o,f,!1,!1,!0);break;case i.enumBezier2:y=Hi(e,m,p,a,s,o,f,!1,!1,!0);break;default:c(``)}break;case i.enumEllipticArc:switch(d){case i.enumLine:y=eu(e,p,m,a,o,s,f,!1,!1,!1);break;case i.enumEllipticArc:y=tu(e,p,m,a,o,s,f,!1,!1,!1);break;case i.enumBezier:y=Fo(e,m,p,a,s,o,f,!1,!1,!0);break;case i.enumRationalBezier2:y=lc(e,m,p,a,s,o,f,!1,!1,!0);break;case i.enumBezier2:y=Ui(e,m,p,a,s,o,f,!1,!1,!0);break;default:c(``)}break;case i.enumRationalBezier2:switch(d){case i.enumLine:y=cc(e,p,m,a,o,s,f,!1,!1,!1);break;case i.enumEllipticArc:y=lc(e,p,m,a,o,s,f,!1,!1,!1);break;case i.enumBezier:y=Lo(e,m,p,a,s,o,f,!1,!1,!0);break;case i.enumRationalBezier2:y=uc(e,p,m,a,o,s,f,!1,!1,!1);break;case i.enumBezier2:y=dc(e,p,m,a,o,s,f,!1,!1,!1);break;default:c(``)}break;case i.enumBezier2:switch(d){case i.enumLine:y=Hi(e,p,m,a,o,s,f,!1,!1,!1);break;case i.enumEllipticArc:y=Ui(e,p,m,a,o,s,f,!1,!1,!1);break;case i.enumBezier:y=Ro(e,m,p,a,s,o,f,!1,!1,!0);break;case i.enumRationalBezier2:y=dc(e,m,p,a,s,o,f,!1,!1,!0);break;case i.enumBezier2:y=Wi(e,p,m,a,o,s,f,!1,!1,!1);break;default:c(``)}break;case i.enumBezier:switch(d){case i.enumLine:y=Po(e,p,m,a,o,s,f,!1,!1,!1);break;case i.enumEllipticArc:y=Fo(e,p,m,a,o,s,f,!1,!1,!1);break;case i.enumBezier:y=Io(e,p,m,a,o,s,f,!1,!1,!1);break;case i.enumRationalBezier2:y=Lo(e,p,m,a,o,s,f,!1,!1,!1);break;case i.enumBezier2:y=Ro(e,p,m,a,o,s,f,!1,!1,!1);break;default:c(``)}break;default:c(``)}if(_){if(o){for(let e=0;e<y;e++)o[e]=1-o[e];o.reverse()}a&&a.reverse(),s&&s.reverse()}if(v&&s)for(let e=0;e<y;e++)s[e]=1-s[e];return y}function mu(e,t,n){return t===n?0:(t>n&&(n=R(t,t=n)),e.cut(t,n,!0).calculateUpperLength2D())}function hu(e,t,n,r,i){let a=[],o=[],s=[];for(let c=0,l=i;c<l;c++)a.push(e.calculateSubLengthFromStart(n[c])),o.push(t.calculateSubLengthFromStart(r[c])),W(n[c],0,1)&&W(r[c],0,1)&&e.getCoord2D(n[c]).equals(t.getCoord2D(r[c]))&&s.push(c);if(s.length===0||s.length===i)return;s.sort((e,t)=>n[e]<n[t]?-1:n[e]>n[t]?1:r[e]<r[t]?-1:+(r[e]>r[t]));let c=-1;for(let l of s){if(c>=0&&n[l]===n[c]&&n[l]===n[c]){c=l;continue}c=l;let s=[];s.length=i;for(let e=0;e<s.length;++e)s[e]=e;s.sort((e,t)=>{let n=a[l],r=o[l],i=a[e]-n,s=o[e]-r,c=i*i+s*s,u=a[t]-n,d=o[t]-r,f=u*u+d*d;return c<f?-1:+(c>f)});for(let a=0;a<i;a++){let i=s[a];if(i===l||n[i]===n[l]&&r[i]===r[l]||W(n[i],0,1)&&W(r[i],0,1))continue;let o=(n,r,i,a)=>{let o=new q,s=new H;s.setWithEps(1);let c=new H;c.set(r,s.eps()),e.queryCoord2DE(c,o);let l=new q;e.queryCoord2DE(new H(n),l);let u=!1;return o.eq(l)&&(c.set(a,s.eps()),t.queryCoord2DE(c,o),t.queryCoord2DE(new H(i),l),u=o.eq(l)),!u},c=L.getNAN();e.queryCoord2D(n[i],c);let u=L.getNAN();if(t.queryCoord2D(r[i],u),L.distance(c,u)===0&&o(n[l],n[i],r[l],r[i]))break;let d=new F(r[i],r[l]);d.normalizeNoNAN();let f=new F(n[i],n[l]);f.normalizeNoNAN();let p=-1,m=1/0,h=1/0,g=n[i];c.assign(e.getCoord2D(g));for(let a=0;a<5;a++){let a=t.getClosestCoordinateOnInterval(c,d,-1);u.assign(t.getCoord2D(a));let s=L.distance(c,u);if(g=e.getClosestCoordinateOnInterval(u,f,-1),g===n[l]&&a===r[l]){p=1;break}c.assign(e.getCoord2D(g));let _=L.distance(u,c);if(_<h&&s<m){if(_===0&&s===0){o(n[l],n[i],r[l],r[i])?(n[i]=g,r[i]=a,p=0):p=1;break}h=_,m=s;continue}p=0;break}if(p===-1&&(p=W(n[i],0,1)||W(r[i],0,1)?0:1),p===1)n[i]=n[l],r[i]=r[l];else break}}}function gu(e,t,n,r,i,a,o,s,c,l,u,d,f){if(!a)return 0;let p=(e,t)=>{for(let n=0;n<a;++n){let r=t[n];if(W(r,0,1)){r=pt(r);continue}let i=e.getCoord2D(r);r<.5?i.equals(e.getStartXY())&&mu(e,0,r)<=fn(e)&&(t[n]=0):i.equals(e.getEndXY())&&mu(e,r,1)<=fn(e)&&(t[n]=1)}};p(t,r),p(n,i),hu(t,n,r,i,a);let m=[];for(let e=0,t=a;e<t;e++)m.push(e);let h=(e,t)=>f?mt(i[e],r[e],i[t],r[t]):mt(r[e],i[e],r[t],i[t]);if(m.length>1){m.sort(h);let e=Math.max(fn(t),fn(n)),a=0;for(let o=1,s=m.length;o<s;o++){let s=r[m[a]],c=r[m[o]],l=i[m[a]],u=i[m[o]];if(s!==c||l!==u){if(mu(t,s,c)<=e&&mu(n,l,u)<=e&&!(W(s,0,1)&&W(l,0,1)||W(c,0,1)&&W(u,0,1))){let e=L.distance(t.getCoord2D(s),n.getCoord2D(l)),r=L.distance(t.getCoord2D(c),n.getCoord2D(u));if(e<=r)continue;if(r<e){m[a]=m[o];continue}continue}a++,m[a]=m[o]}}if(m.length=a+1,m.length===1&&m[0]!==0&&(r[0]=r[m[0]],i[0]=i[m[0]],m[0]=0),m.length>2){let e=F.constructEmpty(),a=F.constructEmpty();e.setCoords(r[m[0]],r[m.at(-1)]),a.setCoords(i[m[0]],i[m.at(-1)]);let o=!0;for(let t=1,n=m.length-1;t<n;t++)if(!e.containsCoordinate(r[m[t]])||!a.containsCoordinate(i[m[t]])){o=!1;break}if(o){let r=[.5,.2,.7,.1,.3,.4,.6,.8,.9];for(let i=0;i<r.length;i++){let s=V(e.vmin,e.vmax,r[i]),c=t.getCoord2D(s);if(!n.isCloserThanDistance(c,a,l)){o=!1;break}s=V(a.vmin,a.vmax,r[i]);let u=n.getCoord2D(s);if(!t.isCloserThanDistance(u,e,l)){o=!1;break}}}o&&(m[1]=m.at(-1),m.length=2)}}if(m.length===1&&e){let e=r[0],a=i[0];Yt(t,n,e,a,l,1,[0],[0])&&(m.push(1),r[1]=0,i[1]=0,m.sort(h))}if(u&&m.length===1){let e=!0;for(let a=0,o=m.length;a<o;a++)if(!(W(r[m[a]],0,1)&&W(i[m[a]],0,1)&&L.distance(t.getCoord2D(r[m[a]]),n.getCoord2D(i[m[a]]))===0)){e=!1;break}if(e)return 0}let g=0;for(let e=0,n=m.length;e<n;e++){if(s&&s.push(r[m[e]]),c&&c.push(i[m[e]]),o){let n=L.getNAN();t.queryCoord2D(r[m[e]],n),o.push(n)}g++}return g}function _u(e,t,n,r,i,a,o,s,c){if(W(n,0,1)&&W(r,0,1)&&L.distance(e.getCoord2D(n),t.getCoord2D(r))===0){let l=1e-12,u=new q,d=2**-52;if(e.queryDerivative(new H(n,d),u),u.isTrueZero()){let t=n===1?-1e-12:l;e.queryDerivative(new H(n,d).add(t),u)}n===1&&u.negateThis();let f=new q;if(t.queryDerivative(new H(r,d),f),f.isTrueZero()){let e=n===1?-1e-12:l;t.queryDerivative(new H(r,d).add(e),f)}r===1&&f.negateThis(),u.isZero()||u.normalize(),f.isZero()||f.normalize();let p=u.dotProduct(f),m=u.crossProduct(f);if(m.scaleError(3),p.ge(xe)&&(m.isZero()||Math.abs(m.value())<(()=>{if(c)return .001;{let n=e.calculateUpperLength2D(),r=t.calculateUpperLength2D();return Math.min(i*.01/Math.min(n,r),1e-10)}})()))return Jt(e,t,n,r,i,a,o,s)}return 0}function vu(e,t,r,i,a){let o=-1,s=-1,c=-1,l=-1;{let n=[0,t],a=[t,0],u=[0,i],d=[i,0];for(let t=0;t<2&&o===-1;++t)for(let i=0;i<2;++i)if(e[n[t]].equals(r[u[i]])){o=n[t],s=a[t],c=u[i],l=d[i];break}}if(o===-1){let n=new Ft;n.setFromPoints(e,t+1);let o=new Ft;return o.setFromPoints(r,i+1),o.inflate(a),n.isIntersectingW(o)?-1:0}{let u=I(t+1,NaN),d=Ta(e,t+1,u);n(d>1);let f=0,p=0;for(let e=0;e<d;++e)o===u[e]&&(p=e,f++),s===u[e]&&f++;if(f!==2)return-1;let m=I(i+1,NaN),h=Ta(r,i+1,m);n(h>1),f=0;let g=0;for(let e=0;e<h;++e)c===m[e]&&(g=e,f++),l===m[e]&&f++;if(f!==2)return-1;let _=e[u[(p+d-1)%d]],v=e[u[(p+1)%d]],y=r[m[(g+h-1)%h]],b=r[m[(g+1)%h]],x=e[o],S=[_,v,y,b],C=[0,1,2,3];C.sort((e,t)=>L.compareVectorsOrigin(x,S[e],S[t]));let w=C[0];for(let e=1;e<4;e++){if(C[e]!==(w+1)%4)return-1;w=C[e]}{let e=_.sub(x),t=b.sub(x),n=t.dotProduct(e);if(n>0){let r=t.crossProduct(e),i=Math.abs(Math.atan2(r,n)),o=i*e.length(),s=i*t.length();if(o<=a||s<=a)return-1}}{let e=v.sub(x),t=y.sub(x),n=t.dotProduct(e);if(n>0){let r=t.crossProduct(e),i=Math.abs(Math.atan2(r,n)),o=i*e.length(),s=i*t.length();if(o<=a||s<=a)return-1}}return 1}}var yu=C;class Q extends Sn{static type=i.enumLine;constructor(e){super(e||{XStart:0,YStart:0,XEnd:0,YEnd:0})}assignMove(e){return this!==e&&(this.m_description=e.m_description,e.m_description=null,this.m_attributes=e.m_attributes,e.m_attributes=null,this.m_XStart=e.m_XStart,e.m_XStart=NaN,this.m_YStart=e.m_YStart,this.m_XEnd=e.m_XEnd,e.m_XEnd=NaN,this.m_YEnd=e.m_YEnd),this}assignCopy(e){return this!==e&&e.copyTo(this),this}calculateLowerLength3D(){return n(0),0}calculateUpperLength3D(){return n(0),0}changeEndPoints3D(e,t){n(0)}getClosestCoordinate3D(e,t,r){return n(0),0}getBoundary(){return ar(this)}getAttributeAsDbl(e,t,n){if(t===0)return n===0?Tn(this,e):En(this,e);let r=yu.getInterpolation(t),i=this.getStartAttributeAsDbl(t,n),a=this.getEndAttributeAsDbl(t,n);return ke(r,i,a,e,yu.getDefaultValue(t))}constructFromCoords(e,t,n,r){this.dropAllAttributes(),this.setStartXYCoords(e,t),this.setEndXYCoords(n,r)}construct(e,t){this.dropAllAttributes(),this.setStartXY(e),this.setEndXY(t)}construct3D(e,t){n(0)}constructPoint(e,t){this.assignVertexDescription(e.getDescription()),this.mergeVertexDescription(t.getDescription()),this.setStart(e),this.setEnd(t)}getGeometryType(){return Q.type}queryEnvelope(e){if(e.m_EnvelopeType===4){e.setEmpty(),e.assignVertexDescription(this.m_description);let t=K.constructEmpty();this.queryEnvelope(t),e.setEnvelope(t);for(let t=1,n=this.m_description.getAttributeCount();t<n;t++){let n=this.m_description.getSemantics(t);for(let r=yu.getComponentCount(n);t<r;t++){let t=this.queryInterval(n,0);e.setIntervalEnvelope(n,0,t)}}}else e.m_EnvelopeType===2?e.setCoords({xmin:this.m_XStart,ymin:this.m_YStart,xmax:this.m_XEnd,ymax:this.m_YEnd}):e.m_EnvelopeType===3?(e.setEmpty(),e.mergeCoords(this.m_XStart,this.m_YStart,cn(this,0,1,0)),e.mergeCoords(this.m_XEnd,this.m_YEnd,cn(this,1,1,0))):s(`env type not impl`)}applyTransformation(e){n(e instanceof bt);let t=new L;t.x=this.m_XStart,t.y=this.m_YStart,e.transformInPlace(t),this.m_XStart=t.x,this.m_YStart=t.y,t.x=this.m_XEnd,t.y=this.m_YEnd,e.transformInPlace(t),this.m_XEnd=t.x,this.m_YEnd=t.y}createInstance(){return new Q({vd:this.m_description})}calculateLength2D(){return Math.sqrt(Hn(this))}calculateLength3D(e){return n(0),0}changeEndPoints2D(e,t){this.setStartXY(e),this.setEndXY(t),this.normalizeAfterEndpointChange()}queryControlPointsHelper(e){return n(e.length>=2),e[0]=this.getStartXY(),e[1]=this.getEndXY(),2}queryCoord2D(e,t){return Cn(this,e,t)}queryCoord3D(e,t){n(0)}getCoordZ(e){return Dn(this,e)}queryCoord2DE(e,t){kn(this,e,t)}queryCoord2DMP(e,t){t.assignPoint2D(this.getStartXY());let n=J.constructPoint2D(this.getEndXY());n.subThis(t),n.mulThis(B.constructDouble(e)),t.addThis(n)}getCoordX(e){return Tn(this,e)}getCoordY(e){return En(this,e)}cut(e,t,n){let r=new $;return this.queryCut(e,t,r,n),r.releaseSegment()}queryCut(e,t,n,r){let i=n.createLine();r&&i.assignVertexDescription(this.m_description);let a=L.getNAN();if(Cn(this,e,a),i.setStartXYCoords(a.x,a.y),Cn(this,t,a),i.setEndXYCoords(a.x,a.y),!r)for(let n=1,r=this.m_description.getAttributeCount();n<r;n++){let r=this.m_description.getSemantics(n),a=yu.getComponentCount(r);for(let n=0;n<a;n++){let a=this.getAttributeAsDbl(e,r,n);i.setStartAttribute(r,n,a);let o=this.getAttributeAsDbl(t,r,n);i.setEndAttribute(r,n,o)}}}queryDerivative(e,t){On(this,e,t)}getClosestCoordinate(e,t){return L.getClosestCoordinate(this.getStartXY(),this.getEndXY(),e,t)}getClosestCoordinateOnInterval(e,t,n=-1){let r=new L;this.queryCoord2D(t.vmin,r);let i=new L;this.queryCoord2D(t.vmax,i);let a=L.getClosestCoordinate(r,i,e,!1);return _n.recalculateParentT(t.vmin,t.vmax,a)}intersectionOfYMonotonicWithAxisX(e,t){let n=this.m_YEnd-this.m_YStart;if(!n)return e===this.m_YEnd?t:NaN;let r=(e-this.m_YStart)/n,i=Tn(this,r);return r===1&&(i=this.m_XEnd),i}isCurve(){return!1}isMonotoneQuickAndDirty(){return!0}isDegenerate(e){let t=this.m_XStart-this.m_XEnd,n=this.m_YStart-this.m_YEnd;return Math.sqrt(t*t+n*n)<=e}isDegenerate3D(e,t){return n(0),!1}queryLooseEnvelope(e){this.queryEnvelope(e)}clone(e){let t=new Q;return this.copyTo(t),t}tToLength(e){return e*this.calculateLength2D()}lengthToT(e){let t=this.calculateLength2D();return t===0?0:e/t}calculateWeightedAreaCentroid2D(e){let t=new L;return t.setCoords(0,0),t}calculateWeightedCentroid2D(){return this.getCoord2D(.5).mul(this.calculateLength2D())}getTangent(e){let t=L.getNAN();return t.setSub(this.getEndXY(),this.getStartXY()),t}getDerivative(e){let t=new L;return t.setSub(this.getEndXY(),this.getStartXY()),t}getCurvature(e){return 0}isIntersectingPoint(e,t,n){return Rn(this,e,t,n)>=0}isIntersectingPoint3D(e,t,r,i,a=1){return n(0),!1}getYMonotonicParts(e,t){return 0}getMonotonicParts(e,t){return 0}getMonotonicPartParams(e,n){return n&&(e<2&&t(``),n[0]=0,n[1]=1),2}intersectionWithAxis2D(e,t,n,r){if(e){let e=this.m_YEnd-this.m_YStart;if(!e)return t===this.m_YEnd?-1:0;let i=(t-this.m_YStart)/e;return i<0||i>1?0:(n&&(n[0]=Tn(this,i)),r&&(r[0]=i),1)}{let e=this.m_XEnd-this.m_XStart;if(!e)return t===this.m_XEnd?-1:0;let i=(t-this.m_XStart)/e;return i<0||i>1?0:(n&&(n[0]=En(this,i)),r&&(r[0]=i),1)}}calculateUpperLength2D(){return this.calculateLength2D()}calculateLowerLength2D(){return this.calculateLength2D()}normalizeAfterEndpointChange(){return!1}queryLooseEnvelopeOnInterval(e,t){if(t.m_EnvelopeType===2){let n=we(e.vmin,0,1),r=new L;this.queryCoord2D(n,r),t.setCoords({pt:r}),n=we(e.vmax,0,1),this.queryCoord2D(n,r),t.mergeNe(r);return}s(`3d dst not impl`)}orientBottomUp(){Mn(this)}isLine(){return!0}isDegenerateToLineHelper(e){return!0}copyIgnoreAttributes(e){e.setStartXY(this.getStartXY()),e.setEndXY(this.getEndXY()),e.normalizeAfterEndpointChange()}calculateArea2DHelper(){return 0}absNormXYZ(e){return jn(this,e)}absNorm(){return this.getStartXY().norm(1)+this.getEndXY().norm(1)}queryEnvelopeW(e,t){t.setCoords(this.getCoord2D(e.vmin)),t.mergeNe(this.getCoord2D(e.vmax))}setSegmentFromCoordsForStitcher(e,t){An(this,e[0],e[t-1])}writeInBufferStream(e,t){return n(0),0}readFromBufferStream(e,t){n(0)}snapControlPoints(e){return!1}needsSnapControlPoints(e){return!1}calculateSpecialPointsForCracking(e,t){return 0}ensureXYMonotone(){return!1}setCoordsForIntersector(e,t,n){An(this,e,t)}static isIntersectingLineLine(e,t,n,r){return Nn(e,t,n,r)}static isIntersectingLineLine_(e,t,n,r){return Nn(e,t,n,r)}copyToImpl(e){}reverseImpl(){}equalsImpl(e){return!0}equalsImplTol(e,t){return!0}swapImpl(e){}afterCompletedModification(){}endPointModified(){}clearEndPointModified(){}intersect(e,t,n,r,i){return pu(!1,this,e,t,n,r,i)}intersectPoint(e,t,n){t.length<1&&r(``);let i=Rn(this,e,n,!1);return i>=0?(t&&(t[0]=i),1):0}isIntersecting(e,t,n){return lu(!1,this,e,t,n)!==0}static segmentIntersectRobust(e,t,n,r,i,a){function o(e,t,n){return K.construct(e.x,e.y,t.x,t.x).contains(n)}a.length=0;let s=q.constructPoint2D(e),c=q.constructPoint2D(t),l=q.constructPoint2D(n),u=q.constructPoint2D(r),d=c.subThisE(s),f=l.subE(u),p=l.subThisE(s),m=d.crossProduct(f);if(m.eps()<.5*Math.abs(m.value())){let e=p.crossProduct(f).divE(m),t=d.crossProduct(p).divE(m);if(!t.isInInterval(Ae)||!e.isInInterval(Ae))return 0;if(t.isInIntervalExclusive(Ae)&&e.isInIntervalExclusive(Ae)&&t.eps()<i&&e.eps()<i)return a.push(e.value(),t.value()),1}let h=J.constructPoint2D(e),g=J.constructPoint2D(t),_=J.constructPoint2D(n),v=J.constructPoint2D(r),y=g.subThis(h),b=_.sub(v),x=_.subThis(h),S=y.crossProduct(b);if(S.isZero())return o(e,t,n)||o(e,t,r)||o(n,r,e)||o(n,r,t)?-1:0;let C=x.crossProduct(b).div(S),w=y.crossProduct(x).div(S);return C.GEZ()&&w.GEZ()&&C.lte(je)&&w.lte(je)?(a.push(C.toDouble(),w.toDouble()),1):0}}class ${m_seg=null;m_curves=null;m_lineBuffer=new Q;m_mask=0;m_active=0;constructor(e){if(e!==void 0){if(e.copy){e.copy.copyTo(this,!1);return}if(e.move){this.assignMove(e.move);return}if(e.segment){this.copyFrom(e.segment,!!e.bIgnoreAttributes);return}c(`bad constructor params`)}}assignCopy(e){return e instanceof $?this!==e&&e.copyTo(this,!1):this.copyFrom(e,!1),this}assignMove(e){if(e instanceof $){if(this===e)return this;this.reset(),e.m_mask&1&&(this.m_lineBuffer=e.m_lineBuffer,e.m_lineBuffer=null,this.m_mask=1),this.m_curves=e.m_curves,this.m_mask=e.m_mask,this.m_active=e.m_active,e.reset(),this.m_seg=this.activeSegment(),e.m_seg=null}else{if(this.m_seg===e)return this;this.create(e.getGeometryType()),this.m_seg.swap(e)}return this}activeSegment(){switch(this.m_active){case 0:return null;case 1:return this.line();case 2:return this.arc();case 4:return this.bezier3();case 8:return this.bezier2();case 16:return this.rbezier2();default:c(``)}}get(){return this.m_seg}reset(){this.m_mask&1&&(this.m_lineBuffer=null),this.m_mask>1&&(this.m_curves=null),this.m_mask=0,this.m_active=0}empty(){return this.m_seg===null}copyTo(e,t){if(this!==e){if(this.empty()){e.m_seg=null;return}e.copyFrom(this.m_seg,t)}}copyToWithZ(e,t){n(0)}createImpl(e){switch(e){case i.enumLine:this.m_mask&1||(this.m_lineBuffer=new Q,this.m_mask|=1,this.m_active=1);break;case i.enumEllipticArc:this.m_mask&2||(this.m_curves=new zc,this.m_mask=this.m_mask&1|2,this.m_active=2);break;case i.enumBezier:this.m_mask&4||(this.m_curves=new ls,this.m_mask=this.m_mask&1|4,this.m_active=4);break;case i.enumBezier2:this.m_mask&8||(this.m_curves=new Nr,this.m_mask=this.m_mask&1|8,this.m_active=8);break;case i.enumRationalBezier2:this.m_mask&16||(this.m_curves=new jr,this.m_mask=this.m_mask&1|16,this.m_active=16);break;default:t(``)}}create(e){e===i.enumLine?this.createLine():e===i.enumEllipticArc?this.createEllipticArc():e===i.enumBezier?this.createCubicBezier():e===i.enumRationalBezier2?this.createQuadraticRationalBezier():e===i.enumBezier2?this.createQuadraticBezier():t(`Segment_buffer.create`)}copyFrom(e,t){this.m_seg!==e&&(this.create(e.getGeometryType()),t?e.copyIgnoreAttributes(this.m_seg):e.copyTo(this.m_seg))}copyFromWithZ(e,t){n(0)}line(){return this.m_lineBuffer}arc(){return this.m_curves}bezier3(){return this.m_curves}bezier2(){return this.m_curves}rbezier2(){return this.m_curves}createLine(){return this.createImpl(i.enumLine),this.m_seg=this.line(),this.line()}createEllipticArc(){return this.createImpl(i.enumEllipticArc),this.m_seg=this.arc(),this.arc()}createCubicBezier(){return this.createImpl(i.enumBezier),this.m_seg=this.bezier3(),this.bezier3()}createQuadraticRationalBezier(){return this.createImpl(i.enumRationalBezier2),this.m_seg=this.rbezier2(),this.rbezier2()}createQuadraticBezier(){return this.createImpl(i.enumBezier2),this.m_seg=this.bezier2(),this.bezier2()}releaseSegment(){if(this.m_seg=null,this.m_active===0&&c(`releaseSegment`),this.m_active&1){let e=this.line();return--this.m_mask,this.m_active=0,this.m_lineBuffer=null,e}let e;return this.m_active&2?e=this.arc():this.m_active&4?e=this.bezier3():this.m_active&8?e=this.bezier2():this.m_active&16?e=this.rbezier2():c(`releaseSegment`),this.m_mask-=this.m_active,this.m_active=0,this.m_curves=null,e}equals(e){return e instanceof $?this===e?!0:this.empty()?e.empty():!e.empty()&&this.get().equals(e.get()):(s(`seg comparison not yet impl`),!1)}}export{du as $,ir as A,lu as B,Ma as C,Xc as D,Ca as E,qc as F,yn as G,Yc as H,ls as I,Sc as J,ql as K,Q as L,Pt as M,_n as N,qt as O,ma as P,jr as Q,wt as R,$ as S,uu as T,fn as U,xa as V,pu as W,Mn as X,J as Y,q as Z,_l as _,nr as a,fu as a0,_u as a1,Sa as a2,Lc as a3,Pc as a4,Hl as a5,Ul as a6,Nl as a7,dl as a8,Xn as a9,Nc as b,ar as c,Gc as d,ka as e,wa as f,bn as g,Dt as h,Da as i,Ln as j,Bc as k,zc as l,Vc as m,_a as n,va as o,Kc as p,lr as q,kt as r,Tt as s,sr as t,_o as u,Et as v,Ka as w,ni as x,Kn as y,qn as z};
|
|
2
|
+
import{r as e,d as t,a as n,g as r,b as i,B as a,A as o,G as s,i as c,C as l,j as u,o as d,q as f,h as p,f as m,D as h,k as g,p as _}from"./Geometry.js";import{V as v,K as y,L as b,M as x,N as S,O as C,k as w,Q as T,R as E,U as D,r as O,W as k,X as ee,E as A,Y as j,Z as te,_ as ne,$ as re,A as ie,a0 as M,a1 as ae,a2 as oe,P as N,u as se,a3 as ce,a as le,B as ue,S as de,T as fe,a4 as pe}from"./Envelope.js";import{a4 as me,P,a5 as F,M as I,c as L,f as he,E as R,s as z,r as B,a6 as ge,Z as V,a7 as _e,T as ve,g as ye,d as H,a8 as be,a as xe,a9 as U,I as Se,aa as Ce,i as we,Q as Te,ab as Ee,K as De,G as Oe,h as ke,ac as Ae,ad as je,ae as Me,af as Ne,ag as Pe,ah as Fe,ai as Ie,aj as Le,ak as W,l as Re,al as ze,b as Be,am as Ve,an as He,J as Ue,o as We,ao as Ge,ap as Ke,aq as qe,ar as Je,as as Ye,at as Xe,e as Ze,X as Qe,au as $e,av as et,w as tt,aw as nt,ax as rt,x as it,ay as at,az as ot,aA as st,aB as ct,aC as lt,aD as ut,aE as dt,v as ft,p as pt,aF as mt,aG as ht,aH as gt,aI as _t,aJ as vt,aK as yt,a2 as bt}from"./Point2D.js";import{Envelope2D as G}from"./Envelope2D.js";import{T as xt}from"./Transformation2D.js";import{G as St}from"./GeometryCursor.js";class Ct{m_EnvelopeType=5;envAabb=G.constructEmpty();envRot=G.constructEmpty();static constructEmpty(){return new Ct}width(){return this.envAabb.width()}height(){return this.envAabb.height()}maxDim(){return Math.max(this.width(),this.height())}setEmpty(){this.envAabb.setEmpty(),this.envRot.setEmpty()}setCoords(e){this.envAabb.setCoords(e),this.envRot.setCoords({x:Et(e),y:Dt(e)})}setFromPoints(e,t){this.setEmpty(),this.mergePoints(e,t)}mergeNe(e){this.envAabb.mergeNe(e),this.envRot.mergeNeCoords(Et(e),Dt(e))}mergePoints(e,t){this.envAabb.mergePoints(e,t);for(let n=0;n<t;)if(this.envRot.isEmpty()){let t=Et(e[n]),r=Dt(e[n]);this.envRot.setCoords({x:t,y:r}),n++}else{for(let r=n;r<t;r++){let t=Et(e[r]),n=Dt(e[r]);this.envRot.mergeNeCoords(t,n)}break}}isIntersectingPoint2D(e){return!!(this.envAabb.contains(e)&&this.envRot.containsCoords(Et(e),Dt(e)))}isIntersectingW(e){return this.envAabb.isIntersecting(e.envAabb)&&this.envRot.isIntersecting(e.envRot)}containsW(e){return!!(this.envAabb.containsEnvelope(e.envAabb)&&this.envRot.containsEnvelope(e.envRot))}containsPoint2D(e){return this.isIntersectingPoint2D(e)}intersectW(e){let t=this.envAabb.intersect(e.envAabb),n=this.envRot.intersect(e.envRot);return t&&!n&&this.envAabb.setEmpty(),n&&!t&&this.envRot.setEmpty(),t&&n}inflate(e){this.envAabb.inflateCoords(e,e);let t=e*me();this.envRot.inflateCoords(t,t),t<0&&Ct.st_reduceEmpty(this)}static st_reduceEmpty(e){let t=e.envAabb.isEmpty(),n=e.envRot.isEmpty();t&&!n?e.envRot.setEmpty():n&&!t&&e.envAabb.setEmpty()}sqrMaxMinDistance(e){let t=this.envAabb.sqrMaxMinDistance(e),n=this.envRot.sqrMaxMinDistance(Ot(e))/2;return Math.max(t,n)}sqrMinDistance(e){let t=this.envAabb.sqrMinDistance(e),n=this.envRot.sqrMinDistance(Ot(e))/2;return Math.max(t,n)}sqrMaxDistance(e){let t=this.envAabb.sqrMaxDistance(e),n=this.envRot.sqrMaxDistance(Ot(e))/2;return Math.max(t,n)}getEnvelope2D(){return this.envAabb}getRotatedEnvelope2D(){return this.envRot}xyRot(e,t){let n=wt(e.x,e.y),r=Tt(e.x,e.y);t.setCoords(n,r)}}function wt(e,t){return e-t}function Tt(e,t){return e+t}function Et(e){return e.x-e.y}function Dt(e){return e.x+e.y}function Ot(e){return new P(Et(e),Dt(e))}class K{x=V.getNAN();y=V.getNAN();static getNAN(){return new K}static constructPoint2D(e){let t=new K;return t.x.set(e.x),t.y.set(e.y),t}static constructCoords(e,t){let n=new K;return n.x.set(e),n.y.set(t),n}static constructCoordsE(e,t){let n=new K;return n.setCoordsE(e,t),n}get 0(){return this.x.clone()}set 0(e){this.x.setE(e)}get 1(){return this.y.clone()}set 1(e){this.y.setE(e)}clone(){return new K().setE(this)}scaleThis(e){return this.x.mulThisE(e),this.y.mulThisE(e),this}setCoords(e,t){return this.x.set(e),this.y.set(t),this}setCoordsE(e,t){return this.x.setE(e),this.y.setE(t),this}set(e){return this.x.set(e.x),this.y.set(e.y),this}setE(e){return this.x.setE(e.x),this.y.setE(e.y),this}setWithEps(e,t){return this.x.setWithEps(e.x,t),this.y.setWithEps(e.y,t),this}getUnitVector(){let e=this.clone();return e.normalize(),e}sqrLength(){return this.x.sqr().addE(this.y.sqr())}length(){return this.sqrLength().sqrt()}mulE(e){let t=new K;return t.setCoordsE(this.x.mulE(e),this.y.mulE(e)),t}mul(e){let t=new K;return t.setCoordsE(this.x.mul(e),this.y.mul(e)),t}mulThis(e){return this.x.mulThis(e),this.y.mulThis(e),this}mulThisE(e){return this.x.mulThisE(e),this.y.mulThisE(e),this}divE(e){return this.clone().divThisE(e)}divThisE(e){return this.x.divThisE(e),this.y.divThisE(e),this}normalize(){let e=this.length();e.value()===0?(this.x=_e.clone(),this.y=ve.clone()):(this.x.divThisE(e),this.y.divThisE(e))}addE(e){return this.clone().addThisE(e)}addThisE(e){return this.x.addThisE(e.x),this.y.addThisE(e.y),this}subE(e){return this.clone().subThisE(e)}subThisE(e){return this.x.subThisE(e.x),this.y.subThisE(e.y),this}static distance(e,t){return e.subE(t).length()}negateThis(){return this.x.negateThis(),this.y.negateThis(),this}eq(e){return this.x.eq(e.x)&&this.y.eq(e.y)}isZero(){return this.x.isZero()&&this.y.isZero()}isTrueZero(){return!this.x.value()&&!this.y.value()}rotateDirect(e,t){let n=this.x.mulE(e).subThisE(this.y.mulE(t)),r=this.x.mulE(t).addThisE(this.y.mulE(e));return this.x.setE(n),this.y.setE(r),this}rotateReverse(e,t){let n=this.x.mulE(e).addThisE(this.y.mulE(t)),r=this.x.negate().mulThisE(t).addThisE(this.y.mulE(e));return this.x.setE(n),this.y.setE(r),this}dotProduct(e){return this.x.mulE(e.x).addE(this.y.mulE(e.y))}crossProduct(e){return this.x.mulE(e.y).subE(this.y.mulE(e.x))}value(){return P.construct(this.x.value(),this.y.value())}}class kt{a11=new V(1);a12=new V(0);a21=new V(0);a22=new V(1);clone(){let e=new kt;return e.a11.setE(this.a11),e.a12.setE(this.a12),e.a21.setE(this.a21),e.a22.setE(this.a22),e}assign(e){return this.a11.setE(e.a11),this.a12.setE(e.a12),this.a21.setE(e.a21),this.a22.setE(e.a22),this}mulThis(e){let t=this.a11.mulE(e.a11).addThisE(this.a12.mulE(e.a21)),n=this.a11.mulE(e.a12).addThisE(this.a12.mulE(e.a22)),r=this.a21.mulE(e.a11).addThisE(this.a22.mulE(e.a21)),i=this.a21.mulE(e.a12).addThisE(this.a22.mulE(e.a22));return this.a11=t,this.a12=n,this.a21=r,this.a22=i,this}mulLeftThis(e){let t=e.clone();return this.assign(t.mulThis(this)),this}det(){return this.a11.mulE(this.a22).subThisE(this.a12.mulE(this.a21))}invertThis(){let e=this.det();if(e.value()!==0){let t=this.a22.divE(e),n=this.a12.negate().divThisE(e),r=this.a21.negate().divThisE(e),i=this.a11.divE(e);this.a11=t,this.a12=n,this.a21=r,this.a22=i}else this.setZero();return!e.isZero()}transposeThis(){return this.a21=z(this.a12,this.a12=this.a21),this}eigenSymmetric(e,t){let n=this.a12.clone();n.addThisE(this.a21),n.mulThisByPower2(.5);let r=new V(1),i=new V(0);if(n.isZero())e[0].setE(this.a11),e[1].setE(this.a22);else{let t=new V(1);if(this.a11.ne(this.a22)){let a=this.a11.subE(this.a22).divE(n);a.mulThisByPower2(.5);let o=a.sqr();t.setE(a),t.absThis(),t.subThisE(o.add(1).sqrtThis()),a.gt(ve)&&t.negateThis();let s=t.sqr().addThis(1).sqrtThis().invThis();i=t.mulE(s),r.setE(s);let c=t.mulE(n);e[0]=this.a11.addE(c),e[1]=this.a22.subE(c)}else r=new V(1/Math.sqrt(2)),i=r.clone(),e[0]=this.a11.addE(n),e[1]=this.a22.subE(n)}t[0].x=r.toDouble(),t[0].y=i.toDouble(),t[1].x=i.negate().toDouble(),t[1].y=r.toDouble(),Math.abs(e[0].toDouble())>Math.abs(e[1].toDouble())&&(e[1]=z(e[0],e[0]=e[1]),t[1]=z(t[0],t[0]=t[1]))}setZero(){this.a11.set(0),this.a21.set(0),this.a12.set(0),this.a22.set(0)}}class q{x;y;static constructPoint2D(e){return new q(I.constructDouble(e.x),I.constructDouble(e.y))}constructor(e,t){if(e===void 0){this.x=new I().setNAN(),this.y=new I().setNAN();return}this.x=e.clone(),this.y=t.clone()}assignPoint2D(e){return this.x.setDouble(e.x),this.y.setDouble(e.y),this}setCoords(e,t){return this.x.setThis(e),this.y.setThis(t),this}asPoint2D(){return new P(this.x.value(),this.y.value())}crossProduct(e){return this.x.mul(e.y).sub(this.y.mul(e.x))}leftPerpendicularThis(){let e=this.x.clone();this.x=this.y.clone().negate(),this.y=e}clone(){return new q(this.x,this.y)}dotProduct(e){return this.x.mul(e.x).add(this.y.mul(e.y))}add(e){return new q(this.x.add(e.x),this.y.add(e.y))}sub(e){return new q(this.x.sub(e.x),this.y.sub(e.y))}sqrLength(){return this.x.sqr().addThis(this.y.sqr())}mulThis(e){return this.x.mulThis(e),this.y.mulThis(e),this}mul(e){return this.clone().mulThis(e)}subThis(e){return this.x.subThis(e.x),this.y.subThis(e.y),this}addThis(e){return this.x.addThis(e.x),this.y.addThis(e.y),this}}var At=v;function jt(e){let t=!1;for(let n=0;n<2;n++){let r=F(e[0][n],e[3][n]);r>0?(F(e[0][n],e[1][n])<0&&(e[1][n]=e[0][n],t=!0),F(e[1][n],e[3][n])<0&&(e[1][n]=e[3][n],t=!0),F(e[0][n],e[2][n])<0&&(e[2][n]=e[0][n],t=!0),F(e[2][n],e[3][n])<0&&(e[2][n]=e[3][n],t=!0),F(e[1][n],e[2][n])<0&&(e[2][n]=e[1][n],t=!0)):r<0?(F(e[0][n],e[1][n])>0&&(e[1][n]=e[0][n],t=!0),F(e[1][n],e[3][n])>0&&(e[1][n]=e[3][n],t=!0),F(e[0][n],e[2][n])>0&&(e[2][n]=e[0][n],t=!0),F(e[2][n],e[3][n])>0&&(e[2][n]=e[3][n],t=!0),F(e[1][n],e[2][n])>0&&(e[2][n]=e[1][n],t=!0)):(e[1][n]!==e[0][n]||e[2][n]!==e[0][n])&&(e[1][n]=e[0][n],e[2][n]=e[0][n],t=!0)}return t}function Mt(e){let t=F(e[0].y,e[1].y),n=F(e[1].y,e[2].y),r=F(e[2].y,e[3].y);if(t>=0&&n>=0&&r>=0||t<=0&&n<=0&&r<=0){let t=F(e[0].x,e[1].x),n=F(e[1].x,e[2].x),r=F(e[2].x,e[3].x);if(t>=0&&n>=0&&r>=0||t<=0&&n<=0&&r<=0)return!0}return!1}function Nt(e,t){let n=e.getStartXY();if(n.equals(t.getStartXY())||n.equals(t.getEndXY()))return!0;let r=e.getEndXY();return!!(r.equals(t.getStartXY())||r.equals(t.getEndXY()))}function Pt(e,t){let n=e.calculateLowerLength2D();return n>t?!1:e.isLine()||(n=e.calculateUpperLength2D(),n<=t)?!0:t!==0&&e.calculateLength2D()<=t}function Ft(e,t,n){let r=H(P,4),i=e.queryControlPointsHelper(r),a=H(P,4),c=t.queryControlPointsHelper(a);r[0].equals(a[0])||o(``);let l=e.getGeometryType();if(l===t.getGeometryType()&&r.map((e,t)=>a[t].equals(e)).reduce((e,t)=>e&&t)){if(l===s.enumRationalBezier2){let n=e,r=t,i=[0,0,0],a=[0,0,0];if(n.queryWeights(i),r.queryWeights(a),i.map((e,t)=>a[t]===e).reduce((e,t)=>e&&t))return 0}else return 0}for(;i>2&&r[1].equals(r[0]);)r.splice(1,1),i--;for(;c>2&&a[1].equals(a[0]);)a.splice(1,1),c--;(r[1].equals(r[0])||a[1].equals(r[0]))&&o(``);let u=P.compareVectorsOrigin(r[0],r[1],a[1]);if(u===0){let n=q.constructPoint2D(r[0]),i=new q;e.queryCoord2DMP(1e-16,i),i.sub(n);let a=new q;return t.queryCoord2DMP(1e-16,a),a.sub(n),a.crossProduct(i).sign()}return u}function It(e,t,n,i,a,o,s,c){let l=e.calculateUpperLength2D(),u=t.calculateUpperLength2D(),d=e,f=t,p=!1;l>u&&(f=z(d,d=f),i=z(n,n=i),u=z(l,l=u),p=!0);let m=n===0;{s[0]=+!!m;let e=d.getCoord2D(s[0]);c[0]=f.getClosestCoordinate(e,!1);let t=f.getCoord2D(c[0]);if(P.distance(e,t)<=a){let t=[.5,.75,.25,.1,.9],n=!0;for(let r=0;r<t.length;r++)if(e.assign(d.getCoord2D(t[r])),!f.isCloserThanDistance(e,new R(0,1),a)){n=!1;break}if(n)return p&&(c[0]=z(s[0],s[0]=c[0])),1}}if(l<=a*3)return 0;let h=xe(Math.max(a/l,.1),0,.5),g=.01*a,_=0,v=0,y=h,b=-1,x=0,S=1/32;for(let e=0;;e++){r(e<4095);let t=m?h:1-h,n=d.getCoord2D(t),l=f.getClosestCoordinate(n,!1);if(l===i)return x;let u=f.getCoord2D(l),C=P.distance(n,u);if(e===0&&(b=C),C<=g?(S=.5,v=C,_=h):(y=h,b=C),Math.abs(v-b)>g*.1&&y-_>1e-16){h=B(_,y,S);continue}if(s[x]=t,c[x]=l,p&&(c[x]=z(s[x],s[x]=c[x])),o===1||x===1)return x===1&&s[0]>s[1]&&(s[1]=z(s[0],s[0]=s[1]),c[1]=z(c[0],c[0]=c[1])),x+1;x++,_=y,v=b,y=.8,b=-1,h=.8,S=1/32,g=10*a,e=0}}function Lt(e,t,n,r,i,a,o,s,c){if(U(n,0,1)&&U(r,0,1)&&P.distance(e.getCoord2D(n),t.getCoord2D(r))===0){let c=1e-12,l=new K,u=Se();if(e.queryDerivative(new V(n,u),l),l.isTrueZero()){let t=n===1?-1e-12:c;e.queryDerivative(new V(n,u).add(t),l)}n===1&&l.negateThis();let d=new K;if(t.queryDerivative(new V(r,u),d),d.isTrueZero()){let e=n===1?-1e-12:c;t.queryDerivative(new V(r,u).add(e),d)}r===1&&d.negateThis(),l.isZero()||l.normalize(),d.isZero()||d.normalize();let f=l.dotProduct(d),p=l.crossProduct(d);if(p.scaleError(3),f.ge(ve)&&(p.isZero()||Math.abs(p.value())<(()=>{{let n=e.calculateUpperLength2D(),r=t.calculateUpperLength2D();return Math.min(i*.01/Math.min(n,r),1e-10)}})()))return It(e,t,n,r,i,a,o,s)}return 0}function Rt(e,t,n){return r(e.isCurve()||t.isCurve()),!!(e.getStartXY().equals(t.getStartXY())&&Lt(e,t,0,0,n,2,[0,0],[0,0])||e.getEndXY().equals(t.getEndXY())&&Lt(e,t,1,1,n,2,[0,0],[0,0])||e.getStartXY().equals(t.getEndXY())&&Lt(e,t,0,1,n,2,[0,0],[0,0])||e.getEndXY().equals(t.getStartXY())&&Lt(e,t,1,0,n,2,[0,0],[0,0]))}function zt(e,t){e.m_XStart=t.x,e.m_YStart=t.y}function Bt(e,t,n){e.m_XStart=t,e.m_YStart=n}function Vt(e,t){e.m_XEnd=t.x,e.m_YEnd=t.y}function Ht(e,t,n){e.m_XEnd=t,e.m_YEnd=n}function Ut(e,t,n){t?(e.m_XEnd!==n.x||e.m_YEnd!==n.y)&&(e.m_XEnd=n.x,e.m_YEnd=n.y,e.endPointModified()):(e.m_XStart!==n.x||e.m_YStart!==n.y)&&(e.m_XStart=n.x,e.m_YStart=n.y,e.endPointModified())}function Wt(e,t){let n=new w;return t?(n.x=e.m_XEnd,n.y=e.m_YEnd):(n.x=e.m_XStart,n.y=e.m_YStart),n.z=Gt(e,t),n}function Gt(e,t){return e.m_description.hasZ()?e.m_attributes[t*(e.m_description.getTotalComponentCount()-2)]:At.getDefaultValue(1)}function Kt(e,t,n){e.m_description.hasZ()||e.addAttribute(1),t?(e.m_XEnd!==n.x||e.m_YEnd!==n.y)&&(e.m_XEnd=n.x,e.m_YEnd=n.y,e.endPointModified()):(e.m_XStart!==n.x||e.m_YStart!==n.y)&&(e.m_XStart=n.x,e.m_YStart=n.y,e.endPointModified()),e.m_attributes[(e.m_description.getTotalComponentCount()-2)*t]=n.z}function qt(e,t,n){n.assignVertexDescription(e.m_description);let r=t===0?e.m_XStart:e.m_XEnd,i=t===0?e.m_YStart:e.m_YEnd;n.setXYCoords(r,i);for(let r=1;r<e.m_description.getAttributeCount();r++){let i=e.m_description.getSemantics(r);for(let r=0,a=At.getComponentCount(i);r<a;r++){let a=Yt(e,t,i,r);n.setAttributeBasic(i,r,a)}}}function Jt(e,t,n){n.isEmpty()&&a(``),Ut(e,t,n.getXY());let r=n.getDescription();r!==e.m_description&&e.mergeVertexDescription(r);for(let i=1,a=r.getAttributeCount();i<a;i++){let a=r.getSemantics(i),o=At.getComponentCount(a);for(let r=0;r<o;r++){let i=n.getAttributeAsDbl(a,r);Xt(e,t,a,r,i)}}}function Yt(t,n,r,i){if((n<0||n>1)&&e(``),r===0)return(i<0||i>=2)&&e(``),n===0?i===0?t.m_XStart:t.m_YStart:i===0?t.m_XEnd:t.m_YEnd;let a=At.getComponentCount(r);(i<0||i>=a)&&e(``);let o=t.m_description.getAttributeIndex(r);return o>=0?t.m_attributes[n*(t.m_description.getTotalComponentCount()-2)+t.m_description.getPointAttributeOffset(o)-2+i]:At.getDefaultValue(r)}function Xt(t,n,r,i,a){if((n<0||n>1)&&e(``),r===0){n===0?i===0?t.m_XStart=a:i===1?t.m_YStart=a:e(``):n===1?i===0?t.m_XEnd=a:i===1?t.m_YEnd=a:e(``):e(``),t.endPointModified();return}let o=At.getComponentCount(r);(i<0||i>=o)&&e(``);let s=t.m_description.getAttributeIndex(r);s<0&&(t.addAttribute(r),s=t.m_description.getAttributeIndex(r)),t.m_attributes[n*(t.m_description.getTotalComponentCount()-2)+t.m_description.getPointAttributeOffset(s)-2+i]=a}function Zt(e,t){if(e===t)return;t.isEmpty()&&a(``);let n=t.getDescription();n!==e.m_description&&e.mergeVertexDescription(n);for(let r=1,i=n.getAttributeCount();r<i;r++){let i=n.getSemantics(r),a=At.getComponentCount(i);for(let n=0;n<a;n++){let r=Yt(t,0,i,n);Xt(e,0,i,n,r),r=Yt(t,1,i,n),Xt(e,1,i,n,r)}}}function Qt(e,t){let n=T();E(t,e.m_description,n);let r=null,i=t.getTotalComponentCount()-2,a=e.m_description?e.m_description.getTotalComponentCount()-2:0;if(i>0&&(r=L(2*i,NaN),he(r,t.getDefaultPointAttributes(),0,2,i),he(r,t.getDefaultPointAttributes(),i,2,i),e.m_description!==null))for(let o=1;o<t.getAttributeCount();o++){let s=n[o];if(s!==-1){let n=e.m_description.getPointAttributeOffset(s)-2,c=t.getPointAttributeOffset(o)-2,l=At.getComponentCount(t.getSemantics(o));for(let t=0;t<l;++t)r[c]=e.m_attributes[n],r[i+c]=e.m_attributes[a+n]}}e.m_attributes=r,e.m_description=t}function $t(e){return e.absNorm()*ye()}function en(e,t){return Math.max(e.absNorm(),t.absNorm())*ye()}function tn(e,t,n){let r=new Ct;e.queryEnvelopeW(R.unit(),r);let i=new Ct;return t.queryEnvelopeW(R.unit(),i),i.inflate(n),!r.isIntersectingW(i)}function nn(e,t,n){let r=be(e,n),i=be(t,n);r.sort((e,t)=>e.compare(t)),i.sort((e,t)=>e.compare(t));for(let e=0;e<3;e++){if(r[e].compare(i[e])<0)return-1;if(r[e].compare(i[e])!==0)return 1}return 0}var rn=v;class an{m_XStart;m_YStart;m_XEnd;m_YEnd;m_attributes;m_description;constructor(e){if(e.copy){this.m_XStart=e.copy.m_XStart,this.m_YStart=e.copy.m_YStart,this.m_XEnd=e.copy.m_XEnd,this.m_YEnd=e.copy.m_YEnd,this.m_description=e.copy.m_description,this.m_attributes=null,this.m_description&&this.m_description.getTotalComponentCount()-2&&(this.m_attributes=e.copy.m_attributes.slice());return}if(e.move){this.m_description=e.move.m_description,e.move.m_description=null,this.m_attributes=e.move.m_attributes,e.move.m_attributes=null,this.m_XStart=e.move.m_XStart,this.m_YStart=e.move.m_YStart,this.m_XEnd=e.move.m_XEnd,this.m_YEnd=e.move.m_YEnd;return}if(e.XStart!==void 0){this.m_XStart=e.XStart,this.m_YStart=e.YStart,this.m_XEnd=e.XEnd,this.m_YEnd=e.YEnd,this.m_attributes=null,this.m_description=e.vd?e.vd:y(),e.vd&&this.setDefaultAttributeValues();return}if(e.ZStart!==void 0){this.m_XStart=e.XStart,this.m_YStart=e.YStart,this.m_XEnd=e.XEnd,this.m_YEnd=e.YEnd,this.m_description=e.vd?e.vd:b(),e.vd?(this.setDefaultAttributeValues(),this.addAttribute(1),this.m_attributes[0]=e.ZStart,this.m_attributes[this.m_description.getTotalComponentCount()-2]=e.ZEnd):this.m_attributes=[e.ZStart,e.ZEnd];return}if(e.start){this.m_XStart=e.start.x,this.m_YStart=e.start.y,this.m_XEnd=e.end.x,this.m_YEnd=e.end.y,this.m_attributes=null,this.m_description=y();return}if(e.start3D){this.m_XStart=e.start3D.x,this.m_YStart=e.start3D.y,this.m_XEnd=e.end3D.x,this.m_YEnd=e.end3D.y,this.m_description=e.vd?e.vd:b(),e.vd?(this.setDefaultAttributeValues(),this.addAttribute(1),this.m_attributes[0]=e.start3D.z,this.m_attributes[this.m_description.getTotalComponentCount()-2]=e.end3D.z):this.m_attributes=[e.start3D.z,e.end3D.z];return}t(`bad constructor params`),this.m_XStart=this.m_YStart=this.m_XEnd=this.m_YEnd=NaN}setDefaultAttributeValues(){let e=this.m_description.getTotalComponentCount()-2;e>0&&(this.m_attributes===null&&(this.m_attributes=L(e*2,NaN)),he(this.m_attributes,this.m_description.getDefaultPointAttributes(),0,2,e),he(this.m_attributes,this.m_description.getDefaultPointAttributes(),e,2,e))}absNormXYZ(e){return n(`not implemented`),0}queryWeights(e){}snapControlPoints3D(){return n(`not implemented`),!1}setCoordsForIntersector3D(e,t,r){n(`not implemented`)}transformAttribute(e,t,r,i,a){n(``)}mergeVertexDescriptionImpl(e){let t=this.getDescription(),n=x(t,e);this.assignVertexDescription(n)}changeEndPoints(e,t){let n=e.getXY(),r=t.getXY();this.changeEndPoints2D(n,r);let i=e.getDescription();i!==this.getDescription()&&this.mergeVertexDescription(i),i=t.getDescription(),i!==this.getDescription()&&this.mergeVertexDescription(i);for(let n=1,r=i.getAttributeCount();n<r;n++){let r=i.getSemantics(n),a=rn.getComponentCount(r);for(let n=0;n<a;n++){let i=e.getAttributeAsDbl(r,n);Xt(this,0,r,n,i);let a=t.getAttributeAsDbl(r,n);Xt(this,1,r,n,a)}}}getStartXY(){return new P(this.m_XStart,this.m_YStart)}setStartXY(e){this.m_XStart=e.x,this.m_YStart=e.y,this.endPointModified()}setStartXYCoords(e,t){this.m_XStart=e,this.m_YStart=t,this.endPointModified()}getStartXYZ(){return Wt(this,0)}setStartXYZ(e){Kt(this,0,e)}setStartXYZCoords(e,t,n){Kt(this,0,w.construct(e,t,n))}queryStart(e){qt(this,0,e)}setStart(e){Jt(this,0,e)}setStart2D(e){this.setStartXY(e)}getStartAttributeAsDbl(e,t){return Yt(this,0,e,t)}getStartAttributeAsInt(e,t){return r(0),0}setStartAttribute(e,t,n){Xt(this,0,e,t,n)}setStartAttributesFromPoint(e,t){let n=e.getDescription(),r=t&&n.hasZ()?2:1;for(let t=r,i=n.getAttributeCount();t<i;++t){let r=n.getSemantics(t),i=rn.getComponentCount(r);for(let t=0;t<i;++t){let n=e.getAttributeAsDbl(r,t);this.setStartAttribute(r,t,n)}}}setEndAttributesFromPoint(e,t){let n=e.getDescription(),r=t&&n.hasZ()?2:1;for(let t=r,i=n.getAttributeCount();t<i;++t){let r=n.getSemantics(t),i=rn.getComponentCount(r);for(let t=0;t<i;++t){let n=e.getAttributeAsDbl(r,t);this.setEndAttribute(r,t,n)}}}getStartX(){return this.m_XStart}getStartY(){return this.m_YStart}getStartZ(){return r(0),0}getEndX(){return this.m_XEnd}getEndY(){return this.m_YEnd}getEndZ(){return r(0),0}getEndXY(){return new P(this.m_XEnd,this.m_YEnd)}setEndXY(e){this.m_XEnd=e.x,this.m_YEnd=e.y,this.endPointModified()}setEndXYCoords(e,t){this.m_XEnd=e,this.m_YEnd=t,this.endPointModified()}getEndXYZ(){return Wt(this,1)}setEndXYZ(e){Kt(this,1,e)}setEndXYZCoords(e,t,n){Kt(this,1,w.construct(e,t,n))}queryEnd(e){qt(this,1,e)}setEnd(e){Jt(this,1,e)}setEnd2D(e){this.setEndXY(e)}getEndAttributeAsDbl(e,t){return Yt(this,1,e,t)}getEndAttributeAsInt(e,t){return r(0),0}setEndAttribute(e,t,n){Xt(this,1,e,t,n)}getDimension(){return 1}copyTo(e){if(this===e)return;e.getGeometryType()!==this.getGeometryType()&&i(``);let t=e;t.assignVertexDescription(this.m_description),t.m_attributes&&he(t.m_attributes,this.m_attributes,0,0,(this.m_description.getTotalComponentCount()-2)*2),t.m_XStart=this.m_XStart,t.m_YStart=this.m_YStart,t.m_XEnd=this.m_XEnd,t.m_YEnd=this.m_YEnd,this.copyToImpl(t)}isEmpty(){return this.isEmptyImpl()}isClosed(){return this.m_XStart===this.m_XEnd&&this.m_YStart===this.m_YEnd}setEmpty(){}calculateArea2D(){return 0}queryInterval(e,t){let n=R.constructEmpty();return n.vmin=Yt(this,0,e,t),n.vmax=n.vmin,n.mergeNeCoordinate(Yt(this,1,e,t)),n}calculateLength3D(e){return r(0),0}getCoord3D(e){return r(0),{}}getCoord2D(e){let t=P.getNAN();return this.queryCoord2D(e,t),t}queryCoord3D(e,t){r(0)}getCoordZ(e){return r(0),0}queryCoord(e,t){t.assignVertexDescription(this.m_description),t.setXY(this.getCoord2D(e));for(let n=1,r=this.m_description.getAttributeCount();n<r;n++){let r=this.m_description.getSemantics(n),i=rn.getComponentCount(r);for(let n=0;n<i;n++){let i=this.getAttributeAsDbl(e,r,n);t.setAttributeBasic(r,n,i)}}}isCloserThanDistance(e,t,n){let r=G.constructEmpty();if(this.queryLooseEnvelopeOnInterval(t,r),r.distance(e)>n)return!1;let i=this.getClosestCoordinateOnInterval(e,t,n);return!Number.isNaN(i)&&P.distance(e,this.getCoord2D(i))<=n}isMonotoneQuickAndDirty(){return!1}static s_maxMonotonicPartParams=8;isTrue3D(){return!1}getReversed(){let e=this.clone();return e.reverse(),e}reverse(){this.m_XEnd=z(this.m_XStart,this.m_XStart=this.m_XEnd),this.m_YEnd=z(this.m_YStart,this.m_YStart=this.m_YEnd),this.reverseImpl();for(let e=1,t=this.m_description.getAttributeCount();e<t;e++){let t=this.m_description.getSemantics(e);for(let e=0,n=rn.getComponentCount(t);e<n;e++){let n=Yt(this,0,t,e),r=Yt(this,1,t,e);Xt(this,0,t,e,r),Xt(this,1,t,e,n)}}return this.afterCompletedModification(),this}isEmptyImpl(){return!1}isCircular(){return!1}distance(e,n,i,a){if(!n&&this.isIntersecting(e,0,!1)){if(i!==null||a!==null){let n=L(9,NaN),o=L(9,NaN),s=this.intersect(e,null,n,o,0);r(s<=9),s===0&&t(``),i!==null&&(i[0]=n[0]),a!==null&&(a[0]=o[0])}return 0}let o=Number.MAX_VALUE,s,c=-1,l=o;return s=this.getStartXY(),c=e.getClosestCoordinate(s,!1),s.subThis(e.getCoord2D(c)),l=s.length(),l<o&&(o=l,a!==null&&(a[0]=c),i!==null&&(i[0]=0)),s=this.getEndXY(),c=e.getClosestCoordinate(s,!1),s.subThis(e.getCoord2D(c)),l=s.length(),l<o&&(o=l,a!==null&&(a[0]=c),i!==null&&(i[0]=1)),s=e.getStartXY(),c=this.getClosestCoordinate(s,!1),s.subThis(this.getCoord2D(c)),l=s.length(),l<o&&(o=l,i!==null&&(i[0]=c),a!==null&&(a[0]=0)),s=e.getEndXY(),c=this.getClosestCoordinate(s,!1),s.subThis(this.getCoord2D(c)),l=s.length(),l<o&&(o=l,i!==null&&(i[0]=c),a!==null&&(a[0]=1)),o}calculateSubLengthFromStart(e){return this.tToLength(e)}calculateSubLength(e,t){return t===e?0:this.tToLength(t)-this.tToLength(e)}static recalculateParentT(e,t,n){return B(e,t,n)}moveTo(e){let t=this.isClosed(),n=new xt;n.setShift(e.sub(this.getStartXY())),this.applyTransformation(n),t?this.changeEndPoints2D(e,e):this.changeEndPoints2D(e,this.getEndXY())}moveTo3D(e){r(0)}getDescription(){return this.m_description}assignVertexDescription(e){Qt(this,e)}mergeVertexDescription(e){this.m_description!==e&&(this.m_description.hasAttributesFrom(e)||this.mergeVertexDescriptionImpl(e))}hasAttribute(e){return this.m_description.hasAttribute(e)}addAttribute(e){if(this.m_description.hasAttribute(e))return;let t=S(this.m_description,e);this.assignVertexDescription(t)}dropAttribute(e){if(!this.m_description.hasAttribute(e))return;let t=C(this.m_description,e);this.assignVertexDescription(t)}dropAllAttributes(){let e=y();e!==this.m_description&&this.assignVertexDescription(e)}swap(e){if(this===e)return;e.getGeometryType()!==this.getGeometryType()&&i(`wrong geometry type`);let t=e;t.m_description=z(this.m_description,this.m_description=t.m_description),t.m_XStart=z(this.m_XStart,this.m_XStart=t.m_XStart),t.m_YStart=z(this.m_YStart,this.m_YStart=t.m_YStart),t.m_XEnd=z(this.m_XEnd,this.m_XEnd=t.m_XEnd),t.m_YEnd=z(this.m_YEnd,this.m_YEnd=t.m_YEnd),t.m_attributes=z(this.m_attributes,this.m_attributes=t.m_attributes),this.swapImpl(t)}equals(e,t){if(this.getGeometryType()!==e.getGeometryType())return!1;let n=t===void 0;n&&(t=0);let r=e;if(this===r)return!0;if(this.m_description!==r.m_description||Math.abs(this.m_XStart-r.m_XStart)>t||Math.abs(this.m_XEnd-r.m_XEnd)>t||Math.abs(this.m_YStart-r.m_YStart)>t||Math.abs(this.m_YEnd-r.m_YEnd)>t)return!1;for(let e=0,n=(this.m_description.getTotalComponentCount()-2)*2;e<n;e++)if(!ge(this.m_attributes[e],r.m_attributes[e],t))return!1;return n?this.equalsImpl(r):this.equalsImplTol(r,t)}getImpl(){return this}setAttributeBasic(e,t,n){if(this.addAttribute(e),e===0&&this.isCurve()){(t<0||t>1)&&i(``);let e=new xt,r=t===0?n:0,a=t===1?n:0;e.setShiftCoords(r,a),t===0?e.xx=0:e.yy=0,this.applyTransformation(e)}else this.setStartAttribute(e,t,n),this.setEndAttribute(e,t,n)}replaceNaNs(e,t){if(this.addAttribute(e),this.isEmpty())return;let n=rn.getComponentCount(e);for(let r=0;r<n;r++){let n=this.getStartAttributeAsDbl(e,r);Number.isNaN(n)&&this.setStartAttribute(e,r,t);let i=this.getEndAttributeAsDbl(e,r);Number.isNaN(i)&&this.setEndAttribute(e,r,t)}}}class on{posStream=null;streams=null;get(e){return e>0?this.streams[e-1]:this.posStream}set(e,t){e>0?this.streams[e-1]=t:this.posStream=t}destroyAndSetSize(e){if(this.streams=null,e>1){this.streams=Array(e-1);for(let t=0;t<e-1;++t)this.streams[t]=null}this.posStream=null}swap(e){[this.streams,e.streams]=[e.streams,this.streams],[this.posStream,e.posStream]=[e.posStream,this.posStream]}empty(){return this.posStream===null&&this.streams===null}}function sn(e,t,n,r,a){(t<0||n<0||r<1||t+r*(n-1)+1>e.size())&&i(`Index out of bound`);for(let i=t,o=t+r*(n-1)+1;i<o;i+=r)e.writeAsDbl(i,a(e.readAsDbl(i)))}function cn(e,t,n){if(!e)t.forEach(n);else for(let e=t.length-1;e>=0;--e)n(t[e])}function ln(e,t){let n=Te(e),r=t.length/we();for(let e=0;e<t.length;++e){let e=Math.trunc(n*r);n=Te(n);let i=Math.trunc(n*r),a=t[e];t[e]=t[i],t[i]=a}}function un(e,t,n){if(e.length===0)return;let r=0,i=0;for(++i;i!==e.length;++i)t(e[r],e[i])||(n(r,i),r=i);n(r,i)}function dn(e,t,n,r,i){Ee(e,t,r-t,(e,t)=>i(e,t)?-1:1)}function fn(e,t,n){if(!(n<=t))for(;t<n;)e[n]=z(e[t],e[t]=e[n]),t++,n--}function pn(e,t,n,r){fn(e,t,n-1),fn(e,n,r-1),e.reverse()}function mn(e,t,n){let r=e.getDescription().getTotalComponentCount();e.setX(t[0]),e.setY(t[1]),he(e.getAttributeArray(),t,0,2,r-2)}var hn=v;const gn=`can not assign an empty point to a vertex`;class _n{constructor(e){if(e!==void 0&&e.move)this.m_description=e.move.m_description,e.move.m_description=y(),this.m_vertexAttributes=e.move.m_vertexAttributes,e.move.m_vertexAttributes=new on,this.m_envelopeData=e.move.m_envelopeData,e.move.m_envelopeData=new D,this.m_pointCount=e.move.m_pointCount,this.m_reservedPointCount=e.move.m_reservedPointCount,this.m_flags=e.move.m_flags,this.m_bFillRule=e.move.m_bFillRule,this.m_bPathStarted=e.move.m_bPathStarted,this.m_bPolygon=e.move.m_bPolygon,this.m_simpleTolerance=e.move.m_simpleTolerance;else{let t=e!==void 0&&e.vd?e.vd:y();this.m_description=t,this.m_vertexAttributes=new on,this.m_envelopeData=new D,this.m_pointCount=0,this.m_reservedPointCount=-1,this.m_flags=4063,this.m_bFillRule=this.m_bPathStarted=this.m_bPolygon=!1,this.m_simpleTolerance=0,e!==void 0&&e.copy&&e.copy.copyTo(this)}}equalsBase(e,t){if(!c(e.getGeometryType()))return!1;let n=e;if(this===n)return!0;if(!this.m_description.equals(n.getDescription())||this.isEmptyImpl()!==n.isEmptyImpl())return!1;if(this.isEmptyImpl())return!0;let r=this.getPointCount();if(r!==n.getPointCount())return!1;for(let e=0;e<this.m_description.getAttributeCount();e++){let i=this.m_description.getSemantics(e),a=this.getAttributeStreamRef(i),o=n.getAttributeStreamRef(i),s=hn.getComponentCount(i);if(!a.equals(o,0,r*s,t))return!1}if(t){if(!this.equalsImplTol(e,t))return!1}else if(!this.equalsImpl(e))return!1;return!0}transformAttribute(e,t,n,r,a){if(this.addAttribute(e),!this.isEmpty()&&(n!==0||r!==1)){if(e===0){let e=new xt;a===0?t===0?(e.setShiftCoords(n,0),e.scale(r,1)):t===1?(e.setShiftCoords(0,n),e.scale(1,r)):i(``):t===0?(e.setScaleCoords(1/r,1),e.shiftCoords(-n,0)):t===1?(e.setScaleCoords(1,1/r),e.shiftCoords(0,-n)):i(``),this.applyTransformation(e);return}sn(this.getAttributeStreamRef(e),t,this.getPointCount(),hn.getComponentCount(e),ne(n,r,a)),this.notifyModified()}}getDescription(){return this.m_description}assignVertexDescription(e){this.m_description!==e&&this.assignVertexDescriptionImpl(e)}mergeVertexDescriptionImpl(e){let t=this.getDescription(),n=x(t,e);this.assignVertexDescription(n)}mergeVertexDescription(e){this.m_description!==e&&(this.m_description.hasAttributesFrom(e)||this.mergeVertexDescriptionImpl(e))}hasAttribute(e){return this.m_description.hasAttribute(e)}addAttribute(e){if(this.m_description.hasAttribute(e))return;let t=S(this.m_description,e);this.assignVertexDescription(t)}dropAttribute(e){if(!this.m_description.hasAttribute(e))return;let t=C(this.m_description,e);this.assignVertexDescription(t)}dropAllAttributes(){let e=y();e!==this.m_description&&this.assignVertexDescription(e)}getAttributeStreamRef(e){this.throwIfEmpty(),this.m_description.hasAttribute(e)||i(`AttributeStream : Geometry does not have the attribute`);let t=this.m_description.getAttributeIndex(e);return this.m_vertexAttributes.get(t)}setAttributeStreamRef(e,t){t||i(`stream`),t&&hn.getPersistence(e)!==t.getPersistence()&&i(``),this.addAttribute(e);let n=this.m_description.getAttributeIndex(e);this.m_vertexAttributes.empty()&&this.m_vertexAttributes.destroyAndSetSize(this.m_description.getAttributeCount()),this.m_vertexAttributes.set(n,t),this.notifyModifiedFlags(2001)}notifyModifiedFlags(e){e===65535&&(this.m_reservedPointCount=-1,this.notifyModifiedAllImpl()),this.setDirtyFlagProtected(e,!0),this.clearAccelerators(),e&32&&this.verifyAllStreamsAfterSizeChange()}notifyModified(){this.notifyModifiedFlags(2001)}getPointCount(){return this.m_pointCount}getPointByVal(e,t){let n=t;n.assignVertexDescription(this.m_description);for(let t=0;t<this.m_description.getAttributeCount();t++){let r=this.m_description.getSemantics(t);for(let i=0,a=hn.getComponentCount(r);i<a;i++){let o=this.m_vertexAttributes.get(t).readAsDbl(a*e+i);n.setAttributeBasic(r,i,o)}}}setPointByValNoCurves(e,t){let n=t;n.isEmpty()&&i(gn);let r=n.getDescription();r!==this.m_description&&this.mergeVertexDescription(r);let a=this.m_vertexAttributes.get(0);a.write(e*2,n.getX()),a.write(e*2+1,n.getY());for(let t=1,r=this.m_description.getAttributeCount();t<r;t++){let r=this.m_description.getSemantics(t),i=hn.getComponentCount(r);for(let a=0;a<i;a++){let o=n.getAttributeAsDbl(r,a);this.m_vertexAttributes.get(t).writeAsDbl(e*i+a,o)}}this.notifyModifiedFlags(2001)}setPointByValFromArrayNoCurves(e,t,n,i){r(0)}getPointByValAsArray(e,t,n,i){r(0)}isEmpty(){return this.isEmptyImpl()}isEmptyImpl(){return this.m_pointCount===0}getAttributeAsDbl(t,n,r){let i=hn.getComponentCount(t);r>=i&&e(``);let a=this.m_description.getAttributeIndex(t);return a>=0?this.m_vertexAttributes.get(a).readAsDbl(n*i+r):hn.getDefaultValue(t)}queryAttributeAsDbl(t,n,r,i){let a=hn.getComponentCount(t);i<a&&e(``);let o=this.m_description.getAttributeIndex(t);if(o>=0){let e=n*a,t=this.m_vertexAttributes.get(o);for(let n=0;n<a;n++)r[n]=t.readAsDbl(e+n)}else{let e=hn.getDefaultValue(t);for(let t=0;t<a;t++)r[t]=e}}getAttributeAsInt(e,t,n){return Math.trunc(this.getAttributeAsDbl(e,t,n))}queryAttributeAsInt(e,t,n,i){r(0)}setAttributeNoCurves(t,n,r,i){let a=hn.getComponentCount(t);r>=a&&e(``),this.addAttribute(t);let o=this.m_description.getAttributeIndex(t);this.notifyModifiedFlags(2001),this.m_vertexAttributes.get(o).writeAsDbl(n*a+r,i)}setAttributeFromArrayNoCurves(t,n,r,i){(n<0||n>=this.m_pointCount)&&e(``);let a=hn.getComponentCount(t);i<a&&e(``),this.addAttribute(t);let o=this.m_description.getAttributeIndex(t);this.notifyModifiedFlags(2001);let s=this.m_vertexAttributes.get(o);for(let e=0;e<a;++e)s.writeAsDbl(n*a+e,r[e])}getXY(e){return this.m_vertexAttributes.get(0).readPoint2D(e*2)}queryXY(e,t){return this.m_vertexAttributes.get(0).queryPoint2D(e*2,t)}setXYNoCurves(e,t){this.m_vertexAttributes.get(0).writePoint2D(e*2,t),this.notifyModifiedFlags(2001)}setXYCoordsNoCurves(e,t,n){let r=this.m_vertexAttributes.get(0);r.write(e*2,t),r.write(e*2+1,n),this.notifyModifiedFlags(2001)}getXYZ(e){let t=this.m_vertexAttributes.get(0),n=w.getNAN();return n.x=t.read(e*2),n.y=t.read(e*2+1),n.z=this.m_description.hasAttribute(1)?this.m_vertexAttributes.get(1).read(e):hn.getDefaultValue(1),n}setXYZNoCurves(e,t){this.addAttribute(1),this.notifyModifiedFlags(2001);let n=this.m_vertexAttributes.get(0);n.write(e*2,t.x),n.write(e*2+1,t.y),this.m_vertexAttributes.get(1).write(e,t.z)}queryEnvelope(e){e instanceof G||e instanceof O?this.updateEnvelope(e):(this.updateAllDirtyIntervals(!0),this.m_envelopeData.copyTo(this.m_description,e))}queryLooseEnvelope(e){this.updateLooseEnvelope(e)}queryInterval(e,t){let n=R.constructEmpty();return this.isEmptyImpl()?n:(this.updateAllDirtyIntervals(!0),this.m_envelopeData.queryInterval(this.m_description,e,t,n),n)}setAttributeBasic(e,t,n){this.setAttributeImpl(e,t,n)}setAttributeImpl(e,t,n){if(this.addAttribute(e),this.isEmpty())return;let r=!1,i=hn.getComponentCount(e),a=this.getAttributeStreamRef(e),o=Number.isNaN(n);if(a.getPersistence()===1){let e=a;for(let a=t,s=this.m_pointCount*i;a<s;a+=i){let t=e.read(a);(!o&&t!==n||!Number.isNaN(t))&&(e.write(a,n),r=!0)}}else for(let e=t,o=this.m_pointCount*i;e<o;e+=i)a.readAsDbl(e)!==n&&(a.writeAsDbl(e,n),r=!0);r&&this.notifyModifiedFlags(2001)}replaceNaNs(e,t){if(this.addAttribute(e),this.isEmpty())return;let n=!1,r=hn.getComponentCount(e),i=this.getAttributeStreamRef(e);for(let e=0;e<r;e++)if(i.getPersistence()===1){let e=i;for(let i=0,a=this.m_pointCount*r;i<a;i++){let r=e.read(i);Number.isNaN(r)&&(e.write(i,t),n=!0)}}else for(let e=0,a=this.m_pointCount*r;e<a;e++){let r=i.readAsDbl(e);Number.isNaN(r)&&(i.writeAsDbl(e,t),n=!0)}n&&this.notifyModifiedFlags(2001)}calculateLength3D(e){return r(0),0}setEnvelopeForImport(e){this.m_description.equals(e.getDescription())||i(``),this.m_envelopeData=new D({moveEnv:e}),this.setDirtyFlagProtected(192,!1)}copyTo(e){e.getGeometryType()!==this.getGeometryType()&&i(``),this!==e&&this.copyToUnchecked(e,!1)}queryCoordinates(e,t,n,r){let a=r<0?this.m_pointCount:r;if(a=Math.min(a,n+t),(n<0||a<n||this.m_pointCount>0&&n>=this.m_pointCount)&&i(``),this.m_pointCount===0)return a;let o=this.getAttributeStreamRef(0);for(let t=2*n,r=2*a,i=0;t<r;t+=2,i++)o.queryPoint2D(t,e[i]);return a}queryCoordinates3D(e,t,n,r){let a=r<0?this.m_pointCount:r;if(a=Math.min(a,n+t),(n<0||a<n||this.m_pointCount>0&&n>=this.m_pointCount)&&i(``),this.m_pointCount===0)return a;let o=this.getAttributeStreamRef(0),s=null,c=hn.getDefaultValue(1),l=this.m_description.hasAttribute(1);l&&(s=this.getAttributeStreamRef(1));let u=0;for(let t=n;t<a;t++,u++)e[u].x=o.read(2*t),e[u].y=o.read(2*t+1),e[u].z=l?s.read(t):c;return a}clearAndSetDirtyFlagProtected(e,t){let n=0,r=e&~t,i=t|r;n=this.m_flags,(n&i)!==t&&(this.m_flags=n&~r|t)}getIsSimple(e,t){t[0]=0;let n=-1,r=this.m_flags,i=this.m_simpleTolerance;return r&1||(n=(r&14)>>1,t[0]=i,i<e&&(n=-1)),n}setIsSimple(e,t,n=!1){if(e===2?r(this.getGeometryType()===s.enumPolyline):e===1?r(this.getGeometryType()===s.enumMultiPoint||this.getGeometryType()===s.enumPolyline):e===3&&r(this.getGeometryType()===s.enumPolygon),e===-1)this.setDirtyFlagProtected(17,!0);else{let r=e<<1;n||(r|=16),this.clearAndSetDirtyFlagProtected(31,r),this.m_simpleTolerance!==t&&(this.m_simpleTolerance=t)}}attributeStreamIsAllocated(e){this.throwIfEmpty();let t=this.m_description.getAttributeIndex(e);return t>=0&&this.m_vertexAttributes.get(t)!==null}capacity(){return this.m_reservedPointCount===-1&&this.m_pointCount===0?0:this.m_reservedPointCount}getDescriptionImpl(){return this.m_description}copyToUnchecked(e,t=!1){t&&this.hasDirtyFlag(32)&&l(`Cannot do shallow clone on unprepared geometry`);let n=e,i=this.getGeometryType(),a=n.getGeometryType();r(i===a||i===s.enumPolygon&&a===s.enumPolyline,`failure in copyToUnchcked`),n.clearAccelerators(),n.m_description=this.m_description,n.m_vertexAttributes.destroyAndSetSize(0),n.m_envelopeData.releaseAttributes();let o=this.m_description.getAttributeCount(),c=new on;if(!this.m_vertexAttributes.empty()){c.destroyAndSetSize(o);for(let e=0;e<o;e++)if(this.m_vertexAttributes.get(e)){if(t)c.set(e,this.m_vertexAttributes.get(e));else{let t=hn.getComponentCount(this.m_description.getSemantics(e));c.set(e,this.m_vertexAttributes.get(e).restrictedClone(this.getPointCount()*t))}}}if(this.m_envelopeData.copyToIfNotNull(this.m_description,n.m_envelopeData),n.m_flags=this.m_flags,n.m_simpleTolerance=this.m_simpleTolerance,i!==a){let e=[NaN];n.getIsSimple(0,e)>=3?n.setIsSimple(1,e[0]):n.setIsSimple(-1,0)}n.m_vertexAttributes.swap(c),c.destroyAndSetSize(0),n.m_pointCount=this.m_pointCount,n.hasDirtyFlag(32)||n.m_vertexAttributes.empty()?(r(!t||n.m_pointCount===0),n.m_reservedPointCount=-1):n.m_reservedPointCount=n.m_pointCount;try{this.copyToImpl(n,t)}catch(e){throw n.setEmpty(),e}n.verifyAllStreamsAfterSizeChange()}buildRasterizedGeometryAccelerator(e,t){return!1}getAccelerators(){return this.m_accelerators}clearAccelerators(){this.m_accelerators&&this.m_accelerators.release(),this.m_accelerators=null}ensureUniqueAccelerators(){if(this.m_accelerators&&!this.m_accelerators.uniqueUse()){let e=this.m_accelerators.clone();this.m_accelerators.release(),this.m_accelerators=e}}interpolateTwoVertices(t,n,i,a){(t<0||t>=this.m_pointCount)&&e(``),(n<0||n>=this.m_pointCount)&&e(``),a.assignVertexDescription(this.m_description);let o=L(hn.maxComponentCount(),NaN),s=L(hn.maxComponentCount(),NaN),c=k(),l=0;for(let e=0;e<this.m_description.getAttributeCount();e++){let a=this.m_description.getSemantics(e),u=hn.getInterpolation(a),d=hn.getComponentCount(a),f=hn.getDefaultValue(a);this.queryAttributeAsDbl(a,t,o,d),this.queryAttributeAsDbl(a,n,s,d),r(l+d<=te),Ce(u,o,s,c,l,d,i,f),l+=d}mn(a,c)}getShortestDistance(e,t){return P.distance(this.getXY(e),this.getXY(t))}getShortestSqrDistance(e,t){return P.sqrDistance(this.getXY(e),this.getXY(t))}resizeImpl(e){if(e<0&&i(),e=Math.ceil(e),e===this.m_pointCount)return;this.m_pointCount=e;let t=this.m_pointCount<=this.m_reservedPointCount?2001:4095;this.notifyModifiedFlags(t)}m_description;m_vertexAttributes;m_envelopeData;m_pointCount;m_reservedPointCount;m_flags;m_bFillRule;m_bPathStarted;m_bPolygon;m_simpleTolerance;m_accelerators=null;assignVertexDescriptionImpl(e){if(!this.m_vertexAttributes.empty()){let t=T();E(e,this.m_description,t);let n=new on;n.destroyAndSetSize(e.getAttributeCount());for(let r=0;r<e.getAttributeCount();r++){let e=t[r];e===-1?this.m_reservedPointCount=-1:n.set(r,this.m_vertexAttributes.get(e))}n.swap(this.m_vertexAttributes)}this.m_description=e,this.m_envelopeData.releaseAttributes(),this.notifyModifiedFlags(4095)}hasDirtyFlag(e){return(this.m_flags&e)!==0}setDirtyFlagProtected(e,t){t?this.m_flags|=e:this.m_flags&=~e}notifyModifiedAllImpl(){}verifyAllStreamsAfterSizeChange(){this.hasDirtyFlag(32)&&this.verifyAllStreamsAfterSizeChangeImpl()}verifyAllStreamsAfterSizeChangeImpl(){if(this.hasDirtyFlag(32)){if(this.m_reservedPointCount<this.m_pointCount){this.m_vertexAttributes.empty()&&this.m_vertexAttributes.destroyAndSetSize(this.m_description.getAttributeCount()),this.m_reservedPointCount=-1;let e=2**53-1,t=0;t=this.m_pointCount<4?3:this.m_pointCount<=128?this.m_pointCount*2:Math.trunc((this.m_pointCount*4+2)/3);for(let n=0;n<this.m_description.getAttributeCount();n++){let r=this.m_description.getSemantics(n),i=0;if(this.m_vertexAttributes.get(n)!==null){let e=hn.getComponentCount(r);i=this.m_vertexAttributes.get(n).size()/e,i<this.m_pointCount&&(this.m_vertexAttributes.get(n).resize(t*e,hn.getDefaultValue(r)),i=t)}else this.m_vertexAttributes.set(n,ee(r,t)),i=t;i<e&&(e=i)}this.m_reservedPointCount=e}this.verifyStreamsAfterSizeChangeExtraImpl(),this.setDirtyFlagProtected(32,!1)}}verifyStreamsAfterSizeChangeExtraImpl(){}updateAllDirtyIntervals(e){if(e?this.hasDirtyFlag(192):this.hasDirtyFlag(128)){if(this.isEmpty()){this.hasDirtyFlag(192)&&this.m_envelopeData.setEmpty(this.m_description),this.setDirtyFlagProtected(192,!1);return}let t=this.updateXYImpl(e),n=new A({vd:this.m_description});n.setEnvelope(t);for(let e=1;e<this.m_description.getAttributeCount();e++){let t=this.m_description.getSemantics(e),r=hn.getComponentCount(t),i=this.m_vertexAttributes.get(e);for(let e=0;e<r;e++){let a=new R;a.setEmpty();for(let t=0;t<this.m_pointCount;t++){let n=i.readAsDbl(t*r+e);a.mergeCoordinate(n)}n.setIntervalEnvelope(t,e,a)}}(e?this.hasDirtyFlag(192):this.hasDirtyFlag(128))&&(this.m_envelopeData=new D({moveEnv:n}),this.clearDirtyIntervalsFlag(e))}}updateXYImpl(e){let t=G.constructEmpty(),n=this.m_vertexAttributes.get(0);return t.mergePointsInterleaved(n,0,this.m_pointCount),t}updateEnvelope3D(e){r(0)}updateLooseEnvelope(e){this.updateAllDirtyIntervals(!1),e instanceof G?e.assign(this.m_envelopeData.m_envelope2D):this.m_envelopeData.queryEnvelope3D(this.m_description,e)}updateEnvelope(e){this.updateAllDirtyIntervals(!0),e.assign(this.m_envelopeData.m_envelope2D)}setEmptyImpl(){this.m_pointCount=0,this.m_reservedPointCount=-1,this.m_vertexAttributes.destroyAndSetSize(0),this.notifyModifiedFlags(4095)}clearDirtyIntervalsFlag(e){this.setDirtyFlagProtected(192,!1)}reserveImpl(e,t){if(e<0&&i(``),e===0)return;e=Math.ceil(e);let n=e;if(this.m_reservedPointCount<n){this.m_vertexAttributes.empty()&&this.m_vertexAttributes.destroyAndSetSize(this.m_description.getAttributeCount()),t?(this.m_vertexAttributes.get(0)===null&&this.m_vertexAttributes.set(0,j(0,0)),this.m_vertexAttributes.get(0).resizeRounded(n*2),n=this.m_vertexAttributes.get(0).size()>>1):this.m_vertexAttributes.get(0)===null?this.m_vertexAttributes.set(0,j(0,n)):this.m_vertexAttributes.get(0).resize(n*2);for(let e=1;e<this.m_description.getAttributeCount();e++){let t=this.m_description.getSemantics(e),r=hn.getComponentCount(t);this.m_vertexAttributes.get(e)===null?this.m_vertexAttributes.set(e,j(t,n)):this.m_vertexAttributes.get(e).resize(n*r)}this.reserveImplImpl(n,t),this.m_reservedPointCount=n}}reserveRounded(e){e<0&&i(),e=Math.ceil(e),this.reserveImpl(e,!0)}reserveImplImpl(e,t){}throwIfEmpty(){this.isEmptyImpl()&&a(``)}exportVertexAttributes(){let e=this.getPointCount(),t=this.m_description.getAttributeIndex(1),n=this.m_description.getAttributeIndex(2),r=this.m_vertexAttributes.posStream,i=t>0?this.m_vertexAttributes.get(t):void 0,a=n>0?this.m_vertexAttributes.get(n):void 0;return{vertexCount:e,vertexXY:r?.getArray()??new Float64Array,vertexZ:i?.getArray(),vertexM:a?.getArray()}}}class vn extends _n{static type=s.enumMultiPoint;constructor(e){super(e),e&&(e.points?this.addPoints2D(e.points,e.pointsSize,0,-1):e.point&&this.add(e.point))}assignCopy(e){return e.copyTo(this),this}assignMove(e){return e.copyTo(this),e.setEmpty(),this}insertPoint2D(e,t){e>this.getPointCount()&&i(`invalid point index`),e<0&&(e=this.getPointCount());let n=this.m_pointCount;this.resizeNoInit(this.m_pointCount+1);for(let r=0,i=this.m_description.getAttributeCount();r<i;r++){let i=this.m_description.getSemantics(r),a=v.getComponentCount(i);if(i===0)this.m_vertexAttributes.get(r).insert(a*e,t,a*n);else{let t=v.getDefaultValue(i);this.m_vertexAttributes.get(r).insertRange(a*e,t,a,a*n)}}this.notifyModifiedFlags(2001)}insertPoint(e,t){t.isEmpty()&&i(gn),e<0&&(e=this.getPointCount()),this.mergeVertexDescription(t.getDescription());let n=this.m_pointCount;this.resizeNoInit(this.m_pointCount+1);for(let r=0,i=this.m_description.getAttributeCount();r<i;r++){let i=this.m_description.getSemantics(r),a=v.getComponentCount(i);if(t.hasAttribute(i))this.m_vertexAttributes.get(r).insertAttributes(a*e,t,i,a*n);else{let t=v.getDefaultValue(i);this.m_vertexAttributes.get(r).insertRange(a*e,t,a,a*n)}}this.notifyModifiedFlags(2001)}insertPoints(t,n,r){if((t>this.getPointCount()||r<0)&&e(``),t<0&&(t=this.getPointCount()),r===0)return;let i=n[0].getDescription();this.mergeVertexDescription(i);let a=this.m_pointCount;this.resizeNoInit(this.m_pointCount+r);for(let e=0,o=this.m_description.getAttributeCount();e<o;e++){let o=this.m_description.getSemantics(e),s=v.getComponentCount(o);if(this.m_vertexAttributes.get(e)){if(i.hasAttribute(o))this.m_vertexAttributes.get(e).insertAttributesFromPoints(t*s,n,r,o,a*s);else{let n=v.getDefaultValue(o);this.m_vertexAttributes.get(e).insertRange(s*t,n,s*r,s*a)}}}this.notifyModifiedFlags(2001)}insertPoints2D(e,t,n){if((e>this.getPointCount()||n<0)&&i(`invalid point index`),e<0&&(e=this.getPointCount()),n===0)return;let r=this.m_pointCount;this.resizeNoInit(this.m_pointCount+n);for(let i=0,a=this.m_description.getAttributeCount();i<a;i++){let a=this.m_description.getSemantics(i),o=v.getComponentCount(a);if(this.m_vertexAttributes.get(i)){if(a===0)this.m_vertexAttributes.get(i).insertRangeFromPoints(o*e,t,0,n,!0,o*r);else{let t=v.getDefaultValue(a);this.m_vertexAttributes.get(i).insertRange(o*e,t,o,o*r)}}}this.notifyModifiedFlags(2001)}removePoints(t,n){if((t<0||n<0||t+n>this.getPointCount())&&e(`remove_points`),n!==0){for(let e=0,r=this.m_description.getAttributeCount();e<r;e++)if(this.m_vertexAttributes.get(e)){let r=this.m_description.getSemantics(e),i=v.getComponentCount(r);this.m_vertexAttributes.get(e).eraseRange(i*t,i*n,i*this.m_pointCount)}this.m_pointCount-=n,this.m_reservedPointCount>0&&(this.m_reservedPointCount-=n),this.notifyModifiedFlags(2001)}}removePoint(e){for(let t=0,n=this.m_description.getAttributeCount();t<n;t++)if(this.m_vertexAttributes.get(t)){let n=this.m_description.getSemantics(t),r=v.getComponentCount(n);this.m_vertexAttributes.get(t).eraseRange(r*e,r,r*this.m_pointCount)}this.m_pointCount--,this.m_reservedPointCount>0&&this.m_reservedPointCount--,this.notifyModifiedFlags(2001)}calculateEnvelope2D(){return this.updateXYImpl(!0)}resizeNoInit(e){this.resizeImpl(e)}resizeAndInitNonPositionAttributes(e){let t=this.m_pointCount;if(this.resizeImpl(e),this.m_pointCount>t)for(let e=1,n=this.m_description.getAttributeCount();e<n;e++){let n=this.m_description.getSemantics(e),r=v.getDefaultValue(n),i=v.getComponentCount(n);this.m_vertexAttributes.get(e).insertRange(i*t,r,i*(this.m_pointCount-t),i*t)}}queryCoordinates3D(e,t,n,r){let a=r<0?this.m_pointCount:r;if(a=Math.min(a,n+t),(n<0||a<n||this.m_pointCount>0&&n>=this.m_pointCount)&&i(``),this.m_pointCount===0)return a;let o=this.getAttributeStreamRef(0),s=null,c=v.getDefaultValue(1),l=this.m_description.hasAttribute(1);l&&(s=this.getAttributeStreamRef(1));let u=0;for(let t=n;t<a;t++,u++)e[u].x=o.read(2*t),e[u].y=o.read(2*t+1),e[u].z=l?s.read(t):c;return a}queryAttributeAsInt(e,t,n,i){r(0)}add(e){e.isEmpty()&&i(gn),this.resizeAndInitNonPositionAttributes(this.m_pointCount+1),this.setPointByValNoCurves(this.m_pointCount-1,e)}addXY(e,t){this.resizeAndInitNonPositionAttributes(this.m_pointCount+1);let n=new P(e,t);this.setXYNoCurves(this.m_pointCount-1,n)}addXYZ(e,t,n){this.resizeAndInitNonPositionAttributes(this.m_pointCount+1);let r=new w;r.setCoords(e,t,n),this.setXYZNoCurves(this.m_pointCount-1,r)}addPoint2D(e){this.addXY(e.x,e.y)}addPoint3D(e){this.addXYZ(e.x,e.y,e.z)}addPoints(e,t,n){this===e&&i(`Multi_point_impl.add`);let r=n<0?e.getPointCount():n;if((t<0||t>e.getPointCount()||r<t)&&i(``),t===r)return;let a=e.getDescription();this.mergeVertexDescription(a);let o=r-t,s=this.m_pointCount;this.resizeNoInit(this.m_pointCount+o);for(let n=0,r=this.m_description.getAttributeCount();n<r;n++){let r=this.m_description.getSemantics(n),i=v.getComponentCount(r),c=this.getAttributeStreamRef(r);if(a.hasAttribute(r)){let n=e.getAttributeStreamRef(r);c.insertRangeFromStream(s*i,n,t*i,o*i,!0,1,s*i)}else{let e=v.getDefaultValue(r);c.insertRange(s*i,e,o*i,s*i)}}}addPoints2D(e,t,n,r){let a=t,o=r<0?a:r;if((a<0||n<0||n>a||o<n)&&i(``),n===o)return;a=o-n;let s=this.m_pointCount;this.resizeAndInitNonPositionAttributes(this.m_pointCount+a);let c=this.getAttributeStreamRef(0);for(let t=0;t<a;++t)c.writePoint2D(2*(s+t),e[n+t]);this.notifyModifiedFlags(2001)}addPoints3D(e,t,n,r){let a=t,o=r<0?a:r;if((a<0||n<0||n>a||o<n)&&i(``),this.addAttribute(1),n===o)return;a=o-n;let s=this.m_pointCount;this.resizeAndInitNonPositionAttributes(this.m_pointCount+a);let c=this.getAttributeStreamRef(0),l=new P;for(let t=0;t<a;t++)l.x=e[n+t].x,l.y=e[n+t].y,c.writePoint2D(2*(s+t),l);let u=this.getAttributeStreamRef(1);for(let t=0;t<a;t++)u.write(s+t,e[n+t].z);this.notifyModifiedFlags(2001)}setPointByVal(e,t){this.setPointByValNoCurves(e,t)}setXY(e,t){this.setXYNoCurves(e,t)}setXYCoords(e,t,n){this.setXYCoordsNoCurves(e,t,n)}setXYZ(e,t){this.setXYZNoCurves(e,t)}setAttribute(e,t,n,r){this.setAttributeNoCurves(e,t,n,r)}getGeometryType(){return s.enumMultiPoint}getDimension(){return 0}createInstance(){return new vn({vd:this.getDescription()})}setEmpty(){this.setEmptyImpl()}applyTransformation(e){if(this.isEmpty()||e.isIdentity())return;let t=this.m_vertexAttributes.get(0);e.m_TransformationType===1?t.applyTransformation(e,0,this.m_pointCount):n(`3d xform not impl`),this.notifyModifiedFlags(2001)}calculateArea2D(){return 0}calculateLength2D(){return 0}calculateLength3D(e){return 0}equals(e,t){return e.getGeometryType()===s.enumMultiPoint&&this.equalsBase(e,t)}queryEnvelope(e){e.m_EnvelopeType===4?(this.updateAllDirtyIntervals(!0),this.m_envelopeData.copyTo(this.m_description,e)):e.m_EnvelopeType===2?this.updateEnvelope(e):n(``)}getImpl(){return this}getBoundary(){return null}reserve(e){this.reserveImpl(e)}clone(){let e=this.createInstance();return this.copyTo(e),e}swap(e){r(0)}buildQuadTreeAccelerator(e){return!1}getHashCodeImpl(){return r(0),0}equalsImpl(e){return!0}equalsImplTol(e,t){return!0}copyToImpl(e,t){}toFlatGeometry(){return{type:`multipoint`,...this.exportVertexAttributes(),...re}}}class yn extends St{m_index;gc;dim;constructor(e,t){super(),this.m_index=-1,this.gc=e,this.dim=t}next(){for(;;){if(this.m_index>=this.gc.getGeometryCount()||(this.m_index++,this.m_index===this.gc.getGeometryCount()))return null;let e=this.gc.getGeometry(this.m_index);if(this.dim===-1||1<<e.getDimension()&this.dim)return e}return null}getGeometryID(){return this.m_index}tock(){return!0}getRank(){return 1}}class bn{static type=s.enumGeometryCollection;m_description;m_geoms=[];constructor(e){if(this.m_description=y(),e){if(e.vd){this.m_description=e.vd;return}if(e.copy){e.copy.copyTo(this);return}i(`constructor argument not recognized`)}}getGeometryCount(){return this.m_geoms.length}reserve(e){}addGeometry(e){if(e.getGeometryType()===s.enumGeometryCollection){let t=e;for(let e=0,n=t.getGeometryCount();e<n;e++)this.addGeometry(t.getGeometry(e))}else this.m_geoms.push(e.clone()),this.mergeVertexDescription(e.getDescription())}addCursor(e){for(let t=e.next();t!==null;t=e.next())this.addGeometry(t)}getGeometry(e){return(e<0||e>=this.m_geoms.length)&&i(`Geometry_collection.get_geometry`),this.m_geoms[e]}modifiedElementIndex(e){this.mergeVertexDescription(this.getGeometry(e).getDescription())}modifiedElement(e){this.mergeVertexDescription(e.getDescription())}getGeometryType(){return s.enumGeometryCollection}getDimension(){let e=0;for(let t of this.m_geoms)e=Math.max(e,t.getDimension());return e}getDescription(){return this.m_description}assignVertexDescription(e){this.m_description!==e&&this.assignVertexDescriptionImpl(e)}assignVertexDescriptionImpl(e){for(let t of this.m_geoms)t.assignVertexDescription(e);this.m_description=e}mergeVertexDescription(e){this.m_description!==e&&(this.m_description.hasAttributesFrom(e)||this.mergeVertexDescriptionImpl(e))}hasAttribute(e){return this.m_description.hasAttribute(e)}addAttribute(e){if(this.m_description.hasAttribute(e))return;let t=S(this.m_description,e);this.assignVertexDescription(t)}dropAttribute(e){if(!this.m_description.hasAttribute(e))return;let t=C(this.m_description,e);this.assignVertexDescription(t)}dropAllAttributes(){let e=y();e!==this.m_description&&this.assignVertexDescription(e)}queryInterval(e,t){let n=new R,r=new R;r.setEmpty();for(let i of this.m_geoms)n=i.queryInterval(e,t),r.merge(n);return r}queryEnvelope(e){if(e.m_EnvelopeType===4){let t=new A;e.setEmpty(),e.assignVertexDescription(this.m_description);for(let n of this.m_geoms)n.queryEnvelope(t),e.merge(t)}else if(e.m_EnvelopeType===2){let t=new G;e.setEmpty();for(let n of this.m_geoms)n.queryEnvelope(t),e.mergeEnvelope2D(t)}n(`3d envelope case not implemented`)}queryLooseEnvelope(e){if(e.m_EnvelopeType===2){let t=new G;e.setEmpty();for(let n of this.m_geoms)n.queryLooseEnvelope(t),e.mergeEnvelope2D(t)}n(`3d not impl`)}isEmpty(){return this.m_geoms.length===0}setEmpty(){this.m_geoms.length=0}applyTransformation(e){if(e.m_TransformationType===1)for(let t of this.m_geoms)t.applyTransformation(e);n(`3d xform not impl`)}transformAttribute(e,t,n,r,i){for(let a of this.m_geoms)a.transformAttribute(e,t,n,r,i)}createInstance(){return new bn({vd:this.getDescription()})}copyTo(e){e.getGeometryType()!==s.enumGeometryCollection&&i(``);let t=e;if(t!==this){t.m_geoms.length=0,t.assignVertexDescription(this.m_description);for(let e of this.m_geoms)t.m_geoms.push(e.clone())}}calculateArea2D(){let e=new De(0);for(let t of this.m_geoms)e.pe(t.calculateArea2D());return e.getResult()}calculateLength2D(){let e=new De(0);for(let t of this.m_geoms)e.pe(t.calculateLength2D());return e.getResult()}calculateLength3D(e){return r(0),0}getBoundary(){let e=this.createInstance(),t=e;for(let e of this.m_geoms){let n=e.getBoundary();n&&t.m_geoms.push(n)}return e}clone(){return new bn({copy:this})}equals(e,t){if(e===this)return!0;if(e.getGeometryType()!==s.enumGeometryCollection)return!1;let n=e;if(this.m_description!==n.m_description||this.m_geoms.length!==n.m_geoms.length)return!1;for(let e=0;e<this.m_geoms.length;++e)if(!this.m_geoms[e].equals(n.m_geoms[e],t))return!1;return!0}swap(e){e.getGeometryType()!==s.enumGeometryCollection&&i(``);let t=e;t!==this&&(this.m_geoms=z(t.m_geoms,t.m_geoms=this.m_geoms))}setAttributeBasic(e,t,n){for(let r of this.m_geoms)r.setAttributeBasic(e,t,n)}replaceNaNs(e,t){for(let n of this.m_geoms)n.replaceNaNs(e,t)}getImpl(){return this}mergeVertexDescriptionImpl(e){let t=this.getDescription(),n=x(t,e);this.assignVertexDescription(n)}}function xn(e,t=-1){return new yn(e,t)}class Sn extends an{constructor(e){super(e)}}class Cn extends Sn{isTrue3D(){return!0}constructor(e){super(e)}}function wn(e,t,n){Tn(t,e.getStartXY(),e.getEndXY(),n)}function Tn(e,t,n,r){Ue(t,n,e,r)}function En(e,t){return B(e.m_XStart,e.m_XEnd,t)}function Dn(e,t){return B(e.m_YStart,e.m_YEnd,t)}function On(e,t){let n=e.getStartZ(),r=e.getEndZ();return B(n,r,t)}function kn(e,t,n){let r=K.constructPoint2D(e.getStartXY()),i=K.constructPoint2D(e.getEndXY());n.setCoordsE(i.x.subE(r.x),i.y.subE(r.y))}function An(e,t,n){t.value()<=.5?Ge(2,K.constructPoint2D(e.getStartXY()),K.constructPoint2D(e.getEndXY()),t,n):Ke(2,K.constructPoint2D(e.getStartXY()),K.constructPoint2D(e.getEndXY()),t,n)}function jn(e,t,n){e.m_XStart=t.x,e.m_YStart=t.y,e.m_XEnd=n.x,e.m_YEnd=n.y,e.afterCompletedModification()}function Mn(e,t){let n=e.getStartXYZ();n.z*=t;let r=e.getEndXYZ();return r.z*=t,n.norm(1)+r.norm(1)}function Nn(e){if(e.m_YEnd<e.m_YStart||e.m_YEnd===e.m_YStart&&e.m_XEnd<e.m_XStart){e.m_XEnd=z(e.m_XStart,e.m_XStart=e.m_XEnd),e.m_YEnd=z(e.m_YStart,e.m_YStart=e.m_YEnd);for(let t=0,n=e.m_description.getTotalComponentCount()-2;t<n;t++)e.m_attributes[t+n]=z(e.m_attributes[t],e.m_attributes[t]=e.m_attributes[t+n])}}function Pn(e,t,n,r){let i=0;if((e.m_XStart===t.m_XStart&&e.m_YStart===t.m_YStart||e.m_XStart===t.m_XEnd&&e.m_YStart===t.m_YEnd)&&(i++,!r))return 1;if(e.m_XEnd===t.m_XStart&&e.m_YEnd===t.m_YStart||e.m_XEnd===t.m_XEnd&&e.m_YEnd===t.m_YEnd){if(i++,i===2)return 2;if(!r)return 1}return t.isIntersectingPoint(e.getStartXY(),n,!0)||t.isIntersectingPoint(e.getEndXY(),n,!0)||e.isIntersectingPoint(t.getStartXY(),n,!0)||e.isIntersectingPoint(t.getEndXY(),n,!0)?4:r&&i?0:Ln(e,t)?4:0}function Fn(e,t,n,r,i,a,o,s){r!==null&&it(r,2,NaN),i!==null&&it(i,2,NaN),n!==null&&at(n,P,2);let c=In(e,t,2,n,r,i,a,o,s);return r&&(r.length=c),i&&(i.length=c),n&&(n.length=c),c}function In(e,t,n,r,i,a,o,s,c){let l=zn(e,t.getStartXY(),o,!1),u=zn(e,t.getEndXY(),o,!1),d=zn(t,e.getStartXY(),o,!1),f=zn(t,e.getEndXY(),o,!1),p=0,m=0;if(!Number.isNaN(l)){let n=!1;s&&U(l,0,1)&&e.getCoord2D(l).isEqualPoint2D(t.getStartXY())&&(p++,n=!0),n||(i&&(i[m]=l),a&&(a[m]=0),r&&r[m].setCoords(t.m_XStart,t.m_YStart),m++)}if(!Number.isNaN(u)){let o=!1;s&&U(u,0,1)&&e.getCoord2D(u).isEqualPoint2D(t.getEndXY())&&(p++,o=!0),o||(n>m&&(i&&(i[m]=u),a&&(a[m]=1),r&&r[m].setCoords(t.m_XEnd,t.m_YEnd)),m++)}if(m!==2&&!Number.isNaN(d)&&(l!==0||d!==0)&&(u!==0||d!==1)){let o=!1;s&&U(d,0,1)&&t.getCoord2D(d).isEqualPoint2D(e.getStartXY())&&(p++,o=!0),o||(n>m&&(i&&(i[m]=0),a&&(a[m]=d),r&&r[m].setCoords(e.m_XStart,e.m_YStart)),m++)}if(m!==2&&!Number.isNaN(f)&&(l!==1||f!==0)&&(u!==1||f!==1)){let o=!1;s&&U(f,0,1)&&t.getCoord2D(f).isEqualPoint2D(e.getEndXY())&&(p++,o=!0),o||(n>m&&(i&&(i[m]=1),a&&(a[m]=f),r&&r[m].setCoords(t.m_XEnd,t.m_YEnd)),m++)}if(m>0)return c&&(a=z(i,i=a)),m===2&&n>=2&&i&&i[0]>i[1]&&(i[1]=z(i[0],i[0]=i[1]),a&&(a[1]=z(a[0],a[0]=a[1])),r&&(r[1]=z(r[0],r[0]=r[1]))),m;if(p>0)return 0;let h=Wn(e,t,o);return Number.isNaN(h.x)?0:(r&&(r[0]=e.getCoord2D(h.x)),i&&(i[0]=h.x),a&&(a[0]=h.y),1)}function Ln(e,t){let n=Bn(e,t.m_XStart,t.m_YStart),r=Bn(e,t.m_XEnd,t.m_YEnd);if(n<0&&r<0||n>0&&r>0)return!1;let i=Bn(t,e.m_XStart,e.m_YStart),a=Bn(t,e.m_XEnd,e.m_YEnd);return i<0&&a<0||i>0&&a>0?!1:Un(e)>Un(t)?Hn(e,t):Hn(t,e)}function Rn(e,t){let n={bIntersect:!1,t1:NaN,t2:NaN},r=e.m_XEnd-e.m_XStart,i=e.m_YEnd-e.m_YStart,a=t.m_XEnd-t.m_XStart,o=t.m_YEnd-t.m_YStart,s=a*i-r*o;if(s===0)return n;let c=t.m_XStart-e.m_XStart,l=t.m_YStart-e.m_YStart,u=a*l-c*o,d=r*l-c*i,f=1/s;return n.t1=u*f,n.t2=d*f,n.bIntersect=!0,n}function zn(e,t,n,r){let i=P.getNAN(),a=P.getNAN(),o=!1;e.m_YEnd<e.m_YStart||e.m_YEnd===e.m_YStart&&e.m_XEnd<e.m_XStart?(i.setCoords(e.m_XEnd,e.m_YEnd),a.setCoords(e.m_XStart,e.m_YStart),o=!0):(i.setCoords(e.m_XStart,e.m_YStart),a.setCoords(e.m_XEnd,e.m_YEnd));let s=+!!o,c=+!o,l=P.getNAN();l.setSub(t,i);let u=l.length(),d=u*3*Se();if(u<=Math.max(n,d))return r&&u===0?NaN:s;if(l.setSub(t,a),u=l.length(),d=u*3*Se(),u<=Math.max(n,d))return r&&u===0?NaN:c;l.setCoords(a.x-i.x,a.y-i.y);let f=l.length();if(f>0){let e=1/f;l.scale(e);let r=P.getNAN();r.setSub(t,i);let u=r.dotProduct(l),d=8*r.dotProductAbs(l)*Se();l.leftPerpendicularThis();let p=r.dotProduct(l),m=8*r.dotProductAbs(l)*Se(),h=Math.max(n,d);if(u<-h||u>f+h)return NaN;if(Math.abs(p)<=Math.max(n,m)){let r=u*e;r=xe(r,0,1);let l=P.getNAN();if(Tn(r,i,a,l),P.distance(l,t)<=n){if(r<.5){if(P.distance(l,i)<=n&&P.distance(t,i)<=n)return s}else if(P.distance(l,a)<=n&&P.distance(t,a)<=n)return c;return o?1-r:r}}}return NaN}function Bn(e,t,n){let r=P.getNAN();r.setCoords(t,n),r.subThis(e.getStartXY());let i=P.getNAN();i.setSub(e.getEndXY(),e.getStartXY());let a=i.crossProduct(r),o=4*Se()*(Math.abs(i.x*r.y)+Math.abs(i.y*r.x));return a>o?-1:+(a<-o)}function Vn(e,t,n,r){let i=r?e.m_XStart:e.m_XEnd,a=r?e.m_YStart:e.m_YEnd,o=P.getNAN();return o.x=t.getEndX()-i,o.y=t.getEndY()-a,n.dotProduct(o)>3*Se()*n.dotProductAbs(o)?(o.x=t.getStartX()-i,o.y=t.getStartY()-a,n.dotProduct(o)<=3*Se()*n.dotProductAbs(o)):!0}function Hn(e,t){let n=P.getNAN();return n.x=e.m_XEnd-e.m_XStart,n.y=e.m_YEnd-e.m_YStart,!(!Vn(e,t,n,!1)||(n.negateThis(),!Vn(e,t,n,!0)))}function Un(e){let t=e.m_XStart-e.m_XEnd,n=e.m_YStart-e.m_YEnd;return t*t+n*n}function Wn(e,t,n){let r=e.m_XEnd-e.m_XStart,i=e.m_YEnd-e.m_YStart,a=t.m_XEnd-t.m_XStart,o=t.m_YEnd-t.m_YStart,s=a*i-r*o;if(s===0)return P.getNAN();let c=4*Se()*(Math.abs(a*i)+Math.abs(r*o)),l=t.m_XStart-e.m_XStart,u=t.m_YStart-e.m_YStart,d=a*u-l*o,f=4*Se()*(Math.abs(a*u)+Math.abs(l*o)),p=d/s,m=Math.abs(s),h=(f*m+c*Math.abs(d))/(s*s)+Se()*Math.abs(p);if(p<-h||p>1+h)return P.getNAN();let g=r*u-l*i,_=4*Se()*(Math.abs(r*u)+Math.abs(l*i)),v=g/s,y=(_*m+c*Math.abs(g))/(s*s)+Se()*Math.abs(v);if(v<-y||v>1+y)return P.getNAN();let b=xe(p,0,1),x=xe(v,0,1),S=P.getNAN();wn(e,b,S);let C=P.getNAN();if(wn(t,x,C),!n||P.distance(S,C)>n){let r=P.getNAN();Ue(S,C,.5,r),b=e.getClosestCoordinate(r,!1),x=t.getClosestCoordinate(r,!1);let i=P.getNAN();wn(e,b,i);let a=P.getNAN();wn(t,x,a),i.subThis(a);let o=i.length(),s=(e.absNorm()+t.absNorm())*ye();if(o>Math.max(n,s))return P.getNAN()}return new P(b,x)}class Gn{constructor(t){if(this.m_currentSegmentIndex=-1,this.m_nextSegmentIndex=0,this.m_nextPathIndex=0,this.m_currentPathIndex=-1,this.m_parent=t.parent,this.m_buffer=new this.m_parent.m_segmentBufferCTor,this.m_description=t.parent.getDescription(),this.m_segmentCount=this.getSegmentCount(this.m_nextPathIndex),t.pointIndex!==void 0){(t.pointIndex<0||t.pointIndex>=t.parent.getPointCount())&&e(``);let n=t.parent.getPathIndexFromPointIndex(t.pointIndex);this.m_currentPathIndex=n,this.m_nextPathIndex=n+1,this.m_nextSegmentIndex=t.pointIndex-t.parent.getPathStart(n),this.m_segmentCount=this.getSegmentCount(this.m_currentPathIndex)}else if(t.pathIndex!==void 0){(t.pathIndex<0||t.pathIndex>=t.parent.getPathCount()||t.segmentIndex<0)&&e(``);let n=+!t.parent.isClosedPath(t.pathIndex);t.segmentIndex>=t.parent.getPathSize(t.pathIndex)-n&&e(``),this.m_nextSegmentIndex=t.segmentIndex,this.m_currentPathIndex=t.pathIndex,this.m_nextPathIndex=this.m_nextSegmentIndex+1,this.m_segmentCount=this.getSegmentCount(this.m_nextPathIndex)}this.prepare(),this.m_pathBegin=-1,this.m_bCurrentPathClosed=!1,this.m_bStripAttributes=!1,this.m_prevPathIndex=-1,this.m_prevSegmentIndex=-1,this.m_bNeedsUpdate=!1,this.m_currentPathIndex>-1&&(this.m_pathBegin=this.m_parent.getPathStart(this.m_currentPathIndex),this.m_bCurrentPathClosed=this.m_parent.isClosedPath(this.m_currentPathIndex))}stripAttributes(){this.m_bStripAttributes=!0}prepare(){this.m_bCirculator=!1,this.m_parent.isEmptyImpl()?(this.m_segFlagStream=null,this.m_xyStream=null):(this.m_segFlagStream=this.m_parent.getSegmentFlagsStreamRef(),this.m_xyStream=this.m_parent.getAttributeStreamRef(0))}nextPath(){return this.m_currentPathIndex=this.m_nextPathIndex,this.m_currentPathIndex>=this.m_parent.getPathCount()?!1:(this.m_currentSegmentIndex=-1,this.m_nextSegmentIndex=0,this.m_segmentCount=this.getSegmentCount(this.m_currentPathIndex),this.m_pathBegin=this.m_parent.getPathStart(this.m_currentPathIndex),this.m_bCurrentPathClosed=this.m_parent.isClosedPath(this.m_currentPathIndex),this.m_nextPathIndex++,!0)}previousPath(){return this.m_nextPathIndex!==0&&(this.m_nextPathIndex--,this.m_currentSegmentIndex=-1,this.m_nextSegmentIndex=0,this.m_segmentCount=this.getSegmentCount(this.m_nextPathIndex),this.m_currentPathIndex=this.m_nextPathIndex,this.m_pathBegin=this.m_parent.getPathStart(this.m_currentPathIndex),this.m_bCurrentPathClosed=this.m_parent.isClosedPath(this.m_currentPathIndex),this.resetToLastSegment(),!0)}getSegmentCount(e){return this.m_parent.isEmptyImpl()?0:this.m_parent.getSegmentCountPath(e)}resetToFirstPath(){this.m_currentSegmentIndex=-1,this.m_nextSegmentIndex=-1,this.m_segmentCount=-1,this.m_nextPathIndex=0,this.m_currentPathIndex=-1,this.m_pathBegin=-1,this.m_bCurrentPathClosed=!1}resetToLastPath(){this.m_nextPathIndex=this.m_parent.getPathCount(),this.m_currentPathIndex=-1,this.m_currentSegmentIndex=-1,this.m_nextSegmentIndex=-1,this.m_segmentCount=-1,this.m_pathBegin=-1}resetToPath(t){(t<0||t>this.m_parent.getPathCount())&&e(``),this.m_nextPathIndex=t,this.m_currentPathIndex=-1,this.m_currentSegmentIndex=-1,this.m_nextSegmentIndex=-1,this.m_segmentCount=-1,this.m_pathBegin=-1,this.m_bCurrentPathClosed=!1}isLastPath(){return this.m_currentPathIndex===this.m_parent.getPathCount()-1}isFirstSegmentInPath(){return this.m_currentSegmentIndex===0}isLastSegmentInPath(){return this.m_currentSegmentIndex===this.m_segmentCount-1}resetToFirstSegment(){this.m_currentSegmentIndex=-1,this.m_nextSegmentIndex=0}resetToLastSegment(){this.m_nextSegmentIndex=this.m_segmentCount,this.m_currentSegmentIndex=-1}resetTo(e){this.m_parent!==e.m_parent&&f(``),this.m_currentSegmentIndex=e.m_currentSegmentIndex,this.m_nextSegmentIndex=e.m_nextSegmentIndex,this.m_currentPathIndex=e.m_currentPathIndex,this.m_nextPathIndex=e.m_nextPathIndex,this.m_segmentCount=e.m_segmentCount,this.m_bCirculator=e.m_bCirculator,this.m_pathBegin=e.m_pathBegin,this.m_bCurrentPathClosed=e.m_bCurrentPathClosed,this.m_bStripAttributes=e.m_bStripAttributes,this.m_description=e.m_description}resetToVertex(e,t){if(this.m_currentPathIndex>=0&&this.m_currentPathIndex<this.m_parent.getPathCount()){let t=this.getPathBegin();if(e>=t&&e<this.m_parent.getPathEnd(this.m_currentPathIndex)){this.m_currentSegmentIndex=-1,this.m_nextSegmentIndex=e-t;return}}let n;n=t>=0&&t<this.m_parent.getPathCount()&&e>=this.m_parent.getPathStart(t)&&e<this.m_parent.getPathEnd(t)?t:this.m_parent.getPathIndexFromPointIndex(e),this.m_nextPathIndex=n+1,this.m_currentPathIndex=n,this.m_currentSegmentIndex=-1,this.m_nextSegmentIndex=e-this.m_parent.getPathStart(n),this.m_segmentCount=this.getSegmentCount(n),this.m_pathBegin=this.m_parent.getPathStart(this.m_currentPathIndex),this.m_bCurrentPathClosed=this.m_parent.isClosedPath(this.m_currentPathIndex)}hasNextSegment(){return this.m_nextSegmentIndex<this.m_segmentCount}hasPreviousSegment(){return this.m_nextSegmentIndex>0}nextSegment(){return this.m_currentSegmentIndex!==this.m_nextSegmentIndex&&this.updateSegment(),this.m_bCirculator?this.m_nextSegmentIndex=(this.m_nextSegmentIndex+1)%this.m_segmentCount:(this.m_nextSegmentIndex===this.m_segmentCount&&e(`Segment_iterator_impl::next_segment`),this.m_nextSegmentIndex++),this.m_buffer.get()}previousSegment(){return this.m_bCirculator?this.m_nextSegmentIndex=(this.m_segmentCount+this.m_nextSegmentIndex-1)%this.m_segmentCount:(this.m_nextSegmentIndex===0&&e(``),this.m_nextSegmentIndex--),this.m_nextSegmentIndex!==this.m_currentSegmentIndex&&this.updateSegment(),this.m_buffer.get()}nextCurve(){if(!this.m_parent.hasNonLinearSegments())return this.resetToLastSegment(),null;let t=0;for(;;){if(this.m_nextSegmentIndex===this.m_segmentCount||t===this.m_segmentCount)return null;let e=this.getPathBegin()+this.m_nextSegmentIndex;if((this.m_segFlagStream.read(e)&31)==1){this.m_bCirculator?this.m_nextSegmentIndex=(this.m_nextSegmentIndex+1)%this.m_segmentCount:this.m_nextSegmentIndex++,t++;continue}this.updateSegment();break}return this.m_currentSegmentIndex!==this.m_nextSegmentIndex&&this.updateSegment(),this.m_bCirculator?this.m_nextSegmentIndex=(this.m_nextSegmentIndex+1)%this.m_segmentCount:(this.m_nextSegmentIndex===this.m_segmentCount&&e(``),this.m_nextSegmentIndex++),this.m_buffer.get()}getPathBegin(){return this.m_pathBegin}getPathIndex(){return this.m_currentPathIndex}getStartPointIndex(){return this.getPathBegin()+this.m_currentSegmentIndex}getEndPointIndex(){return this.isClosingSegment()?this.getPathBegin():this.getStartPointIndex()+1}updateSegment(){(this.m_nextSegmentIndex<0||this.m_nextSegmentIndex>=this.m_segmentCount||this.m_currentPathIndex<0)&&e(``),this.m_currentSegmentIndex=this.m_nextSegmentIndex,this.m_parent.getSegmentFromPath(this.m_currentPathIndex,this.m_currentSegmentIndex,this.m_buffer,this.m_bStripAttributes)}isClosingSegment(){return this.m_bCurrentPathClosed&&this.m_currentSegmentIndex===this.m_segmentCount-1}isCurve(){return this.m_segFlagStream!==null&&(this.m_segFlagStream.read(this.m_currentSegmentIndex)&31)!=1}isPathClosed(){return this.m_bCurrentPathClosed}setCirculator(e){this.m_bCirculator=e}getImpl(){return this}m_buffer;m_currentSegmentIndex;m_nextSegmentIndex;m_nextPathIndex;m_currentPathIndex;m_parent;m_segFlagStream=null;m_xyStream=null;m_description;m_segmentCount;m_pathBegin;m_bCurrentPathClosed;m_bCirculator=!1;m_bStripAttributes;m_prevPathIndex;m_prevSegmentIndex;m_bNeedsUpdate}class Kn{m_rasterizedGeometry=null;m_quadTree=null;m_quadTreeForPaths=null;m_refCount=1;constructor(e){e&&e.copyTo(this)}getRasterizedGeometry(){return this.m_rasterizedGeometry}copyTo(e){e!==this&&(r(e.uniqueUse()),e.m_quadTree=this.m_quadTree,e.m_quadTreeForPaths=this.m_quadTreeForPaths,e.m_rasterizedGeometry=this.m_rasterizedGeometry)}clone(){let e=new Kn;return this.copyTo(e),e}uniqueUse(){return this.m_refCount===1}addRef(){++this.m_refCount}release(){--this.m_refCount===0&&(this.m_rasterizedGeometry=null,this.m_quadTree=null,this.m_quadTreeForPaths=null)}setRasterizedGeometry(e){r(this.uniqueUse())}setQuadTree(e){r(this.uniqueUse()),this.m_quadTree=e}setQuadTreeForPaths(e){r(this.uniqueUse()),this.m_quadTreeForPaths=e}getQuadTree(){return this.m_quadTree}getQuadTreeForPaths(){return this.m_quadTreeForPaths}}function qn(e){return!(e.isEmpty()||e.getGeometryType()!==s.enumPolyline&&e.getGeometryType()!==s.enumPolygon||e.getPointCount()<20)}function Jn(e){return!(e.isEmpty()||e.getGeometryType()!==s.enumPolyline&&e.getGeometryType()!==s.enumPolygon||e.getPointCount()<20)}function Yn(e,t){return e.readPoint2D(t+4)}function Xn(e){let n=e.getGeometryType();if(n===s.enumEllipticArc)return 10;if(n===s.enumBezier)return 4;if(n===s.enumRationalBezier2)return 5;if(n===s.enumBezier2)return 2;t(``)}function Zn(e){let t=e&31;return t===4?10:t===2?4:t===8?5:t===16?2:0}function Qn(e,t,n,r){let i=e.getPathStart(t),a=e.getPathEnd(t);if(a-i<3)return;let o=i*2,s=P.getNAN();n.queryPoint2D(o,s);let c=s.x,l=s.y,u=P.getNAN();n.queryPoint2D(o+2,u);let d=P.getNAN();for(let e=o+4,t=a*2;e<t;e+=2)n.queryPoint2D(e,d),r.pe((d.x-s.x)*(u.y-l)),s.setCoordsPoint2D(u),u.setCoordsPoint2D(d);r.pe((c-s.x)*(u.y-l))}function $n(e,t,n){for(;t.hasNextSegment();){let e=t.nextCurve();if(e===null)break;n.pe(2*e.calculateArea2DHelper())}}var J=v;class er{m_segmentFlags=null;m_segmentParamIndex=null;m_segmentParams=null;static toSegType(e){let n=0;switch(e){case s.enumLine:n=1;break;case s.enumBezier:n=2;break;case s.enumEllipticArc:n=4;break;case s.enumRationalBezier2:n=8;break;case s.enumBezier2:n=16;break;default:t(``)}return n}m_curveCount;m_bezierCount;m_arcCount;m_rbezier2Count;m_bezier2Count;m_curveParamWritePoint;constructor(){this.m_curveCount=0,this.m_bezierCount=0,this.m_arcCount=0,this.m_rbezier2Count=0,this.m_bezier2Count=0,this.m_curveParamWritePoint=0}assignCopy(e){return this.m_segmentFlags=e.m_segmentFlags,this.m_segmentParamIndex=e.m_segmentParamIndex,this.m_segmentParams=e.m_segmentParams,this.m_curveCount=e.m_curveCount,this.m_bezierCount=e.m_bezierCount,this.m_arcCount=e.m_arcCount,this.m_rbezier2Count=e.m_rbezier2Count,this.m_bezier2Count=e.m_bezier2Count,this.m_curveParamWritePoint=e.m_curveParamWritePoint,this}}class tr extends _n{constructor(e){super(e),e.move?(this.m_bPolygon=e.move.m_bPolygon,this.m_cachedLength2D=e.move.m_cachedLength2D,this.m_cachedArea2D=e.move.m_cachedArea2D,this.m_currentPathIndex=e.move.m_currentPathIndex,this.m_cachedRingAreas2D=e.move.m_cachedRingAreas2D,this.m_paths=e.move.m_paths,this.m_pathFlags=e.move.m_pathFlags,this.m_curveData=e.move.m_curveData,e.move.m_curveData=null,e.move.setEmpty()):(this.m_bPolygon=e.bPolygon,this.m_cachedLength2D=0,this.m_cachedArea2D=0,this.m_currentPathIndex=0)}getGeometryType(){return this.m_bPolygon?s.enumPolygon:s.enumPolyline}getDimension(){return this.m_bPolygon?2:1}changeRingStartPoint(e){r(this.m_bPolygon);let t=this.getPathIndexFromPointIndex(e),n=this.getPathStart(t);if(n===e)return;let a=this.getPathEnd(t);(e>=a||e<n)&&i(`change_ring_start_point`);for(let t=0,r=this.m_description.getAttributeCount();t<r;t++){let r=this.m_description.getSemantics(t),i=J.getComponentCount(r);this.m_vertexAttributes.get(t).rotate(n*i,e*i,a*i)}this.hasNonLinearSegments()&&(this.m_curveData.m_segmentFlags.rotate(n,e,a),this.m_curveData.m_segmentParamIndex.rotate(n,e,a))}setFillRule(e){this.m_bFillRule=e===1}getFillRule(){return+!!this.m_bFillRule}isExteriorRingOGC(e){return this.m_bPolygon?(this.updateOGCFlagsProtected(),!!(this.m_pathFlags.read(e)&8)):!1}isExteriorRing(e){return this.calculateRingArea2D(e)>0}calculateRingArea2D(e){return this.m_bPolygon?(this.updateRingAreas2DProtected(),this.m_cachedRingAreas2D.read(e)):0}updateRingAreas2DProtected(){if(!this.hasDirtyFlag(1024))return;let e=this.getPathCount();if(e===0){this.hasDirtyFlag(1024)&&(this.m_cachedArea2D=0),this.setDirtyFlagProtected(1024,!1);return}let t=new ie(e),n=new De(0),r=new De(0);if(this.m_pointCount!==0){let i=this.getAttributeStreamRef(0);if(this.hasNonLinearSegments()){let e=new Gn({parent:this});for(e.stripAttributes();e.nextPath();){r.reset();let a=e.getPathIndex();Qn(this,a,i,r),$n(this,e,r);let o=r.getResult()*.5;n.add(o),t.write(a,o)}}else for(let a=0;a<e;a++){r.reset(),Qn(this,a,i,r);let e=r.getResult()*.5;n.add(e),t.write(a,e)}}this.hasDirtyFlag(1024)&&(this.m_cachedArea2D=n.getResult(),this.m_cachedRingAreas2D=t,this.setDirtyFlagProtected(1024,!1))}getOGCPolygonCount(){if(!this.m_bPolygon)return 0;this.updateOGCFlagsProtected();let e=0,t=this.getPathCount();for(let n=0;n<t;n++)this.m_pathFlags.read(n)&8&&e++;return e}getHashCodeImpl(){return r(0),0}equalsImpl(e){let t=e,n=this.getPathCount();if(n!==t.getPathCount())return!1;let r=this.hasNonLinearSegments();if(r!==t.hasNonLinearSegments()||r&&(this.m_curveData.m_curveCount!==t.m_curveData.m_curveCount||this.m_curveData.m_bezierCount!==t.m_curveData.m_bezierCount)||this.m_paths&&!this.m_paths.equals(t.m_paths,0,n+1)||this.m_bFillRule!==t.m_bFillRule||!this.m_bPolygon&&this.m_pathFlags&&!this.m_pathFlags.equals(t.m_pathFlags,0,n))return!1;if(this.hasNonLinearSegments()){if(!this.m_curveData.m_segmentFlags.equals(t.m_curveData.m_segmentFlags,0,this.getPointCount()))return!1;for(let e=0,n=this.getPointCount();e<n;e++){let n=this.m_curveData.m_segmentFlags.read(e);if(!tr.isNonLinearSegmentFlag(n))continue;let r=this.m_curveData.m_segmentParamIndex.read(e),i=t.m_curveData.m_segmentParamIndex.read(e),a=Zn(n);for(let e=0;e<a;e++){let n=this.m_curveData.m_segmentParams.read(r+e),a=t.m_curveData.m_segmentParams.read(i+e);if(!Oe(n,a))return!1}}}return!0}equalsImplTol(e,t){let n=e,r=this.getPathCount();if(r!==n.getPathCount())return!1;let i=this.hasNonLinearSegments();if(i!==n.hasNonLinearSegments()||i&&(this.m_curveData.m_curveCount!==n.m_curveData.m_curveCount||this.m_curveData.m_bezierCount!==n.m_curveData.m_bezierCount)||this.m_paths&&!this.m_paths.equals(n.m_paths,0,r+1)||this.m_bFillRule!==n.m_bFillRule||!this.m_bPolygon&&this.m_pathFlags&&!this.m_pathFlags.equals(n.m_pathFlags,0,r))return!1;if(!i)return!0;if(!this.m_curveData.m_segmentFlags.equals(n.m_curveData.m_segmentFlags,0,this.getPointCount()))return!1;let a=this.querySegmentIterator(),o=n.querySegmentIterator();for(;a.nextPath();){if(!o.nextPath())return!1;for(;a.hasNextSegment();){let e=a.nextCurve(),n=o.nextCurve();if(!(e&&n&&e.equals(n,t))){if(!e&&!n)break;return!1}}}return!0}reserveImplImpl(e,t){this.m_curveData&&this.m_curveData.m_segmentFlags&&(this.m_curveData.m_segmentFlags.resize(e,1),this.m_curveData.m_segmentParamIndex.resize(e,-1),this.checkCompactSegmentParams())}verifyStreamsAfterSizeChangeExtraImpl(){this.m_paths||(this.m_paths=M(1,0),this.m_pathFlags=ae(1,0)),this.m_curveData&&this.m_curveData.m_segmentFlags&&(this.m_curveData.m_segmentFlags.resize(this.m_reservedPointCount,1),this.m_curveData.m_segmentParamIndex.resize(this.m_reservedPointCount,-1),this.checkCompactSegmentParams())}copyToImpl(e,t){let n=e;n.m_bPathStarted=!1,n.m_bFillRule=this.m_bFillRule,n.m_paths=this.m_paths?t?this.m_paths:this.m_paths.clone():null,n.m_pathFlags=this.m_pathFlags?t?this.m_pathFlags:this.m_pathFlags.clone():null,this.m_curveData&&(n.m_curveData||=new er,n.m_curveData.assignCopy(this.m_curveData),n.m_curveData.m_curveCount=0,n.updateCurveCounter(this.m_curveData.m_curveCount),t||(this.m_curveData.m_segmentParamIndex?n.m_curveData.m_segmentParamIndex=this.m_curveData.m_segmentParamIndex.clone():n.m_curveData.m_segmentParamIndex=null,this.m_curveData.m_segmentFlags?n.m_curveData.m_segmentFlags=this.m_curveData.m_segmentFlags.clone():n.m_curveData.m_segmentFlags=null,this.m_curveData.m_segmentParams?n.m_curveData.m_segmentParams=this.m_curveData.m_segmentParams.clone():n.m_curveData.m_segmentParams=null)),n.hasDirtyFlag(512)||(n.m_cachedLength2D=this.m_cachedLength2D),n.m_cachedRingAreas2D=null,n.hasDirtyFlag(1024)||(n.m_cachedArea2D=this.m_cachedArea2D,this.m_cachedRingAreas2D!==null&&(n.m_cachedRingAreas2D=t?this.m_cachedRingAreas2D:this.m_cachedRingAreas2D.clone()))}calculateArea2D(){return this.m_bPolygon?(this.updateRingAreas2DProtected(),this.m_cachedArea2D):0}calculateLength2D(){if(!this.hasDirtyFlag(512))return this.m_cachedLength2D;let e=this.querySegmentIterator(),t=new De(0);for(;e.nextPath();)for(;e.hasNextSegment();)t.add(e.nextSegment().calculateLength2D());return this.hasDirtyFlag(512)&&(this.m_cachedLength2D=t.getResult()),this.setDirtyFlagProtected(512,!1),t.getResult()}calculatePathLength2D(e){let t=this.querySegmentIteratorAtVertex(this.getPathStart(e)),n=new De(0);for(;t.hasNextSegment();)n.add(t.nextSegment().calculateLength2D());return n.getResult()}calculateLength3D(e){return r(0),0}calculatePathLength3D(e,t){return r(0),0}copyTo(e){u(e.getGeometryType())||i(``),this!==e&&super.copyTo(e)}swap(e){r(0)}setPointByVal(e,t){this.setPointByValWithCurves(e,t)}setPointByValWithCurves(e,t){if(this.hasNonLinearSegments()){let n=t.getXY();if(this.setXYCoordsWithCurves(e,n.x,n.y),this.m_description.getAttributeCount()===1)return}this.setPointByValNoCurves(e,t)}setXYCoordsWithCurves(e,t,n){if(this.hasNonLinearSegments()){let r=tr.getPathIndexFromPointIndexImpl(this.m_paths,this.getPathCount(),e,this.m_currentPathIndex);this.m_currentPathIndex=r;let i=this.getPrevSegmentTypeFromPath(r,e),a=this.getNextSegmentType(e);if(i!==1||a!==1){let o=e-1,s=new $;i!==1&&(this.isClosedPath(r)&&e===this.getPathStart(r)&&(o=this.getPathEnd(r)-1),this.getSegmentBuffer(o,s,!0));let c=new $;a!==1&&this.getSegmentBuffer(e,c,!0);let l=e+1;this.setXYCoordsNoCurves(e,t,n);let u=new P(t,n);i!==1&&(s.get().changeEndPoints2D(s.get().getStartXY(),u),this.replaceSegmentImpl(o,e,s.get(),!0)),a!==1&&(c.get().changeEndPoints2D(u,c.get().getEndXY()),this.replaceSegmentImpl(e,l,c.get(),!0));return}}this.setXYCoordsNoCurves(e,t,n)}setXYZWithCurves(e,t){this.hasNonLinearSegments()?(this.setXYCoordsWithCurves(e,t.x,t.y),this.setAttributeNoCurves(1,e,0,t.z)):this.setXYZNoCurves(e,t)}setAttributeWithCurves(e,t,n,r){if(e!==0||!this.hasNonLinearSegments())this.setAttributeNoCurves(e,t,n,r);else{let e=this.getXY(t);n===0?e.x=r:e.y=r,this.setXYCoordsWithCurves(t,e.x,e.y)}}setXY(e,t){this.setXYCoordsWithCurves(e,t.x,t.y)}setXYCoords(e,t,n){this.setXYCoordsWithCurves(e,t,n)}setXYZ(e,t){this.setXYZWithCurves(e,t)}setAttribute(e,t,n,r){this.setAttributeWithCurves(e,t,n,r)}setAttributeWithCurvesFromArray(t,n,r,i){if(t!==0||!this.hasNonLinearSegments())this.setAttributeFromArrayNoCurves(t,n,r,i);else{i<2&&e(``);let t=this.getXY(n);t.x=r[0],t.y=r[1],this.setXYCoordsWithCurves(n,t.x,t.y)}}setAttributeFromArray(e,t,n,r){this.setAttributeWithCurvesFromArray(e,t,n,r)}hasNonLinearSegments(){return this.getCurveCount()!==0}getSegmentCount(){let e=this.getPointCount();if(!this.m_bPolygon){e-=this.getPathCount();for(let t=0,n=this.getPathCount();t<n;t++)this.isClosedPath(t)&&e++}return e}getSegmentCountPath(e){let t=this.getPathSize(e);return!this.isClosedPath(e)&&t>0&&t--,t}add(e,t){this===e&&i(`Multi_path_impl::add`);for(let n=0,r=e.getPathCount();n<r;n++)this.addPath(e,n,!t)}addPath(e,t,n){this.insertPath(-1,e,t,n)}addPathPoint2D(e,t,n){this.insertPath2D(-1,e,0,t,n)}addPathMultiPoint(e,t,n,r){n<0&&(n=e.getPointCount()-t),this.insertPointsFromMultipoint(-1,0,e,t,n,r)}addSegmentsFromPath(t,n,r,a,o){if(this===t&&i(`Multi_path_impl.add_segments_from_path`),!o&&this.getPathCount()===0&&(o=!0),n<0&&(n=t.getPathCount()-1),(n>=t.getPathCount()||r<0||a<0||r+a>t.getSegmentCountPath(n))&&e(`add_segments_from_path`),a===0)return;let s=t.getPathStart(n),c=t.isClosedPath(n)&&r+a===t.getSegmentCountPath(n);this.m_bPathStarted=!1,this.mergeVertexDescription(t.getDescription());let l=a,u=s+r,d=u+1;o&&(l++,d--),!o&&t.hasNonLinearSegments()&&t.m_curveData.m_segmentFlags.read(u)!==1&&(t.getXY(u).equals(this.getXY(this.m_pointCount-1))||i(`add_segments_from_path: start point mismatch`));let f=this.m_pointCount;if(this.resizeImpl(this.m_pointCount+l),this.verifyAllStreamsAfterSizeChange(),o){if(l===0)return;this.m_paths.add(this.m_pointCount);let e=t.m_pathFlags.read(n);this.m_bPolygon&&(e|=1),this.m_pathFlags.write(this.m_pathFlags.size()-1,e),this.m_pathFlags.add(0)}else this.m_paths.write(this.m_pathFlags.size()-1,this.m_pointCount);let p=c?l-1:l;for(let e=0,n=this.m_description.getAttributeCount();e<n;e++){let n=this.m_description.getSemantics(e),r=J.getComponentCount(n),i=t.m_description.getAttributeIndex(n);if(p>0){if(i<0||!t.m_vertexAttributes.get(i)){let t=J.getDefaultValue(n);this.m_vertexAttributes.get(e).insertRange(r*f,t,p*r,r*f),c&&this.m_vertexAttributes.get(e).insertRange(r*f+p*r,t,r,r*f);continue}this.m_vertexAttributes.get(e).insertRangeFromStream(r*f,t.m_vertexAttributes.get(i),r*d,p*r,!0,r,r*f)}c&&this.m_vertexAttributes.get(e).insertRangeFromStream(r*(f+p),t.m_vertexAttributes.get(i),r*s,r,!0,r,r*(f+p))}if(this.hasNonLinearSegments()&&this.initSegmentData(0),t.hasNonLinearSegments()){let e=0;for(let n=0,r=u;n<a;n++){let n=t.m_curveData.m_segmentFlags.read(r);e+=Zn(n),r++}if(e>0){this.initSegmentData(e);let n=u,r=f-+!o,i=0;for(let e=0;e<a;e++){let e=t.m_curveData.m_segmentFlags.read(n);if(this.m_curveData.m_segmentFlags.write(r,e),tr.isNonLinearSegmentFlag(e)){i++;let a=t.m_curveData.m_segmentParamIndex.read(n),o=Zn(e);this.m_curveData.m_segmentParamIndex.write(r,this.m_curveData.m_curveParamWritePoint);for(let e=0;e<o;e++){let e=t.m_curveData.m_segmentParams.read(a);this.m_curveData.m_segmentParams.write(this.m_curveData.m_curveParamWritePoint,e),this.m_curveData.m_curveParamWritePoint++,a++}this.incCurveType(e,1)}else this.m_curveData.m_segmentParamIndex.write(r,-1);r++,n++}this.modifyCurveCounter(i)}}if(c){let e=this.getPathCount()-1,t=this.getPathStart(e),n=this.getPathEnd(e)-1,r=this.getXY(t),i=this.getXY(n);r.isEqualPoint2D(i)&&(--this.m_pointCount,this.m_paths.write(e+1,this.m_pointCount))}this.notifyModifiedFlags(2001)}reverseAllPaths(){for(let e=0,t=this.getPathCount();e<t;e++)this.reversePath(e)}reversePath(e){e>=this.getPathCount()&&i(``);let t=this.getPathSize(e);if(t===0)return;let n=this.getPathStart(e),r=this.isClosedPath(e);if(this.hasNonLinearSegments()){let e=n,i=new this.m_segmentBufferCTor,a=!1;for(let n=0;n<t;n++,e++){let t=this.m_curveData.m_segmentFlags.read(e);if(!tr.isNonLinearSegmentFlag(t))continue;a=!0,this.querySegment(e,i,!0),i.get().reverse();let n=this.m_curveData.m_segmentParamIndex.read(e);i.get().writeInBufferStream(this.m_curveData.m_segmentParams,n)}if(a){let e=+!r;this.m_curveData.m_segmentFlags.reverseRange(n,t-e,1),this.m_curveData.m_segmentParamIndex.reverseRange(n,t-e,1)}}let a=+!!r;for(let e=0,r=this.m_description.getAttributeCount();e<r;e++)if(this.m_vertexAttributes.get(e)){let r=this.m_description.getSemantics(e),i=J.getComponentCount(r);this.m_vertexAttributes.get(e).reverseRange(i*(n+a),i*(t-a),i)}let o=this.m_pathFlags.read(e)&6;if(o){let t=0;o&4&&(t|=2),o&2&&(t|=4),this.m_pathFlags.clearBits(e,6),this.m_pathFlags.setBits(e,t)}this.notifyModifiedFlags(1233)}removePath(e){let t=this.getPathCount();e<0&&(e=t-1),e>=t&&i(``);let n=this.getPathStart(e),r=this.getPathSize(e);for(let e=0,t=this.m_description.getAttributeCount();e<t;e++)if(this.m_vertexAttributes.get(e)){let t=this.m_description.getSemantics(e),i=J.getComponentCount(t);this.m_vertexAttributes.get(e).eraseRange(i*n,i*r,i*this.m_pointCount)}if(this.hasNonLinearSegments()){let e=0;for(let t=n,i=n+r;t<i;t++){let n=this.m_curveData.m_segmentFlags.read(t);tr.isNonLinearSegmentFlag(n)&&(this.incCurveType(n,-1),e++)}this.modifyCurveCounter(-e),this.m_curveData.m_segmentFlags.eraseRange(n,r,this.m_pointCount),this.m_curveData.m_segmentParamIndex.eraseRange(n,r,this.m_pointCount)}for(let n=e+1;n<=t;n++){let e=this.m_paths.read(n);this.m_paths.write(n-1,e-r)}if(this.m_pathFlags)for(let n=e+1;n<=t;n++){let e=this.m_pathFlags.read(n);this.m_pathFlags.write(n-1,e)}this.m_paths.resize(t),this.m_pathFlags.resize(t),this.m_pointCount-=r,this.m_reservedPointCount-=r,e===t-1&&(this.m_bPathStarted=!1),this.notifyModifiedFlags(2001),this.checkCompactSegmentParams(),this.dbgVerifyCurves()}dbgVerifyCurves(){}insertPath(e,t,n,r){this===t&&i(`Multi_path_impl::insert_path`);let a=this.getPathCount();if(!r&&t.hasNonLinearSegmentsPath(n))return e=this.insertPath(e,t,n,!0),this.reversePath(e),e;n>=t.getPathCount()&&i(``),e>a&&i(``),e<0&&(e=a),n<0&&(n=t.getPathCount()-1),this.m_bPathStarted=!1,this.mergeVertexDescription(t.getDescription());let o=t.getPathStart(n),s=t.getPathSize(n);if(s===0)return this.insertPath2D(e,null,0,0,!0);let c=this.m_pointCount,l=t.isClosedPath(n)&&!r?1:0;this.resizeImpl(this.m_pointCount+s),this.verifyAllStreamsAfterSizeChange();let u=e<a?this.getPathStart(e):c;for(let e=0,n=this.m_description.getAttributeCount();e<n;e++){let n=this.m_description.getSemantics(e),i=t.getDescription().getAttributeIndex(n),a=J.getComponentCount(n);if(i>=0&&t.m_vertexAttributes.get(i))l!==0&&this.m_vertexAttributes.get(e).insertRangeFromStream(u*a,t.m_vertexAttributes.get(i),a*o,a,!0,a,a*c),this.m_vertexAttributes.get(e).insertRangeFromStream((u+l)*a,t.m_vertexAttributes.get(i),a*(o+l),a*(s-l),r,a,a*(c+l));else{let t=J.getDefaultValue(n);this.m_vertexAttributes.get(e).insertRange(u*a,t,a*s,a*c)}}let d=c+s;this.m_paths.add(d);for(let t=a;t>=e+1;t--){let e=this.m_paths.read(t-1);this.m_paths.write(t,e+s)}this.m_pathFlags.add(0);for(let t=a-1;t>=e+1;t--){let e=this.m_pathFlags.read(t);e&=-9,this.m_pathFlags.write(t+1,e)}let f=t.getPathFlagsStreamRef().read(n);if(f&=-9,this.m_bPolygon&&(f|=1),this.m_pathFlags.write(e,f),t.hasNonLinearSegments()){this.initSegmentData(0);let e=o,n=0;for(let r=0;r<s;r++){let r=t.m_curveData.m_segmentFlags.read(e);n+=Zn(r),e++}if(n>0){this.m_curveData.m_segmentFlags===null?(this.m_curveData.m_segmentFlags=ae(this.m_pointCount,1),this.m_curveData.m_segmentParamIndex=M(this.m_pointCount,-1)):(this.m_curveData.m_segmentFlags.insertRange(u,1,s,c),this.m_curveData.m_segmentParamIndex.insertRange(u,-1,s,c)),this.m_curveData.m_segmentParams?this.m_curveData.m_segmentParams.resize(this.m_curveData.m_curveParamWritePoint+n):this.m_curveData.m_segmentParams=oe(n),e=o;let r=u,i=0;for(let n=0;n<s;n++){let n=t.m_curveData.m_segmentFlags.read(e);if(tr.isNonLinearSegmentFlag(n)){this.m_curveData.m_segmentFlags.write(r,n),this.m_curveData.m_segmentParamIndex.write(r,this.m_curveData.m_curveParamWritePoint);let a=Zn(n),o=t.m_curveData.m_segmentParamIndex.read(e);for(let e=0;e<a;e++){let e=t.m_curveData.m_segmentParams.read(o);this.m_curveData.m_segmentParams.write(this.m_curveData.m_curveParamWritePoint,e),this.m_curveData.m_curveParamWritePoint++,o++}i++,this.incCurveType(n,1)}e++,r++}this.modifyCurveCounter(i)}}return this.notifyModifiedFlags(2001),e}insertPath2D(e,t,n,r,a){let o=this.getPathCount();(e>o||n<0)&&i(``),e<0&&(e=o),this.m_bPathStarted=!1;let s=this.m_pointCount;this.resizeImpl(this.m_pointCount+r),r===0&&this.notifyModifiedFlags(32),this.verifyAllStreamsAfterSizeChange();let c=e<o?this.getPathStart(e):s;if(t)this.m_vertexAttributes.get(0).insertRangeFromPoints(2*c,t,n,r,a,2*s);else{let e=J.getDefaultValue(0);this.m_vertexAttributes.get(0).insertRange(2*c,e,r*2,2*s)}for(let e=1,t=this.m_description.getAttributeCount();e<t;e++){let t=this.m_description.getSemantics(e),n=J.getComponentCount(t),i=J.getDefaultValue(t);this.m_vertexAttributes.get(e).insertRange(c*n,i,n*r,n*s)}this.m_paths.add(this.m_pointCount);for(let t=o;t>=e+1;t--){let e=this.m_paths.read(t-1);this.m_paths.write(t,e+r)}this.m_pathFlags.add(0);for(let t=o-1;t>=e+1;t--){let e=this.m_pathFlags.read(t);e&=-9,this.m_pathFlags.write(t+1,e)}return this.m_bPolygon&&this.m_pathFlags.write(e,1),this.hasNonLinearSegments()&&(this.m_curveData.m_segmentFlags.insertRange(c,1,r,s),this.m_curveData.m_segmentParamIndex.insertRange(c,-1,r,s)),this.notifyModifiedFlags(2001),e}insertPathFromMultipoint(e,t,n,r,a){let o=t.getImpl(),s=this.getPathCount();(e>s||n<0)&&i(``);let c=r<0?o.getPointCount()-n:r;if(c>o.getPointCount()&&i(``),n>=o.getPointCount()&&i(`pointsOffset`),e<0&&(e=s),this.m_bPathStarted=!1,this.mergeVertexDescription(o.getDescription()),c===0){this.insertPath2D(e,null,0,0,!0);return}let l=this.m_pointCount,u=n;this.resizeImpl(this.m_pointCount+c),this.verifyAllStreamsAfterSizeChange();let d=e<s?this.getPathStart(e):l;for(let e=0,t=this.m_description.getAttributeCount();e<t;e++){let t=this.m_description.getSemantics(e),n=o.getDescription().getAttributeIndex(t),r=J.getComponentCount(t);if(n>=0){let n=o.getAttributeStreamRef(t);this.m_vertexAttributes.get(e).insertRangeFromStream(d*r,n,r*u,r*c,a,r,r*l)}else{let n=J.getDefaultValue(t);this.m_vertexAttributes.get(e).insertRange(d*r,n,r*c,r*l)}}let f=l+c;this.m_paths.add(f);for(let t=s;t>=e+1;t--){let e=this.m_paths.read(t-1);this.m_paths.write(t,e+c)}this.m_pathFlags.add(0);for(let t=s-1;t>=e+1;t--){let e=this.m_pathFlags.read(t);e&=-9,this.m_pathFlags.write(t+1,e)}let p=0;this.m_bPolygon&&(p|=1),this.m_pathFlags.write(e,p),this.notifyModifiedFlags(2001)}insertPoints(t,n,r,a,o,s,c){if(this===r&&i(`Multi_path_impl.insert_points`),t<0&&(t=this.getPathCount()),a<0&&(a=r.getPathCount()-1),(t>this.getPathCount()||n>=0&&n>this.getPathSize(t)||a>=r.getPathCount()||s>r.getPathSize(a))&&e(``),!s)return;if(this.mergeVertexDescription(r.m_description),t===this.getPathCount()){this.m_paths.add(this.m_pointCount);let e=r.m_pathFlags.read(a);e&=-9,this.m_bPolygon?this.m_pathFlags.add(e|1):this.m_pathFlags.add(e)}n<0&&(n=this.getPathSize(t));let l=this.m_pointCount;this.resizeImpl(this.m_pointCount+s),this.verifyAllStreamsAfterSizeChange();let u=this.getPathStart(t),d=u+n;s<0&&(s=r.getPathSize(a));let f=r.getPathStart(a),p=f+s;for(let e=0,t=this.m_description.getAttributeCount();e<t;e++){let t=this.m_description.getSemantics(e),i=J.getComponentCount(t),a=r.m_description.getAttributeIndex(t);if(a<0||!r.m_vertexAttributes.get(a)){let n=J.getDefaultValue(t);this.m_vertexAttributes.get(e).insertRange(i*d,n,p*i,i*l);continue}this.m_vertexAttributes.get(e)?.insertRangeFromStream(i*(u+n),r.m_vertexAttributes.get(a),i*(f+o),s*i,c,i,i*l)}this.hasNonLinearSegments()&&(this.m_curveData.m_segmentFlags.insertRange(u+n,1,s,l),this.m_curveData.m_segmentParamIndex.insertRange(u+n,-1,s,l),n>0&&this.isNonLinearSegment(u+n-1)&&(this.incCurveType(this.m_curveData.m_segmentFlags.read(u+n-1),-1),this.m_curveData.m_segmentFlags.write(u+n-1,1),this.m_curveData.m_segmentParamIndex.write(u+n-1,-1),this.modifyCurveCounter(-1)));for(let e=t+1,n=this.getPathCount();e<=n;e++){let t=this.m_paths.read(e);this.m_paths.write(e,t+s)}this.notifyModifiedFlags(2001)}insertPointsFromPoints(t,n,r,i,a,o){if(t<0&&(t=this.getPathCount()),(t>this.getPathCount()||n>this.getPathSize(t)||i<0)&&e(``),!a)return;t===this.getPathCount()&&(this.m_paths.add(this.m_pointCount),this.m_bPolygon?this.m_pathFlags.add(1):this.m_pathFlags.add(0)),n<0&&(n=this.getPathSize(t));let s=this.m_pointCount;this.resizeImpl(this.m_pointCount+a),this.verifyAllStreamsAfterSizeChange();let c=this.getPathStart(t);this.m_vertexAttributes.get(0).insertRangeFromPoints(2*(c+n),r,i,a,o,2*s);for(let e=1,t=this.m_description.getAttributeCount();e<t;e++){let t=this.m_description.getSemantics(e),r=J.getComponentCount(t),i=J.getDefaultValue(t);this.m_vertexAttributes.get(e).insertRange((c+n)*r,i,r*a,r*s)}this.hasNonLinearSegments()&&(this.m_curveData.m_segmentFlags.insertRange(c+n,1,a,s),this.m_curveData.m_segmentParamIndex.insertRange(c+n,-1,a,s),n>0&&this.isNonLinearSegment(c+n-1)&&(this.incCurveType(this.m_curveData.m_segmentFlags.read(c+n-1),-1),this.m_curveData.m_segmentFlags.write(c+n-1,1),this.m_curveData.m_segmentParamIndex.write(c+n-1,-1),this.modifyCurveCounter(-1)));for(let e=t+1,n=this.getPathCount();e<=n;e++)this.m_paths.write(e,this.m_paths.read(e)+a);this.notifyModifiedFlags(2001)}insertPointsFromMultipoint(t,n,r,i,a,o){let s=r.getImpl(),c=this.getPathCount();t<0&&(t=this.getPathCount());let l=s.getPointCount();if((i<0||i>l)&&e(``),(a<0||i+a>l)&&(a=l-i),n<0&&(n=t<c?this.getPathSize(t):0),(t>c||t<c&&n>this.getPathSize(t)||t===c&&n>0||a<0)&&e(``),!a)return;this.mergeVertexDescription(s.getDescription()),t===c&&(this.m_paths.add(this.m_pointCount),this.m_bPolygon?this.m_pathFlags.add(1):this.m_pathFlags.add(0)),n<0&&(n=this.getPathSize(t));let u=this.m_pointCount;this.resizeImpl(this.m_pointCount+a),this.verifyAllStreamsAfterSizeChange();let d=this.getPathStart(t),f=d+n,p=0+a;for(let e=0,t=this.m_description.getAttributeCount();e<t;e++){let t=this.m_description.getSemantics(e),r=J.getComponentCount(t);if(s.getDescription().getAttributeIndex(t)<0){let n=J.getDefaultValue(t);this.m_vertexAttributes.get(e).insertRange(r*f,n,p*r,r*u);continue}let c=s.getAttributeStreamRef(t);this.m_vertexAttributes.get(e).insertRangeFromStream(r*(d+n),c,r*(0+i),a*r,o,r,r*u)}this.hasNonLinearSegments()&&(this.m_curveData.m_segmentFlags.insertRange(d+n,1,a,u),this.m_curveData.m_segmentParamIndex.insertRange(d+n,-1,a,u),n>0&&this.isNonLinearSegment(d+n-1)&&(this.incCurveType(this.m_curveData.m_segmentFlags.read(d+n-1),-1),this.m_curveData.m_segmentFlags.write(d+n-1,1),this.m_curveData.m_segmentParamIndex.write(d+n-1,-1),this.modifyCurveCounter(-1)));for(let e=t+1,n=this.getPathCount();e<=n;e++){let t=this.m_paths.read(e);this.m_paths.write(e,t+a)}this.notifyModifiedFlags(2001)}insertPoint2D(t,n,r){let i=this.getPathCount();t<0&&(t=i),(t>i||t<i&&n>this.getPathSize(t))&&e(``),t===i&&this.addPathPoint2D(null,0,!0);let a=this.m_pointCount;this.resizeImpl(this.m_pointCount+1),this.verifyAllStreamsAfterSizeChange();let o=this.getPathStart(t),s=n<0?this.getPathSize(t)+o:n+o,c=this.m_vertexAttributes.get(0);if(s===a)this.m_paths.write(t+1,a+1),c.writePoint2D(s*2,r);else{c.insert(2*s,r,2*a);for(let e=1,t=this.m_description.getAttributeCount();e<t;e++){let t=this.m_description.getSemantics(e),n=J.getComponentCount(t),r=J.getDefaultValue(t);this.m_vertexAttributes.get(e).insertRange(n*s,r,n,n*a)}this.m_curveData&&this.m_curveData.m_segmentFlags&&(this.m_curveData.m_segmentFlags.insertRange(s,1,1,a),this.m_curveData.m_segmentParamIndex.insertRange(s,-1,1,a));for(let e=t+1,n=i;e<=n;e++)this.m_paths.write(e,this.m_paths.read(e)+1)}this.m_curveData&&this.m_curveData.m_segmentFlags&&s>o&&this.isNonLinearSegment(s-1)&&(this.incCurveType(this.m_curveData.m_segmentFlags.read(s-1),-1),this.modifyCurveCounter(-1),this.m_curveData.m_segmentFlags.write(s-1,1),this.m_curveData.m_segmentParamIndex.write(s-1,-1)),this.notifyModifiedFlags(2001)}insertPoint(t,n,r){let i=this.getPathCount();t<0&&(t=i),(t>i||t<i&&n>this.getPathSize(t))&&e(``),t===i&&this.addPathPoint2D(null,0,!0);let a=this.m_pointCount;this.resizeImpl(this.m_pointCount+1),this.verifyAllStreamsAfterSizeChange();let o=this.getPathStart(t),s=n<0?this.getPathSize(t)+o:n+o;if(s===a)this.m_paths.write(t+1,a+1),this.setPointByValNoCurves(s,r);else{let e=r.getDescription();this.m_description!==e&&this.mergeVertexDescription(e);for(let t=0,n=this.m_description.getAttributeCount();t<n;t++){let n=this.m_description.getSemantics(t),i=J.getComponentCount(n);if(e.hasAttribute(n))this.m_vertexAttributes.get(t).insertAttributes(i*s,r,n,i*a);else{let e=J.getDefaultValue(n);this.m_vertexAttributes.get(t).insertRange(i*s,e,i,i*a)}}this.m_curveData&&this.m_curveData.m_segmentFlags&&(this.m_curveData.m_segmentFlags.insertRange(s,1,1,a),this.m_curveData.m_segmentParamIndex.insertRange(s,-1,1,a));for(let e=t+1,n=i;e<=n;e++)this.m_paths.write(e,this.m_paths.read(e)+1)}this.m_curveData&&this.m_curveData.m_segmentFlags&&s>o&&this.isNonLinearSegment(s-1)&&(this.incCurveType(this.m_curveData.m_segmentFlags.read(s-1),-1),this.modifyCurveCounter(-1),this.m_curveData.m_segmentFlags.write(s-1,1),this.m_curveData.m_segmentParamIndex.write(s-1,-1)),this.notifyModifiedFlags(2001)}removePointFromPath(t,n){let r=this.getPathCount();t<0&&(t=r-1),(t>=r||n>=this.getPathSize(t))&&e(`Multi_path.remove_point`);let i=this.getPathStart(t),a=this.isClosedPath(t);n<0&&(n=this.getPathSize(t)-1),n<0&&e(`Multi_path.remove_point`);let o=i+n;for(let e=0,t=this.m_description.getAttributeCount();e<t;e++)if(this.m_vertexAttributes.get(e)){let t=this.m_description.getSemantics(e),n=J.getComponentCount(t);this.m_vertexAttributes.get(e).eraseRange(n*o,n,n*this.m_pointCount)}if(this.m_curveData&&this.m_curveData.m_segmentFlags){this.checkCompactSegmentParams();let e=0;if(o>i&&this.isNonLinearSegment(o-1))e+=1,this.incCurveType(this.m_curveData.m_segmentFlags.read(o-1),-1),this.m_curveData.m_segmentFlags.write(o-1,1),this.m_curveData.m_segmentParamIndex.write(o-1,-1);else{let n=this.getPathEnd(t);a&&i+1<n&&this.isNonLinearSegment(n-1)&&(this.incCurveType(this.m_curveData.m_segmentFlags.read(n-1),-1),this.m_curveData.m_segmentFlags.write(n-1,1),this.m_curveData.m_segmentParamIndex.write(n-1,-1),e+=1)}this.isNonLinearSegment(o)&&(this.incCurveType(this.m_curveData.m_segmentFlags.read(o),-1),e+=1),e>0&&this.modifyCurveCounter(-e),this.m_curveData.m_segmentFlags.eraseRange(o,1,this.m_pointCount),this.m_curveData.m_segmentParamIndex.eraseRange(o,1,this.m_pointCount)}for(let e=r;e>=t+1;e--){let t=this.m_paths.read(e);this.m_paths.write(e,t-1)}this.m_pointCount--,this.m_reservedPointCount--,this.notifyModifiedFlags(2001)}removePoint(e){let t;t=e<0?this.getPathCount()-1:this.getPathIndexFromPointIndex(e),this.removePointFromPath(t,e-this.getPathStart(t))}getNextSegmentType(e){return this.hasNonLinearSegments()?this.m_curveData.m_segmentFlags.read(e):1}getPrevSegmentTypeFromPath(e,n){if(!this.hasNonLinearSegments())return 1;let r=this.getPathStart(e);if(n>r)return this.m_curveData.m_segmentFlags.read(n-1);if(n===r){if(this.isClosedPath(e)){let t=this.getPathEnd(e);return this.m_curveData.m_segmentFlags.read(t-1)}return 1}t(``)}getNumberOfCurves(e){if(!this.hasNonLinearSegments())return 0;let t=0;for(let n=this.getPathStart(e),r=this.getPathEnd(e);n<r;n++)tr.isNonLinearSegmentFlag(this.m_curveData.m_segmentFlags.read(n))&&++t;return t}getPathCount(){return this.m_paths?this.m_paths.size()-1:0}getPathSize(e){return this.m_paths.read(e+1)-this.m_paths.read(e)}getPathStart(e){return this.m_paths.read(e)}getPathEnd(e){return this.m_paths.read(e+1)}getPathIndexFromPointIndex(e,t=-1){t===-1&&(t=this.m_currentPathIndex);let n=this.getPathCount(),r=tr.getPathIndexFromPointIndexImpl(this.m_paths,n,e,t);return this.m_currentPathIndex=r,r}startPathCoords(e,t){this.startPathPoint(new N({x:e,y:t}))}startPath(e){this.startPathPoint(new N({pt:e}))}startPath3D(e){this.startPathPoint(new N({x:e.x,y:e.y,z:e.z}))}startPath3DCoords(e,t,n){this.startPathPoint(new N({x:e,y:t,z:n}))}startPathPoint(e){e.isEmpty()&&i(``);let t=e.getDescription(),n;if(this.m_description!==t){this.mergeVertexDescription(t);let r=new N({vd:this.m_description});e.copyCommonAttributesTo(r),n=r}else n=e;this.m_bPathStarted?this.setPointByValNoCurves(this.m_pointCount-1,n):(this.insertPoint(-1,-1,n),this.m_bPathStarted=!0)}beforeNewSegmentHelper2(){this.m_paths=M(2),this.m_paths.write(0,0),this.m_pathFlags=ae(2,0),this.m_bPolygon&&this.m_pathFlags.write(0,1)}beforeNewSegmentHelper1(){this.m_paths===null?this.beforeNewSegmentHelper2():(this.m_paths.add(0),this.m_pathFlags.add(0),this.m_bPolygon&&this.m_pathFlags.write(this.m_pathFlags.size()-2,1))}beforeNewSegment(e){this.m_pointCount===0&&!this.m_bPathStarted&&this.startPathCoords(0,0);let t=this.m_pointCount,n=this.m_paths.size()-1,r=t+e;this.m_paths.write(n,r),this.resizeImpl(r),this.m_bPathStarted&&=!1}finishLineTo(){if(this.hasNonLinearSegments()){let e=this.m_curveData.m_segmentFlags.read(this.m_pointCount-1);e!==1&&(this.m_curveData.m_segmentFlags.write(this.m_pointCount-1,1),this.m_curveData.m_segmentParamIndex.write(this.m_pointCount-1,-1),this.modifyCurveCounter(-1),this.incCurveType(e,-1))}}lineToCoords(e,t){if(this.beforeNewSegment(1),this.m_description.getAttributeCount()===1)this.setXYCoordsNoCurves(this.m_pointCount-1,e,t);else{let n=k(),r=new N({vd:this.m_description,attribBuffer:n,initDefaultValues:!0});r.setXYCoords(e,t),this.setPointByValNoCurves(this.m_pointCount-1,r)}this.finishLineTo()}lineTo(e){this.lineToCoords(e.x,e.y)}lineTo3D(e){this.beforeNewSegment(1);let t=x(this.m_description,b()),n=k(),r=new N({vd:t,attribBuffer:n,initDefaultValues:!0});r.setXYZ(e),this.setPointByValNoCurves(this.m_pointCount-1,r),this.finishLineTo()}lineTo3DCoords(e,t,n){this.lineTo3D(new w(e,t,n))}lineToPoint(e){if(this.beforeNewSegment(1),this.m_description===e.getDescription())this.setPointByValNoCurves(this.m_pointCount-1,e);else{this.mergeVertexDescription(e.getDescription());let t=k(),n=new N({vd:this.m_description,attribBuffer:t,initDefaultValues:!1});e.copyCommonAttributesTo(n),this.setPointByValNoCurves(this.m_pointCount-1,n)}this.finishLineTo()}openPathAndDuplicateStartVertex(e){this.m_bPolygon&&t(``);let n=this.getPathCount();if(e>n&&i(``),!this.isClosedPath(e))return;this.m_pathFlags||t(``);let r=this.m_pointCount,a=this.getPathStart(e),o=this.getPathEnd(e);if(o-a!==0){this.resizeImpl(this.m_pointCount+1),this.verifyAllStreamsAfterSizeChange();for(let e=0,t=this.m_description.getAttributeCount();e<t;e++)if(this.m_vertexAttributes.get(e)){let t=this.m_description.getSemantics(e),n=J.getComponentCount(t);this.m_vertexAttributes.get(e).insertRangeFromStream(n*o,this.m_vertexAttributes.get(e),n*a,n,!0,1,n*r)}for(let t=n;t>e;t--){let e=this.m_paths.read(t);this.m_paths.write(t,e+1)}this.hasNonLinearSegments()&&(this.m_curveData.m_segmentFlags.insertRange(o,1,1,r),this.m_curveData.m_segmentParamIndex.insertRange(o,-1,1,r)),this.m_pathFlags.clearBits(e,1)}}openPath(e){this.m_bPolygon&&t(``),e>this.getPathCount()&&i(``),this.m_pathFlags||t(``),this.m_pathFlags.clearBits(e,1)}isStrongPathStart(e){return!!(this.m_pathFlags.read(e)&2)}setStrongPathStart(e,t){t?this.m_pathFlags.setBits(e,2):this.m_pathFlags.clearBits(e,2)}isStrongPathEnd(e){return!!(this.m_pathFlags.read(e)&4)}setStrongPathEnd(e,t){t?this.m_pathFlags.setBits(e,4):this.m_pathFlags.clearBits(e,4)}clearStrongPathEnds(){for(let e=0,t=this.getPathCount();e<t;++e)this.m_pathFlags.clearBits(e,6)}openAllPathsAndDuplicateStartVertex(){if(this.m_bPolygon&&t(``),this.isEmpty())return;this.m_pathFlags||t(``);let e=0,n=this.getPathCount();for(let t=0;t<n;t++)this.isClosedPath(t)&&(this.getPathSize(t)>0?e++:this.m_pathFlags.clearBits(t,1));if(e===0)return;let r=this.hasNonLinearSegments(),i=0,a=this.getPathCount(),o=this.m_description.getAttributeCount(),s=Array(o),c=null,l=null;for(let t=0;t<a;++t){let n=this.getPathStart(t),a=this.getPathSize(t),u=this.isClosedPath(t);if(a>0){let t=n+i;for(let r=0;r<o;r++)if(this.m_vertexAttributes.get(r)){let i=this.m_description.getSemantics(r),o=J.getComponentCount(i);if(!s[r]){let t=o*(this.m_pointCount+e),n=j(i,t);s[r]=n}s[r].writeRange(t*o,a*o,this.m_vertexAttributes.get(r),n*o,!0,1),u&&s[r].writeRange((t+a)*o,o,this.m_vertexAttributes.get(r),n*o,!0,1)}if(r){if(c===null){let t=this.m_pointCount+e;c=ae(t),l=M(t)}c.writeRange(t,a,this.m_curveData.m_segmentFlags,n,!0,1),l.writeRange(t,a,this.m_curveData.m_segmentParamIndex,n,!0,1),u&&(c.write(t+a,1),l.write(t+a,-1))}}this.m_paths.write(t,n+i),u&&(this.m_pathFlags.clearBits(t,1),++i)}this.m_paths.write(a,this.m_pointCount+e),this.m_pathFlags.clearBits(a,1);for(let e=0;e<o;e++)this.m_vertexAttributes.get(e)&&this.m_vertexAttributes.set(e,s[e]);r&&(this.m_curveData.m_segmentFlags=c,this.m_curveData.m_segmentParamIndex=l),this.m_pointCount+=e,this.m_reservedPointCount>0&&(this.m_reservedPointCount=this.m_pointCount)}closePathWithLine(e){e===void 0&&(e=this.getPathCount()-1),this.throwIfEmpty(),(e<0||e>=this.getPathCount())&&i(`close_path_with_line`),e===this.getPathCount()-1&&(this.m_bPathStarted=!1);let t=this.m_pathFlags.read(e);if(t&1||this.m_pathFlags.write(e,t|1),this.m_curveData&&this.m_curveData.m_segmentFlags){let t=this.getPathEnd(e)-1,n=this.m_curveData.m_segmentFlags.read(t);n!==1&&(this.m_curveData.m_segmentFlags.write(t,1),this.m_curveData.m_segmentParamIndex.write(t,-1),this.incCurveType(n,-1),this.modifyCurveCounter(-1))}this.notifyModifiedFlags(2001)}closeLastPathWithSegment(e){this.closePathWithSegment(this.getPathCount()-1,e)}closePathWithSegment(e,t){if(this.throwIfEmpty(),(e<0||e>=this.getPathCount())&&i(`close_path_with_line`),t.getEndXY().equals(this.getXY(this.getPathStart(e)))||i(`close_path_with_segment: end point mismatch`),e===this.getPathCount()-1)this.m_bPathStarted=!1,this.addSegment(t,!1),--this.m_pointCount,this.m_paths.write(e+1,this.m_pointCount);else{this.mergeVertexDescription(t.getDescription());let n=t.getStartXY(),r=this.getPathEnd(e)-1;n.equals(this.getXY(r))||i(`close_path_with_segment: start point mismatch`);let a=t.getGeometryType();if(a===s.enumLine){this.closePathWithLine(e);return}{let e=Xn(t);this.initSegmentData(e);let n=er.toSegType(a),i=this.m_curveData.m_segmentFlags.read(r);if(i!==n)this.m_curveData.m_segmentParamIndex.write(r,this.m_curveData.m_curveParamWritePoint),t.writeInBufferStream(this.m_curveData.m_segmentParams,this.m_curveData.m_curveParamWritePoint),this.m_curveData.m_curveParamWritePoint+=e,this.incCurveType(n,1),i===1?this.modifyCurveCounter(1):this.incCurveType(i,-1);else{let e=this.m_curveData.m_segmentParamIndex.read(r);t.writeInBufferStream(this.m_curveData.m_segmentParams,e)}this.m_curveData.m_segmentFlags.write(r,n)}}let n=this.m_pathFlags.read(e);n&1||this.m_pathFlags.write(e,n|1),this.notifyModifiedFlags(2001)}closeAllPaths(){if(this.m_bPolygon||this.isEmptyImpl())return;this.m_bPathStarted=!1;let e=!1;for(let t=0,n=this.m_paths.size()-1;t<n;t++){if(this.isClosedPath(t))continue;let n=this.m_pathFlags.read(t);this.m_pathFlags.write(t,n|1),e=!0}e&&this.notifyModifiedFlags(512)}isClosedPath(e){return!!(this.m_pathFlags.read(e)&1)}isClosedPathInXYPlane(e){if(this.isClosedPath(e))return!0;let t=this.getPathStart(e),n=this.getPathEnd(e)-1;if(t>n)return!1;let r=this.getXY(t),i=this.getXY(n);return r.isEqualPoint2D(i)}isClosedPathIn3D(e){return r(0),!1}hasNonLinearSegmentsPath(e){if(!this.hasNonLinearSegments())return!1;for(let t=this.getPathStart(e),n=this.getPathEnd(e);t<n;t++)if(tr.isNonLinearSegmentFlag(this.m_curveData.m_segmentFlags.read(t)))return!0;return!1}isNonLinearSegment(e){return!(this.getSegmentFlags(e)&1)}addEnvelope(e,t){if(e.isEmpty())return;let n=this.m_pointCount===0;if(e instanceof G)this.startPathCoords(e.xmin,e.ymin),t?(this.lineToCoords(e.xmax,e.ymin),this.lineToCoords(e.xmax,e.ymax),this.lineToCoords(e.xmin,e.ymax)):(this.lineToCoords(e.xmin,e.ymax),this.lineToCoords(e.xmax,e.ymax),this.lineToCoords(e.xmax,e.ymin));else{let n=e.getDescription(),r=k(),i=new N({vd:n,attribBuffer:r,initDefaultValues:!1});for(let n=0;n<4;n++){let r=t?4-n-1:n;e.queryCornerByVal(r,i),n===0?this.startPathPoint(i):this.lineToPoint(i)}}this.closePathWithLine(),this.m_bPathStarted=!1,n&&!t&&(this.setDirtyFlagProtected(256,!1),this.m_bPolygon&&Math.min(e.width(),e.height())>0&&this.setIsSimple(3,0))}addPathFromClosedSegment(e,t){if(e.isClosed()||i(`add_path_from_closedSegment: segment must be closed`),t){let t=e.getReversed(),n=new N;t.queryStart(n),this.startPathPoint(n),this.closeLastPathWithSegment(t)}else{let t=new N;e.queryStart(t),this.startPathPoint(t),this.closeLastPathWithSegment(e)}}addSegment_(e,t){let n=e.getDescription();this.mergeVertexDescription(n);let r=k(),a=new N({vd:n,attribBuffer:r,initDefaultValues:!1}),o=e.getGeometryType();if(o===s.enumLine)(t||this.isEmptyImpl())&&(e.queryStart(a),this.startPathPoint(a)),e.queryEnd(a),this.lineToPoint(a);else{let n=!1;if((t||this.isEmptyImpl())&&(n=!0),n||e.getStartXY().equals(this.getXY(this.m_pointCount-1))||i(`add_segment: start point mismatch`),n&&(e.queryStart(a),this.startPathPoint(a)),this.beforeNewSegment(1),e.queryEnd(a),a.getDescription()===this.m_description)this.setPointByVal(this.m_pointCount-1,a);else{let e=k(),t=new N({vd:this.m_description,attribBuffer:e,initDefaultValues:!1});a.copyCommonAttributesTo(t),this.setPointByVal(this.m_pointCount-1,t)}let r=Xn(e);this.initSegmentData(r),this.m_curveData.m_segmentParamIndex.write(this.m_pointCount-2,this.m_curveData.m_curveParamWritePoint),e.writeInBufferStream(this.m_curveData.m_segmentParams,this.m_curveData.m_curveParamWritePoint),this.m_curveData.m_curveParamWritePoint+=r;let s=er.toSegType(o);this.incCurveType(s,1),this.modifyCurveCounter(1),this.m_curveData.m_segmentFlags.write(this.m_pointCount-2,s)}}addSegment(e,t,n){n?t?this.addPathFromClosedSegment(e,!1):this.closeLastPathWithSegment(e):this.addSegment_(e,t)}interpolateAttributesRange(e,t,n,r){for(let t=e;t<n-1;t++)this.isClosedPath(t)&&i(`cannot interpolate across closed paths`);let a=this.m_description.getAttributeCount();if(a===1)return;let o=this.calculateSubLength2D(e,t,n,r);if(o!==0)for(let i=1;i<a;i++){let a=this.m_description.getSemantics(i);this.interpolateAttributesSemanticsImpl(a,e,t,n,r,o)}}interpolateAttributesSemantics(e,t,n,r,a){if(e===0)return;this.hasAttribute(e)||i(`does not have the given attribute`),J.getInterpolation(e)===2&&i(`angular interpolation`);for(let e=t;e<r-1;e++)this.isClosedPath(e)&&i(`cannot interpolate across closed paths`);let o=this.calculateSubLength2D(t,n,r,a);o!==0&&this.interpolateAttributesSemanticsImpl(e,t,n,r,a,o)}interpolateAttributesPath(e,t,n){let r=this.m_description.getAttributeCount();if(r===1||t===n)return;let i=this.calculatePathSubLength2D(e,t,n);for(let a=1;a<r;a++){let r=this.m_description.getSemantics(a);this.interpolateAttributesSemanticsPathImpl(r,e,t,n,i)}}interpolateAttributesSemanticsPath(e,t,n,r){if(e===0)return;this.hasAttribute(e)||i(`does not have the given attribute`),J.getInterpolation(e)===2&&i(`angular interpolation`);let a=this.calculatePathSubLength2D(t,n,r);a!==0&&this.interpolateAttributesSemanticsPathImpl(e,t,n,r,a)}interpolateAttributesSemanticsImpl(e,t,n,r,i,a){let o=this.querySegmentIterator(),s=this.getPathStart(t)+n,c=this.getPathStart(r)+i,l=J.getComponentCount(e),u=L(J.maxComponentCount(),NaN);this.queryAttributeAsDbl(e,s,u,l);let d=L(J.maxComponentCount(),NaN);this.queryAttributeAsDbl(e,c,d,l);let f=L(J.maxComponentCount(),NaN);he(f,u,0,0,l);let p=0,m=J.getDefaultValue(e),h=J.getInterpolation(e);o.resetToVertex(s,t);do if(o.hasNextSegment()){if(o.nextSegment(),o.getStartPointIndex()===c)return;this.setAttributeFromArray(e,o.getStartPointIndex(),f,l),o.previousSegment();do{let t=o.nextSegment();if(o.getEndPointIndex()===c)return;let n=t.calculateLength2D();p+=n;let r=p/a;Ce(h,u,d,f,0,l,r,m),o.isClosingSegment()||this.setAttributeFromArray(e,o.getEndPointIndex(),f,l)}while(o.hasNextSegment())}while(o.nextPath())}interpolateAttributesSemanticsPathImpl(e,t,n,i,a){r(e!==0);let o=this.querySegmentIterator(),s=J.getInterpolation(e),c=this.getPathStart(t)+n,l=this.getPathStart(t)+i;if(l===c)return;let u=J.getComponentCount(e),d=L(J.maxComponentCount(),NaN);this.queryAttributeAsDbl(e,c,d,u);let f=L(J.maxComponentCount(),NaN);this.queryAttributeAsDbl(e,l,f,u);let p=new De(0);o.resetToVertex(c,t),o.setCirculator(this.isClosedPath(t));let m=J.getDefaultValue(e),h=L(J.maxComponentCount(),NaN);he(h,d,0,0,u);let g=a===0,_=.5;do{let t=o.nextSegment();if(this.setAttributeFromArrayNoCurves(e,o.getStartPointIndex(),h,u),!g){let e=t.calculateLength2D();p.pe(e),_=p.getResult()/a}Ce(s,d,f,h,0,u,_,m)}while(o.getEndPointIndex()!==l)}querySegment(e,t,n){let r=this.getPathIndexFromPointIndex(e),a=e-this.getPathStart(r);a>=this.getSegmentCountPath(r)&&i(`get_segment`),this.getSegmentFromPath(r,a,t,n)}getSegment(e,t){let n=new this.m_segmentBufferCTor;return this.getSegmentBuffer(e,n,t),n.releaseSegment()}getSegmentType(e){let t=this.getPathIndexFromPointIndex(e),n=e-this.getPathStart(t);return n>=this.getSegmentCountPath(t)&&i(`get_segment`),this.getSegmentTypeFromPath(t,n)}getSegmentFromPath(e,n,r,i){let a=this.getPathStart(e)+n,o=this.getSegmentFlagsStreamRef(),s=1;switch(o&&(s=o.read(a)&31),s){case 1:r.createLine();break;case 2:r.createCubicBezier();break;case 4:r.createEllipticArc();break;case 8:r.createQuadraticRationalBezier();break;case 16:r.createQuadraticBezier();break;default:t(``)}let c=r.get(),l=null;i?(l=y(),c.assignVertexDescription(l)):c.assignVertexDescription(this.m_description);let u;if(u=a===this.getPathEnd(e)-1&&this.isClosedPath(e)?this.getPathStart(e):a+1,zt(c,this.getXY(a)),Vt(c,this.getXY(u)),!i)for(let e=1,t=this.m_description.getAttributeCount();e<t;e++){let t=this.m_description.getSemantics(e),n=J.getComponentCount(t);for(let e=0;e<n;e++){let n=this.getAttributeAsDbl(t,a,e);c.setStartAttribute(t,e,n);let r=this.getAttributeAsDbl(t,u,e);c.setEndAttribute(t,e,r)}}if(tr.isNonLinearSegmentFlag(s)){let e=this.m_curveData.m_segmentParamIndex.read(a);c.readFromBufferStream(this.m_curveData.m_segmentParams,e)}}replaceLinearEllipticalArcsWithTrueLines(){if(!this.hasNonLinearSegments()||this.m_curveData.m_arcCount===0)return!1;let e=!1;for(let t=0,n=this.getPointCount();t<n;t++)if(this.m_curveData.m_segmentFlags.read(t)===4){let n=this.m_curveData.m_segmentParamIndex.read(t);Yn(this.m_curveData.m_segmentParams,n).isNAN()&&(this.m_curveData.m_segmentFlags.write(t,1),this.m_curveData.m_segmentParamIndex.write(t,-1),this.incCurveType(4,-1),this.modifyCurveCounter(-1),e=!0)}return e&&this.checkCompactSegmentParams(),e}queryPointAlongPath(e,t,n,r=!1){let a={iSegment:-1},o=r?a:{tSegment:0};if(n.setEmpty(),this.isEmpty()||((e<0||e>=this.getPathCount())&&i(`query_point_along_path`),t<0))return a;let s=this.getPathSize(e);if(s===0)return a;if(s===1)return this.getPointByVal(this.getPathStart(e),n),o.tSegment=0,a.iSegment=this.getPathStart(e),a;let c=this.querySegmentIteratorAtVertex(this.getPathStart(e)),l=new De(0);for(;c.hasNextSegment();){let e=c.nextSegment(),r=e.calculateLength2D(),i=l.getResult();if(l.add(r),l.getResult()>=t){let s=t-i;s>r&&(s=r);let l=e.lengthToT(s);return e.queryCoord(l,n),o.tSegment=l,a.iSegment=c.getStartPointIndex(),a}}if(this.isClosedPath(e)){let t=this.getPathStart(e);return this.getPointByVal(t,n),o.tSegment=1,a.iSegment=this.getPathEnd(e)-1,a}{let t=this.getPathEnd(e)-1;return this.getPointByVal(t,n),this.getPathSize(e)>1?(o.tSegment=1,a.iSegment=this.getPathEnd(e)-2,a):(o.tSegment=0,a.iSegment=this.getPathStart(e),a)}}queryPointsAlongPath(e,t,n,r,a,o){{let e=0;for(let s=0;s<t;++s)r&&r[s].setEmpty(),a&&(a[s]=-1),o&&(o[s]=0),e>n[s]&&i(`query_points_along`),e=n[s]}let s=this.getPathSize(e);if(t===0||s===0)return 0;if(s===1){let t=this.getPathStart(e);return r&&this.getPointByVal(t,r[0]),o&&(o[0]=0),a&&(a[0]=t),1}let c=this.getPathStart(e),l=new De(0),u=this.querySegmentIteratorAtVertex(c),d=0,f=0,p=n[d];for(;u.hasNextSegment();){let e=u.nextSegment(),i=e.calculateLength2D(),s=l.getResult();for(l.add(i);l.getResult()>=p;){let c=p-s;c>i&&(c=i);let l=e.lengthToT(c);if(r&&e.queryCoord(l,r[f]),o&&(o[f]=l),a&&(a[f]=u.getStartPointIndex()),f++,d++,p=n[d],d===t)return f}}if(this.isClosedPath(e)){let t=this.getPathStart(e);r&&this.getPointByVal(t,r[f]),o&&(o[f]=0),a&&(a[f]=t),f++}else if(this.getPathSize(e)>1){let t=this.getPathEnd(e)-2;r&&this.getPointByVal(t+1,r[f]),o&&(o[f]=1),a&&(a[f]=t),f++}return f}queryPointsAlong(e,t,n,r,a){{let o=0;for(let s=0;s<e;++s)n&&n[s].setEmpty(),r&&(r[s]=-1),a&&(a[s]=0),o>t[s]&&i(`query_points_along`),o=t[s]}if(e===0)return 0;let o=new De(0),s=this.querySegmentIterator(),c=-1,l=0,u=0,d=t[l];for(;s.nextPath();)for(;s.hasNextSegment();){c=s.getPathIndex();let i=s.nextSegment(),f=i.calculateLength2D(),p=o.getResult();for(o.add(f);o.getResult()>=d;){let o=d-p;o>f&&(o=f);let c=i.lengthToT(o);if(n&&i.queryCoord(c,n[u]),a&&(a[u]=c),r&&(r[u]=s.getStartPointIndex()),u++,l++,d=t[l],l===e)return u}}if(c<0)return 0;if(this.isClosedPath(c)){let e=this.getPathStart(c);n&&this.getPointByVal(e,n[u]),a&&(a[u]=0),r&&(r[u]=e),u++}else if(this.getPathSize(c)>1){let e=this.getPathEnd(c)-2;n&&this.getPointByVal(e+1,n[u]),a&&(a[u]=1),r&&(r[u]=e),u++}return u}querySegmentIterator(){return new Gn({parent:this})}querySegmentIteratorAtVertex(e){return new Gn({parent:this,pointIndex:e})}queryPathEnvelope(e,t){this.queryPathEnvelopeImpl(e,t,!0)}queryLoosePathEnvelope(e,t){this.queryPathEnvelopeImpl(e,t,!1)}queryPathEnvelopeImpl(e,t,n){if(t instanceof A&&r(0,`not implemented for Envelope`),t instanceof O&&r(0,`not implemented for Envelope3D`),(e>=this.getPathCount()||e<0)&&i(``),this.isEmpty()){t.setEmpty();return}let a=this.getAttributeStreamRef(0),o=G.constructEmpty();o.setEmpty();for(let t=this.getPathStart(e)*2,n=2*this.getPathEnd(e);t<n;){let e=n-t;r(!(e&1)),o.mergePointsInterleaved(a,t/2,e/2),t+=e}if(t.setCoords({env2D:o}),this.hasNonLinearSegmentsPath(e)){let i=this.querySegmentIterator();if(i.resetToPath(e),i.nextPath())for(;i.hasNextSegment();){let e=i.nextCurve();if(e){let r=G.constructEmpty();n?e.queryEnvelope(r):e.queryLooseEnvelope(r),t.mergeEnvelope2D(r)}else break}else r(0)}}checkCompactSegmentParams(){if(!this.m_curveData||this.m_curveData.m_segmentParams===null||this.m_curveData.m_segmentParams.size()<=this.m_vertexAttributes.get(0).size())return!1;let e=Zn(4)*this.m_curveData.m_arcCount+Zn(2)*this.m_curveData.m_bezierCount+Zn(8)*this.m_curveData.m_rbezier2Count+Zn(16)*this.m_curveData.m_bezier2Count;return this.m_curveData.m_segmentParams.size()>Math.max(3*e>>1,10)?(this.forceCompactSegmentParams(),!0):(this.m_pointCount===0&&(this.m_curveData.m_curveParamWritePoint=0),!1)}forceCompactSegmentParams(){let e=0;for(let t=0,n=this.getPointCount();t<n;t++){let n=this.m_curveData.m_segmentFlags.read(t);if(tr.isNonLinearSegmentFlag(n)){let t=Zn(n);e+=t}}let t=oe(e),n=0;for(let e=0,r=this.getPointCount();e<r;e++){let r=this.m_curveData.m_segmentFlags.read(e);if(tr.isNonLinearSegmentFlag(r)){let i=this.m_curveData.m_segmentParamIndex.read(e);this.m_curveData.m_segmentParamIndex.write(e,n);let a=Zn(r);for(let e=0;e<a;e++)t.write(n,this.m_curveData.m_segmentParams.read(i)),n++,i++}}this.m_curveData.m_segmentParams=t,this.m_curveData.m_curveParamWritePoint=n}setEmpty(){this.m_curveData&&=(this.removeAllCurvesFromGlobalCounter(),null),this.m_bPathStarted=!1,this.m_paths=null,this.m_pathFlags=null,this.setEmptyImpl()}applyTransformation(e){this.applyTransformationToPath(e,-1)}applyTransformation3D(e){r(0)}getImpl(){return this}reserve(e){this.reserveImpl(e),e>0&&!this.m_paths&&(this.m_paths=M(0),this.m_pathFlags=ae(0),this.m_paths.reserve(2),this.m_pathFlags.reserve(2),this.m_paths.resize(1,0),this.m_pathFlags.resize(1,+!!this.m_bPolygon))}reserveParts(e,t){if(this.reserveImpl(e),t>0){this.m_paths?(this.m_paths.reserve(t+1),this.m_pathFlags.reserve(t+1)):(this.m_paths=M(0),this.m_pathFlags=ae(0),this.m_paths.reserve(t+1),this.m_pathFlags.reserve(t+1),this.m_paths.resize(1,0),this.m_pathFlags.resize(1,+!!this.m_bPolygon));return}}clone(){let e=this.createInstance();return this.copyTo(e),e}queryLimitedSegmentIterator(e){return new nr(this,e)}getPathStreamRef(){return this.throwIfEmpty(),this.m_paths}setPathStreamRef(e){this.m_paths=e}getSegmentFlagsStreamRef(){return this.throwIfEmpty(),this.m_curveData==null?null:this.m_curveData.m_segmentFlags}getPathFlagsStreamRef(){return this.throwIfEmpty(),this.m_pathFlags}setPathFlagsStreamRef(e){this.m_pathFlags=e}getSegmentIndexStreamRef(){return this.throwIfEmpty(),this.m_curveData===null?null:this.m_curveData.m_segmentParamIndex}getSegmentDataStreamRef(){return this.throwIfEmpty(),this.m_curveData===null?null:this.m_curveData.m_segmentParams}setSegmentData(e,t,n,r){this.m_curveData||=new er,this.m_curveData.m_segmentFlags=n,this.m_curveData.m_segmentParams=t,this.m_curveData.m_segmentParamIndex=e,this.m_curveData.m_curveParamWritePoint=r}static getPathIndexFromPointIndexImpl(e,t,n,r){if(r>=0&&r<t){if(n>=e.read(r)){if(n<e.read(r+1))return r;r++}else r--;if(r>=0&&r<t&&n>=e.read(r)&&n<e.read(r+1))return r}if(t<5){for(let r=0;r<t;r++)if(n<e.read(r+1))return r;d(``)}let i=0,a=t-1;for(;a>i;){let t=i+(a-i>>1);if(n<e.read(t))a=t-1;else if(n>=e.read(t+1))i=t+1;else return t}return i}getHighestPointIndex(e){r(e>=0&&e<this.getPathCount());let t=this.getAttributeStreamRef(0),n=this.getPathEnd(e),i=this.getPathStart(e),a=-1,o=new P;o.y=-1/0,o.x=-1/0;for(let e=i+0;e<n;e++){let n=t.readPoint2D(2*e);o.compare(n)===-1&&(a=e,o.setCoordsPoint2D(n))}return a}applyTransformationToPath(e,t){if(t>=this.getPathCount()&&i(`apply_transformation`),this.isEmpty()||e.isIdentity())return;let n=this.m_vertexAttributes.get(0);if(!(t<0?this.hasNonLinearSegments():this.hasNonLinearSegmentsPath(t))){let r,i;t<0?(r=0,i=this.m_pointCount):(r=this.getPathStart(t),i=this.getPathEnd(t)),n.applyTransformation(e,r*2,i-r),this.notifyModifiedFlags(2001);return}let r=new this.m_segmentBufferCTor,a=this.getPathCount(),o=t<0?0:t;do{let i=this.getPathStart(o),a=this.getPathEnd(o),s=this.isClosedPath(o),c=n.readPoint2D(i*2);if(!this.hasNonLinearSegmentsPath(o)){n.applyTransformation(e,i*2,a-i);continue}let l=P.getNAN();for(let t=i;t<a;++t){if((this.m_curveData.m_segmentFlags.read(t)&31)!=1){let o=s&&t+1===a;o&&n.writePoint2D(2*i,c),this.getSegmentBuffer(t,r,!0),r.get().applyTransformation(e);let l=this.m_curveData.m_segmentParamIndex.read(t);r.get().writeInBufferStream(this.m_curveData.m_segmentParams,l),n.writePoint2D(2*t,r.get().getStartXY()),o&&n.writePoint2D(2*i,r.get().getEndXY());continue}let o=2*t;n.queryPoint2D(o,l),e.transformInPlace(l),n.writePoint2D(o,l)}if(o===t)break}while(++o<a);this.notifyModifiedFlags(2001)}calculateSubLength2D(e,t,n,r){let i=this.getPathStart(e)+t,a=this.getPathStart(n)+r;(a<i||i<0||a>this.getPointCount()-1)&&f(``);let o=this.querySegmentIterator(),s=0;o.resetToVertex(i,e);do{for(;o.hasNextSegment();){let e=o.nextSegment();if(o.getStartPointIndex()===a)break;let t=e.calculateLength2D();s+=t}if(o.getStartPointIndex()===a)break}while(o.nextPath());return s}calculatePathSubLength2D(e,t,n){let r=this.getPathStart(e)+t,a=this.getPathStart(e)+n;(r<0||a>this.getPointCount()-1)&&f(``);let o=this.querySegmentIterator();if(r>a&&(this.isClosedPath(e)||i(`cannot iterate across an open path`),o.setCirculator(!0)),r===a)return 0;let s=0,c=0;o.resetToVertex(r,e);do c+=s,s=o.nextSegment().calculateLength2D();while(o.getStartPointIndex()!==a);return c}calculateEnvelope2D(e){return this.updateXYImpl(e)}updateXYImpl(e){let t=super.updateXYImpl(e);if(this.hasNonLinearSegments()){let n=G.constructEmpty(),r=this.querySegmentIterator();for(;r.nextPath();)for(;r.hasNextSegment();){let i=r.nextCurve();if(i)e?i.queryEnvelope(n):i.queryLooseEnvelope(n),t.mergeEnvelope2D(n);else break}}return t}notifyModifiedAllImpl(){this.m_pointCount=this.m_paths===null||!this.m_paths.size()?0:this.m_paths.read(this.m_paths.size()-1)}setDirtyOGCFlags(e){this.setDirtyFlagProtected(16,e)}hasDirtyOGCStartFlags(){return this.hasDirtyFlag(16)}setDirtyRingAreas2D(e){this.setDirtyFlagProtected(1024,e)}hasDirtyRingAreas2D(){return this.hasDirtyFlag(1024)}static isNonLinearSegmentFlag(e){return!(e&1)}addAndExplicitlyOpenAllPaths(e,t){this===e&&i(`Multi_path_impl::add`);let n=this.getPathCount();for(let r=0,i=e.getPathCount();r<i;r++)this.addPath(e,r,!t),this.openPathAndDuplicateStartVertex(n),n++}getSegmentFlags(e){return this.m_curveData!==null&&this.m_curveData.m_segmentFlags!==null?this.m_curveData.m_segmentFlags.read(e):1}getSegmentBuffer(e,t,n){let r=this.getPathIndexFromPointIndex(e),a=e-this.getPathStart(r);a>=this.getSegmentCountPath(r)&&i(`getSegmentBuffer`),this.getSegmentFromPath(r,a,t,n)}getSegmentTypeFromPath(e,n){let r=this.getPathStart(e)+n,i=this.getSegmentFlagsStreamRef(),a=1;switch(i&&(a=i.read(r)&31),a){case 1:return s.enumLine;case 2:return s.enumBezier;case 4:return s.enumEllipticArc;case 8:return s.enumRationalBezier2;case 16:return s.enumBezier2;default:t(``)}}ensureXYMonotoneSegments(){if(!this.m_curveData)return!1;let e=!1;for(let t=0,r=this.getPathCount();t<r;t++){let r=this.getPathStart(t),i=this.getPathEnd(t),a=i-r;for(let t=r;t<i;t++){let i=this.m_curveData.m_segmentFlags.read(t)&31;if(i===1)continue;i!==2&&n(`ensure_xy_monotone_segments`);let o=(t-r+1)%a+r,s=this.m_curveData.m_segmentParamIndex.read(t),c=H(P,4);c[0]=this.getXY(t),c[3]=this.getXY(o),c[1].x=this.m_curveData.m_segmentParams.read(s),c[1].y=this.m_curveData.m_segmentParams.read(s+1),c[2].x=this.m_curveData.m_segmentParams.read(s+2),c[2].y=this.m_curveData.m_segmentParams.read(s+3),jt(c)&&(e=!0,this.m_curveData.m_segmentParams.write(s,c[1].x),this.m_curveData.m_segmentParams.write(s+1,c[1].y),this.m_curveData.m_segmentParams.write(s+2,c[2].x),this.m_curveData.m_segmentParams.write(s+3,c[2].y))}}return e&&this.notifyModifiedFlags(2001),e}buildRasterizedGeometryAccelerator(e,t){return!1}buildQuadTreeAccelerator(e){if(this.m_accelerators||=new Kn,this.m_accelerators.getQuadTree()!==null)return!0;this.ensureUniqueAccelerators(),this.m_accelerators.setQuadTree(null);let t=se(this);return this.m_accelerators.setQuadTree(t),!0}buildQuadTreeForPathsAccelerator(e){if(this.m_accelerators||=new Kn,this.m_accelerators.getQuadTreeForPaths()!==null)return!0;this.ensureUniqueAccelerators(),this.m_accelerators.setQuadTreeForPaths(null);let t=ce(this);return this.m_accelerators.setQuadTreeForPaths(t),!0}updateCurveCounter(e){this.modifyCurveCounter(e-this.getCurveCount())}removeAllCurvesFromGlobalCounter(){this.m_curveData&&(tr.st_totalCurveCount-=this.m_curveData.m_curveCount,this.m_curveData.m_curveCount=0,this.m_curveData.m_bezierCount=0,this.m_curveData.m_arcCount=0,this.m_curveData.m_bezier2Count=0,this.m_curveData.m_rbezier2Count=0,this.m_curveData.m_curveParamWritePoint=0)}modifyCurveCounter(e){e&&(this.m_curveData||=new er,tr.st_totalCurveCount+=e,this.m_curveData.m_curveCount+=e)}getCurveCount(){return this.m_curveData?this.m_curveData.m_curveCount:0}incCurveType(e,t){this.m_curveData||=new er,e&2?this.m_curveData.m_bezierCount+=t:e&4?this.m_curveData.m_arcCount+=t:e&8?this.m_curveData.m_rbezier2Count+=t:e&16&&(this.m_curveData.m_bezier2Count+=t)}getCurveWritePoint(){return this.m_curveData===null?0:this.m_curveData.m_curveParamWritePoint}initSegmentData(e){this.m_curveData===null&&(this.m_curveData=new er);let t=this.m_reservedPointCount>0?this.m_reservedPointCount:this.m_pointCount;this.m_curveData.m_segmentParamIndex===null&&(this.m_curveData.m_segmentFlags=ae(t,1),this.m_curveData.m_segmentParamIndex=M(t,-1));let n=this.m_curveData.m_curveParamWritePoint+e;this.m_curveData.m_segmentParams===null?this.m_curveData.m_segmentParams=oe(n):n!==this.m_curveData.m_segmentParams.size()&&this.m_curveData.m_segmentParams.resize(n,0),this.m_curveData.m_segmentFlags.size()<t&&(this.m_curveData.m_segmentFlags.resize(t,1),this.m_curveData.m_segmentParamIndex.resize(t,-1))}updateCurveWritePoint(e){this.m_curveData===null&&(this.m_curveData=new er),this.m_curveData.m_curveParamWritePoint=e}static st_totalCurveCount=0;updateOGCFlagsHelper(){let e=this.getPathCount();if(e===0)return;let t=this.m_pathFlags,n=0;for(let r=0;r<e;r++){let e=this.m_cachedRingAreas2D.read(r);n===0&&(n=ke(e)),e*n>0||n===0?t.setBits(r,8):t.clearBits(r,8)}}updateOGCFlagsProtected(){this.hasDirtyFlag(16)&&(this.updateRingAreas2DProtected(),this.updateOGCFlagsHelper(),this.setDirtyFlagProtected(16,!1))}replaceSegment(e,t,n){(e<0||e>=this.getPointCount())&&i(`Multi_path_impl.replace_segment`),r(t.isCurve());let a=this.getPathIndexFromPointIndex(e),o=this.getPathStart(a),s=(e-o+1)%this.getPathSize(a)+o;{let n=this.getXY(e),i=this.getXY(s),a=!n.isEqualPoint2D(t.getStartXY())||!i.isEqualPoint2D(t.getEndXY());r(!a)}this.replaceSegmentImpl(e,s,t,n)}replaceSegmentImpl(e,t,n,i){let a=n.getDescription();this.mergeVertexDescription(a);let o=L(32,NaN),s=new N({vd:a,attribBuffer:o,initDefaultValues:!1}),c=this.m_curveData===null?1:this.m_curveData.m_segmentFlags.read(e)&31,l=Zn(c),u=Xn(n),d=!1,f;l>=u?(r(this.m_curveData!==null),d=!0,f=this.m_curveData.m_segmentParamIndex.read(e)):(this.initSegmentData(u),d=!1,f=this.m_curveData.m_curveParamWritePoint);let p=n.getGeometryType(),m=er.toSegType(p);i||(n.queryStart(s),this.setPointByValNoCurves(e,s),n.queryEnd(s),this.setPointByValNoCurves(t,s)),this.m_curveData.m_segmentParamIndex.write(e,m===1?-1:f),this.m_curveData.m_segmentFlags.write(e,m),m!==1&&n.writeInBufferStream(this.m_curveData.m_segmentParams,f),d||(this.m_curveData.m_curveParamWritePoint+=u),c!==m&&(this.incCurveType(c,-1),this.incCurveType(m,1),this.modifyCurveCounter(c===1?1:-1))}setAttributeImpl(e,t,n){if(this.addAttribute(e),!this.isEmpty()){if(this.hasNonLinearSegments()&&e===0){(t<0||t>1)&&i(``);let e=new xt,r=t===0?n:0,a=t===0?0:1;e.setShiftCoords(r,a),t===0?e.xx=0:e.yy=0,this.applyTransformation(e)}else super.setAttributeImpl(e,t,n)}}toFlatGeometry(){let e=this.m_bPolygon?`polygon`:`polyline`,t=this.getPathCount(),n=this.m_paths?this.m_paths.getArray():new Int32Array,r=this.m_paths?this.m_pathFlags.getArray():new Int8Array,i,a,o,s=0,c=0;if(this.m_curveData){let{m_segmentFlags:e,m_segmentParamIndex:t,m_segmentParams:n}=this.m_curveData;i=e?.getArray()??new Int8Array,a=t?.getArray()??new Int32Array,o=n?.getArray()??new Float64Array,s=this.m_curveData.m_arcCount,c=this.m_curveData.m_bezierCount}return{type:e,...this.exportVertexAttributes(),partCount:t,partOffsets:n,partFlags:r,segmentFlags:i,segmentIndices:a,segmentParams:o,segmentCountArc:s,segmentCountBezier:c}}m_cachedLength2D;m_cachedArea2D;m_currentPathIndex;m_cachedRingAreas2D=null;m_paths=null;m_pathFlags=null;m_curveData=null;m_segmentBufferCTor}class nr{constructor(e,t){this.m_extentOfInterest=new G(t),this.m_bfirst=!0,this.m_prevIndex=-100,this.m_parent=e}nextSegment(){return this.m_bfirst&&this.prepare_(),this.m_quadTree?this.nextSegmentQt():this.nextSegmentNoQt()}getPathIndex(){return this.m_segIter.getPathIndex()}getStartPointIndex(){return this.m_segIter.getStartPointIndex()}getEndPointIndex(){return this.m_segIter.getEndPointIndex()}isClosingSegment(){return this.m_segIter.isClosingSegment()}isPathClosed(){return this.m_segIter.isPathClosed()}m_extentOfInterest;m_bfirst;m_prevIndex;m_parent;m_segIter=null;m_quadTree=null;m_qtIter=null;prepare_(){let e=this.m_parent.getAccelerators();e&&(this.m_quadTree=e.getQuadTree(),this.m_quadTree&&(this.m_qtIter=this.m_quadTree.getSortedIterator(this.m_extentOfInterest,0))),this.m_segIter=this.m_parent.querySegmentIterator()}nextSegmentQt(){this.m_bfirst=!1;let e=this.m_qtIter.next();if(e===-1)return null;let t=this.m_quadTree.getElement(e);return(t!==this.m_prevIndex+1||this.m_segIter.isLastSegmentInPath())&&(this.m_segIter.resetToVertex(t,this.m_segIter.getPathIndex()),this.m_prevIndex=t),this.m_segIter.nextSegment()}nextSegmentNoQt(){do{if(!this.m_bfirst&&this.m_segIter.hasNextSegment()){let e=this.m_segIter.nextSegment(),t=G.constructEmpty();if(e.queryLooseEnvelope(t),!t.isIntersecting(this.m_extentOfInterest))continue;return e}if(this.m_bfirst=!1,!this.m_segIter.nextPath())return null}while(1)}}class rr extends tr{static type=s.enumPolyline;constructor(e){e?e.vd?(super({vd:e.vd,bPolygon:!1}),this.m_segmentBufferCTor=$):e.copy?(super({vd:e.copy.getDescription(),bPolygon:!1}),this.m_segmentBufferCTor=$,e.copy.copyTo(this)):e.move?(super({move:e.move}),this.m_segmentBufferCTor=$):e.start?(super({vd:e.start.getDescription(),bPolygon:!1}),this.m_segmentBufferCTor=$,this.startPathPoint(e.start),this.lineToPoint(e.end)):e.path?(super({bPolygon:!1}),this.m_segmentBufferCTor=$,this.addPathPoint2D(e.path,e.pointCount,e.bForward)):t(`bad constructor arg`):(super({bPolygon:!1}),this.m_segmentBufferCTor=$)}getBoundary(){return or(this)}assignCopy(e){return this!==e&&e.copyTo(this),this}assignMove(e){return e.copyTo(this),this}getGeometryType(){return rr.type}getDimension(){return 1}createInstance(){return new rr({vd:this.getDescription()})}equals(e,t){return this.equalsBase(e,t)}}var ir=s;function ar(e,t){if(e.isEmpty())return!1;let r=e.getGeometryType();if(r===ir.enumPolygon)return e.calculateArea2D()!==0;if(r===ir.enumPolyline)return sr(e.getImpl(),t,!0).bNotEmpty;if(r===ir.enumEnvelope)return!0;if(p(r))return!!e.isClosed();if(m(r))return!1;if(r===ir.enumGeometryCollection){let n=e;for(let e=0,r=n.getGeometryCount();e<r;e++)if(ar(n.getGeometry(e),t))return!0;return!1}n(``)}function or(e,t){let r=e.getGeometryType();if(r===ir.enumPolygon){let t=new rr({vd:e.getDescription()});return e.isEmpty()||e.copyToUnchecked(t),t}if(r===ir.enumPolyline)return sr(e.getImpl(),t,!1).boundary;if(r===ir.enumEnvelope){let t=new rr({vd:e.getDescription()});return e.isEmpty()||t.addEnvelope(e,!1),t}if(p(r)){let t=new vn({vd:e.getDescription()});if(!e.isEmpty()&&!e.isClosed()){let n=new N;t.reserve(2),e.queryStart(n),t.add(n),e.queryEnd(n),t.add(n)}return t}if(r===ir.enumGeometryCollection){let n=e,r=null;for(let i=0,a=n.getGeometryCount();i<a;i++){let a=or(n.getGeometry(i),t);if(a!==null){r===null&&(r=e.createInstance());let t=a;r.addGeometry(t)}}return r}if(m(r))return new N({vd:e.getDescription()});n(``)}function sr(e,t,n){let r=e,i=null;if(n||(i=new vn({vd:r.getDescription()})),!r.isEmpty()){let e=new le(0);for(let t=0,n=r.getPathCount();t<n;t++)if(r.getPathSize(t)>0&&!r.isClosedPathInXYPlane(t)){let n=r.getPathStart(t);e.add(n);let i=r.getPathEnd(t)-1;e.add(i)}if(e.size()>0){let t=new ue,a=r.getAttributeStreamRef(0);t.sort(e,0,e.size(),{userSort(e,t,n){let r=P.getNAN(),i=P.getNAN();n.sort(e,t,(e,t)=>(a.queryPoint2D(2*e,r),a.queryPoint2D(2*t,i),r.compare(i)))},getValue(e){return a.read(2*e+1)}});let o=a.readPoint2D(2*e.read(0)),s=0,c=1,l=new N;for(let t=1,r=e.size();t<r;t++){let r=a.readPoint2D(2*e.read(t));if(r.isEqualPoint2D(o))e.read(s)>e.read(t)?(e.write(s,Be()),s=t):e.write(t,Be()),c++;else{if(!(c&1))e.write(s,Be());else if(n)return{bNotEmpty:!0,boundary:new vn({})};o=r,s=t,c=1}}if(!(c&1))e.write(s,Be());else if(n)return{bNotEmpty:!0,boundary:new vn({})};if(!n){e.sort(0,e.size());for(let t=0,n=e.size();t<n&&e.read(t)!==Be();t++)r.getPointByVal(e.read(t),l),i.add(l)}}}return n?{bNotEmpty:!1,boundary:new vn({})}:{bNotEmpty:!1,boundary:i}}function cr(e,t,n,i){let a=4*Se()*(Math.abs(t.vmin)+Math.abs(t.vmax)),o=Se();if(e.getMaxDerivative()===1){r(n>0);let o=hr(e,0,t,Se(),a);return i[0]=o.root,o.cRoots}let s,c=[],l=new R(t.vmin-a,t.vmax+a);c.push(new P(l.vmin,l.vmax));let u=0;for(let r=e.getMaxDerivative()-1;r>=0;r--){s=c,c=[];for(let l=0,d=s.length;l<d;l++){if(s[l][0]<s[l][1]){let d,f,p;if(r===e.getMaxDerivative()-1?{root:d,funcAtRoot:f,cRoots:p}=hr(e,r,R.construct(s[l][0],s[l][1]),o,a*.5):{root:d,funcAtRoot:f,cRoots:p}=gr(e,r,R.construct(s[l][0],s[l][1]),o,a*.5),p===1){if(r===0)u<n&&(s[l][0]<=t.vmin&&s[l][1]>=t.vmin&&d!==t.vmin&&e.getValue(0,t.vmin)===0&&(d=t.vmin),s[l][0]<=t.vmax&&s[l][1]>=t.vmax&&d!==t.vmax&&e.getValue(0,t.vmax)===0&&(d=t.vmax),i[u]=t.snapClip(d),u>0?i[u]-i[u-1]>a&&u++:u++);else{let e=P.getNAN();e[0]=s[l][0],e[1]=d,c.push(e);let t=P.getNAN();t[0]=d,t[1]=s[l][1],c.push(t)}continue}}c.push(s[l])}}return u}function lr(e,t,n,r){let i=new V,a=yr(new V(e),new V(t),n,i);return r[0]=i.value(),a}function ur(e,t,n,r,i,a){let o=H(V,2),s=br(new V(e),new V(t),new V(n),r,i,o);return a[0]=o[0].value(),a[1]=o[1].value(),s}function dr(e,t,n,r,i,a,o){let s=H(V,3),c=xr(new V(e),new V(t),new V(n),new V(r),i,a,s);return o[0]=s[0].value(),o[1]=s[1].value(),o[2]=s[2].value(),c}function fr(e,t,n,r,i,a,o,s){return mr(e,t,n,r,i,a,o,s)}function pr(e,t,n,r,i,a){return vr(e,t,n,r,i,a)}function mr(e,t,n,r,i,a,o,s){let c=L(n*n,NaN);c.fill(0),he(s,r,0,0,n);let l=L(n,NaN),u=L(n,NaN),d=L(n,NaN),f=e(s,n,t),p=0;for(p=0;p<100;p++){let r=f;for(let e=0;e<n;++e)u[e]=s[e];if(p%n===0){c.fill(0);for(let e=0;e<n;e++)c[e*n+e]=1}let o=0,m=0;for(let r=0;r<n;++r){for(let e=0;e<n;++e)l[e]=c[r*n+e];let u=f;f=_r(e,t,s,l,i,a,n);let d=u-f;d>o&&(m=r,o=d)}for(let e=0;e<n;e++)l[e]=s[e]-u[e],d[e]=s[e]+(s[e]-u[e]);let h=e(d,n,t);if(h<r&&2*(r-2*f+h)*Ze(r-f-o)<Ze(r-h)*o){f=_r(e,t,s,l,i,a,n);for(let e=0;e<n;++e)c[m*n+e]=c[(n-1)*n+e],c[(n-1)*n+e]=l[e]}if(r<=f)return e(s,n,t)}return f}function hr(e,n,r,i,a){let o={root:0,funcAtRoot:0,cRoots:0},s=r.vmin,c=r.vmax,l=0,u=Number.MAX_VALUE,d=e.getValue(n,s),f=e.getValue(n,c),p=0,m=0,h=0;if(d>=0&&f>=0||d<=0&&f<=0)return Math.abs(d)<Math.abs(f)?(o.funcAtRoot=d,o.root=s,o.cRoots=+(d===0),o):(o.funcAtRoot=f,o.root=c,o.cRoots=+(f===0),o);Math.abs(d)<Math.abs(f)&&(c=z(s,s=c),f=z(d,d=f)),l=s,p=d;let g=!0,_=0;for(;f!==0&&Math.abs(s-c)>i*Math.abs(c)+a;_++){let r=_>64;if(!r){m=d!==p&&f!==p?s*f*p/((d-f)*(d-p))+c*d*p/((f-d)*(f-p))+l*d*f/((p-d)*(p-f)):c-f*(c-s)/(f-d);let e=(3*s+c)/4;if(r=!(m>e&&m<c||m>c&&m<e),!r){let e=i*Math.abs(c)+a;if(g){let t=Math.abs(c-l);r=Math.abs(m-c)>=t*.5||t<e}else{let t=Math.abs(l-u);r=Math.abs(m-c)>=t*.5||t<e}}}if(r?(m=(s+c)/2,g=!0):g=!1,h=e.getValue(n,m),h===0)return o.root=m,o.funcAtRoot=h,o.cRoots=1,o;if(!r){let t=s-m,r=m-c;if(Math.abs(t)>10*Math.abs(r)){let t=c+r*3;for(let r=0;r<2;r++){let r=e.getValue(n,t);ke(d)*ke(r)>0?(s=t,d=r):t=B(s,c,.75)}}else if(Math.abs(r)>10*Math.abs(t)){let r=s-t*3;for(let t=0;t<2;++t){let t=e.getValue(n,r);ke(f)*ke(t)>0?(c=r,f=t):r=B(s,c,.25)}}}u=l,l=c,p=f,ke(d)*ke(h)<0?(c=m,f=h):(s=m,d=h),Math.abs(d)<Math.abs(f)&&(c=z(s,s=c),f=z(d,d=f)),_===128&&t(`Root_finder iterations exceeded`)}return o.root=c,o.funcAtRoot=f,o.cRoots=1,o}function gr(e,n,r,i,a){let o={root:0,funcAtRoot:0,cRoots:0},s=r.vmin,c=e.getValue(n,s),l=r.vmax,u=e.getValue(n,l);if(c>=0&&u>=0||c<=0&&u<=0)return Math.abs(c)<Math.abs(u)?(o.funcAtRoot=c,o.root=s,o.cRoots=+(c===0),o):(o.funcAtRoot=u,o.root=l,o.cRoots=+(u===0),o);u<0&&(u=z(c,c=u),l=z(s,s=l));let d=(s+l)*.5,f=Math.abs(l-s),p=f,m=e.getValue(n,d),h=e.getValue(n+1,d),g=4,_=1,v=0,y=0,b=1,x=0;for(;++x<100;){x>32||h===0||b===2&&v>1||b===1&&g<4?(b=1,_>1&&_--):(b=2,y>1&&Math.abs(2*m)>Math.abs(f*h)&&_++),f=p;let t,r=!1;if(b===1)do{if(y>2){let e=16*Math.abs(f);if(Math.abs(s-l)*.5>e){let n=Math.min(s,l),r=Math.max(s,l);if(d===n){t=d,d=n+e,p=d-t;break}if(d===r){t=d,d=r-e,p=d-t;break}}}p=(l-s)*.5,t=d,d=s+p,r=s===d||l===d}while(0);else for(;;){p=_*m/h,t=d,d-=p,r=d===t;let e=Math.min(s,l),n=Math.max(s,l);if(d<e){if(_>1){d=t,_--;continue}p=t-e,d=e}else if(d>n){if(_>1){d=t,_--;continue}p=t-n,d=n}break}if(r||Math.abs(p)<a){t!==d&&(m=e.getValue(n,d));break}m=e.getValue(n,d),h=e.getValue(n+1,d);let i=s,o=l;m<0?(c=m,s=d):(u=m,l=d),b===2&&(s===i&&l===o||y>1&&Math.abs(p)>=.5001*Math.abs(f))?v++:v=0,b===1?(g++,y=0):(g=0,y++)}return x===100&&t(`Root_finder iterations exceeded`),o.root=d,o.funcAtRoot=m,o.cRoots=1,o}function _r(e,t,n,r,i,a,o){let s=r.slice(0,o),c=0;for(let e=0;e<o;e++)c+=r[e]*r[e];if(c=Math.sqrt(c),c>0)for(let e=0;e<o;e++)s[e]/=c;let l=-1/0,u=1/0;{let e=L(o,0);for(let t=0;t<o;t++)e[t]=t;e.sort((e,t)=>{let n=Math.abs(s[e]),r=Math.abs(s[t]);return n<r?-1:+(n>r)});for(let t=0;t<o;t++){let r=e[t];if(s[r]===0)continue;let o=(i[r]-n[r])/s[r],c=(a[r]-n[r])/s[r];c<o&&(c=z(o,o=c)),o>l&&(l=o),c<u&&(u=c)}}let d=0,f=(Math.abs(l)+Math.abs(u))*Se()*100,p=L(o,NaN),m=s.slice();function h(r,i){for(let e=0,t=o;e<t;e++)p[e]=n[e]+r*m[e];return e(p,o,t)}f>0&&(d=pr(h,null,l,0,u,f));let g=h(d);for(let e=0,t=o;e<t;e++)n[e]=xe(p[e],i[e],a[e]);return g}function vr(e,t,n,r,i,a){let o=bt(),s=r,c=e(s,t),l=n,u=i,d=e(l,t),f=e(u,t);c>d&&(c=d,s=l),c>f&&(c=f,s=u);let p=l,m=u,h=d,g=f;h>g&&(h=z(g,g=h),m=z(p,p=m));let _=s-p,v=p-m,y=Math.min(a,u-l)*.5,b=y*2,x=0,S=0;for(;S<100&&!(u-l<=b);++S){let n=l+(u-l)*.5,r=x>0;if(!r&&Math.abs(v)<=y&&(r=!0,x=3),!r){let e=s-p,t=s-m,n=e*(c-g),i=t*(c-h),a=t*i-e*n;i=2*(i-n),i>0&&(a=-a),i=Math.abs(i),i===0||Math.abs(a)>=Math.abs(i*v/2)||a<=i*(l-s)||a>=i*(u-s)?(r=!0,x=3):(v=_,_=a/i)}r&&(v=s>=n?l-s:u-s,_=o*v,x--);let i=s+_;i<l+y?i=l+y:i>u-y&&(i=u-y);let a=e(i,t);a<c?(i>=s?(l=s,d=c):(u=s,f=c),m=p,p=s,s=i,g=h,h=c,c=a):(i<s?(l=i,d=a):(u=i,f=a),a<=h||p===s?(m=p,p=i,g=h,h=a):(a<=g||m===s||m===p)&&(m=i,g=a))}return s}function yr(e,t,n,r){return e.isZero()?t.isZero()?-1:0:(r.setE(t.clone().negateThis().divThisE(e)),+!!n.containsCoordinate(r.value()))}function br(e,t,n,r,i,a){if(e.value()===0)return i?(a[0].set(1),+!!r.containsCoordinate(a[0].value())):yr(t,n,r,a[0]);if(i){let t=2;return a[0].set(1),a[1].setE(n).divThisE(e),a[1].eq(a[0])&&(a[1].set(1),t=1),r.containsCoordinate(a[1].value())||(t=1),r.containsCoordinate(a[0].value())||(t--,a[0].setE(a[1])),t===2&&a[0].value()>a[1].value()&&(a[1]=z(a[0],a[0]=a[1])),t}let o=t.clone().sqrThis().subThisE(e.clone().mulThisE(n).mulThisE(qe));if(o.lt(ve))return 0;let s=new V(t.value()>=0?1:-1),c=o.clone().sqrtThis(),l=new V(-.5).mulThisE(t.clone().addThisE(s.clone().mulThisE(c))),u=0;a[0].setE(l.divE(e));let d=new V(a[0].value()),f=new V(e.value()).mulE(d).addE(new V(t.value()).mulE(d).addE(new V(n.value())));return f.isZero()||Or(a[0],e,t,n,a[0]),r.containsCoordinate(a[0].value())&&u++,c.value()!==0&&l.value()!==0?(a[u].assign(n.divE(l)),d.set(a[u].value()),f.assign(new V(e.value()).mulE(d).addE(new V(t.value()).mulE(d).addE(new V(n.value())))),f.isZero()||Or(a[u],e,t,n,a[u]),r.containsCoordinate(a[u].value())&&u++,u===2&&a[0].value()>a[1].value()&&(a[1]=z(a[0],a[0]=a[1])),u):u}function xr(e,t,n,r,i,a,o){if(e.value()===0)return br(t,n,r,i,a,o);if(a){let n=1;o[0].set(1);let a=o.slice(n),s=br(e,t.addE(e),r.negate(),i,!1,a);if(s>0){n+=s;for(let e=1;e<n;e++)o[e].eq(_e)&&(o[n-1]=z(o[e],o[e]=o[n-1]),n--)}let c=o.slice(0,n);c.sort((e,t)=>e.value()<t.value()?-1:+(e.value()>t.value()));for(let e=0;e<n;++e)o[e]=c[e];return n}return kr(e,t,n,r,i,o)}function Sr(e,t,n,r,a,o){return(o<t||t<0)&&i(`nth_degree_real_roots`),Ar(e,t,n,r,a)}function Cr(e,t,n,r){return{coef0:e.clone(),coef1:t.clone(),coef2:n.clone(),coef3:r.clone(),calcF(e){return this.coef0.clone().mulThis(e).addThisE(this.coef1).mulThis(e).addThisE(this.coef2).mulThis(e).addThisE(this.coef3)},calcDF(e){return this.coef0.clone().mulThis(3).mulThis(e).addThisE(this.coef1.clone().mulThisByPower2(2)).mulThis(e).addThisE(this.coef2)},estimateError(e){let t=Math.abs(e),n=((this.coef0.eps()*t+this.coef1.eps())*t+this.coef2.eps())*t+this.coef3.eps()+this.calcF(e).eps(),r=this.coef0.clone().mulThis(e).mulThis(3).addThisE(this.coef1.clone().mulThis(2)).mulThis(e).addThisE(this.coef2);if(r.isZero()){let t=this.coef0.clone().mulThis(e).mulThis(6).addThisE(this.coef1.clone().mulThis(2));if(t.isZero()){let e=this.coef0.clone().mulThis(6);return(6*n/Math.abs(e.value()))**(1/3)}return Math.sqrt(2*n/Math.abs(t.value()))}return n/Math.abs(r.value())}}}class wr{coefs;derivCoefs1=[];derivCoefs2=[];lastDeriv1=-1;lastDeriv2=-1;lastUsed=-1;curCoefs=null;power;truePower;updateCoefs(e){if(this.lastDeriv1===e){this.curCoefs=this.derivCoefs1,this.lastUsed=1;return}if(this.lastDeriv2===e){this.curCoefs=this.derivCoefs2,this.lastUsed=2;return}let t;this.lastUsed===1?(t=this.derivCoefs2,this.lastDeriv2=e,this.lastUsed=2):(t=this.derivCoefs1,this.lastDeriv1=e,this.lastUsed=1),t.length=0;for(let n=0,r=this.truePower-e;n<=r;++n){t.push(this.coefs[n+e].clone());let r=n+e,i=r--;for(let t=1;t<e;t++)i*=r--;t[n].mulThis(i)}this.curCoefs=t}constructor(e,t,n,r){this.coefs=e,this.power=t,this.truePower=0;for(let e=t;e>=1;e--)if(this.coefs[e].value()!==0){this.truePower=e;break}}getMaxDerivative(){return this.truePower+1}getValue(e,t){let n=this.coefs;e===0?n=this.coefs:(this.updateCoefs(e),n=this.curCoefs);let r=new De(0),i=1;for(let a=0,o=this.truePower-e;a<=o;++a)r.pe(i*n[a].value()),i*=t;return r.getResult()}getError(e){let t=Math.abs(e),n=new De(0),r=new V(1),i=new V(0);for(let e=0,a=this.power;e<=a;++e)i.addThisE(this.coefs[e].mulE(r)),n.pe(r.value()*this.coefs[e].eps()),r.mulThis(t);n.pe(i.eps());let a=1;for(let t=1;t<=this.truePower;++t){a*=t,this.updateCoefs(t);let r=new V(1),i=new V(0);for(let n=0,a=this.truePower-t;n<=a;++n)i.addThisE(this.curCoefs[n].mulE(r)),r.mulThis(e);if(!i.isZero())return(a*n.getResult()/Math.abs(i.value()))**(1/t)}return 0}}function Tr(e,t,n,r,i,a){let o=e,s=t,c=s-o;if(!a){let n=r.calcF(e).value(),i=r.calcF(t).value();if((n>0||n>i)&&(s=z(o,o=s),i=z(n,n=i)),n>=0||i<=0)return!1}let l=!1,u=n,d,f=0;for(;f<100;f++){let e=r.calcF(u);if(d=r.calcDF(u),d.isZero())return!1;if(!e.value()||f>3&&e.isZero()){l=!0;break}a||(e.value()<0?o=u:s=u);let t=e.value()/d.value(),n=u-t;a||(n>=o&&n<=s||n>=s&&n<=o)&&Math.abs(t)<=.5*c?(u=n,c=Math.abs(t)):(c=Math.abs((s-o)*.5),u=(o+s)*.5)}return l?(i.set(u,r.estimateError(u)),!0):!1}function Er(e,t,n,r,i,a,o,s){return Tr(e,t,n.value(),Cr(r,i,a,o),s,!1)}class Dr{coefs=H(V,3);constructor(e,t,n){this.coefs[0].setE(e),this.coefs[1].setE(t),this.coefs[2].setE(n)}calcF(e){let t=new V(e);return this.coefs[0].mulE(t).addE(this.coefs[1]).mulE(t).addE(this.coefs[2])}calcDF(e){let t=new V(e);return V.st_mulByPower2(this.coefs[0],2).mulE(t).addE(this.coefs[1])}estimateError(e){let t=Math.abs(e),n=(this.coefs[0].eps()*t+this.coefs[1].eps())*t+this.coefs[2].eps()+this.calcF(e).eps(),r=new V(2).mulE(this.coefs[0]).mul(e).addE(this.coefs[1]);if(r.isZero()){let e=this.coefs[0].value();return Math.sqrt(n/Math.abs(e))}return n/Math.abs(r.value())}}function Or(e,t,n,r,i){return Tr(0,0,e.value(),new Dr(t,n,r),i,!0)}function kr(e,n,r,i,a,o){let s=H(V,3),c=0,l=n.negate().divThisE(e.clone().mulThis(3));a.containsCoordinate(l.value())&&(s[0].setE(l),c=1);let u=H(V,2),d=br(e.mul(3),n.mul(2),r,a,!1,u);if(d<0)return i.isZero()?-1:0;for(let e=0;e<d;e++)a.containsCoordinate(u[e].value())&&s[c++].setE(u[e]);Ee(s,0,c,(e,t)=>e.value()<t.value()?-1:+(e.value()>t.value()));let f=H(V,5);f[0].set(a.vmin);for(let e=0;e<c;e++)f[1+e].setE(s[e]);f[1+c].set(a.vmax);let p=c+2,m=1,h=0;{let t=f[0].clone();if(e.clone().mulThisE(t).addThisE(n).mulThisE(t).addThisE(r).mulThisE(t).addThisE(i).isZero()){let a=Cr(e,n,r,i);t.setError(a.estimateError(t.value())),o[h]=t,h++,m++}}for(let s=m;s<p;s++){let c=f[s].clone(),l=e.clone().mulThisE(c).addThisE(n).mulThisE(c).addThisE(r).mulThisE(c).addThisE(i).isZero();if(l||!f[s].eq(f[s-1])){if(l||Er(f[s-1].value(),f[s].value(),f[s-1].clone().addThisE(f[s]).divThisByPower2(2),e,n,r,i,c)){if(h>0&&c.eq(o[h-1]))continue;if(h>=3&&t(`cubic_polynomial_solver_too_many_roots`),l){let t=Cr(e,n,r,i);c.setError(t.estimateError(c.value()))}o[h]=c,h++}if(f[s].value()===a.vmax)break;if(l){s++;continue}}}return h}function Ar(e,t,n,r,i,a){let o=new wr(e,t,n,Se()),s=0;if(o.truePower===2)s=br(e[2],e[1],e[0],n,r,i);else if(o.truePower===1)s=yr(e[1],e[0],n,i[0]);else if(o.truePower===0)return e[0].value()?0:-1;else{let e=[];e.length=t,s=cr(o,n,t,e);for(let t=0;t<s;t++)i[t].set(e[t])}for(let e=0;e<s;e++)i[e].setError(o.getError(i[e].value()));return s}var jr=v;class Mr extends Sn{static type=s.enumRationalBezier2;m_cp;m_weights;m_cachedValues;constructor(e){if(e===void 0||Ne(e,`vd`)){super({vd:e?.vd,XStart:0,YStart:0,XEnd:0,YEnd:0}),this.m_cp=new P(0,0),this.m_weights=[1,0,1];return}if(e.fromPoint&&e.weight?e={fromPoint:e.fromPoint,controlPoint1:e.controlPoint1,toPoint:e.toPoint,weight0:1,weight1:e.weight,weight2:1}:e.points&&e.weight?e={fromPoint:e.points[0],controlPoint1:e.points[1],toPoint:e.points[2],weight0:1,weight1:e.weight,weight2:1}:e.points&&e.weights&&(e={fromPoint:e.points[0],controlPoint1:e.points[1],toPoint:e.points[2],weight0:e.weights[0],weight1:e.weights[1],weight2:e.weights[2]}),e.fromPoint&&e.weight0){super({start:e.fromPoint,end:e.toPoint}),(e.weight0<=0||e.weight1<0||e.weight2<=0)&&i(`weights`),this.m_cp=e.controlPoint1.clone(),this.m_weights=[e.weight0,e.weight1,e.weight2];return}if(e.copy){super(e),this.m_cp=e.copy.m_cp.clone(),this.m_weights=e.copy.m_weights.slice();return}if(e.move){super(e),this.m_cp=e.move.m_cp.clone(),this.m_weights=e.move.m_weights.slice();return}n(`unexpected constructor param`)}getBoundary(){return or(this)}assignMove(e){return this}assignCopy(e){return e.copyTo(this),this}construct(e,t,n,r){this.dropAllAttributes(),this.setCpsAndWeights(e,t,n,1,r,1),gs(this)}constructWeights(e,t,n,r,i,a){this.dropAllAttributes(),this.setCpsAndWeights(e,t,n,r,i,a),gs(this)}constructArray(e,t){this.construct(e[0],e[1],e[2],t)}constructArrayWeights(e,t){this.dropAllAttributes(),this.setCpsAndWeightsArray(e,t),gs(this)}convertToStandardForm(){}getStandardFormWeight(){return this.m_weights[1]/Math.sqrt(this.m_weights[0]*this.m_weights[2])}getGeometryType(){return s.enumRationalBezier2}queryEnvelope(e){if(e instanceof G){if(e.setCoords(this.getStartXY()),e.mergeNe(this.getEndXY()),e.contains(this.m_cp))return;let t=Hs(this);if(t!==null){let n=new P;for(let r of t.specialPoints)this.queryCoord2D(r,n),e.mergeNe(n)}else{let t=[],n=H(P,3);this.queryControlPoints(n),ys(n,this.m_weights,t);let r=new P;for(let n of t)this.queryCoord2D(n,r),e.mergeNe(r)}}}applyTransformation(e){if(e instanceof xt){let t=H(P,3);this.queryControlPoints(t),e.transformPoints2D(t,3,t),this.setStartXY(t[0]),this.m_cp.assign(t[1]),this.setEndXY(t[2]),this.afterCompletedModification();return}}createInstance(){return new Mr({vd:this.m_description})}calculateLength2D(){return bs(this,1,!1)}calculateLowerLength2D(){return P.distance(this.getStartXY(),this.getEndXY())}calculateUpperLength2D(){return this.calculateUpperLength2D_()}calculateUpperLength2D_(){return this.m_weights[1]>0?P.distance(this.getStartXY(),this.m_cp)+P.distance(this.getEndXY(),this.m_cp):P.distance(this.getStartXY(),this.getEndXY())}queryCoord2D(e,t){return this.queryCoord2DExtension(e,t,!0)}queryCoord2DE(e,t){gc(this,e,t)}queryCoord2DExtension(e,t,n){if(n){if(e<0){wn(new Q({start:this.getStartXY(),end:this.getStartXY().add(this.getTangent(0).getUnitVector())}),e,t);return}if(e>1){wn(new Q({start:this.getEndXY(),end:this.getEndXY().add(this.getTangent(1).getUnitVector())}),e-1,t);return}}let r=H(P,3);this.queryControlPoints(r),bc(r,this.m_weights,e,t)}getCoordX(e){let t=new P;return this.queryCoord2DExtension(e,t,!0),t.x}getCoordY(e){let t=new P;return this.queryCoord2DExtension(e,t,!0),t.y}cut(e,t,n){let r=new $;return this.queryCut(e,t,r,n),r.releaseSegment()}queryCut(e,t,n,r){let i=n.createQuadraticRationalBezier();if(this.cutBezierIgnoreAttributes(e,t,i),r)return;i.assignVertexDescription(this.m_description);let a=this.m_description.getAttributeCount();if(a>1){for(let t=1;t<a;t++){let n=this.m_description.getSemantics(t),r=jr.getComponentCount(n);for(let t=0;t<r;t++){let r=this.getAttributeAsDbl(e,n,t);i.setStartAttribute(n,t,r)}}for(let e=1;e<a;e++){let n=this.m_description.getSemantics(e),r=jr.getComponentCount(n);for(let e=0;e<r;e++){let r=this.getAttributeAsDbl(t,n,e);i.setEndAttribute(n,e,r)}}}}queryDerivative(e,t){As(this,e,t)}cutBezierIgnoreAttributes(e,t,n){(e<0||t>1||e>t)&&i(`Quadratic_rational_bezier.cut_bezier_ignore_attributes`);let r=H(P,3);this.queryControlPoints(r);let a=[0,0,0];tc(r,this.m_weights,e,t,r,a),n.setControlPointsAndWeights(r,a)}splitBezierIgnoreAttributes(e,t,n){}getAttributeAsDbl(e,t,n){if(t===0)return n===0?this.getCoordX(e):this.getCoordY(e);let r=this.calculateLength2D(),i=r>0?this.tToLength(e)/r:0,a=jr.getInterpolation(t),o=this.getStartAttributeAsDbl(t,n),s=this.getEndAttributeAsDbl(t,n);return Ae(a,o,s,i,jr.getDefaultValue(t))}getClosestCoordinate(e,t){return Ws(this,e,R.unit(),t,-1)}getClosestCoordinateOnInterval(e,t,n=-1){return Ws(this,e,t,!1,n)}getYMonotonicParts(e,t){return this.getMonotonicParts(e,t)}getMonotonicParts(e,t){e.length<2&&i(``);let n=vs(this),a=0;if(n.specialPointsCount()===2)return 0;r(e.length>=n.specialPointsCount()-1);for(let r=1,i=n.specialPointsCount();r<i;++r)this.queryCut(n.specialPoints[r-1],n.specialPoints[r],e[a],t),a++;for(let t=0;t<a;++t)Zs(e[t].get());return a}intersectionWithAxis2D(e,t,n,r){n&&(n.length=9),r&&(r.length=9);let i=[,,,],a=H(V,2),o=new R(0,1),s=0,c=H(P,3);if(this.queryControlPoints(c),e){if(i[0]=new V(c[0].y).sub(t).mul(this.m_weights[0]),i[1]=new V(c[1].y).sub(t).mul(this.m_weights[1]),i[2]=i[0].subE(i[1].mul(2)).addE(new V(c[2].y).sub(t).mul(this.m_weights[2])),i[1]=i[1].subE(i[0]).mulThisByPower2(2),s=br(i[2],i[1],i[0],o,!1,a),n)for(let e=0;e<s;e++)n[e]=this.getCoordX(a[e].value())}else if(i[0]=new V(c[0].x).sub(t).mul(this.m_weights[0]),i[1]=new V(c[1].x).sub(t).mul(this.m_weights[1]),i[2]=i[0].subE(i[1].mul(2)).addE(new V(c[2].x).sub(t).mul(this.m_weights[2])),i[1]=i[1].subE(i[0]).mulThisByPower2(2),s=br(i[2],i[1],i[0],o,!1,a),n)for(let e=0;e<s;e++)n[e]=this.getCoordY(a[e].value());if(r)for(let e=0;e<s;e++)r[e]=a[e].value();else n&&Ee(n,0,s,Qe);return s}intersectionOfYMonotonicWithAxisX(e,t){if(this.m_YStart===this.m_YEnd)return e===this.m_YStart?t:NaN;if(e===this.m_YStart)return this.m_XStart;if(e===this.m_YEnd)return this.m_XEnd;let n=[NaN,NaN],i=this.intersectionWithAxis2D(!0,e,n,null);return r(i!==2),i===-1?t:n[0]}isCurve(){return!0}isDegenerate(e){return Pt(this,e)}isDegenerate3D(e,t){return!1}queryLooseEnvelope(e){if(e instanceof G){e.setCoords({pt:this.getStartXY()}),e.mergeNe(this.m_cp),e.mergeNe(this.getEndXY());return}}clone(e){let t=this.createInstance();return this.copyTo(t),t}queryInterval(e,t){if(e===0){let e=G.constructEmpty();this.queryEnvelope(e);let n=R.constructEmpty();return t===0?e.queryIntervalX(n):e.queryIntervalY(n),n}return super.queryInterval(e,t)}queryLooseEnvelopeOnInterval(e,t){let n=H(P,3);this.queryControlPoints(n),tc(n,this.m_weights,e.vmin,e.vmax,n,[0,0,0]),t.setFromPoints(n,3)}changeEndPoints2D(e,t){if(e.isEqual(this.m_XStart,this.m_YStart)&&t.isEqual(this.m_XEnd,this.m_YEnd))return;let n=this.m_cp.isEqual(this.m_XStart,this.m_YStart),r=this.m_cp.isEqual(this.m_XEnd,this.m_YEnd);this.setStartXY(e),this.setEndXY(t),n?this.m_cp.setCoordsPoint2D(e):r&&this.m_cp.setCoordsPoint2D(t),this.normalizeAfterEndpointChange()}tToLength(e){return bs(this,e,!0)}lengthToT(e){return Ps(this,e)}calculateWeightedAreaCentroid2D(e){let t=Rs(this),n=Fs(this);return t.x+=(this.getStartX()-e.x)*n,t.y+=(this.getStartY()-e.y)*n,t}calculateWeightedCentroid2D(){let e=new P;return this.isDegenerate(0)?(e.setCoords(0,0),e):Vs(this)?(e.assign(this.getCoord2D(.5).mul(this.calculateLength2D())),e):(e.assign($s(this,1)),e)}getControlPoint1(){return this.m_cp.clone()}setControlPoint1(e){this.m_cp.setCoordsPoint2D(e),this.afterCompletedModification()}queryWeights(e){for(let t=0;t<3;++t)e[t]=this.m_weights[t]}queryCoord2DMP(e,t){let n=H(P,3);return this.queryControlPoints(n),vc(n.map(e=>q.constructPoint2D(e)),this.m_weights.map(e=>I.constructDouble(e)),I.constructDouble(e),t)}setWeights(e){}queryControlPoints(e){e[0].assign(this.getStartXY()),e[1].assign(this.m_cp),e[2].assign(this.getEndXY())}queryControlPointsHelper(e){return this.queryControlPoints(e),3}setControlPointsAndWeights(e,t){this.setCpsAndWeightsArray(e,t),this.afterCompletedModification()}getTangent(e){let t=H(P,3);return this.queryControlPoints(t),Ms(t,this.m_weights,e)}getDerivative(e){let t=xe(e,0,1),n=H(P,4);return xs(this,1,t,n),n[1]}getCurvature(e){let t=H(P,4);xs(this,2,e,t);let n=t[1].sqrLength();return n===0?NaN:(t[1].divThis(Math.sqrt(n)),t[1].crossProduct(t[2])/n)}isIntersecting(e,t,n){return!1}isIntersectingPoint(e,t,n){return!1}isIntersectingPoint3D(e,t,n,r,i=1){return!1}isMonotoneQuickAndDirty(){let e=H(P,3);return this.queryControlPoints(e),Xs(e)}getMonotonicPartParams(e,t){let n=vs(this),r=n.specialPointsCount();if(!t)return n.specialPointsCount();e<r&&i(``);for(let e=0;e<r;e++)t[e]=n.specialPoints[e];return r}normalizeAfterEndpointChange(){return!1}orientBottomUp(){if(this.m_YEnd<this.m_YStart||this.m_YEnd===this.m_YStart&&this.m_XEnd<this.m_XStart){this.m_XEnd=z(this.m_XStart,this.m_XStart=this.m_XEnd),this.m_YEnd=z(this.m_YStart,this.m_YStart=this.m_YEnd),this.m_weights[2]=z(this.m_weights[0],this.m_weights[0]=this.m_weights[2]);for(let e=0,t=this.m_description.getTotalComponentCount()-2;e<t;e++)this.m_attributes[e+t]=z(this.m_attributes[e],this.m_attributes[e]=this.m_attributes[e+t]);this.m_cachedValues=null}}isLine(){return!1}isDegenerateToLineHelper(e){let t=H(P,3);this.queryControlPoints(t);let n=t[2].sub(t[0]),r=n.length();if(P.distance(t[0],t[1])+P.distance(t[2],t[1])-r>e)return!1;let i=e,a=t[1].clone();return a.subThis(t[0]),!(Math.abs(a.crossProduct(n))/r>i)}copyIgnoreAttributes(e){let t=H(P,3);this.queryControlPoints(t);let n=[0,0,0];this.queryWeights(n),e.setControlPointsAndWeights(t,n)}calculateArea2DHelper(){return Fs(this)}absNorm(){return this.getStartXY().norm(1)+this.getEndXY().norm(1)+this.m_cp.norm(1)}absNormXYZ(e){return r(0),0}queryEnvelopeW(e,t){Js(this,e,t)}setSegmentFromCoordsForStitcher(e,t){let n=[0,0,0];this.queryWeights(n),this.constructWeights(e[0],this.getControlPoint1(),e[t-1],n[0],n[1],n[2])}writeInBufferStream(e,t){let n=new Float64Array(5);return n[0]=this.m_cp.x,n[1]=this.m_cp.y,n[2]=this.m_weights[0],n[3]=this.m_weights[1],n[4]=this.m_weights[2],e.writeRangeFromArray(t,n.length,n,!0,1),t+=n.length}readFromBufferStream(e,t){let n=new Float64Array(5);e.queryRange(t,n.length,n,!0,1),this.m_cp.x=n[0],this.m_cp.y=n[1],this.m_weights[0]=n[2],this.m_weights[1]=n[3],this.m_weights[2]=n[4],this.m_cachedValues=null}snapControlPoints(e){let t=H(P,3);this.queryControlPoints(t);let n=P.sqrDistance(t[1],t[0]),r=P.sqrDistance(t[1],t[2]),i=t[0].clone(),a=n;n>r&&(i=t[2].clone(),a=r);let o=!1;return a<=e&&a!==0&&(o=!0,this.setControlPoint1(i)),o}needsSnapControlPoints(e){if(!e)return!1;let t=H(P,3);this.queryControlPoints(t);let n=P.sqrDistance(t[1],t[0]),r=P.sqrDistance(t[1],t[2]);t[0].clone();let i=n;return n>r&&(t[2].clone(),i=r),i<=e&&i!==0}calculateSpecialPointsForCracking(e,t){return 0}ensureXYMonotone(){return Zs(this)}setCoordsForIntersector(e,t,n){rc(this,e,t,n)}copyToImpl(e){let t=e;t.m_cp.setCoordsPoint2D(this.m_cp),t.m_weights[0]=this.m_weights[0],t.m_weights[1]=this.m_weights[1],t.m_weights[2]=this.m_weights[2],Us(t,Hs(this))}reverseImpl(){this.m_weights[2]=z(this.m_weights[0],this.m_weights[0]=this.m_weights[2])}equalsImpl(e){let t=e;if(!this.m_cp.equals(t.m_cp))return!1;for(let e=0;e<3;e++)if(this.m_weights[e]!==t.m_weights[e])return!1;return!0}equalsImplTol(e,t){let n=e;if(!this.m_cp.isEqualPoint2D(n.m_cp,t))return!1;let r=H(P,3);this.queryControlPoints(r);let i=H(P,3);n.queryControlPoints(i);let a=[n.m_weights[0],n.m_weights[1],n.m_weights[2]];for(let e=0;e<3;e++){let n=new w;n.setCoordsPoint2DZ(r[e].mul(this.m_weights[e]),this.m_weights[e]);let o=new w;if(o.setCoordsPoint2DZ(i[e].mul(a[e]),a[e]),!n.isEqual(o,t))return!1}return!0}swapImpl(e){let t=e;t.m_cp=z(this.m_cp,this.m_cp=t.m_cp),t.m_weights=z(this.m_weights,this.m_weights=t.m_weights),_s(this,t)}afterCompletedModification(){gs(this)}intersect(e,t,n,r,i){return pu(!1,this,e,t,n,r,i)}intersectPoint(e,t,n){return qs(this,e,t,n)}endPointModified(){gs(this)}clearEndPointModified(){}setCpsAndWeights(e,t,n,r,a,o){(r<=0||o<=0||a<0)&&i(`weights`),(e.isNAN()||t.isNAN()||n.isNAN())&&i(`NAN control points in bezier are not supported`),this.setStartXY(e),this.m_cp.assign(t),this.m_weights[0]=r,this.m_weights[1]=a,this.m_weights[2]=o,this.setEndXY(n)}setCpsAndWeightsArray(e,t){this.setCpsAndWeights(e[0],e[1],e[2],t[0],t[1],t[2])}}var Nr=v;class Pr extends Sn{static type=s.enumBezier2;constructor(e){e===void 0||Ne(e,`vd`)?(super({vd:e?.vd,XStart:0,YStart:0,XEnd:0,YEnd:0}),this.m_cp=new P(0,0)):e.from?(super({XStart:e.from.x,YStart:e.from.y,XEnd:e.to.x,YEnd:e.to.y,...e.vd}),this.m_cp=e.cp.clone()):e.points?(super({XStart:e.points[0].x,YStart:e.points[0].y,XEnd:e.points[2].x,YEnd:e.points[2].y,...e.vd}),this.m_cp=e.points[1].clone()):e.copy?(super(e),this.m_cp=e.copy.m_cp.clone()):t(`unexpected constructor args`)}getBoundary(){return or(this)}assignCopy(e){return this!==e&&e.copyTo(this),this}construct(e,t,n){this.setStartXY(e),this.m_cp.assign(t),this.setEndXY(n),ui(this)}constructPoints(e){this.setStartXY(e[0]),this.m_cp.assign(e[1]),this.setEndXY(e[2]),ui(this)}getGeometryType(){return s.enumBezier2}queryEnvelope(e){if(e.m_EnvelopeType===2){if(e.setCoords(this.getStartXY()),e.mergeNe(this.getEndXY()),e.contains(this.m_cp))return;let t=Ti(this);if(t!==null){let n=new P;for(let r of t.specialPoints)this.queryCoord2D(r,n),e.mergeNe(n)}else{let t=[];pi(this,t);let n=new P;for(let r of t)this.queryCoord2D(r,n),e.mergeNe(n)}return}n(`env type not impl`)}applyTransformation(e){if(e.m_TransformationType===1){let t=H(P,3);this.queryControlPoints(t),e.transformPoints2D(t,3,t),this.setStartXY(t[0]),this.m_cp.assign(t[1]),this.setEndXY(t[2]),this.afterCompletedModification();return}r(0)}createInstance(){return new Pr({vd:this.m_description})}calculateLength2D(){return mi(this,1,!1)}calculateLowerLength2D(){return P.distance(this.getStartXY(),this.getEndXY())}calculateUpperLength2D(){return this.calculateUpperLength2D_()}calculateUpperLength2D_(){return P.distance(this.getStartXY(),this.m_cp)+P.distance(this.getEndXY(),this.m_cp)}queryCoord2D(e,t){this.queryCoord2DExtended(e,t,!1)}queryCoord2DExtended(e,t,n){let r=H(P,3);this.queryControlPoints(r),Zi(r,e,t,n)}queryCoord2DE(e,t){Qi(this,e,t)}queryCoord2DMP(e,t){r(!1,`bernstein polynomials not ported`)}getCoordX(e){if(e<0||e>1){let t=new P;return this.queryCoord2DExtended(e,t,!0),t.x}if(e<=.5){let t=Pe(this.getStartX(),this.m_cp.x,e),n=Pe(this.m_cp.x,this.getEndX(),e);return Pe(t,n,e)}{let t=Fe(this.getStartX(),this.m_cp.x,e),n=Fe(this.m_cp.x,this.getEndX(),e);return Fe(t,n,e)}}getCoordY(e){if(e<0||e>1){let t=new P;return this.queryCoord2DExtended(e,t,!0),t.y}if(e<=.5){let t=Pe(this.getStartX(),this.m_cp.x,e),n=Pe(this.m_cp.x,this.getEndX(),e);return Pe(t,n,e)}{let t=Fe(this.getStartY(),this.m_cp.y,e),n=Fe(this.m_cp.y,this.getEndY(),e);return Fe(t,n,e)}}cut(e,t,n){let r=new $;return this.queryCut(e,t,r,n),r.releaseSegment()}queryCut(e,t,n,r){let i=n.createQuadraticBezier();if(this.cutBezierIgnoreAttributes(e,t,i),r)return;i.assignVertexDescription(this.m_description);let a=this.m_description.getAttributeCount();if(a>1){for(let t=1;t<a;t++){let n=this.m_description.getSemantics(t),r=Nr.getComponentCount(n);for(let t=0;t<r;t++){let r=this.getAttributeAsDbl(e,n,t);i.setStartAttribute(n,t,r)}}for(let e=1;e<a;e++){let n=this.m_description.getSemantics(e),r=Nr.getComponentCount(n);for(let e=0;e<r;e++){let r=this.getAttributeAsDbl(t,n,e);i.setEndAttribute(n,e,r)}}}}queryDerivative(e,t){ea(this,e,t)}cutBezierIgnoreAttributes(e,t,n){if((e<0||t>1||e>t)&&i(`Quadratic_bezier.cut_bezier_ignore_attributes`),e===0&&t===1){n.setStartXY(this.getStartXY()),n.m_cp.assign(this.m_cp),n.setEndXY(this.getEndXY());return}let r=H(P,3);this.queryControlPoints(r),Li(r,e,t,r),n.constructPoints(r)}splitBezierIgnoreAttributes(e,t,n){r(0)}getAttributeAsDbl(e,t,n){if(t===0)return n===0?this.getCoordX(e):this.getCoordY(e);let r=this.calculateLength2D(),i=r>0?this.tToLength(e)/r:0,a=Nr.getInterpolation(t),o=this.getStartAttributeAsDbl(t,n),s=this.getEndAttributeAsDbl(t,n);return Ae(a,o,s,i,Nr.getDefaultValue(t))}getClosestCoordinate(e,t){return Di(this,e,R.unit(),t)}getClosestCoordinateOnInterval(e,t,n=-1){return Di(this,e,t,!1)}getYMonotonicParts(e,t){return this.getMonotonicParts(e,t)}getMonotonicParts(e,t){e.length<2&&i(``);let n=fi(this),a=0;if(n.specialPointsCount()===2)return 0;r(e.length>=n.specialPointsCount()-1);for(let r=1,i=n.specialPointsCount();r<i;++r)this.queryCut(n.specialPoints[r-1],n.specialPoints[r],e[a],t),a++;for(let t=0;t<a;++t)Ni(e[t].get());return a}intersectionWithAxis2D(e,t,n,r){let i=H(V,3),a=H(V,2),o=new R(0,1),s=0;if(e){if(i[0]=new V(this.getStartY()).sub(t),i[1]=new V(this.m_cp.y).subE(new V(this.getStartY())).mulThisByPower2(2),i[2]=new V(this.getStartY()).add(this.getEndY()).subE(new V(this.m_cp.y).mulThisByPower2(2)),s=br(i[2],i[1],i[0],o,!1,a),n)for(let e=0;e<s;e++)n[e]=this.getCoordX(a[e].value())}else if(i[0]=new V(this.getStartX()).sub(t),i[1]=new V(this.m_cp.x).subE(new V(this.getStartX())).mulThisByPower2(2),i[2]=new V(this.getStartX()).add(this.getEndX()).subE(new V(this.m_cp.x).mulThisByPower2(2)),s=br(i[2],i[1],i[0],o,!1,a),n)for(let e=0;e<s;e++)n[e]=this.getCoordY(a[e].value());if(r)for(let e=0;e<s;e++)r[e]=a[e].value();else n&&Ie(n,s);return s}intersectionOfYMonotonicWithAxisX(e,t){if(this.m_YStart===this.m_YEnd)return e===this.m_YStart?t:NaN;if(e===this.m_YStart)return this.m_XStart;if(e===this.m_YEnd)return this.m_XEnd;let n=[0,0],i=this.intersectionWithAxis2D(!0,e,n,null);return r(i!==2),i===-1?t:n[0]}isCurve(){return!0}isLine(){return!1}isDegenerate(e){return Pt(this,e)}isDegenerate3D(e,t){return r(0),!1}queryLooseEnvelope(e){if(e.m_EnvelopeType===2){e.setCoords(this.getStartXY()),e.mergeNe(this.m_cp),e.mergeNe(this.getEndXY());return}r(0)}clone(e){let t=this.createInstance();return this.copyTo(t),t}queryInterval(e,t){if(e===0){let e=new G;this.queryEnvelope(e);let n=new R;return t===0?e.queryIntervalX(n):e.queryIntervalY(n),n}return super.queryInterval(e,t)}queryLooseEnvelopeOnInterval(e,t){let n=H(P,4);this.queryControlPoints(n),Li(n,e.vmin,e.vmax,n),t.setFromPoints(n,4)}changeEndPoints2D(e,t){if(e.isEqual(this.m_XStart,this.m_YStart)&&t.isEqual(this.m_XEnd,this.m_YEnd))return;let n=this.m_cp.isEqual(this.m_XStart,this.m_YStart),r=this.m_cp.isEqual(this.m_XEnd,this.m_YEnd);this.setStartXY(e),this.setEndXY(t),n?this.m_cp.setCoordsPoint2D(e):r&&this.m_cp.setCoordsPoint2D(t),this.normalizeAfterEndpointChange()}tToLength(e){return mi(this,e,!0)}lengthToT(e){return xi(this,e)}calculateWeightedAreaCentroid2D(e){let t=H(P,3);qi(this,t);let n=t[2],r=t[1],i=new P,a=n.y*r.x-n.x*r.y;i.x=-((4*n.x+5*r.x)*a)/60,i.y=-((4*n.y+5*r.y)*a)/60;let o=Si(this);return i.x+=(t[0].x-e.x)*o,i.y+=(t[0].y-e.y)*o,i}calculateWeightedCentroid2D(){let e=new P;return this.isDegenerate(0)?(e.setCoords(0,0),e):wi(this)?(e.assign(this.getCoord2D(.5).mul(this.calculateLength2D())),e):(e.assign(Fi(this,1)),e)}getControlPoint1(){return this.m_cp.clone()}setControlPoint1(e){this.m_cp.setCoordsPoint2D(e),this.afterCompletedModification()}queryControlPoints(e){e[0].assign(this.getStartXY()),e[1].assign(this.m_cp),e[2].assign(this.getEndXY())}queryControlPointsHelper(e){return this.queryControlPoints(e),3}setControlPoints(e){for(let t=0;t<3;t++)e[t].isNAN()&&i(`NaN control points in bezier are not supported`);this.m_XStart=e[0].x,this.m_YStart=e[0].y,this.m_cp.setCoordsPoint2D(e[1]),this.m_XEnd=e[2].x,this.m_YEnd=e[2].y,this.afterCompletedModification()}getTangent(e){let t=xe(e,0,1),n=vi(this,1,t);return n.isZero()&&(n=vi(this,2,t),t===1&&n.negateThis()),n}getDerivative(e){let t=xe(e,0,1);return vi(this,1,t)}getCurvature(e){let t=vi(this,1,e),n=vi(this,2,e),r=t.sqrLength();return r===0?NaN:(t.divThis(Math.sqrt(r)),t.crossProduct(n)/r)}isIntersecting(e,t,n){return lu(!1,this,e,t,n)!==0}isIntersectingPoint(e,t,n){if(n&&(e.isEqualPoint2D(this.getStartXY())||e.isEqualPoint2D(this.getEndXY())))return!1;let r=new G;if(this.queryLooseEnvelope(r),r.inflateCoords(t,t),!r.contains(e))return!1;let i=this.getClosestCoordinate(e,!1),a=new P;return this.queryCoord2D(i,a),P.distance(a,e)<=t}isIntersectingPoint3D(e,t,n,i,a=1){return r(0),!1}isMonotoneQuickAndDirty(){return!1}getMonotonicPartParams(e,t){let n=fi(this),r=n.specialPointsCount();if(!t)return n.specialPointsCount();e<r&&i(``);for(let e=0;e<r;e++)t[e]=n.specialPoints[e];return r}normalizeAfterEndpointChange(){return!1}orientBottomUp(){if(this.m_YEnd<this.m_YStart||this.m_YEnd===this.m_YStart&&this.m_XEnd<this.m_XStart){z(this.m_XStart,this.m_XStart=this.m_XEnd),z(this.m_YStart,this.m_YStart=this.m_YEnd);for(let e=0,t=this.m_description.getTotalComponentCount()-2;e<t;e++)this.m_attributes[e+t]=z(this.m_attributes[e],this.m_attributes[e]=this.m_attributes[e+t]);this.m_cachedValues=null}}isDegenerateToLineHelper(e){let t=H(P,3);this.queryControlPoints(t);let n=t[2].sub(t[0]),r=n.length();if(P.distance(t[0],t[1])+P.distance(t[2],t[1])-r>e)return!1;let i=e,a=t[1].clone();return a.subThis(t[0]),!(Math.abs(a.crossProduct(n))/r>i)}copyIgnoreAttributes(e){let t=H(P,3);this.queryControlPoints(t),e.setControlPoints(t)}calculateArea2DHelper(){return Si(this)}absNorm(){return zi(this)}queryEnvelopeW(e,t){let n=H(P,3);this.queryControlPoints(n),ji(n,e,t)}setSegmentFromCoordsForStitcher(e,t){this.construct(e[0],this.getControlPoint1(),e[t-1])}snapControlPoints(e){return aa(this,e)}writeInBufferStream(e,t){let n=new Float64Array(2);return n[0]=this.m_cp.x,n[1]=this.m_cp.y,e.writeRangeFromArray(t,n.length,n,!0,1),t+=n.length}readFromBufferStream(e,t){let n=new Float64Array(2);e.queryRange(t,n.length,n,!0,1),this.m_cp.x=n[0],this.m_cp.y=n[1],this.m_cachedValues=null}needsSnapControlPoints(e){return oa(this,e)}calculateSpecialPointsForCracking(e,t){return 0}ensureXYMonotone(){return Ni(this)}setCoordsForIntersector(e,t,n){Ri(this,e,t,n)}copyToImpl(e){let t=e;t.m_cp.setCoordsPoint2D(this.m_cp),Ei(t,Ti(this))}reverseImpl(){}equalsImplTol(e,t){let n=e;return!!this.m_cp.isEqualPoint2D(n.m_cp,t)}equalsImpl(e){let t=e;return!!this.m_cp.equals(t.m_cp)}swapImpl(e){let t=e;t.m_cp=z(this.m_cp,this.m_cp=t.m_cp),di(this,t)}afterCompletedModification(){ui(this)}intersect(e,t,n,r,i){return pu(!1,this,e,t,n,r,i)}intersectPoint(e,t,n){return ki(this,e,t.length,t,n)}endPointModified(){ui(this)}clearEndPointModified(){}m_cp;m_cachedValues}class Fr{m_elements;m_zeroCtor;constructor(e){if(e.coefsT){this.m_zeroCtor=e.zeroCtor,this.m_elements=e.coefsT.map(e=>e.clone()),r(this.m_elements.length===e.power+1),this.updatePower();return}if(e.coef0){this.m_zeroCtor=e.zeroCtor,this.m_elements=[e.coef0.clone()];return}if(e.copy)this.m_zeroCtor=e.copy.m_zeroCtor,this.m_elements=e.copy.m_elements.map(e=>e.clone());else{this.m_zeroCtor=e.zeroCtor,this.m_elements=[new this.m_zeroCtor];return}}construct(e,t){return this.m_elements=e.map(e=>e.clone()),this.updatePower(),this}construct0(e){return this.m_elements.length=0,this.m_elements.push(e.clone()),this.updatePower(),this}assignCopy(e){return this.m_elements=e.m_elements.map(e=>e.clone()),this.updatePower(),this}assignMove(e){return this.m_elements=e.m_elements,e.m_elements=[],this.updatePower(),this}power(){return this.m_elements.length-1}addElement(e){this.m_elements.push(e.clone())}scaleRangeToUnitInterval(e,t){let n=t;n.subThis(e);let r=this.power();for(let t=0;t<=r;t++){let i=new this.m_zeroCtor;for(let n=t;n<=r;n++){let r=this.m_elements[n];r.mulDoubleThis(vt(n,t));let a=e.pow(n-t);r.mulThis(a),i.addThis(r)}let a=n.pow(t);i.mulThis(a),this.m_elements[t]=i}}fmSubThis(e,t){return r(0),this}addThis(e){let t=Math.min(this.power(),e.power());for(let n=0;n<=t;++n)this.m_elements[n].addThis(e.m_elements[n]);let n=e.power();this.m_elements.length=Math.max(this.power(),e.power())+1;for(let r=t+1;r<=n;++r)this.m_elements[r]=e.m_elements[r];return this.updatePower(),this}add0(e){return this.m_elements[0].addThis(e),this.updatePower(),this}addNumber0(e){return r(0),this}sub(e){let t=Math.min(this.power(),e.power());for(let n=0;n<=t;++n)this.m_elements[n].subThis(e.m_elements[n]);let n=e.power();this.m_elements.length=Math.max(this.power(),e.power())+1;for(let r=t+1;r<=n;++r)this.m_elements[r]=e.m_elements[r].clone(),this.m_elements[r].negateThis();return this.updatePower(),this}sub0(e){return r(0),this}subNumber0(e){return r(0),this}subShifted(e,t){let n=this.power(),r=e.power()+t,i=Math.min(this.power(),r),a=0;for(let n=t;n<=i;++n)this.m_elements[n].subThis(e.m_elements[a]),a++;if(r<=n)return this.updatePower(),this;this.m_elements.length=r+1;for(let e=n+1;e<this.m_elements.length;++e)this.m_elements[e]=new this.m_zeroCtor;for(let t=i+1;t<=r;++t)this.m_elements[t].subThis(e.m_elements[a++]);return this.updatePower(),this}subShiftedWithCoef(e,t,n){let r=this.power(),i=e.power()+n,a=Math.min(this.power(),i),o=0;for(let r=n;r<=a;++r)this.m_elements[r].fmSubThis(e.m_elements[o],t),o++;if(i<=r)return this.updatePower(),this;this.m_elements.length=i+1;for(let e=r+1;e<this.m_elements.length;++e)this.m_elements[e]=new this.m_zeroCtor;for(let n=a+1;n<=i;++n)this.m_elements[n].fmSubThis(e.m_elements[o++],t);return this.updatePower(),this}mulThis(e){if(this.constructor===e.constructor){let t=e,n=[];for(let e=0,r=this.power();e<=r;e++)for(let r=0,i=t.power();r<=i;r++){let i=this.m_elements[e].clone();i.mulThis(t.m_elements[r]),e+r<n.length?n[e+r].addThis(i):n.push(i)}this.m_elements=n}else for(let t=0,n=this.power();t<=n;t++)this.m_elements[t].mulThis(e);return this.updatePower(),this}mulElementThis(e){for(let t=0,n=this.power();t<=n;t++)this.m_elements[t].mulThis(e);return this.updatePower(),this}mulDoubleThis(e){for(let t=0,n=this.power();t<=n;t++)this.m_elements[t].mulDoubleThis(e);return this.updatePower(),this}mulNumber0(e){return r(0),this}mulBigint0(e){return r(0),this}mulBigIntThis(e){return r(0),this}mulInt320(e){return r(0),this}div0(e){return r(0),this}absThis(){return r(0),this}div(e,t,n){if(this.power()<e.power()){n.assignCopy(this),t.setZero();return}n.setZero(),t.setZero();let r=e.getElement(e.power()),i=this.clone(),a=i.power(),o=i.power()-e.power(),s=o;for(t.m_elements=H(t.m_zeroCtor,o+1);;){if(a<e.power()){n.assignMove(i);break}if(a===i.power()){let n=i.getElement(i.power());n.divThis(r),i.subShiftedWithCoef(e,n,i.power()-e.power()),t.m_elements[s]=n.clone()}s--,a--}n.updatePower(),t.updatePower()}divThis(e){return r(0),this}subThis(e){let t=Math.min(this.power(),e.power());for(let n=0;n<=t;++n)this.m_elements[n].subThis(e.m_elements[n]);let n=e.power();this.m_elements.length=Math.max(this.power(),e.power())+1;for(let r=t+1;r<=n;++r)this.m_elements[r]=e.m_elements[r].clone(),this.m_elements[r].negateThis();return this.updatePower(),this}sub0This(e){return this.m_elements[0].subThis(e),this.updatePower(),this}subFrom(e,t){r(0)}isZero(){return this.power()===0&&this.m_elements[0].isZero()}negateThis(){for(let e=this.m_elements.length-1;e>=0;e--)this.m_elements[e].negateThis();return this}getElement(e){return this.m_elements[e].clone()}setElement(e,t){return this.m_elements[e]=t.clone(),this}evaluate(e){let t=this.power(),n=this.m_elements[t].clone();for(let r=t-1;r>=0;--r)n.mulThis(e),n.addThis(this.m_elements[r]);return n}equals(e){if(this===e)return!0;if(this.power()!==e.power())return!1;for(let t=this.m_elements.length-1;t>=0;t--)if(!this.m_elements[t].equals(e.m_elements[t]))return!1;return!0}updatePower(){for(let e=this.m_elements.length-1;e>0&&this.m_elements[e].isZero();e--)this.m_elements.pop();return this}setZero(){return this.m_elements.length=1,this.m_elements[0]=new this.m_zeroCtor,this.updatePower(),this}derivative(e){if(this.power()<e)return this.clone().setZero();if(e===0)return this.clone();let t=new this.constructor({coefsT:this.m_elements.slice(e),power:this.power()-e});for(let n=e,r=this.power();n<=r;n++){let r=BigInt(n);for(let t=n-1,i=n-e;t>i;--t)r*=BigInt(t);t.m_elements[n-e].mulBigIntThis(r)}return t.updatePower(),t}derivative1This(){if(this.m_elements.length>1){this.m_elements=this.m_elements.slice(1);for(let e=1,t=this.power();e<=t;e++)this.m_elements[e].mulThis(I.constructInt32(e+1))}else this.m_elements.length=0,this.m_elements.push(new this.m_zeroCtor);return this}limitPrecisionThis(e){let t=this.power();for(let n=t;n>=0;--n)this.m_elements[n].limitPrecisionThis(e);return this.updatePower(),this}hiBitIndex(){return this.m_elements.reduce((e,t)=>{let n=t.hiBitIndex();return e<n?n:e},0)}shiftRight(e){return this.m_elements.splice(0,e),this.updatePower(),this}evaluateDerivative(e){let t=this.power(),n=this.m_elements[t];n.mulDoubleThis(t);for(let r=t-1;r>=1;--r){n.mulThis(e);let t=this.m_elements[r];t.mulDoubleThis(r),n.addThis(t)}return n}static evaluateCoefs(e,t,n){let r=e.power();n.construct0(e.getElement(0).evaluate(t));for(let i=1;i<=r;++i)n.addElement(e.getElement(i).evaluate(t));n.updatePower()}}class Y extends Fr{constructor(e){super(e===void 0?{zeroCtor:I}:{...e,zeroCtor:I})}clone(){return new Y({copy:this})}absEvaluate(e){let t=this.power(),n=this.m_elements[t].clone();n.absThis();let r=e.clone();r.absThis();for(let e=t-1;e>=0;--e)n.mulThis(r),n.addThis(this.m_elements[e].abs());return n}}class Ir extends Fr{constructor(e){super(e===void 0?{zeroCtor:Y}:{...e,zeroCtor:Y})}clone(){return new Ir({copy:this})}constructFromMPValues(e,t){this.m_elements.length=0;for(let n=0;n<=t;++n)this.m_elements.push(new Y({coef0:e[n]}));return this.updatePower(),this}}function Lr(){return{polypoly1:new Ir,polypoly2:new Ir,polyX2:new Y,polyY2:new Y,polyX2Deriv:new Y,polyY2Deriv:new Y,polypolyX1:new Ir,polypolyY1:new Ir,polypolyX1Deriv:new Ir,polypolyY1Deriv:new Ir,lazyPolypolyD1:new Ir,lazyPolypolyD1Deriv:new Ir,lazyPolyD2:new Y,lazyPolyD2Deriv:null,polypoly11:new Ir,polypoly12:new Ir,tempPp:new Ir,tempPp1:new Ir,tempPp2:new Ir,tempP:new Y,tempP1:new Y,tempP2:new Y}}function Rr(e,n,i,a,o,s,c,l,u,d,f,p,m,h,g,_,v,y,b,x=!1){let S=Lr();S.polyX2.construct(c,l),S.polyY2.construct(u,d),S.polypolyX1.constructFromMPValues(e,n),S.polypolyY1.constructFromMPValues(i,a),S.polypoly11.assignCopy(S.polypolyX1),S.polypoly12.assignCopy(S.polypolyY1),f&&(S.lazyPolyD2.construct(f,p),S.polypoly11.mulElementThis(S.lazyPolyD2),S.polypoly12.mulElementThis(S.lazyPolyD2)),o?(S.lazyPolypolyD1.constructFromMPValues(o,s),S.lazyPolypolyD1Deriv=new Ir({copy:S.lazyPolypolyD1}),S.lazyPolypolyD1Deriv.derivative1This(),S.tempPp.assignCopy(S.lazyPolypolyD1),S.tempPp.mulElementThis(S.polyX2),S.polypoly11.subThis(S.tempPp),S.tempPp.assignCopy(S.lazyPolypolyD1),S.tempPp.mulElementThis(S.polyY2),S.polypoly12.subThis(S.tempPp)):(S.polypoly11.sub0This(S.polyX2),S.polypoly12.sub0This(S.polyY2)),S.polypolyX1Deriv.assignCopy(S.polypolyX1),S.polypolyX1Deriv.derivative1This(),S.polypolyY1Deriv.assignCopy(S.polypolyY1),S.polypolyY1Deriv.derivative1This(),o&&(S.polypolyX1Deriv.mulThis(S.lazyPolypolyD1),S.tempPp2.assignCopy(S.lazyPolypolyD1Deriv),S.tempPp2.mulThis(S.polypolyX1),S.polypolyX1Deriv.subThis(S.tempPp2),S.polypolyY1Deriv.mulThis(S.lazyPolypolyD1),S.tempPp2.assignCopy(S.lazyPolypolyD1Deriv),S.tempPp2.mulThis(S.polypolyY1),S.polypolyY1Deriv.subThis(S.tempPp2)),S.polyX2Deriv.assignCopy(S.polyX2),S.polyX2Deriv.derivative1This(),S.polyY2Deriv.assignCopy(S.polyY2),S.polyY2Deriv.derivative1This(),f&&(r(S.lazyPolyD2Deriv===null),S.lazyPolyD2Deriv=new Y({copy:S.lazyPolyD2}),S.lazyPolyD2Deriv.derivative1This(),S.polyX2Deriv.mulThis(S.lazyPolyD2),S.tempP1.assignCopy(S.lazyPolyD2Deriv),S.tempP1.mulThis(S.polyX2),S.polyX2Deriv.subThis(S.tempP1),S.polyY2Deriv.mulThis(S.lazyPolyD2),S.tempP1.assignCopy(S.lazyPolyD2Deriv),S.tempP1.mulThis(S.polyY2),S.polyY2Deriv.subThis(S.tempP1)),S.polypoly1.assignCopy(S.polypoly11),S.polypoly1.mulElementThis(S.polyX2Deriv),S.tempPp.assignCopy(S.polypoly12),S.tempPp.mulElementThis(S.polyY2Deriv),S.polypoly1.addThis(S.tempPp),S.polypoly2.assignCopy(S.polypolyX1Deriv),S.polypoly2.mulElementThis(S.polyY2Deriv),S.tempPp.assignCopy(S.polypolyY1Deriv),S.tempPp.mulElementThis(S.polyX2Deriv),S.polypoly2.subThis(S.tempPp);let C=[],w=[];v||=[],_||=[],Jr(S.polypoly11,S.polypoly12,S.tempP);let T=Me.ldexp(-59).toDouble(),E=[],D=Yr(S.tempP,m,g,T,64,E,y,y);if(D<0)return-1;for(let e=0;e<D;e++){let n=S.tempP1,i=S.tempP2;Y.evaluateCoefs(S.polypoly11,E[e],n);let a=dt(n.m_elements,n.power()+1);a.sort((e,t)=>e.compare(t)),Y.evaluateCoefs(S.polypoly12,E[e],i);let o=dt(i.m_elements,i.power()+1);o.sort((e,t)=>e.compare(t));let s=a[0],c=a.at(-1),l=o[0],u=o.at(-1);c.subThis(s),u.subThis(l);let d=c.subThis(u).GEZ(),f=Me.ldexp(-59).toDouble(),p=[],g;if(g=Yr(d?n:i,m,h,f,58,p,y,y),g<0&&t(`mp_curve_proximity`),g>0){let t=d?i:n;for(let n=0;n<g;n++){let i;if(d){let t=S.tempP;Y.evaluateCoefs(S.polypoly12,E[e].addDouble(2**-52),t),i=t.evaluate(p[n])}else{let t=S.tempP;Y.evaluateCoefs(S.polypoly11,E[e].addDouble(2**-52),t),i=t.evaluate(p[n])}let a=t.evaluateDerivative(p[n]).abs().mulDoubleThis(2**-52),o=t.evaluate(p[n]);a.addThis(i.sub(o).absThis()),a.ldexpThis(3),o.absThis(),o.lt(a)?w.push(We(p[n].toDouble(),E[e].toDouble())):r(o.gte(a))}}}D=w.length,Jr(S.polypoly1,S.polypoly2,S.tempP);let O=[],k=Yr(S.tempP,m,g,T,64,O);k<0&&(k=0);for(let e=0;e<k;e++){Y.evaluateCoefs(S.polypoly1,O[e],S.tempP1);let t=[],n=Yr(S.tempP1,m,h,T,64,t);if(n!==0){if(Y.evaluateCoefs(S.polypoly2,O[e],S.tempP2),n<0){if(n=Yr(S.tempP2,m,h,T,64,t),n<0)continue;for(let r=0;r<n;r++)C.push(We(t[r].toDouble(),O[e].toDouble()))}else{let r=S.tempP2.absEvaluate(Me);r.mulThis(I.constructDouble(1e-12));for(let i=0;i<n;i++){let n=S.tempP2.evaluate(t[i]);n.absThis(),n.lt(r)&&C.push(We(t[i].toDouble(),O[e].toDouble()))}}}}if(k=C.length,D===0&&k===0)return 0;C=C.concat(w),C.sort((e,t)=>x?Qe(e.second,t.second):Qe(e.first,t.first));let ee=ft(C,(e,t)=>e.first===t.first&&e.second===t.second);C=C.slice(0,ee),_.length=0,v.length=0;for(let e of C)_.push(e.first),v.push(e.second);return r(_.length===v.length),v.length}function zr(e,t,n,r,i,a,o){if(e.power()===0)return e.isZero()?-1:0;let s=e.evaluate(I.constructInt32(1)).isZero();if(e.power()===1){let n=Hr(e.getElement(1),e.getElement(0),t,a.at(0));return a[0].limitPrecisionThis(r),n===1?(a[0].limitPrecisionThis(r),1):0}return e.power()===2?Ur(e.getElement(2),e.getElement(1),e.getElement(0),r,t,s,a):e.power()===3?Wr(e.getElement(3),e.getElement(2),e.getElement(1),e.getElement(0),r,t,s,a):e.power()===4?Gr(e.getElement(4),e.getElement(3),e.getElement(2),e.getElement(1),e.getElement(0),r,t,s,a):ei(e,t,n,r,s,i,a,o)}function Br(){return{polyIntersect:new Y,polyX1:new Y,polyY1:new Y,polyX1Deriv:new Y,polyY1Deriv:new Y,lazyPolyD1:new Y,lazyPolyD1Deriv:new Y,tempP:new Y,tempP1:new Y,tempP2:new Y,polypoly1Proximity:new Ir,polypoly2Proximity:new Ir}}function Vr(e,t,n,r,i,a,o,s,c,l,u,d,f){let p=Br();p.polyX1.construct(e,t),p.polyY1.construct(n,r),p.polyX1Deriv.assignCopy(p.polyX1),p.polyX1Deriv.derivative1This(),p.polyY1Deriv.assignCopy(p.polyY1),p.polyY1Deriv.derivative1This(),p.polyIntersect.assignCopy(p.polyX1),p.polyIntersect.mulThis(p.polyX1),p.polyIntersect.mulElementThis(o[0]),p.tempP.assignCopy(p.polyY1),p.tempP.mulThis(p.polyY1),p.tempP.mulElementThis(o[1]),p.polyIntersect.addThis(p.tempP),i?(p.lazyPolyD1.construct(i,a),p.tempP.assignCopy(p.lazyPolyD1),p.tempP.mulThis(p.lazyPolyD1),p.tempP.mulElementThis(o[2]),p.polyIntersect.addThis(p.tempP)):p.polyIntersect.add0(o[2]);{let i=o[0].clone(),a=i.clone();a.sqrThis();let s=o[1].clone(),c=s.clone();c.sqrThis();let l=o[2].clone(),u=i.clone();u.subThis(s),p.polyX1.construct(e,t),p.polyX1Deriv.assignCopy(p.polyX1),p.polyX1Deriv.derivative1This(),p.polyY1.construct(n,r),p.polyY1Deriv.assignCopy(p.polyY1),p.polyY1Deriv.derivative1This(),p.tempP.assignCopy(p.polyX1),p.tempP.mulThis(p.polyX1),p.tempP.mulElementThis(c),p.tempP.mulElementThis(l),p.polypoly1Proximity.construct0(p.tempP),p.tempP.assignCopy(p.polyX1),p.tempP.mulThis(s.mul(u).mul(l).ldexpThis(1)),p.polypoly1Proximity.addElement(p.tempP),p.tempP.assignCopy(p.polyX1),p.tempP.mulThis(p.polyX1),p.tempP.mulElementThis(i.mul(c)),p.tempP1.assignCopy(p.polyY1),p.tempP1.mulThis(p.polyY1),p.tempP1.mulElementThis(a.mul(s)),p.tempP.addThis(p.tempP1),p.tempP.add0(u.mul(u).mul(l)),p.polypoly1Proximity.addElement(p.tempP),p.tempP.assignCopy(p.polyX1),p.tempP.mulElementThis(u.mul(i).mul(s).ldexpThis(1)),p.polypoly1Proximity.addElement(p.tempP),p.tempP.construct0(i.mul(u).mul(u)),p.polypoly1Proximity.addElement(p.tempP),p.polypoly1Proximity.updatePower(),p.tempP.construct0(ut),p.polypoly2Proximity.construct0(p.tempP),p.tempP.assignCopy(p.polyX1),p.tempP.mulThis(p.polyX1Deriv),p.tempP1.assignCopy(p.polyY1),p.tempP1.mulThis(p.polyY1Deriv),p.tempP.addThis(p.tempP1),p.tempP.mulElementThis(i.mul(s)),p.polypoly2Proximity.addElement(p.tempP),p.tempP.assignCopy(p.polyX1Deriv),p.tempP.mulElementThis(u.mul(i)),p.polypoly2Proximity.addElement(p.tempP),p.polypoly2Proximity.updatePower()}let m=[],h=[];u===null&&(u=[]);let g=2*p.polyIntersect.power()+58,_=2**-52*.5,v=[],y=Yr(p.polyIntersect,s,c,_,g,v,d,d);if(y<0)return-1;for(let e of v)h.push(e.toDouble());Jr(p.polypoly1Proximity,p.polypoly2Proximity,p.tempP),g=2*p.tempP.power()+58,v.length=0;let b=Yr(p.tempP,s,c,_,g,v);if(b<0&&(b=0),y===0&&b===0)return 0;for(let e of v)m.push(e.toDouble());let x=m.concat(h);u.length=x.length,he(u,x,0,0,x.length),tt(u);let S=ft(u,(e,t)=>Qe(e,t)===0);return u.length=S,u.length}function Hr(e,t,n,r){return e.isZero()?t.isZero()?-1:0:(r.setThis(t),r.negateThis(),r.divThis(e),n.isEmpty()?1:+!!n.containsCoordinate(r.value()))}function Ur(e,t,n,r,i,a,o){if(e.isZero())return a?(o[0].setInt32(1),+!!i.containsCoordinate(1)):Hr(t,n,i,o[0]);if(a){let t=2;return o[0].setInt32(1),n.equals(e)?(o[1].setInt32(1),t=1):o[1].setThis(n.div(e)),i.containsCoordinate(o[1].value())||(t=1),i.containsCoordinate(o[0].value())||(t--,o[0].setThis(o[1])),t===2&&o[0].value()>o[1].value()&&(o[1]=z(o[0],o[0]=o[1])),t}let s=t.clone();s.sqrThis();let c=e.clone();if(c.mulThis(n).ldexpThis(2).negateThis().addThis(s),c.LZ())return 0;let l=r+2,u=I.sqrt(c,l),d=u.clone();t.LZ()&&d.negateThis(),d.addThis(t).limitPrecisionThis(l).ldexpThis(-1).negateThis();let f=0;return o[0].setThis(d).divThis(I.constructAssign(e,l)).limitPrecisionThis(r),(i.isEmpty()||i.containsCoordinate(o[0].value()))&&f++,!u.isZero()&&!d.isZero()?(o[f].setThis(n).divThis(d).limitPrecisionThis(r),(i.isEmpty()||i.containsCoordinate(o[f].value()))&&f++,f===2&&o[0].gt(o[1])&&(o[1]=z(o[0],o[0]=o[1])),f):f}function Wr(e,t,n,i,a,o,s,c){if(e.isZero())return Ur(t,n,i,a,o,s,c);let l=(e,t)=>{if(e>0){let n=t+e;for(let e=1;e<n;e++)c[e].equals(c[0])&&(c[n-1]=z(c[e],c[e]=c[n-1]),n--);t=n}return Ee(c,0,t,(e,t)=>e.compare(t)),t};if(i.isZero()){let r=0;return o.containsCoordinate(0)&&(c[0].setInt32(0),r=1),l(Ur(e,t,n,a,o,s,c.slice(1)),r)}if(s){let n=0;o.containsCoordinate(1)&&(c[0].setInt32(1),n=1);let r=t.add(e),s=i.negate();return l(Ur(e,r,s,a,o,e.add(r).add(s).isZero(),c.slice(n)),n)}let u=new I,d=new I,f=new I,p=t.clone();if(p.isZero())d.setThis(n),d.divThis(e),f.setThis(i),f.divThis(e);else{p.divThis(e).divDoubleThis(3).negateThis();let r=t.clone();r.sqrThis();let a=e.clone();a.sqrThis(),d.setThis(e),d.mulThis(n).mulDoubleThis(3).subThis(r).divThis(a).divDoubleThis(3),f.setThis(r),f.mulThis(t),f.ldexpThis(1),u.setThis(e),u.mulThis(t).mulThis(n).mulDoubleThis(9),f.subThis(u),u.setThis(a),u.mulThis(i).mulDoubleThis(27),f.addThis(u),f.divThis(a).divThis(e).divDoubleThis(27)}if(d.isZero()){let e=f.clone();return e.negateThis(),e.isZero()?(c[0].setThis(p),ni(o,a,c,1)):(c[0].setThis(I.cubicRoot(e,a).add(p)),ni(o,a,c,1))}let m=f.clone();if(m.sqrThis().ldexpThis(-2),u.setThis(d.clone()),u.sqrThis().mulThis(d).divDoubleThis(27),m.addThis(u),m.isZero())return c[0].setThis(f),c[0].mulDoubleThis(3).divThis(d),c[1].setThis(c[0]),c[1].negateThis(),c[1].ldexpThis(-1),c[0].addThis(p),c[1].addThis(p),ni(o,a,c,2);if(m.GZ())return m.setThis(I.sqrt(m,a+8)),u.setThis(f),u.ldexpThis(-1).negateThis(),u.addThis(m),c[0].setThis(I.cubicRoot(u,a+8)),u.setThis(f),u.ldexpThis(-1).negateThis(),u.subThis(m),c[0].addThis(I.cubicRoot(u,a+8)),c[0].addThis(p),ni(o,a,c,1);u.setThis(d),u.divDoubleThis(3).negateThis(),r(u.GEZ());let h=I.sqrt(u,a+8),g=h.clone();g.negateThis(),g.addThis(p),h.addThis(p);let _=I.constructDouble(o.isEmpty()?-Number.MAX_VALUE:o.vmin),v=I.constructDouble(o.isEmpty()?Number.MAX_VALUE:o.vmax),y=new Y({zeroCtor:I});y.construct0(i),y.addElement(n),y.addElement(t),y.addElement(e);let b=new Y({copy:y});b.derivative1This();let x=0,S=H(I,4);S[x++].setThis(_),g.gt(_)&&g.lt(v)&&S[x++].setThis(g),h.gt(_)&&h.lt(v)&&S[x++].setThis(h),S[x++].setThis(v);let C=a*3,w=52,T=2**-52;for(;w<C;)2*w<=C?(T*=T,w*=2):(T*=2**-52,w+=52);w+=2;let E=0,D=!1;for(let e=1;e<x;e++)if(Qr(y,b,S[e-1],S[e],T,w,c[0])){E=1,D=e+1<x;break}if(!E)return 0;if(D){let e=new Y({zeroCtor:I,coef0:c[0]});e.negateThis(),e.addElement(Me);let t=new Y({zeroCtor:I}),n=new Y({zeroCtor:I});y.div(e,t,n),r(t.power()===2),r(n.power()===0);let i=Ur(t.getElement(2),t.getElement(1),t.getElement(0),a,o,!1,c.slice(1));r(i>=0&&i<=2),E+=i}return ni(o,a,c,E)}function Gr(e,t,n,r,i,a,o,s,c){if(e.isZero())return Wr(t,n,r,i,a,o,s,c);let l=(e,t)=>{if(e>0){let n=t+e;for(let e=1;e<n;e++)c[e].equals(c[0])&&(c[n-1]=z(c[e],c[e]=c[n-1]),n--);t=n}return Ee(c,0,t,(e,t)=>e.compare(t)),t};if(i.isZero()){let i=0;return o.containsCoordinate(0)&&(c[0].setInt32(0),i=1),l(Wr(e,t,n,r,a,o,s,c.slice(i)),i)}let u=new Y({zeroCtor:I,coef0:i});if(u.addElement(r),u.addElement(n),u.addElement(t),u.addElement(e),s){let e=0;o.containsCoordinate(1)&&(c[0].setInt32(1),e=1);let t=new Y({zeroCtor:I,coef0:I.constructInt32(-1)});t.addElement(I.constructInt32(1));let n=new Y({zeroCtor:I}),r=new Y({zeroCtor:I});return u.div(t,n,r),l(Wr(n.power()===3?n.getElement(3):ut.clone(),n.power()>=2?n.getElement(2):ut.clone(),n.power()>=1?n.getElement(1):ut.clone(),n.getElement(0),a,o,n.evaluate(Me).isZero(),c.slice(e)),e)}if(u.getElement(0).isZero()){let e=0;for(o.containsCoordinate(0)&&(e=1,c[0].setDouble(0));u.getElement(0).isZero()&&u.power()>0;)u.shiftRight(1);let t=Wr(u.power()===3?u.getElement(3):ut.clone(),u.power()>=2?u.getElement(2):ut.clone(),u.power()>=1?u.getElement(1):ut.clone(),u.getElement(0),a,o,!1,c.slice(e));return t>0&&(e+=t),Ee(c,0,e,(e,t)=>e.compare(t)),e}let d=52,f=2**-52;for(;d<a;)2*d<=a?(f*=f,d*=2):(f*=2**-52,d+=52);d+=2;let p=ti(u),m=I.constructDouble(Math.max(Math.abs(o.vmax),Math.abs(o.vmin)));return f=(p.lt(m)?p:m).mul(I.constructDouble(f)).toDouble(),ei(u,o,f,d,s,!1,c,4)}function Kr(e,t){let n=e,r=t;r.power()>n.power()&&(r=z(n,n=r));let i=n.power()-r.power(),a=new Y({copy:n.getElement(n.power())});n.mulThis(r.getElement(r.power()));for(let e=0,t=n.power();e<t;e++)if(e>=i){let t=new Y({copy:r.getElement(e-i)});t.mulThis(a);let o=n.getElement(e).sub(t);n.setElement(e,o)}n.setElement(n.power(),n.getElement(n.power()).setZero()),n.updatePower(),qr(n)}function qr(e){let t=0;for(;t<e.power()&&e.getElement(t).isZero();)t++;return t>0&&(e.shiftRight(t),!0)}function Jr(e,t,n){let r=e.clone(),i=t.clone();for(qr(r),qr(i);r.power()!==0||i.power()!==0;)Kr(r,i);n.assignMove(r.getElement(0))}function Yr(e,t,n,r,i,a,o=!1,s=!1){a.length=0;let c=e.power(),l=H(I,2*c+4),u=zr(e,n||R.unit(),r,i,!1,l,l.length);if(u>0){a.length=0;for(let e=0;e<u;e++){let t=l[e];e>0&&t.lte(a.at(-1))||a.push(t.clone())}return a.length}return u}function Xr(e,t,n){if(r(n>=1),e.power()===0)return e.isZero()?-1:0;let i=e.getElement(0);return i.negateThis(),i.divThis(e.getElement(1)),t[0].setThis(i),1}function Zr(e,t,n,i){if(e.power()<2)return Xr(e,n,i);r(i>=1);let a=e.getElement(1);a.mulThis(e.getElement(1));let o=e.getElement(0);if(o.mulThis(e.getElement(2)),o.ldexpThis(2),a.subThis(o),a.LZ())return 0;if(a.isZero()){let r=e.getElement(1);return r.negateThis(),r.divThis(e.getElement(2)),r.ldexpThis(-1),r.limitPrecisionThis(t),n[0].setThis(r),1}r(i>=2),a=I.sqrt(a,t+8);let s=e.getElement(1);s.negateThis();let c=s.clone();c.subThis(a),c.divThis(e.getElement(2)),c.ldexpThis(-1),c.limitPrecisionThis(t);let l=s.clone();return l.addThis(a),l.divThis(e.getElement(2)),l.ldexpThis(-1),l.limitPrecisionThis(t),c.lt(l)?(n[0].setThis(c),n[1].setThis(l)):(n[1].setThis(c),n[0].setThis(l)),2}function Qr(e,n,r,i,a,o,s){let c=r.clone(),l=i.clone();c.limitPrecisionThis(o),l.limitPrecisionThis(o);let u=e.evaluate(c);u.limitPrecisionThis(o+2);let d=e.evaluate(l);if(d.limitPrecisionThis(o+2),u.GEZ()&&d.GEZ()||u.LEZ()&&d.LEZ())return u.absLessAbs(d)?(s=c,u.isZero()):(s=l,d.isZero());let f=d.LZ();f&&(d=z(u,u=d),l=z(c,c=l));let p=f?l:c,m=f?c:l,h=c.add(l).ldexpThis(-1);h.limitPrecisionThis(o);let g=l.sub(c);g.limitPrecisionThis(o),g.absThis();let _=g.clone(),v=e.evaluate(h),y=n.evaluate(h),b=new Y({copy:e}),x=new Y({copy:n});{let t=Math.max(e.hiBitIndex(),n.hiBitIndex()),r=Me.clone();r.ldexpThis(-(o+2));for(let i=64;i<t;){b.limitPrecisionThis(i),x.limitPrecisionThis(i);let a=b.evaluate(h),o=x.evaluate(h),s=a.sub(v),c=o.sub(y);if(s.divThis(v).absThis().lt(r)&&(y.isZero()||c.divThis(y).absThis().lt(r)))break;b.assignCopy(e),x.assignCopy(n),i=Math.min(i+64,t)}v.limitPrecisionThis(o+2),y.limitPrecisionThis(o+2)}let S=4,C=1,w=0,T=0,E=1,D=I.constructDouble(a*.25),O=I.constructDouble(.5001),k=0;for(;++k<300;){if(k>32&&w>0||y.isZero()||E===2&&w>1||E===1&&S<4)E=1,C>1&&C--;else if(E=2,T>1){let e=g.mul(y);e.absThis(),e.ldexpThis(-3),e.absLessAbs(v)&&C++}g.setThis(_);let e=new I,t=!1;if(E===1)do{if(T>2){let t=g.clone();if(t.absThis(),t.ldexpThis(4),m.sub(p).ldexpThis(-1).gt(t)){if(h.equals(p)){e.setThis(h),h.setThis(p.add(t)),h.limitPrecisionThis(o),_.setThis(h.sub(e));break}if(h.equals(m)){e.setThis(h),h.setThis(m.sub(t)),h.limitPrecisionThis(o),_.setThis(h.sub(e));break}}}_.setThis(l.sub(c)),_.ldexpThis(-1),_.limitPrecisionThis(o),e.setThis(h),h.setThis(c.add(_)),h.limitPrecisionThis(o),h.lt(p)?h.setThis(p):h.gt(m)&&h.setThis(m),t=c.equals(h)||l.equals(h)}while(0);else for(;;){if(_.setThis(v.div(y)),_.limitPrecisionThis(o),C!==1&&_.mulDoubleThis(C),e.setThis(h),h.subThis(_),h.limitPrecisionThis(o),t=h.equals(e),h.lt(p)){if(C>1){h.setThis(e),C--;continue}_.setThis(e.sub(p)),h.setThis(p)}else if(h.gt(m)){if(C>1){h.setThis(e),C--;continue}_.setThis(e.sub(m)),h.setThis(m)}break}if(t||_.absLessAbs(D)){e.equals(h)||(v=b.evaluate(h),v.limitPrecisionThis(o+2));break}v=b.evaluate(h),v.limitPrecisionThis(o+2),y=x.evaluate(h),y.limitPrecisionThis(o+2);let n=c.clone(),r=l.clone();v.LZ()?(u.setThis(v),c.setThis(h)):(d.setThis(v),l.setThis(h)),E===2&&(c.equals(n)&&l.equals(r)||T>1&&!_.absLessAbs(O.mul(g)))?w++:w=0,E===1?(S++,T=0):(S=0,T++)}return k>=300&&t(`Root_finder iterations exceeded`),s.setThis(h),!0}function $r(e,t,n,r,i){let a=e.evaluate(n);if(a.isZero())return!0;let o=I.constructDouble(r*.5),s=n.clone();s.subThis(o);let c=e.evaluate(s),l=n.clone();l.addThis(o);let u=e.evaluate(l);if(c.LZ()&&u.GZ()||c.GZ()&&u.LZ()||(a.GZ()?c.LEZ()||u.LEZ():c.GEZ()||u.GEZ()))return!0;let d=c.LEZ()&&u.LEZ(),f=c.GEZ()&&u.GEZ(),p=!1;return d?a.gt(c)&&a.gt(u)&&(p=!0):f&&a.lt(c)&&a.lt(u)&&(p=!0),p?a.absThis().lt(I.constructDouble(1e-17)):!1}function ei(e,t,n,i,a,o,s,c){r(n>0),r(c>=e.power());let l=s,u=[],d=[],f=new Y({zeroCtor:e.m_zeroCtor}),p=new Y({zeroCtor:e.m_zeroCtor}),m=new Y({zeroCtor:e.m_zeroCtor}),h=I.constructDouble(n),g=I.constructDouble(t.vmin),_=I.constructDouble(t.vmax),v=g.sub(h),y=_.add(h),b=ti(e),x=b.clone();if(x.negateThis(),v.lt(x))v.setThis(x.sub(h));else if(v.gt(b))return 0;if(y.gt(b))y.setThis(b.add(h));else if(y.lt(x))return 0;let S=e,C=null;if(a){let t=new Y({coef0:I.constructInt32(-1)});t.addElement(Me),C=new Y,S=C;let n=new Y,r=new Y;for(e.div(t,n,r),C.assignCopy(n);S.evaluate(Me).isZero();)S.div(t,n,r),C.assignCopy(n)}let w=!1;if(S.power()>0&&S.getElement(0).isZero())for(w=!0,C||(C=new Y({copy:S}),S=C);S.getElement(0).isZero();)C.shiftRight(1);let T=i+S.power()*2+2,E=n/2**(S.power()+2),D=T;if(ut.gt(v)&&ut.lt(y)){for(let e=0,t=S.power();e<t;e++)if(S.getElement(e).isZero()){u.push(ut.clone());break}}for(let e=S.power()-1;e>0;e--){if(E*=2,T-=2,D-=2,S.power()-e===1){p.assignMove(S.derivative(e)),Xr(p,l,c)===1&&(l[0].gt(v)&&l[0].lt(y)&&!l[0].isZero()&&u.push(l[0].clone()),f.assignMove(p),m.assignMove(S.derivative(e-1)));continue}if(S.power()-e===2){p.assignMove(S.derivative(e));let t=Zr(p,T,l,c);r(t>=0&&t<=2);for(let e=0;e<t;e++)l[e].gt(v)&&l[e].lt(y)&&!l[e].isZero()&&u.push(l[e].clone());if(u.length>1&&u.sort((e,t)=>e.compare(t)),u.length>0){let e=u[0].sub(h);e.limitPrecisionThis(D),d.push(We(v.clone(),e));let t=u.length===1?y.clone():u[1].sub(h);e=u[0].add(h),e.limitPrecisionThis(D),t.limitPrecisionThis(D),d.push(We(e,t)),u.length>1&&(t=u.length===2?y.clone():u[2].sub(h),t.limitPrecisionThis(D),e=u[1].add(h),e.limitPrecisionThis(D),d.push(We(e,t)),u.length>2&&(e=u[2].add(h),e.limitPrecisionThis(D),d.push(We(e,y.clone()))))}else d.push(We(v.clone(),y.clone()));f.assignCopy(p),m.assignMove(S.derivative(e-1));continue}{p.assignMove(m),m.assignMove(S.derivative(e-1));let t=[];for(let e=0,n=d.length;e<n;++e)if(d[e].first.lte(d[e].second)){let n=new I;if(Qr(p,f,d[e].first,d[e].second,E,T,n)){u.push(n);let r=n.sub(h);r.limitPrecisionThis(D),t.push(We(d[e].first,r)),r=n.add(h),r.limitPrecisionThis(D),t.push(We(r,d[e].second))}else t.push(d[e])}d=t,t=[],f.assignMove(p)}}u.sort((e,t)=>e.compare(t)),d.length===0&&(f.assignMove(S.derivative(S.power())),f.isZero()||d.push(We(v.clone(),y.clone())));let O=0,k=0,ee=0,A=new I;for(;;){if(k<d.length){if(d[k].first.gt(d[k].second)){k++;continue}let e=!1;if(ee<u.length&&u[ee].lt(d[k].first)&&(e=!0),!e){Qr(S,f,d[k].first,d[k].second,n,i,A)&&(A.lt(g)?l[O++].setThis(g):A.gt(_)?l[O++].setThis(_):l[O++].setThis(A)),k++;continue}}if(ee<u.length){(ee===0||!u[ee-1].equals(u[ee]))&&$r(S,f,u[ee],n)&&(A.setThis(u[ee]),A.lt(g)?A.setThis(g):A.gt(_)&&A.setThis(_),(O===0||!l[O].equals(A))&&l[O++].setThis(A)),ee++;continue}break}return w&&ut.gt(v)&&ut.lt(y)&&(l[O++].setThis(ut),Ee(l,0,O,(e,t)=>e.compare(t))),a&&Me.gt(v)&&Me.lt(y)&&(l[O++].setThis(Me),Ee(l,0,O,(e,t)=>e.compare(t))),O}function ti(e){let t=e.getElement(e.power());t.limitPrecisionThis(53),t.absThis();let n=ut.clone();for(let t=0,r=e.power();t<r;t++){let r=e.getElement(t);r.limitPrecisionThis(53),r.gt(n)&&n.setThis(r)}return n.divThis(t),n.addThis(Me),n.mulThis(I.constructDouble(1+2**-52*100)),n}function ni(e,t,n,r){let i=r;if(!e.isEmpty()){i=0;for(let t=0;t<r;++t)e.containsCoordinate(n[t].value())&&(i!==t&&n[i].setThis(n[t]),i++)}i>1&&(n[0].gt(n[1])&&(n[1]=z(n[0],n[0]=n[1])),i>2&&(n[0].gt(n[2])&&(n[2]=z(n[0],n[0]=n[2])),n[1].gt(n[2])&&(n[2]=z(n[1],n[1]=n[2]))));for(let e=0;e<i;++e)n[e].limitPrecisionThis(t);return i}function ri(e,t,n,r,i,a){return oi(e,t,n,a,r,i)}function ii(e,t,n,r,i,a){let o=i;if(r)return a[0]=1,o=.5*(t-e)*(n(e)+n(t)),o;let s=a[0],c=(t-e)/s,l=e,u=new De(0);for(let e=1;e<=a[0];++e){let t=(e-.5)*c;u.add(n(l+t))}return o=.5*(o+(t-e)*u.getResult()/s),a[0]*=2,o}function ai(e,t,n,r,i,a,o){let s=0,c=Math.abs(i-n[e]),l=L(t,NaN),u=L(t,NaN);for(let a=0;a<t;++a){let t=Math.abs(i-n[e+a]);t<c&&(s=a,c=t),l[a]=r[e+a],u[a]=r[e+a]}let d=0,f=0,p=0;a[0]=r[e+s],s--;for(let r=1;r<t;r++){for(let a=0;a<t-r;a++){if(f=n[e+a]-i,p=n[e+a+r]-i,d=f-p,d===0)return!1;let t=(l[a+1]-u[a])/d;l[a]=f*t,u[a]=p*t}2*(s+1)<t-r?o[0]=l[s+1]:(o[0]=u[s],s--),a[0]+=o[0]}return!0}function oi(e,n,r,a,o,s){if(r<n&&i(`xTo < xFrom`),r===n)return 0;let c=[0],l=Number.MAX_VALUE,u=[Number.MAX_VALUE],d=0,f=L(33,NaN),p=L(33,NaN),m=[0];f[0]=1;let h=0,g=0;for(let i=0;i<32;i++){if(d=ii(n,r,a,i===0,d,m),p[i]=d,i+1>=e){ai(i+1-e,e,f,p,0,c,u)||t(`polynomial_interpolation`);let n=o*Math.abs(c[0])+s,r=Math.abs(l-c[0]);if(r<=n&&Math.abs(u[0])<=n){if(h++,h>1&&(r<=.1*g||g===0||h>2))return c[0]}else h=0;g=r,l=c[0]}p[i+1]=p[i],f[i+1]=.25*f[i]}return c[0]}class si{specialPoints;specialPointsLength;area;centroid_x;centroid_y;constructor(){this.area=NaN,this.centroid_x=NaN,this.centroid_y=0,this.specialPoints=[],this.specialPointsLength=[]}specialPointsCount(){return this.specialPoints.length}}let ci=class{b;len;constructor(e,t){this.b=e,this.len=t}getMaxDerivative(){return 1}getValue(e,t){return e===0?this.len-mi(this.b,t,!1):0}getError(e){return r(0),0}};function li(e,t,n,r,i){let a=!0,o=H(P,3);e.queryControlPoints(o);let s=+!a,c=o[1][s]-o[0][s],l=o[2][s]-o[0][s],u=ri(5,t,n,r,i,e=>{let t;if(e<=.5){let n=Pe(0,c,e),r=Pe(c,l,e);t=Pe(n,r,e)}else{let n=Fe(0,c,e),r=Fe(c,l,e);t=Fe(n,r,e)}let n=yi(o,1,e);return t*n.length()});a=!1,s=+!a,c=o[1][s]-o[0][s],l=o[2][s]-o[0][s];let d=ri(5,t,n,r,i,e=>{let t;if(e<=.5){let n=Pe(0,c,e),r=Pe(c,l,e);t=Pe(n,r,e)}else{let n=Fe(0,c,e),r=Fe(c,l,e);t=Fe(n,r,e)}let n=yi(o,1,e);return t*n.length()});return new P(u,d)}function ui(e){e.m_cachedValues=null}function di(e,t){t.m_cachedValues=z(e.m_cachedValues,e.m_cachedValues=t.m_cachedValues)}function fi(e){if(e.m_cachedValues)return e.m_cachedValues;let t=new si;return pi(e,t.specialPoints),Ei(e,t),t}function pi(e,t){let n=H(P,3);e.queryControlPoints(n);let r=H(V,8);r[0].set(0);let i=1;{let e=H(V,3);Ji(n,e,!1);let t=H(V,2),a=new R(0,1),o=yr(e[2].mul(2),e[1],a,t[0]);o<0&&(o=0);for(let e=0;e<o;e++)U(t[e].value(),0,1)||(r[i]=t[e],i++)}{let e=H(V,3);Yi(n,e,!1);let t=H(V,2),a=new R(0,1),o=yr(e[2].mul(2),e[1],a,t[0]);o<0&&(o=0);for(let e=0;e<o;e++)U(t[e].value(),0,1)||(r[i]=t[e],i++)}if(r[i].set(1),i++,i>2){Ee(r,0,i,(e,t)=>e.value()-t.value());let e=0,t=r[0].value(),n=1;for(let a=1;a<i;a++){if(r[a].eq(r[a-1])){t+=r[a].value(),n++;continue}n>1&&(t/=n,r[e].set(t)),e++,r[e]=r[a],t=r[a].value(),n=1}e++,i=e}r[0].set(0),r[i-1].set(1),t.length=i;for(let e=0;e<i;e++)t[e]=r[e].value()}function mi(e,t,n){let r=H(P,3);return e.queryControlPoints(r),hi(r,t,n)}function hi(e,t,n){if(n){if(t<0)return t;if(t>1)return t-1+hi(e,1,!1)}if(t===1)return gi(e);let r=H(P,3);return Ii(e,t,r,null),gi(r)}function gi(e){if(e[0].equals(e[1]))return P.distance(e[2],e[0]);if(e[1].equals(e[2]))return P.distance(e[0],e[2]);let t=P.distance(e[0],e[1])+P.distance(e[2],e[1]),n=P.distance(e[0],e[2]);if(t-n<=t*2**-52)return n;let r=H(P,3);Ki(e,r,!0);let i=4*(Ze(r[2].x)+Ze(r[2].y)),a=2*(r[2].x*r[1].x+r[2].y*r[1].y),o=Ze(r[1].x)+Ze(r[1].y);if((Math.abs(a)+Math.abs(o))*1e-14>=Math.abs(i))return Math.abs(o)*1e-14>=Math.abs(a)?Math.sqrt(o)*1:2/(3*a)*((a*1+o)**1.5-o**1.5);let s=a/i,c=o/i,l=c-s*s,u=1+s;if(l===0)return s>=0&&u>=0||s<=0&&u<=0?Math.abs(Math.sqrt(i)*.5*(u*u-s*s)):Math.sqrt(i)*.5*(u*u+s*s);let d=Math.sqrt(l+u*u),f=Math.sqrt(c);return Math.sqrt(i)*.5*(u*d-s*f+l*Math.log(Math.abs((u+d)/(s+f))))}function _i(e,t){let n=xe(t,0,1),r=yi(e,1,n);return r.isZero()&&(r=yi(e,2,n)),r}function vi(e,t,n){let r=H(P,3);return e.queryControlPoints(r),yi(r,t,n)}function yi(e,t,n){if(t===1){let t=e[1].sub(e[0]).mul(1-n).add(e[2].sub(e[1]).mul(n));return t.mulThis(2),t}return t===2?e[2].sub(e[1]).sub(e[1].sub(e[0]).mul(2)):P.construct(0,0)}function bi(e,t,n){{let t=K.constructPoint2D(e[1]).subE(K.constructPoint2D(e[0])),r=new V(1).subE(n),i=K.constructPoint2D(e[2]).subE(K.constructPoint2D(e[1])),a=t.mulE(r).addE(i.mulE(n));return a.mulThisE(new V(2)),a}}function xi(e,n,r){let i=mi(e,1,!1);if(n<=0)return n;if(n>=i)return n-i+1;let a=new ci(e,n),o=[0];return cr(a,R.unit(),1,o)!==1&&t(``),o[0]}function Si(e){let t=H(P,3);return e.queryControlPoints(t),Ci(t)}function Ci(e){return-e[1].sub(e[0]).crossProduct(e[2].sub(e[0]))/3}function wi(e){let t=P.distance(e.getStartXY(),e.getEndXY()),n=e.calculateUpperLength2D(),r=2**-52*8*n;return n-t<=r}function Ti(e){return e.m_cachedValues}function Ei(e,t){e.m_cachedValues=t}function Di(e,t,n,r,i){h(R.unit().contains(n),`QuadraticBezierHelper::getClosestCoordinateSegment`);let a=H(P,3);e.queryControlPoints(a);let o=Number.MAX_VALUE,s=[0],c=Oi(a,t,s);if(n.containsCoordinate(s[0]))o=P.distance(t,c);else{s[0]=n.vmin,Zi(a,s[0],c),o=P.distance(c,t);let e=new P;Zi(a,n.vmax,e);let r=P.distance(e,t);o>r&&(c.setCoordsPoint2D(e),s[0]=n.vmax,o=r)}if(!r)return s[0];if(n.vmin<=0){let r=new P;e.queryCoord2DExtended(-1,r,!0);let i=new P;e.queryCoord2D(n.vmin,i);let a=new Q({start:r,end:i}),l=a.getClosestCoordinate(t,!0);if(l<1){let e=a.getCoord2D(l),n=P.distance(e,t);n<o&&(o=n,s[0]=l-1,c.assign(e))}}if(n.vmin>=1){let r=new P;e.queryCoord2DExtended(2,r,!0);let i=new P;e.queryCoord2D(n.vmax,i);let a=new Q({start:i,end:r}),l=a.getClosestCoordinate(t,!0);if(l>0){let e=a.getCoord2D(l),n=P.distance(e,t);n<o&&(o=n,s[0]=1+l,c.assign(e))}}return s[0]}function Oi(e,t,n){let r=e[2].sub(e[1]).sub(e[1].sub(e[0])),i=e[1].sub(e[0]),a=e[0].sub(t),o=a.dotProduct(i),s=a.dotProduct(r)+i.dotProduct(i)*2,c=i.dotProduct(r)*3,l=r.dotProduct(r),u=L(3,NaN),d=dr(l,c,s,o,R.unit(),!1,u),f=e[0].clone(),p=0,m=P.sqrDistance(e[0],t),h=P.sqrDistance(e[2],t);h<m&&(p=1,f.assign(e[2]),m=h);for(let n=0;n<d;n++){let r=new P;Zi(e,u[n],r),h=P.sqrDistance(r,t),h<m&&(m=h,f.assign(r),p=u[n])}return n&&(n[0]=p),f}function ki(e,t,n,r,i,a){let o=new Ct;if(Ai(e,R.unit(),o),o.inflate(i),!o.isIntersectingPoint2D(t))return 0;let s=new P,c=Di(e,t,R.unit(),!1);return e.queryCoord2D(c,s),P.distance(s,t)<=i?(r&&(r[0]=c),1):0}function Ai(e,t,n){let r=H(P,3);e.queryControlPoints(r),ji(r,t,n)}function ji(e,t,n){if(t.equalsRange(0,1)){n.setFromPoints(e,3);return}let r=H(P,3);Li(e,t.vmin,t.vmax,r),n.setFromPoints(r,3)}function Mi(e,t,n){n.setEmpty();let r=[];r.push(new R(0,1));let i=Math.max(t.width(),t.height())*.5;for(;r.length;){let a=r.at(-1);r.pop();let o=new Ct;if(ji(e,a,o),o.isIntersectingW(t)){let e=Math.max(o.width(),o.height());if(t.containsW(o)||e<=i||a.width()<1e-12)n.merge(a);else{let e=a.getCenter();r.push(R.construct(a.vmin,e)),r.push(R.construct(e,a.vmax))}}}}function Ni(e){let t=H(P,3);e.queryControlPoints(t);let n=Pi(t);return n&&(e.m_cp.setCoordsPoint2D(t[1]),e.afterCompletedModification()),n}function Pi(e){let t=!1;for(let n=0;n<2;n++){let r=F(e[0][n],e[2][n]);r>0?(F(e[0][n],e[1][n])<0&&(e[1][n]=e[0][n],t=!0),F(e[1][n],e[2][n])<0&&(e[1][n]=e[2][n],t=!0)):r<0?(F(e[0][n],e[1][n])>0&&(e[1][n]=e[0][n],t=!0),F(e[1][n],e[2][n])>0&&(e[1][n]=e[2][n],t=!0)):e[1][n]!==e[0][n]&&(e[1][n]=e[0][n],t=!0)}return t}function Fi(e,t,n){n===void 0&&(n=t,t=0);let r=new P;if(t<0||n>1)return r.setNAN(),r;if(t>n&&i(`calculate_sub_weighted_centroid`),t===n||e.isDegenerate(0))return r.setCoords(0,0),r;let a=fi(e),o=$t(e),s=Math.min(o/e.calculateUpperLength2D(),1e-7),c=t,l=0;for(let e=1,n=a.specialPointsCount();e<n;e++)if(t<a.specialPoints[e]){l=e-1;break}r.setCoords(0,0);for(let t=l+1,i=a.specialPointsCount();t<i;t++){let i=Math.min(a.specialPoints[t],n),l=li(e,c,i,s,o);if(r.addThis(l),c=i,n<=a.specialPoints[t])break}return r.add(e.getStartXY().mul(e.calculateLength2D()))}function Ii(e,t,n,r){new P().setCoordsPoint2D(e[0]),new P().setCoordsPoint2D(e[1]),new P().setCoordsPoint2D(e[2]);let i=new P,a=new P,o=new P;if(Ue(e[0],e[1],t,i),Ue(e[1],e[2],t,a),Ue(i,a,t,o),n&&(n[0].assign(e[0]),n[1].assign(i),n[2].assign(o)),r){let t=e[2];r[0].assign(o),r[1].assign(a),r[2].assign(t)}}function Li(e,t,n,r){if(t===n){let n=new P;Zi(e,t,n),r[0]=n,r[1]=n,r[2]=n;return}let i=H(P,3);Ii(e,n,i,null),Ii(i,t/n,null,i),Zi(e,t,i[0]),Zi(e,n,i[2]),r[0].setCoordsPoint2D(i[0]),r[1].setCoordsPoint2D(i[1]),r[2].setCoordsPoint2D(i[2])}function Ri(e,t,n,r){if(t.isEqual(e.m_XStart,e.m_YStart)&&n.isEqual(e.m_XEnd,e.m_YEnd))return;let i=r?e.isMonotoneQuickAndDirty():!1,a=new xt,o=H(P,3);o[0].setCoords(e.m_XStart,e.m_YStart),o[2].setCoords(e.m_XEnd,e.m_YEnd);let s=new P;s.setSub(o[2],o[0]),s.leftPerpendicularThis(),o[1].setAdd(o[0],s);let c=H(P,3);c[0].setCoordsPoint2D(t),c[2].setCoordsPoint2D(n),s.setSub(c[2],c[0]),s.leftPerpendicularThis(),c[1].setAdd(c[0],s),a.setFromTwoTriangles(o,c)?a.transformInPlace(e.m_cp):Ue(t,n,.5,e.m_cp),e.changeEndPoints2D(t,n),i&&Ni(e)}function zi(e){return e.getStartXY().norm(1)+e.getEndXY().norm(1)+e.m_cp.norm(1)}function Bi(e,t,n,r,i){if(i){if(du(t,n)!==0)return e?4:2}else if(Nt(t,n))return 1;return Ui(e,t,n,null,null,null,r,i??!1,!0,!1)===0?0:4}function Vi(e,t,n,r,i){if(i){if(du(t,n)!==0)return e?4:2}else if(Nt(t,n))return 1;return Wi(e,t,n,null,null,null,r,i??!1,!0,!1)===0?0:4}function Hi(e,t,n,r,i){if(i){if(du(t,n)!==0)return 2}else if(Nt(t,n))return 1;return Gi(e,t,n,null,null,null,r,i??!1,!0,!1)===0?0:4}function Ui(e,t,n,i,a,o,s,c,l,u){if(a!=null&&(a.length=0),o!==null&&(o.length=0),i!==null&&(i.length=0),n.isDegenerate(0)){let e=[0,0],r=t.intersectPoint(n.getStartXY(),e,s);if(r>0){if(a!==null)for(let t=0;t<r;t++)a.push(e[t]);if(o!==null)for(let e=0;e<r;e++)o.push(0);if(i!==null)for(let n=0;n<r;n++){let r=new P;t.queryCoord2D(e[n],r),i.push(r)}}return r}let d=en(t,n);if(s=Math.max(s,d),t.isDegenerateToLineHelper(d)){let e=new Q({start:t.getStartXY(),end:t.getEndXY()}),r=Fn(e,n,i,a,o,s,c,u);if(a)for(let n=0;n<r;++n){let r=e.getCoord2D(a[n]);a[n]=t.getClosestCoordinate(r,!1)}return r}if(tn(t,n,s))return 0;let f=q.constructPoint2D(n.getStartXY()),p=q.constructPoint2D(n.getEndXY()).sub(f),m=p.clone();m.leftPerpendicularThis();let h=q.constructPoint2D(t.m_cp).sub(q.constructPoint2D(t.getStartXY())),g=q.constructPoint2D(t.getEndXY()).sub(q.constructPoint2D(t.m_cp)),_=h.dotProduct(m).toDouble(),v=g.sub(h).dotProduct(m).toDouble(),y=L(12,NaN),b=L(12,NaN),x=lr(v,_,R.unit(),y);x<0&&(y[0]=0,y[1]=1,x=2);let S=0;for(let e=0,r=S;e<x;++e){let i=t.getCoord2D(y[e+r]);b[S]=n.getClosestCoordinate(i,!1),P.distance(i,n.getCoord2D(b[S]))<=s&&(y[S]=y[e+r],S++)}let C,w=H(P,3);t.queryControlPoints(w);{let e=H(q,3);if(Xi(w,e,!1),e[0]=e[0].sub(f),p.x.abs().gte(p.y.abs())){let t=p.y.div(p.x);v=e[2].y.sub(e[2].x.mul(t)).toDouble(),_=e[1].y.sub(e[1].x.mul(t)).toDouble(),C=e[0].y.sub(e[0].x.mul(t)).toDouble()}else{let t=p.x.div(p.y);v=e[2].x.sub(e[2].y.mul(t)).toDouble(),_=e[1].x.sub(e[1].y.mul(t)).toDouble(),C=e[0].x.sub(e[0].y.mul(t)).toDouble()}}let T=t.getEndXY().equals(n.getStartXY())||t.getEndXY().equals(n.getEndXY()),E=[0,0];x=ur(v,_,C,R.unit(),T,E);for(let e=0,r=S;e<x;++e){y[e+r]=E[e];let i=t.getCoord2D(y[e+r]);b[S]=n.getClosestCoordinate(i,!1),P.distance(i,n.getCoord2D(b[S]))<=s&&(y[S]=y[e+r],S++)}r(S<y.length+4),x=t.intersectPoint(n.getStartXY(),E,s);for(let e=0;e<x;e++)y[S]=E[e],b[S++]=0;x=t.intersectPoint(n.getEndXY(),E,s);for(let e=0;e<x;e++)y[S]=E[e],b[S++]=1;x=n.intersectPoint(t.getStartXY(),E,s);for(let e=0;e<x;e++)b[S]=E[e],y[S++]=0;x=n.intersectPoint(t.getEndXY(),E,s);for(let e=0;e<x;e++)b[S]=E[e],y[S++]=0;return S===0?0:gu(e,t,n,y,b,S,i,a,o,s,c,l,u)}function Wi(e,t,n,r,i,a,o,s,c,l){if(Z(n))return Ui(e,t,new Q({start:n.getStartXY(),end:n.getEndXY()}),r,i,a,o,s,c,l);let u=en(t,n);if(o=Math.max(o,u),tn(t,n,o))return 0;let d=[],f=[],p=H(P,3);{t.queryControlPoints(p);let e=H(P,3),r=new xt;n.canonicToWorldTransformation(r);let i=new xt;i.setInvert(r),i.transformPoints2D(p,3,e);let a=H(q,3);Xi(e,a);let c=[a[0].x,a[1].x,a[2].x],l=[a[0].y,a[1].y,a[2].y],u=H(I,3);u[0].setDouble(n.getSemiMinorAxis()),u[0].sqrThis(),u[1].setDouble(n.getSemiMajorAxis()),u[1].sqrThis(),u[2]=u[0],u[2].mul(u[1]),u[2].negate();let m=Vr(c,2,l,2,null,0,u,!0,R.unit(),R.unit(),d,s);if(m>0){let e=0;for(let r=0;r<m;r++){let i=new P;t.queryCoord2D(d[r],i);let a=n.getClosestCoordinate(i,!1),s=new P;n.queryCoord2D(a,s),P.distance(i,s)<=o&&(d[e]=d[r],f.push(a),e++)}d.length=e}}let m=[0,1];for(let e=0;e<2;e++)do{let t=e===0?n.getStartXY():n.getEndXY(),r=[0];Oi(p,t,r);let i=new P;Zi(p,r[0],i),P.distance(t,i)<=o&&(d.push(r[0]),f.push(m[e]))}while(0);for(let e=0;e<2;e++){let t=[0,2];do{let r=n.getClosestCoordinate(p[t[e]],!1),i=new P;n.queryCoord2D(r,i),P.distance(p[t[e]],i)<=o&&(d.push(m[e]),f.push(r))}while(0)}return gu(e,t,n,d,f,d.length,r,i,a,o,s,c,l)}function Gi(e,t,n,r,i,a,o,s,c,l){let u=H(P,3);t.queryControlPoints(u);let d=H(P,3);if(n.queryControlPoints(d),nn(u,d,3)<0)return Gi(e,n,t,r,a,i,o,s,c,!l);let f=en(t,n);if(o=Math.max(o,f),tn(t,n,o))return 0;if(sa(t,n,r,i,a,o,s,c,l))return 2;let p=new R(0,1),m=new R(0,1);{let e=new Ct;ji(u,R.unit(),e);let t=new Ct;ji(d,R.unit(),t);let n=Math.max(e.maxDim(),t.maxDim());if(e.inflate(o*3),t.inflate(o*3),!e.intersectW(t))return 0;if(e.maxDim()<n*.1){if(Mi(u,e,p),Mi(d,e,m),p.isEmpty()||m.isEmpty())return 0;Li(u,p.vmin,p.vmax,u),Li(d,m.vmin,m.vmax,d)}}let h=vu(u,2,d,2,o);if(h===0)return 0;let g=[],_=[];if(h===-1){let e=H(q,3);Xi(u,e);let t=[e[0].x,e[1].x,e[2].x],n=[e[0].y,e[1].y,e[2].y],r=H(q,3);Xi(d,r);let i=Rr(t,2,n,2,null,0,[r[0].x,r[1].x,r[2].x],2,[r[0].y,r[1].y,r[2].y],2,null,0,!0,R.unit(),R.unit(),g,_,l,s,l);if(i>0){let e=0;for(let t=0;t<i;t++){let n=new P,r=new P;Zi(d,_[t],r),Zi(u,g[t],n),P.distance(n,r)<=o&&(g[e]=g[t],_[e]=_[t],e++)}g.length=e,_.length=e}}for(let e=0;e<2;e++){let t=e===0?u:d,n=e===0?d:u;for(let r=0;r<2;r++){let i=r===0?0:2,a=[0];Oi(n,t[i],a);let s=new P;Zi(n,a[0],s),P.distance(t[i],s)<=o&&(e===0?(g.push(i===0?0:1),_.push(a[0])):(_.push(i===0?0:1),g.push(a[0])))}}if(g.length===0)return 0;if(!p.equalsRange(0,1))for(let e=0;e<g.length;++e)g[e]=Pr.recalculateParentT(p.vmin,p.vmax,g[e]);if(!m.equalsRange(0,1))for(let e=0;e<_.length;++e)_[e]=Pr.recalculateParentT(m.vmin,m.vmax,_[e]);return gu(e,t,n,g,_,g.length,r,i,a,o,s,c,l)}function Ki(e,t,n=!1){let r=e[1].sub(e[0]);t[1].assign(r.mul(2)),t[2].assign(e[2].sub(e[1]).sub(r)),n?t[0].setCoords(0,0):t[0].assign(e[0])}function qi(e,t,n=!1){let r=H(P,3);e.queryControlPoints(r),Ki(r,t,n)}function Ji(e,t,n=!1){let r=new V(e[1][0]).subE(new V(e[0][0]));t[1]=r.mul(2),t[2]=new V(e[2][0]).subE(new V(e[1][0])).subE(r),n?t[0].set(0):t[0].set(e[0][0])}function Yi(e,t,n=!1){let r=new V(e[1][1]).subE(new V(e[0][1]));t[1]=r.mul(2),t[2]=new V(e[2][1]).subE(new V(e[1][1])).subE(r),n?t[0].set(0):t[0].set(e[0][1])}function Xi(e,t,n=!1){let r=q.constructPoint2D(e[1]),i=r.sub(q.constructPoint2D(e[0]));t[1]=i.mul(I.constructInt32(2)),t[2]=q.constructPoint2D(e[2]).sub(r).sub(i),t[0]=n?new q(ut,ut):q.constructPoint2D(e[0])}function Zi(e,t,n,r){if(r){if(t<0){wn(new Q({start:e[0],end:e[0].add(_i(e,0).getUnitVector())}),t,n);return}if(t>1){wn(new Q({start:e[2],end:e[2].add(_i(e,1).getUnitVector())}),t-1,n);return}}if(t<=.5){let r=e[1].clone(),i=new P;Ye(2,e[0],r,t,i);let a=new P;Ye(2,r,e[2],t,a);let o=new P;Ye(2,i,a,t,o),n.assign(o)}else{let r=e[1].clone(),i=new P;Xe(2,e[0],r,t,i);let a=new P;Xe(2,r,e[2],t,a);let o=new P;Xe(2,i,a,t,o),n.assign(o)}}function Qi(e,t,n){let r=H(P,3);e.queryControlPoints(r),$i(r,t,n)}function $i(e,t,n){if(t.value()<=.5){let r=K.constructPoint2D(e[1]),i=new K;Ge(2,K.constructPoint2D(e[0]),r,t,i);let a=new K;Ge(2,r,K.constructPoint2D(e[2]),t,a);let o=new K;Ge(2,i,a,t,o),n.setE(o)}else{let r=K.constructPoint2D(e[1]),i=new K;Ke(2,K.constructPoint2D(e[0]),r,t,i);let a=new K;Ke(2,r,K.constructPoint2D(e[2]),t,a);let o=new K;Ke(2,i,a,t,o),n.setE(o)}}function ea(e,t,n){let r=H(P,4);e.queryControlPoints(r),ta(r,t,n)}function ta(e,t,n){t.value()<0&&t.set(0,t.eps()),t.value()>1&&t.set(1,t.eps()),n.setE(bi(e,1,t))}function na(e,t){let n=1;e[1].isEqualPoint2D(e[0])&&(n=2,e[2].isEqualPoint2D(e[0])&&(n=3));let r=2;e[2].isEqualPoint2D(e[3])&&(r=1,e[1].isEqualPoint2D(e[3])&&(r=0)),t[0].assign(e[0]),t[2].assign(e[3]);let i=P.intersectLinesAtOnePoint(e[0],e[n],e[r],e[3]),a=new P;Ue(e[0],e[3],.5,a);let o=new P;X(e,.5,o);let s=new P;t[1].assign(i),Zi(t,.5,s);let c=new P;t[1].assign(a),Zi(t,.5,c);let l=P.sqrDistance(o,s),u=P.sqrDistance(o,c);return l<u?(t[1].setCoordsPoint2D(i),Math.sqrt(l)):(t[1].setCoordsPoint2D(a),Math.sqrt(u))}function ra(e,t,n){n[0].assign(e[0]),n[1].assign(e[1]),n[2].assign(e[2]);let r=new P;bc(e,t,.5,r);let i=new P;Zi(n,.5,i);let a=P.sqrDistance(r,i);return Math.sqrt(a)}function ia(e,t){t[0].assign(e[0]),t[3].assign(e[2]),Ue(e[0],e[1],2/3,t[1]),Ue(e[1],e[2],1/3,t[2])}function aa(e,t){let n=H(P,3);e.queryControlPoints(n);let r=P.sqrDistance(n[1],n[0]),i=P.sqrDistance(n[1],n[2]),a=n[0].clone(),o=r;r>i&&(a=n[2].clone(),o=i);let s=!1;return o<=t&&o!==0&&(s=!0,e.setControlPoint1(a)),s}function oa(e,t){if(!t)return!1;let n=H(P,3);e.queryControlPoints(n);let r=P.sqrDistance(n[1],n[0]),i=P.sqrDistance(n[1],n[2]);n[0].clone();let a=r;return r>i&&(n[2].clone(),a=i),a<=t&&a!==0}function sa(e,t,n,r,i,a,o,s,c){let l=H(P,3);e.queryControlPoints(l);let u=H(P,3);if(t.queryControlPoints(u),l[0].equals(u[0])){if(l[1].equals(u[1])&&l[2].equals(u[2]))return n&&(n.length=0,n.push(l[0]),n.push(l[2])),r&&(r.length=0,r.push(0),r.push(1)),i&&(i.length=0,i.push(0),i.push(1)),!0;if(!l[0].equals(u[2]))return!1}return l[0].equals(u[2])&&l[1].equals(u[1])&&l[2].equals(u[0])?(r&&(r.length=0,r.push(0),r.push(1),c&&(r[1]=z(r[0],r[0]=r[1]))),i&&(i.length=0,i.push(1),i.push(0),c&&(i[1]=z(i[0],i[0]=i[1]))),n&&(n.length=0,n.push(l[0]),n.push(l[2]),c&&(n[1]=z(n[0],n[0]=n[1]))),!0):!1}const ca=[[.33998104358485626,.6521451548625461],[.8611363115940526,.34785484513745385]],la=[[.1834346424956498,.362683783378362],[.525532409916329,.31370664587788727],[.7966664774136267,.22238103445337448],[.9602898564975363,.10122853629037626]],ua=[[.09501250983763744,.1894506104550685],[.2816035507792589,.18260341504492358],[.45801677765722737,.16915651939500254],[.6178762444026438,.14959598881657674],[.755404408355003,.12462897125553388],[.8656312023878318,.09515851168249279],[.9445750230732326,.062253523938647894],[.9894009349916499,.027152459411754096]],da=[[.04830766568773832,.0965400885147278],[.1444719615827965,.09563872007927486],[.23928736225213706,.09384439908080457],[.33186860228212767,.09117387869576389],[.42135127613063533,.08765209300440381],[.5068999089322294,.08331192422694675],[.5877157572407623,.07819389578707031],[.6630442669302152,.0723457941088485],[.7321821187402897,.06582222277636185],[.7944837959679424,.058684093478535544],[.84936761373257,.050998059262376175],[.8963211557660521,.04283589802222668],[.9349060759377397,.03427386291302143],[.9647622555875064,.02539206530926206],[.9856115115452684,.01627439473090567],[.9972638618494816,.007018610009470096]],fa=[[.024350292663424433,.048690957009139724],[.07299312178779904,.04857546744150343],[.12146281929612056,.048344762234802954],[.16964442042399283,.04799938859645831],[.21742364374000708,.04754016571483031],[.2646871622087674,.04696818281621002],[.31132287199021097,.046284796581314416],[.3572201583376681,.04549162792741814],[.4022701579639916,.044590558163756566],[.4463660172534641,.04358372452932345],[.48940314570705296,.04247351512365359],[.5312794640198946,.04126256324262353],[.571895646202634,.03995374113272034],[.6111553551723933,.038550153178615626],[.6489654712546573,.03705512854024005],[.6852363130542333,.035472213256882386],[.7198818501716109,.033805161837141606],[.7528199072605319,.03205792835485155],[.7839723589433414,.030234657072402478],[.8132653151227975,.028339672614259483],[.8406292962525803,.02637746971505466],[.8659993981540928,.024352702568710874],[.8893154459951141,.022270173808383253],[.9105221370785028,.02013482315353021],[.9295691721319396,.017951715775697343],[.9464113748584028,.015726030476024718],[.9610087996520538,.013463047896718643],[.973326827789911,.011168139460131128],[.983336253884626,.008846759826363947],[.9910133714767443,.006504457968978363],[.9963401167719553,.004147033260562468],[.9993050417357722,.001783280721696433]],pa=[[.012223698960615764,.024446180196262518],[.03666379096873349,.024431569097850044],[.06108196960413957,.02440235563384958],[.08546364050451549,.024358557264690626],[.10979423112764375,.024300200167971867],[.13405919946118777,.02422731922281525],[.15824404271422493,.024139957989019287],[.18233430598533718,.024038168681024052],[.2063155909020792,.023922012136703457],[.23017356422666,.023791557781003402],[.2538939664226943,.023646883584447616],[.2774626201779044,.02348807601653591],[.3008654388776772,.02331522999406276],[.32408843502441337,.023128448824387027],[.3471177285976355,.022927844143686846],[.369939555349859,.02271353585023646],[.39254027503326744,.022485652032744968],[.414906379552275,.022244328893799764],[.43702450103710416,.02198971066846049],[.4588814198335522,.021721949538052076],[.48046407240417205,.02144120553920846],[.5017595591361445,.02114764646822135],[.5227551520511755,.02084144778075115],[.5434383024128103,.02052279248696007],[.5637966482266181,.020191871042130043],[.5838180216287631,.01984888123283086],[.6034904561585486,.019494028058706602],[.6228021939105849,.019127523609950944],[.6417416925623075,.01874958694054471],[.660297632272646,.01836044393733134],[.6784589224477192,.017960327185008687],[.6962147083695144,.017549475827117706],[.7135543776835874,.01712813542311138],[.7304675667419088,.016696557801589205],[.746944166797062,.016255000909785187],[.7629743300440948,.015803728659399347],[.7785484755064119,.015343010768865144],[.7936572947621933,.014873122602147314],[.8082917575079137,.014394345004166847],[.8224431169556439,.013906964132951985],[.8361029150609068,.013411271288616333],[.8492629875779689,.012907562739267348],[.8619154689395485,.012396139543950923],[.8740527969580318,.01187730737274028],[.8856677173453972,.011351376324080417],[.8967532880491582,.010818660739503076],[.9073028834017568,.010279479015832158],[.9173101980809605,.009734153415006806],[.9267692508789478,.009183009871660874],[.9356743882779164,.00862637779861675],[.9440202878302202,.008064589890486059],[.9518019613412644,.0074979819256347285],[.9590147578536999,.006926892566898814],[.9656543664319652,.006351663161707189],[.9717168187471366,.005772637542865698],[.9771984914639074,.00519016183267633],[.9820961084357185,.004604584256702955],[.9864067427245862,.004016254983738642],[.9901278184917344,.0034255260409102157],[.9932571129002129,.0028327514714579912],[.9957927585349812,.0022382884309626186],[.997733248625514,.0016425030186690294],[.9990774599773758,.0010458126793403489],[.9998248879471319,.00044938096029209035]];function ma(e,t,n,r){let i=.5*(r-n),a=n+i,o=new De(0);for(let n=0,r=Math.trunc(e/2);n<r;++n){let r,s;switch(e){case 4:r=ca[n][0],s=ca[n][1];break;case 8:r=la[n][0],s=la[n][1];break;case 16:r=ua[n][0],s=ua[n][1];break;case 32:r=da[n][0],s=da[n][1];break;case 64:r=fa[n][0],s=fa[n][1];break;case 128:r=pa[n][0],s=pa[n][1];break;default:throw Error(`Quadrature_integral: invalid n`)}let c=gt(-i,r,a),l=gt(i,r,a);o.pe(t(c)*s),o.pe(t(l)*s)}return o.getResult()*i}class ha extends tr{static type=s.enumPolygon;constructor(e){e?e.vd?(super({vd:e.vd,bPolygon:!0}),this.m_segmentBufferCTor=$):e.copy?(super({vd:e.copy.getDescription(),bPolygon:!0}),this.m_segmentBufferCTor=$,e.copy.copyTo(this)):e.move?(super({move:e.move}),this.m_segmentBufferCTor=$):e.envelope?n(`envelope constructor not impl`):t(`bad arg to polygon constructor`):(super({bPolygon:!0}),this.m_segmentBufferCTor=$)}assignMove(e){return e.copyTo(this),this}assignCopy(e){return e.copyTo(this),this}getBoundary(){return or(this)}getExteriorRingCount(){return this.getOGCPolygonCount()}getGeometryType(){return ha.type}getDimension(){return 2}createInstance(){return new ha({vd:this.getDescription()})}equals(e,t){return this.equalsBase(e,t)}}function ga(e,t){let r=t,a=null;r||=(a=g(e)?b():y(),a);let o;switch(e){case s.enumPoint:o=new N({vd:r});break;case s.enumLine:o=new Q({vd:r});break;case s.enumBezier:o=new ls({vd:r});break;case s.enumEllipticArc:o=new zc({vd:r});break;case s.enumRationalBezier2:o=new Mr({vd:r});break;case s.enumBezier2:o=new Pr({vd:r});break;case s.enumEnvelope:o=new A({vd:r});break;case s.enumMultiPoint:o=new vn({vd:r});break;case s.enumPolyline:o=new rr({vd:r});break;case s.enumPolygon:o=new ha({vd:r});break;case s.enumMultipatch:n(`multipatch not impl`);break;case s.enumGeometryCollection:o=new bn({vd:r});break;default:i(`Geometry.create`)}return o}var _a=v;const va=-1,ya=1;class ba{m_shape;constructor(e){this.m_shape=e}userSort(e,t,n){this.m_shape.sortVerticesSimpleByYHelper(n,e,t)}getValue(e){return this.m_shape.getY(e)}}function xa(e){return e.parent!==void 0}class Sa{m_parent;m_geometry;m_path;m_vertex;m_firstVertex;m_index;m_bFirst;m_bSkipMultiPoints;m_selection;m_bOneGeom;constructor(e){xa(e)?(this.m_parent=e.parent,this.m_geometry=e.geometry,this.m_path=e.path,this.m_vertex=e.vertex,this.m_firstVertex=e.firstVertex,this.m_index=e.selection?0:e.index,this.m_bSkipMultiPoints=e.bSkipMultiPoints,this.m_selection=e.selection,this.m_bOneGeom=e.bOneGeom,this.m_bFirst=!0):(this.m_parent=e.copy.m_parent,this.m_geometry=e.copy.m_geometry,this.m_path=e.copy.m_path,this.m_vertex=e.copy.m_vertex,this.m_index=e.copy.m_index,this.m_bSkipMultiPoints=e.copy.m_bSkipMultiPoints,this.m_firstVertex=e.copy.m_firstVertex,this.m_bFirst=!0,this.m_selection=e.copy.m_selection,this.m_bOneGeom=e.copy.m_bOneGeom)}moveToNextHelper(){for(this.m_path=this.m_parent.getNextPath(this.m_path),this.m_index=0;this.m_geometry!==-1;){for(;this.m_path!==-1;this.m_path=this.m_parent.getNextPath(this.m_path))if(this.m_vertex=this.m_parent.getFirstVertex(this.m_path),this.m_firstVertex=this.m_vertex,this.m_vertex!==-1)return this.m_vertex;if(this.m_bOneGeom)return-1;if(this.m_geometry=this.m_parent.getNextGeometry(this.m_geometry),this.m_geometry===-1)break;(!this.m_bSkipMultiPoints||u(this.m_parent.getGeometryType(this.m_geometry)))&&(this.m_path=this.m_parent.getFirstPath(this.m_geometry))}return-1}nextSelection(){for(;this.m_index<this.m_parent.m_selectedVertices.length;){let e=this.m_parent.m_selectedVertices[this.m_index++];if(e!==-1&&(this.m_path=this.m_parent.getPathFromVertex(e),!(this.m_bOneGeom&&this.m_geometry!==this.m_parent.getGeometryFromPath(this.m_path))))return this.m_geometry=this.m_parent.getGeometryFromPath(this.m_path),e}return-1}next(){return this.m_selection?this.nextSelection():this.m_bFirst?(this.m_bFirst=!1,this.m_vertex):this.m_vertex===-1?-1:(this.m_vertex=this.m_parent.getNextVertex(this.m_vertex),this.m_index++,this.m_vertex!==-1&&this.m_vertex!==this.m_firstVertex?this.m_vertex:this.moveToNextHelper())}currentGeometry(){return this.m_geometry}currentPath(){return this.m_path}static create_(e,t,n,r,i,a,o,s,c){return new Sa({parent:e,geometry:t,path:n,vertex:r,firstVertex:i,index:a,bSkipMultiPoints:o,selection:s,bOneGeom:c})}}class Ca{parentage;constructor(e){this.parentage=e}equals(e){return this.parentage===e.parentage}}class wa{m_pathCount;m_pointCount;m_firstGeometry;m_lastGeometry;m_vertexIndexList;m_verticesMp=null;m_vertices=null;m_xyStream=null;m_vertexDescription=null;m_bHasAttributes;m_segments=null;m_weights=null;m_ranks=null;m_segmentWeights=null;m_segmentRanks=null;m_indices=[];m_deletedIndices=[];m_pathIndexList;m_pathAreas=[];m_pathLengths=[];m_pathindices=[];m_deletedPathIndices=[];m_geometryIndexList;m_geometryIndices=[];m_selectedVertices=[];m_selectedCount;m_selectionIndex;m_selection;m_bucketSort;m_helperPoint=null;m_forceSetEnvelope=O.constructEmpty();m_hasForceSetEnvelope=0;m_workPoint2D=P.getNAN();m_workPoint2_2D=P.getNAN();m_segmentParentageIndex;m_curveStitcher=null;setPrevPath(e,t){this.m_pathIndexList.setField(e,1,t)}setNextPath(e,t){this.m_pathIndexList.setField(e,2,t)}setPathFlags(e,t){this.m_pathIndexList.setField(e,6,t)}getPathFlags(e){return this.m_pathIndexList.getField(e,6)}setPathGeometry(e,t){this.m_pathIndexList.setField(e,7,t)}getPathIndex(e){return this.m_pathIndexList.getField(e,0)}setNextGeometry(e,t){this.m_geometryIndexList.setField(e,1,t)}setPrevGeometry(e,t){this.m_geometryIndexList.setField(e,0,t)}getGeometryIndex(e){return this.m_geometryIndexList.getField(e,7)}setFirstPath(e,t){this.m_geometryIndexList.setField(e,3,t)}setLastPath(e,t){this.m_geometryIndexList.setField(e,4,t)}newGeometry(e){let t=this.m_geometryIndexList.newElement();return this.m_geometryIndexList.setField(t,2,e),this.m_geometryIndexList.setField(t,5,0),this.m_geometryIndexList.setField(t,6,0),this.m_geometryIndexList.setField(t,7,this.m_geometryIndexList.elementToIndex(t)),t}freeGeometry(e){this.m_geometryIndexList.deleteElement(e)}newPath(e){let t=this.m_pathIndexList.newElement(),n=this.m_pathIndexList.elementToIndex(t);if(this.m_pathIndexList.setField(t,0,n),this.m_pathIndexList.setField(t,3,0),this.m_pathIndexList.setField(t,6,0),this.setPathGeometry(t,e),n>=this.m_pathAreas.length){let e=Math.trunc(n<16?16:n*3/2);this.m_pathAreas.length=e,this.m_pathLengths.length=e}return this.m_pathAreas[n]=0,this.m_pathLengths[n]=0,this.m_pathCount++,t}freePath(e){this.m_pathIndexList.deleteElement(e),this.m_pathCount--}newVertex(e){let t=this.m_vertexIndexList.newElement(),n=e>=0?e:this.m_vertexIndexList.elementToIndex(t);if(this.m_vertexIndexList.setField(t,0,n),e<0){if(n>=this.m_vertices.getPointCount()){let e=Math.trunc(n<16?16:n*3/2);this.m_vertices.reserveRounded(e),this.m_vertices.resizeNoInit(e),this.m_segments!==null&&(this.m_segments.length=e),this.m_xyStream=this.m_vertices.getAttributeStreamRef(0)}this.m_segments&&(this.m_segments[n]=null)}return this.m_pointCount++,t}freeVertex(e){this.unselect(e);let t=this.getVertexIndex(e);this.m_vertexIndexList.deleteElement(e),this.m_pointCount--;for(let e=0,n=this.m_indices.length;e<n;e++){if(e===this.m_selectionIndex)continue;let n=this.m_indices[e];n!==null&&n.size()>t&&n.write(t,-1)}this.m_weights&&this.m_weights.size()>t&&this.m_weights.write(t,1),this.m_ranks&&this.m_ranks.size()>t&&this.m_ranks.write(t,1),this.m_segmentWeights&&this.m_segmentWeights.size()>t&&this.m_segmentWeights.write(t,1),this.m_segmentRanks&&this.m_segmentRanks.size()>t&&this.m_segmentRanks.write(t,1),this.m_segments&&this.setSegmentToIndex(t,null)}insertVertex_(e,t,n,r){this.m_hasForceSetEnvelope=0;let i=t===-1?this.getLastVertex(e):this.getPrevVertex(t),a=i===-1?-1:this.getNextVertex(i),o=this.newVertex(n===null?this.m_pointCount:-1),s=this.getVertexIndex(o);n!==null&&this.m_vertices.setPointByValNoCurves(s,n),this.setPathToVertex(o,e),this.setNextVertex(o,a),this.setPrevVertex(o,i),a!==-1&&this.setPrevVertex(a,o),i!==-1&&this.setNextVertex(i,o);let c=this.isClosedPath(e),l=this.getFirstVertex(e);t===-1&&this.setLastVertex(e,o),t===l&&(!c||!r||l===-1)&&this.setFirstVertex(e,o),c&&a===-1&&(this.setNextVertex(o,o),this.setPrevVertex(o,o)),this.setPathSize(e,this.getPathSize(e)+1);let u=this.getGeometryFromPath(e);return this.setGeometryVertexCount(u,this.getPointCount(u)+1),o}getHelperPoint(){return this.m_helperPoint||(this.m_helperPoint=new N({vd:this.m_vertices.getDescription()}),this.m_helperPoint.setXYCoords(0,0)),this.m_helperPoint}addMultiPoint(e,t){let n=this.createGeometry(e.getGeometryType(),e.getDescription());return this.appendMultiPoint(n,e,t),n}addPoint_(e,t){let n=this.createGeometry(s.enumMultiPoint,e.getDescription());return this.appendPoint(n,e,t),n}appendMultiPath_(e,t){if(t.isEmpty())return;let n=t.getImpl();this.m_vertices.reserveRounded(this.m_vertices.getPointCount()+n.getPointCount()),this.m_verticesMp.addPoints(t,0,n.getPointCount()),this.m_xyStream=this.m_vertices.getAttributeStreamRef(0);let r=this.m_segments!==null||n.getSegmentFlagsStreamRef()!==null;this.m_vertexIndexList.setCapacity(this.m_vertexIndexList.size()+n.getPointCount()),this.m_pathIndexList.setCapacity(this.m_pathIndexList.size()+n.getPathCount());for(let t=0,i=n.getPathCount();t<i;t++){if(n.getPathSize(t)===0)continue;let i=this.insertPath(e,-1);this.setClosedPath(i,n.isClosedPath(t));for(let e=n.getPathStart(t),a=n.getPathEnd(t);e<a;e++){let t=this.insertVertex_(i,-1,null,!1);if(r){let r=this.getVertexIndex(t);if(n.getSegmentFlags(e)&1)this.setSegmentToIndex(r,null);else{let t=new $;n.querySegment(e,t,!0),this.setSegmentToIndex(r,t.releaseSegment())}}}n.isStrongPathStart(t)&&this.setStrongPathStart(i,!0),n.isStrongPathEnd(t)&&this.setStrongPathEnd(i,!0)}}addMultiPath(e,t){let n=this.createGeometry(e.getGeometryType(),e.getDescription());return e.getGeometryType()===s.enumPolygon&&this.setFillRule(n,e.getFillRule()),this.appendMultiPath(n,e,t),n}appendMultiPathPolyline(e,t,n){let r=t.getImpl(),i=this.m_segments!==null||r.getSegmentFlagsStreamRef()!==null,a=new G;t.queryEnvelope(a);{let a=n.clone(),o=r.getPointCount(),s=r.getAccelerators();if(s&&s.getQuadTree()&&(o=s.getQuadTree().getIntersectionCount(a,0,r.getPointCount()+1)),o<t.getPointCount()){if(o===0)return;let n=r.queryLimitedSegmentIterator(a),s=-1,c=-100,l=-1,u=0,d=-1,f=-1,p=!1,m=n.nextSegment();if(m!==null)for(;;m=n.nextSegment()){let a=m===null,o=m===null?s:n.getPathIndex(),h=m===null?c:n.getStartPointIndex();if(a||(s===o&&c+1===h?u++:a=!0),a){if(d!==-1){let e=-1,n=-1;if(u===l){this.setClosedPath(f,p);let i=r.getPathEnd(s);this.m_vertices.reserveRounded(this.m_vertices.getPointCount()+i-d),this.m_verticesMp.addPoints(t,d,i),n=r.getPathSize(s),e=i-1}else if(!p||c+1<r.getPathEnd(s))this.m_vertices.reserveRounded(this.m_vertices.getPointCount()+c+2-d),this.m_verticesMp.addPoints(t,d,c+2),n=c-d+2,e=c;else{this.m_vertices.reserveRounded(this.m_vertices.getPointCount()+c+2-d),this.m_verticesMp?.addPoints(t,d,c+1),e=c,n=c-d+1;let i=r.getPathStart(s);this.m_verticesMp.addPoints(t,i,i+1),n+=1}this.m_xyStream=this.m_vertices.getAttributeStreamRef(0);for(let t=0,a=d;t<n;t++,a++){let t=this.insertVertex_(f,-1,null,!1);if(i){let n=this.getVertexIndex(t);if(r.getSegmentFlags(a)&1||a>e)this.setSegmentToIndex(n,null);else{let e=new $;r.getSegmentBuffer(a,e,!0),this.setSegmentToIndex(n,e.releaseSegment())}}}}if(m===null)break;u=1,d=h,s===o?f=this.insertPath(e,-1):(f=this.insertPath(e,-1),this.setClosedPath(f,!1),l=r.getSegmentCountPath(o),p=r.isClosedPath(o),s=o)}c=h}return}}this.appendMultiPath_(e,t)}appendMultiPathPolygon(e,t,n){let i=t.getImpl(),a=this.m_segments!==null||i.getSegmentFlagsStreamRef()!==null,o=G.constructEmpty();t.queryEnvelope(o),r(n.isIntersecting(o)&&!n.containsEnvelope(o));let s=G.construct(-1/0,n.ymin,1/0,n.ymax),c=G.construct(n.xmin,-1/0,n.xmax,1/0),l=i.getAccelerators();if(l&&l.getQuadTree()){let e=l.getQuadTree(),t=e.getIntersectionCount(s,0,0);t>e.getIntersectionCount(c,0,t+1)&&(c=z(s,s=c))}else s.height()>c.width()&&(c=z(s,s=c));let u=[],d=i.queryLimitedSegmentIterator(s),f=-1,p=-100,m=-1,h=0,g=-1,_=-1,v=-1,y=!0,b=d.nextSegment();if(b!==null)for(;;b=d.nextSegment()){let n=b===null,o=b===null?f:d.getPathIndex(),s=b===null?p:d.getStartPointIndex();if(n||(o===f?p+1===s?h++:n=!0:(n=f>=0,f<0&&(f=o,m=i.getSegmentCountPath(f),g=s,v=-1,h=1))),n){if(u.length!==0||m!==h){(u.length===0||u[0].first!==g)&&(this.m_vertices.reserveRounded(this.m_vertices.getPointCount()+1),this.m_verticesMp.addPoints(t,g,g+1),_===-1&&(_=g),v===-1&&(v=this.insertPath(e,-1),this.setClosedPath(v,!0)),this.m_xyStream=this.m_vertices.getAttributeStreamRef(0),this.insertVertex_(v,-1,null,!1));for(let{first:n,second:o}of u){_===-1&&(_=n);let s=-1,c=-1,l=n+o-1;if(o===m){let e=l+1;c=e-n,this.m_vertices.reserveRounded(this.m_vertices.getPointCount()+c),this.m_verticesMp.addPoints(t,n,e),s=l,r(u.length===1)}else if(l+1<i.getPathEnd(f)){let e=l+2;c=e-n,this.m_vertices.reserveRounded(this.m_vertices.getPointCount()+c),this.m_verticesMp.addPoints(t,n,e),s=l}else{let e=i.getPathStart(f),r=e===_?0:1,a=l+1;c=a-n+r,this.m_vertices.reserveRounded(this.m_vertices.getPointCount()+(a-n)+r),this.m_verticesMp.addPoints(t,n,a),s=l,r>0&&this.m_verticesMp?.addPoints(t,e,e+1)}this.m_xyStream=this.m_vertices.getAttributeStreamRef(0),v===-1&&(v=this.insertPath(e,-1),this.setClosedPath(v,!0));for(let e=0,t=n;e<c;e++,t++){let e=this.insertVertex_(v,-1,null,!1);if(a){let n=this.getVertexIndex(e);if(i.getSegmentFlags(t)&1||t>s)this.setSegmentToIndex(n,null);else{let e=new $;i.getSegmentBuffer(t,e,!0),this.setSegmentToIndex(n,e.releaseSegment())}}}}if(u.length===0||u.at(-1).first+u.at(-1).second!==g+h){let e=g+h;e===t.getPathEnd(f)&&(e=t.getPathStart(f)),_!==e&&(this.m_vertices.reserveRounded(this.m_vertices.getPointCount()+1),this.m_verticesMp.addPoints(t,e,e+1),this.insertVertex_(v,-1,null,!1))}}u.length=0,y=!0,o!==f&&(f=o,m=i.getSegmentCountPath(f),v=-1,_=-1),g=s,h=1}if(b){let e=G.constructEmpty();b.queryLooseEnvelope(e),c.isIntersecting(e)?(y?u.push(We(s,1)):u.at(-1).second++,y=!1):y=!0}else break;p=s}}appendMultiPath(e,t,n){if(n===void 0){this.appendMultiPath_(e,t);return}if(t.isEmpty())return;let r=t.getGeometryType()===s.enumPolygon,i=G.constructEmpty();t.queryEnvelope(i),n.isIntersecting(i)&&(!n.containsEnvelope(i)&&t.getPointCount()>10?r?this.appendMultiPathPolygon(e,t,n):this.appendMultiPathPolyline(e,t,n):this.appendMultiPath_(e,t))}appendPoint(e,t,n){if(t.isEmpty()||n!==void 0&&!n.contains(t.getXY()))return;this.m_vertices.reserveRounded(this.m_vertices.getPointCount()+1),this.m_verticesMp.add(t),this.m_xyStream=this.m_vertices.getAttributeStreamRef(0),this.m_vertexIndexList.setCapacity(this.m_vertexIndexList.size()+1);let r=this.insertPath(e,-1);this.insertVertex_(r,-1,null,!1)}appendMultiPoint_(e,t){this.m_vertices.reserveRounded(this.m_vertices.getPointCount()+t.getPointCount()),this.m_verticesMp.addPoints(t,0,t.getPointCount()),this.m_xyStream=this.m_vertices.getAttributeStreamRef(0),this.m_vertexIndexList.setCapacity(this.m_vertexIndexList.size()+t.getPointCount());let n=this.insertPath(e,-1);for(let e=0,r=t.getPointCount();e<r;e++)this.insertVertex_(n,-1,null,!1)}appendMultiPoint(e,t,n){if(n===void 0){this.appendMultiPoint_(e,t);return}let r=t.getAttributeStreamRef(0),i=0;for(let e=0,a=t.getPointCount();e<a;e++){let t=r.readPoint2D(e*2);n.contains(t)&&i++}this.m_vertices.reserveRounded(this.m_vertices.getPointCount()+i);let a=-1,o=-1,s=0;for(let e=0,i=t.getPointCount();e<i;e++){let i=r.readPoint2D(e*2);n.contains(i)?(a===-1&&(a=e,o=e),o++):a>=0&&(this.m_verticesMp.addPoints(t,a,o-a),a=-1,s++)}if(a>0&&(this.m_verticesMp.addPoints(t,a,o-a),s++),!s)return;this.m_xyStream=this.m_vertices.getAttributeStreamRef(0),this.m_vertexIndexList.setCapacity(this.m_vertexIndexList.size()+i);let c=this.insertPath(e,-1);for(let e=0,i=t.getPointCount();e<i;e++){let t=r.readPoint2D(e*2);n.contains(t)&&this.insertVertex_(c,-1,null,!1)}}splitSegmentForward(e,t,n,r,a){let o=this.getNextVertex(e);o===-1&&i(`Edit_shape.split_segment_forward_`);let c=this.getHelperPoint(),l=this.getPathFromVertex(e),u=e,d=this.hasSegmentParentage();for(let e=0,r=t.getResultSegmentCount(n);e<r;e++){let i=this.getVertexIndex(u),f=this.getNextVertex(u),p=t.getResultSegment(n,e),m=null;if(p.getGeometryType()!==s.enumLine&&(m=p.clone(),m.dropAllAttributes()),e===0&&(p.queryStart(c),this.setSegmentToIndex(i,null),this.setPointEx(u,c,t.getResultSegmentStartPointRank(n,e),t.getResultSegmentStartPointWeight(n,e),a)),this.setSegmentRank(u,t.getResultSegmentInteriorRank(n,e)),this.setSegmentWeight(u,t.getResultSegmentInteriorWeight(n,e)),d){let r=t.getResultSegmentSegmentParentage(n,e),i=t.getResultSegmentStartPointIsBreak(n,e);this.setSegmentParentageAndBreak(u,r,i)}if(p.queryEnd(c),e<r-1){this.setSegmentToIndex(i,m);let r=this.insertVertex(l,f,c);this.setWeight(r,t.getResultSegmentEndPointWeight(n,e)),this.setRank(r,t.getResultSegmentEndPointRank(n,e)),this.select(r),u=r}else{this.setPointEx(o,c,t.getResultSegmentEndPointRank(n,e),t.getResultSegmentEndPointWeight(n,e),a);let r=t.getResultSegmentEndPointIsBreak(n,e);this.setSegmentParentageBreakVertex(o,r),this.setSegmentToIndex(i,m)}}}splitSegmentBackward(e,t,n,r,a){let o=this.getNextVertex(e);o===-1&&i(`Edit_shape.split_segment_backward_`);let c=this.getHelperPoint(),l=this.getPathFromVertex(e),u=e,d=this.hasSegmentParentage();for(let e=0,r=t.getResultSegmentCount(n);e<r;e++){let i=r-e-1,f=this.getVertexIndex(u),p=this.getNextVertex(u),m=t.getResultSegment(n,i),h=null;if(m.getGeometryType()!==s.enumLine&&(h=m.clone(),h.reverse(),h.dropAllAttributes()),e===0&&(m.queryEnd(c),this.setSegmentToIndex(f,null),this.setPointEx(u,c,t.getResultSegmentEndPointRank(n,i),t.getResultSegmentEndPointWeight(n,i),a),this.setSegmentParentageAndBreak(u,t.getResultSegmentSegmentParentage(n,i),t.getResultSegmentEndPointIsBreak(n,i))),m.getGeometryType()===s.enumLine?this.setSegmentToIndex(f,null):this.setSegmentToIndex(f,h),this.setSegmentRank(u,t.getResultSegmentInteriorRank(n,i)),this.setSegmentWeight(u,t.getResultSegmentInteriorWeight(n,i)),m.queryStart(c),e<r-1){let e=this.insertVertex(l,p,c);this.setWeight(e,t.getResultSegmentStartPointWeight(n,i)),this.setRank(e,t.getResultSegmentStartPointRank(n,i)),this.select(e),u=e,d&&this.setSegmentParentageAndBreak(e,t.getResultSegmentSegmentParentage(n,i),t.getResultSegmentEndPointIsBreak(n,i))}else this.setPointEx(o,c,t.getResultSegmentStartPointRank(n,i),t.getResultSegmentStartPointWeight(n,i),a)}}selected_(e){return this.getUserIndex(e,this.m_selectionIndex)>=0}allocateIndex(e=!0){if(this.m_deletedIndices.length){let t=this.m_deletedIndices.pop();return e&&t.setRange(-1,0,t.size()),t}return e?M(0,-1):M(0)}recycleUserIndex(e){this.m_deletedIndices.push(e)}allocatePathIndex(){if(this.m_deletedPathIndices.length){let e=this.m_deletedPathIndices.at(-1);return this.m_deletedPathIndices.pop(),e}return M(0)}recyclePathUserIndex(e){this.m_deletedPathIndices.push(e)}peelALoop_(e,t,n){let r=this.getNextVertex(e),i=this.getNextVertex(t),a=this.getVertexIndex(e),o=this.getVertexIndex(t);if(this.setNextVertex(e,i),this.setPrevVertex(i,e),this.setNextVertex(t,r),this.setPrevVertex(r,t),this.m_segments){let e=this.getSegmentFromIndex(a),t=this.getSegmentFromIndex(o);this.setSegmentToIndex(o,null),this.setSegmentToIndex(a,t),this.setSegmentToIndex(o,e)}if(this.hasSegmentParentage()){let n=this.getSegmentParentage(t),r=this.getSegmentParentage(e);(n!==-1||r!==-1)&&(r=z(n,n=r),this.setSegmentParentageAndBreak(e,r),this.setSegmentParentageAndBreak(t,n))}if(n){let t=this.getPathFromVertex(e),n=this.getGeometryFromPath(t),a=[!1],o=this.insertClosedPath(n,-1,r,this.getFirstVertex(t),a);a[0]&&this.setFirstVertex(t,i);let s=this.getPathSize(t),c=this.getPathSize(o);return s-=c,this.setPathSize(t,s),o}return-1}sortVerticesSimpleByYHelper(e,t,n){e.sort(t,n,(e,t)=>{let n=this.compareVerticesSimpleY(e,t);if(n===0){let r=this.getPathInternalIndexFromVertex(e),i=this.getPathInternalIndexFromVertex(t);n=r<i?-1:+(r>i)}return n})}sortVerticesSimpleByYHelper3D(e,t,n){r(0)}constructor(){this.m_pathCount=0,this.m_pointCount=0,this.m_firstGeometry=-1,this.m_lastGeometry=-1,this.m_vertexIndexList=new de(5),this.m_pathIndexList=new de(8),this.m_geometryIndexList=new de(8),this.m_bHasAttributes=!1,this.m_selectedCount=0,this.m_selectionIndex=-1,this.m_selection=!1,this.m_bucketSort=new ue,this.m_segmentParentageIndex=-1}getTotalPointCount(){return this.m_pointCount}getEnvelope2D(e){if(this.m_hasForceSetEnvelope!==0)return new G(this.m_forceSetEnvelope.xmin,this.m_forceSetEnvelope.ymin,this.m_forceSetEnvelope.xmax,this.m_forceSetEnvelope.ymax);let t=this.hasCurves(),n=G.constructEmpty(),r=this.queryVertexIterator(),i=!0;for(let e=r.next();e!==-1;e=r.next()){if(i?n.merge(this.getXY(e)):n.mergeNe(this.getXY(e)),t){let t=this.getSegment(e);if(t!==null){let e=G.constructEmpty();t.queryLooseEnvelope(e),n.mergeEnvelope2D(e)}}i=!1}return n}getEnvelope3D(e){return r(0),O.constructEmpty()}forceSetEnvelope2D(e){this.m_hasForceSetEnvelope=1,this.m_forceSetEnvelope.setCoords(e.xmin,e.ymin,0,e.xmax,e.ymax,0)}forceSetEnvelope3D(e){r(0)}forgetForceSetEnvelope(){this.m_hasForceSetEnvelope=0}getGeometryCount(){return this.m_geometryIndexList.size()}addGeometry(e,t){let n=e.getGeometryType();if(u(n))return this.addMultiPath(e,t);if(n===s.enumMultiPoint)return this.addMultiPoint(e,t);if(n===s.enumPoint)return this.addPoint_(e,t);if(n===s.enumEnvelope){let n=new ha;return n.addEnvelope(e,!1),this.addMultiPath(n,t)}i(``)}appendGeometry(e,t){this.mergeVertexDescription(t.getDescription());let n=t.getGeometryType();if(u(n)){this.appendMultiPath(e,t);return}if(n===s.enumMultiPoint){this.appendMultiPoint(e,t);return}i(``)}assignRankToGeometryVertices(e,t){t<1&&(t=1);let n=this.queryVertexIterator();for(let e=n.next();e!==-1;e=n.next())this.setRank(e,t),this.setSegmentRank(e,t)}collapseAllGeometriesToFirst(){this.collapseGeometriesToFirst(s.enumUnknown)}collapseGeometriesToFirst(e){this.dbgVerifyVertexCounts();let t=-1,n=-1,r=-1;for(let i=this.getFirstGeometry();i!==-1;){if(e===s.enumUnknown||this.getGeometryType(i)===e){if(t===-1){t=i,n=this.getPathCount(t),r=this.getPointCount(t),i=this.getNextGeometry(i);continue}for(let e=this.getFirstPath(i);e!==-1;e=this.getNextPath(e))this.setPathGeometry(e,t);n+=this.getPathCount(i),r+=this.getPointCount(i);let e=this.getLastPath(t),a=this.getFirstPath(i);e===-1?this.setFirstPath(t,a):this.setNextPath(e,a),a!==-1&&(this.setPrevPath(a,e),this.setLastPath(t,this.getLastPath(i))),this.setFirstPath(i,-1),this.setLastPath(i,-1);let o=i;i=this.getNextGeometry(i),this.setGeometryVertexCount(o,0),this.removeGeometry(o);continue}i=this.getNextGeometry(i)}return t!==-1&&(this.setGeometryVertexCount(t,r),this.setGeometryPathCount(t,n),this.dbgVerifyVertexCounts()),t}setFillRule(e,t){let n=this.m_geometryIndexList.getField(e,2);n&=-134217729,n|=t===1?134217728:0,this.m_geometryIndexList.setField(e,2,n)}getFillRule(e){return this.m_geometryIndexList.getField(e,2)&134217728?1:0}setGeometryModified(e,t){let n=this.m_geometryIndexList.getField(e,2);!!(n&67108864)!==t&&(n&=-67108865,n|=t?67108864:0,this.m_geometryIndexList.setField(e,2,n))}getGeometryModified(e){return!!(this.m_geometryIndexList.getField(e,2)&67108864)}setGeometryModifiedWithVertex(e,t){let n=this.getPathFromVertex(e),r=this.getGeometryFromPath(n);this.setGeometryModified(r,t)}getGeometryModifiedWithVertex(e){let t=this.getPathFromVertex(e),n=this.getGeometryFromPath(t);return this.getGeometryModified(n)}swapGeometry(e,t){let n=this.getFirstPath(e),r=this.getFirstPath(t),i=this.getLastPath(e),a=this.getLastPath(t);for(let n=this.getFirstPath(e);n!==-1;n=this.getNextPath(n))this.setPathGeometry(n,t);for(let n=this.getFirstPath(t);n!==-1;n=this.getNextPath(n))this.setPathGeometry(n,e);this.setFirstPath(e,r),this.setFirstPath(t,n),this.setLastPath(e,a),this.setLastPath(t,i);let o=this.getPointCount(e),s=this.getPathCount(e),c=this.getPointCount(t),l=this.getPathCount(t);this.setGeometryVertexCount(e,c),this.setGeometryVertexCount(t,o),this.setGeometryPathCount(e,l),this.setGeometryPathCount(t,s);let u=this.m_geometryIndexList.getField(e,2),d=this.m_geometryIndexList.getField(t,2);this.m_geometryIndexList.setField(e,2,d),this.m_geometryIndexList.setField(t,2,u)}addPathFromMultiPath(e,t,n){let r=this.createGeometry(n?s.enumPolygon:s.enumPolyline,e.getDescription()),i=e.getImpl();if(e.getPathSize(t)<2)return r;this.m_vertices.reserveRounded(this.m_vertices.getPointCount()+e.getPathSize(t)),this.m_verticesMp.addPoints(e,e.getPathStart(t),i.getPathEnd(t)),this.m_xyStream=this.m_vertices.getAttributeStreamRef(0);let a=this.insertPath(r,-1);this.setClosedPath(a,i.isClosedPath(t)||n);let o=this.m_segments!==null||i.getSegmentFlagsStreamRef()!==null;for(let e=i.getPathStart(t),n=i.getPathEnd(t);e<n;e++){let t=this.insertVertex_(a,-1,null,!1);if(o){let n=this.getVertexIndex(t);if(i.getSegmentFlags(e)&1)this.setSegmentToIndex(n,null);else{let t=new $;i.querySegment(e,t,!0),this.setSegmentToIndex(n,t.releaseSegment())}}}return i.isStrongPathStart(t)&&this.setStrongPathStart(a,!0),i.isStrongPathEnd(t)&&this.setStrongPathEnd(a,!0),r}getGeometry(e){let n=this.getGeometryType(e),r=ga(n,this.m_verticesMp.getDescription()),i=this.getPointCount(e);if(i===0)return r;if(u(n)){let t=r.getImpl(),n=this.getPathCount(e),a=M(n+1),o=ae(n+1,0),s=r.getDescription(),c=this.hasCurves();for(let r=0,c=s.getAttributeCount();r<c;r++){let c=s.getSemantics(r),l=_a.getComponentCount(c),u=ee(c,i),d=this.m_vertices.getAttributeStreamRef(c),f=0,p=0,m=0;for(let t=this.getFirstPath(e);t!==-1;t=this.getNextPath(t)){let e=0;this.isClosedPath(t)&&(e|=1),this.isExterior(t)&&(e|=8),this.isStrongPathStart(t)&&(e|=2),this.isStrongPathEnd(t)&&(e|=4),e&&o.setBits(p,e);let n=this.getPathSize(t);if(a.write(p++,m),m+=n,c===0){let e=d,n=u,r;for(let i=this.getFirstVertex(t);f<m;i=this.getNextVertex(i),f++){let t=this.getVertexIndex(i);r=e.readPoint2D(t*2),n.writePoint2D(f*2,r)}}else for(let e=this.getFirstVertex(t);f<m;e=this.getNextVertex(e),f++){let t=this.getVertexIndex(e);for(let e=0;e<l;e++){let n=d.readAsDbl(t*l+e);u.writeAsDbl(f*l+e,n)}}}t.setAttributeStreamRef(c,u),a.write(n,i)}if(t.setPathFlagsStreamRef(o),t.setPathStreamRef(a),t.notifyModifiedFlags(65535),c){let n=0,r=0;for(let i=this.getFirstPath(e);i!==-1;i=this.getNextPath(i)){let e=this.getPathSize(i);n+=e;for(let e=this.getFirstVertex(i);r<n;e=this.getNextVertex(e)){let n=this.getSegment(e);n!==null&&n.isCurve()&&t.replaceSegment(r,n,!0),r++}}}}else if(n===s.enumMultiPoint){let t=r.getImpl(),n=r.getDescription();t.reserve(i),t.resizeNoInit(i);for(let r=0,i=n.getAttributeCount();r<i;r++){let i=n.getSemantics(r),a=_a.getComponentCount(i),o=t.getAttributeStreamRef(i),s=this.m_vertices.getAttributeStreamRef(i),c=0,l=this.getFirstPath(e),u=this.getPathSize(l);for(let e=this.getFirstVertex(l);c<u;e=this.getNextVertex(e),c++){let t=this.getVertexIndex(e);for(let e=0;e<a;e++){let n=s.readAsDbl(t*a+e);o.writeAsDbl(c*a+e,n)}}t.setAttributeStreamRef(i,o)}t.notifyModifiedFlags(65535)}else t(`getGeometry`);return r}queryPointGeometryOnly(e,t){this.getGeometryType(e)!==s.enumMultiPoint&&i(`get_point_geometry_only`);let n=this.getPointCount(e);if(n>1&&i(`get_point_geometry_only`),n===0){t.assignVertexDescription(this.m_vertexDescription),t.setEmpty();return}let r=this.getFirstPath(e),a=this.getFirstVertex(r);this.queryPoint(a,t)}removeGeometry(e){for(let t=this.getFirstPath(e);t!==-1;t=this.removePath(t));let t=this.getPrevGeometry(e),n=this.getNextGeometry(e);return t===-1?this.m_firstGeometry=n:this.setNextGeometry(t,n),n===-1?this.m_lastGeometry=t:this.setPrevGeometry(n,t),this.freeGeometry(e),n}createGeometry(e,t){t===void 0&&(t=y());let n=this.newGeometry(e);return this.m_vertices||=(this.m_verticesMp=new vn({vd:t}),this.m_verticesMp.getImpl()),this.mergeVertexDescription(t),this.m_firstGeometry===-1?(this.m_firstGeometry=n,this.m_lastGeometry=n):(this.setPrevGeometry(n,this.m_lastGeometry),this.setNextGeometry(this.m_lastGeometry,n),this.m_lastGeometry=n),n}getFirstGeometry(){return this.m_firstGeometry}getLastGeometry(){return this.m_lastGeometry}getNextGeometry(e){return this.m_geometryIndexList.getField(e,1)}getPrevGeometry(e){return this.m_geometryIndexList.getField(e,0)}getGeometryType(e){return this.m_geometryIndexList.getField(e,2)&16777215}setGeometryUserIndex(e,t,n){let r=this.m_geometryIndices[t],i=this.getGeometryIndex(e);i>=r.size()&&r.resize(Math.max(i*1.25,16),-1),r.write(i,n)}getGeometryUserIndex(e,t){let n=this.getGeometryIndex(e),r=this.m_geometryIndices[t];return n<r.size()?r.read(n):-1}createGeometryUserIndex(){for(let e=0;e<this.m_geometryIndices.length;e++)if(this.m_geometryIndices[e]===null)return this.m_geometryIndices[e]=M(0),e;this.m_geometryIndices.push(M(0));let e=this.m_geometryIndices.length-1;return r(e>=0&&e<=2**53-1),e}removeGeometryUserIndex(e){for(this.m_geometryIndices[e]=null;this.m_geometryIndices.length>0&&this.m_geometryIndices.at(-1)===null;)this.m_geometryIndices.pop()}getFirstPath(e){return this.m_geometryIndexList.getField(e,3)}getLastPath(e){return this.m_geometryIndexList.getField(e,4)}hasPointFeatures(){for(let e=this.getFirstGeometry();e!==-1;e=this.getNextGeometry(e))if(!u(this.getGeometryType(e)))return!0;return!1}getPointCount(e){return this.m_geometryIndexList.getField(e,5)}getPathCount(e){return this.m_geometryIndexList.getField(e,6)}filterClosePoints(e,t,n,i,a){let o=e*e,c=0,l=this.hasCurves(),d=this.hasSegmentParentage();for(let e=a===-1?this.getFirstGeometry():a;e!==-1;e=a===-1?this.getNextGeometry(e):-1){let a=this.getGeometryType(e);if(!u(a)||n&&a!==s.enumPolygon)continue;let f=this.getGeometryType(e)===s.enumPolygon,p=this.getGeometryModified(e);for(let n=this.getFirstPath(e);n!==-1;){let a=0;for(let t=this.getFirstVertex(n);a<Math.trunc(this.getPathSize(n)/2);){let s=this.getNextVertex(t);if(s===-1)break;let u=this.getXY(t),f=this.getXY(s),m=P.sqrDistance(u,f),h=!0;do if(m<=o){if(l){let e=this.getSegment(t);if(e!==null){let t=e.calculateLength2D();if(m=t*t,m>o)break}}if(m===0?c===0&&(c=-1):c=1,s!==this.getLastVertex(n)){let n=d&&(this.getSegmentParentageBreakVertex(t)||this.getSegmentParentageBreakVertex(s));if(this.transferAllDataToTheVertex(s,t,!0),this.removeVertex(s,!1),i&&!p&&(this.setGeometryModified(e,!0),p=!0),d&&t!==s){this.setSegmentParentageBreakVertex(t,n);let e=this.getNextVertex(t);r(e!==-1),this.isDiscontinuousSegmentParentage(e)&&this.setSegmentParentageBreakVertex(e,!0)}}h=!1}while(0);h&&(t=this.getNextVertex(t)),a++}let s=this.getFirstVertex(n);for(let t=this.isClosedPath(n)?s:this.getLastVertex(n);this.getPathSize(n)>0;){let a=this.getPrevVertex(t);if(a!==-1){let u=this.getXY(a),f=this.getXY(t),m=P.sqrDistance(u,f),h=!0;do if(m<=o){if(l){let e=this.getSegment(a);if(e!==null){let t=e.calculateLength2D();if(m=t*t,m>o)break}}if(m===0?c===0&&(c=-1):c=1,d){r(this.m_segmentParentageIndex>=0);let e=this.getUserIndex(t,this.m_segmentParentageIndex);this.transferAllDataToTheVertex(a,t,!0),this.setUserIndex(t,this.m_segmentParentageIndex,e)}else this.transferAllDataToTheVertex(a,t,!0);let u=d&&(this.getSegmentParentageBreakVertex(t)||this.getSegmentParentageBreakVertex(a));this.removeVertex(a,!0),i&&!p&&(this.setGeometryModified(e,!0),p=!0),d&&a!==t&&(u||this.isDiscontinuousSegmentParentage(t))&&this.setSegmentParentageBreakVertex(t,!0),s===a&&(s=this.getFirstVertex(n)),h=!1}while(0);if(h&&(t=this.getPrevVertex(t),t===s))break}else break}let u=this.getPathSize(n),m=t&&u<(f?3:2);m&&f&&u===2&&l&&(m=!this.pathHasCurves(n)),m?(n=this.removePath(n),c===0&&(c=-1),i&&!p&&(this.setGeometryModified(e,!0),p=!0)):n=this.getNextPath(n)}}return c}filterClosePoints3D(e,t,n,i,a,o){return r(0),0}hasDegenerateSegments(e){for(let t=this.getFirstGeometry();t!==-1;t=this.getNextGeometry(t))if(u(this.getGeometryType(t)))for(let n=this.getFirstPath(t);n!==-1;){let t=this.getPathSize(n);if(t===0)return!0;let r=this.getFirstVertex(n);for(let n=0;n<t;n++){let t=this.getNextVertex(r);if(t===-1)break;let n=this.getVertexIndex(r),i=this.getSegmentFromIndex(n),a=0;if(i!==null){if(a=i.calculateLowerLength2D(),a<=e&&(a=i.calculateUpperLength2D(),a<=e||(a=i.calculateLength2D(),a<=e)))return!0}else{let r=this.getVertexIndex(t);if(a=this.m_vertices.getShortestDistance(n,r),a<=e)return!0}r=t}n=this.getNextPath(n)}return!1}hasDegenerateSegments3D(e,t){return r(0),!1}transferAllDataToTheVertex(e,t,n=!1){let r=this.getVertexIndex(e),i=this.getVertexIndex(t);if(n){let e=1,t=1;if(this.m_ranks&&(e=this.getRankWithIndex(r),t=this.getRankWithIndex(i)),e>t&&this.setRankWithIndex(i,e),e>=t&&this.m_weights){let n=this.getWeightWithIndex(r),a=this.getWeightWithIndex(i);(e>t||n>a)&&this.setWeightWithIndex(i,n)}}else{if(this.m_weights){let e=this.getWeightWithIndex(r);this.setWeightWithIndex(i,e)}if(this.m_ranks){let e=this.getRankWithIndex(r);this.setRankWithIndex(i,e)}}if(this.m_segmentWeights){let e=this.getSegmentWeightWithIndex(r);this.setSegmentWeightWithIndex(i,e)}if(this.m_segmentRanks){let e=this.getSegmentRankWithIndex(r);this.setSegmentRankWithIndex(i,e)}for(let n=0,r=this.m_indices.length;n<r;n++)if(n!==this.m_selectionIndex&&this.m_indices[n]!==null){let r=this.getUserIndex(e,n);this.setUserIndex(t,n,r)}let a=this.selected(e);a!==this.selected(t)&&(a?this.select(t):this.unselect(t))}splitSegmentAxisAware(e,t,n,r,a){let o=0,s=this.getNextVertex(e);s===-1&&i(``);let c=this.getVertexIndex(e),l=this.getVertexIndex(s),u=this.getSegmentFromIndex(c),d=this.m_vertices.getShortestDistance(c,l),f=this.getPathFromVertex(e),p=this.m_bHasAttributes;p&&u&&(d=u.calculateLength2D());let m=this.getSegmentParentage(e),h=this.getHelperPoint();if(u){let e=0,i=0,a=-1;for(let g=0;g<n;g++){let n=t[g];if(e<n&&n<1){let t=u.cut(e,n);if(r!==null&&(g>0&&t.setStartXY(r[g-1]),t.setEndXY(r[g]),t.normalizeAfterEndpointChange(),i=g),p){let e=d>0?u.calculateSubLengthFromStart(n)/d:0;this.m_vertices.interpolateTwoVertices(c,l,e,h)}h.setXY(t.getEndXY()),a=this.insertVertex(f,s,h),o++;let _=this.getPrevVertex(a),v=this.getVertexIndex(_);this.setSegmentToIndex(v,t),m!==-1&&this.setSegmentParentageAndBreak(a,m,!1),e=n}}if(a!==-1){let t=u.cut(e,1);r!==null&&(t.setStartXY(r[i]),t.normalizeAfterEndpointChange());let n=this.getVertexIndex(a);this.setSegmentToIndex(n,t)}}else{let e=0;for(let r=0;r<n;r++){let n=t[r];if(e<n&&n<1){this.m_vertices.interpolateTwoVertices(c,l,n,h);let e=this.insertVertex(f,s,h);o++,m!==-1&&this.setSegmentParentageAndBreak(e,m,!1)}e=n}}return o}splitSegment(e,t,n,r=null){return this.splitSegmentAxisAware(e,t,n,r,-1)}snapControlPoints(e,t,n){this.getNextVertex(e)===-1&&i(``);let r=e,a=!1;for(let e=0;e<t;++e){let e=this.getVertexIndex(r),t=this.getSegmentFromIndex(e);if(t){let e=t.snapControlPoints(n);a||=e}r=this.getNextVertex(r)}return a}snapControlPointsOnSelection(e){if(!this.hasCurves())return!1;let t=0,n=this.queryVertexIteratorOnSelection();for(let r=n.next();r!==-1;r=n.next()){let n=this.getVertexIndex(r),i=this.getSegmentFromIndex(n);i&&(t|=+!!i.snapControlPoints(e))}return t!==0}calculateSubLength2D(e,t,n){return r(0),0}setPoint(e,t,n){if(this.setPointOnly(e,t),this.m_segments!==null){let r=this.getVertexIndex(e),i=this.getSegmentFromIndex(r);i!==null&&(i.setStartXY(t.getXY()),i.normalizeAfterEndpointChange(),n&&i.ensureXYMonotone());let a=this.getPrevVertex(e);if(a!==-1){let e=this.getVertexIndex(a),r=this.getSegmentFromIndex(e);r!==null&&(r.setEndXY(t.getXY()),r.normalizeAfterEndpointChange(),n&&r.ensureXYMonotone())}}}setPointEx(e,t,n,r,i){this.setPoint(e,t,i);let a=this.getVertexIndex(e);this.setWeightWithIndex(a,r),this.setRankWithIndex(a,n)}setPointOnly(e,t){let n=this.getVertexIndex(e);this.m_vertices.setPointByValNoCurves(n,t)}setPointOnlyEx(e,t,n,i){r(0)}queryPoint(e,t){let n=this.getVertexIndex(e);this.m_vertices.getPointByVal(n,t)}setXY(e,t){this.setXYCoords(e,t.x,t.y)}setXYCoords(e,t,n){let r=this.getVertexIndex(e);if(this.m_vertices?.setXYCoordsNoCurves(r,t,n),this.m_segments!==null){let i=this.getSegmentFromIndex(r);i!==null&&(i.setStartXYCoords(t,n),i.normalizeAfterEndpointChange());let a=this.getPrevVertex(e);if(a!==-1){let e=this.getVertexIndex(a),r=this.getSegmentFromIndex(e);r!=null&&(r.setEndXYCoords(t,n),r.normalizeAfterEndpointChange())}}}setXYMonotonic(e,t,n){let r=this.getVertexIndex(e);if(this.m_vertices.setXYCoordsNoCurves(r,t,n),this.m_segments!==null){let i=this.getSegmentFromIndex(r);if(i!==null){let e=i.getEndXY();i.setCoordsForIntersector(new P(t,n),e,!1),i.ensureXYMonotone()}let a=this.getPrevVertex(e);if(a!==-1){let e=this.getVertexIndex(a),r=this.getSegmentFromIndex(e);if(r!==null){let e=r.getStartXY();r.setCoordsForIntersector(e,new P(t,n),!1),r.ensureXYMonotone()}}}}setXYMonotonicPoint2D(e,t){this.setXYMonotonic(e,t.x,t.y)}queryXY(e,t){let n=this.getVertexIndex(e);return this.m_vertices.queryXY(n,t)}getXY(e){let t=this.getVertexIndex(e);return this.m_vertices.getXY(t)}getXYWithIndex(e){return this.m_xyStream.readPoint2D(e*2)}static setSegDefault(e,t,n){r(0)}setXYZ(e,t,n){r(0)}setXYZCoords(e,t,n,i){r(0)}queryXYZ(e,t){r(0)}getXYZ(e){return r(0),w.getNAN()}getXYZWithIndex(e){return r(0),w.getNAN()}mergeVertexDescription(e){this.m_verticesMp.mergeVertexDescription(e),this.m_vertexDescription=this.m_verticesMp.getDescription(),this.m_bHasAttributes=this.m_vertexDescription.getAttributeCount()>1}addAttribute(e){r(0)}getAttributeAsDbl(e,t,n){return this.m_vertices.getAttributeAsDbl(e,this.getVertexIndex(t),n)}queryAttributeAsDbl(e,t,n,i){r(0)}setAttribute(e,t,n,i){r(0)}setAttributeInt(e,t,n,i){r(0)}getVertexDescription(){return this.m_vertexDescription}getMinPathVertexY(e){return r(0),0}getVertexIndex(e){return this.m_vertexIndexList.getField(e,0)}getY(e){let t=this.getVertexIndex(e);return this.m_vertices.queryXY(t,this.m_workPoint2D),this.m_workPoint2D.y}getX(e){return this.getXY(e).x}isEqualXY(e,t){return this.queryXY(e,this.m_workPoint2D),this.queryXY(t,this.m_workPoint2_2D),this.m_workPoint2D.isEqualPoint2D(this.m_workPoint2_2D)}isEqualXYPoint2D(e,t){return this.queryXY(e,this.m_workPoint2D),this.m_workPoint2D.isEqualPoint2D(t)}isEqualXYZPoint3D(e,t){return r(0),!1}setWeight(e,t){t<1&&(t=1);let n=t===1;if(this.m_weights==null){if(n)return;this.m_weights=oe(this.m_vertices.getPointCount(),1)}let r=this.getVertexIndex(e);if(r>=this.m_weights.size()){if(n)return;this.m_weights.resize(r+1,1)}this.m_weights.write(r,t)}setWeightWithIndex(e,t){t<1&&(t=1);let n=t===1;if(this.m_weights===null){if(n)return;this.m_weights=oe(this.m_vertices.getPointCount(),1)}if(e>=this.m_weights.size()){if(n)return;this.m_weights.resize(e+1,1)}this.m_weights.write(e,t)}getWeight(e){if(this.m_weights===null)return 1;let t=this.getVertexIndex(e);return t>=this.m_weights.size()?1:this.m_weights.read(t)}getWeightWithIndex(e){return this.m_weights===null||e>=this.m_weights.size()?1:this.m_weights.read(e)}getRank(e){if(this.m_ranks===null)return 1;let t=this.getVertexIndex(e);return t>=this.m_ranks.size()?1:this.m_ranks.read(t)}getRankWithIndex(e){return this.m_ranks===null||e>=this.m_ranks.size()?1:this.m_ranks.read(e)}setRank(e,t){t<1&&(t=1);let n=t===1;if(this.m_ranks===null){if(n)return;this.m_ranks=M(this.m_vertices.getPointCount(),1)}let r=this.getVertexIndex(e);if(r>=this.m_ranks.size()){if(n)return;this.m_ranks.resize(r+1,1)}this.m_ranks.write(r,t)}setRankWithIndex(e,t){t<1&&(t=1);let n=t===1;if(this.m_ranks===null){if(n)return;this.m_ranks=M(this.m_vertices.getPointCount(),1)}if(e>=this.m_ranks.size()){if(n)return;this.m_ranks.resize(e+1,1)}this.m_ranks.write(e,t)}setSegmentWeight(e,t){t<1&&(t=1);let n=t===1;if(this.m_segmentWeights===null){if(n)return;this.m_segmentWeights=oe(this.m_vertices.getPointCount(),1)}let r=this.getVertexIndex(e);if(r>=this.m_segmentWeights.size()){if(n)return;this.m_segmentWeights.resize(r+1,1)}this.m_segmentWeights.write(r,t)}setSegmentWeightWithIndex(e,t){t<1&&(t=1);let n=t===1;if(this.m_segmentWeights==null){if(n)return;this.m_segmentWeights=oe(this.m_vertices.getPointCount(),1)}if(e>=this.m_segmentWeights.size()){if(n)return;this.m_segmentWeights.resize(e+1,1)}this.m_segmentWeights.write(e,t)}getSegmentWeight(e){if(this.m_segmentWeights===null)return 1;let t=this.getVertexIndex(e);return t>=this.m_segmentWeights.size()?1:this.m_segmentWeights.read(t)}getSegmentWeightWithIndex(e){return this.m_segmentWeights==null||e>=this.m_segmentWeights.size()?1:this.m_segmentWeights.read(e)}getSegmentRank(e){if(this.m_segmentRanks===null)return wa.st_defaultRank;let t=this.getVertexIndex(e);return t>=this.m_segmentRanks.size()?wa.st_defaultRank:this.m_segmentRanks.read(t)}getSegmentRankWithIndex(e){return this.m_segmentRanks===null||e>=this.m_segmentRanks.size()?1:this.m_segmentRanks.read(e)}setSegmentRank(e,t){t<1&&(t=1);let n=t===1;if(this.m_segmentRanks===null){if(n)return;this.m_segmentRanks=M(this.m_vertices.getPointCount(),1)}let r=this.getVertexIndex(e);if(r>=this.m_segmentRanks.size()){if(n)return;this.m_segmentRanks.resize(r+1,1)}this.m_segmentRanks.write(r,t)}setSegmentRankWithIndex(e,t){t<1&&(t=1);let n=t===1;if(this.m_segmentRanks===null){if(n)return;this.m_segmentRanks=M(this.m_vertices.getPointCount(),1)}if(e>=this.m_segmentRanks.size()){if(n)return;this.m_segmentRanks.resize(e+1,1)}this.m_segmentRanks.write(e,t)}static st_defaultRank=1;removeWeights(){this.m_weights=null,this.m_segmentWeights=null}removeRanks(){this.m_ranks=null,this.m_segmentRanks=null}setUserIndex(e,t,n){let r=this.m_indices[t],i=this.getVertexIndex(e);if(r.size()<=i){if(n!==-1)r.resize(this.m_vertices.getPointCount(),-1);else return}r.write(i,n)}getUserIndex(e,t){let n=this.getVertexIndex(e),r=this.m_indices[t];return n<r.size()?r.read(n):-1}addToUserIndex(e,t,n){let r=this.m_indices[t],i=this.getVertexIndex(e);r.size()<=i&&r.resize(this.m_vertices.getPointCount(),-1);let a=r.read(i);r.write(i,a+n)}createUserIndex(){for(let e=0;e<this.m_indices.length;e++)if(this.m_indices[e]===null)return this.m_indices[e]=this.allocateIndex(),e;this.m_indices.push(this.allocateIndex());let e=this.m_indices.length-1;return r(e>=0&&e<=we()),e}createUserIndexUninitialized(){for(let e=0;e<this.m_indices.length;e++)if(this.m_indices[e]===null)return this.m_indices[e]=this.allocateIndex(!1),e;this.m_indices.push(this.allocateIndex(!1));let e=this.m_indices.length-1;return r(e>=0&&e<=2**53-1),e}fillUserIndexForGeometry(e,t,n){let r=this.m_indices[t],i=r.size();for(let t=this.getFirstPath(e);t!==-1;t=this.getNextPath(t)){let e=this.getFirstVertex(t);for(let a=0,o=this.getPathSize(t);a<o;a++,e=this.getNextVertex(e)){let t=this.getVertexIndex(e);t<i&&r.write(t,n)}}}fillUserIndexForSelection(e,t){r(0)}removeUserIndex(e){for(this.recycleUserIndex(this.m_indices[e]),this.m_indices[e]=null;this.m_indices.length>0&&this.m_indices[this.m_indices.length-1]===null;)this.m_indices.pop()}replaceCurveWithLine(e){if(this.m_segments!==null){let t=this.getVertexIndex(e);this.setSegmentToIndex(t,null)}}queryLineConnector(e,t,n=!1){let r=this.getNextVertex(e);if(r===-1)return!1;if(!this.m_bHasAttributes||n){let n=this.getXY(e);t.setStartXY(n);let i=this.getXY(r);t.setEndXY(i)}else{let n=new N({vd:this.getVertexDescription()});this.queryPoint(e,n),t.setStart(n),this.queryPoint(r,n),t.setEnd(n)}return!0}queryLineConnector3D(e,t,n=!1){return r(0),!1}hasCurves(){return this.m_segments!==null}geometryHasCurves(e){return r(0),!1}pathHasCurves(e){if(!this.hasCurves())return!1;let t=this.getFirstVertex(e);if(t===-1)return!1;let n=this.getPathSize(e),r=t;for(let e=0;e<n;e++,r=this.getNextVertex(r)){let e=this.getSegment(r);if(e!==null&&e.getGeometryType()!==s.enumLine)return!0}return!1}insertPath(e,t){let n=-1;t===-1?n=this.getLastPath(e):(e!==this.getGeometryFromPath(t)&&i(``),n=this.getPrevPath(t));let r=this.newPath(e);return t!==-1&&this.setPrevPath(t,r),this.setNextPath(r,t),this.setPrevPath(r,n),n===-1?this.setFirstPath(e,r):this.setNextPath(n,r),t===-1&&this.setLastPath(e,r),this.setGeometryPathCount(e,this.getPathCount(e)+1),r}removePath(e){let t=this.getPrevPath(e),n=this.getNextPath(e),r=this.getGeometryFromPath(e);return t===-1?this.setFirstPath(r,n):this.setNextPath(t,n),n===-1?this.setLastPath(r,t):this.setPrevPath(n,t),this.clearPath(e),this.setGeometryPathCount(r,this.getPathCount(r)-1),this.freePath(e),n}clearPath(e){let t=this.getFirstVertex(e);if(t!==-1){let n=t;for(let t=0,r=this.getPathSize(e);t<r;t++){let e=n;n=this.getNextVertex(n),this.freeVertex(e)}let r=this.getGeometryFromPath(e);this.setGeometryVertexCount(r,this.getPointCount(r)-this.getPathSize(e))}this.setPathSize(e,0)}getNextPath(e){return this.m_pathIndexList.getField(e,2)}getPrevPath(e){return this.m_pathIndexList.getField(e,1)}getPathSize(e){return this.m_pathIndexList.getField(e,3)}isClosedPath(e){return!!(this.getPathFlags(e)&1)}setClosedPath(e,t){if(this.isClosedPath(e)===t)return;if(this.getPathSize(e)>0){let n=this.getFirstVertex(e),r=this.getLastVertex(e);if(t){this.setNextVertex(r,n),this.setPrevVertex(n,r);let e=this.getVertexIndex(r);this.setSegmentToIndex(e,null)}else{this.setNextVertex(r,-1),this.setPrevVertex(n,-1);let e=this.getVertexIndex(r);this.setSegmentToIndex(e,null)}}let n=(this.getPathFlags(e)|1)-1;this.setPathFlags(e,n|+!!t)}closeAllPaths(e){r(0)}isStrongPathStart(e){return!!(this.getPathFlags(e)&8)}isStrongPathEnd(e){return!!(this.getPathFlags(e)&16)}setStrongPathStart(e,t){let n=(this.getPathFlags(e)|8)-8;this.setPathFlags(e,n|(t?8:0))}setStrongPathEnd(e,t){let n=(this.getPathFlags(e)|16)-16;this.setPathFlags(e,n|(t?16:0))}getGeometryFromPath(e){return this.m_pathIndexList.getField(e,7)}isExterior(e){return!!(this.getPathFlags(e)&2)}setExterior(e,t){let n=(this.getPathFlags(e)|2)-2;this.setPathFlags(e,n|(t?2:0))}getRingArea(e){if(this.isRingAreaValid(e))return this.m_pathAreas[this.getPathIndex(e)];let t=this.getFirstVertex(e);if(t===-1)return 0;let n=this.getXY(t),r=new De(0),i=this.getPathSize(e);if(i>2){let e=n.clone(),a=e.x,o=e.y,s=this.getNextVertex(t),c=this.getXY(s);s=this.getNextVertex(s);let l=P.getNAN();for(let t=2;t<i;t++,s=this.getNextVertex(s))this.queryXY(s,l),r.pe((l.x-e.x)*(c.y-o)),e.setCoordsPoint2D(c),c.setCoordsPoint2D(l);r.pe((a-e.x)*(c.y-o))}if(this.hasCurves()){let e=t;for(let t=0;t<i;t++,e=this.getNextVertex(e)){let t=this.getSegment(e);if(t===null||t.getGeometryType()===s.enumLine)continue;let n=t.calculateArea2DHelper()*2;r.pe(n)}}this.setRingAreaValid(e,!0);let a=r.getResult()*.5;return this.m_pathAreas[this.getPathIndex(e)]=a,a}getPathIndexInternal(e){return this.getPathIndex(e)}getPathInternalIndexFromVertex(e){return this.getPathIndex(this.getPathFromVertex(e))}setPathUserIndex(e,t,n){let r=this.m_pathindices[t],i=this.getPathIndex(e);r.size()<this.m_pathAreas.length&&r.resize(this.m_pathAreas.length,-1),r.write(i,n)}getPathUserIndex(e,t){let n=this.getPathIndex(e),r=this.m_pathindices[t];return n<r.size()?r.read(n):-1}createPathUserIndex(){for(let e=0;e<this.m_pathindices.length;e++)if(this.m_pathindices[e]===null)return this.m_pathindices[e]=this.allocatePathIndex(),e;this.m_pathindices.push(this.allocatePathIndex());let e=this.m_pathindices.length-1;return r(e>=0&&e<=2**53-1),e}fillPathUserIndexForGeometry(e,t,n){let r=this.m_pathindices[t],i=r.size();for(let t=this.getFirstPath(e);t!==-1;t=this.getNextPath(t)){let e=this.getPathIndex(t);e<i&&r.write(e,n)}}removePathUserIndex(e){for(this.recyclePathUserIndex(this.m_pathindices[e]),this.m_pathindices[e]=null;this.m_pathindices.length>0&&this.m_pathindices.at(-1)===null;)this.m_pathindices.pop()}movePath(e,t,n){if(n===-1&&i(``),t===n)return;let r=this.getNextPath(n),a=this.getPrevPath(n),o=this.getGeometryFromPath(n);a===-1?this.setFirstPath(o,r):this.setNextPath(a,r),r===-1?this.setLastPath(o,a):this.setPrevPath(r,a),this.setGeometryVertexCount(o,this.getPointCount(o)-this.getPathSize(n)),this.setGeometryPathCount(o,this.getPathCount(o)-1),a=t===-1?this.getLastPath(e):this.getPrevPath(t),this.setPrevPath(n,a),this.setNextPath(n,t),t===-1?this.setLastPath(e,n):this.setPrevPath(t,n),a===-1?this.setFirstPath(e,n):this.setNextPath(a,n),this.setGeometryVertexCount(e,this.getPointCount(e)+this.getPathSize(n)),this.setGeometryPathCount(e,this.getPathCount(e)+1),this.setPathGeometry(n,e)}addVertex(e,t){return this.m_vertices.getPointByVal(this.getVertexIndex(t),this.getHelperPoint()),this.insertVertex_(e,-1,this.getHelperPoint(),!1)}insertVertex(e,t,n){return this.insertVertex_(e,t,n,!0)}removeVertex(e,t){let n=this.getPathFromVertex(e),r=this.getPrevVertex(e),i=this.getNextVertex(e);r!==-1&&this.setNextVertex(r,i);let a=this.getPathSize(n);if(e===this.getFirstVertex(n)&&this.setFirstVertex(n,a>1?i:-1),i!==-1&&this.setPrevVertex(i,r),e===this.getLastVertex(n)&&this.setLastVertex(n,a>1?r:-1),this.hasCurves()&&r!==-1&&i!==-1){let n=this.getVertexIndex(e),a=this.getVertexIndex(r),o=this.getVertexIndex(i);if(t){let e=this.getSegmentFromIndex(a);if(e!==null){let t=this.m_vertices.getXY(o);e.setEndXY(t),e.normalizeAfterEndpointChange()}this.setSegmentToIndex(n,null)}else{let e=this.getSegmentFromIndex(n);if(this.setSegmentToIndex(n,null),e!==null){let t=this.m_vertices.getXY(a);e.setStartXY(t),e.normalizeAfterEndpointChange()}this.setSegmentToIndex(a,e)}}this.setPathSize(n,a-1);let o=this.getGeometryFromPath(n);return this.setGeometryVertexCount(o,this.getPointCount(o)-1),this.freeVertex(e),i}removeVertices(e,t){r(e!==t);let n=this.getPathFromVertex(e),i=this.getPrevVertex(e),a=this.getPrevVertex(t);i!==-1&&this.setNextVertex(i,t);let o=this.getPathSize(n),s=this.getVertexIndex(e);this.setSegmentToIndex(s,null),this.setPrevVertex(t,i),this.setPrevVertex(e,-1),this.setNextVertex(a,-1);let c=0,l=e,u=this.getFirstVertex(n),d=!1;for(;;){let e=this.getNextVertex(l);if(d||=u===l,this.freeVertex(l),c++,l===a)break;l=e}o-=c,d&&this.setFirstVertex(n,o>0?t:-1),this.setPathSize(n,o);let f=this.getGeometryFromPath(n);this.setGeometryVertexCount(f,this.getPointCount(f)-c)}getFirstVertex(e){return this.m_pathIndexList.getField(e,4)}getLastVertex(e){return this.m_pathIndexList.getField(e,5)}getNextVertex(e){return this.m_vertexIndexList.getField(e,2)}getPrevVertex(e){return this.m_vertexIndexList.getField(e,1)}getNextVertexEx(e,t){return t>0?this.m_vertexIndexList.getField(e,2):this.m_vertexIndexList.getField(e,1)}getPrevVertexEx(e,t){return t>0?this.m_vertexIndexList.getField(e,1):this.m_vertexIndexList.getField(e,2)}getPathFromVertex(e){return this.m_vertexIndexList.getField(e,3)}addPoint(e,t){return this.insertVertex_(e,-1,t,!1)}getGeometryFromVertex(e){return this.getGeometryFromPath(this.getPathFromVertex(e))}replaceNaNs(e,n){this.m_vertexDescription.hasAttribute(e)||t(``),this.m_vertices.replaceNaNs(e,n)}removeNaNVertices(){for(let e=this.getFirstGeometry();e!==-1;e=this.getNextGeometry(e))for(let t=this.getFirstPath(e);t!==-1;t=this.getNextPath(t)){let e=this.getFirstVertex(t);for(let n=0,r=this.getPathSize(t);n<r;n++)e=this.getXY(e).isFinite()?this.getNextVertex(e):this.removeVertex(e,!0)}}queryVertexIterator(e=-1){return this.queryVertexIteratorEx(!1,e)}queryVertexIteratorEx(e,t=-1){let n=-1,r=-1,i=-1,a=-1,o=0,s=!1;for(n=t===-1?this.getFirstGeometry():t;n!==-1;n=this.getNextGeometry(n))if(!e||u(this.getGeometryType(n))){for(r=this.getFirstPath(n);r!==-1;r=this.getNextPath(r))if(i=this.getFirstVertex(r),a=i,o=0,i!==-1){s=!0;break}if(s||t!==-1)break}return s||(n=-1),Sa.create_(this,n,r,i,a,o,e,!1,t!==-1)}queryVertexIteratorOnSelection(e=-1){return this.m_selection?Sa.create_(this,e,-1,-1,-1,-1,!1,!0,e!==-1):this.queryVertexIteratorEx(!1,e)}hasSelection(){return this.m_selection}createEmptySelection(){r(0)}removeSelection(){this.m_selection&&(this.m_selectedVertices.length=0,this.removeUserIndex(this.m_selectionIndex),this.m_selectionIndex=-1,this.m_selection=!1,this.m_selectedCount=0)}select(e){return this.selected(e)?!0:(this.setUserIndex(e,this.m_selectionIndex,this.m_selectedVertices.length),this.m_selectedVertices.push(e),this.m_selectedCount++,!1)}unselect(e){if(!this.m_selection)return;let t=this.getUserIndex(e,this.m_selectionIndex);t>=0&&(this.m_selectedVertices[t]=-1,this.setUserIndex(e,this.m_selectionIndex,-1),this.m_selectedCount--)}selected(e){return!this.m_selection||this.selected_(e)}getSelectedCount(){return this.m_selection?this.m_selectedCount:this.getTotalPointCount()}createSelectionForCrackingAndClustering(e,t){return r(0),!1}peelALoop(e,t){this.peelALoop_(e,t,!1)}peelALoopIntoAPath(e,t){return this.peelALoop_(e,t,!0)}applyTransformation(e){if(this.m_verticesMp.applyTransformation(e),this.m_segments!==null)for(let t=0,n=this.m_segments.length;t<n;t++)this.m_segments[t]&&this.m_segments[t].applyTransformation(e)}setGeometryType(e,t){this.m_geometryIndexList.setField(e,2,t)}splitSegmentWithIntersector(e,t,n,r,i){r?this.splitSegmentForward(e,t,n,!0,i):this.splitSegmentBackward(e,t,n,!0,i)}setPrevVertex(e,t){this.m_vertexIndexList.setField(e,1,t)}setNextVertex(e,t){this.m_vertexIndexList.setField(e,2,t)}setPathToVertex(e,t){this.m_vertexIndexList.setField(e,3,t)}setPathSize(e,t){this.m_pathIndexList.setField(e,3,t)}setFirstVertex(e,t){this.m_pathIndexList.setField(e,4,t)}setLastVertex(e,t){this.m_pathIndexList.setField(e,5,t)}getSegment(e){if(this.m_segments!=null){let t=this.getVertexIndex(e);return this.getSegmentFromIndex(t)}return null}isCurve(e){if(this.m_segments===null)return!1;let t=this.getVertexIndex(e);return this.m_segments.length>t&&this.m_segments[t]!==null}querySegment(e,t,n=!0,r=!1){let i=this.getNextVertex(e);if(i===-1)return!1;let a=this.getSegment(e);if(!a)return!n&&(this.queryLineConnector(e,t.createLine(),r),!0);if(t.copyFrom(a,!0),r)return!0;if(this.m_vertexDescription.getAttributeCount()>1){let n=this.getHelperPoint();this.queryPoint(e,n),t.get().setStart(n),this.queryPoint(i,n),t.get().setEnd(n)}return!0}getSegmentFromIndex(e){return(this.m_segments!==null&&this.m_segments.length>e?this.m_segments[e]:null)||null}getAndClearSegmentFromIndex(e){return(this.m_segments!==null&&this.m_segments.length>e?this.m_segments[e]:null)||null}setSegmentToIndex(e,t){if(this.m_hasForceSetEnvelope=0,this.m_segments===null){if(!t)return;this.m_segments=[],this.m_segments.length=this.m_vertices.getPointCount()}e>=this.m_segments.length&&(this.m_segments.length=e+1),this.m_segments[e]=t}setGeometryPathCount(e,t){this.m_geometryIndexList.setField(e,6,t)}setGeometryVertexCount(e,t){this.m_geometryIndexList.setField(e,5,t)}ringParentageCheckInternal(e,t){return r(0),!1}reverseRingInternal(e){let t=this.hasCurves(),n=this.hasSegmentParentage(),r=null,i=-1,a=e;if(t){let e=this.getVertexIndex(a);r=this.getAndClearSegmentFromIndex(e)}n&&(i=this.getSegmentParentage(a));do{let e=this.getPrevVertex(a),o=this.getNextVertex(a);if(this.setNextVertex(a,e),this.setPrevVertex(a,o),t){let e=this.getVertexIndex(o),t=this.getSegmentFromIndex(e);r&&r.reverse(),this.setSegmentToIndex(e,r),r=t}if(n){let e=this.getSegmentParentage(o);this.setSegmentParentagePreserveBreak(o,i),i=e}a=o}while(a!==e);this.dbgVerifyIntegrity(e)}setTotalPointCount(e){this.m_pointCount=e}removePathOnly(e){let t=this.getPrevPath(e),n=this.getNextPath(e),r=this.getGeometryFromPath(e);t===-1?this.setFirstPath(r,n):this.setNextPath(t,n),n===-1?this.setLastPath(r,t):this.setPrevPath(n,t),this.setFirstVertex(e,-1),this.setLastVertex(e,-1),this.freePath(e)}insertClosedPath(e,t,n,r,i){let a=this.insertPath(e,-1),o=0,s=n;for(i[0]=!1;;){s===r&&(i[0]=!0),this.setPathToVertex(s,a),o++;let e=this.getNextVertex(s);if(e===n)break;s=e}return this.setClosedPath(a,!0),this.setPathSize(a,o),i[0]&&(n=r),this.setFirstVertex(a,n),this.setLastVertex(a,this.getPrevVertex(n)),this.setRingAreaValid(a,!1),a}findVertex2D(e,t){return r(0),0}findVertex3D(e,t,n){return r(0),0}dbgVerifyMonotone(){}dbgCheckSelection(){}dbgVerifySegment(e){}dbgVerifyIntegrity(e,t=!0){}dbgVerifyVertexCounts(){}dbgVerifyCurves(){}dbgDumpGeometry(e,t){}getNextNthVertex(e,t){if(t===0)return e;let n=e;for(let e=0;e<t;++e)if(n=t>0?this.getNextVertex(n):this.getPrevVertex(n),n===-1)return-1;return n}removeVertexInternal(e,t){let n=this.getPrevVertex(e),r=this.getNextVertex(e);if(n!==-1&&this.setNextVertex(n,r),r!==-1&&this.setPrevVertex(r,n),this.hasCurves()&&n!==-1&&r!==-1){let i=this.getVertexIndex(e),a=this.getVertexIndex(n),o=this.getVertexIndex(r);if(t){let e=this.getSegmentFromIndex(a);if(e!==null){let t=this.m_vertices.getXY(o);e.setEndXY(t),e.normalizeAfterEndpointChange()}this.setSegmentToIndex(i,null)}else{let e=this.getSegmentFromIndex(i);if(this.setSegmentToIndex(i,null),e!==null){let t=this.m_vertices.getXY(a);e.setStartXY(t),e.normalizeAfterEndpointChange()}this.setSegmentToIndex(a,e)}}return this.freeVertex(e),r}isRingAreaValid(e){return!!(this.getPathFlags(e)&4)}setRingAreaValid(e,t){let n=(this.getPathFlags(e)|4)-4;this.setPathFlags(e,n|(t?4:0))}compareVerticesSimpleY(e,t){return this.queryXY(e,this.m_workPoint2D),this.queryXY(t,this.m_workPoint2_2D),this.m_workPoint2D.compare(this.m_workPoint2_2D)}compareVerticesSimpleY3D(e,t){return this.getXYZ(e).compare(this.getXYZ(t))}compareVerticesSimpleX(e,t){return this.getXY(e).compareX(this.getXY(t))}sortVerticesSimpleByYHeapMerge(e,t){r(0)}sortVerticesSimpleByY(e,t,n){this.m_bucketSort.sort(e,t,n,new ba(this))}sortVerticesSimpleByX(e,t,n){r(0)}sortVerticesSimpleByY3D(e,t,n){r(0)}snapVertexForPoleClipping(e,t){let n=this.getPrevVertex(e);n!==-1&&this.replaceCurveWithLine(n),this.getNextVertex(e)!==-1&&this.replaceCurveWithLine(e);let r=new P;this.queryXY(e,r),r.y=t,this.setXY(e,r)}setSegmentParentageAndBreak(e,t,n=!0){if(this.m_segmentParentageIndex===-1){if(t===-1)return;this.m_segmentParentageIndex=this.createUserIndex()}t>=0&&(r(t<=Be()>>1),t<<=1,t|=+!!n),this.setUserIndex(e,this.m_segmentParentageIndex,t)}setSegmentParentagePreserveBreak(e,t){if(r(t>=-1),this.m_segmentParentageIndex===-1){if(t===-1)return;this.m_segmentParentageIndex=this.createUserIndex()}if(t>=0){r(t<=Be()>>1),t<<=1;let n=this.getSegmentParentageBreakVertex(e);t|=+!!n}this.setUserIndex(e,this.m_segmentParentageIndex,t)}getSegmentParentage(e){if(this.m_segmentParentageIndex===-1)return-1;let t=this.getUserIndex(e,this.m_segmentParentageIndex);return t<0?t:t>>1}getOriginalSegmentInfo(e){if(this.m_segmentParentageIndex!==-1){let t=this.getSegmentParentage(e);return new Ca(t)}return new Ca(-1)}setSegmentParentageBreakVertex(e,t){if(this.m_segmentParentageIndex===-1)return;let n=this.getUserIndex(e,this.m_segmentParentageIndex);n<0||!!(n&1)!==t&&(t?n|=1:n&=Be()>>1<<1,this.setUserIndex(e,this.m_segmentParentageIndex,n))}getSegmentParentageBreakVertex(e){if(this.m_segmentParentageIndex===-1)return!0;let t=this.getUserIndex(e,this.m_segmentParentageIndex);return t<0||!!(t&1)}isDiscontinuousSegmentParentage(e){let t=this.getPrevVertex(e);return t!==-1&&this.getSegmentParentage(t)!==this.getSegmentParentage(e)}setCurveStitcherPointer(e){this.m_curveStitcher=e}hasSegmentParentage(){return this.m_segmentParentageIndex!==-1}deleteSegmentParentage(){this.m_segmentParentageIndex!==-1&&(this.removeUserIndex(this.m_segmentParentageIndex),this.m_segmentParentageIndex=-1),this.m_curveStitcher=null}clearSegments(){this.m_segments=null}}function Ta(e){if(e.isEmpty())return new ha({vd:e.getDescription()});if(u(e.getGeometryType())&&e.hasNonLinearSegments())return Da(e);let t=e.getImpl(),n=t.getPointCount();if(n<=2){if(n===1||t.getXY(0).equals(t.getXY(1))){let e=new N({vd:t.getDescription()});return t.getPointByVal(0,e),e}{let e=new N,n=new rr({vd:t.getDescription()});return t.getPointByVal(0,e),n.startPathPoint(e),t.getPointByVal(1,e),n.lineToPoint(e),n}}let r=t.getAttributeStreamRef(0),i=new Na({stream:r,n}),a=1,o=r.readPoint2D(0),s=new P;for(;a<n&&r.queryPoint2D(a<<1,s).equals(o);)a++;if(i.m_treeHull.addElement(0),a<n){i.m_treeHull.addBiggestElement(a);let e=new P;for(let n=a+1;n<t.getPointCount();n++){r.queryPoint2D(n<<1,e);let t=i.treeHull(e);t!==-1&&i.m_treeHull.setElement(t,n)}}let c=t.getDescription(),l=c.getAttributeCount()>1,d=i.m_treeHull.size(),f=null;if(d>=2){f=d>=3?new ha({vd:c}):new rr({vd:c});let e=f.getImpl();e.reserve(i.m_treeHull.size()),e.addPathPoint2D(null,0,!0);let n=new P;for(let a=i.m_treeHull.getFirst();a!==-1;a=i.m_treeHull.getNext(a))if(l){let n=new N;t.getPointByVal(i.m_treeHull.getElement(a),n),e.insertPoint(0,-1,n)}else r.queryPoint2D(i.m_treeHull.getElement(a)<<1,n),e.insertPoint2D(0,-1,n)}else if(l){let e=new N({vd:c});t.getPointByVal(i.m_treeHull.getElement(i.m_treeHull.getFirst()),e),f=e}else{let e=r.readPoint2D(i.m_treeHull.getElement(i.m_treeHull.getFirst())<<1);f=new N(e)}return f}function Ea(e,t,n,r=!1){if(t<=262144)return Ia(e,t,n,r);let i=new Na({points:e,n:t}),a=1,o=e[0];for(;a<t&&e[a].equals(o);)a++;if(i.m_treeHull.addElement(0),a<t){i.m_treeHull.addBiggestElement(a);for(let n=a+1;n<t;n++){let t=e[n],r=i.treeHull(t);r!==-1&&i.m_treeHull.setElement(r,n)}}let s=0;for(let e=i.m_treeHull.getFirst();e!==-1;e=i.m_treeHull.getNext(e))n[s++]=i.m_treeHull.getElement(e);return s}function Da(e){r(e.hasNonLinearSegments()&&!e.isEmpty());let t=new Na;return t.addGeometry(e),t.getBoundingGeometry()}function Oa(e,t,n){if((t<0||t>=e.getPathCount())&&i(`path index`),e.hasNonLinearSegmentsPath(t))return!1;let r=e.getImpl(),a=r.getPathStart(t),o=r.getPathEnd(t),s=!r.isClosedPath(t)&&r.isClosedPathInXYPlane(t),c=r.getAttributeStreamRef(0),l=2*a,u=2*o;if(s&&(u-=2),u-l<6)return!0;let d=c.readPoint2D(l),f=c.readPoint2D(l+2),p=c.readPoint2D(l+4);if(!La(P.orientationRobust(f,p,d)))return!1;let m=f.clone(),h=new P;for(let e=l+6;e<u;e+=2)if(h.assign(f),f.assign(p),c.queryPoint2D(e,p),!La(P.orientationRobust(f,p,d))||!La(P.orientationRobust(m,p,d))||!La(P.orientationRobust(f,p,h)))return!1;return!0}function ka(e,t,n){e.setNAN(),t.setCoords(1,0),n.setCoords(0,0)}function Aa(e,t,n,r,i){if(ka(n,r,i),e.isEmpty())return;if(e.getGeometryType()===s.enumPoint){n.assign(e.getXY());return}let a=e,o=a.getPointCount();if(o!==0){if(o===1){n.assign(a.getXY(0));return}ja(a,o,t,n,r,i)}}function ja(e,t,n,r,i,a){if(t===2){let t=e.getXY(0),n=e.getXY(1);r.assign(t.add(n).mul(.5));let o=n.sub(t);i=Ba(o),a.setCoords(.5*o.length(),0)}else{let o=Number.MAX_VALUE,s=[0,1,0,0],c=new Ve(4,2);for(c.set(0,0,0),c.set(0,1,1),c.set(1,0,1),c.set(1,1,2);s[0]<t;++s[0],Va(c,0,t)){s[1]===s[0]&&(++s[1],Va(c,1,t));for(let n=1;;++n){for(;;){let r=Ha(e.getXY(c.get(0,0)),e.getXY(c.get(0,1)),e.getXY(c.get(n,0)),e.getXY(c.get(n,1)),n^2);if(r>0||(++s[n],Va(c,n,t),r===0))break}if(n===3)break;s[n+1]<s[n]&&(s[n+1]=s[n],c.set(n+1,0,c.get(n,0)),c.set(n+1,1,c.get(n,1)))}let l=e.getXY(c.get(0,0)).add(e.getXY(c.get(2,0))).mul(.5),u=Ba(e.getXY(c.get(0,1)).sub(e.getXY(c.get(0,0)))),d=new P;d.x=Math.max(0,u.dotProduct(e.getXY(c.get(1,0)).sub(e.getXY(c.get(3,0))))),d.y=Math.max(0,u.crossProduct(e.getXY(c.get(0,0)).sub(e.getXY(c.get(2,0)))));let f,p;if(n?(f=d.x*d.y,p=f<o):(f=d.y,p=f<o),p){o=f;let t=e.getXY(c.get(1,0)),n=e.getXY(c.get(3,0)),s=t.add(n).mul(.5).sub(l);r.assign(l.add(u.mul(u.dotProduct(s)))),i.assign(u),a.assign(d)}}a.mulThis(.5),a.x<a.y&&(a.y=z(a.x,a.x=a.y),i.leftPerpendicularThis())}i.y<0?i.negateThis():i.y===0&&(i.x=1)}class Ma{m_convexHull;m_handleP=-1;m_handleQ=-1;m_currentSupport=-1;m_area=0;m_bDone=!0;m_function;constructor(e){r(0),this.m_convexHull=e,this.m_function=this.done_}next(){return r(0),!1}get_vertex_handle_p(){return r(0),0}get_vertex_handle_q(){return r(0),0}get_current_support(){return r(0),0}getNext(e){return r(0),0}getPrev(e){return r(0),0}intialize_(){return r(0),!1}increment_(){return r(0),!1}increment_q_(){return r(0),!1}increment_p_(){return r(0),!1}parallel_edge_with_q_support_(){return r(0),!1}parallel_edge_with_p_support_(){return r(0),!1}done_(){return r(0),!1}}class Na{m_treeHull=new fe;m_shape=null;m_stream=null;m_points=null;m_geometryHandle=-1;m_pathHandle=-1;m_getXY=this.nullGetXY;m_deleteNode=this.nullDeleteNode;nullGetXY(e){return t(`m_getXY is null`),{}}nullDeleteNode(e){t(`m_deleteNode is null`)}constructor(e){if(!e){this.m_treeHull.setCapacity(20),this.m_shape=new wa,this.m_geometryHandle=this.m_shape.createGeometry(s.enumMultiPoint),this.m_pathHandle=this.m_shape.insertPath(this.m_geometryHandle,-1),this.m_getXY=this.getXYShape,this.m_deleteNode=this.deleteNodeShape,this.m_stream=null,this.m_points=null;return}if(e.stream){this.m_treeHull.setCapacity(Math.min(20,e.n)),this.m_stream=e.stream,this.m_getXY=this.getXYStream,this.m_deleteNode=this.deleteNodeStream,this.m_points=null,this.m_geometryHandle=-1,this.m_pathHandle=-1;return}if(e.points){this.m_treeHull.setCapacity(Math.min(20,e.n)),this.m_points=e.points,this.m_getXY=this.getXYPoints,this.m_deleteNode=this.deleteNodePoints,this.m_stream=null,this.m_geometryHandle=-1,this.m_pathHandle=-1;return}f(`unrecognized constructor parameter`)}getXYShape(e){return this.m_shape.getXY(e)}getXYStream(e){return this.m_stream.readPoint2D(e<<1)}getXYPoints(e){return r(0),new P}deleteNodeShape(e){let t=this.m_treeHull.getElement(e);this.m_treeHull.deleteNode(e),this.m_shape.removeVertex(t,!1)}deleteNodeStream(e){this.m_treeHull.deleteNode(e)}deleteNodePoints(e){r(0)}addGeometry(e){if(e.isEmpty())return;let t=e.getGeometryType();if(t===s.enumGeometryCollection){let t=e;for(let e=0,n=t.getGeometryCount();e<n;e++)this.addGeometry(t.getGeometry(e))}else c(t)?this.addMultiVertexGeometry(e):p(t)?this.addSegment(e,!1):t===s.enumEnvelope?this.addEnvelope(e):t===s.enumPoint?this.addPoint(e):i(`Convex_hull: geometry not supported`)}getBoundingGeometry(){let e=new N,t=this.m_treeHull.getFirst(),n=new ha({vd:this.m_shape.getVertexDescription()});if(this.m_treeHull.size()===0)return n;n.reserve(this.m_treeHull.size()),this.m_shape.queryPoint(this.m_treeHull.getElement(t),e),n.startPathPoint(e);for(let r=this.m_treeHull.getNext(t);r!==-1;r=this.m_treeHull.getNext(r))this.m_shape.queryPoint(this.m_treeHull.getElement(r),e),n.lineToPoint(e);return n}getAntipodalPairsIterator(){return r(0),new Ma(this)}getXY(e){return r(0),new P}getXYWithIndex(e){return r(0),new P}getFirst(){return r(0),0}getLast(){return r(0),0}getNext(e){return r(0),0}getPrev(e){return r(0),0}getVertexIndex(e){return r(0),0}getPointCount(){return r(0),0}addMultiVertexGeometry(e){let t=new N,n=e.getImpl(),r=new P;for(let i=0;i<e.getPointCount();i++){n.queryXY(i,r);let a=this.addPoint2D(r);if(a!==-1){e.getPointByVal(i,t);let n=this.m_shape.addPoint(this.m_pathHandle,t);this.m_treeHull.setElement(a,n)}}if(u(e.getGeometryType())){let t=e;if(t.hasNonLinearSegments()){let e=t.querySegmentIterator();for(;e.nextPath();)for(;e.hasNextSegment();){let t=e.nextCurve();t!==null&&this.addSegment(t,!0)}}}}addEnvelope(e){let t=new N;for(let n=0;n<4;n++){let r=new P;e.queryCorner(n,r);let i=this.addPoint2D(r);if(i!==-1){e.queryCornerByVal(n,t);let r=this.m_shape.addPoint(this.m_pathHandle,t);this.m_treeHull.setElement(i,r)}}}static querySegmentControlPoints(e,t,n){let a=e.getGeometryType();if(r(a!==s.enumLine),a===s.enumEllipticArc){let n=e,r=60*Math.PI/180,i=Math.abs(n.getSweepAngle());if(i>r){let e=Math.min(6,Math.ceil(i/r)),a=1/e,o=new $;n.queryStart(t[0]);let s=1;for(let r=0;r<e;r++){n.queryCut(r*a,(r+1)*a,o);let i=H(P,3);Gl(o.get(),i);let c=P.calculateLength(i,3),l=P.calculateLength(i,2),u=c>0?l/c:.5;r<e-1?o.get().queryEnd(t[s+1]):n.queryEnd(t[s+1]),N.lerp(t[s-1],t[s+1],u,t[s]),t[s].setXY(i[1]),s+=2}return s}{let n=H(P,3);Gl(e,n);let r=P.calculateLength(n,3);e.queryStart(t[0]),e.queryEnd(t[2]);let i=P.calculateLength(n,2),a=r>0?i/r:.5;return N.lerp(t[0],t[2],a,t[1]),t[1].setXY(n[1]),3}}if(a===s.enumBezier){let n=e,r=H(P,4);n.queryControlPoints(r);let i=P.calculateLength(r,4),a=P.calculateLength(r,2),o=P.calculateLength(r,3);e.queryStart(t[0]),e.queryEnd(t[3]);let s=i>0?a/i:.5;N.lerp(t[0],t[3],s,t[1]),t[1].setXY(r[1]);let c=i>0?o/i:.5;return N.lerp(t[0],t[3],c,t[2]),t[2].setXY(r[2]),4}if(a===s.enumBezier2){let n=e,r=H(P,3);n.queryControlPoints(r);let i=P.calculateLength(r,3);e.queryStart(t[0]),e.queryEnd(t[2]);let a=P.calculateLength(r,2),o=i>0?a/i:.5;return N.lerp(t[0],t[2],o,t[1]),t[1].setXY(r[1]),3}if(a===s.enumRationalBezier2){let n=e,r=H(P,3);n.queryControlPoints(r);let i=P.calculateLength(r,3);e.queryStart(t[0]),e.queryEnd(t[2]);let a=P.calculateLength(r,2),o=i>0?a/i:.5;return N.lerp(t[0],t[2],o,t[1]),t[1].setXY(r[1]),3}i(`Convex_hull: segment type not supported`)}addSegment(e,t){if(!t){let t=new N,n=e.getStartXY(),r=this.addPoint2D(n);if(r!==-1){e.queryStart(t);let n=this.m_shape.addPoint(this.m_pathHandle,t);this.m_treeHull.setElement(r,n)}let i=e.getEndXY(),a=this.addPoint2D(i);if(a!==-1){e.queryEnd(t);let n=this.m_shape.addPoint(this.m_pathHandle,t);this.m_treeHull.setElement(a,n)}}if(e.isCurve()){let t=H(N,13),n=Na.querySegmentControlPoints(e,t,t.length);for(let e=1,r=n-1;e<r;++e){let n=t[e].getXY(),r=this.addPoint2D(n);if(r!==-1){let n=this.m_shape.addPoint(this.m_pathHandle,t[e]);this.m_treeHull.setElement(r,n)}}}}addPoint(e){let t=e.getXY(),n=this.addPoint2D(t);if(n!==-1){let t=this.m_shape.addPoint(this.m_pathHandle,e);this.m_treeHull.setElement(n,t)}}addPoint2D(e){let t=-1;if(this.m_treeHull.size()===0)return t=this.m_treeHull.addElement(-4),t;if(this.m_treeHull.size()===1){let n=this.m_treeHull.getElement(this.m_treeHull.getFirst()),r=this.m_shape.getXY(n);return e.equals(r)||(t=this.m_treeHull.addBiggestElement(-5)),t}return t=this.treeHull(e),t}treeHull(e){let t=-1;do{let n=this.m_treeHull.getFirst(),r=this.m_treeHull.getLast(),i=this.m_treeHull.getElement(n),a=this.m_treeHull.getElement(r),o=this.m_getXY(i),s=this.m_getXY(a),c=P.orientationRobust(s,e,o);if(La(c)){t=this.m_treeHull.addBiggestElement(-1);let i=this.treeHullWalkBackward(e,r,n);i!==n&&this.treeHullWalkForward(e,n,this.m_treeHull.getPrev(i));break}if(Ra(c)){let i=this.m_treeHull.getRoot(),a=this.m_treeHull.getFirst(),s=this.m_treeHull.getLast(),c=-1,l=-1,u=-1;for(;a!==this.m_treeHull.getPrev(s);){l=this.m_treeHull.getElement(i);let t=this.m_getXY(l);Ra(P.orientationRobust(t,e,o))?(s=i,i=this.m_treeHull.getLeft(i)):(a=i,i=this.m_treeHull.getRight(i))}i=s,c=a,l=this.m_treeHull.getElement(i),u=this.m_treeHull.getElement(c);let d=this.m_getXY(l),f=this.m_getXY(u);if(c!==n&&!La(P.orientationRobust(f,e,d)))break;t=this.m_treeHull.addElementAtPosition(c,i,-2,!0,!1),this.treeHullWalkForward(e,i,r),this.treeHullWalkBackward(e,c,n);break}{let i=za(e,s,o);if(i===-1){let i=this.m_treeHull.getPrev(r);this.m_treeHull.deleteNode(r),t=this.m_treeHull.addBiggestElement(-3),this.treeHullWalkBackward(e,i,n)}else if(i===1){let i=this.m_treeHull.getNext(n);this.m_treeHull.deleteNode(n),t=this.m_treeHull.addElementAtPosition(-1,i,-3,!0,!1),this.treeHullWalkForward(e,i,r)}break}}while(0);return t}treeHullWalkForward(e,t,n){if(t===n)return n;let r=t,i=this.m_treeHull.getElement(r),a=this.m_treeHull.getNext(r),o=this.m_getXY(i);for(;r!==n&&this.m_treeHull.size()>2;){let t=this.m_treeHull.getElement(a),n=this.m_getXY(t);if(La(P.orientationRobust(n,e,o)))break;let s=r;r=a,i=t,o.assign(n),a=this.m_treeHull.getNext(r),this.m_deleteNode(s)}return r}treeHullWalkBackward(e,t,n){if(t===n)return n;let r=t,i=this.m_treeHull.getElement(r),a=this.m_treeHull.getPrev(r),o=this.m_getXY(i);for(;r!==n&&this.m_treeHull.size()>2;){let t=this.m_treeHull.getElement(a),n=this.m_getXY(t);if(La(P.orientationRobust(o,e,n)))break;let s=r;r=a,i=t,o.assign(n),a=this.m_treeHull.getPrev(r),this.m_deleteNode(s)}return r}}function Pa(e,t,n){let r=t.sub(e),i=n.sub(t);if(r.x===0)return i.x>0?-1:0;if(r.y===0)return i.y>0?1:i.y<0?-1:0;let a=r.crossProduct(i),o=4*2**-52*(Math.abs(i.x*r.y)+Math.abs(i.y*r.x));return a>o?1:a<-o?-1:P.orientationRobust(e,t,n)}function Fa(e,t,n){let r=t.sub(e),i=n.sub(t);if(r.x===0)return i.x<0?-1:0;if(r.y===0)return i.y>0?-1:+(i.y<0);let a=r.crossProduct(i),o=4*2**-52*(Math.abs(i.x*r.y)+Math.abs(i.y*r.x));return a>o?1:a<-o?-1:P.orientationRobust(e,t,n)}function Ia(e,t,n,r){let i=new le(0);for(let e=0;e<t;e++)i.add(e);r||ue.sortEx(i,0,t,{userSort(t,n,r){r.sort(t,n,(t,n)=>e[t].compareX(e[n]))},getValue(t){return e[t].x}});let a=0;continueForward:for(let r=0;r<t;++r){let t=i.read(r);for(;a>=2;){let o=n[a-2],s=n[a-1];if(e[s].equals(e[t])){i.write(r,-1);continue continueForward}if(Pa(e[o],e[s],e[t])>=0)a--;else{s===i.read(r-1)&&i.write(r-1,-1);break}}n[a++]=t,a===2&&e[t].equals(e[n[0]])&&(i.write(1,-1),a--)}let o=a+1;continueBackward:for(let r=t-2;r>=0;--r){let t=i.read(r);if(!(t<0)){for(;a>=o;){let r=n[a-2],i=n[a-1];if(e[i].equals(e[t]))continue continueBackward;if(Fa(e[r],e[i],e[t])>=0)a--;else break}if(r!==0){let r=n[a-1];n[a++]=t,e[t].equals(e[r])&&a--}}}return a>1&&e[n[0]].equals(e[n[a-1]])&&a--,a}function La(e){return e<0}function Ra(e){return e>0}function za(e,t,n){let r=-1;r=t.y===n.y?0:t.x===n.x?1:Math.abs(t.x-n.x)>=Math.abs(t.y-n.y)?0:1;let i=-1;return i=t[r]<n[r]?e[r]<t[r]?-1:+(n[r]<e[r]):t[r]<e[r]?-1:+(e[r]<n[r]),i}function Ba(e){return e=e.clone(),e.divThis(Math.max(Math.abs(e.x),Math.abs(e.y))),e.normalize(),e}function Va(e,t,n){e.inc(t,0)===n&&e.set(t,0,0),e.inc(t,1)===n&&e.set(t,1,0)}function Ha(e,t,n,r,a){switch(a){case 0:break;case 1:t.rightPerpendicularThis(),e.rightPerpendicularThis();break;case 2:t.negateThis(),e.negateThis();break;case 3:t.leftPerpendicularThis(),e.leftPerpendicularThis();break;default:i(``)}return P.orientationRobustEx(e,t,n,r)}class Ua{specialPoints;length;constructor(){this.length=NaN,this.specialPoints=[]}specialPointsCount(){return this.specialPoints.length}}function Wa(e){return Ga(e.calculateUpperLength2D())}function Ga(e){return Se()*256*e}function Ka(e){let t=P.distance(e.getStartXY(),e.getEndXY()),n=e.calculateUpperLength2D(),r=2**-52*8*n;return n-t<=r}function qa(e,t,n=!1){t[1].setCoords(e.m_cp[0].x-e.getStartX(),e.m_cp[0].y-e.getStartY()),t[1].mulThis(3),t[2].setCoords(e.m_cp[1].x-e.m_cp[0].x,e.m_cp[1].y-e.m_cp[0].y),t[2].mulThis(3),t[3]=e.getEndXY().sub(e.getStartXY()),t[3].subThis(t[2]),t[2].subThis(t[1]),n?t[0].setCoords(0,0):t[0]=e.getStartXY()}function Ja(e,t,n){let r=H(P,4);e.queryControlPoints(r),Xa(r,t,n)}function Ya(e,t,n){let r=H(P,4);e.queryControlPoints(r),Za(r,t,n)}function Xa(e,t,n){let r=e[1].x;r-=e[0].x,r*=3;let i=e[2].x;i-=e[1].x,i*=3;let a=e[3].x;a-=e[0].x,a-=i,i-=r,t[3].setWithEps(a),t[2].setWithEps(i),t[1].setWithEps(r),n?t[0].set(0):t[0].set(e[0].x)}function Za(e,t,n){let r=e[1].y;r-=e[0].y,r*=3;let i=e[2].y;i-=e[1].y,i*=3;let a=e[3].y;a-=e[0].y,a-=i,i-=r,t[3].setWithEps(a),t[2].setWithEps(i),t[1].setWithEps(r),n?t[0].set(0):t[0].set(e[0].y)}function Qa(e,t,n=!1){let r=H(q,4);r[0].assignPoint2D(e[0]),r[1].assignPoint2D(e[1]),r[2].assignPoint2D(e[2]),r[3].assignPoint2D(e[3]),t[1].setCoords(r[1].x.sub(r[0].x),r[1].y.sub(r[0].y)),t[1].mulThis(I.constructInt32(3)),t[2].setCoords(r[2].x.sub(r[1].x),r[2].y.sub(r[1].y)),t[2].mulThis(I.constructInt32(3)),t[3]=r[3].sub(r[0]),t[3]=t[3].sub(t[2]),t[2]=t[2].sub(t[1]),n?t[0].setCoords(ut,ut):t[0]=r[0].clone()}function $a(e,t,n){if(n){if(t<0)return t;if(t>1)return t-1+$a(e,1,!1)}if(e.isDegenerate(0))return 0;let r=t===1,i=no(e);if(r&&!Number.isNaN(i.length)&&!Number.isNaN(i.length))return i.length;let a=Wa(e),o=a/e.calculateUpperLength2D(),s=0,c=0;for(let n=1,r=i.specialPointsCount();n<r;n++){let r=i.specialPoints[n],l=is(e,c,Math.min(t,r),o,a);if(s+=l,t<=r)break;c=r}return r&&(i.length=s),s}function eo(e,n,r){let i=$a(e,1,!1);if(n<=0)return n;if(n>=i)return n-i+1;let a=new ns(e,n),o=[0];return cr(a,R.unit(),1,o)!==1&&t(``),o[0]}function to(e,t,n){n===void 0&&(n=t,t=0);let r=new P;if(t<0||n>1)return r.setNAN(),r;if(t>n&&i(`calculate_sub_weightedCentroid`),t===n||e.isDegenerate(0))return r.setCoords(0,0),r;let a=no(e),o=Wa(e),s=o/e.calculateUpperLength2D(),c=t,l=0;for(let e=1,n=a.specialPointsCount();e<n;e++)if(t<a.specialPoints[e]){l=e-1;break}r.setCoords(0,0);for(let t=l+1,i=a.specialPointsCount();t<i;t++){let i=Math.min(a.specialPoints[t],n),l=as(e,c,i,s,o);if(r.addThis(l),c=i,n<=a.specialPoints[t])break}return r.add(e.getStartXY().mul(e.calculateLength2D()))}function no(e){if(e.m_cachedValues)return e.m_cachedValues;let t=new Ua,n=H(V,8),r=H(P,4);e.queryControlPoints(r);let i=Xo(r,n);t.specialPoints=[];for(let e=0;e<i;e++)t.specialPoints.push(n[e].value());return io(e,t),t}function ro(e){let t=null;return t=e.m_cachedValues,t}function io(e,t){e.m_cachedValues=t}function ao(e){e.m_cachedValues=null}function oo(e,t){t.m_cachedValues=z(e.m_cachedValues,e.m_cachedValues=t.m_cachedValues)}function so(e,t,n,r){if(t.isEqual(e.m_XStart,e.m_YStart)&&n.isEqual(e.m_XEnd,e.m_YEnd))return;let i=r?e.isMonotoneQuickAndDirty():!1,a=new xt,o=H(P,3);o[0].setCoords(e.m_XStart,e.m_YStart),o[2].setCoords(e.m_XEnd,e.m_YEnd);let s=new P;s.setSub(o[2],o[0]),s.leftPerpendicularThis(),o[1].setAdd(o[0],s);let c=H(P,3);c[0].setCoordsPoint2D(t),c[2].setCoordsPoint2D(n),s.setSub(c[2],c[0]),s.leftPerpendicularThis(),c[1].setAdd(c[0],s),a.setFromTwoTriangles(o,c)?a.transformPoints2D(e.m_cp,2,e.m_cp):(Ue(t,n,1/3,e.m_cp[0]),Ue(t,n,2/3,e.m_cp[1])),e.changeEndPoints2D(t,n),i&&vo(e)}function co(e,t,n,r,i){return{tmin:e,tmax:t,t:n,d:r,pt:i.clone()}}function lo(e,t,n,r){let i=H(P,4);e.queryControlPoints(i);let a=L(18,NaN),o=cr(new Ho(i,t,NaN),R.construct(n,r),18,a),s=new P;e.queryCoord2D(n,s);let c=n,l=P.distance(s,t),u=new P;e.queryCoord2D(r,u);let d=P.distance(u,t);d<l&&(l=d,c=r,s.assign(u));for(let n=0;n<o;n++){e.queryCoord2D(a[n],u);let r=P.distance(u,t);r<l&&(l=r,c=a[n],s.assign(u))}return co(n,r,c,l,s)}function uo(e,t){let n=H(V,4);Ja(e,n,!0);let i=H(V,4);Ya(e,i,!0);let a=n[3].clone(),o=n[2].clone(),s=n[1].clone(),c=i[3].clone(),l=i[2].clone(),u=i[1].clone(),d=o.mulE(s).addE(l.mulE(u)).mul(4),f=o.mulE(o).mul(8).addE(a.mulE(s).mul(12)).addE(l.mulE(l).mul(8).addE(c.mulE(u).mul(12))),p=a.mulE(o).addE(c.mulE(l)).mul(36),m=a.mulE(a).addE(c.mulE(c)).mul(36),h=H(V,3),g=xr(m,p,f,d,new R(0,1),!1,h);if(r(g<=3),g>0){let n=go(e,1,0).sqrLength(),r=go(e,1,1).sqrLength(),i=n;t.set(0),i<r&&(i=r,t.set(1));for(let n=0;n<g;n++){let r=go(e,1,h[n].value()).sqrLength();r<i&&(i=r,t=h[n])}}}function fo(e,t,n,r){if(t===1){let t=1-n,i=t*t,a=n*n,o=e[1].sub(e[0]),s=e[2].sub(e[1]),c=e[3].sub(e[2]),l=o.mul(i).add(s.mul(2*t*n)).add(c.mul(a));r.assign(l.mul(3))}else if(t===2){let t=1-n,i=e[2].sub(e[1]).sub(e[1].sub(e[0])),a=e[3].sub(e[2]).sub(e[2].sub(e[1])),o=i.mul(t).add(a.mul(n));r.assign(o.mul(6))}else if(t===3){let t=e[2].sub(e[1]),n=e[3].sub(t.mul(3)).sub(e[0]);r.assign(n.mul(6))}else r.setCoords(0,0)}function po(e,t,n,r){{let t=_e.subE(n),i=t.sqr(),a=n.sqr(),o=e[1].subE(e[0]).mulE(i).addE(e[2].subE(e[1]).mulE(new V(2).mulE(t).mulE(n))).addE(e[3].subE(e[2]).mulE(a));r.setE(o.mulE(new V(3)))}}function mo(e,t,n){let r=new P;return fo(e,t,n,r),r}function ho(e,t,n){let r=[K.constructPoint2D(e[0]),K.constructPoint2D(e[1]),K.constructPoint2D(e[2]),K.constructPoint2D(e[3])],i=new K;return po(r,t,n,i),i}function go(e,t,n){let r=H(P,4);return e.queryControlPoints(r),mo(r,t,n)}function _o(e){let t=e.m_cp[0].sub(e.getStartXY()),n=e.m_cp[1].sub(e.m_cp[0]),r=e.getEndXY().sub(e.getStartXY());return t.mulThis(3),n.mulThis(3),r.subThis(n),n.subThis(t),(3*r.x*(2*n.y+5*t.y)-3*r.y*(2*n.x+5*t.x)+10*(n.x*t.y-n.y*t.x))/60}function vo(e){let t=H(P,4);e.queryControlPoints(t);let n=yo(t);return n&&(e.m_cp[0].setCoordsPoint2D(t[1]),e.m_cp[1].setCoordsPoint2D(t[2]),e.afterCompletedModification()),n}function yo(e){return jt(e)}function bo(e){return Mt(e)}function xo(e,t,n){let r=new P,i=new P,a=new P,o=new P,s=new P;t<=.5?(Ye(2,e[0],e[1],t,r),Ye(2,e[1],e[2],t,i),Ye(2,e[2],e[3],t,a),Ye(2,r,i,t,o),Ye(2,i,a,t,s),Ye(2,o,s,t,n)):(Xe(2,e[0],e[1],t,r),Xe(2,e[1],e[2],t,i),Xe(2,e[2],e[3],t,a),Xe(2,r,i,t,o),Xe(2,i,a,t,s),Xe(2,o,s,t,n))}function So(e,t,n,i){r(t>=0&&t<=1);let a=new P,o=new P,s=new P,c=new P,l=new P,u=new P;t<=.5?(Ye(2,e[0],e[1],t,a),Ye(2,e[1],e[2],t,o),Ye(2,e[2],e[3],t,s),Ye(2,a,o,t,c),Ye(2,o,s,t,l),Ye(2,c,l,t,u)):(Xe(2,e[0],e[1],t,a),Xe(2,e[1],e[2],t,o),Xe(2,e[2],e[3],t,s),Xe(2,a,o,t,c),Xe(2,o,s,t,l),Xe(2,c,l,t,u));let d=e[3].clone();n&&(n[0].assign(e[0]),n[1].assign(a),n[2].assign(c),n[3].assign(u)),i&&(i[0].assign(u),i[1].assign(l),i[2].assign(s),i[3].assign(d))}function Co(e,t,n,i){if(r(t>=0&&n<=1&&t<=n),t===n){let n=new P;X(e,t,n),i[0].assign(n),i[1].assign(n),i[2].assign(n),i[3].assign(n);return}if(t===0&&n===1){for(let t=0;t<4;++t)i[t].assign(e[t]);return}let a=H(P,4);So(e,n,a,null),So(a,n>0?t/n:0,null,a),X(e,t,a[0]),X(e,n,a[3]),i[0].setCoordsPoint2D(a[0]),i[1].setCoordsPoint2D(a[1]),i[2].setCoordsPoint2D(a[2]),i[3].setCoordsPoint2D(a[3])}function X(e,t,n,r){if(r){if(t<0){wn(new Q({start:e[0],end:e[0].add(Eo(e,0).getUnitVector())}),t,n);return}if(t>1){wn(new Q({start:e[3],end:e[3].add(Eo(e,1).getUnitVector())}),t-1,n);return}}if(t<=.5){let r=new P;Ye(2,e[0],e[1],t,r);let i=new P;Ye(2,e[1],e[2],t,i);let a=new P;Ye(2,e[2],e[3],t,a);let o=new P;Ye(2,r,i,t,o);let s=new P;Ye(2,i,a,t,s),Ye(2,o,s,t,n)}else{let r=new P;Xe(2,e[0],e[1],t,r);let i=new P;Xe(2,e[1],e[2],t,i);let a=new P;Xe(2,e[2],e[3],t,a);let o=new P;Xe(2,r,i,t,o);let s=new P;Xe(2,i,a,t,s),Xe(2,o,s,t,n)}}function wo(e,t,n){if(t.value()<=.5){let r=new K;Ge(2,K.constructPoint2D(e[0]),K.constructPoint2D(e[1]),t,r);let i=new K;Ge(2,K.constructPoint2D(e[1]),K.constructPoint2D(e[2]),t,i);let a=new K;Ge(2,K.constructPoint2D(e[2]),K.constructPoint2D(e[3]),t,a);let o=new K;Ge(2,r,i,t,o);let s=new K;Ge(2,i,a,t,s),Ge(2,o,s,t,n)}else{let r=new K;Ke(2,K.constructPoint2D(e[0]),K.constructPoint2D(e[1]),t,r);let i=new K;Ke(2,K.constructPoint2D(e[1]),K.constructPoint2D(e[2]),t,i);let a=new K;Ke(2,K.constructPoint2D(e[2]),K.constructPoint2D(e[3]),t,a);let o=new K;Ke(2,r,i,t,o);let s=new K;Ke(2,i,a,t,s),Ke(2,o,s,t,n)}}function To(e,t,n){let r=H(P,4);e.queryControlPoints(r),wo(r,t,n)}function Eo(e,t){let n=xe(t,0,1),r=mo(e,1,n);return r.isZero()&&(r=mo(e,2,n),r.isZero()?r=mo(e,3,n):n===1&&r.negateThis()),r}function Do(e,t,n){let r=H(P,4);e.queryControlPoints(r),Oo(r,t,n)}function Oo(e,t,n){t.value()<0&&t.set(0,t.eps()),t.value()>1&&t.set(1,t.eps()),n.setE(ho(e,1,t))}function ko(e,t,n,r,i){if(i){if(du(t,n)!==0)return e?4:2}else if(Nt(t,n))return 1;return Po(e,t,n,null,null,null,r,i!==void 0&&i,!0,!1)===0?0:4}function Ao(e,t,n,r,i){if(i){if(du(t,n)!==0)return e?4:2}else if(Nt(t,n))return 1;return Fo(e,t,n,null,null,null,r,i!==void 0&&i,!0,!1)===0?0:4}function jo(e,t,n,r,i){if(i){if(du(t,n)!==0)return 2}else if(Nt(t,n))return 1;return Io(e,t,n,null,null,null,r,i!==void 0&&i,!0,!1)===0?0:4}function Mo(e,t,n,r,i){if(i){if(du(t,n)!==0)return e?4:2}else if(Nt(t,n))return 1;return Lo(e,t,n,null,null,null,r,i!==void 0&&i,!0,!1)===0?0:4}function No(e,t,n,r,i){if(i){if(du(t,n)!==0)return e?4:2}else if(Nt(t,n))return 1;return Ro(e,t,n,null,null,null,r,i??!1,!0,!1)===0?0:4}function Po(e,t,n,r,i,a,o,s,c,l){if(i!==null&&(i.length=0),a!=null&&(a.length=0),r!==null&&(r.length=0),n.isDegenerate(0)){let e=[0,0,0],s=t.intersectPoint(n.getStartXY(),e,o);if(s>0){if(i!==null)for(let t=0;t<s;t++)i.push(e[t]);if(a!==null)for(let e=0;e<s;e++)a.push(0);if(r!=null)for(let n=0;n<s;n++){let i=new P;t.queryCoord2D(e[n],i),r.push(i)}}return s}let u=en(t,n);if(o=Math.max(o,u),tn(t,n,o))return 0;let d=H(P,4);qa(t,d);let f=n.getEndXY();f.subThis(n.getStartXY());let p=f.clone();p.leftPerpendicularThis();let m=d[3].dotProduct(p)*3,h=d[2].dotProduct(p)*2,g=d[1].dotProduct(p),_=L(15,NaN),v=L(15,NaN),y=ur(m,h,g,R.unit(),!1,_);y<0&&(_[0]=0,_[1]=1,y=2);let b=0;for(let e=0,r=b;e<y;++e){let i=t.getCoord2D(_[e+r]);v[b]=n.getClosestCoordinate(i,!1),P.distance(i,n.getCoord2D(v[b]))<=o&&(_[b]=_[e+r],b++)}let x;if(d[0].subThis(n.getStartXY()),Math.abs(f.x)>=Math.abs(f.y)){let e=f.y/f.x;m=d[3].y-d[3].x*e,h=d[2].y-d[2].x*e,g=d[1].y-d[1].x*e,x=d[0].y-d[0].x*e}else{let e=f.x/f.y;m=d[3].x-d[3].y*e,h=d[2].x-d[2].y*e,g=d[1].x-d[1].y*e,x=d[0].x-d[0].y*e}let S=t.getEndXY().equals(n.getStartXY())||t.getEndXY().equals(n.getEndXY()),C=[0,0,0];y=dr(m,h,g,x,R.unit(),S,C);for(let e=0,r=b;e<y;++e){_[e+r]=C[e];let i=t.getCoord2D(_[e+r]);v[b]=n.getClosestCoordinate(i,!1),P.distance(i,n.getCoord2D(v[b]))<=o&&(_[b]=_[e+r],b++)}y=t.intersectPoint(n.getStartXY(),C,o);for(let e=0;e<y;e++)_[b]=C[e],v[b++]=0;y=t.intersectPoint(n.getEndXY(),C,o);for(let e=0;e<y;e++)_[b]=C[e],v[b++]=1;return n.intersectPoint(t.getStartXY(),C,o)!==0&&(v[b]=C[0],_[b++]=0),n.intersectPoint(t.getEndXY(),C,o)!==0&&(v[b]=C[0],_[b++]=1),b===0?0:gu(e,t,n,_,v,b,r,i,a,o,s,c,l)}function Fo(e,t,n,r,i,a,o,s,c,l){if(Z(n))return Po(e,t,new Q({start:n.getStartXY(),end:n.getEndXY()}),r,i,a,o,s,c,l);let u=en(t,n);if(o=Math.max(o,u),tn(t,n,o))return 0;let d=[],f=[],p=[],m=H(P,4);{t.queryControlPoints(m);let e=H(P,4),r=new xt;n.canonicToWorldTransformation(r);let i=new xt;i.setInvert(r),i.transformPoints2D(m,4,e);let a=H(q,4);Qa(e,a);let c=[a[0].x,a[1].x,a[2].x,a[3].x],l=[a[0].y,a[1].y,a[2].y,a[3].y],u=H(I,3);u[0].setDouble(n.getSemiMinorAxis()),u[0].sqrThis(),u[1].setDouble(n.getSemiMajorAxis()),u[1].sqrThis(),u[2].setThis(u[0]),u[2].mulThis(u[1]),u[2].negateThis();let h=Vr(c,3,l,3,null,0,u,!0,R.unit(),R.unit(),f,s);if(h>0){let e=0;for(let r=0;r<h;r++){let i=new P;t.queryCoord2D(f[r],i);let a=n.getClosestCoordinate(i,!1),s=new P;n.queryCoord2D(a,s),P.distance(i,s)<=o&&(d.push(i.clone()),f[e]=f[r],p.push(a),e++)}f.length=e,d.length=e}}let h=[0,1];for(let e=0;e<2;e++)do{let t=e===0?n.getStartXY():n.getEndXY(),r=[0];Uo(m,t,R.unit(),!1,-1,1,r);let i=new P;X(m,r[0],i),P.distance(t,i)<=o&&(f.push(r[0]),p.push(h[e]),d.push(i.clone()))}while(0);for(let e=0;e<2;e++){let t=[0,3];do{let r=n.getClosestCoordinate(m[t[e]],!1),i=new P;n.queryCoord2D(r,i),P.distance(m[t[e]],i)<=o&&(f.push(h[e]),p.push(r),d.push(i.clone()))}while(0)}return gu(e,t,n,f,p,f.length,r,i,a,o,s,c,l)}function Io(e,t,n,i,a,o,s,c,l,u){let d=H(P,4);t.queryControlPoints(d);let f=H(P,4);if(n.queryControlPoints(f),nn(d,f,4)<0)return Io(e,n,t,i,o,a,s,c,l,!u);let p=en(t,n);if(s=Math.max(s,p),tn(t,n,s))return 0;if(os(t,n,i,a,o,s,c,l,u))return 2;let m=new R(0,1),h=new R(0,1);{let e=new Ct;Vo(d,new R(0,1),e);let t=new Ct;Vo(f,new R(0,1),t);let n=Math.max(e.maxDim(),t.maxDim());if(e.inflate(s*3),t.inflate(s*3),!e.intersectW(t))return 0;if(e.maxDim()<n*.1){if(es(d,e,m),m.isEmpty()||(es(f,e,h),h.isEmpty()))return 0;Co(d,m.vmin,m.vmax,d),Co(f,h.vmin,h.vmax,f)}}let g=vu(d,3,f,3,s);if(g===0)return 0;let _=[],v=[],y=[],b=!1;if(g===-1){let e=H(q,4);Qa(d,e);let t=[e[0].x,e[1].x,e[2].x,e[3].x],n=[e[0].y,e[1].y,e[2].y,e[3].y],r=H(q,4);Qa(f,r);let i=[r[0].x,r[1].x,r[2].x,r[3].x],a=[r[0].y,r[1].y,r[2].y,r[3].y],o=[],c=[],u=Rr(t,3,n,3,null,0,i,3,a,3,null,0,!0,R.unit(),R.unit(),o,c,l);if(u>0)for(let e=0;e<u;e++){let t=new P;X(f,c[e],t);let n=new P;X(d,o[e],n),P.distance(n,t)<=s&&(_.push(n.clone()),y.push(c[e]),v.push(o[e]))}else u===-1&&(b=!0)}for(let e=0;e<2;e++){let t=e===0?d:f,n=e===0?f:d;for(let r=0;r<2;r++){let i=r===0?0:3,a=[0];Uo(n,t[i],R.unit(),!1,-1,1,a);let o=new P;X(n,a[0],o),P.distance(t[i],o)<=s&&(e===0?(v.push(i===0?0:1),y.push(a[0])):(y.push(i===0?0:1),v.push(a[0])),_.push(o.clone()))}}if(v.length===0&&b){let e=t.calculateUpperLength2D()>n.calculateUpperLength2D();{let i=[0,0];if(Jo(e?t:n,i,!0)===2&&(r(R.unit().containsCoordinate(i[0])),!R.unit().containsCoordinate(i[1]))){let t=new P;X(e?d:f,i[0],t);let n=[0,0];Uo(e?f:d,t,R.unit(),!1,-1,2,n)===1&&(_.push(t.clone()),v.push(e?i[0]:n[0]),y.push(e?n[0]:i[0]))}}}if(v.length===0)return 0;if(!m.equalsRange(0,1))for(let e=0;e<v.length;++e)v[e]=ls.recalculateParentT(m.vmin,m.vmax,v[e]);if(!h.equalsRange(0,1))for(let e=0;e<y.length;++e)y[e]=ls.recalculateParentT(h.vmin,h.vmax,y[e]);return gu(e,t,n,v,y,v.length,i,a,o,s,c,l,u)}function Lo(e,t,n,i,a,o,s,c,l,u){let d=en(t,n);if(n.isDegenerateToLineHelper(d)){let r=new Q({start:n.getStartXY(),end:n.getEndXY()}),d=Po(e,t,r,i,a,o,s,c,l,u);if(o)for(let e=0;e<d;++e){let t=r.getCoord2D(o[e]);o[e]=n.getClosestCoordinate(t,!1)}return d}if(s=Math.max(s,d),tn(t,n,s))return 0;let f=H(P,4);t.queryControlPoints(f);let p=H(P,3);n.queryControlPoints(p);let m=new R(0,1),h=new R(0,1),g=[0,0,0];n.queryWeights(g);let _=[1,Sc(g),1];{let e=new Ct;Vo(f,new R(0,1),e);let t=new Ct;Ys(p,_,new R(0,1),t);let n=Math.max(e.maxDim(),t.maxDim());if(e.inflate(s*3),t.inflate(s*3),!e.intersectW(t))return 0;if(e.maxDim()<n*.1){if(es(f,e,m),m.isEmpty()||(xc(p,_,e,h),h.isEmpty()))return 0;Co(f,m.vmin,m.vmax,f),tc(p,_,h.vmin,h.vmax,p,_)}}let v=vu(f,3,p,2,s);if(v===0)return 0;let y=[],b=[],x=[];if(v===-1){let e=H(q,4);Qa(f,e);let t=[e[0].x,e[1].x,e[2].x,e[3].x],n=[e[0].y,e[1].y,e[2].y,e[3].y],r=H(I,3),i=H(I,3),a=H(I,3);pc(p,_,r,i,a);let o=[],c=[],u=Rr(r,2,i,2,a,2,t,3,n,3,null,0,!0,R.unit(),R.unit(),c,o,l);if(u>0)for(let e=0;e<u;e++){let t=new P;X(f,o[e],t);let n=new P;bc(p,_,c[e],n),P.distance(t,n)<=s&&(y.push(t.clone()),b.push(o[e]),x.push(c[e]))}}for(let e=0;e<2;e++){let t,n;e===0?(t=f,n=p):(n=f,t=p);for(let i=0;i<2;i++){let a=i===0?0:t.length-1,o=[0],c=new P;if(e===0){let e=Gs(n,_,t[a],R.unit(),!1,-1,1,o);r(e===1),bc(n,_,o[0],c)}else{let e=Uo(n,t[a],R.unit(),!1,-1,1,o);r(e===1),X(n,o[0],c)}P.distance(t[a],c)<=s&&(e===0?(b.push(a===0?0:1),x.push(o[0])):(x.push(a===0?0:1),b.push(o[0])),y.push(c.clone()))}}if(b.length===0)return 0;if(!m.equalsRange(0,1))for(let e=0;e<b.length;++e)b[e]=ls.recalculateParentT(m.vmin,m.vmax,b[e]);if(!h.equalsRange(0,1))for(let e=0;e<x.length;++e)x[e]=Mr.recalculateParentT(h.vmin,h.vmax,x[e]);for(let e=0;e<x.length;++e)x[e]=Cc(g,x[e]);return gu(e,t,n,b,x,b.length,i,a,o,s,c,l,u)}function Ro(e,t,n,i,a,o,s,c,l,u){let d=en(t,n);if(s=Math.max(s,d),tn(t,n,s))return 0;let f=H(P,4);t.queryControlPoints(f);let p=H(P,3);n.queryControlPoints(p);let m=vu(f,3,p,2,s);if(m===0)return 0;let h=[],g=[],_=[];if(m===-1){let e=H(q,4);Qa(f,e);let r=[e[0].x,e[1].x,e[2].x,e[3].x],i=[e[0].y,e[1].y,e[2].y,e[3].y],a=H(q,3);Xi(p,a);let o=Rr([a[0].x,a[1].x,a[2].x],2,[a[0].y,a[1].y,a[2].y],2,null,0,r,3,i,3,null,0,!0,R.unit(),R.unit(),_,g,c);if(o>0){let e=0;for(let r=0;r<o;r++){let i=new P;t.queryCoord2D(g[r],i);let a=new P;n.queryCoord2D(_[r],a),P.distance(i,a)<=s&&(h.push(i.clone()),g[e]=g[r],_[e]=_[r],e++)}g.length=e,h.length=e}}for(let e=0;e<2;e++){let t,n;e===0?(t=f,n=p):(n=f,t=p);for(let i=0;i<2;i++){let a=i===0?0:t.length-1,o=[0],c=new P;if(e===0)Oi(n,t[a],o),Zi(n,o[0],c);else{let e=Uo(n,t[a],R.unit(),!1,-1,1,o);r(e===1),X(n,o[0],c)}P.distance(t[a],c)<=s&&(e===0?(g.push(a===0?0:1),_.push(o[0])):(_.push(a===0?0:1),g.push(o[0])),h.push(c.clone()))}}return gu(e,t,n,g,_,g.length,i,a,o,s,c,l,u)}function zo(t,n,i,a,o){let s=new Ct;if(Bo(t,R.unit(),s),s.inflate(a),!s.isIntersectingPoint2D(n))return 0;let c=no(t),l=0,u=c.specialPoints[0],d=[];for(let e=1,i=c.specialPoints.length;e<i;++e){let i=c.specialPoints[e],a=lo(t,n,u,i);if(d.length===0)d.push(a);else if(a.t===a.tmin)r(d.at(-1).d<=a.d),d.at(-1).tmax=a.tmax;else if(d.at(-1).t===d.at(-1).tmax){r(d.at(-1).d>=a.d);let e=d.at(-1).tmin;d[d.length-1]=a,d.at(-1).tmin=e}else d.push(a);u=i}for(let t of d)if(t.d<=a){let n=t.t;i?(l>=i.length&&e(``),i[l]=n,l++):l++}return l}function Bo(e,t,n){let r=H(P,4);e.queryControlPoints(r),Vo(r,t,n)}function Vo(e,t,n){if(t.equalsRange(0,1)){n.setFromPoints(e,4);return}let r=H(P,4);Co(e,t.vmin,t.vmax,r),n.setFromPoints(r,4)}let Ho=class{controlPoints;point;maxDistance;dbgCounter=0;constructor(e,t,n){this.controlPoints=e,this.point=t.clone(),this.maxDistance=n}getMaxDerivative(){return 6}getValue(e,t){switch(e){case 0:{let e=new P;X(this.controlPoints,t,e);let n=mo(this.controlPoints,1,t);return e.sub(this.point).dotProduct(n)*2}case 1:{let e=new P;X(this.controlPoints,t,e);let n=mo(this.controlPoints,1,t),r=mo(this.controlPoints,2,t);return(e.sub(this.point).dotProduct(r)+n.dotProduct(n))*2}case 2:{let e=new P;X(this.controlPoints,t,e);let n=mo(this.controlPoints,1,t),r=mo(this.controlPoints,2,t),i=mo(this.controlPoints,3,t);return(e.sub(this.point).dotProduct(i)+3*n.dotProduct(r))*2}case 3:{let e=mo(this.controlPoints,1,t),n=mo(this.controlPoints,2,t),r=mo(this.controlPoints,3,t);return(4*e.dotProduct(r)+3*n.sqrLength())*2}case 4:{let e=mo(this.controlPoints,2,t),n=mo(this.controlPoints,3,t);return 10*e.dotProduct(n)*2}case 5:{let e=mo(this.controlPoints,3,t);return 10*e.dotProduct(e)*2}default:return 0}}getError(e){return 0}isInterestingInterval(e,t){if(e>=0&&t<=1){let n=H(P,4);Co(this.controlPoints,e,t,n);let r=new Ct;if(r.setFromPoints(n,4),Math.sqrt(r.sqrMinDistance(this.point))>this.maxDistance)return!1}return!0}};function Uo(e,t,n,i,a,o,s){h(R.unit().contains(n)&&o>0,`getClosestCoordinate`),(a<0||Number.isNaN(a))&&(a=Number.MAX_VALUE);let c=[],l=new P;X(e,n.vmin,l);let u=P.distance(l,t);if(u<=a&&c.push(new P(n.vmin,u)),n.vmin!==n.vmax&&(X(e,n.vmax,l),u=P.distance(l,t),u<=a&&c.push(new P(n.vmax,u))),n.width()>0){let r=L(18,NaN),i=cr(new Ho(e,t,a),n,18,r);for(let n=0;n<i;n++)X(e,r[n],l),u=P.distance(l,t),!(u>a)&&c.push(new P(r[n],u))}if(i){r(n.equals(R.unit()));{X(e,-1,l,!0);let n=new P;X(e,0,n);let r=new Q({start:l,end:n}),i=r.getClosestCoordinate(t,!0);i<1&&(l.assign(r.getCoord2D(i)),u=P.distance(l,t),u<=a&&c.push(new P(i-1,u)))}{X(e,2,l,!0);let r=new P;X(e,n.vmax,r);let i=new Q({start:r,end:l}),o=i.getClosestCoordinate(t,!0);o>0&&(l.assign(i.getCoord2D(o)),u=P.distance(l,t),u<=a&&c.push(new P(1+o,u)))}}if(!c.length)return 0;c.sort((e,t)=>e.compare(t));let d=0,f=c[0].x;if(s[d++]=f,d<o){let t=pe(e,4,!1).total(),n=c[0].y;for(let e=1,r=c.length;e<r;e++)if(c[e].y>n+t){c.length=e;break}c.sort((e,t)=>Qe(e.x,t.x)),d=0,s[d++]=c[0].x;for(let e=1,t=c.length;e<t;e++)c[e].x!==s[d-1]&&d<o&&(s[d++]=c[e].x)}return d}function Wo(e,t,n,r,i,a,o){let s=H(P,4);return e.queryControlPoints(s),Uo(s,t,n,r,i,a,o)}function Go(e){return e.getStartXY().norm(1)+e.getEndXY().norm(1)+e.m_cp[0].norm(1)+e.m_cp[1].norm(1)}function Ko(e){return e[0].norm(1)+e[1].norm(1)+e[2].norm(1)+e[3].norm(1)}function qo(e,t,n){if(r(n>=2),n===2){let r=new P;Ue(t[0],t[n-1],1/3,r);let i=new P;Ue(t[0],t[n-1],2/3,i),e.construct(t[0],r,i,t[n-1]);return}let i=t[0],a=t[n-1],o=[0,0],s=Wo(e,i,R.unit(),!1,NaN,2,o),c=[0,0],l=Wo(e,a,R.unit(),!1,NaN,2,c),u=[];for(let r=0;r<s;r++)for(let s=0;s<l;s++){let l=o[r],d=c[s],f=l>d,p=(r,o)=>{let s=L(n-2,NaN),c=()=>{let e=0;for(let r=1,i=n-1;r<i;r++){e+=P.distance(t[r-1],t[r]);let n=e;s[r-1]=n}e+=P.distance(t[n-2],t[n-1]),f&&s.reverse();for(let t=1,r=n-1;t<r;t++)s[t-1]/=e,f&&(s[t-1]=1-s[t-1])},u=!1,p=!1;{let t=new $;f?(e.queryCut(d,l,t,!0),r.assign(t.get().getControlPoint2()),o.assign(t.get().getControlPoint1())):(e.queryCut(l,d,t,!0),r.assign(t.get().getControlPoint1()),o.assign(t.get().getControlPoint2())),i.equals(r)&&(u=!0),a.equals(o)&&(p=!0)}c();let m=Number.MAX_VALUE,h=r.clone(),g=o.clone();for(let e=0;e<5;e++)m=ss(!0,!1,i,h,g,a,u,p,s,n-2,t,n);for(let e=0;e<30;e++){let e=h.clone();g.clone();let r=ss(!0,!0,i,h,g,a,u,p,s,n-2,t,n);if(m<=r&&e.equals(h)&&e.equals(g))break;m=r}c();let _=!1,v=Number.MAX_VALUE,y=r.clone(),b=o.clone();for(let e=0;e<30;e++){let e=y.clone();b.clone();let r=ss(_,!0,i,y,b,a,u,p,s,n-2,t,n);if(v<=r&&e.equals(y)&&e.equals(b))break;_=!0,v=r}return v<m?(r.assign(y),o.assign(b)):(r.assign(h),o.assign(g),v=m),v},m=new P,h=new P,g=[p(m,h),P.distance(i,m)+P.distance(m,h)+P.distance(h,a),m.x,m.y,h.x,h.y];u.splice(u.length,0,...g)}let d=u[0],f=u[1],p=0;for(let e=6;e<u.length;e+=6)u[e]<d&&(d=u[e],f=u[e+1],p=e);let m=p;for(let e=0;e<u.length;e+=6)e!==p&&u[e+1]<f&&Math.abs(d-u[e])<d*10&&(f=u[e+1],m=e);e.construct(i,new P(u[m+2],u[m+3]),new P(u[m+4],u[m+5]),a)}function Jo(e,t,n=!1){let r=H(P,4);e.queryControlPoints(r);let i=H(q,4);Qa(r,i,!0);let a,o,s,c=i[3].x.isZero(),l=i[3].y.isZero();if(!c&&!l){i[2].x.divThis(i[3].x),i[1].x.divThis(i[3].x),i[2].y.divThis(i[3].y),i[1].y.divThis(i[3].y);let e=i[2].x.sub(i[2].y);if(e.isZero())return 0;a=i[1].x.sub(i[1].y).div(e).negate(),o=i[2].x.clone(),s=i[1].x.clone()}else if(c&&!l){if(i[2].x.isZero())return 0;a=i[1].x.div(i[2].x).negate(),o=i[2].y.div(i[3].y),s=i[1].y.div(i[3].y)}else if(!c&&l){if(i[2].y.isZero())return 0;a=i[1].y.div(i[2].y).negate(),o=i[2].x.div(i[3].x),s=i[1].x.div(i[3].x)}else return 0;if(!n&&a.abs().value()>2)return 0;let u=[0,0],d=e.getStartXY().equals(e.getEndXY()),f=ur(1,-a.toDouble(),a.add(o).mul(a).add(s).toDouble(),R.unit(),d,u);if(f===0)return 0;if(u[0]>=0&&u[0]<=1){let e=a.toDouble()-u[0];if(n||e>=0&&e<=1)return t[0]=u[0],t[1]=e,t[0]>t[1]&&(t[1]=z(t[0],t[0]=t[1])),2}if(f===2&&u[1]>=0&&u[1]<=1){let e=a.toDouble()-u[1];if(n||e>=0&&e<=1)return t[0]=u[1],t[1]=e,t[0]>t[1]&&(t[1]=z(t[0],t[0]=t[1])),2}return 0}function Yo(e,t,n){let r=e[1].mulE(t[2]).subThisE(e[2].mulE(t[1])),i=e[1].mulE(t[3]).subThisE(e[3].mulE(t[1])).mulThis(3),a=e[2].mulE(t[3]).subThisE(e[3].mulE(t[2])).mulThis(3),o=H(V,2),s=br(a,i,r,new R(0,1),!1,o);s<0&&(s=0);let c=0;for(let e=0;e<s;e++)U(o[e].value(),0,1)||(n[c].setE(o[e]),c++);return c}function Xo(e,t){t[0].set(0);let n=1,i=H(V,4);Xa(e,i,!0);let a=H(V,4);Za(e,a,!0);{let e=i[3].mul(3),r=i[2].mul(2),a=i[1].clone(),o=H(V,2),s=br(e,r,a,new R(0,1),!1,o);s<0&&(s=0);for(let e=0;e<s;e++)U(o[e].value(),0,1)||(t[n]=o[e],n++)}{let e=a[3].mul(3),r=a[2].mul(2),i=a[1].clone(),o=H(V,2),s=br(e,r,i,new R(0,1),!1,o);s<0&&(s=0);for(let e=0;e<s;e++)U(o[e].value(),0,1)||(t[n]=o[e],n++)}let o=Yo(i,a,t.slice(n));if(n+=o,t[n].set(1),n++,n>2){Ee(t,0,n,(e,t)=>{let n=e.value(),r=t.value();return n<r?-1:+(n>r)});let r=0,i=t[0].clone(),a=0,o=Ko(e)*Se(),s=new P;xo(e,t[0].value(),s);for(let c=1;c<n;c++){let n=new P;if(xo(e,t[c].value(),n),t[c].eq(i)||n.isEqualPoint2D(s,o)){if(r!==0){if(t[c].eps()===0)i.setE(t[c]),a=0;else if(a!==0){let e=Ze(1/t[c].eps()),n=1/a,r=e+n;i.set((t[c].value()*e+i.value()*n)/r),a=1/r,i.setError(Math.sqrt(a))}t[r].setE(i),xo(e,i.value(),s)}continue}r++,t[r].setE(t[c]),i.setE(t[c]),xo(e,i.value(),s),a=Ze(t[c].eps())}r++,n=r}return n===1&&(n=2,t[1].set(1)),r(t[0].value()===0),r(t[n-1].value()===1),n}function Zo(e,t,n,r,i){let a=H(V,4),o=H(V,3),s=new R(0,1),c=0;if(t){if(Za(e,a,!1),c=xr(a[3],a[2],a[1],a[0].sub(n),s,!1,o),r)for(let t=0;t<c;t++){let n=new P;X(e,o[t].value(),n),r[t]=n.x}}else if(Xa(e,a,!1),c=xr(a[3],a[2],a[1],a[0].sub(n),s,!1,o),r)for(let t=0;t<c;t++){let n=new P;X(e,o[t].value(),n),r[t]=n.y}if(i)for(let e=0;e<c;e++)i[e]=o[e].value();else r&&Ee(r,0,c,Qe);return c}function Qo(e,t,n,r){let i=$o(e,t,n,r.getEnvelope2D());if(i.isEmpty())return new R(i);let a=H(P,n);for(let t=0;t<n;++t)r.xyRot(e[t],a[t]);let o=$o(a,t,n,r.getRotatedEnvelope2D());return i.intersect(new R(o)),new R(i)}function $o(e,t,n,r){let i=H(P,n);for(let e=0;e<n;++e)i[e]=new P(e/(n-1),0);let a=(e,t,n,r)=>{let i=new V(t.x).subE(new V(e.x)).divE(new V(t.y).subE(new V(e.y))).mulE(new V(n).subE(new V(e.y))).addE(new V(e.x));if(i.eps()>.1){let r=(t.x-e.x)/(t.y-e.y)*(n-e.y)+e.x;i.set(r,Se())}if(i.lt(new V(0))||i.gt(new V(1)))return!1;let a=i.value()-i.eps();a=xe(a,0,1);let o=i.value()+i.eps();return o=xe(o,0,1),r.mergeCoordinate(a),r.mergeCoordinate(o),!0},o=[];{let t=(e,t)=>{o.length=n;let r=Ea(i,n,o,!0),s=new R;s.setEmpty();let c=n=>n.y<e?-1:+(n.y>t),l=i[o[0]],u=c(l);u===0&&s.mergeCoordinate(l.x);for(let n=1;n<=r;++n){let d=i[o[n%r]],f=c(d);f===0&&s.mergeCoordinate(d.x);let p=0;f!==u&&(p=f*u===0?f===1||u===1?2:1:3,p&1&&a(l,d,e,s),p&2&&a(l,d,t,s)),l=d,u=f}return s};for(let t=0;t<n;++t)i[t].y=e[t].x;let s=t(r.xmin,r.xmax);if(s.isEmpty())return new R(s);for(let t=0;t<n;++t)i[t].y=e[t].y;let c=t(r.ymin,r.ymax);return s.intersect(new R(c)),new R(s)}}function es(e,t,n){n.setEmpty(),n.merge(Qo(e,null,4,t))}function ts(e,t,n){n.length=0;{let t=new V;uo(e,t);let r=new K;if(Do(e,t,r),r.isZero())return!t.isZero()&&!t.eq(new V(1))?(n.push(t.value()),1):0}let r=H(V,4);Ja(e,r,!0);let i=H(V,4);Ya(e,i,!0);let a=H(V,6),o=r[3].negate().mulE(i[1]).addE(r[2].mulE(i[2]).mul(2)).addE(r[1].mulE(i[3])),s=r[3].negate().mulE(i[1]).subE(r[2].mulE(i[2]).mul(2)).addE(r[1].mulE(i[3])),c=r[2].mulE(r[2]).subE(i[2].mulE(i[2]));a[0]=i[1].mulE(i[1]).mulE(o).addE(r[1].mulE(r[1]).mulE(s)).addE(r[1].mulE(i[1]).mulE(c).mul(2)).mul(6),a[1]=r[2].mulE(i[1]).subE(r[1].mulE(i[2])).mulE(r[2].mulE(r[2]).addE(r[1].mulE(r[3]).mul(2)).addE(i[2].mulE(i[2])).addE(i[1].mulE(i[3]).mul(2))).mul(24);let l=r[1].mulE(i[2]).mulE(i[2]).mulE(i[3]),u=r[2].mulE(r[2]).mulE(r[3]).mulE(i[1]).subE(l).mul(156),d=r[3].mulE(i[1]).subE(r[1].mulE(i[3])),f=r[3].mulE(i[1]).subE(r[1].mulE(i[3])),p=r[1].mulE(r[3]).mulE(f).addE(i[1].mulE(i[3]).mulE(d)).mul(72),m=i[1].mulE(i[3]).subE(r[1].mulE(r[3])),h=r[2].mulE(i[2]).mulE(m).mul(120),g=r[1].mulE(r[2]).mulE(r[2]).mulE(i[3]),_=r[3].mulE(i[1]).mulE(i[2]).mulE(i[2]).subE(g).mul(36);a[2]=u.addE(p).addE(h).addE(_);let v=r[2].mulE(r[3]).mulE(r[3]).mulE(i[1]).subE(r[1].mulE(i[2]).mulE(i[3]).mulE(i[3])).mul(360),y=r[2].mulE(i[2]).mulE(r[2].mulE(r[3]).subE(i[2].mulE(i[3]))).addE(r[3].mulE(i[2]).mulE(i[2]).mulE(i[2])).subE(r[2].mulE(r[2]).mulE(r[2]).mulE(i[3])).mul(24),b=r[2].mulE(i[1]).mulE(i[3]).mulE(i[3]).subE(r[1].mulE(r[3]).mulE(r[3]).mulE(i[2])).mul(72),x=r[3].mulE(i[3]).mulE(i[1].mulE(i[2]).subE(r[1].mulE(r[2]))).mul(288);a[3]=v.addE(y).addE(b).addE(x),a[4]=i[3].mulE(i[3]).addE(r[3].mulE(r[3])).mulE(r[3].mulE(i[1]).subE(r[1].mulE(i[3]))).mul(270).addE(r[3].mulE(i[2]).subE(r[2].mulE(i[3]))).mulE(r[2].mulE(r[3]).addE(i[2].mulE(i[3]))).mul(180),a[5]=r[3].mulE(i[2]).subE(r[2].mulE(i[3])).mulE(r[3].mulE(r[3]).addE(i[3].mulE(i[3]))).mul(216);let S=H(V,5),C=Sr(a,5,new R(0,1),!1,S,5);if(C>0){let r=Math.abs(e.getCurvature(0)),i=0,a=Math.abs(e.getCurvature(1));(a>r||!Number.isFinite(a))&&(i=1);for(let t=0;t<C;t++){let n=Math.abs(e.getCurvature(S[t].value()));e.getCoord2D(S[t].value()),(n>r||!Number.isFinite(n))&&(r=n,i=S[t].value())}if((!Number.isFinite(r)||1/r<t)&&!U(i,0,1)){let t=e.getCoord2D(i);if(!t.equals(e.getStartXY())&&!t.equals(e.getEndXY()))return n.push(i),1}}if(!e.isClosed()){let t=[0,0],r=Jo(e,t,!1);for(let e=0;e<r;e++)t[e]>0&&t[e]<1&&n.push(t[e]);return n.length}return 0}class ns{b;len;constructor(e,t){this.b=e,this.len=t}getMaxDerivative(){return 1}getValue(e,t){return e===0?this.len-$a(this.b,t,!1):0}getError(e){return 0}}function rs(e,t,n,i,a,o,s){for(;;){let c=P.distance(t[0],t[3]),l=P.distance(t[0],t[1])+P.distance(t[1],t[2])+P.distance(t[2],t[3]);if(l-c<=i+n*l)return e+B(c,l,.5);let u=e=>mo(t,1,e).length();{r(s<12);let c=u(0),d=u(1);a[0]+=2,c>d&&(d=z(c,c=d),t[3]=z(t[0],t[0]=t[3]),t[2]=z(t[1],t[1]=t[2]));let f=c/(c+d),p=1,m=l;for(;f<1/32&&m>=32*(i+n*m);){p/=4;let e=u(p);a[0]++,f=c/(e+c);let n=new P;if(X(t,p*.5,n),m=P.distance(n,t[0]),m<=i){let e=new P;X(t,p,e),m+=P.distance(e,n)}}if(p!==1){let r=H(P,4);So(t,p,t,r),e=rs(e,r,n,i,a,0,s+1),o++,s++;continue}}a[0]+=8;let d=ma(8,u,0,1);a[0]+=16;let f=ma(16,u,0,1),p=Math.abs(d-f)>i+n*l;if(!p)return e+f;if(o<3){let r=H(P,4);So(t,.5,t,r),e=rs(e,r,n,i,a,o+1,s+1),o++,s++;continue}a[0]+=32;let m=ma(32,u,0,1);if(p=Math.abs(f-m)>i+n*l,!p)return e+m;a[0]+=64;let h=ma(64,u,0,1);if(p=Math.abs(m-h)>i+n*l,!p)return e+h;a[0]+=128;let g=ma(128,u,0,1);return p=Math.abs(h-g)>i+n*l,e+g}}function is(e,t,n,r,i){if(n===t)return 0;let a=H(P,4);e.queryControlPoints(a);let o=H(P,4);return Co(a,t,n,o),rs(0,o,r,i,[0],0,0)}function as(e,t,n,r,i){let a=!0,o=ri(5,t,n,r,i,t=>{let n=go(e,1,t);return(a?e.getCoordX(t)-e.getStartX():e.getCoordY(t)-e.getStartY())*n.length()});a=!1;let s=ri(5,t,n,r,i,t=>{let n=go(e,1,t);return(a?e.getCoordX(t)-e.getStartX():e.getCoordY(t)-e.getStartY())*n.length()});return new P(o,s)}function os(e,t,n,r,i,a,o,s,c){let l=H(P,4);e.queryControlPoints(l);let u=H(P,4);if(t.queryControlPoints(u),l[0].equals(u[0])){if(l[1].equals(u[1])&&l[2].equals(u[2])&&l[3].equals(u[3]))return n&&(n.length=0,n.push(l[0]),n.push(l[3])),r&&(r.length=0,r.push(0),r.push(1)),i&&(i.length=0,i.push(0),i.push(1)),!0;if(!l[0].equals(u[3]))return!1}return l[0].equals(u[3])&&l[1].equals(u[2])&&l[2].equals(u[1])&&l[3].equals(u[0])?(r&&(r.length=0,r.push(0),r.push(1),c&&(r[1]=z(r[0],r[0]=r[1]))),i&&(i.length=0,i.push(1),i.push(0),c&&(i[1]=z(i[0],i[0]=i[1]))),n&&(n.length=0,n.push(l[0]),n.push(l[3]),c&&(n[1]=z(n[0],n[0]=n[1]))),!0):!1}function ss(e,t,n,i,a,o,s,c,l,u,d,f){r(u+2===f);let p=0,m=0,h=0,g=0,_=0,v=0,y=0,b=(e,t)=>{let r=1-t,s=n.mul(_t(r)),c=i.mul(3*t*r*r),l=a.mul(3*t*t*r),u=o.mul(_t(t));return s.add(c).add(l).add(u).sub(d[e]).sqrLength()};for(let t=1,r=f-1;t<r;t++){let r=l[t-1];if(e){t>2?(r=xe(2*l[t-2]-l[t-3],0,1),l[t-1]=r):t===2&&(r=xe(2*l[t-2],0,1),l[t-1]=r);let e=(e,t,r)=>{let s=-1;for(let c=0;!(Math.abs(t-s)<1e-12||c===10);c++){let c=t*t,l=1-t,u=l*l,f=u*l,p=n.x-2*i.x+a.x,m=n.x-3*i.x+3*a.x-o.x,h=n.y-2*i.y+a.y,g=n.y-3*i.y+3*a.y-o.y,_=n.x-i.x-2*p*t+m*c,v=-d[e].x+n.x*f+t*(3*i.x*u+t*(3*a.x*l+o.x*t)),y=n.y-i.y-2*h*t+g*c,b=-d[e].y+n.y*f+t*(3*i.y*u+t*(3*a.y*l+o.y*t)),x=-6*(_*v+y*b),S=6*(3*Ze(_)-(-2*p+2*m*t)*v)+6*(3*Ze(y)-(-2*h+2*g*t)*b);if(s=t,S!==0){let e=t-x/S;t=xe(e,r,1)}else break}return s};{let n=b(t,l[t-1]),r=e(t,l[t-1],0),i=b(t,r);if(n*1.01<i){let n=t>1?l[t-2]:0,a=e(t,(l[t-1]-n)*.3+n,0),o=b(t,a);o<i&&(i=o,r=a)}n>i&&(l[t-1]=r)}}let s=l[t-1],c=s*s,u=c*s,f=1-s,x=f*f,S=x*f;p+=3*c*x*x,m+=3*u*S,h+=3*c*c*x;let C=-(S*n.x+u*o.x-d[t].x);g+=C*s*x,_+=C*c*f;let w=-(S*n.y+u*o.y-d[t].y);v+=w*s*x,y+=w*c*f}if(t){let e=p*h-m*m;Math.abs(e)>=(Math.abs(p*h)+Math.abs(m*m))*1e-12+1e-10?(s||(i.x=(g*h-_*m)/e,i.y=(v*h-y*m)/e),c||(a.x=(p*_-m*g)/e,a.y=(p*y-m*v)/e)):(Ue(n,o,.3,i),Ue(n,o,.6,a))}let x=0;for(let e=1,t=f-1;e<t;e++)x+=b(e,l[e-1]);return x}var cs=v;class ls extends Sn{static type=s.enumBezier;constructor(e){e&&e.cp?(super({start:e.cp[0],end:e.cp[3],vd:e.vd}),this.m_cp=H(P,2),this.m_cp[0].assign(e.cp[1]),this.m_cp[1].assign(e.cp[2])):e===void 0||Ne(e,`vd`)?(super({vd:e?.vd,XStart:0,YStart:0,XEnd:0,YEnd:0}),this.m_cp=H(P,2),this.m_cp[0].setCoords(0,0),this.m_cp[1].setCoords(0,0)):e.from?(super({start:e.from,end:e.to,vd:e.vd}),this.m_cp=H(P,2),this.m_cp[0].assign(e.cp1),this.m_cp[1].assign(e.cp2)):(super({XStart:0,YStart:0,XEnd:0,YEnd:0,vd:e.vd}),t(`unrecognized constructor params`),this.m_cp=H(P,2),this.m_cp[0].setCoords(0,0),this.m_cp[1].setCoords(0,0)),this.m_cachedValues=0}getBoundary(){return or(this)}construct(e,t,n,r){this.m_XStart=e.x,this.m_YStart=e.y,this.m_XEnd=r.x,this.m_YEnd=r.y,this.m_cp[0].assign(t),this.m_cp[1].assign(n),this.afterCompletedModification()}constructPoints(e){this.m_XStart=e[0].x,this.m_YStart=e[0].y,this.m_XEnd=e[3].x,this.m_YEnd=e[3].y,this.m_cp[0].assign(e[1]),this.m_cp[1].assign(e[2]),this.afterCompletedModification()}constructFromQuadratic(e){let t=H(P,4);ia(e,t),this.constructPoints(t)}constructFromQuadraticSegment(e){this.dropAllAttributes(),this.assignVertexDescription(e.getDescription()),this.m_XStart=e.getStartX(),this.m_YStart=e.getStartY(),this.m_XEnd=e.getEndX(),this.m_YEnd=e.getEndY(),Le(2,e.getStartXY(),e.getControlPoint1(),2/3,this.m_cp[0]),Le(2,e.getControlPoint1(),e.getEndXY(),1/3,this.m_cp[1]),this.afterCompletedModification(),Zt(this,e)}getGeometryType(){return s.enumBezier}queryEnvelope(e){if(e.m_EnvelopeType!==2){r(0);return}if(e.setCoords(this.getStartXY()),e.mergeNe(this.getEndXY()),e.contains(this.m_cp[0])&&e.contains(this.m_cp[1]))return;let t=ro(this);if(t!==null){let n=new P;for(let r of t.specialPoints)this.queryCoord2D(r,n),e.mergeNe(n);return}let n=H(V,8),i=H(P,4);this.queryControlPoints(i);let a=Xo(i,n),o=new P;for(let t=1;t<a-1;t++)this.queryCoord2D(n[t].value(),o),e.mergeNe(o)}applyTransformation(e){if(e.m_TransformationType===1){let t=H(P,4);this.queryControlPoints(t),e.transformPoints2D(t,4,t),this.setStartXY(t[0]),this.m_cp[0].assign(t[1]),this.m_cp[1].assign(t[2]),this.setEndXY(t[3]),ao(this);return}r(0)}createInstance(){return new ls({vd:this.m_description})}calculateLength2D(){return $a(this,1,!1)}calculateLowerLength2D(){return P.distance(this.getStartXY(),this.getEndXY())}calculateUpperLength2D(){return P.distance(this.getStartXY(),this.m_cp[0])+P.distance(this.m_cp[0],this.m_cp[1])+P.distance(this.getEndXY(),this.m_cp[1])}queryCoord2D(e,t){return this.queryCoord2DExtends(e,t,!0)}queryCoord2DMP(e,t){r(0)}queryCoord2DExtends(e,t,n){let r=H(P,4);this.queryControlPoints(r),X(r,e,t,n)}queryCoord2DE(e,t){To(this,e,t)}getCoordX(e){if(e<0||e>1){let t=new P;return this.queryCoord2DExtends(e,t,!0),t.x}let t=B(this.getStartX(),this.m_cp[0].x,e),n=B(this.m_cp[0].x,this.m_cp[1].x,e),r=B(this.m_cp[1].x,this.getEndX(),e),i=B(t,n,e),a=B(n,r,e);return B(i,a,e)}getCoordY(e){if(e<0||e>1){let t=new P;return this.queryCoord2DExtends(e,t,!0),t.y}let t=B(this.getStartY(),this.m_cp[0].y,e),n=B(this.m_cp[0].y,this.m_cp[1].y,e),r=B(this.m_cp[1].y,this.getEndY(),e),i=B(t,n,e),a=B(n,r,e);return B(i,a,e)}cut(e,t,n){let r=new $;return this.queryCut(e,t,r,n),r.releaseSegment()}queryCut(e,t,n,r){let i=n.createCubicBezier();if(this.cutBezierIgnoreAttributes(e,t,i),r)return;i.assignVertexDescription(this.m_description);let a=this.m_description.getAttributeCount();if(a>1){for(let t=1;t<a;t++){let n=this.m_description.getSemantics(t),r=cs.getComponentCount(n);for(let t=0;t<r;t++){let r=this.getAttributeAsDbl(e,n,t);i.setStartAttribute(n,t,r)}}for(let e=1;e<a;e++){let n=this.m_description.getSemantics(e),r=cs.getComponentCount(n);for(let e=0;e<r;e++){let r=this.getAttributeAsDbl(t,n,e);i.setEndAttribute(n,e,r)}}}}queryDerivative(e,t){Do(this,e,t)}cutBezierIgnoreAttributes(e,t,n){(e<0||t>1||e>t)&&i(`Cubic_bezier.cut_bezier_ignore_attributes`);let r=H(P,4);this.queryControlPoints(r);let a=H(P,4);Co(r,e,t,a),n.setControlPoints(a)}splitBezierIgnoreAttributes(e,t,n){this===t&&this===n&&i(`Cubic_bezier.split_bezier_ignore_attributes`);let r=H(P,4);this.queryControlPoints(r);let a=H(P,4),o=H(P,4);So(r,e,a,o),t&&t.setControlPoints(a),n&&n.setControlPoints(o)}getAttributeAsDbl(e,t,n){if(t===0)return n===0?this.getCoordX(e):this.getCoordY(e);if(e===0)return this.getStartAttributeAsDbl(t,n);if(e===1)return this.getEndAttributeAsDbl(t,n);let r=this.getStartAttributeAsDbl(t,n),i=this.getEndAttributeAsDbl(t,n),a=this.calculateLength2D(),o=a>0?this.tToLength(e)/a:0,s=cs.getInterpolation(t);return Ae(s,r,i,o,cs.getDefaultValue(t))}getClosestCoordinate(e,t){let n=[NaN];return Wo(this,e,R.unit(),t,-1,1,n),n[0]}getClosestCoordinateOnInterval(e,t,n=-1){let r=[NaN];return Wo(this,e,t,!1,n,1,r)===0?NaN:r[0]}getYMonotonicParts(e,t=!1){return this.getMonotonicParts(e,t)}getMonotonicParts(e,t){e.length<2&&i(``);let n=no(this);if(n.specialPointsCount()===2&&this.isMonotoneQuickAndDirty())return 0;let a=0;r(e.length>=n.specialPointsCount()-1);for(let r=1,i=n.specialPointsCount();r<i;++r)this.queryCut(n.specialPoints[r-1],n.specialPoints[r],e[a],t),a++;for(let t=0;t<a;++t)vo(e[t].get());return a}intersectionWithAxis2D(e,t,n,r){let i=H(P,4);return this.queryControlPoints(i),Zo(i,e,t,n,r)}intersectionOfYMonotonicWithAxisX(e,t){if(this.m_YStart===this.m_YEnd)return e===this.m_YStart?t:NaN;if(e===this.m_YStart)return this.m_XStart;if(e===this.m_YEnd)return this.m_XEnd;let n=[0,0],i=this.intersectionWithAxis2D(!0,e,n,null);return r(i!==2),i===-1?t:n[0]}isCurve(){return!0}isDegenerate(e){return Pt(this,e)}isDegenerate3D(e,t){return r(0),!1}queryLooseEnvelope(e){if(e.m_EnvelopeType===2){e.setCoords({pt:this.getStartXY()}),e.mergeNe(this.m_cp[0]),e.mergeNe(this.m_cp[1]),e.mergeNe(this.getEndXY());return}r(0)}clone(e){let t=this.createInstance();return this.copyTo(t),t}queryInterval(e,t){if(e===0){let e=G.constructEmpty();this.queryEnvelope(e);let n=R.constructEmpty();return t===0?e.queryIntervalX(n):e.queryIntervalY(n),n}return super.queryInterval(e,t)}queryLooseEnvelopeOnInterval(e,t){let n=H(P,4);this.queryControlPoints(n),Co(n,e.vmin,e.vmax,n),t.setFromPoints(n,4)}changeEndPoints2D(e,t){if(e.isEqual(this.m_XStart,this.m_YStart)&&t.isEqual(this.m_XEnd,this.m_YEnd))return;let n=this.m_cp[0].isEqual(this.m_XStart,this.m_YStart),r=this.m_cp[0].isEqual(this.m_XEnd,this.m_YEnd),i=this.m_cp[1].isEqual(this.m_XStart,this.m_YStart),a=this.m_cp[1].isEqual(this.m_XEnd,this.m_YEnd);this.setStartXY(e),this.setEndXY(t),n?this.m_cp[0].setCoordsPoint2D(e):r&&this.m_cp[0].setCoordsPoint2D(t),a?this.m_cp[1].setCoordsPoint2D(t):i&&this.m_cp[1].setCoordsPoint2D(e),this.normalizeAfterEndpointChange()}tToLength(e){return $a(this,e,!0)}lengthToT(e){return eo(this,e)}calculateWeightedAreaCentroid2D(e){let t=H(P,4);qa(this,t);let n=t[3],r=t[2],i=t[1],a=new P;a.x=(5*n.x*n.x*(7*r.y+16*i.y)+n.x*(-35*n.y*r.x+40*r.x*r.y-80*n.y*i.x+140*r.x*i.y+112*i.x*i.y)-2*(n.y*(20*r.x*r.x+70*r.x*i.x+56*i.x*i.x)-7*(4*r.x+5*i.x)*(-(r.y*i.x)+r.x*i.y)))/840,a.y=(-5*n.y*n.y*(7*r.x+16*i.x)+n.y*(5*n.x*(7*r.y+16*i.y)-4*(10*r.x*r.y+35*r.y*i.x+28*i.x*i.y))+2*(-7*(4*r.y+5*i.y)*(r.y*i.x-r.x*i.y)+n.x*(20*r.y*r.y+70*r.y*i.y+56*i.y*i.y)))/840;let o=_o(this);return a.x+=(t[0].x-e.x)*o,a.y+=(t[0].y-e.y)*o,a}calculateWeightedCentroid2D(){let e=new P;return this.isDegenerate(0)?(e.setCoords(0,0),e):Ka(this)?(e.assign(this.getCoord2D(.5).mul(this.calculateLength2D())),e):(e.assign(to(this,1)),e)}getControlPoint1(){return this.m_cp[0].clone()}setControlPoint1(e){this.m_cp[0].setCoordsPoint2D(e),this.afterCompletedModification()}getControlPoint2(){return this.m_cp[1].clone()}setControlPoint2(e){this.m_cp[1].setCoordsPoint2D(e),this.afterCompletedModification()}queryControlPoints(e){e[0].assign(this.getStartXY()),e[1].assign(this.m_cp[0]),e[2].assign(this.m_cp[1]),e[3].assign(this.getEndXY())}queryControlPointsHelper(e){return this.queryControlPoints(e),4}setControlPoints(e){for(let t=0;t<4;t++)e[t].isNAN()&&i(`NAN control points in bezier are not supported`);this.m_XStart=e[0].x,this.m_YStart=e[0].y,this.m_cp[0].setCoordsPoint2D(e[1]),this.m_cp[1].setCoordsPoint2D(e[2]),this.m_XEnd=e[3].x,this.m_YEnd=e[3].y,this.afterCompletedModification()}getTangent(e){let t=H(P,4);return this.queryControlPoints(t),Eo(t,e)}getDerivative(e){let t=H(P,4);return this.queryControlPoints(t),mo(t,1,e)}getCurvature(e){let t=go(this,1,e),n=go(this,2,e),r=t.sqrLength();return r===0?NaN:(t.divThis(Math.sqrt(r)),t.crossProduct(n)/r)}isIntersectingPoint(e,t,n){if(n&&(e.equals(this.getStartXY())||e.equals(this.getEndXY())))return!1;let r=new G;if(this.queryLooseEnvelope(r),r.inflateCoords(t,t),!r.contains(e))return!1;let i=this.getClosestCoordinate(e,!1),a=new P;return this.queryCoord2D(i,a),P.distance(a,e)<=t}isIntersectingPoint3D(e,t,n,i,a=1){return r(0),!1}isMonotoneQuickAndDirty(){let e=H(P,4);return this.queryControlPoints(e),bo(e)}getMonotonicPartParams(e,t){let n=no(this),a=n.specialPointsCount();if(r(an.s_maxMonotonicPartParams>=a),!t)return n.specialPointsCount();e<a&&i(``);for(let e=0;e<a;e++)t[e]=n.specialPoints[e];return a}normalizeAfterEndpointChange(){return!1}orientBottomUp(){if(this.m_YEnd<this.m_YStart||this.m_YEnd===this.m_YStart&&this.m_XEnd<this.m_XStart){this.m_XEnd=z(this.m_XStart,this.m_XStart=this.m_XEnd),this.m_YEnd=z(this.m_YStart,this.m_YStart=this.m_YEnd);for(let e=0,t=this.m_description.getTotalComponentCount()-2;e<t;e++)this.m_attributes[e+t]=z(this.m_attributes[e],this.m_attributes[e]=this.m_attributes[e+t]);this.m_cp[1]=z(this.m_cp[0],this.m_cp[0]=this.m_cp[1]),this.m_cachedValues=null}}findMinDeriv(){let e=new V;return uo(this,e),e.value()}isLine(){return!1}isDegenerateToLineHelper(e){let t=H(P,4);this.queryControlPoints(t);let n=t[3].sub(t[0]),r=n.length();if(P.distance(t[0],t[1])+P.distance(t[2],t[1])+P.distance(t[2],t[3])-r>e)return!1;let i=e,a=t[1].clone();a.subThis(t[0]);let o=Math.abs(a.crossProduct(n))/r;return!(o>i||(a=t[2].clone(),a.subThis(t[1]),o=Math.abs(a.crossProduct(n))/r,o>i))}copyIgnoreAttributes(e){let t=H(P,4);this.queryControlPoints(t),e.setControlPoints(t)}calculateArea2DHelper(){return _o(this)}absNorm(){return Go(this)}queryEnvelopeW(e,t){Bo(this,e,t)}setSegmentFromCoordsForStitcher(e,t){qo(this,e,t)}writeInBufferStream(e,t){let n=new Float64Array(4);return this.writeInBuffer_(n),e.writeRangeFromArray(t,n.length,n,!0,1),t+=n.length}writeInBuffer_(e){return e[0]=this.m_cp[0].x,e[1]=this.m_cp[0].y,e[2]=this.m_cp[1].x,e[3]=this.m_cp[1].y,4}readFromBufferStream(e,t){let n=new Float64Array(4);e.queryRange(t,n.length,n,!0,1),this.readFromBuffer_(n)}readFromBuffer_(e){this.m_cp=H(P,2),this.m_cp[0].x=e[0],this.m_cp[0].y=e[1],this.m_cp[1].x=e[2],this.m_cp[1].y=e[3],this.m_cachedValues=null}snapControlPoints(e){let t=H(P,4);this.queryControlPoints(t);let n=(t,n,r)=>{let i=P.sqrDistance(t,r),a=!1;return i<=e&&(a=!t.equals(r),t.setCoordsPoint2D(r),P.sqrDistance(n,r)<=e&&(a||=!n.equals(r),n.setCoordsPoint2D(r))),a},r=n(t[1],t[2],t[0]),i=n(t[2],t[1],t[3]);return(r||i)&&this.setControlPoints(t),r||i}needsSnapControlPoints(e){if(!e)return!1;let t=H(P,4);this.queryControlPoints(t);let n=(t,n,r)=>{let i=P.sqrDistance(t,r),a=!1;return i<=e&&(a=!t.equals(r),t.setCoordsPoint2D(r),P.sqrDistance(n,r)<=e&&(a||=!n.equals(r),n.setCoordsPoint2D(r))),a},r=n(t[1],t[2],t[0]),i=n(t[2],t[1],t[3]);return r||i}calculateSpecialPointsForCracking(e,t){return ts(this,e,t)}ensureXYMonotone(){return vo(this)}setCoordsForIntersector(e,t,n){so(this,e,t,n)}copyToImpl(e){let t=e;t.m_cp[0].assign(this.m_cp[0]),t.m_cp[1].assign(this.m_cp[1]),io(t,ro(this))}reverseImpl(){this.m_cp[1]=z(this.m_cp[0],this.m_cp[0]=this.m_cp[1])}equalsImpl(e){let t=e;return!(!this.m_cp[0].equals(t.m_cp[0])||!this.m_cp[1].equals(t.m_cp[1]))}equalsImplTol(e,t){let n=e;return!(!this.m_cp[0].isEqualPoint2D(n.m_cp[0],t)||!this.m_cp[1].isEqualPoint2D(n.m_cp[1],t))}swapImpl(e){let t=e;t.m_cp[0]=z(this.m_cp[0],this.m_cp[0]=t.m_cp[0]),t.m_cp[1]=z(this.m_cp[1],this.m_cp[1]=t.m_cp[1]),oo(this,t)}afterCompletedModification(){ao(this)}isIntersecting(e,t,n){return lu(!1,this,e,t,n)!==0}intersect(e,t,n,r,i){return pu(!1,this,e,t,n,r,i)}intersectPoint(e,t,n){return zo(this,e,t,n)}endPointModified(){ao(this)}clearEndPointModified(){}m_cp;m_cachedValues}class us{specialPoints;specialPointsLength;length;area;centroidX;centroidY;constructor(){this.length=NaN,this.area=NaN,this.centroidX=NaN,this.centroidY=0,this.specialPoints=[],this.specialPointsLength=[]}specialPointsCount(){return this.specialPoints.length}}function ds(e,t,n,i,a,o,s,c){for(;;){let l=P.distance(t[0],t[2]),u=P.distance(t[0],t[1])+P.distance(t[1],t[2]);if(u-l<=a+i*u)return e+B(l,u,.5);let d=H(P,4),f=e=>(Ss(t,n,1,e,d),d[1].length());if(s===0&&c<8){r(c<8);let l=f(0),d=f(1);o[0]+=2,l>d&&(d=z(l,l=d),t[2]=z(t[0],t[0]=t[2]),n[2]=z(n[0],n[0]=n[2]));let p=l/(l+d),m=1,h=u;for(;p<1/32&&h>=a+i*h;){m/=4;let e=f(m);o[0]++,p=l/(e+l);let r=new P;if(bc(t,n,m*.5,r),h=P.distance(r,t[0]),h<=a){let e=new P;bc(t,n,m,e),h+=P.distance(e,r)}}if(m!==1){let r=H(P,3),l=[0,0,0];ec(t,n,m,t,n,r,l),e=ds(e,r,l,i,a,o,0,c+1),s++,c++;continue}}let p=!1;o[0]+=8;let m=ma(8,f,0,1);o[0]+=16;let h=ma(16,f,0,1);if(p=Math.abs(m-h)>a+i*u,!p)return e+h;if(s<8&&c<9){let r=H(P,3),l=[0,0,0];ec(t,n,.5,t,n,r,l),e=ds(e,r,l,i,a,o,s+1,c+1),s++,c++;continue}o[0]+=32;let g=ma(32,f,0,1);if(p=Math.abs(h-g)>a+i*u,!p)return e+g;o[0]+=64;let _=ma(64,f,0,1);if(p=Math.abs(g-_)>a+i*u,!p)return e+_;o[0]+=128;let v=ma(128,f,0,1);return p=Math.abs(_-v)>a+i*u,e+v}}function fs(e,t,n,r,i){if(n===t)return 0;let a=H(P,3),o=[0,0,0];e.queryControlPoints(a),e.queryWeights(o);let s=[0,0,0],c=H(P,3);return tc(a,o,t,n,c,s),ds(0,c,s,r,i,[0],0,0)}class ps{controlPoints;weights;point;constructor(e,t,n){this.controlPoints=be(e,3),this.weights=[0,0,0],he(this.weights,t,0,0,3),this.point=n.clone()}getMaxDerivative(){return 3}getValue(e,t){if(e===0){let e=new P;bc(this.controlPoints,this.weights,t,e);let n=H(P,4);return Ss(this.controlPoints,this.weights,1,t,n),e.sub(this.point).dotProduct(n[1])*2}if(e===1){let e=new P;bc(this.controlPoints,this.weights,t,e);let n=H(P,4);return Ss(this.controlPoints,this.weights,2,t,n),(e.sub(this.point).dotProduct(n[2])+n[1].dotProduct(n[1]))*2}if(e===2){let e=new P;bc(this.controlPoints,this.weights,t,e);let n=H(P,4);return Ss(this.controlPoints,this.weights,3,t,n),(e.sub(this.point).dotProduct(n[3])+3*n[1].dotProduct(n[2]))*2}return 0}getError(e){return r(0),0}}function ms(e,t,n,r){let i=Ks(0,0,0,0,P.getNAN()),a=L(18,NaN),o=H(P,3);e.queryControlPoints(o),o[2].subThis(t),o[1].subThis(t),o[0].subThis(t);let s=[0,0,0];e.queryWeights(s);let c=[1,Sc(s),1],l=wc(s,n),u=wc(s,r),d=cr(new ps(o,c,new P(0,0)),R.construct(l,u),18,a);bc(o,c,l,i.pt),i.t=l,i.d=P.distance(i.pt,new P(0,0));let f=new P;bc(o,c,u,f);let p=P.distance(f,new P(0,0));p<i.d&&(i.d=p,i.t=u,i.pt.assign(f));for(let e=0;e<d;e++){bc(o,c,a[e],f);let t=P.distance(f,new P(0,0));t<i.d&&(i.d=t,i.t=Cc(s,a[e]),i.pt.assign(f))}return i}function hs(e,t,n,r,i){let a=!0,o=H(P,4),s=ri(5,t,n,r,i,t=>(xs(e,1,t,o),(a?e.getCoordX(t)-e.getStartX():e.getCoordY(t)-e.getStartY())*o[1].length()));a=!1;let c=ri(5,t,n,r,i,t=>(xs(e,1,t,o),(a?e.getCoordX(t)-e.getStartX():e.getCoordY(t)-e.getStartY())*o[1].length()));return new P(s,c)}function gs(e){e.m_cachedValues=null}function _s(e,t){t.m_cachedValues=z(e.m_cachedValues,e.m_cachedValues=t.m_cachedValues)}function vs(e){if(e.m_cachedValues)return e.m_cachedValues;let t=new us,n=H(P,3);e.queryControlPoints(n);let r=[0,0,0];return e.queryWeights(r),ys(n,r,t.specialPoints),Us(e,t),t}function ys(e,t,n){if(t[1]===0){n.length=0,n.push(0),n.push(1);return}let r=H(V,8);r[0].set(0);let i=1;{let n=new V(e[1].x).subThis(e[0].x).mulThis(t[1]).mulThis(t[0]),a=new V(e[2].x).subThis(e[0].x).mulThis(t[2]).mulThis(t[0]),o=n.subE(a).addThisE(new V(e[2].x).subThis(e[1].x).mulThis(t[2]).mulThis(t[1]));a.subThisE(n.mul(2));let s=H(V,2),c=br(o,a,n,new R(0,1),!1,s);c<0&&(c=0);for(let e=0;e<c;e++)U(s[e].value(),0,1)||(r[i]=s[e],i++)}{let n=new V(e[1].y).subThis(e[0].y).mulThis(t[1]).mulThis(t[0]),a=new V(e[2].y).subThis(e[0].y).mulThis(t[2]).mulThis(t[0]),o=n.subE(a).addThisE(new V(e[2].y).subThis(e[1].y).mulThis(t[2]).mulThis(t[1]));a.subThisE(n.mul(2));let s=H(V,2),c=br(o,a,n,new R(0,1),!1,s);c<0&&(c=0);for(let e=0;e<c;e++)U(s[e].value(),0,1)||(r[i]=s[e],i++)}if(r[i].set(1),i++,i>2){Ee(r,0,i,(e,t)=>Qe(e.value(),t.value()));let e=0,t=r[0].value(),n=1;for(let a=1;a<i;a++){if(r[a].eq(r[a-1])){t+=r[a].value(),n++;continue}n>1&&(t/=n,r[e].set(t)),e++,r[e]=r[a],t=r[a].value(),n=1}e++,i=e}r[0].set(0),r[i-1].set(1),n.length=i;for(let e=0;e<i;e++)n[e]=r[e].value()}function bs(e,t,n){if(n){if(t<0)return t;if(t>1)return t-1+bs(e,1,!1)}if(e.isDegenerate(0))return 0;let r=t===1,i=vs(e);if(r&&!Number.isNaN(i.length))return i.length;let a=zs(e),o=a/e.calculateUpperLength2D(),s=0,c=0;for(let n=1,r=i.specialPointsCount();n<r;n++){let r=i.specialPoints[n],l=fs(e,c,Math.min(t,r),o,a);if(s+=l,t<=r)break;c=r}return r&&(i.length=s),s}function xs(e,t,n,r){let i=H(P,3);e.queryControlPoints(i);let a=[0,0,0];e.queryWeights(a),Ss(i,a,t,n,r)}function Ss(e,t,n,r,i){let a=[e[0],e[1],e[2]],o=[t[0],t[1],t[2]],s=H(P,4);Cs(a,o,n,r,s);for(let e=0;e<=n;e++)i[e].setCoords(s[e].x,s[e].y)}function Cs(e,n,i,a,o){r(i>0);let s=[e[0].clone(),e[1].clone(),e[2].clone()];if(!s[0].isZero()){for(let e=1;e<3;++e)s[e].subThis(s[0]);s[0].setCoords(0,0)}let c=ws(s,n,0,a),l=Es(n,0,a),u=c.divide(l);if(o[0].assign(u),i===0)return;let d=[n[1]*n[0],n[2]*n[0]*.5,n[1]*n[2]],f=[e[1].sub(e[0]),e[2].sub(e[0]),e[2].sub(e[1])],p=ws(f,d,0,a).mul(2),m=l*l,h=p.divide(m);if(o[1].assign(h),i===1)return;let g=Es(n,1,a),_=ws(f,d,1,a).mul(2),v=2*l*g,y=_.sub(h.mul(v)).divide(m);if(o[2].assign(y),i===2)return;let b=ws(f,d,2,a).mul(2),x=Es(n,2,a),S=2*(g*g+l*x),C=b.sub(y.mul(v).mul(2)).sub(h.mul(S)).divide(m);o[3].assign(C),i!==3&&t(``)}function ws(e,n,r,i){if(r===0){if(i<=.5){let t=new P;Ye(2,e[0].mul(n[0]),e[1].mul(n[1]),i,t);let r=new P;Ye(2,e[1].mul(n[1]),e[2].mul(n[2]),i,r);let a=new P;return Ye(2,t,r,i,a),a}{let t=new P;Xe(2,e[0].mul(n[0]),e[1].mul(n[1]),i,t);let r=new P;Xe(2,e[1].mul(n[1]),e[2].mul(n[2]),i,r);let a=new P;return Xe(2,t,r,i,a),a}}if(r===1){let t=e[1].mul(n[1]),r=t.sub(e[0].mul(n[0])).mul(1-i).add(e[2].mul(n[2]).sub(t).mul(i));return r.mulThis(2),r}if(r===2){let t=e[1].mul(n[1]),r=e[2].mul(n[2]).sub(t).sub(t.sub(e[0].mul(n[0])));return r.mulThis(2),r}t(``)}function Ts(e,t,n,r){if(r.toDouble()<=.5){let n=new K;Ge(2,e[0].mulE(t[0]),e[1].mulE(t[1]),r,n);let i=new K;Ge(2,e[1].mulE(t[1]),e[2].mulE(t[2]),r,i);let a=new K;return Ge(2,n,i,r,a),a}{let n=new K;Ke(2,e[0].mulE(t[0]),e[1].mulE(t[1]),r,n);let i=new K;Ke(2,e[1].mulE(t[1]),e[2].mulE(t[2]),r,i);let a=new K;return Ke(2,n,i,r,a),a}}function Es(e,n,r){if(n===0){let t=B(e[0],e[1],r),n=B(e[1],e[2],r);return B(t,n,r)}if(n===1)return((1-r)*(e[1]-e[0])+(e[2]-e[1])*r)*2;if(n===2)return(e[2]-e[1]-(e[1]-e[0]))*2;t(``)}function Ds(e,t,n){if(n.toDouble()<=.5){let t=ot(e[0],e[1],n),r=ot(e[1],e[2],n);return ot(t,r,n)}{let t=st(e[0],e[1],n),r=st(e[1],e[2],n);return st(t,r,n)}}function Os(e,t,n,r,i){let a=[K.constructPoint2D(e[0]),K.constructPoint2D(e[1]),K.constructPoint2D(e[2])];a[2].subThisE(a[0]),a[1].subThisE(a[0]),a[0].setCoords(0,0),ks(a,[new V(t[0]),new V(t[1]),new V(t[2])],n,r,i)}function ks(e,t,n,i,a){r(n>0);let o=[e[0].clone(),e[1].clone(),e[2].clone()];if(!o[0].isZero()){for(let e=1;e<3;++e)o[e].subThisE(o[0]);o[0]=K.constructCoords(0,0)}let s=Ts(o,t,0,i),c=Ds(t,0,i),l=s.divE(c);a[0].setE(l);let u=[t[1].mulE(t[0]),t[2].mulE(t[0]).mul(.5),t[1].mulE(t[2])],d=Ts([e[1].subE(e[0]),e[2].subE(e[0]),e[2].subE(e[1])],u,0,i).mul(2),f=c.sqr(),p=d.divE(f);a[1].setE(p)}function As(e,t,n){let r=H(P,3);e.queryControlPoints(r);let i=L(3,NaN);e.queryWeights(i),js(r,i,t,n)}function js(e,t,n,r){n.value()<0&&n.set(0,n.eps()),n.value()>1&&n.set(1,n.eps());let i=H(K,4);Os(e,t,1,n,i),r.setE(i[1])}function Ms(e,t,n){let r=xe(n,0,1),i=H(P,4);if(Ss(e,t,3,r,i),i[1].isZero()){if(i[2].isZero())return i[3];{let e=i[2].clone();return r===1&&e.negateThis(),e}}return i[1]}class Ns{b;len=0;constructor(e,t){this.b=e,this.len=t}getMaxDerivative(){return 1}getValue(e,t){return e===0?this.len-bs(this.b,t,!1):0}getError(e){return r(0),0}}function Ps(e,n,r){let i=bs(e,1,!1);if(n<=0)return n;if(n>=i)return n-i+1;let a=new Ns(e,n),o=[0];return cr(a,R.unit(),1,o)!==1&&t(``),o[0]}function Fs(e){let t=H(P,3),n=[0,0,0];return e.queryControlPoints(t),e.queryWeights(n),Is(t,n)}function Is(e,t){let n=Sc(t);if(n===1)return Ci(e);if(n===0)return 0;let i=[new P(0,0),e[1].sub(e[0]),e[2].sub(e[0])],a=i[1].crossProduct(i[2]);if(n<1){r(n>0);let e=1-n,t;if(e<.01)t=-1/3+e*(2/15+e*(3/35+e*(16/315+e*(20/693+e*(16/1001+56/6435*e)))));else{let r=e*(1+n),i=Math.atan2(Math.sqrt(e),Math.sqrt(1+n));t=n*(.5*n-yt(r)*i)/r}return a*t}{let e=(n-1)*(n+1);return .25*n/e**1.5*(-2*n*Math.sqrt(e)*a-4*i[1].y*i[2].x*Math.atanh(Math.sqrt((n-1)/(n+1)))-i[1].x*i[2].y*Math.log(-1+2*n*(n-Math.sqrt(e))))}}function Ls(e,t){let n=Sc(t);if(n===1){let t=H(P,3);Ki(e,t);let n=t[2].clone(),r=t[1].clone(),i=new P,a=n.y*r.x-n.x*r.y;return i.x=-((4*n.x+5*r.x)*a)/60,i.y=-((4*n.y+5*r.y)*a)/60,i}if(n===0)return new P(0,0);r(n>0);let i=e[1].sub(e[0]),a=e[2].sub(e[0]);if(n<1){let e=Math.sqrt(1-n),t=Math.sqrt(1+n),r=(i.y*a.x-i.x*a.y)*n/(e*t)**5/12,o=Math.atan2(e,t),s=n*e*t,c=n*n,l=i.mul((2+c)*2),u=a.mul(2*c-5),d=l.add(u).mul(s),f=a.sub(i.mul(c*2)).mul(o*6);return d.add(f).mul(r)}{let e=Math.sqrt(n-1),t=Math.sqrt(n+1),r=(i.y*a.x-i.x*a.y)*n/(e*t)**5/12,o=Math.atanh(e/t),s=n*e*t,c=n*n,l=i.mul(4).sub(a.mul(5)),u=i.add(a).mul(2*c),d=l.add(u).mul(s),f=a.sub(i.mul(c*2)).mul(o*6);return d.add(f).mul(r)}}function Rs(e){let t=H(P,3),n=[0,0,0];return e.queryControlPoints(t),e.queryWeights(n),Ls(t,n)}function zs(e){return Bs(e.calculateUpperLength2D())}function Bs(e){return Se()*256*e}function Vs(e){if(e.m_weights[1]===0)return!0;let t=P.distance(e.getStartXY(),e.getEndXY()),n=e.calculateUpperLength2D(),r=2**-52*8*n;return n-t<=r}function Hs(e){return e.m_cachedValues}function Us(e,t){e.m_cachedValues=t}function Ws(e,t,n,r,i){let a=H(P,3);e.queryControlPoints(a);let o=[0,0,0];e.queryWeights(o);let s=[0];return Gs(a,o,t,R.unit(),r,i,1,s)===1?s[0]:NaN}function Gs(e,t,n,i,a,o,s,c){h(R.unit().contains(i)&&s>0,``),(o<0||Number.isNaN(o))&&(o=Number.MAX_VALUE);let l=[,,,];for(let t=0;t<3;++t)l[t]=e[t].sub(n);let u=Sc(t),d=q.constructPoint2D(l[0]),f=q.constructPoint2D(l[1]),p=q.constructPoint2D(l[2]),m=I.constructDouble(u),g=m.clone();g.ldexpThis(1);let _=d.dotProduct(f.sub(d)).mul(m),v=m.mul(m.addDouble(2)),y=p.sub(f.mul(v.ldexp(1))),b=f.sqrLength().mul(m.mul(m).ldexp(1)).add(d.sqrLength().mul(m.ldexp(2).subDouble(1))).add(d.dotProduct(y)),x=p.sub(f.mul(g)).add(d.mul(g.subDouble(1))),S=f.mul(m).sub(d).dotProduct(x).mulDouble(3),C=f.dotProduct(p).mul(m.subDouble(3).mul(m)).ldexp(1),w=f.sqrLength().mul(m.mul(m).ldexp(2)),T=d.sqrLength().mul(m.ldexp(2).subDouble(3)),E=d.dotProduct(p.sub(f.mul(m.mulDouble(3).subDouble(1)).mul(m))).ldexp(1),D=p.sqrLength().addThis(C).addThis(w).addThis(T).addThis(E),O=d.add(p).sub(f.mul(g)),k=m.subDouble(1),ee=p.sub(d).dotProduct(O).mul(k),A=new P(0,0),j=[],te=new P;bc(l,t,i.vmin,te);let ne=P.distance(te,A);if(ne<=o&&j.push(new P(i.vmin,ne)),i.vmin!==i.vmax&&(bc(l,t,i.vmax,te),ne=P.distance(te,A),ne<=o&&j.push(new P(i.vmax,ne))),i.width()>0){let e=l[2].isZero(),n=H(I,4),r=Gr(ee,D,S,b,_,58,i,e,n);for(let e=0;e<r;e++){if(!i.containsExclusiveCoordinate(n[e].toDouble()))continue;let r=n[e].toDouble();r=Cc(t,r);let a=new P;bc(l,t,r,a),ne=P.distance(a,A),ne<=o&&j.push(new P(r,ne))}}if(a){r(i.equals(R.unit()));{bc(l,t,-1,te,!0);let e=new P;bc(l,t,0,e);let n=new Q({start:te,end:e}),r=n.getClosestCoordinate(A,!0);r<1&&(te=n.getCoord2D(r),ne=P.distance(te,A),ne<=o&&j.push(new P(r-1,ne)))}{bc(l,t,2,te,!0);let e=new P;bc(l,t,i.vmax,e);let n=new Q({start:e,end:te}),r=n.getClosestCoordinate(A,!0);r>0&&(te=n.getCoord2D(r),ne=P.distance(te,A),ne<=o&&j.push(new P(1+r,ne)))}}if(!j.length)return 0;j.sort((e,t)=>e.compare(t));let re=0,ie=j[0].x;if(c[re++]=ie,re<s){let e=pe(l,4,!1).total(),t=j[0].y;for(let n=1,r=j.length;n<r;n++)if(j[n].y>t+e){j.length=n;break}j.sort((e,t)=>Qe(e.x,t.x)),re=0,c[re++]=j[0].x;for(let e=1,t=j.length;e<t;e++)j[e].x!==c[re-1]&&re<s&&(c[re++]=j[e].x)}return re}function Ks(e,t,n,r,i){return{tmin:e,tmax:t,t:n,d:r,pt:i.clone()}}function qs(e,t,n,i,a){let o=new Ct;if(Js(e,R.unit(),o),o.inflate(i),!o.isIntersectingPoint2D(t))return 0;let s=vs(e),c=0,l=[],u=s.specialPoints[0];for(let n=1,i=s.specialPoints.length;n<i;++n){let i=s.specialPoints[n],a=ms(e,t,u,i);if(l.length===0)l.push(a);else if(a.t===a.tmin)r(l.at(-1).d<=a.d),l.at(-1).tmax=a.tmax;else if(l.at(-1).t===l.at(-1).tmax){r(l.at(-1).d>=a.d);let e=l.at(-1).tmin;l[l.length-1]=a,l.at(-1).tmin=e}else l.push(a);u=i}for(let e of l)if(e.d<=i){let t=e.t;n&&(n[c]=t),c++}return c}function Js(e,t,n){let r=H(P,3);e.queryControlPoints(r);let i=[0,0,0];e.queryWeights(i),Ys(r,i,t,n)}function Ys(e,t,n,r){if(n.equalsRange(0,1)){r.setFromPoints(e,3);return}let i=H(P,3);tc(e,t,n.vmin,n.vmax,i,[0,0,0]),r.setFromPoints(i,3)}function Xs(e){let t=F(e[0].y,e[1].y),n=F(e[1].y,e[2].y);if(t>=0&&n>=0||t<=0&&n<=0){let t=F(e[0].x,e[1].x),n=F(e[1].x,e[2].x);if(t>=0&&n>=0||t<=0&&n<=0)return!0}return!1}function Zs(e){let t=H(P,3);e.queryControlPoints(t);let n=Qs(t);return n&&(e.m_cp.setCoordsPoint2D(t[1]),e.afterCompletedModification()),n}function Qs(e){let t=!1;for(let n=0;n<2;n++){let r=F(e[0][n],e[2][n]);r>0?(F(e[0][n],e[1][n])<0&&(e[1][n]=e[0][n],t=!0),F(e[1][n],e[2][n])<0&&(e[1][n]=e[2][n],t=!0)):r<0?(F(e[0][n],e[1][n])>0&&(e[1][n]=e[0][n],t=!0),F(e[1][n],e[2][n])>0&&(e[1][n]=e[2][n],t=!0)):e[1][n]!==e[0][n]&&(e[1][n]=e[0][n],t=!0)}return t}function $s(e,t,n){n===void 0&&(n=t,t=0);let r=new P;if(t<0||n>1)return r.setNAN(),r;if(t>n&&i(`calculate_sub_weighted_centroid`),t===n||e.isDegenerate(0))return r.setCoords(0,0),r;let a=vs(e),o=zs(e),s=o/e.calculateUpperLength2D(),c=t,l=0;for(let e=1,n=a.specialPointsCount();e<n;e++)if(t<a.specialPoints[e]){l=e-1;break}r.setCoords(0,0);for(let t=l+1,i=a.specialPointsCount();t<i;t++){let i=Math.min(a.specialPoints[t],n),l=hs(e,c,i,s,o);if(r.addThis(l),c=i,n<=a.specialPoints[t])break}return r.add(e.getStartXY().mul(e.calculateLength2D()))}function ec(e,t,n,i,a,o,s){r(n>=0&&n<=1&&i!==o&&a!==s),r(t[0]>0&&t[2]>0&&t[1]>=0);let c=[1,Sc(t),1],l=wc(t,n),u=be(e,3),d=H(w,3);mc(u,c,d);let f=H(w,3),p=H(w,3);Tc(d,l,i?f:null,o?p:null),Ec(t,n,a,s);let m=Xs(u);if(i){for(let e=0;e<3;++e)yc(f[e],i[e]);Oc(u,i),m&&Qs(i)}if(o){for(let e=0;e<3;++e)yc(p[e],o[e]);Oc(u,o),m&&Qs(o)}}function tc(e,t,n,i,a,o){if(r(n>=0&&i<=1&&n<=i),n===i){let r=new P,i=hc(e,t,n,r);Dc(e,r),a[0].assign(r),a[1].assign(r),a[2].assign(r),o[0]=i,o[1]=i,o[2]=i;return}if(n===0&&i===1){a[0].assign(e[0]),a[1].assign(e[1]),a[2].assign(e[2]),o[0]=t[0],o[1]=t[1],o[2]=t[2];return}let s=H(w,3);{let r=[1,Sc(t),1],a=wc(t,n),o=wc(t,i);mc(e,r,s),Tc(s,o,s,null),Tc(s,a>=o?1:a/o,null,s)}let c=[0,0,0];Ec(t,i,c,null),Ec(c,n/i,null,c);let l=Xs(e),u=H(P,3);yc(s[1],u[1]),bc(e,t,n,u[0]),bc(e,t,i,u[2]),Oc(e,u);for(let e=0;e<3;++e)a[e].assign(u[e]),o[e]=c[e];l&&Qs(a)}function nc(e,t,n){let r=Sc(t),i=[1,r,1],a=4*r/(3*(1+r));n[0].assign(e[0]),n[3].assign(e[2]),Ue(e[0],e[1],a,n[1]),Ue(e[2],e[1],a,n[2]),new ls({cp:n}),new Mr({points:e,weight:r});let o=0,s=.1,c=0;for(let t=0;t<9;t++,s+=.1){let t=new P;bc(e,i,s,t);let r=new P;X(n,s,r);let a=P.sqrDistance(t,r);a>o&&(o=a,c=s)}{let t=new P;bc(e,i,c,t);let r=[0];Uo(n,t,R.unit(),!1,-1,1,r);let a=new P;return X(n,r[0],a),o=P.sqrDistance(t,a),Math.sqrt(o)}}function rc(e,t,n,r){if(t.isEqual(e.m_XStart,e.m_YStart)&&n.isEqual(e.m_XEnd,e.m_YEnd))return;let i=r?e.isMonotoneQuickAndDirty():!1,a=new xt,o=H(P,3);o[0].setCoords(e.m_XStart,e.m_YStart),o[2].setCoords(e.m_XEnd,e.m_YEnd);let s=new P;s.setSub(o[2],o[0]),s.leftPerpendicularThis(),o[1].setAdd(o[0],s);let c=H(P,3);c[0].setCoordsPoint2D(t),c[2].setCoordsPoint2D(n),s.setSub(c[2],c[0]),s.leftPerpendicularThis(),c[1].setAdd(c[0],s),a.setFromTwoTriangles(o,c)?a.transformInPlace(e.m_cp):Ue(t,n,.5,e.m_cp),e.changeEndPoints2D(t,n),i&&Zs(e)}function ic(e,t,n,r,i){if(i){if(du(t,n)!==0)return e?4:2}else if(Nt(t,n))return 1;return cc(e,t,n,null,null,null,r,i!==void 0&&i,!0,!1)===0?0:4}function ac(e,t,n,r,i){if(i){if(du(t,n)!==0)return e?4:2}else if(Nt(t,n))return 1;return lc(e,t,n,null,null,null,r,i??!1,!0,!1)===0?0:4}function oc(e,t,n,r,i){if(i){let r=du(t,n);if(r!==0){if(e){if(r===1){if(t.m_weights[0]===n.m_weights[0]&&t.m_weights[1]===n.m_weights[1]&&t.m_weights[2]===n.m_weights[2])return 2}else if(t.m_weights[0]===n.m_weights[2]&&t.m_weights[1]===n.m_weights[1]&&t.m_weights[2]===n.m_weights[0])return 2;return 4}return 2}}else if(Nt(t,n))return 1;return uc(e,t,n,null,null,null,r,i!==void 0&&i,!0,!1)===0?0:4}function sc(e,t,n,r,i){if(i){if(du(t,n)!==0)return e?4:2}else if(Nt(t,n))return 1;return dc(e,t,n,null,null,null,r,i??!1,!0,!1)===0?0:4}function cc(e,t,n,i,a,o,s,c,l,u){if(a!==null&&(a.length=0),o!==null&&(o.length=0),i!==null&&(i.length=0),n.isDegenerate(0)){let e=[0,0],r=t.intersectPoint(n.getStartXY(),e,s);if(r>0){if(a!==null)for(let t=0;t<r;t++)a.push(e[t]);if(o!=null)for(let e=0;e<r;e++)o.push(0);if(i!=null)for(let n=0;n<r;n++){let r=new P;t.queryCoord2D(e[n],r),i.push(r)}}return r}let d=en(t,n);if(s=Math.max(s,d),t.isDegenerateToLineHelper(d)){let e=new Q({start:t.getStartXY(),end:t.getEndXY()}),r=Fn(e,n,i,a,o,s,c,u);if(a)for(let n=0;n<r;++n){let r=e.getCoord2D(a[n]);a[n]=t.getClosestCoordinate(r,!1)}return r}if(tn(t,n,s))return 0;let f=H(P,3);t.queryControlPoints(f);let p=[0,0,0];t.queryWeights(p);let m=[1,Sc(p),1],h=n.getEndXY().sub(n.getStartXY()),g=h.clone();g.leftPerpendicularThis();let _=f[0].clone(),v=f[1].clone(),y=f[2].clone(),b=v.sub(_),x=y.sub(_),S=y.sub(v),C=m[0],w=m[1],T=m[2],E=C*w,D=C*T,O=w*T,k=b.dotProduct(g)*E,ee=x.dotProduct(g)*D,A=S.dotProduct(g)*O,j=k,te=ee-k*2,ne=A+ee-ee,re=L(13,NaN),ie=L(13,NaN),M=ur(ne,te,j,R.unit(),!1,re);M<0&&(re[0]=0,re[1]=1,M=2);let ae=0;for(let e=0,t=ae;e<M;++e){let r=new P;bc(f,m,re[e+t],r),ie[ae]=n.getClosestCoordinate(r,!1),P.distance(r,n.getCoord2D(ie[ae]))<=s&&(re[ae]=re[e+t],ae++)}let oe=H(P,3),N=H(P,3);if(t.queryControlPoints(N),N[0].subThis(n.getStartXY()),N[1].subThis(n.getStartXY()),N[2].subThis(n.getStartXY()),fc(N,m,oe,!1),Math.abs(h.x)>=Math.abs(h.y)){let e=h.y/h.x;ne=oe[2].y-oe[2].x*e,te=oe[1].y-oe[1].x*e,j=oe[0].y-oe[0].x*e}else{let e=h.x/h.y;ne=oe[2].x-oe[2].y*e,te=oe[1].x-oe[1].y*e,j=oe[0].x-oe[0].y*e}let se=t.getEndXY().equals(n.getStartXY())||t.getEndXY().equals(n.getEndXY()),ce=[0,0];M=ur(ne,te,j,R.unit(),se,ce);for(let e=0,t=ae;e<M;++e){re[e+t]=ce[e];let r=new P;bc(f,m,re[e+t],r),ie[ae]=n.getClosestCoordinate(r,!1),P.distance(r,n.getCoord2D(ie[ae]))<=s&&(re[ae]=re[e+t],ae++)}r(ae<re.length+4);for(let e=0;e<ae;e++)re[e]=Cc(p,re[e]);M=t.intersectPoint(n.getStartXY(),ce,s);for(let e=0;e<M;e++)re[ae]=ce[e],ie[ae++]=0;M=t.intersectPoint(n.getEndXY(),ce,s);for(let e=0;e<M;e++)re[ae]=ce[e],ie[ae++]=1;M=n.intersectPoint(t.getStartXY(),ce,s);for(let e=0;e<M;e++)ie[ae]=ce[e],re[ae++]=0;M=n.intersectPoint(t.getEndXY(),ce,s);for(let e=0;e<M;e++)ie[ae]=ce[e],re[ae++]=1;return ae===0?0:gu(e,t,n,re,ie,ae,i,a,o,s,c,l,u)}function lc(e,t,n,r,i,a,o,s,c,l){if(Z(n))return cc(e,t,new Q({start:n.getStartXY(),end:n.getEndXY()}),r,i,a,o,s,c,l);let u=en(t,n);if(o=Math.max(o,u),tn(t,n,o))return 0;let d=[],f=[],p=H(P,4);{t.queryControlPoints(p);let e=H(P,4),r=new xt;n.canonicToWorldTransformation(r);let i=new xt;i.setInvert(r),i.transformPoints2D(p,4,e);let a=H(I,3),c=H(I,3),l=H(I,3),u=[0,0,0];t.queryWeights(u),pc(e,u,a,c,l);let m=H(I,3);m[0].setDouble(n.getSemiMinorAxis()),m[0].sqrThis(),m[1].setDouble(n.getSemiMajorAxis()),m[1].sqrThis(),m[2].setThis(m[0]),m[2].mulThis(m[1]),m[2].negateThis();let h=Vr(a,2,c,2,l,2,m,!0,R.unit(),R.unit(),d,s);if(h>0){let e=0;for(let r=0;r<h;r++){let i=new P;t.queryCoord2D(d[r],i);let a=n.getClosestCoordinate(i,!1),s=new P;n.queryCoord2D(a,s),P.distance(i,s)<=o&&(d[e]=d[r],f.push(a),e++)}d.length=e}}let m=[0,1];for(let e=0;e<2;e++)do{let r=e===0?n.getStartXY():n.getEndXY(),i=Ws(t,r,R.unit(),!1,-1),a=new P;t.queryCoord2D(i,a),P.distance(r,a)<=o&&(d.push(i),f.push(m[e]))}while(0);for(let e=0;e<2;e++){let t=[0,3];do{let r=n.getClosestCoordinate(p[t[e]],!1),i=new P;n.queryCoord2D(r,i),P.distance(p[t[e]],i)<=o&&(d.push(m[e]),f.push(r))}while(0)}return gu(e,t,n,d,f,d.length,r,i,a,o,s,c,l)}function uc(e,t,n,i,a,o,s,c,l,u){let d=H(P,3);t.queryControlPoints(d);let f=H(P,3);if(n.queryControlPoints(f),nn(d,f,3)<0)return uc(e,n,t,i,o,a,s,c,l,!u);let p=en(t,n);if(t.isDegenerateToLineHelper(p)){let r=new Q({start:t.getStartXY(),end:t.getEndXY()}),d=cc(e,n,r,i,o,a,s,c,l,!u);if(a)for(let e=0;e<d;++e){let n=r.getCoord2D(a[e]);a[e]=t.getClosestCoordinate(n,!1)}return d}if(n.isDegenerateToLineHelper(p)){let r=new Q({start:n.getStartXY(),end:n.getEndXY()}),d=cc(e,t,r,i,a,o,s,c,l,u);if(o)for(let e=0;e<d;++e){let t=r.getCoord2D(o[e]);o[e]=n.getClosestCoordinate(t,!1)}return d}if(s=Math.max(s,p),tn(t,n,s))return 0;let m=L(3,NaN);t.queryWeights(m);let h=L(3,NaN);n.queryWeights(h);let g=[1,Sc(m),1],_=[1,Sc(h),1],v=new R(0,1),y=new R(0,1);{let e=Ct.constructEmpty();Ys(d,g,new R(0,1),e);let t=Ct.constructEmpty();Ys(f,_,new R(0,1),t);let n=Math.max(e.maxDim(),t.maxDim());if(e.inflate(s*3),t.inflate(s*3),!e.intersectW(t))return 0;if(e.maxDim()<n*.1){if(xc(d,g,e,v),xc(f,_,e,y),v.isEmpty()||y.isEmpty())return 0;tc(d,g,v.vmin,v.vmax,d,g),tc(f,_,y.vmin,y.vmax,f,_)}}let b=vu(d,2,f,2,s);if(b===0)return 0;let x=[],S=[];if(b===-1){let e=H(I,3),t=H(I,3),n=H(I,3);pc(d,g,e,t,n);let r=H(I,3),i=H(I,3),a=H(I,3);pc(f,_,r,i,a);let o=[],p=[],m=Rr(e,2,t,2,n,2,r,2,i,2,a,2,!0,R.unit(),R.unit(),o,p,c,l,u);if(m>0)for(let e=0;e<m;e++){let t=new P;bc(f,_,p[e],t);let n=new P;bc(d,g,o[e],n),P.distance(n,t)<=s&&(x.push(o[e]),S.push(p[e]))}}for(let e=0;e<2;e++){let t,n,i;e===0?(t=d,n=f,i=_):(t=f,n=d,i=g);for(let a=0;a<2;a++){let o=a===0?0:t.length-1,c=new P,l=[0],u=Gs(n,i,t[o],R.unit(),!1,-1,1,l);r(u===1),bc(n,i,l[0],c),P.distance(t[o],c)<=s&&(e===0?(x.push(o===0?0:1),S.push(l[0])):(S.push(o===0?0:1),x.push(l[0])))}}if(x.length===0)return 0;if(!v.equalsRange(0,1))for(let e=0;e<x.length;++e)x[e]=Mr.recalculateParentT(v.vmin,v.vmax,x[e]);if(!y.equalsRange(0,1))for(let e=0;e<S.length;++e)S[e]=Mr.recalculateParentT(y.vmin,y.vmax,S[e]);for(let e=0;e<x.length;++e)x[e]=Cc(m,x[e]);for(let e=0;e<S.length;++e)S[e]=Cc(h,S[e]);return gu(e,t,n,x,S,x.length,i,a,o,s,c,l,u)}function dc(e,t,n,r,i,a,o,s,c,l){if(t.isLine())return Ui(e,n,new Q({start:t.getStartXY(),end:t.getEndXY()}),r,a,i,o,s,c,!l);if(n.isLine())return cc(e,t,new Q({start:n.getStartXY(),end:n.getEndXY()}),r,i,a,o,s,c,l);let u=en(t,n);if(o=Math.max(o,u),tn(t,n,o))return 0;let d=H(P,3);t.queryControlPoints(d);let f=H(P,3);n.queryControlPoints(f);let p=vu(d,2,f,2,o);if(p===0)return 0;let m=[],h=[];if(p===-1){let e=H(I,3),r=H(I,3),i=H(I,3),a=[0,0,0];t.queryWeights(a),pc(d,a,e,r,i);let u=H(q,3);Xi(f,u);let p=Rr(e,2,r,2,i,2,[u[0].x,u[1].x,u[2].x],2,[u[0].y,u[1].y,u[2].y],2,null,0,!0,R.unit(),R.unit(),m,h,s,c,l);if(p>0){let e=0;for(let r=0;r<p;r++){let i=new P;n.queryCoord2D(h[r],i);let a=new P;t.queryCoord2D(m[r],a),P.distance(a,i)<=o&&(m[e]=m[r],h[e]=h[r],e++)}m.length=e,h.length=e}}for(let e=0;e<2;e++){let r;r=e===0?d:f;for(let i=0;i<2;i++){let a=i===0?0:r.length-1,s,c=new P;e===0?(s=Di(n,r[a],R.unit(),!1),n.queryCoord2D(s,c)):(s=Ws(t,r[a],R.unit(),!1,-1),t.queryCoord2D(s,c)),P.distance(r[a],c)<=o&&(e===0?(m.push(a===0?0:1),h.push(s)):(h.push(a===0?0:1),m.push(s)))}}return gu(e,t,n,m,h,m.length,r,i,a,o,s,c,l)}function fc(e,t,n,r=!1){let i=H(P,3);r?(i[0].setCoordsPoint2D(e[0]),i[1].setCoordsPoint2D(e[1]),i[1].subThis(i[0]),i[2].setCoordsPoint2D(e[2]),i[2].subThis(i[0]),i[0].setCoords(0,0)):(i[0].setCoordsPoint2D(e[0]),i[1].setCoordsPoint2D(e[1]),i[2].setCoordsPoint2D(e[2])),i[0].mulThis(t[0]),i[1].mulThis(t[1]),i[2].mulThis(t[2]),n[1].setCoords(i[1].x-i[0].x,i[1].y-i[0].y),n[2].setCoordsPoint2D(i[2].sub(i[1])),n[2].subThis(n[1]),n[1].x*=2,n[1].y*=2,n[0].setCoordsPoint2D(i[0])}function pc(e,t,n,r,i){let a=I.constructDouble(t[0]),o=I.constructDouble(t[1]),s=I.constructDouble(t[2]);n[0].setDouble(e[0].x),n[0].mulThis(a),n[1].setDouble(e[1].x),n[1].mulThis(o),n[2].setDouble(e[2].x),n[2].mulThis(s),n[2].subThis(n[1]),n[1].subThis(n[0]),n[2].subThis(n[1]),n[1].ldexpThis(1),r[0].setDouble(e[0].y),r[0].mulThis(a),r[1].setDouble(e[1].y),r[1].mulThis(o),r[2].setDouble(e[2].y),r[2].mulThis(s),r[2].subThis(r[1]),r[1].subThis(r[0]),r[2].subThis(r[1]),r[1].ldexpThis(1),i[0].setDouble(t[0]),i[1].setDouble(t[1]),i[2].setThis(i[1]),i[2].ldexpThis(1),i[2].negateThis(),i[2].addThis(i[0]),i[2].addDoubleThis(t[2]),i[1].subThis(i[0]),i[1].ldexpThis(1)}function mc(e,t,n){for(let r=0;r<3;++r)n[r].setCoordsPoint2DZ(e[r].mul(t[r]),t[r])}function hc(e,t,n,r){if(n===0)return r.assign(e[0]),t[0];if(n===1)return r.assign(e[2]),t[2];let i=[e[0].x*t[0],e[1].x*t[1],e[2].x*t[2]],a=[e[0].y*t[0],e[1].y*t[1],e[2].y*t[2]],o=[t[0],t[1],t[2]],s=n,c,l,u;if(n<=.5){let e=Pe(i[0],i[1],s),t=Pe(i[1],i[2],s);c=B(e,t,s);let n=Pe(a[0],a[1],s),r=Pe(a[1],a[2],s);l=B(n,r,s);let d=Pe(o[0],o[1],s),f=Pe(o[1],o[2],s);u=Pe(d,f,s)}else{let e=Fe(i[0],i[1],s),t=Fe(i[1],i[2],s);c=Fe(e,t,s);let n=Fe(a[0],a[1],s),r=Fe(a[1],a[2],s);l=Fe(n,r,s);let d=Fe(o[0],o[1],s),f=Fe(o[1],o[2],s);u=Fe(d,f,s)}return c/=u,l/=u,r.setCoords(c,l),Dc(e,r),u}function gc(e,t,n){let r=H(P,3);e.queryControlPoints(r);let i=[0,0,0];e.queryWeights(i),_c([K.constructPoint2D(r[0]),K.constructPoint2D(r[1]),K.constructPoint2D(r[2])],[new V(i[0]),new V(i[1]),new V(i[2])],t,n)}function _c(e,t,n,r){if(n.value()===0){r.setE(e[0]);return}if(n.value()===1){r.setE(e[2]);return}let i=[e[0].x.mulE(t[0]),e[1].x.mulE(t[1]),e[2].x.mulE(t[2])],a=[e[0].y.mulE(t[0]),e[1].y.mulE(t[1]),e[2].y.mulE(t[2])],o=[t[0].clone(),t[1].clone(),t[2].clone()],s=new V,c=new V,l=new V;if(n.value()<=.5){let e=ot(i[0],i[1],n),t=ot(i[1],i[2],n);s.setE(ot(e,t,n));let r=ot(a[0],a[1],n),u=ot(a[1],a[2],n);c.setE(ot(r,u,n));let d=ot(o[0],o[1],n),f=ot(o[1],o[2],n);l.setE(ot(d,f,n))}else{let e=st(i[0],i[1],n),t=st(i[1],i[2],n);s.setE(st(e,t,n));let r=st(a[0],a[1],n),u=st(a[1],a[2],n);c.setE(st(r,u,n));let d=st(o[0],o[1],n),f=st(o[1],o[2],n);l.setE(st(d,f,n))}s.divThisE(l),c.divThisE(l);let u=new P(s.value(),c.value());Dc([e[0].value(),e[1].value(),e[2].value()],u),r.x.set(u.x,s.eps()),r.y.set(u.y,c.eps())}function vc(e,t,n,r){let i=n.lte(Je)?I.lerpLo:I.lerpHi,[a,o,s]=[t.map((t,n)=>e[n].x.mul(t)),t.map((t,n)=>e[n].y.mul(t)),t].map(([e,t,r])=>i(i(e,t,n),i(t,r,n),n)),c=new P(a.divThis(s).value(),o.divThis(s).value());Dc(e.map(e=>e.asPoint2D()),c),r.x=I.constructDouble(c.x),r.y=I.constructDouble(c.y)}function yc(e,t){return t.setCoords(e.x/e.z,e.y/e.z),e.z}function bc(e,t,n,r,i){if(i){if(n<0){wn(new Q({start:e[0],end:e[0].add(Ms(e,t,0).getUnitVector())}),n,r);return}if(n>1){wn(new Q({start:e[2],end:e[2].add(Ms(e,t,1).getUnitVector())}),n-1,r);return}}hc(e,t,n,r)}function xc(e,t,n,r){r.setEmpty();let i=[];i.push(new R(0,1));let a=Math.max(n.width(),n.height())*.5;for(;i.length;){let o=i.at(-1);i.pop();let s=new Ct;if(Ys(e,t,o,s),s.isIntersectingW(n)){let e=Math.max(s.width(),s.height());if(n.containsW(s)||e<=a||o.width()<1e-12)r.merge(o);else{let e=o.getCenter();i.push(R.construct(o.vmin,e)),i.push(R.construct(e,o.vmax))}}}}function Sc(e){return e[1]/Math.sqrt(e[0]*e[2])}function Cc(e,t){let n=Math.sqrt(e[2]/e[0]);return t/B(n,1,t)}function wc(e,t){let n=Math.sqrt(e[0]/e[2]);return t/B(n,1,t)}function Tc(e,t,n,i){r(t>=0&&t<=1),new w().setCoordsPoint3D(e[0]),new w().setCoordsPoint3D(e[1]),new w().setCoordsPoint3D(e[2]);let a=new w,o=new w,s=new w;Le(3,e[0],e[1],t,a),Le(3,e[1],e[2],t,o),Le(3,a,o,t,s);let c=e[2].clone();n&&(n[0].assign(e[0]),n[1].assign(a),n[2].assign(s)),i&&(i[0].assign(s),i[1].assign(o),i[2].assign(c))}function Ec(e,t,n,i){let a=[e[0],e[1],e[2]];r(t>=0&&t<=1&&n!==i);let o=B(a[0],a[1],t),s=B(a[1],a[2],t),c=B(o,s,t);n&&(n[0]=a[0],n[1]=o,n[2]=c),i&&(i[0]=c,i[1]=s,i[2]=a[2])}function Dc(e,t){let n=R.constructEmpty();n.vmin=n.vmax=e[0].x,n.mergeNeCoordinate(e[1].x),n.mergeNeCoordinate(e[2].x),t.x=xe(t.x,n.vmin,n.vmax),n.vmin=n.vmax=e[0].y,n.mergeNeCoordinate(e[1].y),n.mergeNeCoordinate(e[2].y),t.y=xe(t.y,n.vmin,n.vmax)}function Oc(e,t){let n=new R;n.vmin=n.vmax=e[0].x,n.mergeNeCoordinate(e[1].x),n.mergeNeCoordinate(e[2].x),t[0].x=xe(t[0].x,n.vmin,n.vmax),t[1].x=xe(t[1].x,n.vmin,n.vmax),t[2].x=xe(t[2].x,n.vmin,n.vmax),n.vmin=n.vmax=e[0].y,n.mergeNeCoordinate(e[1].y),n.mergeNeCoordinate(e[2].y),t[0].y=xe(t[0].y,n.vmin,n.vmax),t[1].y=xe(t[1].y,n.vmin,n.vmax),t[2].y=xe(t[2].y,n.vmin,n.vmax)}const kc=lt/180,Ac=180/lt;function jc(e){let t=e;return t>=-360&&t<720?(t<0?t+=360:t>=360&&(t-=360),t):(t=pt(t,360),t<0&&(t+=360),t)}function Mc(e){let t=e;return t=jc(t),t>180&&(t-=360),t}function Nc(e){return e*kc}function Pc(e){return e*Ac}function Fc(e){let t=et(),n=e;return n>=-t&&n<t*2?(n<0&&(n+=t),n>=t&&(n-=t),n):(n=pt(n,t),n<0&&(n+=t),n)}function Ic(e){let t=W(),n=e;return n>-t&&n<=t?n:(n=Fc(n),n>t&&(n-=et()),n)}function Lc(e,t){return Mc(t-e)}var Rc=v;class zc extends Sn{static type=s.enumEllipticArc;m_semiMajorAxis;m_minorMajorRatio;m_rotation;m_cosr;m_sinr;m_center;m_sweepAngle;m_startAngle;m_interior;m_bits;m_cachedValues;constructor(e){if(e===void 0||Ne(e,`vd`)){super({vd:e?.vd,XStart:0,YStart:0,XEnd:0,YEnd:0}),this.m_semiMajorAxis=0,this.m_minorMajorRatio=1,this.m_rotation=0,this.m_cosr=1,this.m_sinr=0,this.m_center=new P(0,0),this.m_sweepAngle=0,this.m_startAngle=0,this.m_interior=new P(0,0),this.m_bits=0;return}if(e.copy){super(e),this!==e.copy&&(this.m_center=new P(0,0),this.m_interior=new P(0,0),e.copy.copyToImpl(this));return}if(e.move)super(e),this.m_semiMajorAxis=e.move.m_semiMajorAxis,this.m_minorMajorRatio=e.move.m_minorMajorRatio,this.m_rotation=e.move.m_rotation,this.m_cosr=e.move.m_cosr,this.m_sinr=e.move.m_sinr,this.m_center=e.move.m_center.clone(),this.m_sweepAngle=e.move.m_sweepAngle,this.m_startAngle=e.move.m_startAngle,this.m_interior=e.move.m_interior.clone(),this.m_bits=e.move.m_bits,this.m_cachedValues=e.move.m_cachedValues,e.move.m_cachedValues=null;else if(e.fromPoint){super({XStart:0,YStart:0,XEnd:0,YEnd:0}),this.m_center=new P(0,0),this.m_interior=new P(0,0),this.constructCircularArcThreePoint(e.fromPoint,e.toPoint,e.interiorPoint);return}else if(e.center){super({XStart:0,YStart:0,XEnd:0,YEnd:0}),this.m_center=new P(0,0),this.m_interior=new P(0,0),this.constructCircleRadius(e.radius,e.center,e.bIsCounterClockwise);return}else if(e.semiMajorAxis){super({XStart:0,YStart:0,XEnd:0,YEnd:0}),this.constructEllipticArcEndPoints(e.fromPoint,e.toPoint,e.semiMajorAxis,e.minorMajorRatio,e.axisXRotationRad,e.bBigArc,e.bIsCounterClockwise);return}}getBoundary(){return or(this)}assignCopy(e){return this!==e&&e.copyTo(this),this}constructCircleRadius(e,t,n=!1){return this.constructEllipse(e,1,t,0,n),this.setProjectionBehavior(0),this.afterCompletedModification(),this}constructCircleCenterAndPoint(e,t,n=!1){let r=P.distance(e,t);return this.constructEllipticArcEndPointsCenter(t,t,r,1,0,!0,n,e),this.setProjectionBehavior(0),this.afterCompletedModification(),this}constructTwoPointCircle(e,t,n=!1){let r=P.lerp(e,t,.5);return this.constructCircleCenterAndPoint(r,e,n),this}constructLineEllipticArc(e,t){return Ol(this,e,t,1),this}constructLineCircularArc(e,t){return Ol(this,e,t,0),this}constructEllipse(e,t,n,r,i=!1){this.m_semiMajorAxis=Math.abs(e),this.m_minorMajorRatio=Math.abs(t),this.m_minorMajorRatio>1&&(this.m_semiMajorAxis*=this.m_minorMajorRatio,this.m_minorMajorRatio=1/this.m_minorMajorRatio);let a=new P(0,this.m_minorMajorRatio*this.m_semiMajorAxis),o=Math.cos(r),s=Math.sin(r);return a.rotateDirect(o,s),a.addThis(n),this.constructEllipticArcEndPointsCenter(a,a,this.m_semiMajorAxis,this.m_minorMajorRatio,r,!0,i,n),this}inflate(e){if(this.isDegenerateToLine())return;let t=this.getSemiMinorAxis()+e;if(t=t<=0?0:(this.getSemiMajorAxis()+e)/this.getSemiMajorAxis(),this.isCircular()){let e=new xt;e.setShiftCoords(-this.m_center.x,-this.m_center.y),e.scale(t,t),e.shiftCoords(this.m_center.x,this.m_center.y),this.applyTransformation(e)}else{let e=new xt;this.canonicToWorldTransformation(e);let n=e.clone();n.invertPreciseThis(),n.scale(t,t),n.multiply(e),this.applyTransformation(n)}}constructEnclosingCircle(e,t,n=!1){return Yl(this,e,t,n),this}constructThreePointCircle(e,t,n,r=!1){if(!e.equals(t)&&!t.equals(n)&&!e.equals(n)){let i=P.calculateCircleCenterFromThreePoints(e,t,n);if(!i.isFinite()||!Number.isFinite(P.distance(e,i))){let r=P.distance(e,t),i=P.distance(e,n);this.constructLineCircularArc(e,r>=i?t:n)}return this.constructCircleCenterAndPoint(i,e,r)}{let i=e.clone(),a=t.clone(),o=n.clone();return i.equals(a)&&a.assign(o),this.constructTwoPointCircle(i,a,r)}}constructCircularArcThreePoint(e,t,n){let r=new V(e.x),i=new V(t.x),a=new V(n.x),o=new V(e.y),s=new V(t.y),c=new V(n.y),l=new V(.5),u=i.subE(r),d=s.subE(o),f=a.subE(r),p=c.subE(o),m=u.mulE(p).subThisE(d.mulE(f));if(m.scaleError(10),m.isZero()){if(!u.isZero()||!d.isZero())return Ol(this,e,t,0),this;{let r=e.clone().addThis(t).mulThis(.5).addThis(n).mulThis(.5),i=n.sub(r).length();this.constructEllipticArcEndPointsCenter(e,t,i,1,0,!0,!1,r),this.m_interior.assign(n)}return this.setProjectionBehavior(0),this}let h=u.sqr().addThisE(d.sqr()).mulThisE(l),g=f.sqr().addThisE(p.sqr()).mulThisE(l),_=h.mulE(p).subThisE(g.mulE(d)),v=u.mulE(g).subThisE(f.mulE(h));_.divThisE(m),v.divThisE(m);let y=_.sqr().addThisE(v.sqr());y.sqrtThis();let b=_.addE(r),x=v.addE(o),S=e.x-b.value(),C=e.y-x.value(),w=Math.atan2(C,S);S=t.x-b.value(),C=t.y-x.value();let T=Math.atan2(C,S);S=n.x-b.value(),C=n.y-x.value();let E=Math.atan2(C,S),D=E-2*W();for(;D<w;)D+=2*W();let O=T-2*W();for(;O<D;)O+=2*W();let k=E+2*W();for(;k>w;)k-=2*W();let ee=T+2*W();for(;ee>k;)ee-=2*W();let A;A=O-w<w-ee?O-w:ee-w;let j=new P(b.value(),x.value());return this.constructEllipticArcEndPointsCenter(e,t,y.value(),1,0,Math.abs(A)>W(),A>0,j),this.m_interior.assign(n),this.setProjectionBehavior(0),this.afterCompletedModification(),this}constructCircularArc(e,t,n,r){return this.constructEllipticArcGeneral(e,1,t,n,r,0),this.setProjectionBehavior(0),this.afterCompletedModification(),this}constructEllipticArcEndPoints(e,t,n,r,i,a,o){return Dl(this,e,t,n,r,i,a,o)}constructEllipticArcEndPointsCenter(e,t,n,r,i,a,o,s){return Dl(this,e,t,n,r,i,a,o,s)}constructEllipticArcGeneral(e,t,n,r,i,a){this.m_semiMajorAxis=Math.abs(e),this.m_minorMajorRatio=Math.abs(t),this.m_minorMajorRatio>1&&(this.m_semiMajorAxis*=this.m_minorMajorRatio,this.m_minorMajorRatio=1/this.m_minorMajorRatio);let o=Ic(a),s=Math.cos(o),c=Math.sin(o),l=new P(this.m_semiMajorAxis,this.m_minorMajorRatio*this.m_semiMajorAxis),u=P.getNAN(),d=Ic(r);u.x=l.x*Math.cos(d),u.y=l.y*Math.sin(d),u.rotateDirect(s,c),u.addThis(n);let f=$e(i,et()),p=f;Math.abs(p)===et()&&(p=0);let m=P.getNAN();return m.x=l.x*Math.cos(d+p),m.y=l.y*Math.sin(d+p),m.rotateDirect(s,c),m.addThis(n),this.constructEllipticArcEndPointsCenter(u,m,this.m_semiMajorAxis,this.m_minorMajorRatio,o,Math.abs(f)>W(),f>0,n)}constructEllipticArcAsNURB(e,t,n,r){return(r>=1||r<0)&&i(`construct_elliptic_arc_as_NURB: weight`),t.isFinite()||i(`construct_elliptic_arc_as_NURB: control_point`),Kl([e,t,n],r*r,null,!1,this),this}constructCanonic(e){return this.assignCopy(e),e.isDegenerateToLine()||e.m_center.isEqual(0,0)&&this.m_rotation===0?this:(this.m_XStart=e.getSemiMajorAxis()*Math.cos(e.m_startAngle),this.m_YStart=e.getSemiMinorAxis()*Math.sin(e.m_startAngle),this.m_XEnd=e.getSemiMajorAxis()*Math.cos(e.getEndAngle()),this.m_YEnd=e.getSemiMinorAxis()*Math.sin(e.getEndAngle()),this.m_center.setCoords(0,0),this.m_rotation=0,this.m_cosr=1,this.m_sinr=0,Zl(this),this.afterCompletedModification(),e!==this&&Zt(this,e),this)}isCircular(){return this.m_minorMajorRatio===1&&this.m_rotation===0&&!this.isDegenerateToLine()}isDegenerateToLineHelper(e){if(this.isLine())return!0;if(this.isMajor())return!1;let t=this.getEndXY().sub(this.getStartXY()).length();return!(this.calculateLength2D()-t>e)}isDegenerateToLine(){return Z(this)}getCenter(){return this.m_center.clone()}setCenter(e){if(!this.m_center.isNAN()){let t=e.sub(this.m_center);this.m_XStart+=t.x,this.m_YStart+=t.y,this.m_XEnd+=t.x,this.m_YEnd+=t.y,this.m_interior.addThis(t),this.m_center.assign(e),this.endPointModified(),this.normalizeAfterEndpointChange()}}getAxisXRotation(){return this.m_rotation}getSemiAxes(){return P.construct(this.m_semiMajorAxis,this.m_semiMajorAxis*this.m_minorMajorRatio)}getSemiMajorAxis(){return this.m_semiMajorAxis}getSemiMinorAxis(){return this.m_semiMajorAxis*this.m_minorMajorRatio}getMinorMajorRatio(){return this.m_minorMajorRatio}isClockwise(){return!Rl(this)}isMajor(){return Bl(this)}getSweepAngle(){return this.m_sweepAngle}getStartAngle(){return this.m_startAngle}getEndAngle(){return this.m_startAngle+this.m_sweepAngle}getGeometryType(){return s.enumEllipticArc}queryEnvelope(e){if(e.m_EnvelopeType===4){e.setEmpty(),e.assignVertexDescription(this.m_description);let t=G.constructEmpty();this.queryEnvelope(t),e.setEnvelope(t);for(let t=1,n=this.m_description.getAttributeCount();t<n;t++){let n=this.m_description.getSemantics(t);for(let r=Rc.getComponentCount(n);t<r;t++){let t=this.queryInterval(n,0);e.setIntervalEnvelope(n,0,t)}}}else e.m_EnvelopeType===2?nu(this,R.unit(),e):n(`3d not impl`)}applyTransformation(e){Ml(this,e,!1,null,null)}createInstance(){return new zc}calculateLength2D(){return xl(this,0,1)}queryControlPointsHelper(e){t(``)}queryCoord2D(e,t){if(Z(this)){Tn(e,this.getStartXY(),this.getEndXY(),t);return}if(e===0)t.assign(P.construct(this.m_XStart,this.m_YStart));else if(e===1)t.assign(P.construct(this.m_XEnd,this.m_YEnd));else{let n=_l(this,e),r=new P(this.m_semiMajorAxis*Math.cos(n),this.getSemiMinorAxis()*Math.sin(n));r.rotateDirect(this.m_cosr,this.m_sinr),r.addThis(this.m_center),t.assign(r)}}queryCoord2DE(e,t){cl(this,e,t)}queryCoord2DMP(e,t){n(``)}getCoordX(e){let t=new P;return this.queryCoord2D(e,t),t.x}getCoordY(e){let t=new P;return this.queryCoord2D(e,t),t.y}cut(e,t,n){let r=new $;return this.queryCut(e,t,r,n),r.releaseSegment()}queryCut(e,t,n,r){let i=n.createEllipticArc();r&&i.dropAllAttributes();let a=e===0&&t===1;if(a&&!r){this.copyTo(i);return}let o=P.getNAN();this.queryCoord2D(e,o);let s=P.getNAN();if(this.queryCoord2D(t,s),!a){if(o.equals(s))t-e>.5&&this.isMajor()&&this.isClosed()?(a=!0,e=0,t=1):t===1?e=t:t=e;else if(e>0&&o.isEqual(this.m_XStart,this.m_YStart)&&(e=0),t<1&&s.isEqual(this.m_XEnd,this.m_YEnd)&&(t=1),a=e===0&&t===1,a&&!r){this.copyTo(i);return}}if(i.m_center.assign(this.m_center),i.m_semiMajorAxis=this.m_semiMajorAxis,i.m_minorMajorRatio=this.m_minorMajorRatio,i.m_interior.assign(this.m_interior),i.m_rotation=this.m_rotation,i.m_cosr=this.m_cosr,i.m_sinr=this.m_sinr,i.m_sweepAngle=this.m_sweepAngle,i.m_startAngle=this.m_startAngle,i.m_bits=this.m_bits,Bt(i,o.x,o.y),Ht(i,s.x,s.y),a){Pl(i,Sl(this));return}i.m_startAngle=_l(this,e),i.m_sweepAngle=_l(this,t)-i.m_startAngle,i.m_startAngle=fl(i.m_startAngle),zl(i,Math.abs(i.m_sweepAngle)>W()),r&&i.assignVertexDescription(this.m_description),Zl(i),hl(i);let c=this.m_description.getAttributeCount();if(c>1&&!r){for(let t=1;t<c;t++){let n=this.m_description.getSemantics(t),r=Rc.getComponentCount(n);for(let t=0;t<r;t++){let r=this.getAttributeAsDbl(e,n,t);i.setStartAttribute(n,t,r)}}for(let e=1;e<c;e++){let n=this.m_description.getSemantics(e),r=Rc.getComponentCount(n);for(let e=0;e<r;e++){let r=this.getAttributeAsDbl(t,n,e);i.setEndAttribute(n,e,r)}}}i.afterCompletedModification()}queryDerivative(e,t){ou(this,e,t)}cutArcIgnoreAttributes(e,t,n){let r=e===0&&t===1,i=new P;this.queryCoord2D(e,i);let a=new P;if(this.queryCoord2D(t,a),r||(i.equals(a)?t-e>.5&&this.isMajor()&&this.isClosed()?(r=!0,e=0,t=1):t===1?e=t:t=e:(e>0&&i.isEqual(this.m_XStart,this.m_YStart)&&(e=0),t<1&&a.isEqual(this.m_XEnd,this.m_YEnd)&&(t=1),r=e===0&&t===1)),n.m_center.assign(this.m_center),n.m_semiMajorAxis=this.m_semiMajorAxis,n.m_minorMajorRatio=this.m_minorMajorRatio,n.m_interior.assign(this.m_interior),n.m_rotation=this.m_rotation,n.m_cosr=this.m_cosr,n.m_sinr=this.m_sinr,n.m_sweepAngle=this.m_sweepAngle,n.m_startAngle=this.m_startAngle,n.m_bits=this.m_bits,Bt(n,i.x,i.y),Ht(n,a.x,a.y),r){Pl(n,Sl(this));return}n.m_startAngle=_l(this,e),n.m_sweepAngle=_l(this,t)-n.m_startAngle,n.m_startAngle=fl(n.m_startAngle),zl(n,Math.abs(n.m_sweepAngle)>Math.PI),Zl(n),n.afterCompletedModification()}changeEndPoints2D(e,t){wl(this,e,t,!1)}getAttributeAsDbl(e,t,n){if(t===0)return n===0?this.getCoordX(e):this.getCoordY(e);if(e===0)return this.getStartAttributeAsDbl(t,n);if(e===1)return this.getEndAttributeAsDbl(t,n);let r=this.calculateLength2D(),i=r>0?this.tToLength(e)/r:0,a=Rc.getInterpolation(t),o=this.getStartAttributeAsDbl(t,n),s=this.getEndAttributeAsDbl(t,n);return Ae(a,o,s,i,Rc.getDefaultValue(t))}getClosestCoordinate(e,t){return ru(this,e,R.unit(),t)}getClosestCoordinateOnInterval(e,t,n=-1){return ru(this,e,t,!1)}getYMonotonicParts(e,t=!1){e.length<2&&i(``);let n=this.getSemiAxes(),a=Math.atan2(n.y*this.m_cosr,n.x*this.m_sinr),o=a+W(),s=L(3,NaN),c=0;if(s[0]=gl(this,a),s[0]>0&&s[0]<1&&c++,s[1]=gl(this,o),s[1]>0&&s[1]<1&&(s[c]=s[1],c++),c===0)return 0;s[c]=1,c++,r(e.length>=c);let l=0;for(let n=0;n<c;n++){let r=s[n];this.queryCut(l,r,e[n],t),l=r}return c}getMonotonicParts(e,t){if(e.length<4&&i(``),this.isDegenerateToLine())return e[0].createEllipticArc().assignCopy(this),t&&e[0].get().dropAllAttributes(),1;let n=this.getSemiAxes(),a=L(4,NaN);a[0]=Math.atan2(n.y*this.m_cosr,n.x*this.m_sinr),a[1]=a[0]+W(),a[2]=Math.atan2(-n.y*this.m_sinr,n.x*this.m_cosr),a[3]=a[2]+W();let o=L(5,NaN),s=0;for(let e=0;e<4;e++)o[s]=gl(this,a[e]),o[s]>0&&o[s]<1&&s++;if(s===0)return 0;Ie(o,s),o[s-1]<1&&(o[s]=1,s++),r(e.length>=s);let c=0;for(let n=0;n<s;n++){let r=o[n];this.queryCut(c,r,e[n],t),c=r}return s}intersectionWithAxis2D(e,t,n,r){if(Z(this))return new Q({start:this.getStartXY(),end:this.getEndXY()}).intersectionWithAxis2D(e,t,n,r);let i,a,o=new V(t),s=this.getSemiAxes();if(e){if(t>this.m_center.y+s.x||t<this.m_center.y-s.x)return 0;i=new V(s.x).mulThis(this.m_sinr),a=new V(s.y).mulThis(this.m_cosr),o.subThis(this.m_center.y)}else{if(t>this.m_center.x+s.x||t<this.m_center.x-s.x)return 0;i=new V(s.x).mulThis(this.m_cosr),a=new V(s.y).mulThis(-this.m_sinr),o.subThis(this.m_center.x)}let c=i.sqr(),l=a.sqr(),u=c.addE(l),d=a.mulE(o).mulThis(-2),f=o.sqr().subThisE(c),p=d.sqr().subThisE(u.mulE(f).mulThis(4)),m=i.mulE(o).mulThis(-2),h=o.sqr().subThisE(l),g=m.sqr().subThisE(u.mulE(h).mulThis(4)),_=p.eps()*Math.abs(g.value())<=g.eps()*Math.abs(p.value());_?i.isZero()&&(_=!1):a.isZero()&&(_=!0),_||(d.setE(m),f.setE(h));let v=H(V,2),y=br(u,d,f,R.construct(-1,1),!1,v);if(y===0)return 0;let b=[0,0],x=0;for(let e=0;e<y;e++){let t=new V,n=new V;_?(t.setE(v[e]),n.setE(o.subE(a.mulE(v[e])).divThisE(i))):(n.setE(v[e]),t.setE(o.subE(i.mulE(v[e])).divThisE(a)));let r=Math.atan2(t.value(),n.value()),s=gl(this,r);s>=0&&s<=1&&(b[x]=s,x++)}return y=x,y===0?0:(y===2&&b[0]>b[1]&&(b[1]=z(b[0],b[0]=b[1])),r&&he(r,b,0,0,y),n&&(n[0]=e?this.getCoordX(b[0]):this.getCoordY(b[0]),y>1&&(n[1]=e?this.getCoordX(b[1]):this.getCoordY(b[1]),!r&&n[0]>n[1]&&(n[1]=z(n[0],n[0]=n[1])))),y)}intersectionOfYMonotonicWithAxisX(e,t){if(this.m_YStart===this.m_YEnd)return e===this.m_YStart?t:NaN;if(e===this.m_YStart)return this.m_XStart;if(e===this.m_YEnd)return this.m_XEnd;let n=[0,0];return this.intersectionWithAxis2D(!0,e,n,null)===-1?t:n[0]}isCurve(){return!0}isDegenerate(e){return Pt(this,e)}isDegenerate3D(e,t){return r(0),!1}queryLooseEnvelope(e){if(e.m_EnvelopeType===3){n(`3d not impl`);return}this.queryLooseEnvelopeOnInterval(new R(0,1),e)}clone(e){let t=new zc;return this.copyTo(t),t}queryInterval(e,t){if(e===0){if(Z(this))return t===0?R.construct(this.getStartX(),this.getEndX()):R.construct(this.getStartY(),this.getEndY());let e,n=this.getSemiAxes();e=t===0?Math.atan2(-n.y*this.m_sinr,n.x*this.m_cosr):Math.atan2(n.y*this.m_cosr,n.x*this.m_sinr);let r=e+Math.PI,i=[0,0];i[0]=gl(this,e),i[1]=gl(this,r);let a=t===0?R.construct(this.getStartX(),this.getEndX()):R.construct(this.getStartY(),this.getEndY()),o=new P;for(let e=0;e<2;e++){let n=i[e];n>0&&n<1&&(this.queryCoord2D(n,o),a.mergeNeCoordinate(t===0?o.x:o.y))}return a}return super.queryInterval(e,t)}queryLooseEnvelopeOnInterval(e,t){let n=new R(0,1);if(n.intersect(e),n.isEmpty()){t.setEmpty();return}if(Z(this)){t.setCoords(this.getCoord2D(n.vmin)),t.mergeNe(this.getCoord2D(n.vmax));return}let r=this.getCoord2D(n.vmin),i=this.getCoord2D(n.vmax);if(this.m_minorMajorRatio===1&&Math.abs(this.m_sweepAngle)*n.width()<=Re){let e=P.lerp(r,i,.5),n=e.sub(this.m_center);n.normalize(),e=e.add(n.mul(P.distance(r,i)*.5)),t.setCoords(r),t.mergeNe(i),t.mergeNe(e);return}nu(this,n,t)}tToLength(e){return Z(this)?e*P.distance(this.getStartXY(),this.getEndXY()):this.m_minorMajorRatio===1?Math.abs(this.getSweepAngle()*e)*this.m_semiMajorAxis:kl(this,e)}parametricAngleToT(e){return gl(this,e)}tToParametricAngle(e){return _l(this,e)}lengthToT(e){if(Z(this)){let t=P.distance(this.getStartXY(),this.getEndXY());return t===0?0:e/t}if(this.m_minorMajorRatio===1){let t=Math.abs(this.getSweepAngle())*this.m_semiMajorAxis;return t===0?0:e/t}return Al(this,e)}calculateWeightedAreaCentroid2D(e){if(Z(this)){let e=new P;return e.setCoords(0,0),e}let t=Xl(this),n=this.getStartXY().sub(this.m_center),r=this.getEndXY().sub(this.m_center),i=this.m_semiMajorAxis,a=this.getSemiMinorAxis(),o=this.m_startAngle+this.m_sweepAngle,s=new P;s.x=i*a*(i*this.m_cosr*(-Math.sin(o)+Math.sin(this.m_startAngle))+a*(-Math.cos(o)+Math.cos(this.m_startAngle))*this.m_sinr)/3,s.y=i*a*(a*(Math.cos(o)-Math.cos(this.m_startAngle))*this.m_cosr+i*(-Math.sin(o)+Math.sin(this.m_startAngle))*this.m_sinr)/3;let c=r.add(n).mul(r.crossProduct(n)/6);return s.x-=c.x,s.y-=c.y,s.add(this.m_center.sub(e).mul(t))}calculateWeightedCentroid2D(){let e=new P;if(this.isDegenerate(0))return e.setCoords(0,0),e;if(Z(this))return e.assign(this.getCoord2D(.5).mul(this.calculateLength2D())),e;let t=this.m_startAngle,n=this.m_startAngle+this.m_sweepAngle;if(n<t){let e=t;t=n,n=e}let r=Math.sin(t),i=Math.sin(n),a=Math.cos(t),o=Math.cos(n);if(this.m_minorMajorRatio===1){let t=this.getSemiMajorAxis(),n=t*t,s=n*(i-r),c=n*(a-o);e.setCoords(s,c)}else{let t=this.getSemiMajorAxis(),n=this.getSemiMinorAxis(),s=t*t,c=n*n,l=t*n,u=s-c,d=u/c,f=u/s,p=Math.sqrt(d),m=Math.sqrt(f),h=.5*l*(Math.asinh(p*i)/p+i*Math.sqrt(1+d*i*i))-.5*l*(Math.asinh(p*r)/p+r*Math.sqrt(1+d*r*r)),g=-.5*l*(Math.asin(m*o)/m+o*Math.sqrt(1-f*o*o))- -.5*l*(Math.asin(m*a)/m+a*Math.sqrt(1-f*a*a));e.setCoords(h,g)}return e.rotateDirect(this.m_cosr,this.m_sinr),e.assign(e.add(this.m_center.mul(this.calculateLength2D()))),e}isIntersectingPoint(e,t,n){if(n&&(e.isEqualPoint2D(this.getStartXY())||e.isEqualPoint2D(this.getEndXY())))return!1;if(!Z(this)){let n=P.distance(e,this.m_center),r=this.getSemiAxes();if(n<r.x-t||n>r.y+t)return!1}let r=this.getClosestCoordinate(e,!1),i=new P;return this.queryCoord2D(r,i),P.distance(i,e)<=t}isIntersectingPoint3D(e,t,n,i,a=1){return r(0),!1}getTangent(e){if(Z(this))return this.getEndXY().sub(this.getStartXY());{let t=_l(this,e),n=new P;return n.setCoords(-this.m_semiMajorAxis*Math.sin(t),this.getSemiMinorAxis()*Math.cos(t)),this.m_rotation&&n.rotateDirect(this.m_cosr,this.m_sinr),n.scale(this.getSweepAngle()),n}}getDerivative(e){if(Z(this))return this.getEndXY().sub(this.getStartXY());{let t=_l(this,e),n=new P;return n.setCoords(-this.m_semiMajorAxis*Math.sin(t),this.getSemiMinorAxis()*Math.cos(t)),this.m_rotation&&n.rotateDirect(this.m_cosr,this.m_sinr),n.scale(this.getSweepAngle()),n}}normalizeAfterEndpointChange(){return Hl(this)?Z(this)?(Ul(this),!1):Wl(this,!1):!1}projectionBehavior(){return(this.m_bits&4)>>2}setProjectionBehavior(e){this.m_bits=this.m_bits&-5|e<<2}convertToCanonic(e){let t=new P(e.x,e.y);return t.subThis(this.m_center),t.rotateReverse(this.m_cosr,this.m_sinr),t}convertFromCanonic(e){let t=new P(e.x,e.y);return t.rotateDirect(this.m_cosr,this.m_sinr),t.addThis(this.m_center),t}canonicToWorldTransformation(e){e.setRotate(this.m_cosr,this.m_sinr),e.shiftCoords(this.m_center.x,this.m_center.y)}getCurvature(e){let t=_l(this,e),n=new P,r=this.getSemiMinorAxis();n.setCoords(-this.m_semiMajorAxis*Math.sin(t),r*Math.cos(t));let i=new P;i.setCoords(-this.m_semiMajorAxis*Math.cos(t),-r*Math.sin(t)),this.m_rotation&&(n.rotateDirect(this.m_cosr,this.m_sinr),i.rotateDirect(this.m_cosr,this.m_sinr));let a=n.sqrLength();if(a===0)return NaN;let o=Math.sqrt(a);return n.divThis(o),n.crossProduct(i)/a}getMonotonicPartParams(e,t){let n=L(6,NaN);n[0]=0;let r=1;if(this.isDegenerateToLine())n[1]=1,r=2;else{let e=this.getSemiAxes(),t=L(4,NaN);this.m_rotation?(t[0]=Math.atan2(e.y*this.m_cosr,e.x*this.m_sinr),t[1]=t[0]+Math.PI,t[2]=Math.atan2(-e.y*this.m_sinr,e.x*this.m_cosr),t[3]=t[2]+Math.PI):(t[0]=0,t[1]=Math.PI,t[2]=Math.PI*.5,t[3]=ze());for(let e=0;e<4;e++){let i=gl(this,t[e]);i>0&&i<1&&(n[r]=i,r++)}r>2&&Ie(n,r),n[r]=1,r++}if(t){e<r&&i(``);for(let e=0;e<r;e++)t[e]=n[e]}return r}calculateLowerLength2D(){let e=P.distance(this.getStartXY(),this.getEndXY());if(this.isDegenerateToLine())return e;let t=Math.abs(this.m_sweepAngle)*this.getSemiMinorAxis();return Math.max(t,e)}calculateUpperLength2D(){let e=P.distance(this.getStartXY(),this.getEndXY());if(this.isDegenerateToLine())return e;let t=Math.abs(this.m_sweepAngle)*this.getSemiMajorAxis();return Math.max(t,e)}orientBottomUp(){if(this.m_YEnd<this.m_YStart||this.m_YEnd===this.m_YStart&&this.m_XEnd<this.m_XStart){this.m_XEnd=z(this.m_XStart,this.m_XStart=this.m_XEnd),this.m_YEnd=z(this.m_YStart,this.m_YStart=this.m_YEnd);for(let e=0,t=this.m_description.getTotalComponentCount()-2;e<t;e++)this.m_attributes[e+t]=z(this.m_attributes[e],this.m_attributes[e]=this.m_attributes[e+t]);this.m_startAngle+=this.m_sweepAngle,this.m_sweepAngle=-this.m_sweepAngle}}isLine(){return Z(this)}copyIgnoreAttributes(e){e.m_XStart=this.m_XStart,e.m_YStart=this.m_YStart,e.m_XEnd=this.m_XEnd,e.m_YEnd=this.m_YEnd,e.m_center.assign(this.m_center),e.m_semiMajorAxis=this.m_semiMajorAxis,e.m_minorMajorRatio=this.m_minorMajorRatio,e.m_interior.assign(this.m_interior),e.m_rotation=this.m_rotation,e.m_cosr=this.m_cosr,e.m_sinr=this.m_sinr,e.m_sweepAngle=this.m_sweepAngle,e.m_startAngle=this.m_startAngle,e.m_bits=this.m_bits,Fl(e)}calculateArea2DHelper(){return Xl(this)}absNorm(){let e=this.getStartXY().norm(1)+this.getEndXY().norm(1);return this.isDegenerateToLine()||(e+=this.m_center.norm(1),e+=this.m_semiMajorAxis),e}queryEnvelopeW(e,t){if(t.setCoords(this.getCoord2D(e.vmin)),t.mergeNe(this.getCoord2D(e.vmax)),Z(this))return;let n=this.getSemiAxes(),r=L(8,NaN);{let e=Math.atan2(-n.y*this.m_sinr,n.x*this.m_cosr),t=e+Math.PI,i=Math.atan2(n.y*this.m_cosr,n.x*this.m_sinr),a=i+Math.PI;r[0]=gl(this,e),r[1]=gl(this,t),r[2]=gl(this,i),r[3]=gl(this,a)}{let e=this.m_cosr+this.m_sinr,t=this.m_cosr-this.m_sinr,i=Math.atan2(-n.y*e,n.x*t),a=i+Math.PI,o=Math.atan2(n.y*t,n.x*e),s=o+Math.PI;r[4]=gl(this,i),r[5]=gl(this,a),r[6]=gl(this,o),r[7]=gl(this,s)}let i=P.getNAN();for(let n=0;n<8;n++){let a=r[n];e.containsExclusiveCoordinate(a)&&(this.queryCoord2D(a,i),t.mergeNe(i))}}setSegmentFromCoordsForStitcher(e,t){Tl(this,e,t)}writeInBufferStream(e,t){let n=new Float64Array(10);return n[0]=this.m_bits,n[1]=this.m_semiMajorAxis,n[2]=this.m_minorMajorRatio,n[3]=this.m_rotation,n[4]=this.m_center.x,n[5]=this.m_center.y,n[6]=this.m_sweepAngle,n[7]=this.m_startAngle,n[8]=this.m_interior.x,n[9]=this.m_interior.y,e.writeRangeFromArray(t,n.length,n,!0,1),t+n.length}readFromBufferStream(e,t){let n=new Float64Array(10);e.queryRange(t,n.length,n,!0,1),this.m_bits=n[0],this.m_semiMajorAxis=n[1],this.m_minorMajorRatio=n[2],this.m_rotation=n[3],this.m_center.x=n[4],this.m_center.y=n[5],this.m_sweepAngle=n[6],this.m_startAngle=n[7],this.m_interior.x=n[8],this.m_interior.y=n[9],this.m_cosr=Math.cos(this.m_rotation),this.m_sinr=Math.sin(this.m_rotation),this.m_cachedValues=null}snapControlPoints(e){return!1}needsSnapControlPoints(e){return!1}calculateSpecialPointsForCracking(e,n){return t(`should not1; be called`),0}ensureXYMonotone(){if(Z(this))return!1;if(this.getStartXY().equals(this.getEndXY()))return Ol(this,this.getStartXY(),this.getEndXY(),this.projectionBehavior()),!0;let e=H(P,3),t=Gl(this,e);if(Qs(e)){let n=!1;if(this.projectionBehavior()===0){let r=new G;r.setCoords({pt:e[0]}),r.mergeNe(e[2]);let i=new P;i.setSub(e[2],e[0]),i.leftPerpendicularThis(),i.normalize(),i.scale(P.distance(e[2],e[0]));let a=P.lerp(e[2],e[0],.5),o=a.sub(i),s=a.add(i);r.clipLine(o,s);let c=P.getClosestCoordinate(o,s,e[1],!1);e[1]=P.lerp(o,s,c);let l=e[2].sub(e[1]),u=e[0].sub(e[1]),d=l.crossProduct(u),f=l.dotProduct(u);t=He()-Math.abs(.5*Math.atan2(d,f)),n=!0}return Kl(e,t*t,null,n,this),!0}return!1}setCoordsForIntersector(e,t,n){wl(this,e,t,n)}getInteriorPoint(){return this.m_interior.clone()}copyToImpl(e){let t=e;t.m_center.assign(this.m_center),t.m_semiMajorAxis=this.m_semiMajorAxis,t.m_minorMajorRatio=this.m_minorMajorRatio,t.m_interior.assign(this.m_interior),t.m_rotation=this.m_rotation,t.m_cosr=this.m_cosr,t.m_sinr=this.m_sinr,t.m_sweepAngle=this.m_sweepAngle,t.m_startAngle=this.m_startAngle,t.m_bits=this.m_bits,Pl(t,Sl(this))}reverseImpl(){Ll(this,!Rl(this)),hl(this),(this.projectionBehavior()!==0||this.getStartXY().equals(this.getEndXY()))&&Zl(this)}equalsImpl(e){let t=e;if(this.m_bits!==t.m_bits||this.m_semiMajorAxis!==t.m_semiMajorAxis||this.m_minorMajorRatio!==t.m_minorMajorRatio||!this.m_center.isEqualPoint2D(t.m_center)&&(!this.m_center.isNAN()||!t.m_center.isNAN())||this.m_rotation!==t.m_rotation||!this.m_interior.equals(t.m_interior))return!1;let n=t.m_sweepAngle;if(this.m_sweepAngle!==n)return!1;let r=t.m_startAngle;return this.m_startAngle===r}equalsImplTol(e,t){let n=e;if(this.m_bits!==n.m_bits)return!1;if(this.m_center.isNAN()&&n.m_center.isNAN())return!0;if(this.m_center.isNAN()!==n.m_center.isNAN()||!this.getSemiAxes().isEqualPoint2D(n.getSemiAxes(),t)||!this.m_center.isEqualPoint2D(n.m_center,t))return!1;let r=Math.abs(Nc(Mc(Pc(this.m_rotation-n.m_rotation)))),i=Math.abs(W()-r),a=Math.min(r,i);if(this.m_semiMajorAxis*Math.abs(a)>t)return!1;let o=this.getCoord2D(.5),s=n.getCoord2D(.5);return!!o.isEqualPoint2D(s,t)}swapImpl(e){let t=e;this.m_center=z(t.m_center,t.m_center=this.m_center),this.m_semiMajorAxis=z(t.m_semiMajorAxis,t.m_semiMajorAxis=this.m_semiMajorAxis),this.m_minorMajorRatio=z(t.m_minorMajorRatio,t.m_minorMajorRatio=this.m_minorMajorRatio),this.m_interior=z(t.m_interior,t.m_interior=this.m_interior),this.m_rotation=z(t.m_rotation,t.m_rotation=this.m_rotation),this.m_cosr=z(t.m_cosr,t.m_cosr=this.m_cosr),this.m_sinr=z(t.m_sinr,t.m_sinr=this.m_sinr),this.m_sweepAngle=z(t.m_sweepAngle,t.m_sweepAngle=this.m_sweepAngle),this.m_startAngle=z(t.m_startAngle,t.m_startAngle=this.m_startAngle),this.m_bits=z(t.m_bits,t.m_bits=this.m_bits),Il(this,t)}afterCompletedModification(){Ul(this),Fl(this)}intersect(e,t,n,r,i){return pu(!1,this,e,t,n,r,i)}intersectPoint(t,n,r){if(n.length<2&&e(``),Z(this))return new Q({start:this.getStartXY(),end:this.getEndXY()}).intersectPoint(t,n,r);{let e=P.distance(t,this.m_center);if(e>this.m_semiMajorAxis+r||e<this.getSemiMinorAxis()-r)return 0}let i=this.getClosestCoordinate(t,!1),a=P.getNAN();return this.queryCoord2D(i,a),P.distance(a,t)<=r?U(i,0,1)&&(this.queryCoord2D(+(i===0),a),P.distance(a,t)<=r)?(n&&(n[0]=0,n[1]=1),2):(n&&(n[0]=i),1):0}isIntersecting(e,t,n){return lu(!1,this,e,t,n)!==0}endPointModified(){this.m_bits|=8,Fl(this)}clearEndPointModified(){Ul(this)}}function Bc(e,t,n){e.isEmpty()&&a(``),_(e);let r=e.getImpl(),i=[];return Uc(r.getPointCount(),i),Wc(Hc(r),i,r.getPointCount(),t)}function Vc(e,t,n,r){let i=[];return Uc(t,i),Wc(e,i,t,n)}function Hc(e){return{at(t){return e.getXY(t)}}}function Uc(e,t){t.length=e;for(let e=0;e<t.length;++e)t[e]=e;e>3&&ln(e,t)}function Wc(e,t,n,r,i){let a=0,o=[0,0,0],s=0,c=0;for(let i=0;i<3;++i){let l=!1;for(;c<n;){let n=e.at(t[c]),u=1;if(a===3?u=P.inCircleRobust(e.at(r[0]),e.at(r[1]),e.at(r[2]),n):a===2?u=P.inCircleRobust3Point(e.at(r[0]),e.at(r[1]),n):a===1&&n.equals(e.at(r[0]))&&(u=0),u<=0){if(u<0&&i+1<3){t[s]=z(t[c],t[c]=t[s]);for(let e=0;e<a;e++)if(r[e]===t[c]){o[e]=c;break}s++}c++;continue}l=!0;let d=0;for(let e=0;e<a;e++)o[e]>c&&(r[d]=r[e],o[d]=o[e],d++);a=d,r[a]=t[c],o[a]=c,a++,a<3?c=s:(P.orientationRobust(e.at(r[0]),e.at(r[1]),e.at(r[2]))===1&&(r[2]=z(r[0],r[0]=r[2]),o[2]=z(o[0],o[0]=o[2])),c++)}if(!l)break;if(i+1<3){s=0;let n=!1;for(let e=0;e<a;e++)for(let t=e+1;t<a;t++)o[e]>o[t]&&(o[t]=z(o[e],o[e]=o[t]),r[t]=z(r[e],r[e]=r[t]),n=!0);for(let e=0;e<a;e++)t[o[e]]=z(t[e],t[e]=t[o[e]]),o[e]=e;n&&a===3&&P.orientationRobust(e.at(r[0]),e.at(r[1]),e.at(r[2]))===1&&(r[2]=z(r[0],r[0]=r[2]),o[2]=z(o[0],o[0]=o[2]))}c=a}return a}function Gc(e,t,n,r,i,a){return new Xc(0,0,0,null,!1,we()).densifyEx(e,t,n,r,!1,a)}function Kc(e,t,n,r){return Number.isFinite(t)||i(`replace_all_curves_with_beziers: maxDeviation`),el(s.enumBezier,e,t,n)}function qc(e,t,i,a,o,c,l,u){c&&(c.length=0),l&&(l.length=0);let d=e.getGeometryType();if(d===s.enumLine)return c&&(c.push(e.getStartXY()),c.push(P.getNAN()),c.push(P.getNAN()),c.push(e.getEndXY())),l&&(l.push(0),l.push(1)),1;if(d===s.enumBezier){if(!a)return c&&(c.push(e.getStartXY()),c.push(e.getControlPoint1()),c.push(e.getControlPoint2()),c.push(e.getEndXY())),l&&(l.push(0),l.push(1)),1;let t=L(9,NaN),n=e.getMonotonicPartParams(t.length,t);if(t.length=n,n=Zc(e,i,t),n===2&&o&&(t[1]=.5,t.push(1),n=3),l&&l.splice(0,0,...t.slice(0,n)),c){let r=new $;for(let i=1;i<n;i++){let n=t[i-1],a=t[i];e.queryCut(n,a,r,!0);let o=r.get();vo(o),i===1&&c.push(o.getStartXY()),c.push(o.getControlPoint1()),c.push(o.getControlPoint2()),c.push(o.getEndXY())}}return n-1}if(d===s.enumEllipticArc){let n=e;if(n.isDegenerateToLine()||n.isDegenerate(0))return c&&(c.push(e.getStartXY()),c.push(P.getNAN()),c.push(P.getNAN()),c.push(e.getEndXY())),l&&(l.push(0),l.push(1)),1;if(a&&(o||!n.isMonotoneQuickAndDirty())){let s=L(6,NaN),u=n.getMonotonicPartParams(s.length,s);s.length=u,u=Zc(e,i,s),u===2&&o&&(s[1]=.5,s.push(1),u=3);let d=0;if(u>2){let e=new $,o=l||[],f=0;for(let p=1;p<u;p++){let m=s[f],h=s[p];if(n.queryCut(m,h,e,!0),e.get().isDegenerate(0))continue;let g=o.length,_=tl(p===1,e.get(),t,i,a,c,l);r(_>0),d+=_;let v=p===u-1,y=s[f],b=e.get().getSweepAngle()/n.getSweepAngle();for(let e=g,t=o.length;e<t;e++)if(!v||e+1<t?o[e]=y+o[e]*b:o[e]=1,c){let t=e*3,r=n.getCoord2D(o[e]);c[t].setCoordsPoint2D(r),t>0&&yo(c.slice(t-3))}f=p}return d}}return tl(!0,n,t,i,a,c,l)}if(d===s.enumRationalBezier2){let n=e;if(a&&(o||!n.isMonotoneQuickAndDirty())){let r=L(6,NaN),a=n.getMonotonicPartParams(r.length,r);r.length=a,a=Zc(e,i,r),a===2&&o&&(r[1]=.5,r.push(1),a=3);let s=0;if(a>2){let e=new $,o=l||[];for(let u=1;u<a;u++){let d=r[u-1],f=r[u];n.queryCut(d,f,e,!0);let p=o.length;s+=rl(u===1,e.get(),t,i,!1,c,l);let m=u===a-1,h=r[u-1];for(let e=p,t=o.length;e<t;e++)if(!m||e+1<t?o[e]=h+o[e]:o[e]=1,c){let t=e*3,r=n.getCoord2D(o[e]);c[t].setCoordsPoint2D(r),t>0&&Pi(c.slice(t-3))}}return s}}return rl(!0,n,t,i,a,c,l)}if(d===s.enumBezier2){let n=e,r=H(P,3);n.queryControlPoints(r);let s=new ls;s.constructFromQuadratic(r);let u=qc(s,t,i,a,o,c,l);if(c!=null&&l!=null)for(let e=1,t=0;e<u;++e,t+=3){let r=new P;n.queryCoord2D(l[e],r);let i=c[t+3];r.equals(i)||(c[t+3].setCoordsPoint2D(r),a&&yo(c.slice(t,t+4)))}return u}n(``)}function Jc(e,t,r,i,a,o,c,l){o&&(o.length=0),c&&(c.length=0);let u=e.getGeometryType();if(u===s.enumLine)return o&&(o.push(e.getStartXY()),o.push(P.getNAN()),o.push(e.getEndXY())),c&&(c.push(0),c.push(1)),1;if(u===s.enumBezier2){let t=L(9,NaN),n=e.getMonotonicPartParams(t.length,t);if(t.length=n,n=Zc(e,r,t),c&&c.splice(0,0,...t.slice(0,n)),o){let r=new $;for(let i=1;i<n;i++){let n=t[i-1],a=t[i];e.queryCut(n,a,r,!0);let s=r.get();Ni(s),i===1&&o.push(s.getStartXY()),o.push(s.getControlPoint1()),o.push(s.getEndXY())}}return n-1}if(u===s.enumEllipticArc){let n=e;if(n.isDegenerateToLine()||n.isDegenerate(0))return o&&(o.push(e.getStartXY()),o.push(P.getNAN()),o.push(e.getEndXY())),c&&(c.push(0),c.push(1)),1;if(!n.isMonotoneQuickAndDirty()){let i=L(6,NaN),a=n.getMonotonicPartParams(i.length,i);i.length=a,a=Zc(e,r,i);let s=0;if(a>2){let e=new $,l=c||[];for(let u=1;u<a;u++){let d=i[u-1],f=i[u];n.queryCut(d,f,e,!0);let p=l.length,m=il(u===1,e.get(),t,r,!1,o,c);s+=m;let h=u===a-1,g=i[u-1],_=e.get().getSweepAngle()/n.getSweepAngle();for(let e=p,t=l.length;e<t;e++)if(!h||e+1<t?l[e]=g+l[e]*_:l[e]=1,o){let t=e*2,r=n.getCoord2D(l[e]);o[t].setCoordsPoint2D(r),t>0&&Pi(o.slice(t-2))}}return s}}return tl(!0,n,t,r,i,o,c)}if(u===s.enumBezier){let n=e;if(!n.isMonotoneQuickAndDirty()){let i=L(6,NaN),a=n.getMonotonicPartParams(i.length,i);i.length=a,a=Zc(e,r,i);let s=0;if(a>2){let e=new $,l=c||[];for(let u=1;u<a;u++){let d=i[u-1],f=i[u];n.queryCut(d,f,e,!0);let p=l.length;s+=al(u===1,e.get(),t,r,!1,o,c);let m=u===a-1,h=i[u-1];for(let e=p,t=l.length;e<t;e++)if(!m||e+1<t?l[e]=h+l[e]:l[e]=1,o){let t=e*2,r=n.getCoord2D(l[e]);o[t].setCoordsPoint2D(r),t>0&&Pi(o.slice(t-2))}}return s}}return al(!0,n,t,r,i,o,c)}if(u===s.enumRationalBezier2){let n=e;if(!n.isMonotoneQuickAndDirty()){let i=L(6,NaN),a=n.getMonotonicPartParams(i.length,i);i.length=a,a=Zc(e,r,i);let s=0;if(a>2){let e=new $,l=c||[];for(let u=1;u<a;u++){let d=i[u-1],f=i[u];n.queryCut(d,f,e,!0);let p=l.length;s+=nl(u===1,e.get(),t,r,!1,o,c);let m=u===a-1,h=i[u-1];for(let e=p,t=l.length;e<t;e++)if(!m||e+1<t?l[e]=h+l[e]:l[e]=1,o){let t=e*2,r=n.getCoord2D(l[e]);o[t].setCoordsPoint2D(r),t>0&&Pi(o.slice(t-2))}}return s}}return nl(!0,n,t,r,i,o,c)}n(``)}function Yc(e,t,n,i,a,o,c,l,u){let d=e.getGeometryType();if(o&&(o.length=0,c.length=0),l&&(l.length=0),d===s.enumEllipticArc){let t=e;if(t.isDegenerateToLine()||t.isDegenerate(0))return o&&(o.push(e.getStartXY()),o.push(P.getNAN()),o.push(e.getEndXY()),c.push(NaN),c.push(NaN),c.push(NaN)),l&&(l.push(0),l.push(1)),1}let f=L(9,NaN),p;if(a)p=e.getMonotonicPartParams(f.length,f),f.length=p,p=Zc(e,n,f);else{if(p=2,f[0]=0,f[1]=1,d===zc.type){let t=e.getSweepAngle();t>Math.PI*.9&&(Math.min(3,Math.trunc(t/(Math.PI*2/3)+.5))>2?(f[0]=0,f[1]=1/3,f[2]=2/3,f[3]=1,p=4):(f[0]=0,f[1]=.5,f[2]=1,p=3))}else r(d===Mr.type);f.length=p}if(p===2&&i&&(f[1]=.5,f.push(1),p=3),o){let t=new $,n=1;for(;n<p;){let r=f[n-1],i=f[n];e.queryCut(r,i,t,!0);let l=H(P,3),u=[1,1,1];if(d===s.enumEllipticArc){let e=t.get();if(Math.abs(e.getSweepAngle())>Math.PI*.9){let e=(i-r)/3;f.splice(n,0,r+e),f.splice(n+1,0,r+2*e),p+=2;continue}u[1]=Gl(e,l)}else{let e=t.get();e.queryControlPoints(l),e.queryWeights(u)}a&&Qs(l),n===1&&(o.push(l[0].clone()),c.push(u[0])),o.push(l[1].clone()),o.push(l[2].clone()),c.push(u[1]),c.push(u[2]),n++}}return l&&(l.length=p,he(l,f,0,0,p)),p-1}class Xc{m_maxLength;m_maxDeviation;m_maxAngle;m_cosMaxAngle;m_minStep;m_maxSegmentsPerCurve;m_segmentBuffer=null;m_dummyPoint=new N;m_progressTracker;m_progressCounter=0;m_bSetDensifyFlag;m_bOnlyCurveDensify;static constructDefault(e){return new Xc(0,0,0,e,!1,we())}constructor(e,t,n,r,i,a){this.m_progressTracker=r,this.m_bSetDensifyFlag=i,this.m_maxLength=e,this.m_maxDeviation=t,this.m_maxAngle=n>He()?He():n,this.m_cosMaxAngle=Math.cos(this.m_maxAngle),this.m_bOnlyCurveDensify=this.m_maxAngle>0||this.m_maxDeviation>0,this.m_maxSegmentsPerCurve=a,h(this.m_maxSegmentsPerCurve>0,`this.m_maxSegmentsPerCurve > 0`),this.m_minStep=1/this.m_maxSegmentsPerCurve}densify(e){return this.densifyGeom(e)}densifySegment(e,t){this.densifySegmentEx(e,null,!0,!1,t)}densifyEx(e,t,n,r,i,a){return this.m_maxLength=t,this.m_maxDeviation=n,this.m_maxAngle=r>He()?He():r,this.m_cosMaxAngle=Math.cos(this.m_maxAngle),this.m_bOnlyCurveDensify=this.m_maxAngle>0||this.m_maxDeviation>0,this.m_bSetDensifyFlag=i,this.m_maxSegmentsPerCurve=a,h(this.m_maxSegmentsPerCurve>0,`this.m_maxSegmentsPerCurve > 0`),this.m_minStep=1/this.m_maxSegmentsPerCurve,this.densifyGeom(e)}densifyGeom(e){if(e.isEmpty()||e.getDimension()<1)return e;let n=e.getGeometryType();if(g(n))return e;if(u(n))return this.densifyMultiPath(e);if(p(n))return this.densifySegmentImpl(e);if(n===s.enumEnvelope)return this.densifyEnvelope(e);t(``)}densifySegmentEx(e,t,n,r,i){let a=e.getGeometryType();if(!(this.m_maxLength>0)&&(!this.m_bOnlyCurveDensify||a===s.enumLine)&&(!r||n)){t?a===s.enumLine?t.addSegment(e,n):(n&&(e.queryStart(this.m_dummyPoint),t.startPathPoint(this.m_dummyPoint)),e.queryEnd(this.m_dummyPoint),t.lineToPoint(this.m_dummyPoint)):(n&&i.push(0),i.push(1));return}if(a===s.enumBezier){this.densifyCubicBezier(e,t,n,r,i);return}if(a===s.enumRationalBezier2){this.densifyRationalBezier2(e,t,n,r,i);return}if(a===s.enumBezier2){this.densifyBezier2(e,t,n,r,i);return}if(a===s.enumEllipticArc&&!e.isLine()&&e.getMinorMajorRatio()<.25){this.densifyEllipticArc(e,t,n,r,i);return}let o=1;this.m_maxLength>0&&(o=this.calculateLengthSubdivisionStep(e,this.m_maxLength)),this.m_maxDeviation>0&&(o=Math.min(o,this.calculateDeviationSubdivisionStep(e,this.m_maxDeviation))),this.m_maxAngle>0&&(o=Math.min(o,this.calculateAngularSubdivisionStep(e,this.m_maxAngle))),this.densifySegmentByLength(e,o,t,n,r,i)}densifyMultiPath(e){if(!e.hasNonLinearSegments()){if(e.getDescription().getAttributeCount()===1)return this.densifyMultiPathLinear(e);if(!(this.m_maxLength>0))return e}let t=e.createInstance();t.getGeometryType()===s.enumPolygon&&t.setFillRule(e.getFillRule()),t.reserve(e.getPointCount());let n=e.getImpl().querySegmentIterator();for(;n.nextPath();){let e=!0;for(;n.hasNextSegment();){let r=n.nextSegment(),i=n.isClosingSegment();this.densifySegmentEx(r,t,e,i,null),i&&t.closePathWithLine(),e=!1}}return t}densifySegmentImpl(e){let t=new rr({vd:e.getDescription()});return this.densifySegmentEx(e,t,!0,!1,[0]),t}densifyEnvelope(e){let t=new ha({vd:e.getDescription()});t.addEnvelope(e,!1);let n=G.constructEmpty();e.queryEnvelope(n);let r=n.width(),i=n.height();return!(this.m_maxLength>0)||r<=this.m_maxLength&&i<=this.m_maxLength?t:this.densifyMultiPath(t)}densifyMultiPathLinear(e){if(!(this.m_maxLength>0))return e;let t=e.createInstance();t.getGeometryType()===s.enumPolygon&&t.setFillRule(e.getFillRule()),t.reserve(e.getPointCount());let n=t.getImpl(),r=e.getImpl(),i=r.getAttributeStreamRef(0),a=new Q;for(let e=0,o=r.getPathCount();e<o;e++){let o=r.isClosedPath(e);if(r.getPathSize(e)===0)continue;let s=r.getPathStart(e),c=i.readPoint2D(s*2),l=c.clone();n.startPath(c);for(let o=s+1,c=r.getPathEnd(e);o<c;o++){let e=i.readPoint2D(o*2),r=P.distance(l,e);if(r>this.m_maxLength){let t=Math.ceil(r/this.m_maxLength);t>we()&&(t=we());let i=1/t,o,s;l.compare(e)<0?(a.setStartXY(l),a.setEndXY(e),o=0,s=1):(a.setStartXY(e),a.setEndXY(l),o=t-2,s=-1);let c;for(let e=0,r=t-1;e<r;e++,o+=s){this.progress_(),c=i*(o+1);let e=new P;a.queryCoord2D(c,e),n.lineTo(e),this.m_bSetDensifyFlag&&n.setAttributeNoCurves(10,n.getPointCount()-1,0,1)}}else this.progress_();t.lineTo(e),l.assign(e)}if(o){let e=P.distance(l,c);if(e>this.m_maxLength){let t=c,r=Math.ceil(e/this.m_maxLength);r>we()&&(r=we());let i=1/r,o,s;l.compare(t)<0?(a.setStartXY(l),a.setEndXY(t),o=0,s=1):(a.setStartXY(t),a.setEndXY(l),o=r-2,s=-1);let u=new P(0,0),d;for(let e=0,t=r-1;e<t;e++,o+=s)this.progress_(),d=i*(o+1),a.queryCoord2D(d,u),n.lineTo(u),this.m_bSetDensifyFlag&&n.setAttributeNoCurves(10,n.getPointCount()-1,0,1)}n.closePathWithLine()}}return t}densifySegmentByLength(e,t,i,a,o,c){r(e.getGeometryType()!==s.enumBezier);let l=e.getStartXY().compare(e.getEndXY());l===0&&t<1&&(e.getGeometryType()===s.enumEllipticArc?l=e.getSweepAngle()<0?1:-1:n(`densify segment by length`));let u=0;if(a&&(i?(e.queryStart(this.m_dummyPoint),i.startPathPoint(this.m_dummyPoint)):c.push(0),++u),t*this.m_maxSegmentsPerCurve<1&&(t=1/this.m_maxSegmentsPerCurve),t<1){this.m_segmentBuffer||=new $;let n=Math.ceil(1/t);n>we()&&(n=we()),t=1/n,this.m_segmentBuffer.create(e.getGeometryType());let r=e,a,o;l<0?(a=0,o=1):(e.copyTo(this.m_segmentBuffer.get()),this.m_segmentBuffer.get().reverse(),a=n-2,o=-1,r=this.m_segmentBuffer.get());let s,d=n-1;for(let e=0;e<d;e++,a+=o)s=t*(a+1),i?(r.queryCoord(s,this.m_dummyPoint),i.lineToPoint(this.m_dummyPoint),this.m_bSetDensifyFlag&&s!==1&&s!==0&&i.setAttribute(10,i.getPointCount()-1,0,1)):c.push(l>0?1-s:s),this.progress_();s=1,u+=d}(!o||o&&a&&u<2)&&(i?(e.queryEnd(this.m_dummyPoint),i.lineToPoint(this.m_dummyPoint)):c.push(1))}densifyCubicBezier(e,t,n,r,i){let a=new ls,o=e,s=e.calculateUpperLength2D(),c=e.getStartXY().compare(e.getEndXY());if(c===0&&s>0){let t=H(P,4);e.queryControlPoints(t),c=t[1].compare(t[2]),c===0&&(c=t[1].compare(t[0]))}c>0&&(e.copyTo(a),a.reverse(),o=a);let l=0;n&&(t?(e.queryStart(this.m_dummyPoint),t.startPathPoint(this.m_dummyPoint)):i.push(0),++l);let u=[],d=[],f=Math.trunc(Math.log2(this.m_maxSegmentsPerCurve)),p=!0,m=0;if(c>0)for(u.push([o.getStartXY(),o.getControlPoint1(),o.getControlPoint2(),o.getEndXY(),new P(0,1)]),d.push(0);u.length;){this.progress_();let e=u.at(-1),a=d.at(-1),s=e[4].x,c=e[4].y;if(a<f&&this.bezierNeedsSplit(e)){p&&=(m=o.findMinDeriv(),!1);let t=(s+c)*.5;Math.abs(m-t)<(c-s)*.4&&(t=m);let n=(t-s)/(c-s),r=e[0].mul(1-n).add(e[1].mul(n)),i=e[1].mul(1-n).add(e[2].mul(n)),l=e[2].mul(1-n).add(e[3].mul(n)),f=r.mul(1-n).add(i.mul(n)),h=i.mul(1-n).add(l.mul(n)),g=f.mul(1-n).add(h.mul(n)),_=e[3];e[1]=r,e[2]=f,e[3]=g,e[4].setCoords(s,t);let v=[g,h,l,_,new P(t,c)];u.push(v),d[d.length-1]=a+1,d.push(a+1);continue}u.pop(),d.pop(),(u.length>0||!r||r&&n&&l<2)&&(t?(o.queryCoord(s,this.m_dummyPoint),t.lineToPoint(this.m_dummyPoint),this.m_bSetDensifyFlag&&s!==1&&s!==0&&t.setAttribute(10,t.getPointCount()-1,0,1)):i.push(1-s),++l)}else for(u.push([o.getStartXY(),o.getControlPoint1(),o.getControlPoint2(),o.getEndXY(),new P(0,1)]),d.push(0);u.length;){this.progress_();let e=u.at(-1),a=d.at(-1),s=e[4].x,c=e[4].y;if(a<f&&this.bezierNeedsSplit(e)){p&&=(m=o.findMinDeriv(),!1);let t=(s+c)*.5;Math.abs(m-t)<(c-s)*.4&&(t=m);let n=(t-s)/(c-s),r=e[0].mul(1-n).add(e[1].mul(n)),i=e[1].mul(1-n).add(e[2].mul(n)),l=e[2].mul(1-n).add(e[3].mul(n)),f=r.mul(1-n).add(i.mul(n)),h=i.mul(1-n).add(l.mul(n)),g=f.mul(1-n).add(h.mul(n)),_=e[0];e[0]=g,e[1]=h,e[2]=l,e[4].setCoords(t,c);let v=[_,r,f,g,new P(s,t)];u.push(v),d[d.length-1]=a+1,d.push(a+1);continue}u.pop(),d.pop(),(u.length>0||!r||r&&n&&l<2)&&(t?(o.queryCoord(c,this.m_dummyPoint),t.lineToPoint(this.m_dummyPoint),this.m_bSetDensifyFlag&&c!==1&&c!==0&&t.setAttribute(10,t.getPointCount()-1,0,1)):i.push(c),++l)}}densifyRationalBezier2(e,t,n,r,i){let a=new Mr,o=e,s=e.calculateUpperLength2D(),c=e.getStartXY().compare(e.getEndXY());c===0&&s>0&&(c=0),c>0&&(e.copyTo(a),a.reverse(),o=a);let l=0;n&&(t?(e.queryStart(this.m_dummyPoint),t.startPathPoint(this.m_dummyPoint)):i.push(0),++l);let u=Math.trunc(Math.log2(this.m_maxSegmentsPerCurve)),d=new Mr,f=[],p=[];for(f.push(new R(0,1)),p.push(0);f.length;){this.progress_();let e=f.at(-1).clone(),a=p.at(-1);if(a<u&&this.rationalBezier2NeedsSplit(o,d,e.vmin,e.vmax)){let t=e.getCenter();c>0?(f.at(-1).vmax=t,f.push(new R(t,e.vmax))):(f.at(-1).vmin=t,f.push(new R(e.vmin,t))),p[p.length-1]=a+1,p.push(a+1);continue}if(f.pop(),p.pop(),f.length>0||!r||r&&n&&l<2){let n=c>0?e.vmin:e.vmax;t?(o.queryCoord(n,this.m_dummyPoint),t.lineToPoint(this.m_dummyPoint),this.m_bSetDensifyFlag&&n!==1&&n!==0&&t.setAttribute(10,t.getPointCount()-1,0,1)):i.push(c>0?1-n:n),++l}}}densifyBezier2(e,t,n,r,i){let a=new Pr,o=e,s=e.calculateUpperLength2D(),c=e.getStartXY().compare(e.getEndXY());c===0&&s>0&&(c=0),c>0&&(e.copyTo(a),a.reverse(),o=a);let l=0;n&&(t?(e.queryStart(this.m_dummyPoint),t.startPathPoint(this.m_dummyPoint)):i.push(0),++l);let u=Math.ceil(Math.log2(this.m_maxSegmentsPerCurve)),d=new Pr,f=[],p=[];for(f.push(new R(0,1)),p.push(0);f.length;){this.progress_();let e=f.at(-1).clone(),a=p.at(-1);if(a<u&&this.bezier2NeedsSplit(o,d,e.vmin,e.vmax)){let t=e.getCenter();c>0?(f.at(-1).vmax=t,f.push(new R(t,e.vmax))):(f.at(-1).vmin=t,f.push(new R(e.vmin,t))),p[p.length-1]=a+1,p.push(a+1);continue}if(f.pop(),p.pop(),f.length>0||!r||r&&n&&l<2){let n=c>0?e.vmin:e.vmax;t?(o.queryCoord(n,this.m_dummyPoint),t.lineToPoint(this.m_dummyPoint),this.m_bSetDensifyFlag&&n!==1&&n!==0&&t.setAttribute(10,t.getPointCount()-1,0,1)):i.push(c>0?1-n:n),++l}}}densifyEllipticArc(e,t,n,r,i){let a=new zc,o=e,s=e.calculateUpperLength2D(),c=e.getStartXY().compare(e.getEndXY());c===0&&s>0&&(c=+!e.isClockwise()),c>0&&(e.copyTo(a),a.reverse(),o=a);let l=0;n&&(t?(e.queryStart(this.m_dummyPoint),t.startPathPoint(this.m_dummyPoint)):i.push(0),++l);let u=Math.trunc(Math.log2(this.m_maxSegmentsPerCurve)),d=new zc,f=[],p=[];for(f.push(new R(0,1)),p.push(0);f.length;){this.progress_();let e=f.at(-1).clone(),a=p.at(-1);if(a<u&&this.ellipticArcNeedsSplit(o,d,e.vmin,e.vmax)){let t=e.getCenter();c>0?(f.at(-1).vmax=t,f.push(new R(t,e.vmax))):(f.at(-1).vmin=t,f.push(new R(e.vmin,t))),p[p.length-1]=a+1,p.push(a+1);continue}if(f.pop(),p.pop(),f.length>0||!r||r&&n&&l<2){let n=c>0?e.vmin:e.vmax;t?(o.queryCoord(n,this.m_dummyPoint),t.lineToPoint(this.m_dummyPoint),this.m_bSetDensifyFlag&&n!==1&&n!==0&&t.setAttribute(10,t.getPointCount()-1,0,1)):i.push(c>0?1-n:n),++l}}}calculateLengthSubdivisionStep(e,t){let r=e.calculateUpperLength2D();if(!e.isCurve())return r?t/r:1;if(e.getGeometryType()===s.enumEllipticArc){let n=e;if(n.isCircular()||n.isDegenerate(0)||n.isDegenerateToLine()){let e=t/r;return e<this.m_minStep&&(e=this.m_minStep),e}return t/r*n.getSemiAxes().y/n.getSemiAxes().x}e.getGeometryType()===s.enumBezier&&n(``),n(``)}calculateDeviationSubdivisionStep(e,t){if(!e.isCurve())return 1;if(e.getGeometryType()===s.enumEllipticArc){let n=e;if(n.isDegenerate(0)||n.isDegenerateToLine())return 1;{let r=n.getSemiMajorAxis(),i=1-t/r,a=Math.PI/2;if(i>0){let e=4*Math.sqrt(t/r*.5);a=Math.min(Math.PI/2,Math.abs(e))}a=Math.max(a,2*Math.PI/this.m_maxSegmentsPerCurve);let o=a*r;return this.calculateLengthSubdivisionStep(e,o)}}n(``)}calculateAngularSubdivisionStep(e,t){if(!e.isCurve())return 1;if(e.getGeometryType()===s.enumEllipticArc){let n=e;return n.isDegenerate(0)||n.isDegenerateToLine()?1:this.calculateLengthSubdivisionStep(e,t*n.getSemiMinorAxis())}n(``)}rationalBezier2NeedsSplit(e,t,n,r){e.cutBezierIgnoreAttributes(n,r,t);let i=!1;if(this.m_maxLength>0&&t.calculateUpperLength2D()>this.m_maxLength)return i=!0,!0;let a=H(P,3);t.queryControlPoints(a);let o=[0,0,0];return t.queryWeights(o),!i&&this.m_maxDeviation>0&&(i=!Xc.checkRationalBezier2MaxDeviation(a,o,this.m_maxDeviation)),!i&&this.m_maxAngle>0&&(i=!Xc.checkRationalBezier2MaxAngle(a,o,this.m_cosMaxAngle)),i}bezier2NeedsSplit(e,t,n,r){e.cutBezierIgnoreAttributes(n,r,t);let i=!1;if(this.m_maxLength>0&&t.calculateUpperLength2D()>this.m_maxLength)return i=!0,!0;let a=H(P,3);return t.queryControlPoints(a),!i&&this.m_maxDeviation>0&&(i=!Xc.checkBezier2MaxDeviation(a,this.m_maxDeviation)),!i&&this.m_maxAngle>0&&(i=!Xc.checkBezier2MaxAngle(a,this.m_cosMaxAngle)),i}ellipticArcNeedsSplit(e,t,n,r){e.cutArcIgnoreAttributes(n,r,t);let i=!1;return this.m_maxLength>0&&t.calculateUpperLength2D()>this.m_maxLength?(i=!0,!0):(!i&&this.m_maxDeviation>0&&(i=!Xc.checkEllipticArcMaxDeviation(t,this.m_maxDeviation)),!i&&this.m_maxAngle>0&&(i=!Xc.checkEllipticArcMaxAngle(t,this.m_cosMaxAngle)),i)}bezierNeedsSplit(e){let t=!1;return this.m_maxLength>0&&P.distance(e[0],e[1])+P.distance(e[1],e[2])+P.distance(e[2],e[3])>this.m_maxLength?(t=!0,!0):(!t&&this.m_maxDeviation>0&&(t=!Xc.checkBezierMaxDeviation(e,this.m_maxDeviation)),!t&&this.m_maxAngle>0&&(t=!Xc.checkBezierMaxAngle(e,this.m_cosMaxAngle)),t)}progress_(){}static checkBezierMaxDeviation(e,t){let n=e[3].sub(e[0]);if(n.sqrLength()>0){let r=n.clone();r.leftPerpendicularThis(),r.normalize();let i=r.dotProduct(e[0].sub(e[1])),a=r.dotProduct(e[0].sub(e[2]));if(Math.max(Math.abs(i),Math.abs(a))<=t){let t=new P;X(e,.5,t,!1);let r=t.sub(e[0]).dotProduct(n);return r>=0&&r<=n.sqrLength()}return!1}return Math.max(e[0].sub(e[1]).sqrLength(),e[0].sub(e[2]).sqrLength())<=t*t}static checkBezierMaxAngle(e,t){if(e[0].equals(e[3]))return!!(e[0].equals(e[1])&&e[1].equals(e[2]));let n=e[3].sub(e[0]);n.normalize();{let r=e[1].sub(e[0]),i=r.dotProduct(n);if(i<0||r.length()*t>i)return!1}{let r=e[2].sub(e[0]),i=r.dotProduct(n);if(i<0||r.length()*t>i)return!1}{let r=e[2].sub(e[1]),i=r.dotProduct(n);if(i<0||r.length()*t>i)return!1}return!0}static checkRationalBezier2MaxDeviation(e,t,n){if(t[1]===0)return!1;let r=e[2].sub(e[0]);if(r.sqrLength()>0){let t=r.clone();t.leftPerpendicularThis(),t.normalize();let i=t.dotProduct(e[0].sub(e[1]));if(Math.abs(i)<=n){let t=e[1].sub(e[0]).dotProduct(r);return t>=0&&t<=r.sqrLength()}return!1}return e[0].sub(e[1]).sqrLength()<=n*n}static checkRationalBezier2MaxAngle(e,t,n){if(t[1]===0)return!1;if(e[0].equals(e[2]))return!!e[0].equals(e[1]);let r=e[2].sub(e[0]);r.normalize();{let t=e[1].sub(e[0]),i=t.dotProduct(r);if(i<0||t.length()*n>i)return!1}return!0}static checkBezier2MaxDeviation(e,t){let n=e[2].sub(e[0]);if(n.sqrLength()>0){let r=n.clone();r.leftPerpendicularThis(),r.normalize();let i=r.dotProduct(e[0].sub(e[1]));if(Math.abs(i)<=t){let t=e[1].sub(e[0]).dotProduct(n);return t>=0&&t<=n.sqrLength()}return!1}return e[0].sub(e[1]).sqrLength()<=t*t}static checkBezier2MaxAngle(e,t){if(e[0].equals(e[2]))return!!e[0].equals(e[1]);let n=e[2].sub(e[0]);n.normalize();{let r=e[1].sub(e[0]),i=r.dotProduct(n);if(i<0||r.length()*t>i)return!1}return!0}static checkEllipticArcMaxDeviation(e,t){if(Math.abs(e.getSweepAngle())<Math.PI){let n=e.getEndXY().sub(e.getStartXY()),r=[0,0];if(iu(e,n,r)===1){let n=e.getCoord2D(r[0]),i=P.getClosestCoordinate(e.getStartXY(),e.getEndXY(),n),a=new P;return Ue(e.getStartXY(),e.getEndXY(),i,a),P.distance(n,a)<=t}}let n=e.getCoord2D(.5),r=new P;return Ue(e.getEndXY(),e.getStartXY(),.5,r),P.distance(n,r)<=t}static checkEllipticArcMaxAngle(e,t){let n=e.getTangent(0),r=e.getTangent(1),i=n.dotProduct(r);return!(i<0||n.length()*r.length()*t>i)}static checkTypeForReplace(e,t){return e.getGeometryType()===t?t!==s.enumEllipticArc||e.isCircular():!1}}function Zc(e,t,n){let r=n.length;if(t<=0||r<=2)return r;let i=0,a=L(r-1,NaN);for(let t=1,o=r;t<o;t++){let r=e.tToLength(n[t]);a[t-1]=r-i,i=r}for(;a.length>1;){let e=a.findIndex(e=>e<=t*2);if(e===-1)break;let r=e+1,i=e+1;if(e>0){let t=e-1;(i===a.length||a[t]>a[i])&&(i=t,r--)}a[i]+=a[e],a.splice(e,1),n.splice(r,1)}return n.length}function Qc(e,t,n,r,i){let a=[],o=[],s=qc(t,n,0,r,!1,a,o),c=new ls,l=i,u=t.getDescription();c.assignVertexDescription(u);let d=u.getAttributeCount()>1,f=new N,p=new Q;for(let n=0,r=0;n<s;n++){if(a[r+1].isNAN()){if(d){let e=o[n];t.queryCoord(e,f),p.setStart(f),e=o[n+1],t.queryCoord(e,f),p.setEnd(f)}p.setStartXY(a[r]),p.setEndXY(a[r+3]),e.addSegment(p,l)}else{if(d){let e=o[n];t.queryCoord(e,f),c.setStart(f),e=o[n+1],t.queryCoord(e,f),c.setEnd(f)}c.setStartXY(a[r]),c.setControlPoint1(a[r+1]),c.setControlPoint2(a[r+2]),c.setEndXY(a[r+3]),e.addSegment(c,l)}r+=3,l=!1}}function $c(e,t,n,r,i){let a=[],o=[],s=Jc(t,n,0,r,!1,a,o),c=new Pr,l=i,u=t.getDescription();c.assignVertexDescription(u);let d=u.getAttributeCount()>1,f=new N,p=new Q;for(let n=0,r=0;n<s;n++){if(a[r+1].isNAN()){if(d){let e=o[n];t.queryCoord(e,f),p.setStart(f),e=o[n+1],t.queryCoord(e,f),p.setEnd(f)}p.setStartXY(a[r]),p.setEndXY(a[r+2]),e.addSegment(p,l)}else{if(d){let e=o[n];t.queryCoord(e,f),c.setStart(f),e=o[n+1],t.queryCoord(e,f),c.setEnd(f)}c.setStartXY(a[r]),c.setControlPoint1(a[r+1]),c.setEndXY(a[r+2]),e.addSegment(c,l)}r+=2,l=!1}}function el(e,n,i,a,o){r(e===s.enumBezier||e===s.enumEllipticArc||e===s.enumBezier2);let c=n.createInstance();c.getGeometryType()===s.enumPolygon&&c.setFillRule(n.getFillRule());let l=n.querySegmentIterator();for(let o=0,u=n.getPathCount();o<u;++o){if(!n.hasNonLinearSegmentsPath(o)){c.addPath(n,o,!0);continue}let u=n.getPathStart(o),d=!0,f=0;for(l.resetToPath(o),r(l.nextPath());l.hasNextSegment();){let r=l.nextCurve();if(r){let p=l.getStartPointIndex()-u,m=p-f;m>0&&(c.addSegmentsFromPath(n,o,f,m,d),d=!1),f=p+1,e===s.enumBezier?Qc(c,r,i,a,d):e===s.enumBezier2?$c(c,r,i,a,d):t(``),d=!1}else break}let p=n.getSegmentCountPath(o);p-f!==0&&c.addSegmentsFromPath(n,o,f,p-f,d)}return c}function tl(e,t,n,r,i,a,o,s){let c=t.clone();c.dropAllAttributes();let l=(e,t,n,r)=>(t&&(e&&t.push(r.getStartXY()),t.push(P.getNAN()),t.push(P.getNAN()),t.push(r.getEndXY())),n&&(e&&n.push(0),n.push(1)),1);if(c.isDegenerateToLine()||c.isDegenerate(0))return l(e,a,o,t);let u=c.getStartXY(),d=c.getEndXY(),f=c.getSemiAxes(),p=new xt;if(c.isCircular())p.setIdentity();else{let e=c.getAxisXRotation();p.setScaleCoords(1,c.getMinorMajorRatio()),p.rotateAngle(e)}let m=c.getCenter();p.shift(m);let h=p.clone();h.invertThis(),c.applyTransformation(h);let g=c.getSweepAngle();if(g===0)return l(e,a,o,t);let _=G.constructEmpty();_.setCoords({center:m,width:2*f.x,height:2*f.x});let v=_.calculateToleranceFromEnvelope()*.05,y=4*(Math.max(n/f.x,v/f.x)/.0741)**(1/6);y=Math.min(y,Math.PI/2);let b=Fc(c.getStartAngle()),x=g>0?Math.floor(b/y):Math.ceil(b/y);x*=y;let S=g>0?y:-y;x+S===b&&(x+=S);let C=4/3*Math.tan(Math.abs(y)/4);g>0&&(C=-C),o&&e&&o.push(0);let w=y/Math.abs(g),T=(x-b)/g,E=u.clone(),D=new P;c.queryCoord2D(0,D);let O=D.clone(),k=1-w*.01,ee=0,A=0;for(;T<1;){T+=w;let n;if(A>0&&T<k)n=C;else{T>=k&&(T=1);let e=(T-A)*g;n=4/3*Math.tan(Math.abs(e)/4),g>0&&(n=-n)}c.queryCoord2D(T,D);let s=new P;p.queryTransform(D,s);let l=t.getClosestCoordinate(s,!1);if(t.queryCoord2D(l,s),T!==1&&(P.distance(E,s)<=2*r||P.distance(s,d)<=2*r))continue;E.setCoordsPoint2D(s);let f=H(P,4);f[0].assign(O),f[3].assign(D),f[1].rightPerpendicularOther(O),f[1].scaleAddThis(n,O),f[2].leftPerpendicularOther(D),f[2].scaleAddThis(n,D),p.transformPoints2D(f,3,f),f[3].assign(s),A===0&&f[0].setCoordsPoint2D(u),T===1&&f[3].setCoordsPoint2D(d),i&&yo(f);let m=!0;for(let e=1;e<4;e++)if(!f[e].isEqualPoint2D(f[0])){m=!1;break}m||(o&&o.push(l),a&&(A===0&&e&&a.push(f[0].clone()),a.push(f[1].clone()),a.push(f[2].clone()),a.push(f[3].clone())),ee++),A=T,O.setCoordsPoint2D(D)}return ee}function nl(e,t,n,r,i,a,o,s){t.clone().dropAllAttributes();let c=new G;t.queryLooseEnvelope(c);let l=c.calculateToleranceFromEnvelope()*.05,u=Math.max(n,l);o&&e&&o.push(0);let d=0,f=H(P,3);t.queryControlPoints(f);let p=[0,0,0];t.queryWeights(p);let m=[],h=L(9,NaN),g=t.getMonotonicPartParams(h.length,h);h.length=g,g=Zc(t,r,h);let _=0,v=e;for(let e=1;e<g;e++){let t=h[e];for(m.push(_),m.push(t);m.length>1;){let e=m.at(-1);m.pop();let t=m.at(-1),n=H(P,3);tc(f,p,e,t,n,[0,0,0]);let r=H(P,3),i=ra(n,p,r),s=m.length>16;u>=i||s?(o.push(t),a&&(v&&=(a.push(r[0]),!1),a.push(r[1]),a.push(r[2])),d++):(m.push((e+t)*.5),m.push(e))}_=t}return d}function rl(e,t,n,r,i,a,o,s){t.clone().dropAllAttributes();let c=new G;t.queryLooseEnvelope(c);let l=c.calculateToleranceFromEnvelope()*.05,u=Math.max(n,l);o&&e&&o.push(0);let d=0,f=H(P,3);t.queryControlPoints(f);let p=[0,0,0];t.queryWeights(p);let m=[],h=L(9,NaN),g=0;i?(g=t.getMonotonicPartParams(h.length,h),h.length=g,g=Zc(t,r,h)):(h.length=2,g=2,h[0]=0,h[1]=1);let _=0,v=e;for(let e=1;e<g;e++){let t=h[e];for(m.length=0,m.push(t),m.push(_);m.length>1;){let e=m.at(-1);m.pop();let t=m.at(-1),n=H(P,3),r=[0,0,0];tc(f,p,e,t,n,r);let i=H(P,4),s=nc(n,r,i),c=m.length>16;u>=s||c?(o.push(t),a&&(v&&=(a.push(i[0]),!1),a.push(i[1]),a.push(i[2]),a.push(i[3])),d++):(m.push((e+t)*.5),m.push(e))}_=t}return d}function il(e,t,n,r,i,a,o,s){let c=t.clone();if(c.dropAllAttributes(),c.isDegenerateToLine()||c.getSweepAngle()===0)return a&&(e&&a.push(t.getStartXY()),a.push(P.getNAN()),a.push(t.getEndXY())),o&&(e&&o.push(0),o.push(1)),1;let l=c.getStartXY(),u=c.getEndXY(),d=c.getSemiAxes(),f=new xt;if(c.isCircular())f.setIdentity();else{let e=c.getAxisXRotation();f.setScaleCoords(1,c.getMinorMajorRatio()),f.rotateAngle(e)}let p=c.getCenter();f.shift(p);let m=f.clone();m.invertThis(),c.applyTransformation(m);let h=G.constructEmpty();h.setCoords({center:p,width:2*d.x,height:2*d.x});let g=h.calculateToleranceFromEnvelope()*.05,_=Math.max(n/d.x,g/d.x),v=Math.sqrt(2*_+_*_),y=Math.sqrt(2*v*(1+_-v))*2;y=Math.min(y,Math.PI/2);let b=c.getSweepAngle(),x=Math.ceil(Math.abs(b)/y),S=Math.max(x,1);y=b/S;let C=1/S,w=Math.tan(Math.abs(y)/2);b>0&&(w=-w),o&&e&&o.push(0);let T=new P;c.queryCoord2D(0,T);for(let t=0;t<S;t++){let n=T.clone(),r=(t+1)*C;if(o&&o.push(r),!a)continue;c.queryCoord2D(r,T);let i=H(P,3);i[0].assign(n),i[2].assign(T),i[1].rightPerpendicularOther(i[0]),i[1].mulThis(w),i[1].addThis(i[0]),f.transformPoints2D(i,3,i),t===0&&i[0].setCoordsPoint2D(l),t===S-1&&i[2].setCoordsPoint2D(u),t===0&&e&&a.push(i[0]),a.push(i[1]),a.push(i[2])}return S}function al(e,t,n,r,i,a,o,s){t.clone().dropAllAttributes();let c=new G;t.queryLooseEnvelope(c);let l=c.calculateToleranceFromEnvelope()*.05,u=Math.max(n,l);o&&e&&o.push(0);let d=0,f=H(P,4);t.queryControlPoints(f);let p=[],m=L(9,NaN),h=t.getMonotonicPartParams(m.length,m);m.length=h,h=Zc(t,r,m);let g=0,_=e;for(let e=1;e<h;e++){let t=m[e];for(p.push(g),p.push(t);p.length>1;){let e=p.at(-1);p.pop();let t=p.at(-1),n=H(P,4);Co(f,e,t,n);let r=H(P,3),i=na(n,r),s=p.length>16;u>=i||s?(o.push(t),a&&(_&&=(a.push(r[0]),!1),a.push(r[1]),a.push(r[2])),d++):(p.push((e+t)*.5),p.push(e))}g=t}return d}function ol(){return{e2:0,completeE:0}}class sl{m_arc;m_sqrChordLength;constructor(e,t){this.m_arc=e,this.m_sqrChordLength=t}getMaxDerivative(){return 1}getValue(e,t){return e===0?P.sqrDistance(this.m_arc.getCoord2D(t),this.m_arc.getCoord2D(1-t))-this.m_sqrChordLength:0}getError(e){return 0}}function cl(e,t,n){if(Z(e)){An(new Q({start:e.getStartXY(),end:e.getEndXY()}),t,n);return}if(t.value()===0)n.set(e.getStartXY());else if(t.value()===1)n.set(e.getEndXY());else{let r=new V;vl(e,t,r);let i=new V,a=new V;V.st_cosAndSin(r,i,a);let o=K.constructCoordsE(new V(e.m_semiMajorAxis).mulThisE(i),new V(e.m_semiMajorAxis).mulThis(e.m_minorMajorRatio).mulThisE(a)),s=new V(e.m_rotation);V.st_cosAndSin(s,i,a),o.rotateDirect(i,a),o.addThisE(K.constructPoint2D(e.m_center)),n.setE(o)}}function ll(e,t){return e.convertToCanonic(t)}function ul(e,t){let n=new R(e.getStartAngle(),e.getEndAngle());n.normalize();let r=et(),i=pt(t,r);if(i<n.vmin){let e=i+r;for(;e<n.vmin;)e+=r;return n.containsCoordinate(e)?e:n.vmin-i<e-n.vmax?i:e}if(i>n.vmax){let e=i-r;for(;e>n.vmax;)e-=r;return n.containsCoordinate(e)||n.vmin-e<i-n.vmax?e:i}return i}function dl(e,t,n,r){let i=e.m_startAngle,a=e.m_sweepAngle,o=1e-12;for(;i>W();)i-=2*W();for(;i<=-W();)i+=2*W();if(!Number.isNaN(t)){for(;t>W();)t-=2*W();for(;t<=-W();)t+=2*W();!n&&t>i&&(t-=2*W()),n&&t<i&&(t+=2*W()),a=t-i,Math.abs(a)<o&&!r&&(a=n?2*W():-2*W()),Math.abs(a)>2*W()-o&&r&&(a=0)}Math.abs(a)>2*W()-o&&(a=a>=0?2*W():-2*W(),e.setEndXY(e.getStartXY())),Math.abs(a)<o&&(a=0,e.setEndXY(e.getStartXY())),r=Math.abs(a)<=W(),a&&(n=a>0),e.m_startAngle=fl(i),e.m_sweepAngle=a,zl(e,!r),Ll(e,n)}function fl(e){let t=e,n=!1;return t<=-W()?(t+=et(),n=!0):t>W()&&(t-=et(),n=!0),t<=-W()?(t=pt(t,et()),t<=-W()&&(t+=et()),n=!0):t>W()&&(t=pt(t,et()),t>W()&&(t-=et()),n=!0),n&&(t>W()||t<=-W())&&(t=W()),t}function pl(e,t,n){let r=n,i=r.getSemiAxes(),a=new P(i.x*Math.cos(e[0]),i.y*Math.sin(e[0]));return a=r.convertFromCanonic(a),P.sqrDistance(a,r.getStartXY())}function ml(e,t,n){let r=n,i=r.getSemiAxes(),a=e[0]+r.getStartAngle(),o=new P(i.x*Math.cos(a),i.y*Math.sin(a));return o=r.convertFromCanonic(o),P.sqrDistance(o,r.getEndXY())}function hl(e){if(e.m_center.isNAN()){e.m_startAngle=0,e.m_sweepAngle=0;return}let t=e.getStartXY(),n=e.getEndXY(),r=t.equals(n),i=Bl(e),a=Rl(e),o=e.projectionBehavior();if(r){let n=e.convertToCanonic(t),r=new P(e.m_semiMajorAxis,e.m_semiMajorAxis*e.m_minorMajorRatio);n.x/=r.x,n.y/=r.y,e.m_startAngle=fl(Math.atan2(n.y,n.x)),e.m_sweepAngle=i?a?et():-et():0}else{let r=e.convertToCanonic(t),s=new P(e.m_semiMajorAxis,e.m_semiMajorAxis*e.m_minorMajorRatio);r.x/=s.x,r.y/=s.y;let c=e.convertToCanonic(n);c.x/=s.x,c.y/=s.y,e.m_startAngle=Math.atan2(r.y,r.x),e.m_sweepAngle=P.calculateAngle(r,c),a?e.m_sweepAngle<0&&(e.m_sweepAngle+=et()):e.m_sweepAngle>0&&(e.m_sweepAngle-=et()),e.m_startAngle=fl(e.m_startAngle);let l=pl([e.m_startAngle],1,e);if(l=Math.sqrt(l),l>.25*$t(e)){let t=e.m_startAngle-1e-4,n=e.m_startAngle+1e-4,r=[0];fr(pl,e,1,[e.m_startAngle],[t],[n],1e-14,r),e.m_startAngle=fl(r[0])}if(l=ml([e.m_sweepAngle],1,e),l=Math.sqrt(l),l>.25*$t(e)){let t=e.m_sweepAngle-1e-4,n=e.m_sweepAngle+1e-4,r=[0];fr(ml,e,1,[e.m_sweepAngle],[t],[n],1e-14,r),e.m_sweepAngle=r[0]}let u=Math.abs(e.m_sweepAngle)>W();if(zl(e,u),i!==u&&!i&&Math.abs(e.m_sweepAngle)>W()*1.5){Ol(e,t,n,o);return}if(e.m_sweepAngle===0||a!==e.m_sweepAngle>0){Ol(e,t,n,o);return}}}function gl(e,t){return(ul(e,t)-e.getStartAngle())/e.getSweepAngle()}function _l(e,t){return e.m_startAngle+t*e.m_sweepAngle}function vl(e,t,n){n.assign(new V(e.m_startAngle).addE(t.mulE(new V(e.m_sweepAngle))))}function yl(e,t){let n=new V(e.m_cosr).sqrThis(),r=new V(e.m_sinr).sqrThis(),i=new V(e.m_minorMajorRatio),a=new V(1/e.m_minorMajorRatio),o=i.mulE(n).addThisE(a.mulE(r)),s=i.subE(a).mulThis(2*e.m_cosr*e.m_sinr),c=i.mulE(r).addThisE(a.mulE(n));t[0]=o,t[1]=s,t[2]=c,t[3]=new V(-e.m_semiMajorAxis).mulThis(e.m_semiMajorAxis).mulThis(e.m_minorMajorRatio)}function bl(e,t){let n=new kt;n.a11.setE(e[0]),n.a12=V.st_mulByPower2(e[1],.5),n.a21.setE(n.a12),n.a22.setE(e[2]);let r=[P.getNAN(),P.getNAN()],i=[new V,new V];n.eigenSymmetric(i,r);let a=e[3].clone();return a.negateThis(),a.invThis(),i[0].mulThisE(a),i[1].mulThisE(a),i[0].sqrtThis().invThis(),i[1].sqrtThis().invThis(),t.x=i[0].toDouble(),t.y=i[1].toDouble(),Math.atan2(r[0].y,r[0].x)}function xl(e,t,n){if(Z(e))return(n-t)*P.distance(e.getStartXY(),e.getEndXY());if(e.m_minorMajorRatio===1)return Math.abs(e.getSweepAngle()*(t-n))*e.m_semiMajorAxis;let r=kl(e,t);return kl(e,n)-r}function Sl(e){return e.m_cachedValues}function Cl(e){if(e.m_cachedValues)return e.m_cachedValues;let t=ol();return t.e2=El(e),t.completeE=ct(t.e2),e.m_cachedValues=t,t}function wl(e,t,n,r){if(!(t.isEqual(e.m_XStart,e.m_YStart)&&n.isEqual(e.m_XEnd,e.m_YEnd))){if(Z(e)){e.m_XStart=t.x,e.m_YStart=t.y,e.m_XEnd=n.x,e.m_YEnd=n.y,Zl(e),e.afterCompletedModification();return}if(r&&Math.abs(e.getSweepAngle())<=He()*1.01){let r=H(P,3),i=Gl(e,r);if(Xs(r)){if(r[0].assign(t),r[2].assign(n),Qs(r),e.projectionBehavior()!==0)Kl(r,i*i,null,!1,e);else{let t=P.sqrDistance(r[1],r[0]),n=P.sqrDistance(r[1],r[2]),i=0,a=2;t<n&&(a=z(i,i=a));let o=r[a].sub(r[i]),s=o.length();o.divThis(s);let c=r[1].sub(r[i]),l=c.length(),u=c.dotProduct(o)/l,d=c.crossProduct(o)/l,f=new P;Ue(r[i],r[a],.5,f);let p=.5*s/d*xe(1-u,0,1),m=r[1].side(r[i],r[a]),h=o.clone();m?h.leftPerpendicularThis():h.rightPerpendicularThis();let g=f.sub(h.mul(p));e.constructCircularArcThreePoint(r[0],r[2],g)}return}}e.projectionBehavior()===0?su(e,t,n):cu(e,t,n)}}function Tl(e,t,n){let r=e.projectionBehavior()===0;if(n<=2){Ol(e,t[0],t[n-1],+!r);return}if(r){e.constructCircularArcThreePoint(t[0],t[n-1],t[Math.trunc(n/2)]);let r=new P;e.queryCoord2D(.5,r),e.m_interior.setCoordsPoint2D(r);return}let i=e.getSemiMajorAxis(),a=e.getMinorMajorRatio(),o=e.getAxisXRotation(),s=e.getCenter(),c=[,,,,];c[0]=e.isMajor(),c[1]=!c[0],c[2]=c[0],c[3]=!c[0];let l=[,,,,];l[0]=e.isClockwise(),l[1]=l[0],l[2]=!l[0],l[3]=!l[0];let u=Math.trunc(n<5?1:(n+4)/5),d=H(zc,4),f=L(4,NaN),p=0;for(let e=0;e<4;e++){d[e].constructEllipticArcEndPointsCenter(t[0],t[n-1],i,a,o,c[e],l[e],s),f[e]=0;let r=0;for(let i=u;i<n-1;i+=u){let n=d[e].getClosestCoordinate(t[i],!1);f[e]+=P.sqrDistance(d[e].getCoord2D(n),t[i]),r++}f[e]/=r,f[e]<f[p]&&(p=e)}e.assignCopy(d[p])}function El(e){return 1-Ze(e.m_minorMajorRatio)}function Dl(e,t,n,r,i,a,o,s,c){return e.m_bits=0,e.m_rotation=a,zt(e,t),Vt(e,n),e.m_cosr=Math.cos(a),e.m_sinr=Math.sin(a),zl(e,o),Ll(e,s),c===void 0?e.m_center.setNAN():e.m_center.assign(c),e.setProjectionBehavior(1),e.m_semiMajorAxis=r,e.m_minorMajorRatio=i,Wl(e,c===void 0)}function Ol(e,t,n,r){e.m_bits=0,e.m_rotation=0,zt(e,t),Vt(e,n),e.m_interior.assign(t.add(n).mul(.5)),e.m_startAngle=0,e.m_sweepAngle=0,e.m_cosr=1,e.m_sinr=0,zl(e,!1),Ll(e,!1),e.m_center.setNAN(),e.m_semiMajorAxis=1,e.m_minorMajorRatio=0,e.setProjectionBehavior(r),e.afterCompletedModification()}function Z(e){return e.m_center.isNAN()}function kl(e,t){if(t===0)return 0;let n=Cl(e),r=_l(e,t),i=He(),a=jl(e),o=nt(r+i,n.e2,n.completeE),s=e.m_semiMajorAxis*(o-a);return Math.abs(s)}function Al(e,t){if(Z(e)){let n=P.distance(e.getStartXY(),e.getEndXY());return n===0?0:t/n}if(e.m_minorMajorRatio===1){let n=Math.abs(e.getSweepAngle()*e.m_semiMajorAxis);return n===0?0:t/n}if(t===0)return 0;let n=e.getSweepAngle();if(n===0)return .5;let r=Cl(e),i=He(),a=jl(e);n<0&&(t=-t);let o=t/e.m_semiMajorAxis+a,s=rt(o,r.e2,r.completeE);return s-=i,s-=e.getStartAngle(),s/n}function jl(e){let t=Cl(e);return nt(e.getStartAngle()+He(),t.e2,t.completeE)}function Ml(e,t,n,i,a){if(t.m_TransformationType===2){r(0);return}if(r(!Hl(e)),t.isIdentity()&&(!i||i.equals(e.getStartXY())&&a.equals(e.getEndXY())))return;Fl(e);let o=P.getNAN(),s=P.getNAN();if(i===null?(o.x=e.m_XStart,o.y=e.m_YStart,t.transformInPlace(o),s.x=e.m_XEnd,s.y=e.m_YEnd,t.transformInPlace(s)):(o=i,s=a),Z(e)){e.m_XStart=o.x,e.m_YStart=o.y,e.m_XEnd=s.x,e.m_YEnd=s.y;return}let c=e.m_center.clone();if(t.transformInPlace(c),n||t.isUniformNoRotation()){let n=Rl(e);if(t.isReflective()&&(n=!n),e.projectionBehavior()===0){if(!o.equals(s)){let n=e.m_interior.clone();t.transformInPlace(n),e.constructCircularArcThreePoint(o,s,n);return}Nl(e,o,s,c,n,!1);return}let r=new P(e.m_cosr,e.m_sinr);t.transformWithoutTranslateInPlace(r);let i=Math.atan2(r.y,r.x),a=e.getSemiAxes();t.transformWithoutTranslateInPlace(a);let l=e.m_center.clone();t.transformInPlace(l),e.constructEllipticArcEndPointsCenter(o,s,a.x,a.y/a.x,i,e.isMajor(),n,l);return}{{let n=[,,,,];yl(e,n);let r=new kt;if(r.a11.setE(n[0]),r.a12.setE(n[1]),r.a12.mulThisByPower2(.5),r.a21.setE(r.a12),r.a22.setE(n[2]),!r.det().isZero()){let i=new kt;if(i.a11.set(t.xx),i.a12.set(t.xy),i.a21.set(t.yx),i.a22.set(t.yy),i.invertThis()){let a=i.clone();a.transposeThis();let l=r.clone();if(l.mulThis(i),l.mulLeftThis(a),!l.det().isZero()){let r=H(V,4);r[0].setE(l.a11),r[1].setE(l.a12),r[1].mulThisByPower2(2),r[2].setE(l.a22),r[3].setE(n[3]);let i=P.getNAN(),a=bl(r,i),u=Rl(e);t.isReflective()&&(u=!u),e.constructEllipticArcEndPointsCenter(o,s,i.x,i.y/i.x,a,e.isMajor(),u,c);return}}}}let n=[P.getNAN(),P.getNAN(),P.getNAN()];n[0].setCoords(e.getSemiMajorAxis(),0),n[0].rotateDirect(e.m_cosr,e.m_sinr),n[1].setCoords(e.getSemiMajorAxis(),e.getSemiMinorAxis()),n[1].rotateDirect(e.m_cosr,e.m_sinr),n[2].setCoords(0,e.getSemiMinorAxis()),n[2].rotateDirect(e.m_cosr,e.m_sinr);let r=e.isClockwise();r&&(n[2]=z(n[0],n[0]=n[2])),t.transformWithoutTranslateArray(n,3,n),t.isReflective()&&(r=!r);let i=new P(0,0),a=e.createInstance();Kl(n,.5,i,!1,a),e.constructEllipticArcEndPointsCenter(o,s,a.getSemiMajorAxis(),a.getMinorMajorRatio(),a.getAxisXRotation(),e.isMajor(),!r,c)}}function Nl(e,t,n,r,i,a){let o=(r.sub(t).length()+r.sub(n).length())*.5;e.m_center.assign(r),e.m_startAngle=Math.atan2(t.y-e.m_center.y,t.x-e.m_center.x),dl(e,Math.atan2(n.y-e.m_center.y,n.x-e.m_center.x),i,a);let s=e.constructEllipticArcEndPointsCenter(t,n,o,1,0,Math.abs(e.m_sweepAngle)>Math.PI,e.m_sweepAngle>0,r);return e.setProjectionBehavior(0),s}function Pl(e,t){e.m_cachedValues=t}function Fl(e){e.m_cachedValues=null}function Il(e,t){t.m_cachedValues=z(e.m_cachedValues,e.m_cachedValues=t.m_cachedValues)}function Ll(e,t){let n=+!!t;e.m_bits=e.m_bits&-2|n}function Rl(e){return!!(e.m_bits&1)}function zl(e,t){let n=+!!t;e.m_bits=e.m_bits&-3|n<<1}function Bl(e){return!!(e.m_bits&2)}function Vl(e){if(e.m_center.isNAN())return!1;let t=new K;t.setWithEps(e.getStartXY(),8),t.subThisE(new K().setWithEps(e.m_center,8));let n=new V;n.setWithEps(e.m_rotation,8);let r=new V,i=new V;V.st_cosAndSin(n,r,i),t.rotateReverse(r,i);let a=new K;a.setWithEps(e.getEndXY()),a.subThisE(K.constructPoint2D(e.m_center)),a.rotateReverse(r,i);let o=new V;o.setWithEps(e.m_semiMajorAxis,8);let s=o.clone(),c=new V;c.setWithEps(e.m_minorMajorRatio),s.mulThisE(c),t.x.divThisE(o),t.y.divThisE(s),a.x.divThisE(o),a.y.divThisE(s);let l=t.x.sqr().addThisE(t.y.sqr()).subThisE(_e),u=a.x.sqr().addThisE(a.y.sqr()).subThisE(_e);return!l.isZero()||!u.isZero()}function Hl(e){return!!(e.m_bits&8)}function Ul(e){e.m_bits&=-9}function Wl(e,t){Ul(e);let n=e.getStartXY(),i=e.getEndXY(),a=!1,o=Bl(e),s=Rl(e),c=e.projectionBehavior(),l=n.equals(i),u=e.m_minorMajorRatio===0||e.m_semiMajorAxis===0;if(Number.isNaN(e.m_minorMajorRatio)&&(e.m_semiMajorAxis===0?e.m_minorMajorRatio=1:d(`NAN minor major ratio and non-zero major axis`)),u||=t?l:e.m_center.isNAN(),u)return Ol(e,n,i,c),!0;e.m_semiMajorAxis=Math.abs(e.m_semiMajorAxis),e.m_minorMajorRatio=Math.abs(e.m_minorMajorRatio),e.m_minorMajorRatio>1&&(e.m_semiMajorAxis*=e.m_minorMajorRatio,e.m_minorMajorRatio=1/e.m_minorMajorRatio);let f=new P(e.m_semiMajorAxis,e.m_semiMajorAxis*e.m_minorMajorRatio);if(r(f.y>0&&f.x>=f.y),l){let t=e.convertToCanonic(n);r(!f.isZero()),t.x/=f.x,t.y/=f.y;let i=Math.sqrt(Ze(t.x)+Ze(t.y));if(a=i!==1,e.m_semiMajorAxis*=i,f.mulThis(i),e.m_startAngle=fl(Math.atan2(t.y,t.x)),!o)return e.m_interior.assign(n),e.m_sweepAngle=0,e.afterCompletedModification(),a;e.m_sweepAngle=s?et():-et()}else{let t=e.m_center.isNAN()||Vl(e);if(!t){let r=e.convertToCanonic(n);r.x/=f.x,r.y/=f.y;let a=new P(1,0);e.m_startAngle=P.calculateAngle(a,r);let o=e.convertToCanonic(i);o.x/=f.x,o.y/=f.y,e.m_sweepAngle=P.calculateAngle(r,o),t=!Jl(e)}if(t){a=!0;let t=n.sub(i).mulThis(.5);t.rotateReverse(e.m_cosr,e.m_sinr);let r=Ze(t.x/f.x)+Ze(t.y/f.y);r>1&&(r=Math.sqrt(r),e.m_semiMajorAxis*=r,f.mulThis(r));let c=new P(0,0);{let e=f.x*f.x,n=f.y*f.y,r=e*t.y*t.y+n*t.x*t.x,i=e*n-r;if(i>0){let e=Math.sqrt(i/r);c.setCoords(f.x*t.y/f.y,-f.y*t.x/f.x),c.mulThis(e),o===s&&c.negateThis()}}{let t=new P(c.x,c.y);t.rotateDirect(e.m_cosr,e.m_sinr),t.addThis(n.add(i).mulThis(.5)),e.m_center.assign(t)}}if(hl(e),!Jl(e))return Ol(e,n,i,c),!0}return Zl(e),e.afterCompletedModification(),a}function Gl(e,t){r(Math.abs(e.getSweepAngle())<Math.PI*15/16);let n=e.getSemiMajorAxis(),i=e.getSemiMinorAxis(),a;if(n===0)return t[0].setCoordsPoint2D(e.getStartXY()),t[1].setCoordsPoint2D(e.getStartXY()),t[2].setCoordsPoint2D(e.getStartXY()),a=1,a;if(i===0)return t[0].setCoordsPoint2D(e.getStartXY()),t[2].setCoordsPoint2D(e.getEndXY()),t[1]=P.lerp(t[0],t[2],.5),a=1,a;let o=e.getSweepAngle(),s=e.getStartAngle(),c=s+o,l=new P(-n*Math.sin(s),i*Math.cos(s)),u=new P(-n*Math.sin(c),i*Math.cos(c));l.normalize(),u.normalize(),l.rotateDirect(e.m_cosr,e.m_sinr),u.rotateDirect(e.m_cosr,e.m_sinr),t[0].setCoordsPoint2D(e.getStartXY()),t[2].setCoordsPoint2D(e.getEndXY()),t[1].setSub(t[2],t[0]);let d=l.crossProduct(u);return t[1].assign(l.mul(t[1].crossProduct(u)/d)),t[1].addThis(t[0]),a=Math.cos(o*.5),a}function Kl(e,t,n,i,a){if(i){let n=.5,r=Math.sqrt(t),i=Ze(.5)+2*r*n*.5+Ze(n),o=e[0].mul(Ze(.5)).add(e[1].mul(2*r*n*.5)).add(e[2].mul(Ze(n))).divThis(i);return a.constructCircularArcThreePoint(e[0],e[2],o),!0}let o=e[0].sub(e[1]),s=e[2].sub(e[1]),c=o.crossProduct(s),l=o.dotProduct(s),u=t;r(u<=1),r(u>0);let d=.5/(1-u),f=o.sqrLength(),p=l,m=s.sqrLength(),h=Ze(c),g=o.sub(s).sqrLength();if(h===0||l<=-(Math.sqrt(f)*Math.sqrt(m)))return Ol(a,e[0],e[2],1),!1;let _=[0,0],v=new R;v.setInfinite();let y=ur(2*h,-(g/u+4*p),2*(1-u)/u,v,!1,_);if(y===0)return Ol(a,e[0],e[2],1),!1;y===1&&(_[1]=_[0]);let b=Math.sqrt(d/_[0]),x=Math.sqrt(d/_[1]),S=.5/u,C=S-m*_[0],w=S-f*_[0];Math.abs(C)>Math.abs(w)?w=p*_[0]-S+1:C=p*_[0]-S+1;let T=o.mul(C).add(s.mul(w)),E=T.norm(1)<b*1e-15?0:Math.atan2(T.y,T.x)+Math.PI,D=o.add(s),O=n?n.clone():e[1].add(D.mul(d)),k=e[0].sub(O),ee=e[2].sub(O),A=k.crossProduct(ee)<0;return new zc,a.constructEllipticArcEndPointsCenter(e[0],e[2],b,x/b,E,!1,!A,O)}function ql(e,t,n,r,i){return Kl(e,t,n,r,i)}function Jl(e){let t=$t(e),n=!1;{let r=new P(e.m_semiMajorAxis*Math.cos(e.m_startAngle),e.getSemiMinorAxis()*Math.sin(e.m_startAngle));r.rotateDirect(e.m_cosr,e.m_sinr),r.addThis(e.m_center),n=P.distance(e.getStartXY(),r)>t}let r=!1;if(!n){let n=new P(e.m_semiMajorAxis*Math.cos(e.m_startAngle+e.m_sweepAngle),e.getSemiMinorAxis()*Math.sin(e.m_startAngle+e.m_sweepAngle));n.rotateDirect(e.m_cosr,e.m_sinr),n.addThis(e.m_center),r=P.distance(e.getEndXY(),n)>t}return!n&&!r}function Yl(e,n,r,a){r===0&&i(`construct_enclosing_circle`);let o=[0,0,0],s=Vc(n,r,o);if(s===1)e.constructCircleRadius(0,n[o[0]],a);else if(s===2){let t=P.lerp(n[o[0]],n[o[1]],.5),r=P.distance(n[o[0]],t),i=P.distance(n[o[1]],t);e.constructCircleRadius(Math.max(r,i),t,a)}else if(s===3){let t=P.calculateCircleCenterFromThreePoints(n[o[0]],n[o[1]],n[o[2]]),r=P.distance(n[o[0]],t),i=P.distance(n[o[1]],t),s=P.distance(n[o[2]],t);e.constructCircleRadius(Math.max(r,i,s),t,a)}else t(`unexpected`)}function Xl(e){if(Z(e)||e.isDegenerate(0))return 0;let t=e.m_semiMajorAxis,n=e.getSemiMinorAxis(),r=t*t+n*n,i=e.getStartAngle(),a=e.getEndAngle(),o=e.m_center.y-e.m_YStart,s=e.m_cosr,c=e.m_sinr,l=1,u=0;e.m_rotation&&(l=(s-c)*(s+c),u=2*s*c);let d=2*Math.cos(a+i)*Math.sin(a-i),f=-.5*(a-i)+.25*l*d,p=-2*Math.sin((a+i)*.5)*Math.sin((a-i)*.5),m=(f*n+p*s*o)*t/r,h=0;if(e.m_rotation){let e=-2*Math.sin(a+i)*Math.sin(a-i),t=2*Math.cos((a+i)*.5)*Math.sin((a-i)*.5),s=n*o/r;h=.125*e*u-s*t*c}let g=-.5*(e.m_XEnd-e.m_XStart)*(e.m_YEnd-e.m_YStart);return r*(m+h)+g}function Zl(e){e.queryCoord2D(.5,e.m_interior)}function Ql(e,t,n,r,i){if(i){if(du(t,n)!==0)return 2}else if(Nt(t,n))return 1;return eu(e,t,n,null,null,null,r,i!==void 0&&i,!0,!1)===0?0:4}function $l(e,t,n,r,i){if(i){if(du(t,n)!==0)return 2}else if(Nt(t,n))return 1;return tu(e,t,n,null,null,null,r,i!==void 0&&i,!0,!1)===0?0:4}function eu(e,t,n,i,a,o,s,c,l,u){if(Z(t))return Fn(new Q({start:t.getStartXY(),end:t.getEndXY()}),n,i,a,o,s,c,u);a!==null&&(a.length=0),o!==null&&(o.length=0),i!==null&&(i.length=0);let d=en(t,n);if(s=Math.max(d,s),tn(t,n,s))return 0;let f=n.getStartXY();f.subThis(t.m_center);let p=n.getEndXY();p.subThis(t.m_center),f.rotateReverse(t.m_cosr,t.m_sinr),p.rotateReverse(t.m_cosr,t.m_sinr);let m=p.clone();m.subThis(f);let h=t.m_semiMajorAxis,g=1/h,_=t.getSemiMinorAxis(),v=1/_,y=m.clone();y.leftPerpendicularThis();let b=Math.atan2(_*y.y,h*y.x),x=L(16,NaN),S=L(16,NaN),C=0,w=[b,b+Math.PI];for(let e=0;e<2;++e){let r=gl(t,w[e]);if(r>=0&&r<=1){x[C]=r;let e=t.getCoord2D(x[C]);S[C]=n.getClosestCoordinate(e,!1),P.distance(e,n.getCoord2D(S[C]))<=s&&C++}}let T=f.x*g,E=f.y*v,D=m.x*g,O=m.y*v,k=T*T+E*E-1,ee=(T*D+E*O)*2,A=ur(D*D+O*O,ee,k,R.unit(),!1,S);r(A>=0);for(let e=0;e<A;e++){let r=m.mul(S[e]).add(f);r.x*=g,r.y*=v;let i=gl(t,Math.atan2(r.y,r.x));if(i>=0&&i<=1){x[C]=i;let e=t.getCoord2D(i);S[C]=n.getClosestCoordinate(e,!1),P.distance(e,n.getCoord2D(S[C]))<=s&&C++}}r(C<x.length+4);let j=L(16,NaN);A=t.intersectPoint(n.getStartXY(),j,s);for(let e=0;e<A;e++,C++)x[C]=j[e],S[C]=0;A=t.intersectPoint(n.getEndXY(),j,s);for(let e=0;e<A;e++,C++)x[C]=j[e],S[C]=1;A=n.intersectPoint(t.getStartXY(),j,s);for(let e=0;e<A;e++,C++)x[C]=0,S[C]=j[e];A=n.intersectPoint(t.getEndXY(),j,s);for(let e=0;e<A;e++,C++)x[C]=1,S[C]=j[e];return C===0?0:gu(e,t,n,x,S,C,i,a,o,s,c,l,u)}function tu(e,t,n,i,a,o,s,c,l,u){if(Z(t))return eu(e,n,new Q({start:t.getStartXY(),end:t.getEndXY()}),i,o,a,s,c,l,!u);if(Z(n))return eu(e,t,new Q({start:n.getStartXY(),end:n.getEndXY()}),i,a,o,s,c,l,u);let d=en(t,n);s=Math.max(s,d);let f=!1;{let e=t.getSemiAxes(),i=t.getCenter(),u=n.getSemiAxes(),d=n.getCenter(),p=P.distance(d,i),m=e.x+u.x;if(p>m+s)return 0;if(e.y>u.x){if(p+u.x+s<e.y)return 0}else if(u.y>e.x&&p+e.x+s<u.y)return 0;if(l&&!c){let i=t.m_minorMajorRatio===1&&t.isClosed()&&t.isMajor(),s=n.m_minorMajorRatio===1&&n.isClosed()&&n.isMajor();if(i&&s&&(f=!0,p<=m&&Math.max(e.x,u.x)<=Math.min(e.x,u.x)+p))return r(!a&&!o),1}}if(!f&&tn(t,n,s))return 0;let p=[],m=[],h=Yc(t,0,0,!1,!1,p,m,null),g=[],_=[],v=Yc(n,0,0,!1,!1,g,_,null);if(h===1&&v===1){let e=new Mr({points:p,weights:m}),r=new Mr({points:g,weights:_}),d=[],f=[],h=uc(!1,e,r,i,a===null?null:d,o===null?null:f,s,c,l,u);if(h>0&&a!==null||o!==null){a&&(a.length=0),o&&(o.length=0);for(let i=0;i<h;++i){if(a){if(U(d[i],0,1))a.push(d[i]);else{let n=e.tToLength(d[i]),r=t.lengthToT(n);a.push(r)}}if(o){if(U(f[i],0,1))o.push(f[i]);else{let e=r.tToLength(f[i]),t=n.lengthToT(e);o.push(t)}}}}return h}let y=[],b=[],x=0,S=l&&!c;for(let e=0;e<h;e++){let r=new Mr({points:p.slice(2*e,2*e+3),weights:m.slice(2*e,2*e+3)}),i=0;for(let a=0;a<v;a++){b.length<=a&&b.push(new Mr({points:g.slice(2*a,2*a+3),weights:_.slice(2*a,2*a+3)}));let o=[],c=[],l=S?null:o,u=S?null:c,d=uc(!1,r,b[a],null,l,u,s,!1,S,!1);if(d>0&&S)return 1;for(let s=0;s<d;++s){if(o[s]===0&&e===0)o[s]=0;else if(o[s]===1&&e===h-1)o[s]=1;else{let e=r.tToLength(o[s])+x,n=t.lengthToT(e);o[s]=n}if(c[s]===0&&a===0)c[s]=0;else if(c[s]===1&&a===v-1)c[s]=1;else{let e=b[a].tToLength(c[s])+i,t=n.lengthToT(e);c[s]=t}y.push(We(o[s],c[s]))}i+=b[a].calculateLength2D()}x+=r.calculateLength2D()}if(y.length===0)return 0;if(c&&(y=y.filter(e=>U(e.first,0,1)&&U(e.second,0,1)?!t.getCoord2D(e.first).equals(n.getCoord2D(e.second)):!0)),l)return y.length;let C=[],w=[];for(let e of y)C.push(e.first),w.push(e.second);return gu(e,t,n,C,w,C.length,i,a,o,s,c,l,u)}function nu(e,t,n){if(n.setCoords(e.getCoord2D(t.vmin)),n.mergeNe(e.getCoord2D(t.vmax)),Z(e))return;let r=e.getSemiAxes(),i=[0,0,0,0];{let t=Math.atan2(-r.y*e.m_sinr,r.x*e.m_cosr),n=t+Math.PI,a=Math.atan2(r.y*e.m_cosr,r.x*e.m_sinr),o=a+Math.PI;i[0]=gl(e,t),i[1]=gl(e,n),i[2]=gl(e,a),i[3]=gl(e,o)}let a=new P;for(let r=0;r<4;r++){let o=i[r];t.containsExclusiveCoordinate(o)&&(e.queryCoord2D(o,a),n.mergeNe(a))}}function ru(e,t,n,i,a){if(e.m_semiMajorAxis===0)return n.vmin;let o=P.getNAN();e.queryCoord2D(n.vmin,o);let s=P.getNAN();if(e.queryCoord2D(n.vmax,s),Z(e))return new Q({start:o,end:s}).getClosestCoordinate(t,i);let c=ll(e,t);if(o=ll(e,o),s=ll(e,s),e.m_minorMajorRatio===1){if(c.isEqual(0,0))return n.vmin;let t=gl(e,Math.atan2(c.y,c.x));return i||n.containsCoordinate(t)?t:P.distance(c,o)<=P.distance(c,s)?n.vmin:n.vmax}let l=e.getSemiMajorAxis(),u=e.getSemiMinorAxis(),d=(l-u)*(l+u),f=Ze(d),p=c.x,m=c.y,h=Ze(u*m),g=u*d*m*2,_=[new V(h),new V(g),new V(f-Ze(l*p)-h),new V(-g),new V(-f)],v=H(V,4),y=Sr(_,4,new R(-1,1),!1,v,4),b=n.vmin,x=P.sqrDistance(c,o);{let e=P.sqrDistance(c,s);e<x&&(b=n.vmax,x=e)}r(!i);let S=L(8,NaN);for(let t=0;t<y;++t){let n=v[t].value(),r=Math.sqrt(1-n*n),i=Math.atan2(n,r),a=Math.atan2(n,-r);S[t*2]=gl(e,i),S[t*2+1]=gl(e,a)}S=S.slice(0,y*2),tt(S);for(let r=0,i=2*y;r<i;++r)if(S[r]>n.vmin&&S[r]<n.vmax){let n=P.sqrDistance(t,e.getCoord2D(S[r]));x>n&&(x=n,b=S[r])}return b}function iu(e,t,n){r(!Z(e));let i=new xt;i.setRotateAngle(-e.getAxisXRotation());let a=new P;i.queryTransform(t,a);let o=Math.atan2(-a.x*e.getMinorMajorRatio(),a.y),s=o+W(),c=gl(e,o),l=gl(e,s);l<c&&(l=z(c,c=l));let u=0;return c>=0&&c<=1&&(n[u++]=c),l>=0&&l<=1&&(n[u++]=l),u}function au(e,t,n){return e.m_semiMajorAxis!==t.m_semiMajorAxis||e.isMajor()===t.isMajor()||!e.m_center.equals(t.m_center)||e.m_sinr!==t.m_sinr||e.m_cosr!==t.m_cosr||e.m_minorMajorRatio!==t.m_minorMajorRatio?!1:n?e.isClockwise()!==t.isClockwise():e.isClockwise()===t.isClockwise()}function ou(e,t,n){if(Z(e)){n.setE(K.constructPoint2D(e.getEndXY()).subE(K.constructPoint2D(e.getStartXY())));return}{let r=new V;vl(e,t,r);let i=new K;if(i.setCoordsE(new V(e.m_semiMajorAxis).negate().mulE(new V().setSin(r)),new V(e.getSemiMinorAxis()).mulE(new V().setCos(r))),e.m_rotation){let t=new V(e.m_rotation);i.rotateDirect(new V().setCos(t),new V().setSin(t))}i.scaleThis(new V(e.getSweepAngle())),n.setE(i)}}function su(e,t,n,r){let i=e.getStartXY(),a=e.getEndXY(),o=i.equals(a),s=t.equals(n);if(!o&&!s){let r=new xt;r.setShiftCoords(-e.m_XStart,-e.m_YStart);let o=P.distance(t,n),s=P.distance(i,a),c=o/s;r.scale(c,c);let l=a.sub(i);l.divThis(s);let u=n.sub(t);u.divThis(o);let d=l.crossProduct(u),f=u.dotProduct(l);r.rotate(f,d),r.shiftCoords(t.x,t.y),Ml(e,r,!0,t,n);return}let c=new P;if(e.queryCoord2D(.5,c),s){if(o){let r=e.m_center.add(t.sub(i));e.constructEllipticArcEndPointsCenter(t,n,e.getSemiMajorAxis(),1,0,!0,!e.isClockwise(),r),e.setProjectionBehavior(0)}else if(!e.isMajor())e.constructCircularArcThreePoint(t,n,t);else{let r=c.sub(t).getUnitVector().mul(2*e.getSemiMajorAxis()).add(t);e.constructCircularArcThreePoint(t,n,r)}return}let l=t.add(n).mul(.5),u=n.sub(t);u.rightPerpendicularThis();let d=l.add(u),f=P.getClosestCoordinate(l,d,e.getCenter(),!0),p=new P;Ue(l,d,f,p);let m=P.distance(t,p);e.constructEllipticArcEndPointsCenter(t,n,m,1,0,!0,!e.isClockwise(),p),e.setProjectionBehavior(0)}function cu(e,t,n,i){let a=e.getStartXY(),o=e.getEndXY(),s=a.equals(o),c=t.equals(n);if(!s&&!c){let r=new xt;r.initializeFromTwoPoints(a,o,t,n),Ml(e,r,!0,t,n),e.endPointModified(),e.normalizeAfterEndpointChange();return}if(!e.isMajor()){Ol(e,t,n,1);return}if(s&&c){let r=e.m_center.add(t.sub(a));e.constructEllipticArcEndPointsCenter(t,n,e.getSemiMajorAxis(),e.getMinorMajorRatio(),e.getAxisXRotation(),!0,!e.isClockwise(),r);return}if(!s){let r=(et()-Math.abs(e.getSweepAngle()))*.5,i=(e.getSweepAngle()+r*ke(e.getSweepAngle()))/e.getSweepAngle(),a=new P;e.queryCoord2D(i,a),e.constructEllipticArcEndPointsCenter(a,a,e.getSemiMajorAxis(),e.getMinorMajorRatio(),e.getAxisXRotation(),!0,!e.isClockwise(),e.getCenter());let o=e.getCenter().add(t.sub(a));e.constructEllipticArcEndPointsCenter(t,n,e.getSemiMajorAxis(),e.getMinorMajorRatio(),e.getAxisXRotation(),!0,!e.isClockwise(),o);return}let l=P.sqrDistance(t,n),u=P.sqrDistance(e.getCoord2D(.25),e.getCoord2D(.75)),d=.25,f=.75;if(l<u){let t=new sl(e,l),n=[0],i=cr(t,R.construct(0,.25),1,n);i>0&&(r(i===1),d=n[0],f=1-n[0])}let p=e.getCoord2D(d),m=e.getCoord2D(f);r(!p.equals(m)),e.constructEllipticArcEndPointsCenter(p,m,e.getSemiMajorAxis(),e.getMinorMajorRatio(),e.getAxisXRotation(),!0,!e.isClockwise(),e.m_center),cu(e,t,n)}function lu(e,t,n,r,i){return uu(e,!1,t,n,r,i)}function uu(e,n,r,i,a,o){let c=r.getGeometryType(),l=i.getGeometryType(),u=Math.max(a,en(r,i));if(c===s.enumLine&&l===s.enumLine)return Pn(r,i,u,o);let d=r,f=i,p=r.getStartXY(),m=r.getEndXY();if(p.compare(m)>0&&(d=r.clone().reverse()),p=i.getStartXY(),m=i.getEndXY(),p.compare(m)>0&&(f=i.clone().reverse()),n){if(r.equals(i))return 2;if(Rt(r,i,u))return 4}switch(c){case s.enumLine:switch(l){case s.enumEllipticArc:return Ql(e,f,d,u,o);case s.enumBezier:return ko(e,f,d,u,o);case s.enumRationalBezier2:return ic(e,f,d,u,o);case s.enumBezier2:return Bi(e,f,d,u,o);default:t(``)}break;case s.enumEllipticArc:switch(l){case s.enumLine:return Ql(e,d,f,u,o);case s.enumEllipticArc:return $l(e,d,f,u,o);case s.enumBezier:return Ao(e,f,d,u,o);case s.enumRationalBezier2:return ac(e,f,d,u,o);case s.enumBezier2:return Vi(e,f,d,u,o);default:t(``)}break;case s.enumBezier:switch(l){case s.enumLine:return ko(e,d,f,u,o);case s.enumEllipticArc:return Ao(e,d,f,u,o);case s.enumBezier:return jo(e,d,f,u,o);case s.enumRationalBezier2:return Mo(e,d,f,u,o);case s.enumBezier2:return No(e,d,f,u,o);default:t(``)}break;case s.enumRationalBezier2:switch(l){case s.enumLine:return ic(e,d,f,u,o);case s.enumEllipticArc:return ac(e,d,f,u,o);case s.enumBezier:return Mo(e,f,d,u,o);case s.enumRationalBezier2:return oc(e,d,f,u,o);case s.enumBezier2:return sc(e,d,f,u,o);default:t(``)}break;case s.enumBezier2:switch(l){case s.enumLine:return Bi(e,d,f,u,o);case s.enumEllipticArc:return Vi(e,d,f,u,o);case s.enumBezier:return No(e,f,d,u,o);case s.enumRationalBezier2:return sc(e,f,d,u,o);case s.enumBezier2:return Hi(e,d,f,u,o);default:t(``)}break;default:t(``)}}function du(e,t,n=!0){if(!n&&!fu(e,t))return 0;let r=e.isLine()&&t.isLine();if(e.getStartXY().equals(t.getStartXY())&&e.getEndXY().equals(t.getEndXY())){if(r)return 1;let n=e.getGeometryType();if(n!==t.getGeometryType())return 0;if(n===s.enumBezier){let n=e,r=t;return n.getControlPoint1().equals(r.getControlPoint1())&&n.getControlPoint2().equals(r.getControlPoint2())?1:0}if(n===s.enumEllipticArc)return+!!au(e,t,!1);if(n===s.enumRationalBezier2){let n=e,r=t;if(n.getControlPoint1().equals(r.getControlPoint1())&&n.getStandardFormWeight()===r.getStandardFormWeight())return 1}else if(n===s.enumBezier2){let n=e,r=t;if(n.getControlPoint1().equals(r.getControlPoint1()))return 1}return 0}if(e.getStartXY().equals(t.getEndXY())&&e.getEndXY().equals(t.getStartXY())){if(r)return-1;let n=e.getGeometryType();if(n!==t.getGeometryType())return 0;if(n===s.enumBezier){let n=e,r=t;return n.getControlPoint1().equals(r.getControlPoint2())&&n.getControlPoint2().equals(r.getControlPoint1())?-1:0}if(n===s.enumEllipticArc)return au(e,t,!0),-1;if(n===s.enumRationalBezier2){let n=e,r=t;if(n.getControlPoint1().equals(r.getControlPoint1())&&n.getStandardFormWeight()===r.getStandardFormWeight())return-1}else if(n===s.enumBezier2){let n=e,r=t;if(n.getControlPoint1().equals(r.getControlPoint1()))return-1}return 0}return 0}function fu(e,t){let n=e.getGeometryType();return!(n!==t.getGeometryType()||n===s.enumEllipticArc&&e.projectionBehavior()!==t.projectionBehavior())}function pu(e,n,r,a,o,c,l){!o&&c&&i(``);let u=n.getGeometryType(),d=r.getGeometryType(),f=Math.max(l,en(n,r));if(a&&(a.length=0),o&&(o.length=0),c&&(c.length=0),u===s.enumLine&&d===s.enumLine)return Fn(n,r,a,o,c,f,!1,!1);let p=n,m=r,h=n.getStartXY(),g=n.getEndXY(),_=!1,v=!1;h.compare(g)>0&&(p=n.clone(!0).reverse(),_=!0),h=r.getStartXY(),g=r.getEndXY(),h.compare(g)>0&&(m=r.clone(!0).reverse(),v=!0);let y=0;switch(u){case s.enumLine:switch(d){case s.enumEllipticArc:y=eu(e,m,p,a,c,o,f,!1,!1,!0);break;case s.enumBezier:y=Po(e,m,p,a,c,o,f,!1,!1,!0);break;case s.enumRationalBezier2:y=cc(e,m,p,a,c,o,f,!1,!1,!0);break;case s.enumBezier2:y=Ui(e,m,p,a,c,o,f,!1,!1,!0);break;default:t(``)}break;case s.enumEllipticArc:switch(d){case s.enumLine:y=eu(e,p,m,a,o,c,f,!1,!1,!1);break;case s.enumEllipticArc:y=tu(e,p,m,a,o,c,f,!1,!1,!1);break;case s.enumBezier:y=Fo(e,m,p,a,c,o,f,!1,!1,!0);break;case s.enumRationalBezier2:y=lc(e,m,p,a,c,o,f,!1,!1,!0);break;case s.enumBezier2:y=Wi(e,m,p,a,c,o,f,!1,!1,!0);break;default:t(``)}break;case s.enumRationalBezier2:switch(d){case s.enumLine:y=cc(e,p,m,a,o,c,f,!1,!1,!1);break;case s.enumEllipticArc:y=lc(e,p,m,a,o,c,f,!1,!1,!1);break;case s.enumBezier:y=Lo(e,m,p,a,c,o,f,!1,!1,!0);break;case s.enumRationalBezier2:y=uc(e,p,m,a,o,c,f,!1,!1,!1);break;case s.enumBezier2:y=dc(e,p,m,a,o,c,f,!1,!1,!1);break;default:t(``)}break;case s.enumBezier2:switch(d){case s.enumLine:y=Ui(e,p,m,a,o,c,f,!1,!1,!1);break;case s.enumEllipticArc:y=Wi(e,p,m,a,o,c,f,!1,!1,!1);break;case s.enumBezier:y=Ro(e,m,p,a,c,o,f,!1,!1,!0);break;case s.enumRationalBezier2:y=dc(e,m,p,a,c,o,f,!1,!1,!0);break;case s.enumBezier2:y=Gi(e,p,m,a,o,c,f,!1,!1,!1);break;default:t(``)}break;case s.enumBezier:switch(d){case s.enumLine:y=Po(e,p,m,a,o,c,f,!1,!1,!1);break;case s.enumEllipticArc:y=Fo(e,p,m,a,o,c,f,!1,!1,!1);break;case s.enumBezier:y=Io(e,p,m,a,o,c,f,!1,!1,!1);break;case s.enumRationalBezier2:y=Lo(e,p,m,a,o,c,f,!1,!1,!1);break;case s.enumBezier2:y=Ro(e,p,m,a,o,c,f,!1,!1,!1);break;default:t(``)}break;default:t(``)}if(_){if(o){for(let e=0;e<y;e++)o[e]=1-o[e];o.reverse()}a&&a.reverse(),c&&c.reverse()}if(v&&c)for(let e=0;e<y;e++)c[e]=1-c[e];return y}function mu(e,t,n){return t===n?0:(t>n&&(n=z(t,t=n)),e.cut(t,n,!0).calculateUpperLength2D())}function hu(e,t,n,r,i){let a=[],o=[],s=[];for(let c=0,l=i;c<l;c++)a.push(e.calculateSubLengthFromStart(n[c])),o.push(t.calculateSubLengthFromStart(r[c])),U(n[c],0,1)&&U(r[c],0,1)&&e.getCoord2D(n[c]).equals(t.getCoord2D(r[c]))&&s.push(c);if(s.length===0||s.length===i)return;s.sort((e,t)=>n[e]<n[t]?-1:n[e]>n[t]?1:r[e]<r[t]?-1:+(r[e]>r[t]));let c=-1;for(let l of s){if(c>=0&&n[l]===n[c]&&n[l]===n[c]){c=l;continue}c=l;let s=[];s.length=i;for(let e=0;e<s.length;++e)s[e]=e;s.sort((e,t)=>{let n=a[l],r=o[l],i=a[e]-n,s=o[e]-r,c=i*i+s*s,u=a[t]-n,d=o[t]-r,f=u*u+d*d;return c<f?-1:+(c>f)});for(let a=0;a<i;a++){let i=s[a];if(i===l||n[i]===n[l]&&r[i]===r[l]||U(n[i],0,1)&&U(r[i],0,1))continue;let o=(n,r,i,a)=>{let o=new K,s=new V;s.setWithEps(1);let c=new V;c.set(r,s.eps()),e.queryCoord2DE(c,o);let l=new K;e.queryCoord2DE(new V(n),l);let u=!1;return o.eq(l)&&(c.set(a,s.eps()),t.queryCoord2DE(c,o),t.queryCoord2DE(new V(i),l),u=o.eq(l)),!u},c=P.getNAN();e.queryCoord2D(n[i],c);let u=P.getNAN();if(t.queryCoord2D(r[i],u),P.distance(c,u)===0&&o(n[l],n[i],r[l],r[i]))break;let d=new R(r[i],r[l]);d.normalizeNoNAN();let f=new R(n[i],n[l]);f.normalizeNoNAN();let p=-1,m=1/0,h=1/0,g=n[i];c.assign(e.getCoord2D(g));for(let a=0;a<5;a++){let a=t.getClosestCoordinateOnInterval(c,d,-1);u.assign(t.getCoord2D(a));let s=P.distance(c,u);if(g=e.getClosestCoordinateOnInterval(u,f,-1),g===n[l]&&a===r[l]){p=1;break}c.assign(e.getCoord2D(g));let _=P.distance(u,c);if(_<h&&s<m){if(_===0&&s===0){o(n[l],n[i],r[l],r[i])?(n[i]=g,r[i]=a,p=0):p=1;break}h=_,m=s;continue}p=0;break}if(p===-1&&(p=U(n[i],0,1)||U(r[i],0,1)?0:1),p===1)n[i]=n[l],r[i]=r[l];else break}}}function gu(e,t,n,r,i,a,o,s,c,l,u,d,f){if(!a)return 0;let p=(e,t)=>{for(let n=0;n<a;++n){let r=t[n];if(U(r,0,1)){r=mt(r);continue}let i=e.getCoord2D(r);r<.5?i.equals(e.getStartXY())&&mu(e,0,r)<=$t(e)&&(t[n]=0):i.equals(e.getEndXY())&&mu(e,r,1)<=$t(e)&&(t[n]=1)}};p(t,r),p(n,i),hu(t,n,r,i,a);let m=[];for(let e=0,t=a;e<t;e++)m.push(e);let h=(e,t)=>f?ht(i[e],r[e],i[t],r[t]):ht(r[e],i[e],r[t],i[t]);if(m.length>1){m.sort(h);let e=Math.max($t(t),$t(n)),a=0;for(let o=1,s=m.length;o<s;o++){let s=r[m[a]],c=r[m[o]],l=i[m[a]],u=i[m[o]];if(s!==c||l!==u){if(mu(t,s,c)<=e&&mu(n,l,u)<=e&&!(U(s,0,1)&&U(l,0,1)||U(c,0,1)&&U(u,0,1))){let e=P.distance(t.getCoord2D(s),n.getCoord2D(l)),r=P.distance(t.getCoord2D(c),n.getCoord2D(u));if(e<=r)continue;if(r<e){m[a]=m[o];continue}continue}a++,m[a]=m[o]}}if(m.length=a+1,m.length===1&&m[0]!==0&&(r[0]=r[m[0]],i[0]=i[m[0]],m[0]=0),m.length>2){let e=R.constructEmpty(),a=R.constructEmpty();e.setCoords(r[m[0]],r[m.at(-1)]),a.setCoords(i[m[0]],i[m.at(-1)]);let o=!0;for(let t=1,n=m.length-1;t<n;t++)if(!e.containsCoordinate(r[m[t]])||!a.containsCoordinate(i[m[t]])){o=!1;break}if(o){let r=[.5,.2,.7,.1,.3,.4,.6,.8,.9];for(let i=0;i<r.length;i++){let s=B(e.vmin,e.vmax,r[i]),c=t.getCoord2D(s);if(!n.isCloserThanDistance(c,a,l)){o=!1;break}s=B(a.vmin,a.vmax,r[i]);let u=n.getCoord2D(s);if(!t.isCloserThanDistance(u,e,l)){o=!1;break}}}o&&(m[1]=m.at(-1),m.length=2)}}if(m.length===1&&e){let e=r[0],a=i[0];Lt(t,n,e,a,l,1,[0],[0])&&(m.push(1),r[1]=0,i[1]=0,m.sort(h))}if(u&&m.length===1){let e=!0;for(let a=0,o=m.length;a<o;a++)if(!(U(r[m[a]],0,1)&&U(i[m[a]],0,1)&&P.distance(t.getCoord2D(r[m[a]]),n.getCoord2D(i[m[a]]))===0)){e=!1;break}if(e)return 0}let g=0;for(let e=0,n=m.length;e<n;e++){if(s&&s.push(r[m[e]]),c&&c.push(i[m[e]]),o){let n=P.getNAN();t.queryCoord2D(r[m[e]],n),o.push(n)}g++}return g}function _u(e,t,n,r,i,a,o,s,c){if(U(n,0,1)&&U(r,0,1)&&P.distance(e.getCoord2D(n),t.getCoord2D(r))===0){let l=1e-12,u=new K,d=2**-52;if(e.queryDerivative(new V(n,d),u),u.isTrueZero()){let t=n===1?-1e-12:l;e.queryDerivative(new V(n,d).add(t),u)}n===1&&u.negateThis();let f=new K;if(t.queryDerivative(new V(r,d),f),f.isTrueZero()){let e=n===1?-1e-12:l;t.queryDerivative(new V(r,d).add(e),f)}r===1&&f.negateThis(),u.isZero()||u.normalize(),f.isZero()||f.normalize();let p=u.dotProduct(f),m=u.crossProduct(f);if(m.scaleError(3),p.ge(ve)&&(m.isZero()||Math.abs(m.value())<(()=>{if(c)return .001;{let n=e.calculateUpperLength2D(),r=t.calculateUpperLength2D();return Math.min(i*.01/Math.min(n,r),1e-10)}})()))return It(e,t,n,r,i,a,o,s)}return 0}function vu(e,t,n,i,a){let o=-1,s=-1,c=-1,l=-1;{let r=[0,t],a=[t,0],u=[0,i],d=[i,0];for(let t=0;t<2&&o===-1;++t)for(let i=0;i<2;++i)if(e[r[t]].equals(n[u[i]])){o=r[t],s=a[t],c=u[i],l=d[i];break}}if(o===-1){let r=new Ct;r.setFromPoints(e,t+1);let o=new Ct;return o.setFromPoints(n,i+1),o.inflate(a),r.isIntersectingW(o)?-1:0}{let u=L(t+1,NaN),d=Ea(e,t+1,u);r(d>1);let f=0,p=0;for(let e=0;e<d;++e)o===u[e]&&(p=e,f++),s===u[e]&&f++;if(f!==2)return-1;let m=L(i+1,NaN),h=Ea(n,i+1,m);r(h>1),f=0;let g=0;for(let e=0;e<h;++e)c===m[e]&&(g=e,f++),l===m[e]&&f++;if(f!==2)return-1;let _=e[u[(p+d-1)%d]],v=e[u[(p+1)%d]],y=n[m[(g+h-1)%h]],b=n[m[(g+1)%h]],x=e[o],S=[_,v,y,b],C=[0,1,2,3];C.sort((e,t)=>P.compareVectorsOrigin(x,S[e],S[t]));let w=C[0];for(let e=1;e<4;e++){if(C[e]!==(w+1)%4)return-1;w=C[e]}{let e=_.sub(x),t=b.sub(x),n=t.dotProduct(e);if(n>0){let r=t.crossProduct(e),i=Math.abs(Math.atan2(r,n)),o=i*e.length(),s=i*t.length();if(o<=a||s<=a)return-1}}{let e=v.sub(x),t=y.sub(x),n=t.dotProduct(e);if(n>0){let r=t.crossProduct(e),i=Math.abs(Math.atan2(r,n)),o=i*e.length(),s=i*t.length();if(o<=a||s<=a)return-1}}return 1}}var yu=v;class Q extends Cn{static type=s.enumLine;constructor(e){super(e||{XStart:0,YStart:0,XEnd:0,YEnd:0})}assignMove(e){return this!==e&&(this.m_description=e.m_description,e.m_description=null,this.m_attributes=e.m_attributes,e.m_attributes=null,this.m_XStart=e.m_XStart,e.m_XStart=NaN,this.m_YStart=e.m_YStart,this.m_XEnd=e.m_XEnd,e.m_XEnd=NaN,this.m_YEnd=e.m_YEnd),this}assignCopy(e){return this!==e&&e.copyTo(this),this}calculateLowerLength3D(){return r(0),0}calculateUpperLength3D(){return r(0),0}changeEndPoints3D(e,t){r(0)}getClosestCoordinate3D(e,t,n){return r(0),0}getBoundary(){return or(this)}getAttributeAsDbl(e,t,n){if(t===0)return n===0?En(this,e):Dn(this,e);let r=yu.getInterpolation(t),i=this.getStartAttributeAsDbl(t,n),a=this.getEndAttributeAsDbl(t,n);return Ae(r,i,a,e,yu.getDefaultValue(t))}constructFromCoords(e,t,n,r){this.dropAllAttributes(),this.setStartXYCoords(e,t),this.setEndXYCoords(n,r)}construct(e,t){this.dropAllAttributes(),this.setStartXY(e),this.setEndXY(t)}construct3D(e,t){r(0)}constructPoint(e,t){this.assignVertexDescription(e.getDescription()),this.mergeVertexDescription(t.getDescription()),this.setStart(e),this.setEnd(t)}getGeometryType(){return Q.type}queryEnvelope(e){if(e.m_EnvelopeType===4){e.setEmpty(),e.assignVertexDescription(this.m_description);let t=G.constructEmpty();this.queryEnvelope(t),e.setEnvelope(t);for(let t=1,n=this.m_description.getAttributeCount();t<n;t++){let n=this.m_description.getSemantics(t);for(let r=yu.getComponentCount(n);t<r;t++){let t=this.queryInterval(n,0);e.setIntervalEnvelope(n,0,t)}}}else e.m_EnvelopeType===2?e.setCoords({xmin:this.m_XStart,ymin:this.m_YStart,xmax:this.m_XEnd,ymax:this.m_YEnd}):e.m_EnvelopeType===3?(e.setEmpty(),e.mergeCoords(this.m_XStart,this.m_YStart,Yt(this,0,1,0)),e.mergeCoords(this.m_XEnd,this.m_YEnd,Yt(this,1,1,0))):n(`env type not impl`)}applyTransformation(e){r(e instanceof xt);let t=new P;t.x=this.m_XStart,t.y=this.m_YStart,e.transformInPlace(t),this.m_XStart=t.x,this.m_YStart=t.y,t.x=this.m_XEnd,t.y=this.m_YEnd,e.transformInPlace(t),this.m_XEnd=t.x,this.m_YEnd=t.y}createInstance(){return new Q({vd:this.m_description})}calculateLength2D(){return Math.sqrt(Un(this))}calculateLength3D(e){return r(0),0}changeEndPoints2D(e,t){this.setStartXY(e),this.setEndXY(t),this.normalizeAfterEndpointChange()}queryControlPointsHelper(e){return r(e.length>=2),e[0]=this.getStartXY(),e[1]=this.getEndXY(),2}queryCoord2D(e,t){return wn(this,e,t)}queryCoord3D(e,t){r(0)}getCoordZ(e){return On(this,e)}queryCoord2DE(e,t){An(this,e,t)}queryCoord2DMP(e,t){t.assignPoint2D(this.getStartXY());let n=q.constructPoint2D(this.getEndXY());n.subThis(t),n.mulThis(I.constructDouble(e)),t.addThis(n)}getCoordX(e){return En(this,e)}getCoordY(e){return Dn(this,e)}cut(e,t,n){let r=new $;return this.queryCut(e,t,r,n),r.releaseSegment()}queryCut(e,t,n,r){let i=n.createLine();r&&i.assignVertexDescription(this.m_description);let a=P.getNAN();if(wn(this,e,a),i.setStartXYCoords(a.x,a.y),wn(this,t,a),i.setEndXYCoords(a.x,a.y),!r)for(let n=1,r=this.m_description.getAttributeCount();n<r;n++){let r=this.m_description.getSemantics(n),a=yu.getComponentCount(r);for(let n=0;n<a;n++){let a=this.getAttributeAsDbl(e,r,n);i.setStartAttribute(r,n,a);let o=this.getAttributeAsDbl(t,r,n);i.setEndAttribute(r,n,o)}}}queryDerivative(e,t){kn(this,e,t)}getClosestCoordinate(e,t){return P.getClosestCoordinate(this.getStartXY(),this.getEndXY(),e,t)}getClosestCoordinateOnInterval(e,t,n=-1){let r=new P;this.queryCoord2D(t.vmin,r);let i=new P;this.queryCoord2D(t.vmax,i);let a=P.getClosestCoordinate(r,i,e,!1);return an.recalculateParentT(t.vmin,t.vmax,a)}intersectionOfYMonotonicWithAxisX(e,t){let n=this.m_YEnd-this.m_YStart;if(!n)return e===this.m_YEnd?t:NaN;let r=(e-this.m_YStart)/n,i=En(this,r);return r===1&&(i=this.m_XEnd),i}isCurve(){return!1}isMonotoneQuickAndDirty(){return!0}isDegenerate(e){let t=this.m_XStart-this.m_XEnd,n=this.m_YStart-this.m_YEnd;return Math.sqrt(t*t+n*n)<=e}isDegenerate3D(e,t){return r(0),!1}queryLooseEnvelope(e){this.queryEnvelope(e)}clone(e){let t=new Q;return this.copyTo(t),t}tToLength(e){return e*this.calculateLength2D()}lengthToT(e){let t=this.calculateLength2D();return t===0?0:e/t}calculateWeightedAreaCentroid2D(e){let t=new P;return t.setCoords(0,0),t}calculateWeightedCentroid2D(){return this.getCoord2D(.5).mul(this.calculateLength2D())}getTangent(e){let t=P.getNAN();return t.setSub(this.getEndXY(),this.getStartXY()),t}getDerivative(e){let t=new P;return t.setSub(this.getEndXY(),this.getStartXY()),t}getCurvature(e){return 0}isIntersectingPoint(e,t,n){return zn(this,e,t,n)>=0}isIntersectingPoint3D(e,t,n,i,a=1){return r(0),!1}getYMonotonicParts(e,t){return 0}getMonotonicParts(e,t){return 0}getMonotonicPartParams(e,t){return t&&(e<2&&i(``),t[0]=0,t[1]=1),2}intersectionWithAxis2D(e,t,n,r){if(e){let e=this.m_YEnd-this.m_YStart;if(!e)return t===this.m_YEnd?-1:0;let i=(t-this.m_YStart)/e;return i<0||i>1?0:(n&&(n[0]=En(this,i)),r&&(r[0]=i),1)}{let e=this.m_XEnd-this.m_XStart;if(!e)return t===this.m_XEnd?-1:0;let i=(t-this.m_XStart)/e;return i<0||i>1?0:(n&&(n[0]=Dn(this,i)),r&&(r[0]=i),1)}}calculateUpperLength2D(){return this.calculateLength2D()}calculateLowerLength2D(){return this.calculateLength2D()}normalizeAfterEndpointChange(){return!1}queryLooseEnvelopeOnInterval(e,t){if(t.m_EnvelopeType===2){let n=xe(e.vmin,0,1),r=new P;this.queryCoord2D(n,r),t.setCoords({pt:r}),n=xe(e.vmax,0,1),this.queryCoord2D(n,r),t.mergeNe(r);return}n(`3d dst not impl`)}orientBottomUp(){Nn(this)}isLine(){return!0}isDegenerateToLineHelper(e){return!0}copyIgnoreAttributes(e){e.setStartXY(this.getStartXY()),e.setEndXY(this.getEndXY()),e.normalizeAfterEndpointChange()}calculateArea2DHelper(){return 0}absNormXYZ(e){return Mn(this,e)}absNorm(){return this.getStartXY().norm(1)+this.getEndXY().norm(1)}queryEnvelopeW(e,t){t.setCoords(this.getCoord2D(e.vmin)),t.mergeNe(this.getCoord2D(e.vmax))}setSegmentFromCoordsForStitcher(e,t){jn(this,e[0],e[t-1])}writeInBufferStream(e,t){return r(0),0}readFromBufferStream(e,t){r(0)}snapControlPoints(e){return!1}needsSnapControlPoints(e){return!1}calculateSpecialPointsForCracking(e,t){return 0}ensureXYMonotone(){return!1}setCoordsForIntersector(e,t,n){jn(this,e,t)}static isIntersectingLineLine(e,t,n,r){return Pn(e,t,n,r)}static isIntersectingLineLine_(e,t,n,r){return Pn(e,t,n,r)}copyToImpl(e){}reverseImpl(){}equalsImpl(e){return!0}equalsImplTol(e,t){return!0}swapImpl(e){}afterCompletedModification(){}endPointModified(){}clearEndPointModified(){}intersect(e,t,n,r,i){return pu(!1,this,e,t,n,r,i)}intersectPoint(t,n,r){n.length<1&&e(``);let i=zn(this,t,r,!1);return i>=0?(n&&(n[0]=i),1):0}isIntersecting(e,t,n){return lu(!1,this,e,t,n)!==0}static segmentIntersectRobust(e,t,n,r,i,a){function o(e,t,n){return G.construct(e.x,e.y,t.x,t.x).contains(n)}a.length=0;let s=K.constructPoint2D(e),c=K.constructPoint2D(t),l=K.constructPoint2D(n),u=K.constructPoint2D(r),d=c.subThisE(s),f=l.subE(u),p=l.subThisE(s),m=d.crossProduct(f);if(m.eps()<.5*Math.abs(m.value())){let e=p.crossProduct(f).divE(m),t=d.crossProduct(p).divE(m);if(!t.isInInterval(je)||!e.isInInterval(je))return 0;if(t.isInIntervalExclusive(je)&&e.isInIntervalExclusive(je)&&t.eps()<i&&e.eps()<i)return a.push(e.value(),t.value()),1}let h=q.constructPoint2D(e),g=q.constructPoint2D(t),_=q.constructPoint2D(n),v=q.constructPoint2D(r),y=g.subThis(h),b=_.sub(v),x=_.subThis(h),S=y.crossProduct(b);if(S.isZero())return o(e,t,n)||o(e,t,r)||o(n,r,e)||o(n,r,t)?-1:0;let C=x.crossProduct(b).div(S),w=y.crossProduct(x).div(S);return C.GEZ()&&w.GEZ()&&C.lte(Me)&&w.lte(Me)?(a.push(C.toDouble(),w.toDouble()),1):0}}class ${m_seg=null;m_curves=null;m_lineBuffer=new Q;m_mask=0;m_active=0;constructor(e){if(e!==void 0){if(e.copy){e.copy.copyTo(this,!1);return}if(e.move){this.assignMove(e.move);return}if(e.segment){this.copyFrom(e.segment,!!e.bIgnoreAttributes);return}t(`bad constructor params`)}}assignCopy(e){return e instanceof $?this!==e&&e.copyTo(this,!1):this.copyFrom(e,!1),this}assignMove(e){if(e instanceof $){if(this===e)return this;this.reset(),e.m_mask&1&&(this.m_lineBuffer=e.m_lineBuffer,e.m_lineBuffer=null,this.m_mask=1),this.m_curves=e.m_curves,this.m_mask=e.m_mask,this.m_active=e.m_active,e.reset(),this.m_seg=this.activeSegment(),e.m_seg=null}else{if(this.m_seg===e)return this;this.create(e.getGeometryType()),this.m_seg.swap(e)}return this}activeSegment(){switch(this.m_active){case 0:return null;case 1:return this.line();case 2:return this.arc();case 4:return this.bezier3();case 8:return this.bezier2();case 16:return this.rbezier2();default:t(``)}}get(){return this.m_seg}reset(){this.m_mask&1&&(this.m_lineBuffer=null),this.m_mask>1&&(this.m_curves=null),this.m_mask=0,this.m_active=0}empty(){return this.m_seg===null}copyTo(e,t){if(this!==e){if(this.empty()){e.m_seg=null;return}e.copyFrom(this.m_seg,t)}}copyToWithZ(e,t){r(0)}createImpl(e){switch(e){case s.enumLine:this.m_mask&1||(this.m_lineBuffer=new Q,this.m_mask|=1,this.m_active=1);break;case s.enumEllipticArc:this.m_mask&2||(this.m_curves=new zc,this.m_mask=this.m_mask&1|2,this.m_active=2);break;case s.enumBezier:this.m_mask&4||(this.m_curves=new ls,this.m_mask=this.m_mask&1|4,this.m_active=4);break;case s.enumBezier2:this.m_mask&8||(this.m_curves=new Pr,this.m_mask=this.m_mask&1|8,this.m_active=8);break;case s.enumRationalBezier2:this.m_mask&16||(this.m_curves=new Mr,this.m_mask=this.m_mask&1|16,this.m_active=16);break;default:i(``)}}create(e){e===s.enumLine?this.createLine():e===s.enumEllipticArc?this.createEllipticArc():e===s.enumBezier?this.createCubicBezier():e===s.enumRationalBezier2?this.createQuadraticRationalBezier():e===s.enumBezier2?this.createQuadraticBezier():i(`Segment_buffer.create`)}copyFrom(e,t){this.m_seg!==e&&(this.create(e.getGeometryType()),t?e.copyIgnoreAttributes(this.m_seg):e.copyTo(this.m_seg))}copyFromWithZ(e,t){r(0)}line(){return this.m_lineBuffer}arc(){return this.m_curves}bezier3(){return this.m_curves}bezier2(){return this.m_curves}rbezier2(){return this.m_curves}createLine(){return this.createImpl(s.enumLine),this.m_seg=this.line(),this.line()}createEllipticArc(){return this.createImpl(s.enumEllipticArc),this.m_seg=this.arc(),this.arc()}createCubicBezier(){return this.createImpl(s.enumBezier),this.m_seg=this.bezier3(),this.bezier3()}createQuadraticRationalBezier(){return this.createImpl(s.enumRationalBezier2),this.m_seg=this.rbezier2(),this.rbezier2()}createQuadraticBezier(){return this.createImpl(s.enumBezier2),this.m_seg=this.bezier2(),this.bezier2()}releaseSegment(){if(this.m_seg=null,this.m_active===0&&t(`releaseSegment`),this.m_active&1){let e=this.line();return--this.m_mask,this.m_active=0,this.m_lineBuffer=null,e}let e;return this.m_active&2?e=this.arc():this.m_active&4?e=this.bezier3():this.m_active&8?e=this.bezier2():this.m_active&16?e=this.rbezier2():t(`releaseSegment`),this.m_mask-=this.m_active,this.m_active=0,this.m_curves=null,e}equals(e){return e instanceof $?this===e?!0:this.empty()?e.empty():!e.empty()&&this.get().equals(e.get()):(n(`seg comparison not yet impl`),!1)}}export{du as $,ar as A,lu as B,Na as C,Xc as D,wa as E,qc as F,bn as G,Yc as H,ls as I,Sc as J,ql as K,Q as L,vn as M,an as N,Ft as O,ha as P,Mr as Q,cn as R,$ as S,uu as T,$t as U,Sa as V,pu as W,Nn as X,q as Y,K as Z,_l as _,rr as a,fu as a0,_u as a1,Ca as a2,Lc as a3,Pc as a4,Hl as a5,Ul as a6,Nl as a7,dl as a8,Zn as a9,Nc as b,or as c,Gc as d,Aa as e,Ta as f,xn as g,dn as h,Oa as i,Rn as j,Bc as k,zc as l,Vc as m,va as n,ya as o,Kc as p,ur as q,pn as r,ln as s,cr as t,vo as u,un as v,qa as w,ri as x,qn as y,Jn as z};
|