]> git.openstreetmap.org Git - rails.git/blobdiff - vendor/assets/iD/iD/mapillary-js/mapillary.js.map
Merge remote-tracking branch 'upstream/pull/2431'
[rails.git] / vendor / assets / iD / iD / mapillary-js / mapillary.js.map
index 6a3dfe7c73373571bc48841bbd44a4f6c94f37d4..9a9f49eaf8f63c674ce4b540f3279015ac7b86d3 100644 (file)
     "node_modules/is-object/index.js",
     "node_modules/latlon-geohash/latlon-geohash.js",
     "node_modules/martinez-polygon-clipping/dist/martinez.umd.js",
+    "node_modules/pako/index.js",
+    "node_modules/pako/lib/deflate.js",
+    "node_modules/pako/lib/inflate.js",
+    "node_modules/pako/lib/utils/common.js",
+    "node_modules/pako/lib/utils/strings.js",
+    "node_modules/pako/lib/zlib/adler32.js",
+    "node_modules/pako/lib/zlib/constants.js",
+    "node_modules/pako/lib/zlib/crc32.js",
+    "node_modules/pako/lib/zlib/deflate.js",
+    "node_modules/pako/lib/zlib/gzheader.js",
+    "node_modules/pako/lib/zlib/inffast.js",
+    "node_modules/pako/lib/zlib/inflate.js",
+    "node_modules/pako/lib/zlib/inftrees.js",
+    "node_modules/pako/lib/zlib/messages.js",
+    "node_modules/pako/lib/zlib/trees.js",
+    "node_modules/pako/lib/zlib/zstream.js",
     "node_modules/path-browserify/index.js",
     "node_modules/pbf/index.js",
     "node_modules/quickselect/quickselect.js",
     "src/component/slider/SliderComponent.ts",
     "src/component/slider/SliderDOMRenderer.ts",
     "src/component/slider/SliderGLRenderer.ts",
+    "src/component/spatialdata/CameraVisualizationMode.ts",
+    "src/component/spatialdata/SpatialData.ts",
     "src/component/spatialdata/SpatialDataCache.ts",
     "src/component/spatialdata/SpatialDataComponent.ts",
     "src/component/spatialdata/SpatialDataScene.ts",
     "src/component/tag/error/GeometryTagError.ts",
     "src/component/tag/geometry/Geometry.ts",
     "src/component/tag/geometry/PointGeometry.ts",
+    "src/component/tag/geometry/PointsGeometry.ts",
     "src/component/tag/geometry/PolygonGeometry.ts",
     "src/component/tag/geometry/RectGeometry.ts",
     "src/component/tag/geometry/VertexGeometry.ts",
     "src/component/tag/handlers/CreateHandlerBase.ts",
     "src/component/tag/handlers/CreatePointHandler.ts",
+    "src/component/tag/handlers/CreatePointsHandler.ts",
     "src/component/tag/handlers/CreatePolygonHandler.ts",
     "src/component/tag/handlers/CreateRectDragHandler.ts",
     "src/component/tag/handlers/CreateRectHandler.ts",
     "src/component/tag/handlers/CreateVertexHandler.ts",
     "src/component/tag/handlers/EditVertexHandler.ts",
     "src/component/tag/handlers/TagHandlerBase.ts",
+    "src/component/tag/tag/CreateTag.ts",
+    "src/component/tag/tag/ExtremePointCreateTag.ts",
+    "src/component/tag/tag/ExtremePointRenderTag.ts",
+    "src/component/tag/tag/ExtremePointTag.ts",
     "src/component/tag/tag/OutlineCreateTag.ts",
     "src/component/tag/tag/OutlineRenderTag.ts",
+    "src/component/tag/tag/OutlineRenderTagBase.ts",
     "src/component/tag/tag/OutlineTag.ts",
     "src/component/tag/tag/RenderTag.ts",
     "src/component/tag/tag/SpotRenderTag.ts",
     "src/component/tag/tag/SpotTag.ts",
     "src/component/tag/tag/Tag.ts",
     "src/component/tag/tag/TagDomain.ts",
+    "src/component/utils/ComponentSize.ts",
     "src/component/utils/HandlerBase.ts",
     "src/component/utils/MeshFactory.ts",
     "src/component/utils/MeshScene.ts",
     "src/viewer/MouseService.ts",
     "src/viewer/Navigator.ts",
     "src/viewer/Observer.ts",
+    "src/viewer/PanService.ts",
     "src/viewer/PlayService.ts",
     "src/viewer/Projection.ts",
     "src/viewer/SpriteService.ts",
     "src/viewer/Viewer.ts"
   ],
   "names": [],
-  "mappings": "AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClHA;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1oBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC7NA;AACA;AACA;AACA;AACA;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACvrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AChOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1mBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACljBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5GA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACr7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrFA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3aA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC37BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACRA,qCAAkC;AAA1B,wBAAA,KAAK,CAAA;AACb,mDAAgD;AAAxC,sCAAA,YAAY,CAAA;;;;;;;;ACDpB,mDAAgD;AAAxC,gCAAA,SAAS,CAAA;AACjB,iEAA8D;AAAtD,8CAAA,gBAAgB,CAAA;AACxB,6DAA0D;AAAlD,oCAAA,WAAW,CAAA;AACnB,6DAA0D;AAAlD,oCAAA,WAAW,CAAA;AACnB,yDAAsD;AAA9C,gCAAA,SAAS,CAAA;AACjB,iEAA8D;AAAtD,wCAAA,aAAa,CAAA;AACrB,yEAAsE;AAA9D,sDAAA,oBAAoB,CAAA;AAC5B,uEAAoE;AAA5D,oDAAA,mBAAmB,CAAA;AAC3B,iEAA8D;AAAtD,8CAAA,gBAAgB,CAAA;AACxB,6DAA0D;AAAlD,0CAAA,cAAc,CAAA;AACtB,6DAA0D;A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",
+  "mappings": "AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClHA;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1oBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC7NA;AACA;AACA;AACA;AACA;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACl1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACphDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtsCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AChOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1mBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACljBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5GA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;ACNA;AACA;AACA;AACA;AACA;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACr7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrFA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACPA;AACA;AACA;AACA;AACA;AACA;;ACLA;AACA;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3aA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC37BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACRA,qCAAkC;A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",
   "file": "generated.js",
   "sourceRoot": "",
   "sourcesContent": [
     "\"use strict\";\n\nmodule.exports = function isObject(x) {\n\treturn typeof x === \"object\" && x !== null;\n};\n",
     "/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */\n/* Geohash encoding/decoding and associated functions   (c) Chris Veness 2014-2016 / MIT Licence  */\n/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */\n\n'use strict';\n\n\n/**\n * Geohash encode, decode, bounds, neighbours.\n *\n * @namespace\n */\nvar Geohash = {};\n\n/* (Geohash-specific) Base32 map */\nGeohash.base32 = '0123456789bcdefghjkmnpqrstuvwxyz';\n\n/**\n * Encodes latitude/longitude to geohash, either to specified precision or to automatically\n * evaluated precision.\n *\n * @param   {number} lat - Latitude in degrees.\n * @param   {number} lon - Longitude in degrees.\n * @param   {number} [precision] - Number of characters in resulting geohash.\n * @returns {string} Geohash of supplied latitude/longitude.\n * @throws  Invalid geohash.\n *\n * @example\n *     var geohash = Geohash.encode(52.205, 0.119, 7); // geohash: 'u120fxw'\n */\nGeohash.encode = function(lat, lon, precision) {\n    // infer precision?\n    if (typeof precision == 'undefined') {\n        // refine geohash until it matches precision of supplied lat/lon\n        for (var p=1; p<=12; p++) {\n            var hash = Geohash.encode(lat, lon, p);\n            var posn = Geohash.decode(hash);\n            if (posn.lat==lat && posn.lon==lon) return hash;\n        }\n        precision = 12; // set to maximum\n    }\n\n    lat = Number(lat);\n    lon = Number(lon);\n    precision = Number(precision);\n\n    if (isNaN(lat) || isNaN(lon) || isNaN(precision)) throw new Error('Invalid geohash');\n\n    var idx = 0; // index into base32 map\n    var bit = 0; // each char holds 5 bits\n    var evenBit = true;\n    var geohash = '';\n\n    var latMin =  -90, latMax =  90;\n    var lonMin = -180, lonMax = 180;\n\n    while (geohash.length < precision) {\n        if (evenBit) {\n            // bisect E-W longitude\n            var lonMid = (lonMin + lonMax) / 2;\n            if (lon >= lonMid) {\n                idx = idx*2 + 1;\n                lonMin = lonMid;\n            } else {\n                idx = idx*2;\n                lonMax = lonMid;\n            }\n        } else {\n            // bisect N-S latitude\n            var latMid = (latMin + latMax) / 2;\n            if (lat >= latMid) {\n                idx = idx*2 + 1;\n                latMin = latMid;\n            } else {\n                idx = idx*2;\n                latMax = latMid;\n            }\n        }\n        evenBit = !evenBit;\n\n        if (++bit == 5) {\n            // 5 bits gives us a character: append it and start over\n            geohash += Geohash.base32.charAt(idx);\n            bit = 0;\n            idx = 0;\n        }\n    }\n\n    return geohash;\n};\n\n\n/**\n * Decode geohash to latitude/longitude (location is approximate centre of geohash cell,\n *     to reasonable precision).\n *\n * @param   {string} geohash - Geohash string to be converted to latitude/longitude.\n * @returns {{lat:number, lon:number}} (Center of) geohashed location.\n * @throws  Invalid geohash.\n *\n * @example\n *     var latlon = Geohash.decode('u120fxw'); // latlon: { lat: 52.205, lon: 0.1188 }\n */\nGeohash.decode = function(geohash) {\n\n    var bounds = Geohash.bounds(geohash); // <-- the hard work\n    // now just determine the centre of the cell...\n\n    var latMin = bounds.sw.lat, lonMin = bounds.sw.lon;\n    var latMax = bounds.ne.lat, lonMax = bounds.ne.lon;\n\n    // cell centre\n    var lat = (latMin + latMax)/2;\n    var lon = (lonMin + lonMax)/2;\n\n    // round to close to centre without excessive precision: ⌊2-log10(Δ°)⌋ decimal places\n    lat = lat.toFixed(Math.floor(2-Math.log(latMax-latMin)/Math.LN10));\n    lon = lon.toFixed(Math.floor(2-Math.log(lonMax-lonMin)/Math.LN10));\n\n    return { lat: Number(lat), lon: Number(lon) };\n};\n\n\n/**\n * Returns SW/NE latitude/longitude bounds of specified geohash.\n *\n * @param   {string} geohash - Cell that bounds are required of.\n * @returns {{sw: {lat: number, lon: number}, ne: {lat: number, lon: number}}}\n * @throws  Invalid geohash.\n */\nGeohash.bounds = function(geohash) {\n    if (geohash.length === 0) throw new Error('Invalid geohash');\n\n    geohash = geohash.toLowerCase();\n\n    var evenBit = true;\n    var latMin =  -90, latMax =  90;\n    var lonMin = -180, lonMax = 180;\n\n    for (var i=0; i<geohash.length; i++) {\n        var chr = geohash.charAt(i);\n        var idx = Geohash.base32.indexOf(chr);\n        if (idx == -1) throw new Error('Invalid geohash');\n\n        for (var n=4; n>=0; n--) {\n            var bitN = idx >> n & 1;\n            if (evenBit) {\n                // longitude\n                var lonMid = (lonMin+lonMax) / 2;\n                if (bitN == 1) {\n                    lonMin = lonMid;\n                } else {\n                    lonMax = lonMid;\n                }\n            } else {\n                // latitude\n                var latMid = (latMin+latMax) / 2;\n                if (bitN == 1) {\n                    latMin = latMid;\n                } else {\n                    latMax = latMid;\n                }\n            }\n            evenBit = !evenBit;\n        }\n    }\n\n    var bounds = {\n        sw: { lat: latMin, lon: lonMin },\n        ne: { lat: latMax, lon: lonMax },\n    };\n\n    return bounds;\n};\n\n\n/**\n * Determines adjacent cell in given direction.\n *\n * @param   geohash - Cell to which adjacent cell is required.\n * @param   direction - Direction from geohash (N/S/E/W).\n * @returns {string} Geocode of adjacent cell.\n * @throws  Invalid geohash.\n */\nGeohash.adjacent = function(geohash, direction) {\n    // based on github.com/davetroy/geohash-js\n\n    geohash = geohash.toLowerCase();\n    direction = direction.toLowerCase();\n\n    if (geohash.length === 0) throw new Error('Invalid geohash');\n    if ('nsew'.indexOf(direction) == -1) throw new Error('Invalid direction');\n\n    var neighbour = {\n        n: [ 'p0r21436x8zb9dcf5h7kjnmqesgutwvy', 'bc01fg45238967deuvhjyznpkmstqrwx' ],\n        s: [ '14365h7k9dcfesgujnmqp0r2twvyx8zb', '238967debc01fg45kmstqrwxuvhjyznp' ],\n        e: [ 'bc01fg45238967deuvhjyznpkmstqrwx', 'p0r21436x8zb9dcf5h7kjnmqesgutwvy' ],\n        w: [ '238967debc01fg45kmstqrwxuvhjyznp', '14365h7k9dcfesgujnmqp0r2twvyx8zb' ],\n    };\n    var border = {\n        n: [ 'prxz',     'bcfguvyz' ],\n        s: [ '028b',     '0145hjnp' ],\n        e: [ 'bcfguvyz', 'prxz'     ],\n        w: [ '0145hjnp', '028b'     ],\n    };\n\n    var lastCh = geohash.slice(-1);    // last character of hash\n    var parent = geohash.slice(0, -1); // hash without last character\n\n    var type = geohash.length % 2;\n\n    // check for edge-cases which don't share common prefix\n    if (border[direction][type].indexOf(lastCh) != -1 && parent !== '') {\n        parent = Geohash.adjacent(parent, direction);\n    }\n\n    // append letter for direction to parent\n    return parent + Geohash.base32.charAt(neighbour[direction][type].indexOf(lastCh));\n};\n\n\n/**\n * Returns all 8 adjacent cells to specified geohash.\n *\n * @param   {string} geohash - Geohash neighbours are required of.\n * @returns {{n,ne,e,se,s,sw,w,nw: string}}\n * @throws  Invalid geohash.\n */\nGeohash.neighbours = function(geohash) {\n    return {\n        'n':  Geohash.adjacent(geohash, 'n'),\n        'ne': Geohash.adjacent(Geohash.adjacent(geohash, 'n'), 'e'),\n        'e':  Geohash.adjacent(geohash, 'e'),\n        'se': Geohash.adjacent(Geohash.adjacent(geohash, 's'), 'e'),\n        's':  Geohash.adjacent(geohash, 's'),\n        'sw': Geohash.adjacent(Geohash.adjacent(geohash, 's'), 'w'),\n        'w':  Geohash.adjacent(geohash, 'w'),\n        'nw': Geohash.adjacent(Geohash.adjacent(geohash, 'n'), 'w'),\n    };\n};\n\n\n/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  */\nif (typeof module != 'undefined' && module.exports) module.exports = Geohash; // CommonJS, node.js\n",
     "/**\n * martinez v0.5.0\n * Martinez polygon clipping algorithm, does boolean operation on polygons (multipolygons, polygons with holes etc): intersection, union, difference, xor\n *\n * @author Alex Milevski <info@w8r.name>\n * @license MIT\n * @preserve\n */\n\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n  typeof define === 'function' && define.amd ? define(['exports'], factory) :\n  (factory((global.martinez = {})));\n}(this, (function (exports) { 'use strict';\n\n  function DEFAULT_COMPARE (a, b) { return a > b ? 1 : a < b ? -1 : 0; }\n\n  var SplayTree = function SplayTree(compare, noDuplicates) {\n    if ( compare === void 0 ) compare = DEFAULT_COMPARE;\n    if ( noDuplicates === void 0 ) noDuplicates = false;\n\n    this._compare = compare;\n    this._root = null;\n    this._size = 0;\n    this._noDuplicates = !!noDuplicates;\n  };\n\n  var prototypeAccessors = { size: { configurable: true } };\n\n\n  SplayTree.prototype.rotateLeft = function rotateLeft (x) {\n    var y = x.right;\n    if (y) {\n      x.right = y.left;\n      if (y.left) { y.left.parent = x; }\n      y.parent = x.parent;\n    }\n\n    if (!x.parent)              { this._root = y; }\n    else if (x === x.parent.left) { x.parent.left = y; }\n    else                        { x.parent.right = y; }\n    if (y) { y.left = x; }\n    x.parent = y;\n  };\n\n\n  SplayTree.prototype.rotateRight = function rotateRight (x) {\n    var y = x.left;\n    if (y) {\n      x.left = y.right;\n      if (y.right) { y.right.parent = x; }\n      y.parent = x.parent;\n    }\n\n    if (!x.parent)             { this._root = y; }\n    else if(x === x.parent.left) { x.parent.left = y; }\n    else                       { x.parent.right = y; }\n    if (y) { y.right = x; }\n    x.parent = y;\n  };\n\n\n  SplayTree.prototype._splay = function _splay (x) {\n      var this$1 = this;\n\n    while (x.parent) {\n      var p = x.parent;\n      if (!p.parent) {\n        if (p.left === x) { this$1.rotateRight(p); }\n        else            { this$1.rotateLeft(p); }\n      } else if (p.left === x && p.parent.left === p) {\n        this$1.rotateRight(p.parent);\n        this$1.rotateRight(p);\n      } else if (p.right === x && p.parent.right === p) {\n        this$1.rotateLeft(p.parent);\n        this$1.rotateLeft(p);\n      } else if (p.left === x && p.parent.right === p) {\n        this$1.rotateRight(p);\n        this$1.rotateLeft(p);\n      } else {\n        this$1.rotateLeft(p);\n        this$1.rotateRight(p);\n      }\n    }\n  };\n\n\n  SplayTree.prototype.splay = function splay (x) {\n      var this$1 = this;\n\n    var p, gp, ggp, l, r;\n\n    while (x.parent) {\n      p = x.parent;\n      gp = p.parent;\n\n      if (gp && gp.parent) {\n        ggp = gp.parent;\n        if (ggp.left === gp) { ggp.left= x; }\n        else               { ggp.right = x; }\n        x.parent = ggp;\n      } else {\n        x.parent = null;\n        this$1._root = x;\n      }\n\n      l = x.left; r = x.right;\n\n      if (x === p.left) { // left\n        if (gp) {\n          if (gp.left === p) {\n            /* zig-zig */\n            if (p.right) {\n              gp.left = p.right;\n              gp.left.parent = gp;\n            } else { gp.left = null; }\n\n            p.right = gp;\n            gp.parent = p;\n          } else {\n            /* zig-zag */\n            if (l) {\n              gp.right = l;\n              l.parent = gp;\n            } else { gp.right = null; }\n\n            x.left  = gp;\n            gp.parent = x;\n          }\n        }\n        if (r) {\n          p.left = r;\n          r.parent = p;\n        } else { p.left = null; }\n\n        x.right= p;\n        p.parent = x;\n      } else { // right\n        if (gp) {\n          if (gp.right === p) {\n            /* zig-zig */\n            if (p.left) {\n              gp.right = p.left;\n              gp.right.parent = gp;\n            } else { gp.right = null; }\n\n            p.left = gp;\n            gp.parent = p;\n          } else {\n            /* zig-zag */\n            if (r) {\n              gp.left = r;\n              r.parent = gp;\n            } else { gp.left = null; }\n\n            x.right = gp;\n            gp.parent = x;\n          }\n        }\n        if (l) {\n          p.right = l;\n          l.parent = p;\n        } else { p.right = null; }\n\n        x.left = p;\n        p.parent = x;\n      }\n    }\n  };\n\n\n  SplayTree.prototype.replace = function replace (u, v) {\n    if (!u.parent) { this._root = v; }\n    else if (u === u.parent.left) { u.parent.left = v; }\n    else { u.parent.right = v; }\n    if (v) { v.parent = u.parent; }\n  };\n\n\n  SplayTree.prototype.minNode = function minNode (u) {\n      if ( u === void 0 ) u = this._root;\n\n    if (u) { while (u.left) { u = u.left; } }\n    return u;\n  };\n\n\n  SplayTree.prototype.maxNode = function maxNode (u) {\n      if ( u === void 0 ) u = this._root;\n\n    if (u) { while (u.right) { u = u.right; } }\n    return u;\n  };\n\n\n  SplayTree.prototype.insert = function insert (key, data) {\n    var z = this._root;\n    var p = null;\n    var comp = this._compare;\n    var cmp;\n\n    if (this._noDuplicates) {\n      while (z) {\n        p = z;\n        cmp = comp(z.key, key);\n        if (cmp === 0) { return; }\n        else if (comp(z.key, key) < 0) { z = z.right; }\n        else { z = z.left; }\n      }\n    } else {\n      while (z) {\n        p = z;\n        if (comp(z.key, key) < 0) { z = z.right; }\n        else { z = z.left; }\n      }\n    }\n\n    z = { key: key, data: data, left: null, right: null, parent: p };\n\n    if (!p)                        { this._root = z; }\n    else if (comp(p.key, z.key) < 0) { p.right = z; }\n    else                           { p.left= z; }\n\n    this.splay(z);\n    this._size++;\n    return z;\n  };\n\n\n  SplayTree.prototype.find = function find (key) {\n    var z  = this._root;\n    var comp = this._compare;\n    while (z) {\n      var cmp = comp(z.key, key);\n      if    (cmp < 0) { z = z.right; }\n      else if (cmp > 0) { z = z.left; }\n      else            { return z; }\n    }\n    return null;\n  };\n\n  /**\n   * Whether the tree contains a node with the given key\n   * @param{Key} key\n   * @return {boolean} true/false\n   */\n  SplayTree.prototype.contains = function contains (key) {\n    var node     = this._root;\n    var comparator = this._compare;\n    while (node){\n      var cmp = comparator(key, node.key);\n      if    (cmp === 0) { return true; }\n      else if (cmp < 0) { node = node.left; }\n      else              { node = node.right; }\n    }\n\n    return false;\n  };\n\n\n  SplayTree.prototype.remove = function remove (key) {\n    var z = this.find(key);\n\n    if (!z) { return false; }\n\n    this.splay(z);\n\n    if (!z.left) { this.replace(z, z.right); }\n    else if (!z.right) { this.replace(z, z.left); }\n    else {\n      var y = this.minNode(z.right);\n      if (y.parent !== z) {\n        this.replace(y, y.right);\n        y.right = z.right;\n        y.right.parent = y;\n      }\n      this.replace(z, y);\n      y.left = z.left;\n      y.left.parent = y;\n    }\n\n    this._size--;\n    return true;\n  };\n\n\n  SplayTree.prototype.removeNode = function removeNode (z) {\n    if (!z) { return false; }\n\n    this.splay(z);\n\n    if (!z.left) { this.replace(z, z.right); }\n    else if (!z.right) { this.replace(z, z.left); }\n    else {\n      var y = this.minNode(z.right);\n      if (y.parent !== z) {\n        this.replace(y, y.right);\n        y.right = z.right;\n        y.right.parent = y;\n      }\n      this.replace(z, y);\n      y.left = z.left;\n      y.left.parent = y;\n    }\n\n    this._size--;\n    return true;\n  };\n\n\n  SplayTree.prototype.erase = function erase (key) {\n    var z = this.find(key);\n    if (!z) { return; }\n\n    this.splay(z);\n\n    var s = z.left;\n    var t = z.right;\n\n    var sMax = null;\n    if (s) {\n      s.parent = null;\n      sMax = this.maxNode(s);\n      this.splay(sMax);\n      this._root = sMax;\n    }\n    if (t) {\n      if (s) { sMax.right = t; }\n      else { this._root = t; }\n      t.parent = sMax;\n    }\n\n    this._size--;\n  };\n\n  /**\n   * Removes and returns the node with smallest key\n   * @return {?Node}\n   */\n  SplayTree.prototype.pop = function pop () {\n    var node = this._root, returnValue = null;\n    if (node) {\n      while (node.left) { node = node.left; }\n      returnValue = { key: node.key, data: node.data };\n      this.remove(node.key);\n    }\n    return returnValue;\n  };\n\n\n  /* eslint-disable class-methods-use-this */\n\n  /**\n   * Successor node\n   * @param{Node} node\n   * @return {?Node}\n   */\n  SplayTree.prototype.next = function next (node) {\n    var successor = node;\n    if (successor) {\n      if (successor.right) {\n        successor = successor.right;\n        while (successor && successor.left) { successor = successor.left; }\n      } else {\n        successor = node.parent;\n        while (successor && successor.right === node) {\n          node = successor; successor = successor.parent;\n        }\n      }\n    }\n    return successor;\n  };\n\n\n  /**\n   * Predecessor node\n   * @param{Node} node\n   * @return {?Node}\n   */\n  SplayTree.prototype.prev = function prev (node) {\n    var predecessor = node;\n    if (predecessor) {\n      if (predecessor.left) {\n        predecessor = predecessor.left;\n        while (predecessor && predecessor.right) { predecessor = predecessor.right; }\n      } else {\n        predecessor = node.parent;\n        while (predecessor && predecessor.left === node) {\n          node = predecessor;\n          predecessor = predecessor.parent;\n        }\n      }\n    }\n    return predecessor;\n  };\n  /* eslint-enable class-methods-use-this */\n\n\n  /**\n   * @param{forEachCallback} callback\n   * @return {SplayTree}\n   */\n  SplayTree.prototype.forEach = function forEach (callback) {\n    var current = this._root;\n    var s = [], done = false, i = 0;\n\n    while (!done) {\n      // Reach the left most Node of the current Node\n      if (current) {\n        // Place pointer to a tree node on the stack\n        // before traversing the node's left subtree\n        s.push(current);\n        current = current.left;\n      } else {\n        // BackTrack from the empty subtree and visit the Node\n        // at the top of the stack; however, if the stack is\n        // empty you are done\n        if (s.length > 0) {\n          current = s.pop();\n          callback(current, i++);\n\n          // We have visited the node and its left\n          // subtree. Now, it's right subtree's turn\n          current = current.right;\n        } else { done = true; }\n      }\n    }\n    return this;\n  };\n\n\n  /**\n   * Walk key range from `low` to `high`. Stops if `fn` returns a value.\n   * @param{Key}    low\n   * @param{Key}    high\n   * @param{Function} fn\n   * @param{*?}     ctx\n   * @return {SplayTree}\n   */\n  SplayTree.prototype.range = function range (low, high, fn, ctx) {\n      var this$1 = this;\n\n    var Q = [];\n    var compare = this._compare;\n    var node = this._root, cmp;\n\n    while (Q.length !== 0 || node) {\n      if (node) {\n        Q.push(node);\n        node = node.left;\n      } else {\n        node = Q.pop();\n        cmp = compare(node.key, high);\n        if (cmp > 0) {\n          break;\n        } else if (compare(node.key, low) >= 0) {\n          if (fn.call(ctx, node)) { return this$1; } // stop if smth is returned\n        }\n        node = node.right;\n      }\n    }\n    return this;\n  };\n\n  /**\n   * Returns all keys in order\n   * @return {Array<Key>}\n   */\n  SplayTree.prototype.keys = function keys () {\n    var current = this._root;\n    var s = [], r = [], done = false;\n\n    while (!done) {\n      if (current) {\n        s.push(current);\n        current = current.left;\n      } else {\n        if (s.length > 0) {\n          current = s.pop();\n          r.push(current.key);\n          current = current.right;\n        } else { done = true; }\n      }\n    }\n    return r;\n  };\n\n\n  /**\n   * Returns `data` fields of all nodes in order.\n   * @return {Array<Value>}\n   */\n  SplayTree.prototype.values = function values () {\n    var current = this._root;\n    var s = [], r = [], done = false;\n\n    while (!done) {\n      if (current) {\n        s.push(current);\n        current = current.left;\n      } else {\n        if (s.length > 0) {\n          current = s.pop();\n          r.push(current.data);\n          current = current.right;\n        } else { done = true; }\n      }\n    }\n    return r;\n  };\n\n\n  /**\n   * Returns node at given index\n   * @param{number} index\n   * @return {?Node}\n   */\n  SplayTree.prototype.at = function at (index) {\n    // removed after a consideration, more misleading than useful\n    // index = index % this.size;\n    // if (index < 0) index = this.size - index;\n\n    var current = this._root;\n    var s = [], done = false, i = 0;\n\n    while (!done) {\n      if (current) {\n        s.push(current);\n        current = current.left;\n      } else {\n        if (s.length > 0) {\n          current = s.pop();\n          if (i === index) { return current; }\n          i++;\n          current = current.right;\n        } else { done = true; }\n      }\n    }\n    return null;\n  };\n\n  /**\n   * Bulk-load items. Both array have to be same size\n   * @param{Array<Key>}  keys\n   * @param{Array<Value>}[values]\n   * @param{Boolean}     [presort=false] Pre-sort keys and values, using\n   *                                       tree's comparator. Sorting is done\n   *                                       in-place\n   * @return {AVLTree}\n   */\n  SplayTree.prototype.load = function load (keys, values, presort) {\n      if ( keys === void 0 ) keys = [];\n      if ( values === void 0 ) values = [];\n      if ( presort === void 0 ) presort = false;\n\n    if (this._size !== 0) { throw new Error('bulk-load: tree is not empty'); }\n    var size = keys.length;\n    if (presort) { sort(keys, values, 0, size - 1, this._compare); }\n    this._root = loadRecursive(null, keys, values, 0, size);\n    this._size = size;\n    return this;\n  };\n\n\n  SplayTree.prototype.min = function min () {\n    var node = this.minNode(this._root);\n    if (node) { return node.key; }\n    else    { return null; }\n  };\n\n\n  SplayTree.prototype.max = function max () {\n    var node = this.maxNode(this._root);\n    if (node) { return node.key; }\n    else    { return null; }\n  };\n\n  SplayTree.prototype.isEmpty = function isEmpty () { return this._root === null; };\n  prototypeAccessors.size.get = function () { return this._size; };\n\n\n  /**\n   * Create a tree and load it with items\n   * @param{Array<Key>}        keys\n   * @param{Array<Value>?}      [values]\n\n   * @param{Function?}          [comparator]\n   * @param{Boolean?}           [presort=false] Pre-sort keys and values, using\n   *                                             tree's comparator. Sorting is done\n   *                                             in-place\n   * @param{Boolean?}           [noDuplicates=false] Allow duplicates\n   * @return {SplayTree}\n   */\n  SplayTree.createTree = function createTree (keys, values, comparator, presort, noDuplicates) {\n    return new SplayTree(comparator, noDuplicates).load(keys, values, presort);\n  };\n\n  Object.defineProperties( SplayTree.prototype, prototypeAccessors );\n\n\n  function loadRecursive (parent, keys, values, start, end) {\n    var size = end - start;\n    if (size > 0) {\n      var middle = start + Math.floor(size / 2);\n      var key    = keys[middle];\n      var data   = values[middle];\n      var node   = { key: key, data: data, parent: parent };\n      node.left    = loadRecursive(node, keys, values, start, middle);\n      node.right   = loadRecursive(node, keys, values, middle + 1, end);\n      return node;\n    }\n    return null;\n  }\n\n\n  function sort(keys, values, left, right, compare) {\n    if (left >= right) { return; }\n\n    var pivot = keys[(left + right) >> 1];\n    var i = left - 1;\n    var j = right + 1;\n\n    while (true) {\n      do { i++; } while (compare(keys[i], pivot) < 0);\n      do { j--; } while (compare(keys[j], pivot) > 0);\n      if (i >= j) { break; }\n\n      var tmp = keys[i];\n      keys[i] = keys[j];\n      keys[j] = tmp;\n\n      tmp = values[i];\n      values[i] = values[j];\n      values[j] = tmp;\n    }\n\n    sort(keys, values,  left,     j, compare);\n    sort(keys, values, j + 1, right, compare);\n  }\n\n  var NORMAL               = 0;\n  var NON_CONTRIBUTING     = 1;\n  var SAME_TRANSITION      = 2;\n  var DIFFERENT_TRANSITION = 3;\n\n  var INTERSECTION = 0;\n  var UNION        = 1;\n  var DIFFERENCE   = 2;\n  var XOR          = 3;\n\n  /**\n   * @param  {SweepEvent} event\n   * @param  {SweepEvent} prev\n   * @param  {Operation} operation\n   */\n  function computeFields (event, prev, operation) {\n    // compute inOut and otherInOut fields\n    if (prev === null) {\n      event.inOut      = false;\n      event.otherInOut = true;\n\n    // previous line segment in sweepline belongs to the same polygon\n    } else {\n      if (event.isSubject === prev.isSubject) {\n        event.inOut      = !prev.inOut;\n        event.otherInOut = prev.otherInOut;\n\n      // previous line segment in sweepline belongs to the clipping polygon\n      } else {\n        event.inOut      = !prev.otherInOut;\n        event.otherInOut = prev.isVertical() ? !prev.inOut : prev.inOut;\n      }\n\n      // compute prevInResult field\n      if (prev) {\n        event.prevInResult = (!inResult(prev, operation) || prev.isVertical())\n          ? prev.prevInResult : prev;\n      }\n    }\n\n    // check if the line segment belongs to the Boolean operation\n    event.inResult = inResult(event, operation);\n  }\n\n\n  /* eslint-disable indent */\n  function inResult(event, operation) {\n    switch (event.type) {\n      case NORMAL:\n        switch (operation) {\n          case INTERSECTION:\n            return !event.otherInOut;\n          case UNION:\n            return event.otherInOut;\n          case DIFFERENCE:\n            // return (event.isSubject && !event.otherInOut) ||\n            //         (!event.isSubject && event.otherInOut);\n            return (event.isSubject && event.otherInOut) ||\n                    (!event.isSubject && !event.otherInOut);\n          case XOR:\n            return true;\n        }\n        break;\n      case SAME_TRANSITION:\n        return operation === INTERSECTION || operation === UNION;\n      case DIFFERENT_TRANSITION:\n        return operation === DIFFERENCE;\n      case NON_CONTRIBUTING:\n        return false;\n    }\n    return false;\n  }\n  /* eslint-enable indent */\n\n  var SweepEvent = function SweepEvent (point, left, otherEvent, isSubject, edgeType) {\n\n    /**\n     * Is left endpoint?\n     * @type {Boolean}\n     */\n    this.left = left;\n\n    /**\n     * @type {Array.<Number>}\n     */\n    this.point = point;\n\n    /**\n     * Other edge reference\n     * @type {SweepEvent}\n     */\n    this.otherEvent = otherEvent;\n\n    /**\n     * Belongs to source or clipping polygon\n     * @type {Boolean}\n     */\n    this.isSubject = isSubject;\n\n    /**\n     * Edge contribution type\n     * @type {Number}\n     */\n    this.type = edgeType || NORMAL;\n\n\n    /**\n     * In-out transition for the sweepline crossing polygon\n     * @type {Boolean}\n     */\n    this.inOut = false;\n\n\n    /**\n     * @type {Boolean}\n     */\n    this.otherInOut = false;\n\n    /**\n     * Previous event in result?\n     * @type {SweepEvent}\n     */\n    this.prevInResult = null;\n\n    /**\n     * Does event belong to result?\n     * @type {Boolean}\n     */\n    this.inResult = false;\n\n\n    // connection step\n\n    /**\n     * @type {Boolean}\n     */\n    this.resultInOut = false;\n\n    this.isExteriorRing = true;\n  };\n\n\n  /**\n   * @param{Array.<Number>}p\n   * @return {Boolean}\n   */\n  SweepEvent.prototype.isBelow = function isBelow (p) {\n    var p0 = this.point, p1 = this.otherEvent.point;\n    return this.left\n      ? (p0[0] - p[0]) * (p1[1] - p[1]) - (p1[0] - p[0]) * (p0[1] - p[1]) > 0\n      // signedArea(this.point, this.otherEvent.point, p) > 0 :\n      : (p1[0] - p[0]) * (p0[1] - p[1]) - (p0[0] - p[0]) * (p1[1] - p[1]) > 0;\n      //signedArea(this.otherEvent.point, this.point, p) > 0;\n  };\n\n\n  /**\n   * @param{Array.<Number>}p\n   * @return {Boolean}\n   */\n  SweepEvent.prototype.isAbove = function isAbove (p) {\n    return !this.isBelow(p);\n  };\n\n\n  /**\n   * @return {Boolean}\n   */\n  SweepEvent.prototype.isVertical = function isVertical () {\n    return this.point[0] === this.otherEvent.point[0];\n  };\n\n\n  SweepEvent.prototype.clone = function clone () {\n    var copy = new SweepEvent(\n      this.point, this.left, this.otherEvent, this.isSubject, this.type);\n\n    copy.inResult     = this.inResult;\n    copy.prevInResult = this.prevInResult;\n    copy.isExteriorRing = this.isExteriorRing;\n    copy.inOut        = this.inOut;\n    copy.otherInOut   = this.otherInOut;\n\n    return copy;\n  };\n\n  function equals(p1, p2) {\n    if (p1[0] === p2[0]) {\n      if (p1[1] === p2[1]) {\n        return true;\n      } else {\n        return false;\n      }\n    }\n    return false;\n  }\n\n  // const EPSILON = 1e-9;\n  // const abs = Math.abs;\n  // TODO https://github.com/w8r/martinez/issues/6#issuecomment-262847164\n  // Precision problem.\n  //\n  // module.exports = function equals(p1, p2) {\n  //   return abs(p1[0] - p2[0]) <= EPSILON && abs(p1[1] - p2[1]) <= EPSILON;\n  // };\n\n  /**\n   * Signed area of the triangle (p0, p1, p2)\n   * @param  {Array.<Number>} p0\n   * @param  {Array.<Number>} p1\n   * @param  {Array.<Number>} p2\n   * @return {Number}\n   */\n  function signedArea(p0, p1, p2) {\n    return (p0[0] - p2[0]) * (p1[1] - p2[1]) - (p1[0] - p2[0]) * (p0[1] - p2[1]);\n  }\n\n  /**\n   * @param  {SweepEvent} e1\n   * @param  {SweepEvent} e2\n   * @return {Number}\n   */\n  function compareEvents(e1, e2) {\n    var p1 = e1.point;\n    var p2 = e2.point;\n\n    // Different x-coordinate\n    if (p1[0] > p2[0]) { return 1; }\n    if (p1[0] < p2[0]) { return -1; }\n\n    // Different points, but same x-coordinate\n    // Event with lower y-coordinate is processed first\n    if (p1[1] !== p2[1]) { return p1[1] > p2[1] ? 1 : -1; }\n\n    return specialCases(e1, e2, p1, p2);\n  }\n\n\n  /* eslint-disable no-unused-vars */\n  function specialCases(e1, e2, p1, p2) {\n    // Same coordinates, but one is a left endpoint and the other is\n    // a right endpoint. The right endpoint is processed first\n    if (e1.left !== e2.left)\n      { return e1.left ? 1 : -1; }\n\n    // const p2 = e1.otherEvent.point, p3 = e2.otherEvent.point;\n    // const sa = (p1[0] - p3[0]) * (p2[1] - p3[1]) - (p2[0] - p3[0]) * (p1[1] - p3[1])\n    // Same coordinates, both events\n    // are left endpoints or right endpoints.\n    // not collinear\n    if (signedArea(p1, e1.otherEvent.point, e2.otherEvent.point) !== 0) {\n      // the event associate to the bottom segment is processed first\n      return (!e1.isBelow(e2.otherEvent.point)) ? 1 : -1;\n    }\n\n    return (!e1.isSubject && e2.isSubject) ? 1 : -1;\n  }\n  /* eslint-enable no-unused-vars */\n\n  /**\n   * @param  {SweepEvent} se\n   * @param  {Array.<Number>} p\n   * @param  {Queue} queue\n   * @return {Queue}\n   */\n  function divideSegment(se, p, queue)  {\n    var r = new SweepEvent(p, false, se,            se.isSubject);\n    var l = new SweepEvent(p, true,  se.otherEvent, se.isSubject);\n\n    /* eslint-disable no-console */\n    if (equals(se.point, se.otherEvent.point)) {\n\n      console.warn('what is that, a collapsed segment?', se);\n    }\n    /* eslint-enable no-console */\n\n    r.contourId = l.contourId = se.contourId;\n\n    // avoid a rounding error. The left event would be processed after the right event\n    if (compareEvents(l, se.otherEvent) > 0) {\n      se.otherEvent.left = true;\n      l.left = false;\n    }\n\n    // avoid a rounding error. The left event would be processed after the right event\n    // if (compareEvents(se, r) > 0) {}\n\n    se.otherEvent.otherEvent = l;\n    se.otherEvent = r;\n\n    queue.push(l);\n    queue.push(r);\n\n    return queue;\n  }\n\n  //const EPS = 1e-9;\n\n  /**\n   * Finds the magnitude of the cross product of two vectors (if we pretend\n   * they're in three dimensions)\n   *\n   * @param {Object} a First vector\n   * @param {Object} b Second vector\n   * @private\n   * @returns {Number} The magnitude of the cross product\n   */\n  function crossProduct(a, b) {\n    return (a[0] * b[1]) - (a[1] * b[0]);\n  }\n\n  /**\n   * Finds the dot product of two vectors.\n   *\n   * @param {Object} a First vector\n   * @param {Object} b Second vector\n   * @private\n   * @returns {Number} The dot product\n   */\n  function dotProduct(a, b) {\n    return (a[0] * b[0]) + (a[1] * b[1]);\n  }\n\n  /**\n   * Finds the intersection (if any) between two line segments a and b, given the\n   * line segments' end points a1, a2 and b1, b2.\n   *\n   * This algorithm is based on Schneider and Eberly.\n   * http://www.cimec.org.ar/~ncalvo/Schneider_Eberly.pdf\n   * Page 244.\n   *\n   * @param {Array.<Number>} a1 point of first line\n   * @param {Array.<Number>} a2 point of first line\n   * @param {Array.<Number>} b1 point of second line\n   * @param {Array.<Number>} b2 point of second line\n   * @param {Boolean=}       noEndpointTouch whether to skip single touchpoints\n   *                                         (meaning connected segments) as\n   *                                         intersections\n   * @returns {Array.<Array.<Number>>|Null} If the lines intersect, the point of\n   * intersection. If they overlap, the two end points of the overlapping segment.\n   * Otherwise, null.\n   */\n  function intersection (a1, a2, b1, b2, noEndpointTouch) {\n    // The algorithm expects our lines in the form P + sd, where P is a point,\n    // s is on the interval [0, 1], and d is a vector.\n    // We are passed two points. P can be the first point of each pair. The\n    // vector, then, could be thought of as the distance (in x and y components)\n    // from the first point to the second point.\n    // So first, let's make our vectors:\n    var va = [a2[0] - a1[0], a2[1] - a1[1]];\n    var vb = [b2[0] - b1[0], b2[1] - b1[1]];\n    // We also define a function to convert back to regular point form:\n\n    /* eslint-disable arrow-body-style */\n\n    function toPoint(p, s, d) {\n      return [\n        p[0] + s * d[0],\n        p[1] + s * d[1]\n      ];\n    }\n\n    /* eslint-enable arrow-body-style */\n\n    // The rest is pretty much a straight port of the algorithm.\n    var e = [b1[0] - a1[0], b1[1] - a1[1]];\n    var kross    = crossProduct(va, vb);\n    var sqrKross = kross * kross;\n    var sqrLenA  = dotProduct(va, va);\n    //const sqrLenB  = dotProduct(vb, vb);\n\n    // Check for line intersection. This works because of the properties of the\n    // cross product -- specifically, two vectors are parallel if and only if the\n    // cross product is the 0 vector. The full calculation involves relative error\n    // to account for possible very small line segments. See Schneider & Eberly\n    // for details.\n    if (sqrKross > 0/* EPS * sqrLenB * sqLenA */) {\n      // If they're not parallel, then (because these are line segments) they\n      // still might not actually intersect. This code checks that the\n      // intersection point of the lines is actually on both line segments.\n      var s = crossProduct(e, vb) / kross;\n      if (s < 0 || s > 1) {\n        // not on line segment a\n        return null;\n      }\n      var t = crossProduct(e, va) / kross;\n      if (t < 0 || t > 1) {\n        // not on line segment b\n        return null;\n      }\n      if (s === 0 || s === 1) {\n        // on an endpoint of line segment a\n        return noEndpointTouch ? null : [toPoint(a1, s, va)];\n      }\n      if (t === 0 || t === 1) {\n        // on an endpoint of line segment b\n        return noEndpointTouch ? null : [toPoint(b1, t, vb)];\n      }\n      return [toPoint(a1, s, va)];\n    }\n\n    // If we've reached this point, then the lines are either parallel or the\n    // same, but the segments could overlap partially or fully, or not at all.\n    // So we need to find the overlap, if any. To do that, we can use e, which is\n    // the (vector) difference between the two initial points. If this is parallel\n    // with the line itself, then the two lines are the same line, and there will\n    // be overlap.\n    //const sqrLenE = dotProduct(e, e);\n    kross = crossProduct(e, va);\n    sqrKross = kross * kross;\n\n    if (sqrKross > 0 /* EPS * sqLenB * sqLenE */) {\n    // Lines are just parallel, not the same. No overlap.\n      return null;\n    }\n\n    var sa = dotProduct(va, e) / sqrLenA;\n    var sb = sa + dotProduct(va, vb) / sqrLenA;\n    var smin = Math.min(sa, sb);\n    var smax = Math.max(sa, sb);\n\n    // this is, essentially, the FindIntersection acting on floats from\n    // Schneider & Eberly, just inlined into this function.\n    if (smin <= 1 && smax >= 0) {\n\n      // overlap on an end point\n      if (smin === 1) {\n        return noEndpointTouch ? null : [toPoint(a1, smin > 0 ? smin : 0, va)];\n      }\n\n      if (smax === 0) {\n        return noEndpointTouch ? null : [toPoint(a1, smax < 1 ? smax : 1, va)];\n      }\n\n      if (noEndpointTouch && smin === 0 && smax === 1) { return null; }\n\n      // There's overlap on a segment -- two points of intersection. Return both.\n      return [\n        toPoint(a1, smin > 0 ? smin : 0, va),\n        toPoint(a1, smax < 1 ? smax : 1, va)\n      ];\n    }\n\n    return null;\n  }\n\n  /**\n   * @param  {SweepEvent} se1\n   * @param  {SweepEvent} se2\n   * @param  {Queue}      queue\n   * @return {Number}\n   */\n  function possibleIntersection (se1, se2, queue) {\n    // that disallows self-intersecting polygons,\n    // did cost us half a day, so I'll leave it\n    // out of respect\n    // if (se1.isSubject === se2.isSubject) return;\n    var inter = intersection(\n      se1.point, se1.otherEvent.point,\n      se2.point, se2.otherEvent.point\n    );\n\n    var nintersections = inter ? inter.length : 0;\n    if (nintersections === 0) { return 0; } // no intersection\n\n    // the line segments intersect at an endpoint of both line segments\n    if ((nintersections === 1) &&\n        (equals(se1.point, se2.point) ||\n         equals(se1.otherEvent.point, se2.otherEvent.point))) {\n      return 0;\n    }\n\n    if (nintersections === 2 && se1.isSubject === se2.isSubject) {\n      // if(se1.contourId === se2.contourId){\n      // console.warn('Edges of the same polygon overlap',\n      //   se1.point, se1.otherEvent.point, se2.point, se2.otherEvent.point);\n      // }\n      //throw new Error('Edges of the same polygon overlap');\n      return 0;\n    }\n\n    // The line segments associated to se1 and se2 intersect\n    if (nintersections === 1) {\n\n      // if the intersection point is not an endpoint of se1\n      if (!equals(se1.point, inter[0]) && !equals(se1.otherEvent.point, inter[0])) {\n        divideSegment(se1, inter[0], queue);\n      }\n\n      // if the intersection point is not an endpoint of se2\n      if (!equals(se2.point, inter[0]) && !equals(se2.otherEvent.point, inter[0])) {\n        divideSegment(se2, inter[0], queue);\n      }\n      return 1;\n    }\n\n    // The line segments associated to se1 and se2 overlap\n    var events        = [];\n    var leftCoincide  = false;\n    var rightCoincide = false;\n\n    if (equals(se1.point, se2.point)) {\n      leftCoincide = true; // linked\n    } else if (compareEvents(se1, se2) === 1) {\n      events.push(se2, se1);\n    } else {\n      events.push(se1, se2);\n    }\n\n    if (equals(se1.otherEvent.point, se2.otherEvent.point)) {\n      rightCoincide = true;\n    } else if (compareEvents(se1.otherEvent, se2.otherEvent) === 1) {\n      events.push(se2.otherEvent, se1.otherEvent);\n    } else {\n      events.push(se1.otherEvent, se2.otherEvent);\n    }\n\n    if ((leftCoincide && rightCoincide) || leftCoincide) {\n      // both line segments are equal or share the left endpoint\n      se2.type = NON_CONTRIBUTING;\n      se1.type = (se2.inOut === se1.inOut)\n        ? SAME_TRANSITION : DIFFERENT_TRANSITION;\n\n      if (leftCoincide && !rightCoincide) {\n        // honestly no idea, but changing events selection from [2, 1]\n        // to [0, 1] fixes the overlapping self-intersecting polygons issue\n        divideSegment(events[1].otherEvent, events[0].point, queue);\n      }\n      return 2;\n    }\n\n    // the line segments share the right endpoint\n    if (rightCoincide) {\n      divideSegment(events[0], events[1].point, queue);\n      return 3;\n    }\n\n    // no line segment includes totally the other one\n    if (events[0] !== events[3].otherEvent) {\n      divideSegment(events[0], events[1].point, queue);\n      divideSegment(events[1], events[2].point, queue);\n      return 3;\n    }\n\n    // one line segment includes the other one\n    divideSegment(events[0], events[1].point, queue);\n    divideSegment(events[3].otherEvent, events[2].point, queue);\n\n    return 3;\n  }\n\n  /**\n   * @param  {SweepEvent} le1\n   * @param  {SweepEvent} le2\n   * @return {Number}\n   */\n  function compareSegments(le1, le2) {\n    if (le1 === le2) { return 0; }\n\n    // Segments are not collinear\n    if (signedArea(le1.point, le1.otherEvent.point, le2.point) !== 0 ||\n      signedArea(le1.point, le1.otherEvent.point, le2.otherEvent.point) !== 0) {\n\n      // If they share their left endpoint use the right endpoint to sort\n      if (equals(le1.point, le2.point)) { return le1.isBelow(le2.otherEvent.point) ? -1 : 1; }\n\n      // Different left endpoint: use the left endpoint to sort\n      if (le1.point[0] === le2.point[0]) { return le1.point[1] < le2.point[1] ? -1 : 1; }\n\n      // has the line segment associated to e1 been inserted\n      // into S after the line segment associated to e2 ?\n      if (compareEvents(le1, le2) === 1) { return le2.isAbove(le1.point) ? -1 : 1; }\n\n      // The line segment associated to e2 has been inserted\n      // into S after the line segment associated to e1\n      return le1.isBelow(le2.point) ? -1 : 1;\n    }\n\n    if (le1.isSubject === le2.isSubject) { // same polygon\n      var p1 = le1.point, p2 = le2.point;\n      if (p1[0] === p2[0] && p1[1] === p2[1]/*equals(le1.point, le2.point)*/) {\n        p1 = le1.otherEvent.point; p2 = le2.otherEvent.point;\n        if (p1[0] === p2[0] && p1[1] === p2[1]) { return 0; }\n        else { return le1.contourId > le2.contourId ? 1 : -1; }\n      }\n    } else { // Segments are collinear, but belong to separate polygons\n      return le1.isSubject ? -1 : 1;\n    }\n\n    return compareEvents(le1, le2) === 1 ? 1 : -1;\n  }\n\n  function subdivide(eventQueue, subject, clipping, sbbox, cbbox, operation) {\n    var sweepLine = new SplayTree(compareSegments);\n    var sortedEvents = [];\n\n    var rightbound = Math.min(sbbox[2], cbbox[2]);\n\n    var prev, next, begin;\n\n    while (eventQueue.length !== 0) {\n      var event = eventQueue.pop();\n      sortedEvents.push(event);\n\n      // optimization by bboxes for intersection and difference goes here\n      if ((operation === INTERSECTION && event.point[0] > rightbound) ||\n          (operation === DIFFERENCE   && event.point[0] > sbbox[2])) {\n        break;\n      }\n\n      if (event.left) {\n        next  = prev = sweepLine.insert(event);\n        begin = sweepLine.minNode();\n\n        if (prev !== begin) { prev = sweepLine.prev(prev); }\n        else                { prev = null; }\n\n        next = sweepLine.next(next);\n\n        var prevEvent = prev ? prev.key : null;\n        var prevprevEvent = (void 0);\n        computeFields(event, prevEvent, operation);\n        if (next) {\n          if (possibleIntersection(event, next.key, eventQueue) === 2) {\n            computeFields(event, prevEvent, operation);\n            computeFields(event, next.key, operation);\n          }\n        }\n\n        if (prev) {\n          if (possibleIntersection(prev.key, event, eventQueue) === 2) {\n            var prevprev = prev;\n            if (prevprev !== begin) { prevprev = sweepLine.prev(prevprev); }\n            else                    { prevprev = null; }\n\n            prevprevEvent = prevprev ? prevprev.key : null;\n            computeFields(prevEvent, prevprevEvent, operation);\n            computeFields(event,     prevEvent,     operation);\n          }\n        }\n      } else {\n        event = event.otherEvent;\n        next = prev = sweepLine.find(event);\n\n        if (prev && next) {\n\n          if (prev !== begin) { prev = sweepLine.prev(prev); }\n          else                { prev = null; }\n\n          next = sweepLine.next(next);\n          sweepLine.remove(event);\n\n          if (next && prev) {\n            possibleIntersection(prev.key, next.key, eventQueue);\n          }\n        }\n      }\n    }\n    return sortedEvents;\n  }\n\n  /**\n   * @param  {Array.<SweepEvent>} sortedEvents\n   * @return {Array.<SweepEvent>}\n   */\n  function orderEvents(sortedEvents) {\n    var event, i, len, tmp;\n    var resultEvents = [];\n    for (i = 0, len = sortedEvents.length; i < len; i++) {\n      event = sortedEvents[i];\n      if ((event.left && event.inResult) ||\n        (!event.left && event.otherEvent.inResult)) {\n        resultEvents.push(event);\n      }\n    }\n    // Due to overlapping edges the resultEvents array can be not wholly sorted\n    var sorted = false;\n    while (!sorted) {\n      sorted = true;\n      for (i = 0, len = resultEvents.length; i < len; i++) {\n        if ((i + 1) < len &&\n          compareEvents(resultEvents[i], resultEvents[i + 1]) === 1) {\n          tmp = resultEvents[i];\n          resultEvents[i] = resultEvents[i + 1];\n          resultEvents[i + 1] = tmp;\n          sorted = false;\n        }\n      }\n    }\n\n\n    for (i = 0, len = resultEvents.length; i < len; i++) {\n      event = resultEvents[i];\n      event.pos = i;\n    }\n\n    // imagine, the right event is found in the beginning of the queue,\n    // when his left counterpart is not marked yet\n    for (i = 0, len = resultEvents.length; i < len; i++) {\n      event = resultEvents[i];\n      if (!event.left) {\n        tmp = event.pos;\n        event.pos = event.otherEvent.pos;\n        event.otherEvent.pos = tmp;\n      }\n    }\n\n    return resultEvents;\n  }\n\n\n  /**\n   * @param  {Number} pos\n   * @param  {Array.<SweepEvent>} resultEvents\n   * @param  {Object>}    processed\n   * @return {Number}\n   */\n  function nextPos(pos, resultEvents, processed, origIndex) {\n    var p, p1;\n    var newPos = pos + 1;\n    var length = resultEvents.length;\n\n    p  = resultEvents[pos].point;\n\n    if (newPos < length)\n      { p1 = resultEvents[newPos].point; }\n\n\n    // while in range and not the current one by value\n    while (newPos < length && p1[0] === p[0] && p1[1] === p[1]) {\n      if (!processed[newPos]) {\n        return newPos;\n      } else   {\n        newPos++;\n      }\n      p1 = resultEvents[newPos].point;\n    }\n\n    newPos = pos - 1;\n\n    while (processed[newPos] && newPos >= origIndex) {\n      newPos--;\n    }\n    return newPos;\n  }\n\n\n  /**\n   * @param  {Array.<SweepEvent>} sortedEvents\n   * @return {Array.<*>} polygons\n   */\n  function connectEdges(sortedEvents, operation) {\n    var i, len;\n    var resultEvents = orderEvents(sortedEvents);\n\n    // \"false\"-filled array\n    var processed = {};\n    var result = [];\n    var event;\n\n    for (i = 0, len = resultEvents.length; i < len; i++) {\n      if (processed[i]) { continue; }\n      var contour = [[]];\n\n      if (!resultEvents[i].isExteriorRing) {\n        if (operation === DIFFERENCE && !resultEvents[i].isSubject && result.length === 0) {\n          result.push(contour);\n        } else if (result.length === 0) {\n          result.push([[contour]]);\n        } else {\n          result[result.length - 1].push(contour[0]);\n        }\n      } else if (operation === DIFFERENCE && !resultEvents[i].isSubject && result.length > 1) {\n        result[result.length - 1].push(contour[0]);\n      } else {\n        result.push(contour);\n      }\n\n      var ringId = result.length - 1;\n      var pos = i;\n\n      var initial = resultEvents[i].point;\n      contour[0].push(initial);\n\n      while (pos >= i) {\n        event = resultEvents[pos];\n        processed[pos] = true;\n\n        if (event.left) {\n          event.resultInOut = false;\n          event.contourId   = ringId;\n        } else {\n          event.otherEvent.resultInOut = true;\n          event.otherEvent.contourId   = ringId;\n        }\n\n        pos = event.pos;\n        processed[pos] = true;\n        contour[0].push(resultEvents[pos].point);\n        pos = nextPos(pos, resultEvents, processed, i);\n      }\n\n      pos = pos === -1 ? i : pos;\n\n      event = resultEvents[pos];\n      processed[pos] = processed[event.pos] = true;\n      event.otherEvent.resultInOut = true;\n      event.otherEvent.contourId   = ringId;\n    }\n\n    // Handle if the result is a polygon (eg not multipoly)\n    // Commented it again, let's see what do we mean by that\n    // if (result.length === 1) result = result[0];\n    return result;\n  }\n\n  var tinyqueue = TinyQueue;\n  var default_1 = TinyQueue;\n\n  function TinyQueue(data, compare) {\n      var this$1 = this;\n\n      if (!(this instanceof TinyQueue)) { return new TinyQueue(data, compare); }\n\n      this.data = data || [];\n      this.length = this.data.length;\n      this.compare = compare || defaultCompare;\n\n      if (this.length > 0) {\n          for (var i = (this.length >> 1) - 1; i >= 0; i--) { this$1._down(i); }\n      }\n  }\n\n  function defaultCompare(a, b) {\n      return a < b ? -1 : a > b ? 1 : 0;\n  }\n\n  TinyQueue.prototype = {\n\n      push: function (item) {\n          this.data.push(item);\n          this.length++;\n          this._up(this.length - 1);\n      },\n\n      pop: function () {\n          if (this.length === 0) { return undefined; }\n\n          var top = this.data[0];\n          this.length--;\n\n          if (this.length > 0) {\n              this.data[0] = this.data[this.length];\n              this._down(0);\n          }\n          this.data.pop();\n\n          return top;\n      },\n\n      peek: function () {\n          return this.data[0];\n      },\n\n      _up: function (pos) {\n          var data = this.data;\n          var compare = this.compare;\n          var item = data[pos];\n\n          while (pos > 0) {\n              var parent = (pos - 1) >> 1;\n              var current = data[parent];\n              if (compare(item, current) >= 0) { break; }\n              data[pos] = current;\n              pos = parent;\n          }\n\n          data[pos] = item;\n      },\n\n      _down: function (pos) {\n          var this$1 = this;\n\n          var data = this.data;\n          var compare = this.compare;\n          var halfLength = this.length >> 1;\n          var item = data[pos];\n\n          while (pos < halfLength) {\n              var left = (pos << 1) + 1;\n              var right = left + 1;\n              var best = data[left];\n\n              if (right < this$1.length && compare(data[right], best) < 0) {\n                  left = right;\n                  best = data[right];\n              }\n              if (compare(best, item) >= 0) { break; }\n\n              data[pos] = best;\n              pos = left;\n          }\n\n          data[pos] = item;\n      }\n  };\n  tinyqueue.default = default_1;\n\n  var max = Math.max;\n  var min = Math.min;\n\n  var contourId = 0;\n\n\n  function processPolygon(contourOrHole, isSubject, depth, Q, bbox, isExteriorRing) {\n    var i, len, s1, s2, e1, e2;\n    for (i = 0, len = contourOrHole.length - 1; i < len; i++) {\n      s1 = contourOrHole[i];\n      s2 = contourOrHole[i + 1];\n      e1 = new SweepEvent(s1, false, undefined, isSubject);\n      e2 = new SweepEvent(s2, false, e1,        isSubject);\n      e1.otherEvent = e2;\n\n      if (s1[0] === s2[0] && s1[1] === s2[1]) {\n        continue; // skip collapsed edges, or it breaks\n      }\n\n      e1.contourId = e2.contourId = depth;\n      if (!isExteriorRing) {\n        e1.isExteriorRing = false;\n        e2.isExteriorRing = false;\n      }\n      if (compareEvents(e1, e2) > 0) {\n        e2.left = true;\n      } else {\n        e1.left = true;\n      }\n\n      var x = s1[0], y = s1[1];\n      bbox[0] = min(bbox[0], x);\n      bbox[1] = min(bbox[1], y);\n      bbox[2] = max(bbox[2], x);\n      bbox[3] = max(bbox[3], y);\n\n      // Pushing it so the queue is sorted from left to right,\n      // with object on the left having the highest priority.\n      Q.push(e1);\n      Q.push(e2);\n    }\n  }\n\n\n  function fillQueue(subject, clipping, sbbox, cbbox, operation) {\n    var eventQueue = new tinyqueue(null, compareEvents);\n    var polygonSet, isExteriorRing, i, ii, j, jj; //, k, kk;\n\n    for (i = 0, ii = subject.length; i < ii; i++) {\n      polygonSet = subject[i];\n      for (j = 0, jj = polygonSet.length; j < jj; j++) {\n        isExteriorRing = j === 0;\n        if (isExteriorRing) { contourId++; }\n        processPolygon(polygonSet[j], true, contourId, eventQueue, sbbox, isExteriorRing);\n      }\n    }\n\n    for (i = 0, ii = clipping.length; i < ii; i++) {\n      polygonSet = clipping[i];\n      for (j = 0, jj = polygonSet.length; j < jj; j++) {\n        isExteriorRing = j === 0;\n        if (operation === DIFFERENCE) { isExteriorRing = false; }\n        if (isExteriorRing) { contourId++; }\n        processPolygon(polygonSet[j], false, contourId, eventQueue, cbbox, isExteriorRing);\n      }\n    }\n\n    return eventQueue;\n  }\n\n  var EMPTY = [];\n\n\n  function trivialOperation(subject, clipping, operation) {\n    var result = null;\n    if (subject.length * clipping.length === 0) {\n      if        (operation === INTERSECTION) {\n        result = EMPTY;\n      } else if (operation === DIFFERENCE) {\n        result = subject;\n      } else if (operation === UNION ||\n                 operation === XOR) {\n        result = (subject.length === 0) ? clipping : subject;\n      }\n    }\n    return result;\n  }\n\n\n  function compareBBoxes(subject, clipping, sbbox, cbbox, operation) {\n    var result = null;\n    if (sbbox[0] > cbbox[2] ||\n        cbbox[0] > sbbox[2] ||\n        sbbox[1] > cbbox[3] ||\n        cbbox[1] > sbbox[3]) {\n      if        (operation === INTERSECTION) {\n        result = EMPTY;\n      } else if (operation === DIFFERENCE) {\n        result = subject;\n      } else if (operation === UNION ||\n                 operation === XOR) {\n        result = subject.concat(clipping);\n      }\n    }\n    return result;\n  }\n\n\n  function boolean(subject, clipping, operation) {\n    if (typeof subject[0][0][0] === 'number') {\n      subject = [subject];\n    }\n    if (typeof clipping[0][0][0] === 'number') {\n      clipping = [clipping];\n    }\n    var trivial = trivialOperation(subject, clipping, operation);\n    if (trivial) {\n      return trivial === EMPTY ? null : trivial;\n    }\n    var sbbox = [Infinity, Infinity, -Infinity, -Infinity];\n    var cbbox = [Infinity, Infinity, -Infinity, -Infinity];\n\n    //console.time('fill queue');\n    var eventQueue = fillQueue(subject, clipping, sbbox, cbbox, operation);\n    //console.timeEnd('fill queue');\n\n    trivial = compareBBoxes(subject, clipping, sbbox, cbbox, operation);\n    if (trivial) {\n      return trivial === EMPTY ? null : trivial;\n    }\n    //console.time('subdivide edges');\n    var sortedEvents = subdivide(eventQueue, subject, clipping, sbbox, cbbox, operation);\n    //console.timeEnd('subdivide edges');\n\n    //console.time('connect vertices');\n    var result = connectEdges(sortedEvents, operation);\n    //console.timeEnd('connect vertices');\n    return result;\n  }\n\n  function union (subject, clipping) {\n    return boolean(subject, clipping, UNION);\n  }\n\n  function diff (subject, clipping) {\n    return boolean(subject, clipping, DIFFERENCE);\n  }\n\n  function xor (subject, clipping){\n    return boolean(subject, clipping, XOR);\n  }\n\n  function intersection$1 (subject, clipping) {\n    return boolean(subject, clipping, INTERSECTION);\n  }\n\n  /**\n   * @enum {Number}\n   */\n  var operations = { UNION: UNION, DIFFERENCE: DIFFERENCE, INTERSECTION: INTERSECTION, XOR: XOR };\n\n  exports.union = union;\n  exports.diff = diff;\n  exports.xor = xor;\n  exports.intersection = intersection$1;\n  exports.operations = operations;\n\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n//# sourceMappingURL=martinez.umd.js.map\n",
+    "// Top level file is just a mixin of submodules & constants\n'use strict';\n\nvar assign    = require('./lib/utils/common').assign;\n\nvar deflate   = require('./lib/deflate');\nvar inflate   = require('./lib/inflate');\nvar constants = require('./lib/zlib/constants');\n\nvar pako = {};\n\nassign(pako, deflate, inflate, constants);\n\nmodule.exports = pako;\n",
+    "'use strict';\n\n\nvar zlib_deflate = require('./zlib/deflate');\nvar utils        = require('./utils/common');\nvar strings      = require('./utils/strings');\nvar msg          = require('./zlib/messages');\nvar ZStream      = require('./zlib/zstream');\n\nvar toString = Object.prototype.toString;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nvar Z_NO_FLUSH      = 0;\nvar Z_FINISH        = 4;\n\nvar Z_OK            = 0;\nvar Z_STREAM_END    = 1;\nvar Z_SYNC_FLUSH    = 2;\n\nvar Z_DEFAULT_COMPRESSION = -1;\n\nvar Z_DEFAULT_STRATEGY    = 0;\n\nvar Z_DEFLATED  = 8;\n\n/* ===========================================================================*/\n\n\n/**\n * class Deflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[deflate]],\n * [[deflateRaw]] and [[gzip]].\n **/\n\n/* internal\n * Deflate.chunks -> Array\n *\n * Chunks of output data, if [[Deflate#onData]] not overridden.\n **/\n\n/**\n * Deflate.result -> Uint8Array|Array\n *\n * Compressed result, generated by default [[Deflate#onData]]\n * and [[Deflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Deflate#push]] with `Z_FINISH` / `true` param)  or if you\n * push a chunk with explicit flush (call [[Deflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Deflate.err -> Number\n *\n * Error code after deflate finished. 0 (Z_OK) on success.\n * You will not need it in real life, because deflate errors\n * are possible only on wrong options or bad `onData` / `onEnd`\n * custom handlers.\n **/\n\n/**\n * Deflate.msg -> String\n *\n * Error message, if [[Deflate.err]] != 0\n **/\n\n\n/**\n * new Deflate(options)\n * - options (Object): zlib deflate options.\n *\n * Creates new deflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `level`\n * - `windowBits`\n * - `memLevel`\n * - `strategy`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw deflate\n * - `gzip` (Boolean) - create gzip wrapper\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n *    (each char code [0..255])\n * - `header` (Object) - custom header for gzip\n *   - `text` (Boolean) - true if compressed data believed to be text\n *   - `time` (Number) - modification time, unix timestamp\n *   - `os` (Number) - operation system code\n *   - `extra` (Array) - array of bytes with extra data (max 65536)\n *   - `name` (String) - file name (binary string)\n *   - `comment` (String) - comment (binary string)\n *   - `hcrc` (Boolean) - true if header crc should be added\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n *   , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n *   , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var deflate = new pako.Deflate({ level: 3});\n *\n * deflate.push(chunk1, false);\n * deflate.push(chunk2, true);  // true -> last chunk\n *\n * if (deflate.err) { throw new Error(deflate.err); }\n *\n * console.log(deflate.result);\n * ```\n **/\nfunction Deflate(options) {\n  if (!(this instanceof Deflate)) return new Deflate(options);\n\n  this.options = utils.assign({\n    level: Z_DEFAULT_COMPRESSION,\n    method: Z_DEFLATED,\n    chunkSize: 16384,\n    windowBits: 15,\n    memLevel: 8,\n    strategy: Z_DEFAULT_STRATEGY,\n    to: ''\n  }, options || {});\n\n  var opt = this.options;\n\n  if (opt.raw && (opt.windowBits > 0)) {\n    opt.windowBits = -opt.windowBits;\n  }\n\n  else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {\n    opt.windowBits += 16;\n  }\n\n  this.err    = 0;      // error code, if happens (0 = Z_OK)\n  this.msg    = '';     // error message\n  this.ended  = false;  // used to avoid multiple onEnd() calls\n  this.chunks = [];     // chunks of compressed data\n\n  this.strm = new ZStream();\n  this.strm.avail_out = 0;\n\n  var status = zlib_deflate.deflateInit2(\n    this.strm,\n    opt.level,\n    opt.method,\n    opt.windowBits,\n    opt.memLevel,\n    opt.strategy\n  );\n\n  if (status !== Z_OK) {\n    throw new Error(msg[status]);\n  }\n\n  if (opt.header) {\n    zlib_deflate.deflateSetHeader(this.strm, opt.header);\n  }\n\n  if (opt.dictionary) {\n    var dict;\n    // Convert data if needed\n    if (typeof opt.dictionary === 'string') {\n      // If we need to compress text, change encoding to utf8.\n      dict = strings.string2buf(opt.dictionary);\n    } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n      dict = new Uint8Array(opt.dictionary);\n    } else {\n      dict = opt.dictionary;\n    }\n\n    status = zlib_deflate.deflateSetDictionary(this.strm, dict);\n\n    if (status !== Z_OK) {\n      throw new Error(msg[status]);\n    }\n\n    this._dict_set = true;\n  }\n}\n\n/**\n * Deflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data. Strings will be\n *   converted to utf8 byte sequence.\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n *   See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with\n * new compressed chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Deflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the compression context.\n *\n * On fail call [[Deflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * array format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true);  // push last chunk\n * ```\n **/\nDeflate.prototype.push = function (data, mode) {\n  var strm = this.strm;\n  var chunkSize = this.options.chunkSize;\n  var status, _mode;\n\n  if (this.ended) { return false; }\n\n  _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);\n\n  // Convert data if needed\n  if (typeof data === 'string') {\n    // If we need to compress text, change encoding to utf8.\n    strm.input = strings.string2buf(data);\n  } else if (toString.call(data) === '[object ArrayBuffer]') {\n    strm.input = new Uint8Array(data);\n  } else {\n    strm.input = data;\n  }\n\n  strm.next_in = 0;\n  strm.avail_in = strm.input.length;\n\n  do {\n    if (strm.avail_out === 0) {\n      strm.output = new utils.Buf8(chunkSize);\n      strm.next_out = 0;\n      strm.avail_out = chunkSize;\n    }\n    status = zlib_deflate.deflate(strm, _mode);    /* no bad return value */\n\n    if (status !== Z_STREAM_END && status !== Z_OK) {\n      this.onEnd(status);\n      this.ended = true;\n      return false;\n    }\n    if (strm.avail_out === 0 || (strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH))) {\n      if (this.options.to === 'string') {\n        this.onData(strings.buf2binstring(utils.shrinkBuf(strm.output, strm.next_out)));\n      } else {\n        this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n      }\n    }\n  } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);\n\n  // Finalize on the last chunk.\n  if (_mode === Z_FINISH) {\n    status = zlib_deflate.deflateEnd(this.strm);\n    this.onEnd(status);\n    this.ended = true;\n    return status === Z_OK;\n  }\n\n  // callback interim results if Z_SYNC_FLUSH.\n  if (_mode === Z_SYNC_FLUSH) {\n    this.onEnd(Z_OK);\n    strm.avail_out = 0;\n    return true;\n  }\n\n  return true;\n};\n\n\n/**\n * Deflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n *   on js engine support. When string output requested, each chunk\n *   will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nDeflate.prototype.onData = function (chunk) {\n  this.chunks.push(chunk);\n};\n\n\n/**\n * Deflate#onEnd(status) -> Void\n * - status (Number): deflate status. 0 (Z_OK) on success,\n *   other if not.\n *\n * Called once after you tell deflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nDeflate.prototype.onEnd = function (status) {\n  // On success - join\n  if (status === Z_OK) {\n    if (this.options.to === 'string') {\n      this.result = this.chunks.join('');\n    } else {\n      this.result = utils.flattenChunks(this.chunks);\n    }\n  }\n  this.chunks = [];\n  this.err = status;\n  this.msg = this.strm.msg;\n};\n\n\n/**\n * deflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * Compress `data` with deflate algorithm and `options`.\n *\n * Supported options are:\n *\n * - level\n * - windowBits\n * - memLevel\n * - strategy\n * - dictionary\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n *   negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n *    (each char code [0..255])\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n *   , data = Uint8Array([1,2,3,4,5,6,7,8,9]);\n *\n * console.log(pako.deflate(data));\n * ```\n **/\nfunction deflate(input, options) {\n  var deflator = new Deflate(options);\n\n  deflator.push(input, true);\n\n  // That will never happens, if you don't cheat with options :)\n  if (deflator.err) { throw deflator.msg || msg[deflator.err]; }\n\n  return deflator.result;\n}\n\n\n/**\n * deflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction deflateRaw(input, options) {\n  options = options || {};\n  options.raw = true;\n  return deflate(input, options);\n}\n\n\n/**\n * gzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but create gzip wrapper instead of\n * deflate one.\n **/\nfunction gzip(input, options) {\n  options = options || {};\n  options.gzip = true;\n  return deflate(input, options);\n}\n\n\nexports.Deflate = Deflate;\nexports.deflate = deflate;\nexports.deflateRaw = deflateRaw;\nexports.gzip = gzip;\n",
+    "'use strict';\n\n\nvar zlib_inflate = require('./zlib/inflate');\nvar utils        = require('./utils/common');\nvar strings      = require('./utils/strings');\nvar c            = require('./zlib/constants');\nvar msg          = require('./zlib/messages');\nvar ZStream      = require('./zlib/zstream');\nvar GZheader     = require('./zlib/gzheader');\n\nvar toString = Object.prototype.toString;\n\n/**\n * class Inflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[inflate]]\n * and [[inflateRaw]].\n **/\n\n/* internal\n * inflate.chunks -> Array\n *\n * Chunks of output data, if [[Inflate#onData]] not overridden.\n **/\n\n/**\n * Inflate.result -> Uint8Array|Array|String\n *\n * Uncompressed result, generated by default [[Inflate#onData]]\n * and [[Inflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Inflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Inflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Inflate.err -> Number\n *\n * Error code after inflate finished. 0 (Z_OK) on success.\n * Should be checked if broken data possible.\n **/\n\n/**\n * Inflate.msg -> String\n *\n * Error message, if [[Inflate.err]] != 0\n **/\n\n\n/**\n * new Inflate(options)\n * - options (Object): zlib inflate options.\n *\n * Creates new inflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `windowBits`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw inflate\n * - `to` (String) - if equal to 'string', then result will be converted\n *   from utf8 to utf16 (javascript) string. When string output requested,\n *   chunk length can differ from `chunkSize`, depending on content.\n *\n * By default, when no options set, autodetect deflate/gzip data format via\n * wrapper header.\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n *   , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n *   , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var inflate = new pako.Inflate({ level: 3});\n *\n * inflate.push(chunk1, false);\n * inflate.push(chunk2, true);  // true -> last chunk\n *\n * if (inflate.err) { throw new Error(inflate.err); }\n *\n * console.log(inflate.result);\n * ```\n **/\nfunction Inflate(options) {\n  if (!(this instanceof Inflate)) return new Inflate(options);\n\n  this.options = utils.assign({\n    chunkSize: 16384,\n    windowBits: 0,\n    to: ''\n  }, options || {});\n\n  var opt = this.options;\n\n  // Force window size for `raw` data, if not set directly,\n  // because we have no header for autodetect.\n  if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {\n    opt.windowBits = -opt.windowBits;\n    if (opt.windowBits === 0) { opt.windowBits = -15; }\n  }\n\n  // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate\n  if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&\n      !(options && options.windowBits)) {\n    opt.windowBits += 32;\n  }\n\n  // Gzip header has no info about windows size, we can do autodetect only\n  // for deflate. So, if window size not set, force it to max when gzip possible\n  if ((opt.windowBits > 15) && (opt.windowBits < 48)) {\n    // bit 3 (16) -> gzipped data\n    // bit 4 (32) -> autodetect gzip/deflate\n    if ((opt.windowBits & 15) === 0) {\n      opt.windowBits |= 15;\n    }\n  }\n\n  this.err    = 0;      // error code, if happens (0 = Z_OK)\n  this.msg    = '';     // error message\n  this.ended  = false;  // used to avoid multiple onEnd() calls\n  this.chunks = [];     // chunks of compressed data\n\n  this.strm   = new ZStream();\n  this.strm.avail_out = 0;\n\n  var status  = zlib_inflate.inflateInit2(\n    this.strm,\n    opt.windowBits\n  );\n\n  if (status !== c.Z_OK) {\n    throw new Error(msg[status]);\n  }\n\n  this.header = new GZheader();\n\n  zlib_inflate.inflateGetHeader(this.strm, this.header);\n\n  // Setup dictionary\n  if (opt.dictionary) {\n    // Convert data if needed\n    if (typeof opt.dictionary === 'string') {\n      opt.dictionary = strings.string2buf(opt.dictionary);\n    } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n      opt.dictionary = new Uint8Array(opt.dictionary);\n    }\n    if (opt.raw) { //In raw mode we need to set the dictionary early\n      status = zlib_inflate.inflateSetDictionary(this.strm, opt.dictionary);\n      if (status !== c.Z_OK) {\n        throw new Error(msg[status]);\n      }\n    }\n  }\n}\n\n/**\n * Inflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n *   See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with\n * new output chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Inflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the decompression context.\n *\n * On fail call [[Inflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true);  // push last chunk\n * ```\n **/\nInflate.prototype.push = function (data, mode) {\n  var strm = this.strm;\n  var chunkSize = this.options.chunkSize;\n  var dictionary = this.options.dictionary;\n  var status, _mode;\n  var next_out_utf8, tail, utf8str;\n\n  // Flag to properly process Z_BUF_ERROR on testing inflate call\n  // when we check that all output data was flushed.\n  var allowBufError = false;\n\n  if (this.ended) { return false; }\n  _mode = (mode === ~~mode) ? mode : ((mode === true) ? c.Z_FINISH : c.Z_NO_FLUSH);\n\n  // Convert data if needed\n  if (typeof data === 'string') {\n    // Only binary strings can be decompressed on practice\n    strm.input = strings.binstring2buf(data);\n  } else if (toString.call(data) === '[object ArrayBuffer]') {\n    strm.input = new Uint8Array(data);\n  } else {\n    strm.input = data;\n  }\n\n  strm.next_in = 0;\n  strm.avail_in = strm.input.length;\n\n  do {\n    if (strm.avail_out === 0) {\n      strm.output = new utils.Buf8(chunkSize);\n      strm.next_out = 0;\n      strm.avail_out = chunkSize;\n    }\n\n    status = zlib_inflate.inflate(strm, c.Z_NO_FLUSH);    /* no bad return value */\n\n    if (status === c.Z_NEED_DICT && dictionary) {\n      status = zlib_inflate.inflateSetDictionary(this.strm, dictionary);\n    }\n\n    if (status === c.Z_BUF_ERROR && allowBufError === true) {\n      status = c.Z_OK;\n      allowBufError = false;\n    }\n\n    if (status !== c.Z_STREAM_END && status !== c.Z_OK) {\n      this.onEnd(status);\n      this.ended = true;\n      return false;\n    }\n\n    if (strm.next_out) {\n      if (strm.avail_out === 0 || status === c.Z_STREAM_END || (strm.avail_in === 0 && (_mode === c.Z_FINISH || _mode === c.Z_SYNC_FLUSH))) {\n\n        if (this.options.to === 'string') {\n\n          next_out_utf8 = strings.utf8border(strm.output, strm.next_out);\n\n          tail = strm.next_out - next_out_utf8;\n          utf8str = strings.buf2string(strm.output, next_out_utf8);\n\n          // move tail\n          strm.next_out = tail;\n          strm.avail_out = chunkSize - tail;\n          if (tail) { utils.arraySet(strm.output, strm.output, next_out_utf8, tail, 0); }\n\n          this.onData(utf8str);\n\n        } else {\n          this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n        }\n      }\n    }\n\n    // When no more input data, we should check that internal inflate buffers\n    // are flushed. The only way to do it when avail_out = 0 - run one more\n    // inflate pass. But if output data not exists, inflate return Z_BUF_ERROR.\n    // Here we set flag to process this error properly.\n    //\n    // NOTE. Deflate does not return error in this case and does not needs such\n    // logic.\n    if (strm.avail_in === 0 && strm.avail_out === 0) {\n      allowBufError = true;\n    }\n\n  } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== c.Z_STREAM_END);\n\n  if (status === c.Z_STREAM_END) {\n    _mode = c.Z_FINISH;\n  }\n\n  // Finalize on the last chunk.\n  if (_mode === c.Z_FINISH) {\n    status = zlib_inflate.inflateEnd(this.strm);\n    this.onEnd(status);\n    this.ended = true;\n    return status === c.Z_OK;\n  }\n\n  // callback interim results if Z_SYNC_FLUSH.\n  if (_mode === c.Z_SYNC_FLUSH) {\n    this.onEnd(c.Z_OK);\n    strm.avail_out = 0;\n    return true;\n  }\n\n  return true;\n};\n\n\n/**\n * Inflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n *   on js engine support. When string output requested, each chunk\n *   will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nInflate.prototype.onData = function (chunk) {\n  this.chunks.push(chunk);\n};\n\n\n/**\n * Inflate#onEnd(status) -> Void\n * - status (Number): inflate status. 0 (Z_OK) on success,\n *   other if not.\n *\n * Called either after you tell inflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nInflate.prototype.onEnd = function (status) {\n  // On success - join\n  if (status === c.Z_OK) {\n    if (this.options.to === 'string') {\n      // Glue & convert here, until we teach pako to send\n      // utf8 aligned strings to onData\n      this.result = this.chunks.join('');\n    } else {\n      this.result = utils.flattenChunks(this.chunks);\n    }\n  }\n  this.chunks = [];\n  this.err = status;\n  this.msg = this.strm.msg;\n};\n\n\n/**\n * inflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Decompress `data` with inflate/ungzip and `options`. Autodetect\n * format via wrapper header by default. That's why we don't provide\n * separate `ungzip` method.\n *\n * Supported options are:\n *\n * - windowBits\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n *   negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be converted\n *   from utf8 to utf16 (javascript) string. When string output requested,\n *   chunk length can differ from `chunkSize`, depending on content.\n *\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n *   , input = pako.deflate([1,2,3,4,5,6,7,8,9])\n *   , output;\n *\n * try {\n *   output = pako.inflate(input);\n * } catch (err)\n *   console.log(err);\n * }\n * ```\n **/\nfunction inflate(input, options) {\n  var inflator = new Inflate(options);\n\n  inflator.push(input, true);\n\n  // That will never happens, if you don't cheat with options :)\n  if (inflator.err) { throw inflator.msg || msg[inflator.err]; }\n\n  return inflator.result;\n}\n\n\n/**\n * inflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * The same as [[inflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction inflateRaw(input, options) {\n  options = options || {};\n  options.raw = true;\n  return inflate(input, options);\n}\n\n\n/**\n * ungzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Just shortcut to [[inflate]], because it autodetects format\n * by header.content. Done for convenience.\n **/\n\n\nexports.Inflate = Inflate;\nexports.inflate = inflate;\nexports.inflateRaw = inflateRaw;\nexports.ungzip  = inflate;\n",
+    "'use strict';\n\n\nvar TYPED_OK =  (typeof Uint8Array !== 'undefined') &&\n                (typeof Uint16Array !== 'undefined') &&\n                (typeof Int32Array !== 'undefined');\n\nfunction _has(obj, key) {\n  return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nexports.assign = function (obj /*from1, from2, from3, ...*/) {\n  var sources = Array.prototype.slice.call(arguments, 1);\n  while (sources.length) {\n    var source = sources.shift();\n    if (!source) { continue; }\n\n    if (typeof source !== 'object') {\n      throw new TypeError(source + 'must be non-object');\n    }\n\n    for (var p in source) {\n      if (_has(source, p)) {\n        obj[p] = source[p];\n      }\n    }\n  }\n\n  return obj;\n};\n\n\n// reduce buffer size, avoiding mem copy\nexports.shrinkBuf = function (buf, size) {\n  if (buf.length === size) { return buf; }\n  if (buf.subarray) { return buf.subarray(0, size); }\n  buf.length = size;\n  return buf;\n};\n\n\nvar fnTyped = {\n  arraySet: function (dest, src, src_offs, len, dest_offs) {\n    if (src.subarray && dest.subarray) {\n      dest.set(src.subarray(src_offs, src_offs + len), dest_offs);\n      return;\n    }\n    // Fallback to ordinary array\n    for (var i = 0; i < len; i++) {\n      dest[dest_offs + i] = src[src_offs + i];\n    }\n  },\n  // Join array of chunks to single array.\n  flattenChunks: function (chunks) {\n    var i, l, len, pos, chunk, result;\n\n    // calculate data length\n    len = 0;\n    for (i = 0, l = chunks.length; i < l; i++) {\n      len += chunks[i].length;\n    }\n\n    // join chunks\n    result = new Uint8Array(len);\n    pos = 0;\n    for (i = 0, l = chunks.length; i < l; i++) {\n      chunk = chunks[i];\n      result.set(chunk, pos);\n      pos += chunk.length;\n    }\n\n    return result;\n  }\n};\n\nvar fnUntyped = {\n  arraySet: function (dest, src, src_offs, len, dest_offs) {\n    for (var i = 0; i < len; i++) {\n      dest[dest_offs + i] = src[src_offs + i];\n    }\n  },\n  // Join array of chunks to single array.\n  flattenChunks: function (chunks) {\n    return [].concat.apply([], chunks);\n  }\n};\n\n\n// Enable/Disable typed arrays use, for testing\n//\nexports.setTyped = function (on) {\n  if (on) {\n    exports.Buf8  = Uint8Array;\n    exports.Buf16 = Uint16Array;\n    exports.Buf32 = Int32Array;\n    exports.assign(exports, fnTyped);\n  } else {\n    exports.Buf8  = Array;\n    exports.Buf16 = Array;\n    exports.Buf32 = Array;\n    exports.assign(exports, fnUntyped);\n  }\n};\n\nexports.setTyped(TYPED_OK);\n",
+    "// String encode/decode helpers\n'use strict';\n\n\nvar utils = require('./common');\n\n\n// Quick check if we can use fast array to bin string conversion\n//\n// - apply(Array) can fail on Android 2.2\n// - apply(Uint8Array) can fail on iOS 5.1 Safari\n//\nvar STR_APPLY_OK = true;\nvar STR_APPLY_UIA_OK = true;\n\ntry { String.fromCharCode.apply(null, [ 0 ]); } catch (__) { STR_APPLY_OK = false; }\ntry { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; }\n\n\n// Table with utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nvar _utf8len = new utils.Buf8(256);\nfor (var q = 0; q < 256; q++) {\n  _utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);\n}\n_utf8len[254] = _utf8len[254] = 1; // Invalid sequence start\n\n\n// convert string to array (typed, when possible)\nexports.string2buf = function (str) {\n  var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n  // count binary size\n  for (m_pos = 0; m_pos < str_len; m_pos++) {\n    c = str.charCodeAt(m_pos);\n    if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n      c2 = str.charCodeAt(m_pos + 1);\n      if ((c2 & 0xfc00) === 0xdc00) {\n        c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n        m_pos++;\n      }\n    }\n    buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n  }\n\n  // allocate buffer\n  buf = new utils.Buf8(buf_len);\n\n  // convert\n  for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n    c = str.charCodeAt(m_pos);\n    if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n      c2 = str.charCodeAt(m_pos + 1);\n      if ((c2 & 0xfc00) === 0xdc00) {\n        c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n        m_pos++;\n      }\n    }\n    if (c < 0x80) {\n      /* one byte */\n      buf[i++] = c;\n    } else if (c < 0x800) {\n      /* two bytes */\n      buf[i++] = 0xC0 | (c >>> 6);\n      buf[i++] = 0x80 | (c & 0x3f);\n    } else if (c < 0x10000) {\n      /* three bytes */\n      buf[i++] = 0xE0 | (c >>> 12);\n      buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n      buf[i++] = 0x80 | (c & 0x3f);\n    } else {\n      /* four bytes */\n      buf[i++] = 0xf0 | (c >>> 18);\n      buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n      buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n      buf[i++] = 0x80 | (c & 0x3f);\n    }\n  }\n\n  return buf;\n};\n\n// Helper (used in 2 places)\nfunction buf2binstring(buf, len) {\n  // On Chrome, the arguments in a function call that are allowed is `65534`.\n  // If the length of the buffer is smaller than that, we can use this optimization,\n  // otherwise we will take a slower path.\n  if (len < 65534) {\n    if ((buf.subarray && STR_APPLY_UIA_OK) || (!buf.subarray && STR_APPLY_OK)) {\n      return String.fromCharCode.apply(null, utils.shrinkBuf(buf, len));\n    }\n  }\n\n  var result = '';\n  for (var i = 0; i < len; i++) {\n    result += String.fromCharCode(buf[i]);\n  }\n  return result;\n}\n\n\n// Convert byte array to binary string\nexports.buf2binstring = function (buf) {\n  return buf2binstring(buf, buf.length);\n};\n\n\n// Convert binary string (typed, when possible)\nexports.binstring2buf = function (str) {\n  var buf = new utils.Buf8(str.length);\n  for (var i = 0, len = buf.length; i < len; i++) {\n    buf[i] = str.charCodeAt(i);\n  }\n  return buf;\n};\n\n\n// convert array to string\nexports.buf2string = function (buf, max) {\n  var i, out, c, c_len;\n  var len = max || buf.length;\n\n  // Reserve max possible length (2 words per char)\n  // NB: by unknown reasons, Array is significantly faster for\n  //     String.fromCharCode.apply than Uint16Array.\n  var utf16buf = new Array(len * 2);\n\n  for (out = 0, i = 0; i < len;) {\n    c = buf[i++];\n    // quick process ascii\n    if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n    c_len = _utf8len[c];\n    // skip 5 & 6 byte codes\n    if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }\n\n    // apply mask on first byte\n    c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n    // join the rest\n    while (c_len > 1 && i < len) {\n      c = (c << 6) | (buf[i++] & 0x3f);\n      c_len--;\n    }\n\n    // terminated by end of string?\n    if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n    if (c < 0x10000) {\n      utf16buf[out++] = c;\n    } else {\n      c -= 0x10000;\n      utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n      utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n    }\n  }\n\n  return buf2binstring(utf16buf, out);\n};\n\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max   - length limit (mandatory);\nexports.utf8border = function (buf, max) {\n  var pos;\n\n  max = max || buf.length;\n  if (max > buf.length) { max = buf.length; }\n\n  // go back from last position, until start of sequence found\n  pos = max - 1;\n  while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n  // Very small and broken sequence,\n  // return max, because we should return something anyway.\n  if (pos < 0) { return max; }\n\n  // If we came to start of buffer - that means buffer is too small,\n  // return max too.\n  if (pos === 0) { return max; }\n\n  return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n};\n",
+    "'use strict';\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It isn't worth it to make additional optimizations as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction adler32(adler, buf, len, pos) {\n  var s1 = (adler & 0xffff) |0,\n      s2 = ((adler >>> 16) & 0xffff) |0,\n      n = 0;\n\n  while (len !== 0) {\n    // Set limit ~ twice less than 5552, to keep\n    // s2 in 31-bits, because we force signed ints.\n    // in other case %= will fail.\n    n = len > 2000 ? 2000 : len;\n    len -= n;\n\n    do {\n      s1 = (s1 + buf[pos++]) |0;\n      s2 = (s2 + s1) |0;\n    } while (--n);\n\n    s1 %= 65521;\n    s2 %= 65521;\n  }\n\n  return (s1 | (s2 << 16)) |0;\n}\n\n\nmodule.exports = adler32;\n",
+    "'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n\n  /* Allowed flush values; see deflate() and inflate() below for details */\n  Z_NO_FLUSH:         0,\n  Z_PARTIAL_FLUSH:    1,\n  Z_SYNC_FLUSH:       2,\n  Z_FULL_FLUSH:       3,\n  Z_FINISH:           4,\n  Z_BLOCK:            5,\n  Z_TREES:            6,\n\n  /* Return codes for the compression/decompression functions. Negative values\n  * are errors, positive values are used for special but normal events.\n  */\n  Z_OK:               0,\n  Z_STREAM_END:       1,\n  Z_NEED_DICT:        2,\n  Z_ERRNO:           -1,\n  Z_STREAM_ERROR:    -2,\n  Z_DATA_ERROR:      -3,\n  //Z_MEM_ERROR:     -4,\n  Z_BUF_ERROR:       -5,\n  //Z_VERSION_ERROR: -6,\n\n  /* compression levels */\n  Z_NO_COMPRESSION:         0,\n  Z_BEST_SPEED:             1,\n  Z_BEST_COMPRESSION:       9,\n  Z_DEFAULT_COMPRESSION:   -1,\n\n\n  Z_FILTERED:               1,\n  Z_HUFFMAN_ONLY:           2,\n  Z_RLE:                    3,\n  Z_FIXED:                  4,\n  Z_DEFAULT_STRATEGY:       0,\n\n  /* Possible values of the data_type field (though see inflate()) */\n  Z_BINARY:                 0,\n  Z_TEXT:                   1,\n  //Z_ASCII:                1, // = Z_TEXT (deprecated)\n  Z_UNKNOWN:                2,\n\n  /* The deflate compression method */\n  Z_DEFLATED:               8\n  //Z_NULL:                 null // Use -1 or null inline, depending on var type\n};\n",
+    "'use strict';\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\nfunction makeTable() {\n  var c, table = [];\n\n  for (var n = 0; n < 256; n++) {\n    c = n;\n    for (var k = 0; k < 8; k++) {\n      c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n    }\n    table[n] = c;\n  }\n\n  return table;\n}\n\n// Create table on load. Just 255 signed longs. Not a problem.\nvar crcTable = makeTable();\n\n\nfunction crc32(crc, buf, len, pos) {\n  var t = crcTable,\n      end = pos + len;\n\n  crc ^= -1;\n\n  for (var i = pos; i < end; i++) {\n    crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n  }\n\n  return (crc ^ (-1)); // >>> 0;\n}\n\n\nmodule.exports = crc32;\n",
+    "'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils   = require('../utils/common');\nvar trees   = require('./trees');\nvar adler32 = require('./adler32');\nvar crc32   = require('./crc32');\nvar msg     = require('./messages');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\nvar Z_NO_FLUSH      = 0;\nvar Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH    = 2;\nvar Z_FULL_FLUSH    = 3;\nvar Z_FINISH        = 4;\nvar Z_BLOCK         = 5;\n//var Z_TREES         = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK            = 0;\nvar Z_STREAM_END    = 1;\n//var Z_NEED_DICT     = 2;\n//var Z_ERRNO         = -1;\nvar Z_STREAM_ERROR  = -2;\nvar Z_DATA_ERROR    = -3;\n//var Z_MEM_ERROR     = -4;\nvar Z_BUF_ERROR     = -5;\n//var Z_VERSION_ERROR = -6;\n\n\n/* compression levels */\n//var Z_NO_COMPRESSION      = 0;\n//var Z_BEST_SPEED          = 1;\n//var Z_BEST_COMPRESSION    = 9;\nvar Z_DEFAULT_COMPRESSION = -1;\n\n\nvar Z_FILTERED            = 1;\nvar Z_HUFFMAN_ONLY        = 2;\nvar Z_RLE                 = 3;\nvar Z_FIXED               = 4;\nvar Z_DEFAULT_STRATEGY    = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\n//var Z_BINARY              = 0;\n//var Z_TEXT                = 1;\n//var Z_ASCII               = 1; // = Z_TEXT\nvar Z_UNKNOWN             = 2;\n\n\n/* The deflate compression method */\nvar Z_DEFLATED  = 8;\n\n/*============================================================================*/\n\n\nvar MAX_MEM_LEVEL = 9;\n/* Maximum value for memLevel in deflateInit2 */\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_MEM_LEVEL = 8;\n\n\nvar LENGTH_CODES  = 29;\n/* number of length codes, not counting the special END_BLOCK code */\nvar LITERALS      = 256;\n/* number of literal bytes 0..255 */\nvar L_CODES       = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\nvar D_CODES       = 30;\n/* number of distance codes */\nvar BL_CODES      = 19;\n/* number of codes used to transfer the bit lengths */\nvar HEAP_SIZE     = 2 * L_CODES + 1;\n/* maximum heap size */\nvar MAX_BITS  = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\nvar MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);\n\nvar PRESET_DICT = 0x20;\n\nvar INIT_STATE = 42;\nvar EXTRA_STATE = 69;\nvar NAME_STATE = 73;\nvar COMMENT_STATE = 91;\nvar HCRC_STATE = 103;\nvar BUSY_STATE = 113;\nvar FINISH_STATE = 666;\n\nvar BS_NEED_MORE      = 1; /* block not completed, need more input or more output */\nvar BS_BLOCK_DONE     = 2; /* block flush performed */\nvar BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\nvar BS_FINISH_DONE    = 4; /* finish done, accept no more input or output */\n\nvar OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\nfunction err(strm, errorCode) {\n  strm.msg = msg[errorCode];\n  return errorCode;\n}\n\nfunction rank(f) {\n  return ((f) << 1) - ((f) > 4 ? 9 : 0);\n}\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n\n/* =========================================================================\n * Flush as much pending output as possible. All deflate() output goes\n * through this function so some applications may wish to modify it\n * to avoid allocating a large strm->output buffer and copying into it.\n * (See also read_buf()).\n */\nfunction flush_pending(strm) {\n  var s = strm.state;\n\n  //_tr_flush_bits(s);\n  var len = s.pending;\n  if (len > strm.avail_out) {\n    len = strm.avail_out;\n  }\n  if (len === 0) { return; }\n\n  utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);\n  strm.next_out += len;\n  s.pending_out += len;\n  strm.total_out += len;\n  strm.avail_out -= len;\n  s.pending -= len;\n  if (s.pending === 0) {\n    s.pending_out = 0;\n  }\n}\n\n\nfunction flush_block_only(s, last) {\n  trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n  s.block_start = s.strstart;\n  flush_pending(s.strm);\n}\n\n\nfunction put_byte(s, b) {\n  s.pending_buf[s.pending++] = b;\n}\n\n\n/* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\nfunction putShortMSB(s, b) {\n//  put_byte(s, (Byte)(b >> 8));\n//  put_byte(s, (Byte)(b & 0xff));\n  s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n  s.pending_buf[s.pending++] = b & 0xff;\n}\n\n\n/* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read.  All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\nfunction read_buf(strm, buf, start, size) {\n  var len = strm.avail_in;\n\n  if (len > size) { len = size; }\n  if (len === 0) { return 0; }\n\n  strm.avail_in -= len;\n\n  // zmemcpy(buf, strm->next_in, len);\n  utils.arraySet(buf, strm.input, strm.next_in, len, start);\n  if (strm.state.wrap === 1) {\n    strm.adler = adler32(strm.adler, buf, len, start);\n  }\n\n  else if (strm.state.wrap === 2) {\n    strm.adler = crc32(strm.adler, buf, len, start);\n  }\n\n  strm.next_in += len;\n  strm.total_in += len;\n\n  return len;\n}\n\n\n/* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n *   string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\nfunction longest_match(s, cur_match) {\n  var chain_length = s.max_chain_length;      /* max hash chain length */\n  var scan = s.strstart; /* current string */\n  var match;                       /* matched string */\n  var len;                           /* length of current match */\n  var best_len = s.prev_length;              /* best match length so far */\n  var nice_match = s.nice_match;             /* stop if match long enough */\n  var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n      s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n  var _win = s.window; // shortcut\n\n  var wmask = s.w_mask;\n  var prev  = s.prev;\n\n  /* Stop when cur_match becomes <= limit. To simplify the code,\n   * we prevent matches with the string of window index 0.\n   */\n\n  var strend = s.strstart + MAX_MATCH;\n  var scan_end1  = _win[scan + best_len - 1];\n  var scan_end   = _win[scan + best_len];\n\n  /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n   * It is easy to get rid of this optimization if necessary.\n   */\n  // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n  /* Do not waste too much time if we already have a good match: */\n  if (s.prev_length >= s.good_match) {\n    chain_length >>= 2;\n  }\n  /* Do not look for matches beyond the end of the input. This is necessary\n   * to make deflate deterministic.\n   */\n  if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n  // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n  do {\n    // Assert(cur_match < s->strstart, \"no future\");\n    match = cur_match;\n\n    /* Skip to next match if the match length cannot increase\n     * or if the match length is less than 2.  Note that the checks below\n     * for insufficient lookahead only occur occasionally for performance\n     * reasons.  Therefore uninitialized memory will be accessed, and\n     * conditional jumps will be made that depend on those values.\n     * However the length of the match is limited to the lookahead, so\n     * the output of deflate is not affected by the uninitialized values.\n     */\n\n    if (_win[match + best_len]     !== scan_end  ||\n        _win[match + best_len - 1] !== scan_end1 ||\n        _win[match]                !== _win[scan] ||\n        _win[++match]              !== _win[scan + 1]) {\n      continue;\n    }\n\n    /* The check at best_len-1 can be removed because it will be made\n     * again later. (This heuristic is not always a win.)\n     * It is not necessary to compare scan[2] and match[2] since they\n     * are always equal when the other bytes match, given that\n     * the hash keys are equal and that HASH_BITS >= 8.\n     */\n    scan += 2;\n    match++;\n    // Assert(*scan == *match, \"match[2]?\");\n\n    /* We check for insufficient lookahead only every 8th comparison;\n     * the 256th check will be made at strstart+258.\n     */\n    do {\n      /*jshint noempty:false*/\n    } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n             scan < strend);\n\n    // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n    len = MAX_MATCH - (strend - scan);\n    scan = strend - MAX_MATCH;\n\n    if (len > best_len) {\n      s.match_start = cur_match;\n      best_len = len;\n      if (len >= nice_match) {\n        break;\n      }\n      scan_end1  = _win[scan + best_len - 1];\n      scan_end   = _win[scan + best_len];\n    }\n  } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n  if (best_len <= s.lookahead) {\n    return best_len;\n  }\n  return s.lookahead;\n}\n\n\n/* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n *    At least one byte has been read, or avail_in == 0; reads are\n *    performed for at least two bytes (required for the zip translate_eol\n *    option -- not supported here).\n */\nfunction fill_window(s) {\n  var _w_size = s.w_size;\n  var p, n, m, more, str;\n\n  //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n  do {\n    more = s.window_size - s.lookahead - s.strstart;\n\n    // JS ints have 32 bit, block below not needed\n    /* Deal with !@#$% 64K limit: */\n    //if (sizeof(int) <= 2) {\n    //    if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n    //        more = wsize;\n    //\n    //  } else if (more == (unsigned)(-1)) {\n    //        /* Very unlikely, but possible on 16 bit machine if\n    //         * strstart == 0 && lookahead == 1 (input done a byte at time)\n    //         */\n    //        more--;\n    //    }\n    //}\n\n\n    /* If the window is almost full and there is insufficient lookahead,\n     * move the upper half to the lower one to make room in the upper half.\n     */\n    if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n      utils.arraySet(s.window, s.window, _w_size, _w_size, 0);\n      s.match_start -= _w_size;\n      s.strstart -= _w_size;\n      /* we now have strstart >= MAX_DIST */\n      s.block_start -= _w_size;\n\n      /* Slide the hash table (could be avoided with 32 bit values\n       at the expense of memory usage). We slide even when level == 0\n       to keep the hash table consistent if we switch back to level > 0\n       later. (Using level 0 permanently is not an optimal usage of\n       zlib, so we don't care about this pathological case.)\n       */\n\n      n = s.hash_size;\n      p = n;\n      do {\n        m = s.head[--p];\n        s.head[p] = (m >= _w_size ? m - _w_size : 0);\n      } while (--n);\n\n      n = _w_size;\n      p = n;\n      do {\n        m = s.prev[--p];\n        s.prev[p] = (m >= _w_size ? m - _w_size : 0);\n        /* If n is not on any hash chain, prev[n] is garbage but\n         * its value will never be used.\n         */\n      } while (--n);\n\n      more += _w_size;\n    }\n    if (s.strm.avail_in === 0) {\n      break;\n    }\n\n    /* If there was no sliding:\n     *    strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n     *    more == window_size - lookahead - strstart\n     * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n     * => more >= window_size - 2*WSIZE + 2\n     * In the BIG_MEM or MMAP case (not yet supported),\n     *   window_size == input_size + MIN_LOOKAHEAD  &&\n     *   strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n     * Otherwise, window_size == 2*WSIZE so more >= 2.\n     * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n     */\n    //Assert(more >= 2, \"more < 2\");\n    n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n    s.lookahead += n;\n\n    /* Initialize the hash value now that we have some input: */\n    if (s.lookahead + s.insert >= MIN_MATCH) {\n      str = s.strstart - s.insert;\n      s.ins_h = s.window[str];\n\n      /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;\n//#if MIN_MATCH != 3\n//        Call update_hash() MIN_MATCH-3 more times\n//#endif\n      while (s.insert) {\n        /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n        s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n        s.prev[str & s.w_mask] = s.head[s.ins_h];\n        s.head[s.ins_h] = str;\n        str++;\n        s.insert--;\n        if (s.lookahead + s.insert < MIN_MATCH) {\n          break;\n        }\n      }\n    }\n    /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n     * but this is not important since only literal bytes will be emitted.\n     */\n\n  } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n  /* If the WIN_INIT bytes after the end of the current data have never been\n   * written, then zero those bytes in order to avoid memory check reports of\n   * the use of uninitialized (or uninitialised as Julian writes) bytes by\n   * the longest match routines.  Update the high water mark for the next\n   * time through here.  WIN_INIT is set to MAX_MATCH since the longest match\n   * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n   */\n//  if (s.high_water < s.window_size) {\n//    var curr = s.strstart + s.lookahead;\n//    var init = 0;\n//\n//    if (s.high_water < curr) {\n//      /* Previous high water mark below current data -- zero WIN_INIT\n//       * bytes or up to end of window, whichever is less.\n//       */\n//      init = s.window_size - curr;\n//      if (init > WIN_INIT)\n//        init = WIN_INIT;\n//      zmemzero(s->window + curr, (unsigned)init);\n//      s->high_water = curr + init;\n//    }\n//    else if (s->high_water < (ulg)curr + WIN_INIT) {\n//      /* High water mark at or above current data, but below current data\n//       * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n//       * to end of window, whichever is less.\n//       */\n//      init = (ulg)curr + WIN_INIT - s->high_water;\n//      if (init > s->window_size - s->high_water)\n//        init = s->window_size - s->high_water;\n//      zmemzero(s->window + s->high_water, (unsigned)init);\n//      s->high_water += init;\n//    }\n//  }\n//\n//  Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n//    \"not enough room for search\");\n}\n\n/* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n * This function does not insert new strings in the dictionary since\n * uncompressible data is probably not useful. This function is used\n * only for the level=0 compression option.\n * NOTE: this function should be optimized to avoid extra copying from\n * window to pending_buf.\n */\nfunction deflate_stored(s, flush) {\n  /* Stored blocks are limited to 0xffff bytes, pending_buf is limited\n   * to pending_buf_size, and each stored block has a 5 byte header:\n   */\n  var max_block_size = 0xffff;\n\n  if (max_block_size > s.pending_buf_size - 5) {\n    max_block_size = s.pending_buf_size - 5;\n  }\n\n  /* Copy as much as possible from input to output: */\n  for (;;) {\n    /* Fill the window as much as possible: */\n    if (s.lookahead <= 1) {\n\n      //Assert(s->strstart < s->w_size+MAX_DIST(s) ||\n      //  s->block_start >= (long)s->w_size, \"slide too late\");\n//      if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||\n//        s.block_start >= s.w_size)) {\n//        throw  new Error(\"slide too late\");\n//      }\n\n      fill_window(s);\n      if (s.lookahead === 0 && flush === Z_NO_FLUSH) {\n        return BS_NEED_MORE;\n      }\n\n      if (s.lookahead === 0) {\n        break;\n      }\n      /* flush the current block */\n    }\n    //Assert(s->block_start >= 0L, \"block gone\");\n//    if (s.block_start < 0) throw new Error(\"block gone\");\n\n    s.strstart += s.lookahead;\n    s.lookahead = 0;\n\n    /* Emit a stored block if pending_buf will be full: */\n    var max_start = s.block_start + max_block_size;\n\n    if (s.strstart === 0 || s.strstart >= max_start) {\n      /* strstart == 0 is possible when wraparound on 16-bit machine */\n      s.lookahead = s.strstart - max_start;\n      s.strstart = max_start;\n      /*** FLUSH_BLOCK(s, 0); ***/\n      flush_block_only(s, false);\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n      /***/\n\n\n    }\n    /* Flush if we may have to slide, otherwise block_start may become\n     * negative and the data will be gone:\n     */\n    if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {\n      /*** FLUSH_BLOCK(s, 0); ***/\n      flush_block_only(s, false);\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n      /***/\n    }\n  }\n\n  s.insert = 0;\n\n  if (flush === Z_FINISH) {\n    /*** FLUSH_BLOCK(s, 1); ***/\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    /***/\n    return BS_FINISH_DONE;\n  }\n\n  if (s.strstart > s.block_start) {\n    /*** FLUSH_BLOCK(s, 0); ***/\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n    /***/\n  }\n\n  return BS_NEED_MORE;\n}\n\n/* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\nfunction deflate_fast(s, flush) {\n  var hash_head;        /* head of the hash chain */\n  var bflush;           /* set if current block must be flushed */\n\n  for (;;) {\n    /* Make sure that we always have enough lookahead, except\n     * at the end of the input file. We need MAX_MATCH bytes\n     * for the next match, plus MIN_MATCH bytes to insert the\n     * string following the next match.\n     */\n    if (s.lookahead < MIN_LOOKAHEAD) {\n      fill_window(s);\n      if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n        return BS_NEED_MORE;\n      }\n      if (s.lookahead === 0) {\n        break; /* flush the current block */\n      }\n    }\n\n    /* Insert the string window[strstart .. strstart+2] in the\n     * dictionary, and set hash_head to the head of the hash chain:\n     */\n    hash_head = 0/*NIL*/;\n    if (s.lookahead >= MIN_MATCH) {\n      /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n      hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n      s.head[s.ins_h] = s.strstart;\n      /***/\n    }\n\n    /* Find the longest match, discarding those <= prev_length.\n     * At this point we have always match_length < MIN_MATCH\n     */\n    if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n      /* To simplify the code, we prevent matches with the string\n       * of window index 0 (in particular we have to avoid a match\n       * of the string with itself at the start of the input file).\n       */\n      s.match_length = longest_match(s, hash_head);\n      /* longest_match() sets match_start */\n    }\n    if (s.match_length >= MIN_MATCH) {\n      // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n      /*** _tr_tally_dist(s, s.strstart - s.match_start,\n                     s.match_length - MIN_MATCH, bflush); ***/\n      bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);\n\n      s.lookahead -= s.match_length;\n\n      /* Insert new strings in the hash table only if the match length\n       * is not too large. This saves time but degrades compression.\n       */\n      if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {\n        s.match_length--; /* string at strstart already in table */\n        do {\n          s.strstart++;\n          /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n          s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n          s.head[s.ins_h] = s.strstart;\n          /***/\n          /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n           * always MIN_MATCH bytes ahead.\n           */\n        } while (--s.match_length !== 0);\n        s.strstart++;\n      } else\n      {\n        s.strstart += s.match_length;\n        s.match_length = 0;\n        s.ins_h = s.window[s.strstart];\n        /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n        s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;\n\n//#if MIN_MATCH != 3\n//                Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n        /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n         * matter since it will be recomputed at next deflate call.\n         */\n      }\n    } else {\n      /* No match, output a literal byte */\n      //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n      /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n      bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n      s.lookahead--;\n      s.strstart++;\n    }\n    if (bflush) {\n      /*** FLUSH_BLOCK(s, 0); ***/\n      flush_block_only(s, false);\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n      /***/\n    }\n  }\n  s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);\n  if (flush === Z_FINISH) {\n    /*** FLUSH_BLOCK(s, 1); ***/\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    /***/\n    return BS_FINISH_DONE;\n  }\n  if (s.last_lit) {\n    /*** FLUSH_BLOCK(s, 0); ***/\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n    /***/\n  }\n  return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\nfunction deflate_slow(s, flush) {\n  var hash_head;          /* head of hash chain */\n  var bflush;              /* set if current block must be flushed */\n\n  var max_insert;\n\n  /* Process the input block. */\n  for (;;) {\n    /* Make sure that we always have enough lookahead, except\n     * at the end of the input file. We need MAX_MATCH bytes\n     * for the next match, plus MIN_MATCH bytes to insert the\n     * string following the next match.\n     */\n    if (s.lookahead < MIN_LOOKAHEAD) {\n      fill_window(s);\n      if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n        return BS_NEED_MORE;\n      }\n      if (s.lookahead === 0) { break; } /* flush the current block */\n    }\n\n    /* Insert the string window[strstart .. strstart+2] in the\n     * dictionary, and set hash_head to the head of the hash chain:\n     */\n    hash_head = 0/*NIL*/;\n    if (s.lookahead >= MIN_MATCH) {\n      /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n      hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n      s.head[s.ins_h] = s.strstart;\n      /***/\n    }\n\n    /* Find the longest match, discarding those <= prev_length.\n     */\n    s.prev_length = s.match_length;\n    s.prev_match = s.match_start;\n    s.match_length = MIN_MATCH - 1;\n\n    if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n        s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n      /* To simplify the code, we prevent matches with the string\n       * of window index 0 (in particular we have to avoid a match\n       * of the string with itself at the start of the input file).\n       */\n      s.match_length = longest_match(s, hash_head);\n      /* longest_match() sets match_start */\n\n      if (s.match_length <= 5 &&\n         (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n        /* If prev_match is also MIN_MATCH, match_start is garbage\n         * but we will ignore the current match anyway.\n         */\n        s.match_length = MIN_MATCH - 1;\n      }\n    }\n    /* If there was a match at the previous step and the current\n     * match is not better, output the previous match:\n     */\n    if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {\n      max_insert = s.strstart + s.lookahead - MIN_MATCH;\n      /* Do not insert strings in hash table beyond this. */\n\n      //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n      /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n                     s.prev_length - MIN_MATCH, bflush);***/\n      bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);\n      /* Insert in hash table all strings up to the end of the match.\n       * strstart-1 and strstart are already inserted. If there is not\n       * enough lookahead, the last two strings are not inserted in\n       * the hash table.\n       */\n      s.lookahead -= s.prev_length - 1;\n      s.prev_length -= 2;\n      do {\n        if (++s.strstart <= max_insert) {\n          /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n          s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n          s.head[s.ins_h] = s.strstart;\n          /***/\n        }\n      } while (--s.prev_length !== 0);\n      s.match_available = 0;\n      s.match_length = MIN_MATCH - 1;\n      s.strstart++;\n\n      if (bflush) {\n        /*** FLUSH_BLOCK(s, 0); ***/\n        flush_block_only(s, false);\n        if (s.strm.avail_out === 0) {\n          return BS_NEED_MORE;\n        }\n        /***/\n      }\n\n    } else if (s.match_available) {\n      /* If there was no match at the previous position, output a\n       * single literal. If there was a match but the current match\n       * is longer, truncate the previous match to a single literal.\n       */\n      //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n      /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n      bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n      if (bflush) {\n        /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n        flush_block_only(s, false);\n        /***/\n      }\n      s.strstart++;\n      s.lookahead--;\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n    } else {\n      /* There is no previous match to compare with, wait for\n       * the next step to decide.\n       */\n      s.match_available = 1;\n      s.strstart++;\n      s.lookahead--;\n    }\n  }\n  //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n  if (s.match_available) {\n    //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n    /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n    bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n    s.match_available = 0;\n  }\n  s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;\n  if (flush === Z_FINISH) {\n    /*** FLUSH_BLOCK(s, 1); ***/\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    /***/\n    return BS_FINISH_DONE;\n  }\n  if (s.last_lit) {\n    /*** FLUSH_BLOCK(s, 0); ***/\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n    /***/\n  }\n\n  return BS_BLOCK_DONE;\n}\n\n\n/* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one.  Do not maintain a hash table.  (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\nfunction deflate_rle(s, flush) {\n  var bflush;            /* set if current block must be flushed */\n  var prev;              /* byte at distance one to match */\n  var scan, strend;      /* scan goes up to strend for length of run */\n\n  var _win = s.window;\n\n  for (;;) {\n    /* Make sure that we always have enough lookahead, except\n     * at the end of the input file. We need MAX_MATCH bytes\n     * for the longest run, plus one for the unrolled loop.\n     */\n    if (s.lookahead <= MAX_MATCH) {\n      fill_window(s);\n      if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {\n        return BS_NEED_MORE;\n      }\n      if (s.lookahead === 0) { break; } /* flush the current block */\n    }\n\n    /* See how many times the previous byte repeats */\n    s.match_length = 0;\n    if (s.lookahead >= MIN_MATCH && s.strstart > 0) {\n      scan = s.strstart - 1;\n      prev = _win[scan];\n      if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n        strend = s.strstart + MAX_MATCH;\n        do {\n          /*jshint noempty:false*/\n        } while (prev === _win[++scan] && prev === _win[++scan] &&\n                 prev === _win[++scan] && prev === _win[++scan] &&\n                 prev === _win[++scan] && prev === _win[++scan] &&\n                 prev === _win[++scan] && prev === _win[++scan] &&\n                 scan < strend);\n        s.match_length = MAX_MATCH - (strend - scan);\n        if (s.match_length > s.lookahead) {\n          s.match_length = s.lookahead;\n        }\n      }\n      //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n    }\n\n    /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n    if (s.match_length >= MIN_MATCH) {\n      //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n      /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n      bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);\n\n      s.lookahead -= s.match_length;\n      s.strstart += s.match_length;\n      s.match_length = 0;\n    } else {\n      /* No match, output a literal byte */\n      //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n      /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n      bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n      s.lookahead--;\n      s.strstart++;\n    }\n    if (bflush) {\n      /*** FLUSH_BLOCK(s, 0); ***/\n      flush_block_only(s, false);\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n      /***/\n    }\n  }\n  s.insert = 0;\n  if (flush === Z_FINISH) {\n    /*** FLUSH_BLOCK(s, 1); ***/\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    /***/\n    return BS_FINISH_DONE;\n  }\n  if (s.last_lit) {\n    /*** FLUSH_BLOCK(s, 0); ***/\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n    /***/\n  }\n  return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches.  Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\nfunction deflate_huff(s, flush) {\n  var bflush;             /* set if current block must be flushed */\n\n  for (;;) {\n    /* Make sure that we have a literal to write. */\n    if (s.lookahead === 0) {\n      fill_window(s);\n      if (s.lookahead === 0) {\n        if (flush === Z_NO_FLUSH) {\n          return BS_NEED_MORE;\n        }\n        break;      /* flush the current block */\n      }\n    }\n\n    /* Output a literal byte */\n    s.match_length = 0;\n    //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n    /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n    bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n    s.lookahead--;\n    s.strstart++;\n    if (bflush) {\n      /*** FLUSH_BLOCK(s, 0); ***/\n      flush_block_only(s, false);\n      if (s.strm.avail_out === 0) {\n        return BS_NEED_MORE;\n      }\n      /***/\n    }\n  }\n  s.insert = 0;\n  if (flush === Z_FINISH) {\n    /*** FLUSH_BLOCK(s, 1); ***/\n    flush_block_only(s, true);\n    if (s.strm.avail_out === 0) {\n      return BS_FINISH_STARTED;\n    }\n    /***/\n    return BS_FINISH_DONE;\n  }\n  if (s.last_lit) {\n    /*** FLUSH_BLOCK(s, 0); ***/\n    flush_block_only(s, false);\n    if (s.strm.avail_out === 0) {\n      return BS_NEED_MORE;\n    }\n    /***/\n  }\n  return BS_BLOCK_DONE;\n}\n\n/* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\nfunction Config(good_length, max_lazy, nice_length, max_chain, func) {\n  this.good_length = good_length;\n  this.max_lazy = max_lazy;\n  this.nice_length = nice_length;\n  this.max_chain = max_chain;\n  this.func = func;\n}\n\nvar configuration_table;\n\nconfiguration_table = [\n  /*      good lazy nice chain */\n  new Config(0, 0, 0, 0, deflate_stored),          /* 0 store only */\n  new Config(4, 4, 8, 4, deflate_fast),            /* 1 max speed, no lazy matches */\n  new Config(4, 5, 16, 8, deflate_fast),           /* 2 */\n  new Config(4, 6, 32, 32, deflate_fast),          /* 3 */\n\n  new Config(4, 4, 16, 16, deflate_slow),          /* 4 lazy matches */\n  new Config(8, 16, 32, 32, deflate_slow),         /* 5 */\n  new Config(8, 16, 128, 128, deflate_slow),       /* 6 */\n  new Config(8, 32, 128, 256, deflate_slow),       /* 7 */\n  new Config(32, 128, 258, 1024, deflate_slow),    /* 8 */\n  new Config(32, 258, 258, 4096, deflate_slow)     /* 9 max compression */\n];\n\n\n/* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\nfunction lm_init(s) {\n  s.window_size = 2 * s.w_size;\n\n  /*** CLEAR_HASH(s); ***/\n  zero(s.head); // Fill with NIL (= 0);\n\n  /* Set the default configuration parameters:\n   */\n  s.max_lazy_match = configuration_table[s.level].max_lazy;\n  s.good_match = configuration_table[s.level].good_length;\n  s.nice_match = configuration_table[s.level].nice_length;\n  s.max_chain_length = configuration_table[s.level].max_chain;\n\n  s.strstart = 0;\n  s.block_start = 0;\n  s.lookahead = 0;\n  s.insert = 0;\n  s.match_length = s.prev_length = MIN_MATCH - 1;\n  s.match_available = 0;\n  s.ins_h = 0;\n}\n\n\nfunction DeflateState() {\n  this.strm = null;            /* pointer back to this zlib stream */\n  this.status = 0;            /* as the name implies */\n  this.pending_buf = null;      /* output still pending */\n  this.pending_buf_size = 0;  /* size of pending_buf */\n  this.pending_out = 0;       /* next pending byte to output to the stream */\n  this.pending = 0;           /* nb of bytes in the pending buffer */\n  this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip */\n  this.gzhead = null;         /* gzip header information to write */\n  this.gzindex = 0;           /* where in extra, name, or comment */\n  this.method = Z_DEFLATED; /* can only be DEFLATED */\n  this.last_flush = -1;   /* value of flush param for previous deflate call */\n\n  this.w_size = 0;  /* LZ77 window size (32K by default) */\n  this.w_bits = 0;  /* log2(w_size)  (8..16) */\n  this.w_mask = 0;  /* w_size - 1 */\n\n  this.window = null;\n  /* Sliding window. Input bytes are read into the second half of the window,\n   * and move to the first half later to keep a dictionary of at least wSize\n   * bytes. With this organization, matches are limited to a distance of\n   * wSize-MAX_MATCH bytes, but this ensures that IO is always\n   * performed with a length multiple of the block size.\n   */\n\n  this.window_size = 0;\n  /* Actual size of window: 2*wSize, except when the user input buffer\n   * is directly used as sliding window.\n   */\n\n  this.prev = null;\n  /* Link to older string with same hash index. To limit the size of this\n   * array to 64K, this link is maintained only for the last 32K strings.\n   * An index in this array is thus a window index modulo 32K.\n   */\n\n  this.head = null;   /* Heads of the hash chains or NIL. */\n\n  this.ins_h = 0;       /* hash index of string to be inserted */\n  this.hash_size = 0;   /* number of elements in hash table */\n  this.hash_bits = 0;   /* log2(hash_size) */\n  this.hash_mask = 0;   /* hash_size-1 */\n\n  this.hash_shift = 0;\n  /* Number of bits by which ins_h must be shifted at each input\n   * step. It must be such that after MIN_MATCH steps, the oldest\n   * byte no longer takes part in the hash key, that is:\n   *   hash_shift * MIN_MATCH >= hash_bits\n   */\n\n  this.block_start = 0;\n  /* Window position at the beginning of the current output block. Gets\n   * negative when the window is moved backwards.\n   */\n\n  this.match_length = 0;      /* length of best match */\n  this.prev_match = 0;        /* previous match */\n  this.match_available = 0;   /* set if previous match exists */\n  this.strstart = 0;          /* start of string to insert */\n  this.match_start = 0;       /* start of matching string */\n  this.lookahead = 0;         /* number of valid bytes ahead in window */\n\n  this.prev_length = 0;\n  /* Length of the best match at previous step. Matches not greater than this\n   * are discarded. This is used in the lazy match evaluation.\n   */\n\n  this.max_chain_length = 0;\n  /* To speed up deflation, hash chains are never searched beyond this\n   * length.  A higher limit improves compression ratio but degrades the\n   * speed.\n   */\n\n  this.max_lazy_match = 0;\n  /* Attempt to find a better match only when the current match is strictly\n   * smaller than this value. This mechanism is used only for compression\n   * levels >= 4.\n   */\n  // That's alias to max_lazy_match, don't use directly\n  //this.max_insert_length = 0;\n  /* Insert new strings in the hash table only if the match length is not\n   * greater than this length. This saves time but degrades compression.\n   * max_insert_length is used only for compression levels <= 3.\n   */\n\n  this.level = 0;     /* compression level (1..9) */\n  this.strategy = 0;  /* favor or force Huffman coding*/\n\n  this.good_match = 0;\n  /* Use a faster search when the previous match is longer than this */\n\n  this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n              /* used by trees.c: */\n\n  /* Didn't use ct_data typedef below to suppress compiler warning */\n\n  // struct ct_data_s dyn_ltree[HEAP_SIZE];   /* literal and length tree */\n  // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n  // struct ct_data_s bl_tree[2*BL_CODES+1];  /* Huffman tree for bit lengths */\n\n  // Use flat array of DOUBLE size, with interleaved fata,\n  // because JS does not support effective\n  this.dyn_ltree  = new utils.Buf16(HEAP_SIZE * 2);\n  this.dyn_dtree  = new utils.Buf16((2 * D_CODES + 1) * 2);\n  this.bl_tree    = new utils.Buf16((2 * BL_CODES + 1) * 2);\n  zero(this.dyn_ltree);\n  zero(this.dyn_dtree);\n  zero(this.bl_tree);\n\n  this.l_desc   = null;         /* desc. for literal tree */\n  this.d_desc   = null;         /* desc. for distance tree */\n  this.bl_desc  = null;         /* desc. for bit length tree */\n\n  //ush bl_count[MAX_BITS+1];\n  this.bl_count = new utils.Buf16(MAX_BITS + 1);\n  /* number of codes at each bit length for an optimal tree */\n\n  //int heap[2*L_CODES+1];      /* heap used to build the Huffman trees */\n  this.heap = new utils.Buf16(2 * L_CODES + 1);  /* heap used to build the Huffman trees */\n  zero(this.heap);\n\n  this.heap_len = 0;               /* number of elements in the heap */\n  this.heap_max = 0;               /* element of largest frequency */\n  /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n   * The same heap array is used to build all trees.\n   */\n\n  this.depth = new utils.Buf16(2 * L_CODES + 1); //uch depth[2*L_CODES+1];\n  zero(this.depth);\n  /* Depth of each subtree used as tie breaker for trees of equal frequency\n   */\n\n  this.l_buf = 0;          /* buffer index for literals or lengths */\n\n  this.lit_bufsize = 0;\n  /* Size of match buffer for literals/lengths.  There are 4 reasons for\n   * limiting lit_bufsize to 64K:\n   *   - frequencies can be kept in 16 bit counters\n   *   - if compression is not successful for the first block, all input\n   *     data is still in the window so we can still emit a stored block even\n   *     when input comes from standard input.  (This can also be done for\n   *     all blocks if lit_bufsize is not greater than 32K.)\n   *   - if compression is not successful for a file smaller than 64K, we can\n   *     even emit a stored file instead of a stored block (saving 5 bytes).\n   *     This is applicable only for zip (not gzip or zlib).\n   *   - creating new Huffman trees less frequently may not provide fast\n   *     adaptation to changes in the input data statistics. (Take for\n   *     example a binary file with poorly compressible code followed by\n   *     a highly compressible string table.) Smaller buffer sizes give\n   *     fast adaptation but have of course the overhead of transmitting\n   *     trees more frequently.\n   *   - I can't count above 4\n   */\n\n  this.last_lit = 0;      /* running index in l_buf */\n\n  this.d_buf = 0;\n  /* Buffer index for distances. To simplify the code, d_buf and l_buf have\n   * the same number of elements. To use different lengths, an extra flag\n   * array would be necessary.\n   */\n\n  this.opt_len = 0;       /* bit length of current block with optimal trees */\n  this.static_len = 0;    /* bit length of current block with static trees */\n  this.matches = 0;       /* number of string matches in current block */\n  this.insert = 0;        /* bytes at end of window left to insert */\n\n\n  this.bi_buf = 0;\n  /* Output buffer. bits are inserted starting at the bottom (least\n   * significant bits).\n   */\n  this.bi_valid = 0;\n  /* Number of valid bits in bi_buf.  All bits above the last valid bit\n   * are always zero.\n   */\n\n  // Used for window memory init. We safely ignore it for JS. That makes\n  // sense only for pointers and memory check tools.\n  //this.high_water = 0;\n  /* High water mark offset in window for initialized bytes -- bytes above\n   * this are set to zero in order to avoid memory check warnings when\n   * longest match routines access bytes past the input.  This is then\n   * updated to the new high water mark.\n   */\n}\n\n\nfunction deflateResetKeep(strm) {\n  var s;\n\n  if (!strm || !strm.state) {\n    return err(strm, Z_STREAM_ERROR);\n  }\n\n  strm.total_in = strm.total_out = 0;\n  strm.data_type = Z_UNKNOWN;\n\n  s = strm.state;\n  s.pending = 0;\n  s.pending_out = 0;\n\n  if (s.wrap < 0) {\n    s.wrap = -s.wrap;\n    /* was made negative by deflate(..., Z_FINISH); */\n  }\n  s.status = (s.wrap ? INIT_STATE : BUSY_STATE);\n  strm.adler = (s.wrap === 2) ?\n    0  // crc32(0, Z_NULL, 0)\n  :\n    1; // adler32(0, Z_NULL, 0)\n  s.last_flush = Z_NO_FLUSH;\n  trees._tr_init(s);\n  return Z_OK;\n}\n\n\nfunction deflateReset(strm) {\n  var ret = deflateResetKeep(strm);\n  if (ret === Z_OK) {\n    lm_init(strm.state);\n  }\n  return ret;\n}\n\n\nfunction deflateSetHeader(strm, head) {\n  if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n  if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }\n  strm.state.gzhead = head;\n  return Z_OK;\n}\n\n\nfunction deflateInit2(strm, level, method, windowBits, memLevel, strategy) {\n  if (!strm) { // === Z_NULL\n    return Z_STREAM_ERROR;\n  }\n  var wrap = 1;\n\n  if (level === Z_DEFAULT_COMPRESSION) {\n    level = 6;\n  }\n\n  if (windowBits < 0) { /* suppress zlib wrapper */\n    wrap = 0;\n    windowBits = -windowBits;\n  }\n\n  else if (windowBits > 15) {\n    wrap = 2;           /* write gzip wrapper instead */\n    windowBits -= 16;\n  }\n\n\n  if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||\n    windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n    strategy < 0 || strategy > Z_FIXED) {\n    return err(strm, Z_STREAM_ERROR);\n  }\n\n\n  if (windowBits === 8) {\n    windowBits = 9;\n  }\n  /* until 256-byte window bug fixed */\n\n  var s = new DeflateState();\n\n  strm.state = s;\n  s.strm = strm;\n\n  s.wrap = wrap;\n  s.gzhead = null;\n  s.w_bits = windowBits;\n  s.w_size = 1 << s.w_bits;\n  s.w_mask = s.w_size - 1;\n\n  s.hash_bits = memLevel + 7;\n  s.hash_size = 1 << s.hash_bits;\n  s.hash_mask = s.hash_size - 1;\n  s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);\n\n  s.window = new utils.Buf8(s.w_size * 2);\n  s.head = new utils.Buf16(s.hash_size);\n  s.prev = new utils.Buf16(s.w_size);\n\n  // Don't need mem init magic for JS.\n  //s.high_water = 0;  /* nothing written to s->window yet */\n\n  s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n  s.pending_buf_size = s.lit_bufsize * 4;\n\n  //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);\n  //s->pending_buf = (uchf *) overlay;\n  s.pending_buf = new utils.Buf8(s.pending_buf_size);\n\n  // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n  //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);\n  s.d_buf = 1 * s.lit_bufsize;\n\n  //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;\n  s.l_buf = (1 + 2) * s.lit_bufsize;\n\n  s.level = level;\n  s.strategy = strategy;\n  s.method = method;\n\n  return deflateReset(strm);\n}\n\nfunction deflateInit(strm, level) {\n  return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);\n}\n\n\nfunction deflate(strm, flush) {\n  var old_flush, s;\n  var beg, val; // for gzip header write only\n\n  if (!strm || !strm.state ||\n    flush > Z_BLOCK || flush < 0) {\n    return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;\n  }\n\n  s = strm.state;\n\n  if (!strm.output ||\n      (!strm.input && strm.avail_in !== 0) ||\n      (s.status === FINISH_STATE && flush !== Z_FINISH)) {\n    return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);\n  }\n\n  s.strm = strm; /* just in case */\n  old_flush = s.last_flush;\n  s.last_flush = flush;\n\n  /* Write the header */\n  if (s.status === INIT_STATE) {\n\n    if (s.wrap === 2) { // GZIP header\n      strm.adler = 0;  //crc32(0L, Z_NULL, 0);\n      put_byte(s, 31);\n      put_byte(s, 139);\n      put_byte(s, 8);\n      if (!s.gzhead) { // s->gzhead == Z_NULL\n        put_byte(s, 0);\n        put_byte(s, 0);\n        put_byte(s, 0);\n        put_byte(s, 0);\n        put_byte(s, 0);\n        put_byte(s, s.level === 9 ? 2 :\n                    (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n                     4 : 0));\n        put_byte(s, OS_CODE);\n        s.status = BUSY_STATE;\n      }\n      else {\n        put_byte(s, (s.gzhead.text ? 1 : 0) +\n                    (s.gzhead.hcrc ? 2 : 0) +\n                    (!s.gzhead.extra ? 0 : 4) +\n                    (!s.gzhead.name ? 0 : 8) +\n                    (!s.gzhead.comment ? 0 : 16)\n        );\n        put_byte(s, s.gzhead.time & 0xff);\n        put_byte(s, (s.gzhead.time >> 8) & 0xff);\n        put_byte(s, (s.gzhead.time >> 16) & 0xff);\n        put_byte(s, (s.gzhead.time >> 24) & 0xff);\n        put_byte(s, s.level === 9 ? 2 :\n                    (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n                     4 : 0));\n        put_byte(s, s.gzhead.os & 0xff);\n        if (s.gzhead.extra && s.gzhead.extra.length) {\n          put_byte(s, s.gzhead.extra.length & 0xff);\n          put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n        }\n        if (s.gzhead.hcrc) {\n          strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);\n        }\n        s.gzindex = 0;\n        s.status = EXTRA_STATE;\n      }\n    }\n    else // DEFLATE header\n    {\n      var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;\n      var level_flags = -1;\n\n      if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n        level_flags = 0;\n      } else if (s.level < 6) {\n        level_flags = 1;\n      } else if (s.level === 6) {\n        level_flags = 2;\n      } else {\n        level_flags = 3;\n      }\n      header |= (level_flags << 6);\n      if (s.strstart !== 0) { header |= PRESET_DICT; }\n      header += 31 - (header % 31);\n\n      s.status = BUSY_STATE;\n      putShortMSB(s, header);\n\n      /* Save the adler32 of the preset dictionary: */\n      if (s.strstart !== 0) {\n        putShortMSB(s, strm.adler >>> 16);\n        putShortMSB(s, strm.adler & 0xffff);\n      }\n      strm.adler = 1; // adler32(0L, Z_NULL, 0);\n    }\n  }\n\n//#ifdef GZIP\n  if (s.status === EXTRA_STATE) {\n    if (s.gzhead.extra/* != Z_NULL*/) {\n      beg = s.pending;  /* start of bytes to update crc */\n\n      while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {\n        if (s.pending === s.pending_buf_size) {\n          if (s.gzhead.hcrc && s.pending > beg) {\n            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n          }\n          flush_pending(strm);\n          beg = s.pending;\n          if (s.pending === s.pending_buf_size) {\n            break;\n          }\n        }\n        put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);\n        s.gzindex++;\n      }\n      if (s.gzhead.hcrc && s.pending > beg) {\n        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n      }\n      if (s.gzindex === s.gzhead.extra.length) {\n        s.gzindex = 0;\n        s.status = NAME_STATE;\n      }\n    }\n    else {\n      s.status = NAME_STATE;\n    }\n  }\n  if (s.status === NAME_STATE) {\n    if (s.gzhead.name/* != Z_NULL*/) {\n      beg = s.pending;  /* start of bytes to update crc */\n      //int val;\n\n      do {\n        if (s.pending === s.pending_buf_size) {\n          if (s.gzhead.hcrc && s.pending > beg) {\n            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n          }\n          flush_pending(strm);\n          beg = s.pending;\n          if (s.pending === s.pending_buf_size) {\n            val = 1;\n            break;\n          }\n        }\n        // JS specific: little magic to add zero terminator to end of string\n        if (s.gzindex < s.gzhead.name.length) {\n          val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n        } else {\n          val = 0;\n        }\n        put_byte(s, val);\n      } while (val !== 0);\n\n      if (s.gzhead.hcrc && s.pending > beg) {\n        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n      }\n      if (val === 0) {\n        s.gzindex = 0;\n        s.status = COMMENT_STATE;\n      }\n    }\n    else {\n      s.status = COMMENT_STATE;\n    }\n  }\n  if (s.status === COMMENT_STATE) {\n    if (s.gzhead.comment/* != Z_NULL*/) {\n      beg = s.pending;  /* start of bytes to update crc */\n      //int val;\n\n      do {\n        if (s.pending === s.pending_buf_size) {\n          if (s.gzhead.hcrc && s.pending > beg) {\n            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n          }\n          flush_pending(strm);\n          beg = s.pending;\n          if (s.pending === s.pending_buf_size) {\n            val = 1;\n            break;\n          }\n        }\n        // JS specific: little magic to add zero terminator to end of string\n        if (s.gzindex < s.gzhead.comment.length) {\n          val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n        } else {\n          val = 0;\n        }\n        put_byte(s, val);\n      } while (val !== 0);\n\n      if (s.gzhead.hcrc && s.pending > beg) {\n        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n      }\n      if (val === 0) {\n        s.status = HCRC_STATE;\n      }\n    }\n    else {\n      s.status = HCRC_STATE;\n    }\n  }\n  if (s.status === HCRC_STATE) {\n    if (s.gzhead.hcrc) {\n      if (s.pending + 2 > s.pending_buf_size) {\n        flush_pending(strm);\n      }\n      if (s.pending + 2 <= s.pending_buf_size) {\n        put_byte(s, strm.adler & 0xff);\n        put_byte(s, (strm.adler >> 8) & 0xff);\n        strm.adler = 0; //crc32(0L, Z_NULL, 0);\n        s.status = BUSY_STATE;\n      }\n    }\n    else {\n      s.status = BUSY_STATE;\n    }\n  }\n//#endif\n\n  /* Flush as much pending output as possible */\n  if (s.pending !== 0) {\n    flush_pending(strm);\n    if (strm.avail_out === 0) {\n      /* Since avail_out is 0, deflate will be called again with\n       * more output space, but possibly with both pending and\n       * avail_in equal to zero. There won't be anything to do,\n       * but this is not an error situation so make sure we\n       * return OK instead of BUF_ERROR at next call of deflate:\n       */\n      s.last_flush = -1;\n      return Z_OK;\n    }\n\n    /* Make sure there is something to do and avoid duplicate consecutive\n     * flushes. For repeated and useless calls with Z_FINISH, we keep\n     * returning Z_STREAM_END instead of Z_BUF_ERROR.\n     */\n  } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n    flush !== Z_FINISH) {\n    return err(strm, Z_BUF_ERROR);\n  }\n\n  /* User must not provide more input after the first FINISH: */\n  if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n    return err(strm, Z_BUF_ERROR);\n  }\n\n  /* Start a new block or continue the current one.\n   */\n  if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n    (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {\n    var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :\n      (s.strategy === Z_RLE ? deflate_rle(s, flush) :\n        configuration_table[s.level].func(s, flush));\n\n    if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n      s.status = FINISH_STATE;\n    }\n    if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n      if (strm.avail_out === 0) {\n        s.last_flush = -1;\n        /* avoid BUF_ERROR next call, see above */\n      }\n      return Z_OK;\n      /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n       * of deflate should use the same flush parameter to make sure\n       * that the flush is complete. So we don't have to output an\n       * empty block here, this will be done at next call. This also\n       * ensures that for a very small output buffer, we emit at most\n       * one empty block.\n       */\n    }\n    if (bstate === BS_BLOCK_DONE) {\n      if (flush === Z_PARTIAL_FLUSH) {\n        trees._tr_align(s);\n      }\n      else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */\n\n        trees._tr_stored_block(s, 0, 0, false);\n        /* For a full flush, this empty block will be recognized\n         * as a special marker by inflate_sync().\n         */\n        if (flush === Z_FULL_FLUSH) {\n          /*** CLEAR_HASH(s); ***/             /* forget history */\n          zero(s.head); // Fill with NIL (= 0);\n\n          if (s.lookahead === 0) {\n            s.strstart = 0;\n            s.block_start = 0;\n            s.insert = 0;\n          }\n        }\n      }\n      flush_pending(strm);\n      if (strm.avail_out === 0) {\n        s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n        return Z_OK;\n      }\n    }\n  }\n  //Assert(strm->avail_out > 0, \"bug2\");\n  //if (strm.avail_out <= 0) { throw new Error(\"bug2\");}\n\n  if (flush !== Z_FINISH) { return Z_OK; }\n  if (s.wrap <= 0) { return Z_STREAM_END; }\n\n  /* Write the trailer */\n  if (s.wrap === 2) {\n    put_byte(s, strm.adler & 0xff);\n    put_byte(s, (strm.adler >> 8) & 0xff);\n    put_byte(s, (strm.adler >> 16) & 0xff);\n    put_byte(s, (strm.adler >> 24) & 0xff);\n    put_byte(s, strm.total_in & 0xff);\n    put_byte(s, (strm.total_in >> 8) & 0xff);\n    put_byte(s, (strm.total_in >> 16) & 0xff);\n    put_byte(s, (strm.total_in >> 24) & 0xff);\n  }\n  else\n  {\n    putShortMSB(s, strm.adler >>> 16);\n    putShortMSB(s, strm.adler & 0xffff);\n  }\n\n  flush_pending(strm);\n  /* If avail_out is zero, the application will call deflate again\n   * to flush the rest.\n   */\n  if (s.wrap > 0) { s.wrap = -s.wrap; }\n  /* write the trailer only once! */\n  return s.pending !== 0 ? Z_OK : Z_STREAM_END;\n}\n\nfunction deflateEnd(strm) {\n  var status;\n\n  if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n    return Z_STREAM_ERROR;\n  }\n\n  status = strm.state.status;\n  if (status !== INIT_STATE &&\n    status !== EXTRA_STATE &&\n    status !== NAME_STATE &&\n    status !== COMMENT_STATE &&\n    status !== HCRC_STATE &&\n    status !== BUSY_STATE &&\n    status !== FINISH_STATE\n  ) {\n    return err(strm, Z_STREAM_ERROR);\n  }\n\n  strm.state = null;\n\n  return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;\n}\n\n\n/* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\nfunction deflateSetDictionary(strm, dictionary) {\n  var dictLength = dictionary.length;\n\n  var s;\n  var str, n;\n  var wrap;\n  var avail;\n  var next;\n  var input;\n  var tmpDict;\n\n  if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n    return Z_STREAM_ERROR;\n  }\n\n  s = strm.state;\n  wrap = s.wrap;\n\n  if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n    return Z_STREAM_ERROR;\n  }\n\n  /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n  if (wrap === 1) {\n    /* adler32(strm->adler, dictionary, dictLength); */\n    strm.adler = adler32(strm.adler, dictionary, dictLength, 0);\n  }\n\n  s.wrap = 0;   /* avoid computing Adler-32 in read_buf */\n\n  /* if dictionary would fill window, just replace the history */\n  if (dictLength >= s.w_size) {\n    if (wrap === 0) {            /* already empty otherwise */\n      /*** CLEAR_HASH(s); ***/\n      zero(s.head); // Fill with NIL (= 0);\n      s.strstart = 0;\n      s.block_start = 0;\n      s.insert = 0;\n    }\n    /* use the tail */\n    // dictionary = dictionary.slice(dictLength - s.w_size);\n    tmpDict = new utils.Buf8(s.w_size);\n    utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);\n    dictionary = tmpDict;\n    dictLength = s.w_size;\n  }\n  /* insert dictionary into window and hash */\n  avail = strm.avail_in;\n  next = strm.next_in;\n  input = strm.input;\n  strm.avail_in = dictLength;\n  strm.next_in = 0;\n  strm.input = dictionary;\n  fill_window(s);\n  while (s.lookahead >= MIN_MATCH) {\n    str = s.strstart;\n    n = s.lookahead - (MIN_MATCH - 1);\n    do {\n      /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n      s.prev[str & s.w_mask] = s.head[s.ins_h];\n\n      s.head[s.ins_h] = str;\n      str++;\n    } while (--n);\n    s.strstart = str;\n    s.lookahead = MIN_MATCH - 1;\n    fill_window(s);\n  }\n  s.strstart += s.lookahead;\n  s.block_start = s.strstart;\n  s.insert = s.lookahead;\n  s.lookahead = 0;\n  s.match_length = s.prev_length = MIN_MATCH - 1;\n  s.match_available = 0;\n  strm.next_in = next;\n  strm.input = input;\n  strm.avail_in = avail;\n  s.wrap = wrap;\n  return Z_OK;\n}\n\n\nexports.deflateInit = deflateInit;\nexports.deflateInit2 = deflateInit2;\nexports.deflateReset = deflateReset;\nexports.deflateResetKeep = deflateResetKeep;\nexports.deflateSetHeader = deflateSetHeader;\nexports.deflate = deflate;\nexports.deflateEnd = deflateEnd;\nexports.deflateSetDictionary = deflateSetDictionary;\nexports.deflateInfo = 'pako deflate (from Nodeca project)';\n\n/* Not implemented\nexports.deflateBound = deflateBound;\nexports.deflateCopy = deflateCopy;\nexports.deflateParams = deflateParams;\nexports.deflatePending = deflatePending;\nexports.deflatePrime = deflatePrime;\nexports.deflateTune = deflateTune;\n*/\n",
+    "'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction GZheader() {\n  /* true if compressed data believed to be text */\n  this.text       = 0;\n  /* modification time */\n  this.time       = 0;\n  /* extra flags (not used when writing a gzip file) */\n  this.xflags     = 0;\n  /* operating system */\n  this.os         = 0;\n  /* pointer to extra field or Z_NULL if none */\n  this.extra      = null;\n  /* extra field length (valid if extra != Z_NULL) */\n  this.extra_len  = 0; // Actually, we don't need it in JS,\n                       // but leave for few code modifications\n\n  //\n  // Setup limits is not necessary because in js we should not preallocate memory\n  // for inflate use constant limit in 65536 bytes\n  //\n\n  /* space at extra (only when reading header) */\n  // this.extra_max  = 0;\n  /* pointer to zero-terminated file name or Z_NULL */\n  this.name       = '';\n  /* space at name (only when reading header) */\n  // this.name_max   = 0;\n  /* pointer to zero-terminated comment or Z_NULL */\n  this.comment    = '';\n  /* space at comment (only when reading header) */\n  // this.comm_max   = 0;\n  /* true if there was or will be a header crc */\n  this.hcrc       = 0;\n  /* true when done reading gzip header (not used when writing a gzip file) */\n  this.done       = false;\n}\n\nmodule.exports = GZheader;\n",
+    "'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// See state defs from inflate.js\nvar BAD = 30;       /* got a data error -- remain here until reset */\nvar TYPE = 12;      /* i: waiting for type bits, including last-flag bit */\n\n/*\n   Decode literal, length, and distance codes and write out the resulting\n   literal and match bytes until either not enough input or output is\n   available, an end-of-block is encountered, or a data error is encountered.\n   When large enough input and output buffers are supplied to inflate(), for\n   example, a 16K input buffer and a 64K output buffer, more than 95% of the\n   inflate execution time is spent in this routine.\n\n   Entry assumptions:\n\n        state.mode === LEN\n        strm.avail_in >= 6\n        strm.avail_out >= 258\n        start >= strm.avail_out\n        state.bits < 8\n\n   On return, state.mode is one of:\n\n        LEN -- ran out of enough output space or enough available input\n        TYPE -- reached end of block code, inflate() to interpret next block\n        BAD -- error in block data\n\n   Notes:\n\n    - The maximum input bits used by a length/distance pair is 15 bits for the\n      length code, 5 bits for the length extra, 15 bits for the distance code,\n      and 13 bits for the distance extra.  This totals 48 bits, or six bytes.\n      Therefore if strm.avail_in >= 6, then there is enough input to avoid\n      checking for available input while decoding.\n\n    - The maximum bytes that a single length/distance pair can output is 258\n      bytes, which is the maximum length that can be coded.  inflate_fast()\n      requires strm.avail_out >= 258 for each loop to avoid checking for\n      output space.\n */\nmodule.exports = function inflate_fast(strm, start) {\n  var state;\n  var _in;                    /* local strm.input */\n  var last;                   /* have enough input while in < last */\n  var _out;                   /* local strm.output */\n  var beg;                    /* inflate()'s initial strm.output */\n  var end;                    /* while out < end, enough space available */\n//#ifdef INFLATE_STRICT\n  var dmax;                   /* maximum distance from zlib header */\n//#endif\n  var wsize;                  /* window size or zero if not using window */\n  var whave;                  /* valid bytes in the window */\n  var wnext;                  /* window write index */\n  // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n  var s_window;               /* allocated sliding window, if wsize != 0 */\n  var hold;                   /* local strm.hold */\n  var bits;                   /* local strm.bits */\n  var lcode;                  /* local strm.lencode */\n  var dcode;                  /* local strm.distcode */\n  var lmask;                  /* mask for first level of length codes */\n  var dmask;                  /* mask for first level of distance codes */\n  var here;                   /* retrieved table entry */\n  var op;                     /* code bits, operation, extra bits, or */\n                              /*  window position, window bytes to copy */\n  var len;                    /* match length, unused bytes */\n  var dist;                   /* match distance */\n  var from;                   /* where to copy match from */\n  var from_source;\n\n\n  var input, output; // JS specific, because we have no pointers\n\n  /* copy state to local variables */\n  state = strm.state;\n  //here = state.here;\n  _in = strm.next_in;\n  input = strm.input;\n  last = _in + (strm.avail_in - 5);\n  _out = strm.next_out;\n  output = strm.output;\n  beg = _out - (start - strm.avail_out);\n  end = _out + (strm.avail_out - 257);\n//#ifdef INFLATE_STRICT\n  dmax = state.dmax;\n//#endif\n  wsize = state.wsize;\n  whave = state.whave;\n  wnext = state.wnext;\n  s_window = state.window;\n  hold = state.hold;\n  bits = state.bits;\n  lcode = state.lencode;\n  dcode = state.distcode;\n  lmask = (1 << state.lenbits) - 1;\n  dmask = (1 << state.distbits) - 1;\n\n\n  /* decode literals and length/distances until end-of-block or not enough\n     input data or output space */\n\n  top:\n  do {\n    if (bits < 15) {\n      hold += input[_in++] << bits;\n      bits += 8;\n      hold += input[_in++] << bits;\n      bits += 8;\n    }\n\n    here = lcode[hold & lmask];\n\n    dolen:\n    for (;;) { // Goto emulation\n      op = here >>> 24/*here.bits*/;\n      hold >>>= op;\n      bits -= op;\n      op = (here >>> 16) & 0xff/*here.op*/;\n      if (op === 0) {                          /* literal */\n        //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n        //        \"inflate:         literal '%c'\\n\" :\n        //        \"inflate:         literal 0x%02x\\n\", here.val));\n        output[_out++] = here & 0xffff/*here.val*/;\n      }\n      else if (op & 16) {                     /* length base */\n        len = here & 0xffff/*here.val*/;\n        op &= 15;                           /* number of extra bits */\n        if (op) {\n          if (bits < op) {\n            hold += input[_in++] << bits;\n            bits += 8;\n          }\n          len += hold & ((1 << op) - 1);\n          hold >>>= op;\n          bits -= op;\n        }\n        //Tracevv((stderr, \"inflate:         length %u\\n\", len));\n        if (bits < 15) {\n          hold += input[_in++] << bits;\n          bits += 8;\n          hold += input[_in++] << bits;\n          bits += 8;\n        }\n        here = dcode[hold & dmask];\n\n        dodist:\n        for (;;) { // goto emulation\n          op = here >>> 24/*here.bits*/;\n          hold >>>= op;\n          bits -= op;\n          op = (here >>> 16) & 0xff/*here.op*/;\n\n          if (op & 16) {                      /* distance base */\n            dist = here & 0xffff/*here.val*/;\n            op &= 15;                       /* number of extra bits */\n            if (bits < op) {\n              hold += input[_in++] << bits;\n              bits += 8;\n              if (bits < op) {\n                hold += input[_in++] << bits;\n                bits += 8;\n              }\n            }\n            dist += hold & ((1 << op) - 1);\n//#ifdef INFLATE_STRICT\n            if (dist > dmax) {\n              strm.msg = 'invalid distance too far back';\n              state.mode = BAD;\n              break top;\n            }\n//#endif\n            hold >>>= op;\n            bits -= op;\n            //Tracevv((stderr, \"inflate:         distance %u\\n\", dist));\n            op = _out - beg;                /* max distance in output */\n            if (dist > op) {                /* see if copy from window */\n              op = dist - op;               /* distance back in window */\n              if (op > whave) {\n                if (state.sane) {\n                  strm.msg = 'invalid distance too far back';\n                  state.mode = BAD;\n                  break top;\n                }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n//                if (len <= op - whave) {\n//                  do {\n//                    output[_out++] = 0;\n//                  } while (--len);\n//                  continue top;\n//                }\n//                len -= op - whave;\n//                do {\n//                  output[_out++] = 0;\n//                } while (--op > whave);\n//                if (op === 0) {\n//                  from = _out - dist;\n//                  do {\n//                    output[_out++] = output[from++];\n//                  } while (--len);\n//                  continue top;\n//                }\n//#endif\n              }\n              from = 0; // window index\n              from_source = s_window;\n              if (wnext === 0) {           /* very common case */\n                from += wsize - op;\n                if (op < len) {         /* some from window */\n                  len -= op;\n                  do {\n                    output[_out++] = s_window[from++];\n                  } while (--op);\n                  from = _out - dist;  /* rest from output */\n                  from_source = output;\n                }\n              }\n              else if (wnext < op) {      /* wrap around window */\n                from += wsize + wnext - op;\n                op -= wnext;\n                if (op < len) {         /* some from end of window */\n                  len -= op;\n                  do {\n                    output[_out++] = s_window[from++];\n                  } while (--op);\n                  from = 0;\n                  if (wnext < len) {  /* some from start of window */\n                    op = wnext;\n                    len -= op;\n                    do {\n                      output[_out++] = s_window[from++];\n                    } while (--op);\n                    from = _out - dist;      /* rest from output */\n                    from_source = output;\n                  }\n                }\n              }\n              else {                      /* contiguous in window */\n                from += wnext - op;\n                if (op < len) {         /* some from window */\n                  len -= op;\n                  do {\n                    output[_out++] = s_window[from++];\n                  } while (--op);\n                  from = _out - dist;  /* rest from output */\n                  from_source = output;\n                }\n              }\n              while (len > 2) {\n                output[_out++] = from_source[from++];\n                output[_out++] = from_source[from++];\n                output[_out++] = from_source[from++];\n                len -= 3;\n              }\n              if (len) {\n                output[_out++] = from_source[from++];\n                if (len > 1) {\n                  output[_out++] = from_source[from++];\n                }\n              }\n            }\n            else {\n              from = _out - dist;          /* copy direct from output */\n              do {                        /* minimum length is three */\n                output[_out++] = output[from++];\n                output[_out++] = output[from++];\n                output[_out++] = output[from++];\n                len -= 3;\n              } while (len > 2);\n              if (len) {\n                output[_out++] = output[from++];\n                if (len > 1) {\n                  output[_out++] = output[from++];\n                }\n              }\n            }\n          }\n          else if ((op & 64) === 0) {          /* 2nd level distance code */\n            here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n            continue dodist;\n          }\n          else {\n            strm.msg = 'invalid distance code';\n            state.mode = BAD;\n            break top;\n          }\n\n          break; // need to emulate goto via \"continue\"\n        }\n      }\n      else if ((op & 64) === 0) {              /* 2nd level length code */\n        here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n        continue dolen;\n      }\n      else if (op & 32) {                     /* end-of-block */\n        //Tracevv((stderr, \"inflate:         end of block\\n\"));\n        state.mode = TYPE;\n        break top;\n      }\n      else {\n        strm.msg = 'invalid literal/length code';\n        state.mode = BAD;\n        break top;\n      }\n\n      break; // need to emulate goto via \"continue\"\n    }\n  } while (_in < last && _out < end);\n\n  /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n  len = bits >> 3;\n  _in -= len;\n  bits -= len << 3;\n  hold &= (1 << bits) - 1;\n\n  /* update state and return */\n  strm.next_in = _in;\n  strm.next_out = _out;\n  strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n  strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n  state.hold = hold;\n  state.bits = bits;\n  return;\n};\n",
+    "'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils         = require('../utils/common');\nvar adler32       = require('./adler32');\nvar crc32         = require('./crc32');\nvar inflate_fast  = require('./inffast');\nvar inflate_table = require('./inftrees');\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\n//var Z_NO_FLUSH      = 0;\n//var Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH    = 2;\n//var Z_FULL_FLUSH    = 3;\nvar Z_FINISH        = 4;\nvar Z_BLOCK         = 5;\nvar Z_TREES         = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK            = 0;\nvar Z_STREAM_END    = 1;\nvar Z_NEED_DICT     = 2;\n//var Z_ERRNO         = -1;\nvar Z_STREAM_ERROR  = -2;\nvar Z_DATA_ERROR    = -3;\nvar Z_MEM_ERROR     = -4;\nvar Z_BUF_ERROR     = -5;\n//var Z_VERSION_ERROR = -6;\n\n/* The deflate compression method */\nvar Z_DEFLATED  = 8;\n\n\n/* STATES ====================================================================*/\n/* ===========================================================================*/\n\n\nvar    HEAD = 1;       /* i: waiting for magic header */\nvar    FLAGS = 2;      /* i: waiting for method and flags (gzip) */\nvar    TIME = 3;       /* i: waiting for modification time (gzip) */\nvar    OS = 4;         /* i: waiting for extra flags and operating system (gzip) */\nvar    EXLEN = 5;      /* i: waiting for extra length (gzip) */\nvar    EXTRA = 6;      /* i: waiting for extra bytes (gzip) */\nvar    NAME = 7;       /* i: waiting for end of file name (gzip) */\nvar    COMMENT = 8;    /* i: waiting for end of comment (gzip) */\nvar    HCRC = 9;       /* i: waiting for header crc (gzip) */\nvar    DICTID = 10;    /* i: waiting for dictionary check value */\nvar    DICT = 11;      /* waiting for inflateSetDictionary() call */\nvar        TYPE = 12;      /* i: waiting for type bits, including last-flag bit */\nvar        TYPEDO = 13;    /* i: same, but skip check to exit inflate on new block */\nvar        STORED = 14;    /* i: waiting for stored size (length and complement) */\nvar        COPY_ = 15;     /* i/o: same as COPY below, but only first time in */\nvar        COPY = 16;      /* i/o: waiting for input or output to copy stored block */\nvar        TABLE = 17;     /* i: waiting for dynamic block table lengths */\nvar        LENLENS = 18;   /* i: waiting for code length code lengths */\nvar        CODELENS = 19;  /* i: waiting for length/lit and distance code lengths */\nvar            LEN_ = 20;      /* i: same as LEN below, but only first time in */\nvar            LEN = 21;       /* i: waiting for length/lit/eob code */\nvar            LENEXT = 22;    /* i: waiting for length extra bits */\nvar            DIST = 23;      /* i: waiting for distance code */\nvar            DISTEXT = 24;   /* i: waiting for distance extra bits */\nvar            MATCH = 25;     /* o: waiting for output space to copy string */\nvar            LIT = 26;       /* o: waiting for output space to write literal */\nvar    CHECK = 27;     /* i: waiting for 32-bit check value */\nvar    LENGTH = 28;    /* i: waiting for 32-bit length (gzip) */\nvar    DONE = 29;      /* finished check, done -- remain here until reset */\nvar    BAD = 30;       /* got a data error -- remain here until reset */\nvar    MEM = 31;       /* got an inflate() memory error -- remain here until reset */\nvar    SYNC = 32;      /* looking for synchronization bytes to restart inflate() */\n\n/* ===========================================================================*/\n\n\n\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH =  (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_WBITS = MAX_WBITS;\n\n\nfunction zswap32(q) {\n  return  (((q >>> 24) & 0xff) +\n          ((q >>> 8) & 0xff00) +\n          ((q & 0xff00) << 8) +\n          ((q & 0xff) << 24));\n}\n\n\nfunction InflateState() {\n  this.mode = 0;             /* current inflate mode */\n  this.last = false;          /* true if processing last block */\n  this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip */\n  this.havedict = false;      /* true if dictionary provided */\n  this.flags = 0;             /* gzip header method and flags (0 if zlib) */\n  this.dmax = 0;              /* zlib header max distance (INFLATE_STRICT) */\n  this.check = 0;             /* protected copy of check value */\n  this.total = 0;             /* protected copy of output count */\n  // TODO: may be {}\n  this.head = null;           /* where to save gzip header information */\n\n  /* sliding window */\n  this.wbits = 0;             /* log base 2 of requested window size */\n  this.wsize = 0;             /* window size or zero if not using window */\n  this.whave = 0;             /* valid bytes in the window */\n  this.wnext = 0;             /* window write index */\n  this.window = null;         /* allocated sliding window, if needed */\n\n  /* bit accumulator */\n  this.hold = 0;              /* input bit accumulator */\n  this.bits = 0;              /* number of bits in \"in\" */\n\n  /* for string and stored block copying */\n  this.length = 0;            /* literal or length of data to copy */\n  this.offset = 0;            /* distance back to copy string from */\n\n  /* for table and code decoding */\n  this.extra = 0;             /* extra bits needed */\n\n  /* fixed and dynamic code tables */\n  this.lencode = null;          /* starting table for length/literal codes */\n  this.distcode = null;         /* starting table for distance codes */\n  this.lenbits = 0;           /* index bits for lencode */\n  this.distbits = 0;          /* index bits for distcode */\n\n  /* dynamic table building */\n  this.ncode = 0;             /* number of code length code lengths */\n  this.nlen = 0;              /* number of length code lengths */\n  this.ndist = 0;             /* number of distance code lengths */\n  this.have = 0;              /* number of code lengths in lens[] */\n  this.next = null;              /* next available space in codes[] */\n\n  this.lens = new utils.Buf16(320); /* temporary storage for code lengths */\n  this.work = new utils.Buf16(288); /* work area for code table building */\n\n  /*\n   because we don't have pointers in js, we use lencode and distcode directly\n   as buffers so we don't need codes\n  */\n  //this.codes = new utils.Buf32(ENOUGH);       /* space for code tables */\n  this.lendyn = null;              /* dynamic table for length/literal codes (JS specific) */\n  this.distdyn = null;             /* dynamic table for distance codes (JS specific) */\n  this.sane = 0;                   /* if false, allow invalid distance too far */\n  this.back = 0;                   /* bits back of last unprocessed length/lit */\n  this.was = 0;                    /* initial length of match */\n}\n\nfunction inflateResetKeep(strm) {\n  var state;\n\n  if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n  state = strm.state;\n  strm.total_in = strm.total_out = state.total = 0;\n  strm.msg = ''; /*Z_NULL*/\n  if (state.wrap) {       /* to support ill-conceived Java test suite */\n    strm.adler = state.wrap & 1;\n  }\n  state.mode = HEAD;\n  state.last = 0;\n  state.havedict = 0;\n  state.dmax = 32768;\n  state.head = null/*Z_NULL*/;\n  state.hold = 0;\n  state.bits = 0;\n  //state.lencode = state.distcode = state.next = state.codes;\n  state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS);\n  state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS);\n\n  state.sane = 1;\n  state.back = -1;\n  //Tracev((stderr, \"inflate: reset\\n\"));\n  return Z_OK;\n}\n\nfunction inflateReset(strm) {\n  var state;\n\n  if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n  state = strm.state;\n  state.wsize = 0;\n  state.whave = 0;\n  state.wnext = 0;\n  return inflateResetKeep(strm);\n\n}\n\nfunction inflateReset2(strm, windowBits) {\n  var wrap;\n  var state;\n\n  /* get the state */\n  if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n  state = strm.state;\n\n  /* extract wrap request from windowBits parameter */\n  if (windowBits < 0) {\n    wrap = 0;\n    windowBits = -windowBits;\n  }\n  else {\n    wrap = (windowBits >> 4) + 1;\n    if (windowBits < 48) {\n      windowBits &= 15;\n    }\n  }\n\n  /* set number of window bits, free window if different */\n  if (windowBits && (windowBits < 8 || windowBits > 15)) {\n    return Z_STREAM_ERROR;\n  }\n  if (state.window !== null && state.wbits !== windowBits) {\n    state.window = null;\n  }\n\n  /* update state and reset the rest of it */\n  state.wrap = wrap;\n  state.wbits = windowBits;\n  return inflateReset(strm);\n}\n\nfunction inflateInit2(strm, windowBits) {\n  var ret;\n  var state;\n\n  if (!strm) { return Z_STREAM_ERROR; }\n  //strm.msg = Z_NULL;                 /* in case we return an error */\n\n  state = new InflateState();\n\n  //if (state === Z_NULL) return Z_MEM_ERROR;\n  //Tracev((stderr, \"inflate: allocated\\n\"));\n  strm.state = state;\n  state.window = null/*Z_NULL*/;\n  ret = inflateReset2(strm, windowBits);\n  if (ret !== Z_OK) {\n    strm.state = null/*Z_NULL*/;\n  }\n  return ret;\n}\n\nfunction inflateInit(strm) {\n  return inflateInit2(strm, DEF_WBITS);\n}\n\n\n/*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding.  Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter.  This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time.  However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\nvar virgin = true;\n\nvar lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\nfunction fixedtables(state) {\n  /* build fixed huffman tables if first call (may not be thread safe) */\n  if (virgin) {\n    var sym;\n\n    lenfix = new utils.Buf32(512);\n    distfix = new utils.Buf32(32);\n\n    /* literal/length table */\n    sym = 0;\n    while (sym < 144) { state.lens[sym++] = 8; }\n    while (sym < 256) { state.lens[sym++] = 9; }\n    while (sym < 280) { state.lens[sym++] = 7; }\n    while (sym < 288) { state.lens[sym++] = 8; }\n\n    inflate_table(LENS,  state.lens, 0, 288, lenfix,   0, state.work, { bits: 9 });\n\n    /* distance table */\n    sym = 0;\n    while (sym < 32) { state.lens[sym++] = 5; }\n\n    inflate_table(DISTS, state.lens, 0, 32,   distfix, 0, state.work, { bits: 5 });\n\n    /* do this just once */\n    virgin = false;\n  }\n\n  state.lencode = lenfix;\n  state.lenbits = 9;\n  state.distcode = distfix;\n  state.distbits = 5;\n}\n\n\n/*\n Update the window with the last wsize (normally 32K) bytes written before\n returning.  If window does not exist yet, create it.  This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\nfunction updatewindow(strm, src, end, copy) {\n  var dist;\n  var state = strm.state;\n\n  /* if it hasn't been done already, allocate space for the window */\n  if (state.window === null) {\n    state.wsize = 1 << state.wbits;\n    state.wnext = 0;\n    state.whave = 0;\n\n    state.window = new utils.Buf8(state.wsize);\n  }\n\n  /* copy state->wsize or less output bytes into the circular window */\n  if (copy >= state.wsize) {\n    utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0);\n    state.wnext = 0;\n    state.whave = state.wsize;\n  }\n  else {\n    dist = state.wsize - state.wnext;\n    if (dist > copy) {\n      dist = copy;\n    }\n    //zmemcpy(state->window + state->wnext, end - copy, dist);\n    utils.arraySet(state.window, src, end - copy, dist, state.wnext);\n    copy -= dist;\n    if (copy) {\n      //zmemcpy(state->window, end - copy, copy);\n      utils.arraySet(state.window, src, end - copy, copy, 0);\n      state.wnext = copy;\n      state.whave = state.wsize;\n    }\n    else {\n      state.wnext += dist;\n      if (state.wnext === state.wsize) { state.wnext = 0; }\n      if (state.whave < state.wsize) { state.whave += dist; }\n    }\n  }\n  return 0;\n}\n\nfunction inflate(strm, flush) {\n  var state;\n  var input, output;          // input/output buffers\n  var next;                   /* next input INDEX */\n  var put;                    /* next output INDEX */\n  var have, left;             /* available input and output */\n  var hold;                   /* bit buffer */\n  var bits;                   /* bits in bit buffer */\n  var _in, _out;              /* save starting available input and output */\n  var copy;                   /* number of stored or match bytes to copy */\n  var from;                   /* where to copy match bytes from */\n  var from_source;\n  var here = 0;               /* current decoding table entry */\n  var here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n  //var last;                   /* parent table entry */\n  var last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n  var len;                    /* length to copy for repeats, bits to drop */\n  var ret;                    /* return code */\n  var hbuf = new utils.Buf8(4);    /* buffer for gzip header crc calculation */\n  var opts;\n\n  var n; // temporary var for NEED_BITS\n\n  var order = /* permutation of code lengths */\n    [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n\n  if (!strm || !strm.state || !strm.output ||\n      (!strm.input && strm.avail_in !== 0)) {\n    return Z_STREAM_ERROR;\n  }\n\n  state = strm.state;\n  if (state.mode === TYPE) { state.mode = TYPEDO; }    /* skip check */\n\n\n  //--- LOAD() ---\n  put = strm.next_out;\n  output = strm.output;\n  left = strm.avail_out;\n  next = strm.next_in;\n  input = strm.input;\n  have = strm.avail_in;\n  hold = state.hold;\n  bits = state.bits;\n  //---\n\n  _in = have;\n  _out = left;\n  ret = Z_OK;\n\n  inf_leave: // goto emulation\n  for (;;) {\n    switch (state.mode) {\n      case HEAD:\n        if (state.wrap === 0) {\n          state.mode = TYPEDO;\n          break;\n        }\n        //=== NEEDBITS(16);\n        while (bits < 16) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        if ((state.wrap & 2) && hold === 0x8b1f) {  /* gzip header */\n          state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n          //=== CRC2(state.check, hold);\n          hbuf[0] = hold & 0xff;\n          hbuf[1] = (hold >>> 8) & 0xff;\n          state.check = crc32(state.check, hbuf, 2, 0);\n          //===//\n\n          //=== INITBITS();\n          hold = 0;\n          bits = 0;\n          //===//\n          state.mode = FLAGS;\n          break;\n        }\n        state.flags = 0;           /* expect zlib header */\n        if (state.head) {\n          state.head.done = false;\n        }\n        if (!(state.wrap & 1) ||   /* check if zlib header allowed */\n          (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n          strm.msg = 'incorrect header check';\n          state.mode = BAD;\n          break;\n        }\n        if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {\n          strm.msg = 'unknown compression method';\n          state.mode = BAD;\n          break;\n        }\n        //--- DROPBITS(4) ---//\n        hold >>>= 4;\n        bits -= 4;\n        //---//\n        len = (hold & 0x0f)/*BITS(4)*/ + 8;\n        if (state.wbits === 0) {\n          state.wbits = len;\n        }\n        else if (len > state.wbits) {\n          strm.msg = 'invalid window size';\n          state.mode = BAD;\n          break;\n        }\n        state.dmax = 1 << len;\n        //Tracev((stderr, \"inflate:   zlib header ok\\n\"));\n        strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n        state.mode = hold & 0x200 ? DICTID : TYPE;\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        break;\n      case FLAGS:\n        //=== NEEDBITS(16); */\n        while (bits < 16) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        state.flags = hold;\n        if ((state.flags & 0xff) !== Z_DEFLATED) {\n          strm.msg = 'unknown compression method';\n          state.mode = BAD;\n          break;\n        }\n        if (state.flags & 0xe000) {\n          strm.msg = 'unknown header flags set';\n          state.mode = BAD;\n          break;\n        }\n        if (state.head) {\n          state.head.text = ((hold >> 8) & 1);\n        }\n        if (state.flags & 0x0200) {\n          //=== CRC2(state.check, hold);\n          hbuf[0] = hold & 0xff;\n          hbuf[1] = (hold >>> 8) & 0xff;\n          state.check = crc32(state.check, hbuf, 2, 0);\n          //===//\n        }\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        state.mode = TIME;\n        /* falls through */\n      case TIME:\n        //=== NEEDBITS(32); */\n        while (bits < 32) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        if (state.head) {\n          state.head.time = hold;\n        }\n        if (state.flags & 0x0200) {\n          //=== CRC4(state.check, hold)\n          hbuf[0] = hold & 0xff;\n          hbuf[1] = (hold >>> 8) & 0xff;\n          hbuf[2] = (hold >>> 16) & 0xff;\n          hbuf[3] = (hold >>> 24) & 0xff;\n          state.check = crc32(state.check, hbuf, 4, 0);\n          //===\n        }\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        state.mode = OS;\n        /* falls through */\n      case OS:\n        //=== NEEDBITS(16); */\n        while (bits < 16) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        if (state.head) {\n          state.head.xflags = (hold & 0xff);\n          state.head.os = (hold >> 8);\n        }\n        if (state.flags & 0x0200) {\n          //=== CRC2(state.check, hold);\n          hbuf[0] = hold & 0xff;\n          hbuf[1] = (hold >>> 8) & 0xff;\n          state.check = crc32(state.check, hbuf, 2, 0);\n          //===//\n        }\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        state.mode = EXLEN;\n        /* falls through */\n      case EXLEN:\n        if (state.flags & 0x0400) {\n          //=== NEEDBITS(16); */\n          while (bits < 16) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          state.length = hold;\n          if (state.head) {\n            state.head.extra_len = hold;\n          }\n          if (state.flags & 0x0200) {\n            //=== CRC2(state.check, hold);\n            hbuf[0] = hold & 0xff;\n            hbuf[1] = (hold >>> 8) & 0xff;\n            state.check = crc32(state.check, hbuf, 2, 0);\n            //===//\n          }\n          //=== INITBITS();\n          hold = 0;\n          bits = 0;\n          //===//\n        }\n        else if (state.head) {\n          state.head.extra = null/*Z_NULL*/;\n        }\n        state.mode = EXTRA;\n        /* falls through */\n      case EXTRA:\n        if (state.flags & 0x0400) {\n          copy = state.length;\n          if (copy > have) { copy = have; }\n          if (copy) {\n            if (state.head) {\n              len = state.head.extra_len - state.length;\n              if (!state.head.extra) {\n                // Use untyped array for more convenient processing later\n                state.head.extra = new Array(state.head.extra_len);\n              }\n              utils.arraySet(\n                state.head.extra,\n                input,\n                next,\n                // extra field is limited to 65536 bytes\n                // - no need for additional size check\n                copy,\n                /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n                len\n              );\n              //zmemcpy(state.head.extra + len, next,\n              //        len + copy > state.head.extra_max ?\n              //        state.head.extra_max - len : copy);\n            }\n            if (state.flags & 0x0200) {\n              state.check = crc32(state.check, input, copy, next);\n            }\n            have -= copy;\n            next += copy;\n            state.length -= copy;\n          }\n          if (state.length) { break inf_leave; }\n        }\n        state.length = 0;\n        state.mode = NAME;\n        /* falls through */\n      case NAME:\n        if (state.flags & 0x0800) {\n          if (have === 0) { break inf_leave; }\n          copy = 0;\n          do {\n            // TODO: 2 or 1 bytes?\n            len = input[next + copy++];\n            /* use constant limit because in js we should not preallocate memory */\n            if (state.head && len &&\n                (state.length < 65536 /*state.head.name_max*/)) {\n              state.head.name += String.fromCharCode(len);\n            }\n          } while (len && copy < have);\n\n          if (state.flags & 0x0200) {\n            state.check = crc32(state.check, input, copy, next);\n          }\n          have -= copy;\n          next += copy;\n          if (len) { break inf_leave; }\n        }\n        else if (state.head) {\n          state.head.name = null;\n        }\n        state.length = 0;\n        state.mode = COMMENT;\n        /* falls through */\n      case COMMENT:\n        if (state.flags & 0x1000) {\n          if (have === 0) { break inf_leave; }\n          copy = 0;\n          do {\n            len = input[next + copy++];\n            /* use constant limit because in js we should not preallocate memory */\n            if (state.head && len &&\n                (state.length < 65536 /*state.head.comm_max*/)) {\n              state.head.comment += String.fromCharCode(len);\n            }\n          } while (len && copy < have);\n          if (state.flags & 0x0200) {\n            state.check = crc32(state.check, input, copy, next);\n          }\n          have -= copy;\n          next += copy;\n          if (len) { break inf_leave; }\n        }\n        else if (state.head) {\n          state.head.comment = null;\n        }\n        state.mode = HCRC;\n        /* falls through */\n      case HCRC:\n        if (state.flags & 0x0200) {\n          //=== NEEDBITS(16); */\n          while (bits < 16) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          if (hold !== (state.check & 0xffff)) {\n            strm.msg = 'header crc mismatch';\n            state.mode = BAD;\n            break;\n          }\n          //=== INITBITS();\n          hold = 0;\n          bits = 0;\n          //===//\n        }\n        if (state.head) {\n          state.head.hcrc = ((state.flags >> 9) & 1);\n          state.head.done = true;\n        }\n        strm.adler = state.check = 0;\n        state.mode = TYPE;\n        break;\n      case DICTID:\n        //=== NEEDBITS(32); */\n        while (bits < 32) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        strm.adler = state.check = zswap32(hold);\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        state.mode = DICT;\n        /* falls through */\n      case DICT:\n        if (state.havedict === 0) {\n          //--- RESTORE() ---\n          strm.next_out = put;\n          strm.avail_out = left;\n          strm.next_in = next;\n          strm.avail_in = have;\n          state.hold = hold;\n          state.bits = bits;\n          //---\n          return Z_NEED_DICT;\n        }\n        strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n        state.mode = TYPE;\n        /* falls through */\n      case TYPE:\n        if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }\n        /* falls through */\n      case TYPEDO:\n        if (state.last) {\n          //--- BYTEBITS() ---//\n          hold >>>= bits & 7;\n          bits -= bits & 7;\n          //---//\n          state.mode = CHECK;\n          break;\n        }\n        //=== NEEDBITS(3); */\n        while (bits < 3) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        state.last = (hold & 0x01)/*BITS(1)*/;\n        //--- DROPBITS(1) ---//\n        hold >>>= 1;\n        bits -= 1;\n        //---//\n\n        switch ((hold & 0x03)/*BITS(2)*/) {\n          case 0:                             /* stored block */\n            //Tracev((stderr, \"inflate:     stored block%s\\n\",\n            //        state.last ? \" (last)\" : \"\"));\n            state.mode = STORED;\n            break;\n          case 1:                             /* fixed block */\n            fixedtables(state);\n            //Tracev((stderr, \"inflate:     fixed codes block%s\\n\",\n            //        state.last ? \" (last)\" : \"\"));\n            state.mode = LEN_;             /* decode codes */\n            if (flush === Z_TREES) {\n              //--- DROPBITS(2) ---//\n              hold >>>= 2;\n              bits -= 2;\n              //---//\n              break inf_leave;\n            }\n            break;\n          case 2:                             /* dynamic block */\n            //Tracev((stderr, \"inflate:     dynamic codes block%s\\n\",\n            //        state.last ? \" (last)\" : \"\"));\n            state.mode = TABLE;\n            break;\n          case 3:\n            strm.msg = 'invalid block type';\n            state.mode = BAD;\n        }\n        //--- DROPBITS(2) ---//\n        hold >>>= 2;\n        bits -= 2;\n        //---//\n        break;\n      case STORED:\n        //--- BYTEBITS() ---// /* go to byte boundary */\n        hold >>>= bits & 7;\n        bits -= bits & 7;\n        //---//\n        //=== NEEDBITS(32); */\n        while (bits < 32) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n          strm.msg = 'invalid stored block lengths';\n          state.mode = BAD;\n          break;\n        }\n        state.length = hold & 0xffff;\n        //Tracev((stderr, \"inflate:       stored length %u\\n\",\n        //        state.length));\n        //=== INITBITS();\n        hold = 0;\n        bits = 0;\n        //===//\n        state.mode = COPY_;\n        if (flush === Z_TREES) { break inf_leave; }\n        /* falls through */\n      case COPY_:\n        state.mode = COPY;\n        /* falls through */\n      case COPY:\n        copy = state.length;\n        if (copy) {\n          if (copy > have) { copy = have; }\n          if (copy > left) { copy = left; }\n          if (copy === 0) { break inf_leave; }\n          //--- zmemcpy(put, next, copy); ---\n          utils.arraySet(output, input, next, copy, put);\n          //---//\n          have -= copy;\n          next += copy;\n          left -= copy;\n          put += copy;\n          state.length -= copy;\n          break;\n        }\n        //Tracev((stderr, \"inflate:       stored end\\n\"));\n        state.mode = TYPE;\n        break;\n      case TABLE:\n        //=== NEEDBITS(14); */\n        while (bits < 14) {\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n        }\n        //===//\n        state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n        //--- DROPBITS(5) ---//\n        hold >>>= 5;\n        bits -= 5;\n        //---//\n        state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n        //--- DROPBITS(5) ---//\n        hold >>>= 5;\n        bits -= 5;\n        //---//\n        state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n        //--- DROPBITS(4) ---//\n        hold >>>= 4;\n        bits -= 4;\n        //---//\n//#ifndef PKZIP_BUG_WORKAROUND\n        if (state.nlen > 286 || state.ndist > 30) {\n          strm.msg = 'too many length or distance symbols';\n          state.mode = BAD;\n          break;\n        }\n//#endif\n        //Tracev((stderr, \"inflate:       table sizes ok\\n\"));\n        state.have = 0;\n        state.mode = LENLENS;\n        /* falls through */\n      case LENLENS:\n        while (state.have < state.ncode) {\n          //=== NEEDBITS(3);\n          while (bits < 3) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n          //--- DROPBITS(3) ---//\n          hold >>>= 3;\n          bits -= 3;\n          //---//\n        }\n        while (state.have < 19) {\n          state.lens[order[state.have++]] = 0;\n        }\n        // We have separate tables & no pointers. 2 commented lines below not needed.\n        //state.next = state.codes;\n        //state.lencode = state.next;\n        // Switch to use dynamic table\n        state.lencode = state.lendyn;\n        state.lenbits = 7;\n\n        opts = { bits: state.lenbits };\n        ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n        state.lenbits = opts.bits;\n\n        if (ret) {\n          strm.msg = 'invalid code lengths set';\n          state.mode = BAD;\n          break;\n        }\n        //Tracev((stderr, \"inflate:       code lengths ok\\n\"));\n        state.have = 0;\n        state.mode = CODELENS;\n        /* falls through */\n      case CODELENS:\n        while (state.have < state.nlen + state.ndist) {\n          for (;;) {\n            here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n            here_bits = here >>> 24;\n            here_op = (here >>> 16) & 0xff;\n            here_val = here & 0xffff;\n\n            if ((here_bits) <= bits) { break; }\n            //--- PULLBYTE() ---//\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n            //---//\n          }\n          if (here_val < 16) {\n            //--- DROPBITS(here.bits) ---//\n            hold >>>= here_bits;\n            bits -= here_bits;\n            //---//\n            state.lens[state.have++] = here_val;\n          }\n          else {\n            if (here_val === 16) {\n              //=== NEEDBITS(here.bits + 2);\n              n = here_bits + 2;\n              while (bits < n) {\n                if (have === 0) { break inf_leave; }\n                have--;\n                hold += input[next++] << bits;\n                bits += 8;\n              }\n              //===//\n              //--- DROPBITS(here.bits) ---//\n              hold >>>= here_bits;\n              bits -= here_bits;\n              //---//\n              if (state.have === 0) {\n                strm.msg = 'invalid bit length repeat';\n                state.mode = BAD;\n                break;\n              }\n              len = state.lens[state.have - 1];\n              copy = 3 + (hold & 0x03);//BITS(2);\n              //--- DROPBITS(2) ---//\n              hold >>>= 2;\n              bits -= 2;\n              //---//\n            }\n            else if (here_val === 17) {\n              //=== NEEDBITS(here.bits + 3);\n              n = here_bits + 3;\n              while (bits < n) {\n                if (have === 0) { break inf_leave; }\n                have--;\n                hold += input[next++] << bits;\n                bits += 8;\n              }\n              //===//\n              //--- DROPBITS(here.bits) ---//\n              hold >>>= here_bits;\n              bits -= here_bits;\n              //---//\n              len = 0;\n              copy = 3 + (hold & 0x07);//BITS(3);\n              //--- DROPBITS(3) ---//\n              hold >>>= 3;\n              bits -= 3;\n              //---//\n            }\n            else {\n              //=== NEEDBITS(here.bits + 7);\n              n = here_bits + 7;\n              while (bits < n) {\n                if (have === 0) { break inf_leave; }\n                have--;\n                hold += input[next++] << bits;\n                bits += 8;\n              }\n              //===//\n              //--- DROPBITS(here.bits) ---//\n              hold >>>= here_bits;\n              bits -= here_bits;\n              //---//\n              len = 0;\n              copy = 11 + (hold & 0x7f);//BITS(7);\n              //--- DROPBITS(7) ---//\n              hold >>>= 7;\n              bits -= 7;\n              //---//\n            }\n            if (state.have + copy > state.nlen + state.ndist) {\n              strm.msg = 'invalid bit length repeat';\n              state.mode = BAD;\n              break;\n            }\n            while (copy--) {\n              state.lens[state.have++] = len;\n            }\n          }\n        }\n\n        /* handle error breaks in while */\n        if (state.mode === BAD) { break; }\n\n        /* check for end-of-block code (better have one) */\n        if (state.lens[256] === 0) {\n          strm.msg = 'invalid code -- missing end-of-block';\n          state.mode = BAD;\n          break;\n        }\n\n        /* build code tables -- note: do not change the lenbits or distbits\n           values here (9 and 6) without reading the comments in inftrees.h\n           concerning the ENOUGH constants, which depend on those values */\n        state.lenbits = 9;\n\n        opts = { bits: state.lenbits };\n        ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n        // We have separate tables & no pointers. 2 commented lines below not needed.\n        // state.next_index = opts.table_index;\n        state.lenbits = opts.bits;\n        // state.lencode = state.next;\n\n        if (ret) {\n          strm.msg = 'invalid literal/lengths set';\n          state.mode = BAD;\n          break;\n        }\n\n        state.distbits = 6;\n        //state.distcode.copy(state.codes);\n        // Switch to use dynamic table\n        state.distcode = state.distdyn;\n        opts = { bits: state.distbits };\n        ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n        // We have separate tables & no pointers. 2 commented lines below not needed.\n        // state.next_index = opts.table_index;\n        state.distbits = opts.bits;\n        // state.distcode = state.next;\n\n        if (ret) {\n          strm.msg = 'invalid distances set';\n          state.mode = BAD;\n          break;\n        }\n        //Tracev((stderr, 'inflate:       codes ok\\n'));\n        state.mode = LEN_;\n        if (flush === Z_TREES) { break inf_leave; }\n        /* falls through */\n      case LEN_:\n        state.mode = LEN;\n        /* falls through */\n      case LEN:\n        if (have >= 6 && left >= 258) {\n          //--- RESTORE() ---\n          strm.next_out = put;\n          strm.avail_out = left;\n          strm.next_in = next;\n          strm.avail_in = have;\n          state.hold = hold;\n          state.bits = bits;\n          //---\n          inflate_fast(strm, _out);\n          //--- LOAD() ---\n          put = strm.next_out;\n          output = strm.output;\n          left = strm.avail_out;\n          next = strm.next_in;\n          input = strm.input;\n          have = strm.avail_in;\n          hold = state.hold;\n          bits = state.bits;\n          //---\n\n          if (state.mode === TYPE) {\n            state.back = -1;\n          }\n          break;\n        }\n        state.back = 0;\n        for (;;) {\n          here = state.lencode[hold & ((1 << state.lenbits) - 1)];  /*BITS(state.lenbits)*/\n          here_bits = here >>> 24;\n          here_op = (here >>> 16) & 0xff;\n          here_val = here & 0xffff;\n\n          if (here_bits <= bits) { break; }\n          //--- PULLBYTE() ---//\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n          //---//\n        }\n        if (here_op && (here_op & 0xf0) === 0) {\n          last_bits = here_bits;\n          last_op = here_op;\n          last_val = here_val;\n          for (;;) {\n            here = state.lencode[last_val +\n                    ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n            here_bits = here >>> 24;\n            here_op = (here >>> 16) & 0xff;\n            here_val = here & 0xffff;\n\n            if ((last_bits + here_bits) <= bits) { break; }\n            //--- PULLBYTE() ---//\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n            //---//\n          }\n          //--- DROPBITS(last.bits) ---//\n          hold >>>= last_bits;\n          bits -= last_bits;\n          //---//\n          state.back += last_bits;\n        }\n        //--- DROPBITS(here.bits) ---//\n        hold >>>= here_bits;\n        bits -= here_bits;\n        //---//\n        state.back += here_bits;\n        state.length = here_val;\n        if (here_op === 0) {\n          //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n          //        \"inflate:         literal '%c'\\n\" :\n          //        \"inflate:         literal 0x%02x\\n\", here.val));\n          state.mode = LIT;\n          break;\n        }\n        if (here_op & 32) {\n          //Tracevv((stderr, \"inflate:         end of block\\n\"));\n          state.back = -1;\n          state.mode = TYPE;\n          break;\n        }\n        if (here_op & 64) {\n          strm.msg = 'invalid literal/length code';\n          state.mode = BAD;\n          break;\n        }\n        state.extra = here_op & 15;\n        state.mode = LENEXT;\n        /* falls through */\n      case LENEXT:\n        if (state.extra) {\n          //=== NEEDBITS(state.extra);\n          n = state.extra;\n          while (bits < n) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n          //--- DROPBITS(state.extra) ---//\n          hold >>>= state.extra;\n          bits -= state.extra;\n          //---//\n          state.back += state.extra;\n        }\n        //Tracevv((stderr, \"inflate:         length %u\\n\", state.length));\n        state.was = state.length;\n        state.mode = DIST;\n        /* falls through */\n      case DIST:\n        for (;;) {\n          here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/\n          here_bits = here >>> 24;\n          here_op = (here >>> 16) & 0xff;\n          here_val = here & 0xffff;\n\n          if ((here_bits) <= bits) { break; }\n          //--- PULLBYTE() ---//\n          if (have === 0) { break inf_leave; }\n          have--;\n          hold += input[next++] << bits;\n          bits += 8;\n          //---//\n        }\n        if ((here_op & 0xf0) === 0) {\n          last_bits = here_bits;\n          last_op = here_op;\n          last_val = here_val;\n          for (;;) {\n            here = state.distcode[last_val +\n                    ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n            here_bits = here >>> 24;\n            here_op = (here >>> 16) & 0xff;\n            here_val = here & 0xffff;\n\n            if ((last_bits + here_bits) <= bits) { break; }\n            //--- PULLBYTE() ---//\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n            //---//\n          }\n          //--- DROPBITS(last.bits) ---//\n          hold >>>= last_bits;\n          bits -= last_bits;\n          //---//\n          state.back += last_bits;\n        }\n        //--- DROPBITS(here.bits) ---//\n        hold >>>= here_bits;\n        bits -= here_bits;\n        //---//\n        state.back += here_bits;\n        if (here_op & 64) {\n          strm.msg = 'invalid distance code';\n          state.mode = BAD;\n          break;\n        }\n        state.offset = here_val;\n        state.extra = (here_op) & 15;\n        state.mode = DISTEXT;\n        /* falls through */\n      case DISTEXT:\n        if (state.extra) {\n          //=== NEEDBITS(state.extra);\n          n = state.extra;\n          while (bits < n) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n          //--- DROPBITS(state.extra) ---//\n          hold >>>= state.extra;\n          bits -= state.extra;\n          //---//\n          state.back += state.extra;\n        }\n//#ifdef INFLATE_STRICT\n        if (state.offset > state.dmax) {\n          strm.msg = 'invalid distance too far back';\n          state.mode = BAD;\n          break;\n        }\n//#endif\n        //Tracevv((stderr, \"inflate:         distance %u\\n\", state.offset));\n        state.mode = MATCH;\n        /* falls through */\n      case MATCH:\n        if (left === 0) { break inf_leave; }\n        copy = _out - left;\n        if (state.offset > copy) {         /* copy from window */\n          copy = state.offset - copy;\n          if (copy > state.whave) {\n            if (state.sane) {\n              strm.msg = 'invalid distance too far back';\n              state.mode = BAD;\n              break;\n            }\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n//          Trace((stderr, \"inflate.c too far\\n\"));\n//          copy -= state.whave;\n//          if (copy > state.length) { copy = state.length; }\n//          if (copy > left) { copy = left; }\n//          left -= copy;\n//          state.length -= copy;\n//          do {\n//            output[put++] = 0;\n//          } while (--copy);\n//          if (state.length === 0) { state.mode = LEN; }\n//          break;\n//#endif\n          }\n          if (copy > state.wnext) {\n            copy -= state.wnext;\n            from = state.wsize - copy;\n          }\n          else {\n            from = state.wnext - copy;\n          }\n          if (copy > state.length) { copy = state.length; }\n          from_source = state.window;\n        }\n        else {                              /* copy from output */\n          from_source = output;\n          from = put - state.offset;\n          copy = state.length;\n        }\n        if (copy > left) { copy = left; }\n        left -= copy;\n        state.length -= copy;\n        do {\n          output[put++] = from_source[from++];\n        } while (--copy);\n        if (state.length === 0) { state.mode = LEN; }\n        break;\n      case LIT:\n        if (left === 0) { break inf_leave; }\n        output[put++] = state.length;\n        left--;\n        state.mode = LEN;\n        break;\n      case CHECK:\n        if (state.wrap) {\n          //=== NEEDBITS(32);\n          while (bits < 32) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            // Use '|' instead of '+' to make sure that result is signed\n            hold |= input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          _out -= left;\n          strm.total_out += _out;\n          state.total += _out;\n          if (_out) {\n            strm.adler = state.check =\n                /*UPDATE(state.check, put - _out, _out);*/\n                (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));\n\n          }\n          _out = left;\n          // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n          if ((state.flags ? hold : zswap32(hold)) !== state.check) {\n            strm.msg = 'incorrect data check';\n            state.mode = BAD;\n            break;\n          }\n          //=== INITBITS();\n          hold = 0;\n          bits = 0;\n          //===//\n          //Tracev((stderr, \"inflate:   check matches trailer\\n\"));\n        }\n        state.mode = LENGTH;\n        /* falls through */\n      case LENGTH:\n        if (state.wrap && state.flags) {\n          //=== NEEDBITS(32);\n          while (bits < 32) {\n            if (have === 0) { break inf_leave; }\n            have--;\n            hold += input[next++] << bits;\n            bits += 8;\n          }\n          //===//\n          if (hold !== (state.total & 0xffffffff)) {\n            strm.msg = 'incorrect length check';\n            state.mode = BAD;\n            break;\n          }\n          //=== INITBITS();\n          hold = 0;\n          bits = 0;\n          //===//\n          //Tracev((stderr, \"inflate:   length matches trailer\\n\"));\n        }\n        state.mode = DONE;\n        /* falls through */\n      case DONE:\n        ret = Z_STREAM_END;\n        break inf_leave;\n      case BAD:\n        ret = Z_DATA_ERROR;\n        break inf_leave;\n      case MEM:\n        return Z_MEM_ERROR;\n      case SYNC:\n        /* falls through */\n      default:\n        return Z_STREAM_ERROR;\n    }\n  }\n\n  // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n  /*\n     Return from inflate(), updating the total counts and the check value.\n     If there was no progress during the inflate() call, return a buffer\n     error.  Call updatewindow() to create and/or update the window state.\n     Note: a memory error from inflate() is non-recoverable.\n   */\n\n  //--- RESTORE() ---\n  strm.next_out = put;\n  strm.avail_out = left;\n  strm.next_in = next;\n  strm.avail_in = have;\n  state.hold = hold;\n  state.bits = bits;\n  //---\n\n  if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&\n                      (state.mode < CHECK || flush !== Z_FINISH))) {\n    if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {\n      state.mode = MEM;\n      return Z_MEM_ERROR;\n    }\n  }\n  _in -= strm.avail_in;\n  _out -= strm.avail_out;\n  strm.total_in += _in;\n  strm.total_out += _out;\n  state.total += _out;\n  if (state.wrap && _out) {\n    strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/\n      (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));\n  }\n  strm.data_type = state.bits + (state.last ? 64 : 0) +\n                    (state.mode === TYPE ? 128 : 0) +\n                    (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n  if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) {\n    ret = Z_BUF_ERROR;\n  }\n  return ret;\n}\n\nfunction inflateEnd(strm) {\n\n  if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {\n    return Z_STREAM_ERROR;\n  }\n\n  var state = strm.state;\n  if (state.window) {\n    state.window = null;\n  }\n  strm.state = null;\n  return Z_OK;\n}\n\nfunction inflateGetHeader(strm, head) {\n  var state;\n\n  /* check state */\n  if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n  state = strm.state;\n  if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; }\n\n  /* save header structure */\n  state.head = head;\n  head.done = false;\n  return Z_OK;\n}\n\nfunction inflateSetDictionary(strm, dictionary) {\n  var dictLength = dictionary.length;\n\n  var state;\n  var dictid;\n  var ret;\n\n  /* check state */\n  if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR; }\n  state = strm.state;\n\n  if (state.wrap !== 0 && state.mode !== DICT) {\n    return Z_STREAM_ERROR;\n  }\n\n  /* check for correct dictionary identifier */\n  if (state.mode === DICT) {\n    dictid = 1; /* adler32(0, null, 0)*/\n    /* dictid = adler32(dictid, dictionary, dictLength); */\n    dictid = adler32(dictid, dictionary, dictLength, 0);\n    if (dictid !== state.check) {\n      return Z_DATA_ERROR;\n    }\n  }\n  /* copy dictionary to window using updatewindow(), which will amend the\n   existing dictionary if appropriate */\n  ret = updatewindow(strm, dictionary, dictLength, dictLength);\n  if (ret) {\n    state.mode = MEM;\n    return Z_MEM_ERROR;\n  }\n  state.havedict = 1;\n  // Tracev((stderr, \"inflate:   dictionary set\\n\"));\n  return Z_OK;\n}\n\nexports.inflateReset = inflateReset;\nexports.inflateReset2 = inflateReset2;\nexports.inflateResetKeep = inflateResetKeep;\nexports.inflateInit = inflateInit;\nexports.inflateInit2 = inflateInit2;\nexports.inflate = inflate;\nexports.inflateEnd = inflateEnd;\nexports.inflateGetHeader = inflateGetHeader;\nexports.inflateSetDictionary = inflateSetDictionary;\nexports.inflateInfo = 'pako inflate (from Nodeca project)';\n\n/* Not implemented\nexports.inflateCopy = inflateCopy;\nexports.inflateGetDictionary = inflateGetDictionary;\nexports.inflateMark = inflateMark;\nexports.inflatePrime = inflatePrime;\nexports.inflateSync = inflateSync;\nexports.inflateSyncPoint = inflateSyncPoint;\nexports.inflateUndermine = inflateUndermine;\n*/\n",
+    "'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\n\nvar MAXBITS = 15;\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\nvar lbase = [ /* Length codes 257..285 base */\n  3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n  35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n];\n\nvar lext = [ /* Length codes 257..285 extra */\n  16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n  19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n];\n\nvar dbase = [ /* Distance codes 0..29 base */\n  1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n  257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n  8193, 12289, 16385, 24577, 0, 0\n];\n\nvar dext = [ /* Distance codes 0..29 extra */\n  16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n  23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n  28, 28, 29, 29, 64, 64\n];\n\nmodule.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts)\n{\n  var bits = opts.bits;\n      //here = opts.here; /* table entry for duplication */\n\n  var len = 0;               /* a code's length in bits */\n  var sym = 0;               /* index of code symbols */\n  var min = 0, max = 0;          /* minimum and maximum code lengths */\n  var root = 0;              /* number of index bits for root table */\n  var curr = 0;              /* number of index bits for current table */\n  var drop = 0;              /* code bits to drop for sub-table */\n  var left = 0;                   /* number of prefix codes available */\n  var used = 0;              /* code entries in table used */\n  var huff = 0;              /* Huffman code */\n  var incr;              /* for incrementing code, index */\n  var fill;              /* index for replicating entries */\n  var low;               /* low bits for current root entry */\n  var mask;              /* mask for low root bits */\n  var next;             /* next available space in table */\n  var base = null;     /* base value table to use */\n  var base_index = 0;\n//  var shoextra;    /* extra bits table to use */\n  var end;                    /* use base and extra for symbol > end */\n  var count = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1];    /* number of codes of each length */\n  var offs = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1];     /* offsets in table for each length */\n  var extra = null;\n  var extra_index = 0;\n\n  var here_bits, here_op, here_val;\n\n  /*\n   Process a set of code lengths to create a canonical Huffman code.  The\n   code lengths are lens[0..codes-1].  Each length corresponds to the\n   symbols 0..codes-1.  The Huffman code is generated by first sorting the\n   symbols by length from short to long, and retaining the symbol order\n   for codes with equal lengths.  Then the code starts with all zero bits\n   for the first code of the shortest length, and the codes are integer\n   increments for the same length, and zeros are appended as the length\n   increases.  For the deflate format, these bits are stored backwards\n   from their more natural integer increment ordering, and so when the\n   decoding tables are built in the large loop below, the integer codes\n   are incremented backwards.\n\n   This routine assumes, but does not check, that all of the entries in\n   lens[] are in the range 0..MAXBITS.  The caller must assure this.\n   1..MAXBITS is interpreted as that code length.  zero means that that\n   symbol does not occur in this code.\n\n   The codes are sorted by computing a count of codes for each length,\n   creating from that a table of starting indices for each length in the\n   sorted table, and then entering the symbols in order in the sorted\n   table.  The sorted table is work[], with that space being provided by\n   the caller.\n\n   The length counts are used for other purposes as well, i.e. finding\n   the minimum and maximum length codes, determining if there are any\n   codes at all, checking for a valid set of lengths, and looking ahead\n   at length counts to determine sub-table sizes when building the\n   decoding tables.\n   */\n\n  /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n  for (len = 0; len <= MAXBITS; len++) {\n    count[len] = 0;\n  }\n  for (sym = 0; sym < codes; sym++) {\n    count[lens[lens_index + sym]]++;\n  }\n\n  /* bound code lengths, force root to be within code lengths */\n  root = bits;\n  for (max = MAXBITS; max >= 1; max--) {\n    if (count[max] !== 0) { break; }\n  }\n  if (root > max) {\n    root = max;\n  }\n  if (max === 0) {                     /* no symbols to code at all */\n    //table.op[opts.table_index] = 64;  //here.op = (var char)64;    /* invalid code marker */\n    //table.bits[opts.table_index] = 1;   //here.bits = (var char)1;\n    //table.val[opts.table_index++] = 0;   //here.val = (var short)0;\n    table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n    //table.op[opts.table_index] = 64;\n    //table.bits[opts.table_index] = 1;\n    //table.val[opts.table_index++] = 0;\n    table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n    opts.bits = 1;\n    return 0;     /* no symbols, but wait for decoding to report error */\n  }\n  for (min = 1; min < max; min++) {\n    if (count[min] !== 0) { break; }\n  }\n  if (root < min) {\n    root = min;\n  }\n\n  /* check for an over-subscribed or incomplete set of lengths */\n  left = 1;\n  for (len = 1; len <= MAXBITS; len++) {\n    left <<= 1;\n    left -= count[len];\n    if (left < 0) {\n      return -1;\n    }        /* over-subscribed */\n  }\n  if (left > 0 && (type === CODES || max !== 1)) {\n    return -1;                      /* incomplete set */\n  }\n\n  /* generate offsets into symbol table for each length for sorting */\n  offs[1] = 0;\n  for (len = 1; len < MAXBITS; len++) {\n    offs[len + 1] = offs[len] + count[len];\n  }\n\n  /* sort symbols by length, by symbol order within each length */\n  for (sym = 0; sym < codes; sym++) {\n    if (lens[lens_index + sym] !== 0) {\n      work[offs[lens[lens_index + sym]]++] = sym;\n    }\n  }\n\n  /*\n   Create and fill in decoding tables.  In this loop, the table being\n   filled is at next and has curr index bits.  The code being used is huff\n   with length len.  That code is converted to an index by dropping drop\n   bits off of the bottom.  For codes where len is less than drop + curr,\n   those top drop + curr - len bits are incremented through all values to\n   fill the table with replicated entries.\n\n   root is the number of index bits for the root table.  When len exceeds\n   root, sub-tables are created pointed to by the root entry with an index\n   of the low root bits of huff.  This is saved in low to check for when a\n   new sub-table should be started.  drop is zero when the root table is\n   being filled, and drop is root when sub-tables are being filled.\n\n   When a new sub-table is needed, it is necessary to look ahead in the\n   code lengths to determine what size sub-table is needed.  The length\n   counts are used for this, and so count[] is decremented as codes are\n   entered in the tables.\n\n   used keeps track of how many table entries have been allocated from the\n   provided *table space.  It is checked for LENS and DIST tables against\n   the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n   the initial root table size constants.  See the comments in inftrees.h\n   for more information.\n\n   sym increments through all symbols, and the loop terminates when\n   all codes of length max, i.e. all codes, have been processed.  This\n   routine permits incomplete codes, so another loop after this one fills\n   in the rest of the decoding tables with invalid code markers.\n   */\n\n  /* set up for code type */\n  // poor man optimization - use if-else instead of switch,\n  // to avoid deopts in old v8\n  if (type === CODES) {\n    base = extra = work;    /* dummy value--not used */\n    end = 19;\n\n  } else if (type === LENS) {\n    base = lbase;\n    base_index -= 257;\n    extra = lext;\n    extra_index -= 257;\n    end = 256;\n\n  } else {                    /* DISTS */\n    base = dbase;\n    extra = dext;\n    end = -1;\n  }\n\n  /* initialize opts for loop */\n  huff = 0;                   /* starting code */\n  sym = 0;                    /* starting code symbol */\n  len = min;                  /* starting code length */\n  next = table_index;              /* current table to fill in */\n  curr = root;                /* current table index bits */\n  drop = 0;                   /* current bits to drop from code for index */\n  low = -1;                   /* trigger new sub-table when len > root */\n  used = 1 << root;          /* use root table entries */\n  mask = used - 1;            /* mask for comparing low */\n\n  /* check available table space */\n  if ((type === LENS && used > ENOUGH_LENS) ||\n    (type === DISTS && used > ENOUGH_DISTS)) {\n    return 1;\n  }\n\n  /* process all codes and make table entries */\n  for (;;) {\n    /* create table entry */\n    here_bits = len - drop;\n    if (work[sym] < end) {\n      here_op = 0;\n      here_val = work[sym];\n    }\n    else if (work[sym] > end) {\n      here_op = extra[extra_index + work[sym]];\n      here_val = base[base_index + work[sym]];\n    }\n    else {\n      here_op = 32 + 64;         /* end of block */\n      here_val = 0;\n    }\n\n    /* replicate for those indices with low len bits equal to huff */\n    incr = 1 << (len - drop);\n    fill = 1 << curr;\n    min = fill;                 /* save offset to next table */\n    do {\n      fill -= incr;\n      table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n    } while (fill !== 0);\n\n    /* backwards increment the len-bit code huff */\n    incr = 1 << (len - 1);\n    while (huff & incr) {\n      incr >>= 1;\n    }\n    if (incr !== 0) {\n      huff &= incr - 1;\n      huff += incr;\n    } else {\n      huff = 0;\n    }\n\n    /* go to next symbol, update count, len */\n    sym++;\n    if (--count[len] === 0) {\n      if (len === max) { break; }\n      len = lens[lens_index + work[sym]];\n    }\n\n    /* create new sub-table if needed */\n    if (len > root && (huff & mask) !== low) {\n      /* if first time, transition to sub-tables */\n      if (drop === 0) {\n        drop = root;\n      }\n\n      /* increment past last table */\n      next += min;            /* here min is 1 << curr */\n\n      /* determine length of next table */\n      curr = len - drop;\n      left = 1 << curr;\n      while (curr + drop < max) {\n        left -= count[curr + drop];\n        if (left <= 0) { break; }\n        curr++;\n        left <<= 1;\n      }\n\n      /* check for enough space */\n      used += 1 << curr;\n      if ((type === LENS && used > ENOUGH_LENS) ||\n        (type === DISTS && used > ENOUGH_DISTS)) {\n        return 1;\n      }\n\n      /* point entry in root table to sub-table */\n      low = huff & mask;\n      /*table.op[low] = curr;\n      table.bits[low] = root;\n      table.val[low] = next - opts.table_index;*/\n      table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n    }\n  }\n\n  /* fill in remaining table entry if code is incomplete (guaranteed to have\n   at most one remaining entry, since if the code is incomplete, the\n   maximum code length that was allowed to get this far is one bit) */\n  if (huff !== 0) {\n    //table.op[next + huff] = 64;            /* invalid code marker */\n    //table.bits[next + huff] = len - drop;\n    //table.val[next + huff] = 0;\n    table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n  }\n\n  /* set return parameters */\n  //opts.table_index += used;\n  opts.bits = root;\n  return 0;\n};\n",
+    "'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n  2:      'need dictionary',     /* Z_NEED_DICT       2  */\n  1:      'stream end',          /* Z_STREAM_END      1  */\n  0:      '',                    /* Z_OK              0  */\n  '-1':   'file error',          /* Z_ERRNO         (-1) */\n  '-2':   'stream error',        /* Z_STREAM_ERROR  (-2) */\n  '-3':   'data error',          /* Z_DATA_ERROR    (-3) */\n  '-4':   'insufficient memory', /* Z_MEM_ERROR     (-4) */\n  '-5':   'buffer error',        /* Z_BUF_ERROR     (-5) */\n  '-6':   'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n",
+    "'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n/* eslint-disable space-unary-ops */\n\nvar utils = require('../utils/common');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n//var Z_FILTERED          = 1;\n//var Z_HUFFMAN_ONLY      = 2;\n//var Z_RLE               = 3;\nvar Z_FIXED               = 4;\n//var Z_DEFAULT_STRATEGY  = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\nvar Z_BINARY              = 0;\nvar Z_TEXT                = 1;\n//var Z_ASCII             = 1; // = Z_TEXT\nvar Z_UNKNOWN             = 2;\n\n/*============================================================================*/\n\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\nvar STORED_BLOCK = 0;\nvar STATIC_TREES = 1;\nvar DYN_TREES    = 2;\n/* The three kinds of block type */\n\nvar MIN_MATCH    = 3;\nvar MAX_MATCH    = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nvar LENGTH_CODES  = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nvar LITERALS      = 256;\n/* number of literal bytes 0..255 */\n\nvar L_CODES       = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nvar D_CODES       = 30;\n/* number of distance codes */\n\nvar BL_CODES      = 19;\n/* number of codes used to transfer the bit lengths */\n\nvar HEAP_SIZE     = 2 * L_CODES + 1;\n/* maximum heap size */\n\nvar MAX_BITS      = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar Buf_size      = 16;\n/* size of bit buffer in bi_buf */\n\n\n/* ===========================================================================\n * Constants\n */\n\nvar MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nvar END_BLOCK   = 256;\n/* end of block literal code */\n\nvar REP_3_6     = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nvar REPZ_3_10   = 17;\n/* repeat a zero length 3-10 times  (3 bits of repeat count) */\n\nvar REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times  (7 bits of repeat count) */\n\n/* eslint-disable comma-spacing,array-bracket-spacing */\nvar extra_lbits =   /* extra bits for each length code */\n  [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];\n\nvar extra_dbits =   /* extra bits for each distance code */\n  [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];\n\nvar extra_blbits =  /* extra bits for each bit length code */\n  [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];\n\nvar bl_order =\n  [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];\n/* eslint-enable comma-spacing,array-bracket-spacing */\n\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nvar DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\nvar static_ltree  = new Array((L_CODES + 2) * 2);\nzero(static_ltree);\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nvar static_dtree  = new Array(D_CODES * 2);\nzero(static_dtree);\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nvar _dist_code    = new Array(DIST_CODE_LEN);\nzero(_dist_code);\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nvar _length_code  = new Array(MAX_MATCH - MIN_MATCH + 1);\nzero(_length_code);\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nvar base_length   = new Array(LENGTH_CODES);\nzero(base_length);\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nvar base_dist     = new Array(D_CODES);\nzero(base_dist);\n/* First normalized distance for each code (0 = distance of 1) */\n\n\nfunction StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n  this.static_tree  = static_tree;  /* static tree or NULL */\n  this.extra_bits   = extra_bits;   /* extra bits for each code or NULL */\n  this.extra_base   = extra_base;   /* base index for extra_bits */\n  this.elems        = elems;        /* max number of elements in the tree */\n  this.max_length   = max_length;   /* max bit length for the codes */\n\n  // show if `static_tree` has data or dummy - needed for monomorphic objects\n  this.has_stree    = static_tree && static_tree.length;\n}\n\n\nvar static_l_desc;\nvar static_d_desc;\nvar static_bl_desc;\n\n\nfunction TreeDesc(dyn_tree, stat_desc) {\n  this.dyn_tree = dyn_tree;     /* the dynamic tree */\n  this.max_code = 0;            /* largest code with non zero frequency */\n  this.stat_desc = stat_desc;   /* the corresponding static tree */\n}\n\n\n\nfunction d_code(dist) {\n  return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n}\n\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nfunction put_short(s, w) {\n//    put_byte(s, (uch)((w) & 0xff));\n//    put_byte(s, (uch)((ush)(w) >> 8));\n  s.pending_buf[s.pending++] = (w) & 0xff;\n  s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n}\n\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nfunction send_bits(s, value, length) {\n  if (s.bi_valid > (Buf_size - length)) {\n    s.bi_buf |= (value << s.bi_valid) & 0xffff;\n    put_short(s, s.bi_buf);\n    s.bi_buf = value >> (Buf_size - s.bi_valid);\n    s.bi_valid += length - Buf_size;\n  } else {\n    s.bi_buf |= (value << s.bi_valid) & 0xffff;\n    s.bi_valid += length;\n  }\n}\n\n\nfunction send_code(s, c, tree) {\n  send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n}\n\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nfunction bi_reverse(code, len) {\n  var res = 0;\n  do {\n    res |= code & 1;\n    code >>>= 1;\n    res <<= 1;\n  } while (--len > 0);\n  return res >>> 1;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nfunction bi_flush(s) {\n  if (s.bi_valid === 16) {\n    put_short(s, s.bi_buf);\n    s.bi_buf = 0;\n    s.bi_valid = 0;\n\n  } else if (s.bi_valid >= 8) {\n    s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n    s.bi_buf >>= 8;\n    s.bi_valid -= 8;\n  }\n}\n\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n *    above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n *     array bl_count contains the frequencies for each bit length.\n *     The length opt_len is updated; static_len is also updated if stree is\n *     not null.\n */\nfunction gen_bitlen(s, desc)\n//    deflate_state *s;\n//    tree_desc *desc;    /* the tree descriptor */\n{\n  var tree            = desc.dyn_tree;\n  var max_code        = desc.max_code;\n  var stree           = desc.stat_desc.static_tree;\n  var has_stree       = desc.stat_desc.has_stree;\n  var extra           = desc.stat_desc.extra_bits;\n  var base            = desc.stat_desc.extra_base;\n  var max_length      = desc.stat_desc.max_length;\n  var h;              /* heap index */\n  var n, m;           /* iterate over the tree elements */\n  var bits;           /* bit length */\n  var xbits;          /* extra bits */\n  var f;              /* frequency */\n  var overflow = 0;   /* number of elements with bit length too large */\n\n  for (bits = 0; bits <= MAX_BITS; bits++) {\n    s.bl_count[bits] = 0;\n  }\n\n  /* In a first pass, compute the optimal bit lengths (which may\n   * overflow in the case of the bit length tree).\n   */\n  tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n  for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {\n    n = s.heap[h];\n    bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n    if (bits > max_length) {\n      bits = max_length;\n      overflow++;\n    }\n    tree[n * 2 + 1]/*.Len*/ = bits;\n    /* We overwrite tree[n].Dad which is no longer needed */\n\n    if (n > max_code) { continue; } /* not a leaf node */\n\n    s.bl_count[bits]++;\n    xbits = 0;\n    if (n >= base) {\n      xbits = extra[n - base];\n    }\n    f = tree[n * 2]/*.Freq*/;\n    s.opt_len += f * (bits + xbits);\n    if (has_stree) {\n      s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n    }\n  }\n  if (overflow === 0) { return; }\n\n  // Trace((stderr,\"\\nbit length overflow\\n\"));\n  /* This happens for example on obj2 and pic of the Calgary corpus */\n\n  /* Find the first bit length which could increase: */\n  do {\n    bits = max_length - 1;\n    while (s.bl_count[bits] === 0) { bits--; }\n    s.bl_count[bits]--;      /* move one leaf down the tree */\n    s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n    s.bl_count[max_length]--;\n    /* The brother of the overflow item also moves one step up,\n     * but this does not affect bl_count[max_length]\n     */\n    overflow -= 2;\n  } while (overflow > 0);\n\n  /* Now recompute all bit lengths, scanning in increasing frequency.\n   * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n   * lengths instead of fixing only the wrong ones. This idea is taken\n   * from 'ar' written by Haruhiko Okumura.)\n   */\n  for (bits = max_length; bits !== 0; bits--) {\n    n = s.bl_count[bits];\n    while (n !== 0) {\n      m = s.heap[--h];\n      if (m > max_code) { continue; }\n      if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n        // Trace((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n        s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n        tree[m * 2 + 1]/*.Len*/ = bits;\n      }\n      n--;\n    }\n  }\n}\n\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n *     zero code length.\n */\nfunction gen_codes(tree, max_code, bl_count)\n//    ct_data *tree;             /* the tree to decorate */\n//    int max_code;              /* largest code with non zero frequency */\n//    ushf *bl_count;            /* number of codes at each bit length */\n{\n  var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */\n  var code = 0;              /* running code value */\n  var bits;                  /* bit index */\n  var n;                     /* code index */\n\n  /* The distribution counts are first used to generate the code values\n   * without bit reversal.\n   */\n  for (bits = 1; bits <= MAX_BITS; bits++) {\n    next_code[bits] = code = (code + bl_count[bits - 1]) << 1;\n  }\n  /* Check that the bit counts in bl_count are consistent. The last code\n   * must be all ones.\n   */\n  //Assert (code + bl_count[MAX_BITS]-1 == (1<<MAX_BITS)-1,\n  //        \"inconsistent bit counts\");\n  //Tracev((stderr,\"\\ngen_codes: max_code %d \", max_code));\n\n  for (n = 0;  n <= max_code; n++) {\n    var len = tree[n * 2 + 1]/*.Len*/;\n    if (len === 0) { continue; }\n    /* Now reverse the bits */\n    tree[n * 2]/*.Code*/ = bi_reverse(next_code[len]++, len);\n\n    //Tracecv(tree != static_ltree, (stderr,\"\\nn %3d %c l %2d c %4x (%x) \",\n    //     n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len]-1));\n  }\n}\n\n\n/* ===========================================================================\n * Initialize the various 'constant' tables.\n */\nfunction tr_static_init() {\n  var n;        /* iterates over tree elements */\n  var bits;     /* bit counter */\n  var length;   /* length value */\n  var code;     /* code value */\n  var dist;     /* distance index */\n  var bl_count = new Array(MAX_BITS + 1);\n  /* number of codes at each bit length for an optimal tree */\n\n  // do check in _tr_init()\n  //if (static_init_done) return;\n\n  /* For some embedded targets, global variables are not initialized: */\n/*#ifdef NO_INIT_GLOBAL_POINTERS\n  static_l_desc.static_tree = static_ltree;\n  static_l_desc.extra_bits = extra_lbits;\n  static_d_desc.static_tree = static_dtree;\n  static_d_desc.extra_bits = extra_dbits;\n  static_bl_desc.extra_bits = extra_blbits;\n#endif*/\n\n  /* Initialize the mapping length (0..255) -> length code (0..28) */\n  length = 0;\n  for (code = 0; code < LENGTH_CODES - 1; code++) {\n    base_length[code] = length;\n    for (n = 0; n < (1 << extra_lbits[code]); n++) {\n      _length_code[length++] = code;\n    }\n  }\n  //Assert (length == 256, \"tr_static_init: length != 256\");\n  /* Note that the length 255 (match length 258) can be represented\n   * in two different ways: code 284 + 5 bits or code 285, so we\n   * overwrite length_code[255] to use the best encoding:\n   */\n  _length_code[length - 1] = code;\n\n  /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n  dist = 0;\n  for (code = 0; code < 16; code++) {\n    base_dist[code] = dist;\n    for (n = 0; n < (1 << extra_dbits[code]); n++) {\n      _dist_code[dist++] = code;\n    }\n  }\n  //Assert (dist == 256, \"tr_static_init: dist != 256\");\n  dist >>= 7; /* from now on, all distances are divided by 128 */\n  for (; code < D_CODES; code++) {\n    base_dist[code] = dist << 7;\n    for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n      _dist_code[256 + dist++] = code;\n    }\n  }\n  //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n  /* Construct the codes of the static literal tree */\n  for (bits = 0; bits <= MAX_BITS; bits++) {\n    bl_count[bits] = 0;\n  }\n\n  n = 0;\n  while (n <= 143) {\n    static_ltree[n * 2 + 1]/*.Len*/ = 8;\n    n++;\n    bl_count[8]++;\n  }\n  while (n <= 255) {\n    static_ltree[n * 2 + 1]/*.Len*/ = 9;\n    n++;\n    bl_count[9]++;\n  }\n  while (n <= 279) {\n    static_ltree[n * 2 + 1]/*.Len*/ = 7;\n    n++;\n    bl_count[7]++;\n  }\n  while (n <= 287) {\n    static_ltree[n * 2 + 1]/*.Len*/ = 8;\n    n++;\n    bl_count[8]++;\n  }\n  /* Codes 286 and 287 do not exist, but we must include them in the\n   * tree construction to get a canonical Huffman tree (longest code\n   * all ones)\n   */\n  gen_codes(static_ltree, L_CODES + 1, bl_count);\n\n  /* The static distance tree is trivial: */\n  for (n = 0; n < D_CODES; n++) {\n    static_dtree[n * 2 + 1]/*.Len*/ = 5;\n    static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n  }\n\n  // Now data ready and we can init static trees\n  static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);\n  static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0,          D_CODES, MAX_BITS);\n  static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0,         BL_CODES, MAX_BL_BITS);\n\n  //static_init_done = true;\n}\n\n\n/* ===========================================================================\n * Initialize a new block.\n */\nfunction init_block(s) {\n  var n; /* iterates over tree elements */\n\n  /* Initialize the trees. */\n  for (n = 0; n < L_CODES;  n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n  for (n = 0; n < D_CODES;  n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n  for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n  s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n  s.opt_len = s.static_len = 0;\n  s.last_lit = s.matches = 0;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nfunction bi_windup(s)\n{\n  if (s.bi_valid > 8) {\n    put_short(s, s.bi_buf);\n  } else if (s.bi_valid > 0) {\n    //put_byte(s, (Byte)s->bi_buf);\n    s.pending_buf[s.pending++] = s.bi_buf;\n  }\n  s.bi_buf = 0;\n  s.bi_valid = 0;\n}\n\n/* ===========================================================================\n * Copy a stored block, storing first the length and its\n * one's complement if requested.\n */\nfunction copy_block(s, buf, len, header)\n//DeflateState *s;\n//charf    *buf;    /* the input data */\n//unsigned len;     /* its length */\n//int      header;  /* true if block header must be written */\n{\n  bi_windup(s);        /* align on byte boundary */\n\n  if (header) {\n    put_short(s, len);\n    put_short(s, ~len);\n  }\n//  while (len--) {\n//    put_byte(s, *buf++);\n//  }\n  utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);\n  s.pending += len;\n}\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nfunction smaller(tree, n, m, depth) {\n  var _n2 = n * 2;\n  var _m2 = m * 2;\n  return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n         (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n}\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nfunction pqdownheap(s, tree, k)\n//    deflate_state *s;\n//    ct_data *tree;  /* the tree to restore */\n//    int k;               /* node to move down */\n{\n  var v = s.heap[k];\n  var j = k << 1;  /* left son of k */\n  while (j <= s.heap_len) {\n    /* Set j to the smallest of the two sons: */\n    if (j < s.heap_len &&\n      smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n      j++;\n    }\n    /* Exit if v is smaller than both sons */\n    if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n    /* Exchange v with the smallest son */\n    s.heap[k] = s.heap[j];\n    k = j;\n\n    /* And continue down the tree, setting j to the left son of k */\n    j <<= 1;\n  }\n  s.heap[k] = v;\n}\n\n\n// inlined manually\n// var SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nfunction compress_block(s, ltree, dtree)\n//    deflate_state *s;\n//    const ct_data *ltree; /* literal tree */\n//    const ct_data *dtree; /* distance tree */\n{\n  var dist;           /* distance of matched string */\n  var lc;             /* match length or unmatched char (if dist == 0) */\n  var lx = 0;         /* running index in l_buf */\n  var code;           /* the code to send */\n  var extra;          /* number of extra bits to send */\n\n  if (s.last_lit !== 0) {\n    do {\n      dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);\n      lc = s.pending_buf[s.l_buf + lx];\n      lx++;\n\n      if (dist === 0) {\n        send_code(s, lc, ltree); /* send a literal byte */\n        //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n      } else {\n        /* Here, lc is the match length - MIN_MATCH */\n        code = _length_code[lc];\n        send_code(s, code + LITERALS + 1, ltree); /* send the length code */\n        extra = extra_lbits[code];\n        if (extra !== 0) {\n          lc -= base_length[code];\n          send_bits(s, lc, extra);       /* send the extra length bits */\n        }\n        dist--; /* dist is now the match distance - 1 */\n        code = d_code(dist);\n        //Assert (code < D_CODES, \"bad d_code\");\n\n        send_code(s, code, dtree);       /* send the distance code */\n        extra = extra_dbits[code];\n        if (extra !== 0) {\n          dist -= base_dist[code];\n          send_bits(s, dist, extra);   /* send the extra distance bits */\n        }\n      } /* literal or match pair ? */\n\n      /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */\n      //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,\n      //       \"pendingBuf overflow\");\n\n    } while (lx < s.last_lit);\n  }\n\n  send_code(s, END_BLOCK, ltree);\n}\n\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n *     and corresponding code. The length opt_len is updated; static_len is\n *     also updated if stree is not null. The field max_code is set.\n */\nfunction build_tree(s, desc)\n//    deflate_state *s;\n//    tree_desc *desc; /* the tree descriptor */\n{\n  var tree     = desc.dyn_tree;\n  var stree    = desc.stat_desc.static_tree;\n  var has_stree = desc.stat_desc.has_stree;\n  var elems    = desc.stat_desc.elems;\n  var n, m;          /* iterate over heap elements */\n  var max_code = -1; /* largest code with non zero frequency */\n  var node;          /* new node being created */\n\n  /* Construct the initial heap, with least frequent element in\n   * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n   * heap[0] is not used.\n   */\n  s.heap_len = 0;\n  s.heap_max = HEAP_SIZE;\n\n  for (n = 0; n < elems; n++) {\n    if (tree[n * 2]/*.Freq*/ !== 0) {\n      s.heap[++s.heap_len] = max_code = n;\n      s.depth[n] = 0;\n\n    } else {\n      tree[n * 2 + 1]/*.Len*/ = 0;\n    }\n  }\n\n  /* The pkzip format requires that at least one distance code exists,\n   * and that at least one bit should be sent even if there is only one\n   * possible code. So to avoid special checks later on we force at least\n   * two codes of non zero frequency.\n   */\n  while (s.heap_len < 2) {\n    node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n    tree[node * 2]/*.Freq*/ = 1;\n    s.depth[node] = 0;\n    s.opt_len--;\n\n    if (has_stree) {\n      s.static_len -= stree[node * 2 + 1]/*.Len*/;\n    }\n    /* node is 0 or 1 so it does not have extra bits */\n  }\n  desc.max_code = max_code;\n\n  /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n   * establish sub-heaps of increasing lengths:\n   */\n  for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n  /* Construct the Huffman tree by repeatedly combining the least two\n   * frequent nodes.\n   */\n  node = elems;              /* next internal node of the tree */\n  do {\n    //pqremove(s, tree, n);  /* n = node of least frequency */\n    /*** pqremove ***/\n    n = s.heap[1/*SMALLEST*/];\n    s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n    pqdownheap(s, tree, 1/*SMALLEST*/);\n    /***/\n\n    m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n    s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n    s.heap[--s.heap_max] = m;\n\n    /* Create a new node father of n and m */\n    tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n    s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n    tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n    /* and insert the new node in the heap */\n    s.heap[1/*SMALLEST*/] = node++;\n    pqdownheap(s, tree, 1/*SMALLEST*/);\n\n  } while (s.heap_len >= 2);\n\n  s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n  /* At this point, the fields freq and dad are set. We can now\n   * generate the bit lengths.\n   */\n  gen_bitlen(s, desc);\n\n  /* The field len is now set, we can generate the bit codes */\n  gen_codes(tree, max_code, s.bl_count);\n}\n\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nfunction scan_tree(s, tree, max_code)\n//    deflate_state *s;\n//    ct_data *tree;   /* the tree to be scanned */\n//    int max_code;    /* and its largest code of non zero frequency */\n{\n  var n;                     /* iterates over all tree elements */\n  var prevlen = -1;          /* last emitted length */\n  var curlen;                /* length of current code */\n\n  var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n  var count = 0;             /* repeat count of the current code */\n  var max_count = 7;         /* max repeat count */\n  var min_count = 4;         /* min repeat count */\n\n  if (nextlen === 0) {\n    max_count = 138;\n    min_count = 3;\n  }\n  tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n  for (n = 0; n <= max_code; n++) {\n    curlen = nextlen;\n    nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n    if (++count < max_count && curlen === nextlen) {\n      continue;\n\n    } else if (count < min_count) {\n      s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n    } else if (curlen !== 0) {\n\n      if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n      s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n    } else if (count <= 10) {\n      s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n    } else {\n      s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n    }\n\n    count = 0;\n    prevlen = curlen;\n\n    if (nextlen === 0) {\n      max_count = 138;\n      min_count = 3;\n\n    } else if (curlen === nextlen) {\n      max_count = 6;\n      min_count = 3;\n\n    } else {\n      max_count = 7;\n      min_count = 4;\n    }\n  }\n}\n\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nfunction send_tree(s, tree, max_code)\n//    deflate_state *s;\n//    ct_data *tree; /* the tree to be scanned */\n//    int max_code;       /* and its largest code of non zero frequency */\n{\n  var n;                     /* iterates over all tree elements */\n  var prevlen = -1;          /* last emitted length */\n  var curlen;                /* length of current code */\n\n  var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n  var count = 0;             /* repeat count of the current code */\n  var max_count = 7;         /* max repeat count */\n  var min_count = 4;         /* min repeat count */\n\n  /* tree[max_code+1].Len = -1; */  /* guard already set */\n  if (nextlen === 0) {\n    max_count = 138;\n    min_count = 3;\n  }\n\n  for (n = 0; n <= max_code; n++) {\n    curlen = nextlen;\n    nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n    if (++count < max_count && curlen === nextlen) {\n      continue;\n\n    } else if (count < min_count) {\n      do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n    } else if (curlen !== 0) {\n      if (curlen !== prevlen) {\n        send_code(s, curlen, s.bl_tree);\n        count--;\n      }\n      //Assert(count >= 3 && count <= 6, \" 3_6?\");\n      send_code(s, REP_3_6, s.bl_tree);\n      send_bits(s, count - 3, 2);\n\n    } else if (count <= 10) {\n      send_code(s, REPZ_3_10, s.bl_tree);\n      send_bits(s, count - 3, 3);\n\n    } else {\n      send_code(s, REPZ_11_138, s.bl_tree);\n      send_bits(s, count - 11, 7);\n    }\n\n    count = 0;\n    prevlen = curlen;\n    if (nextlen === 0) {\n      max_count = 138;\n      min_count = 3;\n\n    } else if (curlen === nextlen) {\n      max_count = 6;\n      min_count = 3;\n\n    } else {\n      max_count = 7;\n      min_count = 4;\n    }\n  }\n}\n\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nfunction build_bl_tree(s) {\n  var max_blindex;  /* index of last bit length code of non zero freq */\n\n  /* Determine the bit length frequencies for literal and distance trees */\n  scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n  scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n  /* Build the bit length tree: */\n  build_tree(s, s.bl_desc);\n  /* opt_len now includes the length of the tree representations, except\n   * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n   */\n\n  /* Determine the number of bit length codes to send. The pkzip format\n   * requires that at least 4 bit length codes be sent. (appnote.txt says\n   * 3 but the actual value used is 4.)\n   */\n  for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {\n    if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n      break;\n    }\n  }\n  /* Update opt_len to include the bit length tree and counts */\n  s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n  //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n  //        s->opt_len, s->static_len));\n\n  return max_blindex;\n}\n\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nfunction send_all_trees(s, lcodes, dcodes, blcodes)\n//    deflate_state *s;\n//    int lcodes, dcodes, blcodes; /* number of codes for each tree */\n{\n  var rank;                    /* index in bl_order */\n\n  //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n  //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n  //        \"too many codes\");\n  //Tracev((stderr, \"\\nbl counts: \"));\n  send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n  send_bits(s, dcodes - 1,   5);\n  send_bits(s, blcodes - 4,  4); /* not -3 as stated in appnote.txt */\n  for (rank = 0; rank < blcodes; rank++) {\n    //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n    send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n  }\n  //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n  send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n  //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n  send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n  //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n}\n\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n *    a) There are no non-portable control characters belonging to the\n *       \"black list\" (0..6, 14..25, 28..31).\n *    b) There is at least one printable character belonging to the\n *       \"white list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n *   \"gray list\" that is ignored in this detection algorithm:\n *   (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nfunction detect_data_type(s) {\n  /* black_mask is the bit mask of black-listed bytes\n   * set bits 0..6, 14..25, and 28..31\n   * 0xf3ffc07f = binary 11110011111111111100000001111111\n   */\n  var black_mask = 0xf3ffc07f;\n  var n;\n\n  /* Check for non-textual (\"black-listed\") bytes. */\n  for (n = 0; n <= 31; n++, black_mask >>>= 1) {\n    if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n      return Z_BINARY;\n    }\n  }\n\n  /* Check for textual (\"white-listed\") bytes. */\n  if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n      s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n    return Z_TEXT;\n  }\n  for (n = 32; n < LITERALS; n++) {\n    if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n      return Z_TEXT;\n    }\n  }\n\n  /* There are no \"black-listed\" or \"white-listed\" bytes:\n   * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n   */\n  return Z_BINARY;\n}\n\n\nvar static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nfunction _tr_init(s)\n{\n\n  if (!static_init_done) {\n    tr_static_init();\n    static_init_done = true;\n  }\n\n  s.l_desc  = new TreeDesc(s.dyn_ltree, static_l_desc);\n  s.d_desc  = new TreeDesc(s.dyn_dtree, static_d_desc);\n  s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n  s.bi_buf = 0;\n  s.bi_valid = 0;\n\n  /* Initialize the first block of the first file: */\n  init_block(s);\n}\n\n\n/* ===========================================================================\n * Send a stored block\n */\nfunction _tr_stored_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf;       /* input block */\n//ulg stored_len;   /* length of input block */\n//int last;         /* one if this is the last block for a file */\n{\n  send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3);    /* send block type */\n  copy_block(s, buf, stored_len, true); /* with header */\n}\n\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nfunction _tr_align(s) {\n  send_bits(s, STATIC_TREES << 1, 3);\n  send_code(s, END_BLOCK, static_ltree);\n  bi_flush(s);\n}\n\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and output the encoded block to the zip file.\n */\nfunction _tr_flush_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf;       /* input block, or NULL if too old */\n//ulg stored_len;   /* length of input block */\n//int last;         /* one if this is the last block for a file */\n{\n  var opt_lenb, static_lenb;  /* opt_len and static_len in bytes */\n  var max_blindex = 0;        /* index of last bit length code of non zero freq */\n\n  /* Build the Huffman trees unless a stored block is forced */\n  if (s.level > 0) {\n\n    /* Check if the file is binary or text */\n    if (s.strm.data_type === Z_UNKNOWN) {\n      s.strm.data_type = detect_data_type(s);\n    }\n\n    /* Construct the literal and distance trees */\n    build_tree(s, s.l_desc);\n    // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n    //        s->static_len));\n\n    build_tree(s, s.d_desc);\n    // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n    //        s->static_len));\n    /* At this point, opt_len and static_len are the total bit lengths of\n     * the compressed block data, excluding the tree representations.\n     */\n\n    /* Build the bit length tree for the above two trees, and get the index\n     * in bl_order of the last bit length code to send.\n     */\n    max_blindex = build_bl_tree(s);\n\n    /* Determine the best encoding. Compute the block lengths in bytes. */\n    opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n    static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n    // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n    //        opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n    //        s->last_lit));\n\n    if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n  } else {\n    // Assert(buf != (char*)0, \"lost buf\");\n    opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n  }\n\n  if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n    /* 4: two words for the lengths */\n\n    /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n     * Otherwise we can't have processed more than WSIZE input bytes since\n     * the last block flush, because compression would have been\n     * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n     * transform a block into a stored block.\n     */\n    _tr_stored_block(s, buf, stored_len, last);\n\n  } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {\n\n    send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n    compress_block(s, static_ltree, static_dtree);\n\n  } else {\n    send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n    send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n    compress_block(s, s.dyn_ltree, s.dyn_dtree);\n  }\n  // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n  /* The above check is made mod 2^32, for files larger than 512 MB\n   * and uLong implemented on 32 bits.\n   */\n  init_block(s);\n\n  if (last) {\n    bi_windup(s);\n  }\n  // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n  //       s->compressed_len-7*last));\n}\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nfunction _tr_tally(s, dist, lc)\n//    deflate_state *s;\n//    unsigned dist;  /* distance of matched string */\n//    unsigned lc;    /* match length-MIN_MATCH or unmatched char (if dist==0) */\n{\n  //var out_length, in_length, dcode;\n\n  s.pending_buf[s.d_buf + s.last_lit * 2]     = (dist >>> 8) & 0xff;\n  s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;\n\n  s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;\n  s.last_lit++;\n\n  if (dist === 0) {\n    /* lc is the unmatched char */\n    s.dyn_ltree[lc * 2]/*.Freq*/++;\n  } else {\n    s.matches++;\n    /* Here, lc is the match length - MIN_MATCH */\n    dist--;             /* dist = match distance - 1 */\n    //Assert((ush)dist < (ush)MAX_DIST(s) &&\n    //       (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n    //       (ush)d_code(dist) < (ush)D_CODES,  \"_tr_tally: bad match\");\n\n    s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;\n    s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n  }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n\n//#ifdef TRUNCATE_BLOCK\n//  /* Try to guess if it is profitable to stop the current block here */\n//  if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {\n//    /* Compute an upper bound for the compressed length */\n//    out_length = s.last_lit*8;\n//    in_length = s.strstart - s.block_start;\n//\n//    for (dcode = 0; dcode < D_CODES; dcode++) {\n//      out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);\n//    }\n//    out_length >>>= 3;\n//    //Tracev((stderr,\"\\nlast_lit %u, in %ld, out ~%ld(%ld%%) \",\n//    //       s->last_lit, in_length, out_length,\n//    //       100L - out_length*100L/in_length));\n//    if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {\n//      return true;\n//    }\n//  }\n//#endif\n\n  return (s.last_lit === s.lit_bufsize - 1);\n  /* We avoid equality with lit_bufsize because of wraparound at 64K\n   * on 16 bit machines and because stored blocks are restricted to\n   * 64K-1 bytes.\n   */\n}\n\nexports._tr_init  = _tr_init;\nexports._tr_stored_block = _tr_stored_block;\nexports._tr_flush_block  = _tr_flush_block;\nexports._tr_tally = _tr_tally;\nexports._tr_align = _tr_align;\n",
+    "'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n//   claim that you wrote the original software. If you use this software\n//   in a product, an acknowledgment in the product documentation would be\n//   appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n//   misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n  /* next input byte */\n  this.input = null; // JS specific, because we have no pointers\n  this.next_in = 0;\n  /* number of bytes available at input */\n  this.avail_in = 0;\n  /* total number of input bytes read so far */\n  this.total_in = 0;\n  /* next output byte should be put there */\n  this.output = null; // JS specific, because we have no pointers\n  this.next_out = 0;\n  /* remaining free space at output */\n  this.avail_out = 0;\n  /* total number of bytes output so far */\n  this.total_out = 0;\n  /* last error message, NULL if no error */\n  this.msg = ''/*Z_NULL*/;\n  /* not visible by applications */\n  this.state = null;\n  /* best guess about the data type: binary or text */\n  this.data_type = 2/*Z_UNKNOWN*/;\n  /* adler32 value of the uncompressed data */\n  this.adler = 0;\n}\n\nmodule.exports = ZStream;\n",
     "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n  // if the path tries to go above the root, `up` ends up > 0\n  var up = 0;\n  for (var i = parts.length - 1; i >= 0; i--) {\n    var last = parts[i];\n    if (last === '.') {\n      parts.splice(i, 1);\n    } else if (last === '..') {\n      parts.splice(i, 1);\n      up++;\n    } else if (up) {\n      parts.splice(i, 1);\n      up--;\n    }\n  }\n\n  // if the path is allowed to go above the root, restore leading ..s\n  if (allowAboveRoot) {\n    for (; up--; up) {\n      parts.unshift('..');\n    }\n  }\n\n  return parts;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n    /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\nvar splitPath = function(filename) {\n  return splitPathRe.exec(filename).slice(1);\n};\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n  var resolvedPath = '',\n      resolvedAbsolute = false;\n\n  for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n    var path = (i >= 0) ? arguments[i] : process.cwd();\n\n    // Skip empty and invalid entries\n    if (typeof path !== 'string') {\n      throw new TypeError('Arguments to path.resolve must be strings');\n    } else if (!path) {\n      continue;\n    }\n\n    resolvedPath = path + '/' + resolvedPath;\n    resolvedAbsolute = path.charAt(0) === '/';\n  }\n\n  // At this point the path should be resolved to a full absolute path, but\n  // handle relative paths to be safe (might happen when process.cwd() fails)\n\n  // Normalize the path\n  resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n    return !!p;\n  }), !resolvedAbsolute).join('/');\n\n  return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n  var isAbsolute = exports.isAbsolute(path),\n      trailingSlash = substr(path, -1) === '/';\n\n  // Normalize the path\n  path = normalizeArray(filter(path.split('/'), function(p) {\n    return !!p;\n  }), !isAbsolute).join('/');\n\n  if (!path && !isAbsolute) {\n    path = '.';\n  }\n  if (path && trailingSlash) {\n    path += '/';\n  }\n\n  return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n  return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n  var paths = Array.prototype.slice.call(arguments, 0);\n  return exports.normalize(filter(paths, function(p, index) {\n    if (typeof p !== 'string') {\n      throw new TypeError('Arguments to path.join must be strings');\n    }\n    return p;\n  }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n  from = exports.resolve(from).substr(1);\n  to = exports.resolve(to).substr(1);\n\n  function trim(arr) {\n    var start = 0;\n    for (; start < arr.length; start++) {\n      if (arr[start] !== '') break;\n    }\n\n    var end = arr.length - 1;\n    for (; end >= 0; end--) {\n      if (arr[end] !== '') break;\n    }\n\n    if (start > end) return [];\n    return arr.slice(start, end - start + 1);\n  }\n\n  var fromParts = trim(from.split('/'));\n  var toParts = trim(to.split('/'));\n\n  var length = Math.min(fromParts.length, toParts.length);\n  var samePartsLength = length;\n  for (var i = 0; i < length; i++) {\n    if (fromParts[i] !== toParts[i]) {\n      samePartsLength = i;\n      break;\n    }\n  }\n\n  var outputParts = [];\n  for (var i = samePartsLength; i < fromParts.length; i++) {\n    outputParts.push('..');\n  }\n\n  outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n  return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function(path) {\n  var result = splitPath(path),\n      root = result[0],\n      dir = result[1];\n\n  if (!root && !dir) {\n    // No dirname whatsoever\n    return '.';\n  }\n\n  if (dir) {\n    // It has a dirname, strip trailing slash\n    dir = dir.substr(0, dir.length - 1);\n  }\n\n  return root + dir;\n};\n\n\nexports.basename = function(path, ext) {\n  var f = splitPath(path)[2];\n  // TODO: make this comparison case-insensitive on windows?\n  if (ext && f.substr(-1 * ext.length) === ext) {\n    f = f.substr(0, f.length - ext.length);\n  }\n  return f;\n};\n\n\nexports.extname = function(path) {\n  return splitPath(path)[3];\n};\n\nfunction filter (xs, f) {\n    if (xs.filter) return xs.filter(f);\n    var res = [];\n    for (var i = 0; i < xs.length; i++) {\n        if (f(xs[i], i, xs)) res.push(xs[i]);\n    }\n    return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n    ? function (str, start, len) { return str.substr(start, len) }\n    : function (str, start, len) {\n        if (start < 0) start = str.length + start;\n        return str.substr(start, len);\n    }\n;\n",
     "'use strict';\n\nmodule.exports = Pbf;\n\nvar ieee754 = require('ieee754');\n\nfunction Pbf(buf) {\n    this.buf = ArrayBuffer.isView && ArrayBuffer.isView(buf) ? buf : new Uint8Array(buf || 0);\n    this.pos = 0;\n    this.type = 0;\n    this.length = this.buf.length;\n}\n\nPbf.Varint  = 0; // varint: int32, int64, uint32, uint64, sint32, sint64, bool, enum\nPbf.Fixed64 = 1; // 64-bit: double, fixed64, sfixed64\nPbf.Bytes   = 2; // length-delimited: string, bytes, embedded messages, packed repeated fields\nPbf.Fixed32 = 5; // 32-bit: float, fixed32, sfixed32\n\nvar SHIFT_LEFT_32 = (1 << 16) * (1 << 16),\n    SHIFT_RIGHT_32 = 1 / SHIFT_LEFT_32;\n\nPbf.prototype = {\n\n    destroy: function() {\n        this.buf = null;\n    },\n\n    // === READING =================================================================\n\n    readFields: function(readField, result, end) {\n        end = end || this.length;\n\n        while (this.pos < end) {\n            var val = this.readVarint(),\n                tag = val >> 3,\n                startPos = this.pos;\n\n            this.type = val & 0x7;\n            readField(tag, result, this);\n\n            if (this.pos === startPos) this.skip(val);\n        }\n        return result;\n    },\n\n    readMessage: function(readField, result) {\n        return this.readFields(readField, result, this.readVarint() + this.pos);\n    },\n\n    readFixed32: function() {\n        var val = readUInt32(this.buf, this.pos);\n        this.pos += 4;\n        return val;\n    },\n\n    readSFixed32: function() {\n        var val = readInt32(this.buf, this.pos);\n        this.pos += 4;\n        return val;\n    },\n\n    // 64-bit int handling is based on github.com/dpw/node-buffer-more-ints (MIT-licensed)\n\n    readFixed64: function() {\n        var val = readUInt32(this.buf, this.pos) + readUInt32(this.buf, this.pos + 4) * SHIFT_LEFT_32;\n        this.pos += 8;\n        return val;\n    },\n\n    readSFixed64: function() {\n        var val = readUInt32(this.buf, this.pos) + readInt32(this.buf, this.pos + 4) * SHIFT_LEFT_32;\n        this.pos += 8;\n        return val;\n    },\n\n    readFloat: function() {\n        var val = ieee754.read(this.buf, this.pos, true, 23, 4);\n        this.pos += 4;\n        return val;\n    },\n\n    readDouble: function() {\n        var val = ieee754.read(this.buf, this.pos, true, 52, 8);\n        this.pos += 8;\n        return val;\n    },\n\n    readVarint: function(isSigned) {\n        var buf = this.buf,\n            val, b;\n\n        b = buf[this.pos++]; val  =  b & 0x7f;        if (b < 0x80) return val;\n        b = buf[this.pos++]; val |= (b & 0x7f) << 7;  if (b < 0x80) return val;\n        b = buf[this.pos++]; val |= (b & 0x7f) << 14; if (b < 0x80) return val;\n        b = buf[this.pos++]; val |= (b & 0x7f) << 21; if (b < 0x80) return val;\n        b = buf[this.pos];   val |= (b & 0x0f) << 28;\n\n        return readVarintRemainder(val, isSigned, this);\n    },\n\n    readVarint64: function() { // for compatibility with v2.0.1\n        return this.readVarint(true);\n    },\n\n    readSVarint: function() {\n        var num = this.readVarint();\n        return num % 2 === 1 ? (num + 1) / -2 : num / 2; // zigzag encoding\n    },\n\n    readBoolean: function() {\n        return Boolean(this.readVarint());\n    },\n\n    readString: function() {\n        var end = this.readVarint() + this.pos,\n            str = readUtf8(this.buf, this.pos, end);\n        this.pos = end;\n        return str;\n    },\n\n    readBytes: function() {\n        var end = this.readVarint() + this.pos,\n            buffer = this.buf.subarray(this.pos, end);\n        this.pos = end;\n        return buffer;\n    },\n\n    // verbose for performance reasons; doesn't affect gzipped size\n\n    readPackedVarint: function(arr, isSigned) {\n        var end = readPackedEnd(this);\n        arr = arr || [];\n        while (this.pos < end) arr.push(this.readVarint(isSigned));\n        return arr;\n    },\n    readPackedSVarint: function(arr) {\n        var end = readPackedEnd(this);\n        arr = arr || [];\n        while (this.pos < end) arr.push(this.readSVarint());\n        return arr;\n    },\n    readPackedBoolean: function(arr) {\n        var end = readPackedEnd(this);\n        arr = arr || [];\n        while (this.pos < end) arr.push(this.readBoolean());\n        return arr;\n    },\n    readPackedFloat: function(arr) {\n        var end = readPackedEnd(this);\n        arr = arr || [];\n        while (this.pos < end) arr.push(this.readFloat());\n        return arr;\n    },\n    readPackedDouble: function(arr) {\n        var end = readPackedEnd(this);\n        arr = arr || [];\n        while (this.pos < end) arr.push(this.readDouble());\n        return arr;\n    },\n    readPackedFixed32: function(arr) {\n        var end = readPackedEnd(this);\n        arr = arr || [];\n        while (this.pos < end) arr.push(this.readFixed32());\n        return arr;\n    },\n    readPackedSFixed32: function(arr) {\n        var end = readPackedEnd(this);\n        arr = arr || [];\n        while (this.pos < end) arr.push(this.readSFixed32());\n        return arr;\n    },\n    readPackedFixed64: function(arr) {\n        var end = readPackedEnd(this);\n        arr = arr || [];\n        while (this.pos < end) arr.push(this.readFixed64());\n        return arr;\n    },\n    readPackedSFixed64: function(arr) {\n        var end = readPackedEnd(this);\n        arr = arr || [];\n        while (this.pos < end) arr.push(this.readSFixed64());\n        return arr;\n    },\n\n    skip: function(val) {\n        var type = val & 0x7;\n        if (type === Pbf.Varint) while (this.buf[this.pos++] > 0x7f) {}\n        else if (type === Pbf.Bytes) this.pos = this.readVarint() + this.pos;\n        else if (type === Pbf.Fixed32) this.pos += 4;\n        else if (type === Pbf.Fixed64) this.pos += 8;\n        else throw new Error('Unimplemented type: ' + type);\n    },\n\n    // === WRITING =================================================================\n\n    writeTag: function(tag, type) {\n        this.writeVarint((tag << 3) | type);\n    },\n\n    realloc: function(min) {\n        var length = this.length || 16;\n\n        while (length < this.pos + min) length *= 2;\n\n        if (length !== this.length) {\n            var buf = new Uint8Array(length);\n            buf.set(this.buf);\n            this.buf = buf;\n            this.length = length;\n        }\n    },\n\n    finish: function() {\n        this.length = this.pos;\n        this.pos = 0;\n        return this.buf.subarray(0, this.length);\n    },\n\n    writeFixed32: function(val) {\n        this.realloc(4);\n        writeInt32(this.buf, val, this.pos);\n        this.pos += 4;\n    },\n\n    writeSFixed32: function(val) {\n        this.realloc(4);\n        writeInt32(this.buf, val, this.pos);\n        this.pos += 4;\n    },\n\n    writeFixed64: function(val) {\n        this.realloc(8);\n        writeInt32(this.buf, val & -1, this.pos);\n        writeInt32(this.buf, Math.floor(val * SHIFT_RIGHT_32), this.pos + 4);\n        this.pos += 8;\n    },\n\n    writeSFixed64: function(val) {\n        this.realloc(8);\n        writeInt32(this.buf, val & -1, this.pos);\n        writeInt32(this.buf, Math.floor(val * SHIFT_RIGHT_32), this.pos + 4);\n        this.pos += 8;\n    },\n\n    writeVarint: function(val) {\n        val = +val || 0;\n\n        if (val > 0xfffffff || val < 0) {\n            writeBigVarint(val, this);\n            return;\n        }\n\n        this.realloc(4);\n\n        this.buf[this.pos++] =           val & 0x7f  | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n        this.buf[this.pos++] = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n        this.buf[this.pos++] = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n        this.buf[this.pos++] =   (val >>> 7) & 0x7f;\n    },\n\n    writeSVarint: function(val) {\n        this.writeVarint(val < 0 ? -val * 2 - 1 : val * 2);\n    },\n\n    writeBoolean: function(val) {\n        this.writeVarint(Boolean(val));\n    },\n\n    writeString: function(str) {\n        str = String(str);\n        this.realloc(str.length * 4);\n\n        this.pos++; // reserve 1 byte for short string length\n\n        var startPos = this.pos;\n        // write the string directly to the buffer and see how much was written\n        this.pos = writeUtf8(this.buf, str, this.pos);\n        var len = this.pos - startPos;\n\n        if (len >= 0x80) makeRoomForExtraLength(startPos, len, this);\n\n        // finally, write the message length in the reserved place and restore the position\n        this.pos = startPos - 1;\n        this.writeVarint(len);\n        this.pos += len;\n    },\n\n    writeFloat: function(val) {\n        this.realloc(4);\n        ieee754.write(this.buf, val, this.pos, true, 23, 4);\n        this.pos += 4;\n    },\n\n    writeDouble: function(val) {\n        this.realloc(8);\n        ieee754.write(this.buf, val, this.pos, true, 52, 8);\n        this.pos += 8;\n    },\n\n    writeBytes: function(buffer) {\n        var len = buffer.length;\n        this.writeVarint(len);\n        this.realloc(len);\n        for (var i = 0; i < len; i++) this.buf[this.pos++] = buffer[i];\n    },\n\n    writeRawMessage: function(fn, obj) {\n        this.pos++; // reserve 1 byte for short message length\n\n        // write the message directly to the buffer and see how much was written\n        var startPos = this.pos;\n        fn(obj, this);\n        var len = this.pos - startPos;\n\n        if (len >= 0x80) makeRoomForExtraLength(startPos, len, this);\n\n        // finally, write the message length in the reserved place and restore the position\n        this.pos = startPos - 1;\n        this.writeVarint(len);\n        this.pos += len;\n    },\n\n    writeMessage: function(tag, fn, obj) {\n        this.writeTag(tag, Pbf.Bytes);\n        this.writeRawMessage(fn, obj);\n    },\n\n    writePackedVarint:   function(tag, arr) { this.writeMessage(tag, writePackedVarint, arr);   },\n    writePackedSVarint:  function(tag, arr) { this.writeMessage(tag, writePackedSVarint, arr);  },\n    writePackedBoolean:  function(tag, arr) { this.writeMessage(tag, writePackedBoolean, arr);  },\n    writePackedFloat:    function(tag, arr) { this.writeMessage(tag, writePackedFloat, arr);    },\n    writePackedDouble:   function(tag, arr) { this.writeMessage(tag, writePackedDouble, arr);   },\n    writePackedFixed32:  function(tag, arr) { this.writeMessage(tag, writePackedFixed32, arr);  },\n    writePackedSFixed32: function(tag, arr) { this.writeMessage(tag, writePackedSFixed32, arr); },\n    writePackedFixed64:  function(tag, arr) { this.writeMessage(tag, writePackedFixed64, arr);  },\n    writePackedSFixed64: function(tag, arr) { this.writeMessage(tag, writePackedSFixed64, arr); },\n\n    writeBytesField: function(tag, buffer) {\n        this.writeTag(tag, Pbf.Bytes);\n        this.writeBytes(buffer);\n    },\n    writeFixed32Field: function(tag, val) {\n        this.writeTag(tag, Pbf.Fixed32);\n        this.writeFixed32(val);\n    },\n    writeSFixed32Field: function(tag, val) {\n        this.writeTag(tag, Pbf.Fixed32);\n        this.writeSFixed32(val);\n    },\n    writeFixed64Field: function(tag, val) {\n        this.writeTag(tag, Pbf.Fixed64);\n        this.writeFixed64(val);\n    },\n    writeSFixed64Field: function(tag, val) {\n        this.writeTag(tag, Pbf.Fixed64);\n        this.writeSFixed64(val);\n    },\n    writeVarintField: function(tag, val) {\n        this.writeTag(tag, Pbf.Varint);\n        this.writeVarint(val);\n    },\n    writeSVarintField: function(tag, val) {\n        this.writeTag(tag, Pbf.Varint);\n        this.writeSVarint(val);\n    },\n    writeStringField: function(tag, str) {\n        this.writeTag(tag, Pbf.Bytes);\n        this.writeString(str);\n    },\n    writeFloatField: function(tag, val) {\n        this.writeTag(tag, Pbf.Fixed32);\n        this.writeFloat(val);\n    },\n    writeDoubleField: function(tag, val) {\n        this.writeTag(tag, Pbf.Fixed64);\n        this.writeDouble(val);\n    },\n    writeBooleanField: function(tag, val) {\n        this.writeVarintField(tag, Boolean(val));\n    }\n};\n\nfunction readVarintRemainder(l, s, p) {\n    var buf = p.buf,\n        h, b;\n\n    b = buf[p.pos++]; h  = (b & 0x70) >> 4;  if (b < 0x80) return toNum(l, h, s);\n    b = buf[p.pos++]; h |= (b & 0x7f) << 3;  if (b < 0x80) return toNum(l, h, s);\n    b = buf[p.pos++]; h |= (b & 0x7f) << 10; if (b < 0x80) return toNum(l, h, s);\n    b = buf[p.pos++]; h |= (b & 0x7f) << 17; if (b < 0x80) return toNum(l, h, s);\n    b = buf[p.pos++]; h |= (b & 0x7f) << 24; if (b < 0x80) return toNum(l, h, s);\n    b = buf[p.pos++]; h |= (b & 0x01) << 31; if (b < 0x80) return toNum(l, h, s);\n\n    throw new Error('Expected varint not more than 10 bytes');\n}\n\nfunction readPackedEnd(pbf) {\n    return pbf.type === Pbf.Bytes ?\n        pbf.readVarint() + pbf.pos : pbf.pos + 1;\n}\n\nfunction toNum(low, high, isSigned) {\n    if (isSigned) {\n        return high * 0x100000000 + (low >>> 0);\n    }\n\n    return ((high >>> 0) * 0x100000000) + (low >>> 0);\n}\n\nfunction writeBigVarint(val, pbf) {\n    var low, high;\n\n    if (val >= 0) {\n        low  = (val % 0x100000000) | 0;\n        high = (val / 0x100000000) | 0;\n    } else {\n        low  = ~(-val % 0x100000000);\n        high = ~(-val / 0x100000000);\n\n        if (low ^ 0xffffffff) {\n            low = (low + 1) | 0;\n        } else {\n            low = 0;\n            high = (high + 1) | 0;\n        }\n    }\n\n    if (val >= 0x10000000000000000 || val < -0x10000000000000000) {\n        throw new Error('Given varint doesn\\'t fit into 10 bytes');\n    }\n\n    pbf.realloc(10);\n\n    writeBigVarintLow(low, high, pbf);\n    writeBigVarintHigh(high, pbf);\n}\n\nfunction writeBigVarintLow(low, high, pbf) {\n    pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n    pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n    pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n    pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n    pbf.buf[pbf.pos]   = low & 0x7f;\n}\n\nfunction writeBigVarintHigh(high, pbf) {\n    var lsb = (high & 0x07) << 4;\n\n    pbf.buf[pbf.pos++] |= lsb         | ((high >>>= 3) ? 0x80 : 0); if (!high) return;\n    pbf.buf[pbf.pos++]  = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n    pbf.buf[pbf.pos++]  = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n    pbf.buf[pbf.pos++]  = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n    pbf.buf[pbf.pos++]  = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n    pbf.buf[pbf.pos++]  = high & 0x7f;\n}\n\nfunction makeRoomForExtraLength(startPos, len, pbf) {\n    var extraLen =\n        len <= 0x3fff ? 1 :\n        len <= 0x1fffff ? 2 :\n        len <= 0xfffffff ? 3 : Math.ceil(Math.log(len) / (Math.LN2 * 7));\n\n    // if 1 byte isn't enough for encoding message length, shift the data to the right\n    pbf.realloc(extraLen);\n    for (var i = pbf.pos - 1; i >= startPos; i--) pbf.buf[i + extraLen] = pbf.buf[i];\n}\n\nfunction writePackedVarint(arr, pbf)   { for (var i = 0; i < arr.length; i++) pbf.writeVarint(arr[i]);   }\nfunction writePackedSVarint(arr, pbf)  { for (var i = 0; i < arr.length; i++) pbf.writeSVarint(arr[i]);  }\nfunction writePackedFloat(arr, pbf)    { for (var i = 0; i < arr.length; i++) pbf.writeFloat(arr[i]);    }\nfunction writePackedDouble(arr, pbf)   { for (var i = 0; i < arr.length; i++) pbf.writeDouble(arr[i]);   }\nfunction writePackedBoolean(arr, pbf)  { for (var i = 0; i < arr.length; i++) pbf.writeBoolean(arr[i]);  }\nfunction writePackedFixed32(arr, pbf)  { for (var i = 0; i < arr.length; i++) pbf.writeFixed32(arr[i]);  }\nfunction writePackedSFixed32(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSFixed32(arr[i]); }\nfunction writePackedFixed64(arr, pbf)  { for (var i = 0; i < arr.length; i++) pbf.writeFixed64(arr[i]);  }\nfunction writePackedSFixed64(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSFixed64(arr[i]); }\n\n// Buffer code below from https://github.com/feross/buffer, MIT-licensed\n\nfunction readUInt32(buf, pos) {\n    return ((buf[pos]) |\n        (buf[pos + 1] << 8) |\n        (buf[pos + 2] << 16)) +\n        (buf[pos + 3] * 0x1000000);\n}\n\nfunction writeInt32(buf, val, pos) {\n    buf[pos] = val;\n    buf[pos + 1] = (val >>> 8);\n    buf[pos + 2] = (val >>> 16);\n    buf[pos + 3] = (val >>> 24);\n}\n\nfunction readInt32(buf, pos) {\n    return ((buf[pos]) |\n        (buf[pos + 1] << 8) |\n        (buf[pos + 2] << 16)) +\n        (buf[pos + 3] << 24);\n}\n\nfunction readUtf8(buf, pos, end) {\n    var str = '';\n    var i = pos;\n\n    while (i < end) {\n        var b0 = buf[i];\n        var c = null; // codepoint\n        var bytesPerSequence =\n            b0 > 0xEF ? 4 :\n            b0 > 0xDF ? 3 :\n            b0 > 0xBF ? 2 : 1;\n\n        if (i + bytesPerSequence > end) break;\n\n        var b1, b2, b3;\n\n        if (bytesPerSequence === 1) {\n            if (b0 < 0x80) {\n                c = b0;\n            }\n        } else if (bytesPerSequence === 2) {\n            b1 = buf[i + 1];\n            if ((b1 & 0xC0) === 0x80) {\n                c = (b0 & 0x1F) << 0x6 | (b1 & 0x3F);\n                if (c <= 0x7F) {\n                    c = null;\n                }\n            }\n        } else if (bytesPerSequence === 3) {\n            b1 = buf[i + 1];\n            b2 = buf[i + 2];\n            if ((b1 & 0xC0) === 0x80 && (b2 & 0xC0) === 0x80) {\n                c = (b0 & 0xF) << 0xC | (b1 & 0x3F) << 0x6 | (b2 & 0x3F);\n                if (c <= 0x7FF || (c >= 0xD800 && c <= 0xDFFF)) {\n                    c = null;\n                }\n            }\n        } else if (bytesPerSequence === 4) {\n            b1 = buf[i + 1];\n            b2 = buf[i + 2];\n            b3 = buf[i + 3];\n            if ((b1 & 0xC0) === 0x80 && (b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80) {\n                c = (b0 & 0xF) << 0x12 | (b1 & 0x3F) << 0xC | (b2 & 0x3F) << 0x6 | (b3 & 0x3F);\n                if (c <= 0xFFFF || c >= 0x110000) {\n                    c = null;\n                }\n            }\n        }\n\n        if (c === null) {\n            c = 0xFFFD;\n            bytesPerSequence = 1;\n\n        } else if (c > 0xFFFF) {\n            c -= 0x10000;\n            str += String.fromCharCode(c >>> 10 & 0x3FF | 0xD800);\n            c = 0xDC00 | c & 0x3FF;\n        }\n\n        str += String.fromCharCode(c);\n        i += bytesPerSequence;\n    }\n\n    return str;\n}\n\nfunction writeUtf8(buf, str, pos) {\n    for (var i = 0, c, lead; i < str.length; i++) {\n        c = str.charCodeAt(i); // code point\n\n        if (c > 0xD7FF && c < 0xE000) {\n            if (lead) {\n                if (c < 0xDC00) {\n                    buf[pos++] = 0xEF;\n                    buf[pos++] = 0xBF;\n                    buf[pos++] = 0xBD;\n                    lead = c;\n                    continue;\n                } else {\n                    c = lead - 0xD800 << 10 | c - 0xDC00 | 0x10000;\n                    lead = null;\n                }\n            } else {\n                if (c > 0xDBFF || (i + 1 === str.length)) {\n                    buf[pos++] = 0xEF;\n                    buf[pos++] = 0xBF;\n                    buf[pos++] = 0xBD;\n                } else {\n                    lead = c;\n                }\n                continue;\n            }\n        } else if (lead) {\n            buf[pos++] = 0xEF;\n            buf[pos++] = 0xBF;\n            buf[pos++] = 0xBD;\n            lead = null;\n        }\n\n        if (c < 0x80) {\n            buf[pos++] = c;\n        } else {\n            if (c < 0x800) {\n                buf[pos++] = c >> 0x6 | 0xC0;\n            } else {\n                if (c < 0x10000) {\n                    buf[pos++] = c >> 0xC | 0xE0;\n                } else {\n                    buf[pos++] = c >> 0x12 | 0xF0;\n                    buf[pos++] = c >> 0xC & 0x3F | 0x80;\n                }\n                buf[pos++] = c >> 0x6 & 0x3F | 0x80;\n            }\n            buf[pos++] = c & 0x3F | 0x80;\n        }\n    }\n    return pos;\n}\n",
     "(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.quickselect = factory());\n}(this, (function () { 'use strict';\n\nfunction quickselect(arr, k, left, right, compare) {\n    quickselectStep(arr, k, left || 0, right || (arr.length - 1), compare || defaultCompare);\n}\n\nfunction quickselectStep(arr, k, left, right, compare) {\n\n    while (right > left) {\n        if (right - left > 600) {\n            var n = right - left + 1;\n            var m = k - left + 1;\n            var z = Math.log(n);\n            var s = 0.5 * Math.exp(2 * z / 3);\n            var sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n            var newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n            var newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n            quickselectStep(arr, k, newLeft, newRight, compare);\n        }\n\n        var t = arr[k];\n        var i = left;\n        var j = right;\n\n        swap(arr, left, k);\n        if (compare(arr[right], t) > 0) swap(arr, left, right);\n\n        while (i < j) {\n            swap(arr, i, j);\n            i++;\n            j--;\n            while (compare(arr[i], t) < 0) i++;\n            while (compare(arr[j], t) > 0) j--;\n        }\n\n        if (compare(arr[left], t) === 0) swap(arr, left, j);\n        else {\n            j++;\n            swap(arr, j, right);\n        }\n\n        if (j <= k) left = j + 1;\n        if (k <= j) right = j - 1;\n    }\n}\n\nfunction swap(arr, i, j) {\n    var tmp = arr[i];\n    arr[i] = arr[j];\n    arr[j] = tmp;\n}\n\nfunction defaultCompare(a, b) {\n    return a < b ? -1 : a > b ? 1 : 0;\n}\n\nreturn quickselect;\n\n})));\n",
     "/** @license MIT License (c) copyright 2010-2014 original author or authors */\n\n/**\n * Promises/A+ and when() implementation\n * when is part of the cujoJS family of libraries (http://cujojs.com/)\n * @author Brian Cavalier\n * @author John Hann\n */\n(function(define) { 'use strict';\ndefine(function (require) {\n\n\tvar timed = require('./lib/decorators/timed');\n\tvar array = require('./lib/decorators/array');\n\tvar flow = require('./lib/decorators/flow');\n\tvar fold = require('./lib/decorators/fold');\n\tvar inspect = require('./lib/decorators/inspect');\n\tvar generate = require('./lib/decorators/iterate');\n\tvar progress = require('./lib/decorators/progress');\n\tvar withThis = require('./lib/decorators/with');\n\tvar unhandledRejection = require('./lib/decorators/unhandledRejection');\n\tvar TimeoutError = require('./lib/TimeoutError');\n\n\tvar Promise = [array, flow, fold, generate, progress,\n\t\tinspect, withThis, timed, unhandledRejection]\n\t\t.reduce(function(Promise, feature) {\n\t\t\treturn feature(Promise);\n\t\t}, require('./lib/Promise'));\n\n\tvar apply = require('./lib/apply')(Promise);\n\n\t// Public API\n\n\twhen.promise     = promise;              // Create a pending promise\n\twhen.resolve     = Promise.resolve;      // Create a resolved promise\n\twhen.reject      = Promise.reject;       // Create a rejected promise\n\n\twhen.lift        = lift;                 // lift a function to return promises\n\twhen['try']      = attempt;              // call a function and return a promise\n\twhen.attempt     = attempt;              // alias for when.try\n\n\twhen.iterate     = Promise.iterate;      // DEPRECATED (use cujojs/most streams) Generate a stream of promises\n\twhen.unfold      = Promise.unfold;       // DEPRECATED (use cujojs/most streams) Generate a stream of promises\n\n\twhen.join        = join;                 // Join 2 or more promises\n\n\twhen.all         = all;                  // Resolve a list of promises\n\twhen.settle      = settle;               // Settle a list of promises\n\n\twhen.any         = lift(Promise.any);    // One-winner race\n\twhen.some        = lift(Promise.some);   // Multi-winner race\n\twhen.race        = lift(Promise.race);   // First-to-settle race\n\n\twhen.map         = map;                  // Array.map() for promises\n\twhen.filter      = filter;               // Array.filter() for promises\n\twhen.reduce      = lift(Promise.reduce);       // Array.reduce() for promises\n\twhen.reduceRight = lift(Promise.reduceRight);  // Array.reduceRight() for promises\n\n\twhen.isPromiseLike = isPromiseLike;      // Is something promise-like, aka thenable\n\n\twhen.Promise     = Promise;              // Promise constructor\n\twhen.defer       = defer;                // Create a {promise, resolve, reject} tuple\n\n\t// Error types\n\n\twhen.TimeoutError = TimeoutError;\n\n\t/**\n\t * Get a trusted promise for x, or by transforming x with onFulfilled\n\t *\n\t * @param {*} x\n\t * @param {function?} onFulfilled callback to be called when x is\n\t *   successfully fulfilled.  If promiseOrValue is an immediate value, callback\n\t *   will be invoked immediately.\n\t * @param {function?} onRejected callback to be called when x is\n\t *   rejected.\n\t * @param {function?} onProgress callback to be called when progress updates\n\t *   are issued for x. @deprecated\n\t * @returns {Promise} a new promise that will fulfill with the return\n\t *   value of callback or errback or the completion value of promiseOrValue if\n\t *   callback and/or errback is not supplied.\n\t */\n\tfunction when(x, onFulfilled, onRejected, onProgress) {\n\t\tvar p = Promise.resolve(x);\n\t\tif (arguments.length < 2) {\n\t\t\treturn p;\n\t\t}\n\n\t\treturn p.then(onFulfilled, onRejected, onProgress);\n\t}\n\n\t/**\n\t * Creates a new promise whose fate is determined by resolver.\n\t * @param {function} resolver function(resolve, reject, notify)\n\t * @returns {Promise} promise whose fate is determine by resolver\n\t */\n\tfunction promise(resolver) {\n\t\treturn new Promise(resolver);\n\t}\n\n\t/**\n\t * Lift the supplied function, creating a version of f that returns\n\t * promises, and accepts promises as arguments.\n\t * @param {function} f\n\t * @returns {Function} version of f that returns promises\n\t */\n\tfunction lift(f) {\n\t\treturn function() {\n\t\t\tfor(var i=0, l=arguments.length, a=new Array(l); i<l; ++i) {\n\t\t\t\ta[i] = arguments[i];\n\t\t\t}\n\t\t\treturn apply(f, this, a);\n\t\t};\n\t}\n\n\t/**\n\t * Call f in a future turn, with the supplied args, and return a promise\n\t * for the result.\n\t * @param {function} f\n\t * @returns {Promise}\n\t */\n\tfunction attempt(f /*, args... */) {\n\t\t/*jshint validthis:true */\n\t\tfor(var i=0, l=arguments.length-1, a=new Array(l); i<l; ++i) {\n\t\t\ta[i] = arguments[i+1];\n\t\t}\n\t\treturn apply(f, this, a);\n\t}\n\n\t/**\n\t * Creates a {promise, resolver} pair, either or both of which\n\t * may be given out safely to consumers.\n\t * @return {{promise: Promise, resolve: function, reject: function, notify: function}}\n\t */\n\tfunction defer() {\n\t\treturn new Deferred();\n\t}\n\n\tfunction Deferred() {\n\t\tvar p = Promise._defer();\n\n\t\tfunction resolve(x) { p._handler.resolve(x); }\n\t\tfunction reject(x) { p._handler.reject(x); }\n\t\tfunction notify(x) { p._handler.notify(x); }\n\n\t\tthis.promise = p;\n\t\tthis.resolve = resolve;\n\t\tthis.reject = reject;\n\t\tthis.notify = notify;\n\t\tthis.resolver = { resolve: resolve, reject: reject, notify: notify };\n\t}\n\n\t/**\n\t * Determines if x is promise-like, i.e. a thenable object\n\t * NOTE: Will return true for *any thenable object*, and isn't truly\n\t * safe, since it may attempt to access the `then` property of x (i.e.\n\t *  clever/malicious getters may do weird things)\n\t * @param {*} x anything\n\t * @returns {boolean} true if x is promise-like\n\t */\n\tfunction isPromiseLike(x) {\n\t\treturn x && typeof x.then === 'function';\n\t}\n\n\t/**\n\t * Return a promise that will resolve only once all the supplied arguments\n\t * have resolved. The resolution value of the returned promise will be an array\n\t * containing the resolution values of each of the arguments.\n\t * @param {...*} arguments may be a mix of promises and values\n\t * @returns {Promise}\n\t */\n\tfunction join(/* ...promises */) {\n\t\treturn Promise.all(arguments);\n\t}\n\n\t/**\n\t * Return a promise that will fulfill once all input promises have\n\t * fulfilled, or reject when any one input promise rejects.\n\t * @param {array|Promise} promises array (or promise for an array) of promises\n\t * @returns {Promise}\n\t */\n\tfunction all(promises) {\n\t\treturn when(promises, Promise.all);\n\t}\n\n\t/**\n\t * Return a promise that will always fulfill with an array containing\n\t * the outcome states of all input promises.  The returned promise\n\t * will only reject if `promises` itself is a rejected promise.\n\t * @param {array|Promise} promises array (or promise for an array) of promises\n\t * @returns {Promise} promise for array of settled state descriptors\n\t */\n\tfunction settle(promises) {\n\t\treturn when(promises, Promise.settle);\n\t}\n\n\t/**\n\t * Promise-aware array map function, similar to `Array.prototype.map()`,\n\t * but input array may contain promises or values.\n\t * @param {Array|Promise} promises array of anything, may contain promises and values\n\t * @param {function(x:*, index:Number):*} mapFunc map function which may\n\t *  return a promise or value\n\t * @returns {Promise} promise that will fulfill with an array of mapped values\n\t *  or reject if any input promise rejects.\n\t */\n\tfunction map(promises, mapFunc) {\n\t\treturn when(promises, function(promises) {\n\t\t\treturn Promise.map(promises, mapFunc);\n\t\t});\n\t}\n\n\t/**\n\t * Filter the provided array of promises using the provided predicate.  Input may\n\t * contain promises and values\n\t * @param {Array|Promise} promises array of promises and values\n\t * @param {function(x:*, index:Number):boolean} predicate filtering predicate.\n\t *  Must return truthy (or promise for truthy) for items to retain.\n\t * @returns {Promise} promise that will fulfill with an array containing all items\n\t *  for which predicate returned truthy.\n\t */\n\tfunction filter(promises, predicate) {\n\t\treturn when(promises, function(promises) {\n\t\t\treturn Promise.filter(promises, predicate);\n\t\t});\n\t}\n\n\treturn when;\n});\n})(typeof define === 'function' && define.amd ? define : function (factory) { module.exports = factory(require); });\n",
     "var nativeIsArray = Array.isArray\nvar toString = Object.prototype.toString\n\nmodule.exports = nativeIsArray || isArray\n\nfunction isArray(obj) {\n    return toString.call(obj) === \"[object Array]\"\n}\n",
     "export {APIv3} from \"./api/APIv3\";\nexport {ModelCreator} from \"./api/ModelCreator\";\nexport * from \"./api/interfaces/interfaces\";\n",
-    "export {Component} from \"./component/Component\";\nexport {ComponentService} from \"./component/ComponentService\";\nexport {HandlerBase} from \"./component/utils/HandlerBase\";\nexport {MeshFactory} from \"./component/utils/MeshFactory\";\nexport {MeshScene} from \"./component/utils/MeshScene\";\nexport {MouseOperator} from \"./component/utils/MouseOperator\";\nexport {AttributionComponent} from \"./component/AttributionComponent\";\nexport {BackgroundComponent} from \"./component/BackgroundComponent\";\nexport {BearingComponent} from \"./component/BearingComponent\";\nexport {CacheComponent} from \"./component/CacheComponent\";\nexport {CoverComponent} from \"./component/CoverComponent\";\nexport {DebugComponent} from \"./component/DebugComponent\";\nexport {DirectionComponent} from \"./component/direction/DirectionComponent\";\nexport {DirectionDOMCalculator} from \"./component/direction/DirectionDOMCalculator\";\nexport {DirectionDOMRenderer} from \"./component/direction/DirectionDOMRenderer\";\nexport {ImageComponent} from \"./component/ImageComponent\";\nexport {KeyboardComponent} from \"./component/keyboard/KeyboardComponent\";\nexport {KeyPlayHandler} from \"./component/keyboard/KeyPlayHandler\";\nexport {KeyZoomHandler} from \"./component/keyboard/KeyZoomHandler\";\nexport {KeySequenceNavigationHandler} from \"./component/keyboard/KeySequenceNavigationHandler\";\nexport {KeySpatialNavigationHandler} from \"./component/keyboard/KeySpatialNavigationHandler\";\nexport {LoadingComponent} from \"./component/LoadingComponent\";\nexport {Marker} from \"./component/marker/marker/Marker\";\nexport {MarkerComponent} from \"./component/marker/MarkerComponent\";\nexport {MarkerScene} from \"./component/marker/MarkerScene\";\nexport {MarkerSet} from \"./component/marker/MarkerSet\";\nexport {MouseComponent} from \"./component/mouse/MouseComponent\";\nexport * from \"./component/mouse/HandlerTypes\";\nexport {BounceHandler} from \"./component/mouse/BounceHandler\";\nexport {DragPanHandler} from \"./component/mouse/DragPanHandler\";\nexport {DoubleClickZoomHandler} from \"./component/mouse/DoubleClickZoomHandler\";\nexport {EarthControlHandler} from \"./component/mouse/EarthControlHandler\";\nexport {ScrollZoomHandler} from \"./component/mouse/ScrollZoomHandler\";\nexport {TouchZoomHandler} from \"./component/mouse/TouchZoomHandler\";\nimport * as ImageBoundary from \"./component/mouse/ImageBoundary\";\nexport {ImageBoundary};\nexport {Popup} from \"./component/popup/popup/Popup\";\nexport {PopupComponent} from \"./component/popup/PopupComponent\";\nexport {PopupAlignment} from \"./component/popup/popup/PopupAlignment\";\nexport {IPopupOffset} from \"./component/popup/interfaces/IPopupOffset\";\nexport {IPopupOptions} from \"./component/popup/interfaces/IPopupOptions\";\nexport {NavigationComponent} from \"./component/NavigationComponent\";\nexport {RouteComponent} from \"./component/RouteComponent\";\nexport {SequenceComponent} from \"./component/sequence/SequenceComponent\";\nexport {SequenceDOMRenderer} from \"./component/sequence/SequenceDOMRenderer\";\nexport {SequenceMode} from \"./component/sequence/SequenceMode\";\nexport {NodeData, ReconstructionData, SpatialDataCache} from \"./component/spatialdata/SpatialDataCache\";\nexport {SpatialDataComponent} from \"./component/spatialdata/SpatialDataComponent\";\nexport {SpatialDataScene} from \"./component/spatialdata/SpatialDataScene\";\nexport {ImagePlaneComponent} from \"./component/imageplane/ImagePlaneComponent\";\nexport {ImagePlaneGLRenderer} from \"./component/imageplane/ImagePlaneGLRenderer\";\nexport {Shaders} from \"./component/shaders/Shaders\";\nexport {SimpleMarker} from \"./component/marker/marker/SimpleMarker\";\nexport {CircleMarker} from \"./component/marker/marker/CircleMarker\";\nexport {SliderComponent} from \"./component/slider/SliderComponent\";\nexport {SliderDOMRenderer} from \"./component/slider/SliderDOMRenderer\";\nexport {SliderGLRenderer} from \"./component/slider/SliderGLRenderer\";\nexport {StatsComponent} from \"./component/StatsComponent\";\nexport {TagHandlerBase} from \"./component/tag/handlers/TagHandlerBase\";\nexport {CreateHandlerBase} from \"./component/tag/handlers/CreateHandlerBase\";\nexport {CreatePointHandler} from \"./component/tag/handlers/CreatePointHandler\";\nexport {CreateVertexHandler} from \"./component/tag/handlers/CreateVertexHandler\";\nexport {CreatePolygonHandler} from \"./component/tag/handlers/CreatePolygonHandler\";\nexport {CreateRectHandler} from \"./component/tag/handlers/CreateRectHandler\";\nexport {CreateRectDragHandler} from \"./component/tag/handlers/CreateRectDragHandler\";\nexport {EditVertexHandler} from \"./component/tag/handlers/EditVertexHandler\";\nexport {Tag} from \"./component/tag/tag/Tag\";\nexport {OutlineTag} from \"./component/tag/tag/OutlineTag\";\nexport {RenderTag} from \"./component/tag/tag/RenderTag\";\nexport {OutlineRenderTag} from \"./component/tag/tag/OutlineRenderTag\";\nexport {OutlineCreateTag} from \"./component/tag/tag/OutlineCreateTag\";\nexport {SpotTag} from \"./component/tag/tag/SpotTag\";\nexport {SpotRenderTag} from \"./component/tag/tag/SpotRenderTag\";\nexport {TagDomain} from \"./component/tag/tag/TagDomain\";\nexport {TagComponent} from \"./component/tag/TagComponent\";\nexport {TagCreator} from \"./component/tag/TagCreator\";\nexport {TagDOMRenderer} from \"./component/tag/TagDOMRenderer\";\nexport {TagMode} from \"./component/tag/TagMode\";\nexport {TagOperation} from \"./component/tag/TagOperation\";\nexport {TagScene} from \"./component/tag/TagScene\";\nexport {TagSet} from \"./component/tag/TagSet\";\nexport {Geometry} from \"./component/tag/geometry/Geometry\";\nexport {VertexGeometry} from \"./component/tag/geometry/VertexGeometry\";\nexport {RectGeometry} from \"./component/tag/geometry/RectGeometry\";\nexport {PointGeometry} from \"./component/tag/geometry/PointGeometry\";\nexport {PolygonGeometry} from \"./component/tag/geometry/PolygonGeometry\";\nexport {GeometryTagError} from \"./component/tag/error/GeometryTagError\";\nexport {ZoomComponent} from \"./component/zoom/ZoomComponent\";\nexport * from \"./component/interfaces/interfaces\";\n",
+    "export {Component} from \"./component/Component\";\nexport {ComponentService} from \"./component/ComponentService\";\nexport {HandlerBase} from \"./component/utils/HandlerBase\";\nexport {MeshFactory} from \"./component/utils/MeshFactory\";\nexport {MeshScene} from \"./component/utils/MeshScene\";\nexport {MouseOperator} from \"./component/utils/MouseOperator\";\nexport {ComponentSize} from \"./component/utils/ComponentSize\";\nexport {AttributionComponent} from \"./component/AttributionComponent\";\nexport {BackgroundComponent} from \"./component/BackgroundComponent\";\nexport {BearingComponent} from \"./component/BearingComponent\";\nexport {CacheComponent} from \"./component/CacheComponent\";\nexport {CoverComponent} from \"./component/CoverComponent\";\nexport {DebugComponent} from \"./component/DebugComponent\";\nexport {DirectionComponent} from \"./component/direction/DirectionComponent\";\nexport {DirectionDOMCalculator} from \"./component/direction/DirectionDOMCalculator\";\nexport {DirectionDOMRenderer} from \"./component/direction/DirectionDOMRenderer\";\nexport {ImageComponent} from \"./component/ImageComponent\";\nexport {KeyboardComponent} from \"./component/keyboard/KeyboardComponent\";\nexport {KeyPlayHandler} from \"./component/keyboard/KeyPlayHandler\";\nexport {KeyZoomHandler} from \"./component/keyboard/KeyZoomHandler\";\nexport {KeySequenceNavigationHandler} from \"./component/keyboard/KeySequenceNavigationHandler\";\nexport {KeySpatialNavigationHandler} from \"./component/keyboard/KeySpatialNavigationHandler\";\nexport {LoadingComponent} from \"./component/LoadingComponent\";\nexport {Marker} from \"./component/marker/marker/Marker\";\nexport {MarkerComponent} from \"./component/marker/MarkerComponent\";\nexport {MarkerScene} from \"./component/marker/MarkerScene\";\nexport {MarkerSet} from \"./component/marker/MarkerSet\";\nexport {MouseComponent} from \"./component/mouse/MouseComponent\";\nexport * from \"./component/mouse/HandlerTypes\";\nexport {BounceHandler} from \"./component/mouse/BounceHandler\";\nexport {DragPanHandler} from \"./component/mouse/DragPanHandler\";\nexport {DoubleClickZoomHandler} from \"./component/mouse/DoubleClickZoomHandler\";\nexport {EarthControlHandler} from \"./component/mouse/EarthControlHandler\";\nexport {ScrollZoomHandler} from \"./component/mouse/ScrollZoomHandler\";\nexport {TouchZoomHandler} from \"./component/mouse/TouchZoomHandler\";\nimport * as ImageBoundary from \"./component/mouse/ImageBoundary\";\nexport {ImageBoundary};\nexport {Popup} from \"./component/popup/popup/Popup\";\nexport {PopupComponent} from \"./component/popup/PopupComponent\";\nexport {PopupAlignment} from \"./component/popup/popup/PopupAlignment\";\nexport {IPopupOffset} from \"./component/popup/interfaces/IPopupOffset\";\nexport {IPopupOptions} from \"./component/popup/interfaces/IPopupOptions\";\nexport {NavigationComponent} from \"./component/NavigationComponent\";\nexport {RouteComponent} from \"./component/RouteComponent\";\nexport {SequenceComponent} from \"./component/sequence/SequenceComponent\";\nexport {SequenceDOMRenderer} from \"./component/sequence/SequenceDOMRenderer\";\nexport {SequenceMode} from \"./component/sequence/SequenceMode\";\nexport {NodeData, SpatialDataCache} from \"./component/spatialdata/SpatialDataCache\";\nexport {SpatialDataComponent} from \"./component/spatialdata/SpatialDataComponent\";\nexport {SpatialDataScene} from \"./component/spatialdata/SpatialDataScene\";\nexport {ImagePlaneComponent} from \"./component/imageplane/ImagePlaneComponent\";\nexport {ImagePlaneGLRenderer} from \"./component/imageplane/ImagePlaneGLRenderer\";\nexport {Shaders} from \"./component/shaders/Shaders\";\nexport {SimpleMarker} from \"./component/marker/marker/SimpleMarker\";\nexport {CircleMarker} from \"./component/marker/marker/CircleMarker\";\nexport {SliderComponent} from \"./component/slider/SliderComponent\";\nexport {SliderDOMRenderer} from \"./component/slider/SliderDOMRenderer\";\nexport {SliderGLRenderer} from \"./component/slider/SliderGLRenderer\";\nexport {StatsComponent} from \"./component/StatsComponent\";\nexport {TagHandlerBase} from \"./component/tag/handlers/TagHandlerBase\";\nexport {CreateHandlerBase} from \"./component/tag/handlers/CreateHandlerBase\";\nexport {CreatePointHandler} from \"./component/tag/handlers/CreatePointHandler\";\nexport {CreateVertexHandler} from \"./component/tag/handlers/CreateVertexHandler\";\nexport {CreatePointsHandler} from \"./component/tag/handlers/CreatePointsHandler\";\nexport {CreatePolygonHandler} from \"./component/tag/handlers/CreatePolygonHandler\";\nexport {CreateRectHandler} from \"./component/tag/handlers/CreateRectHandler\";\nexport {CreateRectDragHandler} from \"./component/tag/handlers/CreateRectDragHandler\";\nexport {EditVertexHandler} from \"./component/tag/handlers/EditVertexHandler\";\nexport {Tag} from \"./component/tag/tag/Tag\";\nexport {OutlineTag} from \"./component/tag/tag/OutlineTag\";\nexport {ExtremePointTag} from \"./component/tag/tag/ExtremePointTag\";\nexport {RenderTag} from \"./component/tag/tag/RenderTag\";\nexport {OutlineRenderTagBase} from \"./component/tag/tag/OutlineRenderTagBase\";\nexport {OutlineRenderTag} from \"./component/tag/tag/OutlineRenderTag\";\nexport {ExtremePointRenderTag} from \"./component/tag/tag/ExtremePointRenderTag\";\nexport {SpotTag} from \"./component/tag/tag/SpotTag\";\nexport {SpotRenderTag} from \"./component/tag/tag/SpotRenderTag\";\nexport {TagDomain} from \"./component/tag/tag/TagDomain\";\nexport {TagComponent} from \"./component/tag/TagComponent\";\nexport {TagCreator} from \"./component/tag/TagCreator\";\nexport {TagDOMRenderer} from \"./component/tag/TagDOMRenderer\";\nexport {TagMode} from \"./component/tag/TagMode\";\nexport {TagOperation} from \"./component/tag/TagOperation\";\nexport {TagScene} from \"./component/tag/TagScene\";\nexport {TagSet} from \"./component/tag/TagSet\";\nexport {Geometry} from \"./component/tag/geometry/Geometry\";\nexport {VertexGeometry} from \"./component/tag/geometry/VertexGeometry\";\nexport {RectGeometry} from \"./component/tag/geometry/RectGeometry\";\nexport {PointGeometry} from \"./component/tag/geometry/PointGeometry\";\nexport {PointsGeometry} from \"./component/tag/geometry/PointsGeometry\";\nexport {PolygonGeometry} from \"./component/tag/geometry/PolygonGeometry\";\nexport {GeometryTagError} from \"./component/tag/error/GeometryTagError\";\nexport {ZoomComponent} from \"./component/zoom/ZoomComponent\";\nexport {CreateTag} from \"./component/tag/tag/CreateTag\";\nexport {OutlineCreateTag} from \"./component/tag/tag/OutlineCreateTag\";\nexport {ExtremePointCreateTag} from \"./component/tag/tag/ExtremePointCreateTag\";\nexport * from \"./component/interfaces/interfaces\";\n",
     "export {EdgeDirection} from \"./graph/edge/EdgeDirection\";\nexport {EdgeCalculatorSettings} from \"./graph/edge/EdgeCalculatorSettings\";\nexport {EdgeCalculatorDirections} from \"./graph/edge/EdgeCalculatorDirections\";\nexport {EdgeCalculatorCoefficients} from \"./graph/edge/EdgeCalculatorCoefficients\";\nexport {EdgeCalculator} from \"./graph/edge/EdgeCalculator\";\nexport * from \"./graph/edge/interfaces/interfaces\";\n",
     "export {AbortMapillaryError} from \"./error/AbortMapillaryError\";\nexport {ArgumentMapillaryError} from \"./error/ArgumentMapillaryError\";\nexport {GraphMapillaryError} from \"./error/GraphMapillaryError\";\nexport {MapillaryError} from \"./error/MapillaryError\";\n",
     "export {Camera} from \"./geo/Camera\";\nexport {GeoCoords} from \"./geo/GeoCoords\";\nexport {ViewportCoords} from \"./geo/ViewportCoords\";\nexport {Spatial} from \"./geo/Spatial\";\nexport {Transform} from \"./geo/Transform\";\nexport * from \"./geo/interfaces/interfaces\";\n\nimport * as Geo from \"./geo/Geo\";\nexport {Geo};\n\nimport * as Lines from \"./geo/Lines\";\nexport {Lines};\n",
     "export {\n    FilterCreator,\n    FilterFunction,\n} from \"./graph/FilterCreator\";\nexport {\n    FilterExpression,\n    FilterOperation,\n    FilterOperator,\n    FilterValue,\n} from \"./graph/FilterExpression\";\nexport {Graph} from \"./graph/Graph\";\nexport {GraphCalculator} from \"./graph/GraphCalculator\";\nexport {GraphMode} from \"./graph/GraphMode\";\nexport {GraphService} from \"./graph/GraphService\";\nexport {ImageLoadingService} from \"./graph/ImageLoadingService\";\nexport {MeshReader} from \"./graph/MeshReader\";\nexport {Node} from \"./graph/Node\";\nexport {NodeCache} from \"./graph/NodeCache\";\nexport {Sequence} from \"./graph/Sequence\";\nexport * from \"./graph/interfaces/interfaces\";\n",
-    "/**\n * MapillaryJS is a WebGL JavaScript library for exploring street level imagery\n * @name Mapillary\n */\n\nexport * from \"./Support\";\n\nexport {EdgeDirection} from \"./Edge\";\nexport {AbortMapillaryError} from \"./Error\";\nexport {RenderMode} from \"./Render\";\nexport {TransitionMode} from \"./State\";\nexport {\n    Alignment,\n    ImageSize,\n    Viewer,\n} from \"./Viewer\";\nexport {SliderMode} from \"./Component\";\n\nimport * as TagComponent from \"./component/tag/Tag\";\nexport {TagComponent};\n\nimport * as MarkerComponent from \"./component/marker/Marker\";\nexport {MarkerComponent};\n\nimport * as PopupComponent from \"./component/popup/Popup\";\nexport {PopupComponent};\n",
+    "/**\n * MapillaryJS is a WebGL JavaScript library for exploring street level imagery\n * @name Mapillary\n */\n\nexport * from \"./Support\";\n\nexport {EdgeDirection} from \"./Edge\";\nexport {AbortMapillaryError} from \"./Error\";\nexport {RenderMode} from \"./Render\";\nexport {TransitionMode} from \"./State\";\nexport {\n    Alignment,\n    ImageSize,\n    Viewer,\n} from \"./Viewer\";\nexport {\n    SliderMode,\n    ComponentSize,\n} from \"./Component\";\n\nimport * as TagComponent from \"./component/tag/Tag\";\nexport {TagComponent};\n\nimport * as MarkerComponent from \"./component/marker/Marker\";\nexport {MarkerComponent};\n\nimport * as PopupComponent from \"./component/popup/Popup\";\nexport {PopupComponent};\n\nimport * as SpatialDataComponent from \"./component/spatialdata/SpatialData\";\nexport {SpatialDataComponent};\n",
     "export {DOMRenderer} from \"./render/DOMRenderer\";\nexport {GLRenderer} from \"./render/GLRenderer\";\nexport {GLRenderStage} from \"./render/GLRenderStage\";\nexport {RenderCamera} from \"./render/RenderCamera\";\nexport {RenderMode} from \"./render/RenderMode\";\nexport {RenderService} from \"./render/RenderService\";\nexport * from \"./render/interfaces/interfaces\";\n",
     "export {FrameGenerator} from \"./state/FrameGenerator\";\nexport {RotationDelta} from \"./state/RotationDelta\";\nexport {State} from \"./state/State\";\nexport {StateBase} from \"./state/states/StateBase\";\nexport {StateContext} from \"./state/StateContext\";\nexport {StateService} from \"./state/StateService\";\nexport {TransitionMode} from \"./state/TransitionMode\";\nexport {EarthState} from \"./state/states/EarthState\";\nexport {InteractiveStateBase} from \"./state/states/InteractiveStateBase\";\nexport {InteractiveWaitingState} from \"./state/states/InteractiveWaitingState\";\nexport {TraversingState} from \"./state/states/TraversingState\";\nexport {WaitingState} from \"./state/states/WaitingState\";\nexport * from \"./state/interfaces/interfaces\";\n",
     "import * as support from \"./utils/Support\";\n\n/**\n * Test whether the current browser supports the full\n * functionality of MapillaryJS.\n *\n * @description The full functionality includes WebGL rendering.\n *\n * @return {boolean}\n *\n * @example `var supported = Mapillary.isSupported();`\n */\nexport function isSupported(): boolean {\n    return isFallbackSupported() &&\n        support.isWebGLSupportedCached();\n}\n\n/**\n * Test whether the current browser supports the fallback\n * functionality of MapillaryJS.\n *\n * @description The fallback functionality does not include WebGL\n * rendering, only 2D canvas rendering.\n *\n * @return {boolean}\n *\n * @example `var fallbackSupported = Mapillary.isFallbackSupported();`\n */\nexport function isFallbackSupported(): boolean {\n    return support.isBrowser() &&\n        support.isBlobSupported() &&\n        support.isArraySupported() &&\n        support.isFunctionSupported() &&\n        support.isJSONSupported() &&\n        support.isObjectSupported();\n}\n",
     "export {ImageTileLoader} from \"./tiles/ImageTileLoader\";\nexport {ImageTileStore} from \"./tiles/ImageTileStore\";\nexport {TextureProvider} from \"./tiles/TextureProvider\";\nexport {RegionOfInterestCalculator} from \"./tiles/RegionOfInterestCalculator\";\nexport * from \"./tiles/interfaces/interfaces\";\n",
     "export {DOM} from \"./utils/DOM\";\nexport {EventEmitter} from \"./utils/EventEmitter\";\nexport {Func} from \"./utils/Func\";\nexport {Settings} from \"./utils/Settings\";\nexport * from \"./utils/Support\";\nexport {Urls} from \"./utils/Urls\";\n",
     "export {Alignment} from \"./viewer/Alignment\";\nexport {CacheService} from \"./viewer/CacheService\";\nexport {ComponentController} from \"./viewer/ComponentController\";\nexport {Container} from \"./viewer/Container\";\nexport {Observer} from \"./viewer/Observer\";\nexport {ImageSize} from \"./viewer/ImageSize\";\nexport {KeyboardService} from \"./viewer/KeyboardService\";\nexport {LoadingService} from \"./viewer/LoadingService\";\nexport {MouseService} from \"./viewer/MouseService\";\nexport {Navigator} from \"./viewer/Navigator\";\nexport {PlayService} from \"./viewer/PlayService\";\nexport {Projection} from \"./viewer/Projection\";\nexport {SpriteService} from \"./viewer/SpriteService\";\nexport {TouchService} from \"./viewer/TouchService\";\nexport {Viewer} from \"./viewer/Viewer\";\nexport * from \"./viewer/interfaces/interfaces\";\n",
-    "import {catchError, map} from \"rxjs/operators\";\nimport * as falcor from \"falcor\";\n\nimport {Observable, Subscriber} from \"rxjs\";\n\nimport {\n    ICoreNode,\n    IFillNode,\n    IFullNode,\n    ISequence,\n    ModelCreator,\n} from \"../API\";\n\ninterface IImageByKey<T> {\n    imageByKey: { [key: string]: T };\n}\n\ninterface IImageCloseTo<T> {\n    imageCloseTo: { [key: string]: T };\n}\n\ninterface IImagesByH<T> {\n    imagesByH: { [key: string]: { [index: string]: T } };\n}\n\ninterface ISequenceByKey<T> {\n    sequenceByKey: { [sequenceKey: string]: T };\n}\n\ntype APIPath =\n    \"imageByKey\" |\n    \"imageCloseTo\" |\n    \"imagesByH\" |\n    \"imageViewAdd\" |\n    \"sequenceByKey\" |\n    \"sequenceViewAdd\";\n\n/**\n * @class APIv3\n *\n * @classdesc Provides methods for access of API v3.\n */\nexport class APIv3 {\n    private _clientId: string;\n\n    private _model: falcor.Model;\n    private _modelCreator: ModelCreator;\n\n    private _pageCount: number;\n\n    private _pathImageByKey: APIPath;\n    private _pathImageCloseTo: APIPath;\n    private _pathImagesByH: APIPath;\n    private _pathImageViewAdd: APIPath;\n    private _pathSequenceByKey: APIPath;\n    private _pathSequenceViewAdd: APIPath;\n\n    private _propertiesCore: string[];\n    private _propertiesFill: string[];\n    private _propertiesKey: string[];\n    private _propertiesSequence: string[];\n    private _propertiesSpatial: string[];\n    private _propertiesUser: string[];\n\n    /**\n     * Create a new api v3 instance.\n     *\n     * @param {number} clientId - Client id for API requests.\n     * @param {number} [token] - Optional bearer token for API requests of\n     * protected resources.\n     * @param {ModelCreator} [creator] - Optional model creator instance.\n     */\n    constructor(clientId: string, token?: string, creator?: ModelCreator) {\n        this._clientId = clientId;\n\n        this._modelCreator = creator != null ? creator : new ModelCreator();\n        this._model = this._modelCreator.createModel(clientId, token);\n\n        this._pageCount = 999;\n\n        this._pathImageByKey = \"imageByKey\";\n        this._pathImageCloseTo = \"imageCloseTo\";\n        this._pathImagesByH = \"imagesByH\";\n        this._pathImageViewAdd = \"imageViewAdd\";\n        this._pathSequenceByKey = \"sequenceByKey\";\n        this._pathSequenceViewAdd = \"sequenceViewAdd\";\n\n        this._propertiesCore = [\n            \"cl\",\n            \"l\",\n            \"sequence_key\",\n        ];\n\n        this._propertiesFill = [\n            \"captured_at\",\n            \"captured_with_camera_uuid\",\n            \"user\",\n            \"organization_key\",\n            \"private\",\n            \"project\",\n        ];\n\n        this._propertiesKey = [\n            \"key\",\n        ];\n\n        this._propertiesSequence = [\n            \"keys\",\n        ];\n\n        this._propertiesSpatial = [\n            \"atomic_scale\",\n            \"ca\",\n            \"calt\",\n            \"cca\",\n            \"cfocal\",\n            \"ck1\",\n            \"ck2\",\n            \"gpano\",\n            \"height\",\n            \"merge_cc\",\n            \"merge_version\",\n            \"c_rotation\",\n            \"orientation\",\n            \"width\",\n        ];\n\n        this._propertiesUser = [\n            \"username\",\n        ];\n    }\n\n    public imageByKeyFill$(keys: string[]): Observable<{ [key: string]: IFillNode }> {\n        return this._catchInvalidateGet$(\n            this._wrapModelResponse$<falcor.JSONEnvelope<IImageByKey<IFillNode>>>(this._model.get([\n                this._pathImageByKey,\n                keys,\n                this._propertiesKey\n                    .concat(this._propertiesFill)\n                    .concat(this._propertiesSpatial),\n                this._propertiesKey\n                    .concat(this._propertiesUser)])).pipe(\n            map(\n                (value: falcor.JSONEnvelope<IImageByKey<IFillNode>>): { [key: string]: IFillNode } => {\n                    if (!value) {\n                        throw new Error(`Images (${keys.join(\", \")}) could not be found.`);\n                    }\n\n                    return value.json.imageByKey;\n                })),\n            this._pathImageByKey,\n            keys);\n    }\n\n    public imageByKeyFull$(keys: string[]): Observable<{ [key: string]: IFullNode }> {\n        return this._catchInvalidateGet$(\n            this._wrapModelResponse$<falcor.JSONEnvelope<IImageByKey<IFullNode>>>(this._model.get([\n                this._pathImageByKey,\n                keys,\n                this._propertiesKey\n                    .concat(this._propertiesCore)\n                    .concat(this._propertiesFill)\n                    .concat(this._propertiesSpatial),\n                this._propertiesKey\n                    .concat(this._propertiesUser)])).pipe(\n            map(\n                (value: falcor.JSONEnvelope<IImageByKey<IFullNode>>): { [key: string]: IFullNode } => {\n                    if (!value) {\n                        throw new Error(`Images (${keys.join(\", \")}) could not be found.`);\n                    }\n\n                    return value.json.imageByKey;\n                })),\n            this._pathImageByKey,\n            keys);\n    }\n\n    public imageCloseTo$(lat: number, lon: number): Observable<IFullNode> {\n        let lonLat: string = `${lon}:${lat}`;\n        return this._catchInvalidateGet$(\n            this._wrapModelResponse$<falcor.JSONEnvelope<IImageCloseTo<IFullNode>>>(this._model.get([\n                this._pathImageCloseTo,\n                [lonLat],\n                this._propertiesKey\n                    .concat(this._propertiesCore)\n                    .concat(this._propertiesFill)\n                    .concat(this._propertiesSpatial),\n                this._propertiesKey\n                    .concat(this._propertiesUser)])).pipe(\n            map(\n                (value: falcor.JSONEnvelope<IImageCloseTo<IFullNode>>): IFullNode => {\n                    return value != null ? value.json.imageCloseTo[lonLat] : null;\n                })),\n            this._pathImageCloseTo,\n            [lonLat]);\n    }\n\n    public imagesByH$(hs: string[]): Observable<{ [h: string]: { [index: string]: ICoreNode } }> {\n        return this._catchInvalidateGet$(\n            this._wrapModelResponse$<falcor.JSONEnvelope<IImagesByH<ICoreNode>>>(this._model.get([\n                this._pathImagesByH,\n                hs,\n                { from: 0, to: this._pageCount },\n                this._propertiesKey\n                    .concat(this._propertiesCore)])).pipe(\n            map(\n                (value: falcor.JSONEnvelope<IImagesByH<ICoreNode>>): { [h: string]: { [index: string]: ICoreNode } } => {\n                    if (!value) {\n                        value = { json: { imagesByH: {} } };\n                        for (let h of hs) {\n                            value.json.imagesByH[h] = {};\n                            for (let i: number = 0; i <= this._pageCount; i++) {\n                                value.json.imagesByH[h][i] = null;\n                            }\n                        }\n                    }\n\n                    return value.json.imagesByH;\n                })),\n            this._pathImagesByH,\n            hs);\n    }\n\n    public imageViewAdd$(keys: string[]): Observable<void> {\n        return this._catchInvalidateCall$(\n            this._wrapCallModelResponse$(\n                this._model.call(\n                    [this._pathImageViewAdd],\n                    [keys])),\n            this._pathImageViewAdd,\n            keys);\n    }\n\n    public invalidateImageByKey(keys: string[]): void {\n        this._invalidateGet(this._pathImageByKey, keys);\n    }\n\n    public invalidateImagesByH(hs: string[]): void {\n        this._invalidateGet(this._pathImagesByH, hs);\n    }\n\n    public invalidateSequenceByKey(sKeys: string[]): void {\n        this._invalidateGet(this._pathSequenceByKey, sKeys);\n    }\n\n    public setToken(token?: string): void {\n        this._model.invalidate([]);\n        this._model = null;\n        this._model = this._modelCreator.createModel(this._clientId, token);\n    }\n\n    public sequenceByKey$(sequenceKeys: string[]): Observable<{ [sequenceKey: string]: ISequence }> {\n        return this._catchInvalidateGet$(\n            this._wrapModelResponse$<falcor.JSONEnvelope<ISequenceByKey<ISequence>>>(this._model.get([\n                this._pathSequenceByKey,\n                sequenceKeys,\n                this._propertiesKey\n                    .concat(this._propertiesSequence)])).pipe(\n            map(\n                (value: falcor.JSONEnvelope<ISequenceByKey<ISequence>>): { [sequenceKey: string]: ISequence } => {\n                    if (!value) {\n                        value = { json: { sequenceByKey: {} } };\n                    }\n\n                    for (const sequenceKey of sequenceKeys) {\n                        if (!(sequenceKey in value.json.sequenceByKey)) {\n                            console.warn(`Sequence data missing (${sequenceKey})`);\n\n                            value.json.sequenceByKey[sequenceKey] = { key: sequenceKey, keys: [] };\n                        }\n                    }\n\n                    return value.json.sequenceByKey;\n                })),\n            this._pathSequenceByKey,\n            sequenceKeys);\n    }\n\n    public sequenceViewAdd$(sequenceKeys: string[]): Observable<void> {\n        return this._catchInvalidateCall$(\n            this._wrapCallModelResponse$(\n                this._model.call(\n                    [this._pathSequenceViewAdd],\n                    [sequenceKeys])),\n            this._pathSequenceViewAdd,\n            sequenceKeys);\n    }\n\n    public get clientId(): string {\n        return this._clientId;\n    }\n\n    private _catchInvalidateGet$<TResult>(observable: Observable<TResult>, path: APIPath, paths: string[]): Observable<TResult> {\n        return observable.pipe(\n            catchError(\n                (error: Error): Observable<TResult> => {\n                    this._invalidateGet(path, paths);\n\n                    throw error;\n                }));\n    }\n\n    private _catchInvalidateCall$<TResult>(observable: Observable<TResult>, path: APIPath, paths: string[]): Observable<TResult> {\n        return observable.pipe(\n            catchError(\n                (error: Error): Observable<TResult> => {\n                    this._invalidateCall(path, paths);\n\n                    throw error;\n                }));\n    }\n\n    private _invalidateGet(path: APIPath, paths: string[]): void {\n        this._model.invalidate([path, paths]);\n    }\n\n    private _invalidateCall(path: APIPath, paths: string[]): void {\n        this._model.invalidate([path], [paths]);\n    }\n\n    private _wrapModelResponse$<T>(modelResponse: falcor.ModelResponse<T>): Observable<T> {\n        return Observable\n            .create(\n                (subscriber: Subscriber<T>): void => {\n                    modelResponse\n                        .then(\n                            (value: T): void => {\n                                subscriber.next(value);\n                                subscriber.complete();\n                            },\n                            (error: Error): void => {\n                                subscriber.error(error);\n                            });\n                });\n    }\n\n    private _wrapCallModelResponse$<T>(modelResponse: falcor.ModelResponse<falcor.JSONEnvelope<T>>): Observable<T> {\n        return this._wrapModelResponse$(modelResponse).pipe(\n            map<falcor.JSONEnvelope<T>, T>(\n                (value: falcor.JSONEnvelope<T>): T => {\n                    return;\n                }));\n    }\n}\n\nexport default APIv3;\n",
+    "import {catchError, map} from \"rxjs/operators\";\nimport * as falcor from \"falcor\";\n\nimport {Observable, Subscriber} from \"rxjs\";\n\nimport {\n    ICoreNode,\n    IFillNode,\n    IFullNode,\n    ISequence,\n    ModelCreator,\n} from \"../API\";\n\ninterface IImageByKey<T> {\n    imageByKey: { [key: string]: T };\n}\n\ninterface IImageCloseTo<T> {\n    imageCloseTo: { [key: string]: T };\n}\n\ninterface IImagesByH<T> {\n    imagesByH: { [key: string]: { [index: string]: T } };\n}\n\ninterface ISequenceByKey<T> {\n    sequenceByKey: { [sequenceKey: string]: T };\n}\n\ntype APIPath =\n    \"imageByKey\" |\n    \"imageCloseTo\" |\n    \"imagesByH\" |\n    \"imageViewAdd\" |\n    \"sequenceByKey\" |\n    \"sequenceViewAdd\";\n\n/**\n * @class APIv3\n *\n * @classdesc Provides methods for access of API v3.\n */\nexport class APIv3 {\n    private _clientId: string;\n\n    private _model: falcor.Model;\n    private _modelCreator: ModelCreator;\n\n    private _pageCount: number;\n\n    private _pathImageByKey: APIPath;\n    private _pathImageCloseTo: APIPath;\n    private _pathImagesByH: APIPath;\n    private _pathImageViewAdd: APIPath;\n    private _pathSequenceByKey: APIPath;\n    private _pathSequenceViewAdd: APIPath;\n\n    private _propertiesCore: string[];\n    private _propertiesFill: string[];\n    private _propertiesKey: string[];\n    private _propertiesSequence: string[];\n    private _propertiesSpatial: string[];\n    private _propertiesUser: string[];\n\n    /**\n     * Create a new api v3 instance.\n     *\n     * @param {number} clientId - Client id for API requests.\n     * @param {number} [token] - Optional bearer token for API requests of\n     * protected resources.\n     * @param {ModelCreator} [creator] - Optional model creator instance.\n     */\n    constructor(clientId: string, token?: string, creator?: ModelCreator) {\n        this._clientId = clientId;\n\n        this._modelCreator = creator != null ? creator : new ModelCreator();\n        this._model = this._modelCreator.createModel(clientId, token);\n\n        this._pageCount = 999;\n\n        this._pathImageByKey = \"imageByKey\";\n        this._pathImageCloseTo = \"imageCloseTo\";\n        this._pathImagesByH = \"imagesByH\";\n        this._pathImageViewAdd = \"imageViewAdd\";\n        this._pathSequenceByKey = \"sequenceByKey\";\n        this._pathSequenceViewAdd = \"sequenceViewAdd\";\n\n        this._propertiesCore = [\n            \"cl\",\n            \"l\",\n            \"sequence_key\",\n        ];\n\n        this._propertiesFill = [\n            \"captured_at\",\n            \"captured_with_camera_uuid\",\n            \"user\",\n            \"organization_key\",\n            \"private\",\n            \"project\",\n        ];\n\n        this._propertiesKey = [\n            \"key\",\n        ];\n\n        this._propertiesSequence = [\n            \"keys\",\n        ];\n\n        this._propertiesSpatial = [\n            \"atomic_scale\",\n            \"cluster_key\",\n            \"c_rotation\",\n            \"ca\",\n            \"calt\",\n            \"camera_projection_type\",\n            \"cca\",\n            \"cfocal\",\n            \"ck1\",\n            \"ck2\",\n            \"gpano\",\n            \"height\",\n            \"merge_cc\",\n            \"merge_version\",\n            \"orientation\",\n            \"width\",\n        ];\n\n        this._propertiesUser = [\n            \"username\",\n        ];\n    }\n\n    public imageByKeyFill$(keys: string[]): Observable<{ [key: string]: IFillNode }> {\n        return this._catchInvalidateGet$(\n            this._wrapModelResponse$<falcor.JSONEnvelope<IImageByKey<IFillNode>>>(this._model.get([\n                this._pathImageByKey,\n                keys,\n                this._propertiesKey\n                    .concat(this._propertiesFill)\n                    .concat(this._propertiesSpatial),\n                this._propertiesKey\n                    .concat(this._propertiesUser)])).pipe(\n            map(\n                (value: falcor.JSONEnvelope<IImageByKey<IFillNode>>): { [key: string]: IFillNode } => {\n                    if (!value) {\n                        throw new Error(`Images (${keys.join(\", \")}) could not be found.`);\n                    }\n\n                    return value.json.imageByKey;\n                })),\n            this._pathImageByKey,\n            keys);\n    }\n\n    public imageByKeyFull$(keys: string[]): Observable<{ [key: string]: IFullNode }> {\n        return this._catchInvalidateGet$(\n            this._wrapModelResponse$<falcor.JSONEnvelope<IImageByKey<IFullNode>>>(this._model.get([\n                this._pathImageByKey,\n                keys,\n                this._propertiesKey\n                    .concat(this._propertiesCore)\n                    .concat(this._propertiesFill)\n                    .concat(this._propertiesSpatial),\n                this._propertiesKey\n                    .concat(this._propertiesUser)])).pipe(\n            map(\n                (value: falcor.JSONEnvelope<IImageByKey<IFullNode>>): { [key: string]: IFullNode } => {\n                    if (!value) {\n                        throw new Error(`Images (${keys.join(\", \")}) could not be found.`);\n                    }\n\n                    return value.json.imageByKey;\n                })),\n            this._pathImageByKey,\n            keys);\n    }\n\n    public imageCloseTo$(lat: number, lon: number): Observable<IFullNode> {\n        let lonLat: string = `${lon}:${lat}`;\n        return this._catchInvalidateGet$(\n            this._wrapModelResponse$<falcor.JSONEnvelope<IImageCloseTo<IFullNode>>>(this._model.get([\n                this._pathImageCloseTo,\n                [lonLat],\n                this._propertiesKey\n                    .concat(this._propertiesCore)\n                    .concat(this._propertiesFill)\n                    .concat(this._propertiesSpatial),\n                this._propertiesKey\n                    .concat(this._propertiesUser)])).pipe(\n            map(\n                (value: falcor.JSONEnvelope<IImageCloseTo<IFullNode>>): IFullNode => {\n                    return value != null ? value.json.imageCloseTo[lonLat] : null;\n                })),\n            this._pathImageCloseTo,\n            [lonLat]);\n    }\n\n    public imagesByH$(hs: string[]): Observable<{ [h: string]: { [index: string]: ICoreNode } }> {\n        return this._catchInvalidateGet$(\n            this._wrapModelResponse$<falcor.JSONEnvelope<IImagesByH<ICoreNode>>>(this._model.get([\n                this._pathImagesByH,\n                hs,\n                { from: 0, to: this._pageCount },\n                this._propertiesKey\n                    .concat(this._propertiesCore)])).pipe(\n            map(\n                (value: falcor.JSONEnvelope<IImagesByH<ICoreNode>>): { [h: string]: { [index: string]: ICoreNode } } => {\n                    if (!value) {\n                        value = { json: { imagesByH: {} } };\n                        for (let h of hs) {\n                            value.json.imagesByH[h] = {};\n                            for (let i: number = 0; i <= this._pageCount; i++) {\n                                value.json.imagesByH[h][i] = null;\n                            }\n                        }\n                    }\n\n                    return value.json.imagesByH;\n                })),\n            this._pathImagesByH,\n            hs);\n    }\n\n    public imageViewAdd$(keys: string[]): Observable<void> {\n        return this._catchInvalidateCall$(\n            this._wrapCallModelResponse$(\n                this._model.call(\n                    [this._pathImageViewAdd],\n                    [keys])),\n            this._pathImageViewAdd,\n            keys);\n    }\n\n    public invalidateImageByKey(keys: string[]): void {\n        this._invalidateGet(this._pathImageByKey, keys);\n    }\n\n    public invalidateImagesByH(hs: string[]): void {\n        this._invalidateGet(this._pathImagesByH, hs);\n    }\n\n    public invalidateSequenceByKey(sKeys: string[]): void {\n        this._invalidateGet(this._pathSequenceByKey, sKeys);\n    }\n\n    public setToken(token?: string): void {\n        this._model.invalidate([]);\n        this._model = null;\n        this._model = this._modelCreator.createModel(this._clientId, token);\n    }\n\n    public sequenceByKey$(sequenceKeys: string[]): Observable<{ [sequenceKey: string]: ISequence }> {\n        return this._catchInvalidateGet$(\n            this._wrapModelResponse$<falcor.JSONEnvelope<ISequenceByKey<ISequence>>>(this._model.get([\n                this._pathSequenceByKey,\n                sequenceKeys,\n                this._propertiesKey\n                    .concat(this._propertiesSequence)])).pipe(\n            map(\n                (value: falcor.JSONEnvelope<ISequenceByKey<ISequence>>): { [sequenceKey: string]: ISequence } => {\n                    if (!value) {\n                        value = { json: { sequenceByKey: {} } };\n                    }\n\n                    for (const sequenceKey of sequenceKeys) {\n                        if (!(sequenceKey in value.json.sequenceByKey)) {\n                            console.warn(`Sequence data missing (${sequenceKey})`);\n\n                            value.json.sequenceByKey[sequenceKey] = { key: sequenceKey, keys: [] };\n                        }\n                    }\n\n                    return value.json.sequenceByKey;\n                })),\n            this._pathSequenceByKey,\n            sequenceKeys);\n    }\n\n    public sequenceViewAdd$(sequenceKeys: string[]): Observable<void> {\n        return this._catchInvalidateCall$(\n            this._wrapCallModelResponse$(\n                this._model.call(\n                    [this._pathSequenceViewAdd],\n                    [sequenceKeys])),\n            this._pathSequenceViewAdd,\n            sequenceKeys);\n    }\n\n    public get clientId(): string {\n        return this._clientId;\n    }\n\n    private _catchInvalidateGet$<TResult>(observable: Observable<TResult>, path: APIPath, paths: string[]): Observable<TResult> {\n        return observable.pipe(\n            catchError(\n                (error: Error): Observable<TResult> => {\n                    this._invalidateGet(path, paths);\n\n                    throw error;\n                }));\n    }\n\n    private _catchInvalidateCall$<TResult>(observable: Observable<TResult>, path: APIPath, paths: string[]): Observable<TResult> {\n        return observable.pipe(\n            catchError(\n                (error: Error): Observable<TResult> => {\n                    this._invalidateCall(path, paths);\n\n                    throw error;\n                }));\n    }\n\n    private _invalidateGet(path: APIPath, paths: string[]): void {\n        this._model.invalidate([path, paths]);\n    }\n\n    private _invalidateCall(path: APIPath, paths: string[]): void {\n        this._model.invalidate([path], [paths]);\n    }\n\n    private _wrapModelResponse$<T>(modelResponse: falcor.ModelResponse<T>): Observable<T> {\n        return Observable\n            .create(\n                (subscriber: Subscriber<T>): void => {\n                    modelResponse\n                        .then(\n                            (value: T): void => {\n                                subscriber.next(value);\n                                subscriber.complete();\n                            },\n                            (error: Error): void => {\n                                subscriber.error(error);\n                            });\n                });\n    }\n\n    private _wrapCallModelResponse$<T>(modelResponse: falcor.ModelResponse<falcor.JSONEnvelope<T>>): Observable<T> {\n        return this._wrapModelResponse$(modelResponse).pipe(\n            map<falcor.JSONEnvelope<T>, T>(\n                (value: falcor.JSONEnvelope<T>): T => {\n                    return;\n                }));\n    }\n}\n\nexport default APIv3;\n",
     "import * as falcor from \"falcor\";\nimport XmlHttpSource from \"falcor-http-datasource\";\n\nimport {Urls} from \"../Utils\";\n\ntype HttpDataSourceConfiguration = {\n    crossDomain: boolean;\n    withCredentials: boolean;\n    headers?: { [key: string]: string } ;\n};\n\n/**\n * @class ModelCreator\n *\n * @classdesc Creates API models.\n */\nexport class ModelCreator {\n    /**\n     * Creates a Falcor model.\n     *\n     * @description Max cache size will be set to 16 MB. Authorization\n     * header will be added if bearer token is supplied.\n     *\n     * @param {number} clientId - Client id for API requests.\n     * @param {number} [token] - Optional bearer token for API requests of\n     * protected resources.\n     * @returns {falcor.Model} Falcor model for HTTP requests.\n     */\n    public createModel(clientId: string, token?: string): falcor.Model {\n        const configuration: HttpDataSourceConfiguration = {\n            crossDomain: true,\n            withCredentials: false,\n        };\n\n        if (token != null) {\n            configuration.headers = { \"Authorization\": `Bearer ${token}` };\n        }\n\n        return new falcor.Model({\n            maxSize: 16 * 1024 * 1024,\n            source: new XmlHttpSource(Urls.falcorModel(clientId), configuration),\n        });\n    }\n}\n\nexport default ModelCreator;\n",
     "import {combineLatest as observableCombineLatest, Observable, Subscription} from \"rxjs\";\n\nimport {map} from \"rxjs/operators\";\nimport * as vd from \"virtual-dom\";\n\nimport {\n    ComponentService,\n    Component,\n    IComponentConfiguration,\n} from \"../Component\";\nimport {Node} from \"../Graph\";\nimport {\n    IVNodeHash,\n    ISize,\n} from \"../Render\";\nimport {Urls} from \"../Utils\";\nimport {\n    Container,\n    Navigator,\n} from \"../Viewer\";\n\nexport class AttributionComponent extends Component<IComponentConfiguration> {\n    public static componentName: string = \"attribution\";\n    private _disposable: Subscription;\n\n    constructor(name: string, container: Container, navigator: Navigator) {\n        super(name, container, navigator);\n    }\n\n    protected _activate(): void {\n        this._disposable = observableCombineLatest(\n                this._navigator.stateService.currentNode$,\n                this._container.renderService.size$).pipe(\n            map(\n                ([node, size]: [Node, ISize]): IVNodeHash => {\n                    return {\n                        name: this._name,\n                        vnode: this._getAttributionNode(node.username, node.key, node.capturedAt, size.width),\n                    };\n                }))\n            .subscribe(this._container.domRenderer.render$);\n    }\n\n    protected _deactivate(): void {\n        this._disposable.unsubscribe();\n    }\n\n    protected _getDefaultConfiguration(): IComponentConfiguration {\n        return {};\n    }\n\n    private _getAttributionNode(username: string, key: string, capturedAt: number, width: number): vd.VNode {\n        const compact: boolean = width <= 640;\n\n        const mapillaryIcon: vd.VNode = vd.h(\"div.AttributionMapillaryLogo\", []);\n        const mapillaryLink: vd.VNode = vd.h(\n            \"a.AttributionIconContainer\",\n            { href: Urls.explore, target: \"_blank\" },\n            [mapillaryIcon]);\n\n        const imageBy: string = compact ? `${username}` : `image by ${username}`;\n        const imageByContent: vd.VNode = vd.h(\"div.AttributionUsername\", { textContent: imageBy }, []);\n\n        const date: string[] = new Date(capturedAt).toDateString().split(\" \");\n        const formatted: string = (date.length > 3 ?\n            compact ?\n                [date[3]] :\n                [date[1], date[2] + \",\", date[3]] :\n            date).join(\" \");\n\n        const dateContent: vd.VNode = vd.h(\"div.AttributionDate\", { textContent: formatted }, []);\n\n        const imageLink: vd.VNode =\n            vd.h(\n                \"a.AttributionImageContainer\",\n                { href: Urls.exporeImage(key), target: \"_blank\" },\n                [imageByContent, dateContent]);\n\n        const compactClass: string = compact ? \".AttributionCompact\" : \"\";\n\n        return vd.h(\"div.AttributionContainer\" + compactClass, {}, [mapillaryLink, imageLink]);\n    }\n    }\n\nComponentService.register(AttributionComponent);\nexport default AttributionComponent;\n",
     "import * as vd from \"virtual-dom\";\n\nimport {Container, Navigator} from \"../Viewer\";\n\nimport {ComponentService, Component, IComponentConfiguration} from \"../Component\";\n\nexport class BackgroundComponent extends Component<IComponentConfiguration> {\n    public static componentName: string = \"background\";\n\n    constructor(name: string, container: Container, navigator: Navigator) {\n        super(name, container, navigator);\n    }\n\n    protected _activate(): void {\n        this._container.domRenderer.render$\n            .next({name: this._name, vnode: this._getBackgroundNode(\"The viewer can't display the given image.\")});\n    }\n\n    protected _deactivate(): void {\n        return;\n    }\n\n    protected _getDefaultConfiguration(): IComponentConfiguration {\n        return {};\n    }\n\n    private _getBackgroundNode(notice: string): vd.VNode {\n        // todo: add condition for when to display the DOM node\n        return vd.h(\"div.BackgroundWrapper\", {}, [\n            vd.h(\"p\", {textContent: notice}, []),\n        ]);\n    }\n}\n\nComponentService.register(BackgroundComponent);\nexport default BackgroundComponent;\n",
-    "import {distinctUntilChanged, map} from \"rxjs/operators\";\nimport * as vd from \"virtual-dom\";\n\nimport {Observable, Subscription} from \"rxjs\";\n\nimport {\n    Component,\n    ComponentService,\n    IComponentConfiguration,\n} from \"../Component\";\nimport {\n    Spatial,\n    Transform,\n} from \"../Geo\";\nimport {Node} from \"../Graph\";\nimport {\n    IVNodeHash,\n    RenderCamera,\n} from \"../Render\";\nimport {IFrame} from \"../State\";\nimport {\n    Container,\n    Navigator,\n} from \"../Viewer\";\n\nexport class BearingComponent extends Component<IComponentConfiguration> {\n    public static componentName: string = \"bearing\";\n\n    private _spatial: Spatial;\n    private _svgNamespace: string;\n    private _distinctThreshold: number;\n\n    private _renderSubscription: Subscription;\n\n    constructor(name: string, container: Container, navigator: Navigator) {\n        super(name, container, navigator);\n\n        this._spatial = new Spatial();\n        this._svgNamespace = \"http://www.w3.org/2000/svg\";\n        this._distinctThreshold = Math.PI / 360;\n    }\n\n    protected _activate(): void {\n        let cameraBearingFov$: Observable<[number, number]> = this._container.renderService.renderCamera$.pipe(\n            map(\n                (rc: RenderCamera): [number, number] => {\n                    let vFov: number = this._spatial.degToRad(rc.perspective.fov);\n                    let hFov: number = rc.perspective.aspect === Number.POSITIVE_INFINITY ?\n                        Math.PI :\n                        Math.atan(rc.perspective.aspect * Math.tan(0.5 * vFov)) * 2;\n\n                    return [this._spatial.azimuthalToBearing(rc.rotation.phi), hFov];\n                }),\n            distinctUntilChanged(\n                (a1: [number, number], a2: [number, number]): boolean => {\n                    return Math.abs(a2[0] - a1[0]) < this._distinctThreshold &&\n                        Math.abs(a2[1] - a1[1]) < this._distinctThreshold;\n                }));\n\n        this._renderSubscription = cameraBearingFov$.pipe(\n            map(\n                ([bearing, fov]: [number, number]): IVNodeHash => {\n                    const background: vd.VNode = vd.h(\"div.BearingIndicatorBackground\", {}, []);\n                    const backgroundCircle: vd.VNode = vd.h(\"div.BearingIndicatorBackgroundCircle\", {}, []);\n                    const north: vd.VNode = this._createNorth(bearing);\n                    const cameraSector: vd.VNode = this._createCircleSectorCompass(\n                            this._createCircleSector(Math.max(Math.PI / 20, fov), \"#FFF\"));\n\n                    return {\n                        name: this._name,\n                        vnode: vd.h(\n                            \"div.BearingIndicatorContainer\",\n                            { oncontextmenu: (event: MouseEvent): void => { event.preventDefault(); } },\n                            [\n                                background,\n                                backgroundCircle,\n                                north,\n                                cameraSector,\n                            ]),\n                    };\n                }))\n            .subscribe(this._container.domRenderer.render$);\n    }\n\n    protected _deactivate(): void {\n        this._renderSubscription.unsubscribe();\n    }\n\n    protected _getDefaultConfiguration(): IComponentConfiguration {\n        return {};\n    }\n\n    private _createCircleSectorCompass(cameraSector: vd.VNode): vd.VNode {\n        let group: vd.VNode =\n            vd.h(\n                \"g\",\n                {\n                    attributes: { transform: \"translate(1,1)\" },\n                    namespace: this._svgNamespace,\n                },\n                [cameraSector]);\n\n        let svg: vd.VNode =\n            vd.h(\n                \"svg\",\n                {\n                    attributes: { viewBox: \"0 0 2 2\" },\n                    namespace: this._svgNamespace,\n                    style: {\n                        height: \"30px\",\n                        left: \"4px\",\n                        position: \"absolute\",\n                        top: \"4px\",\n                        width: \"30px\",\n                    },\n                },\n                [group]);\n\n        return svg;\n    }\n\n    private _createCircleSector(fov: number, fill: string): vd.VNode {\n        if (fov > 2 * Math.PI - Math.PI / 90) {\n            return vd.h(\n            \"circle\",\n            {\n                attributes: { cx: \"0\", cy: \"0\", fill: fill, r: \"1\" },\n                namespace: this._svgNamespace,\n            },\n            []);\n        }\n\n        let arcStart: number = -Math.PI / 2 - fov / 2;\n        let arcEnd: number = arcStart + fov;\n\n        let startX: number = Math.cos(arcStart);\n        let startY: number = Math.sin(arcStart);\n\n        let endX: number = Math.cos(arcEnd);\n        let endY: number = Math.sin(arcEnd);\n\n        let largeArc: number = fov >= Math.PI ? 1 : 0;\n\n        let description: string = `M 0 0 ${startX} ${startY} A 1 1 0 ${largeArc} 1 ${endX} ${endY}`;\n\n        return vd.h(\n            \"path\",\n            {\n                attributes: { d: description, fill: fill },\n                namespace: this._svgNamespace,\n            },\n            []);\n    }\n\n    private _createNorth(bearing: number): vd.VNode {\n        const north: vd.VNode = vd.h(\"div.BearingNorth\", []);\n        const container: vd.VNode = vd.h(\n            \"div.BearingNorthContainer\",\n            { style: { transform: `rotateZ(${-bearing * 180 / Math.PI}deg)` } },\n            [north]);\n\n        return container;\n    }\n}\n\nComponentService.register(BearingComponent);\nexport default BearingComponent;\n",
+    "import {distinctUntilChanged, map, switchMap, takeWhile, scan, skip} from \"rxjs/operators\";\nimport * as vd from \"virtual-dom\";\nimport * as UnitBezier from \"@mapbox/unitbezier\";\n\nimport {\n    Observable,\n    Subscription,\n    combineLatest as observableCombineLatest,\n    Subject,\n} from \"rxjs\";\n\nimport {\n    Component,\n    ComponentService,\n} from \"../Component\";\nimport {\n    Spatial, Transform, Geo,\n} from \"../Geo\";\nimport {Node} from \"../Graph\";\nimport {\n    IVNodeHash,\n    RenderCamera,\n} from \"../Render\";\nimport {\n    Container,\n    Navigator,\n} from \"../Viewer\";\nimport { IFrame } from \"../state/interfaces/IFrame\";\nimport ViewportCoords from \"../geo/ViewportCoords\";\nimport IBearingConfiguration from \"./interfaces/IBearingConfiguration\";\nimport ISize from \"../render/interfaces/ISize\";\nimport ComponentSize from \"./utils/ComponentSize\";\n\ntype NodeFov = [number, number];\n\ntype NodeBearingFov = [number, number, number];\n\ntype NodeFovState = {\n    alpha: number,\n    curr: NodeFov,\n    prev: NodeFov,\n};\n\ninterface INodeFovOperation {\n    (state: NodeFovState): NodeFovState;\n}\n\n/**\n * @class BearingComponent\n *\n * @classdesc Component for indicating bearing and field of view.\n *\n * @example\n * ```\n * var viewer = new Mapillary.Viewer(\n *     \"<element-id>\",\n *     \"<client-id>\",\n *     \"<my key>\");\n *\n * var bearingComponent = viewer.getComponent(\"bearing\");\n * bearingComponent.configure({ size: Mapillary.ComponentSize.Small });\n * ```\n */\nexport class BearingComponent extends Component<IBearingConfiguration> {\n    public static componentName: string = \"bearing\";\n\n    private _spatial: Spatial;\n    private _viewportCoords: ViewportCoords;\n\n    private _svgNamespace: string;\n    private _distinctThreshold: number;\n\n    private _animationSpeed: number;\n    private _unitBezier: UnitBezier;\n\n    private _renderSubscription: Subscription;\n    private _fovSubscription: Subscription;\n    private _fovAnimationSubscription: Subscription;\n\n    constructor(name: string, container: Container, navigator: Navigator) {\n        super(name, container, navigator);\n\n        this._spatial = new Spatial();\n        this._viewportCoords = new ViewportCoords();\n\n        this._svgNamespace = \"http://www.w3.org/2000/svg\";\n        this._distinctThreshold = Math.PI / 360;\n\n        this._animationSpeed = 0.075;\n        this._unitBezier = new UnitBezier(0.74, 0.67, 0.38, 0.96);\n    }\n\n    protected _activate(): void {\n        const cameraBearingFov$: Observable<[number, number]> = this._container.renderService.renderCamera$.pipe(\n            map(\n                (rc: RenderCamera): [number, number] => {\n                    let vFov: number = this._spatial.degToRad(rc.perspective.fov);\n                    let hFov: number = rc.perspective.aspect === Number.POSITIVE_INFINITY ?\n                        Math.PI :\n                        Math.atan(rc.perspective.aspect * Math.tan(0.5 * vFov)) * 2;\n\n                    return [this._spatial.azimuthalToBearing(rc.rotation.phi), hFov];\n                }),\n            distinctUntilChanged(\n                (a1: [number, number], a2: [number, number]): boolean => {\n                    return Math.abs(a2[0] - a1[0]) < this._distinctThreshold &&\n                        Math.abs(a2[1] - a1[1]) < this._distinctThreshold;\n                }));\n\n        const nodeFov$: Observable<NodeFov> = observableCombineLatest(\n            this._navigator.stateService.currentState$.pipe(\n                distinctUntilChanged(\n                    undefined,\n                    (frame: IFrame): string => {\n                        return frame.state.currentNode.key;\n                    })),\n            this._navigator.panService.panNodes$).pipe(\n                map(\n                    ([frame, panNodes]: [IFrame, [Node, Transform, number][]]): NodeFov => {\n                        const node: Node = frame.state.currentNode;\n                        const transform: Transform = frame.state.currentTransform;\n\n                        if (node.pano) {\n                            let panoHFov: number = 2 * Math.PI * node.gpano.CroppedAreaImageWidthPixels / node.gpano.FullPanoWidthPixels;\n\n                            return [panoHFov / 2, panoHFov / 2];\n                        }\n\n                        const currentProjectedPoints: number[][] = this._computeProjectedPoints(transform);\n                        const hFov: number = this._spatial.degToRad(this._computeHorizontalFov(currentProjectedPoints));\n\n                        let hFovLeft: number = hFov / 2;\n                        let hFovRight: number = hFov / 2;\n\n                        for (const [n, , f] of panNodes) {\n                            const diff: number = this._spatial.wrap(n.ca - node.ca, -180, 180);\n                            if (diff < 0) {\n                                hFovLeft = this._spatial.degToRad(Math.abs(diff)) + f / 2;\n                            } else {\n                                hFovRight = this._spatial.degToRad(Math.abs(diff)) + f / 2;\n                            }\n                        }\n\n                        return [hFovLeft, hFovRight];\n                    }),\n                distinctUntilChanged(\n                    (\n                        [hFovLeft1, hFovRight1]: NodeFov,\n                        [hFovLeft2, hFovRight2]: NodeFov): boolean => {\n\n                        return Math.abs(hFovLeft2 - hFovLeft1) < this._distinctThreshold &&\n                            Math.abs(hFovRight2 - hFovRight1) < this._distinctThreshold;\n                    }));\n\n        const offset$: Observable<number> = observableCombineLatest(\n            this._navigator.stateService.currentState$.pipe(\n                distinctUntilChanged(\n                    undefined,\n                    (frame: IFrame): string => {\n                        return frame.state.currentNode.key;\n                    })),\n            this._container.renderService.bearing$).pipe(\n                map(\n                    ([frame, bearing]: [IFrame, number]): number => {\n                        const offset: number = this._spatial.degToRad(frame.state.currentNode.ca - bearing);\n\n                        return offset;\n                    }));\n\n        const nodeFovOperation$: Subject<INodeFovOperation> = new Subject<INodeFovOperation>();\n\n        const smoothNodeFov$: Observable<NodeFov> = nodeFovOperation$.pipe(\n            scan(\n                (state: NodeFovState, operation: INodeFovOperation): NodeFovState => {\n                    return operation(state);\n                },\n                { alpha: 0, curr: [0, 0, 0], prev: [0, 0, 0] }),\n            map(\n                (state: NodeFovState): NodeFov => {\n                    const alpha: number = this._unitBezier.solve(state.alpha);\n                    const curr: NodeFov = state.curr;\n                    const prev: NodeFov = state.prev;\n\n                    return [\n                        this._interpolate(prev[0], curr[0], alpha),\n                        this._interpolate(prev[1], curr[1], alpha),\n                    ];\n                }));\n\n        this._fovSubscription = nodeFov$.pipe(\n            map(\n                (nbf: NodeFov): INodeFovOperation => {\n                    return (state: NodeFovState): NodeFovState => {\n                        const a: number = this._unitBezier.solve(state.alpha);\n                        const c: NodeFov = state.curr;\n                        const p: NodeFov = state.prev;\n\n                        const prev: NodeFov = [\n                            this._interpolate(p[0], c[0], a),\n                            this._interpolate(p[1], c[1], a),\n                        ];\n\n                        const curr: NodeFov = <NodeFov>nbf.slice();\n\n                        return {\n                            alpha: 0,\n                            curr: curr,\n                            prev: prev,\n                        };\n                    };\n                }))\n            .subscribe(nodeFovOperation$);\n\n        this._fovAnimationSubscription = nodeFov$.pipe(\n            switchMap(\n                (): Observable<number> => {\n                    return this._container.renderService.renderCameraFrame$.pipe(\n                        skip(1),\n                        scan<RenderCamera, number>(\n                            (alpha: number): number => {\n                                return alpha + this._animationSpeed;\n                            },\n                            0),\n                        takeWhile(\n                            (alpha: number): boolean => {\n                                return alpha <= 1 + this._animationSpeed;\n                            }),\n                        map(\n                            (alpha: number): number => {\n                                return Math.min(alpha, 1);\n                            }));\n                }),\n            map(\n                (alpha: number): INodeFovOperation => {\n                    return (nbfState: NodeFovState): NodeFovState => {\n                        return {\n                            alpha: alpha,\n                            curr: <NodeFov>nbfState.curr.slice(),\n                            prev: <NodeFov>nbfState.prev.slice(),\n                        };\n                    };\n                }))\n            .subscribe(nodeFovOperation$);\n\n        const nodeBearingFov$: Observable<NodeBearingFov> = observableCombineLatest(\n            offset$,\n            smoothNodeFov$).pipe(\n                map(\n                    ([offset, fov]: [number, NodeFov]): NodeBearingFov => {\n                        return [offset, fov[0], fov[1]];\n                    }));\n\n        this._renderSubscription = observableCombineLatest(\n            cameraBearingFov$,\n            nodeBearingFov$,\n            this._configuration$,\n            this._container.renderService.size$).pipe(\n            map(\n                ([[cb, cf], [no, nfl, nfr], configuration, size]:\n                    [[number, number], [number, number, number], IBearingConfiguration, ISize]): IVNodeHash => {\n\n                    const background: vd.VNode = this._createBackground(cb);\n                    const fovIndicator: vd.VNode = this._createFovIndicator(nfl, nfr, no);\n                    const north: vd.VNode = this._createNorth(cb);\n                    const cameraSector: vd.VNode = this._createCircleSectorCompass(\n                            this._createCircleSector(Math.max(Math.PI / 20, cf), \"#FFF\"));\n\n                    const compact: string = configuration.size === ComponentSize.Small ||\n                        configuration.size === ComponentSize.Automatic && size.width < 640 ?\n                        \".BearingCompact\" : \"\";\n\n                    return {\n                        name: this._name,\n                        vnode: vd.h(\n                            \"div.BearingIndicatorContainer\" + compact,\n                            { oncontextmenu: (event: MouseEvent): void => { event.preventDefault(); } },\n                            [\n                                background,\n                                fovIndicator,\n                                north,\n                                cameraSector,\n                            ]),\n                    };\n                }))\n            .subscribe(this._container.domRenderer.render$);\n    }\n\n    protected _deactivate(): void {\n        this._renderSubscription.unsubscribe();\n        this._fovSubscription.unsubscribe();\n        this._fovAnimationSubscription.unsubscribe();\n    }\n\n    protected _getDefaultConfiguration(): IBearingConfiguration {\n        return { size: ComponentSize.Automatic };\n    }\n\n    private _createFovIndicator(fovLeft: number, fovRigth: number, offset: number): vd.VNode {\n        const arc: vd.VNode = this._createFovArc(fovLeft, fovRigth);\n\n        const group: vd.VNode =\n            vd.h(\n                \"g\",\n                {\n                    attributes: { transform: \"translate(18,18)\" },\n                    namespace: this._svgNamespace,\n                },\n                [arc]);\n\n        const svg: vd.VNode =\n            vd.h(\n                \"svg\",\n                {\n                    attributes: { viewBox: \"0 0 36 36\" },\n                    namespace: this._svgNamespace,\n                    style: {\n                        height: \"36px\",\n                        left: \"2px\",\n                        position: \"absolute\",\n                        top: \"2px\",\n                        transform: `rotateZ(${this._spatial.radToDeg(offset)}deg)`,\n                        width: \"36px\",\n                    },\n                },\n                [group]);\n\n        return svg;\n    }\n\n    private _createFovArc(fovLeft: number, fovRigth: number): vd.VNode {\n        const radius: number = 16.75;\n        const strokeWidth: number = 2.5;\n        const fov: number = fovLeft + fovRigth;\n\n        if (fov > 2 * Math.PI - Math.PI / 90) {\n            return vd.h(\n                \"circle\",\n                {\n                    attributes: {\n                        cx: \"0\",\n                        cy: \"0\",\n                        \"fill-opacity\": \"0\",\n                        r: `${radius}`,\n                        stroke: \"#FFF\",\n                        \"stroke-width\":\n                        `${strokeWidth}`,\n                    },\n                    namespace: this._svgNamespace,\n                },\n                []);\n        }\n\n        let arcStart: number = -Math.PI / 2 - fovLeft;\n        let arcEnd: number = arcStart + fov;\n\n        let startX: number = radius * Math.cos(arcStart);\n        let startY: number = radius * Math.sin(arcStart);\n\n        let endX: number = radius * Math.cos(arcEnd);\n        let endY: number = radius * Math.sin(arcEnd);\n\n        let largeArc: number = fov >= Math.PI ? 1 : 0;\n\n        let description: string = `M ${startX} ${startY} A ${radius} ${radius} 0 ${largeArc} 1 ${endX} ${endY}`;\n\n        return vd.h(\n            \"path\",\n            {\n                attributes: {\n                    d: description,\n                    \"fill-opacity\": \"0\",\n                    stroke: \"#FFF\",\n                    \"stroke-width\": `${strokeWidth}`,\n                },\n                namespace: this._svgNamespace,\n            },\n            []);\n    }\n\n    private _createCircleSectorCompass(cameraSector: vd.VNode): vd.VNode {\n        let group: vd.VNode =\n            vd.h(\n                \"g\",\n                {\n                    attributes: { transform: \"translate(1,1)\" },\n                    namespace: this._svgNamespace,\n                },\n                [cameraSector]);\n\n        let svg: vd.VNode =\n            vd.h(\n                \"svg\",\n                {\n                    attributes: { viewBox: \"0 0 2 2\" },\n                    namespace: this._svgNamespace,\n                    style: {\n                        height: \"26px\",\n                        left: \"7px\",\n                        position: \"absolute\",\n                        top: \"7px\",\n                        width: \"26px\",\n                    },\n                },\n                [group]);\n\n        return svg;\n    }\n\n    private _createCircleSector(fov: number, fill: string): vd.VNode {\n        if (fov > 2 * Math.PI - Math.PI / 90) {\n            return vd.h(\n            \"circle\",\n            {\n                attributes: { cx: \"0\", cy: \"0\", fill: fill, r: \"1\" },\n                namespace: this._svgNamespace,\n            },\n            []);\n        }\n\n        let arcStart: number = -Math.PI / 2 - fov / 2;\n        let arcEnd: number = arcStart + fov;\n\n        let startX: number = Math.cos(arcStart);\n        let startY: number = Math.sin(arcStart);\n\n        let endX: number = Math.cos(arcEnd);\n        let endY: number = Math.sin(arcEnd);\n\n        let largeArc: number = fov >= Math.PI ? 1 : 0;\n\n        let description: string = `M 0 0 ${startX} ${startY} A 1 1 0 ${largeArc} 1 ${endX} ${endY}`;\n\n        return vd.h(\n            \"path\",\n            {\n                attributes: { d: description, fill: fill },\n                namespace: this._svgNamespace,\n            },\n            []);\n    }\n\n    private _createNorth(bearing: number): vd.VNode {\n        const north: vd.VNode = vd.h(\"div.BearingNorth\", []);\n        const container: vd.VNode = vd.h(\n            \"div.BearingNorthContainer\",\n            { style: { transform: `rotateZ(${this._spatial.radToDeg(-bearing)}deg)` } },\n            [north]);\n\n        return container;\n    }\n\n    private _createBackground(bearing: number): vd.VNode {\n        return vd.h(\n            \"div.BearingIndicatorBackground\",\n            { style: { transform: `rotateZ(${this._spatial.radToDeg(-bearing)}deg)` } },\n            [\n                vd.h(\"div.BearingIndicatorBackgroundCircle\", []),\n                vd.h(\n                    \"div.BearingIndicatorBackgroundArrowContainer\",\n                    [\n                        vd.h(\"div.BearingIndicatorBackgroundArrow\", []),\n                    ]),\n            ]);\n    }\n\n    private _computeProjectedPoints(transform: Transform): number[][] {\n        const vertices: number[][] = [[1, 0]];\n        const directions: number[][] = [[0, 0.5]];\n        const pointsPerLine: number = 12;\n\n        return Geo.computeProjectedPoints(transform, vertices, directions, pointsPerLine, this._viewportCoords);\n    }\n\n    private _computeHorizontalFov(projectedPoints: number[][]): number {\n        const fovs: number[] = projectedPoints\n            .map(\n                (projectedPoint: number[]): number => {\n                    return this._coordToFov(projectedPoint[0]);\n                });\n\n        const fov: number = Math.min(...fovs);\n\n        return fov;\n    }\n\n    private _coordToFov(x: number): number {\n        return this._spatial.radToDeg(2 * Math.atan(x));\n    }\n\n    private _interpolate(x1: number, x2: number, alpha: number): number {\n        return (1 - alpha) * x1 + alpha * x2;\n    }\n}\n\nComponentService.register(BearingComponent);\nexport default BearingComponent;\n",
     "import {\n    from as observableFrom,\n    merge as observableMerge,\n    empty as observableEmpty,\n    of as observableOf,\n    combineLatest as observableCombineLatest,\n    zip as observableZip,\n    Observable,\n    Subscription,\n} from \"rxjs\";\n\nimport {\n    map,\n    first,\n    switchMap,\n    filter,\n    catchError,\n    mergeMap,\n    expand,\n    skip,\n    mergeAll,\n} from \"rxjs/operators\";\n\nimport {EdgeDirection, IEdge} from \"../Edge\";\nimport {IEdgeStatus, Node} from \"../Graph\";\nimport {ComponentService, Component, ICacheConfiguration, ICacheDepth} from \"../Component\";\nimport {Container, Navigator} from \"../Viewer\";\n\ntype EdgesDepth = [IEdge[], number];\n\nexport class CacheComponent extends Component<ICacheConfiguration> {\n    public static componentName: string = \"cache\";\n\n    private _sequenceSubscription: Subscription;\n    private _spatialSubscription: Subscription;\n\n    constructor(name: string, container: Container, navigator: Navigator) {\n        super(name, container, navigator);\n    }\n\n    /**\n     * Set the cache depth.\n     *\n     * Configures the cache depth. The cache depth can be different for\n     * different edge direction types.\n     *\n     * @param {ICacheDepth} depth - Cache depth structure.\n     */\n    public setDepth(depth: ICacheDepth): void {\n        this.configure({ depth: depth });\n    }\n\n    protected _activate(): void {\n        this._sequenceSubscription = observableCombineLatest(\n                this._navigator.stateService.currentNode$.pipe(\n                    switchMap(\n                        (node: Node): Observable<IEdgeStatus> => {\n                            return node.sequenceEdges$;\n                        }),\n                    filter(\n                        (status: IEdgeStatus): boolean => {\n                            return status.cached;\n                        })),\n                this._configuration$).pipe(\n            switchMap(\n                (nc: [IEdgeStatus, ICacheConfiguration]): Observable<EdgesDepth> => {\n                    let status: IEdgeStatus = nc[0];\n                    let configuration: ICacheConfiguration = nc[1];\n\n                    let sequenceDepth: number = Math.max(0, Math.min(4, configuration.depth.sequence));\n\n                    let next$: Observable<EdgesDepth> = this._cache$(status.edges, EdgeDirection.Next, sequenceDepth);\n                    let prev$: Observable<EdgesDepth> = this._cache$(status.edges, EdgeDirection.Prev, sequenceDepth);\n\n                    return observableMerge<EdgesDepth>(\n                            next$,\n                            prev$).pipe(\n                        catchError(\n                            (error: Error, caught: Observable<EdgesDepth>): Observable<EdgesDepth> => {\n                                console.error(\"Failed to cache sequence edges.\", error);\n\n                                return observableEmpty();\n                            }));\n                 }))\n            .subscribe(() => { /*noop*/ });\n\n        this._spatialSubscription = observableCombineLatest(\n                this._navigator.stateService.currentNode$.pipe(\n                    switchMap(\n                        (node: Node): Observable<[Node, IEdgeStatus]> => {\n                            return observableCombineLatest(\n                                observableOf<Node>(node),\n                                node.spatialEdges$.pipe(\n                                    filter(\n                                        (status: IEdgeStatus): boolean => {\n                                            return status.cached;\n                                        })));\n                        })),\n                this._configuration$).pipe(\n            switchMap(\n                ([[node, edgeStatus], configuration]: [[Node, IEdgeStatus], ICacheConfiguration]): Observable<EdgesDepth> => {\n                    let edges: IEdge[] = edgeStatus.edges;\n                    let depth: ICacheDepth = configuration.depth;\n\n                    let panoDepth: number = Math.max(0, Math.min(2, depth.pano));\n                    let stepDepth: number = node.pano ? 0 : Math.max(0, Math.min(3, depth.step));\n                    let turnDepth: number = node.pano ? 0 : Math.max(0, Math.min(1, depth.turn));\n\n                    let pano$: Observable<EdgesDepth> = this._cache$(edges, EdgeDirection.Pano, panoDepth);\n\n                    let forward$: Observable<EdgesDepth> = this._cache$(edges, EdgeDirection.StepForward, stepDepth);\n                    let backward$: Observable<EdgesDepth> = this._cache$(edges, EdgeDirection.StepBackward, stepDepth);\n                    let left$: Observable<EdgesDepth> = this._cache$(edges, EdgeDirection.StepLeft, stepDepth);\n                    let right$: Observable<EdgesDepth> = this._cache$(edges, EdgeDirection.StepRight, stepDepth);\n\n                    let turnLeft$: Observable<EdgesDepth> = this._cache$(edges, EdgeDirection.TurnLeft, turnDepth);\n                    let turnRight$: Observable<EdgesDepth> = this._cache$(edges, EdgeDirection.TurnRight, turnDepth);\n                    let turnU$: Observable<EdgesDepth> = this._cache$(edges, EdgeDirection.TurnU, turnDepth);\n\n                    return observableMerge<EdgesDepth>(\n                            forward$,\n                            backward$,\n                            left$,\n                            right$,\n                            pano$,\n                            turnLeft$,\n                            turnRight$,\n                            turnU$).pipe(\n                        catchError(\n                            (error: Error, caught: Observable<EdgesDepth>): Observable<EdgesDepth> => {\n                                console.error(\"Failed to cache spatial edges.\", error);\n\n                                return observableEmpty();\n                            }));\n                }))\n            .subscribe(() => { /*noop*/ });\n    }\n\n    protected _deactivate(): void {\n        this._sequenceSubscription.unsubscribe();\n        this._spatialSubscription.unsubscribe();\n    }\n\n    protected _getDefaultConfiguration(): ICacheConfiguration {\n        return { depth: { pano: 1, sequence: 2, step: 1, turn: 0 } };\n    }\n\n    private _cache$(edges: IEdge[], direction: EdgeDirection, depth: number): Observable<EdgesDepth> {\n        return observableZip(\n                observableOf<IEdge[]>(edges),\n                observableOf<number>(depth)).pipe(\n            expand(\n                (ed: EdgesDepth): Observable<EdgesDepth> => {\n                    let es: IEdge[] = ed[0];\n                    let d: number = ed[1];\n\n                    let edgesDepths$: Observable<EdgesDepth>[] = [];\n\n                    if (d > 0) {\n                        for (let edge of es) {\n                            if (edge.data.direction === direction) {\n                                edgesDepths$.push(\n                                    observableZip(\n                                            this._navigator.graphService.cacheNode$(edge.to).pipe(\n                                                mergeMap(\n                                                    (n: Node): Observable<IEdge[]> => {\n                                                        return this._nodeToEdges$(n, direction);\n                                                    })),\n                                            observableOf<number>(d - 1)));\n                            }\n                        }\n                    }\n\n                    return observableFrom<Observable<EdgesDepth>>(edgesDepths$).pipe(\n                        mergeAll());\n                }),\n            skip(1));\n    }\n\n    private _nodeToEdges$(node: Node, direction: EdgeDirection): Observable<IEdge[]> {\n       return ([EdgeDirection.Next, EdgeDirection.Prev].indexOf(direction) > -1 ?\n            node.sequenceEdges$ :\n            node.spatialEdges$).pipe(\n                first(\n                    (status: IEdgeStatus): boolean => {\n                        return status.cached;\n                    }),\n                map(\n                    (status: IEdgeStatus): IEdge[] => {\n                        return status.edges;\n                    }));\n    }\n}\n\nComponentService.register(CacheComponent);\nexport default CacheComponent;\n",
     "import {refCount, publishReplay, scan, startWith} from \"rxjs/operators\";\nimport {BehaviorSubject, Observable, Subject} from \"rxjs\";\n\nimport {IComponentConfiguration} from \"../Component\";\nimport {\n    Container,\n    Navigator,\n} from \"../Viewer\";\nimport {EventEmitter} from \"../Utils\";\n\nexport abstract class Component<TConfiguration extends IComponentConfiguration> extends EventEmitter {\n    public static componentName: string = \"not_worthy\";\n\n    protected _activated: boolean;\n    protected _container: Container;\n    protected _name: string;\n    protected _navigator: Navigator;\n\n    protected _activated$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n    protected _configuration$: Observable<TConfiguration>;\n    protected _configurationSubject$: Subject<TConfiguration> = new Subject<TConfiguration>();\n\n    constructor (name: string, container: Container, navigator: Navigator) {\n        super();\n\n        this._activated = false;\n        this._container = container;\n        this._name = name;\n        this._navigator = navigator;\n\n        this._configuration$ =\n            this._configurationSubject$.pipe(\n                startWith(this.defaultConfiguration),\n                scan(\n                    (conf: TConfiguration, newConf: TConfiguration): TConfiguration => {\n                        for (let key in newConf) {\n                            if (newConf.hasOwnProperty(key)) {\n                                conf[key] = <any>newConf[key];\n                            }\n                        }\n\n                        return conf;\n                    }),\n                publishReplay(1),\n                refCount());\n\n        this._configuration$.subscribe(() => { /*noop*/ });\n    }\n\n    public get activated(): boolean {\n        return this._activated;\n    }\n\n    /** @ignore */\n    public get activated$(): Observable<boolean> {\n        return this._activated$;\n    }\n\n    /**\n     * Get default configuration.\n     *\n     * @returns {TConfiguration} Default configuration for component.\n     */\n    public get defaultConfiguration(): TConfiguration {\n        return this._getDefaultConfiguration();\n    }\n\n    /** @ignore */\n    public get configuration$(): Observable<TConfiguration> {\n        return this._configuration$;\n    }\n\n    /**\n     * Get name.\n     *\n     * @description The name of the component. Used when interacting with the\n     * component through the Viewer's API.\n     */\n    public get name(): string {\n        return this._name;\n    }\n\n    public activate(conf?: TConfiguration): void {\n        if (this._activated) {\n            return;\n        }\n\n        if (conf !== undefined) {\n            this._configurationSubject$.next(conf);\n        }\n\n        this._activated = true;\n        this._activate();\n        this._activated$.next(true);\n    }\n\n    public configure(conf: TConfiguration): void {\n        this._configurationSubject$.next(conf);\n    }\n\n    public deactivate(): void {\n        if (!this._activated) {\n            return;\n        }\n\n        this._activated = false;\n        this._deactivate();\n        this._container.domRenderer.clear(this._name);\n        this._container.glRenderer.clear(this._name);\n        this._activated$.next(false);\n    }\n\n    /**\n     * Detect the viewer's new width and height and resize the component's\n     * rendered elements accordingly if applicable.\n     *\n     * @ignore\n     */\n    public resize(): void { return; }\n\n    protected abstract _activate(): void;\n\n    protected abstract _deactivate(): void;\n\n    protected abstract _getDefaultConfiguration(): TConfiguration;\n}\n\nexport default Component;\n",
     "import {ArgumentMapillaryError} from \"../Error\";\nimport {Container, Navigator} from \"../Viewer\";\nimport {CoverComponent, Component, IComponentConfiguration} from \"../Component\";\n\ninterface IActiveComponent {\n    active: boolean;\n    component: Component<IComponentConfiguration>;\n}\n\nexport class ComponentService {\n    public static registeredCoverComponent: typeof CoverComponent;\n    public static registeredComponents: {[key: string]: { new (...args: any[]): Component<IComponentConfiguration>; }} = {};\n\n    private _coverActivated: boolean;\n    private _coverComponent: CoverComponent;\n    private _components: {[key: string]: IActiveComponent} = {};\n\n    public static register<T extends Component<IComponentConfiguration>>(\n        component: { componentName: string, new (...args: any[]): T; }): void {\n        if (ComponentService.registeredComponents[component.componentName] === undefined) {\n            ComponentService.registeredComponents[component.componentName] = component;\n        }\n    }\n\n    public static registerCover(coverComponent: typeof CoverComponent): void {\n        ComponentService.registeredCoverComponent = coverComponent;\n    }\n\n    constructor (container: Container, navigator: Navigator) {\n        for (const componentName in ComponentService.registeredComponents) {\n            if (!ComponentService.registeredComponents.hasOwnProperty(componentName)) {\n                continue;\n            }\n\n            const component: new (...args: any[]) => Component<IComponentConfiguration> =\n                ComponentService.registeredComponents[componentName];\n\n            this._components[componentName] = {\n                active: false,\n                component: new component(componentName, container, navigator),\n            };\n        }\n\n        this._coverComponent = new ComponentService.registeredCoverComponent(\"cover\", container, navigator);\n        this._coverComponent.activate();\n        this._coverActivated = true;\n    }\n\n    public get coverActivated(): boolean {\n        return this._coverActivated;\n    }\n\n    public activateCover(): void {\n        if (this._coverActivated) {\n            return;\n        }\n\n        this._coverActivated = true;\n\n        for (const componentName in this._components) {\n            if (!this._components.hasOwnProperty(componentName)) {\n                continue;\n            }\n\n            const component: IActiveComponent = this._components[componentName];\n\n            if (component.active) {\n                component.component.deactivate();\n            }\n        }\n    }\n\n    public deactivateCover(): void {\n        if (!this._coverActivated) {\n            return;\n        }\n\n        this._coverActivated = false;\n\n        for (const componentName in this._components) {\n            if (!this._components.hasOwnProperty(componentName)) {\n                continue;\n            }\n\n            const component: IActiveComponent = this._components[componentName];\n\n            if (component.active) {\n                component.component.activate();\n            }\n        }\n    }\n\n    public activate(name: string): void {\n        this._checkName(name);\n        this._components[name].active = true;\n\n        if (!this._coverActivated) {\n            this.get(name).activate();\n        }\n    }\n\n    public configure<TConfiguration extends IComponentConfiguration>(name: string, conf: TConfiguration): void {\n        this._checkName(name);\n        this.get(name).configure(conf);\n    }\n\n    public deactivate(name: string): void {\n        this._checkName(name);\n        this._components[name].active = false;\n\n        if (!this._coverActivated) {\n            this.get(name).deactivate();\n        }\n    }\n\n    public get<TComponent extends Component<IComponentConfiguration>>(name: string): TComponent {\n        return <TComponent>this._components[name].component;\n    }\n\n    public getCover(): CoverComponent {\n        return this._coverComponent;\n    }\n\n    private _checkName(name: string): void {\n        if (!(name in this._components)) {\n            throw new ArgumentMapillaryError(`Component does not exist: ${name}`);\n        }\n    }\n}\n\nexport default ComponentService;\n",
-    "import {of as observableOf, combineLatest as observableCombineLatest, Observable, Subscription} from \"rxjs\";\n\nimport {map, distinctUntilChanged, switchMap, first, filter} from \"rxjs/operators\";\nimport * as vd from \"virtual-dom\";\n\nimport {\n    CoverState,\n    ICoverConfiguration,\n    ComponentService,\n    Component,\n} from \"../Component\";\nimport {Node} from \"../Graph\";\nimport {\n    IVNodeHash,\n    ISize,\n} from \"../Render\";\nimport {Urls} from \"../Utils\";\nimport {\n    Container,\n    ImageSize,\n    Navigator,\n} from \"../Viewer\";\n\nexport class CoverComponent extends Component<ICoverConfiguration> {\n    public static componentName: string = \"cover\";\n\n    private _renderSubscription: Subscription;\n    private _keySubscription: Subscription;\n\n    constructor(name: string, container: Container, navigator: Navigator) {\n        super(name, container, navigator);\n    }\n\n    public _activate(): void {\n        this._configuration$.pipe(\n            distinctUntilChanged(\n                undefined,\n                (configuration: ICoverConfiguration): CoverState => {\n                    return configuration.state;\n                }),\n            switchMap(\n                (configuration: ICoverConfiguration): Observable<[CoverState, Node]> => {\n                    return observableCombineLatest(\n                            observableOf(configuration.state),\n                            this._navigator.stateService.currentNode$);\n                }),\n            switchMap(\n                ([state, node]: [CoverState, Node]): Observable<[string, string]> => {\n                    const keySrc$: Observable<[string, string]> = observableCombineLatest(\n                            observableOf(node.key),\n                            node.image$.pipe(\n                                filter(\n                                    (image: HTMLImageElement): boolean => {\n                                        return !!image;\n                                    }),\n                                map(\n                                    (image: HTMLImageElement): string => {\n                                        return image.src;\n                                    })));\n\n                    return state === CoverState.Visible ? keySrc$.pipe(first()) : keySrc$;\n                }),\n            distinctUntilChanged(\n                ([k1, s1]: [string, string], [k2, s2]: [string, string]): boolean => {\n                    return k1 === k2 && s1 === s2;\n                }),\n            map(\n                ([key, src]: [string, string]): ICoverConfiguration => {\n                    return { key: key, src: src };\n                }))\n            .subscribe(this._configurationSubject$);\n\n        this._renderSubscription = observableCombineLatest(\n                this._configuration$,\n                this._container.renderService.size$).pipe(\n            map(\n                ([configuration, size]: [ICoverConfiguration, ISize]): IVNodeHash => {\n                    if (!configuration.key) {\n                        return { name: this._name, vnode: vd.h(\"div\", []) };\n                    }\n\n                    const compactClass: string = size.width <= 640 || size.height <= 480 ? \".CoverCompact\" : \"\";\n\n                    if (configuration.state === CoverState.Hidden) {\n                        const doneContainer: vd.VNode = vd.h(\n                            \"div.CoverContainer.CoverDone\" + compactClass,\n                            [this._getCoverBackgroundVNode(configuration)]);\n\n                        return { name: this._name, vnode: doneContainer };\n                    }\n\n                    const container: vd.VNode = vd.h(\n                        \"div.CoverContainer\" + compactClass,\n                        [this._getCoverButtonVNode(configuration)]);\n\n                    return { name: this._name, vnode: container };\n                }))\n            .subscribe(this._container.domRenderer.render$);\n    }\n\n    public _deactivate(): void {\n        this._renderSubscription.unsubscribe();\n        this._keySubscription.unsubscribe();\n    }\n\n    protected _getDefaultConfiguration(): ICoverConfiguration {\n        return { state: CoverState.Visible };\n    }\n\n    private _getCoverButtonVNode(configuration: ICoverConfiguration): vd.VNode {\n        const cover: string = configuration.state === CoverState.Loading ? \"div.Cover.CoverLoading\" : \"div.Cover\";\n        const coverButton: vd.VNode = vd.h(\n            \"div.CoverButton\",\n            { onclick: (): void => { this.configure({ state: CoverState.Loading }); } },\n            [vd.h(\"div.CoverButtonIcon\", [])]);\n\n        const coverLogo: vd.VNode = vd.h(\"a.CoverLogo\", {href: Urls.explore, target: \"_blank\"}, []);\n\n        return vd.h(cover, [this._getCoverBackgroundVNode(configuration), coverButton, coverLogo]);\n    }\n\n    private _getCoverBackgroundVNode(conf: ICoverConfiguration): vd.VNode {\n        let url: string = conf.src != null ?\n            conf.src : Urls.thumbnail(conf.key, ImageSize.Size640);\n\n        let properties: vd.createProperties = { style: { backgroundImage: `url(${url})` } };\n\n        let children: vd.VNode[] = [];\n        if (conf.state === CoverState.Loading) {\n            children.push(vd.h(\"div.Spinner\", {}, []));\n        }\n\n        return vd.h(\"div.CoverBackground\", properties, children);\n    }\n}\n\nComponentService.registerCover(CoverComponent);\nexport default CoverComponent;\n",
+    "import {of as observableOf, combineLatest as observableCombineLatest, Observable, Subscription} from \"rxjs\";\n\nimport {map, distinctUntilChanged, switchMap, first, filter} from \"rxjs/operators\";\nimport * as vd from \"virtual-dom\";\n\nimport {\n    CoverState,\n    ICoverConfiguration,\n    ComponentService,\n    Component,\n} from \"../Component\";\nimport {Node} from \"../Graph\";\nimport {\n    IVNodeHash,\n    ISize,\n} from \"../Render\";\nimport {Urls} from \"../Utils\";\nimport {\n    Container,\n    ImageSize,\n    Navigator,\n} from \"../Viewer\";\n\nexport class CoverComponent extends Component<ICoverConfiguration> {\n    public static componentName: string = \"cover\";\n\n    private _renderSubscription: Subscription;\n    private _keySubscription: Subscription;\n\n    constructor(name: string, container: Container, navigator: Navigator) {\n        super(name, container, navigator);\n    }\n\n    public _activate(): void {\n        this._configuration$.pipe(\n            distinctUntilChanged(\n                undefined,\n                (configuration: ICoverConfiguration): CoverState => {\n                    return configuration.state;\n                }),\n            switchMap(\n                (configuration: ICoverConfiguration): Observable<[CoverState, Node]> => {\n                    return observableCombineLatest(\n                            observableOf(configuration.state),\n                            this._navigator.stateService.currentNode$);\n                }),\n            switchMap(\n                ([state, node]: [CoverState, Node]): Observable<[string, string]> => {\n                    const keySrc$: Observable<[string, string]> = observableCombineLatest(\n                            observableOf(node.key),\n                            node.image$.pipe(\n                                filter(\n                                    (image: HTMLImageElement): boolean => {\n                                        return !!image;\n                                    }),\n                                map(\n                                    (image: HTMLImageElement): string => {\n                                        return image.src;\n                                    })));\n\n                    return state === CoverState.Visible ? keySrc$.pipe(first()) : keySrc$;\n                }),\n            distinctUntilChanged(\n                ([k1, s1]: [string, string], [k2, s2]: [string, string]): boolean => {\n                    return k1 === k2 && s1 === s2;\n                }),\n            map(\n                ([key, src]: [string, string]): ICoverConfiguration => {\n                    return { key: key, src: src };\n                }))\n            .subscribe(this._configurationSubject$);\n\n        this._renderSubscription = observableCombineLatest(\n                this._configuration$,\n                this._container.renderService.size$).pipe(\n            map(\n                ([configuration, size]: [ICoverConfiguration, ISize]): IVNodeHash => {\n                    if (!configuration.key) {\n                        return { name: this._name, vnode: vd.h(\"div\", []) };\n                    }\n\n                    const compactClass: string = size.width <= 640 || size.height <= 480 ? \".CoverCompact\" : \"\";\n\n                    if (configuration.state === CoverState.Hidden) {\n                        const doneContainer: vd.VNode = vd.h(\n                            \"div.CoverContainer.CoverDone\" + compactClass,\n                            [this._getCoverBackgroundVNode(configuration)]);\n\n                        return { name: this._name, vnode: doneContainer };\n                    }\n\n                    const container: vd.VNode = vd.h(\n                        \"div.CoverContainer\" + compactClass,\n                        [this._getCoverButtonVNode(configuration)]);\n\n                    return { name: this._name, vnode: container };\n                }))\n            .subscribe(this._container.domRenderer.render$);\n    }\n\n    public _deactivate(): void {\n        this._renderSubscription.unsubscribe();\n        this._keySubscription.unsubscribe();\n    }\n\n    protected _getDefaultConfiguration(): ICoverConfiguration {\n        return { state: CoverState.Visible };\n    }\n\n    private _getCoverButtonVNode(configuration: ICoverConfiguration): vd.VNode {\n        const cover: string = configuration.state === CoverState.Loading ? \"div.Cover.CoverLoading\" : \"div.Cover\";\n        const coverButton: vd.VNode = vd.h(\n            \"div.CoverButton\",\n            [vd.h(\"div.CoverButtonIcon\", [])]);\n\n        const coverLogo: vd.VNode = vd.h(\"a.CoverLogo\", {href: Urls.explore, target: \"_blank\"}, []);\n        const coverIndicator: vd.VNode = vd.h(\n            \"div.CoverIndicator\",\n            { onclick: (): void => { this.configure({ state: CoverState.Loading }); } },\n            []);\n\n        return vd.h(\n            cover,\n            [\n                this._getCoverBackgroundVNode(configuration),\n                coverIndicator,\n                coverButton,\n                coverLogo,\n            ]);\n    }\n\n    private _getCoverBackgroundVNode(conf: ICoverConfiguration): vd.VNode {\n        let url: string = conf.src != null ?\n            conf.src : Urls.thumbnail(conf.key, ImageSize.Size640);\n\n        let properties: vd.createProperties = { style: { backgroundImage: `url(${url})` } };\n\n        let children: vd.VNode[] = [];\n        if (conf.state === CoverState.Loading) {\n            children.push(vd.h(\"div.Spinner\", {}, []));\n        }\n\n        return vd.h(\"div.CoverBackground\", properties, children);\n    }\n}\n\nComponentService.registerCover(CoverComponent);\nexport default CoverComponent;\n",
     "import {combineLatest as observableCombineLatest, Observable, BehaviorSubject, Subscription} from \"rxjs\";\nimport {map} from \"rxjs/operators\";\nimport * as vd from \"virtual-dom\";\n\nimport {Component, ComponentService, IComponentConfiguration} from \"../Component\";\nimport {ILoadStatus} from \"../Graph\";\nimport {IVNodeHash} from \"../Render\";\nimport {IFrame} from \"../State\";\n\nexport class DebugComponent extends Component<IComponentConfiguration> {\n    public static componentName: string = \"debug\";\n\n    private _disposable: Subscription;\n\n    private _open$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n    public _activate(): void {\n        this._disposable = observableCombineLatest(\n                this._navigator.stateService.currentState$,\n                this._open$,\n                this._navigator.imageLoadingService.loadstatus$).pipe(\n            map(\n                ([frame, open, loadStatus]: [IFrame, boolean, {[key: string]: ILoadStatus}]): IVNodeHash => {\n                    return {name: this._name, vnode: this._getDebugVNode(open, this._getDebugInfo(frame, loadStatus))};\n                }))\n            .subscribe(this._container.domRenderer.render$);\n    }\n\n    public _deactivate(): void {\n        this._disposable.unsubscribe();\n    }\n\n    protected _getDefaultConfiguration(): IComponentConfiguration {\n        return {};\n    }\n\n    private _getDebugInfo(frame: IFrame, loadStatus: {[key: string]: ILoadStatus}): vd.VNode[] {\n        let ret: vd.VNode[] = [];\n\n        ret.push(vd.h(\"h2\", \"Node\"));\n\n        if (frame.state.currentNode) {\n            ret.push(vd.h(\"p\", `currentNode: ${frame.state.currentNode.key}`));\n        }\n\n        if (frame.state.previousNode) {\n            ret.push(vd.h(\"p\", `previousNode: ${frame.state.previousNode.key}`));\n        }\n\n        ret.push(vd.h(\"h2\", \"Loading\"));\n\n        let total: number = 0;\n        let loaded: number = 0;\n        let loading: number = 0;\n\n        for (const key in loadStatus) {\n            if (!loadStatus.hasOwnProperty(key)) {\n                continue;\n            }\n\n            const status: ILoadStatus = loadStatus[key];\n\n            total += status.loaded;\n\n            if (status.loaded !== status.total) {\n                loading++;\n            } else {\n                loaded++;\n            }\n        }\n\n        ret.push(vd.h(\"p\", `Loaded Images: ${loaded}`));\n        ret.push(vd.h(\"p\", `Loading Images: ${loading}`));\n        ret.push(vd.h(\"p\", `Total bytes loaded: ${total}`));\n\n        ret.push(vd.h(\"h2\", \"Camera\"));\n\n        ret.push(vd.h(\"p\", `camera.position.x: ${frame.state.camera.position.x}`));\n        ret.push(vd.h(\"p\", `camera.position.y: ${frame.state.camera.position.y}`));\n        ret.push(vd.h(\"p\", `camera.position.z: ${frame.state.camera.position.z}`));\n\n        ret.push(vd.h(\"p\", `camera.lookat.x: ${frame.state.camera.lookat.x}`));\n        ret.push(vd.h(\"p\", `camera.lookat.y: ${frame.state.camera.lookat.y}`));\n        ret.push(vd.h(\"p\", `camera.lookat.z: ${frame.state.camera.lookat.z}`));\n\n        ret.push(vd.h(\"p\", `camera.up.x: ${frame.state.camera.up.x}`));\n        ret.push(vd.h(\"p\", `camera.up.y: ${frame.state.camera.up.y}`));\n        ret.push(vd.h(\"p\", `camera.up.z: ${frame.state.camera.up.z}`));\n\n        return ret;\n    }\n\n    private _getDebugVNode(open: boolean, info: vd.VNode[]): vd.VNode {\n        if (open) {\n            return vd.h(\"div.Debug\", {}, [\n                vd.h(\"h2\", {}, [\"Debug\"]),\n                this._getDebugVNodeButton(open),\n                vd.h(\"pre\", {}, info),\n            ]);\n        } else {\n            return this._getDebugVNodeButton(open);\n        }\n    }\n\n    private _getDebugVNodeButton(open: boolean): any {\n        let buttonText: string = open ? \"Disable Debug\" : \"D\";\n        let buttonCssClass: string = open ? \"\" : \".DebugButtonFixed\";\n\n        if (open) {\n            return vd.h(`button.DebugButton${buttonCssClass}`,\n                        {onclick: this._closeDebugElement.bind(this)},\n                        [buttonText]);\n        } else {\n            return vd.h(`button.DebugButton${buttonCssClass}`,\n                        {onclick: this._openDebugElement.bind(this)},\n                        [buttonText]);\n        }\n    }\n\n    private _closeDebugElement(open: boolean): void {\n        this._open$.next(false);\n    }\n\n    private _openDebugElement(): void {\n        this._open$.next(true);\n    }\n}\n\nComponentService.register(DebugComponent);\nexport default DebugComponent;\n",
     "import {combineLatest as observableCombineLatest, Observable, Subscription} from \"rxjs\";\n\nimport {distinctUntilChanged, filter, map} from \"rxjs/operators\";\nimport * as vd from \"virtual-dom\";\n\nimport {ComponentService, Component, IComponentConfiguration} from \"../Component\";\nimport {Node} from \"../Graph\";\nimport {ISize} from \"../Render\";\nimport {DOM} from \"../Utils\";\nimport {Container, Navigator} from \"../Viewer\";\n\nexport class ImageComponent extends Component<IComponentConfiguration> {\n    public static componentName: string = \"image\";\n\n    private _canvasId: string;\n    private _dom: DOM;\n    private drawSubscription: Subscription;\n\n    constructor(name: string, container: Container, navigator: Navigator, dom?: DOM) {\n        super(name, container, navigator);\n\n        this._canvasId = `${container.id}-${this._name}`;\n        this._dom = !!dom ? dom : new DOM();\n    }\n\n    protected _activate(): void {\n        const canvasSize$: Observable<[HTMLCanvasElement, ISize]> = this._container.domRenderer.element$.pipe(\n            map(\n                (element: HTMLElement): HTMLCanvasElement => {\n                    return <HTMLCanvasElement>this._dom.document.getElementById(this._canvasId);\n                }),\n            filter(\n                (canvas: HTMLCanvasElement): boolean => {\n                    return !!canvas;\n                }),\n            map(\n                (canvas: HTMLCanvasElement): [HTMLCanvasElement, ISize] => {\n                    const adaptableDomRenderer: HTMLElement = canvas.parentElement;\n                    const width: number = adaptableDomRenderer.offsetWidth;\n                    const height: number = adaptableDomRenderer.offsetHeight;\n\n                    return [canvas, { height: height, width: width }];\n                }),\n            distinctUntilChanged(\n                (s1: ISize, s2: ISize): boolean => {\n                    return s1.height === s2.height && s1.width === s2.width;\n                },\n                ([canvas, size]: [HTMLCanvasElement, ISize]): ISize => {\n                    return size;\n                }));\n\n        this.drawSubscription = observableCombineLatest(\n                canvasSize$,\n                this._navigator.stateService.currentNode$)\n            .subscribe(\n                ([[canvas, size], node]: [[HTMLCanvasElement, ISize], Node]): void => {\n                    canvas.width = size.width;\n                    canvas.height = size.height;\n                    canvas\n                        .getContext(\"2d\")\n                        .drawImage(node.image, 0, 0, size.width, size.height);\n                });\n\n        this._container.domRenderer.renderAdaptive$.next({name: this._name, vnode: vd.h(`canvas#${this._canvasId}`, [])});\n    }\n\n    protected _deactivate(): void {\n        this.drawSubscription.unsubscribe();\n    }\n\n    protected _getDefaultConfiguration(): IComponentConfiguration {\n        return {};\n    }\n}\n\nComponentService.register(ImageComponent);\nexport default ImageComponent;\n",
     "import {of as observableOf, Observable, Subscription} from \"rxjs\";\n\nimport {map, switchMap} from \"rxjs/operators\";\nimport * as vd from \"virtual-dom\";\n\nimport {Container, Navigator} from \"../Viewer\";\nimport {ComponentService, Component, IComponentConfiguration} from \"../Component\";\n\nimport {IVNodeHash} from \"../Render\";\nimport {ILoadStatus} from \"../Graph\";\n\nexport class LoadingComponent extends Component<IComponentConfiguration> {\n    public static componentName: string = \"loading\";\n\n    private _loadingSubscription: Subscription;\n\n    constructor(name: string, container: Container, navigator: Navigator) {\n        super(name, container, navigator);\n    }\n\n    protected _activate(): void {\n        this._loadingSubscription = this._navigator.loadingService.loading$.pipe(\n            switchMap(\n                (loading: boolean): Observable<{ [key: string]: ILoadStatus }> => {\n                    return loading ?\n                        this._navigator.imageLoadingService.loadstatus$ :\n                        observableOf({});\n                }),\n            map(\n                (loadStatus: { [key: string]: ILoadStatus }): IVNodeHash => {\n                    let total: number = 0;\n                    let loaded: number = 0;\n\n                    for (const key in loadStatus) {\n                        if (!loadStatus.hasOwnProperty(key)) {\n                            continue;\n                        }\n\n                        const status: ILoadStatus = loadStatus[key];\n\n                        if (status.loaded !== status.total) {\n                            loaded += status.loaded;\n                            total += status.total;\n                        }\n                    }\n\n                    let percentage: number = 100;\n                    if (total !== 0) {\n                        percentage = (loaded / total) * 100;\n                    }\n\n                    return {name: this._name, vnode: this._getBarVNode(percentage)};\n                }))\n            .subscribe(this._container.domRenderer.render$);\n    }\n\n    protected _deactivate(): void {\n        this._loadingSubscription.unsubscribe();\n    }\n\n    protected _getDefaultConfiguration(): IComponentConfiguration {\n        return {};\n    }\n\n    private _getBarVNode(percentage: number): vd.VNode {\n        let loadingBarStyle: any = {};\n        let loadingContainerStyle: any = {};\n\n        if (percentage !== 100) {\n            loadingBarStyle.width = percentage.toFixed(0) + \"%\";\n            loadingBarStyle.opacity = \"1\";\n\n        } else {\n            loadingBarStyle.width = \"100%\";\n            loadingBarStyle.opacity = \"0\";\n        }\n\n        return vd.h(\"div.Loading\", { style: loadingContainerStyle }, [ vd.h(\"div.LoadingBar\", {style: loadingBarStyle}, [])]);\n    }\n}\n\nComponentService.register(LoadingComponent);\nexport default LoadingComponent;\n",
     "import * as vd from \"virtual-dom\";\n\nimport {\n    of as observableOf,\n    combineLatest as observableCombineLatest,\n    Observable,\n    Subscription,\n    Subject,\n} from \"rxjs\";\n\nimport {\n    switchMap,\n    share,\n    startWith,\n    withLatestFrom,\n    map,\n    filter,\n    distinctUntilChanged,\n    tap,\n    catchError,\n} from \"rxjs/operators\";\n\nimport {\n    ComponentService,\n    Component,\n    DirectionDOMRenderer,\n    IDirectionConfiguration,\n} from \"../../Component\";\nimport {IEdgeStatus, Node, Sequence} from \"../../Graph\";\nimport {\n    ISize,\n    IVNodeHash,\n    RenderCamera,\n} from \"../../Render\";\nimport {Container, Navigator} from \"../../Viewer\";\n\n/**\n * @class DirectionComponent\n * @classdesc Component showing navigation arrows for steps and turns.\n */\nexport class DirectionComponent extends Component<IDirectionConfiguration> {\n    /** @inheritdoc */\n    public static componentName: string = \"direction\";\n\n    /**\n     * Event fired when the hovered key changes.\n     *\n     * @description Emits the key of the node for the direction\n     * arrow that is being hovered. When the mouse leaves a\n     * direction arrow null is emitted.\n     *\n     * @event DirectionComponent#hoveredkeychanged\n     * @type {string} The hovered key, null if no key is hovered.\n     */\n    public static hoveredkeychanged: string = \"hoveredkeychanged\";\n\n    private _renderer: DirectionDOMRenderer;\n\n    private _hoveredKeySubject$: Subject<string>;\n    private _hoveredKey$: Observable<string>;\n\n    private _configurationSubscription: Subscription;\n    private _emitHoveredKeySubscription: Subscription;\n    private _hoveredKeySubscription: Subscription;\n    private _nodeSubscription: Subscription;\n    private _renderCameraSubscription: Subscription;\n    private _resizeSubscription: Subscription;\n\n    constructor(name: string, container: Container, navigator: Navigator, directionDOMRenderer?: DirectionDOMRenderer) {\n        super(name, container, navigator);\n\n        this._renderer = !!directionDOMRenderer ?\n            directionDOMRenderer :\n            new DirectionDOMRenderer(\n                this.defaultConfiguration,\n                { height: container.element.offsetHeight, width: container.element.offsetWidth });\n\n        this._hoveredKeySubject$ = new Subject<string>();\n\n        this._hoveredKey$ = this._hoveredKeySubject$.pipe(share());\n    }\n\n    /**\n     * Get hovered key observable.\n     *\n     * @description An observable emitting the key of the node for the direction\n     * arrow that is being hovered. When the mouse leaves a direction arrow null\n     * is emitted.\n     *\n     * @returns {Observable<string>}\n     */\n    public get hoveredKey$(): Observable<string> {\n        return this._hoveredKey$;\n    }\n\n    /**\n     * Set highlight key.\n     *\n     * @description The arrow pointing towards the node corresponding to the\n     * highlight key will be highlighted.\n     *\n     * @param {string} highlightKey Key of node to be highlighted if existing\n     * among arrows.\n     */\n    public setHighlightKey(highlightKey: string): void {\n        this.configure({ highlightKey: highlightKey });\n    }\n\n    /**\n     * Set min width of container element.\n     *\n     * @description  Set min width of the non transformed container element holding\n     * the navigation arrows. If the min width is larger than the max width the\n     * min width value will be used.\n     *\n     * The container element is automatically resized when the resize\n     * method on the Viewer class is called.\n     *\n     * @param {number} minWidth\n     */\n    public setMinWidth(minWidth: number): void {\n        this.configure({ minWidth: minWidth });\n    }\n\n    /**\n     * Set max width of container element.\n     *\n     * @description Set max width of the non transformed container element holding\n     * the navigation arrows. If the min width is larger than the max width the\n     * min width value will be used.\n     *\n     * The container element is automatically resized when the resize\n     * method on the Viewer class is called.\n     *\n     * @param {number} minWidth\n     */\n    public setMaxWidth(maxWidth: number): void {\n        this.configure({ maxWidth: maxWidth });\n    }\n\n    protected _activate(): void {\n        this._configurationSubscription = this._configuration$\n            .subscribe(\n                (configuration: IDirectionConfiguration): void => {\n                    this._renderer.setConfiguration(configuration);\n                });\n\n        this._resizeSubscription = this._container.renderService.size$\n            .subscribe(\n                (size: ISize): void => {\n                    this._renderer.resize(size);\n                });\n\n        this._nodeSubscription = this._navigator.stateService.currentNode$.pipe(\n            tap(\n                (node: Node): void => {\n                    this._container.domRenderer.render$.next({name: this._name, vnode: vd.h(\"div\", {}, [])});\n                    this._renderer.setNode(node);\n                }),\n            withLatestFrom(this._configuration$),\n            switchMap(\n                ([node, configuration]: [Node, IDirectionConfiguration]): Observable<[IEdgeStatus, Sequence]> => {\n                    return observableCombineLatest(\n                            node.spatialEdges$,\n                            configuration.distinguishSequence ?\n                                this._navigator.graphService\n                                    .cacheSequence$(node.sequenceKey).pipe(\n                                    catchError(\n                                        (error: Error, caught: Observable<Sequence>): Observable<Sequence> => {\n                                            console.error(`Failed to cache sequence (${node.sequenceKey})`, error);\n\n                                            return observableOf<Sequence>(null);\n                                        })) :\n                                observableOf<Sequence>(null));\n                }))\n            .subscribe(\n                ([edgeStatus, sequence]: [IEdgeStatus, Sequence]): void => {\n                    this._renderer.setEdges(edgeStatus, sequence);\n                });\n\n        this._renderCameraSubscription = this._container.renderService.renderCameraFrame$.pipe(\n            tap(\n                (renderCamera: RenderCamera): void => {\n                    this._renderer.setRenderCamera(renderCamera);\n                }),\n            map(\n                (): DirectionDOMRenderer => {\n                    return this._renderer;\n                }),\n            filter(\n                (renderer: DirectionDOMRenderer): boolean => {\n                    return renderer.needsRender;\n                }),\n            map(\n                (renderer: DirectionDOMRenderer): IVNodeHash => {\n                    return { name: this._name, vnode: renderer.render(this._navigator) };\n                }))\n            .subscribe(this._container.domRenderer.render$);\n\n        this._hoveredKeySubscription = observableCombineLatest(\n                this._container.domRenderer.element$,\n                this._container.renderService.renderCamera$,\n                this._container.mouseService.mouseMove$.pipe(startWith(null)),\n                this._container.mouseService.mouseUp$.pipe(startWith(null))).pipe(\n            map(\n                ([element]: [Element, RenderCamera, MouseEvent, MouseEvent]): string => {\n                    let elements: HTMLCollectionOf<Element> =\n                        <HTMLCollectionOf<Element>>element.getElementsByClassName(\"DirectionsPerspective\");\n\n                    for (let i: number = 0; i < elements.length; i++) {\n                        let hovered: Element = elements.item(i).querySelector(\":hover\");\n\n                        if (hovered != null && hovered.hasAttribute(\"data-key\")) {\n                            return hovered.getAttribute(\"data-key\");\n                        }\n                    }\n\n                    return null;\n                }),\n            distinctUntilChanged())\n            .subscribe(this._hoveredKeySubject$);\n\n        this._emitHoveredKeySubscription = this._hoveredKey$\n            .subscribe(\n                (key: string): void => {\n                    this.fire(DirectionComponent.hoveredkeychanged, key);\n                });\n    }\n\n    protected _deactivate(): void {\n        this._configurationSubscription.unsubscribe();\n        this._emitHoveredKeySubscription.unsubscribe();\n        this._hoveredKeySubscription.unsubscribe();\n        this._nodeSubscription.unsubscribe();\n        this._renderCameraSubscription.unsubscribe();\n    }\n\n    protected _getDefaultConfiguration(): IDirectionConfiguration {\n        return {\n            distinguishSequence: false,\n            maxWidth: 460,\n            minWidth: 260,\n        };\n    }\n}\n\nComponentService.register(DirectionComponent);\nexport default DirectionComponent;\n",
     "import {IDirectionConfiguration} from \"../../Component\";\nimport {Spatial} from \"../../Geo\";\nimport {ISize} from \"../../Render\";\n\n/**\n * @class DirectionDOMCalculator\n * @classdesc Helper class for calculating DOM CSS properties.\n */\nexport class DirectionDOMCalculator {\n    private _spatial: Spatial;\n\n    private _elementWidth: number;\n    private _elementHeight: number;\n\n    private _minWidth: number;\n    private _maxWidth: number;\n\n    private _minThresholdWidth: number;\n    private _maxThresholdWidth: number;\n    private _minThresholdHeight: number;\n    private _maxThresholdHeight: number;\n\n    private _containerWidth: number;\n    private _containerWidthCss: string;\n    private _containerMarginCss: string;\n    private _containerLeftCss: string;\n    private _containerHeight: number;\n    private _containerHeightCss: string;\n    private _containerBottomCss: string;\n\n    private _stepCircleSize: number;\n    private _stepCircleSizeCss: string;\n    private _stepCircleMarginCss: string;\n\n    private _turnCircleSize: number;\n    private _turnCircleSizeCss: string;\n\n    private _outerRadius: number;\n    private _innerRadius: number;\n\n    private _shadowOffset: number;\n\n    constructor(configuration: IDirectionConfiguration, size: ISize) {\n        this._spatial = new Spatial();\n\n        this._minThresholdWidth = 320;\n        this._maxThresholdWidth = 1480;\n        this._minThresholdHeight = 240;\n        this._maxThresholdHeight = 820;\n\n        this._configure(configuration);\n        this._resize(size);\n        this._reset();\n    }\n\n    public get minWidth(): number {\n        return this._minWidth;\n    }\n\n    public get maxWidth(): number {\n        return this._maxWidth;\n    }\n\n    public get containerWidth(): number {\n        return this._containerWidth;\n    }\n\n    public get containerWidthCss(): string {\n        return this._containerWidthCss;\n    }\n\n    public get containerMarginCss(): string {\n        return this._containerMarginCss;\n    }\n\n    public get containerLeftCss(): string {\n        return this._containerLeftCss;\n    }\n\n    public get containerHeight(): number {\n        return this._containerHeight;\n    }\n\n    public get containerHeightCss(): string {\n        return this._containerHeightCss;\n    }\n\n    public get containerBottomCss(): string {\n        return this._containerBottomCss;\n    }\n\n    public get stepCircleSize(): number {\n        return this._stepCircleSize;\n    }\n\n    public get stepCircleSizeCss(): string {\n        return this._stepCircleSizeCss;\n    }\n\n    public get stepCircleMarginCss(): string {\n        return this._stepCircleMarginCss;\n    }\n\n    public get turnCircleSize(): number {\n        return this._turnCircleSize;\n    }\n\n    public get turnCircleSizeCss(): string {\n        return this._turnCircleSizeCss;\n    }\n\n    public get outerRadius(): number {\n        return this._outerRadius;\n    }\n\n    public get innerRadius(): number {\n        return this._innerRadius;\n    }\n\n    public get shadowOffset(): number {\n        return this._shadowOffset;\n    }\n\n    /**\n     * Configures the min and max width values.\n     *\n     * @param {IDirectionConfiguration} configuration Configuration\n     * with min and max width values.\n     */\n    public configure(configuration: IDirectionConfiguration): void {\n        this._configure(configuration);\n        this._reset();\n    }\n\n    /**\n     * Resizes all properties according to the width and height\n     * of the size object.\n     *\n     * @param {ISize} size The size of the container element.\n     */\n    public resize(size: ISize): void {\n        this._resize(size);\n        this._reset();\n    }\n\n    /**\n     * Calculates the coordinates on the unit circle for an angle.\n     *\n     * @param {number} angle Angle in radians.\n     * @returns {Array<number>} The x and y coordinates on the unit circle.\n     */\n    public angleToCoordinates(angle: number): number[] {\n        return [Math.cos(angle), Math.sin(angle)];\n    }\n\n    /**\n     * Calculates the coordinates on the unit circle for the\n     * relative angle between the first and second angle.\n     *\n     * @param {number} first Angle in radians.\n     * @param {number} second Angle in radians.\n     * @returns {Array<number>} The x and y coordinates on the unit circle\n     * for the relative angle between the first and second angle.\n     */\n    public relativeAngleToCoordiantes(first: number, second: number): number[] {\n        let relativeAngle: number = this._spatial.wrapAngle(first - second);\n\n        return this.angleToCoordinates(relativeAngle);\n    }\n\n    private _configure(configuration: IDirectionConfiguration): void {\n        this._minWidth = configuration.minWidth;\n        this._maxWidth = this._getMaxWidth(configuration.minWidth, configuration.maxWidth);\n    }\n\n    private _resize(size: ISize): void {\n        this._elementWidth = size.width;\n        this._elementHeight = size.height;\n    }\n\n    private _reset(): void {\n        this._containerWidth = this._getContainerWidth(this._elementWidth, this._elementHeight);\n        this._containerHeight = this._getContainerHeight(this.containerWidth);\n        this._stepCircleSize = this._getStepCircleDiameter(this._containerHeight);\n        this._turnCircleSize = this._getTurnCircleDiameter(this.containerHeight);\n        this._outerRadius = this._getOuterRadius(this._containerHeight);\n        this._innerRadius = this._getInnerRadius(this._containerHeight);\n\n        this._shadowOffset = 3;\n\n        this._containerWidthCss = this._numberToCssPixels(this._containerWidth);\n        this._containerMarginCss = this._numberToCssPixels(-0.5 * this._containerWidth);\n        this._containerLeftCss = this._numberToCssPixels(Math.floor(0.5 * this._elementWidth));\n        this._containerHeightCss = this._numberToCssPixels(this._containerHeight);\n        this._containerBottomCss = this._numberToCssPixels(Math.floor(-0.08 * this._containerHeight));\n        this._stepCircleSizeCss = this._numberToCssPixels(this._stepCircleSize);\n        this._stepCircleMarginCss = this._numberToCssPixels(-0.5 * this._stepCircleSize);\n        this._turnCircleSizeCss = this._numberToCssPixels(this._turnCircleSize);\n    }\n\n    private _getContainerWidth(elementWidth: number, elementHeight: number): number {\n        let relativeWidth: number =\n            (elementWidth - this._minThresholdWidth) / (this._maxThresholdWidth - this._minThresholdWidth);\n        let relativeHeight: number =\n            (elementHeight - this._minThresholdHeight) / (this._maxThresholdHeight - this._minThresholdHeight);\n\n        let coeff: number = Math.max(0, Math.min(1, Math.min(relativeWidth, relativeHeight)));\n\n        coeff = 0.04 * Math.round(25 * coeff);\n\n        return this._minWidth + coeff * (this._maxWidth - this._minWidth);\n    }\n\n    private _getContainerHeight(containerWidth: number): number {\n        return 0.77 * containerWidth;\n    }\n\n    private _getStepCircleDiameter(containerHeight: number): number {\n        return 0.34 * containerHeight;\n    }\n\n    private _getTurnCircleDiameter(containerHeight: number): number {\n        return 0.3 * containerHeight;\n    }\n\n    private _getOuterRadius(containerHeight: number): number {\n        return 0.31 * containerHeight;\n    }\n\n    private _getInnerRadius(containerHeight: number): number {\n        return 0.125 * containerHeight;\n    }\n\n    private _numberToCssPixels(value: number): string {\n        return value + \"px\";\n    }\n\n    private _getMaxWidth(value: number, minWidth: number): number {\n        return value > minWidth ? value : minWidth;\n    }\n}\n\nexport default DirectionDOMCalculator;\n",
     "import * as vd from \"virtual-dom\";\n\nimport {\n    DirectionDOMCalculator,\n    IDirectionConfiguration,\n} from \"../../Component\";\nimport {\n    EdgeDirection,\n    IEdge,\n} from \"../../Edge\";\nimport {AbortMapillaryError} from \"../../Error\";\nimport {Spatial} from \"../../Geo\";\nimport {\n    IEdgeStatus,\n    Node,\n    Sequence,\n} from \"../../Graph\";\nimport {\n    ISize,\n    RenderCamera,\n} from \"../../Render\";\nimport {IRotation} from \"../../State\";\nimport {Navigator} from \"../../Viewer\";\n\n/**\n * @class DirectionDOMRenderer\n * @classdesc DOM renderer for direction arrows.\n */\nexport class DirectionDOMRenderer {\n    private _spatial: Spatial;\n    private _calculator: DirectionDOMCalculator;\n\n    private _node: Node;\n\n    private _rotation: IRotation;\n    private _epsilon: number;\n\n    private _highlightKey: string;\n    private _distinguishSequence: boolean;\n\n    private _needsRender: boolean;\n\n    private _stepEdges: IEdge[];\n    private _turnEdges: IEdge[];\n    private _panoEdges: IEdge[];\n    private _sequenceEdgeKeys: string[];\n\n    private _stepDirections: EdgeDirection[];\n    private _turnDirections: EdgeDirection[];\n    private _turnNames: {[dir: number]: string};\n\n    private _isEdge: boolean = false;\n\n    constructor(configuration: IDirectionConfiguration, size: ISize) {\n        this._spatial = new Spatial();\n        this._calculator = new DirectionDOMCalculator(configuration, size);\n\n        this._node = null;\n\n        this._rotation = { phi: 0, theta: 0 };\n        this._epsilon = 0.5 * Math.PI / 180;\n\n        this._highlightKey = null;\n        this._distinguishSequence = false;\n\n        this._needsRender = false;\n\n        this._stepEdges = [];\n        this._turnEdges = [];\n        this._panoEdges = [];\n        this._sequenceEdgeKeys = [];\n\n        this._stepDirections = [\n            EdgeDirection.StepForward,\n            EdgeDirection.StepBackward,\n            EdgeDirection.StepLeft,\n            EdgeDirection.StepRight,\n        ];\n\n        this._turnDirections = [\n            EdgeDirection.TurnLeft,\n            EdgeDirection.TurnRight,\n            EdgeDirection.TurnU,\n        ];\n\n        this._turnNames = {};\n        this._turnNames[EdgeDirection.TurnLeft] = \"TurnLeft\";\n        this._turnNames[EdgeDirection.TurnRight] = \"TurnRight\";\n        this._turnNames[EdgeDirection.TurnU] = \"TurnAround\";\n\n        // detects IE 8-11, then Edge 20+.\n        let isIE: boolean = !!(<any>document).documentMode;\n        this._isEdge = !isIE && !!(<any>window).StyleMedia;\n    }\n\n    /**\n     * Get needs render.\n     *\n     * @returns {boolean} Value indicating whether render should be called.\n     */\n    public get needsRender(): boolean {\n        return this._needsRender;\n    }\n\n    /**\n     * Renders virtual DOM elements.\n     *\n     * @description Calling render resets the needs render property.\n     */\n    public render(navigator: Navigator): vd.VNode {\n        this._needsRender = false;\n\n        let rotation: IRotation = this._rotation;\n\n        let steps: vd.VNode[] = [];\n        let turns: vd.VNode[] = [];\n\n        if (this._node.pano) {\n            steps = steps.concat(this._createPanoArrows(navigator, rotation));\n        } else {\n            steps = steps.concat(this._createPerspectiveToPanoArrows(navigator, rotation));\n            steps = steps.concat(this._createStepArrows(navigator, rotation));\n            turns = turns.concat(this._createTurnArrows(navigator));\n        }\n\n        return this._getContainer(steps, turns, rotation);\n    }\n\n    public setEdges(edgeStatus: IEdgeStatus, sequence: Sequence): void {\n        this._setEdges(edgeStatus, sequence);\n\n        this._setNeedsRender();\n    }\n\n    /**\n     * Set node for which to show edges.\n     *\n     * @param {Node} node\n     */\n    public setNode(node: Node): void {\n        this._node = node;\n        this._clearEdges();\n\n        this._setNeedsRender();\n    }\n\n    /**\n     * Set the render camera to use for calculating rotations.\n     *\n     * @param {RenderCamera} renderCamera\n     */\n    public setRenderCamera(renderCamera: RenderCamera): void {\n        let rotation: IRotation = renderCamera.rotation;\n\n        if (Math.abs(rotation.phi - this._rotation.phi) < this._epsilon) {\n            return;\n        }\n\n        this._rotation = rotation;\n\n        this._setNeedsRender();\n    }\n\n    /**\n     * Set configuration values.\n     *\n     * @param {IDirectionConfiguration} configuration\n     */\n    public setConfiguration(configuration: IDirectionConfiguration): void {\n        let needsRender: boolean = false;\n        if (this._highlightKey !== configuration.highlightKey ||\n            this._distinguishSequence !== configuration.distinguishSequence) {\n            this._highlightKey = configuration.highlightKey;\n            this._distinguishSequence = configuration.distinguishSequence;\n\n            needsRender = true;\n        }\n\n        if (this._calculator.minWidth !== configuration.minWidth ||\n            this._calculator.maxWidth !== configuration.maxWidth) {\n            this._calculator.configure(configuration);\n            needsRender = true;\n        }\n\n        if (needsRender) {\n            this._setNeedsRender();\n        }\n    }\n\n    /**\n     * Detect the element's width and height and resize\n     * elements accordingly.\n     *\n     * @param {ISize} size Size of vßiewer container element.\n     */\n    public resize(size: ISize): void {\n        this._calculator.resize(size);\n\n        this._setNeedsRender();\n    }\n\n    private _setNeedsRender(): void {\n        if (this._node != null) {\n            this._needsRender = true;\n        }\n    }\n\n    private _clearEdges(): void {\n        this._stepEdges = [];\n        this._turnEdges = [];\n        this._panoEdges = [];\n        this._sequenceEdgeKeys = [];\n    }\n\n    private _setEdges(edgeStatus: IEdgeStatus, sequence: Sequence): void {\n        this._stepEdges = [];\n        this._turnEdges = [];\n        this._panoEdges = [];\n        this._sequenceEdgeKeys = [];\n\n        for (let edge of edgeStatus.edges) {\n            let direction: EdgeDirection = edge.data.direction;\n\n            if (this._stepDirections.indexOf(direction) > -1) {\n                this._stepEdges.push(edge);\n                continue;\n            }\n\n            if (this._turnDirections.indexOf(direction) > -1) {\n                this._turnEdges.push(edge);\n                continue;\n            }\n\n            if (edge.data.direction === EdgeDirection.Pano) {\n                this._panoEdges.push(edge);\n            }\n        }\n\n        if (this._distinguishSequence && sequence != null) {\n            let edges: IEdge[] = this._panoEdges\n                .concat(this._stepEdges)\n                .concat(this._turnEdges);\n\n            for (let edge of edges) {\n                let edgeKey: string = edge.to;\n\n                for (let sequenceKey of sequence.keys) {\n                    if (sequenceKey === edgeKey) {\n                        this._sequenceEdgeKeys.push(edgeKey);\n                        break;\n                    }\n                }\n            }\n        }\n    }\n\n    private _createPanoArrows(navigator: Navigator, rotation: IRotation): vd.VNode[] {\n        let arrows: vd.VNode[] = [];\n\n        for (let panoEdge of this._panoEdges) {\n            arrows.push(\n                this._createVNodeByKey(\n                    navigator,\n                    panoEdge.to,\n                    panoEdge.data.worldMotionAzimuth,\n                    rotation,\n                    this._calculator.outerRadius,\n                    \"DirectionsArrowPano\"));\n        }\n\n        for (let stepEdge of this._stepEdges) {\n            arrows.push(\n                this._createPanoToPerspectiveArrow(\n                    navigator,\n                    stepEdge.to,\n                    stepEdge.data.worldMotionAzimuth,\n                    rotation,\n                    stepEdge.data.direction));\n        }\n\n        return arrows;\n    }\n\n    private _createPanoToPerspectiveArrow(\n        navigator: Navigator,\n        key: string,\n        azimuth: number,\n        rotation: IRotation,\n        direction: EdgeDirection): vd.VNode {\n\n        let threshold: number = Math.PI / 8;\n\n        let relativePhi: number = rotation.phi;\n\n        switch (direction) {\n            case EdgeDirection.StepBackward:\n                relativePhi = rotation.phi - Math.PI;\n                break;\n            case EdgeDirection.StepLeft:\n                relativePhi = rotation.phi + Math.PI / 2;\n                break;\n            case EdgeDirection.StepRight:\n                relativePhi = rotation.phi - Math.PI / 2;\n                break;\n            default:\n                break;\n        }\n\n        if (Math.abs(this._spatial.wrapAngle(azimuth - relativePhi)) < threshold) {\n            return this._createVNodeByKey(\n                navigator,\n                key,\n                azimuth,\n                rotation,\n                this._calculator.outerRadius,\n                \"DirectionsArrowStep\");\n        }\n\n        return this._createVNodeDisabled(key, azimuth, rotation);\n    }\n\n    private _createPerspectiveToPanoArrows(navigator: Navigator, rotation: IRotation): vd.VNode[] {\n        let arrows: vd.VNode[] = [];\n\n        for (let panoEdge of this._panoEdges) {\n            arrows.push(\n                this._createVNodeByKey(\n                    navigator,\n                    panoEdge.to,\n                    panoEdge.data.worldMotionAzimuth,\n                    rotation,\n                    this._calculator.innerRadius,\n                    \"DirectionsArrowPano\",\n                    true));\n        }\n\n        return arrows;\n    }\n\n    private _createStepArrows(navigator: Navigator, rotation: IRotation): vd.VNode[] {\n        let arrows: vd.VNode[] = [];\n\n        for (let stepEdge of this._stepEdges) {\n            arrows.push(\n                this._createVNodeByDirection(\n                    navigator,\n                    stepEdge.to,\n                    stepEdge.data.worldMotionAzimuth,\n                    rotation,\n                    stepEdge.data.direction));\n        }\n\n        return arrows;\n    }\n\n    private _createTurnArrows(navigator: Navigator): vd.VNode[] {\n        let turns: vd.VNode[] = [];\n\n        for (let turnEdge of this._turnEdges) {\n            let direction: EdgeDirection = turnEdge.data.direction;\n            let name: string = this._turnNames[direction];\n\n            turns.push(\n                this._createVNodeByTurn(\n                    navigator,\n                    turnEdge.to,\n                    name,\n                    direction));\n        }\n\n        return turns;\n    }\n\n    private _createVNodeByKey(\n        navigator: Navigator,\n        key: string,\n        azimuth: number,\n        rotation: IRotation,\n        offset: number,\n        className: string,\n        shiftVertically?: boolean): vd.VNode {\n\n        let onClick: (e: Event) => void =\n            (e: Event): void => {\n                navigator.moveToKey$(key)\n                    .subscribe(\n                        undefined,\n                        (error: Error): void => {\n                            if (!(error instanceof AbortMapillaryError)) {\n                                console.error(error);\n                            }\n                        });\n            };\n\n        return this._createVNode(\n            key,\n            azimuth,\n            rotation,\n            offset,\n            className,\n            \"DirectionsCircle\",\n            onClick,\n            shiftVertically);\n    }\n\n    private _createVNodeByDirection(\n        navigator: Navigator,\n        key: string,\n        azimuth: number,\n        rotation: IRotation,\n        direction: EdgeDirection): vd.VNode {\n\n        let onClick: (e: Event) => void =\n            (e: Event): void => {\n                navigator.moveDir$(direction)\n                    .subscribe(\n                        undefined,\n                        (error: Error): void => {\n                            if (!(error instanceof AbortMapillaryError)) {\n                                console.error(error);\n                            }\n                        });\n            };\n\n        return this._createVNode(\n            key,\n            azimuth,\n            rotation,\n            this._calculator.outerRadius,\n            \"DirectionsArrowStep\",\n            \"DirectionsCircle\",\n            onClick);\n    }\n\n    private _createVNodeByTurn(\n        navigator: Navigator,\n        key: string,\n        className: string,\n        direction: EdgeDirection): vd.VNode {\n\n        let onClick: (e: Event) => void =\n            (e: Event): void => {\n                navigator.moveDir$(direction)\n                    .subscribe(\n                        undefined,\n                        (error: Error): void => {\n                            if (!(error instanceof AbortMapillaryError)) {\n                                console.error(error);\n                            }\n                        });\n            };\n\n        let style: any = {\n            height: this._calculator.turnCircleSizeCss,\n            transform: \"rotate(0)\", // apply transform to preserve 3D\n            width: this._calculator.turnCircleSizeCss,\n        };\n\n        switch (direction) {\n            case EdgeDirection.TurnLeft:\n                style.left = \"5px\";\n                style.top = \"5px\";\n                break;\n            case EdgeDirection.TurnRight:\n                style.right = \"5px\";\n                style.top = \"5px\";\n                break;\n            case EdgeDirection.TurnU:\n                style.left = \"5px\";\n                style.bottom = \"5px\";\n                break;\n            default:\n                break;\n        }\n\n        let circleProperties: vd.createProperties = {\n            attributes: {\n                \"data-key\": key,\n            },\n            onclick: onClick,\n            style: style,\n        };\n\n        let circleClassName: string = \"TurnCircle\";\n\n        if (this._sequenceEdgeKeys.indexOf(key) > -1) {\n            circleClassName += \"Sequence\";\n        }\n\n        if (this._highlightKey === key) {\n            circleClassName += \"Highlight\";\n        }\n\n        let turn: vd.VNode = vd.h(`div.${className}`, {}, []);\n\n        return vd.h(\"div.\" + circleClassName, circleProperties, [turn]);\n    }\n\n    private _createVNodeDisabled(key: string, azimuth: number, rotation: IRotation): vd.VNode {\n        return this._createVNode(\n            key,\n            azimuth,\n            rotation,\n            this._calculator.outerRadius,\n            \"DirectionsArrowDisabled\",\n            \"DirectionsCircleDisabled\");\n    }\n\n    private _createVNode(\n        key: string,\n        azimuth: number,\n        rotation: IRotation,\n        radius: number,\n        className: string,\n        circleClassName: string,\n        onClick?: (e: Event) => void,\n        shiftVertically?: boolean): vd.VNode {\n\n        let translation: number[] = this._calculator.angleToCoordinates(azimuth - rotation.phi);\n\n        // rotate 90 degrees clockwise and flip over X-axis\n        let translationX: number = Math.round(-radius * translation[1] + 0.5 * this._calculator.containerWidth);\n        let translationY: number = Math.round(-radius * translation[0] + 0.5 * this._calculator.containerHeight);\n\n        let shadowTranslation: number[] = this._calculator.relativeAngleToCoordiantes(azimuth, rotation.phi);\n        let shadowOffset: number = this._calculator.shadowOffset;\n        let shadowTranslationX: number = -shadowOffset * shadowTranslation[1];\n        let shadowTranslationY: number = shadowOffset * shadowTranslation[0];\n\n        let filter: string = `drop-shadow(${shadowTranslationX}px ${shadowTranslationY}px 1px rgba(0,0,0,0.8))`;\n\n        let properties: vd.createProperties = {\n            style: {\n                \"-webkit-filter\": filter,\n                filter: filter,\n            },\n        };\n\n        let chevron: vd.VNode = vd.h(\"div.\" + className, properties, []);\n\n        let azimuthDeg: number = -this._spatial.radToDeg(azimuth - rotation.phi);\n        let circleTransform: string = shiftVertically ?\n            `translate(${translationX}px, ${translationY}px) rotate(${azimuthDeg}deg) translateZ(-0.01px)` :\n            `translate(${translationX}px, ${translationY}px) rotate(${azimuthDeg}deg)`;\n\n        let circleProperties: vd.createProperties = {\n            attributes: { \"data-key\": key },\n            onclick: onClick,\n            style: {\n                height: this._calculator.stepCircleSizeCss,\n                marginLeft: this._calculator.stepCircleMarginCss,\n                marginTop: this._calculator.stepCircleMarginCss,\n                transform: circleTransform,\n                width: this._calculator.stepCircleSizeCss,\n            },\n        };\n\n        if (this._sequenceEdgeKeys.indexOf(key) > -1) {\n            circleClassName += \"Sequence\";\n        }\n\n        if (this._highlightKey === key) {\n            circleClassName += \"Highlight\";\n        }\n\n        return vd.h(\"div.\" + circleClassName, circleProperties, [chevron]);\n    }\n\n    private _getContainer(\n        steps: vd.VNode[],\n        turns: vd.VNode[],\n        rotation: IRotation): vd.VNode {\n\n        // edge does not handle hover on perspective transforms.\n        let transform: string = this._isEdge ?\n            \"rotateX(60deg)\" :\n            `perspective(${this._calculator.containerWidthCss}) rotateX(60deg)`;\n\n        let properties: vd.createProperties = {\n            oncontextmenu: (event: MouseEvent): void => { event.preventDefault(); },\n            style: {\n                bottom: this._calculator.containerBottomCss,\n                height: this._calculator.containerHeightCss,\n                left: this._calculator.containerLeftCss,\n                marginLeft: this._calculator.containerMarginCss,\n                transform: transform,\n                width: this._calculator.containerWidthCss,\n            },\n        };\n\n        return vd.h(\"div.DirectionsPerspective\", properties, turns.concat(steps));\n    }\n}\n\nexport default DirectionDOMRenderer;\n",
-    "import {\n    empty as observableEmpty,\n    of as observableOf,\n    combineLatest as observableCombineLatest,\n    Observable,\n    Subscription,\n    Subject,\n} from \"rxjs\";\n\nimport {\n    switchMap,\n    pairwise,\n    debounceTime,\n    refCount,\n    publishReplay,\n    withLatestFrom,\n    scan,\n    filter,\n    first,\n    catchError,\n    takeUntil,\n    startWith,\n    skipWhile,\n    map,\n    publish,\n    distinctUntilChanged,\n} from \"rxjs/operators\";\n\nimport {\n    ComponentService,\n    Component,\n    IComponentConfiguration,\n    ImagePlaneGLRenderer,\n} from \"../../Component\";\nimport {\n    Transform,\n} from \"../../Geo\";\nimport {\n    ICurrentState,\n    IFrame,\n} from \"../../State\";\nimport {\n    Container,\n    Navigator,\n    ImageSize,\n} from \"../../Viewer\";\nimport {\n    GLRenderStage,\n    IGLRenderHash,\n    ISize,\n    RenderCamera,\n} from \"../../Render\";\nimport {Node as GraphNode} from \"../../Graph\";\nimport {\n    ImageTileLoader,\n    ImageTileStore,\n    IRegionOfInterest,\n    RegionOfInterestCalculator,\n    TextureProvider,\n} from \"../../Tiles\";\nimport {\n    Settings,\n    Urls,\n} from \"../../Utils\";\n\ninterface IImagePlaneGLRendererOperation {\n    (renderer: ImagePlaneGLRenderer): ImagePlaneGLRenderer;\n}\n\ntype PositionLookat = [THREE.Vector3, THREE.Vector3, number, number, number];\n\nexport class ImagePlaneComponent extends Component<IComponentConfiguration> {\n    public static componentName: string = \"imagePlane\";\n\n    private _rendererOperation$: Subject<IImagePlaneGLRendererOperation>;\n    private _renderer$: Observable<ImagePlaneGLRenderer>;\n    private _rendererCreator$: Subject<void>;\n    private _rendererDisposer$: Subject<void>;\n\n    private _abortTextureProviderSubscription: Subscription;\n    private _hasTextureSubscription: Subscription;\n    private _rendererSubscription: Subscription;\n    private _setRegionOfInterestSubscription: Subscription;\n    private _setTextureProviderSubscription: Subscription;\n    private _setTileSizeSubscription: Subscription;\n    private _stateSubscription: Subscription;\n    private _textureProviderSubscription: Subscription;\n    private _updateBackgroundSubscription: Subscription;\n    private _updateTextureImageSubscription: Subscription;\n\n    private _imageTileLoader: ImageTileLoader;\n    private _roiCalculator: RegionOfInterestCalculator;\n\n    constructor (name: string, container: Container, navigator: Navigator) {\n        super(name, container, navigator);\n\n        this._imageTileLoader = new ImageTileLoader(Urls.tileScheme, Urls.tileDomain, Urls.origin);\n        this._roiCalculator = new RegionOfInterestCalculator();\n\n        this._rendererOperation$ = new Subject<IImagePlaneGLRendererOperation>();\n        this._rendererCreator$ = new Subject<void>();\n        this._rendererDisposer$ = new Subject<void>();\n\n        this._renderer$ = this._rendererOperation$.pipe(\n            scan(\n                (renderer: ImagePlaneGLRenderer, operation: IImagePlaneGLRendererOperation): ImagePlaneGLRenderer => {\n                    return operation(renderer);\n                },\n                null),\n            filter(\n                (renderer: ImagePlaneGLRenderer): boolean => {\n                    return renderer != null;\n                }),\n            distinctUntilChanged(\n                undefined,\n                (renderer: ImagePlaneGLRenderer): number => {\n                    return renderer.frameId;\n                }));\n\n        this._rendererCreator$.pipe(\n            map(\n                (): IImagePlaneGLRendererOperation => {\n                    return (renderer: ImagePlaneGLRenderer): ImagePlaneGLRenderer => {\n                        if (renderer != null) {\n                            throw new Error(\"Multiple image plane states can not be created at the same time\");\n                        }\n\n                        return new ImagePlaneGLRenderer();\n                    };\n                }))\n            .subscribe(this._rendererOperation$);\n\n        this._rendererDisposer$.pipe(\n            map(\n                (): IImagePlaneGLRendererOperation => {\n                    return (renderer: ImagePlaneGLRenderer): ImagePlaneGLRenderer => {\n                        renderer.dispose();\n\n                        return null;\n                    };\n                }))\n            .subscribe(this._rendererOperation$);\n    }\n\n    protected _activate(): void {\n        this._rendererSubscription = this._renderer$.pipe(\n            map(\n                (renderer: ImagePlaneGLRenderer): IGLRenderHash => {\n                    let renderHash: IGLRenderHash = {\n                        name: this._name,\n                        render: {\n                            frameId: renderer.frameId,\n                            needsRender: renderer.needsRender,\n                            render: renderer.render.bind(renderer),\n                            stage: GLRenderStage.Background,\n                        },\n                    };\n\n                    renderer.clearNeedsRender();\n\n                    return renderHash;\n                }))\n            .subscribe(this._container.glRenderer.render$);\n\n        this._rendererCreator$.next(null);\n\n        this._stateSubscription = this._navigator.stateService.currentState$.pipe(\n            map(\n                (frame: IFrame): IImagePlaneGLRendererOperation => {\n                    return (renderer: ImagePlaneGLRenderer): ImagePlaneGLRenderer => {\n                        renderer.updateFrame(frame);\n\n                        return renderer;\n                    };\n                }))\n            .subscribe(this._rendererOperation$);\n\n        let textureProvider$: Observable<TextureProvider> = this._navigator.stateService.currentState$.pipe(\n            distinctUntilChanged(\n                undefined,\n                (frame: IFrame): string => {\n                    return frame.state.currentNode.key;\n                }),\n            withLatestFrom(\n                this._container.glRenderer.webGLRenderer$,\n                this._container.renderService.size$),\n            map(\n                ([frame, renderer, size]: [IFrame, THREE.WebGLRenderer, ISize]): TextureProvider => {\n                    let state: ICurrentState = frame.state;\n                    let viewportSize: number = Math.max(size.width, size.height);\n\n                    let currentNode: GraphNode = state.currentNode;\n                    let currentTransform: Transform = state.currentTransform;\n                    let tileSize: number = viewportSize > 2048 ? 2048 : viewportSize > 1024 ? 1024 : 512;\n\n                    return new TextureProvider(\n                        currentNode.key,\n                        currentTransform.basicWidth,\n                        currentTransform.basicHeight,\n                        tileSize,\n                        currentNode.image,\n                        this._imageTileLoader,\n                        new ImageTileStore(),\n                        renderer);\n                }),\n            publishReplay(1),\n            refCount());\n\n        this._textureProviderSubscription = textureProvider$.subscribe(() => { /*noop*/ });\n\n        this._setTextureProviderSubscription = textureProvider$.pipe(\n            map(\n                (provider: TextureProvider): IImagePlaneGLRendererOperation => {\n                    return (renderer: ImagePlaneGLRenderer): ImagePlaneGLRenderer => {\n                        renderer.setTextureProvider(provider.key, provider);\n\n                        return renderer;\n                    };\n                }))\n            .subscribe(this._rendererOperation$);\n\n        this._setTileSizeSubscription = this._container.renderService.size$.pipe(\n            switchMap(\n                (size: ISize): Observable<[TextureProvider, ISize]> => {\n                    return observableCombineLatest(\n                            textureProvider$,\n                            observableOf<ISize>(size)).pipe(\n                        first());\n                }))\n            .subscribe(\n                ([provider, size]: [TextureProvider, ISize]): void => {\n                    let viewportSize: number = Math.max(size.width, size.height);\n                    let tileSize: number = viewportSize > 2048 ? 2048 : viewportSize > 1024 ? 1024 : 512;\n\n                    provider.setTileSize(tileSize);\n                });\n\n        this._abortTextureProviderSubscription = textureProvider$.pipe(\n            pairwise())\n            .subscribe(\n                (pair: [TextureProvider, TextureProvider]): void => {\n                    let previous: TextureProvider = pair[0];\n                    previous.abort();\n                });\n\n        let roiTrigger$: Observable<[RenderCamera, ISize, Transform]> = observableCombineLatest(\n                this._container.renderService.renderCameraFrame$,\n                this._container.renderService.size$.pipe(debounceTime(250))).pipe(\n            map(\n                ([camera, size]: [RenderCamera, ISize]): PositionLookat => {\n                    return [\n                        camera.camera.position.clone(),\n                        camera.camera.lookat.clone(),\n                        camera.zoom.valueOf(),\n                        size.height.valueOf(),\n                        size.width.valueOf()];\n                }),\n            pairwise(),\n            skipWhile(\n                (pls: [PositionLookat, PositionLookat]): boolean => {\n                    return pls[1][2] - pls[0][2] < 0 || pls[1][2] === 0;\n                }),\n            map(\n                (pls: [PositionLookat, PositionLookat]): boolean => {\n                    let samePosition: boolean = pls[0][0].equals(pls[1][0]);\n                    let sameLookat: boolean = pls[0][1].equals(pls[1][1]);\n                    let sameZoom: boolean = pls[0][2] === pls[1][2];\n                    let sameHeight: boolean = pls[0][3] === pls[1][3];\n                    let sameWidth: boolean = pls[0][4] === pls[1][4];\n\n                    return samePosition && sameLookat && sameZoom && sameHeight && sameWidth;\n                }),\n            distinctUntilChanged(),\n            filter(\n                (stalled: boolean): boolean => {\n                    return stalled;\n                }),\n            switchMap(\n                (stalled: boolean): Observable<RenderCamera> => {\n                    return this._container.renderService.renderCameraFrame$.pipe(\n                        first());\n                }),\n            withLatestFrom(\n                this._container.renderService.size$,\n                this._navigator.stateService.currentTransform$));\n\n        this._setRegionOfInterestSubscription = textureProvider$.pipe(\n            switchMap(\n                (provider: TextureProvider): Observable<[IRegionOfInterest, TextureProvider]> => {\n                    return roiTrigger$.pipe(\n                        map(\n                            ([camera, size, transform]: [RenderCamera, ISize, Transform]):\n                            [IRegionOfInterest, TextureProvider] => {\n                                return [\n                                    this._roiCalculator.computeRegionOfInterest(camera, size, transform),\n                                    provider,\n                                ];\n                            }));\n                }),\n            filter(\n                (args: [IRegionOfInterest, TextureProvider]): boolean => {\n                    return !args[1].disposed;\n                }))\n            .subscribe(\n                (args: [IRegionOfInterest, TextureProvider]): void => {\n                    let roi: IRegionOfInterest = args[0];\n                    let provider: TextureProvider = args[1];\n\n                    provider.setRegionOfInterest(roi);\n                });\n\n        let hasTexture$: Observable<boolean> = textureProvider$.pipe(\n            switchMap(\n                (provider: TextureProvider): Observable<boolean> => {\n                    return provider.hasTexture$;\n                }),\n            startWith(false),\n            publishReplay(1),\n            refCount());\n\n        this._hasTextureSubscription = hasTexture$.subscribe(() => { /*noop*/ });\n\n        let nodeImage$: Observable<[HTMLImageElement, GraphNode]> = this._navigator.stateService.currentState$.pipe(\n            filter(\n                (frame: IFrame): boolean => {\n                    return frame.state.nodesAhead === 0;\n                }),\n            map(\n                (frame: IFrame): GraphNode => {\n                    return frame.state.currentNode;\n                }),\n            distinctUntilChanged(\n                undefined,\n                (node: GraphNode): string => {\n                    return node.key;\n                }),\n            debounceTime(1000),\n            withLatestFrom(hasTexture$),\n            filter(\n                (args: [GraphNode, boolean]): boolean => {\n                    return !args[1];\n                }),\n            map(\n                (args: [GraphNode, boolean]): GraphNode => {\n                    return args[0];\n                }),\n            filter(\n                (node: GraphNode): boolean => {\n                    return node.pano ?\n                        Settings.maxImageSize > Settings.basePanoramaSize :\n                        Settings.maxImageSize > Settings.baseImageSize;\n                }),\n            switchMap(\n                (node: GraphNode): Observable<[HTMLImageElement, GraphNode]> => {\n                    let baseImageSize: ImageSize = node.pano ?\n                        Settings.basePanoramaSize :\n                        Settings.baseImageSize;\n\n                    if (Math.max(node.image.width, node.image.height) > baseImageSize) {\n                        return observableEmpty();\n                    }\n\n                    let image$: Observable<[HTMLImageElement, GraphNode]> = node\n                        .cacheImage$(Settings.maxImageSize).pipe(\n                            map(\n                                (n: GraphNode): [HTMLImageElement, GraphNode] => {\n                                    return [n.image, n];\n                                }));\n\n                    return image$.pipe(\n                        takeUntil(\n                            hasTexture$.pipe(\n                                filter(\n                                    (hasTexture: boolean): boolean => {\n\n                                        return hasTexture;\n                                    }))),\n                        catchError(\n                            (error: Error, caught: Observable<[HTMLImageElement, GraphNode]>):\n                                Observable<[HTMLImageElement, GraphNode]> => {\n                                console.error(`Failed to fetch high res image (${node.key})`, error);\n\n                                return observableEmpty();\n                            }));\n                })).pipe(\n            publish(),\n            refCount());\n\n        this._updateBackgroundSubscription = nodeImage$.pipe(\n            withLatestFrom(textureProvider$))\n            .subscribe(\n                (args: [[HTMLImageElement, GraphNode], TextureProvider]): void => {\n                    if (args[0][1].key !== args[1].key ||\n                        args[1].disposed) {\n                        return;\n                    }\n\n                    args[1].updateBackground(args[0][0]);\n                });\n\n        this._updateTextureImageSubscription = nodeImage$.pipe(\n            map(\n                (imn: [HTMLImageElement, GraphNode]): IImagePlaneGLRendererOperation => {\n                    return (renderer: ImagePlaneGLRenderer): ImagePlaneGLRenderer => {\n                        renderer.updateTextureImage(imn[0], imn[1]);\n\n                        return renderer;\n                    };\n                }))\n            .subscribe(this._rendererOperation$);\n    }\n\n    protected _deactivate(): void {\n        this._rendererDisposer$.next(null);\n\n        this._abortTextureProviderSubscription.unsubscribe();\n        this._hasTextureSubscription.unsubscribe();\n        this._rendererSubscription.unsubscribe();\n        this._setRegionOfInterestSubscription.unsubscribe();\n        this._setTextureProviderSubscription.unsubscribe();\n        this._setTileSizeSubscription.unsubscribe();\n        this._stateSubscription.unsubscribe();\n        this._textureProviderSubscription.unsubscribe();\n        this._updateBackgroundSubscription.unsubscribe();\n        this._updateTextureImageSubscription.unsubscribe();\n    }\n\n    protected _getDefaultConfiguration(): IComponentConfiguration {\n        return { };\n    }\n}\n\nComponentService.register(ImagePlaneComponent);\nexport default ImagePlaneComponent;\n",
-    "import * as THREE from \"three\";\n\nimport {Subscription} from \"rxjs\";\n\nimport {\n    MeshFactory,\n    MeshScene,\n    IShaderMaterial,\n} from \"../../Component\";\nimport {Node} from \"../../Graph\";\nimport {\n    ICurrentState,\n    IFrame,\n} from \"../../State\";\nimport {TextureProvider} from \"../../Tiles\";\n\nexport class ImagePlaneGLRenderer {\n    private _factory: MeshFactory;\n    private _scene: MeshScene;\n\n    private _alpha: number;\n    private _alphaOld: number;\n    private _fadeOutSpeed: number;\n\n    private _currentKey: string;\n    private _previousKey: string;\n    private _providerDisposers: { [key: string]: () => void };\n\n    private _frameId: number;\n    private _needsRender: boolean;\n\n    constructor() {\n        this._factory = new MeshFactory();\n        this._scene = new MeshScene();\n\n        this._alpha = 0;\n        this._alphaOld = 0;\n        this._fadeOutSpeed = 0.05;\n\n        this._currentKey = null;\n        this._previousKey = null;\n        this._providerDisposers = {};\n\n        this._frameId = 0;\n        this._needsRender = false;\n    }\n\n    public get frameId(): number {\n        return this._frameId;\n    }\n\n    public get needsRender(): boolean {\n        return this._needsRender;\n    }\n\n    public indicateNeedsRender(): void {\n        this._needsRender = true;\n    }\n\n    public updateFrame(frame: IFrame): void {\n        this._updateFrameId(frame.id);\n        this._needsRender = this._updateAlpha(frame.state.alpha) || this._needsRender;\n        this._needsRender = this._updateAlphaOld(frame.state.alpha) || this._needsRender;\n        this._needsRender = this._updateImagePlanes(frame.state) || this._needsRender;\n    }\n\n    public setTextureProvider(key: string, provider: TextureProvider): void {\n        if (key !== this._currentKey) {\n            return;\n        }\n\n        let createdSubscription: Subscription = provider.textureCreated$\n            .subscribe(\n                (texture: THREE.Texture): void => {\n                    this._updateTexture(texture);\n                });\n\n        let updatedSubscription: Subscription = provider.textureUpdated$\n            .subscribe(\n                (updated: boolean): void => {\n                    this._needsRender = true;\n                });\n\n        let dispose: () => void = (): void => {\n            createdSubscription.unsubscribe();\n            updatedSubscription.unsubscribe();\n            provider.dispose();\n        };\n\n        if (key in this._providerDisposers) {\n            let disposeProvider: () => void = this._providerDisposers[key];\n            disposeProvider();\n\n            delete this._providerDisposers[key];\n        }\n\n        this._providerDisposers[key] = dispose;\n    }\n\n    public _updateTexture(texture: THREE.Texture): void {\n        this._needsRender = true;\n\n        for (let plane of this._scene.imagePlanes) {\n            let material: IShaderMaterial = <IShaderMaterial>plane.material;\n\n            let oldTexture: THREE.Texture = <THREE.Texture>material.uniforms.projectorTex.value;\n            material.uniforms.projectorTex.value = null;\n            oldTexture.dispose();\n\n            material.uniforms.projectorTex.value = texture;\n        }\n    }\n\n    public updateTextureImage(image: HTMLImageElement, node?: Node): void {\n        if (this._currentKey !== node.key) {\n            return;\n        }\n\n        this._needsRender = true;\n\n        for (let plane of this._scene.imagePlanes) {\n            let material: IShaderMaterial = <IShaderMaterial>plane.material;\n            let texture: THREE.Texture = <THREE.Texture>material.uniforms.projectorTex.value;\n\n            texture.image = image;\n            texture.needsUpdate = true;\n        }\n    }\n\n    public render(\n        perspectiveCamera: THREE.PerspectiveCamera,\n        renderer: THREE.WebGLRenderer): void {\n        let planeAlpha: number = this._scene.imagePlanesOld.length ? 1 : this._alpha;\n\n        for (let plane of this._scene.imagePlanes) {\n            (<IShaderMaterial>plane.material).uniforms.opacity.value = planeAlpha;\n        }\n\n        for (let plane of this._scene.imagePlanesOld) {\n            (<IShaderMaterial>plane.material).uniforms.opacity.value = this._alphaOld;\n        }\n\n        renderer.render(this._scene.scene, perspectiveCamera);\n        renderer.render(this._scene.sceneOld, perspectiveCamera);\n\n        for (let plane of this._scene.imagePlanes) {\n            (<IShaderMaterial>plane.material).uniforms.opacity.value = this._alpha;\n        }\n\n        renderer.render(this._scene.scene, perspectiveCamera);\n    }\n\n    public clearNeedsRender(): void {\n        this._needsRender = false;\n    }\n\n    public dispose(): void {\n        this._scene.clear();\n    }\n\n    private _updateFrameId(frameId: number): void {\n        this._frameId = frameId;\n    }\n\n    private _updateAlpha(alpha: number): boolean {\n        if (alpha === this._alpha) {\n            return false;\n        }\n\n        this._alpha = alpha;\n\n        return true;\n    }\n\n    private _updateAlphaOld(alpha: number): boolean {\n        if (alpha < 1 || this._alphaOld === 0) {\n            return false;\n        }\n\n        this._alphaOld = Math.max(0, this._alphaOld - this._fadeOutSpeed);\n\n        return true;\n    }\n\n    private _updateImagePlanes(state: ICurrentState): boolean {\n        if (state.currentNode == null || state.currentNode.key === this._currentKey) {\n            return false;\n        }\n\n        let previousKey: string = state.previousNode != null ? state.previousNode.key : null;\n        let currentKey: string = state.currentNode.key;\n\n        if (this._previousKey !== previousKey &&\n            this._previousKey !== currentKey &&\n            this._previousKey in this._providerDisposers) {\n\n            let disposeProvider: () => void = this._providerDisposers[this._previousKey];\n            disposeProvider();\n\n            delete this._providerDisposers[this._previousKey];\n        }\n\n        if (previousKey != null) {\n            if (previousKey !== this._currentKey && previousKey !== this._previousKey) {\n                let previousMesh: THREE.Mesh =\n                    this._factory.createMesh(state.previousNode, state.previousTransform);\n\n                this._scene.updateImagePlanes([previousMesh]);\n            }\n\n            this._previousKey = previousKey;\n        }\n\n        this._currentKey = currentKey;\n        let currentMesh: THREE.Mesh =\n            this._factory.createMesh(state.currentNode, state.currentTransform);\n\n        this._scene.updateImagePlanes([currentMesh]);\n\n        this._alphaOld = 1;\n\n        return true;\n    }\n}\n\nexport default ImagePlaneGLRenderer;\n",
+    "import * as THREE from \"three\";\n\nimport {\n    empty as observableEmpty,\n    of as observableOf,\n    from as observableFrom,\n    combineLatest as observableCombineLatest,\n    Observable,\n    Subscription,\n    Subject,\n} from \"rxjs\";\n\nimport {\n    switchMap,\n    pairwise,\n    debounceTime,\n    refCount,\n    publishReplay,\n    withLatestFrom,\n    scan,\n    filter,\n    first,\n    catchError,\n    takeUntil,\n    startWith,\n    skipWhile,\n    map,\n    publish,\n    distinctUntilChanged,\n    mergeMap,\n    share,\n} from \"rxjs/operators\";\n\nimport {\n    ComponentService,\n    Component,\n    IComponentConfiguration,\n    ImagePlaneGLRenderer,\n} from \"../../Component\";\nimport {\n    GeoCoords,\n    Transform,\n    Geo,\n} from \"../../Geo\";\nimport {\n    ICurrentState,\n    IFrame,\n} from \"../../State\";\nimport {\n    Container,\n    Navigator,\n    ImageSize,\n} from \"../../Viewer\";\nimport {\n    GLRenderStage,\n    IGLRenderHash,\n    ISize,\n    RenderCamera,\n} from \"../../Render\";\nimport {\n    Node as GraphNode,\n} from \"../../Graph\";\nimport {\n    ImageTileLoader,\n    ImageTileStore,\n    IRegionOfInterest,\n    RegionOfInterestCalculator,\n    TextureProvider,\n} from \"../../Tiles\";\nimport {\n    Settings,\n    Urls,\n} from \"../../Utils\";\nimport ViewportCoords from \"../../geo/ViewportCoords\";\nimport Spatial from \"../../geo/Spatial\";\n\ninterface IImagePlaneGLRendererOperation {\n    (renderer: ImagePlaneGLRenderer): ImagePlaneGLRenderer;\n}\n\ntype PositionLookat = [THREE.Vector3, THREE.Vector3, number, number, number];\n\nexport class ImagePlaneComponent extends Component<IComponentConfiguration> {\n    public static componentName: string = \"imagePlane\";\n\n    private _rendererOperation$: Subject<IImagePlaneGLRendererOperation>;\n    private _renderer$: Observable<ImagePlaneGLRenderer>;\n    private _rendererCreator$: Subject<void>;\n    private _rendererDisposer$: Subject<void>;\n\n    private _abortTextureProviderSubscription: Subscription;\n    private _hasTextureSubscription: Subscription;\n    private _rendererSubscription: Subscription;\n    private _setRegionOfInterestSubscription: Subscription;\n    private _setTextureProviderSubscription: Subscription;\n    private _setTileSizeSubscription: Subscription;\n    private _stateSubscription: Subscription;\n    private _textureProviderSubscription: Subscription;\n    private _updateBackgroundSubscription: Subscription;\n    private _updateTextureImageSubscription: Subscription;\n\n    private _clearPeripheryPlaneSubscription: Subscription;\n    private _addPeripheryPlaneSubscription: Subscription;\n    private _updatePeripheryPlaneTextureSubscription: Subscription;\n    private _moveToPeripheryNodeSubscription: Subscription;\n\n    private _imageTileLoader: ImageTileLoader;\n    private _roiCalculator: RegionOfInterestCalculator;\n\n    constructor (name: string, container: Container, navigator: Navigator) {\n        super(name, container, navigator);\n\n        this._imageTileLoader = new ImageTileLoader(Urls.tileScheme, Urls.tileDomain, Urls.origin);\n        this._roiCalculator = new RegionOfInterestCalculator();\n\n        this._rendererOperation$ = new Subject<IImagePlaneGLRendererOperation>();\n        this._rendererCreator$ = new Subject<void>();\n        this._rendererDisposer$ = new Subject<void>();\n\n        this._renderer$ = this._rendererOperation$.pipe(\n            scan(\n                (renderer: ImagePlaneGLRenderer, operation: IImagePlaneGLRendererOperation): ImagePlaneGLRenderer => {\n                    return operation(renderer);\n                },\n                null),\n            filter(\n                (renderer: ImagePlaneGLRenderer): boolean => {\n                    return renderer != null;\n                }),\n            distinctUntilChanged(\n                undefined,\n                (renderer: ImagePlaneGLRenderer): number => {\n                    return renderer.frameId;\n                }));\n\n        this._rendererCreator$.pipe(\n            map(\n                (): IImagePlaneGLRendererOperation => {\n                    return (renderer: ImagePlaneGLRenderer): ImagePlaneGLRenderer => {\n                        if (renderer != null) {\n                            throw new Error(\"Multiple image plane states can not be created at the same time\");\n                        }\n\n                        return new ImagePlaneGLRenderer();\n                    };\n                }))\n            .subscribe(this._rendererOperation$);\n\n        this._rendererDisposer$.pipe(\n            map(\n                (): IImagePlaneGLRendererOperation => {\n                    return (renderer: ImagePlaneGLRenderer): ImagePlaneGLRenderer => {\n                        renderer.dispose();\n\n                        return null;\n                    };\n                }))\n            .subscribe(this._rendererOperation$);\n    }\n\n    protected _activate(): void {\n        this._rendererSubscription = this._renderer$.pipe(\n            map(\n                (renderer: ImagePlaneGLRenderer): IGLRenderHash => {\n                    let renderHash: IGLRenderHash = {\n                        name: this._name,\n                        render: {\n                            frameId: renderer.frameId,\n                            needsRender: renderer.needsRender,\n                            render: renderer.render.bind(renderer),\n                            stage: GLRenderStage.Background,\n                        },\n                    };\n\n                    renderer.clearNeedsRender();\n\n                    return renderHash;\n                }))\n            .subscribe(this._container.glRenderer.render$);\n\n        this._rendererCreator$.next(null);\n\n        this._stateSubscription = this._navigator.stateService.currentState$.pipe(\n            map(\n                (frame: IFrame): IImagePlaneGLRendererOperation => {\n                    return (renderer: ImagePlaneGLRenderer): ImagePlaneGLRenderer => {\n                        renderer.updateFrame(frame);\n\n                        return renderer;\n                    };\n                }))\n            .subscribe(this._rendererOperation$);\n\n        let textureProvider$: Observable<TextureProvider> = this._navigator.stateService.currentState$.pipe(\n            distinctUntilChanged(\n                undefined,\n                (frame: IFrame): string => {\n                    return frame.state.currentNode.key;\n                }),\n            withLatestFrom(\n                this._container.glRenderer.webGLRenderer$,\n                this._container.renderService.size$),\n            map(\n                ([frame, renderer, size]: [IFrame, THREE.WebGLRenderer, ISize]): TextureProvider => {\n                    let state: ICurrentState = frame.state;\n                    let viewportSize: number = Math.max(size.width, size.height);\n\n                    let currentNode: GraphNode = state.currentNode;\n                    let currentTransform: Transform = state.currentTransform;\n                    let tileSize: number = viewportSize > 2048 ? 2048 : viewportSize > 1024 ? 1024 : 512;\n\n                    return new TextureProvider(\n                        currentNode.key,\n                        currentTransform.basicWidth,\n                        currentTransform.basicHeight,\n                        tileSize,\n                        currentNode.image,\n                        this._imageTileLoader,\n                        new ImageTileStore(),\n                        renderer);\n                }),\n            publishReplay(1),\n            refCount());\n\n        this._textureProviderSubscription = textureProvider$.subscribe(() => { /*noop*/ });\n\n        this._setTextureProviderSubscription = textureProvider$.pipe(\n            map(\n                (provider: TextureProvider): IImagePlaneGLRendererOperation => {\n                    return (renderer: ImagePlaneGLRenderer): ImagePlaneGLRenderer => {\n                        renderer.setTextureProvider(provider.key, provider);\n\n                        return renderer;\n                    };\n                }))\n            .subscribe(this._rendererOperation$);\n\n        this._setTileSizeSubscription = this._container.renderService.size$.pipe(\n            switchMap(\n                (size: ISize): Observable<[TextureProvider, ISize]> => {\n                    return observableCombineLatest(\n                            textureProvider$,\n                            observableOf<ISize>(size)).pipe(\n                        first());\n                }))\n            .subscribe(\n                ([provider, size]: [TextureProvider, ISize]): void => {\n                    let viewportSize: number = Math.max(size.width, size.height);\n                    let tileSize: number = viewportSize > 2048 ? 2048 : viewportSize > 1024 ? 1024 : 512;\n\n                    provider.setTileSize(tileSize);\n                });\n\n        this._abortTextureProviderSubscription = textureProvider$.pipe(\n            pairwise())\n            .subscribe(\n                (pair: [TextureProvider, TextureProvider]): void => {\n                    let previous: TextureProvider = pair[0];\n                    previous.abort();\n                });\n\n        let roiTrigger$: Observable<[RenderCamera, ISize, Transform]> = observableCombineLatest(\n                this._container.renderService.renderCameraFrame$,\n                this._container.renderService.size$.pipe(debounceTime(250))).pipe(\n            map(\n                ([camera, size]: [RenderCamera, ISize]): PositionLookat => {\n                    return [\n                        camera.camera.position.clone(),\n                        camera.camera.lookat.clone(),\n                        camera.zoom.valueOf(),\n                        size.height.valueOf(),\n                        size.width.valueOf()];\n                }),\n            pairwise(),\n            skipWhile(\n                (pls: [PositionLookat, PositionLookat]): boolean => {\n                    return pls[1][2] - pls[0][2] < 0 || pls[1][2] === 0;\n                }),\n            map(\n                (pls: [PositionLookat, PositionLookat]): boolean => {\n                    let samePosition: boolean = pls[0][0].equals(pls[1][0]);\n                    let sameLookat: boolean = pls[0][1].equals(pls[1][1]);\n                    let sameZoom: boolean = pls[0][2] === pls[1][2];\n                    let sameHeight: boolean = pls[0][3] === pls[1][3];\n                    let sameWidth: boolean = pls[0][4] === pls[1][4];\n\n                    return samePosition && sameLookat && sameZoom && sameHeight && sameWidth;\n                }),\n            distinctUntilChanged(),\n            filter(\n                (stalled: boolean): boolean => {\n                    return stalled;\n                }),\n            switchMap(\n                (stalled: boolean): Observable<RenderCamera> => {\n                    return this._container.renderService.renderCameraFrame$.pipe(\n                        first());\n                }),\n            withLatestFrom(\n                this._container.renderService.size$,\n                this._navigator.stateService.currentTransform$));\n\n        this._setRegionOfInterestSubscription = textureProvider$.pipe(\n            switchMap(\n                (provider: TextureProvider): Observable<[IRegionOfInterest, TextureProvider]> => {\n                    return roiTrigger$.pipe(\n                        map(\n                            ([camera, size, transform]: [RenderCamera, ISize, Transform]):\n                            [IRegionOfInterest, TextureProvider] => {\n                                const basic: number[] = new ViewportCoords().viewportToBasic(0, 0, transform, camera.perspective);\n\n                                if (basic[0] < 0 || basic[1] < 0 || basic[0] > 1 || basic[1] > 1) {\n                                    return undefined;\n                                }\n\n                                return [\n                                    this._roiCalculator.computeRegionOfInterest(camera, size, transform),\n                                    provider,\n                                ];\n                            }),\n                        filter(\n                            (args: [IRegionOfInterest, TextureProvider]): boolean => {\n                                return !!args;\n                            }));\n                }),\n            filter(\n                (args: [IRegionOfInterest, TextureProvider]): boolean => {\n                    return !args[1].disposed;\n                }))\n            .subscribe(\n                (args: [IRegionOfInterest, TextureProvider]): void => {\n                    let roi: IRegionOfInterest = args[0];\n                    let provider: TextureProvider = args[1];\n\n                    provider.setRegionOfInterest(roi);\n                });\n\n        let hasTexture$: Observable<boolean> = textureProvider$.pipe(\n            switchMap(\n                (provider: TextureProvider): Observable<boolean> => {\n                    return provider.hasTexture$;\n                }),\n            startWith(false),\n            publishReplay(1),\n            refCount());\n\n        this._hasTextureSubscription = hasTexture$.subscribe(() => { /*noop*/ });\n\n        let nodeImage$: Observable<[HTMLImageElement, GraphNode]> = this._navigator.stateService.currentState$.pipe(\n            filter(\n                (frame: IFrame): boolean => {\n                    return frame.state.nodesAhead === 0;\n                }),\n            map(\n                (frame: IFrame): GraphNode => {\n                    return frame.state.currentNode;\n                }),\n            distinctUntilChanged(\n                undefined,\n                (node: GraphNode): string => {\n                    return node.key;\n                }),\n            debounceTime(1000),\n            withLatestFrom(hasTexture$),\n            filter(\n                (args: [GraphNode, boolean]): boolean => {\n                    return !args[1];\n                }),\n            map(\n                (args: [GraphNode, boolean]): GraphNode => {\n                    return args[0];\n                }),\n            filter(\n                (node: GraphNode): boolean => {\n                    return node.pano ?\n                        Settings.maxImageSize > Settings.basePanoramaSize :\n                        Settings.maxImageSize > Settings.baseImageSize;\n                }),\n            switchMap(\n                (node: GraphNode): Observable<[HTMLImageElement, GraphNode]> => {\n                    let baseImageSize: ImageSize = node.pano ?\n                        Settings.basePanoramaSize :\n                        Settings.baseImageSize;\n\n                    if (Math.max(node.image.width, node.image.height) > baseImageSize) {\n                        return observableEmpty();\n                    }\n\n                    let image$: Observable<[HTMLImageElement, GraphNode]> = node\n                        .cacheImage$(Settings.maxImageSize).pipe(\n                            map(\n                                (n: GraphNode): [HTMLImageElement, GraphNode] => {\n                                    return [n.image, n];\n                                }));\n\n                    return image$.pipe(\n                        takeUntil(\n                            hasTexture$.pipe(\n                                filter(\n                                    (hasTexture: boolean): boolean => {\n\n                                        return hasTexture;\n                                    }))),\n                        catchError(\n                            (error: Error, caught: Observable<[HTMLImageElement, GraphNode]>):\n                                Observable<[HTMLImageElement, GraphNode]> => {\n                                console.error(`Failed to fetch high res image (${node.key})`, error);\n\n                                return observableEmpty();\n                            }));\n                })).pipe(\n            publish(),\n            refCount());\n\n        this._updateBackgroundSubscription = nodeImage$.pipe(\n            withLatestFrom(textureProvider$))\n            .subscribe(\n                (args: [[HTMLImageElement, GraphNode], TextureProvider]): void => {\n                    if (args[0][1].key !== args[1].key ||\n                        args[1].disposed) {\n                        return;\n                    }\n\n                    args[1].updateBackground(args[0][0]);\n                });\n\n        this._updateTextureImageSubscription = nodeImage$.pipe(\n            map(\n                (imn: [HTMLImageElement, GraphNode]): IImagePlaneGLRendererOperation => {\n                    return (renderer: ImagePlaneGLRenderer): ImagePlaneGLRenderer => {\n                        renderer.updateTextureImage(imn[0], imn[1]);\n\n                        return renderer;\n                    };\n                }))\n            .subscribe(this._rendererOperation$);\n\n        this._clearPeripheryPlaneSubscription = this._navigator.panService.panNodes$.pipe(\n            filter(\n                (panNodes: []): boolean => {\n                    return panNodes.length === 0;\n                }),\n            map(\n                (): IImagePlaneGLRendererOperation => {\n                    return (renderer: ImagePlaneGLRenderer): ImagePlaneGLRenderer => {\n                        renderer.clearPeripheryPlanes();\n\n                        return renderer;\n                    };\n                }))\n            .subscribe(this._rendererOperation$);\n\n        const cachedPanNodes$: Observable<[GraphNode, Transform]> = this._navigator.panService.panNodes$.pipe(\n            switchMap(\n                (nts: [GraphNode, Transform, number][]): Observable<[GraphNode, Transform]> => {\n                    return observableFrom(nts).pipe(\n                        mergeMap(\n                            ([n, t]: [GraphNode, Transform, number]): Observable<[GraphNode, Transform]> => {\n                                return observableCombineLatest(\n                                    this._navigator.graphService.cacheNode$(n.key).pipe(\n                                        catchError(\n                                            (error: Error): Observable<GraphNode> => {\n                                                console.error(`Failed to cache periphery node (${n.key})`, error);\n\n                                                return observableEmpty();\n                                            })),\n                                    observableOf(t));\n                            }));\n                }),\n            share());\n\n        this._addPeripheryPlaneSubscription = cachedPanNodes$.pipe(\n            map(\n                ([n, t]: [GraphNode, Transform]): IImagePlaneGLRendererOperation => {\n                    return (renderer: ImagePlaneGLRenderer): ImagePlaneGLRenderer => {\n                        renderer.addPeripheryPlane(n, t);\n\n                        return renderer;\n                    };\n                }))\n            .subscribe(this._rendererOperation$);\n\n        this._updatePeripheryPlaneTextureSubscription = cachedPanNodes$.pipe(\n            mergeMap(\n                ([n]: [GraphNode, Transform]): Observable<GraphNode> => {\n                    return ImageSize.Size2048 > Math.max(n.image.width, n.image.height) ?\n                        n.cacheImage$(ImageSize.Size2048).pipe(\n                            catchError(\n                                (): Observable<GraphNode> => {\n                                    return observableEmpty();\n                                })) :\n                        observableEmpty();\n                }),\n            map(\n                (n: GraphNode): IImagePlaneGLRendererOperation => {\n                    return (renderer: ImagePlaneGLRenderer): ImagePlaneGLRenderer => {\n                        renderer.updateTextureImage(n.image, n);\n\n                        return renderer;\n                    };\n                }))\n            .subscribe(this._rendererOperation$);\n\n        const inTransition$: Observable<boolean> = this._navigator.stateService.currentState$.pipe(\n            map(\n                (frame: IFrame): boolean => {\n                    return frame.state.alpha < 1;\n                }),\n            distinctUntilChanged());\n\n        const panTrigger$: Observable<boolean> = observableCombineLatest(\n            this._container.mouseService.active$,\n            this._container.touchService.active$,\n            this._navigator.stateService.inMotion$,\n            inTransition$).pipe(\n                map(\n                    ([mouseActive, touchActive, inMotion, inTransition]: [boolean, boolean, boolean, boolean]): boolean => {\n                        return !(mouseActive || touchActive || inMotion || inTransition);\n                    }),\n                filter(\n                    (trigger: boolean): boolean => {\n                        return trigger;\n                    }));\n\n        this._moveToPeripheryNodeSubscription = this._navigator.panService.panNodes$.pipe(\n            switchMap(\n                (nts: [GraphNode, Transform, number][]):\n                    Observable<[RenderCamera, GraphNode, Transform, [GraphNode, Transform, number][]]> => {\n\n                    return panTrigger$.pipe(\n                        withLatestFrom(\n                            this._container.renderService.renderCamera$,\n                            this._navigator.stateService.currentNode$,\n                            this._navigator.stateService.currentTransform$),\n                        mergeMap(\n                            ([, renderCamera, currentNode, currentTransform]: [boolean, RenderCamera, GraphNode, Transform]):\n                            Observable<[RenderCamera, GraphNode, Transform, [GraphNode, Transform, number][]]> => {\n                                return observableOf(\n                                    [\n                                        renderCamera,\n                                        currentNode,\n                                        currentTransform,\n                                        nts,\n                                    ] as [RenderCamera, GraphNode, Transform, [GraphNode, Transform, number][]]);\n                            }));\n                }),\n            switchMap(\n                ([camera, cn, ct, nts]: [RenderCamera, GraphNode, Transform, [GraphNode, Transform, number][]]): Observable<GraphNode> => {\n                    const direction: THREE.Vector3 = camera.camera.lookat.clone().sub(camera.camera.position);\n\n                    const cd: THREE.Vector3 = new Spatial().viewingDirection(cn.rotation);\n                    const ca: number = cd.angleTo(direction);\n                    const closest: [number, string] = [ca, undefined];\n                    const basic: number[] = new ViewportCoords().viewportToBasic(0, 0, ct, camera.perspective);\n\n                    if (basic[0] >= 0 && basic[0] <= 1 && basic[1] >= 0 && basic[1] <= 1) {\n                        closest[0] = Number.NEGATIVE_INFINITY;\n                    }\n\n                    for (const [n] of nts) {\n                        const d: THREE.Vector3 = new Spatial().viewingDirection(n.rotation);\n                        const a: number = d.angleTo(direction);\n\n                        if (a < closest[0]) {\n                            closest[0] = a;\n                            closest[1] = n.key;\n                        }\n                    }\n\n                    if (!closest[1]) {\n                        return observableEmpty();\n                    }\n\n                    return this._navigator.moveToKey$(closest[1]).pipe(\n                        catchError(\n                            (): Observable<GraphNode> => {\n                                return observableEmpty();\n                            }));\n                }))\n            .subscribe();\n    }\n\n    protected _deactivate(): void {\n        this._rendererDisposer$.next(null);\n\n        this._abortTextureProviderSubscription.unsubscribe();\n        this._hasTextureSubscription.unsubscribe();\n        this._rendererSubscription.unsubscribe();\n        this._setRegionOfInterestSubscription.unsubscribe();\n        this._setTextureProviderSubscription.unsubscribe();\n        this._setTileSizeSubscription.unsubscribe();\n        this._stateSubscription.unsubscribe();\n        this._textureProviderSubscription.unsubscribe();\n        this._updateBackgroundSubscription.unsubscribe();\n        this._updateTextureImageSubscription.unsubscribe();\n\n        this._clearPeripheryPlaneSubscription.unsubscribe();\n        this._addPeripheryPlaneSubscription.unsubscribe();\n        this._updatePeripheryPlaneTextureSubscription.unsubscribe();\n        this._moveToPeripheryNodeSubscription.unsubscribe();\n    }\n\n    protected _getDefaultConfiguration(): IComponentConfiguration {\n        return { };\n    }\n}\n\nComponentService.register(ImagePlaneComponent);\nexport default ImagePlaneComponent;\n",
+    "import * as THREE from \"three\";\n\nimport {Subscription} from \"rxjs\";\n\nimport {\n    MeshFactory,\n    MeshScene,\n    IShaderMaterial,\n} from \"../../Component\";\nimport {Node} from \"../../Graph\";\nimport {\n    ICurrentState,\n    IFrame,\n} from \"../../State\";\nimport {TextureProvider} from \"../../Tiles\";\nimport { Transform } from \"../../geo/Transform\";\n\nexport class ImagePlaneGLRenderer {\n    private _factory: MeshFactory;\n    private _scene: MeshScene;\n\n    private _alpha: number;\n    private _alphaOld: number;\n    private _fadeOutSpeed: number;\n\n    private _currentKey: string;\n    private _previousKey: string;\n    private _providerDisposers: { [key: string]: () => void };\n\n    private _frameId: number;\n    private _needsRender: boolean;\n\n    constructor() {\n        this._factory = new MeshFactory();\n        this._scene = new MeshScene();\n\n        this._alpha = 0;\n        this._alphaOld = 0;\n        this._fadeOutSpeed = 0.05;\n\n        this._currentKey = null;\n        this._previousKey = null;\n        this._providerDisposers = {};\n\n        this._frameId = 0;\n        this._needsRender = false;\n    }\n\n    public get frameId(): number {\n        return this._frameId;\n    }\n\n    public get needsRender(): boolean {\n        return this._needsRender;\n    }\n\n    public indicateNeedsRender(): void {\n        this._needsRender = true;\n    }\n\n    public addPeripheryPlane(node: Node, transform: Transform): void {\n        const mesh: THREE.Mesh = this._factory.createMesh(node, transform);\n        const planes: { [key: string]: THREE.Mesh } = {};\n        planes[node.key] = mesh;\n        this._scene.addPeripheryPlanes(planes);\n\n        this._needsRender = true;\n    }\n\n    public clearPeripheryPlanes(): void {\n        this._scene.setPeripheryPlanes({});\n\n        this._needsRender = true;\n    }\n\n    public updateFrame(frame: IFrame): void {\n        this._updateFrameId(frame.id);\n        this._needsRender = this._updateAlpha(frame.state.alpha) || this._needsRender;\n        this._needsRender = this._updateAlphaOld(frame.state.alpha) || this._needsRender;\n        this._needsRender = this._updateImagePlanes(frame.state) || this._needsRender;\n    }\n\n    public setTextureProvider(key: string, provider: TextureProvider): void {\n        if (key !== this._currentKey) {\n            return;\n        }\n\n        let createdSubscription: Subscription = provider.textureCreated$\n            .subscribe(\n                (texture: THREE.Texture): void => {\n                    this._updateTexture(texture);\n                });\n\n        let updatedSubscription: Subscription = provider.textureUpdated$\n            .subscribe(\n                (updated: boolean): void => {\n                    this._needsRender = true;\n                });\n\n        let dispose: () => void = (): void => {\n            createdSubscription.unsubscribe();\n            updatedSubscription.unsubscribe();\n            provider.dispose();\n        };\n\n        if (key in this._providerDisposers) {\n            let disposeProvider: () => void = this._providerDisposers[key];\n            disposeProvider();\n\n            delete this._providerDisposers[key];\n        }\n\n        this._providerDisposers[key] = dispose;\n    }\n\n    public updateTextureImage(image: HTMLImageElement, node: Node): void {\n        this._needsRender = true;\n\n        const planes: { [key: string]: THREE.Mesh } =\n            this._extend({}, this._scene.planes, this._scene.planesOld, this._scene.planesPeriphery);\n\n        for (const key in planes) {\n            if (!planes.hasOwnProperty(key)) {\n                continue;\n            }\n\n            if (key !== node.key) {\n                continue;\n            }\n\n            const plane: THREE.Mesh = planes[key];\n\n            let material: IShaderMaterial = <IShaderMaterial>plane.material;\n            let texture: THREE.Texture = <THREE.Texture>material.uniforms.projectorTex.value;\n\n            texture.image = image;\n            texture.needsUpdate = true;\n        }\n    }\n\n    public render(\n        perspectiveCamera: THREE.PerspectiveCamera,\n        renderer: THREE.WebGLRenderer): void {\n\n        const planes: { [key: string]: THREE.Mesh } = this._scene.planes;\n        const planesOld: { [key: string]: THREE.Mesh } = this._scene.planesOld;\n        const planesPeriphery: { [key: string]: THREE.Mesh } = this._scene.planesPeriphery;\n\n        const planeAlpha: number = Object.keys(planesOld).length ? 1 : this._alpha;\n        const peripheryAlpha: number = Object.keys(planesOld).length ? 1 : Math.floor(this._alpha);\n\n        for (const key in planes) {\n            if (!planes.hasOwnProperty(key)) {\n                continue;\n            }\n\n            const plane: THREE.Mesh = planes[key];\n            (<IShaderMaterial>plane.material).uniforms.opacity.value = planeAlpha;\n        }\n\n        for (const key in planesOld) {\n            if (!planesOld.hasOwnProperty(key)) {\n                continue;\n            }\n\n            const plane: THREE.Mesh = planesOld[key];\n            (<IShaderMaterial>plane.material).uniforms.opacity.value = this._alphaOld;\n        }\n\n        for (const key in planesPeriphery) {\n            if (!planesPeriphery.hasOwnProperty(key)) {\n                continue;\n            }\n\n            const plane: THREE.Mesh = planesPeriphery[key];\n            (<IShaderMaterial>plane.material).uniforms.opacity.value = peripheryAlpha;\n        }\n\n        renderer.render(this._scene.scenePeriphery, perspectiveCamera);\n        renderer.render(this._scene.scene, perspectiveCamera);\n        renderer.render(this._scene.sceneOld, perspectiveCamera);\n\n        for (const key in planes) {\n            if (!planes.hasOwnProperty(key)) {\n                continue;\n            }\n\n            const plane: THREE.Mesh = planes[key];\n            (<IShaderMaterial>plane.material).uniforms.opacity.value = this._alpha;\n        }\n\n        renderer.render(this._scene.scene, perspectiveCamera);\n    }\n\n    public clearNeedsRender(): void {\n        this._needsRender = false;\n    }\n\n    public dispose(): void {\n        this._scene.clear();\n    }\n\n    private _updateFrameId(frameId: number): void {\n        this._frameId = frameId;\n    }\n\n    private _updateAlpha(alpha: number): boolean {\n        if (alpha === this._alpha) {\n            return false;\n        }\n\n        this._alpha = alpha;\n\n        return true;\n    }\n\n    private _updateAlphaOld(alpha: number): boolean {\n        if (alpha < 1 || this._alphaOld === 0) {\n            return false;\n        }\n\n        this._alphaOld = Math.max(0, this._alphaOld - this._fadeOutSpeed);\n\n        return true;\n    }\n\n    private _updateImagePlanes(state: ICurrentState): boolean {\n        if (state.currentNode == null || state.currentNode.key === this._currentKey) {\n            return false;\n        }\n\n        let previousKey: string = state.previousNode != null ? state.previousNode.key : null;\n        let currentKey: string = state.currentNode.key;\n\n        if (this._previousKey !== previousKey &&\n            this._previousKey !== currentKey &&\n            this._previousKey in this._providerDisposers) {\n\n            let disposeProvider: () => void = this._providerDisposers[this._previousKey];\n            disposeProvider();\n\n            delete this._providerDisposers[this._previousKey];\n        }\n\n        if (previousKey != null) {\n            if (previousKey !== this._currentKey && previousKey !== this._previousKey) {\n                let previousMesh: THREE.Mesh =\n                    this._factory.createMesh(state.previousNode, state.previousTransform);\n\n                const previousPlanes: { [key: string]: THREE.Mesh } = {};\n                previousPlanes[previousKey] = previousMesh;\n                this._scene.updateImagePlanes(previousPlanes);\n            }\n\n            this._previousKey = previousKey;\n        }\n\n        this._currentKey = currentKey;\n        let currentMesh: THREE.Mesh =\n            this._factory.createMesh(state.currentNode, state.currentTransform);\n\n        const planes: { [key: string]: THREE.Mesh } = {};\n        planes[currentKey] = currentMesh;\n        this._scene.updateImagePlanes(planes);\n\n        this._alphaOld = 1;\n\n        return true;\n    }\n\n    private _updateTexture(texture: THREE.Texture): void {\n        this._needsRender = true;\n\n        const planes: { [key: string]: THREE.Mesh } = this._scene.planes;\n\n        for (const key in planes) {\n            if (!planes.hasOwnProperty(key)) {\n                continue;\n            }\n\n            const plane: THREE.Mesh = planes[key];\n            let material: IShaderMaterial = <IShaderMaterial>plane.material;\n\n            let oldTexture: THREE.Texture = <THREE.Texture>material.uniforms.projectorTex.value;\n            material.uniforms.projectorTex.value = null;\n            oldTexture.dispose();\n\n            material.uniforms.projectorTex.value = texture;\n        }\n    }\n\n    private _extend<T>(dest: T, ...sources: T[]): T {\n        for (const src of sources) {\n            for (const k in src) {\n                if (!src.hasOwnProperty(k)) {\n                    continue;\n                }\n\n                dest[k] = src[k];\n            }\n        }\n        return dest;\n    }\n}\n\nexport default ImagePlaneGLRenderer;\n",
     "import {IComponentConfiguration} from \"../../Component\";\n\nexport enum CoverState {\n    Hidden,\n    Loading,\n    Visible,\n}\n\nexport interface ICoverConfiguration extends IComponentConfiguration {\n    key?: string;\n    src?: string;\n    state?: CoverState;\n}\n\nexport default ICoverConfiguration;\n",
     "import {IComponentConfiguration} from \"../../Component\";\n\n/**\n * Enumeration for slider mode.\n *\n * @enum {number}\n * @readonly\n *\n * @description Modes for specifying how transitions\n * between nodes are performed in slider mode. Only\n * applicable when the slider component determines\n * that transitions with motion is possilble. When it\n * is not, the stationary mode will be applied.\n */\nexport enum SliderMode {\n    /**\n     * Transitions with motion.\n     *\n     * @description The slider component moves the\n     * camera between the node origins.\n     *\n     * In this mode it is not possible to zoom or pan.\n     *\n     * The slider component falls back to stationary\n     * mode when it determines that the pair of nodes\n     * does not have a strong enough relation.\n     */\n    Motion,\n\n    /**\n     * Stationary transitions.\n     *\n     * @description The camera is stationary.\n     *\n     * In this mode it is possible to zoom and pan.\n     */\n    Stationary,\n}\n\n/**\n * Interface for configuration of slider keys.\n *\n * @interface\n */\nexport interface ISliderKeys {\n    /**\n     * Key for the image plane in the background.\n     */\n    background: string;\n\n    /**\n     * Key for the image plane in the foreground.\n     */\n    foreground: string;\n}\n\n/**\n * Interface for configuration of slider component.\n *\n * @interface\n * ```\n * var viewer = new Mapillary.Viewer('<element-id>', '<client-id>', '<image-key>',\n *     {\n *         component: {\n *             slider: {\n *                 initialPosition: 0.5,\n *                 keys: {\n *                     background: '<background-key>',\n *                     foreground: '<foreground-key>',\n *                 },\n *                 sliderVisible: true,\n *             },\n *         },\n *     })\n * ```\n */\nexport interface ISliderConfiguration extends IComponentConfiguration {\n    /**\n     * Initial position of the slider on the interval [0, 1].\n     *\n     * @default 1\n     */\n    initialPosition?: number;\n\n    /**\n     * Slider keys.\n     */\n    keys?: ISliderKeys;\n\n    /**\n     * Value indicating whether the slider should be visible.\n     *\n     * @default true\n     */\n    sliderVisible?: boolean;\n\n    /**\n     * Mode used for image pair transitions.\n     */\n    mode?: SliderMode;\n}\n\nexport default ISliderConfiguration;\n",
-    "export {ICacheConfiguration, ICacheDepth} from \"./ICacheConfiguration\";\nexport {CoverState, ICoverConfiguration} from \"./ICoverConfiguration\";\nexport {IDirectionConfiguration} from \"./IDirectionConfiguration\";\nexport {IKeyboardConfiguration} from \"./IKeyboardConfiguration\";\nexport {IMarkerConfiguration} from \"./IMarkerConfiguration\";\nexport {IMouseConfiguration} from \"./IMouseConfiguration\";\nexport {INavigationConfiguration} from \"./INavigationConfiguration\";\nexport {IRouteConfiguration, IRoutePath, IRouteInfoKey} from \"./IRouteConfiguration\";\nexport {ISliderConfiguration, ISliderKeys, SliderMode} from \"./ISliderConfiguration\";\nexport {IComponentConfiguration} from \"./IComponentConfiguration\";\nexport {ISequenceConfiguration} from \"./ISequenceConfiguration\";\nexport {ISpatialDataConfiguration} from \"./ISpatialDataConfiguration\";\nexport {ITagConfiguration} from \"./ITagConfiguration\";\nexport {IShader} from \"./IShader\";\nexport * from \"../imageplane/interfaces/interfaces\";\nexport * from \"../marker/interfaces/interfaces\";\nexport * from \"../spatialdata/interfaces/interfaces\";\nexport * from \"../tag/interfaces/interfaces\";\n",
+    "export {IBearingConfiguration} from \"./IBearingConfiguration\";\nexport {ICacheConfiguration, ICacheDepth} from \"./ICacheConfiguration\";\nexport {CoverState, ICoverConfiguration} from \"./ICoverConfiguration\";\nexport {IDirectionConfiguration} from \"./IDirectionConfiguration\";\nexport {IKeyboardConfiguration} from \"./IKeyboardConfiguration\";\nexport {IMarkerConfiguration} from \"./IMarkerConfiguration\";\nexport {IMouseConfiguration} from \"./IMouseConfiguration\";\nexport {INavigationConfiguration} from \"./INavigationConfiguration\";\nexport {IRouteConfiguration, IRoutePath, IRouteInfoKey} from \"./IRouteConfiguration\";\nexport {ISliderConfiguration, ISliderKeys, SliderMode} from \"./ISliderConfiguration\";\nexport {IComponentConfiguration} from \"./IComponentConfiguration\";\nexport {ISequenceConfiguration} from \"./ISequenceConfiguration\";\nexport {ISpatialDataConfiguration} from \"./ISpatialDataConfiguration\";\nexport {ITagConfiguration} from \"./ITagConfiguration\";\nexport {IZoomConfiguration} from \"./IZoomConfiguration\";\nexport {IShader} from \"./IShader\";\nexport * from \"../imageplane/interfaces/interfaces\";\nexport * from \"../marker/interfaces/interfaces\";\nexport * from \"../spatialdata/interfaces/interfaces\";\nexport * from \"../tag/interfaces/interfaces\";\n",
     "import {switchMap, withLatestFrom} from \"rxjs/operators\";\nimport {Observable, Subscription} from \"rxjs\";\n\nimport {\n    IKeyboardConfiguration,\n    HandlerBase,\n} from \"../../Component\";\nimport {EdgeDirection} from \"../../Edge\";\nimport {\n    IEdgeStatus,\n    Node,\n} from \"../../Graph\";\n\n/**\n * The `KeyPlayHandler` allows the user to control the play behavior\n * using the following key commands:\n *\n * `Spacebar`: Start or stop playing.\n * `SHIFT` + `D`: Switch direction.\n * `<`: Decrease speed.\n * `>`: Increase speed.\n *\n * @example\n * ```\n * var keyboardComponent = viewer.getComponent(\"keyboard\");\n *\n * keyboardComponent.keyPlay.disable();\n * keyboardComponent.keyPlay.enable();\n *\n * var isEnabled = keyboardComponent.keyPlay.isEnabled;\n * ```\n */\nexport class KeyPlayHandler extends HandlerBase<IKeyboardConfiguration> {\n    private _keyDownSubscription: Subscription;\n\n    protected _enable(): void {\n        this._keyDownSubscription = this._container.keyboardService.keyDown$.pipe(\n            withLatestFrom(\n                this._navigator.playService.playing$,\n                this._navigator.playService.direction$,\n                this._navigator.playService.speed$,\n                this._navigator.stateService.currentNode$.pipe(\n                    switchMap(\n                        (node: Node): Observable<IEdgeStatus> => {\n                            return node.sequenceEdges$;\n                        }))))\n            .subscribe(\n                (\n                    [event, playing, direction, speed, status]:\n                    [KeyboardEvent, boolean, EdgeDirection, number, IEdgeStatus]): void => {\n\n                    if (event.altKey || event.ctrlKey || event.metaKey) {\n                        return;\n                    }\n\n                    switch (event.key) {\n                        case \"D\":\n                            if (!event.shiftKey) {\n                                return;\n                            }\n\n                            const newDirection: EdgeDirection = playing ?\n                                null : direction === EdgeDirection.Next ?\n                                EdgeDirection.Prev : direction === EdgeDirection.Prev ?\n                                EdgeDirection.Next : null;\n\n                            if (newDirection != null) {\n                                this._navigator.playService.setDirection(newDirection);\n                            }\n\n                            break;\n                        case \" \":\n                            if (event.shiftKey) {\n                                return;\n                            }\n\n                            if (playing) {\n                                this._navigator.playService.stop();\n                            } else {\n                                for (let edge of status.edges) {\n                                    if (edge.data.direction === direction) {\n                                        this._navigator.playService.play();\n                                    }\n                                }\n                            }\n\n                            break;\n                        case \"<\":\n                            this._navigator.playService.setSpeed(speed - 0.05);\n                            break;\n                        case \">\":\n                            this._navigator.playService.setSpeed(speed + 0.05);\n                            break;\n                        default:\n                            return;\n                    }\n\n                    event.preventDefault();\n                });\n    }\n\n    protected _disable(): void {\n        this._keyDownSubscription.unsubscribe();\n    }\n\n    protected _getConfiguration(enable: boolean): IKeyboardConfiguration {\n        return { keyZoom: enable };\n    }\n}\n\nexport default KeyPlayHandler;\n",
     "import {withLatestFrom, switchMap} from \"rxjs/operators\";\nimport {Observable, Subscription} from \"rxjs\";\n\nimport {\n    IKeyboardConfiguration,\n    HandlerBase,\n} from \"../../Component\";\nimport {EdgeDirection} from \"../../Edge\";\nimport {AbortMapillaryError} from \"../../Error\";\nimport {\n    IEdgeStatus,\n    Node,\n} from \"../../Graph\";\n\n/**\n * The `KeySequenceNavigationHandler` allows the user to navigate through a sequence using the\n * following key commands:\n *\n * `ALT` + `Up Arrow`: Navigate to next image in the sequence.\n * `ALT` + `Down Arrow`: Navigate to previous image in sequence.\n *\n * @example\n * ```\n * var keyboardComponent = viewer.getComponent(\"keyboard\");\n *\n * keyboardComponent.keySequenceNavigation.disable();\n * keyboardComponent.keySequenceNavigation.enable();\n *\n * var isEnabled = keyboardComponent.keySequenceNavigation.isEnabled;\n * ```\n */\nexport class KeySequenceNavigationHandler extends HandlerBase<IKeyboardConfiguration> {\n    private _keyDownSubscription: Subscription;\n\n    protected _enable(): void {\n        const sequenceEdges$: Observable<IEdgeStatus> = this._navigator.stateService.currentNode$.pipe(\n            switchMap(\n                (node: Node): Observable<IEdgeStatus> => {\n                    return node.sequenceEdges$;\n                }));\n\n        this._keyDownSubscription = this._container.keyboardService.keyDown$.pipe(\n            withLatestFrom(sequenceEdges$))\n            .subscribe(\n                ([event, edgeStatus]: [KeyboardEvent, IEdgeStatus]): void => {\n                    let direction: EdgeDirection = null;\n                    switch (event.keyCode) {\n                        case 38: // up\n                            direction = EdgeDirection.Next;\n                            break;\n                        case 40: // down\n                            direction = EdgeDirection.Prev;\n                            break;\n                        default:\n                            return;\n                    }\n\n                    event.preventDefault();\n\n                    if (!event.altKey || event.shiftKey || !edgeStatus.cached) {\n                        return;\n                    }\n\n                    for (const edge of edgeStatus.edges) {\n                        if (edge.data.direction === direction) {\n                            this._navigator.moveToKey$(edge.to)\n                                .subscribe(\n                                    undefined,\n                                    (error: Error): void => {\n                                        if (!(error instanceof AbortMapillaryError)) {\n                                            console.error(error);\n                                        }\n                                    });\n\n                            return;\n                        }\n                    }\n                });\n    }\n\n    protected _disable(): void {\n        this._keyDownSubscription.unsubscribe();\n    }\n\n    protected _getConfiguration(enable: boolean): IKeyboardConfiguration {\n        return { keySequenceNavigation: enable };\n    }\n}\n\nexport default KeySequenceNavigationHandler;\n",
     "import {withLatestFrom, switchMap} from \"rxjs/operators\";\nimport * as THREE from \"three\";\n\nimport {Observable, Subscription} from \"rxjs\";\n\nimport {\n    Component,\n    IKeyboardConfiguration,\n    HandlerBase,\n} from \"../../Component\";\nimport {\n    EdgeDirection,\n    IEdge,\n} from \"../../Edge\";\nimport {AbortMapillaryError} from \"../../Error\";\nimport {\n    Camera,\n    Spatial,\n} from \"../../Geo\";\nimport {\n    IEdgeStatus,\n    Node,\n} from \"../../Graph\";\nimport {\n    IFrame,\n    IRotation,\n} from \"../../State\";\nimport {\n    Container,\n    Navigator,\n} from \"../../Viewer\";\n\n/**\n * The `KeySpatialNavigationHandler` allows the user to navigate through a sequence using the\n * following key commands:\n *\n * `Up Arrow`: Step forward.\n * `Down Arrow`: Step backward.\n * `Left Arrow`: Step to the left.\n * `Rigth Arrow`: Step to the right.\n * `SHIFT` + `Down Arrow`: Turn around.\n * `SHIFT` + `Left Arrow`: Turn to the left.\n * `SHIFT` + `Rigth Arrow`: Turn to the right.\n *\n * @example\n * ```\n * var keyboardComponent = viewer.getComponent(\"keyboard\");\n *\n * keyboardComponent.keySpatialNavigation.disable();\n * keyboardComponent.keySpatialNavigation.enable();\n *\n * var isEnabled = keyboardComponent.keySpatialNavigation.isEnabled;\n * ```\n */\nexport class KeySpatialNavigationHandler extends HandlerBase<IKeyboardConfiguration> {\n    private _spatial: Spatial;\n\n    private _keyDownSubscription: Subscription;\n\n    /** @ignore */\n    constructor(\n        component: Component<IKeyboardConfiguration>,\n        container: Container,\n        navigator: Navigator,\n        spatial: Spatial) {\n        super(component, container, navigator);\n\n        this._spatial = spatial;\n    }\n\n    protected _enable(): void {\n        const spatialEdges$: Observable<IEdgeStatus> = this._navigator.stateService.currentNode$.pipe(\n            switchMap(\n                (node: Node): Observable<IEdgeStatus> => {\n                    return node.spatialEdges$;\n                }));\n\n        this._keyDownSubscription = this._container.keyboardService.keyDown$.pipe(\n            withLatestFrom(\n                spatialEdges$,\n                this._navigator.stateService.currentState$))\n            .subscribe(([event, edgeStatus, frame]: [KeyboardEvent, IEdgeStatus, IFrame]): void => {\n                let pano: boolean = frame.state.currentNode.pano;\n                let direction: EdgeDirection = null;\n                switch (event.keyCode) {\n                    case 37: // left\n                        direction = event.shiftKey && !pano ? EdgeDirection.TurnLeft : EdgeDirection.StepLeft;\n                        break;\n                    case 38: // up\n                        direction = event.shiftKey && !pano ? EdgeDirection.Pano : EdgeDirection.StepForward;\n                        break;\n                    case 39: // right\n                        direction = event.shiftKey && !pano ? EdgeDirection.TurnRight : EdgeDirection.StepRight;\n                        break;\n                    case 40: // down\n                        direction = event.shiftKey && !pano ? EdgeDirection.TurnU : EdgeDirection.StepBackward;\n                        break;\n                    default:\n                        return;\n                }\n\n                event.preventDefault();\n\n                if (event.altKey || !edgeStatus.cached ||\n                    (event.shiftKey && pano)) {\n                    return;\n                }\n\n                if (!pano) {\n                    this._moveDir(direction, edgeStatus);\n                } else {\n                    const shifts: { [dir: number]: number } = {};\n\n                    shifts[EdgeDirection.StepBackward] = Math.PI;\n                    shifts[EdgeDirection.StepForward] = 0;\n                    shifts[EdgeDirection.StepLeft] = Math.PI / 2;\n                    shifts[EdgeDirection.StepRight] = -Math.PI / 2;\n\n                    const phi: number = this._rotationFromCamera(frame.state.camera).phi;\n                    const navigationAngle: number = this._spatial.wrapAngle(phi + shifts[direction]);\n                    const threshold: number = Math.PI / 4;\n                    const edges: IEdge[] = edgeStatus.edges.filter(\n                        (e: IEdge): boolean => {\n                            return e.data.direction === EdgeDirection.Pano || e.data.direction === direction;\n                        });\n\n                    let smallestAngle: number = Number.MAX_VALUE;\n                    let toKey: string = null;\n                    for (const edge of edges) {\n                        const angle: number = Math.abs(this._spatial.wrapAngle(edge.data.worldMotionAzimuth - navigationAngle));\n\n                        if (angle < Math.min(smallestAngle, threshold)) {\n                            smallestAngle = angle;\n                            toKey = edge.to;\n                        }\n                    }\n\n                    if (toKey == null) {\n                        return;\n                    }\n\n                    this._moveToKey(toKey);\n                }\n            });\n    }\n\n    protected _disable(): void {\n        this._keyDownSubscription.unsubscribe();\n    }\n\n    protected _getConfiguration(enable: boolean): IKeyboardConfiguration {\n        return { keySpatialNavigation: enable };\n    }\n\n    private _moveDir(direction: EdgeDirection, edgeStatus: IEdgeStatus): void {\n        for (const edge of edgeStatus.edges) {\n            if (edge.data.direction === direction) {\n                this._moveToKey(edge.to);\n                return;\n            }\n        }\n    }\n\n    private _moveToKey(key: string): void {\n        this._navigator.moveToKey$(key)\n            .subscribe(\n                undefined,\n                (error: Error): void => {\n                    if (!(error instanceof AbortMapillaryError)) {\n                        console.error(error);\n                    }\n                });\n    }\n\n    private _rotationFromCamera(camera: Camera): IRotation {\n        let direction: THREE.Vector3 = camera.lookat.clone().sub(camera.position);\n\n        let upProjection: number = direction.clone().dot(camera.up);\n        let planeProjection: THREE.Vector3 = direction.clone().sub(camera.up.clone().multiplyScalar(upProjection));\n\n        let phi: number = Math.atan2(planeProjection.y, planeProjection.x);\n        let theta: number = Math.PI / 2 - this._spatial.angleToPlane(direction.toArray(), [0, 0, 1]);\n\n        return { phi: phi, theta: theta };\n    }\n}\n\nexport default KeySpatialNavigationHandler;\n",
     "import * as THREE from \"three\";\n\nimport {ILatLon} from \"../../../API\";\nimport {\n    ICircleMarkerOptions,\n    Marker,\n} from \"../../../Component\";\n\n/**\n * @class CircleMarker\n *\n * @classdesc Non-interactive marker with a flat circle shape. The circle\n * marker can not be configured to be interactive.\n *\n * Circle marker properties can not be updated after creation.\n *\n * To create and add one `CircleMarker` with default configuration\n * and one with configuration use\n *\n * @example\n * ```\n * var defaultMarker = new Mapillary.MarkerComponent.CircleMarker(\n *     \"id-1\",\n *     { lat: 0, lon: 0, });\n *\n * var configuredMarker = new Mapillary.MarkerComponent.CircleMarker(\n *     \"id-2\",\n *     { lat: 0, lon: 0, },\n *     {\n *         color: \"#0Ff\",\n *         opacity: 0.3,\n *         radius: 0.7,\n *     });\n *\n * markerComponent.add([defaultMarker, configuredMarker]);\n * ```\n */\nexport class CircleMarker extends Marker {\n    private _color: number | string;\n    private _opacity: number;\n    private _radius: number;\n\n    constructor(id: string, latLon: ILatLon, options?: ICircleMarkerOptions) {\n        super(id, latLon);\n\n        options = !!options ? options : {};\n        this._color = options.color != null ? options.color : 0xffffff;\n        this._opacity = options.opacity != null ? options.opacity : 0.4;\n        this._radius = options.radius != null ? options.radius : 1;\n    }\n\n    protected _createGeometry(position: number[]): void {\n        const circle: THREE.Mesh = new THREE.Mesh(\n            new THREE.CircleGeometry(this._radius, 16),\n            new THREE.MeshBasicMaterial({\n                color: this._color,\n                opacity: this._opacity,\n                transparent: true,\n            }));\n\n        circle.up.fromArray([0, 0, 1]);\n        circle.renderOrder = -1;\n\n        const group: THREE.Object3D = new THREE.Object3D();\n        group.add(circle);\n        group.position.fromArray(position);\n\n        this._geometry = group;\n    }\n\n    protected _disposeGeometry(): void {\n        for (let mesh of <THREE.Mesh[]>this._geometry.children) {\n            mesh.geometry.dispose();\n            (<THREE.Material>mesh.material).dispose();\n        }\n    }\n\n    protected _getInteractiveObjects(): THREE.Object3D[] {\n        return [];\n    }\n}\n\nexport default CircleMarker;\n",
     "import * as THREE from \"three\";\n\nimport {ILatLon} from \"../../../API\";\n\n/**\n * @class Marker\n *\n * @classdesc Represents an abstract marker class that should be extended\n * by marker implementations used in the marker component.\n */\nexport abstract class Marker {\n    protected _id: string;\n    protected _geometry: THREE.Object3D;\n    protected _latLon: ILatLon;\n\n    constructor(id: string, latLon: ILatLon) {\n        this._id = id;\n        this._latLon = latLon;\n    }\n\n    /**\n     * Get id.\n     * @returns {string} The id of the marker.\n     */\n    public get id(): string {\n        return this._id;\n    }\n\n    /**\n     * Get geometry.\n     *\n     * @ignore\n     */\n    public get geometry(): THREE.Object3D {\n        return this._geometry;\n    }\n\n    /**\n     * Get lat lon.\n     * @returns {ILatLon} The geographic coordinates of the marker.\n     */\n    public get latLon(): ILatLon {\n        return this._latLon;\n    }\n\n    /** @ignore */\n    public createGeometry(position: number[]): void {\n        if (!!this._geometry) {\n            return;\n        }\n\n        this._createGeometry(position);\n\n        // update matrix world if raycasting occurs before first render\n        this._geometry.updateMatrixWorld(true);\n    }\n\n    /** @ignore */\n    public disposeGeometry(): void {\n        if (!this._geometry) {\n            return;\n        }\n\n        this._disposeGeometry();\n\n        this._geometry = undefined;\n    }\n\n    /** @ignore */\n    public getInteractiveObjects(): THREE.Object3D[] {\n        if (!this._geometry) {\n            return [];\n        }\n\n        return this._getInteractiveObjects();\n    }\n\n    /** @ignore */\n    public lerpAltitude(alt: number, alpha: number): void {\n        if (!this._geometry) {\n            return;\n        }\n\n        this._geometry.position.z = (1 - alpha) * this._geometry.position.z + alpha * alt;\n    }\n\n    /** @ignore */\n    public updatePosition(position: number[], latLon?: ILatLon): void {\n        if (!!latLon) {\n            this._latLon.lat = latLon.lat;\n            this._latLon.lon = latLon.lon;\n        }\n\n        if (!this._geometry) {\n            return;\n        }\n\n        this._geometry.position.fromArray(position);\n        this._geometry.updateMatrixWorld(true);\n    }\n\n    protected abstract _createGeometry(position: number[]): void;\n\n    protected abstract _disposeGeometry(): void;\n\n    protected abstract _getInteractiveObjects(): THREE.Object3D[];\n}\n\nexport default Marker;\n",
     "import * as THREE from \"three\";\n\nimport {ILatLon} from \"../../../API\";\nimport {\n    ISimpleMarkerOptions,\n    Marker,\n} from \"../../../Component\";\n\n/**\n * @class SimpleMarker\n *\n * @classdesc Interactive marker with ice cream shape. The sphere\n * inside the ice cream can be configured to be interactive.\n *\n * Simple marker properties can not be updated after creation.\n *\n * To create and add one `SimpleMarker` with default configuration\n * (non-interactive) and one interactive with configuration use\n *\n * @example\n * ```\n * var defaultMarker = new Mapillary.MarkerComponent.SimpleMarker(\n *     \"id-1\",\n *     { lat: 0, lon: 0, });\n *\n * var interactiveMarker = new Mapillary.MarkerComponent.SimpleMarker(\n *     \"id-2\",\n *     { lat: 0, lon: 0, },\n *     {\n *         ballColor: \"#00f\",\n *         ballOpacity: 0.5,\n *         color: \"#00f\",\n *         interactive: true,\n *         opacity: 0.3,\n *         radius: 0.7,\n *     });\n *\n * markerComponent.add([defaultMarker, interactiveMarker]);\n * ```\n */\nexport class SimpleMarker extends Marker {\n    private _ballColor: number | string;\n    private _ballOpacity: number;\n    private _circleToRayAngle: number;\n    private _color: number | string;\n    private _interactive: boolean;\n    private _opacity: number;\n    private _radius: number;\n\n    constructor(id: string, latLon: ILatLon, options?: ISimpleMarkerOptions) {\n        super(id, latLon);\n\n        options = !!options ? options : {};\n        this._ballColor = options.ballColor != null ? options.ballColor : 0xff0000;\n        this._ballOpacity = options.ballOpacity != null ? options.ballOpacity : 0.8;\n        this._circleToRayAngle = 2;\n        this._color = options.color != null ? options.color : 0xff0000;\n        this._interactive = !!options.interactive;\n        this._opacity = options.opacity != null ? options.opacity : 0.4;\n        this._radius = options.radius != null ? options.radius : 1;\n    }\n\n    protected _createGeometry(position: number[]): void {\n        const radius: number = this._radius;\n        const cone: THREE.Mesh = new THREE.Mesh(\n            this._markerGeometry(radius, 8, 8),\n            new THREE.MeshBasicMaterial({\n                color: this._color,\n                opacity: this._opacity,\n                transparent: true,\n            }));\n\n        cone.renderOrder = 1;\n\n        const ball: THREE.Mesh = new THREE.Mesh(\n            new THREE.SphereGeometry(radius / 2, 8, 8),\n            new THREE.MeshBasicMaterial({\n                color: this._ballColor,\n                opacity: this._ballOpacity,\n                transparent: true,\n            }));\n\n        ball.position.z = this._markerHeight(radius);\n\n        const group: THREE.Object3D = new THREE.Object3D();\n        group.add(ball);\n        group.add(cone);\n        group.position.fromArray(position);\n\n        this._geometry = group;\n    }\n\n    protected _disposeGeometry(): void {\n        for (let mesh of <THREE.Mesh[]>this._geometry.children) {\n            mesh.geometry.dispose();\n            (<THREE.Material>mesh.material).dispose();\n        }\n    }\n\n    protected _getInteractiveObjects(): THREE.Object3D[] {\n        return this._interactive ? [this._geometry.children[0]] : [];\n    }\n\n    private _markerHeight(radius: number): number {\n        let t: number = Math.tan(Math.PI - this._circleToRayAngle);\n        return radius * Math.sqrt(1 + t * t);\n    }\n\n    private _markerGeometry(radius: number, widthSegments: number, heightSegments: number): THREE.Geometry {\n        let geometry: THREE.Geometry = new THREE.Geometry();\n\n        widthSegments = Math.max(3, Math.floor(widthSegments) || 8);\n        heightSegments = Math.max(2, Math.floor(heightSegments) || 6);\n        let height: number = this._markerHeight(radius);\n\n        let vertices: any[] = [];\n\n        for (let y: number = 0; y <= heightSegments; ++y) {\n\n            let verticesRow: any[] = [];\n\n            for (let x: number = 0; x <= widthSegments; ++x) {\n                let u: number = x / widthSegments * Math.PI * 2;\n                let v: number = y / heightSegments * Math.PI;\n\n                let r: number;\n                if (v < this._circleToRayAngle) {\n                    r = radius;\n                } else {\n                    let t: number = Math.tan(v - this._circleToRayAngle);\n                    r = radius * Math.sqrt(1 + t * t);\n                }\n\n                let vertex: THREE.Vector3 = new THREE.Vector3();\n                vertex.x = r * Math.cos(u) * Math.sin(v);\n                vertex.y = r * Math.sin(u) * Math.sin(v);\n                vertex.z = r * Math.cos(v) + height;\n\n                geometry.vertices.push(vertex);\n                verticesRow.push(geometry.vertices.length - 1);\n            }\n            vertices.push(verticesRow);\n        }\n\n        for (let y: number = 0; y < heightSegments; ++y) {\n            for (let x: number = 0; x < widthSegments; ++x) {\n                let v1: number = vertices[y][x + 1];\n                let v2: number = vertices[y][x];\n                let v3: number = vertices[y + 1][x];\n                let v4: number = vertices[y + 1][x + 1];\n\n                let n1: THREE.Vector3 = geometry.vertices[v1].clone().normalize();\n                let n2: THREE.Vector3 = geometry.vertices[v2].clone().normalize();\n                let n3: THREE.Vector3 = geometry.vertices[v3].clone().normalize();\n                let n4: THREE.Vector3 = geometry.vertices[v4].clone().normalize();\n\n                geometry.faces.push(new THREE.Face3(v1, v2, v4, [n1, n2, n4]));\n                geometry.faces.push(new THREE.Face3(v2, v3, v4, [n2.clone(), n3, n4.clone()]));\n            }\n        }\n\n        geometry.computeFaceNormals();\n        geometry.boundingSphere = new THREE.Sphere(new THREE.Vector3(), radius + height);\n\n        return geometry;\n    }\n}\n\nexport default SimpleMarker;\n",
-    "import * as THREE from \"three\";\n\nimport {empty as observableEmpty, combineLatest as observableCombineLatest, Observable, Subscription} from \"rxjs\";\n\nimport {first, map, distinctUntilChanged, switchMap} from \"rxjs/operators\";\n\nimport {\n    Component,\n    ImageBoundary,\n    IMouseConfiguration,\n    HandlerBase,\n} from \"../../Component\";\nimport {\n    Spatial,\n    Transform,\n    ViewportCoords,\n} from \"../../Geo\";\nimport {\n    RenderCamera,\n} from \"../../Render\";\nimport {IFrame} from \"../../State\";\nimport {\n    Container,\n    Navigator,\n} from \"../../Viewer\";\n\n/**\n * The `BounceHandler` ensures that the viewer bounces back to the image\n * when drag panning outside of the image edge.\n */\nexport class BounceHandler extends HandlerBase<IMouseConfiguration> {\n    private _spatial: Spatial;\n    private _viewportCoords: ViewportCoords;\n\n    private _bounceSubscription: Subscription;\n\n    constructor(\n        component: Component<IMouseConfiguration>,\n        container: Container,\n        navigator: Navigator,\n        viewportCoords: ViewportCoords,\n        spatial: Spatial) {\n        super(component, container, navigator);\n\n        this._spatial = spatial;\n        this._viewportCoords = viewportCoords;\n    }\n\n    protected _enable(): void {\n        const inTransition$: Observable<boolean> = this._navigator.stateService.currentState$.pipe(\n            map(\n                (frame: IFrame): boolean => {\n                    return frame.state.alpha < 1;\n                }));\n\n        this._bounceSubscription = observableCombineLatest(\n                inTransition$,\n                this._navigator.stateService.inTranslation$,\n                this._container.mouseService.active$,\n                this._container.touchService.active$).pipe(\n            map(\n                (noForce: boolean[]): boolean => {\n                    return noForce[0] || noForce[1] || noForce[2] || noForce[3];\n                }),\n            distinctUntilChanged(),\n            switchMap(\n                (noForce: boolean): Observable<[RenderCamera, Transform]> => {\n                    return noForce ?\n                        observableEmpty() :\n                        observableCombineLatest(\n                            this._container.renderService.renderCamera$,\n                            this._navigator.stateService.currentTransform$.pipe(first()));\n                }))\n            .subscribe(\n                ([render, transform]: [RenderCamera, Transform]): void => {\n                    if (!transform.hasValidScale && render.camera.focal < 0.1) {\n                        return;\n                    }\n\n                    if (render.perspective.aspect === 0 || render.perspective.aspect === Number.POSITIVE_INFINITY) {\n                        return;\n                    }\n\n                    const distances: number[] = ImageBoundary.viewportDistances(transform, render.perspective, this._viewportCoords);\n\n                    if (Math.max(...distances) < 0.01) {\n                        return;\n                    }\n\n                    const horizontalDistance: number = distances[1] - distances[3];\n                    const verticalDistance: number = distances[0] - distances[2];\n\n                    const currentDirection: THREE.Vector3 = this._viewportCoords\n                        .unprojectFromViewport(0, 0, render.perspective)\n                        .sub(render.perspective.position);\n\n                    const directionPhi: THREE.Vector3 = this._viewportCoords\n                            .unprojectFromViewport(horizontalDistance, 0, render.perspective)\n                            .sub(render.perspective.position);\n\n                    const directionTheta: THREE.Vector3 = this._viewportCoords\n                        .unprojectFromViewport(0, verticalDistance, render.perspective)\n                        .sub(render.perspective.position);\n\n                    let phi: number = (horizontalDistance > 0 ? 1 : -1) * directionPhi.angleTo(currentDirection);\n                    let theta: number = (verticalDistance > 0 ? 1 : -1) * directionTheta.angleTo(currentDirection);\n\n                    const threshold: number = Math.PI / 60;\n                    const coeff: number = 1e-1;\n\n                    phi = this._spatial.clamp(coeff * phi, -threshold, threshold);\n                    theta = this._spatial.clamp(coeff * theta, -threshold, threshold);\n\n                    this._navigator.stateService.rotateUnbounded({ phi: phi, theta: theta });\n                });\n    }\n\n    protected _disable(): void {\n        this._bounceSubscription.unsubscribe();\n    }\n\n    protected _getConfiguration(): IMouseConfiguration {\n        return { };\n    }\n}\n\nexport default BounceHandler;\n",
+    "import * as THREE from \"three\";\n\nimport {empty as observableEmpty, combineLatest as observableCombineLatest, Observable, Subscription} from \"rxjs\";\n\nimport {first, map, distinctUntilChanged, switchMap, withLatestFrom, startWith} from \"rxjs/operators\";\n\nimport {\n    Component,\n    ImageBoundary,\n    IMouseConfiguration,\n    HandlerBase,\n} from \"../../Component\";\nimport {\n    Spatial,\n    Transform,\n    ViewportCoords,\n} from \"../../Geo\";\nimport {\n    RenderCamera,\n} from \"../../Render\";\nimport {IFrame} from \"../../State\";\nimport {\n    Container,\n    Navigator,\n} from \"../../Viewer\";\nimport Node from \"../../graph/Node\";\n\n/**\n * The `BounceHandler` ensures that the viewer bounces back to the image\n * when drag panning outside of the image edge.\n */\nexport class BounceHandler extends HandlerBase<IMouseConfiguration> {\n    private _spatial: Spatial;\n    private _viewportCoords: ViewportCoords;\n\n    private _bounceSubscription: Subscription;\n\n    constructor(\n        component: Component<IMouseConfiguration>,\n        container: Container,\n        navigator: Navigator,\n        viewportCoords: ViewportCoords,\n        spatial: Spatial) {\n        super(component, container, navigator);\n\n        this._spatial = spatial;\n        this._viewportCoords = viewportCoords;\n    }\n\n    protected _enable(): void {\n        const inTransition$: Observable<boolean> = this._navigator.stateService.currentState$.pipe(\n            map(\n                (frame: IFrame): boolean => {\n                    return frame.state.alpha < 1;\n                }),\n            distinctUntilChanged());\n\n        this._bounceSubscription = observableCombineLatest(\n                inTransition$,\n                this._navigator.stateService.inTranslation$,\n                this._container.mouseService.active$,\n                this._container.touchService.active$).pipe(\n            map(\n                (noForce: boolean[]): boolean => {\n                    return noForce[0] || noForce[1] || noForce[2] || noForce[3];\n                }),\n            distinctUntilChanged(),\n            switchMap(\n                (noForce: boolean): Observable<[RenderCamera, Transform]> => {\n                    return noForce ?\n                        observableEmpty() :\n                        observableCombineLatest(\n                            this._container.renderService.renderCamera$,\n                            this._navigator.stateService.currentTransform$.pipe(first()));\n                }),\n            withLatestFrom(this._navigator.panService.panNodes$))\n            .subscribe(\n                ([[render, transform], nts]: [[RenderCamera, Transform], [Node, Transform, number][]]): void => {\n                    if (!transform.hasValidScale && render.camera.focal < 0.1) {\n                        return;\n                    }\n\n                    if (render.perspective.aspect === 0 || render.perspective.aspect === Number.POSITIVE_INFINITY) {\n                        return;\n                    }\n\n                    const distances: number[] = ImageBoundary.viewportDistances(transform, render.perspective, this._viewportCoords);\n\n                    const basic: number[] = this._viewportCoords.viewportToBasic(0, 0, transform, render.perspective);\n\n                    if ((basic[0] < 0 || basic[0] > 1) && nts.length > 0) {\n                        distances[0] = distances[2] = 0;\n                    }\n\n                    for (const [, t] of nts) {\n                        const d: number[] = ImageBoundary.viewportDistances(t, render.perspective, this._viewportCoords);\n\n                        for (let i: number = 1; i < distances.length; i += 2) {\n                            if (d[i] < distances[i]) {\n                                distances[i] = d[i];\n                            }\n                        }\n                    }\n\n                    if (Math.max(...distances) < 0.01) {\n                        return;\n                    }\n\n                    const horizontalDistance: number = distances[1] - distances[3];\n                    const verticalDistance: number = distances[0] - distances[2];\n\n                    const currentDirection: THREE.Vector3 = this._viewportCoords\n                        .unprojectFromViewport(0, 0, render.perspective)\n                        .sub(render.perspective.position);\n\n                    const directionPhi: THREE.Vector3 = this._viewportCoords\n                            .unprojectFromViewport(horizontalDistance, 0, render.perspective)\n                            .sub(render.perspective.position);\n\n                    const directionTheta: THREE.Vector3 = this._viewportCoords\n                        .unprojectFromViewport(0, verticalDistance, render.perspective)\n                        .sub(render.perspective.position);\n\n                    let phi: number = (horizontalDistance > 0 ? 1 : -1) * directionPhi.angleTo(currentDirection);\n                    let theta: number = (verticalDistance > 0 ? 1 : -1) * directionTheta.angleTo(currentDirection);\n\n                    const threshold: number = Math.PI / 60;\n                    const coeff: number = 1e-1;\n\n                    phi = this._spatial.clamp(coeff * phi, -threshold, threshold);\n                    theta = this._spatial.clamp(coeff * theta, -threshold, threshold);\n\n                    this._navigator.stateService.rotateUnbounded({ phi: phi, theta: theta });\n                });\n    }\n\n    protected _disable(): void {\n        this._bounceSubscription.unsubscribe();\n    }\n\n    protected _getConfiguration(): IMouseConfiguration {\n        return { };\n    }\n}\n\nexport default BounceHandler;\n",
     "import {merge as observableMerge, Subscription} from \"rxjs\";\n\nimport {map, withLatestFrom} from \"rxjs/operators\";\n\nimport {\n    Component,\n    IMouseConfiguration,\n    HandlerBase,\n    ClientTouch,\n} from \"../../Component\";\nimport {\n    Transform,\n    ViewportCoords,\n} from \"../../Geo\";\nimport {RenderCamera} from \"../../Render\";\nimport {\n    Container,\n    Navigator,\n} from \"../../Viewer\";\n\n/**\n * The `DoubleClickZoomHandler` allows the user to zoom the viewer image at a point by double clicking.\n *\n * @example\n * ```\n * var mouseComponent = viewer.getComponent(\"mouse\");\n *\n * mouseComponent.doubleClickZoom.disable();\n * mouseComponent.doubleClickZoom.enable();\n *\n * var isEnabled = mouseComponent.doubleClickZoom.isEnabled;\n * ```\n */\nexport class DoubleClickZoomHandler extends HandlerBase<IMouseConfiguration> {\n    private _viewportCoords: ViewportCoords;\n\n    private _zoomSubscription: Subscription;\n\n    /** @ignore */\n    constructor(\n        component: Component<IMouseConfiguration>,\n        container: Container,\n        navigator: Navigator,\n        viewportCoords: ViewportCoords) {\n        super(component, container, navigator);\n\n        this._viewportCoords = viewportCoords;\n    }\n\n    protected _enable(): void {\n        this._zoomSubscription = observableMerge(\n                this._container.mouseService\n                    .filtered$(this._component.name, this._container.mouseService.dblClick$),\n                this._container.touchService.doubleTap$.pipe(\n                    map(\n                        (e: TouchEvent): ClientTouch => {\n                            let touch: Touch = e.touches[0];\n                            return { clientX: touch.clientX, clientY: touch.clientY, shiftKey: e.shiftKey };\n                        }))).pipe(\n            withLatestFrom(\n                this._container.renderService.renderCamera$,\n                this._navigator.stateService.currentTransform$))\n            .subscribe(\n                ([event, render, transform]: [MouseEvent | ClientTouch, RenderCamera, Transform]): void => {\n                    const element: HTMLElement = this._container.element;\n\n                    const [canvasX, canvasY]: number[] = this._viewportCoords.canvasPosition(event, element);\n\n                    const unprojected: THREE.Vector3 =\n                        this._viewportCoords.unprojectFromCanvas(\n                            canvasX,\n                            canvasY,\n                            element,\n                            render.perspective);\n\n                    const reference: number[] = transform.projectBasic(unprojected.toArray());\n                    const delta: number = !!(<{ shiftKey: boolean }>event).shiftKey ? -1 : 1;\n\n                    this._navigator.stateService.zoomIn(delta, reference);\n                });\n    }\n\n    protected _disable(): void {\n        this._zoomSubscription.unsubscribe();\n    }\n\n    protected _getConfiguration(enable: boolean): IMouseConfiguration {\n        return { doubleClickZoom: enable };\n    }\n}\n\nexport default DoubleClickZoomHandler;\n",
-    "import {\n    empty as observableEmpty,\n    merge as observableMerge,\n    Observable,\n    Subscription,\n} from \"rxjs\";\n\nimport {\n    sample,\n    scan,\n    map,\n    share,\n    switchMap,\n    withLatestFrom,\n    pairwise,\n    filter,\n    distinctUntilChanged,\n} from \"rxjs/operators\";\n\nimport * as THREE from \"three\";\n\nimport {\n    Component,\n    ImageBoundary,\n    IMouseConfiguration,\n    HandlerBase,\n    MouseTouchPair,\n    MouseOperator,\n} from \"../../Component\";\nimport {\n    Spatial,\n    Transform,\n    ViewportCoords,\n} from \"../../Geo\";\nimport {\n    RenderCamera,\n} from \"../../Render\";\nimport {\n    IFrame,\n    IRotation,\n} from \"../../State\";\nimport {\n    Container,\n    Navigator,\n} from \"../../Viewer\";\n\n/**\n * The `DragPanHandler` allows the user to pan the viewer image by clicking and dragging the cursor.\n *\n * @example\n * ```\n * var mouseComponent = viewer.getComponent(\"mouse\");\n *\n * mouseComponent.dragPan.disable();\n * mouseComponent.dragPan.enable();\n *\n * var isEnabled = mouseComponent.dragPan.isEnabled;\n * ```\n */\nexport class DragPanHandler extends HandlerBase<IMouseConfiguration> {\n    private _spatial: Spatial;\n    private _viewportCoords: ViewportCoords;\n\n    private _activeMouseSubscription: Subscription;\n    private _activeTouchSubscription: Subscription;\n    private _preventDefaultSubscription: Subscription;\n    private _rotateSubscription: Subscription;\n    private _rotateWithoutInertiaSubscription: Subscription;\n\n    /** @ignore */\n    constructor(\n        component: Component<IMouseConfiguration>,\n        container: Container,\n        navigator: Navigator,\n        viewportCoords: ViewportCoords,\n        spatial: Spatial) {\n        super(component, container, navigator);\n\n        this._spatial = spatial;\n        this._viewportCoords = viewportCoords;\n    }\n\n    protected _enable(): void {\n        let draggingStarted$: Observable<boolean> =\n             this._container.mouseService\n                .filtered$(this._component.name, this._container.mouseService.mouseDragStart$).pipe(\n                map(\n                    (): boolean => {\n                        return true;\n                    }),\n                share());\n\n        let draggingStopped$: Observable<boolean> =\n             this._container.mouseService\n                .filtered$(this._component.name, this._container.mouseService.mouseDragEnd$).pipe(\n                map(\n                    (): boolean => {\n                        return false;\n                    }),\n                share());\n\n        this._activeMouseSubscription = observableMerge(\n                draggingStarted$,\n                draggingStopped$)\n            .subscribe(this._container.mouseService.activate$);\n\n        const documentMouseMove$: Observable<MouseEvent> = observableMerge(\n                draggingStarted$,\n                draggingStopped$).pipe(\n            switchMap(\n                (dragging: boolean): Observable<MouseEvent> => {\n                    return dragging ?\n                        this._container.mouseService.documentMouseMove$ :\n                        observableEmpty();\n                }));\n\n        this._preventDefaultSubscription = observableMerge(\n                documentMouseMove$,\n                this._container.touchService.touchMove$)\n            .subscribe(\n                (event: MouseEvent | TouchEvent): void => {\n                    event.preventDefault(); // prevent selection of content outside the viewer\n                });\n\n        let touchMovingStarted$: Observable<boolean> =\n            this._container.touchService.singleTouchDragStart$.pipe(\n                map(\n                    (): boolean => {\n                        return true;\n                    }));\n\n        let touchMovingStopped$: Observable<boolean> =\n            this._container.touchService.singleTouchDragEnd$.pipe(\n                map(\n                    (): boolean => {\n                        return false;\n                    }));\n\n        this._activeTouchSubscription = observableMerge(\n                touchMovingStarted$,\n                touchMovingStopped$)\n            .subscribe(this._container.touchService.activate$);\n\n        const rotation$: Observable<IRotation> = this._navigator.stateService.currentState$.pipe(\n            map(\n                (frame: IFrame): boolean => {\n                    return frame.state.currentNode.fullPano || frame.state.nodesAhead < 1;\n                }),\n            distinctUntilChanged(),\n            switchMap(\n                (enable: boolean): Observable<MouseTouchPair> => {\n                    if (!enable) {\n                        return observableEmpty();\n                    }\n\n                    const mouseDrag$: Observable<[MouseEvent, MouseEvent]> =\n                        MouseOperator.filteredPairwiseMouseDrag$(this._component.name, this._container.mouseService);\n\n                    const singleTouchDrag$: Observable<[Touch, Touch]> = observableMerge(\n                            this._container.touchService.singleTouchDragStart$,\n                            this._container.touchService.singleTouchDrag$,\n                            this._container.touchService.singleTouchDragEnd$.pipe(\n                                map((): TouchEvent => { return null; }))).pipe(\n                        map(\n                            (event: TouchEvent): Touch => {\n                                return event != null && event.touches.length > 0 ?\n                                    event.touches[0] : null;\n                            }),\n                        pairwise(),\n                        filter(\n                            (pair: [Touch, Touch]): boolean => {\n                                return pair[0] != null && pair[1] != null;\n                            }));\n\n                    return observableMerge(\n                            mouseDrag$,\n                            singleTouchDrag$);\n                }),\n            withLatestFrom(\n                this._container.renderService.renderCamera$,\n                this._navigator.stateService.currentTransform$),\n            map(\n                ([events, render, transform]: [MouseTouchPair, RenderCamera, Transform]): IRotation => {\n                    let previousEvent: MouseEvent | Touch = events[0];\n                    let event: MouseEvent | Touch = events[1];\n\n                    let movementX: number = event.clientX - previousEvent.clientX;\n                    let movementY: number = event.clientY - previousEvent.clientY;\n\n                    let element: HTMLElement = this._container.element;\n\n                    let [canvasX, canvasY]: number[] = this._viewportCoords.canvasPosition(event, element);\n\n                    let currentDirection: THREE.Vector3 =\n                        this._viewportCoords.unprojectFromCanvas(\n                            canvasX,\n                            canvasY,\n                            element,\n                            render.perspective)\n                                .sub(render.perspective.position);\n\n                    let directionX: THREE.Vector3 =\n                        this._viewportCoords.unprojectFromCanvas(\n                            canvasX - movementX,\n                            canvasY,\n                            element,\n                            render.perspective)\n                                .sub(render.perspective.position);\n\n                    let directionY: THREE.Vector3 =\n                        this._viewportCoords.unprojectFromCanvas(\n                            canvasX,\n                            canvasY - movementY,\n                            element,\n                            render.perspective)\n                                .sub(render.perspective.position);\n\n                    let phi: number = (movementX > 0 ? 1 : -1) * directionX.angleTo(currentDirection);\n                    let theta: number = (movementY > 0 ? -1 : 1) * directionY.angleTo(currentDirection);\n\n                    const distances: number[] = ImageBoundary.viewportDistances(transform, render.perspective, this._viewportCoords);\n\n                    if (distances[0] > 0 && theta < 0) {\n                        theta /= Math.max(1, 2e2 * distances[0]);\n                    }\n\n                    if (distances[2] > 0 && theta > 0) {\n                        theta /= Math.max(1, 2e2 * distances[2]);\n                    }\n\n                    if (distances[1] > 0 && phi < 0) {\n                        phi /= Math.max(1, 2e2 * distances[1]);\n                    }\n\n                    if (distances[3] > 0 && phi > 0) {\n                        phi /= Math.max(1, 2e2 * distances[3]);\n                    }\n\n                    return { phi: phi, theta: theta };\n                }),\n            share());\n\n        this._rotateWithoutInertiaSubscription = rotation$\n            .subscribe(\n                (rotation: IRotation): void => {\n                    this._navigator.stateService.rotateWithoutInertia(rotation);\n                });\n\n        this._rotateSubscription = rotation$.pipe(\n            scan(\n                (rotationBuffer: [number, IRotation][], rotation: IRotation): [number, IRotation][] => {\n                    this._drainBuffer(rotationBuffer);\n\n                    rotationBuffer.push([Date.now(), rotation]);\n\n                    return rotationBuffer;\n                },\n                []),\n            sample(\n                observableMerge(\n                        this._container.mouseService.filtered$(\n                            this._component.name,\n                            this._container.mouseService.mouseDragEnd$),\n                        this._container.touchService.singleTouchDragEnd$)),\n            map(\n                (rotationBuffer: [number, IRotation][]): IRotation => {\n                    const drainedBuffer: [number, IRotation][] = this._drainBuffer(rotationBuffer.slice());\n                    const rotation: IRotation = { phi: 0, theta: 0 };\n\n                    for (const bufferedRotation of drainedBuffer) {\n                        rotation.phi += bufferedRotation[1].phi;\n                        rotation.theta += bufferedRotation[1].theta;\n                    }\n\n                    const count: number = drainedBuffer.length;\n                    if (count > 0) {\n                        rotation.phi /= count;\n                        rotation.theta /= count;\n                    }\n\n                    const threshold: number = Math.PI / 18;\n\n                    rotation.phi = this._spatial.clamp(rotation.phi, -threshold, threshold);\n                    rotation.theta = this._spatial.clamp(rotation.theta, -threshold, threshold);\n\n                    return rotation;\n                }))\n            .subscribe(\n                (rotation: IRotation): void => {\n                    this._navigator.stateService.rotate(rotation);\n                });\n    }\n\n    protected _disable(): void {\n        this._activeMouseSubscription.unsubscribe();\n        this._activeTouchSubscription.unsubscribe();\n        this._preventDefaultSubscription.unsubscribe();\n        this._rotateSubscription.unsubscribe();\n        this._rotateWithoutInertiaSubscription.unsubscribe();\n\n        this._activeMouseSubscription = null;\n        this._activeTouchSubscription = null;\n        this._preventDefaultSubscription = null;\n        this._rotateSubscription = null;\n    }\n\n    protected _getConfiguration(enable: boolean): IMouseConfiguration {\n        return { dragPan: enable };\n    }\n\n    private _drainBuffer<T>(buffer: [number, T][]): [number, T][] {\n        const cutoff: number = 50;\n        const now: number = Date.now();\n\n        while (buffer.length > 0 && now - buffer[0][0] > cutoff) {\n            buffer.shift();\n        }\n\n        return buffer;\n    }\n}\n\nexport default DragPanHandler;\n",
+    "import {\n    empty as observableEmpty,\n    merge as observableMerge,\n    Observable,\n    Subscription,\n} from \"rxjs\";\n\nimport {\n    sample,\n    scan,\n    map,\n    share,\n    switchMap,\n    withLatestFrom,\n    pairwise,\n    filter,\n    distinctUntilChanged,\n    startWith,\n} from \"rxjs/operators\";\n\nimport * as THREE from \"three\";\n\nimport {\n    Component,\n    ImageBoundary,\n    IMouseConfiguration,\n    HandlerBase,\n    MouseTouchPair,\n    MouseOperator,\n} from \"../../Component\";\nimport {\n    Spatial,\n    Transform,\n    ViewportCoords,\n} from \"../../Geo\";\nimport {\n    RenderCamera,\n} from \"../../Render\";\nimport {\n    IFrame,\n    IRotation,\n} from \"../../State\";\nimport {\n    Container,\n    Navigator,\n} from \"../../Viewer\";\nimport Node from \"../../graph/Node\";\n\n/**\n * The `DragPanHandler` allows the user to pan the viewer image by clicking and dragging the cursor.\n *\n * @example\n * ```\n * var mouseComponent = viewer.getComponent(\"mouse\");\n *\n * mouseComponent.dragPan.disable();\n * mouseComponent.dragPan.enable();\n *\n * var isEnabled = mouseComponent.dragPan.isEnabled;\n * ```\n */\nexport class DragPanHandler extends HandlerBase<IMouseConfiguration> {\n    private _spatial: Spatial;\n    private _viewportCoords: ViewportCoords;\n\n    private _activeMouseSubscription: Subscription;\n    private _activeTouchSubscription: Subscription;\n    private _preventDefaultSubscription: Subscription;\n    private _rotateSubscription: Subscription;\n    private _rotateWithoutInertiaSubscription: Subscription;\n\n    /** @ignore */\n    constructor(\n        component: Component<IMouseConfiguration>,\n        container: Container,\n        navigator: Navigator,\n        viewportCoords: ViewportCoords,\n        spatial: Spatial) {\n        super(component, container, navigator);\n\n        this._spatial = spatial;\n        this._viewportCoords = viewportCoords;\n    }\n\n    protected _enable(): void {\n        let draggingStarted$: Observable<boolean> =\n             this._container.mouseService\n                .filtered$(this._component.name, this._container.mouseService.mouseDragStart$).pipe(\n                map(\n                    (): boolean => {\n                        return true;\n                    }),\n                share());\n\n        let draggingStopped$: Observable<boolean> =\n             this._container.mouseService\n                .filtered$(this._component.name, this._container.mouseService.mouseDragEnd$).pipe(\n                map(\n                    (): boolean => {\n                        return false;\n                    }),\n                share());\n\n        this._activeMouseSubscription = observableMerge(\n                draggingStarted$,\n                draggingStopped$)\n            .subscribe(this._container.mouseService.activate$);\n\n        const documentMouseMove$: Observable<MouseEvent> = observableMerge(\n                draggingStarted$,\n                draggingStopped$).pipe(\n            switchMap(\n                (dragging: boolean): Observable<MouseEvent> => {\n                    return dragging ?\n                        this._container.mouseService.documentMouseMove$ :\n                        observableEmpty();\n                }));\n\n        this._preventDefaultSubscription = observableMerge(\n                documentMouseMove$,\n                this._container.touchService.touchMove$)\n            .subscribe(\n                (event: MouseEvent | TouchEvent): void => {\n                    event.preventDefault(); // prevent selection of content outside the viewer\n                });\n\n        let touchMovingStarted$: Observable<boolean> =\n            this._container.touchService.singleTouchDragStart$.pipe(\n                map(\n                    (): boolean => {\n                        return true;\n                    }));\n\n        let touchMovingStopped$: Observable<boolean> =\n            this._container.touchService.singleTouchDragEnd$.pipe(\n                map(\n                    (): boolean => {\n                        return false;\n                    }));\n\n        this._activeTouchSubscription = observableMerge(\n                touchMovingStarted$,\n                touchMovingStopped$)\n            .subscribe(this._container.touchService.activate$);\n\n        const rotation$: Observable<IRotation> = this._navigator.stateService.currentState$.pipe(\n            map(\n                (frame: IFrame): boolean => {\n                    return frame.state.currentNode.fullPano || frame.state.nodesAhead < 1;\n                }),\n            distinctUntilChanged(),\n            switchMap(\n                (enable: boolean): Observable<MouseTouchPair> => {\n                    if (!enable) {\n                        return observableEmpty();\n                    }\n\n                    const mouseDrag$: Observable<[MouseEvent, MouseEvent]> =\n                        MouseOperator.filteredPairwiseMouseDrag$(this._component.name, this._container.mouseService);\n\n                    const singleTouchDrag$: Observable<[Touch, Touch]> = observableMerge(\n                            this._container.touchService.singleTouchDragStart$,\n                            this._container.touchService.singleTouchDrag$,\n                            this._container.touchService.singleTouchDragEnd$.pipe(\n                                map((): TouchEvent => { return null; }))).pipe(\n                        map(\n                            (event: TouchEvent): Touch => {\n                                return event != null && event.touches.length > 0 ?\n                                    event.touches[0] : null;\n                            }),\n                        pairwise(),\n                        filter(\n                            (pair: [Touch, Touch]): boolean => {\n                                return pair[0] != null && pair[1] != null;\n                            }));\n\n                    return observableMerge(\n                            mouseDrag$,\n                            singleTouchDrag$);\n                }),\n            withLatestFrom(\n                this._container.renderService.renderCamera$,\n                this._navigator.stateService.currentTransform$,\n                this._navigator.panService.panNodes$),\n            map(\n                ([events, render, transform, nts]: [MouseTouchPair, RenderCamera, Transform, [Node, Transform, number][]]): IRotation => {\n                    let previousEvent: MouseEvent | Touch = events[0];\n                    let event: MouseEvent | Touch = events[1];\n\n                    let movementX: number = event.clientX - previousEvent.clientX;\n                    let movementY: number = event.clientY - previousEvent.clientY;\n\n                    let element: HTMLElement = this._container.element;\n\n                    let [canvasX, canvasY]: number[] = this._viewportCoords.canvasPosition(event, element);\n\n                    let currentDirection: THREE.Vector3 =\n                        this._viewportCoords.unprojectFromCanvas(\n                            canvasX,\n                            canvasY,\n                            element,\n                            render.perspective)\n                                .sub(render.perspective.position);\n\n                    let directionX: THREE.Vector3 =\n                        this._viewportCoords.unprojectFromCanvas(\n                            canvasX - movementX,\n                            canvasY,\n                            element,\n                            render.perspective)\n                                .sub(render.perspective.position);\n\n                    let directionY: THREE.Vector3 =\n                        this._viewportCoords.unprojectFromCanvas(\n                            canvasX,\n                            canvasY - movementY,\n                            element,\n                            render.perspective)\n                                .sub(render.perspective.position);\n\n                    let phi: number = (movementX > 0 ? 1 : -1) * directionX.angleTo(currentDirection);\n                    let theta: number = (movementY > 0 ? -1 : 1) * directionY.angleTo(currentDirection);\n\n                    const distances: number[] = ImageBoundary.viewportDistances(transform, render.perspective, this._viewportCoords);\n\n                    for (const [, t] of nts) {\n                        const d: number[] = ImageBoundary.viewportDistances(t, render.perspective, this._viewportCoords);\n\n                        for (let i: number = 0; i < distances.length; i++) {\n                            if (d[i] < distances[i]) {\n                                distances[i] = d[i];\n                            }\n                        }\n                    }\n\n                    if (distances[0] > 0 && theta < 0) {\n                        theta /= Math.max(1, 2e2 * distances[0]);\n                    }\n\n                    if (distances[2] > 0 && theta > 0) {\n                        theta /= Math.max(1, 2e2 * distances[2]);\n                    }\n\n                    if (distances[1] > 0 && phi < 0) {\n                        phi /= Math.max(1, 2e2 * distances[1]);\n                    }\n\n                    if (distances[3] > 0 && phi > 0) {\n                        phi /= Math.max(1, 2e2 * distances[3]);\n                    }\n\n                    return { phi: phi, theta: theta };\n                }),\n            share());\n\n        this._rotateWithoutInertiaSubscription = rotation$\n            .subscribe(\n                (rotation: IRotation): void => {\n                    this._navigator.stateService.rotateWithoutInertia(rotation);\n                });\n\n        this._rotateSubscription = rotation$.pipe(\n            scan(\n                (rotationBuffer: [number, IRotation][], rotation: IRotation): [number, IRotation][] => {\n                    this._drainBuffer(rotationBuffer);\n\n                    rotationBuffer.push([Date.now(), rotation]);\n\n                    return rotationBuffer;\n                },\n                []),\n            sample(\n                observableMerge(\n                        this._container.mouseService.filtered$(\n                            this._component.name,\n                            this._container.mouseService.mouseDragEnd$),\n                        this._container.touchService.singleTouchDragEnd$)),\n            map(\n                (rotationBuffer: [number, IRotation][]): IRotation => {\n                    const drainedBuffer: [number, IRotation][] = this._drainBuffer(rotationBuffer.slice());\n                    const rotation: IRotation = { phi: 0, theta: 0 };\n\n                    for (const bufferedRotation of drainedBuffer) {\n                        rotation.phi += bufferedRotation[1].phi;\n                        rotation.theta += bufferedRotation[1].theta;\n                    }\n\n                    const count: number = drainedBuffer.length;\n                    if (count > 0) {\n                        rotation.phi /= count;\n                        rotation.theta /= count;\n                    }\n\n                    const threshold: number = Math.PI / 18;\n\n                    rotation.phi = this._spatial.clamp(rotation.phi, -threshold, threshold);\n                    rotation.theta = this._spatial.clamp(rotation.theta, -threshold, threshold);\n\n                    return rotation;\n                }))\n            .subscribe(\n                (rotation: IRotation): void => {\n                    this._navigator.stateService.rotate(rotation);\n                });\n    }\n\n    protected _disable(): void {\n        this._activeMouseSubscription.unsubscribe();\n        this._activeTouchSubscription.unsubscribe();\n        this._preventDefaultSubscription.unsubscribe();\n        this._rotateSubscription.unsubscribe();\n        this._rotateWithoutInertiaSubscription.unsubscribe();\n\n        this._activeMouseSubscription = null;\n        this._activeTouchSubscription = null;\n        this._preventDefaultSubscription = null;\n        this._rotateSubscription = null;\n    }\n\n    protected _getConfiguration(enable: boolean): IMouseConfiguration {\n        return { dragPan: enable };\n    }\n\n    private _drainBuffer<T>(buffer: [number, T][]): [number, T][] {\n        const cutoff: number = 50;\n        const now: number = Date.now();\n\n        while (buffer.length > 0 && now - buffer[0][0] > cutoff) {\n            buffer.shift();\n        }\n\n        return buffer;\n    }\n}\n\nexport default DragPanHandler;\n",
     "import * as THREE from \"three\";\n\nimport {\n    combineLatest as observableCombinLatest,\n    empty as observableEmpty,\n    merge as observableMerge,\n    of as observableOf,\n    Subscription,\n    Observable,\n} from \"rxjs\";\n\nimport {\n    map,\n    filter,\n    withLatestFrom,\n    share,\n    switchMap,\n    startWith,\n    distinctUntilChanged,\n} from \"rxjs/operators\";\n\nimport {\n    Component,\n    IMouseConfiguration,\n    HandlerBase,\n    MouseOperator,\n} from \"../../Component\";\nimport {\n    Spatial,\n    Transform,\n    ViewportCoords,\n} from \"../../Geo\";\nimport {\n    RenderCamera,\n} from \"../../Render\";\nimport {\n    IRotation,\n    State,\n} from \"../../State\";\nimport {\n    Container,\n    Navigator,\n} from \"../../Viewer\";\n\nexport class EarthControlHandler extends HandlerBase<IMouseConfiguration> {\n    private _viewportCoords: ViewportCoords;\n    private _spatial: Spatial;\n\n    private _dollySubscription: Subscription;\n    private _orbitSubscription: Subscription;\n    private _preventDefaultSubscription: Subscription;\n    private _truckSubscription: Subscription;\n\n    constructor(\n        component: Component<IMouseConfiguration>,\n        container: Container,\n        navigator: Navigator,\n        viewportCoords: ViewportCoords,\n        spatial: Spatial) {\n        super(component, container, navigator);\n\n        this._spatial = spatial;\n        this._viewportCoords = viewportCoords;\n    }\n\n    protected _enable(): void {\n        const earth$: Observable<boolean> = this._navigator.stateService.state$.pipe(\n            map(\n                (state: State): boolean => {\n                    return state === State.Earth;\n                }),\n            share());\n\n        this._preventDefaultSubscription = earth$.pipe(\n            switchMap(\n                (earth: boolean): Observable<MouseEvent> => {\n                    return earth ?\n                        this._container.mouseService.mouseWheel$ :\n                        observableEmpty();\n                }))\n            .subscribe(\n                (event: WheelEvent): void => {\n                    event.preventDefault();\n                });\n\n        this._truckSubscription = earth$.pipe(\n            switchMap(\n                (earth: boolean): Observable<[MouseEvent, MouseEvent]> => {\n                    if (!earth) {\n                        return observableEmpty();\n                    }\n\n                    return MouseOperator.filteredPairwiseMouseDrag$(this._component.name, this._container.mouseService).pipe(\n                        filter(\n                            ([e1, e2]: [MouseEvent, MouseEvent]): boolean => {\n                                return !(e1.ctrlKey && e2.ctrlKey);\n                            }));\n                }),\n            withLatestFrom(\n                this._container.renderService.renderCamera$,\n                this._navigator.stateService.currentTransform$),\n            map(\n                ([[previous, current], render, transform]: [[MouseEvent, MouseEvent], RenderCamera, Transform]): number[] => {\n                    const planeNormal: number[] = [0, 0, 1];\n                    const planePoint: number[] = transform.unprojectBasic([0.5, 0.5], 0);\n                    planePoint[2] -= 2;\n\n                    const currentIntersection: THREE.Vector3 = this._planeIntersection(\n                        current,\n                        planeNormal,\n                        planePoint,\n                        render.perspective,\n                        this._container.element);\n\n                    const previousIntersection: THREE.Vector3 = this._planeIntersection(\n                        previous,\n                        planeNormal,\n                        planePoint,\n                        render.perspective,\n                        this._container.element);\n\n                    if (!currentIntersection || !previousIntersection) {\n                        return null;\n                    }\n\n                    const direction: number[] = new THREE.Vector3()\n                        .subVectors(currentIntersection, previousIntersection)\n                        .multiplyScalar(-1)\n                        .toArray();\n\n                    return direction;\n                }),\n            filter(\n                (direction: number[]): boolean => {\n                    return !!direction;\n                }))\n            .subscribe(\n                (direction: number[]): void => {\n                    this._navigator.stateService.truck(direction);\n                });\n\n        this._orbitSubscription = earth$.pipe(\n            switchMap(\n                (earth: boolean): Observable<[MouseEvent, MouseEvent]> => {\n                    if (!earth) {\n                        return observableEmpty();\n                    }\n\n                    return MouseOperator.filteredPairwiseMouseDrag$(this._component.name, this._container.mouseService).pipe(\n                        filter(\n                            ([e1, e2]: [MouseEvent, MouseEvent]): boolean => {\n                                return e1.ctrlKey && e2.ctrlKey;\n                            }));\n                }),\n            map(\n                ([previous, current]: [MouseEvent, MouseEvent]): IRotation => {\n                    const [currentX, currentY]: number[] = this._eventToViewport(current, this._container.element);\n                    const [previousX, previousY]: number[] = this._eventToViewport(previous, this._container.element);\n\n                    const phi: number = (previousX - currentX) * Math.PI;\n                    const theta: number = (currentY - previousY) * Math.PI / 2;\n\n                    return { phi: phi, theta: theta };\n                }))\n            .subscribe(\n                (rotation: IRotation): void => {\n                    this._navigator.stateService.orbit(rotation);\n                });\n\n        this._dollySubscription = earth$.pipe(\n            switchMap(\n                (earth: boolean): Observable<WheelEvent> => {\n                    if (!earth) {\n                        return observableEmpty();\n                    }\n\n                    return this._container.mouseService\n                        .filteredWheel$(this._component.name, this._container.mouseService.mouseWheel$);\n                }),\n            map(\n                (event: WheelEvent): number => {\n                    let delta: number = event.deltaY;\n\n                    if (event.deltaMode === 1) {\n                        delta = 40 * delta;\n                    } else if (event.deltaMode === 2) {\n                        delta = 800 * delta;\n                    }\n\n                    const canvasSize: number[] = this._viewportCoords.containerToCanvas(this._container.element);\n\n                    return -delta / canvasSize[1];\n                }))\n            .subscribe(\n                (delta: number): void => {\n                    this._navigator.stateService.dolly(delta);\n                });\n    }\n\n    protected _disable(): void {\n        this._dollySubscription.unsubscribe();\n        this._orbitSubscription.unsubscribe();\n        this._preventDefaultSubscription.unsubscribe();\n        this._truckSubscription.unsubscribe();\n    }\n\n    protected _getConfiguration(): IMouseConfiguration {\n        return { };\n    }\n\n    private _eventToViewport(event: MouseEvent, element: HTMLElement): number[] {\n        const previousCanvas: number[] = this._viewportCoords.canvasPosition(event, element);\n\n        return this._viewportCoords.canvasToViewport(previousCanvas[0], previousCanvas[1], element);\n    }\n\n    private _planeIntersection(\n        event: MouseEvent,\n        planeNormal: number[],\n        planePoint: number[],\n        camera: THREE.Camera,\n        element: HTMLElement): THREE.Vector3 {\n\n        const [canvasX, canvasY]: number[] = this._viewportCoords.canvasPosition(event, element);\n        const direction: THREE.Vector3 =\n            this._viewportCoords\n                .unprojectFromCanvas(\n                    canvasX,\n                    canvasY,\n                    element,\n                    camera)\n                .sub(camera.position)\n                .normalize();\n\n        if (Math.abs(this._spatial.angleToPlane(direction.toArray(), planeNormal)) < Math.PI / 90) {\n            return null;\n        }\n\n        const l0: THREE.Vector3 = camera.position.clone();\n        const n: THREE.Vector3 = new THREE.Vector3().fromArray(planeNormal);\n        const p0: THREE.Vector3 = new THREE.Vector3().fromArray(planePoint);\n\n        const d: number = new THREE.Vector3().subVectors(p0, l0).dot(n) / direction.clone().dot(n);\n\n        const intersection: THREE.Vector3 = new THREE.Vector3().addVectors(l0, direction.multiplyScalar(d));\n\n        if (this._viewportCoords.worldToCamera(intersection.toArray(), camera)[2] > 0) {\n            return null;\n        }\n\n        return intersection;\n    }\n}\n\nexport default EarthControlHandler;\n",
     "import * as THREE from \"three\";\n\nimport {\n    Lines,\n    Transform,\n    ViewportCoords,\n} from \"../../../src/Geo\";\n\nfunction basicBoundaryPoints(pointsPerSide: number): number[][] {\n    let points: number[][] = [];\n    let os: number[][] = [[0, 0], [1, 0], [1, 1], [0, 1]];\n    let ds: number[][] = [[1, 0], [0, 1], [-1, 0], [0, -1]];\n\n    for (let side: number = 0; side < 4; ++side) {\n        let o: number[] = os[side];\n        let d: number[] = ds[side];\n\n        for (let i: number = 0; i < pointsPerSide; ++i) {\n            points.push([o[0] + d[0] * i / pointsPerSide,\n                            o[1] + d[1] * i / pointsPerSide]);\n        }\n    }\n\n    return points;\n}\n\nfunction insideViewport(x: number, y: number): boolean {\n    return x >= -1 && x <= 1 && y >= -1 && y <= 1;\n}\n\nfunction insideBasic(x: number, y: number): boolean {\n    return x >= 0 && x <= 1 && y >= 0 && y <= 1;\n}\n\nexport function viewportDistances(transform: Transform, perspective: THREE.PerspectiveCamera, viewportCoords: ViewportCoords): number[] {\n    const boundaryPointsBasic: number[][] = basicBoundaryPoints(100);\n    const boundaryPointsViewport: number[][] = boundaryPointsBasic\n        .map(\n            (basic: number[]) => {\n                return viewportCoords.basicToViewportSafe(basic[0], basic[1], transform, perspective);\n            });\n\n    const visibleBoundaryPoints: number[][] = [];\n    const viewportSides: Lines.Point[] = [\n        { x: -1, y: 1 },\n        { x: 1, y: 1 },\n        { x: 1, y: -1 },\n        { x: -1, y: -1 }];\n\n    const intersections: boolean[] = [false, false, false, false];\n\n    for (let i: number = 0; i < boundaryPointsViewport.length; i++) {\n        const p1: number[] = boundaryPointsViewport[i];\n        const p2: number[] = boundaryPointsViewport[(i + 1) % boundaryPointsViewport.length];\n\n        if (p1 === null) {\n            continue;\n        }\n\n        if (p2 === null) {\n            if (insideViewport(p1[0], p1[1])) {\n                visibleBoundaryPoints.push(p1);\n            }\n\n            continue;\n        }\n\n        const [x1, y1]: number[] = p1;\n        const [x2, y2]: number[] = p2;\n\n        if (insideViewport(x1, y1)) {\n            if (insideViewport(x2, y2)) {\n                visibleBoundaryPoints.push(p1);\n            } else {\n                for (let side: number = 0; side < 4; side++) {\n                    const s1: Lines.Segment = { p1: { x: x1, y: y1 }, p2: { x: x2, y: y2 } };\n                    const s2: Lines.Segment = { p1: viewportSides[side], p2: viewportSides[(side + 1) % 4] };\n\n                    const intersecting: boolean = Lines.segmentsIntersect(s1, s2);\n\n                    if (intersecting) {\n                        const intersection: Lines.Point = Lines.segmentIntersection(s1, s2);\n\n                        visibleBoundaryPoints.push(p1, [intersection.x, intersection.y]);\n                        intersections[side] = true;\n                    }\n                }\n            }\n        }\n    }\n\n    const [topLeftBasicX, topLeftBasicY]: number[] =\n        viewportCoords.viewportToBasic(-1, 1, transform, perspective);\n\n    const [topRightBasicX, topRightBasicY]: number[] =\n        viewportCoords.viewportToBasic(1, 1, transform, perspective);\n\n    const [bottomRightBasicX, bottomRightBasicY]: number[] =\n        viewportCoords.viewportToBasic(1, -1, transform, perspective);\n\n    const [bottomLeftBasicX, bottomLeftBasicY]: number[] =\n        viewportCoords.viewportToBasic(-1, -1, transform, perspective);\n\n    if (insideBasic(topLeftBasicX, topLeftBasicY)) {\n        intersections[3] = intersections[0] = true;\n    }\n\n    if (insideBasic(topRightBasicX, topRightBasicY)) {\n        intersections[0] = intersections[1] = true;\n    }\n\n    if (insideBasic(bottomRightBasicX, bottomRightBasicY)) {\n        intersections[1] = intersections[2] = true;\n    }\n\n    if (insideBasic(bottomLeftBasicX, bottomLeftBasicY)) {\n        intersections[2] = intersections[3] = true;\n    }\n\n    const maximums: number[] = [-1, -1, 1, 1];\n\n    for (let visibleBoundaryPoint of visibleBoundaryPoints) {\n        const x: number = visibleBoundaryPoint[0];\n        const y: number = visibleBoundaryPoint[1];\n\n        if (x > maximums[1]) {\n            maximums[1] = x;\n        }\n\n        if (x < maximums[3]) {\n            maximums[3] = x;\n        }\n\n        if (y > maximums[0]) {\n            maximums[0] = y;\n        }\n\n        if (y < maximums[2]) {\n            maximums[2] = y;\n        }\n    }\n\n    const boundary: number[] = [1, 1, -1, -1];\n    const distances: number[] = [];\n\n    for (let side: number = 0; side < 4; side++) {\n        if (intersections[side]) {\n            distances.push(0);\n            continue;\n        }\n\n        distances.push(Math.abs(boundary[side] - maximums[side]));\n    }\n\n    return distances;\n}\n",
     "import {Subscription} from \"rxjs\";\n\nimport {\n    BounceHandler,\n    ComponentService,\n    Component,\n    DoubleClickZoomHandler,\n    DragPanHandler,\n    EarthControlHandler,\n    IMouseConfiguration,\n    ScrollZoomHandler,\n    TouchZoomHandler,\n} from \"../../Component\";\nimport {\n    ViewportCoords,\n    Spatial,\n} from \"../../Geo\";\nimport {\n    Container,\n    Navigator,\n} from \"../../Viewer\";\n\n/**\n * @class MouseComponent\n *\n * @classdesc Component handling mouse and touch events for camera movement.\n *\n * To retrive and use the mouse component\n *\n * @example\n * ```\n * var viewer = new Mapillary.Viewer(\n *     \"<element-id>\",\n *     \"<client-id>\",\n *     \"<my key>\");\n *\n * var mouseComponent = viewer.getComponent(\"mouse\");\n * ```\n */\nexport class MouseComponent extends Component<IMouseConfiguration> {\n    /** @inheritdoc */\n    public static componentName: string = \"mouse\";\n\n    private _bounceHandler: BounceHandler;\n    private _doubleClickZoomHandler: DoubleClickZoomHandler;\n    private _dragPanHandler: DragPanHandler;\n    private _earthControlHandler: EarthControlHandler;\n    private _scrollZoomHandler: ScrollZoomHandler;\n    private _touchZoomHandler: TouchZoomHandler;\n\n    private _configurationSubscription: Subscription;\n\n    /** @ignore */\n    constructor(name: string, container: Container, navigator: Navigator) {\n        super(name, container, navigator);\n\n        const spatial: Spatial = new Spatial();\n        const viewportCoords: ViewportCoords = new ViewportCoords();\n\n        this._bounceHandler = new BounceHandler(this, container, navigator, viewportCoords, spatial);\n        this._doubleClickZoomHandler = new DoubleClickZoomHandler(this, container, navigator, viewportCoords);\n        this._dragPanHandler = new DragPanHandler(this, container, navigator, viewportCoords, spatial);\n        this._earthControlHandler = new EarthControlHandler(this, container, navigator, viewportCoords, spatial);\n        this._scrollZoomHandler = new ScrollZoomHandler(this, container, navigator, viewportCoords);\n        this._touchZoomHandler = new TouchZoomHandler(this, container, navigator, viewportCoords);\n    }\n\n    /**\n     * Get double click zoom.\n     *\n     * @returns {DoubleClickZoomHandler} The double click zoom handler.\n     */\n    public get doubleClickZoom(): DoubleClickZoomHandler {\n        return this._doubleClickZoomHandler;\n    }\n\n    /**\n     * Get drag pan.\n     *\n     * @returns {DragPanHandler} The drag pan handler.\n     */\n    public get dragPan(): DragPanHandler {\n        return this._dragPanHandler;\n    }\n\n    /**\n     * Get scroll zoom.\n     *\n     * @returns {ScrollZoomHandler} The scroll zoom handler.\n     */\n    public get scrollZoom(): ScrollZoomHandler {\n        return this._scrollZoomHandler;\n    }\n\n    /**\n     * Get touch zoom.\n     *\n     * @returns {TouchZoomHandler} The touch zoom handler.\n     */\n    public get touchZoom(): TouchZoomHandler {\n        return this._touchZoomHandler;\n    }\n\n    protected _activate(): void {\n        this._bounceHandler.enable();\n        this._earthControlHandler.enable();\n\n        this._configurationSubscription = this._configuration$\n            .subscribe(\n                (configuration: IMouseConfiguration): void => {\n                    if (configuration.doubleClickZoom) {\n                        this._doubleClickZoomHandler.enable();\n                    } else {\n                        this._doubleClickZoomHandler.disable();\n                    }\n\n                    if (configuration.dragPan) {\n                        this._dragPanHandler.enable();\n                    } else {\n                        this._dragPanHandler.disable();\n                    }\n\n                    if (configuration.scrollZoom) {\n                        this._scrollZoomHandler.enable();\n                    } else {\n                        this._scrollZoomHandler.disable();\n                    }\n\n                    if (configuration.touchZoom) {\n                        this._touchZoomHandler.enable();\n                    } else {\n                        this._touchZoomHandler.disable();\n                    }\n                });\n\n        this._container.mouseService.claimMouse(this._name, 0);\n    }\n\n    protected _deactivate(): void {\n        this._container.mouseService.unclaimMouse(this._name);\n\n        this._configurationSubscription.unsubscribe();\n\n        this._bounceHandler.disable();\n        this._doubleClickZoomHandler.disable();\n        this._dragPanHandler.disable();\n        this._earthControlHandler.disable();\n        this._scrollZoomHandler.disable();\n        this._touchZoomHandler.disable();\n    }\n\n    protected _getDefaultConfiguration(): IMouseConfiguration {\n        return { doubleClickZoom: false, dragPan: true, scrollZoom: true, touchZoom: true };\n    }\n}\n\nComponentService.register(MouseComponent);\nexport default MouseComponent;\n",
     "import {\n    of as observableOf,\n    combineLatest as observableCombineLatest,\n    merge as observableMerge,\n    concat as observableConcat,\n    empty as observableEmpty,\n    Observable,\n    Scheduler,\n    Subject,\n    Subscription,\n} from \"rxjs\";\n\nimport {\n    takeUntil,\n    share,\n    skip,\n    withLatestFrom,\n    first,\n    map,\n    switchMap,\n    publishReplay,\n    auditTime,\n    distinctUntilChanged,\n    startWith,\n    retry,\n    catchError,\n    filter,\n    publish,\n    debounceTime,\n    take,\n    refCount,\n} from \"rxjs/operators\";\n\nimport * as vd from \"virtual-dom\";\n\nimport {\n    Component,\n    ComponentService,\n    ISequenceConfiguration,\n    SequenceDOMRenderer,\n} from \"../../Component\";\nimport {EdgeDirection} from \"../../Edge\";\nimport {\n    IEdgeStatus,\n    GraphMode,\n    Node,\n    Sequence,\n} from \"../../Graph\";\nimport {\n    ISize,\n    IVNodeHash,\n} from \"../../Render\";\nimport {\n    Container,\n    Navigator,\n} from \"../../Viewer\";\n\n/**\n * @class SequenceComponent\n * @classdesc Component showing navigation arrows for sequence directions\n * as well as playing button. Exposes an API to start and stop play.\n */\nexport class SequenceComponent extends Component<ISequenceConfiguration> {\n    /** @inheritdoc */\n    public static componentName: string = \"sequence\";\n\n    /**\n     * Event fired when playing starts or stops.\n     *\n     * @event SequenceComponent#playingchanged\n     * @type {boolean} Indicates whether the player is playing.\n     */\n    public static playingchanged: string = \"playingchanged\";\n\n    /**\n     * Event fired when the hovered key changes.\n     *\n     * @description Emits the key of the node for the direction\n     * arrow that is being hovered. When the mouse leaves a\n     * direction arrow null is emitted.\n     *\n     * @event SequenceComponent#hoveredkeychanged\n     * @type {string} The hovered key, null if no key is hovered.\n     */\n    public static hoveredkeychanged: string = \"hoveredkeychanged\";\n\n    private _sequenceDOMRenderer: SequenceDOMRenderer;\n    private _scheduler: Scheduler;\n\n    private _hoveredKeySubject$: Subject<string>;\n    private _hoveredKey$: Observable<string>;\n    private _containerWidth$: Subject<number>;\n\n    private _emitHoveredKeySubscription: Subscription;\n    private _renderSubscription: Subscription;\n    private _playingSubscription: Subscription;\n    private _containerWidthSubscription: Subscription;\n    private _hoveredKeySubscription: Subscription;\n    private _setSpeedSubscription: Subscription;\n    private _setDirectionSubscription: Subscription;\n    private _setSequenceGraphModeSubscription: Subscription;\n    private _setSpatialGraphModeSubscription: Subscription;\n    private _sequenceSubscription: Subscription;\n    private _moveSubscription: Subscription;\n    private _cacheSequenceNodesSubscription: Subscription;\n    private _stopSubscription: Subscription;\n\n    constructor(\n        name: string,\n        container: Container,\n        navigator: Navigator,\n        renderer?: SequenceDOMRenderer,\n        scheduler?: Scheduler) {\n\n        super(name, container, navigator);\n\n        this._sequenceDOMRenderer = !!renderer ? renderer : new SequenceDOMRenderer(container);\n        this._scheduler = scheduler;\n\n        this._containerWidth$ = new Subject<number>();\n        this._hoveredKeySubject$ = new Subject<string>();\n\n        this._hoveredKey$ = this._hoveredKeySubject$.pipe(share());\n\n        this._navigator.playService.playing$.pipe(\n            skip(1),\n            withLatestFrom(this._configuration$))\n            .subscribe(\n                ([playing, configuration]: [boolean, ISequenceConfiguration]): void => {\n                    this.fire(SequenceComponent.playingchanged, playing);\n\n                    if (playing === configuration.playing) {\n                        return;\n                    }\n\n                    if (playing) {\n                        this.play();\n                    } else {\n                        this.stop();\n                    }\n                });\n\n        this._navigator.playService.direction$.pipe(\n            skip(1),\n            withLatestFrom(this._configuration$))\n            .subscribe(\n                ([direction, configuration]: [EdgeDirection, ISequenceConfiguration]): void => {\n                    if (direction !== configuration.direction) {\n                        this.setDirection(direction);\n                    }\n                });\n    }\n\n    /**\n     * Get hovered key observable.\n     *\n     * @description An observable emitting the key of the node for the direction\n     * arrow that is being hovered. When the mouse leaves a direction arrow null\n     * is emitted.\n     *\n     * @returns {Observable<string>}\n     */\n    public get hoveredKey$(): Observable<string> {\n        return this._hoveredKey$;\n    }\n\n    /**\n     * Start playing.\n     *\n     * @fires PlayerComponent#playingchanged\n     */\n    public play(): void {\n        this.configure({ playing: true });\n    }\n\n    /**\n     * Stop playing.\n     *\n     * @fires PlayerComponent#playingchanged\n     */\n    public stop(): void {\n        this.configure({ playing: false });\n    }\n\n    /**\n     * Set the direction to follow when playing.\n     *\n     * @param {EdgeDirection} direction - The direction that will be followed when playing.\n     */\n    public setDirection(direction: EdgeDirection): void {\n        this.configure({ direction: direction });\n    }\n\n    /**\n     * Set highlight key.\n     *\n     * @description The arrow pointing towards the node corresponding to the\n     * highlight key will be highlighted.\n     *\n     * @param {string} highlightKey Key of node to be highlighted if existing.\n     */\n    public setHighlightKey(highlightKey: string): void {\n        this.configure({ highlightKey: highlightKey });\n    }\n\n    /**\n     * Set max width of container element.\n     *\n     * @description Set max width of the container element holding\n     * the sequence navigation elements. If the min width is larger than the\n     * max width the min width value will be used.\n     *\n     * The container element is automatically resized when the resize\n     * method on the Viewer class is called.\n     *\n     * @param {number} minWidth\n     */\n    public setMaxWidth(maxWidth: number): void {\n        this.configure({ maxWidth: maxWidth });\n    }\n\n    /**\n     * Set min width of container element.\n     *\n     * @description Set min width of the container element holding\n     * the sequence navigation elements. If the min width is larger than the\n     * max width the min width value will be used.\n     *\n     * The container element is automatically resized when the resize\n     * method on the Viewer class is called.\n     *\n     * @param {number} minWidth\n     */\n    public setMinWidth(minWidth: number): void {\n        this.configure({ minWidth: minWidth });\n    }\n\n    /**\n     * Set the value indicating whether the sequence UI elements should be visible.\n     *\n     * @param {boolean} visible\n     */\n    public setVisible(visible: boolean): void {\n        this.configure({ visible: visible });\n    }\n\n    protected _activate(): void {\n        this._sequenceDOMRenderer.activate();\n\n        const edgeStatus$: Observable<IEdgeStatus> = this._navigator.stateService.currentNode$.pipe(\n            switchMap(\n                (node: Node): Observable<IEdgeStatus> => {\n                    return node.sequenceEdges$;\n                }),\n            publishReplay(1),\n            refCount());\n\n        const sequence$: Observable<Sequence> = this._navigator.stateService.currentNode$.pipe(\n            distinctUntilChanged(\n                undefined,\n                (node: Node): string => {\n                    return node.sequenceKey;\n                }),\n            switchMap(\n                (node: Node): Observable<Sequence> => {\n                    return observableConcat(\n                            observableOf(null),\n                            this._navigator.graphService.cacheSequence$(node.sequenceKey).pipe(\n                                retry(3),\n                                catchError(\n                                    (e: Error): Observable<Sequence> => {\n                                        console.error(\"Failed to cache sequence\", e);\n\n                                        return observableOf(null);\n                                    })));\n                }),\n            startWith(null),\n            publishReplay(1),\n            refCount());\n\n        this._sequenceSubscription = sequence$.subscribe();\n\n        const rendererKey$: Observable<string> = this._sequenceDOMRenderer.index$.pipe(\n            withLatestFrom(sequence$),\n            map(\n                ([index, sequence]: [number, Sequence]): string => {\n                    return sequence != null ? sequence.keys[index] : null;\n                }),\n            filter(\n                (key: string): boolean => {\n                    return !!key;\n                }),\n            distinctUntilChanged(),\n            publish(),\n            refCount());\n\n        this._moveSubscription = observableMerge(\n                rendererKey$.pipe(debounceTime(100, this._scheduler)),\n                rendererKey$.pipe(auditTime(400, this._scheduler))).pipe(\n            distinctUntilChanged(),\n            switchMap(\n                (key: string): Observable<Node> => {\n                    return this._navigator.moveToKey$(key).pipe(\n                        catchError(\n                            (e: Error): Observable<Node> => {\n                                return observableEmpty();\n                            }));\n                }))\n            .subscribe();\n\n        this._setSequenceGraphModeSubscription = this._sequenceDOMRenderer.changingPositionChanged$.pipe(\n            filter(\n                (changing: boolean): boolean => {\n                    return changing;\n                }))\n            .subscribe(\n                (): void => {\n                    this._navigator.graphService.setGraphMode(GraphMode.Sequence);\n                });\n\n        this._setSpatialGraphModeSubscription = this._sequenceDOMRenderer.changingPositionChanged$.pipe(\n            filter(\n                (changing: boolean): boolean => {\n                    return !changing;\n                }))\n            .subscribe(\n                (): void => {\n                    this._navigator.graphService.setGraphMode(GraphMode.Spatial);\n                });\n\n        this._navigator.graphService.graphMode$.pipe(\n            switchMap(\n                (mode: GraphMode): Observable<Node> => {\n                    return mode === GraphMode.Spatial ?\n                        this._navigator.stateService.currentNode$.pipe(\n                            take(2)) :\n                        observableEmpty();\n                }),\n            filter(\n                (node: Node): boolean => {\n                    return !node.spatialEdges.cached;\n                }),\n            switchMap(\n                (node: Node): Observable<Node> => {\n                    return this._navigator.graphService.cacheNode$(node.key).pipe(\n                        catchError(\n                            (e: Error): Observable<Node> => {\n                                return observableEmpty();\n                            }));\n                }))\n            .subscribe();\n\n        this._stopSubscription = this._sequenceDOMRenderer.changingPositionChanged$.pipe(\n            filter(\n                (changing: boolean): boolean => {\n                    return changing;\n                }))\n            .subscribe(\n                (): void => {\n                    this._navigator.playService.stop();\n                });\n\n        this._cacheSequenceNodesSubscription = observableCombineLatest(\n                this._navigator.graphService.graphMode$,\n                this._sequenceDOMRenderer.changingPositionChanged$.pipe(\n                    startWith(false),\n                    distinctUntilChanged())).pipe(\n            withLatestFrom(this._navigator.stateService.currentNode$),\n            switchMap(\n                ([[mode, changing], node]: [[GraphMode, boolean], Node]): Observable<Sequence> => {\n                    return changing && mode === GraphMode.Sequence ?\n                        this._navigator.graphService.cacheSequenceNodes$(node.sequenceKey, node.key).pipe(\n                            retry(3),\n                            catchError(\n                                (error: Error): Observable<Sequence> => {\n                                    console.error(\"Failed to cache sequence nodes.\", error);\n\n                                    return observableEmpty();\n                                })) :\n                        observableEmpty();\n                }))\n            .subscribe();\n\n        const position$: Observable<{ index: number, max: number }> = sequence$.pipe(\n            switchMap(\n                (sequence: Sequence): Observable<{ index: number, max: number }> => {\n                    if (!sequence) {\n                        return observableOf({ index: null, max: null });\n                    }\n\n                    let firstCurrentKey: boolean = true;\n\n                    return this._sequenceDOMRenderer.changingPositionChanged$.pipe(\n                        startWith(false),\n                        distinctUntilChanged(),\n                        switchMap(\n                            (changingPosition: boolean): Observable<string> => {\n                                const skipCount: number = !changingPosition && firstCurrentKey ? 0 : 1;\n                                firstCurrentKey = false;\n\n                                return changingPosition ?\n                                    rendererKey$ :\n                                    this._navigator.stateService.currentNode$.pipe(\n                                        map(\n                                            (node: Node): string => {\n                                                return node.key;\n                                            }),\n                                        distinctUntilChanged(),\n                                        skip(skipCount));\n                            }),\n                        map(\n                            (key: string): { index: number, max: number } => {\n                                const index: number = sequence.keys.indexOf(key);\n\n                                if (index === -1) {\n                                    return { index: null, max: null };\n                                }\n\n                                return { index: index, max: sequence.keys.length - 1 };\n                            }));\n                }));\n\n        this._renderSubscription = observableCombineLatest(\n                edgeStatus$,\n                this._configuration$,\n                this._containerWidth$,\n                this._sequenceDOMRenderer.changed$.pipe(startWith(this._sequenceDOMRenderer)),\n                this._navigator.playService.speed$,\n                position$).pipe(\n            map(\n                (\n                    [edgeStatus, configuration, containerWidth, renderer, speed, position]:\n                    [\n                        IEdgeStatus,\n                        ISequenceConfiguration,\n                        number,\n                        SequenceDOMRenderer,\n                        number,\n                        { index: number, max: number }\n                    ]): IVNodeHash => {\n\n                    const vNode: vd.VNode = this._sequenceDOMRenderer\n                        .render(\n                            edgeStatus,\n                            configuration,\n                            containerWidth,\n                            speed,\n                            position.index,\n                            position.max,\n                            this,\n                            this._navigator);\n\n                    return {name: this._name, vnode: vNode };\n                }))\n            .subscribe(this._container.domRenderer.render$);\n\n        this._setSpeedSubscription = this._sequenceDOMRenderer.speed$\n            .subscribe(\n                (speed: number): void => {\n                    this._navigator.playService.setSpeed(speed);\n                });\n\n        this._setDirectionSubscription = this._configuration$.pipe(\n            map(\n                (configuration: ISequenceConfiguration): EdgeDirection => {\n                    return configuration.direction;\n                }),\n            distinctUntilChanged())\n            .subscribe(\n                (direction: EdgeDirection): void => {\n                    this._navigator.playService.setDirection(direction);\n                });\n\n        this._containerWidthSubscription = observableCombineLatest(\n            this._container.renderService.size$,\n            this._configuration$.pipe(\n                distinctUntilChanged(\n                    (value1: [number, number], value2: [number, number]): boolean => {\n                        return value1[0] === value2[0] && value1[1] === value2[1];\n                    },\n                    (configuration: ISequenceConfiguration) => {\n                        return [configuration.minWidth, configuration.maxWidth];\n                    }))).pipe(\n            map(\n                ([size, configuration]: [ISize, ISequenceConfiguration]): number => {\n                    return this._sequenceDOMRenderer.getContainerWidth(\n                        size,\n                        configuration);\n                }))\n            .subscribe(this._containerWidth$);\n\n        this._playingSubscription = this._configuration$.pipe(\n            map(\n                (configuration: ISequenceConfiguration): boolean => {\n                    return configuration.playing;\n                }),\n            distinctUntilChanged())\n            .subscribe(\n                (playing: boolean) => {\n                    if (playing) {\n                        this._navigator.playService.play();\n                    } else {\n                        this._navigator.playService.stop();\n                    }\n                });\n\n        this._hoveredKeySubscription = this._sequenceDOMRenderer.mouseEnterDirection$.pipe(\n            switchMap(\n                (direction: EdgeDirection): Observable<string> => {\n                    const edgeTo$: Observable<string> = edgeStatus$.pipe(\n                        map(\n                            (edgeStatus: IEdgeStatus): string => {\n                                for (let edge of edgeStatus.edges) {\n                                    if (edge.data.direction === direction) {\n                                        return edge.to;\n                                    }\n                                }\n\n                                return null;\n                            }),\n                        takeUntil(this._sequenceDOMRenderer.mouseLeaveDirection$));\n\n                    return observableConcat(edgeTo$, observableOf<string>(null));\n                }),\n            distinctUntilChanged())\n            .subscribe(this._hoveredKeySubject$);\n\n        this._emitHoveredKeySubscription = this._hoveredKey$\n            .subscribe(\n                (key: string): void => {\n                    this.fire(SequenceComponent.hoveredkeychanged, key);\n                });\n    }\n\n    protected _deactivate(): void {\n        this._emitHoveredKeySubscription.unsubscribe();\n        this._renderSubscription.unsubscribe();\n        this._playingSubscription.unsubscribe();\n        this._containerWidthSubscription.unsubscribe();\n        this._hoveredKeySubscription.unsubscribe();\n        this._setSpeedSubscription.unsubscribe();\n        this._setDirectionSubscription.unsubscribe();\n        this._setSequenceGraphModeSubscription.unsubscribe();\n        this._setSpatialGraphModeSubscription.unsubscribe();\n        this._sequenceSubscription.unsubscribe();\n        this._moveSubscription.unsubscribe();\n        this._cacheSequenceNodesSubscription.unsubscribe();\n        this._stopSubscription.unsubscribe();\n\n        this._sequenceDOMRenderer.deactivate();\n    }\n\n    protected _getDefaultConfiguration(): ISequenceConfiguration {\n        return {\n            direction: EdgeDirection.Next,\n            maxWidth: 108,\n            minWidth: 70,\n            playing: false,\n            visible: true,\n        };\n    }\n}\n\nComponentService.register(SequenceComponent);\nexport default SequenceComponent;\n",
     "import {merge as observableMerge, Observable, Subject, Subscription} from \"rxjs\";\n\nimport {filter} from \"rxjs/operators\";\nimport * as vd from \"virtual-dom\";\n\nimport {\n    SequenceMode,\n    ISequenceConfiguration,\n    SequenceComponent,\n} from \"../../Component\";\nimport {EdgeDirection} from \"../../Edge\";\nimport {AbortMapillaryError} from \"../../Error\";\nimport {\n    IEdgeStatus,\n    Node,\n} from \"../../Graph\";\nimport {ISize} from \"../../Render\";\nimport {\n    Container,\n    Navigator,\n} from \"../../Viewer\";\n\nexport class SequenceDOMRenderer {\n    private _container: Container;\n\n    private _minThresholdWidth: number;\n    private _maxThresholdWidth: number;\n    private _minThresholdHeight: number;\n    private _maxThresholdHeight: number;\n    private _stepperDefaultWidth: number;\n    private _controlsDefaultWidth: number;\n    private _defaultHeight: number;\n    private _expandControls: boolean;\n    private _mode: SequenceMode;\n    private _speed: number;\n    private _changingSpeed: boolean;\n    private _index: number;\n    private _changingPosition: boolean;\n\n    private _mouseEnterDirection$: Subject<EdgeDirection>;\n    private _mouseLeaveDirection$: Subject<EdgeDirection>;\n    private _notifyChanged$: Subject<SequenceDOMRenderer>;\n    private _notifyChangingPositionChanged$: Subject<boolean>;\n    private _notifySpeedChanged$: Subject<number>;\n    private _notifyIndexChanged$: Subject<number>;\n\n    private _changingSubscription: Subscription;\n\n    constructor(container: Container) {\n        this._container = container;\n\n        this._minThresholdWidth = 320;\n        this._maxThresholdWidth = 1480;\n        this._minThresholdHeight = 240;\n        this._maxThresholdHeight = 820;\n        this._stepperDefaultWidth = 108;\n        this._controlsDefaultWidth = 88;\n\n        this._defaultHeight = 30;\n        this._expandControls = false;\n        this._mode = SequenceMode.Default;\n        this._speed = 0.5;\n        this._changingSpeed = false;\n        this._index = null;\n        this._changingPosition = false;\n\n        this._mouseEnterDirection$ = new Subject<EdgeDirection>();\n        this._mouseLeaveDirection$ = new Subject<EdgeDirection>();\n        this._notifyChanged$ = new Subject<SequenceDOMRenderer>();\n        this._notifyChangingPositionChanged$ = new Subject<boolean>();\n        this._notifySpeedChanged$ = new Subject<number>();\n        this._notifyIndexChanged$ = new Subject<number>();\n    }\n\n    public get changed$(): Observable<SequenceDOMRenderer> {\n        return this._notifyChanged$;\n    }\n\n    public get changingPositionChanged$(): Observable<boolean> {\n        return this._notifyChangingPositionChanged$;\n    }\n\n    public get speed$(): Observable<number> {\n        return this._notifySpeedChanged$;\n    }\n\n    public get index$(): Observable<number> {\n        return this._notifyIndexChanged$;\n    }\n\n    public get mouseEnterDirection$(): Observable<EdgeDirection> {\n        return this._mouseEnterDirection$;\n    }\n\n    public get mouseLeaveDirection$(): Observable<EdgeDirection> {\n        return this._mouseLeaveDirection$;\n    }\n\n    public activate(): void {\n        if (!!this._changingSubscription) {\n            return;\n        }\n\n        this._changingSubscription = observableMerge(\n                this._container.mouseService.documentMouseUp$,\n                this._container.touchService.touchEnd$.pipe(\n                    filter(\n                        (touchEvent: TouchEvent): boolean => {\n                            return touchEvent.touches.length === 0;\n                        })))\n            .subscribe(\n                (event: Event): void => {\n                    if (this._changingSpeed) {\n                        this._changingSpeed = false;\n                    }\n\n                    if (this._changingPosition) {\n                        this._setChangingPosition(false);\n                    }\n                });\n    }\n\n    public deactivate(): void {\n        if (!this._changingSubscription) {\n            return;\n        }\n\n        this._changingSpeed = false;\n        this._changingPosition = false;\n        this._expandControls = false;\n        this._mode = SequenceMode.Default;\n\n        this._changingSubscription.unsubscribe();\n        this._changingSubscription = null;\n    }\n\n    public render(\n        edgeStatus: IEdgeStatus,\n        configuration: ISequenceConfiguration,\n        containerWidth: number,\n        speed: number,\n        index: number,\n        max: number,\n        component: SequenceComponent,\n        navigator: Navigator): vd.VNode {\n\n        if (configuration.visible === false) {\n            return vd.h(\"div.SequenceContainer\", {}, []);\n        }\n\n        const stepper: vd.VNode =\n            this._createStepper(edgeStatus, configuration, containerWidth, component, navigator);\n        const controls: vd.VNode = this._createSequenceControls(containerWidth);\n        const playback: vd.VNode = this._createPlaybackControls(containerWidth, speed, component, configuration);\n        const timeline: vd.VNode = this._createTimelineControls(containerWidth, index, max);\n\n        return vd.h(\"div.SequenceContainer\", [stepper, controls, playback, timeline]);\n    }\n\n    public getContainerWidth(size: ISize, configuration: ISequenceConfiguration): number {\n        let minWidth: number = configuration.minWidth;\n        let maxWidth: number = configuration.maxWidth;\n        if (maxWidth < minWidth) {\n            maxWidth = minWidth;\n        }\n\n        let relativeWidth: number =\n            (size.width - this._minThresholdWidth) / (this._maxThresholdWidth - this._minThresholdWidth);\n        let relativeHeight: number =\n            (size.height - this._minThresholdHeight) / (this._maxThresholdHeight - this._minThresholdHeight);\n\n        let coeff: number = Math.max(0, Math.min(1, Math.min(relativeWidth, relativeHeight)));\n\n        return minWidth + coeff * (maxWidth - minWidth);\n    }\n\n    private _createPositionInput(index: number, max: number): vd.VNode {\n        this._index = index;\n\n        const onPosition: (e: Event) => void = (e: Event): void => {\n            this._index = Number((<HTMLInputElement>e.target).value);\n            this._notifyIndexChanged$.next(this._index);\n        };\n\n        const boundingRect: ClientRect = this._container.domContainer.getBoundingClientRect();\n        const width: number = Math.max(276, Math.min(410, 5 + 0.8 * boundingRect.width)) - 65;\n\n        const onStart: (e: Event) => void = (e: Event): void => {\n            e.stopPropagation();\n            this._setChangingPosition(true);\n        };\n\n        const onMove: (e: Event) => void = (e: Event): void => {\n            if (this._changingPosition === true) {\n                e.stopPropagation();\n            }\n        };\n\n        const onKeyDown: (e: KeyboardEvent) => void = (e: KeyboardEvent): void => {\n            if (e.key === \"ArrowDown\" || e.key === \"ArrowLeft\" ||\n                e.key === \"ArrowRight\" || e.key === \"ArrowUp\") {\n                e.preventDefault();\n            }\n        };\n\n        const positionInputProperties: vd.createProperties = {\n            max: max != null ? max : 1,\n            min: 0,\n            onchange: onPosition,\n            oninput: onPosition,\n            onkeydown: onKeyDown,\n            onmousedown: onStart,\n            onmousemove: onMove,\n            ontouchmove: onMove,\n            ontouchstart: onStart,\n            style: {\n                width: `${width}px`,\n            },\n            type: \"range\",\n            value: index != null ? index : 0,\n        };\n\n        const disabled: boolean = index == null || max == null || max <= 1;\n\n        if (disabled) {\n            positionInputProperties.disabled = \"true\";\n        }\n\n        const positionInput: vd.VNode = vd.h(\"input.SequencePosition\", positionInputProperties, []);\n\n        const positionContainerClass: string = disabled ? \".SequencePositionContainerDisabled\" : \".SequencePositionContainer\";\n\n        return vd.h(\"div\" + positionContainerClass, [positionInput]);\n    }\n\n    private _createSpeedInput(speed: number): vd.VNode {\n        this._speed = speed;\n\n        const onSpeed: (e: Event) => void = (e: Event): void => {\n            this._speed = Number((<HTMLInputElement>e.target).value) / 1000;\n            this._notifySpeedChanged$.next(this._speed);\n        };\n\n        const boundingRect: ClientRect = this._container.domContainer.getBoundingClientRect();\n        const width: number = Math.max(276, Math.min(410, 5 + 0.8 * boundingRect.width)) - 160;\n\n        const onStart: (e: Event) => void = (e: Event): void => {\n            this._changingSpeed = true;\n            e.stopPropagation();\n        };\n\n        const onMove: (e: Event) => void = (e: Event): void => {\n            if (this._changingSpeed === true) {\n                e.stopPropagation();\n            }\n        };\n\n        const onKeyDown: (e: KeyboardEvent) => void = (e: KeyboardEvent): void => {\n            if (e.key === \"ArrowDown\" || e.key === \"ArrowLeft\" ||\n                e.key === \"ArrowRight\" || e.key === \"ArrowUp\") {\n                e.preventDefault();\n            }\n        };\n\n        const speedInput: vd.VNode = vd.h(\n            \"input.SequenceSpeed\",\n            {\n                max: 1000,\n                min: 0,\n                onchange: onSpeed,\n                oninput: onSpeed,\n                onkeydown: onKeyDown,\n                onmousedown: onStart,\n                onmousemove: onMove,\n                ontouchmove: onMove,\n                ontouchstart: onStart,\n                style: {\n                    width: `${width}px`,\n                },\n                type: \"range\",\n                value: 1000 * speed,\n            },\n            []);\n\n        return vd.h(\"div.SequenceSpeedContainer\", [speedInput]);\n    }\n\n    private _createPlaybackControls(\n        containerWidth: number,\n        speed: number,\n        component: SequenceComponent,\n        configuration: ISequenceConfiguration): vd.VNode {\n\n        if (this._mode !== SequenceMode.Playback) {\n            return vd.h(\"div.SequencePlayback\", []);\n        }\n\n        const switchIcon: vd.VNode = vd.h(\"div.SequenceSwitchIcon.SequenceIconVisible\", []);\n        const direction: EdgeDirection = configuration.direction === EdgeDirection.Next ?\n            EdgeDirection.Prev : EdgeDirection.Next;\n\n        const playing: boolean = configuration.playing;\n        const switchButtonProperties: vd.createProperties = {\n            onclick: (): void => {\n                if (!playing) {\n                    component.setDirection(direction);\n                }\n            },\n        };\n        const switchButtonClassName: string = configuration.playing ? \".SequenceSwitchButtonDisabled\" : \".SequenceSwitchButton\";\n        const switchButton: vd.VNode = vd.h(\"div\" + switchButtonClassName, switchButtonProperties, [switchIcon]);\n        const slowIcon: vd.VNode = vd.h(\"div.SequenceSlowIcon.SequenceIconVisible\", []);\n        const slowContainer: vd.VNode = vd.h(\"div.SequenceSlowContainer\", [slowIcon]);\n        const fastIcon: vd.VNode = vd.h(\"div.SequenceFastIcon.SequenceIconVisible\", []);\n        const fastContainer: vd.VNode = vd.h(\"div.SequenceFastContainer\", [fastIcon]);\n        const closeIcon: vd.VNode = vd.h(\"div.SequenceCloseIcon.SequenceIconVisible\", []);\n        const closeButtonProperties: vd.createProperties = {\n            onclick: (): void => {\n                this._mode = SequenceMode.Default;\n                this._notifyChanged$.next(this);\n            },\n        };\n        const closeButton: vd.VNode = vd.h(\"div.SequenceCloseButton\", closeButtonProperties, [closeIcon]);\n        const speedInput: vd.VNode = this._createSpeedInput(speed);\n\n        const playbackChildren: vd.VNode[] = [switchButton, slowContainer, speedInput, fastContainer, closeButton];\n\n        const top: number = Math.round(containerWidth / this._stepperDefaultWidth * this._defaultHeight + 10);\n        const playbackProperties: vd.createProperties = { style: { top: `${top}px` } };\n\n        return vd.h(\"div.SequencePlayback\", playbackProperties, playbackChildren);\n    }\n\n    private _createPlayingButton(\n        nextKey: string,\n        prevKey: string,\n        configuration: ISequenceConfiguration,\n        component: SequenceComponent): vd.VNode {\n\n        let canPlay: boolean = configuration.direction === EdgeDirection.Next && nextKey != null ||\n            configuration.direction === EdgeDirection.Prev && prevKey != null;\n\n        let onclick: (e: Event) => void = configuration.playing ?\n            (e: Event): void => { component.stop(); } :\n            canPlay ? (e: Event): void => { component.play(); } : null;\n\n        let buttonProperties: vd.createProperties = { onclick: onclick };\n\n        let iconClass: string = configuration.playing ?\n            \"Stop\" :\n            canPlay ? \"Play\" : \"PlayDisabled\";\n\n        let iconProperties: vd.createProperties = { className: iconClass };\n        if (configuration.direction === EdgeDirection.Prev) {\n            iconProperties.style = {\n                transform: \"rotate(180deg) translate(50%, 50%)\",\n            };\n        }\n\n        let icon: vd.VNode = vd.h(\"div.SequenceComponentIcon\", iconProperties, []);\n\n        let buttonClass: string = canPlay ? \"SequencePlay\" : \"SequencePlayDisabled\";\n\n        return vd.h(\"div.\" + buttonClass, buttonProperties, [icon]);\n    }\n\n    private _createSequenceControls(containerWidth: number): vd.VNode {\n        const borderRadius: number = Math.round(8 / this._stepperDefaultWidth * containerWidth);\n        const expanderProperties: vd.createProperties = {\n            onclick: (): void => {\n                this._expandControls = !this._expandControls;\n                this._mode = SequenceMode.Default;\n                this._notifyChanged$.next(this);\n            },\n            style: {\n                \"border-bottom-right-radius\": `${borderRadius}px`,\n                \"border-top-right-radius\": `${borderRadius}px`,\n            },\n        };\n        const expanderBar: vd.VNode = vd.h(\"div.SequenceExpanderBar\", []);\n        const expander: vd.VNode = vd.h(\"div.SequenceExpanderButton\", expanderProperties, [expanderBar]);\n\n        const fastIconClassName: string = this._mode === SequenceMode.Playback ?\n            \".SequenceFastIconGrey.SequenceIconVisible\" : \".SequenceFastIcon\";\n        const fastIcon: vd.VNode = vd.h(\"div\" + fastIconClassName, []);\n        const playbackProperties: vd.createProperties = {\n            onclick: (): void => {\n                this._mode = this._mode === SequenceMode.Playback ?\n                    SequenceMode.Default :\n                    SequenceMode.Playback;\n                this._notifyChanged$.next(this);\n            },\n        };\n\n        const playback: vd.VNode = vd.h(\"div.SequencePlaybackButton\", playbackProperties, [fastIcon]);\n\n        const timelineIconClassName: string = this._mode === SequenceMode.Timeline ?\n            \".SequenceTimelineIconGrey.SequenceIconVisible\" : \".SequenceTimelineIcon\";\n        const timelineIcon: vd.VNode = vd.h(\"div\" + timelineIconClassName, []);\n        const timelineProperties: vd.createProperties = {\n            onclick: (): void => {\n                this._mode = this._mode === SequenceMode.Timeline ?\n                    SequenceMode.Default :\n                    SequenceMode.Timeline;\n                this._notifyChanged$.next(this);\n            },\n        };\n\n        const timeline: vd.VNode = vd.h(\"div.SequenceTimelineButton\", timelineProperties, [timelineIcon]);\n\n        const properties: vd.createProperties = {\n            style: {\n                height: (this._defaultHeight / this._stepperDefaultWidth * containerWidth) + \"px\",\n                transform: `translate(${containerWidth / 2 + 2}px, 0)`,\n                width: (this._controlsDefaultWidth / this._stepperDefaultWidth * containerWidth) + \"px\",\n            },\n        };\n\n        const className: string = \".SequenceControls\" +\n            (this._expandControls ? \".SequenceControlsExpanded\" : \"\");\n\n        return vd.h(\"div\" + className, properties, [playback, timeline, expander]);\n    }\n\n    private _createSequenceArrows(\n        nextKey: string,\n        prevKey: string,\n        containerWidth: number,\n        configuration: ISequenceConfiguration,\n        navigator: Navigator): vd.VNode[] {\n\n        let nextProperties: vd.createProperties = {\n            onclick: nextKey != null ?\n                (e: Event): void => {\n                    navigator.moveDir$(EdgeDirection.Next)\n                        .subscribe(\n                            undefined,\n                            (error: Error): void => {\n                                if (!(error instanceof AbortMapillaryError)) {\n                                    console.error(error);\n                                }\n                            });\n                } :\n                null,\n            onmouseenter: (e: MouseEvent): void => { this._mouseEnterDirection$.next(EdgeDirection.Next); },\n            onmouseleave: (e: MouseEvent): void => { this._mouseLeaveDirection$.next(EdgeDirection.Next); },\n        };\n\n        const borderRadius: number = Math.round(8 / this._stepperDefaultWidth * containerWidth);\n        let prevProperties: vd.createProperties = {\n            onclick: prevKey != null ?\n                (e: Event): void => {\n                    navigator.moveDir$(EdgeDirection.Prev)\n                        .subscribe(\n                            undefined,\n                            (error: Error): void => {\n                                if (!(error instanceof AbortMapillaryError)) {\n                                    console.error(error);\n                                }\n                            });\n                } :\n                null,\n            onmouseenter: (e: MouseEvent): void => { this._mouseEnterDirection$.next(EdgeDirection.Prev); },\n            onmouseleave: (e: MouseEvent): void => { this._mouseLeaveDirection$.next(EdgeDirection.Prev); },\n            style: {\n                \"border-bottom-left-radius\": `${borderRadius}px`,\n                \"border-top-left-radius\": `${borderRadius}px`,\n            },\n        };\n\n        let nextClass: string = this._getStepClassName(EdgeDirection.Next, nextKey, configuration.highlightKey);\n        let prevClass: string = this._getStepClassName(EdgeDirection.Prev, prevKey, configuration.highlightKey);\n\n        let nextIcon: vd.VNode = vd.h(\"div.SequenceComponentIcon\", []);\n        let prevIcon: vd.VNode = vd.h(\"div.SequenceComponentIcon\", []);\n\n        return [\n            vd.h(\"div.\" + prevClass, prevProperties, [prevIcon]),\n            vd.h(\"div.\" + nextClass, nextProperties, [nextIcon]),\n        ];\n    }\n\n    private _createStepper(\n        edgeStatus: IEdgeStatus,\n        configuration: ISequenceConfiguration,\n        containerWidth: number,\n        component: SequenceComponent,\n        navigator: Navigator,\n        ): vd.VNode {\n\n        let nextKey: string = null;\n        let prevKey: string = null;\n\n        for (let edge of edgeStatus.edges) {\n            if (edge.data.direction === EdgeDirection.Next) {\n                nextKey = edge.to;\n            }\n\n            if (edge.data.direction === EdgeDirection.Prev) {\n                prevKey = edge.to;\n            }\n        }\n\n        const playingButton: vd.VNode = this._createPlayingButton(nextKey, prevKey, configuration, component);\n        const buttons: vd.VNode[] = this._createSequenceArrows(nextKey, prevKey, containerWidth, configuration, navigator);\n        buttons.splice(1, 0, playingButton);\n\n        const containerProperties: vd.createProperties = {\n            oncontextmenu: (event: MouseEvent): void => { event.preventDefault(); },\n            style: {\n                height: (this._defaultHeight / this._stepperDefaultWidth * containerWidth) + \"px\",\n                width: containerWidth + \"px\",\n            },\n        };\n\n        return vd.h(\"div.SequenceStepper\", containerProperties, buttons);\n    }\n\n    private _createTimelineControls(containerWidth: number, index: number, max: number): vd.VNode {\n        if (this._mode !== SequenceMode.Timeline) {\n            return vd.h(\"div.SequenceTimeline\", []);\n        }\n\n        const positionInput: vd.VNode = this._createPositionInput(index, max);\n\n        const closeIcon: vd.VNode = vd.h(\"div.SequenceCloseIcon.SequenceIconVisible\", []);\n        const closeButtonProperties: vd.createProperties = {\n            onclick: (): void => {\n                this._mode = SequenceMode.Default;\n                this._notifyChanged$.next(this);\n            },\n        };\n\n        const closeButton: vd.VNode = vd.h(\"div.SequenceCloseButton\", closeButtonProperties, [closeIcon]);\n\n        const top: number = Math.round(containerWidth / this._stepperDefaultWidth * this._defaultHeight + 10);\n        const playbackProperties: vd.createProperties = { style: { top: `${top}px` } };\n\n        return vd.h(\"div.SequenceTimeline\", playbackProperties, [positionInput, closeButton]);\n    }\n\n    private _getStepClassName(direction: EdgeDirection, key: string, highlightKey: string): string {\n        let className: string = direction === EdgeDirection.Next ?\n            \"SequenceStepNext\" :\n            \"SequenceStepPrev\";\n\n        if (key == null) {\n            className += \"Disabled\";\n        } else {\n            if (highlightKey === key) {\n                className += \"Highlight\";\n            }\n        }\n\n        return className;\n    }\n\n    private _setChangingPosition(value: boolean): void {\n        this._changingPosition = value;\n        this._notifyChangingPositionChanged$.next(value);\n    }\n}\n\nexport default SequenceDOMRenderer;\n",
     "export enum SequenceMode {\n    Default,\n    Playback,\n    Timeline,\n}\n\nexport default SequenceMode;\n",
-    "import * as fs from \"fs\";\nimport * as path from \"path\";\n\nimport {IShader} from \"../../Component\";\n\nexport class Shaders {\n    public static equirectangular: IShader = {\n        fragment: fs.readFileSync(path.join(__dirname, \"./equirectangular.fragment.glsl\"), \"utf8\"),\n        vertex: fs.readFileSync(path.join(__dirname, \"./equirectangular.vertex.glsl\"), \"utf8\"),\n    };\n\n    public static equirectangularCurtain: IShader = {\n        fragment: fs.readFileSync(path.join(__dirname, \"./equirectangular_curtain.fragment.glsl\"), \"utf8\"),\n        vertex: fs.readFileSync(path.join(__dirname, \"./equirectangular_curtain.vertex.glsl\"), \"utf8\"),\n    };\n\n    public static perspective: IShader = {\n        fragment: fs.readFileSync(path.join(__dirname, \"./perspective.fragment.glsl\"), \"utf8\"),\n        vertex: fs.readFileSync(path.join(__dirname, \"./perspective.vertex.glsl\"), \"utf8\"),\n    };\n\n    public static perspectiveCurtain: IShader = {\n        fragment: fs.readFileSync(path.join(__dirname, \"./perspective_curtain.fragment.glsl\"), \"utf8\"),\n        vertex: fs.readFileSync(path.join(__dirname, \"./perspective_curtain.vertex.glsl\"), \"utf8\"),\n    };\n\n    public static perspectiveDistorted: IShader = {\n        fragment: fs.readFileSync(path.join(__dirname, \"./perspective_distorted.fragment.glsl\"), \"utf8\"),\n        vertex: fs.readFileSync(path.join(__dirname, \"./perspective_distorted.vertex.glsl\"), \"utf8\"),\n    };\n\n    public static perspectiveDistortedCurtain: IShader = {\n        fragment: fs.readFileSync(path.join(__dirname, \"./perspective_distorted_curtain.fragment.glsl\"), \"utf8\"),\n        vertex: fs.readFileSync(path.join(__dirname, \"./perspective_distorted_curtain.vertex.glsl\"), \"utf8\"),\n    };\n}\n",
-    "import {\n    concat as observableConcat,\n    of as observableOf,\n    zip as observableZip,\n    combineLatest as observableCombineLatest,\n    empty as observableEmpty,\n    Observable,\n    Subscription,\n    Subject,\n} from \"rxjs\";\n\nimport {\n    publishReplay,\n    pairwise,\n    catchError,\n    takeUntil,\n    publish,\n    skipWhile,\n    scan,\n    filter,\n    debounceTime,\n    startWith,\n    map,\n    switchMap,\n    withLatestFrom,\n    refCount,\n    first,\n    distinctUntilChanged,\n} from \"rxjs/operators\";\n\nimport * as THREE from \"three\";\n\nimport {\n    ISliderNodes,\n    ISliderCombination,\n    IGLRendererOperation,\n    PositionLookat,\n} from \"./interfaces/interfaces\";\n\nimport {\n    Component,\n    ComponentService,\n    ISliderConfiguration,\n    ISliderKeys,\n    SliderDOMRenderer,\n    SliderGLRenderer,\n    SliderMode,\n} from \"../../Component\";\nimport {\n    Spatial,\n    Transform,\n    ViewportCoords,\n} from \"../../Geo\";\nimport { Node } from \"../../Graph\";\nimport {\n    ICurrentState,\n    IFrame,\n    State,\n} from \"../../State\";\nimport {\n    Container,\n    ImageSize,\n    Navigator,\n} from \"../../Viewer\";\nimport {\n    GLRenderStage,\n    IGLRenderHash,\n    ISize,\n    IVNodeHash,\n    RenderCamera,\n} from \"../../Render\";\nimport {\n    IBoundingBox,\n    ImageTileLoader,\n    ImageTileStore,\n    IRegionOfInterest,\n    RegionOfInterestCalculator,\n    TextureProvider,\n} from \"../../Tiles\";\nimport {\n    Settings,\n    Urls,\n} from \"../../Utils\";\n\n/**\n * @class SliderComponent\n *\n * @classdesc Component for comparing pairs of images. Renders\n * a slider for adjusting the curtain of the first image.\n *\n * Deactivate the sequence, direction and image plane\n * components when activating the slider component to avoid\n * interfering UI elements.\n *\n * To retrive and use the marker component\n *\n * @example\n * ```\n * var viewer = new Mapillary.Viewer(\n *     \"<element-id>\",\n *     \"<client-id>\",\n *     \"<my key>\");\n *\n * viewer.deactivateComponent(\"imagePlane\");\n * viewer.deactivateComponent(\"direction\");\n * viewer.deactivateComponent(\"sequence\");\n *\n * viewer.activateComponent(\"slider\");\n *\n * var sliderComponent = viewer.getComponent(\"marker\");\n * ```\n */\nexport class SliderComponent extends Component<ISliderConfiguration> {\n    public static componentName: string = \"slider\";\n\n    private _viewportCoords: ViewportCoords;\n    private _domRenderer: SliderDOMRenderer;\n    private _imageTileLoader: ImageTileLoader;\n    private _roiCalculator: RegionOfInterestCalculator;\n    private _spatial: Spatial;\n\n    private _glRendererOperation$: Subject<IGLRendererOperation>;\n    private _glRenderer$: Observable<SliderGLRenderer>;\n    private _glRendererCreator$: Subject<void>;\n    private _glRendererDisposer$: Subject<void>;\n\n    private _setKeysSubscription: Subscription;\n\n    private _modeSubcription: Subscription;\n    private _stateSubscription: Subscription;\n    private _glRenderSubscription: Subscription;\n    private _domRenderSubscription: Subscription;\n    private _moveSubscription: Subscription;\n    private _updateCurtainSubscription: Subscription;\n    private _waitSubscription: Subscription;\n\n    private _textureProviderSubscription: Subscription;\n    private _setTextureProviderSubscription: Subscription;\n    private _setTileSizeSubscription: Subscription;\n    private _abortTextureProviderSubscription: Subscription;\n    private _setRegionOfInterestSubscription: Subscription;\n    private _hasTextureSubscription: Subscription;\n    private _updateBackgroundSubscription: Subscription;\n    private _updateTextureImageSubscription: Subscription;\n\n    private _textureProviderSubscriptionPrev: Subscription;\n    private _setTextureProviderSubscriptionPrev: Subscription;\n    private _setTileSizeSubscriptionPrev: Subscription;\n    private _abortTextureProviderSubscriptionPrev: Subscription;\n    private _setRegionOfInterestSubscriptionPrev: Subscription;\n    private _hasTextureSubscriptionPrev: Subscription;\n    private _updateBackgroundSubscriptionPrev: Subscription;\n    private _updateTextureImageSubscriptionPrev: Subscription;\n\n    /** @ignore */\n    constructor (name: string, container: Container, navigator: Navigator, viewportCoords?: ViewportCoords) {\n        super(name, container, navigator);\n\n        this._viewportCoords = !!viewportCoords ? viewportCoords : new ViewportCoords();\n        this._domRenderer = new SliderDOMRenderer(container);\n        this._imageTileLoader = new ImageTileLoader(Urls.tileScheme, Urls.tileDomain, Urls.origin);\n        this._roiCalculator = new RegionOfInterestCalculator();\n        this._spatial = new Spatial();\n\n        this._glRendererOperation$ = new Subject<IGLRendererOperation>();\n        this._glRendererCreator$ = new Subject<void>();\n        this._glRendererDisposer$ = new Subject<void>();\n\n        this._glRenderer$ = this._glRendererOperation$.pipe(\n            scan(\n                (glRenderer: SliderGLRenderer, operation: IGLRendererOperation): SliderGLRenderer => {\n                    return operation(glRenderer);\n                },\n                null),\n            filter(\n                (glRenderer: SliderGLRenderer): boolean => {\n                    return glRenderer != null;\n                }),\n            distinctUntilChanged(\n                undefined,\n                (glRenderer: SliderGLRenderer): number => {\n                    return glRenderer.frameId;\n                }));\n\n        this._glRendererCreator$.pipe(\n            map(\n                (): IGLRendererOperation => {\n                    return (glRenderer: SliderGLRenderer): SliderGLRenderer => {\n                        if (glRenderer != null) {\n                            throw new Error(\"Multiple slider states can not be created at the same time\");\n                        }\n\n                        return new SliderGLRenderer();\n                    };\n                }))\n            .subscribe(this._glRendererOperation$);\n\n        this._glRendererDisposer$.pipe(\n            map(\n                (): IGLRendererOperation => {\n                    return (glRenderer: SliderGLRenderer): SliderGLRenderer => {\n                        glRenderer.dispose();\n\n                        return null;\n                    };\n                }))\n            .subscribe(this._glRendererOperation$);\n    }\n\n    /**\n     * Set the initial position.\n     *\n     * @description Configures the intial position of the slider.\n     * The inital position value will be used when the component\n     * is activated.\n     *\n     * @param {number} initialPosition - Initial slider position.\n     */\n    public setInitialPosition(initialPosition: number): void {\n        this.configure({ initialPosition: initialPosition });\n    }\n\n    /**\n     * Set the image keys.\n     *\n     * @description Configures the component to show the image\n     * planes for the supplied image keys.\n     *\n     * @param {ISliderKeys} keys - Slider keys object specifying\n     * the images to be shown in the foreground and the background.\n     */\n    public setKeys(keys: ISliderKeys): void {\n        this.configure({ keys: keys });\n    }\n\n    /**\n     * Set the slider mode.\n     *\n     * @description Configures the mode for transitions between\n     * image pairs.\n     *\n     * @param {SliderMode} mode - Slider mode to be set.\n     */\n    public setSliderMode(mode: SliderMode): void {\n        this.configure({ mode: mode });\n    }\n\n    /**\n     * Set the value controlling if the slider is visible.\n     *\n     * @param {boolean} sliderVisible - Value indicating if\n     * the slider should be visible or not.\n     */\n    public setSliderVisible(sliderVisible: boolean): void {\n        this.configure({ sliderVisible: sliderVisible });\n    }\n\n    protected _activate(): void {\n        this._modeSubcription = this._domRenderer.mode$\n            .subscribe(\n                (mode: SliderMode): void => {\n                    this.setSliderMode(mode);\n                });\n\n        this._glRenderSubscription = this._glRenderer$.pipe(\n            map(\n                (glRenderer: SliderGLRenderer): IGLRenderHash => {\n                    let renderHash: IGLRenderHash = {\n                        name: this._name,\n                        render: {\n                            frameId: glRenderer.frameId,\n                            needsRender: glRenderer.needsRender,\n                            render: glRenderer.render.bind(glRenderer),\n                            stage: GLRenderStage.Background,\n                        },\n                    };\n\n                    return renderHash;\n                }))\n            .subscribe(this._container.glRenderer.render$);\n\n        const position$: Observable<number> = observableConcat(\n            this.configuration$.pipe(\n                map(\n                    (configuration: ISliderConfiguration): number => {\n                        return configuration.initialPosition != null ?\n                            configuration.initialPosition : 1;\n                    }),\n                first()),\n            this._domRenderer.position$);\n\n        const mode$: Observable<SliderMode> = this.configuration$.pipe(\n            map(\n                (configuration: ISliderConfiguration): SliderMode => {\n                    return configuration.mode;\n                }),\n            distinctUntilChanged());\n\n        const motionless$: Observable<boolean> = this._navigator.stateService.currentState$.pipe(\n            map(\n                (frame: IFrame): boolean => {\n                    return frame.state.motionless;\n                }),\n            distinctUntilChanged());\n\n        const fullPano$: Observable<boolean> = this._navigator.stateService.currentState$.pipe(\n            map(\n                (frame: IFrame): boolean => {\n                    return frame.state.currentNode.fullPano;\n                }),\n            distinctUntilChanged());\n\n        const sliderVisible$: Observable<boolean> = observableCombineLatest(\n                this._configuration$.pipe(\n                    map(\n                        (configuration: ISliderConfiguration): boolean => {\n                            return configuration.sliderVisible;\n                        })),\n                this._navigator.stateService.currentState$.pipe(\n                    map(\n                        (frame: IFrame): boolean => {\n                            return !(frame.state.currentNode == null ||\n                                frame.state.previousNode == null ||\n                                (frame.state.currentNode.pano && !frame.state.currentNode.fullPano) ||\n                                (frame.state.previousNode.pano && !frame.state.previousNode.fullPano) ||\n                                (frame.state.currentNode.fullPano && !frame.state.previousNode.fullPano));\n                        }),\n                    distinctUntilChanged())).pipe(\n            map(\n                ([sliderVisible, enabledState]: [boolean, boolean]): boolean => {\n                    return sliderVisible && enabledState;\n                }),\n            distinctUntilChanged());\n\n        this._waitSubscription = observableCombineLatest(\n                mode$,\n                motionless$,\n                fullPano$,\n                sliderVisible$).pipe(\n            withLatestFrom(this._navigator.stateService.state$))\n            .subscribe(\n                ([[mode, motionless, fullPano, sliderVisible], state]: [[SliderMode, boolean, boolean, boolean], State]): void => {\n                    const interactive: boolean = sliderVisible &&\n                        (motionless || mode === SliderMode.Stationary || fullPano);\n\n                    if (interactive && state !== State.WaitingInteractively) {\n                        this._navigator.stateService.waitInteractively();\n                    } else if (!interactive && state !== State.Waiting) {\n                        this._navigator.stateService.wait();\n                    }\n                });\n\n        this._moveSubscription = observableCombineLatest(\n                position$,\n                mode$,\n                motionless$,\n                fullPano$,\n                sliderVisible$)\n            .subscribe(\n                ([position, mode, motionless, fullPano, sliderVisible]: [number, SliderMode, boolean, boolean, boolean]): void => {\n                    if (motionless || mode === SliderMode.Stationary || fullPano) {\n                        this._navigator.stateService.moveTo(1);\n                    } else {\n                        this._navigator.stateService.moveTo(position);\n                    }\n                });\n\n        this._domRenderSubscription = observableCombineLatest(\n                position$,\n                mode$,\n                motionless$,\n                fullPano$,\n                sliderVisible$,\n                this._container.renderService.size$).pipe(\n            map(\n                ([position, mode, motionless, fullPano, sliderVisible, size]:\n                    [number, SliderMode, boolean, boolean, boolean, ISize]): IVNodeHash => {\n                    return {\n                        name: this._name,\n                        vnode: this._domRenderer.render(position, mode, motionless, fullPano, sliderVisible),\n                    };\n                }))\n            .subscribe(this._container.domRenderer.render$);\n\n        this._glRendererCreator$.next(null);\n\n        this._updateCurtainSubscription = observableCombineLatest(\n                position$,\n                fullPano$,\n                sliderVisible$,\n                this._container.renderService.renderCamera$,\n                this._navigator.stateService.currentTransform$).pipe(\n            map(\n                ([position, fullPano, visible, render, transform]: [number, boolean, boolean, RenderCamera, Transform]): number => {\n                    if (!fullPano) {\n                        return visible ? position : 1;\n                    }\n\n                    const basicMin: number[] = this._viewportCoords.viewportToBasic(-1.15, 0, transform, render.perspective);\n                    const basicMax: number[] = this._viewportCoords.viewportToBasic(1.15, 0, transform, render.perspective);\n\n                    const shiftedMax: number = basicMax[0] < basicMin[0] ? basicMax[0] + 1 : basicMax[0];\n                    const basicPosition: number = basicMin[0] + position * (shiftedMax - basicMin[0]);\n\n                    return basicPosition > 1 ? basicPosition - 1 : basicPosition;\n                }),\n            map(\n                (position: number): IGLRendererOperation => {\n                    return (glRenderer: SliderGLRenderer): SliderGLRenderer => {\n                        glRenderer.updateCurtain(position);\n\n                        return glRenderer;\n                    };\n                }))\n            .subscribe(this._glRendererOperation$);\n\n        this._stateSubscription = observableCombineLatest(\n                this._navigator.stateService.currentState$,\n                mode$).pipe(\n            map(\n                ([frame, mode]: [IFrame, SliderMode]): IGLRendererOperation => {\n                    return (glRenderer: SliderGLRenderer): SliderGLRenderer => {\n                        glRenderer.update(frame, mode);\n\n                        return glRenderer;\n                    };\n                }))\n            .subscribe(this._glRendererOperation$);\n\n        this._setKeysSubscription = this._configuration$.pipe(\n            filter(\n                (configuration: ISliderConfiguration): boolean => {\n                    return configuration.keys != null;\n                }),\n            switchMap(\n                (configuration: ISliderConfiguration): Observable<ISliderCombination> => {\n                    return observableZip(\n                            observableZip(\n                                this._catchCacheNode$(configuration.keys.background),\n                                this._catchCacheNode$(configuration.keys.foreground)).pipe(\n                            map(\n                                (nodes: [Node, Node]): ISliderNodes => {\n                                    return { background: nodes[0], foreground: nodes[1] };\n                                })),\n                            this._navigator.stateService.currentState$.pipe(first())).pipe(\n                        map(\n                            (nf: [ISliderNodes, IFrame]): ISliderCombination => {\n                                return { nodes: nf[0], state: nf[1].state };\n                            }));\n                }))\n            .subscribe(\n                (co: ISliderCombination): void => {\n                    if (co.state.currentNode != null &&\n                        co.state.previousNode != null &&\n                        co.state.currentNode.key === co.nodes.foreground.key &&\n                        co.state.previousNode.key === co.nodes.background.key) {\n                        return;\n                    }\n\n                    if (co.state.currentNode.key === co.nodes.background.key) {\n                        this._navigator.stateService.setNodes([co.nodes.foreground]);\n                        return;\n                    }\n\n                    if (co.state.currentNode.key === co.nodes.foreground.key &&\n                        co.state.trajectory.length === 1) {\n                        this._navigator.stateService.prependNodes([co.nodes.background]);\n                        return;\n                    }\n\n                    this._navigator.stateService.setNodes([co.nodes.background]);\n                    this._navigator.stateService.setNodes([co.nodes.foreground]);\n                },\n                (e: Error): void => {\n                    console.error(e);\n                });\n\n        let previousNode$: Observable<Node> = this._navigator.stateService.currentState$.pipe(\n            map(\n                (frame: IFrame): Node => {\n                    return frame.state.previousNode;\n                }),\n            filter(\n                (node: Node): boolean => {\n                    return node != null;\n                }),\n            distinctUntilChanged(\n                undefined,\n                (node: Node): string => {\n                    return node.key;\n                }));\n\n        const textureProvider$: Observable<TextureProvider> = this._navigator.stateService.currentState$.pipe(\n            distinctUntilChanged(\n                undefined,\n                (frame: IFrame): string => {\n                    return frame.state.currentNode.key;\n                }),\n            withLatestFrom(\n                this._container.glRenderer.webGLRenderer$,\n                this._container.renderService.size$),\n            map(\n                ([frame, renderer, size]: [IFrame, THREE.WebGLRenderer, ISize]): TextureProvider => {\n                    const state: ICurrentState = frame.state;\n                    const viewportSize: number = Math.max(size.width, size.height);\n\n                    const currentNode: Node = state.currentNode;\n                    const currentTransform: Transform = state.currentTransform;\n                    const tileSize: number = viewportSize > 2048 ? 2048 : viewportSize > 1024 ? 1024 : 512;\n\n                    return new TextureProvider(\n                        currentNode.key,\n                        currentTransform.basicWidth,\n                        currentTransform.basicHeight,\n                        tileSize,\n                        currentNode.image,\n                        this._imageTileLoader,\n                        new ImageTileStore(),\n                        renderer);\n                }),\n            publishReplay(1),\n            refCount());\n\n        this._textureProviderSubscription = textureProvider$.subscribe(() => { /*noop*/ });\n\n        this._setTextureProviderSubscription = textureProvider$.pipe(\n            map(\n                (provider: TextureProvider): IGLRendererOperation => {\n                    return (renderer: SliderGLRenderer): SliderGLRenderer => {\n                        renderer.setTextureProvider(provider.key, provider);\n\n                        return renderer;\n                    };\n                }))\n            .subscribe(this._glRendererOperation$);\n\n        this._setTileSizeSubscription = this._container.renderService.size$.pipe(\n            switchMap(\n                (size: ISize): Observable<[TextureProvider, ISize]> => {\n                    return observableCombineLatest(\n                            textureProvider$,\n                            observableOf<ISize>(size)).pipe(\n                        first());\n                }))\n            .subscribe(\n                ([provider, size]: [TextureProvider, ISize]): void => {\n                    let viewportSize: number = Math.max(size.width, size.height);\n                    let tileSize: number = viewportSize > 2048 ? 2048 : viewportSize > 1024 ? 1024 : 512;\n\n                    provider.setTileSize(tileSize);\n                });\n\n        this._abortTextureProviderSubscription = textureProvider$.pipe(\n            pairwise())\n            .subscribe(\n                (pair: [TextureProvider, TextureProvider]): void => {\n                    let previous: TextureProvider = pair[0];\n                    previous.abort();\n                });\n\n        let roiTrigger$: Observable<[RenderCamera, ISize, Transform]> = observableCombineLatest(\n                this._container.renderService.renderCameraFrame$,\n                this._container.renderService.size$.pipe(debounceTime(250))).pipe(\n            map(\n                ([camera, size]: [RenderCamera, ISize]): PositionLookat => {\n                    return [\n                        camera.camera.position.clone(),\n                        camera.camera.lookat.clone(),\n                        camera.zoom.valueOf(),\n                        size.height.valueOf(),\n                        size.width.valueOf()];\n                }),\n            pairwise(),\n            skipWhile(\n                (pls: [PositionLookat, PositionLookat]): boolean => {\n                    return pls[1][2] - pls[0][2] < 0 || pls[1][2] === 0;\n                }),\n            map(\n                (pls: [PositionLookat, PositionLookat]): boolean => {\n                    let samePosition: boolean = pls[0][0].equals(pls[1][0]);\n                    let sameLookat: boolean = pls[0][1].equals(pls[1][1]);\n                    let sameZoom: boolean = pls[0][2] === pls[1][2];\n                    let sameHeight: boolean = pls[0][3] === pls[1][3];\n                    let sameWidth: boolean = pls[0][4] === pls[1][4];\n\n                    return samePosition && sameLookat && sameZoom && sameHeight && sameWidth;\n                }),\n            distinctUntilChanged(),\n            filter(\n                (stalled: boolean): boolean => {\n                    return stalled;\n                }),\n            switchMap(\n                (stalled: boolean): Observable<RenderCamera> => {\n                    return this._container.renderService.renderCameraFrame$.pipe(\n                        first());\n                }),\n            withLatestFrom(\n                this._container.renderService.size$,\n                this._navigator.stateService.currentTransform$));\n\n        this._setRegionOfInterestSubscription = textureProvider$.pipe(\n            switchMap(\n                (provider: TextureProvider): Observable<[IRegionOfInterest, TextureProvider]> => {\n                    return roiTrigger$.pipe(\n                        map(\n                            ([camera, size, transform]: [RenderCamera, ISize, Transform]):\n                            [IRegionOfInterest, TextureProvider] => {\n                                return [\n                                    this._roiCalculator.computeRegionOfInterest(camera, size, transform),\n                                    provider,\n                                ];\n                            }));\n                }),\n            filter(\n                (args: [IRegionOfInterest, TextureProvider]): boolean => {\n                    return !args[1].disposed;\n                }))\n            .subscribe(\n                (args: [IRegionOfInterest, TextureProvider]): void => {\n                    let roi: IRegionOfInterest = args[0];\n                    let provider: TextureProvider = args[1];\n\n                    provider.setRegionOfInterest(roi);\n                });\n\n        let hasTexture$: Observable<boolean> = textureProvider$.pipe(\n            switchMap(\n                (provider: TextureProvider): Observable<boolean> => {\n                    return provider.hasTexture$;\n                }),\n            startWith(false),\n            publishReplay(1),\n            refCount());\n\n        this._hasTextureSubscription = hasTexture$.subscribe(() => { /*noop*/ });\n\n        let nodeImage$: Observable<[HTMLImageElement, Node]> = this._navigator.stateService.currentState$.pipe(\n            filter(\n                (frame: IFrame): boolean => {\n                    return frame.state.nodesAhead === 0;\n                }),\n            map(\n                (frame: IFrame): Node => {\n                    return frame.state.currentNode;\n                }),\n            distinctUntilChanged(\n                undefined,\n                (node: Node): string => {\n                    return node.key;\n                }),\n            debounceTime(1000),\n            withLatestFrom(hasTexture$),\n            filter(\n                (args: [Node, boolean]): boolean => {\n                    return !args[1];\n                }),\n            map(\n                (args: [Node, boolean]): Node => {\n                    return args[0];\n                }),\n            filter(\n                (node: Node): boolean => {\n                    return node.pano ?\n                        Settings.maxImageSize > Settings.basePanoramaSize :\n                        Settings.maxImageSize > Settings.baseImageSize;\n                }),\n            switchMap(\n                (node: Node): Observable<[HTMLImageElement, Node]> => {\n                    let baseImageSize: ImageSize = node.pano ?\n                        Settings.basePanoramaSize :\n                        Settings.baseImageSize;\n\n                    if (Math.max(node.image.width, node.image.height) > baseImageSize) {\n                        return observableEmpty();\n                    }\n\n                    let image$: Observable<[HTMLImageElement, Node]> = node\n                        .cacheImage$(Settings.maxImageSize).pipe(\n                            map(\n                                (n: Node): [HTMLImageElement, Node] => {\n                                    return [n.image, n];\n                                }));\n\n                    return image$.pipe(\n                        takeUntil(\n                            hasTexture$.pipe(\n                                filter(\n                                    (hasTexture: boolean): boolean => {\n\n                                        return hasTexture;\n                                    }))),\n                        catchError(\n                            (error: Error, caught: Observable<[HTMLImageElement, Node]>):\n                                Observable<[HTMLImageElement, Node]> => {\n                                console.error(`Failed to fetch high res image (${node.key})`, error);\n\n                                return observableEmpty();\n                            }));\n                })).pipe(\n            publish(),\n            refCount());\n\n        this._updateBackgroundSubscription = nodeImage$.pipe(\n            withLatestFrom(textureProvider$))\n            .subscribe(\n                (args: [[HTMLImageElement, Node], TextureProvider]): void => {\n                    if (args[0][1].key !== args[1].key ||\n                        args[1].disposed) {\n                        return;\n                    }\n\n                    args[1].updateBackground(args[0][0]);\n                });\n\n        this._updateTextureImageSubscription = nodeImage$.pipe(\n            map(\n                (imn: [HTMLImageElement, Node]): IGLRendererOperation => {\n                    return (renderer: SliderGLRenderer): SliderGLRenderer => {\n                        renderer.updateTextureImage(imn[0], imn[1]);\n\n                        return renderer;\n                    };\n                }))\n            .subscribe(this._glRendererOperation$);\n\n        const textureProviderPrev$: Observable<TextureProvider> = this._navigator.stateService.currentState$.pipe(\n            filter(\n                (frame: IFrame): boolean => {\n                    return !!frame.state.previousNode;\n                }),\n            distinctUntilChanged(\n                undefined,\n                (frame: IFrame): string => {\n                    return frame.state.previousNode.key;\n                }),\n            withLatestFrom(\n                this._container.glRenderer.webGLRenderer$,\n                this._container.renderService.size$),\n            map(\n                ([frame, renderer, size]: [IFrame, THREE.WebGLRenderer, ISize]): TextureProvider => {\n                    const state: ICurrentState = frame.state;\n                    const viewportSize: number = Math.max(size.width, size.height);\n\n                    const previousNode: Node = state.previousNode;\n                    const previousTransform: Transform = state.previousTransform;\n                    const tileSize: number = viewportSize > 2048 ? 2048 : viewportSize > 1024 ? 1024 : 512;\n\n                    return new TextureProvider(\n                        previousNode.key,\n                        previousTransform.basicWidth,\n                        previousTransform.basicHeight,\n                        tileSize,\n                        previousNode.image,\n                        this._imageTileLoader,\n                        new ImageTileStore(),\n                        renderer);\n                }),\n            publishReplay(1),\n            refCount());\n\n        this._textureProviderSubscriptionPrev = textureProviderPrev$.subscribe(() => { /*noop*/ });\n\n        this._setTextureProviderSubscriptionPrev = textureProviderPrev$.pipe(\n            map(\n                (provider: TextureProvider): IGLRendererOperation => {\n                    return (renderer: SliderGLRenderer): SliderGLRenderer => {\n                        renderer.setTextureProviderPrev(provider.key, provider);\n\n                        return renderer;\n                    };\n                }))\n            .subscribe(this._glRendererOperation$);\n\n        this._setTileSizeSubscriptionPrev = this._container.renderService.size$.pipe(\n            switchMap(\n                (size: ISize): Observable<[TextureProvider, ISize]> => {\n                    return observableCombineLatest(\n                            textureProviderPrev$,\n                            observableOf<ISize>(size)).pipe(\n                        first());\n                }))\n            .subscribe(\n                ([provider, size]: [TextureProvider, ISize]): void => {\n                    let viewportSize: number = Math.max(size.width, size.height);\n                    let tileSize: number = viewportSize > 2048 ? 2048 : viewportSize > 1024 ? 1024 : 512;\n\n                    provider.setTileSize(tileSize);\n                });\n\n        this._abortTextureProviderSubscriptionPrev = textureProviderPrev$.pipe(\n            pairwise())\n            .subscribe(\n                (pair: [TextureProvider, TextureProvider]): void => {\n                    let previous: TextureProvider = pair[0];\n                    previous.abort();\n                });\n\n        let roiTriggerPrev$: Observable<[RenderCamera, ISize, Transform]> = observableCombineLatest(\n                this._container.renderService.renderCameraFrame$,\n                this._container.renderService.size$.pipe(debounceTime(250))).pipe(\n            map(\n                ([camera, size]: [RenderCamera, ISize]): PositionLookat => {\n                    return [\n                        camera.camera.position.clone(),\n                        camera.camera.lookat.clone(),\n                        camera.zoom.valueOf(),\n                        size.height.valueOf(),\n                        size.width.valueOf()];\n                }),\n            pairwise(),\n            skipWhile(\n                (pls: [PositionLookat, PositionLookat]): boolean => {\n                    return pls[1][2] - pls[0][2] < 0 || pls[1][2] === 0;\n                }),\n            map(\n                (pls: [PositionLookat, PositionLookat]): boolean => {\n                    let samePosition: boolean = pls[0][0].equals(pls[1][0]);\n                    let sameLookat: boolean = pls[0][1].equals(pls[1][1]);\n                    let sameZoom: boolean = pls[0][2] === pls[1][2];\n                    let sameHeight: boolean = pls[0][3] === pls[1][3];\n                    let sameWidth: boolean = pls[0][4] === pls[1][4];\n\n                    return samePosition && sameLookat && sameZoom && sameHeight && sameWidth;\n                }),\n            distinctUntilChanged(),\n            filter(\n                (stalled: boolean): boolean => {\n                    return stalled;\n                }),\n            switchMap(\n                (stalled: boolean): Observable<RenderCamera> => {\n                    return this._container.renderService.renderCameraFrame$.pipe(\n                        first());\n                }),\n            withLatestFrom(\n                this._container.renderService.size$,\n                this._navigator.stateService.currentTransform$));\n\n        this._setRegionOfInterestSubscriptionPrev = textureProviderPrev$.pipe(\n            switchMap(\n                (provider: TextureProvider): Observable<[IRegionOfInterest, TextureProvider]> => {\n                    return roiTriggerPrev$.pipe(\n                        map(\n                            ([camera, size, transform]: [RenderCamera, ISize, Transform]):\n                            [IRegionOfInterest, TextureProvider] => {\n                                return [\n                                    this._roiCalculator.computeRegionOfInterest(camera, size, transform),\n                                    provider,\n                                ];\n                            }));\n                }),\n            filter(\n                (args: [IRegionOfInterest, TextureProvider]): boolean => {\n                    return !args[1].disposed;\n                }),\n            withLatestFrom(this._navigator.stateService.currentState$))\n            .subscribe(\n                ([[roi, provider], frame]: [[IRegionOfInterest, TextureProvider], IFrame]): void => {\n                    let shiftedRoi: IRegionOfInterest = null;\n\n                    if (frame.state.previousNode.fullPano) {\n                        if (frame.state.currentNode.fullPano) {\n                            const currentViewingDirection: THREE.Vector3 =\n                                this._spatial.viewingDirection(frame.state.currentNode.rotation);\n                            const previousViewingDirection: THREE.Vector3 =\n                                this._spatial.viewingDirection(frame.state.previousNode.rotation);\n\n                            const directionDiff: number = this._spatial.angleBetweenVector2(\n                                currentViewingDirection.x,\n                                currentViewingDirection.y,\n                                previousViewingDirection.x,\n                                previousViewingDirection.y);\n\n                            const shift: number = directionDiff / (2 * Math.PI);\n\n                            const bbox: IBoundingBox = {\n                                maxX: this._spatial.wrap(roi.bbox.maxX + shift, 0, 1),\n                                maxY: roi.bbox.maxY,\n                                minX: this._spatial.wrap(roi.bbox.minX + shift, 0, 1),\n                                minY: roi.bbox.minY,\n                            };\n\n                            shiftedRoi = {\n                                bbox: bbox,\n                                pixelHeight: roi.pixelHeight,\n                                pixelWidth: roi.pixelWidth,\n                            };\n                        } else {\n                            const currentViewingDirection: THREE.Vector3 =\n                                this._spatial.viewingDirection(frame.state.currentNode.rotation);\n                            const previousViewingDirection: THREE.Vector3 =\n                                this._spatial.viewingDirection(frame.state.previousNode.rotation);\n\n                            const directionDiff: number = this._spatial.angleBetweenVector2(\n                                currentViewingDirection.x,\n                                currentViewingDirection.y,\n                                previousViewingDirection.x,\n                                previousViewingDirection.y);\n\n                            const shiftX: number = directionDiff / (2 * Math.PI);\n\n                            const a1: number = this._spatial.angleToPlane(currentViewingDirection.toArray(), [0, 0, 1]);\n                            const a2: number = this._spatial.angleToPlane(previousViewingDirection.toArray(), [0, 0, 1]);\n\n                            const shiftY: number = (a2 - a1) / (2 * Math.PI);\n\n                            const currentTransform: Transform = frame.state.currentTransform;\n                            const size: number = Math.max(currentTransform.basicWidth, currentTransform.basicHeight);\n                            const hFov: number = size > 0 ?\n                                2 * Math.atan(0.5 * currentTransform.basicWidth / (size * currentTransform.focal)) :\n                                Math.PI / 3;\n                            const vFov: number = size > 0 ?\n                                2 * Math.atan(0.5 * currentTransform.basicHeight / (size * currentTransform.focal)) :\n                                Math.PI / 3;\n\n                            const spanningWidth: number = hFov / (2 * Math.PI);\n                            const spanningHeight: number = vFov / Math.PI;\n\n                            const basicWidth: number = (roi.bbox.maxX - roi.bbox.minX) * spanningWidth;\n                            const basicHeight: number = (roi.bbox.maxY - roi.bbox.minY) * spanningHeight;\n\n                            const pixelWidth: number = roi.pixelWidth * spanningWidth;\n                            const pixelHeight: number = roi.pixelHeight * spanningHeight;\n\n                            const zoomShiftX: number = (roi.bbox.minX + roi.bbox.maxX) / 2 - 0.5;\n                            const zoomShiftY: number = (roi.bbox.minY + roi.bbox.maxY) / 2 - 0.5;\n\n                            const minX: number = 0.5 + shiftX + spanningWidth * zoomShiftX - basicWidth / 2;\n                            const maxX: number = 0.5 + shiftX + spanningWidth * zoomShiftX + basicWidth / 2;\n                            const minY: number = 0.5 + shiftY + spanningHeight * zoomShiftY - basicHeight / 2;\n                            const maxY: number = 0.5 + shiftY + spanningHeight * zoomShiftY + basicHeight / 2;\n\n                            const bbox: IBoundingBox = {\n                                maxX: this._spatial.wrap(maxX, 0, 1),\n                                maxY: maxY,\n                                minX: this._spatial.wrap(minX, 0, 1),\n                                minY: minY,\n                            };\n\n                            shiftedRoi = {\n                                bbox: bbox,\n                                pixelHeight: pixelHeight,\n                                pixelWidth: pixelWidth,\n                            };\n                        }\n                    } else {\n                        const currentBasicAspect: number = frame.state.currentTransform.basicAspect;\n                        const previousBasicAspect: number = frame.state.previousTransform.basicAspect;\n\n                        const [[cornerMinX, cornerMinY], [cornerMaxX, cornerMaxY]]: number[][] =\n                            this._getBasicCorners(currentBasicAspect, previousBasicAspect);\n\n                        const basicWidth: number = cornerMaxX - cornerMinX;\n                        const basicHeight: number = cornerMaxY - cornerMinY;\n\n                        const pixelWidth: number = roi.pixelWidth / basicWidth;\n                        const pixelHeight: number = roi.pixelHeight / basicHeight;\n\n                        const minX: number = (basicWidth - 1) / (2 * basicWidth) + roi.bbox.minX / basicWidth;\n                        const maxX: number = (basicWidth - 1) / (2 * basicWidth) + roi.bbox.maxX / basicWidth;\n                        const minY: number = (basicHeight - 1) / (2 * basicHeight) + roi.bbox.minY / basicHeight;\n                        const maxY: number = (basicHeight - 1) / (2 * basicHeight) + roi.bbox.maxY / basicHeight;\n\n                        const bbox: IBoundingBox = {\n                            maxX: maxX,\n                            maxY: maxY,\n                            minX: minX,\n                            minY: minY,\n                        };\n\n                        this._clipBoundingBox(bbox);\n\n                        shiftedRoi = {\n                            bbox: bbox,\n                            pixelHeight: pixelHeight,\n                            pixelWidth: pixelWidth,\n                        };\n                    }\n\n                    provider.setRegionOfInterest(shiftedRoi);\n                });\n\n        let hasTexturePrev$: Observable<boolean> = textureProviderPrev$.pipe(\n            switchMap(\n                (provider: TextureProvider): Observable<boolean> => {\n                    return provider.hasTexture$;\n                }),\n            startWith(false),\n            publishReplay(1),\n            refCount());\n\n        this._hasTextureSubscriptionPrev = hasTexturePrev$.subscribe(() => { /*noop*/ });\n\n        let nodeImagePrev$: Observable<[HTMLImageElement, Node]> = this._navigator.stateService.currentState$.pipe(\n            filter(\n                (frame: IFrame): boolean => {\n                    return frame.state.nodesAhead === 0 && !!frame.state.previousNode;\n                }),\n            map(\n                (frame: IFrame): Node => {\n                    return frame.state.previousNode;\n                }),\n            distinctUntilChanged(\n                undefined,\n                (node: Node): string => {\n                    return node.key;\n                }),\n            debounceTime(1000),\n            withLatestFrom(hasTexturePrev$),\n            filter(\n                (args: [Node, boolean]): boolean => {\n                    return !args[1];\n                }),\n            map(\n                (args: [Node, boolean]): Node => {\n                    return args[0];\n                }),\n            filter(\n                (node: Node): boolean => {\n                    return node.pano ?\n                        Settings.maxImageSize > Settings.basePanoramaSize :\n                        Settings.maxImageSize > Settings.baseImageSize;\n                }),\n            switchMap(\n                (node: Node): Observable<[HTMLImageElement, Node]> => {\n                    let baseImageSize: ImageSize = node.pano ?\n                        Settings.basePanoramaSize :\n                        Settings.baseImageSize;\n\n                    if (Math.max(node.image.width, node.image.height) > baseImageSize) {\n                        return observableEmpty();\n                    }\n\n                    let image$: Observable<[HTMLImageElement, Node]> = node\n                        .cacheImage$(Settings.maxImageSize).pipe(\n                            map(\n                                (n: Node): [HTMLImageElement, Node] => {\n                                    return [n.image, n];\n                                }));\n\n                    return image$.pipe(\n                        takeUntil(\n                            hasTexturePrev$.pipe(\n                                filter(\n                                    (hasTexture: boolean): boolean => {\n\n                                        return hasTexture;\n                                    }))),\n                        catchError(\n                            (error: Error, caught: Observable<[HTMLImageElement, Node]>):\n                                Observable<[HTMLImageElement, Node]> => {\n                                console.error(`Failed to fetch high res image (${node.key})`, error);\n\n                                return observableEmpty();\n                            }));\n                })).pipe(\n            publish(),\n            refCount());\n\n        this._updateBackgroundSubscriptionPrev = nodeImagePrev$.pipe(\n            withLatestFrom(textureProviderPrev$))\n            .subscribe(\n                (args: [[HTMLImageElement, Node], TextureProvider]): void => {\n                    if (args[0][1].key !== args[1].key ||\n                        args[1].disposed) {\n                        return;\n                    }\n\n                    args[1].updateBackground(args[0][0]);\n                });\n\n        this._updateTextureImageSubscriptionPrev = nodeImagePrev$.pipe(\n            map(\n                (imn: [HTMLImageElement, Node]): IGLRendererOperation => {\n                    return (renderer: SliderGLRenderer): SliderGLRenderer => {\n                        renderer.updateTextureImage(imn[0], imn[1]);\n\n                        return renderer;\n                    };\n                }))\n            .subscribe(this._glRendererOperation$);\n    }\n\n    protected _deactivate(): void {\n        this._waitSubscription.unsubscribe();\n\n        this._navigator.stateService.state$.pipe(\n            first())\n            .subscribe(\n                (state: State): void => {\n                    if (state !== State.Traversing) {\n                        this._navigator.stateService.traverse();\n                    }\n                });\n\n        this._glRendererDisposer$.next(null);\n        this._domRenderer.deactivate();\n\n        this._modeSubcription.unsubscribe();\n        this._setKeysSubscription.unsubscribe();\n        this._stateSubscription.unsubscribe();\n        this._glRenderSubscription.unsubscribe();\n        this._domRenderSubscription.unsubscribe();\n        this._moveSubscription.unsubscribe();\n        this._updateCurtainSubscription.unsubscribe();\n\n        this._textureProviderSubscription.unsubscribe();\n        this._setTextureProviderSubscription.unsubscribe();\n        this._setTileSizeSubscription.unsubscribe();\n        this._abortTextureProviderSubscription.unsubscribe();\n        this._setRegionOfInterestSubscription.unsubscribe();\n        this._hasTextureSubscription.unsubscribe();\n        this._updateBackgroundSubscription.unsubscribe();\n        this._updateTextureImageSubscription.unsubscribe();\n\n        this._textureProviderSubscriptionPrev.unsubscribe();\n        this._setTextureProviderSubscriptionPrev.unsubscribe();\n        this._setTileSizeSubscriptionPrev.unsubscribe();\n        this._abortTextureProviderSubscriptionPrev.unsubscribe();\n        this._setRegionOfInterestSubscriptionPrev.unsubscribe();\n        this._hasTextureSubscriptionPrev.unsubscribe();\n        this._updateBackgroundSubscriptionPrev.unsubscribe();\n        this._updateTextureImageSubscriptionPrev.unsubscribe();\n\n        this.configure({ keys: null });\n    }\n\n    protected _getDefaultConfiguration(): ISliderConfiguration {\n        return {\n            initialPosition: 1,\n            mode: SliderMode.Motion,\n            sliderVisible: true,\n        };\n    }\n\n    private _catchCacheNode$(key: string): Observable<Node> {\n        return this._navigator.graphService.cacheNode$(key).pipe(\n            catchError(\n                (error: Error, caught: Observable<Node>): Observable<Node> => {\n                    console.error(`Failed to cache slider node (${key})`, error);\n\n                    return observableEmpty();\n                }));\n    }\n\n    private _getBasicCorners(currentAspect: number, previousAspect: number): number[][] {\n        let offsetX: number;\n        let offsetY: number;\n\n        if (currentAspect > previousAspect) {\n            offsetX = 0.5;\n            offsetY = 0.5 * currentAspect / previousAspect;\n        } else {\n            offsetX = 0.5 * previousAspect / currentAspect;\n            offsetY = 0.5;\n        }\n\n        return [[0.5 - offsetX, 0.5 - offsetY], [0.5 + offsetX, 0.5 + offsetY]];\n    }\n\n    private _clipBoundingBox(bbox: IBoundingBox): void {\n        bbox.minX = Math.max(0, Math.min(1, bbox.minX));\n        bbox.maxX = Math.max(0, Math.min(1, bbox.maxX));\n        bbox.minY = Math.max(0, Math.min(1, bbox.minY));\n        bbox.maxY = Math.max(0, Math.min(1, bbox.maxY));\n    }\n}\n\nComponentService.register(SliderComponent);\nexport default SliderComponent;\n",
-    "import {merge as observableMerge,  Observable ,  Subject ,  Subscription } from \"rxjs\";\n\nimport {filter} from \"rxjs/operators\";\nimport * as vd from \"virtual-dom\";\n\nimport { SliderMode } from \"../../Component\";\nimport { Container } from \"../../Viewer\";\n\nexport class SliderDOMRenderer {\n    private _container: Container;\n\n    private _interacting: boolean;\n    private _notifyModeChanged$: Subject<SliderMode>;\n    private _notifyPositionChanged$: Subject<number>;\n    private _stopInteractionSubscription: Subscription;\n\n    constructor(container: Container) {\n        this._container = container;\n\n        this._interacting = false;\n        this._notifyModeChanged$ = new Subject<SliderMode>();\n        this._notifyPositionChanged$ = new Subject<number>();\n        this._stopInteractionSubscription = null;\n    }\n\n    public get mode$(): Observable<SliderMode> {\n        return this._notifyModeChanged$;\n    }\n\n    public get position$(): Observable<number> {\n        return this._notifyPositionChanged$;\n    }\n\n    public activate(): void {\n        if (!!this._stopInteractionSubscription) {\n            return;\n        }\n\n        this._stopInteractionSubscription = observableMerge(\n                this._container.mouseService.documentMouseUp$,\n                this._container.touchService.touchEnd$.pipe(\n                    filter(\n                        (touchEvent: TouchEvent): boolean => {\n                            return touchEvent.touches.length === 0;\n                        })))\n            .subscribe(\n                (event: Event): void => {\n                    if (this._interacting) {\n                        this._interacting = false;\n                    }\n                });\n    }\n\n    public deactivate(): void {\n        if (!this._stopInteractionSubscription) {\n            return;\n        }\n\n        this._interacting = false;\n\n        this._stopInteractionSubscription.unsubscribe();\n        this._stopInteractionSubscription = null;\n    }\n\n    public render(position: number, mode: SliderMode, motionless: boolean, pano: boolean, visible: boolean): vd.VNode {\n        const children: vd.VNode[] = [];\n\n        if (visible) {\n            children.push(vd.h(\"div.SliderBorder\", []));\n\n            const modeVisible: boolean = !(motionless || pano);\n            if (modeVisible) {\n                children.push(this._createModeButton(mode));\n            }\n\n            children.push(this._createPositionInput(position, modeVisible));\n        }\n\n        const boundingRect: ClientRect = this._container.domContainer.getBoundingClientRect();\n        const width: number = Math.max(215, Math.min(400, boundingRect.width - 100));\n\n        return vd.h(\"div.SliderContainer\", { style: { width: `${width}px` } }, children);\n    }\n\n    private _createModeButton(mode: SliderMode): vd.VNode {\n        const properties: vd.createProperties = {\n            onclick: (): void => {\n                this._notifyModeChanged$.next(\n                    mode === SliderMode.Motion ?\n                        SliderMode.Stationary :\n                        SliderMode.Motion);\n            },\n        };\n\n        const className: string = mode === SliderMode.Stationary ?\n            \"SliderModeButtonPressed\" :\n            \"SliderModeButton\";\n\n        return vd.h(\"div.\" + className, properties, [vd.h(\"div.SliderModeIcon\", [])]);\n    }\n\n    private _createPositionInput(position: number, modeVisible: boolean): vd.VNode {\n        const onChange: (e: Event) => void = (e: Event): void => {\n            this._notifyPositionChanged$.next(Number((<HTMLInputElement>e.target).value) / 1000);\n        };\n\n        const onStart: (e: Event) => void = (e: Event): void => {\n            this._interacting = true;\n            e.stopPropagation();\n        };\n\n        const onMove: (e: Event) => void = (e: Event): void => {\n            if (this._interacting) {\n                e.stopPropagation();\n            }\n        };\n\n        const onKeyDown: (e: KeyboardEvent) => void = (e: KeyboardEvent): void => {\n            if (e.key === \"ArrowDown\" || e.key === \"ArrowLeft\" ||\n                e.key === \"ArrowRight\" || e.key === \"ArrowUp\") {\n                e.preventDefault();\n            }\n        };\n\n        const boundingRect: ClientRect = this._container.domContainer.getBoundingClientRect();\n        const width: number = Math.max(215, Math.min(400, boundingRect.width - 105)) - 68 + (modeVisible ? 0 : 36);\n\n        const positionInput: vd.VNode = vd.h(\n            \"input.SliderPosition\",\n            {\n                max: 1000,\n                min: 0,\n                onchange: onChange,\n                oninput: onChange,\n                onkeydown: onKeyDown,\n                onmousedown: onStart,\n                onmousemove: onMove,\n                ontouchmove: onMove,\n                ontouchstart: onStart,\n                style: {\n                    width: `${width}px`,\n                },\n                type: \"range\",\n                value: 1000 * position,\n            },\n            []);\n\n        return vd.h(\"div.SliderPositionContainer\", [positionInput]);\n    }\n}\n\nexport default SliderDOMRenderer;\n",
-    "import * as THREE from \"three\";\n\nimport {Subscription} from \"rxjs\";\n\nimport {\n    IBBoxShaderMaterial,\n    IShaderMaterial,\n    MeshFactory,\n    MeshScene,\n    SliderMode,\n} from \"../../Component\";\nimport {\n    Transform,\n    Spatial,\n} from \"../../Geo\";\nimport { Node } from \"../../Graph\";\nimport {\n    ICurrentState,\n    IFrame,\n} from \"../../State\";\nimport { TextureProvider } from \"../../Tiles\";\n\nexport class SliderGLRenderer {\n    private _factory: MeshFactory;\n    private _scene: MeshScene;\n    private _spatial: Spatial;\n\n    private _currentKey: string;\n    private _previousKey: string;\n\n    private _disabled: boolean;\n    private _curtain: number;\n    private _frameId: number;\n    private _needsRender: boolean;\n\n    private _mode: SliderMode;\n\n    private _currentProviderDisposers: { [key: string]: () => void };\n    private _previousProviderDisposers: { [key: string]: () => void };\n\n    constructor() {\n        this._factory = new MeshFactory();\n        this._scene = new MeshScene();\n        this._spatial = new Spatial();\n\n        this._currentKey = null;\n        this._previousKey = null;\n\n        this._disabled = false;\n        this._curtain = 1;\n        this._frameId = 0;\n        this._needsRender = false;\n\n        this._mode = null;\n\n        this._currentProviderDisposers = {};\n        this._previousProviderDisposers = {};\n    }\n\n    public get disabled(): boolean {\n        return this._disabled;\n    }\n\n    public get frameId(): number {\n        return this._frameId;\n    }\n\n    public get needsRender(): boolean {\n        return this._needsRender;\n    }\n\n    public setTextureProvider(key: string, provider: TextureProvider): void {\n        this._setTextureProvider(\n            key,\n            this._currentKey,\n            provider,\n            this._currentProviderDisposers,\n            this._updateTexture.bind(this));\n    }\n\n    public setTextureProviderPrev(key: string, provider: TextureProvider): void {\n        this._setTextureProvider(\n            key,\n            this._previousKey,\n            provider,\n            this._previousProviderDisposers,\n            this._updateTexturePrev.bind(this));\n    }\n\n    public update(frame: IFrame, mode: SliderMode): void {\n        this._updateFrameId(frame.id);\n        this._updateImagePlanes(frame.state, mode);\n    }\n\n    public updateCurtain(curtain: number): void {\n        if (this._curtain === curtain) {\n            return;\n        }\n\n        this._curtain = curtain;\n        this._updateCurtain();\n\n        this._needsRender = true;\n    }\n\n    public updateTexture(image: HTMLImageElement, node: Node): void {\n        let imagePlanes: THREE.Mesh[] = node.key === this._currentKey ?\n            this._scene.imagePlanes :\n            node.key === this._previousKey ?\n                this._scene.imagePlanesOld :\n                [];\n\n        if (imagePlanes.length === 0) {\n            return;\n        }\n\n        this._needsRender = true;\n\n        for (let plane of imagePlanes) {\n            let material: IShaderMaterial = <IShaderMaterial>plane.material;\n            let texture: THREE.Texture = <THREE.Texture>material.uniforms.projectorTex.value;\n\n            texture.image = image;\n            texture.needsUpdate = true;\n        }\n    }\n\n    public updateTextureImage(image: HTMLImageElement, node?: Node): void {\n        if (this._currentKey !== node.key) {\n            return;\n        }\n\n        this._needsRender = true;\n\n        for (let plane of this._scene.imagePlanes) {\n            let material: IShaderMaterial = <IShaderMaterial>plane.material;\n            let texture: THREE.Texture = <THREE.Texture>material.uniforms.projectorTex.value;\n\n            texture.image = image;\n            texture.needsUpdate = true;\n        }\n    }\n\n    public render(\n        perspectiveCamera: THREE.PerspectiveCamera,\n        renderer: THREE.WebGLRenderer): void {\n\n        if (!this.disabled) {\n            renderer.render(this._scene.sceneOld, perspectiveCamera);\n        }\n\n        renderer.render(this._scene.scene, perspectiveCamera);\n\n        this._needsRender = false;\n    }\n\n    public dispose(): void {\n        this._scene.clear();\n\n        for (const key in this._currentProviderDisposers) {\n            if (!this._currentProviderDisposers.hasOwnProperty(key)) {\n                continue;\n            }\n\n            this._currentProviderDisposers[key]();\n        }\n\n        for (const key in this._previousProviderDisposers) {\n            if (!this._previousProviderDisposers.hasOwnProperty(key)) {\n                continue;\n            }\n\n            this._previousProviderDisposers[key]();\n        }\n\n        this._currentProviderDisposers = {};\n        this._previousProviderDisposers = {};\n    }\n\n    private _getBasicCorners(currentAspect: number, previousAspect: number): number[][] {\n        let offsetX: number;\n        let offsetY: number;\n\n        if (currentAspect > previousAspect) {\n            offsetX = 0.5;\n            offsetY = 0.5 * currentAspect / previousAspect;\n        } else {\n            offsetX = 0.5 * previousAspect / currentAspect;\n            offsetY = 0.5;\n        }\n\n        return [[0.5 - offsetX, 0.5 - offsetY], [0.5 + offsetX, 0.5 + offsetY]];\n    }\n\n    private _setDisabled(state: ICurrentState): void {\n        this._disabled = state.currentNode == null ||\n            state.previousNode == null ||\n            (state.currentNode.pano && !state.currentNode.fullPano) ||\n            (state.previousNode.pano && !state.previousNode.fullPano) ||\n            (state.currentNode.fullPano && !state.previousNode.fullPano);\n    }\n\n    private _setTextureProvider(\n        key: string,\n        originalKey: string,\n        provider: TextureProvider,\n        providerDisposers: { [key: string]: () => void },\n        updateTexture: (texture: THREE.Texture) => void): void {\n\n        if (key !== originalKey) {\n            return;\n        }\n\n        let createdSubscription: Subscription = provider.textureCreated$\n            .subscribe(updateTexture);\n\n        let updatedSubscription: Subscription = provider.textureUpdated$\n            .subscribe(\n                (updated: boolean): void => {\n                    this._needsRender = true;\n                });\n\n        let dispose: () => void = (): void => {\n            createdSubscription.unsubscribe();\n            updatedSubscription.unsubscribe();\n            provider.dispose();\n        };\n\n        if (key in providerDisposers) {\n            let disposeProvider: () => void = providerDisposers[key];\n            disposeProvider();\n\n            delete providerDisposers[key];\n        }\n\n        providerDisposers[key] = dispose;\n    }\n\n    private _updateCurtain(): void {\n        for (let plane of this._scene.imagePlanes) {\n            let shaderMaterial: IBBoxShaderMaterial = <IBBoxShaderMaterial>plane.material;\n\n            if (!!shaderMaterial.uniforms.curtain) {\n                shaderMaterial.uniforms.curtain.value = this._curtain;\n            }\n        }\n    }\n\n    private _updateFrameId(frameId: number): void {\n        this._frameId = frameId;\n    }\n\n    private _updateImagePlanes(state: ICurrentState, mode: SliderMode): void {\n        const currentChanged: boolean = state.currentNode != null && this._currentKey !== state.currentNode.key;\n        const previousChanged: boolean = state.previousNode != null && this._previousKey !== state.previousNode.key;\n        const modeChanged: boolean = this._mode !== mode;\n\n        if (!(currentChanged || previousChanged || modeChanged)) {\n            return;\n        }\n\n        this._setDisabled(state);\n        this._needsRender = true;\n        this._mode = mode;\n\n        const motionless: boolean = state.motionless || mode === SliderMode.Stationary || state.currentNode.pano;\n\n        if (this.disabled || previousChanged) {\n            if (this._previousKey in this._previousProviderDisposers) {\n                this._previousProviderDisposers[this._previousKey]();\n\n                delete this._previousProviderDisposers[this._previousKey];\n            }\n        }\n\n        if (this.disabled) {\n            this._scene.setImagePlanesOld([]);\n        } else {\n            if (previousChanged || modeChanged) {\n                const previousNode: Node = state.previousNode;\n\n                this._previousKey = previousNode.key;\n\n                const elements: Float32Array = state.currentTransform.rt.elements;\n                let translation: number[] = [elements[12], elements[13], elements[14]];\n\n                const currentAspect: number = state.currentTransform.basicAspect;\n                const previousAspect: number = state.previousTransform.basicAspect;\n\n                const textureScale: number[] = currentAspect > previousAspect ?\n                    [1, previousAspect / currentAspect] :\n                    [currentAspect / previousAspect, 1];\n\n                let rotation: number[] = state.currentNode.rotation;\n                let width: number = state.currentNode.width;\n                let height: number = state.currentNode.height;\n\n                if (previousNode.fullPano) {\n                    rotation = state.previousNode.rotation;\n                    translation = this._spatial\n                        .rotate(\n                            this._spatial\n                                .opticalCenter(state.currentNode.rotation, translation)\n                                .toArray(),\n                            rotation)\n                        .multiplyScalar(-1)\n                        .toArray();\n\n                    width = state.previousNode.width;\n                    height = state.previousNode.height;\n                }\n\n                const transform: Transform = new Transform(\n                    state.currentNode.orientation,\n                    width,\n                    height,\n                    state.currentNode.focal,\n                    state.currentNode.scale,\n                    previousNode.gpano,\n                    rotation,\n                    translation,\n                    previousNode.image,\n                    textureScale);\n\n                let mesh: THREE.Mesh = undefined;\n\n                if (previousNode.fullPano) {\n                    mesh = this._factory.createMesh(\n                        previousNode,\n                        motionless || state.currentNode.fullPano ? transform : state.previousTransform);\n                } else {\n                    if (motionless) {\n                        const [[basicX0, basicY0], [basicX1, basicY1]]: number[][] = this._getBasicCorners(currentAspect, previousAspect);\n\n                        mesh = this._factory.createFlatMesh(\n                            state.previousNode,\n                            transform,\n                            basicX0,\n                            basicX1,\n                            basicY0,\n                            basicY1);\n                    } else {\n                        mesh = this._factory.createMesh(state.previousNode, state.previousTransform);\n                    }\n                }\n\n                this._scene.setImagePlanesOld([mesh]);\n            }\n        }\n\n        if (currentChanged || modeChanged) {\n            if (this._currentKey in this._currentProviderDisposers) {\n                this._currentProviderDisposers[this._currentKey]();\n\n                delete this._currentProviderDisposers[this._currentKey];\n            }\n\n            this._currentKey = state.currentNode.key;\n\n            const imagePlanes: THREE.Mesh[] = [];\n\n            if (state.currentNode.fullPano) {\n                imagePlanes.push(this._factory.createCurtainMesh(state.currentNode, state.currentTransform));\n            } else if (state.currentNode.pano && !state.currentNode.fullPano) {\n                imagePlanes.push(this._factory.createMesh(state.currentNode, state.currentTransform));\n            } else {\n                if (motionless) {\n                    imagePlanes.push(this._factory.createDistortedCurtainMesh(state.currentNode, state.currentTransform));\n                } else {\n                    imagePlanes.push(this._factory.createCurtainMesh(state.currentNode, state.currentTransform));\n                }\n            }\n\n            this._scene.setImagePlanes(imagePlanes);\n\n            this._updateCurtain();\n        }\n    }\n\n    private _updateTexture(texture: THREE.Texture): void {\n        this._needsRender = true;\n\n        for (let plane of this._scene.imagePlanes) {\n            let material: IShaderMaterial = <IShaderMaterial>plane.material;\n\n            let oldTexture: THREE.Texture = <THREE.Texture>material.uniforms.projectorTex.value;\n            material.uniforms.projectorTex.value = null;\n            oldTexture.dispose();\n\n            material.uniforms.projectorTex.value = texture;\n        }\n    }\n\n    private _updateTexturePrev(texture: THREE.Texture): void {\n        this._needsRender = true;\n\n        for (let plane of this._scene.imagePlanesOld) {\n            let material: IShaderMaterial = <IShaderMaterial>plane.material;\n\n            let oldTexture: THREE.Texture = <THREE.Texture>material.uniforms.projectorTex.value;\n            material.uniforms.projectorTex.value = null;\n            oldTexture.dispose();\n\n            material.uniforms.projectorTex.value = texture;\n        }\n    }\n}\n\nexport default SliderGLRenderer;\n",
-    "import * as geohash from \"latlon-geohash\";\n\nimport {\n    empty as observableEmpty,\n    from as observableFrom,\n    of as observableOf,\n    zip as observableZip,\n    Observable,\n    Subscriber,\n} from \"rxjs\";\n\nimport {\n    mergeMap,\n    catchError,\n    tap,\n    publish,\n    refCount,\n    finalize,\n    map,\n    filter,\n} from \"rxjs/operators\";\n\nimport {\n    IGPano,\n    ILatLon,\n} from \"../../API\";\nimport {\n    IReconstruction,\n} from \"../../Component\";\nimport {\n    AbortMapillaryError,\n} from \"../../Error\";\nimport {\n    GraphService,\n    Node,\n} from \"../../Graph\";\nimport {\n    Urls,\n} from \"../../Utils\";\n\nexport type NodeData = {\n    alt: number;\n    focal: number;\n    gpano: IGPano;\n    height: number;\n    k1: number;\n    k2: number;\n    key: string,\n    lat: number;\n    lon: number;\n    mergeCC: number;\n    orientation: number;\n    originalLat: number;\n    originalLon: number;\n    rotation: number[];\n    scale: number;\n    width: number;\n};\n\nexport type ReconstructionData = {\n    data: NodeData,\n    reconstruction: IReconstruction,\n};\n\nexport class SpatialDataCache {\n    private _graphService: GraphService;\n\n    private _cacheRequests: { [hash: string]: XMLHttpRequest[] };\n    private _reconstructions: { [hash: string]: ReconstructionData[] };\n    private _tiles: { [hash: string]: NodeData[] };\n\n    private _cachingReconstructions$: { [hash: string]: Observable<ReconstructionData> };\n    private _cachingTiles$: { [hash: string]: Observable<NodeData[]> };\n\n    constructor(graphService: GraphService) {\n        this._graphService = graphService;\n\n        this._tiles = {};\n        this._cacheRequests = {};\n        this._reconstructions = {};\n\n        this._cachingReconstructions$ = {};\n        this._cachingTiles$ = {};\n    }\n\n    public cacheReconstructions$(hash: string): Observable<ReconstructionData> {\n        if (!this.hasTile(hash)) {\n            throw new Error(\"Cannot cache reconstructions of a non-existing tile.\");\n        }\n\n        if (this.hasReconstructions(hash)) {\n            throw new Error(\"Cannot cache reconstructions that already exists.\");\n        }\n\n        if (this.isCachingReconstructions(hash)) {\n            return this._cachingReconstructions$[hash];\n        }\n\n        const tile: NodeData[] = [];\n\n        if (hash in this._reconstructions) {\n            const reconstructionKeys: string[] =\n                this.getReconstructions(hash)\n                    .map(\n                        (reconstruction: ReconstructionData): string => {\n                            return reconstruction.data.key;\n                        });\n\n            for (const node of this.getTile(hash)) {\n                if (reconstructionKeys.indexOf(node.key) === -1) {\n                    tile.push(node);\n                }\n            }\n        } else {\n            tile.push(...this.getTile(hash));\n\n            this._reconstructions[hash] = [];\n        }\n\n        this._cacheRequests[hash] = [];\n        this._cachingReconstructions$[hash] = observableFrom(tile).pipe(\n            mergeMap(\n                (nodeData: NodeData): Observable<[NodeData, IReconstruction]> => {\n                    return !this._cacheRequests[hash] ?\n                        observableEmpty() :\n                        observableZip(\n                            observableOf(nodeData),\n                            this._getAtomicReconstruction(nodeData.key, this._cacheRequests[hash]))\n                            .pipe(\n                                catchError(\n                                    (error: Error): Observable<[NodeData, IReconstruction]> => {\n                                        if (error instanceof AbortMapillaryError) {\n                                            return observableEmpty();\n                                        }\n\n                                        console.error(error);\n\n                                        return observableOf(<[NodeData, IReconstruction]>[nodeData, null]);\n                                    }));\n                },\n                6),\n            map(\n                ([nodeData, reconstruction]: [NodeData, IReconstruction]): ReconstructionData => {\n                    return { data: nodeData, reconstruction: reconstruction };\n                }),\n            filter(\n                (): boolean => {\n                    return hash in this._reconstructions;\n                }),\n            tap(\n                (data: ReconstructionData): void => {\n                    this._reconstructions[hash].push(data);\n                }),\n            filter(\n                (data: ReconstructionData): boolean => {\n                    return !!data.reconstruction;\n                }),\n            finalize(\n                (): void => {\n                    if (hash in this._cachingReconstructions$) {\n                        delete this._cachingReconstructions$[hash];\n                    }\n\n                    if (hash in this._cacheRequests) {\n                        delete this._cacheRequests[hash];\n                    }\n                }),\n            publish(),\n            refCount());\n\n        return this._cachingReconstructions$[hash];\n    }\n\n    public cacheTile$(hash: string): Observable<NodeData[]> {\n        if (hash.length !== 8) {\n            throw new Error(\"Hash needs to be level 8.\");\n        }\n\n        if (this.hasTile(hash)) {\n            throw new Error(\"Cannot cache tile that already exists.\");\n\n        }\n\n        if (this.hasTile(hash)) {\n            return this._cachingTiles$[hash];\n        }\n\n        const bounds: geohash.Bounds = geohash.bounds(hash);\n        const sw: ILatLon = { lat: bounds.sw.lat, lon: bounds.sw.lon };\n        const ne: ILatLon = { lat: bounds.ne.lat, lon: bounds.ne.lon };\n\n        this._tiles[hash] = [];\n        this._cachingTiles$[hash] = this._graphService.cacheBoundingBox$(sw, ne).pipe(\n            catchError(\n                (error: Error): Observable<Node[]> => {\n                    console.error(error);\n\n                    delete this._tiles[hash];\n\n                    return observableEmpty();\n                }),\n            map(\n                (nodes: Node[]): NodeData[] => {\n                    return nodes\n                        .map(\n                            (n: Node): NodeData => {\n                                return this._createNodeData(n);\n                            });\n                }),\n            filter(\n                (): boolean => {\n                    return hash in this._tiles;\n                }),\n            tap(\n                (nodeData: NodeData[]): void => {\n                    this._tiles[hash].push(...nodeData);\n\n                    delete this._cachingTiles$[hash];\n                }),\n            finalize(\n                (): void => {\n                    if (hash in this._cachingTiles$) {\n                        delete this._cachingTiles$[hash];\n                    }\n                }),\n            publish(),\n            refCount());\n\n        return this._cachingTiles$[hash];\n    }\n\n    public isCachingReconstructions(hash: string): boolean {\n        return hash in this._cachingReconstructions$;\n    }\n\n    public isCachingTile(hash: string): boolean {\n        return hash in this._cachingTiles$;\n    }\n\n    public hasReconstructions(hash: string): boolean {\n        return !(hash in this._cachingReconstructions$) &&\n            hash in this._reconstructions &&\n            this._reconstructions[hash].length === this._tiles[hash].length;\n    }\n\n    public hasTile(hash: string): boolean {\n        return !(hash in this._cachingTiles$) && hash in this._tiles;\n    }\n\n    public getReconstructions(hash: string): ReconstructionData[] {\n        return hash in this._reconstructions ?\n            this._reconstructions[hash]\n                .filter(\n                    (data: ReconstructionData): boolean => {\n                        return !!data.reconstruction;\n                    }) :\n            [];\n    }\n\n    public getTile(hash: string): NodeData[] {\n        return hash in this._tiles ? this._tiles[hash] : [];\n    }\n\n    public uncache(keepHashes?: string[]): void {\n        for (let hash of Object.keys(this._cacheRequests)) {\n            if (!!keepHashes && keepHashes.indexOf(hash) !== -1) {\n                continue;\n            }\n\n            for (const request of this._cacheRequests[hash]) {\n                request.abort();\n            }\n\n            delete this._cacheRequests[hash];\n        }\n\n        for (let hash of Object.keys(this._reconstructions)) {\n            if (!!keepHashes && keepHashes.indexOf(hash) !== -1) {\n                continue;\n            }\n\n            delete this._reconstructions[hash];\n        }\n\n        for (let hash of Object.keys(this._tiles)) {\n            if (!!keepHashes && keepHashes.indexOf(hash) !== -1) {\n                continue;\n            }\n\n            delete this._tiles[hash];\n        }\n    }\n\n    private _createNodeData(node: Node): NodeData {\n        return {\n            alt: node.alt,\n            focal: node.focal,\n            gpano: node.gpano,\n            height: node.height,\n            k1: node.ck1,\n            k2: node.ck2,\n            key: node.key,\n            lat: node.latLon.lat,\n            lon: node.latLon.lon,\n            mergeCC: node.mergeCC,\n            orientation: node.orientation,\n            originalLat: node.originalLatLon.lat,\n            originalLon: node.originalLatLon.lon,\n            rotation: [node.rotation[0], node.rotation[1], node.rotation[2]],\n            scale: node.scale,\n            width: node.width,\n        };\n    }\n\n    private _getAtomicReconstruction(key: string, requests: XMLHttpRequest[]): Observable<IReconstruction> {\n        return Observable.create(\n            (subscriber: Subscriber<IReconstruction>): void => {\n                const xmlHTTP: XMLHttpRequest = new XMLHttpRequest();\n\n                xmlHTTP.open(\"GET\", Urls.atomicReconstruction(key), true);\n                xmlHTTP.responseType = \"json\";\n                xmlHTTP.timeout = 15000;\n\n                xmlHTTP.onload = () => {\n                    if (!xmlHTTP.response) {\n                        subscriber.error(new Error(`Atomic reconstruction does not exist (${key})`));\n                    } else {\n                        subscriber.next(xmlHTTP.response);\n                        subscriber.complete();\n                    }\n                };\n\n                xmlHTTP.onerror = () => {\n                    subscriber.error(new Error(`Failed to get atomic reconstruction (${key})`));\n                };\n\n                xmlHTTP.ontimeout = () => {\n                    subscriber.error(new Error(`Atomic reconstruction request timed out (${key})`));\n                };\n\n                xmlHTTP.onabort = () => {\n                    subscriber.error(new AbortMapillaryError(`Atomic reconstruction request was aborted (${key})`));\n                };\n\n                requests.push(xmlHTTP);\n\n                xmlHTTP.send(null);\n            });\n    }\n}\n\nexport default SpatialDataCache;\n",
-    "import * as geohash from \"latlon-geohash\";\n\nimport {\n    combineLatest as observableCombineLatest,\n    empty as observableEmpty,\n    from as observableFrom,\n    of as observableOf,\n    Observable,\n    Subscription,\n} from \"rxjs\";\n\nimport {\n    catchError,\n    withLatestFrom,\n    map,\n    distinctUntilChanged,\n    concatMap,\n    switchMap,\n    tap,\n    filter,\n    last,\n    mergeMap,\n    first,\n    refCount,\n    publishReplay,\n} from \"rxjs/operators\";\n\nimport {\n    ComponentService,\n    Component,\n    ISpatialDataConfiguration,\n    NodeData,\n    ReconstructionData,\n    SpatialDataCache,\n    SpatialDataScene,\n} from \"../../Component\";\nimport {\n    Geo,\n    GeoCoords,\n    ILatLonAlt,\n    Transform,\n    ViewportCoords,\n} from \"../../Geo\";\nimport {\n    Node,\n} from \"../../Graph\";\nimport {\n    IGLRenderHash,\n    GLRenderStage,\n    RenderCamera,\n} from \"../../Render\";\nimport {\n    IFrame,\n} from \"../../State\";\nimport {\n    Container,\n    Navigator,\n} from \"../../Viewer\";\nimport PlayService from \"../../viewer/PlayService\";\nimport State from \"../../state/State\";\n\nexport class SpatialDataComponent extends Component<ISpatialDataConfiguration> {\n    public static componentName: string = \"spatialData\";\n\n    private _cache: SpatialDataCache;\n    private _scene: SpatialDataScene;\n    private _viewportCoords: ViewportCoords;\n    private _geoCoords: GeoCoords;\n\n    private _addSubscription: Subscription;\n    private _cameraVisibilitySubscription: Subscription;\n    private _earthControlsSubscription: Subscription;\n    private _moveSubscription: Subscription;\n    private _pointVisibilitySubscription: Subscription;\n    private _positionVisibilitySubscription: Subscription;\n    private _renderSubscription: Subscription;\n    private _tileVisibilitySubscription: Subscription;\n    private _uncacheSubscription: Subscription;\n    private _visualizeConnectedComponentSubscription: Subscription;\n\n    constructor(name: string, container: Container, navigator: Navigator) {\n        super(name, container, navigator);\n\n        this._cache = new SpatialDataCache(navigator.graphService);\n        this._scene = new SpatialDataScene(this._getDefaultConfiguration());\n        this._viewportCoords = new ViewportCoords();\n        this._geoCoords = new GeoCoords();\n    }\n\n    protected _activate(): void {\n        this._earthControlsSubscription = this._configuration$.pipe(\n            map(\n                (configuration: ISpatialDataConfiguration): boolean => {\n                    return configuration.earthControls;\n                }),\n            distinctUntilChanged(),\n            withLatestFrom(this._navigator.stateService.state$))\n            .subscribe(\n                ([earth, state]: [boolean, State]): void => {\n                    if (earth && state !== State.Earth) {\n                        this._navigator.stateService.earth();\n                    } else if (!earth && state === State.Earth) {\n                        this._navigator.stateService.traverse();\n                    }\n                });\n\n        const direction$: Observable<string> = this._container.renderService.bearing$.pipe(\n            map(\n                (bearing: number): string => {\n                    let direction: string = \"\";\n\n                    if (bearing > 292.5 || bearing <= 67.5) {\n                        direction += \"n\";\n                    }\n\n                    if (bearing > 112.5 && bearing <= 247.5) {\n                        direction += \"s\";\n                    }\n\n                    if (bearing > 22.5 && bearing <= 157.5) {\n                        direction += \"e\";\n                    }\n\n                    if (bearing > 202.5 && bearing <= 337.5) {\n                        direction += \"w\";\n                    }\n\n                    return direction;\n                }),\n            distinctUntilChanged(),\n            publishReplay(1),\n            refCount());\n\n        const hash$: Observable<string> = this._navigator.stateService.reference$.pipe(\n            tap(\n                (): void => {\n                    this._scene.uncache();\n                }),\n            switchMap(\n                (): Observable<string> => {\n                    return this._navigator.stateService.currentNode$.pipe(\n                        map(\n                            (node: Node): string => {\n                                return geohash.encode(node.latLon.lat, node.latLon.lon, 8);\n                            }),\n                        distinctUntilChanged());\n                }),\n            publishReplay(1),\n            refCount());\n\n        const sequencePlay$: Observable<boolean> = observableCombineLatest(\n            this._navigator.playService.playing$,\n            this._navigator.playService.speed$).pipe(\n            map(\n                ([playing, speed]: [boolean, number]): boolean => {\n                    return playing && speed > PlayService.sequenceSpeed;\n                }),\n            distinctUntilChanged(),\n            publishReplay(1),\n            refCount());\n\n        this._addSubscription = observableCombineLatest(\n            this._navigator.stateService.state$.pipe(\n                map(\n                    (state: State): boolean => {\n                        return state === State.Earth;\n                    }),\n                distinctUntilChanged()),\n            hash$,\n            sequencePlay$,\n            direction$).pipe(\n            distinctUntilChanged(\n                (\n                    [e1, h1, s1, d1]: [boolean, string, boolean, string],\n                    [e2, h2, s2, d2]: [boolean, string, boolean, string]): boolean => {\n\n                    if (e1 !== e2) {\n                        return false;\n                    }\n\n                    if (e1) {\n                        return h1 === h2 && s1 === s2;\n                    }\n\n                    return h1 === h2 && s1 === s2 && d1 === d2;\n                }),\n            concatMap(\n                ([earth, hash, sequencePlay, direction]: [boolean, string, boolean, string]): Observable<string[]> => {\n                    if (earth) {\n                        return sequencePlay ?\n                            observableOf([hash]) :\n                            observableOf(this._adjacentComponent(hash, 4));\n                    }\n\n                    return sequencePlay ?\n                        observableOf([hash, geohash.neighbours(hash)[<keyof geohash.Neighbours>direction]]) :\n                        observableOf(this._computeTiles(hash, direction));\n                }),\n            switchMap(\n                (hashes: string[]): Observable<string> => {\n                    return observableFrom(hashes).pipe(\n                        mergeMap(\n                            (h: string): Observable<[string, NodeData[]]> => {\n                                let tile$: Observable<NodeData[]>;\n\n                                if (this._cache.hasTile(h)) {\n                                    tile$ = observableOf(this._cache.getTile(h));\n                                } else if (this._cache.isCachingTile(h)) {\n                                    tile$ = this._cache.cacheTile$(h).pipe(\n                                        last(null, {}),\n                                        switchMap(\n                                            (): Observable<NodeData[]> => {\n                                                return observableOf(this._cache.getTile(h));\n                                            }));\n                                } else {\n                                    tile$ = this._cache.cacheTile$(h);\n                                }\n\n                                return observableCombineLatest(observableOf(h), tile$);\n                            },\n                            1),\n                        map(\n                            ([hash]: [string, NodeData[]]): string => {\n                                return hash;\n                            }));\n                }),\n            concatMap(\n                (hash: string): Observable<[string, ReconstructionData]> => {\n                    let reconstructions$: Observable<ReconstructionData>;\n\n                    if (this._cache.hasReconstructions(hash)) {\n                        reconstructions$ = observableFrom(this._cache.getReconstructions(hash));\n                    } else if (this._cache.isCachingReconstructions(hash)) {\n                        reconstructions$ = this._cache.cacheReconstructions$(hash).pipe(\n                            last(null, {}),\n                            switchMap(\n                                (): Observable<ReconstructionData> => {\n                                    return observableFrom(this._cache.getReconstructions(hash));\n                                }));\n                    } else if (this._cache.hasTile(hash)) {\n                        reconstructions$ = this._cache.cacheReconstructions$(hash);\n                    } else {\n                        reconstructions$ = observableEmpty();\n                    }\n\n                    return observableCombineLatest(observableOf(hash), reconstructions$);\n                }),\n            withLatestFrom(this._navigator.stateService.reference$),\n            tap(\n                ([[hash], reference]: [[string, ReconstructionData], ILatLonAlt]): boolean => {\n                    if (this._scene.hasTile(hash)) {\n                        return;\n                    }\n\n                    this._scene.addTile(this._computeTileBBox(hash, reference), hash);\n                }),\n            filter(\n                ([[hash, data]]: [[string, ReconstructionData], ILatLonAlt]): boolean => {\n                    return !this._scene.hasReconstruction(data.reconstruction.main_shot, hash);\n                }),\n            map(\n                ([[hash, data], reference]: [[string, ReconstructionData], ILatLonAlt]):\n                [ReconstructionData, Transform, number[], string] => {\n                    return [\n                        data,\n                        this._createTransform(data.data, reference),\n                        this._computeOriginalPosition(data.data, reference),\n                        hash];\n                }))\n            .subscribe(\n                ([data, transform, position, hash]: [ReconstructionData, Transform, number[], string]): void => {\n                    this._scene.addReconstruction(\n                        data.reconstruction,\n                        transform,\n                        position,\n                        !!data.data.mergeCC ? data.data.mergeCC.toString() : \"\",\n                        hash);\n                });\n\n        this._cameraVisibilitySubscription = this._configuration$.pipe(\n            map(\n                (configuration: ISpatialDataConfiguration): boolean => {\n                    return configuration.camerasVisible;\n                }),\n            distinctUntilChanged())\n            .subscribe(\n                (visible: boolean): void => {\n                    this._scene.setCameraVisibility(visible);\n                });\n\n        this._pointVisibilitySubscription = this._configuration$.pipe(\n            map(\n                (configuration: ISpatialDataConfiguration): boolean => {\n                    return configuration.pointsVisible;\n                }),\n            distinctUntilChanged())\n            .subscribe(\n                (visible: boolean): void => {\n                    this._scene.setPointVisibility(visible);\n                });\n\n        this._positionVisibilitySubscription = this._configuration$.pipe(\n            map(\n                (configuration: ISpatialDataConfiguration): boolean => {\n                    return configuration.positionsVisible;\n                }),\n            distinctUntilChanged())\n            .subscribe(\n                (visible: boolean): void => {\n                    this._scene.setPositionVisibility(visible);\n                });\n\n        this._tileVisibilitySubscription = this._configuration$.pipe(\n            map(\n                (configuration: ISpatialDataConfiguration): boolean => {\n                    return configuration.tilesVisible;\n                }),\n            distinctUntilChanged())\n            .subscribe(\n                (visible: boolean): void => {\n                    this._scene.setTileVisibility(visible);\n                });\n\n        this._visualizeConnectedComponentSubscription = this._configuration$.pipe(\n            map(\n                (configuration: ISpatialDataConfiguration): boolean => {\n                    return configuration.connectedComponents;\n                }),\n            distinctUntilChanged())\n            .subscribe(\n                (visualize: boolean): void => {\n                    this._scene.setConnectedComponentVisualization(visualize);\n                });\n\n        this._uncacheSubscription = hash$\n            .subscribe(\n                (hash: string): void => {\n                    const keepHashes: string[] = this._adjacentComponent(hash, 4);\n                    this._scene.uncache(keepHashes);\n                    this._cache.uncache(keepHashes);\n                });\n\n        this._moveSubscription = this._navigator.playService.playing$.pipe(\n            switchMap(\n                (playing: boolean): Observable<MouseEvent> => {\n                    return playing ?\n                        observableEmpty() :\n                        this._container.mouseService.dblClick$;\n                }),\n            withLatestFrom(this._container.renderService.renderCamera$),\n            switchMap(\n                ([event, render]: [MouseEvent, RenderCamera]): Observable<Node> => {\n                    const element: HTMLElement = this._container.element;\n                    const [canvasX, canvasY]: number[] = this._viewportCoords.canvasPosition(event, element);\n                    const viewport: number[] = this._viewportCoords.canvasToViewport(\n                        canvasX,\n                        canvasY,\n                        element);\n\n                    const key: string = this._scene.intersectObjects(viewport, render.perspective);\n\n                    return !!key ?\n                        this._navigator.moveToKey$(key).pipe(\n                            catchError(\n                                (): Observable<Node> => {\n                                    return observableEmpty();\n                                })) :\n                        observableEmpty();\n                }))\n            .subscribe();\n\n        this._renderSubscription = this._navigator.stateService.currentState$.pipe(\n            map(\n                (frame: IFrame): IGLRenderHash => {\n                    const scene: SpatialDataScene = this._scene;\n\n                    return {\n                        name: this._name,\n                        render: {\n                            frameId: frame.id,\n                            needsRender: scene.needsRender,\n                            render: scene.render.bind(scene),\n                            stage: GLRenderStage.Foreground,\n                        },\n                    };\n                }))\n            .subscribe(this._container.glRenderer.render$);\n    }\n\n    protected _deactivate(): void {\n        this._cache.uncache();\n        this._scene.uncache();\n\n        this._addSubscription.unsubscribe();\n        this._cameraVisibilitySubscription.unsubscribe();\n        this._earthControlsSubscription.unsubscribe();\n        this._moveSubscription.unsubscribe();\n        this._pointVisibilitySubscription.unsubscribe();\n        this._positionVisibilitySubscription.unsubscribe();\n        this._renderSubscription.unsubscribe();\n        this._tileVisibilitySubscription.unsubscribe();\n        this._uncacheSubscription.unsubscribe();\n        this._visualizeConnectedComponentSubscription.unsubscribe();\n\n        this._navigator.stateService.state$.pipe(\n            first())\n            .subscribe(\n                (state: State): void => {\n                    if (state === State.Earth) {\n                        this._navigator.stateService.traverse();\n                    }\n                });\n    }\n\n    protected _getDefaultConfiguration(): ISpatialDataConfiguration {\n        return { camerasVisible: false, pointsVisible: true, positionsVisible: false, tilesVisible: false };\n    }\n\n    private _adjacentComponent(hash: string, depth: number): string[] {\n        const hashSet: Set<string> = new Set<string>();\n        hashSet.add(hash);\n\n        this._adjacentComponentRecursive(hashSet, [hash], 0, depth);\n\n        return this._setToArray(hashSet);\n    }\n\n    private _adjacentComponentRecursive(\n        hashSet: Set<string>,\n        currentHashes: string[],\n        currentDepth: number,\n        maxDepth: number): void {\n\n        if (currentDepth === maxDepth) {\n            return;\n        }\n\n        const neighbours: string[] = [];\n\n        for (const hash of currentHashes) {\n            const hashNeighbours: geohash.Neighbours = geohash.neighbours(hash);\n\n            for (const direction in hashNeighbours) {\n                if (!hashNeighbours.hasOwnProperty(direction)) {\n                    continue;\n                }\n\n                neighbours.push(hashNeighbours[<keyof geohash.Neighbours>direction]);\n            }\n        }\n\n        const newHashes: string[] = [];\n        for (const neighbour of neighbours) {\n            if (!hashSet.has(neighbour)) {\n                hashSet.add(neighbour);\n                newHashes.push(neighbour);\n            }\n        }\n\n        this._adjacentComponentRecursive(hashSet, newHashes, currentDepth + 1, maxDepth);\n    }\n\n    private _computeOriginalPosition(data: NodeData, reference: ILatLonAlt): number[] {\n        return this._geoCoords.geodeticToEnu(\n            data.originalLat,\n            data.originalLon,\n            data.alt,\n            reference.lat,\n            reference.lon,\n            reference.alt);\n    }\n\n    private _computeTileBBox(hash: string, reference: ILatLonAlt): number[][] {\n        const bounds: geohash.Bounds = geohash.bounds(hash);\n\n        const sw: number[] = this._geoCoords.geodeticToEnu(\n            bounds.sw.lat,\n            bounds.sw.lon,\n            0,\n            reference.lat,\n            reference.lon,\n            reference.alt);\n\n        const ne: number[] = this._geoCoords.geodeticToEnu(\n            bounds.ne.lat,\n            bounds.ne.lon,\n            0,\n            reference.lat,\n            reference.lon,\n            reference.alt);\n\n        return [sw, ne];\n    }\n\n    private _createTransform(data: NodeData, reference: ILatLonAlt): Transform {\n        const translation: number[] = Geo.computeTranslation(\n            { alt: data.alt, lat: data.lat, lon: data.lon },\n            data.rotation,\n            reference);\n\n        const transform: Transform = new Transform(\n            data.orientation,\n            data.width,\n            data.height,\n            data.focal,\n            data.scale,\n            data.gpano,\n            data.rotation,\n            translation,\n            undefined,\n            undefined,\n            data.k1,\n            data.k2);\n\n        return transform;\n    }\n\n    private _computeTiles(hash: string, direction: string): string[] {\n        const hashSet: Set<string> = new Set<string>();\n        const directions: string[] = [\"n\", \"ne\", \"e\", \"se\", \"s\", \"sw\", \"w\", \"nw\"];\n\n        this._computeTilesRecursive(hashSet, hash, direction, directions, 0, 2);\n\n        return this._setToArray(hashSet);\n    }\n\n    private _computeTilesRecursive(\n        hashSet: Set<string>,\n        currentHash: string,\n        direction: string,\n        directions: string[],\n        currentDepth: number,\n        maxDepth: number): void {\n\n        hashSet.add(currentHash);\n\n        if (currentDepth === maxDepth) {\n            return;\n        }\n\n        const neighbours: geohash.Neighbours = geohash.neighbours(currentHash);\n        const directionIndex: number = directions.indexOf(direction);\n        const length: number = directions.length;\n\n        const directionNeighbours: string[] = [\n            neighbours[<keyof geohash.Neighbours>directions[this._modulo((directionIndex - 1), length)]],\n            neighbours[<keyof geohash.Neighbours>direction],\n            neighbours[<keyof geohash.Neighbours>directions[this._modulo((directionIndex + 1), length)]],\n        ];\n\n        for (let directionNeighbour of directionNeighbours) {\n            this._computeTilesRecursive(hashSet, directionNeighbour, direction, directions, currentDepth + 1, maxDepth);\n        }\n    }\n\n    private _modulo(a: number, n: number): number {\n        return ((a % n) + n) % n;\n    }\n\n    private _setToArray<T>(s: Set<T>): T[] {\n        const a: T[] = [];\n\n        s.forEach(\n            (value: T) => {\n                a.push(value);\n            });\n\n        return a;\n    }\n}\n\nComponentService.register(SpatialDataComponent);\nexport default SpatialDataComponent;\n",
-    "import * as THREE from \"three\";\n\nimport {\n    IReconstruction,\n    IReconstructionPoint,\n    ISpatialDataConfiguration,\n} from \"../../Component\";\nimport {\n    Transform,\n} from \"../../Geo\";\n\nexport class SpatialDataScene {\n    private _scene: THREE.Scene;\n    private _raycaster: THREE.Raycaster;\n\n    private _connectedComponentColors: { [id: string]: string };\n    private _needsRender: boolean;\n    private _interactiveObjects: THREE.Object3D[];\n    private _reconstructions: {\n        [hash: string]: {\n            cameraKeys: { [id: string]: string };\n            cameras: THREE.Object3D;\n            connectedComponents: { [id: string]: THREE.Object3D[] };\n            keys: string[];\n            points: THREE.Object3D;\n            positions: THREE.Object3D;\n        };\n    };\n\n    private _tiles: { [hash: string]: THREE.Object3D };\n\n    private _camerasVisible: boolean;\n    private _pointsVisible: boolean;\n    private _positionsVisible: boolean;\n    private _tilesVisible: boolean;\n    private _visualizeConnectedComponents: boolean;\n\n    constructor(configuration: ISpatialDataConfiguration, scene?: THREE.Scene, raycaster?: THREE.Raycaster) {\n        this._scene = !!scene ? scene : new THREE.Scene();\n        this._raycaster = !!raycaster ? raycaster : new THREE.Raycaster(undefined, undefined, 0.8);\n\n        this._connectedComponentColors = {};\n        this._needsRender = false;\n        this._interactiveObjects = [];\n        this._reconstructions = {};\n        this._tiles = {};\n\n        this._camerasVisible = configuration.camerasVisible;\n        this._pointsVisible = configuration.pointsVisible;\n        this._positionsVisible = configuration.positionsVisible;\n        this._tilesVisible = configuration.tilesVisible;\n        this._visualizeConnectedComponents = configuration.connectedComponents;\n    }\n\n    public get needsRender(): boolean {\n        return this._needsRender;\n    }\n\n    public addReconstruction(\n        reconstruction: IReconstruction,\n        transform: Transform,\n        originalPosition: number[],\n        connectedComponent: string,\n        hash: string): void {\n\n        if (!(hash in this._reconstructions)) {\n            this._reconstructions[hash] = {\n                cameraKeys: {},\n                cameras: new THREE.Object3D(),\n                connectedComponents: {},\n                keys: [],\n                points: new THREE.Object3D(),\n                positions: new THREE.Object3D(),\n            };\n\n            this._reconstructions[hash].cameras.visible = this._camerasVisible;\n            this._reconstructions[hash].points.visible = this._pointsVisible;\n            this._reconstructions[hash].positions.visible = this._positionsVisible;\n\n            this._scene.add(\n                this._reconstructions[hash].cameras,\n                this._reconstructions[hash].points,\n                this._reconstructions[hash].positions);\n        }\n\n        if (!(connectedComponent in this._reconstructions[hash].connectedComponents)) {\n            this._reconstructions[hash].connectedComponents[connectedComponent] = [];\n        }\n\n        if (transform.hasValidScale) {\n            this._reconstructions[hash].points.add(this._createPoints(reconstruction, transform));\n        }\n\n        const camera: THREE.Object3D = this._createCamera(transform);\n        this._reconstructions[hash].cameras.add(camera);\n        for (const child of camera.children) {\n            this._reconstructions[hash].cameraKeys[child.uuid] = reconstruction.main_shot;\n            this._interactiveObjects.push(child);\n        }\n\n        this._reconstructions[hash].connectedComponents[connectedComponent].push(camera);\n\n        const color: string = this._getColor(connectedComponent, this._visualizeConnectedComponents);\n        this._setCameraColor(color, camera);\n\n        this._reconstructions[hash].positions.add(this._createPosition(transform, originalPosition));\n\n        this._reconstructions[hash].keys.push(reconstruction.main_shot);\n\n        this._needsRender = true;\n    }\n\n    public addTile(tileBBox: number[][], hash: string): void {\n        if (this.hasTile(hash)) {\n            return;\n        }\n\n        const sw: number[] = tileBBox[0];\n        const ne: number[] = tileBBox[1];\n\n        const geometry: THREE.Geometry = new THREE.Geometry();\n        geometry.vertices.push(\n            new THREE.Vector3().fromArray(sw),\n            new THREE.Vector3(sw[0], ne[1], (sw[2] + ne[2]) / 2),\n            new THREE.Vector3().fromArray(ne),\n            new THREE.Vector3(ne[0], sw[1], (sw[2] + ne[2]) / 2),\n            new THREE.Vector3().fromArray(sw));\n\n        const tile: THREE.Object3D = new THREE.Line(geometry, new THREE.LineBasicMaterial());\n\n        this._tiles[hash] = new THREE.Object3D();\n        this._tiles[hash].visible = this._tilesVisible;\n        this._tiles[hash].add(tile);\n        this._scene.add(this._tiles[hash]);\n\n        this._needsRender = true;\n    }\n\n    public uncache(keepHashes?: string[]): void {\n        for (const hash of Object.keys(this._reconstructions)) {\n            if (!!keepHashes && keepHashes.indexOf(hash) !== -1) {\n                continue;\n            }\n\n            this._disposeReconstruction(hash);\n        }\n\n        for (const hash of Object.keys(this._tiles)) {\n            if (!!keepHashes && keepHashes.indexOf(hash) !== -1) {\n                continue;\n            }\n\n            this._disposeTile(hash);\n        }\n\n        this._needsRender = true;\n    }\n\n    public hasReconstruction(key: string, hash: string): boolean {\n        return hash in this._reconstructions && this._reconstructions[hash].keys.indexOf(key) !== -1;\n    }\n\n    public hasTile(hash: string): boolean {\n        return hash in this._tiles;\n    }\n\n    public intersectObjects([viewportX, viewportY]: number[], camera: THREE.Camera): string {\n        if (!this._camerasVisible) {\n            return null;\n        }\n\n        this._raycaster.setFromCamera(new THREE.Vector2(viewportX, viewportY), camera);\n\n        const intersects: THREE.Intersection[] = this._raycaster.intersectObjects(this._interactiveObjects);\n        for (const intersect of intersects) {\n            for (const hash in this._reconstructions) {\n                if (!this._reconstructions.hasOwnProperty(hash)) {\n                    continue;\n                }\n\n                if (intersect.object.uuid in this._reconstructions[hash].cameraKeys) {\n                    return this._reconstructions[hash].cameraKeys[intersect.object.uuid];\n                }\n            }\n        }\n\n        return null;\n    }\n\n    public setCameraVisibility(visible: boolean): void {\n        if (visible === this._camerasVisible) {\n            return;\n        }\n\n        for (const hash in this._reconstructions) {\n            if (!this._reconstructions.hasOwnProperty(hash)) {\n                continue;\n            }\n\n            this._reconstructions[hash].cameras.visible = visible;\n        }\n\n        this._camerasVisible = visible;\n        this._needsRender = true;\n    }\n\n    public setPointVisibility(visible: boolean): void {\n        if (visible === this._pointsVisible) {\n            return;\n        }\n\n        for (const hash in this._reconstructions) {\n            if (!this._reconstructions.hasOwnProperty(hash)) {\n                continue;\n            }\n\n            this._reconstructions[hash].points.visible = visible;\n        }\n\n        this._pointsVisible = visible;\n        this._needsRender = true;\n\n    }\n\n    public setPositionVisibility(visible: boolean): void {\n        if (visible === this._positionsVisible) {\n            return;\n        }\n\n        for (const hash in this._reconstructions) {\n            if (!this._reconstructions.hasOwnProperty(hash)) {\n                continue;\n            }\n\n            this._reconstructions[hash].positions.visible = visible;\n        }\n\n        this._positionsVisible = visible;\n        this._needsRender = true;\n    }\n\n    public setTileVisibility(visible: boolean): void {\n        if (visible === this._tilesVisible) {\n            return;\n        }\n\n        for (const hash in this._tiles) {\n            if (!this._tiles.hasOwnProperty(hash)) {\n                continue;\n            }\n\n            this._tiles[hash].visible = visible;\n        }\n\n        this._tilesVisible = visible;\n        this._needsRender = true;\n    }\n\n    public setConnectedComponentVisualization(visualize: boolean): void {\n        if (visualize === this._visualizeConnectedComponents) {\n            return;\n        }\n\n        for (const hash in this._reconstructions) {\n            if (!this._reconstructions.hasOwnProperty(hash)) {\n                continue;\n            }\n\n            const connectedComponents: { [id: number]: THREE.Object3D[] } =\n                this._reconstructions[hash].connectedComponents;\n\n            for (const connectedComponent in connectedComponents) {\n                if (!connectedComponents.hasOwnProperty(connectedComponent)) {\n                    continue;\n                }\n\n                const color: string = this._getColor(connectedComponent, visualize);\n\n                for (const camera of connectedComponents[connectedComponent]) {\n                    this._setCameraColor(color, camera);\n                }\n            }\n        }\n\n        this._visualizeConnectedComponents = visualize;\n        this._needsRender = true;\n    }\n\n    public render(\n        perspectiveCamera: THREE.PerspectiveCamera,\n        renderer: THREE.WebGLRenderer): void {\n\n        renderer.render(this._scene, perspectiveCamera);\n\n        this._needsRender = false;\n    }\n\n    private _arrayToFloatArray(a: number[][], columns: number): Float32Array {\n        const n: number = a.length;\n        const f: Float32Array = new Float32Array(n * columns);\n\n        for (let i: number = 0; i < n; i++) {\n            const item: number[] = a[i];\n            const index: number = 3 * i;\n\n            f[index + 0] = item[0];\n            f[index + 1] = item[1];\n            f[index + 2] = item[2];\n        }\n\n        return f;\n    }\n\n    private _createAxis(transform: Transform): THREE.Object3D {\n        const north: number[] = transform.unprojectBasic([0.5, 0], 0.22);\n        const south: number[] = transform.unprojectBasic([0.5, 1], 0.16);\n\n        const axis: THREE.BufferGeometry = new THREE.BufferGeometry();\n        axis.addAttribute(\"position\", new THREE.BufferAttribute(this._arrayToFloatArray([north, south], 3), 3));\n\n        return new THREE.Line(axis, new THREE.LineBasicMaterial());\n    }\n\n    private _createCamera(transform: Transform): THREE.Object3D {\n        return !!transform.gpano ?\n            this._createPanoCamera(transform) :\n            this._createPrespectiveCamera(transform);\n    }\n\n    private _createDiagonals(transform: Transform, depth: number): THREE.Object3D {\n        const origin: number [] = transform.unprojectBasic([0, 0], 0, true);\n        const topLeft: number[] = transform.unprojectBasic([0, 0], depth, true);\n        const topRight: number[] = transform.unprojectBasic([1, 0], depth, true);\n        const bottomRight: number[] = transform.unprojectBasic([1, 1], depth, true);\n        const bottomLeft: number[] = transform.unprojectBasic([0, 1], depth, true);\n\n        const vertices: number[][] = [\n            origin, topLeft,\n            origin, topRight,\n            origin, bottomRight,\n            origin, bottomLeft,\n        ];\n\n        const diagonals: THREE.BufferGeometry = new THREE.BufferGeometry();\n        diagonals.addAttribute(\"position\", new THREE.BufferAttribute(this._arrayToFloatArray(vertices, 3), 3));\n\n        return new THREE.LineSegments(diagonals, new THREE.LineBasicMaterial());\n    }\n\n    private _createFrame(transform: Transform, depth: number): THREE.Object3D {\n        const vertices2d: number[][] = [];\n        vertices2d.push(...this._subsample([0, 1], [0, 0], 20));\n        vertices2d.push(...this._subsample([0, 0], [1, 0], 20));\n        vertices2d.push(...this._subsample([1, 0], [1, 1], 20));\n\n        const vertices3d: number[][] = vertices2d\n            .map(\n                (basic: number[]): number[] => {\n                    return transform.unprojectBasic(basic, depth, true);\n                });\n\n        const frame: THREE.BufferGeometry = new THREE.BufferGeometry();\n        frame.addAttribute(\"position\", new THREE.BufferAttribute(this._arrayToFloatArray(vertices3d, 3), 3));\n\n        return new THREE.Line(frame, new THREE.LineBasicMaterial());\n    }\n\n    private _createLatitude(basicY: number, numVertices: number, transform: Transform): THREE.Object3D {\n        const positions: Float32Array = new Float32Array((numVertices + 1) * 3);\n\n        for (let i: number = 0; i <= numVertices; i++) {\n            const position: number[] = transform.unprojectBasic([i / numVertices, basicY], 0.16);\n            const index: number = 3 * i;\n\n            positions[index + 0] = position[0];\n            positions[index + 1] = position[1];\n            positions[index + 2] = position[2];\n        }\n\n        const latitude: THREE.BufferGeometry = new THREE.BufferGeometry();\n        latitude.addAttribute(\"position\", new THREE.BufferAttribute(positions, 3));\n\n        return new THREE.Line(latitude, new THREE.LineBasicMaterial());\n    }\n\n    private _createLongitude(basicX: number, numVertices: number, transform: Transform): THREE.Object3D {\n        const positions: Float32Array = new Float32Array((numVertices + 1) * 3);\n\n        for (let i: number = 0; i <= numVertices; i++) {\n            const position: number[] = transform.unprojectBasic([basicX, i / numVertices], 0.16);\n            const index: number = 3 * i;\n\n            positions[index + 0] = position[0];\n            positions[index + 1] = position[1];\n            positions[index + 2] = position[2];\n        }\n\n        const latitude: THREE.BufferGeometry = new THREE.BufferGeometry();\n        latitude.addAttribute(\"position\", new THREE.BufferAttribute(positions, 3));\n\n        return new THREE.Line(latitude, new THREE.LineBasicMaterial());\n    }\n\n    private _createPanoCamera(transform: Transform): THREE.Object3D {\n        const camera: THREE.Object3D = new THREE.Object3D();\n\n        camera.children.push(this._createAxis(transform));\n        camera.children.push(this._createLatitude(0.5, 10, transform));\n        camera.children.push(this._createLongitude(0, 6, transform));\n        camera.children.push(this._createLongitude(0.25, 6, transform));\n        camera.children.push(this._createLongitude(0.5, 6, transform));\n        camera.children.push(this._createLongitude(0.75, 6, transform));\n\n        return camera;\n    }\n\n    private _createPoints(reconstruction: IReconstruction, transform: Transform): THREE.Object3D {\n        const srtInverse: THREE.Matrix4 = new THREE.Matrix4().getInverse(transform.srt);\n        const points: IReconstructionPoint[] = Object\n            .keys(reconstruction.points)\n            .map(\n                (key: string): IReconstructionPoint => {\n                    return reconstruction.points[key];\n                });\n\n        const numPoints: number = points.length;\n        const positions: Float32Array = new Float32Array(numPoints * 3);\n        const colors: Float32Array = new Float32Array(numPoints * 3);\n\n        for (let i: number = 0; i < numPoints; i++) {\n            const index: number = 3 * i;\n\n            const coords: number[] = points[i].coordinates;\n            const point: THREE.Vector3 = new THREE.Vector3(coords[0], coords[1], coords[2])\n                .applyMatrix4(srtInverse);\n\n            positions[index + 0] = point.x;\n            positions[index + 1] = point.y;\n            positions[index + 2] = point.z;\n\n            const color: number[] = points[i].color;\n            colors[index + 0] = color[0] / 255.0;\n            colors[index + 1] = color[1] / 255.0;\n            colors[index + 2] = color[2] / 255.0;\n        }\n\n        const geometry: THREE.BufferGeometry = new THREE.BufferGeometry();\n        geometry.addAttribute(\"position\", new THREE.BufferAttribute(positions, 3));\n        geometry.addAttribute(\"color\", new THREE.BufferAttribute(colors, 3));\n\n        const material: THREE.PointsMaterial = new THREE.PointsMaterial({\n            size: 0.1,\n            vertexColors: THREE.VertexColors,\n        });\n\n        return new THREE.Points(geometry, material);\n    }\n\n    private _createPosition(transform: Transform, originalPosition: number[]): THREE.Object3D {\n        const computedPosition: number[] = transform.unprojectBasic([0, 0], 0);\n        const vertices: number[][] = [originalPosition, computedPosition];\n        const geometry: THREE.BufferGeometry = new THREE.BufferGeometry();\n        geometry.addAttribute(\"position\", new THREE.BufferAttribute(this._arrayToFloatArray(vertices, 3), 3));\n\n        return new THREE.Line(\n            geometry,\n            new THREE.LineBasicMaterial({ color: new THREE.Color(1, 0, 0) }));\n    }\n\n    private _createPrespectiveCamera(transform: Transform): THREE.Object3D {\n        const depth: number = 0.2;\n        const camera: THREE.Object3D = new THREE.Object3D();\n\n        camera.children.push(this._createDiagonals(transform, depth));\n        camera.children.push(this._createFrame(transform, depth));\n\n        return camera;\n    }\n\n    private _disposeCameras(hash: string): void {\n        const tileCameras: THREE.Object3D = this._reconstructions[hash].cameras;\n\n        for (const camera of tileCameras.children.slice()) {\n            for (const child of camera.children) {\n                (<THREE.Line>child).geometry.dispose();\n                (<THREE.Line>child).material.dispose();\n\n                const index: number = this._interactiveObjects.indexOf(child);\n                if (index !== -1) {\n                    this._interactiveObjects.splice(index, 1);\n                } else {\n                    console.warn(`Object does not exist (${child.id}) for ${hash}`);\n                }\n            }\n\n            tileCameras.remove(camera);\n        }\n\n        this._scene.remove(tileCameras);\n    }\n\n    private _disposePoints(hash: string): void {\n        const tilePoints: THREE.Object3D = this._reconstructions[hash].points;\n\n        for (const points of tilePoints.children.slice()) {\n            (<THREE.Points>points).geometry.dispose();\n            (<THREE.Points>points).material.dispose();\n\n            tilePoints.remove(points);\n        }\n\n        this._scene.remove(tilePoints);\n    }\n\n    private _disposePositions(hash: string): void {\n        const tilePositions: THREE.Object3D = this._reconstructions[hash].positions;\n\n        for (const position of tilePositions.children.slice()) {\n            (<THREE.Points>position).geometry.dispose();\n            (<THREE.Points>position).material.dispose();\n\n            tilePositions.remove(position);\n        }\n\n        this._scene.remove(tilePositions);\n    }\n\n    private _disposeReconstruction(hash: string): void {\n        this._disposeCameras(hash);\n        this._disposePoints(hash);\n        this._disposePositions(hash);\n\n        delete this._reconstructions[hash];\n    }\n\n    private _disposeTile(hash: string): void {\n        const tile: THREE.Object3D = this._tiles[hash];\n\n        for (const line of tile.children.slice()) {\n            (<THREE.Line>line).geometry.dispose();\n            (<THREE.Line>line).material.dispose();\n\n            tile.remove(line);\n        }\n\n        this._scene.remove(tile);\n\n        delete this._tiles[hash];\n    }\n\n    private _getColor(connectedComponent: string, visualizeConnectedComponents: boolean): string {\n        return visualizeConnectedComponents ?\n            this._getConnectedComponentColor(connectedComponent) :\n            \"#FFFFFF\";\n    }\n\n    private _getConnectedComponentColor(connectedComponent: string): string {\n        if (!(connectedComponent in this._connectedComponentColors)) {\n            this._connectedComponentColors[connectedComponent] = this._randomColor();\n        }\n\n        return this._connectedComponentColors[connectedComponent];\n    }\n\n    private _interpolate(a: number, b: number, alpha: number): number {\n        return a + alpha * (b - a);\n    }\n\n    private _randomColor(): string {\n        return `hsl(${Math.floor(360 * Math.random())}, 100%, 65%)`;\n    }\n\n    private _setCameraColor(color: string, camera: THREE.Object3D): void {\n        for (const child of camera.children) {\n            (<THREE.LineBasicMaterial>(<THREE.Line>child).material).color = new THREE.Color(color);\n        }\n    }\n\n    private _subsample(p1: number[], p2: number[], subsamples: number): number[][] {\n        if (subsamples < 1) {\n            return [p1, p2];\n        }\n\n        const samples: number[][] = [];\n\n        for (let i: number = 0; i <= subsamples + 1; i++) {\n            const p: number[] = [];\n\n            for (let j: number = 0; j < 3; j++) {\n                p.push(this._interpolate(p1[j], p2[j], i / (subsamples + 1)));\n            }\n\n            samples.push(p);\n        }\n\n        return samples;\n    }\n}\n\nexport default SpatialDataScene;\n",
-    "export {GeometryTagError} from \"./error/GeometryTagError\";\nexport {PointGeometry} from \"./geometry/PointGeometry\";\nexport {RectGeometry} from \"./geometry/RectGeometry\";\nexport {PolygonGeometry} from \"./geometry/PolygonGeometry\";\nexport {IOutlineTagOptions} from \"./interfaces/IOutlineTagOptions\";\nexport {OutlineTag} from \"./tag/OutlineTag\";\nexport {SpotTag} from \"./tag/SpotTag\";\nexport {TagDomain} from \"./tag/TagDomain\";\nexport {TagComponent} from \"./TagComponent\";\nexport {TagMode} from \"./TagMode\";\n",
-    "import {\n    combineLatest as observableCombineLatest,\n    empty as observableEmpty,\n    merge as observableMerge,\n    from as observableFrom,\n    Observable,\n    Subscription,\n} from \"rxjs\";\n\nimport {\n    startWith,\n    first,\n    tap,\n    map,\n    share,\n    skipWhile,\n    filter,\n    mergeMap,\n    refCount,\n    publishReplay,\n    switchMap,\n    distinctUntilChanged,\n} from \"rxjs/operators\";\n\nimport * as when from \"when\";\n\nimport {\n    ComponentService,\n    Component,\n    CreateHandlerBase,\n    CreatePointHandler,\n    CreatePolygonHandler,\n    CreateRectHandler,\n    CreateRectDragHandler,\n    EditVertexHandler,\n    Geometry,\n    ITagConfiguration,\n    OutlineCreateTag,\n    RenderTag,\n    Tag,\n    TagCreator,\n    TagDOMRenderer,\n    TagMode,\n    TagScene,\n    TagSet,\n} from \"../../Component\";\nimport {\n    Transform,\n    ViewportCoords,\n} from \"../../Geo\";\nimport {\n    GLRenderStage,\n    IGLRenderHash,\n    ISize,\n    IVNodeHash,\n    RenderCamera,\n} from \"../../Render\";\nimport {IFrame} from \"../../State\";\nimport {\n    Container,\n    ISpriteAtlas,\n    Navigator,\n} from \"../../Viewer\";\n\n/**\n * @class TagComponent\n *\n * @classdesc Component for showing and editing tags with different\n * geometries composed from 2D basic image coordinates (see the\n * {@link Viewer} class documentation for more information about coordinate\n * systems).\n *\n * The `add` method is used for adding new tags or replacing\n * tags already in the set. Tags are removed by id.\n *\n * If a tag already in the set has the same\n * id as one of the tags added, the old tag will be removed and\n * the added tag will take its place.\n *\n * The tag component mode can be set to either be non interactive or\n * to be in creating mode of a certain geometry type.\n *\n * The tag properties can be updated at any time and the change will\n * be visibile immediately.\n *\n * Tags are only relevant to a single image because they are based on\n * 2D basic image coordinates. Tags related to a certain image should\n * be removed when the viewer is moved to another node.\n *\n * To retrive and use the tag component\n *\n * @example\n * ```\n * var viewer = new Mapillary.Viewer(\n *     \"<element-id>\",\n *     \"<client-id>\",\n *     \"<my key>\",\n *     { component: { tag: true } });\n *\n * var tagComponent = viewer.getComponent(\"tag\");\n * ```\n */\nexport class TagComponent extends Component<ITagConfiguration> {\n    /** @inheritdoc */\n    public static componentName: string = \"tag\";\n\n    /**\n     * Event fired when an interaction to create a geometry ends.\n     *\n     * @description A create interaction can by a geometry being created\n     * or by the creation being aborted.\n     *\n     * @event TagComponent#creategeometryend\n     * @type {TagComponent} Tag component.\n     * @example\n     * ```\n     * tagComponent.on(\"creategeometryend\", function(component) {\n     *     console.log(component);\n     * });\n     * ```\n     */\n    public static creategeometryend: string = \"creategeometryend\";\n\n    /**\n     * Event fired when an interaction to create a geometry starts.\n     *\n     * @description A create interaction starts when the first vertex\n     * is created in the geometry.\n     *\n     * @event TagComponent#creategeometrystart\n     * @type {TagComponent} Tag component.\n     * @example\n     * ```\n     * tagComponent.on(\"creategeometrystart\", function(component) {\n     *     console.log(component);\n     * });\n     * ```\n     */\n    public static creategeometrystart: string = \"creategeometrystart\";\n\n    /**\n     * Event fired when the create mode is changed.\n     *\n     * @event TagComponent#modechanged\n     * @type {TagMode} Tag mode\n     * @example\n     * ```\n     * tagComponent.on(\"modechanged\", function(mode) {\n     *     console.log(mode);\n     * });\n     * ```\n     */\n    public static modechanged: string = \"modechanged\";\n\n    /**\n     * Event fired when a geometry has been created.\n     *\n     * @event TagComponent#geometrycreated\n     * @type {Geometry} Created geometry.\n     * @example\n     * ```\n     * tagComponent.on(\"geometrycreated\", function(geometry) {\n     *     console.log(geometry);\n     * });\n     * ```\n     */\n    public static geometrycreated: string = \"geometrycreated\";\n\n    /**\n     * Event fired when the tags collection has changed.\n     *\n     * @event TagComponent#tagschanged\n     * @type {TagComponent} Tag component.\n     * @example\n     * ```\n     * tagComponent.on(\"tagschanged\", function(component) {\n     *     console.log(component.getAll());\n     * });\n     * ```\n     */\n    public static tagschanged: string = \"tagschanged\";\n\n    private _tagDomRenderer: TagDOMRenderer;\n    private _tagScene: TagScene;\n    private _tagSet: TagSet;\n    private _tagCreator: TagCreator;\n    private _viewportCoords: ViewportCoords;\n\n    private _renderTags$: Observable<RenderTag<Tag>[]>;\n    private _tagChanged$: Observable<Tag>;\n    private _renderTagGLChanged$: Observable<RenderTag<Tag>>;\n    private _createGeometryChanged$: Observable<OutlineCreateTag>;\n    private _createGLObjectsChanged$: Observable<OutlineCreateTag>;\n\n    private _creatingConfiguration$: Observable<ITagConfiguration>;\n\n    private _updateGLObjectsSubscription: Subscription;\n    private _updateTagSceneSubscription: Subscription;\n\n    private _stopCreateSubscription: Subscription;\n    private _setGLCreateTagSubscription: Subscription;\n    private _createGLObjectsChangedSubscription: Subscription;\n\n    private _handlerStopCreateSubscription: Subscription;\n    private _handlerEnablerSubscription: Subscription;\n\n    private _domSubscription: Subscription;\n    private _glSubscription: Subscription;\n\n    private _fireCreateGeometryEventSubscription: Subscription;\n    private _fireGeometryCreatedSubscription: Subscription;\n    private _fireTagsChangedSubscription: Subscription;\n\n    private _createHandlers: { [K in keyof typeof TagMode]: CreateHandlerBase };\n    private _editVertexHandler: EditVertexHandler;\n\n    /** @ignore */\n    constructor(name: string, container: Container, navigator: Navigator) {\n        super(name, container, navigator);\n\n        this._tagDomRenderer = new TagDOMRenderer();\n        this._tagScene = new TagScene();\n        this._tagSet = new TagSet();\n        this._tagCreator = new TagCreator(this, navigator);\n        this._viewportCoords = new ViewportCoords();\n\n        this._createHandlers = {\n            \"CreatePoint\": new CreatePointHandler(this, container, navigator, this._viewportCoords, this._tagCreator),\n            \"CreatePolygon\": new CreatePolygonHandler(this, container, navigator, this._viewportCoords, this._tagCreator),\n            \"CreateRect\": new CreateRectHandler(this, container, navigator, this._viewportCoords, this._tagCreator),\n            \"CreateRectDrag\": new CreateRectDragHandler(this, container, navigator, this._viewportCoords, this._tagCreator),\n            \"Default\": undefined,\n        };\n\n        this._editVertexHandler = new EditVertexHandler(this, container, navigator, this._viewportCoords, this._tagSet);\n\n        this._renderTags$ = this._tagSet.changed$.pipe(\n            map(\n                (tagSet: TagSet): RenderTag<Tag>[] => {\n                    const tags: RenderTag<Tag>[] = tagSet.getAll();\n\n                    // ensure that tags are always rendered in the same order\n                    // to avoid hover tracking problems on first resize.\n                    tags.sort(\n                        (t1: RenderTag<Tag>, t2: RenderTag<Tag>): number => {\n                            const id1: string = t1.tag.id;\n                            const id2: string = t2.tag.id;\n\n                            if (id1 < id2) {\n                                return -1;\n                            }\n\n                            if (id1 > id2) {\n                                return 1;\n                            }\n\n                            return 0;\n                        });\n\n                    return tags;\n                }),\n            share());\n\n        this._tagChanged$ = this._renderTags$.pipe(\n            switchMap(\n                (tags: RenderTag<Tag>[]): Observable<Tag> => {\n                    return observableFrom(tags).pipe(\n                        mergeMap(\n                            (tag: RenderTag<Tag>): Observable<Tag> => {\n                                return observableMerge(\n                                        tag.tag.changed$,\n                                        tag.tag.geometryChanged$);\n                            }));\n                }),\n            share());\n\n        this._renderTagGLChanged$ = this._renderTags$.pipe(\n            switchMap(\n                (tags: RenderTag<Tag>[]): Observable<RenderTag<Tag>> => {\n                    return observableFrom(tags).pipe(\n                        mergeMap(\n                            (tag: RenderTag<Tag>): Observable<RenderTag<Tag>> => {\n                                return tag.glObjectsChanged$;\n                            }));\n                }),\n            share());\n\n        this._createGeometryChanged$ = this._tagCreator.tag$.pipe(\n            switchMap(\n                (tag: OutlineCreateTag): Observable<OutlineCreateTag> => {\n                    return tag != null ?\n                        tag.geometryChanged$ :\n                        observableEmpty();\n                }),\n            share());\n\n        this._createGLObjectsChanged$ = this._tagCreator.tag$.pipe(\n            switchMap(\n                (tag: OutlineCreateTag): Observable<OutlineCreateTag> => {\n                    return tag != null ?\n                        tag.glObjectsChanged$ :\n                        observableEmpty();\n                }),\n            share());\n\n        this._creatingConfiguration$ = this._configuration$.pipe(\n            distinctUntilChanged(\n                (c1: ITagConfiguration, c2: ITagConfiguration): boolean => {\n                    return c1.mode === c2.mode;\n                },\n                (configuration: ITagConfiguration): ITagConfiguration => {\n                    return {\n                        createColor: configuration.createColor,\n                        mode: configuration.mode,\n                    };\n                }),\n            publishReplay(1),\n            refCount());\n\n        this._creatingConfiguration$\n            .subscribe(\n                (configuration: ITagConfiguration): void => {\n                    this.fire(TagComponent.modechanged, configuration.mode);\n                });\n    }\n\n    /**\n     * Add tags to the tag set or replace tags in the tag set.\n     *\n     * @description If a tag already in the set has the same\n     * id as one of the tags added, the old tag will be removed\n     * the added tag will take its place.\n     *\n     * @param {Array<Tag>} tags - Tags to add.\n     *\n     * @example ```tagComponent.add([tag1, tag2]);```\n     */\n    public add(tags: Tag[]): void {\n        if (this._activated) {\n            this._navigator.stateService.currentTransform$.pipe(\n                first())\n                .subscribe(\n                    (transform: Transform): void => {\n                        this._tagSet.add(tags, transform);\n\n                        const renderTags: RenderTag<Tag>[] = tags\n                            .map(\n                                (tag: Tag): RenderTag<Tag> => {\n                                    return this._tagSet.get(tag.id);\n                                });\n\n                        this._tagScene.add(renderTags);\n                    });\n        } else {\n            this._tagSet.addDeactivated(tags);\n        }\n    }\n\n    /**\n     * Change the current tag mode.\n     *\n     * @description Change the tag mode to one of the create modes for creating new geometries.\n     *\n     * @param {TagMode} mode - New tag mode.\n     *\n     * @fires TagComponent#modechanged\n     *\n     * @example ```tagComponent.changeMode(Mapillary.TagComponent.TagMode.CreateRect);```\n     */\n    public changeMode(mode: TagMode): void {\n        this.configure({ mode: mode });\n    }\n\n    /**\n     * Returns the tag in the tag set with the specified id, or\n     * undefined if the id matches no tag.\n     *\n     * @param {string} tagId - Id of the tag.\n     *\n     * @example ```var tag = tagComponent.get(\"tagId\");```\n     */\n    public get(tagId: string): Tag {\n        if (this._activated) {\n            const renderTag: RenderTag<Tag> = this._tagSet.get(tagId);\n            return renderTag !== undefined ? renderTag.tag : undefined;\n        } else {\n            return this._tagSet.getDeactivated(tagId);\n        }\n    }\n\n    /**\n     * Returns an array of all tags.\n     *\n     * @example ```var tags = tagComponent.getAll();```\n     */\n    public getAll(): Tag[] {\n        if (this.activated) {\n            return this._tagSet\n                .getAll()\n                .map(\n                    (renderTag: RenderTag<Tag>): Tag => {\n                        return renderTag.tag;\n                    });\n        } else {\n            return this._tagSet.getAllDeactivated();\n        }\n    }\n\n    /**\n     * Returns an array of tag ids for tags that contain the specified point.\n     *\n     * @description The pixel point must lie inside the polygon or rectangle\n     * of an added tag for the tag id to be returned. Tag ids for\n     * tags that do not have a fill will also be returned if the point is inside\n     * the geometry of the tag. Tags with point geometries can not be retrieved.\n     *\n     * No tag ids will be returned for panoramas.\n     *\n     * Notice that the pixelPoint argument requires x, y coordinates from pixel space.\n     *\n     * With this function, you can use the coordinates provided by mouse\n     * events to get information out of the tag component.\n     *\n     * If no tag at exist the pixel point, an empty array will be returned.\n     *\n     * @param {Array<number>} pixelPoint - Pixel coordinates on the viewer element.\n     * @returns {Array<string>} Ids of the tags that contain the specified pixel point.\n     *\n     * @example\n     * ```\n     * tagComponent.getTagIdsAt([100, 100])\n     *     .then((tagIds) => { console.log(tagIds); });\n     * ```\n     */\n    public getTagIdsAt(pixelPoint: number[]): when.Promise<string[]> {\n        return when.promise<string[]>((resolve: (value: string[]) => void, reject: (reason: Error) => void): void => {\n            this._container.renderService.renderCamera$.pipe(\n                first(),\n                map(\n                    (render: RenderCamera): string[] => {\n                        const viewport: number[] = this._viewportCoords\n                            .canvasToViewport(\n                                pixelPoint[0],\n                                pixelPoint[1],\n                                this._container.element);\n\n                        const ids: string[] = this._tagScene.intersectObjects(viewport, render.perspective);\n\n                        return ids;\n                    }))\n                .subscribe(\n                    (ids: string[]): void => {\n                        resolve(ids);\n                    },\n                    (error: Error): void => {\n                        reject(error);\n                    });\n        });\n    }\n\n    /**\n     * Check if a tag exist in the tag set.\n     *\n     * @param {string} tagId - Id of the tag.\n     *\n     * @example ```var tagExists = tagComponent.has(\"tagId\");```\n     */\n    public has(tagId: string): boolean {\n        return this._activated ? this._tagSet.has(tagId) : this._tagSet.hasDeactivated(tagId);\n    }\n\n    /**\n     * Remove tags with the specified ids from the tag set.\n     *\n     * @param {Array<string>} tagIds - Ids for tags to remove.\n     *\n     * @example ```tagComponent.remove([\"id-1\", \"id-2\"]);```\n     */\n    public remove(tagIds: string[]): void {\n        if (this._activated) {\n            this._tagSet.remove(tagIds);\n            this._tagScene.remove(tagIds);\n        } else {\n            this._tagSet.removeDeactivated(tagIds);\n        }\n    }\n\n    /**\n     * Remove all tags from the tag set.\n     *\n     * @example ```tagComponent.removeAll();```\n     */\n    public removeAll(): void {\n        if (this._activated) {\n            this._tagSet.removeAll();\n            this._tagScene.removeAll();\n        } else {\n            this._tagSet.removeAllDeactivated();\n        }\n    }\n\n    protected _activate(): void {\n        this._editVertexHandler.enable();\n\n        const handlerGeometryCreated$: Observable<Geometry> =\n            observableFrom<keyof typeof TagMode>(<(keyof typeof TagMode)[]>Object.keys(this._createHandlers)).pipe(\n                map(\n                    (key: keyof typeof TagMode): CreateHandlerBase => {\n                        return this._createHandlers[key];\n                    }),\n                filter(\n                    (handler: CreateHandlerBase): boolean => {\n                        return !!handler;\n                    }),\n                mergeMap(\n                    (handler: CreateHandlerBase): Observable<Geometry> => {\n                        return handler.geometryCreated$;\n                    }),\n                share());\n\n        this._fireGeometryCreatedSubscription = handlerGeometryCreated$\n            .subscribe(\n                (geometry: Geometry): void => {\n                    this.fire(TagComponent.geometrycreated, geometry);\n                });\n\n        this._fireCreateGeometryEventSubscription = this._tagCreator.tag$.pipe(\n            skipWhile(\n                (tag: OutlineCreateTag): boolean => {\n                    return tag == null;\n                }),\n            distinctUntilChanged())\n            .subscribe(\n                (tag: OutlineCreateTag): void => {\n                    const eventType: string = tag != null ?\n                        TagComponent.creategeometrystart :\n                        TagComponent.creategeometryend;\n\n                    this.fire(eventType, this);\n                });\n\n        this._handlerStopCreateSubscription = handlerGeometryCreated$\n            .subscribe(\n                (): void => {\n                    this.changeMode(TagMode.Default);\n                });\n\n        this._handlerEnablerSubscription = this._creatingConfiguration$\n            .subscribe(\n                (configuration: ITagConfiguration): void => {\n                    this._disableCreateHandlers();\n\n                    const mode: keyof typeof TagMode = <keyof typeof TagMode>TagMode[configuration.mode];\n                    const handler: CreateHandlerBase = this._createHandlers[mode];\n                    if (!!handler) {\n                        handler.enable();\n                    }\n                });\n\n        this._fireTagsChangedSubscription = this._renderTags$\n            .subscribe(\n                (tags: RenderTag<Tag>[]): void => {\n                    this.fire(TagComponent.tagschanged, this);\n                });\n\n        this._stopCreateSubscription = this._tagCreator.tag$.pipe(\n            switchMap(\n                (tag: OutlineCreateTag): Observable<void> => {\n                    return tag != null ?\n                        tag.aborted$.pipe(\n                            map((t: OutlineCreateTag): void => { return null; })) :\n                        observableEmpty();\n                }))\n            .subscribe((): void => { this.changeMode(TagMode.Default); });\n\n        this._setGLCreateTagSubscription = this._tagCreator.tag$\n            .subscribe(\n                (tag: OutlineCreateTag): void => {\n                    if (this._tagScene.hasCreateTag()) {\n                        this._tagScene.removeCreateTag();\n                    }\n\n                    if (tag != null) {\n                        this._tagScene.addCreateTag(tag);\n                    }\n                });\n\n        this._createGLObjectsChangedSubscription = this._createGLObjectsChanged$\n            .subscribe(\n                (tag: OutlineCreateTag): void => {\n                    this._tagScene.updateCreateTagObjects(tag);\n                });\n\n        this._updateGLObjectsSubscription = this._renderTagGLChanged$\n            .subscribe(\n                (tag: RenderTag<Tag>): void => {\n                    this._tagScene.updateObjects(tag);\n                });\n\n        this._updateTagSceneSubscription = this._tagChanged$\n            .subscribe(\n                (tag: Tag): void => {\n                    this._tagScene.update();\n                });\n\n        this._domSubscription = observableCombineLatest(\n                this._renderTags$.pipe(\n                    startWith([]),\n                    tap(\n                        (tags: RenderTag<Tag>[]): void => {\n                            this._container.domRenderer.render$.next({\n                                name: this._name,\n                                vnode: this._tagDomRenderer.clear(),\n                            });\n                        })),\n                this._container.renderService.renderCamera$,\n                this._container.spriteService.spriteAtlas$,\n                this._container.renderService.size$,\n                this._tagChanged$.pipe(startWith(null)),\n                observableMerge(\n                    this._tagCreator.tag$,\n                    this._createGeometryChanged$).pipe(startWith(null))).pipe(\n            map(\n                ([renderTags, rc, atlas, size, tag, ct]: [RenderTag<Tag>[], RenderCamera, ISpriteAtlas, ISize, Tag, OutlineCreateTag]):\n                    IVNodeHash => {\n                    return {\n                        name: this._name,\n                        vnode: this._tagDomRenderer.render(renderTags, ct, atlas, rc.perspective, size),\n                    };\n                }))\n            .subscribe(this._container.domRenderer.render$);\n\n        this._glSubscription = this._navigator.stateService.currentState$.pipe(\n            map(\n                (frame: IFrame): IGLRenderHash => {\n                    const tagScene: TagScene = this._tagScene;\n\n                    return {\n                        name: this._name,\n                        render: {\n                            frameId: frame.id,\n                            needsRender: tagScene.needsRender,\n                            render: tagScene.render.bind(tagScene),\n                            stage: GLRenderStage.Foreground,\n                        },\n                    };\n                }))\n            .subscribe(this._container.glRenderer.render$);\n\n        this._navigator.stateService.currentTransform$.pipe(\n            first())\n            .subscribe(\n                (transform: Transform): void => {\n                    this._tagSet.activate(transform);\n                    this._tagScene.add(this._tagSet.getAll());\n                });\n\n    }\n\n    protected _deactivate(): void {\n        this._editVertexHandler.disable();\n        this._disableCreateHandlers();\n\n        this._tagScene.clear();\n        this._tagSet.deactivate();\n\n        this._tagCreator.delete$.next(null);\n\n        this._updateGLObjectsSubscription.unsubscribe();\n        this._updateTagSceneSubscription.unsubscribe();\n\n        this._stopCreateSubscription.unsubscribe();\n        this._setGLCreateTagSubscription.unsubscribe();\n        this._createGLObjectsChangedSubscription.unsubscribe();\n\n        this._domSubscription.unsubscribe();\n        this._glSubscription.unsubscribe();\n\n        this._fireCreateGeometryEventSubscription.unsubscribe();\n        this._fireGeometryCreatedSubscription.unsubscribe();\n        this._fireTagsChangedSubscription.unsubscribe();\n\n        this._handlerStopCreateSubscription.unsubscribe();\n        this._handlerEnablerSubscription.unsubscribe();\n\n        this._container.element.classList.remove(\"component-tag-create\");\n    }\n\n    protected _getDefaultConfiguration(): ITagConfiguration {\n        return {\n            createColor: 0xFFFFFF,\n            mode: TagMode.Default,\n        };\n    }\n\n    private _disableCreateHandlers(): void {\n        const createHandlers: { [K in keyof typeof TagMode]: CreateHandlerBase } = this._createHandlers;\n        for (const key in createHandlers) {\n            if (!createHandlers.hasOwnProperty(key)) {\n                continue;\n            }\n\n            const handler: CreateHandlerBase = createHandlers[<keyof typeof TagMode>key];\n            if (!!handler) {\n                handler.disable();\n            }\n        }\n    }\n}\n\nComponentService.register(TagComponent);\nexport default TagComponent;\n",
-    "import {scan, share, withLatestFrom, map} from \"rxjs/operators\";\nimport {Observable, Subject} from \"rxjs\";\n\nimport {\n    Component,\n    ITagConfiguration,\n    OutlineCreateTag,\n    PolygonGeometry,\n    RectGeometry,\n} from \"../../Component\";\nimport {Transform} from \"../../Geo\";\nimport {Navigator} from \"../../Viewer\";\n\ninterface ICreateTagOperation {\n    (tag: OutlineCreateTag): OutlineCreateTag;\n}\n\nexport class TagCreator {\n    private _component: Component<ITagConfiguration>;\n    private _navigator: Navigator;\n\n    private _tagOperation$: Subject<ICreateTagOperation>;\n    private _tag$: Observable<OutlineCreateTag>;\n\n    private _createPolygon$: Subject<number[]>;\n    private _createRect$: Subject<number[]>;\n    private _delete$: Subject<void>;\n\n    constructor(component: Component<ITagConfiguration>, navigator: Navigator) {\n        this._component = component;\n        this._navigator = navigator;\n\n        this._tagOperation$ = new Subject<ICreateTagOperation>();\n        this._createPolygon$ = new Subject<number[]>();\n        this._createRect$ = new Subject<number[]>();\n        this._delete$ = new Subject<void>();\n\n        this._tag$ = this._tagOperation$.pipe(\n            scan(\n                (tag: OutlineCreateTag, operation: ICreateTagOperation): OutlineCreateTag => {\n                    return operation(tag);\n                },\n                null),\n            share());\n\n        this._createRect$.pipe(\n            withLatestFrom(\n                this._component.configuration$,\n                this._navigator.stateService.currentTransform$),\n            map(\n                ([coord, conf, transform]: [number[], ITagConfiguration, Transform]): ICreateTagOperation => {\n                    return (tag: OutlineCreateTag): OutlineCreateTag => {\n                        const geometry: RectGeometry = new RectGeometry([\n                            coord[0],\n                            coord[1],\n                            coord[0],\n                            coord[1],\n                        ]);\n\n                        return new OutlineCreateTag(geometry, { color: conf.createColor }, transform);\n                    };\n                }))\n            .subscribe(this._tagOperation$);\n\n        this._createPolygon$.pipe(\n            withLatestFrom(\n                this._component.configuration$,\n                this._navigator.stateService.currentTransform$),\n            map(\n                ([coord, conf, transform]: [number[], ITagConfiguration, Transform]): ICreateTagOperation => {\n                    return (tag: OutlineCreateTag): OutlineCreateTag => {\n                        const geometry: PolygonGeometry = new PolygonGeometry([\n                            [coord[0], coord[1]],\n                            [coord[0], coord[1]],\n                            [coord[0], coord[1]],\n                        ]);\n\n                        return new OutlineCreateTag(geometry, { color: conf.createColor }, transform);\n                    };\n                }))\n            .subscribe(this._tagOperation$);\n\n        this._delete$.pipe(\n            map(\n                (): ICreateTagOperation => {\n                    return (tag: OutlineCreateTag): OutlineCreateTag => {\n                        return null;\n                    };\n                }))\n            .subscribe(this._tagOperation$);\n    }\n\n    public get createRect$(): Subject<number[]> {\n        return this._createRect$;\n    }\n\n    public get createPolygon$(): Subject<number[]> {\n        return this._createPolygon$;\n    }\n\n    public get delete$(): Subject<void> {\n        return this._delete$;\n    }\n\n    public get tag$(): Observable<OutlineCreateTag> {\n        return this._tag$;\n    }\n}\n\nexport default TagCreator;\n",
-    "import * as THREE from \"three\";\nimport * as vd from \"virtual-dom\";\n\nimport {\n    OutlineCreateTag,\n    RenderTag,\n    Tag,\n} from \"../../Component\";\nimport {ISize} from \"../../Render\";\nimport {ISpriteAtlas} from \"../../Viewer\";\n\nexport class TagDOMRenderer {\n    public render(\n        tags: RenderTag<Tag>[],\n        createTag: OutlineCreateTag,\n        atlas: ISpriteAtlas,\n        camera: THREE.PerspectiveCamera,\n        size: ISize): vd.VNode {\n\n        let vNodes: vd.VNode[] = [];\n\n        for (const tag of tags) {\n            vNodes = vNodes.concat(tag.getDOMObjects(atlas, camera, size));\n        }\n\n        if (createTag != null) {\n            vNodes = vNodes.concat(createTag.getDOMObjects(camera, size));\n        }\n\n        return vd.h(\"div.TagContainer\", {}, vNodes);\n    }\n\n    public clear(): vd.VNode {\n        return vd.h(\"div\", {}, []);\n    }\n}\n",
-    "/**\n * Enumeration for tag modes\n * @enum {number}\n * @readonly\n * @description Modes for the interaction in the tag component.\n */\nexport enum TagMode {\n    /**\n     * Disables creating tags.\n     */\n    Default,\n\n    /**\n     * Create a point geometry through a click.\n     */\n    CreatePoint,\n\n    /**\n     * Create a polygon geometry through clicks.\n     */\n    CreatePolygon,\n\n    /**\n     * Create a rect geometry through clicks.\n     */\n    CreateRect,\n\n    /**\n     * Create a rect geometry through drag.\n     *\n     * @description Claims the mouse which results in mouse handlers like\n     * drag pan and scroll zoom becoming inactive.\n     */\n    CreateRectDrag,\n}\n\nexport default TagMode;\n",
+    "import * as fs from \"fs\";\nimport * as path from \"path\";\n\nimport {IShader} from \"../../Component\";\n\nexport class Shaders {\n    public static equirectangular: IShader = {\n        fragment: fs.readFileSync(path.join(__dirname, \"./equirectangular.fragment.glsl\"), \"utf8\"),\n        vertex: fs.readFileSync(path.join(__dirname, \"./equirectangular.vertex.glsl\"), \"utf8\"),\n    };\n\n    public static equirectangularCurtain: IShader = {\n        fragment: fs.readFileSync(path.join(__dirname, \"./equirectangular_curtain.fragment.glsl\"), \"utf8\"),\n        vertex: fs.readFileSync(path.join(__dirname, \"./equirectangular_curtain.vertex.glsl\"), \"utf8\"),\n    };\n\n    public static perspective: IShader = {\n        fragment: fs.readFileSync(path.join(__dirname, \"./perspective.fragment.glsl\"), \"utf8\"),\n        vertex: fs.readFileSync(path.join(__dirname, \"./perspective.vertex.glsl\"), \"utf8\"),\n    };\n\n    public static perspectiveCurtain: IShader = {\n        fragment: fs.readFileSync(path.join(__dirname, \"./perspective_curtain.fragment.glsl\"), \"utf8\"),\n        vertex: fs.readFileSync(path.join(__dirname, \"./perspective_curtain.vertex.glsl\"), \"utf8\"),\n    };\n\n    public static fisheye: IShader = {\n        fragment: fs.readFileSync(path.join(__dirname, \"./fisheye.fragment.glsl\"), \"utf8\"),\n        vertex: fs.readFileSync(path.join(__dirname, \"./fisheye.vertex.glsl\"), \"utf8\"),\n    };\n\n    public static fisheyeCurtain: IShader = {\n        fragment: fs.readFileSync(path.join(__dirname, \"./fisheye_curtain.fragment.glsl\"), \"utf8\"),\n        vertex: fs.readFileSync(path.join(__dirname, \"./fisheye_curtain.vertex.glsl\"), \"utf8\"),\n    };\n\n    public static perspectiveDistorted: IShader = {\n        fragment: fs.readFileSync(path.join(__dirname, \"./perspective_distorted.fragment.glsl\"), \"utf8\"),\n        vertex: fs.readFileSync(path.join(__dirname, \"./perspective_distorted.vertex.glsl\"), \"utf8\"),\n    };\n\n    public static perspectiveDistortedCurtain: IShader = {\n        fragment: fs.readFileSync(path.join(__dirname, \"./perspective_distorted_curtain.fragment.glsl\"), \"utf8\"),\n        vertex: fs.readFileSync(path.join(__dirname, \"./perspective_distorted_curtain.vertex.glsl\"), \"utf8\"),\n    };\n}\n",
+    "import {\n    concat as observableConcat,\n    of as observableOf,\n    zip as observableZip,\n    combineLatest as observableCombineLatest,\n    empty as observableEmpty,\n    Observable,\n    Subscription,\n    Subject,\n} from \"rxjs\";\n\nimport {\n    publishReplay,\n    pairwise,\n    catchError,\n    takeUntil,\n    publish,\n    skipWhile,\n    scan,\n    filter,\n    debounceTime,\n    startWith,\n    map,\n    switchMap,\n    withLatestFrom,\n    refCount,\n    first,\n    distinctUntilChanged,\n} from \"rxjs/operators\";\n\nimport * as THREE from \"three\";\n\nimport {\n    ISliderNodes,\n    ISliderCombination,\n    IGLRendererOperation,\n    PositionLookat,\n} from \"./interfaces/interfaces\";\n\nimport {\n    Component,\n    ComponentService,\n    ISliderConfiguration,\n    ISliderKeys,\n    SliderDOMRenderer,\n    SliderGLRenderer,\n    SliderMode,\n} from \"../../Component\";\nimport {\n    Spatial,\n    Transform,\n    ViewportCoords,\n} from \"../../Geo\";\nimport { Node } from \"../../Graph\";\nimport {\n    ICurrentState,\n    IFrame,\n    State,\n} from \"../../State\";\nimport {\n    Container,\n    ImageSize,\n    Navigator,\n} from \"../../Viewer\";\nimport {\n    GLRenderStage,\n    IGLRenderHash,\n    ISize,\n    IVNodeHash,\n    RenderCamera,\n} from \"../../Render\";\nimport {\n    IBoundingBox,\n    ImageTileLoader,\n    ImageTileStore,\n    IRegionOfInterest,\n    RegionOfInterestCalculator,\n    TextureProvider,\n} from \"../../Tiles\";\nimport {\n    Settings,\n    Urls,\n} from \"../../Utils\";\n\n/**\n * @class SliderComponent\n *\n * @classdesc Component for comparing pairs of images. Renders\n * a slider for adjusting the curtain of the first image.\n *\n * Deactivate the sequence, direction and image plane\n * components when activating the slider component to avoid\n * interfering UI elements.\n *\n * To retrive and use the slider component\n *\n * @example\n * ```\n * var viewer = new Mapillary.Viewer(\n *     \"<element-id>\",\n *     \"<client-id>\",\n *     \"<my key>\");\n *\n * viewer.deactivateComponent(\"imagePlane\");\n * viewer.deactivateComponent(\"direction\");\n * viewer.deactivateComponent(\"sequence\");\n *\n * viewer.activateComponent(\"slider\");\n *\n * var sliderComponent = viewer.getComponent(\"slider\");\n * ```\n */\nexport class SliderComponent extends Component<ISliderConfiguration> {\n    public static componentName: string = \"slider\";\n\n    private _viewportCoords: ViewportCoords;\n    private _domRenderer: SliderDOMRenderer;\n    private _imageTileLoader: ImageTileLoader;\n    private _roiCalculator: RegionOfInterestCalculator;\n    private _spatial: Spatial;\n\n    private _glRendererOperation$: Subject<IGLRendererOperation>;\n    private _glRenderer$: Observable<SliderGLRenderer>;\n    private _glRendererCreator$: Subject<void>;\n    private _glRendererDisposer$: Subject<void>;\n\n    private _setKeysSubscription: Subscription;\n\n    private _modeSubcription: Subscription;\n    private _stateSubscription: Subscription;\n    private _glRenderSubscription: Subscription;\n    private _domRenderSubscription: Subscription;\n    private _moveSubscription: Subscription;\n    private _updateCurtainSubscription: Subscription;\n    private _waitSubscription: Subscription;\n\n    private _textureProviderSubscription: Subscription;\n    private _setTextureProviderSubscription: Subscription;\n    private _setTileSizeSubscription: Subscription;\n    private _abortTextureProviderSubscription: Subscription;\n    private _setRegionOfInterestSubscription: Subscription;\n    private _hasTextureSubscription: Subscription;\n    private _updateBackgroundSubscription: Subscription;\n    private _updateTextureImageSubscription: Subscription;\n\n    private _textureProviderSubscriptionPrev: Subscription;\n    private _setTextureProviderSubscriptionPrev: Subscription;\n    private _setTileSizeSubscriptionPrev: Subscription;\n    private _abortTextureProviderSubscriptionPrev: Subscription;\n    private _setRegionOfInterestSubscriptionPrev: Subscription;\n    private _hasTextureSubscriptionPrev: Subscription;\n    private _updateBackgroundSubscriptionPrev: Subscription;\n    private _updateTextureImageSubscriptionPrev: Subscription;\n\n    /** @ignore */\n    constructor (name: string, container: Container, navigator: Navigator, viewportCoords?: ViewportCoords) {\n        super(name, container, navigator);\n\n        this._viewportCoords = !!viewportCoords ? viewportCoords : new ViewportCoords();\n        this._domRenderer = new SliderDOMRenderer(container);\n        this._imageTileLoader = new ImageTileLoader(Urls.tileScheme, Urls.tileDomain, Urls.origin);\n        this._roiCalculator = new RegionOfInterestCalculator();\n        this._spatial = new Spatial();\n\n        this._glRendererOperation$ = new Subject<IGLRendererOperation>();\n        this._glRendererCreator$ = new Subject<void>();\n        this._glRendererDisposer$ = new Subject<void>();\n\n        this._glRenderer$ = this._glRendererOperation$.pipe(\n            scan(\n                (glRenderer: SliderGLRenderer, operation: IGLRendererOperation): SliderGLRenderer => {\n                    return operation(glRenderer);\n                },\n                null),\n            filter(\n                (glRenderer: SliderGLRenderer): boolean => {\n                    return glRenderer != null;\n                }),\n            distinctUntilChanged(\n                undefined,\n                (glRenderer: SliderGLRenderer): number => {\n                    return glRenderer.frameId;\n                }));\n\n        this._glRendererCreator$.pipe(\n            map(\n                (): IGLRendererOperation => {\n                    return (glRenderer: SliderGLRenderer): SliderGLRenderer => {\n                        if (glRenderer != null) {\n                            throw new Error(\"Multiple slider states can not be created at the same time\");\n                        }\n\n                        return new SliderGLRenderer();\n                    };\n                }))\n            .subscribe(this._glRendererOperation$);\n\n        this._glRendererDisposer$.pipe(\n            map(\n                (): IGLRendererOperation => {\n                    return (glRenderer: SliderGLRenderer): SliderGLRenderer => {\n                        glRenderer.dispose();\n\n                        return null;\n                    };\n                }))\n            .subscribe(this._glRendererOperation$);\n    }\n\n    /**\n     * Set the initial position.\n     *\n     * @description Configures the intial position of the slider.\n     * The inital position value will be used when the component\n     * is activated.\n     *\n     * @param {number} initialPosition - Initial slider position.\n     */\n    public setInitialPosition(initialPosition: number): void {\n        this.configure({ initialPosition: initialPosition });\n    }\n\n    /**\n     * Set the image keys.\n     *\n     * @description Configures the component to show the image\n     * planes for the supplied image keys.\n     *\n     * @param {ISliderKeys} keys - Slider keys object specifying\n     * the images to be shown in the foreground and the background.\n     */\n    public setKeys(keys: ISliderKeys): void {\n        this.configure({ keys: keys });\n    }\n\n    /**\n     * Set the slider mode.\n     *\n     * @description Configures the mode for transitions between\n     * image pairs.\n     *\n     * @param {SliderMode} mode - Slider mode to be set.\n     */\n    public setSliderMode(mode: SliderMode): void {\n        this.configure({ mode: mode });\n    }\n\n    /**\n     * Set the value controlling if the slider is visible.\n     *\n     * @param {boolean} sliderVisible - Value indicating if\n     * the slider should be visible or not.\n     */\n    public setSliderVisible(sliderVisible: boolean): void {\n        this.configure({ sliderVisible: sliderVisible });\n    }\n\n    protected _activate(): void {\n        this._modeSubcription = this._domRenderer.mode$\n            .subscribe(\n                (mode: SliderMode): void => {\n                    this.setSliderMode(mode);\n                });\n\n        this._glRenderSubscription = this._glRenderer$.pipe(\n            map(\n                (glRenderer: SliderGLRenderer): IGLRenderHash => {\n                    let renderHash: IGLRenderHash = {\n                        name: this._name,\n                        render: {\n                            frameId: glRenderer.frameId,\n                            needsRender: glRenderer.needsRender,\n                            render: glRenderer.render.bind(glRenderer),\n                            stage: GLRenderStage.Background,\n                        },\n                    };\n\n                    return renderHash;\n                }))\n            .subscribe(this._container.glRenderer.render$);\n\n        const position$: Observable<number> = observableConcat(\n            this.configuration$.pipe(\n                map(\n                    (configuration: ISliderConfiguration): number => {\n                        return configuration.initialPosition != null ?\n                            configuration.initialPosition : 1;\n                    }),\n                first()),\n            this._domRenderer.position$);\n\n        const mode$: Observable<SliderMode> = this.configuration$.pipe(\n            map(\n                (configuration: ISliderConfiguration): SliderMode => {\n                    return configuration.mode;\n                }),\n            distinctUntilChanged());\n\n        const motionless$: Observable<boolean> = this._navigator.stateService.currentState$.pipe(\n            map(\n                (frame: IFrame): boolean => {\n                    return frame.state.motionless;\n                }),\n            distinctUntilChanged());\n\n        const fullPano$: Observable<boolean> = this._navigator.stateService.currentState$.pipe(\n            map(\n                (frame: IFrame): boolean => {\n                    return frame.state.currentNode.fullPano;\n                }),\n            distinctUntilChanged());\n\n        const sliderVisible$: Observable<boolean> = observableCombineLatest(\n                this._configuration$.pipe(\n                    map(\n                        (configuration: ISliderConfiguration): boolean => {\n                            return configuration.sliderVisible;\n                        })),\n                this._navigator.stateService.currentState$.pipe(\n                    map(\n                        (frame: IFrame): boolean => {\n                            return !(frame.state.currentNode == null ||\n                                frame.state.previousNode == null ||\n                                (frame.state.currentNode.pano && !frame.state.currentNode.fullPano) ||\n                                (frame.state.previousNode.pano && !frame.state.previousNode.fullPano) ||\n                                (frame.state.currentNode.fullPano && !frame.state.previousNode.fullPano));\n                        }),\n                    distinctUntilChanged())).pipe(\n            map(\n                ([sliderVisible, enabledState]: [boolean, boolean]): boolean => {\n                    return sliderVisible && enabledState;\n                }),\n            distinctUntilChanged());\n\n        this._waitSubscription = observableCombineLatest(\n                mode$,\n                motionless$,\n                fullPano$,\n                sliderVisible$).pipe(\n            withLatestFrom(this._navigator.stateService.state$))\n            .subscribe(\n                ([[mode, motionless, fullPano, sliderVisible], state]: [[SliderMode, boolean, boolean, boolean], State]): void => {\n                    const interactive: boolean = sliderVisible &&\n                        (motionless || mode === SliderMode.Stationary || fullPano);\n\n                    if (interactive && state !== State.WaitingInteractively) {\n                        this._navigator.stateService.waitInteractively();\n                    } else if (!interactive && state !== State.Waiting) {\n                        this._navigator.stateService.wait();\n                    }\n                });\n\n        this._moveSubscription = observableCombineLatest(\n                position$,\n                mode$,\n                motionless$,\n                fullPano$,\n                sliderVisible$)\n            .subscribe(\n                ([position, mode, motionless, fullPano, sliderVisible]: [number, SliderMode, boolean, boolean, boolean]): void => {\n                    if (motionless || mode === SliderMode.Stationary || fullPano) {\n                        this._navigator.stateService.moveTo(1);\n                    } else {\n                        this._navigator.stateService.moveTo(position);\n                    }\n                });\n\n        this._domRenderSubscription = observableCombineLatest(\n                position$,\n                mode$,\n                motionless$,\n                fullPano$,\n                sliderVisible$,\n                this._container.renderService.size$).pipe(\n            map(\n                ([position, mode, motionless, fullPano, sliderVisible, size]:\n                    [number, SliderMode, boolean, boolean, boolean, ISize]): IVNodeHash => {\n                    return {\n                        name: this._name,\n                        vnode: this._domRenderer.render(position, mode, motionless, fullPano, sliderVisible),\n                    };\n                }))\n            .subscribe(this._container.domRenderer.render$);\n\n        this._glRendererCreator$.next(null);\n\n        this._updateCurtainSubscription = observableCombineLatest(\n                position$,\n                fullPano$,\n                sliderVisible$,\n                this._container.renderService.renderCamera$,\n                this._navigator.stateService.currentTransform$).pipe(\n            map(\n                ([position, fullPano, visible, render, transform]: [number, boolean, boolean, RenderCamera, Transform]): number => {\n                    if (!fullPano) {\n                        return visible ? position : 1;\n                    }\n\n                    const basicMin: number[] = this._viewportCoords.viewportToBasic(-1.15, 0, transform, render.perspective);\n                    const basicMax: number[] = this._viewportCoords.viewportToBasic(1.15, 0, transform, render.perspective);\n\n                    const shiftedMax: number = basicMax[0] < basicMin[0] ? basicMax[0] + 1 : basicMax[0];\n                    const basicPosition: number = basicMin[0] + position * (shiftedMax - basicMin[0]);\n\n                    return basicPosition > 1 ? basicPosition - 1 : basicPosition;\n                }),\n            map(\n                (position: number): IGLRendererOperation => {\n                    return (glRenderer: SliderGLRenderer): SliderGLRenderer => {\n                        glRenderer.updateCurtain(position);\n\n                        return glRenderer;\n                    };\n                }))\n            .subscribe(this._glRendererOperation$);\n\n        this._stateSubscription = observableCombineLatest(\n                this._navigator.stateService.currentState$,\n                mode$).pipe(\n            map(\n                ([frame, mode]: [IFrame, SliderMode]): IGLRendererOperation => {\n                    return (glRenderer: SliderGLRenderer): SliderGLRenderer => {\n                        glRenderer.update(frame, mode);\n\n                        return glRenderer;\n                    };\n                }))\n            .subscribe(this._glRendererOperation$);\n\n        this._setKeysSubscription = this._configuration$.pipe(\n            filter(\n                (configuration: ISliderConfiguration): boolean => {\n                    return configuration.keys != null;\n                }),\n            switchMap(\n                (configuration: ISliderConfiguration): Observable<ISliderCombination> => {\n                    return observableZip(\n                            observableZip(\n                                this._catchCacheNode$(configuration.keys.background),\n                                this._catchCacheNode$(configuration.keys.foreground)).pipe(\n                            map(\n                                (nodes: [Node, Node]): ISliderNodes => {\n                                    return { background: nodes[0], foreground: nodes[1] };\n                                })),\n                            this._navigator.stateService.currentState$.pipe(first())).pipe(\n                        map(\n                            (nf: [ISliderNodes, IFrame]): ISliderCombination => {\n                                return { nodes: nf[0], state: nf[1].state };\n                            }));\n                }))\n            .subscribe(\n                (co: ISliderCombination): void => {\n                    if (co.state.currentNode != null &&\n                        co.state.previousNode != null &&\n                        co.state.currentNode.key === co.nodes.foreground.key &&\n                        co.state.previousNode.key === co.nodes.background.key) {\n                        return;\n                    }\n\n                    if (co.state.currentNode.key === co.nodes.background.key) {\n                        this._navigator.stateService.setNodes([co.nodes.foreground]);\n                        return;\n                    }\n\n                    if (co.state.currentNode.key === co.nodes.foreground.key &&\n                        co.state.trajectory.length === 1) {\n                        this._navigator.stateService.prependNodes([co.nodes.background]);\n                        return;\n                    }\n\n                    this._navigator.stateService.setNodes([co.nodes.background]);\n                    this._navigator.stateService.setNodes([co.nodes.foreground]);\n                },\n                (e: Error): void => {\n                    console.error(e);\n                });\n\n        let previousNode$: Observable<Node> = this._navigator.stateService.currentState$.pipe(\n            map(\n                (frame: IFrame): Node => {\n                    return frame.state.previousNode;\n                }),\n            filter(\n                (node: Node): boolean => {\n                    return node != null;\n                }),\n            distinctUntilChanged(\n                undefined,\n                (node: Node): string => {\n                    return node.key;\n                }));\n\n        const textureProvider$: Observable<TextureProvider> = this._navigator.stateService.currentState$.pipe(\n            distinctUntilChanged(\n                undefined,\n                (frame: IFrame): string => {\n                    return frame.state.currentNode.key;\n                }),\n            withLatestFrom(\n                this._container.glRenderer.webGLRenderer$,\n                this._container.renderService.size$),\n            map(\n                ([frame, renderer, size]: [IFrame, THREE.WebGLRenderer, ISize]): TextureProvider => {\n                    const state: ICurrentState = frame.state;\n                    const viewportSize: number = Math.max(size.width, size.height);\n\n                    const currentNode: Node = state.currentNode;\n                    const currentTransform: Transform = state.currentTransform;\n                    const tileSize: number = viewportSize > 2048 ? 2048 : viewportSize > 1024 ? 1024 : 512;\n\n                    return new TextureProvider(\n                        currentNode.key,\n                        currentTransform.basicWidth,\n                        currentTransform.basicHeight,\n                        tileSize,\n                        currentNode.image,\n                        this._imageTileLoader,\n                        new ImageTileStore(),\n                        renderer);\n                }),\n            publishReplay(1),\n            refCount());\n\n        this._textureProviderSubscription = textureProvider$.subscribe(() => { /*noop*/ });\n\n        this._setTextureProviderSubscription = textureProvider$.pipe(\n            map(\n                (provider: TextureProvider): IGLRendererOperation => {\n                    return (renderer: SliderGLRenderer): SliderGLRenderer => {\n                        renderer.setTextureProvider(provider.key, provider);\n\n                        return renderer;\n                    };\n                }))\n            .subscribe(this._glRendererOperation$);\n\n        this._setTileSizeSubscription = this._container.renderService.size$.pipe(\n            switchMap(\n                (size: ISize): Observable<[TextureProvider, ISize]> => {\n                    return observableCombineLatest(\n                            textureProvider$,\n                            observableOf<ISize>(size)).pipe(\n                        first());\n                }))\n            .subscribe(\n                ([provider, size]: [TextureProvider, ISize]): void => {\n                    let viewportSize: number = Math.max(size.width, size.height);\n                    let tileSize: number = viewportSize > 2048 ? 2048 : viewportSize > 1024 ? 1024 : 512;\n\n                    provider.setTileSize(tileSize);\n                });\n\n        this._abortTextureProviderSubscription = textureProvider$.pipe(\n            pairwise())\n            .subscribe(\n                (pair: [TextureProvider, TextureProvider]): void => {\n                    let previous: TextureProvider = pair[0];\n                    previous.abort();\n                });\n\n        let roiTrigger$: Observable<[RenderCamera, ISize, Transform]> = observableCombineLatest(\n                this._container.renderService.renderCameraFrame$,\n                this._container.renderService.size$.pipe(debounceTime(250))).pipe(\n            map(\n                ([camera, size]: [RenderCamera, ISize]): PositionLookat => {\n                    return [\n                        camera.camera.position.clone(),\n                        camera.camera.lookat.clone(),\n                        camera.zoom.valueOf(),\n                        size.height.valueOf(),\n                        size.width.valueOf()];\n                }),\n            pairwise(),\n            skipWhile(\n                (pls: [PositionLookat, PositionLookat]): boolean => {\n                    return pls[1][2] - pls[0][2] < 0 || pls[1][2] === 0;\n                }),\n            map(\n                (pls: [PositionLookat, PositionLookat]): boolean => {\n                    let samePosition: boolean = pls[0][0].equals(pls[1][0]);\n                    let sameLookat: boolean = pls[0][1].equals(pls[1][1]);\n                    let sameZoom: boolean = pls[0][2] === pls[1][2];\n                    let sameHeight: boolean = pls[0][3] === pls[1][3];\n                    let sameWidth: boolean = pls[0][4] === pls[1][4];\n\n                    return samePosition && sameLookat && sameZoom && sameHeight && sameWidth;\n                }),\n            distinctUntilChanged(),\n            filter(\n                (stalled: boolean): boolean => {\n                    return stalled;\n                }),\n            switchMap(\n                (stalled: boolean): Observable<RenderCamera> => {\n                    return this._container.renderService.renderCameraFrame$.pipe(\n                        first());\n                }),\n            withLatestFrom(\n                this._container.renderService.size$,\n                this._navigator.stateService.currentTransform$));\n\n        this._setRegionOfInterestSubscription = textureProvider$.pipe(\n            switchMap(\n                (provider: TextureProvider): Observable<[IRegionOfInterest, TextureProvider]> => {\n                    return roiTrigger$.pipe(\n                        map(\n                            ([camera, size, transform]: [RenderCamera, ISize, Transform]):\n                            [IRegionOfInterest, TextureProvider] => {\n                                return [\n                                    this._roiCalculator.computeRegionOfInterest(camera, size, transform),\n                                    provider,\n                                ];\n                            }));\n                }),\n            filter(\n                (args: [IRegionOfInterest, TextureProvider]): boolean => {\n                    return !args[1].disposed;\n                }))\n            .subscribe(\n                (args: [IRegionOfInterest, TextureProvider]): void => {\n                    let roi: IRegionOfInterest = args[0];\n                    let provider: TextureProvider = args[1];\n\n                    provider.setRegionOfInterest(roi);\n                });\n\n        let hasTexture$: Observable<boolean> = textureProvider$.pipe(\n            switchMap(\n                (provider: TextureProvider): Observable<boolean> => {\n                    return provider.hasTexture$;\n                }),\n            startWith(false),\n            publishReplay(1),\n            refCount());\n\n        this._hasTextureSubscription = hasTexture$.subscribe(() => { /*noop*/ });\n\n        let nodeImage$: Observable<[HTMLImageElement, Node]> = this._navigator.stateService.currentState$.pipe(\n            filter(\n                (frame: IFrame): boolean => {\n                    return frame.state.nodesAhead === 0;\n                }),\n            map(\n                (frame: IFrame): Node => {\n                    return frame.state.currentNode;\n                }),\n            distinctUntilChanged(\n                undefined,\n                (node: Node): string => {\n                    return node.key;\n                }),\n            debounceTime(1000),\n            withLatestFrom(hasTexture$),\n            filter(\n                (args: [Node, boolean]): boolean => {\n                    return !args[1];\n                }),\n            map(\n                (args: [Node, boolean]): Node => {\n                    return args[0];\n                }),\n            filter(\n                (node: Node): boolean => {\n                    return node.pano ?\n                        Settings.maxImageSize > Settings.basePanoramaSize :\n                        Settings.maxImageSize > Settings.baseImageSize;\n                }),\n            switchMap(\n                (node: Node): Observable<[HTMLImageElement, Node]> => {\n                    let baseImageSize: ImageSize = node.pano ?\n                        Settings.basePanoramaSize :\n                        Settings.baseImageSize;\n\n                    if (Math.max(node.image.width, node.image.height) > baseImageSize) {\n                        return observableEmpty();\n                    }\n\n                    let image$: Observable<[HTMLImageElement, Node]> = node\n                        .cacheImage$(Settings.maxImageSize).pipe(\n                            map(\n                                (n: Node): [HTMLImageElement, Node] => {\n                                    return [n.image, n];\n                                }));\n\n                    return image$.pipe(\n                        takeUntil(\n                            hasTexture$.pipe(\n                                filter(\n                                    (hasTexture: boolean): boolean => {\n\n                                        return hasTexture;\n                                    }))),\n                        catchError(\n                            (error: Error, caught: Observable<[HTMLImageElement, Node]>):\n                                Observable<[HTMLImageElement, Node]> => {\n                                console.error(`Failed to fetch high res image (${node.key})`, error);\n\n                                return observableEmpty();\n                            }));\n                })).pipe(\n            publish(),\n            refCount());\n\n        this._updateBackgroundSubscription = nodeImage$.pipe(\n            withLatestFrom(textureProvider$))\n            .subscribe(\n                (args: [[HTMLImageElement, Node], TextureProvider]): void => {\n                    if (args[0][1].key !== args[1].key ||\n                        args[1].disposed) {\n                        return;\n                    }\n\n                    args[1].updateBackground(args[0][0]);\n                });\n\n        this._updateTextureImageSubscription = nodeImage$.pipe(\n            map(\n                (imn: [HTMLImageElement, Node]): IGLRendererOperation => {\n                    return (renderer: SliderGLRenderer): SliderGLRenderer => {\n                        renderer.updateTextureImage(imn[0], imn[1]);\n\n                        return renderer;\n                    };\n                }))\n            .subscribe(this._glRendererOperation$);\n\n        const textureProviderPrev$: Observable<TextureProvider> = this._navigator.stateService.currentState$.pipe(\n            filter(\n                (frame: IFrame): boolean => {\n                    return !!frame.state.previousNode;\n                }),\n            distinctUntilChanged(\n                undefined,\n                (frame: IFrame): string => {\n                    return frame.state.previousNode.key;\n                }),\n            withLatestFrom(\n                this._container.glRenderer.webGLRenderer$,\n                this._container.renderService.size$),\n            map(\n                ([frame, renderer, size]: [IFrame, THREE.WebGLRenderer, ISize]): TextureProvider => {\n                    const state: ICurrentState = frame.state;\n                    const viewportSize: number = Math.max(size.width, size.height);\n\n                    const previousNode: Node = state.previousNode;\n                    const previousTransform: Transform = state.previousTransform;\n                    const tileSize: number = viewportSize > 2048 ? 2048 : viewportSize > 1024 ? 1024 : 512;\n\n                    return new TextureProvider(\n                        previousNode.key,\n                        previousTransform.basicWidth,\n                        previousTransform.basicHeight,\n                        tileSize,\n                        previousNode.image,\n                        this._imageTileLoader,\n                        new ImageTileStore(),\n                        renderer);\n                }),\n            publishReplay(1),\n            refCount());\n\n        this._textureProviderSubscriptionPrev = textureProviderPrev$.subscribe(() => { /*noop*/ });\n\n        this._setTextureProviderSubscriptionPrev = textureProviderPrev$.pipe(\n            map(\n                (provider: TextureProvider): IGLRendererOperation => {\n                    return (renderer: SliderGLRenderer): SliderGLRenderer => {\n                        renderer.setTextureProviderPrev(provider.key, provider);\n\n                        return renderer;\n                    };\n                }))\n            .subscribe(this._glRendererOperation$);\n\n        this._setTileSizeSubscriptionPrev = this._container.renderService.size$.pipe(\n            switchMap(\n                (size: ISize): Observable<[TextureProvider, ISize]> => {\n                    return observableCombineLatest(\n                            textureProviderPrev$,\n                            observableOf<ISize>(size)).pipe(\n                        first());\n                }))\n            .subscribe(\n                ([provider, size]: [TextureProvider, ISize]): void => {\n                    let viewportSize: number = Math.max(size.width, size.height);\n                    let tileSize: number = viewportSize > 2048 ? 2048 : viewportSize > 1024 ? 1024 : 512;\n\n                    provider.setTileSize(tileSize);\n                });\n\n        this._abortTextureProviderSubscriptionPrev = textureProviderPrev$.pipe(\n            pairwise())\n            .subscribe(\n                (pair: [TextureProvider, TextureProvider]): void => {\n                    let previous: TextureProvider = pair[0];\n                    previous.abort();\n                });\n\n        let roiTriggerPrev$: Observable<[RenderCamera, ISize, Transform]> = observableCombineLatest(\n                this._container.renderService.renderCameraFrame$,\n                this._container.renderService.size$.pipe(debounceTime(250))).pipe(\n            map(\n                ([camera, size]: [RenderCamera, ISize]): PositionLookat => {\n                    return [\n                        camera.camera.position.clone(),\n                        camera.camera.lookat.clone(),\n                        camera.zoom.valueOf(),\n                        size.height.valueOf(),\n                        size.width.valueOf()];\n                }),\n            pairwise(),\n            skipWhile(\n                (pls: [PositionLookat, PositionLookat]): boolean => {\n                    return pls[1][2] - pls[0][2] < 0 || pls[1][2] === 0;\n                }),\n            map(\n                (pls: [PositionLookat, PositionLookat]): boolean => {\n                    let samePosition: boolean = pls[0][0].equals(pls[1][0]);\n                    let sameLookat: boolean = pls[0][1].equals(pls[1][1]);\n                    let sameZoom: boolean = pls[0][2] === pls[1][2];\n                    let sameHeight: boolean = pls[0][3] === pls[1][3];\n                    let sameWidth: boolean = pls[0][4] === pls[1][4];\n\n                    return samePosition && sameLookat && sameZoom && sameHeight && sameWidth;\n                }),\n            distinctUntilChanged(),\n            filter(\n                (stalled: boolean): boolean => {\n                    return stalled;\n                }),\n            switchMap(\n                (stalled: boolean): Observable<RenderCamera> => {\n                    return this._container.renderService.renderCameraFrame$.pipe(\n                        first());\n                }),\n            withLatestFrom(\n                this._container.renderService.size$,\n                this._navigator.stateService.currentTransform$));\n\n        this._setRegionOfInterestSubscriptionPrev = textureProviderPrev$.pipe(\n            switchMap(\n                (provider: TextureProvider): Observable<[IRegionOfInterest, TextureProvider]> => {\n                    return roiTriggerPrev$.pipe(\n                        map(\n                            ([camera, size, transform]: [RenderCamera, ISize, Transform]):\n                            [IRegionOfInterest, TextureProvider] => {\n                                return [\n                                    this._roiCalculator.computeRegionOfInterest(camera, size, transform),\n                                    provider,\n                                ];\n                            }));\n                }),\n            filter(\n                (args: [IRegionOfInterest, TextureProvider]): boolean => {\n                    return !args[1].disposed;\n                }),\n            withLatestFrom(this._navigator.stateService.currentState$))\n            .subscribe(\n                ([[roi, provider], frame]: [[IRegionOfInterest, TextureProvider], IFrame]): void => {\n                    let shiftedRoi: IRegionOfInterest = null;\n\n                    if (frame.state.previousNode.fullPano) {\n                        if (frame.state.currentNode.fullPano) {\n                            const currentViewingDirection: THREE.Vector3 =\n                                this._spatial.viewingDirection(frame.state.currentNode.rotation);\n                            const previousViewingDirection: THREE.Vector3 =\n                                this._spatial.viewingDirection(frame.state.previousNode.rotation);\n\n                            const directionDiff: number = this._spatial.angleBetweenVector2(\n                                currentViewingDirection.x,\n                                currentViewingDirection.y,\n                                previousViewingDirection.x,\n                                previousViewingDirection.y);\n\n                            const shift: number = directionDiff / (2 * Math.PI);\n\n                            const bbox: IBoundingBox = {\n                                maxX: this._spatial.wrap(roi.bbox.maxX + shift, 0, 1),\n                                maxY: roi.bbox.maxY,\n                                minX: this._spatial.wrap(roi.bbox.minX + shift, 0, 1),\n                                minY: roi.bbox.minY,\n                            };\n\n                            shiftedRoi = {\n                                bbox: bbox,\n                                pixelHeight: roi.pixelHeight,\n                                pixelWidth: roi.pixelWidth,\n                            };\n                        } else {\n                            const currentViewingDirection: THREE.Vector3 =\n                                this._spatial.viewingDirection(frame.state.currentNode.rotation);\n                            const previousViewingDirection: THREE.Vector3 =\n                                this._spatial.viewingDirection(frame.state.previousNode.rotation);\n\n                            const directionDiff: number = this._spatial.angleBetweenVector2(\n                                currentViewingDirection.x,\n                                currentViewingDirection.y,\n                                previousViewingDirection.x,\n                                previousViewingDirection.y);\n\n                            const shiftX: number = directionDiff / (2 * Math.PI);\n\n                            const a1: number = this._spatial.angleToPlane(currentViewingDirection.toArray(), [0, 0, 1]);\n                            const a2: number = this._spatial.angleToPlane(previousViewingDirection.toArray(), [0, 0, 1]);\n\n                            const shiftY: number = (a2 - a1) / (2 * Math.PI);\n\n                            const currentTransform: Transform = frame.state.currentTransform;\n                            const size: number = Math.max(currentTransform.basicWidth, currentTransform.basicHeight);\n                            const hFov: number = size > 0 ?\n                                2 * Math.atan(0.5 * currentTransform.basicWidth / (size * currentTransform.focal)) :\n                                Math.PI / 3;\n                            const vFov: number = size > 0 ?\n                                2 * Math.atan(0.5 * currentTransform.basicHeight / (size * currentTransform.focal)) :\n                                Math.PI / 3;\n\n                            const spanningWidth: number = hFov / (2 * Math.PI);\n                            const spanningHeight: number = vFov / Math.PI;\n\n                            const basicWidth: number = (roi.bbox.maxX - roi.bbox.minX) * spanningWidth;\n                            const basicHeight: number = (roi.bbox.maxY - roi.bbox.minY) * spanningHeight;\n\n                            const pixelWidth: number = roi.pixelWidth * spanningWidth;\n                            const pixelHeight: number = roi.pixelHeight * spanningHeight;\n\n                            const zoomShiftX: number = (roi.bbox.minX + roi.bbox.maxX) / 2 - 0.5;\n                            const zoomShiftY: number = (roi.bbox.minY + roi.bbox.maxY) / 2 - 0.5;\n\n                            const minX: number = 0.5 + shiftX + spanningWidth * zoomShiftX - basicWidth / 2;\n                            const maxX: number = 0.5 + shiftX + spanningWidth * zoomShiftX + basicWidth / 2;\n                            const minY: number = 0.5 + shiftY + spanningHeight * zoomShiftY - basicHeight / 2;\n                            const maxY: number = 0.5 + shiftY + spanningHeight * zoomShiftY + basicHeight / 2;\n\n                            const bbox: IBoundingBox = {\n                                maxX: this._spatial.wrap(maxX, 0, 1),\n                                maxY: maxY,\n                                minX: this._spatial.wrap(minX, 0, 1),\n                                minY: minY,\n                            };\n\n                            shiftedRoi = {\n                                bbox: bbox,\n                                pixelHeight: pixelHeight,\n                                pixelWidth: pixelWidth,\n                            };\n                        }\n                    } else {\n                        const currentBasicAspect: number = frame.state.currentTransform.basicAspect;\n                        const previousBasicAspect: number = frame.state.previousTransform.basicAspect;\n\n                        const [[cornerMinX, cornerMinY], [cornerMaxX, cornerMaxY]]: number[][] =\n                            this._getBasicCorners(currentBasicAspect, previousBasicAspect);\n\n                        const basicWidth: number = cornerMaxX - cornerMinX;\n                        const basicHeight: number = cornerMaxY - cornerMinY;\n\n                        const pixelWidth: number = roi.pixelWidth / basicWidth;\n                        const pixelHeight: number = roi.pixelHeight / basicHeight;\n\n                        const minX: number = (basicWidth - 1) / (2 * basicWidth) + roi.bbox.minX / basicWidth;\n                        const maxX: number = (basicWidth - 1) / (2 * basicWidth) + roi.bbox.maxX / basicWidth;\n                        const minY: number = (basicHeight - 1) / (2 * basicHeight) + roi.bbox.minY / basicHeight;\n                        const maxY: number = (basicHeight - 1) / (2 * basicHeight) + roi.bbox.maxY / basicHeight;\n\n                        const bbox: IBoundingBox = {\n                            maxX: maxX,\n                            maxY: maxY,\n                            minX: minX,\n                            minY: minY,\n                        };\n\n                        this._clipBoundingBox(bbox);\n\n                        shiftedRoi = {\n                            bbox: bbox,\n                            pixelHeight: pixelHeight,\n                            pixelWidth: pixelWidth,\n                        };\n                    }\n\n                    provider.setRegionOfInterest(shiftedRoi);\n                });\n\n        let hasTexturePrev$: Observable<boolean> = textureProviderPrev$.pipe(\n            switchMap(\n                (provider: TextureProvider): Observable<boolean> => {\n                    return provider.hasTexture$;\n                }),\n            startWith(false),\n            publishReplay(1),\n            refCount());\n\n        this._hasTextureSubscriptionPrev = hasTexturePrev$.subscribe(() => { /*noop*/ });\n\n        let nodeImagePrev$: Observable<[HTMLImageElement, Node]> = this._navigator.stateService.currentState$.pipe(\n            filter(\n                (frame: IFrame): boolean => {\n                    return frame.state.nodesAhead === 0 && !!frame.state.previousNode;\n                }),\n            map(\n                (frame: IFrame): Node => {\n                    return frame.state.previousNode;\n                }),\n            distinctUntilChanged(\n                undefined,\n                (node: Node): string => {\n                    return node.key;\n                }),\n            debounceTime(1000),\n            withLatestFrom(hasTexturePrev$),\n            filter(\n                (args: [Node, boolean]): boolean => {\n                    return !args[1];\n                }),\n            map(\n                (args: [Node, boolean]): Node => {\n                    return args[0];\n                }),\n            filter(\n                (node: Node): boolean => {\n                    return node.pano ?\n                        Settings.maxImageSize > Settings.basePanoramaSize :\n                        Settings.maxImageSize > Settings.baseImageSize;\n                }),\n            switchMap(\n                (node: Node): Observable<[HTMLImageElement, Node]> => {\n                    let baseImageSize: ImageSize = node.pano ?\n                        Settings.basePanoramaSize :\n                        Settings.baseImageSize;\n\n                    if (Math.max(node.image.width, node.image.height) > baseImageSize) {\n                        return observableEmpty();\n                    }\n\n                    let image$: Observable<[HTMLImageElement, Node]> = node\n                        .cacheImage$(Settings.maxImageSize).pipe(\n                            map(\n                                (n: Node): [HTMLImageElement, Node] => {\n                                    return [n.image, n];\n                                }));\n\n                    return image$.pipe(\n                        takeUntil(\n                            hasTexturePrev$.pipe(\n                                filter(\n                                    (hasTexture: boolean): boolean => {\n\n                                        return hasTexture;\n                                    }))),\n                        catchError(\n                            (error: Error, caught: Observable<[HTMLImageElement, Node]>):\n                                Observable<[HTMLImageElement, Node]> => {\n                                console.error(`Failed to fetch high res image (${node.key})`, error);\n\n                                return observableEmpty();\n                            }));\n                })).pipe(\n            publish(),\n            refCount());\n\n        this._updateBackgroundSubscriptionPrev = nodeImagePrev$.pipe(\n            withLatestFrom(textureProviderPrev$))\n            .subscribe(\n                (args: [[HTMLImageElement, Node], TextureProvider]): void => {\n                    if (args[0][1].key !== args[1].key ||\n                        args[1].disposed) {\n                        return;\n                    }\n\n                    args[1].updateBackground(args[0][0]);\n                });\n\n        this._updateTextureImageSubscriptionPrev = nodeImagePrev$.pipe(\n            map(\n                (imn: [HTMLImageElement, Node]): IGLRendererOperation => {\n                    return (renderer: SliderGLRenderer): SliderGLRenderer => {\n                        renderer.updateTextureImage(imn[0], imn[1]);\n\n                        return renderer;\n                    };\n                }))\n            .subscribe(this._glRendererOperation$);\n    }\n\n    protected _deactivate(): void {\n        this._waitSubscription.unsubscribe();\n\n        this._navigator.stateService.state$.pipe(\n            first())\n            .subscribe(\n                (state: State): void => {\n                    if (state !== State.Traversing) {\n                        this._navigator.stateService.traverse();\n                    }\n                });\n\n        this._glRendererDisposer$.next(null);\n        this._domRenderer.deactivate();\n\n        this._modeSubcription.unsubscribe();\n        this._setKeysSubscription.unsubscribe();\n        this._stateSubscription.unsubscribe();\n        this._glRenderSubscription.unsubscribe();\n        this._domRenderSubscription.unsubscribe();\n        this._moveSubscription.unsubscribe();\n        this._updateCurtainSubscription.unsubscribe();\n\n        this._textureProviderSubscription.unsubscribe();\n        this._setTextureProviderSubscription.unsubscribe();\n        this._setTileSizeSubscription.unsubscribe();\n        this._abortTextureProviderSubscription.unsubscribe();\n        this._setRegionOfInterestSubscription.unsubscribe();\n        this._hasTextureSubscription.unsubscribe();\n        this._updateBackgroundSubscription.unsubscribe();\n        this._updateTextureImageSubscription.unsubscribe();\n\n        this._textureProviderSubscriptionPrev.unsubscribe();\n        this._setTextureProviderSubscriptionPrev.unsubscribe();\n        this._setTileSizeSubscriptionPrev.unsubscribe();\n        this._abortTextureProviderSubscriptionPrev.unsubscribe();\n        this._setRegionOfInterestSubscriptionPrev.unsubscribe();\n        this._hasTextureSubscriptionPrev.unsubscribe();\n        this._updateBackgroundSubscriptionPrev.unsubscribe();\n        this._updateTextureImageSubscriptionPrev.unsubscribe();\n\n        this.configure({ keys: null });\n    }\n\n    protected _getDefaultConfiguration(): ISliderConfiguration {\n        return {\n            initialPosition: 1,\n            mode: SliderMode.Motion,\n            sliderVisible: true,\n        };\n    }\n\n    private _catchCacheNode$(key: string): Observable<Node> {\n        return this._navigator.graphService.cacheNode$(key).pipe(\n            catchError(\n                (error: Error, caught: Observable<Node>): Observable<Node> => {\n                    console.error(`Failed to cache slider node (${key})`, error);\n\n                    return observableEmpty();\n                }));\n    }\n\n    private _getBasicCorners(currentAspect: number, previousAspect: number): number[][] {\n        let offsetX: number;\n        let offsetY: number;\n\n        if (currentAspect > previousAspect) {\n            offsetX = 0.5;\n            offsetY = 0.5 * currentAspect / previousAspect;\n        } else {\n            offsetX = 0.5 * previousAspect / currentAspect;\n            offsetY = 0.5;\n        }\n\n        return [[0.5 - offsetX, 0.5 - offsetY], [0.5 + offsetX, 0.5 + offsetY]];\n    }\n\n    private _clipBoundingBox(bbox: IBoundingBox): void {\n        bbox.minX = Math.max(0, Math.min(1, bbox.minX));\n        bbox.maxX = Math.max(0, Math.min(1, bbox.maxX));\n        bbox.minY = Math.max(0, Math.min(1, bbox.minY));\n        bbox.maxY = Math.max(0, Math.min(1, bbox.maxY));\n    }\n}\n\nComponentService.register(SliderComponent);\nexport default SliderComponent;\n",
+    "import {merge as observableMerge,  Observable ,  Subject ,  Subscription } from \"rxjs\";\n\nimport {filter} from \"rxjs/operators\";\nimport * as vd from \"virtual-dom\";\n\nimport { SliderMode } from \"../../Component\";\nimport { Container } from \"../../Viewer\";\n\nexport class SliderDOMRenderer {\n    private _container: Container;\n\n    private _interacting: boolean;\n    private _notifyModeChanged$: Subject<SliderMode>;\n    private _notifyPositionChanged$: Subject<number>;\n    private _stopInteractionSubscription: Subscription;\n\n    constructor(container: Container) {\n        this._container = container;\n\n        this._interacting = false;\n        this._notifyModeChanged$ = new Subject<SliderMode>();\n        this._notifyPositionChanged$ = new Subject<number>();\n        this._stopInteractionSubscription = null;\n    }\n\n    public get mode$(): Observable<SliderMode> {\n        return this._notifyModeChanged$;\n    }\n\n    public get position$(): Observable<number> {\n        return this._notifyPositionChanged$;\n    }\n\n    public activate(): void {\n        if (!!this._stopInteractionSubscription) {\n            return;\n        }\n\n        this._stopInteractionSubscription = observableMerge(\n                this._container.mouseService.documentMouseUp$,\n                this._container.touchService.touchEnd$.pipe(\n                    filter(\n                        (touchEvent: TouchEvent): boolean => {\n                            return touchEvent.touches.length === 0;\n                        })))\n            .subscribe(\n                (event: Event): void => {\n                    if (this._interacting) {\n                        this._interacting = false;\n                    }\n                });\n    }\n\n    public deactivate(): void {\n        if (!this._stopInteractionSubscription) {\n            return;\n        }\n\n        this._interacting = false;\n\n        this._stopInteractionSubscription.unsubscribe();\n        this._stopInteractionSubscription = null;\n    }\n\n    public render(position: number, mode: SliderMode, motionless: boolean, pano: boolean, visible: boolean): vd.VNode {\n        const children: vd.VNode[] = [];\n\n        if (visible) {\n            children.push(vd.h(\"div.SliderBorder\", []));\n\n            const modeVisible: boolean = !(motionless || pano);\n            if (modeVisible) {\n                children.push(this._createModeButton(mode));\n                children.push(this._createModeButton2d(mode));\n            }\n\n            children.push(this._createPositionInput(position, modeVisible));\n        }\n\n        const boundingRect: ClientRect = this._container.domContainer.getBoundingClientRect();\n        const width: number = Math.max(215, Math.min(400, boundingRect.width - 100));\n\n        return vd.h(\"div.SliderContainer\", { style: { width: `${width}px` } }, children);\n    }\n\n    private _createModeButton(mode: SliderMode): vd.VNode {\n        const properties: vd.createProperties = {\n            onclick: (): void => {\n                if (mode === SliderMode.Motion) {\n                    return;\n                }\n\n                this._notifyModeChanged$.next(SliderMode.Motion);\n            },\n        };\n\n        const className: string = mode === SliderMode.Stationary ?\n            \"SliderModeButtonDisabled\" :\n            \"SliderModeButton\";\n\n        return vd.h(\"div.\" + className, properties, [vd.h(\"div.SliderModeIcon\", [])]);\n    }\n\n    private _createModeButton2d(mode: SliderMode): vd.VNode {\n        const properties: vd.createProperties = {\n            onclick: (): void => {\n                if (mode === SliderMode.Stationary) {\n                    return;\n                }\n\n                this._notifyModeChanged$.next(SliderMode.Stationary);\n            },\n        };\n\n        const className: string = mode === SliderMode.Motion ?\n            \"SliderModeButton2dDisabled\" :\n            \"SliderModeButton2d\";\n\n        return vd.h(\"div.\" + className, properties, [vd.h(\"div.SliderModeIcon2d\", [])]);\n    }\n\n    private _createPositionInput(position: number, modeVisible: boolean): vd.VNode {\n        const onChange: (e: Event) => void = (e: Event): void => {\n            this._notifyPositionChanged$.next(Number((<HTMLInputElement>e.target).value) / 1000);\n        };\n\n        const onStart: (e: Event) => void = (e: Event): void => {\n            this._interacting = true;\n            e.stopPropagation();\n        };\n\n        const onMove: (e: Event) => void = (e: Event): void => {\n            if (this._interacting) {\n                e.stopPropagation();\n            }\n        };\n\n        const onKeyDown: (e: KeyboardEvent) => void = (e: KeyboardEvent): void => {\n            if (e.key === \"ArrowDown\" || e.key === \"ArrowLeft\" ||\n                e.key === \"ArrowRight\" || e.key === \"ArrowUp\") {\n                e.preventDefault();\n            }\n        };\n\n        const boundingRect: ClientRect = this._container.domContainer.getBoundingClientRect();\n        const width: number = Math.max(215, Math.min(400, boundingRect.width - 105)) - 84 + (modeVisible ? 0 : 52);\n\n        const positionInput: vd.VNode = vd.h(\n            \"input.SliderPosition\",\n            {\n                max: 1000,\n                min: 0,\n                onchange: onChange,\n                oninput: onChange,\n                onkeydown: onKeyDown,\n                onmousedown: onStart,\n                onmousemove: onMove,\n                ontouchmove: onMove,\n                ontouchstart: onStart,\n                style: {\n                    width: `${width}px`,\n                },\n                type: \"range\",\n                value: 1000 * position,\n            },\n            []);\n\n        return vd.h(\"div.SliderPositionContainer\", [positionInput]);\n    }\n}\n\nexport default SliderDOMRenderer;\n",
+    "import * as THREE from \"three\";\n\nimport {Subscription} from \"rxjs\";\n\nimport {\n    IBBoxShaderMaterial,\n    IShaderMaterial,\n    MeshFactory,\n    MeshScene,\n    SliderMode,\n} from \"../../Component\";\nimport {\n    Transform,\n    Spatial,\n} from \"../../Geo\";\nimport { Node } from \"../../Graph\";\nimport {\n    ICurrentState,\n    IFrame,\n} from \"../../State\";\nimport { TextureProvider } from \"../../Tiles\";\n\nexport class SliderGLRenderer {\n    private _factory: MeshFactory;\n    private _scene: MeshScene;\n    private _spatial: Spatial;\n\n    private _currentKey: string;\n    private _previousKey: string;\n\n    private _disabled: boolean;\n    private _curtain: number;\n    private _frameId: number;\n    private _needsRender: boolean;\n\n    private _mode: SliderMode;\n\n    private _currentProviderDisposers: { [key: string]: () => void };\n    private _previousProviderDisposers: { [key: string]: () => void };\n\n    constructor() {\n        this._factory = new MeshFactory();\n        this._scene = new MeshScene();\n        this._spatial = new Spatial();\n\n        this._currentKey = null;\n        this._previousKey = null;\n\n        this._disabled = false;\n        this._curtain = 1;\n        this._frameId = 0;\n        this._needsRender = false;\n\n        this._mode = null;\n\n        this._currentProviderDisposers = {};\n        this._previousProviderDisposers = {};\n    }\n\n    public get disabled(): boolean {\n        return this._disabled;\n    }\n\n    public get frameId(): number {\n        return this._frameId;\n    }\n\n    public get needsRender(): boolean {\n        return this._needsRender;\n    }\n\n    public setTextureProvider(key: string, provider: TextureProvider): void {\n        this._setTextureProvider(\n            key,\n            this._currentKey,\n            provider,\n            this._currentProviderDisposers,\n            this._updateTexture.bind(this));\n    }\n\n    public setTextureProviderPrev(key: string, provider: TextureProvider): void {\n        this._setTextureProvider(\n            key,\n            this._previousKey,\n            provider,\n            this._previousProviderDisposers,\n            this._updateTexturePrev.bind(this));\n    }\n\n    public update(frame: IFrame, mode: SliderMode): void {\n        this._updateFrameId(frame.id);\n        this._updateImagePlanes(frame.state, mode);\n    }\n\n    public updateCurtain(curtain: number): void {\n        if (this._curtain === curtain) {\n            return;\n        }\n\n        this._curtain = curtain;\n        this._updateCurtain();\n\n        this._needsRender = true;\n    }\n\n    public updateTexture(image: HTMLImageElement, node: Node): void {\n        const planes: { [key: string]: THREE.Mesh } = node.key === this._currentKey ?\n            this._scene.planes :\n            node.key === this._previousKey ?\n                this._scene.planesOld :\n                {};\n\n        if (Object.keys(planes).length === 0) {\n            return;\n        }\n\n        this._needsRender = true;\n\n        for (const key in planes) {\n            if (!planes.hasOwnProperty(key)) {\n                continue;\n            }\n\n            const plane: THREE.Mesh = planes[key];\n            let material: IShaderMaterial = <IShaderMaterial>plane.material;\n            let texture: THREE.Texture = <THREE.Texture>material.uniforms.projectorTex.value;\n\n            texture.image = image;\n            texture.needsUpdate = true;\n        }\n    }\n\n    public updateTextureImage(image: HTMLImageElement, node?: Node): void {\n        if (this._currentKey !== node.key) {\n            return;\n        }\n\n        this._needsRender = true;\n\n        const planes: { [key: string]: THREE.Mesh } = this._scene.planes;\n\n        for (const key in planes) {\n            if (!planes.hasOwnProperty(key)) {\n                continue;\n            }\n\n            const plane: THREE.Mesh = planes[key];\n            let material: IShaderMaterial = <IShaderMaterial>plane.material;\n            let texture: THREE.Texture = <THREE.Texture>material.uniforms.projectorTex.value;\n\n            texture.image = image;\n            texture.needsUpdate = true;\n        }\n    }\n\n    public render(\n        perspectiveCamera: THREE.PerspectiveCamera,\n        renderer: THREE.WebGLRenderer): void {\n\n        if (!this.disabled) {\n            renderer.render(this._scene.sceneOld, perspectiveCamera);\n        }\n\n        renderer.render(this._scene.scene, perspectiveCamera);\n\n        this._needsRender = false;\n    }\n\n    public dispose(): void {\n        this._scene.clear();\n\n        for (const key in this._currentProviderDisposers) {\n            if (!this._currentProviderDisposers.hasOwnProperty(key)) {\n                continue;\n            }\n\n            this._currentProviderDisposers[key]();\n        }\n\n        for (const key in this._previousProviderDisposers) {\n            if (!this._previousProviderDisposers.hasOwnProperty(key)) {\n                continue;\n            }\n\n            this._previousProviderDisposers[key]();\n        }\n\n        this._currentProviderDisposers = {};\n        this._previousProviderDisposers = {};\n    }\n\n    private _getBasicCorners(currentAspect: number, previousAspect: number): number[][] {\n        let offsetX: number;\n        let offsetY: number;\n\n        if (currentAspect > previousAspect) {\n            offsetX = 0.5;\n            offsetY = 0.5 * currentAspect / previousAspect;\n        } else {\n            offsetX = 0.5 * previousAspect / currentAspect;\n            offsetY = 0.5;\n        }\n\n        return [[0.5 - offsetX, 0.5 - offsetY], [0.5 + offsetX, 0.5 + offsetY]];\n    }\n\n    private _setDisabled(state: ICurrentState): void {\n        this._disabled = state.currentNode == null ||\n            state.previousNode == null ||\n            (state.currentNode.pano && !state.currentNode.fullPano) ||\n            (state.previousNode.pano && !state.previousNode.fullPano) ||\n            (state.currentNode.fullPano && !state.previousNode.fullPano);\n    }\n\n    private _setTextureProvider(\n        key: string,\n        originalKey: string,\n        provider: TextureProvider,\n        providerDisposers: { [key: string]: () => void },\n        updateTexture: (texture: THREE.Texture) => void): void {\n\n        if (key !== originalKey) {\n            return;\n        }\n\n        let createdSubscription: Subscription = provider.textureCreated$\n            .subscribe(updateTexture);\n\n        let updatedSubscription: Subscription = provider.textureUpdated$\n            .subscribe(\n                (updated: boolean): void => {\n                    this._needsRender = true;\n                });\n\n        let dispose: () => void = (): void => {\n            createdSubscription.unsubscribe();\n            updatedSubscription.unsubscribe();\n            provider.dispose();\n        };\n\n        if (key in providerDisposers) {\n            let disposeProvider: () => void = providerDisposers[key];\n            disposeProvider();\n\n            delete providerDisposers[key];\n        }\n\n        providerDisposers[key] = dispose;\n    }\n\n    private _updateCurtain(): void {\n        const planes: { [key: string]: THREE.Mesh } = this._scene.planes;\n\n        for (const key in planes) {\n            if (!planes.hasOwnProperty(key)) {\n                continue;\n            }\n\n            const plane: THREE.Mesh = planes[key];\n            let shaderMaterial: IBBoxShaderMaterial = <IBBoxShaderMaterial>plane.material;\n\n            if (!!shaderMaterial.uniforms.curtain) {\n                shaderMaterial.uniforms.curtain.value = this._curtain;\n            }\n        }\n    }\n\n    private _updateFrameId(frameId: number): void {\n        this._frameId = frameId;\n    }\n\n    private _updateImagePlanes(state: ICurrentState, mode: SliderMode): void {\n        const currentChanged: boolean = state.currentNode != null && this._currentKey !== state.currentNode.key;\n        const previousChanged: boolean = state.previousNode != null && this._previousKey !== state.previousNode.key;\n        const modeChanged: boolean = this._mode !== mode;\n\n        if (!(currentChanged || previousChanged || modeChanged)) {\n            return;\n        }\n\n        this._setDisabled(state);\n        this._needsRender = true;\n        this._mode = mode;\n\n        const motionless: boolean = state.motionless || mode === SliderMode.Stationary || state.currentNode.pano;\n\n        if (this.disabled || previousChanged) {\n            if (this._previousKey in this._previousProviderDisposers) {\n                this._previousProviderDisposers[this._previousKey]();\n\n                delete this._previousProviderDisposers[this._previousKey];\n            }\n        }\n\n        if (this.disabled) {\n            this._scene.setImagePlanesOld({});\n        } else {\n            if (previousChanged || modeChanged) {\n                const previousNode: Node = state.previousNode;\n\n                this._previousKey = previousNode.key;\n\n                const elements: Float32Array = state.currentTransform.rt.elements;\n                let translation: number[] = [elements[12], elements[13], elements[14]];\n\n                const currentAspect: number = state.currentTransform.basicAspect;\n                const previousAspect: number = state.previousTransform.basicAspect;\n\n                const textureScale: number[] = currentAspect > previousAspect ?\n                    [1, previousAspect / currentAspect] :\n                    [currentAspect / previousAspect, 1];\n\n                let rotation: number[] = state.currentNode.rotation;\n                let width: number = state.currentNode.width;\n                let height: number = state.currentNode.height;\n\n                if (previousNode.fullPano) {\n                    rotation = state.previousNode.rotation;\n                    translation = this._spatial\n                        .rotate(\n                            this._spatial\n                                .opticalCenter(state.currentNode.rotation, translation)\n                                .toArray(),\n                            rotation)\n                        .multiplyScalar(-1)\n                        .toArray();\n\n                    width = state.previousNode.width;\n                    height = state.previousNode.height;\n                }\n\n                const transform: Transform = new Transform(\n                    state.currentNode.orientation,\n                    width,\n                    height,\n                    state.currentNode.focal,\n                    state.currentNode.scale,\n                    previousNode.gpano,\n                    rotation,\n                    translation,\n                    previousNode.image,\n                    textureScale);\n\n                let mesh: THREE.Mesh = undefined;\n\n                if (previousNode.fullPano) {\n                    mesh = this._factory.createMesh(\n                        previousNode,\n                        motionless || state.currentNode.fullPano ? transform : state.previousTransform);\n                } else {\n                    if (motionless) {\n                        const [[basicX0, basicY0], [basicX1, basicY1]]: number[][] = this._getBasicCorners(currentAspect, previousAspect);\n\n                        mesh = this._factory.createFlatMesh(\n                            state.previousNode,\n                            transform,\n                            basicX0,\n                            basicX1,\n                            basicY0,\n                            basicY1);\n                    } else {\n                        mesh = this._factory.createMesh(state.previousNode, state.previousTransform);\n                    }\n                }\n\n                const previousPlanes: { [key: string]: THREE.Mesh } = {};\n                previousPlanes[previousNode.key] = mesh;\n                this._scene.setImagePlanesOld(previousPlanes);\n            }\n        }\n\n        if (currentChanged || modeChanged) {\n            if (this._currentKey in this._currentProviderDisposers) {\n                this._currentProviderDisposers[this._currentKey]();\n\n                delete this._currentProviderDisposers[this._currentKey];\n            }\n\n            this._currentKey = state.currentNode.key;\n\n            const planes: { [key: string]: THREE.Mesh } = {};\n\n            if (state.currentNode.fullPano) {\n                planes[state.currentNode.key] = this._factory.createCurtainMesh(state.currentNode, state.currentTransform);\n            } else if (state.currentNode.pano && !state.currentNode.fullPano) {\n                planes[state.currentNode.key] = this._factory.createMesh(state.currentNode, state.currentTransform);\n            } else {\n                if (motionless) {\n                    planes[state.currentNode.key] = this._factory.createDistortedCurtainMesh(state.currentNode, state.currentTransform);\n                } else {\n                    planes[state.currentNode.key] = this._factory.createCurtainMesh(state.currentNode, state.currentTransform);\n                }\n            }\n\n            this._scene.setImagePlanes(planes);\n\n            this._updateCurtain();\n        }\n    }\n\n    private _updateTexture(texture: THREE.Texture): void {\n        this._needsRender = true;\n\n        const planes: { [key: string]: THREE.Mesh } = this._scene.planes;\n\n        for (const key in planes) {\n            if (!planes.hasOwnProperty(key)) {\n                continue;\n            }\n\n            const plane: THREE.Mesh = planes[key];\n            let material: IShaderMaterial = <IShaderMaterial>plane.material;\n\n            let oldTexture: THREE.Texture = <THREE.Texture>material.uniforms.projectorTex.value;\n            material.uniforms.projectorTex.value = null;\n            oldTexture.dispose();\n\n            material.uniforms.projectorTex.value = texture;\n        }\n    }\n\n    private _updateTexturePrev(texture: THREE.Texture): void {\n        this._needsRender = true;\n\n        const planes: { [key: string]: THREE.Mesh } = this._scene.planesOld;\n\n        for (const key in planes) {\n            if (!planes.hasOwnProperty(key)) {\n                continue;\n            }\n\n            const plane: THREE.Mesh = planes[key];\n            let material: IShaderMaterial = <IShaderMaterial>plane.material;\n\n            let oldTexture: THREE.Texture = <THREE.Texture>material.uniforms.projectorTex.value;\n            material.uniforms.projectorTex.value = null;\n            oldTexture.dispose();\n\n            material.uniforms.projectorTex.value = texture;\n        }\n    }\n}\n\nexport default SliderGLRenderer;\n",
+    "\nexport enum CameraVisualizationMode {\n    Default,\n    Cluster,\n    ConnectedComponent,\n    Sequence,\n}\n\nexport default CameraVisualizationMode;\n",
+    "export {CameraVisualizationMode} from \"./CameraVisualizationMode\";\n",
+    "import * as geohash from \"latlon-geohash\";\nimport * as pako from \"pako\";\n\nimport {\n    empty as observableEmpty,\n    from as observableFrom,\n    of as observableOf,\n    zip as observableZip,\n    Observable,\n    Subscriber,\n} from \"rxjs\";\n\nimport {\n    mergeMap,\n    catchError,\n    tap,\n    publish,\n    refCount,\n    finalize,\n    map,\n    filter,\n} from \"rxjs/operators\";\n\nimport {\n    IGPano,\n    ILatLon,\n} from \"../../API\";\nimport {\n    AbortMapillaryError,\n} from \"../../Error\";\nimport {\n    GraphService,\n    Node,\n} from \"../../Graph\";\nimport {\n    Urls,\n} from \"../../Utils\";\nimport { CameraProjection } from \"../../api/interfaces/CameraProjection\";\nimport IClusterReconstruction from \"./interfaces/IClusterReconstruction\";\n\nexport type NodeData = {\n    alt: number;\n    cameraProjection: CameraProjection;\n    clusterKey: string;\n    focal: number;\n    gpano: IGPano;\n    height: number;\n    k1: number;\n    k2: number;\n    key: string,\n    lat: number;\n    lon: number;\n    mergeCC: number;\n    orientation: number;\n    originalLat: number;\n    originalLon: number;\n    rotation: number[];\n    scale: number;\n    sequenceKey: string;\n    width: number;\n};\n\nexport class SpatialDataCache {\n    private _graphService: GraphService;\n\n    private _cacheRequests: { [hash: string]: XMLHttpRequest[] };\n    private _tiles: { [hash: string]: NodeData[] };\n\n    private _clusterReconstructions: { [key: string]: IClusterReconstruction };\n    private _clusterReconstructionTiles: { [key: string]: string[] };\n    private _tileClusters: { [hash: string]: string[] };\n\n    private _cachingClusterReconstructions$: { [hash: string]: Observable<IClusterReconstruction> };\n    private _cachingTiles$: { [hash: string]: Observable<NodeData[]> };\n\n    constructor(graphService: GraphService) {\n        this._graphService = graphService;\n\n        this._tiles = {};\n        this._cacheRequests = {};\n\n        this._clusterReconstructions = {};\n        this._clusterReconstructionTiles = {};\n        this._tileClusters = {};\n\n        this._cachingTiles$ = {};\n        this._cachingClusterReconstructions$ = {};\n    }\n\n    public cacheClusterReconstructions$(hash: string): Observable<IClusterReconstruction> {\n        if (!this.hasTile(hash)) {\n            throw new Error(\"Cannot cache reconstructions of a non-existing tile.\");\n        }\n\n        if (this.hasClusterReconstructions(hash)) {\n            throw new Error(\"Cannot cache reconstructions that already exists.\");\n        }\n\n        if (this.isCachingClusterReconstructions(hash)) {\n            return this._cachingClusterReconstructions$[hash];\n        }\n\n        const clusterKeys: string[] = this.getTile(hash)\n            .filter(\n                (nd: NodeData): boolean => {\n                    return !!nd.clusterKey;\n                })\n            .map(\n                (nd: NodeData): string => {\n                    return nd.clusterKey;\n                })\n            .filter(\n                (v: string, i: number, a: string[]) => {\n                    return a.indexOf(v) === i;\n                });\n\n        this._tileClusters[hash] = clusterKeys;\n        this._cacheRequests[hash] = [];\n\n        this._cachingClusterReconstructions$[hash] =  observableFrom(clusterKeys).pipe(\n            mergeMap(\n                (key: string): Observable<IClusterReconstruction> => {\n                    if (this._hasClusterReconstruction(key)) {\n                        return observableOf(this._getClusterReconstruction(key));\n                    }\n\n                    return this._getClusterReconstruction$(key, this._cacheRequests[hash])\n                        .pipe(\n                            catchError(\n                                (error: Error): Observable<IClusterReconstruction> => {\n                                    if (error instanceof AbortMapillaryError) {\n                                        return observableEmpty();\n                                    }\n\n                                    console.error(error);\n\n                                    return observableEmpty();\n                                }));\n                },\n                6),\n            filter(\n                (): boolean => {\n                    return hash in this._tileClusters;\n                }),\n            tap(\n                (reconstruction: IClusterReconstruction): void => {\n                    if (!this._hasClusterReconstruction(reconstruction.key)) {\n                        this._clusterReconstructions[reconstruction.key] = reconstruction;\n                    }\n\n                    if (!(reconstruction.key in this._clusterReconstructionTiles)) {\n                        this._clusterReconstructionTiles[reconstruction.key] = [];\n                    }\n\n                    if (this._clusterReconstructionTiles[reconstruction.key].indexOf(hash) === -1) {\n                        this._clusterReconstructionTiles[reconstruction.key].push(hash);\n                    }\n                }),\n            finalize(\n                (): void => {\n                    if (hash in this._cachingClusterReconstructions$) {\n                        delete this._cachingClusterReconstructions$[hash];\n                    }\n\n                    if (hash in this._cacheRequests) {\n                        delete this._cacheRequests[hash];\n                    }\n                }),\n            publish(),\n            refCount());\n\n        return this._cachingClusterReconstructions$[hash];\n    }\n\n    public cacheTile$(hash: string): Observable<NodeData[]> {\n        if (hash.length !== 8) {\n            throw new Error(\"Hash needs to be level 8.\");\n        }\n\n        if (this.hasTile(hash)) {\n            throw new Error(\"Cannot cache tile that already exists.\");\n        }\n\n        if (this.isCachingTile(hash)) {\n            return this._cachingTiles$[hash];\n        }\n\n        const bounds: geohash.Bounds = geohash.bounds(hash);\n        const sw: ILatLon = { lat: bounds.sw.lat, lon: bounds.sw.lon };\n        const ne: ILatLon = { lat: bounds.ne.lat, lon: bounds.ne.lon };\n\n        this._cachingTiles$[hash] = this._graphService.cacheBoundingBox$(sw, ne).pipe(\n            catchError(\n                (error: Error): Observable<Node[]> => {\n                    console.error(error);\n\n                    return observableEmpty();\n                }),\n            map(\n                (nodes: Node[]): NodeData[] => {\n                    return nodes\n                        .map(\n                            (n: Node): NodeData => {\n                                return this._createNodeData(n);\n                            });\n                }),\n            filter(\n                (): boolean => {\n                    return !(hash in this._tiles);\n                }),\n            tap(\n                (nodeData: NodeData[]): void => {\n                    this._tiles[hash] = [];\n                    this._tiles[hash].push(...nodeData);\n\n                    delete this._cachingTiles$[hash];\n                }),\n            finalize(\n                (): void => {\n                    if (hash in this._cachingTiles$) {\n                        delete this._cachingTiles$[hash];\n                    }\n                }),\n            publish(),\n            refCount());\n\n        return this._cachingTiles$[hash];\n    }\n\n    public isCachingClusterReconstructions(hash: string): boolean {\n        return hash in this._cachingClusterReconstructions$;\n    }\n\n    public isCachingTile(hash: string): boolean {\n        return hash in this._cachingTiles$;\n    }\n\n    public hasClusterReconstructions(hash: string): boolean {\n        if (hash in this._cachingClusterReconstructions$ ||\n            !(hash in this._tileClusters)) {\n            return false;\n        }\n\n        for (const key of this._tileClusters[hash]) {\n            if (!(key in this._clusterReconstructions)) {\n                return false;\n            }\n        }\n\n        return true;\n    }\n\n    public hasTile(hash: string): boolean {\n        return !(hash in this._cachingTiles$) && hash in this._tiles;\n    }\n\n    public getClusterReconstructions(hash: string): IClusterReconstruction[] {\n        return hash in this._tileClusters ?\n            this._tileClusters[hash]\n                .map(\n                    (key: string): IClusterReconstruction => {\n                        return this._clusterReconstructions[key];\n                    })\n                .filter(\n                    (reconstruction: IClusterReconstruction): boolean => {\n                        return !!reconstruction;\n                    }) :\n                [];\n    }\n\n    public getTile(hash: string): NodeData[] {\n        return hash in this._tiles ? this._tiles[hash] : [];\n    }\n\n    public uncache(keepHashes?: string[]): void {\n        for (let hash of Object.keys(this._cacheRequests)) {\n            if (!!keepHashes && keepHashes.indexOf(hash) !== -1) {\n                continue;\n            }\n\n            for (const request of this._cacheRequests[hash]) {\n                request.abort();\n            }\n\n            delete this._cacheRequests[hash];\n        }\n\n        for (let hash of Object.keys(this._tileClusters)) {\n            if (!!keepHashes && keepHashes.indexOf(hash) !== -1) {\n                continue;\n            }\n\n            for (const key of this._tileClusters[hash]) {\n                if (!(key in this._clusterReconstructionTiles)) {\n                    continue;\n                }\n\n                const index: number = this._clusterReconstructionTiles[key].indexOf(hash);\n                if (index === -1) {\n                    continue;\n                }\n\n                this._clusterReconstructionTiles[key].splice(index, 1);\n\n                if (this._clusterReconstructionTiles[key].length > 0) {\n                    continue;\n                }\n\n                delete this._clusterReconstructionTiles[key];\n                delete this._clusterReconstructions[key];\n            }\n\n            delete this._tileClusters[hash];\n        }\n\n        for (let hash of Object.keys(this._tiles)) {\n            if (!!keepHashes && keepHashes.indexOf(hash) !== -1) {\n                continue;\n            }\n\n            delete this._tiles[hash];\n        }\n    }\n\n    private _createNodeData(node: Node): NodeData {\n        return {\n            alt: node.alt,\n            cameraProjection: node.cameraProjection,\n            clusterKey: node.clusterKey,\n            focal: node.focal,\n            gpano: node.gpano,\n            height: node.height,\n            k1: node.ck1,\n            k2: node.ck2,\n            key: node.key,\n            lat: node.latLon.lat,\n            lon: node.latLon.lon,\n            mergeCC: node.mergeCC,\n            orientation: node.orientation,\n            originalLat: node.originalLatLon.lat,\n            originalLon: node.originalLatLon.lon,\n            rotation: [node.rotation[0], node.rotation[1], node.rotation[2]],\n            scale: node.scale,\n            sequenceKey: node.sequenceKey,\n            width: node.width,\n        };\n    }\n\n    private _getClusterReconstruction(key: string): IClusterReconstruction {\n        return this._clusterReconstructions[key];\n    }\n\n    private _getClusterReconstruction$(key: string, requests: XMLHttpRequest[]): Observable<IClusterReconstruction> {\n        return Observable.create(\n            (subscriber: Subscriber<IClusterReconstruction>): void => {\n                const xhr: XMLHttpRequest = new XMLHttpRequest();\n\n                xhr.open(\"GET\", Urls.clusterReconstruction(key), true);\n                xhr.responseType = \"arraybuffer\";\n                xhr.timeout = 15000;\n\n                xhr.onload = () => {\n                    if (!xhr.response) {\n                        subscriber.error(new Error(`Cluster reconstruction retreival failed (${key})`));\n                    } else {\n                        const inflated: string = pako.inflate(xhr.response, { to: \"string\" });\n                        const reconstructions: IClusterReconstruction[] = JSON.parse(inflated);\n\n                        if (reconstructions.length < 1) {\n                            subscriber.error(new Error(`No cluster reconstruction exists (${key})`));\n                        }\n\n                        const reconstruction: IClusterReconstruction = reconstructions[0];\n                        reconstruction.key = key;\n\n                        subscriber.next(reconstruction);\n                        subscriber.complete();\n                    }\n                };\n\n                xhr.onerror = () => {\n                    subscriber.error(new Error(`Failed to get cluster reconstruction (${key})`));\n                };\n\n                xhr.ontimeout = () => {\n                    subscriber.error(new Error(`Cluster reconstruction request timed out (${key})`));\n                };\n\n                xhr.onabort = () => {\n                    subscriber.error(new AbortMapillaryError(`Cluster reconstruction request was aborted (${key})`));\n                };\n\n                requests.push(xhr);\n\n                xhr.send(null);\n            });\n    }\n\n    private _hasClusterReconstruction(key: string): boolean {\n        return key in this._clusterReconstructions;\n    }\n}\n\nexport default SpatialDataCache;\n",
+    "import * as geohash from \"latlon-geohash\";\n\nimport {\n    combineLatest as observableCombineLatest,\n    empty as observableEmpty,\n    from as observableFrom,\n    of as observableOf,\n    Observable,\n    Subscription,\n} from \"rxjs\";\n\nimport {\n    catchError,\n    withLatestFrom,\n    map,\n    distinctUntilChanged,\n    concatMap,\n    switchMap,\n    tap,\n    filter,\n    last,\n    mergeMap,\n    first,\n    refCount,\n    publishReplay,\n    publish,\n} from \"rxjs/operators\";\n\nimport {\n    ComponentService,\n    Component,\n    ISpatialDataConfiguration,\n    NodeData,\n    SpatialDataCache,\n    SpatialDataScene,\n} from \"../../Component\";\nimport {\n    Geo,\n    GeoCoords,\n    ILatLonAlt,\n    Transform,\n    ViewportCoords,\n} from \"../../Geo\";\nimport {\n    Node,\n} from \"../../Graph\";\nimport {\n    IGLRenderHash,\n    GLRenderStage,\n    RenderCamera,\n} from \"../../Render\";\nimport {\n    IFrame,\n} from \"../../State\";\nimport {\n    Container,\n    Navigator,\n} from \"../../Viewer\";\nimport PlayService from \"../../viewer/PlayService\";\nimport State from \"../../state/State\";\nimport IClusterReconstruction from \"./interfaces/IClusterReconstruction\";\nimport CameraVisualizationMode from \"./CameraVisualizationMode\";\n\nexport class SpatialDataComponent extends Component<ISpatialDataConfiguration> {\n    public static componentName: string = \"spatialData\";\n\n    private _cache: SpatialDataCache;\n    private _scene: SpatialDataScene;\n    private _viewportCoords: ViewportCoords;\n    private _geoCoords: GeoCoords;\n\n    private _addNodeSubscription: Subscription;\n    private _addReconstructionSubscription: Subscription;\n    private _addTileSubscription: Subscription;\n    private _cameraVisibilitySubscription: Subscription;\n    private _earthControlsSubscription: Subscription;\n    private _moveSubscription: Subscription;\n    private _pointVisibilitySubscription: Subscription;\n    private _positionVisibilitySubscription: Subscription;\n    private _renderSubscription: Subscription;\n    private _tileVisibilitySubscription: Subscription;\n    private _uncacheSubscription: Subscription;\n    private _cameraVisualizationModeSubscription: Subscription;\n    private _ccToModeSubscription: Subscription;\n\n    constructor(name: string, container: Container, navigator: Navigator) {\n        super(name, container, navigator);\n\n        this._cache = new SpatialDataCache(navigator.graphService);\n        this._scene = new SpatialDataScene(this._getDefaultConfiguration());\n        this._viewportCoords = new ViewportCoords();\n        this._geoCoords = new GeoCoords();\n    }\n\n    protected _activate(): void {\n        this._earthControlsSubscription = this._configuration$.pipe(\n            map(\n                (configuration: ISpatialDataConfiguration): boolean => {\n                    return configuration.earthControls;\n                }),\n            distinctUntilChanged(),\n            withLatestFrom(this._navigator.stateService.state$))\n            .subscribe(\n                ([earth, state]: [boolean, State]): void => {\n                    if (earth && state !== State.Earth) {\n                        this._navigator.stateService.earth();\n                    } else if (!earth && state === State.Earth) {\n                        this._navigator.stateService.traverse();\n                    }\n                });\n\n        const direction$: Observable<string> = this._container.renderService.bearing$.pipe(\n            map(\n                (bearing: number): string => {\n                    let direction: string = \"\";\n\n                    if (bearing > 292.5 || bearing <= 67.5) {\n                        direction += \"n\";\n                    }\n\n                    if (bearing > 112.5 && bearing <= 247.5) {\n                        direction += \"s\";\n                    }\n\n                    if (bearing > 22.5 && bearing <= 157.5) {\n                        direction += \"e\";\n                    }\n\n                    if (bearing > 202.5 && bearing <= 337.5) {\n                        direction += \"w\";\n                    }\n\n                    return direction;\n                }),\n            distinctUntilChanged(),\n            publishReplay(1),\n            refCount());\n\n        const hash$: Observable<string> = this._navigator.stateService.reference$.pipe(\n            tap(\n                (): void => {\n                    this._scene.uncache();\n                }),\n            switchMap(\n                (): Observable<string> => {\n                    return this._navigator.stateService.currentNode$.pipe(\n                        map(\n                            (node: Node): string => {\n                                return geohash.encode(node.latLon.lat, node.latLon.lon, 8);\n                            }),\n                        distinctUntilChanged());\n                }),\n            publishReplay(1),\n            refCount());\n\n        const sequencePlay$: Observable<boolean> = observableCombineLatest(\n            this._navigator.playService.playing$,\n            this._navigator.playService.speed$).pipe(\n            map(\n                ([playing, speed]: [boolean, number]): boolean => {\n                    return playing && speed > PlayService.sequenceSpeed;\n                }),\n            distinctUntilChanged(),\n            publishReplay(1),\n            refCount());\n\n        const hashes$: Observable<string[]> = observableCombineLatest(\n            this._navigator.stateService.state$.pipe(\n                map(\n                    (state: State): boolean => {\n                        return state === State.Earth;\n                    }),\n                distinctUntilChanged()),\n            hash$,\n            sequencePlay$,\n            direction$).pipe(\n            distinctUntilChanged(\n                (\n                    [e1, h1, s1, d1]: [boolean, string, boolean, string],\n                    [e2, h2, s2, d2]: [boolean, string, boolean, string]): boolean => {\n\n                    if (e1 !== e2) {\n                        return false;\n                    }\n\n                    if (e1) {\n                        return h1 === h2 && s1 === s2;\n                    }\n\n                    return h1 === h2 && s1 === s2 && d1 === d2;\n                }),\n            concatMap(\n                ([earth, hash, sequencePlay, direction]: [boolean, string, boolean, string]): Observable<string[]> => {\n                    if (earth) {\n                        return sequencePlay ?\n                            observableOf([hash]) :\n                            observableOf(this._adjacentComponent(hash, 4));\n                    }\n\n                    return sequencePlay ?\n                        observableOf([hash, geohash.neighbours(hash)[<keyof geohash.Neighbours>direction]]) :\n                        observableOf(this._computeTiles(hash, direction));\n                }),\n            publish(),\n            refCount());\n\n        const tile$: Observable<[string, NodeData[]]> = hashes$.pipe(\n            switchMap(\n                (hashes: string[]): Observable<[string, NodeData[]]> => {\n                    return observableFrom(hashes).pipe(\n                        mergeMap(\n                            (h: string): Observable<[string, NodeData[]]> => {\n                                const t$: Observable<NodeData[]> =\n                                    this._cache.hasTile(h) ?\n                                        observableOf(this._cache.getTile(h)) :\n                                        this._cache.cacheTile$(h);\n\n                                return observableCombineLatest(observableOf(h), t$);\n                            },\n                            6));\n                        }),\n            publish(),\n            refCount());\n\n        this._addTileSubscription = tile$.pipe(\n            withLatestFrom(this._navigator.stateService.reference$))\n            .subscribe(\n                ([[hash], reference]: [[string, NodeData[]], ILatLonAlt]): void => {\n                    if (this._scene.hasTile(hash)) {\n                        return;\n                    }\n\n                    this._scene.addTile(this._computeTileBBox(hash, reference), hash);\n                });\n\n        this._addNodeSubscription = tile$.pipe(\n            withLatestFrom(this._navigator.stateService.reference$))\n            .subscribe(\n                ([[hash, datas], reference]: [[string, [NodeData]], ILatLonAlt]): void => {\n                    for (const data of datas) {\n                        if (this._scene.hasNode(data.key, hash)) {\n                            continue;\n                        }\n\n                        this._scene.addNode(\n                            data,\n                            this._createTransform(data, reference),\n                            this._computeOriginalPosition(data, reference),\n                            hash);\n                        }\n                });\n\n        this._addReconstructionSubscription = tile$.pipe(\n            concatMap(\n                ([hash]: [string, NodeData[]]): Observable<[string, IClusterReconstruction]> => {\n                    let reconstructions$: Observable<IClusterReconstruction>;\n\n                    if (this._cache.hasClusterReconstructions(hash)) {\n                        reconstructions$ = observableFrom(this._cache.getClusterReconstructions(hash));\n                    } else if (this._cache.isCachingClusterReconstructions(hash)) {\n                        reconstructions$ = this._cache.cacheClusterReconstructions$(hash).pipe(\n                            last(null, {}),\n                            switchMap(\n                                (): Observable<IClusterReconstruction> => {\n                                    return observableFrom(this._cache.getClusterReconstructions(hash));\n                                }));\n                    } else if (this._cache.hasTile(hash)) {\n                        reconstructions$ = this._cache.cacheClusterReconstructions$(hash);\n                    } else {\n                        reconstructions$ = observableEmpty();\n                    }\n\n                    return observableCombineLatest(observableOf(hash), reconstructions$);\n                }),\n            withLatestFrom(this._navigator.stateService.reference$))\n            .subscribe(\n                ([[hash, reconstruction], reference]: [[string, IClusterReconstruction], ILatLonAlt]): void => {\n                    if (this._scene.hasClusterReconstruction(reconstruction.key, hash)) {\n                        return;\n                    }\n\n                    this._scene.addClusterReconstruction(\n                        reconstruction,\n                        this._computeTranslation(reconstruction, reference),\n                        hash);\n                });\n\n        this._cameraVisibilitySubscription = this._configuration$.pipe(\n            map(\n                (configuration: ISpatialDataConfiguration): boolean => {\n                    return configuration.camerasVisible;\n                }),\n            distinctUntilChanged())\n            .subscribe(\n                (visible: boolean): void => {\n                    this._scene.setCameraVisibility(visible);\n                });\n\n        this._pointVisibilitySubscription = this._configuration$.pipe(\n            map(\n                (configuration: ISpatialDataConfiguration): boolean => {\n                    return configuration.pointsVisible;\n                }),\n            distinctUntilChanged())\n            .subscribe(\n                (visible: boolean): void => {\n                    this._scene.setPointVisibility(visible);\n                });\n\n        this._positionVisibilitySubscription = this._configuration$.pipe(\n            map(\n                (configuration: ISpatialDataConfiguration): boolean => {\n                    return configuration.positionsVisible;\n                }),\n            distinctUntilChanged())\n            .subscribe(\n                (visible: boolean): void => {\n                    this._scene.setPositionVisibility(visible);\n                });\n\n        this._tileVisibilitySubscription = this._configuration$.pipe(\n            map(\n                (configuration: ISpatialDataConfiguration): boolean => {\n                    return configuration.tilesVisible;\n                }),\n            distinctUntilChanged())\n            .subscribe(\n                (visible: boolean): void => {\n                    this._scene.setTileVisibility(visible);\n                });\n\n        this._ccToModeSubscription = this._configuration$.pipe(\n            map(\n                (configuration: ISpatialDataConfiguration): CameraVisualizationMode => {\n                    return configuration.connectedComponents === true ?\n                        CameraVisualizationMode.ConnectedComponent :\n                        CameraVisualizationMode.Default;\n                }),\n            distinctUntilChanged())\n            .subscribe(\n                (mode: CameraVisualizationMode): void => {\n                    this.configure({ cameraVisualizationMode: mode });\n                });\n\n        this._cameraVisualizationModeSubscription = this._configuration$.pipe(\n            map(\n                (configuration: ISpatialDataConfiguration): CameraVisualizationMode => {\n                    return configuration.cameraVisualizationMode;\n                }),\n            distinctUntilChanged())\n            .subscribe(\n                (mode: CameraVisualizationMode): void => {\n                    this._scene.setCameraVisualizationMode(mode);\n                });\n\n        this._uncacheSubscription = hash$\n            .subscribe(\n                (hash: string): void => {\n                    const keepHashes: string[] = this._adjacentComponent(hash, 4);\n                    this._scene.uncache(keepHashes);\n                    this._cache.uncache(keepHashes);\n                });\n\n        this._moveSubscription = this._navigator.playService.playing$.pipe(\n            switchMap(\n                (playing: boolean): Observable<MouseEvent> => {\n                    return playing ?\n                        observableEmpty() :\n                        this._container.mouseService.dblClick$;\n                }),\n            withLatestFrom(this._container.renderService.renderCamera$),\n            switchMap(\n                ([event, render]: [MouseEvent, RenderCamera]): Observable<Node> => {\n                    const element: HTMLElement = this._container.element;\n                    const [canvasX, canvasY]: number[] = this._viewportCoords.canvasPosition(event, element);\n                    const viewport: number[] = this._viewportCoords.canvasToViewport(\n                        canvasX,\n                        canvasY,\n                        element);\n\n                    const key: string = this._scene.intersectObjects(viewport, render.perspective);\n\n                    return !!key ?\n                        this._navigator.moveToKey$(key).pipe(\n                            catchError(\n                                (): Observable<Node> => {\n                                    return observableEmpty();\n                                })) :\n                        observableEmpty();\n                }))\n            .subscribe();\n\n        this._renderSubscription = this._navigator.stateService.currentState$.pipe(\n            map(\n                (frame: IFrame): IGLRenderHash => {\n                    const scene: SpatialDataScene = this._scene;\n\n                    return {\n                        name: this._name,\n                        render: {\n                            frameId: frame.id,\n                            needsRender: scene.needsRender,\n                            render: scene.render.bind(scene),\n                            stage: GLRenderStage.Foreground,\n                        },\n                    };\n                }))\n            .subscribe(this._container.glRenderer.render$);\n    }\n\n    protected _deactivate(): void {\n        this._cache.uncache();\n        this._scene.uncache();\n\n        this._addNodeSubscription.unsubscribe();\n        this._addReconstructionSubscription.unsubscribe();\n        this._addTileSubscription.unsubscribe();\n        this._cameraVisibilitySubscription.unsubscribe();\n        this._earthControlsSubscription.unsubscribe();\n        this._moveSubscription.unsubscribe();\n        this._pointVisibilitySubscription.unsubscribe();\n        this._positionVisibilitySubscription.unsubscribe();\n        this._renderSubscription.unsubscribe();\n        this._tileVisibilitySubscription.unsubscribe();\n        this._uncacheSubscription.unsubscribe();\n        this._cameraVisualizationModeSubscription.unsubscribe();\n        this._ccToModeSubscription.unsubscribe();\n\n        this._navigator.stateService.state$.pipe(\n            first())\n            .subscribe(\n                (state: State): void => {\n                    if (state === State.Earth) {\n                        this._navigator.stateService.traverse();\n                    }\n                });\n    }\n\n    protected _getDefaultConfiguration(): ISpatialDataConfiguration {\n        return {\n            cameraVisualizationMode: CameraVisualizationMode.Default,\n            camerasVisible: false,\n            connectedComponents: false,\n            pointsVisible: true,\n            positionsVisible: false,\n            tilesVisible: false,\n        };\n    }\n\n    private _adjacentComponent(hash: string, depth: number): string[] {\n        const hashSet: Set<string> = new Set<string>();\n        hashSet.add(hash);\n\n        this._adjacentComponentRecursive(hashSet, [hash], 0, depth);\n\n        return this._setToArray(hashSet);\n    }\n\n    private _adjacentComponentRecursive(\n        hashSet: Set<string>,\n        currentHashes: string[],\n        currentDepth: number,\n        maxDepth: number): void {\n\n        if (currentDepth === maxDepth) {\n            return;\n        }\n\n        const neighbours: string[] = [];\n\n        for (const hash of currentHashes) {\n            const hashNeighbours: geohash.Neighbours = geohash.neighbours(hash);\n\n            for (const direction in hashNeighbours) {\n                if (!hashNeighbours.hasOwnProperty(direction)) {\n                    continue;\n                }\n\n                neighbours.push(hashNeighbours[<keyof geohash.Neighbours>direction]);\n            }\n        }\n\n        const newHashes: string[] = [];\n        for (const neighbour of neighbours) {\n            if (!hashSet.has(neighbour)) {\n                hashSet.add(neighbour);\n                newHashes.push(neighbour);\n            }\n        }\n\n        this._adjacentComponentRecursive(hashSet, newHashes, currentDepth + 1, maxDepth);\n    }\n\n    private _computeOriginalPosition(data: NodeData, reference: ILatLonAlt): number[] {\n        return this._geoCoords.geodeticToEnu(\n            data.originalLat,\n            data.originalLon,\n            data.alt,\n            reference.lat,\n            reference.lon,\n            reference.alt);\n    }\n\n    private _computeTileBBox(hash: string, reference: ILatLonAlt): number[][] {\n        const bounds: geohash.Bounds = geohash.bounds(hash);\n\n        const sw: number[] = this._geoCoords.geodeticToEnu(\n            bounds.sw.lat,\n            bounds.sw.lon,\n            0,\n            reference.lat,\n            reference.lon,\n            reference.alt);\n\n        const ne: number[] = this._geoCoords.geodeticToEnu(\n            bounds.ne.lat,\n            bounds.ne.lon,\n            0,\n            reference.lat,\n            reference.lon,\n            reference.alt);\n\n        return [sw, ne];\n    }\n\n    private _createTransform(data: NodeData, reference: ILatLonAlt): Transform {\n        const translation: number[] = Geo.computeTranslation(\n            { alt: data.alt, lat: data.lat, lon: data.lon },\n            data.rotation,\n            reference);\n\n        const transform: Transform = new Transform(\n            data.orientation,\n            data.width,\n            data.height,\n            data.focal,\n            data.scale,\n            data.gpano,\n            data.rotation,\n            translation,\n            undefined,\n            undefined,\n            data.k1,\n            data.k2,\n            data.cameraProjection);\n\n        return transform;\n    }\n\n    private _computeTiles(hash: string, direction: string): string[] {\n        const hashSet: Set<string> = new Set<string>();\n        const directions: string[] = [\"n\", \"ne\", \"e\", \"se\", \"s\", \"sw\", \"w\", \"nw\"];\n\n        this._computeTilesRecursive(hashSet, hash, direction, directions, 0, 2);\n\n        return this._setToArray(hashSet);\n    }\n\n    private _computeTilesRecursive(\n        hashSet: Set<string>,\n        currentHash: string,\n        direction: string,\n        directions: string[],\n        currentDepth: number,\n        maxDepth: number): void {\n\n        hashSet.add(currentHash);\n\n        if (currentDepth === maxDepth) {\n            return;\n        }\n\n        const neighbours: geohash.Neighbours = geohash.neighbours(currentHash);\n        const directionIndex: number = directions.indexOf(direction);\n        const length: number = directions.length;\n\n        const directionNeighbours: string[] = [\n            neighbours[<keyof geohash.Neighbours>directions[this._modulo((directionIndex - 1), length)]],\n            neighbours[<keyof geohash.Neighbours>direction],\n            neighbours[<keyof geohash.Neighbours>directions[this._modulo((directionIndex + 1), length)]],\n        ];\n\n        for (let directionNeighbour of directionNeighbours) {\n            this._computeTilesRecursive(hashSet, directionNeighbour, direction, directions, currentDepth + 1, maxDepth);\n        }\n    }\n\n    private _computeTranslation(reconstruction: IClusterReconstruction, reference: ILatLonAlt): number[] {\n        return this._geoCoords.geodeticToEnu(\n            reconstruction.reference_lla.latitude,\n            reconstruction.reference_lla.longitude,\n            reconstruction.reference_lla.altitude,\n            reference.lat,\n            reference.lon,\n            reference.alt);\n    }\n\n    private _modulo(a: number, n: number): number {\n        return ((a % n) + n) % n;\n    }\n\n    private _setToArray<T>(s: Set<T>): T[] {\n        const a: T[] = [];\n\n        s.forEach(\n            (value: T) => {\n                a.push(value);\n            });\n\n        return a;\n    }\n}\n\nComponentService.register(SpatialDataComponent);\nexport default SpatialDataComponent;\n",
+    "import * as THREE from \"three\";\n\nimport {\n    IReconstructionPoint,\n    ISpatialDataConfiguration,\n} from \"../../Component\";\nimport {\n    Transform,\n} from \"../../Geo\";\nimport IClusterReconstruction from \"./interfaces/IClusterReconstruction\";\nimport CameraVisualizationMode from \"./CameraVisualizationMode\";\nimport { NodeData } from \"./SpatialDataCache\";\n\nexport class SpatialDataScene {\n    private _scene: THREE.Scene;\n    private _raycaster: THREE.Raycaster;\n\n    private _cameraColors: { [id: string]: string };\n    private _needsRender: boolean;\n    private _interactiveObjects: THREE.Object3D[];\n\n    private _tileClusterReconstructions: {\n        [hash: string]: {\n            keys: string[];\n        };\n    };\n\n    private _clusterReconstructions: {\n        [key: string]: {\n            tiles: string[];\n            points: THREE.Object3D;\n        };\n    };\n\n    private _nodes: {\n        [hash: string]: {\n            cameras: THREE.Object3D;\n            cameraKeys: { [id: string]: string };\n            clusters: { [id: string]: THREE.Object3D[] };\n            connectedComponents: { [id: string]: THREE.Object3D[] };\n            keys: string[];\n            positions: THREE.Object3D;\n            sequences: { [id: string]: THREE.Object3D[] };\n        };\n    };\n\n    private _tiles: { [hash: string]: THREE.Object3D };\n\n    private _cameraVisualizationMode: CameraVisualizationMode;\n    private _camerasVisible: boolean;\n    private _pointsVisible: boolean;\n    private _positionsVisible: boolean;\n    private _tilesVisible: boolean;\n\n    constructor(configuration: ISpatialDataConfiguration, scene?: THREE.Scene, raycaster?: THREE.Raycaster) {\n        this._scene = !!scene ? scene : new THREE.Scene();\n        this._raycaster = !!raycaster ? raycaster : new THREE.Raycaster(undefined, undefined, 0.8);\n\n        this._cameraColors = {};\n        this._needsRender = false;\n        this._interactiveObjects = [];\n        this._nodes = {};\n        this._tiles = {};\n        this._tileClusterReconstructions = {};\n        this._clusterReconstructions = {};\n\n        this._cameraVisualizationMode = !!configuration.cameraVisualizationMode ?\n            configuration.cameraVisualizationMode :\n            CameraVisualizationMode.Default;\n\n        if (this._cameraVisualizationMode === CameraVisualizationMode.Default &&\n            configuration.connectedComponents === true) {\n            this._cameraVisualizationMode = CameraVisualizationMode.ConnectedComponent;\n        }\n\n        this._camerasVisible = configuration.camerasVisible;\n        this._pointsVisible = configuration.pointsVisible;\n        this._positionsVisible = configuration.positionsVisible;\n        this._tilesVisible = configuration.tilesVisible;\n    }\n\n    public get needsRender(): boolean {\n        return this._needsRender;\n    }\n\n    public addClusterReconstruction(\n        reconstruction: IClusterReconstruction,\n        translation: number[],\n        hash: string): void {\n\n        if (this.hasClusterReconstruction(reconstruction.key, hash)) {\n            return;\n        }\n\n        const key: string = reconstruction.key;\n\n        if (!(key in this._clusterReconstructions)) {\n            this._clusterReconstructions[key] = {\n                points: new THREE.Object3D(),\n                tiles: [],\n            };\n\n            this._clusterReconstructions[key].points.visible = this._pointsVisible;\n            this._clusterReconstructions[key].points.add(\n                this._createClusterPoints(reconstruction, translation));\n\n            this._scene.add(\n                this._clusterReconstructions[key].points);\n        }\n\n        if (this._clusterReconstructions[key].tiles.indexOf(hash) === -1) {\n            this._clusterReconstructions[key].tiles.push(hash);\n        }\n\n        if (!(hash in this._tileClusterReconstructions)) {\n            this._tileClusterReconstructions[hash] = {\n                keys: [],\n            };\n        }\n\n        if (this._tileClusterReconstructions[hash].keys.indexOf(key) === -1) {\n            this._tileClusterReconstructions[hash].keys.push(key);\n        }\n\n        this._needsRender = true;\n    }\n\n    public addNode(\n        data: NodeData,\n        transform: Transform,\n        originalPosition: number[],\n        hash: string): void {\n        const key: string = data.key;\n        const clusterKey: string = data.clusterKey;\n        const sequenceKey: string = data.sequenceKey;\n        const connectedComponent: string = !!data.mergeCC ? data.mergeCC.toString() : \"\";\n\n        if (this.hasNode(key, hash)) {\n            return;\n        }\n\n        if (!(hash in this._nodes)) {\n            this._nodes[hash] = {\n                cameraKeys: {},\n                cameras: new THREE.Object3D(),\n                clusters: {},\n                connectedComponents: {},\n                keys: [],\n                positions: new THREE.Object3D(),\n                sequences: {},\n            };\n\n            this._nodes[hash].cameras.visible = this._camerasVisible;\n            this._nodes[hash].positions.visible = this._positionsVisible;\n\n            this._scene.add(\n                this._nodes[hash].cameras,\n                this._nodes[hash].positions);\n        }\n\n        if (!(connectedComponent in this._nodes[hash].connectedComponents)) {\n            this._nodes[hash].connectedComponents[connectedComponent] = [];\n        }\n\n        if (!(clusterKey in this._nodes[hash].clusters)) {\n            this._nodes[hash].clusters[clusterKey] = [];\n        }\n\n        if (!(sequenceKey in this._nodes[hash].sequences)) {\n            this._nodes[hash].sequences[sequenceKey] = [];\n        }\n\n        const camera: THREE.Object3D = this._createCamera(transform);\n        this._nodes[hash].cameras.add(camera);\n        for (const child of camera.children) {\n            this._nodes[hash].cameraKeys[child.uuid] = key;\n            this._interactiveObjects.push(child);\n        }\n\n        this._nodes[hash].connectedComponents[connectedComponent].push(camera);\n        this._nodes[hash].clusters[clusterKey].push(camera);\n        this._nodes[hash].sequences[sequenceKey].push(camera);\n\n        const id: string = this._getId(\n            clusterKey,\n            connectedComponent,\n            sequenceKey,\n            this._cameraVisualizationMode);\n\n        const color: string = this._getColor(id, this._cameraVisualizationMode);\n        this._setCameraColor(color, camera);\n\n        this._nodes[hash].positions.add(this._createPosition(transform, originalPosition));\n\n        this._nodes[hash].keys.push(key);\n\n        this._needsRender = true;\n    }\n\n    public addTile(tileBBox: number[][], hash: string): void {\n        if (this.hasTile(hash)) {\n            return;\n        }\n\n        const sw: number[] = tileBBox[0];\n        const ne: number[] = tileBBox[1];\n\n        const geometry: THREE.Geometry = new THREE.Geometry();\n        geometry.vertices.push(\n            new THREE.Vector3().fromArray(sw),\n            new THREE.Vector3(sw[0], ne[1], (sw[2] + ne[2]) / 2),\n            new THREE.Vector3().fromArray(ne),\n            new THREE.Vector3(ne[0], sw[1], (sw[2] + ne[2]) / 2),\n            new THREE.Vector3().fromArray(sw));\n\n        const tile: THREE.Object3D = new THREE.Line(geometry, new THREE.LineBasicMaterial());\n\n        this._tiles[hash] = new THREE.Object3D();\n        this._tiles[hash].visible = this._tilesVisible;\n        this._tiles[hash].add(tile);\n        this._scene.add(this._tiles[hash]);\n\n        this._needsRender = true;\n    }\n\n    public uncache(keepHashes?: string[]): void {\n        for (const hash of Object.keys(this._tileClusterReconstructions)) {\n            if (!!keepHashes && keepHashes.indexOf(hash) !== -1) {\n                continue;\n            }\n\n            this._disposeReconstruction(hash);\n        }\n\n        for (const hash of Object.keys(this._nodes)) {\n            if (!!keepHashes && keepHashes.indexOf(hash) !== -1) {\n                continue;\n            }\n\n            this._disposeNodes(hash);\n        }\n\n        for (const hash of Object.keys(this._tiles)) {\n            if (!!keepHashes && keepHashes.indexOf(hash) !== -1) {\n                continue;\n            }\n\n            this._disposeTile(hash);\n        }\n\n        this._needsRender = true;\n    }\n\n    public hasClusterReconstruction(key: string, hash: string): boolean {\n        return key in this._clusterReconstructions &&\n            this._clusterReconstructions[key].tiles.indexOf(hash) !== -1;\n    }\n\n    public hasTile(hash: string): boolean {\n        return hash in this._tiles;\n    }\n\n    public hasNode(key: string, hash: string): boolean {\n        return hash in this._nodes && this._nodes[hash].keys.indexOf(key) !== -1;\n    }\n\n    public intersectObjects([viewportX, viewportY]: number[], camera: THREE.Camera): string {\n        if (!this._camerasVisible) {\n            return null;\n        }\n\n        this._raycaster.setFromCamera(new THREE.Vector2(viewportX, viewportY), camera);\n\n        const intersects: THREE.Intersection[] = this._raycaster.intersectObjects(this._interactiveObjects);\n        for (const intersect of intersects) {\n            for (const hash in this._nodes) {\n                if (!this._nodes.hasOwnProperty(hash)) {\n                    continue;\n                }\n\n                if (intersect.object.uuid in this._nodes[hash].cameraKeys) {\n                    return this._nodes[hash].cameraKeys[intersect.object.uuid];\n                }\n            }\n        }\n\n        return null;\n    }\n\n    public setCameraVisibility(visible: boolean): void {\n        if (visible === this._camerasVisible) {\n            return;\n        }\n\n        for (const hash in this._nodes) {\n            if (!this._nodes.hasOwnProperty(hash)) {\n                continue;\n            }\n\n            this._nodes[hash].cameras.visible = visible;\n        }\n\n        this._camerasVisible = visible;\n        this._needsRender = true;\n    }\n\n    public setPointVisibility(visible: boolean): void {\n        if (visible === this._pointsVisible) {\n            return;\n        }\n\n        for (const key in this._clusterReconstructions) {\n            if (!this._clusterReconstructions.hasOwnProperty(key)) {\n                continue;\n            }\n\n            this._clusterReconstructions[key].points.visible = visible;\n        }\n\n        this._pointsVisible = visible;\n        this._needsRender = true;\n\n    }\n\n    public setPositionVisibility(visible: boolean): void {\n        if (visible === this._positionsVisible) {\n            return;\n        }\n\n        for (const hash in this._nodes) {\n            if (!this._nodes.hasOwnProperty(hash)) {\n                continue;\n            }\n\n            this._nodes[hash].positions.visible = visible;\n        }\n\n        this._positionsVisible = visible;\n        this._needsRender = true;\n    }\n\n    public setTileVisibility(visible: boolean): void {\n        if (visible === this._tilesVisible) {\n            return;\n        }\n\n        for (const hash in this._tiles) {\n            if (!this._tiles.hasOwnProperty(hash)) {\n                continue;\n            }\n\n            this._tiles[hash].visible = visible;\n        }\n\n        this._tilesVisible = visible;\n        this._needsRender = true;\n    }\n\n    public setCameraVisualizationMode(mode: CameraVisualizationMode): void {\n        if (mode === this._cameraVisualizationMode) {\n            return;\n        }\n\n        for (const hash in this._nodes) {\n            if (!this._nodes.hasOwnProperty(hash)) {\n                continue;\n            }\n\n            let cameras: { [id: number]: THREE.Object3D[] } = undefined;\n\n            if (mode === CameraVisualizationMode.Cluster) {\n                cameras = this._nodes[hash].clusters;\n            } else if (mode === CameraVisualizationMode.ConnectedComponent) {\n                cameras = this._nodes[hash].connectedComponents;\n            } else if (mode === CameraVisualizationMode.Sequence) {\n                cameras = this._nodes[hash].sequences;\n            } else {\n                for (const child of this._nodes[hash].cameras.children) {\n                    const color: string = this._getColor(\"\", mode);\n                    this._setCameraColor(color, child);\n                }\n\n                continue;\n            }\n\n            for (const id in cameras) {\n                if (!cameras.hasOwnProperty(id)) {\n                    continue;\n                }\n\n                const color: string = this._getColor(id, mode);\n\n                for (const camera of cameras[id]) {\n                    this._setCameraColor(color, camera);\n                }\n            }\n        }\n\n        this._cameraVisualizationMode = mode;\n        this._needsRender = true;\n    }\n\n    public render(\n        perspectiveCamera: THREE.PerspectiveCamera,\n        renderer: THREE.WebGLRenderer): void {\n\n        renderer.render(this._scene, perspectiveCamera);\n\n        this._needsRender = false;\n    }\n\n    private _arrayToFloatArray(a: number[][], columns: number): Float32Array {\n        const n: number = a.length;\n        const f: Float32Array = new Float32Array(n * columns);\n\n        for (let i: number = 0; i < n; i++) {\n            const item: number[] = a[i];\n            const index: number = 3 * i;\n\n            f[index + 0] = item[0];\n            f[index + 1] = item[1];\n            f[index + 2] = item[2];\n        }\n\n        return f;\n    }\n\n    private _createAxis(transform: Transform): THREE.Object3D {\n        const north: number[] = transform.unprojectBasic([0.5, 0], 0.22);\n        const south: number[] = transform.unprojectBasic([0.5, 1], 0.16);\n\n        const axis: THREE.BufferGeometry = new THREE.BufferGeometry();\n        axis.addAttribute(\"position\", new THREE.BufferAttribute(this._arrayToFloatArray([north, south], 3), 3));\n\n        return new THREE.Line(axis, new THREE.LineBasicMaterial());\n    }\n\n    private _createCamera(transform: Transform): THREE.Object3D {\n        return !!transform.gpano ?\n            this._createPanoCamera(transform) :\n            this._createPrespectiveCamera(transform);\n    }\n\n    private _createDiagonals(transform: Transform, depth: number): THREE.Object3D {\n        const origin: number [] = transform.unprojectBasic([0, 0], 0, true);\n        const topLeft: number[] = transform.unprojectBasic([0, 0], depth, true);\n        const topRight: number[] = transform.unprojectBasic([1, 0], depth, true);\n        const bottomRight: number[] = transform.unprojectBasic([1, 1], depth, true);\n        const bottomLeft: number[] = transform.unprojectBasic([0, 1], depth, true);\n\n        const vertices: number[][] = [\n            origin, topLeft,\n            origin, topRight,\n            origin, bottomRight,\n            origin, bottomLeft,\n        ];\n\n        const diagonals: THREE.BufferGeometry = new THREE.BufferGeometry();\n        diagonals.addAttribute(\"position\", new THREE.BufferAttribute(this._arrayToFloatArray(vertices, 3), 3));\n\n        return new THREE.LineSegments(diagonals, new THREE.LineBasicMaterial());\n    }\n\n    private _createFrame(transform: Transform, depth: number): THREE.Object3D {\n        const vertices2d: number[][] = [];\n        vertices2d.push(...this._subsample([0, 1], [0, 0], 20));\n        vertices2d.push(...this._subsample([0, 0], [1, 0], 20));\n        vertices2d.push(...this._subsample([1, 0], [1, 1], 20));\n\n        const vertices3d: number[][] = vertices2d\n            .map(\n                (basic: number[]): number[] => {\n                    return transform.unprojectBasic(basic, depth, true);\n                });\n\n        const frame: THREE.BufferGeometry = new THREE.BufferGeometry();\n        frame.addAttribute(\"position\", new THREE.BufferAttribute(this._arrayToFloatArray(vertices3d, 3), 3));\n\n        return new THREE.Line(frame, new THREE.LineBasicMaterial());\n    }\n\n    private _createLatitude(basicY: number, numVertices: number, transform: Transform): THREE.Object3D {\n        const positions: Float32Array = new Float32Array((numVertices + 1) * 3);\n\n        for (let i: number = 0; i <= numVertices; i++) {\n            const position: number[] = transform.unprojectBasic([i / numVertices, basicY], 0.16);\n            const index: number = 3 * i;\n\n            positions[index + 0] = position[0];\n            positions[index + 1] = position[1];\n            positions[index + 2] = position[2];\n        }\n\n        const latitude: THREE.BufferGeometry = new THREE.BufferGeometry();\n        latitude.addAttribute(\"position\", new THREE.BufferAttribute(positions, 3));\n\n        return new THREE.Line(latitude, new THREE.LineBasicMaterial());\n    }\n\n    private _createLongitude(basicX: number, numVertices: number, transform: Transform): THREE.Object3D {\n        const positions: Float32Array = new Float32Array((numVertices + 1) * 3);\n\n        for (let i: number = 0; i <= numVertices; i++) {\n            const position: number[] = transform.unprojectBasic([basicX, i / numVertices], 0.16);\n            const index: number = 3 * i;\n\n            positions[index + 0] = position[0];\n            positions[index + 1] = position[1];\n            positions[index + 2] = position[2];\n        }\n\n        const latitude: THREE.BufferGeometry = new THREE.BufferGeometry();\n        latitude.addAttribute(\"position\", new THREE.BufferAttribute(positions, 3));\n\n        return new THREE.Line(latitude, new THREE.LineBasicMaterial());\n    }\n\n    private _createPanoCamera(transform: Transform): THREE.Object3D {\n        const camera: THREE.Object3D = new THREE.Object3D();\n\n        camera.children.push(this._createAxis(transform));\n        camera.children.push(this._createLatitude(0.5, 10, transform));\n        camera.children.push(this._createLongitude(0, 6, transform));\n        camera.children.push(this._createLongitude(0.25, 6, transform));\n        camera.children.push(this._createLongitude(0.5, 6, transform));\n        camera.children.push(this._createLongitude(0.75, 6, transform));\n\n        return camera;\n    }\n\n    private _createClusterPoints(reconstruction: IClusterReconstruction, translation: number[]): THREE.Object3D {\n        const points: IReconstructionPoint[] = Object\n            .keys(reconstruction.points)\n            .map(\n                (key: string): IReconstructionPoint => {\n                    return reconstruction.points[key];\n                });\n\n        const numPoints: number = points.length;\n        const positions: Float32Array = new Float32Array(numPoints * 3);\n        const colors: Float32Array = new Float32Array(numPoints * 3);\n\n        for (let i: number = 0; i < numPoints; i++) {\n            const index: number = 3 * i;\n\n            const coords: number[] = points[i].coordinates;\n            const point: THREE.Vector3 = new THREE.Vector3(coords[0], coords[1], coords[2])\n                .add(new THREE.Vector3().fromArray(translation));\n\n            positions[index + 0] = point.x;\n            positions[index + 1] = point.y;\n            positions[index + 2] = point.z;\n\n            const color: number[] = points[i].color;\n            colors[index + 0] = color[0] / 255.0;\n            colors[index + 1] = color[1] / 255.0;\n            colors[index + 2] = color[2] / 255.0;\n        }\n\n        const geometry: THREE.BufferGeometry = new THREE.BufferGeometry();\n        geometry.addAttribute(\"position\", new THREE.BufferAttribute(positions, 3));\n        geometry.addAttribute(\"color\", new THREE.BufferAttribute(colors, 3));\n\n        const material: THREE.PointsMaterial = new THREE.PointsMaterial({\n            size: 0.1,\n            vertexColors: THREE.VertexColors,\n        });\n\n        return new THREE.Points(geometry, material);\n    }\n\n    private _createPosition(transform: Transform, originalPosition: number[]): THREE.Object3D {\n        const computedPosition: number[] = transform.unprojectBasic([0, 0], 0);\n        const vertices: number[][] = [originalPosition, computedPosition];\n        const geometry: THREE.BufferGeometry = new THREE.BufferGeometry();\n        geometry.addAttribute(\"position\", new THREE.BufferAttribute(this._arrayToFloatArray(vertices, 3), 3));\n\n        return new THREE.Line(\n            geometry,\n            new THREE.LineBasicMaterial({ color: new THREE.Color(1, 0, 0) }));\n    }\n\n    private _createPrespectiveCamera(transform: Transform): THREE.Object3D {\n        const depth: number = 0.2;\n        const camera: THREE.Object3D = new THREE.Object3D();\n\n        camera.children.push(this._createDiagonals(transform, depth));\n        camera.children.push(this._createFrame(transform, depth));\n\n        return camera;\n    }\n\n    private _disposeCameras(hash: string): void {\n        const tileCameras: THREE.Object3D = this._nodes[hash].cameras;\n\n        for (const camera of tileCameras.children.slice()) {\n            for (const child of camera.children) {\n                (<THREE.Line>child).geometry.dispose();\n                (<THREE.Line>child).material.dispose();\n\n                const index: number = this._interactiveObjects.indexOf(child);\n                if (index !== -1) {\n                    this._interactiveObjects.splice(index, 1);\n                } else {\n                    console.warn(`Object does not exist (${child.id}) for ${hash}`);\n                }\n            }\n\n            tileCameras.remove(camera);\n        }\n\n        this._scene.remove(tileCameras);\n    }\n\n    private _disposePoints(hash: string): void {\n        for (const key of this._tileClusterReconstructions[hash].keys) {\n            if (!(key in this._clusterReconstructions)) {\n                continue;\n            }\n\n            const index: number = this._clusterReconstructions[key].tiles.indexOf(hash);\n            if (index === -1) {\n                continue;\n            }\n\n            this._clusterReconstructions[key].tiles.splice(index, 1);\n\n            if (this._clusterReconstructions[key].tiles.length > 0) {\n                continue;\n            }\n\n            for (const points of this._clusterReconstructions[key].points.children.slice()) {\n                (<THREE.Points>points).geometry.dispose();\n                (<THREE.Points>points).material.dispose();\n            }\n\n            this._scene.remove(this._clusterReconstructions[key].points);\n\n            delete this._clusterReconstructions[key];\n        }\n    }\n\n    private _disposePositions(hash: string): void {\n        const tilePositions: THREE.Object3D = this._nodes[hash].positions;\n\n        for (const position of tilePositions.children.slice()) {\n            (<THREE.Points>position).geometry.dispose();\n            (<THREE.Points>position).material.dispose();\n\n            tilePositions.remove(position);\n        }\n\n        this._scene.remove(tilePositions);\n    }\n\n    private _disposeNodes(hash: string): void {\n        this._disposeCameras(hash);\n        this._disposePositions(hash);\n\n        delete this._nodes[hash];\n    }\n\n    private _disposeReconstruction(hash: string): void {\n        this._disposePoints(hash);\n\n        delete this._tileClusterReconstructions[hash];\n    }\n\n    private _disposeTile(hash: string): void {\n        const tile: THREE.Object3D = this._tiles[hash];\n\n        for (const line of tile.children.slice()) {\n            (<THREE.Line>line).geometry.dispose();\n            (<THREE.Line>line).material.dispose();\n\n            tile.remove(line);\n        }\n\n        this._scene.remove(tile);\n\n        delete this._tiles[hash];\n    }\n\n    private _getColor(id: string, mode: CameraVisualizationMode): string {\n        return mode !== CameraVisualizationMode.Default && id.length > 0 ?\n            this._getCameraColor(id) :\n            \"#FFFFFF\";\n    }\n\n    private _getCameraColor(id: string): string {\n        if (!(id in this._cameraColors)) {\n            this._cameraColors[id] = this._randomColor();\n        }\n\n        return this._cameraColors[id];\n    }\n\n    private _getId(\n        clusterKey: string,\n        connectedComponent: string,\n        sequenceKey: string,\n        mode: CameraVisualizationMode): string {\n        switch (mode) {\n            case CameraVisualizationMode.Cluster:\n                return clusterKey;\n            case CameraVisualizationMode.ConnectedComponent:\n                return connectedComponent;\n            case CameraVisualizationMode.Sequence:\n                return sequenceKey;\n            default:\n                return \"\";\n        }\n    }\n\n    private _interpolate(a: number, b: number, alpha: number): number {\n        return a + alpha * (b - a);\n    }\n\n    private _randomColor(): string {\n        return `hsl(${Math.floor(360 * Math.random())}, 100%, 65%)`;\n    }\n\n    private _setCameraColor(color: string, camera: THREE.Object3D): void {\n        for (const child of camera.children) {\n            (<THREE.LineBasicMaterial>(<THREE.Line>child).material).color = new THREE.Color(color);\n        }\n    }\n\n    private _subsample(p1: number[], p2: number[], subsamples: number): number[][] {\n        if (subsamples < 1) {\n            return [p1, p2];\n        }\n\n        const samples: number[][] = [];\n\n        for (let i: number = 0; i <= subsamples + 1; i++) {\n            const p: number[] = [];\n\n            for (let j: number = 0; j < 3; j++) {\n                p.push(this._interpolate(p1[j], p2[j], i / (subsamples + 1)));\n            }\n\n            samples.push(p);\n        }\n\n        return samples;\n    }\n}\n\nexport default SpatialDataScene;\n",
+    "export {GeometryTagError} from \"./error/GeometryTagError\";\nexport {PointGeometry} from \"./geometry/PointGeometry\";\nexport {PointsGeometry} from \"./geometry/PointsGeometry\";\nexport {RectGeometry} from \"./geometry/RectGeometry\";\nexport {PolygonGeometry} from \"./geometry/PolygonGeometry\";\nexport {IOutlineTagOptions} from \"./interfaces/IOutlineTagOptions\";\nexport {IExtremePointTagOptions} from \"./interfaces/IExtremePointTagOptions\";\nexport {OutlineTag} from \"./tag/OutlineTag\";\nexport {ExtremePointTag} from \"./tag/ExtremePointTag\";\nexport {SpotTag} from \"./tag/SpotTag\";\nexport {TagDomain} from \"./tag/TagDomain\";\nexport {TagComponent} from \"./TagComponent\";\nexport {TagMode} from \"./TagMode\";\n",
+    "import {\n    combineLatest as observableCombineLatest,\n    empty as observableEmpty,\n    merge as observableMerge,\n    from as observableFrom,\n    Observable,\n    Subscription,\n} from \"rxjs\";\n\nimport {\n    startWith,\n    first,\n    tap,\n    map,\n    share,\n    skipWhile,\n    filter,\n    mergeMap,\n    refCount,\n    publishReplay,\n    switchMap,\n    distinctUntilChanged,\n} from \"rxjs/operators\";\n\nimport * as when from \"when\";\n\nimport {\n    ComponentService,\n    Component,\n    CreateHandlerBase,\n    CreatePointHandler,\n    CreatePolygonHandler,\n    CreateRectHandler,\n    CreateRectDragHandler,\n    CreateTag,\n    EditVertexHandler,\n    Geometry,\n    ITagConfiguration,\n    RenderTag,\n    Tag,\n    TagCreator,\n    TagDOMRenderer,\n    TagMode,\n    TagScene,\n    TagSet,\n    CreatePointsHandler,\n} from \"../../Component\";\nimport {\n    Transform,\n    ViewportCoords,\n} from \"../../Geo\";\nimport {\n    GLRenderStage,\n    IGLRenderHash,\n    ISize,\n    IVNodeHash,\n    RenderCamera,\n} from \"../../Render\";\nimport {IFrame} from \"../../State\";\nimport {\n    Container,\n    ISpriteAtlas,\n    Navigator,\n} from \"../../Viewer\";\nimport PointsGeometry from \"./geometry/PointsGeometry\";\n\n/**\n * @class TagComponent\n *\n * @classdesc Component for showing and editing tags with different\n * geometries composed from 2D basic image coordinates (see the\n * {@link Viewer} class documentation for more information about coordinate\n * systems).\n *\n * The `add` method is used for adding new tags or replacing\n * tags already in the set. Tags are removed by id.\n *\n * If a tag already in the set has the same\n * id as one of the tags added, the old tag will be removed and\n * the added tag will take its place.\n *\n * The tag component mode can be set to either be non interactive or\n * to be in creating mode of a certain geometry type.\n *\n * The tag properties can be updated at any time and the change will\n * be visibile immediately.\n *\n * Tags are only relevant to a single image because they are based on\n * 2D basic image coordinates. Tags related to a certain image should\n * be removed when the viewer is moved to another node.\n *\n * To retrive and use the tag component\n *\n * @example\n * ```\n * var viewer = new Mapillary.Viewer(\n *     \"<element-id>\",\n *     \"<client-id>\",\n *     \"<my key>\",\n *     { component: { tag: true } });\n *\n * var tagComponent = viewer.getComponent(\"tag\");\n * ```\n */\nexport class TagComponent extends Component<ITagConfiguration> {\n    /** @inheritdoc */\n    public static componentName: string = \"tag\";\n\n    /**\n     * Event fired when an interaction to create a geometry ends.\n     *\n     * @description A create interaction can by a geometry being created\n     * or by the creation being aborted.\n     *\n     * @event TagComponent#creategeometryend\n     * @type {TagComponent} Tag component.\n     * @example\n     * ```\n     * tagComponent.on(\"creategeometryend\", function(component) {\n     *     console.log(component);\n     * });\n     * ```\n     */\n    public static creategeometryend: string = \"creategeometryend\";\n\n    /**\n     * Event fired when an interaction to create a geometry starts.\n     *\n     * @description A create interaction starts when the first vertex\n     * is created in the geometry.\n     *\n     * @event TagComponent#creategeometrystart\n     * @type {TagComponent} Tag component.\n     * @example\n     * ```\n     * tagComponent.on(\"creategeometrystart\", function(component) {\n     *     console.log(component);\n     * });\n     * ```\n     */\n    public static creategeometrystart: string = \"creategeometrystart\";\n\n    /**\n     * Event fired when the create mode is changed.\n     *\n     * @event TagComponent#modechanged\n     * @type {TagMode} Tag mode\n     * @example\n     * ```\n     * tagComponent.on(\"modechanged\", function(mode) {\n     *     console.log(mode);\n     * });\n     * ```\n     */\n    public static modechanged: string = \"modechanged\";\n\n    /**\n     * Event fired when a geometry has been created.\n     *\n     * @event TagComponent#geometrycreated\n     * @type {Geometry} Created geometry.\n     * @example\n     * ```\n     * tagComponent.on(\"geometrycreated\", function(geometry) {\n     *     console.log(geometry);\n     * });\n     * ```\n     */\n    public static geometrycreated: string = \"geometrycreated\";\n\n    /**\n     * Event fired when the tags collection has changed.\n     *\n     * @event TagComponent#tagschanged\n     * @type {TagComponent} Tag component.\n     * @example\n     * ```\n     * tagComponent.on(\"tagschanged\", function(component) {\n     *     console.log(component.getAll());\n     * });\n     * ```\n     */\n    public static tagschanged: string = \"tagschanged\";\n\n    private _tagDomRenderer: TagDOMRenderer;\n    private _tagScene: TagScene;\n    private _tagSet: TagSet;\n    private _tagCreator: TagCreator;\n    private _viewportCoords: ViewportCoords;\n\n    private _renderTags$: Observable<RenderTag<Tag>[]>;\n    private _tagChanged$: Observable<Tag>;\n    private _renderTagGLChanged$: Observable<RenderTag<Tag>>;\n    private _createGeometryChanged$: Observable<CreateTag<Geometry>>;\n    private _createGLObjectsChanged$: Observable<CreateTag<Geometry>>;\n\n    private _creatingConfiguration$: Observable<ITagConfiguration>;\n\n    private _updateGLObjectsSubscription: Subscription;\n    private _updateTagSceneSubscription: Subscription;\n\n    private _stopCreateSubscription: Subscription;\n    private _setGLCreateTagSubscription: Subscription;\n    private _createGLObjectsChangedSubscription: Subscription;\n\n    private _handlerStopCreateSubscription: Subscription;\n    private _handlerEnablerSubscription: Subscription;\n\n    private _domSubscription: Subscription;\n    private _glSubscription: Subscription;\n\n    private _fireCreateGeometryEventSubscription: Subscription;\n    private _fireGeometryCreatedSubscription: Subscription;\n    private _fireTagsChangedSubscription: Subscription;\n\n    private _createHandlers: { [K in keyof typeof TagMode]: CreateHandlerBase };\n    private _editVertexHandler: EditVertexHandler;\n\n    /** @ignore */\n    constructor(name: string, container: Container, navigator: Navigator) {\n        super(name, container, navigator);\n\n        this._tagDomRenderer = new TagDOMRenderer();\n        this._tagScene = new TagScene();\n        this._tagSet = new TagSet();\n        this._tagCreator = new TagCreator(this, navigator);\n        this._viewportCoords = new ViewportCoords();\n\n        this._createHandlers = {\n            \"CreatePoint\": new CreatePointHandler(this, container, navigator, this._viewportCoords, this._tagCreator),\n            \"CreatePoints\": new CreatePointsHandler(this, container, navigator, this._viewportCoords, this._tagCreator),\n            \"CreatePolygon\": new CreatePolygonHandler(this, container, navigator, this._viewportCoords, this._tagCreator),\n            \"CreateRect\": new CreateRectHandler(this, container, navigator, this._viewportCoords, this._tagCreator),\n            \"CreateRectDrag\": new CreateRectDragHandler(this, container, navigator, this._viewportCoords, this._tagCreator),\n            \"Default\": undefined,\n        };\n\n        this._editVertexHandler = new EditVertexHandler(this, container, navigator, this._viewportCoords, this._tagSet);\n\n        this._renderTags$ = this._tagSet.changed$.pipe(\n            map(\n                (tagSet: TagSet): RenderTag<Tag>[] => {\n                    const tags: RenderTag<Tag>[] = tagSet.getAll();\n\n                    // ensure that tags are always rendered in the same order\n                    // to avoid hover tracking problems on first resize.\n                    tags.sort(\n                        (t1: RenderTag<Tag>, t2: RenderTag<Tag>): number => {\n                            const id1: string = t1.tag.id;\n                            const id2: string = t2.tag.id;\n\n                            if (id1 < id2) {\n                                return -1;\n                            }\n\n                            if (id1 > id2) {\n                                return 1;\n                            }\n\n                            return 0;\n                        });\n\n                    return tags;\n                }),\n            share());\n\n        this._tagChanged$ = this._renderTags$.pipe(\n            switchMap(\n                (tags: RenderTag<Tag>[]): Observable<Tag> => {\n                    return observableFrom(tags).pipe(\n                        mergeMap(\n                            (tag: RenderTag<Tag>): Observable<Tag> => {\n                                return observableMerge(\n                                        tag.tag.changed$,\n                                        tag.tag.geometryChanged$);\n                            }));\n                }),\n            share());\n\n        this._renderTagGLChanged$ = this._renderTags$.pipe(\n            switchMap(\n                (tags: RenderTag<Tag>[]): Observable<RenderTag<Tag>> => {\n                    return observableFrom(tags).pipe(\n                        mergeMap(\n                            (tag: RenderTag<Tag>): Observable<RenderTag<Tag>> => {\n                                return tag.glObjectsChanged$;\n                            }));\n                }),\n            share());\n\n        this._createGeometryChanged$ = this._tagCreator.tag$.pipe(\n            switchMap(\n                (tag: CreateTag<Geometry>): Observable<CreateTag<Geometry>> => {\n                    return tag != null ?\n                        tag.geometryChanged$ :\n                        observableEmpty();\n                }),\n            share());\n\n        this._createGLObjectsChanged$ = this._tagCreator.tag$.pipe(\n            switchMap(\n                (tag: CreateTag<Geometry>): Observable<CreateTag<Geometry>> => {\n                    return tag != null ?\n                        tag.glObjectsChanged$ :\n                        observableEmpty();\n                }),\n            share());\n\n        this._creatingConfiguration$ = this._configuration$.pipe(\n            distinctUntilChanged(\n                (c1: ITagConfiguration, c2: ITagConfiguration): boolean => {\n                    return c1.mode === c2.mode;\n                },\n                (configuration: ITagConfiguration): ITagConfiguration => {\n                    return {\n                        createColor: configuration.createColor,\n                        mode: configuration.mode,\n                    };\n                }),\n            publishReplay(1),\n            refCount());\n\n        this._creatingConfiguration$\n            .subscribe(\n                (configuration: ITagConfiguration): void => {\n                    this.fire(TagComponent.modechanged, configuration.mode);\n                });\n    }\n\n    /**\n     * Add tags to the tag set or replace tags in the tag set.\n     *\n     * @description If a tag already in the set has the same\n     * id as one of the tags added, the old tag will be removed\n     * the added tag will take its place.\n     *\n     * @param {Array<Tag>} tags - Tags to add.\n     *\n     * @example ```tagComponent.add([tag1, tag2]);```\n     */\n    public add(tags: Tag[]): void {\n        if (this._activated) {\n            this._navigator.stateService.currentTransform$.pipe(\n                first())\n                .subscribe(\n                    (transform: Transform): void => {\n                        this._tagSet.add(tags, transform);\n\n                        const renderTags: RenderTag<Tag>[] = tags\n                            .map(\n                                (tag: Tag): RenderTag<Tag> => {\n                                    return this._tagSet.get(tag.id);\n                                });\n\n                        this._tagScene.add(renderTags);\n                    });\n        } else {\n            this._tagSet.addDeactivated(tags);\n        }\n    }\n\n    /**\n     * Calculate the smallest rectangle containing all the points\n     * in the points geometry.\n     *\n     * @description The result may be different depending on if the\n     * current node is an equirectangular panorama or not. If the\n     * current node is an equirectangular panorama the rectangle may\n     * wrap the horizontal border of the image.\n     *\n     * @returns {Promise<Array<number>>} Promise to the rectangle\n     * on the format specified for the {@link RectGeometry} in basic\n     * coordinates.\n     */\n    public calculateRect(geometry: PointsGeometry): when.Promise<number[]> {\n        return when.promise<number[]>((resolve: (value: number[]) => void, reject: (reason: Error) => void): void => {\n            this._navigator.stateService.currentTransform$.pipe(\n                first(),\n                map(\n                    (transform: Transform): number[] => {\n                        return geometry.getRect2d(transform);\n                    }))\n                .subscribe(\n                    (rect: number[]): void => {\n                        resolve(rect);\n                    },\n                    (error: Error): void => {\n                        reject(error);\n                    });\n        });\n    }\n\n    /**\n     * Force the creation of a geometry programatically using its\n     * current vertices.\n     *\n     * @description The method only has an effect when the tag\n     * mode is either of the following modes:\n     *\n     * TagMode.CreatePoints\n     * TagMode.CreatePolygon\n     * TagMode.CreateRect\n     * TagMode.CreateRectDrag\n     *\n     * In the case of points or polygon creation, only the created\n     * vertices are used, i.e. the mouse position is disregarded.\n     *\n     * In the case of rectangle creation the position of the mouse\n     * at the time of the method call is used as one of the vertices\n     * defining the rectangle.\n     *\n     * @fires TagComponent.geometrycreated\n     *\n     * @example\n     * ```\n     * tagComponent.on(\"geometrycreated\", function(geometry) {\n     *     console.log(geometry);\n     * });\n     *\n     * tagComponent.create();\n     * ```\n     */\n    public create(): void {\n        this._tagCreator.replayedTag$.pipe(\n            first(),\n            filter(\n                (tag: CreateTag<Geometry>): boolean => {\n                    return !!tag;\n                }))\n            .subscribe(\n                (tag: CreateTag<Geometry>): void => {\n                    tag.create();\n                });\n    }\n\n    /**\n     * Change the current tag mode.\n     *\n     * @description Change the tag mode to one of the create modes for creating new geometries.\n     *\n     * @param {TagMode} mode - New tag mode.\n     *\n     * @fires TagComponent#modechanged\n     *\n     * @example ```tagComponent.changeMode(Mapillary.TagComponent.TagMode.CreateRect);```\n     */\n    public changeMode(mode: TagMode): void {\n        this.configure({ mode: mode });\n    }\n\n    /**\n     * Returns the tag in the tag set with the specified id, or\n     * undefined if the id matches no tag.\n     *\n     * @param {string} tagId - Id of the tag.\n     *\n     * @example ```var tag = tagComponent.get(\"tagId\");```\n     */\n    public get(tagId: string): Tag {\n        if (this._activated) {\n            const renderTag: RenderTag<Tag> = this._tagSet.get(tagId);\n            return renderTag !== undefined ? renderTag.tag : undefined;\n        } else {\n            return this._tagSet.getDeactivated(tagId);\n        }\n    }\n\n    /**\n     * Returns an array of all tags.\n     *\n     * @example ```var tags = tagComponent.getAll();```\n     */\n    public getAll(): Tag[] {\n        if (this.activated) {\n            return this._tagSet\n                .getAll()\n                .map(\n                    (renderTag: RenderTag<Tag>): Tag => {\n                        return renderTag.tag;\n                    });\n        } else {\n            return this._tagSet.getAllDeactivated();\n        }\n    }\n\n    /**\n     * Returns an array of tag ids for tags that contain the specified point.\n     *\n     * @description The pixel point must lie inside the polygon or rectangle\n     * of an added tag for the tag id to be returned. Tag ids for\n     * tags that do not have a fill will also be returned if the point is inside\n     * the geometry of the tag. Tags with point geometries can not be retrieved.\n     *\n     * No tag ids will be returned for polygons rendered in cropped panoramas or\n     * rectangles rendered in panoramas.\n     *\n     * Notice that the pixelPoint argument requires x, y coordinates from pixel space.\n     *\n     * With this function, you can use the coordinates provided by mouse\n     * events to get information out of the tag component.\n     *\n     * If no tag at exist the pixel point, an empty array will be returned.\n     *\n     * @param {Array<number>} pixelPoint - Pixel coordinates on the viewer element.\n     * @returns {Promise<Array<string>>} Promise to the ids of the tags that\n     * contain the specified pixel point.\n     *\n     * @example\n     * ```\n     * tagComponent.getTagIdsAt([100, 100])\n     *     .then((tagIds) => { console.log(tagIds); });\n     * ```\n     */\n    public getTagIdsAt(pixelPoint: number[]): when.Promise<string[]> {\n        return when.promise<string[]>((resolve: (value: string[]) => void, reject: (reason: Error) => void): void => {\n            this._container.renderService.renderCamera$.pipe(\n                first(),\n                map(\n                    (render: RenderCamera): string[] => {\n                        const viewport: number[] = this._viewportCoords\n                            .canvasToViewport(\n                                pixelPoint[0],\n                                pixelPoint[1],\n                                this._container.element);\n\n                        const ids: string[] = this._tagScene.intersectObjects(viewport, render.perspective);\n\n                        return ids;\n                    }))\n                .subscribe(\n                    (ids: string[]): void => {\n                        resolve(ids);\n                    },\n                    (error: Error): void => {\n                        reject(error);\n                    });\n        });\n    }\n\n    /**\n     * Check if a tag exist in the tag set.\n     *\n     * @param {string} tagId - Id of the tag.\n     *\n     * @example ```var tagExists = tagComponent.has(\"tagId\");```\n     */\n    public has(tagId: string): boolean {\n        return this._activated ? this._tagSet.has(tagId) : this._tagSet.hasDeactivated(tagId);\n    }\n\n    /**\n     * Remove tags with the specified ids from the tag set.\n     *\n     * @param {Array<string>} tagIds - Ids for tags to remove.\n     *\n     * @example ```tagComponent.remove([\"id-1\", \"id-2\"]);```\n     */\n    public remove(tagIds: string[]): void {\n        if (this._activated) {\n            this._tagSet.remove(tagIds);\n            this._tagScene.remove(tagIds);\n        } else {\n            this._tagSet.removeDeactivated(tagIds);\n        }\n    }\n\n    /**\n     * Remove all tags from the tag set.\n     *\n     * @example ```tagComponent.removeAll();```\n     */\n    public removeAll(): void {\n        if (this._activated) {\n            this._tagSet.removeAll();\n            this._tagScene.removeAll();\n        } else {\n            this._tagSet.removeAllDeactivated();\n        }\n    }\n\n    protected _activate(): void {\n        this._editVertexHandler.enable();\n\n        const handlerGeometryCreated$: Observable<Geometry> =\n            observableFrom<keyof typeof TagMode>(<(keyof typeof TagMode)[]>Object.keys(this._createHandlers)).pipe(\n                map(\n                    (key: keyof typeof TagMode): CreateHandlerBase => {\n                        return this._createHandlers[key];\n                    }),\n                filter(\n                    (handler: CreateHandlerBase): boolean => {\n                        return !!handler;\n                    }),\n                mergeMap(\n                    (handler: CreateHandlerBase): Observable<Geometry> => {\n                        return handler.geometryCreated$;\n                    }),\n                share());\n\n        this._fireGeometryCreatedSubscription = handlerGeometryCreated$\n            .subscribe(\n                (geometry: Geometry): void => {\n                    this.fire(TagComponent.geometrycreated, geometry);\n                });\n\n        this._fireCreateGeometryEventSubscription = this._tagCreator.tag$.pipe(\n            skipWhile(\n                (tag: CreateTag<Geometry>): boolean => {\n                    return tag == null;\n                }),\n            distinctUntilChanged())\n            .subscribe(\n                (tag: CreateTag<Geometry>): void => {\n                    const eventType: string = tag != null ?\n                        TagComponent.creategeometrystart :\n                        TagComponent.creategeometryend;\n\n                    this.fire(eventType, this);\n                });\n\n        this._handlerStopCreateSubscription = handlerGeometryCreated$\n            .subscribe(\n                (): void => {\n                    this.changeMode(TagMode.Default);\n                });\n\n        this._handlerEnablerSubscription = this._creatingConfiguration$\n            .subscribe(\n                (configuration: ITagConfiguration): void => {\n                    this._disableCreateHandlers();\n\n                    const mode: keyof typeof TagMode = <keyof typeof TagMode>TagMode[configuration.mode];\n                    const handler: CreateHandlerBase = this._createHandlers[mode];\n                    if (!!handler) {\n                        handler.enable();\n                    }\n                });\n\n        this._fireTagsChangedSubscription = this._renderTags$\n            .subscribe(\n                (): void => {\n                    this.fire(TagComponent.tagschanged, this);\n                });\n\n        this._stopCreateSubscription = this._tagCreator.tag$.pipe(\n            switchMap(\n                (tag: CreateTag<Geometry>): Observable<void> => {\n                    return tag != null ?\n                        tag.aborted$.pipe(\n                            map((): void => { return null; })) :\n                        observableEmpty();\n                }))\n            .subscribe((): void => { this.changeMode(TagMode.Default); });\n\n        this._setGLCreateTagSubscription = this._tagCreator.tag$\n            .subscribe(\n                (tag: CreateTag<Geometry>): void => {\n                    if (this._tagScene.hasCreateTag()) {\n                        this._tagScene.removeCreateTag();\n                    }\n\n                    if (tag != null) {\n                        this._tagScene.addCreateTag(tag);\n                    }\n                });\n\n        this._createGLObjectsChangedSubscription = this._createGLObjectsChanged$\n            .subscribe(\n                (tag: CreateTag<Geometry>): void => {\n                    this._tagScene.updateCreateTagObjects(tag);\n                });\n\n        this._updateGLObjectsSubscription = this._renderTagGLChanged$\n            .subscribe(\n                (tag: RenderTag<Tag>): void => {\n                    this._tagScene.updateObjects(tag);\n                });\n\n        this._updateTagSceneSubscription = this._tagChanged$\n            .subscribe(\n                (): void => {\n                    this._tagScene.update();\n                });\n\n        this._domSubscription = observableCombineLatest(\n                this._renderTags$.pipe(\n                    startWith([]),\n                    tap(\n                        (): void => {\n                            this._container.domRenderer.render$.next({\n                                name: this._name,\n                                vnode: this._tagDomRenderer.clear(),\n                            });\n                        })),\n                this._container.renderService.renderCamera$,\n                this._container.spriteService.spriteAtlas$,\n                this._container.renderService.size$,\n                this._tagChanged$.pipe(startWith(null)),\n                observableMerge(\n                    this._tagCreator.tag$,\n                    this._createGeometryChanged$).pipe(startWith(null))).pipe(\n            map(\n                ([renderTags, rc, atlas, size, , ct]:\n                [RenderTag<Tag>[], RenderCamera, ISpriteAtlas, ISize, Tag, CreateTag<Geometry>]):\n                    IVNodeHash => {\n                    return {\n                        name: this._name,\n                        vnode: this._tagDomRenderer.render(renderTags, ct, atlas, rc.perspective, size),\n                    };\n                }))\n            .subscribe(this._container.domRenderer.render$);\n\n        this._glSubscription = this._navigator.stateService.currentState$.pipe(\n            map(\n                (frame: IFrame): IGLRenderHash => {\n                    const tagScene: TagScene = this._tagScene;\n\n                    return {\n                        name: this._name,\n                        render: {\n                            frameId: frame.id,\n                            needsRender: tagScene.needsRender,\n                            render: tagScene.render.bind(tagScene),\n                            stage: GLRenderStage.Foreground,\n                        },\n                    };\n                }))\n            .subscribe(this._container.glRenderer.render$);\n\n        this._navigator.stateService.currentTransform$.pipe(\n            first())\n            .subscribe(\n                (transform: Transform): void => {\n                    this._tagSet.activate(transform);\n                    this._tagScene.add(this._tagSet.getAll());\n                });\n\n    }\n\n    protected _deactivate(): void {\n        this._editVertexHandler.disable();\n        this._disableCreateHandlers();\n\n        this._tagScene.clear();\n        this._tagSet.deactivate();\n\n        this._tagCreator.delete$.next(null);\n\n        this._updateGLObjectsSubscription.unsubscribe();\n        this._updateTagSceneSubscription.unsubscribe();\n\n        this._stopCreateSubscription.unsubscribe();\n        this._setGLCreateTagSubscription.unsubscribe();\n        this._createGLObjectsChangedSubscription.unsubscribe();\n\n        this._domSubscription.unsubscribe();\n        this._glSubscription.unsubscribe();\n\n        this._fireCreateGeometryEventSubscription.unsubscribe();\n        this._fireGeometryCreatedSubscription.unsubscribe();\n        this._fireTagsChangedSubscription.unsubscribe();\n\n        this._handlerStopCreateSubscription.unsubscribe();\n        this._handlerEnablerSubscription.unsubscribe();\n\n        this._container.element.classList.remove(\"component-tag-create\");\n    }\n\n    protected _getDefaultConfiguration(): ITagConfiguration {\n        return {\n            createColor: 0xFFFFFF,\n            indicatePointsCompleter: true,\n            mode: TagMode.Default,\n        };\n    }\n\n    private _disableCreateHandlers(): void {\n        const createHandlers: { [K in keyof typeof TagMode]: CreateHandlerBase } = this._createHandlers;\n        for (const key in createHandlers) {\n            if (!createHandlers.hasOwnProperty(key)) {\n                continue;\n            }\n\n            const handler: CreateHandlerBase = createHandlers[<keyof typeof TagMode>key];\n            if (!!handler) {\n                handler.disable();\n            }\n        }\n    }\n}\n\nComponentService.register(TagComponent);\nexport default TagComponent;\n",
+    "import {scan, share, withLatestFrom, map, publishReplay, refCount} from \"rxjs/operators\";\nimport {Observable, Subject} from \"rxjs\";\n\nimport {\n    Component,\n    ITagConfiguration,\n    PolygonGeometry,\n    RectGeometry,\n    PointsGeometry,\n    ExtremePointCreateTag,\n    OutlineCreateTag,\n} from \"../../Component\";\nimport {Transform} from \"../../Geo\";\nimport {Navigator} from \"../../Viewer\";\nimport CreateTag from \"./tag/CreateTag\";\nimport Geometry from \"./geometry/Geometry\";\n\ninterface ICreateTagOperation {\n    (tag: CreateTag<Geometry>): CreateTag<Geometry>;\n}\n\nexport class TagCreator {\n    private _component: Component<ITagConfiguration>;\n    private _navigator: Navigator;\n\n    private _tagOperation$: Subject<ICreateTagOperation>;\n    private _tag$: Observable<CreateTag<Geometry>>;\n    private _replayedTag$: Observable<CreateTag<Geometry>>;\n\n    private _createPoints$: Subject<number[]>;\n    private _createPolygon$: Subject<number[]>;\n    private _createRect$: Subject<number[]>;\n    private _delete$: Subject<void>;\n\n    constructor(component: Component<ITagConfiguration>, navigator: Navigator) {\n        this._component = component;\n        this._navigator = navigator;\n\n        this._tagOperation$ = new Subject<ICreateTagOperation>();\n        this._createPoints$ = new Subject<number[]>();\n        this._createPolygon$ = new Subject<number[]>();\n        this._createRect$ = new Subject<number[]>();\n        this._delete$ = new Subject<void>();\n\n        this._tag$ = this._tagOperation$.pipe(\n            scan(\n                (tag: CreateTag<Geometry>, operation: ICreateTagOperation): CreateTag<Geometry> => {\n                    return operation(tag);\n                },\n                null),\n            share());\n\n        this._replayedTag$ = this._tag$.pipe(\n            publishReplay(1),\n            refCount());\n\n        this._replayedTag$.subscribe();\n\n        this._createPoints$.pipe(\n            withLatestFrom(\n                this._component.configuration$,\n                this._navigator.stateService.currentTransform$),\n            map(\n                ([coord, conf, transform]: [number[], ITagConfiguration, Transform]): ICreateTagOperation => {\n                    return (): CreateTag<Geometry> => {\n                        const geometry: PointsGeometry = new PointsGeometry([\n                            [coord[0], coord[1]],\n                            [coord[0], coord[1]],\n                        ]);\n\n                        return new ExtremePointCreateTag(\n                            geometry,\n                            {\n                                color: conf.createColor,\n                                indicateCompleter: conf.indicatePointsCompleter,\n                            },\n                            transform);\n                    };\n                }))\n            .subscribe(this._tagOperation$);\n\n        this._createRect$.pipe(\n            withLatestFrom(\n                this._component.configuration$,\n                this._navigator.stateService.currentTransform$),\n            map(\n                ([coord, conf, transform]: [number[], ITagConfiguration, Transform]): ICreateTagOperation => {\n                    return (): CreateTag<Geometry> => {\n                        const geometry: RectGeometry = new RectGeometry([\n                            coord[0],\n                            coord[1],\n                            coord[0],\n                            coord[1],\n                        ]);\n\n                        return new OutlineCreateTag(geometry, { color: conf.createColor }, transform);\n                    };\n                }))\n            .subscribe(this._tagOperation$);\n\n        this._createPolygon$.pipe(\n            withLatestFrom(\n                this._component.configuration$,\n                this._navigator.stateService.currentTransform$),\n            map(\n                ([coord, conf, transform]: [number[], ITagConfiguration, Transform]): ICreateTagOperation => {\n                    return (): CreateTag<Geometry> => {\n                        const geometry: PolygonGeometry = new PolygonGeometry([\n                            [coord[0], coord[1]],\n                            [coord[0], coord[1]],\n                            [coord[0], coord[1]],\n                        ]);\n\n                        return new OutlineCreateTag(geometry, { color: conf.createColor }, transform);\n                    };\n                }))\n            .subscribe(this._tagOperation$);\n\n        this._delete$.pipe(\n            map(\n                (): ICreateTagOperation => {\n                    return (): CreateTag<Geometry> => {\n                        return null;\n                    };\n                }))\n            .subscribe(this._tagOperation$);\n    }\n\n    public get createRect$(): Subject<number[]> {\n        return this._createRect$;\n    }\n\n    public get createPolygon$(): Subject<number[]> {\n        return this._createPolygon$;\n    }\n\n    public get createPoints$(): Subject<number[]> {\n        return this._createPoints$;\n    }\n\n    public get delete$(): Subject<void> {\n        return this._delete$;\n    }\n\n    public get tag$(): Observable<CreateTag<Geometry>> {\n        return this._tag$;\n    }\n\n    public get replayedTag$(): Observable<CreateTag<Geometry>> {\n        return this._replayedTag$;\n    }\n}\n\nexport default TagCreator;\n",
+    "import * as THREE from \"three\";\nimport * as vd from \"virtual-dom\";\n\nimport {\n    RenderTag,\n    Tag,\n    CreateTag,\n    Geometry,\n} from \"../../Component\";\nimport {ISize} from \"../../Render\";\nimport {ISpriteAtlas} from \"../../Viewer\";\n\nexport class TagDOMRenderer {\n    public render(\n        tags: RenderTag<Tag>[],\n        createTag: CreateTag<Geometry>,\n        atlas: ISpriteAtlas,\n        camera: THREE.PerspectiveCamera,\n        size: ISize): vd.VNode {\n\n        let vNodes: vd.VNode[] = [];\n\n        for (const tag of tags) {\n            vNodes = vNodes.concat(tag.getDOMObjects(atlas, camera, size));\n        }\n\n        if (createTag != null) {\n            vNodes = vNodes.concat(createTag.getDOMObjects(camera, size));\n        }\n\n        return vd.h(\"div.TagContainer\", {}, vNodes);\n    }\n\n    public clear(): vd.VNode {\n        return vd.h(\"div\", {}, []);\n    }\n}\n",
+    "/**\n * Enumeration for tag modes\n * @enum {number}\n * @readonly\n * @description Modes for the interaction in the tag component.\n */\nexport enum TagMode {\n    /**\n     * Disables creating tags.\n     */\n    Default,\n\n    /**\n     * Create a point geometry through a click.\n     */\n    CreatePoint,\n\n    /**\n     * Create a points geometry through clicks.\n     */\n    CreatePoints,\n\n    /**\n     * Create a polygon geometry through clicks.\n     */\n    CreatePolygon,\n\n    /**\n     * Create a rect geometry through clicks.\n     */\n    CreateRect,\n\n    /**\n     * Create a rect geometry through drag.\n     *\n     * @description Claims the mouse which results in mouse handlers like\n     * drag pan and scroll zoom becoming inactive.\n     */\n    CreateRectDrag,\n}\n\nexport default TagMode;\n",
     "export enum TagOperation {\n    None,\n    Centroid,\n    Vertex,\n}\n\nexport default TagOperation;\n",
-    "import * as THREE from \"three\";\n\nimport {OutlineCreateTag, RenderTag, Tag} from \"../../Component\";\n\ntype TagObjects = {\n    tag: RenderTag<Tag>;\n    objects: THREE.Object3D[];\n    retrievableObjects: THREE.Object3D[];\n};\n\ntype CreateTagObjects = {\n    tag: OutlineCreateTag;\n    objects: THREE.Object3D[];\n};\n\nexport class TagScene {\n    private _createTag: CreateTagObjects;\n    private _needsRender: boolean;\n    private _objectTags: { [uuid: string]: string };\n    private _raycaster: THREE.Raycaster;\n    private _retrievableObjects: THREE.Object3D[];\n    private _scene: THREE.Scene;\n    private _tags: { [id: string]: TagObjects };\n\n    constructor(scene?: THREE.Scene, raycaster?: THREE.Raycaster) {\n        this._createTag = null;\n        this._needsRender = false;\n        this._raycaster = !!raycaster ? raycaster : new THREE.Raycaster();\n        this._scene = !!scene ? scene : new THREE.Scene();\n\n        this._objectTags = {};\n        this._retrievableObjects = [];\n        this._tags = {};\n    }\n\n    public get needsRender(): boolean {\n        return this._needsRender;\n    }\n\n    public add(tags: RenderTag<Tag>[]): void {\n        for (let tag of tags) {\n            if (tag.tag.id in this._tags) {\n                this._remove(tag.tag.id);\n            }\n\n            this._add(tag);\n        }\n\n        this._needsRender = true;\n    }\n\n    public addCreateTag(tag: OutlineCreateTag): void {\n        for (const object of tag.glObjects) {\n            this._scene.add(object);\n        }\n\n        this._createTag = { tag: tag, objects: tag.glObjects };\n\n        this._needsRender = true;\n    }\n\n    public clear(): void {\n        for (const id of Object.keys(this._tags)) {\n            this._remove(id);\n        }\n\n        this._needsRender = false;\n    }\n\n    public get(id: string): RenderTag<Tag> {\n        return this.has(id) ? this._tags[id].tag : undefined;\n    }\n\n    public has(id: string): boolean {\n        return id in this._tags;\n    }\n\n    public hasCreateTag(): boolean {\n        return this._createTag != null;\n    }\n\n    public intersectObjects([viewportX, viewportY]: number[], camera: THREE.Camera): string[] {\n        this._raycaster.setFromCamera(new THREE.Vector2(viewportX, viewportY), camera);\n\n        const intersects: THREE.Intersection[] = this._raycaster.intersectObjects(this._retrievableObjects);\n        const intersectedIds: string[] = [];\n        for (const intersect of intersects) {\n            if (intersect.object.uuid in this._objectTags) {\n                intersectedIds.push(this._objectTags[intersect.object.uuid]);\n            }\n        }\n\n        return intersectedIds;\n    }\n\n    public remove(ids: string[]): void {\n        for (const id of ids) {\n            this._remove(id);\n        }\n\n        this._needsRender = true;\n    }\n\n    public removeAll(): void {\n        for (const id of Object.keys(this._tags)) {\n            this._remove(id);\n        }\n\n        this._needsRender = true;\n    }\n\n    public removeCreateTag(): void {\n        if (this._createTag == null) {\n            return;\n        }\n\n        for (const object of this._createTag.objects) {\n            this._scene.remove(object);\n        }\n\n        this._createTag.tag.dispose();\n        this._createTag = null;\n\n        this._needsRender = true;\n    }\n\n    public render(\n        perspectiveCamera: THREE.PerspectiveCamera,\n        renderer: THREE.Renderer): void {\n\n        renderer.render(this._scene, perspectiveCamera);\n\n        this._needsRender = false;\n    }\n\n    public update(): void {\n        this._needsRender = true;\n    }\n\n    public updateCreateTagObjects(tag: OutlineCreateTag): void {\n        if (this._createTag.tag !== tag) {\n            throw new Error(\"Create tags do not have the same reference.\");\n        }\n\n        for (let object of this._createTag.objects) {\n            this._scene.remove(object);\n        }\n\n        for (const object of tag.glObjects) {\n            this._scene.add(object);\n        }\n\n        this._createTag.objects = tag.glObjects;\n\n        this._needsRender = true;\n    }\n\n    public updateObjects(tag: RenderTag<Tag>): void {\n        const id: string = tag.tag.id;\n\n        if (this._tags[id].tag !== tag) {\n            throw new Error(\"Tags do not have the same reference.\");\n        }\n\n        const tagObjects: TagObjects = this._tags[id];\n\n        this._removeObjects(tagObjects);\n\n        delete this._tags[id];\n\n        this._add(tag);\n        this._needsRender = true;\n    }\n\n    private _add(tag: RenderTag<Tag>): void {\n        const id: string = tag.tag.id;\n        const tagObjects: TagObjects = { tag: tag, objects: [], retrievableObjects: [] };\n\n        this._tags[id] = tagObjects;\n\n        for (const object of tag.getGLObjects()) {\n            tagObjects.objects.push(object);\n            this._scene.add(object);\n        }\n\n        for (const retrievableObject of tag.getRetrievableObjects()) {\n            tagObjects.retrievableObjects.push(retrievableObject);\n            this._retrievableObjects.push(retrievableObject);\n            this._objectTags[retrievableObject.uuid] = tag.tag.id;\n        }\n    }\n\n    private _remove(id: string): void {\n        const tagObjects: TagObjects = this._tags[id];\n\n        this._removeObjects(tagObjects);\n\n        tagObjects.tag.dispose();\n\n        delete this._tags[id];\n    }\n\n    private _removeObjects(tagObjects: TagObjects): void {\n        for (const object of tagObjects.objects) {\n            this._scene.remove(object);\n        }\n\n        for (const retrievableObject of tagObjects.retrievableObjects) {\n            const index: number = this._retrievableObjects.indexOf(retrievableObject);\n            if (index !== -1) {\n                this._retrievableObjects.splice(index, 1);\n            }\n        }\n    }\n}\n\nexport default TagScene;\n",
-    "import {Observable, Subject} from \"rxjs\";\n\nimport {\n    OutlineRenderTag,\n    OutlineTag,\n    RenderTag,\n    SpotRenderTag,\n    SpotTag,\n    Tag,\n} from \"../../Component\";\nimport {Transform} from \"../../Geo\";\n\nexport class TagSet {\n    private _active: boolean;\n\n    private _hash: { [id: string]: RenderTag<Tag> };\n    private _hashDeactivated: { [id: string]: Tag };\n\n    private _notifyChanged$: Subject<TagSet>;\n\n    constructor() {\n        this._active = false;\n        this._hash = {};\n        this._hashDeactivated = {};\n        this._notifyChanged$ = new Subject<TagSet>();\n    }\n\n    public get active(): boolean {\n        return this._active;\n    }\n\n    public get changed$(): Observable<TagSet> {\n        return this._notifyChanged$;\n    }\n\n    public activate(transform: Transform): void {\n        if (this._active) {\n            return;\n        }\n\n        for (const id in this._hashDeactivated) {\n            if (!this._hashDeactivated.hasOwnProperty(id)) {\n                continue;\n            }\n\n            const tag: Tag = this._hashDeactivated[id];\n            this._add(tag, transform);\n        }\n\n        this._hashDeactivated = {};\n        this._active = true;\n\n        this._notifyChanged$.next(this);\n    }\n\n    public deactivate(): void {\n        if (!this._active) {\n            return;\n        }\n\n        for (const id in this._hash) {\n            if (!this._hash.hasOwnProperty(id)) {\n                continue;\n            }\n\n            this._hashDeactivated[id] = this._hash[id].tag;\n        }\n\n        this._hash = {};\n        this._active = false;\n    }\n\n    public add(tags: Tag[], transform: Transform): void {\n        this._assertActivationState(true);\n\n        for (const tag of tags) {\n            this._add(tag, transform);\n        }\n\n        this._notifyChanged$.next(this);\n    }\n\n    public addDeactivated(tags: Tag[]): void {\n        this._assertActivationState(false);\n\n        for (const tag of tags) {\n            if (!(tag instanceof OutlineTag || tag instanceof SpotTag)) {\n                throw new Error(\"Tag type not supported\");\n            }\n\n            this._hashDeactivated[tag.id] = tag;\n        }\n    }\n\n    public get(id: string): RenderTag<Tag> {\n        return this.has(id) ? this._hash[id] : undefined;\n    }\n\n    public getAll(): RenderTag<Tag>[] {\n        const hash: { [id: string]: RenderTag<Tag> } = this._hash;\n\n        return Object.keys(hash)\n            .map(\n                (id: string): RenderTag<Tag> => {\n                    return hash[id];\n                });\n    }\n\n    public getAllDeactivated(): Tag[] {\n        const hashDeactivated: { [id: string]: Tag } = this._hashDeactivated;\n\n        return Object.keys(hashDeactivated)\n            .map(\n                (id: string): Tag => {\n                    return hashDeactivated[id];\n                });\n    }\n\n    public getDeactivated(id: string): Tag {\n        return this.hasDeactivated(id) ? this._hashDeactivated[id] : undefined;\n    }\n\n    public has(id: string): boolean {\n        return id in this._hash;\n    }\n\n    public hasDeactivated(id: string): boolean {\n        return id in this._hashDeactivated;\n    }\n\n    public remove(ids: string[]): void {\n        this._assertActivationState(true);\n\n        const hash: { [id: string]: RenderTag<Tag> } = this._hash;\n        for (const id of ids) {\n            if (!(id in hash)) {\n                continue;\n            }\n\n            delete hash[id];\n        }\n\n        this._notifyChanged$.next(this);\n    }\n\n    public removeAll(): void {\n        this._assertActivationState(true);\n\n        this._hash = {};\n\n        this._notifyChanged$.next(this);\n    }\n\n    public removeAllDeactivated(): void {\n        this._assertActivationState(false);\n\n        this._hashDeactivated = {};\n    }\n\n    public removeDeactivated(ids: string[]): void {\n        this._assertActivationState(false);\n\n        const hashDeactivated: { [id: string]: Tag } = this._hashDeactivated;\n        for (const id of ids) {\n            if (!(id in hashDeactivated)) {\n                continue;\n            }\n\n            delete hashDeactivated[id];\n        }\n    }\n\n    private _add(tag: Tag, transform: Transform): void {\n        if (tag instanceof OutlineTag) {\n            this._hash[tag.id] = new OutlineRenderTag(<OutlineTag>tag, transform);\n        } else if (tag instanceof SpotTag) {\n            this._hash[tag.id] = new SpotRenderTag(<SpotTag>tag, transform);\n        } else {\n            throw new Error(\"Tag type not supported\");\n        }\n    }\n\n    private _assertActivationState(should: boolean): void {\n        if (should !== this._active) {\n            throw new Error(\"Tag set not in correct state for operation.\");\n        }\n    }\n}\n\nexport default TagSet;\n",
-    "import {MapillaryError} from \"../../../Error\";\n\nexport class GeometryTagError extends MapillaryError {\n    constructor (message?: string) {\n        super(message != null ? message : \"The provided geometry value is incorrect\");\n\n        this.name = \"GeometryTagError\";\n    }\n}\n\nexport default MapillaryError;\n",
+    "import * as THREE from \"three\";\n\nimport {RenderTag, Tag, CreateTag, Geometry} from \"../../Component\";\n\ntype TagObjects = {\n    tag: RenderTag<Tag>;\n    objects: THREE.Object3D[];\n    retrievableObjects: THREE.Object3D[];\n};\n\ntype CreateTagObjects = {\n    tag: CreateTag<Geometry>;\n    objects: THREE.Object3D[];\n};\n\nexport class TagScene {\n    private _createTag: CreateTagObjects;\n    private _needsRender: boolean;\n    private _objectTags: { [uuid: string]: string };\n    private _raycaster: THREE.Raycaster;\n    private _retrievableObjects: THREE.Object3D[];\n    private _scene: THREE.Scene;\n    private _tags: { [id: string]: TagObjects };\n\n    constructor(scene?: THREE.Scene, raycaster?: THREE.Raycaster) {\n        this._createTag = null;\n        this._needsRender = false;\n        this._raycaster = !!raycaster ? raycaster : new THREE.Raycaster();\n        this._scene = !!scene ? scene : new THREE.Scene();\n\n        this._objectTags = {};\n        this._retrievableObjects = [];\n        this._tags = {};\n    }\n\n    public get needsRender(): boolean {\n        return this._needsRender;\n    }\n\n    public add(tags: RenderTag<Tag>[]): void {\n        for (let tag of tags) {\n            if (tag.tag.id in this._tags) {\n                this._remove(tag.tag.id);\n            }\n\n            this._add(tag);\n        }\n\n        this._needsRender = true;\n    }\n\n    public addCreateTag(tag: CreateTag<Geometry>): void {\n        for (const object of tag.glObjects) {\n            this._scene.add(object);\n        }\n\n        this._createTag = { tag: tag, objects: tag.glObjects };\n\n        this._needsRender = true;\n    }\n\n    public clear(): void {\n        for (const id of Object.keys(this._tags)) {\n            this._remove(id);\n        }\n\n        this._needsRender = false;\n    }\n\n    public get(id: string): RenderTag<Tag> {\n        return this.has(id) ? this._tags[id].tag : undefined;\n    }\n\n    public has(id: string): boolean {\n        return id in this._tags;\n    }\n\n    public hasCreateTag(): boolean {\n        return this._createTag != null;\n    }\n\n    public intersectObjects([viewportX, viewportY]: number[], camera: THREE.Camera): string[] {\n        this._raycaster.setFromCamera(new THREE.Vector2(viewportX, viewportY), camera);\n\n        const intersects: THREE.Intersection[] = this._raycaster.intersectObjects(this._retrievableObjects);\n        const intersectedIds: string[] = [];\n        for (const intersect of intersects) {\n            if (intersect.object.uuid in this._objectTags) {\n                intersectedIds.push(this._objectTags[intersect.object.uuid]);\n            }\n        }\n\n        return intersectedIds;\n    }\n\n    public remove(ids: string[]): void {\n        for (const id of ids) {\n            this._remove(id);\n        }\n\n        this._needsRender = true;\n    }\n\n    public removeAll(): void {\n        for (const id of Object.keys(this._tags)) {\n            this._remove(id);\n        }\n\n        this._needsRender = true;\n    }\n\n    public removeCreateTag(): void {\n        if (this._createTag == null) {\n            return;\n        }\n\n        for (const object of this._createTag.objects) {\n            this._scene.remove(object);\n        }\n\n        this._createTag.tag.dispose();\n        this._createTag = null;\n\n        this._needsRender = true;\n    }\n\n    public render(\n        perspectiveCamera: THREE.PerspectiveCamera,\n        renderer: THREE.Renderer): void {\n\n        renderer.render(this._scene, perspectiveCamera);\n\n        this._needsRender = false;\n    }\n\n    public update(): void {\n        this._needsRender = true;\n    }\n\n    public updateCreateTagObjects(tag: CreateTag<Geometry>): void {\n        if (this._createTag.tag !== tag) {\n            throw new Error(\"Create tags do not have the same reference.\");\n        }\n\n        for (let object of this._createTag.objects) {\n            this._scene.remove(object);\n        }\n\n        for (const object of tag.glObjects) {\n            this._scene.add(object);\n        }\n\n        this._createTag.objects = tag.glObjects;\n\n        this._needsRender = true;\n    }\n\n    public updateObjects(tag: RenderTag<Tag>): void {\n        const id: string = tag.tag.id;\n\n        if (this._tags[id].tag !== tag) {\n            throw new Error(\"Tags do not have the same reference.\");\n        }\n\n        const tagObjects: TagObjects = this._tags[id];\n\n        this._removeObjects(tagObjects);\n\n        delete this._tags[id];\n\n        this._add(tag);\n        this._needsRender = true;\n    }\n\n    private _add(tag: RenderTag<Tag>): void {\n        const id: string = tag.tag.id;\n        const tagObjects: TagObjects = { tag: tag, objects: [], retrievableObjects: [] };\n\n        this._tags[id] = tagObjects;\n\n        for (const object of tag.getGLObjects()) {\n            tagObjects.objects.push(object);\n            this._scene.add(object);\n        }\n\n        for (const retrievableObject of tag.getRetrievableObjects()) {\n            tagObjects.retrievableObjects.push(retrievableObject);\n            this._retrievableObjects.push(retrievableObject);\n            this._objectTags[retrievableObject.uuid] = tag.tag.id;\n        }\n    }\n\n    private _remove(id: string): void {\n        const tagObjects: TagObjects = this._tags[id];\n\n        this._removeObjects(tagObjects);\n\n        tagObjects.tag.dispose();\n\n        delete this._tags[id];\n    }\n\n    private _removeObjects(tagObjects: TagObjects): void {\n        for (const object of tagObjects.objects) {\n            this._scene.remove(object);\n        }\n\n        for (const retrievableObject of tagObjects.retrievableObjects) {\n            const index: number = this._retrievableObjects.indexOf(retrievableObject);\n            if (index !== -1) {\n                this._retrievableObjects.splice(index, 1);\n            }\n        }\n    }\n}\n\nexport default TagScene;\n",
+    "import {Observable, Subject} from \"rxjs\";\n\nimport {\n    OutlineRenderTag,\n    OutlineTag,\n    RenderTag,\n    SpotRenderTag,\n    SpotTag,\n    Tag,\n} from \"../../Component\";\nimport {Transform} from \"../../Geo\";\nimport ExtremePointTag from \"./tag/ExtremePointTag\";\nimport ExtremePointRenderTag from \"./tag/ExtremePointRenderTag\";\n\nexport class TagSet {\n    private _active: boolean;\n\n    private _hash: { [id: string]: RenderTag<Tag> };\n    private _hashDeactivated: { [id: string]: Tag };\n\n    private _notifyChanged$: Subject<TagSet>;\n\n    constructor() {\n        this._active = false;\n        this._hash = {};\n        this._hashDeactivated = {};\n        this._notifyChanged$ = new Subject<TagSet>();\n    }\n\n    public get active(): boolean {\n        return this._active;\n    }\n\n    public get changed$(): Observable<TagSet> {\n        return this._notifyChanged$;\n    }\n\n    public activate(transform: Transform): void {\n        if (this._active) {\n            return;\n        }\n\n        for (const id in this._hashDeactivated) {\n            if (!this._hashDeactivated.hasOwnProperty(id)) {\n                continue;\n            }\n\n            const tag: Tag = this._hashDeactivated[id];\n            this._add(tag, transform);\n        }\n\n        this._hashDeactivated = {};\n        this._active = true;\n\n        this._notifyChanged$.next(this);\n    }\n\n    public deactivate(): void {\n        if (!this._active) {\n            return;\n        }\n\n        for (const id in this._hash) {\n            if (!this._hash.hasOwnProperty(id)) {\n                continue;\n            }\n\n            this._hashDeactivated[id] = this._hash[id].tag;\n        }\n\n        this._hash = {};\n        this._active = false;\n    }\n\n    public add(tags: Tag[], transform: Transform): void {\n        this._assertActivationState(true);\n\n        for (const tag of tags) {\n            this._add(tag, transform);\n        }\n\n        this._notifyChanged$.next(this);\n    }\n\n    public addDeactivated(tags: Tag[]): void {\n        this._assertActivationState(false);\n\n        for (const tag of tags) {\n            if (!(\n                tag instanceof OutlineTag ||\n                tag instanceof SpotTag ||\n                tag instanceof ExtremePointTag\n                )) {\n                throw new Error(\"Tag type not supported\");\n            }\n\n            this._hashDeactivated[tag.id] = tag;\n        }\n    }\n\n    public get(id: string): RenderTag<Tag> {\n        return this.has(id) ? this._hash[id] : undefined;\n    }\n\n    public getAll(): RenderTag<Tag>[] {\n        const hash: { [id: string]: RenderTag<Tag> } = this._hash;\n\n        return Object.keys(hash)\n            .map(\n                (id: string): RenderTag<Tag> => {\n                    return hash[id];\n                });\n    }\n\n    public getAllDeactivated(): Tag[] {\n        const hashDeactivated: { [id: string]: Tag } = this._hashDeactivated;\n\n        return Object.keys(hashDeactivated)\n            .map(\n                (id: string): Tag => {\n                    return hashDeactivated[id];\n                });\n    }\n\n    public getDeactivated(id: string): Tag {\n        return this.hasDeactivated(id) ? this._hashDeactivated[id] : undefined;\n    }\n\n    public has(id: string): boolean {\n        return id in this._hash;\n    }\n\n    public hasDeactivated(id: string): boolean {\n        return id in this._hashDeactivated;\n    }\n\n    public remove(ids: string[]): void {\n        this._assertActivationState(true);\n\n        const hash: { [id: string]: RenderTag<Tag> } = this._hash;\n        for (const id of ids) {\n            if (!(id in hash)) {\n                continue;\n            }\n\n            delete hash[id];\n        }\n\n        this._notifyChanged$.next(this);\n    }\n\n    public removeAll(): void {\n        this._assertActivationState(true);\n\n        this._hash = {};\n\n        this._notifyChanged$.next(this);\n    }\n\n    public removeAllDeactivated(): void {\n        this._assertActivationState(false);\n\n        this._hashDeactivated = {};\n    }\n\n    public removeDeactivated(ids: string[]): void {\n        this._assertActivationState(false);\n\n        const hashDeactivated: { [id: string]: Tag } = this._hashDeactivated;\n        for (const id of ids) {\n            if (!(id in hashDeactivated)) {\n                continue;\n            }\n\n            delete hashDeactivated[id];\n        }\n    }\n\n    private _add(tag: Tag, transform: Transform): void {\n        if (tag instanceof OutlineTag) {\n            this._hash[tag.id] = new OutlineRenderTag(<OutlineTag>tag, transform);\n        } else if (tag instanceof SpotTag) {\n            this._hash[tag.id] = new SpotRenderTag(<SpotTag>tag, transform);\n        } else if (tag instanceof ExtremePointTag) {\n            this._hash[tag.id] = new ExtremePointRenderTag(<ExtremePointTag>tag, transform);\n        } else {\n            throw new Error(\"Tag type not supported\");\n        }\n    }\n\n    private _assertActivationState(should: boolean): void {\n        if (should !== this._active) {\n            throw new Error(\"Tag set not in correct state for operation.\");\n        }\n    }\n}\n\nexport default TagSet;\n",
+    "import {MapillaryError} from \"../../../Error\";\n\nexport class GeometryTagError extends MapillaryError {\n    constructor (message?: string) {\n        super(message != null ? message : \"The provided geometry value is incorrect\");\n\n        Object.setPrototypeOf(this, GeometryTagError.prototype);\n\n        this.name = \"GeometryTagError\";\n    }\n}\n\nexport default MapillaryError;\n",
     "import {Observable, Subject} from \"rxjs\";\n\nimport {Transform} from \"../../../Geo\";\n\n/**\n * @class Geometry\n * @abstract\n * @classdesc Represents a geometry.\n */\nexport abstract class Geometry {\n    protected _notifyChanged$: Subject<Geometry>;\n\n    /**\n     * Create a geometry.\n     *\n     * @constructor\n     * @ignore\n     */\n    constructor() {\n        this._notifyChanged$ = new Subject<Geometry>();\n    }\n\n    /**\n     * Get changed observable.\n     *\n     * @description Emits the geometry itself every time the geometry\n     * has changed.\n     *\n     * @returns {Observable<Geometry>} Observable emitting the geometry instance.\n     * @ignore\n     */\n    public get changed$(): Observable<Geometry> {\n        return this._notifyChanged$;\n    }\n\n    /**\n     * Get the 2D basic coordinates for the centroid of the geometry.\n     *\n     * @returns {Array<number>} 2D basic coordinates representing the centroid.\n     * @ignore\n     */\n    public abstract getCentroid2d(): number[];\n\n    /**\n     * Get the 3D world coordinates for the centroid of the geometry.\n     *\n     * @param {Transform} transform - The transform of the node related to the geometry.\n     * @returns {Array<number>} 3D world coordinates representing the centroid.\n     * @ignore\n     */\n    public abstract getCentroid3d(transform: Transform): number[];\n\n    /**\n     * Set the 2D centroid of the geometry.\n     *\n     * @param {Array<number>} value - The new value of the centroid in basic coordinates.\n     * @param {Transform} transform - The transform of the node related to the geometry.\n     * @ignore\n     */\n    public abstract setCentroid2d(value: number[], transform: Transform): void;\n}\n\nexport default Geometry;\n",
-    "import {Geometry, GeometryTagError} from \"../../../Component\";\nimport {Transform} from \"../../../Geo\";\n\n/**\n * @class PointGeometry\n *\n * @classdesc Represents a point geometry in the 2D basic image coordinate system.\n *\n * @example\n * ```\n * var basicPoint = [0.5, 0.7];\n * var pointGeometry = new Mapillary.TagComponent.PointGeometry(basicPoint);\n * ```\n */\nexport class PointGeometry extends Geometry {\n    private _point: number[];\n\n    /**\n     * Create a point geometry.\n     *\n     * @constructor\n     * @param {Array<number>} point - An array representing the basic coordinates of\n     * the point.\n     *\n     * @throws {GeometryTagError} Point coordinates must be valid basic coordinates.\n     */\n    constructor(point: number[]) {\n        super();\n\n        let x: number = point[0];\n        let y: number = point[1];\n\n        if (x < 0 || x > 1 || y < 0 || y > 1) {\n            throw new GeometryTagError(\"Basic coordinates must be on the interval [0, 1].\");\n        }\n\n        this._point = point.slice();\n    }\n\n    /**\n     * Get point property.\n     * @returns {Array<number>} Array representing the basic coordinates of the point.\n     */\n    public get point(): number[] {\n        return this._point;\n    }\n\n    /**\n     * Get the 2D basic coordinates for the centroid of the point, i.e. the 2D\n     * basic coordinates of the point itself.\n     *\n     * @returns {Array<number>} 2D basic coordinates representing the centroid.\n     * @ignore\n     */\n    public getCentroid2d(): number[] {\n        return this._point.slice();\n    }\n\n    /**\n     * Get the 3D world coordinates for the centroid of the point, i.e. the 3D\n     * world coordinates of the point itself.\n     *\n     * @param {Transform} transform - The transform of the node related to the point.\n     * @returns {Array<number>} 3D world coordinates representing the centroid.\n     * @ignore\n     */\n    public getCentroid3d(transform: Transform): number[] {\n        return transform.unprojectBasic(this._point, 200);\n    }\n\n    /**\n     * Set the centroid of the point, i.e. the point coordinates.\n     *\n     * @param {Array<number>} value - The new value of the centroid.\n     * @param {Transform} transform - The transform of the node related to the point.\n     * @ignore\n     */\n    public setCentroid2d(value: number[], transform: Transform): void {\n        let changed: number[] = [\n            Math.max(0, Math.min(1, value[0])),\n            Math.max(0, Math.min(1, value[1])),\n        ];\n\n        this._point[0] = changed[0];\n        this._point[1] = changed[1];\n\n        this._notifyChanged$.next(this);\n    }\n}\n",
-    "import {GeometryTagError, VertexGeometry} from \"../../../Component\";\nimport {Transform} from \"../../../Geo\";\n\n/**\n * @class PolygonGeometry\n *\n * @classdesc Represents a polygon geometry in the 2D basic image coordinate system.\n * All polygons and holes provided to the constructor needs to be closed.\n *\n * @example\n * ```\n * var basicPolygon = [[0.5, 0.3], [0.7, 0.3], [0.6, 0.5], [0.5, 0.3]];\n * var polygonGeometry = new Mapillary.TagComponent.PolygonGeometry(basicPolygon);\n * ```\n */\nexport class PolygonGeometry extends VertexGeometry {\n    private _polygon: number[][];\n    private _holes: number[][][];\n\n    /**\n     * Create a polygon geometry.\n     *\n     * @constructor\n     * @param {Array<Array<number>>} polygon - Array of polygon vertices. Must be closed.\n     * @param {Array<Array<Array<number>>>} [holes] - Array of arrays of hole vertices.\n     * Each array of holes vertices must be closed.\n     *\n     * @throws {GeometryTagError} Polygon coordinates must be valid basic coordinates.\n     */\n    constructor(polygon: number[][], holes?: number[][][]) {\n        super();\n\n        let polygonLength: number = polygon.length;\n\n        if (polygonLength < 3) {\n            throw new GeometryTagError(\"A polygon must have three or more positions.\");\n        }\n\n        if (polygon[0][0] !== polygon[polygonLength - 1][0] ||\n            polygon[0][1] !== polygon[polygonLength - 1][1]) {\n            throw new GeometryTagError(\"First and last positions must be equivalent.\");\n        }\n\n        this._polygon = [];\n        for (let vertex of polygon) {\n            if (vertex[0] < 0 || vertex[0] > 1 ||\n                vertex[1] < 0 || vertex[1] > 1) {\n                throw new GeometryTagError(\"Basic coordinates of polygon must be on the interval [0, 1].\");\n            }\n\n            this._polygon.push(vertex.slice());\n        }\n\n        this._holes = [];\n\n        if (holes == null) {\n            return;\n        }\n\n        for (let i: number = 0; i < holes.length; i++) {\n            let hole: number[][] = holes[i];\n            let holeLength: number = hole.length;\n\n            if (holeLength < 3) {\n                throw new GeometryTagError(\"A polygon hole must have three or more positions.\");\n            }\n\n            if (hole[0][0] !== hole[holeLength - 1][0] ||\n                hole[0][1] !== hole[holeLength - 1][1]) {\n                throw new GeometryTagError(\"First and last positions of hole must be equivalent.\");\n            }\n\n            this._holes.push([]);\n\n            for (let vertex of hole) {\n                if (vertex[0] < 0 || vertex[0] > 1 ||\n                    vertex[1] < 0 || vertex[1] > 1) {\n                    throw new GeometryTagError(\"Basic coordinates of hole must be on the interval [0, 1].\");\n                }\n\n                this._holes[i].push(vertex.slice());\n            }\n        }\n    }\n\n    /**\n     * Get polygon property.\n     * @returns {Array<Array<number>>} Closed 2d polygon.\n     */\n    public get polygon(): number[][] {\n        return this._polygon;\n    }\n\n    /**\n     * Get holes property.\n     * @returns {Array<Array<Array<number>>>} Holes of 2d polygon.\n     */\n    public get holes(): number[][][] {\n        return this._holes;\n    }\n\n    /**\n     * Add a vertex to the polygon by appending it after the last vertex.\n     *\n     * @param {Array<number>} vertex - Vertex to add.\n     * @ignore\n     */\n    public addVertex2d(vertex: number[]): void {\n        let clamped: number[] = [\n            Math.max(0, Math.min(1, vertex[0])),\n            Math.max(0, Math.min(1, vertex[1])),\n        ];\n\n        this._polygon.splice(this._polygon.length - 1, 0, clamped);\n\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Get the coordinates of a vertex from the polygon representation of the geometry.\n     *\n     * @description The first vertex represents the bottom-left corner with the rest of\n     * the vertices following in clockwise order.\n     *\n     * @param {number} index - Vertex index.\n     * @returns {Array<number>} Array representing the 2D basic coordinates of the vertex.\n     * @ignore\n     */\n    public getVertex2d(index: number): number[] {\n        return this._polygon[index].slice();\n    }\n\n    /**\n     * Remove a vertex from the polygon.\n     *\n     * @param {number} index - The index of the vertex to remove.\n     * @ignore\n     */\n    public removeVertex2d(index: number): void {\n        if (index < 0 ||\n            index >= this._polygon.length ||\n            this._polygon.length < 4) {\n            throw new GeometryTagError(\"Index for removed vertex must be valid.\");\n        }\n\n        if (index > 0 && index < this._polygon.length - 1) {\n            this._polygon.splice(index, 1);\n        } else {\n            this._polygon.splice(0, 1);\n            this._polygon.pop();\n\n            let closing: number[] = this._polygon[0].slice();\n            this._polygon.push(closing);\n        }\n\n        this._notifyChanged$.next(this);\n    }\n\n    /** @ignore */\n    public setVertex2d(index: number, value: number[], transform: Transform): void {\n        let changed: number[] = [\n            Math.max(0, Math.min(1, value[0])),\n            Math.max(0, Math.min(1, value[1])),\n        ];\n\n        if (index === 0 || index === this._polygon.length - 1) {\n            this._polygon[0] = changed.slice();\n            this._polygon[this._polygon.length - 1] = changed.slice();\n        } else {\n            this._polygon[index] = changed.slice();\n        }\n\n        this._notifyChanged$.next(this);\n    }\n\n    /** @ignore */\n    public setCentroid2d(value: number[], transform: Transform): void {\n        let xs: number[] = this._polygon.map((point: number[]): number => { return point[0]; });\n        let ys: number[] = this._polygon.map((point: number[]): number => { return point[1]; });\n\n        let minX: number = Math.min.apply(Math, xs);\n        let maxX: number = Math.max.apply(Math, xs);\n        let minY: number = Math.min.apply(Math, ys);\n        let maxY: number = Math.max.apply(Math, ys);\n\n        let centroid: number[] = this.getCentroid2d();\n\n        let minTranslationX: number = -minX;\n        let maxTranslationX: number = 1 - maxX;\n        let minTranslationY: number = -minY;\n        let maxTranslationY: number = 1 - maxY;\n\n        let translationX: number = Math.max(minTranslationX, Math.min(maxTranslationX, value[0] - centroid[0]));\n        let translationY: number = Math.max(minTranslationY, Math.min(maxTranslationY, value[1] - centroid[1]));\n\n        for (let point of this._polygon) {\n            point[0] += translationX;\n            point[1] += translationY;\n        }\n\n        this._notifyChanged$.next(this);\n    }\n\n    /** @ignore */\n    public getPoints3d(transform: Transform): number[][] {\n        return this._getPoints3d(\n            this._subsample(this._polygon),\n            transform);\n    }\n\n    /** @ignore */\n    public getVertex3d(index: number, transform: Transform): number[] {\n        return transform.unprojectBasic(this._polygon[index], 200);\n    }\n\n    /** @ignore */\n    public getVertices2d(): number[][] {\n        return this._polygon.slice();\n    }\n\n    /** @ignore */\n    public getVertices3d(transform: Transform): number[][] {\n        return this._getPoints3d(this._polygon, transform);\n    }\n\n    /**\n     * Get a polygon representation of the 3D coordinates for the vertices of each hole\n     * of the geometry. Line segments between vertices will possibly be subsampled\n     * resulting in a larger number of points than the total number of vertices.\n     *\n     * @param {Transform} transform - The transform of the node related to the geometry.\n     * @returns {Array<Array<Array<number>>>} Array of hole polygons in 3D world coordinates\n     * representing the vertices of each hole of the geometry.\n     * @ignore\n     */\n    public getHolePoints3d(transform: Transform): number[][][] {\n        return this._holes\n            .map(\n                (hole2d: number[][]): number[][] => {\n                    return this._getPoints3d(\n                        this._subsample(hole2d),\n                        transform);\n                });\n    }\n\n    /**\n     * Get a polygon representation of the 3D coordinates for the vertices of each hole\n     * of the geometry.\n     *\n     * @param {Transform} transform - The transform of the node related to the geometry.\n     * @returns {Array<Array<Array<number>>>} Array of hole polygons in 3D world coordinates\n     * representing the vertices of each hole of the geometry.\n     * @ignore\n     */\n    public getHoleVertices3d(transform: Transform): number[][][] {\n        return this._holes\n            .map(\n                (hole2d: number[][]): number[][] => {\n                    return this._getPoints3d(hole2d, transform);\n                });\n    }\n\n    /** @ignore */\n    public getCentroid2d(): number[] {\n        let polygon: number[][] = this._polygon;\n\n        let area: number = 0;\n        let centroidX: number = 0;\n        let centroidY: number = 0;\n\n        for (let i: number = 0; i < polygon.length - 1; i++) {\n            let xi: number = polygon[i][0];\n            let yi: number = polygon[i][1];\n            let xi1: number = polygon[i + 1][0];\n            let yi1: number = polygon[i + 1][1];\n\n            let a: number = xi * yi1 - xi1 * yi;\n\n            area += a;\n            centroidX += (xi + xi1) * a;\n            centroidY += (yi + yi1) * a;\n        }\n\n        area /= 2;\n\n        centroidX /= 6 * area;\n        centroidY /= 6 * area;\n\n        return [centroidX, centroidY];\n    }\n\n    /** @ignore */\n    public getCentroid3d(transform: Transform): number[] {\n        let centroid2d: number[] = this.getCentroid2d();\n\n        return transform.unprojectBasic(centroid2d, 200);\n    }\n\n    /** @ignore */\n    public get3dDomainTriangles3d(transform: Transform): number[] {\n        return this._triangulate(\n            this._project(this._polygon, transform),\n            this.getVertices3d(transform),\n            this._holes\n                .map(\n                    (hole2d: number[][]): number[][] => {\n                        return this._project(hole2d, transform);\n                    }),\n            this.getHoleVertices3d(transform));\n    }\n\n    /** @ignore */\n    public getTriangles3d(transform: Transform): number[] {\n        if (transform.fullPano) {\n            return this._triangulatePano(\n                this._polygon.slice(),\n                this.holes.slice(),\n                transform);\n        }\n\n        const points2d: number[][] = this._project(this._subsample(this._polygon), transform);\n        const points3d: number[][] = this.getPoints3d(transform);\n\n        const holes2d: number[][][] = this._holes\n            .map(\n                (hole: number[][]): number[][] => {\n                    return this._project(this._subsample(hole), transform);\n                });\n\n        const holes3d: number[][][] = this.getHolePoints3d(transform);\n\n        return this._triangulate(\n            points2d,\n            points3d,\n            holes2d,\n            holes3d);\n    }\n\n    /** @ignore */\n    public getPoleOfInaccessibility2d(): number[] {\n        return this._getPoleOfInaccessibility2d(this._polygon.slice());\n    }\n\n    /** @ignore */\n    public getPoleOfInaccessibility3d(transform: Transform): number[] {\n        let pole2d: number[] = this._getPoleOfInaccessibility2d(this._polygon.slice());\n\n        return transform.unprojectBasic(pole2d, 200);\n    }\n\n    private _getPoints3d(points2d: number[][], transform: Transform): number[][] {\n        return points2d\n            .map(\n                (point: number[]) => {\n                    return transform.unprojectBasic(point, 200);\n                });\n    }\n}\n\nexport default PolygonGeometry;\n",
+    "import {Geometry, GeometryTagError} from \"../../../Component\";\nimport {Transform} from \"../../../Geo\";\n\n/**\n * @class PointGeometry\n *\n * @classdesc Represents a point geometry in the 2D basic image coordinate system.\n *\n * @example\n * ```\n * var basicPoint = [0.5, 0.7];\n * var pointGeometry = new Mapillary.TagComponent.PointGeometry(basicPoint);\n * ```\n */\nexport class PointGeometry extends Geometry {\n    private _point: number[];\n\n    /**\n     * Create a point geometry.\n     *\n     * @constructor\n     * @param {Array<number>} point - An array representing the basic coordinates of\n     * the point.\n     *\n     * @throws {GeometryTagError} Point coordinates must be valid basic coordinates.\n     */\n    constructor(point: number[]) {\n        super();\n\n        let x: number = point[0];\n        let y: number = point[1];\n\n        if (x < 0 || x > 1 || y < 0 || y > 1) {\n            throw new GeometryTagError(\"Basic coordinates must be on the interval [0, 1].\");\n        }\n\n        this._point = point.slice();\n    }\n\n    /**\n     * Get point property.\n     * @returns {Array<number>} Array representing the basic coordinates of the point.\n     */\n    public get point(): number[] {\n        return this._point;\n    }\n\n    /**\n     * Get the 2D basic coordinates for the centroid of the point, i.e. the 2D\n     * basic coordinates of the point itself.\n     *\n     * @returns {Array<number>} 2D basic coordinates representing the centroid.\n     * @ignore\n     */\n    public getCentroid2d(): number[] {\n        return this._point.slice();\n    }\n\n    /**\n     * Get the 3D world coordinates for the centroid of the point, i.e. the 3D\n     * world coordinates of the point itself.\n     *\n     * @param {Transform} transform - The transform of the node related to the point.\n     * @returns {Array<number>} 3D world coordinates representing the centroid.\n     * @ignore\n     */\n    public getCentroid3d(transform: Transform): number[] {\n        return transform.unprojectBasic(this._point, 200);\n    }\n\n    /**\n     * Set the centroid of the point, i.e. the point coordinates.\n     *\n     * @param {Array<number>} value - The new value of the centroid.\n     * @param {Transform} transform - The transform of the node related to the point.\n     * @ignore\n     */\n    public setCentroid2d(value: number[], transform: Transform): void {\n        let changed: number[] = [\n            Math.max(0, Math.min(1, value[0])),\n            Math.max(0, Math.min(1, value[1])),\n        ];\n\n        this._point[0] = changed[0];\n        this._point[1] = changed[1];\n\n        this._notifyChanged$.next(this);\n    }\n}\n\nexport default PointGeometry;\n",
+    "import {Geometry, GeometryTagError} from \"../../../Component\";\nimport {Transform} from \"../../../Geo\";\n\n/**\n * @class PointsGeometry\n *\n * @classdesc Represents a point set in the 2D basic image coordinate system.\n *\n * @example\n * ```\n * var points = [[0.5, 0.3], [0.7, 0.3], [0.6, 0.5]];\n * var pointsGeometry = new Mapillary.TagComponent.PointsGeometry(points);\n * ```\n */\nexport class PointsGeometry extends Geometry {\n    private _points: number[][];\n\n    /**\n     * Create a points geometry.\n     *\n     * @constructor\n     * @param {Array<Array<number>>} points - Array of 2D points on the basic coordinate\n     * system. The number of points must be greater than or equal to two.\n     *\n     * @throws {GeometryTagError} Point coordinates must be valid basic coordinates.\n     */\n    constructor(points: number[][]) {\n        super();\n\n        const pointsLength: number = points.length;\n\n        if (pointsLength < 2) {\n            throw new GeometryTagError(\"A points geometry must have two or more positions.\");\n        }\n\n        this._points = [];\n        for (const point of points) {\n            if (point[0] < 0 || point[0] > 1 ||\n                point[1] < 0 || point[1] > 1) {\n                throw new GeometryTagError(\"Basic coordinates of points must be on the interval [0, 1].\");\n            }\n\n            this._points.push(point.slice());\n        }\n    }\n\n    /**\n     * Get points property.\n     * @returns {Array<Array<number>>} Array of 2d points.\n     */\n    public get points(): number[][] {\n        return this._points;\n    }\n\n    /**\n     * Add a point to the point set.\n     *\n     * @param {Array<number>} point - Point to add.\n     * @ignore\n     */\n    public addPoint2d(point: number[]): void {\n        const clamped: number[] = [\n            Math.max(0, Math.min(1, point[0])),\n            Math.max(0, Math.min(1, point[1])),\n        ];\n\n        this._points.push(clamped);\n\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Get the coordinates of a point from the point set representation of the geometry.\n     *\n     * @param {number} index - Point index.\n     * @returns {Array<number>} Array representing the 2D basic coordinates of the point.\n     * @ignore\n     */\n    public getPoint2d(index: number): number[] {\n        return this._points[index].slice();\n    }\n\n    /**\n     * Remove a point from the point set.\n     *\n     * @param {number} index - The index of the point to remove.\n     * @ignore\n     */\n    public removePoint2d(index: number): void {\n        if (index < 0 ||\n            index >= this._points.length ||\n            this._points.length < 3) {\n            throw new GeometryTagError(\"Index for removed point must be valid.\");\n        }\n\n        this._points.splice(index, 1);\n\n        this._notifyChanged$.next(this);\n    }\n\n    /** @ignore */\n    public setVertex2d(index: number, value: number[], transform: Transform): void {\n        this.setPoint2d(index, value, transform);\n    }\n\n    /** @ignore */\n    public setPoint2d(index: number, value: number[], transform: Transform): void {\n        const changed: number[] = [\n            Math.max(0, Math.min(1, value[0])),\n            Math.max(0, Math.min(1, value[1])),\n        ];\n\n        this._points[index] = changed;\n\n        this._notifyChanged$.next(this);\n    }\n\n    /** @ignore */\n    public getPoints3d(transform: Transform): number[][] {\n        return this._getPoints3d(this._points, transform);\n    }\n\n    /** @ignore */\n    public getPoint3d(index: number, transform: Transform): number[] {\n        return transform.unprojectBasic(this._points[index], 200);\n    }\n\n    /** @ignore */\n    public getPoints2d(): number[][] {\n        return this._points.slice();\n    }\n\n    /** @ignore */\n    public getCentroid2d(transform?: Transform): number[] {\n        if (!transform) {\n            throw new GeometryTagError(\"Get centroid must be called with a transform for points geometries.\");\n        }\n\n        const [minX, minY, maxX, maxY]: number[] = this.getRect2d(transform);\n\n        const centroidX: number = minX < maxX ?\n            (minX + maxX) / 2 :\n            ((minX + maxX + 1) / 2) % 1;\n\n        const centroidY: number = (minY + maxY) / 2;\n\n        return [centroidX, centroidY];\n    }\n\n    /** @ignore */\n    public getCentroid3d(transform: Transform): number[] {\n        let centroid2d: number[] = this.getCentroid2d();\n\n        return transform.unprojectBasic(centroid2d, 200);\n    }\n\n    /** @ignore */\n    public getRect2d(transform: Transform): number[] {\n        let minX: number = 1;\n        let maxX: number = 0;\n        let minY: number = 1;\n        let maxY: number = 0;\n\n        const points: number[][] = this._points;\n\n        for (const point of points) {\n            if (point[0] < minX) {\n                minX = point[0];\n            }\n\n            if (point[0] > maxX) {\n                maxX = point[0];\n            }\n\n            if (point[1] < minY) {\n                minY = point[1];\n            }\n\n            if (point[1] > maxY) {\n                maxY = point[1];\n            }\n        }\n\n        if (transform.fullPano) {\n            const indices: number[] = [];\n            for (let i: number = 0; i < points.length; i++) {\n                indices[i] = i;\n            }\n\n            indices.sort(\n                (a, b): number => {\n                    return points[a][0] < points[b][0] ?\n                        -1 :\n                        points[a][0] > points[b][0] ?\n                            1 :\n                            a < b ? -1 : 1;\n                });\n\n            let maxDistanceX: number = points[indices[0]][0] + 1 - points[indices[indices.length - 1]][0];\n            let leftMostIndex: number = 0;\n\n            for (let i: number = 0; i < indices.length - 1; i++) {\n                const index1: number = indices[i];\n                const index2: number = indices[i + 1];\n                const distanceX: number = points[index2][0] - points[index1][0];\n\n                if (distanceX > maxDistanceX) {\n                    maxDistanceX = distanceX;\n                    leftMostIndex = i + 1;\n                }\n            }\n\n            if (leftMostIndex > 0) {\n                minX = points[indices[leftMostIndex]][0];\n                maxX = points[indices[leftMostIndex - 1]][0];\n            }\n        }\n\n        return [minX, minY, maxX, maxY];\n    }\n\n    /** @ignore */\n    public setCentroid2d(value: number[], transform: Transform): void {\n        throw new Error(\"Not implemented\");\n    }\n\n    private _getPoints3d(points2d: number[][], transform: Transform): number[][] {\n        return points2d\n            .map(\n                (point: number[]) => {\n                    return transform.unprojectBasic(point, 200);\n                });\n    }\n}\n\nexport default PointsGeometry;\n",
+    "import {GeometryTagError, VertexGeometry} from \"../../../Component\";\nimport {Transform} from \"../../../Geo\";\n\n/**\n * @class PolygonGeometry\n *\n * @classdesc Represents a polygon geometry in the 2D basic image coordinate system.\n * All polygons and holes provided to the constructor needs to be closed.\n *\n * @example\n * ```\n * var basicPolygon = [[0.5, 0.3], [0.7, 0.3], [0.6, 0.5], [0.5, 0.3]];\n * var polygonGeometry = new Mapillary.TagComponent.PolygonGeometry(basicPolygon);\n * ```\n */\nexport class PolygonGeometry extends VertexGeometry {\n    private _polygon: number[][];\n    private _holes: number[][][];\n\n    /**\n     * Create a polygon geometry.\n     *\n     * @constructor\n     * @param {Array<Array<number>>} polygon - Array of polygon vertices. Must be closed.\n     * @param {Array<Array<Array<number>>>} [holes] - Array of arrays of hole vertices.\n     * Each array of holes vertices must be closed.\n     *\n     * @throws {GeometryTagError} Polygon coordinates must be valid basic coordinates.\n     */\n    constructor(polygon: number[][], holes?: number[][][]) {\n        super();\n\n        let polygonLength: number = polygon.length;\n\n        if (polygonLength < 3) {\n            throw new GeometryTagError(\"A polygon must have three or more positions.\");\n        }\n\n        if (polygon[0][0] !== polygon[polygonLength - 1][0] ||\n            polygon[0][1] !== polygon[polygonLength - 1][1]) {\n            throw new GeometryTagError(\"First and last positions must be equivalent.\");\n        }\n\n        this._polygon = [];\n        for (let vertex of polygon) {\n            if (vertex[0] < 0 || vertex[0] > 1 ||\n                vertex[1] < 0 || vertex[1] > 1) {\n                throw new GeometryTagError(\"Basic coordinates of polygon must be on the interval [0, 1].\");\n            }\n\n            this._polygon.push(vertex.slice());\n        }\n\n        this._holes = [];\n\n        if (holes == null) {\n            return;\n        }\n\n        for (let i: number = 0; i < holes.length; i++) {\n            let hole: number[][] = holes[i];\n            let holeLength: number = hole.length;\n\n            if (holeLength < 3) {\n                throw new GeometryTagError(\"A polygon hole must have three or more positions.\");\n            }\n\n            if (hole[0][0] !== hole[holeLength - 1][0] ||\n                hole[0][1] !== hole[holeLength - 1][1]) {\n                throw new GeometryTagError(\"First and last positions of hole must be equivalent.\");\n            }\n\n            this._holes.push([]);\n\n            for (let vertex of hole) {\n                if (vertex[0] < 0 || vertex[0] > 1 ||\n                    vertex[1] < 0 || vertex[1] > 1) {\n                    throw new GeometryTagError(\"Basic coordinates of hole must be on the interval [0, 1].\");\n                }\n\n                this._holes[i].push(vertex.slice());\n            }\n        }\n    }\n\n    /**\n     * Get polygon property.\n     * @returns {Array<Array<number>>} Closed 2d polygon.\n     */\n    public get polygon(): number[][] {\n        return this._polygon;\n    }\n\n    /**\n     * Get holes property.\n     * @returns {Array<Array<Array<number>>>} Holes of 2d polygon.\n     */\n    public get holes(): number[][][] {\n        return this._holes;\n    }\n\n    /**\n     * Add a vertex to the polygon by appending it after the last vertex.\n     *\n     * @param {Array<number>} vertex - Vertex to add.\n     * @ignore\n     */\n    public addVertex2d(vertex: number[]): void {\n        let clamped: number[] = [\n            Math.max(0, Math.min(1, vertex[0])),\n            Math.max(0, Math.min(1, vertex[1])),\n        ];\n\n        this._polygon.splice(this._polygon.length - 1, 0, clamped);\n\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Get the coordinates of a vertex from the polygon representation of the geometry.\n     *\n     * @param {number} index - Vertex index.\n     * @returns {Array<number>} Array representing the 2D basic coordinates of the vertex.\n     * @ignore\n     */\n    public getVertex2d(index: number): number[] {\n        return this._polygon[index].slice();\n    }\n\n    /**\n     * Remove a vertex from the polygon.\n     *\n     * @param {number} index - The index of the vertex to remove.\n     * @ignore\n     */\n    public removeVertex2d(index: number): void {\n        if (index < 0 ||\n            index >= this._polygon.length ||\n            this._polygon.length < 4) {\n            throw new GeometryTagError(\"Index for removed vertex must be valid.\");\n        }\n\n        if (index > 0 && index < this._polygon.length - 1) {\n            this._polygon.splice(index, 1);\n        } else {\n            this._polygon.splice(0, 1);\n            this._polygon.pop();\n\n            let closing: number[] = this._polygon[0].slice();\n            this._polygon.push(closing);\n        }\n\n        this._notifyChanged$.next(this);\n    }\n\n    /** @ignore */\n    public setVertex2d(index: number, value: number[], transform: Transform): void {\n        let changed: number[] = [\n            Math.max(0, Math.min(1, value[0])),\n            Math.max(0, Math.min(1, value[1])),\n        ];\n\n        if (index === 0 || index === this._polygon.length - 1) {\n            this._polygon[0] = changed.slice();\n            this._polygon[this._polygon.length - 1] = changed.slice();\n        } else {\n            this._polygon[index] = changed.slice();\n        }\n\n        this._notifyChanged$.next(this);\n    }\n\n    /** @ignore */\n    public setCentroid2d(value: number[], transform: Transform): void {\n        let xs: number[] = this._polygon.map((point: number[]): number => { return point[0]; });\n        let ys: number[] = this._polygon.map((point: number[]): number => { return point[1]; });\n\n        let minX: number = Math.min.apply(Math, xs);\n        let maxX: number = Math.max.apply(Math, xs);\n        let minY: number = Math.min.apply(Math, ys);\n        let maxY: number = Math.max.apply(Math, ys);\n\n        let centroid: number[] = this.getCentroid2d();\n\n        let minTranslationX: number = -minX;\n        let maxTranslationX: number = 1 - maxX;\n        let minTranslationY: number = -minY;\n        let maxTranslationY: number = 1 - maxY;\n\n        let translationX: number = Math.max(minTranslationX, Math.min(maxTranslationX, value[0] - centroid[0]));\n        let translationY: number = Math.max(minTranslationY, Math.min(maxTranslationY, value[1] - centroid[1]));\n\n        for (let point of this._polygon) {\n            point[0] += translationX;\n            point[1] += translationY;\n        }\n\n        this._notifyChanged$.next(this);\n    }\n\n    /** @ignore */\n    public getPoints3d(transform: Transform): number[][] {\n        return this._getPoints3d(\n            this._subsample(this._polygon),\n            transform);\n    }\n\n    /** @ignore */\n    public getVertex3d(index: number, transform: Transform): number[] {\n        return transform.unprojectBasic(this._polygon[index], 200);\n    }\n\n    /** @ignore */\n    public getVertices2d(): number[][] {\n        return this._polygon.slice();\n    }\n\n    /** @ignore */\n    public getVertices3d(transform: Transform): number[][] {\n        return this._getPoints3d(this._polygon, transform);\n    }\n\n    /**\n     * Get a polygon representation of the 3D coordinates for the vertices of each hole\n     * of the geometry. Line segments between vertices will possibly be subsampled\n     * resulting in a larger number of points than the total number of vertices.\n     *\n     * @param {Transform} transform - The transform of the node related to the geometry.\n     * @returns {Array<Array<Array<number>>>} Array of hole polygons in 3D world coordinates\n     * representing the vertices of each hole of the geometry.\n     * @ignore\n     */\n    public getHolePoints3d(transform: Transform): number[][][] {\n        return this._holes\n            .map(\n                (hole2d: number[][]): number[][] => {\n                    return this._getPoints3d(\n                        this._subsample(hole2d),\n                        transform);\n                });\n    }\n\n    /**\n     * Get a polygon representation of the 3D coordinates for the vertices of each hole\n     * of the geometry.\n     *\n     * @param {Transform} transform - The transform of the node related to the geometry.\n     * @returns {Array<Array<Array<number>>>} Array of hole polygons in 3D world coordinates\n     * representing the vertices of each hole of the geometry.\n     * @ignore\n     */\n    public getHoleVertices3d(transform: Transform): number[][][] {\n        return this._holes\n            .map(\n                (hole2d: number[][]): number[][] => {\n                    return this._getPoints3d(hole2d, transform);\n                });\n    }\n\n    /** @ignore */\n    public getCentroid2d(): number[] {\n        let polygon: number[][] = this._polygon;\n\n        let area: number = 0;\n        let centroidX: number = 0;\n        let centroidY: number = 0;\n\n        for (let i: number = 0; i < polygon.length - 1; i++) {\n            let xi: number = polygon[i][0];\n            let yi: number = polygon[i][1];\n            let xi1: number = polygon[i + 1][0];\n            let yi1: number = polygon[i + 1][1];\n\n            let a: number = xi * yi1 - xi1 * yi;\n\n            area += a;\n            centroidX += (xi + xi1) * a;\n            centroidY += (yi + yi1) * a;\n        }\n\n        area /= 2;\n\n        centroidX /= 6 * area;\n        centroidY /= 6 * area;\n\n        return [centroidX, centroidY];\n    }\n\n    /** @ignore */\n    public getCentroid3d(transform: Transform): number[] {\n        let centroid2d: number[] = this.getCentroid2d();\n\n        return transform.unprojectBasic(centroid2d, 200);\n    }\n\n    /** @ignore */\n    public get3dDomainTriangles3d(transform: Transform): number[] {\n        return this._triangulate(\n            this._project(this._polygon, transform),\n            this.getVertices3d(transform),\n            this._holes\n                .map(\n                    (hole2d: number[][]): number[][] => {\n                        return this._project(hole2d, transform);\n                    }),\n            this.getHoleVertices3d(transform));\n    }\n\n    /** @ignore */\n    public getTriangles3d(transform: Transform): number[] {\n        if (transform.fullPano) {\n            return this._triangulatePano(\n                this._polygon.slice(),\n                this.holes.slice(),\n                transform);\n        }\n\n        const points2d: number[][] = this._project(this._subsample(this._polygon), transform);\n        const points3d: number[][] = this.getPoints3d(transform);\n\n        const holes2d: number[][][] = this._holes\n            .map(\n                (hole: number[][]): number[][] => {\n                    return this._project(this._subsample(hole), transform);\n                });\n\n        const holes3d: number[][][] = this.getHolePoints3d(transform);\n\n        return this._triangulate(\n            points2d,\n            points3d,\n            holes2d,\n            holes3d);\n    }\n\n    /** @ignore */\n    public getPoleOfInaccessibility2d(): number[] {\n        return this._getPoleOfInaccessibility2d(this._polygon.slice());\n    }\n\n    /** @ignore */\n    public getPoleOfInaccessibility3d(transform: Transform): number[] {\n        let pole2d: number[] = this._getPoleOfInaccessibility2d(this._polygon.slice());\n\n        return transform.unprojectBasic(pole2d, 200);\n    }\n\n    private _getPoints3d(points2d: number[][], transform: Transform): number[][] {\n        return points2d\n            .map(\n                (point: number[]) => {\n                    return transform.unprojectBasic(point, 200);\n                });\n    }\n}\n\nexport default PolygonGeometry;\n",
     "import {GeometryTagError, VertexGeometry} from \"../../../Component\";\nimport {Transform} from \"../../../Geo\";\n\n/**\n * @class RectGeometry\n *\n * @classdesc Represents a rectangle geometry in the 2D basic image coordinate system.\n *\n * @example\n * ```\n * var basicRect = [0.5, 0.3, 0.7, 0.4];\n * var rectGeometry = new Mapillary.TagComponent.RectGeometry(basicRect);\n * ```\n */\nexport class RectGeometry extends VertexGeometry {\n    private _anchorIndex: number;\n    private _inverted: boolean;\n    private _rect: number[];\n\n    /**\n     * Create a rectangle geometry.\n     *\n     * @constructor\n     * @param {Array<number>} rect - An array representing the top-left and bottom-right\n     * corners of the rectangle in basic coordinates. Ordered according to [x0, y0, x1, y1].\n     *\n     * @throws {GeometryTagError} Rectangle coordinates must be valid basic coordinates.\n     */\n    constructor(rect: number[]) {\n        super();\n\n        if (rect[1] > rect[3]) {\n            throw new GeometryTagError(\"Basic Y coordinates values can not be inverted.\");\n        }\n\n        for (let coord of rect) {\n            if (coord < 0 || coord > 1) {\n                throw new GeometryTagError(\"Basic coordinates must be on the interval [0, 1].\");\n            }\n        }\n\n        this._anchorIndex = undefined;\n        this._rect = rect.slice(0, 4);\n        this._inverted = this._rect[0] > this._rect[2];\n    }\n\n    /**\n     * Get anchor index property.\n     *\n     * @returns {number} Index representing the current anchor property if\n     * achoring indexing has been initialized. If anchor indexing has not been\n     * initialized or has been terminated undefined will be returned.\n     * @ignore\n     */\n    public get anchorIndex(): number {\n        return this._anchorIndex;\n    }\n\n    /**\n     * Get inverted property.\n     *\n     * @returns {boolean} Boolean determining whether the rect geometry is\n     * inverted. For panoramas the rect geometrye may be inverted.\n     * @ignore\n     */\n    public get inverted(): boolean {\n        return this._inverted;\n    }\n\n    /**\n     * Get rect property.\n     *\n     * @returns {Array<number>} Array representing the top-left and bottom-right\n     * corners of the rectangle in basic coordinates.\n     */\n    public get rect(): number[] {\n        return this._rect;\n    }\n\n    /**\n     * Initialize anchor indexing to enable setting opposite vertex.\n     *\n     * @param {number} [index] - The index of the vertex to use as anchor.\n     *\n     * @throws {Error} If anchor indexing has already been initialized.\n     * @throws {Error} If index is not valid (0 to 3).\n     * @ignore\n     */\n    public initializeAnchorIndexing(index?: number): void {\n        if (this._anchorIndex !== undefined) {\n            throw new Error(\"Anchor indexing is already initialized.\");\n        }\n\n        if (index < 0 || index > 3) {\n            throw new Error(`Invalid anchor index: ${index}.`);\n        }\n\n        this._anchorIndex = index === undefined ? 0 : index;\n    }\n\n    /**\n     * Terminate anchor indexing to disable setting pposite vertex.\n     * @ignore\n     */\n    public terminateAnchorIndexing(): void {\n        this._anchorIndex = undefined;\n    }\n\n    /**\n     * Set the value of the vertex opposite to the anchor in the polygon\n     * representation of the rectangle.\n     *\n     * @description Setting the opposite vertex may change the anchor index.\n     *\n     * @param {Array<number>} opposite - The new value of the vertex opposite to the anchor.\n     * @param {Transform} transform - The transform of the node related to the rectangle.\n     *\n     * @throws {Error} When anchor indexing has not been initialized.\n     * @ignore\n     */\n    public setOppositeVertex2d(opposite: number[], transform: Transform): void {\n        if (this._anchorIndex === undefined) {\n            throw new Error(\"Anchor indexing needs to be initialized.\");\n        }\n\n        const changed: number[] = [\n            Math.max(0, Math.min(1, opposite[0])),\n            Math.max(0, Math.min(1, opposite[1])),\n        ];\n\n        const original: number[] = this._rect.slice();\n        const anchor: number[] = this._anchorIndex === 0 ? [original[0], original[3]] :\n            this._anchorIndex === 1 ? [original[0], original[1]] :\n            this._anchorIndex === 2 ? [original[2], original[1]] :\n            [original[2], original[3]];\n\n        if (transform.fullPano) {\n            const deltaX: number = this._anchorIndex < 2 ?\n                changed[0] - original[2] :\n                changed[0] - original[0];\n\n            if (!this._inverted && this._anchorIndex < 2 && changed[0] < 0.25 && original[2] > 0.75 && deltaX < -0.5) {\n                // right side passes boundary rightward\n                this._inverted = true;\n                this._anchorIndex = anchor[1] > changed[1] ? 0 : 1;\n            } else if (!this._inverted && this._anchorIndex >= 2 && changed[0] < 0.25 && original[2] > 0.75 && deltaX < -0.5) {\n                // left side passes right side and boundary rightward\n                this._inverted = true;\n                this._anchorIndex = anchor[1] > changed[1] ? 0 : 1;\n            } else if (this._inverted && this._anchorIndex >= 2 && changed[0] < 0.25 && original[0] > 0.75 && deltaX < -0.5) {\n                this._inverted = false;\n                if (anchor[0] > changed[0]) {\n                    // left side passes boundary rightward\n                    this._anchorIndex = anchor[1] > changed[1] ? 3 : 2;\n                } else {\n                    // left side passes right side and boundary rightward\n                    this._anchorIndex = anchor[1] > changed[1] ? 0 : 1;\n                }\n            } else if (!this._inverted && this._anchorIndex >= 2 && changed[0] > 0.75 && original[0] < 0.25 && deltaX > 0.5) {\n                // left side passes boundary leftward\n                this._inverted = true;\n                this._anchorIndex = anchor[1] > changed[1] ? 3 : 2;\n            } else if (!this._inverted && this._anchorIndex < 2 && changed[0] > 0.75 && original[0] < 0.25 && deltaX > 0.5) {\n                // right side passes left side and boundary leftward\n                this._inverted = true;\n                this._anchorIndex = anchor[1] > changed[1] ? 3 : 2;\n            } else if (this._inverted && this._anchorIndex < 2 && changed[0] > 0.75 && original[2] < 0.25 && deltaX > 0.5) {\n                this._inverted = false;\n                if (anchor[0] > changed[0]) {\n                    // right side passes boundary leftward\n                    this._anchorIndex = anchor[1] > changed[1] ? 3 : 2;\n                } else {\n                    // right side passes left side and boundary leftward\n                    this._anchorIndex = anchor[1] > changed[1] ? 0 : 1;\n                }\n            } else if (this._inverted && this._anchorIndex < 2 && changed[0] > original[0]) {\n                // inverted and right side passes left side completing a loop\n                this._inverted = false;\n                this._anchorIndex = anchor[1] > changed[1] ? 0 : 1;\n            } else if (this._inverted && this._anchorIndex >= 2 && changed[0] < original[2]) {\n                // inverted and left side passes right side completing a loop\n                this._inverted = false;\n                this._anchorIndex = anchor[1] > changed[1] ? 3 : 2;\n            } else if (this._inverted) {\n                // if still inverted only top and bottom can switch\n                if (this._anchorIndex < 2) {\n                    this._anchorIndex = anchor[1] > changed[1] ? 0 : 1;\n                } else {\n                    this._anchorIndex = anchor[1] > changed[1] ? 3 : 2;\n                }\n            } else {\n                // if still not inverted treat as non full pano\n                if (anchor[0] <= changed[0] && anchor[1] > changed[1]) {\n                    this._anchorIndex = 0;\n                } else if (anchor[0] <= changed[0] && anchor[1] <= changed[1]) {\n                    this._anchorIndex = 1;\n                } else if (anchor[0] > changed[0] && anchor[1] <= changed[1]) {\n                    this._anchorIndex = 2;\n                } else {\n                    this._anchorIndex = 3;\n                }\n            }\n\n            const rect: number[] = [];\n            if (this._anchorIndex === 0) {\n                rect[0] = anchor[0];\n                rect[1] = changed[1];\n                rect[2] = changed[0];\n                rect[3] = anchor[1];\n            } else if (this._anchorIndex === 1) {\n                rect[0] = anchor[0];\n                rect[1] = anchor[1];\n                rect[2] = changed[0];\n                rect[3] = changed[1];\n            } else if (this._anchorIndex === 2) {\n                rect[0] = changed[0];\n                rect[1] = anchor[1];\n                rect[2] = anchor[0];\n                rect[3] = changed[1];\n            } else {\n                rect[0] = changed[0];\n                rect[1] = changed[1];\n                rect[2] = anchor[0];\n                rect[3] = anchor[1];\n            }\n\n            if (!this._inverted && rect[0] > rect[2] ||\n                this._inverted && rect[0] < rect[2]) {\n                rect[0] = original[0];\n                rect[2] = original[2];\n            }\n\n            if (rect[1] > rect[3]) {\n                rect[1] = original[1];\n                rect[3] = original[3];\n            }\n\n            this._rect[0] = rect[0];\n            this._rect[1] = rect[1];\n            this._rect[2] = rect[2];\n            this._rect[3] = rect[3];\n        } else {\n            if (anchor[0] <= changed[0] && anchor[1] > changed[1]) {\n                this._anchorIndex = 0;\n            } else if (anchor[0] <= changed[0] && anchor[1] <= changed[1]) {\n                this._anchorIndex = 1;\n            } else if (anchor[0] > changed[0] && anchor[1] <= changed[1]) {\n                this._anchorIndex = 2;\n            } else {\n                this._anchorIndex = 3;\n            }\n\n            const rect: number[] = [];\n            if (this._anchorIndex === 0) {\n                rect[0] = anchor[0];\n                rect[1] = changed[1];\n                rect[2] = changed[0];\n                rect[3] = anchor[1];\n            } else if (this._anchorIndex === 1) {\n                rect[0] = anchor[0];\n                rect[1] = anchor[1];\n                rect[2] = changed[0];\n                rect[3] = changed[1];\n            } else if (this._anchorIndex === 2) {\n                rect[0] = changed[0];\n                rect[1] = anchor[1];\n                rect[2] = anchor[0];\n                rect[3] = changed[1];\n            } else {\n                rect[0] = changed[0];\n                rect[1] = changed[1];\n                rect[2] = anchor[0];\n                rect[3] = anchor[1];\n            }\n\n            if (rect[0] > rect[2]) {\n                rect[0] = original[0];\n                rect[2] = original[2];\n            }\n\n            if (rect[1] > rect[3]) {\n                rect[1] = original[1];\n                rect[3] = original[3];\n            }\n\n            this._rect[0] = rect[0];\n            this._rect[1] = rect[1];\n            this._rect[2] = rect[2];\n            this._rect[3] = rect[3];\n        }\n\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Set the value of a vertex in the polygon representation of the rectangle.\n     *\n     * @description The polygon is defined to have the first vertex at the\n     * bottom-left corner with the rest of the vertices following in clockwise order.\n     *\n     * @param {number} index - The index of the vertex to be set.\n     * @param {Array<number>} value - The new value of the vertex.\n     * @param {Transform} transform - The transform of the node related to the rectangle.\n     * @ignore\n     */\n    public setVertex2d(index: number, value: number[], transform: Transform): void {\n        let original: number[] = this._rect.slice();\n\n        let changed: number[] = [\n            Math.max(0, Math.min(1, value[0])),\n            Math.max(0, Math.min(1, value[1])),\n        ];\n\n        let rect: number[] = [];\n        if (index === 0) {\n            rect[0] = changed[0];\n            rect[1] = original[1];\n            rect[2] = original[2];\n            rect[3] = changed[1];\n        } else if (index === 1) {\n            rect[0] = changed[0];\n            rect[1] = changed[1];\n            rect[2] = original[2];\n            rect[3] = original[3];\n        } else if (index === 2) {\n            rect[0] = original[0];\n            rect[1] = changed[1];\n            rect[2] = changed[0];\n            rect[3] = original[3];\n        } else if (index === 3) {\n            rect[0] = original[0];\n            rect[1] = original[1];\n            rect[2] = changed[0];\n            rect[3] = changed[1];\n        }\n\n        if (transform.fullPano) {\n            let passingBoundaryLeftward: boolean =\n                index < 2 && changed[0] > 0.75 && original[0] < 0.25 ||\n                index >= 2 && this._inverted && changed[0] > 0.75 && original[2] < 0.25;\n\n            let passingBoundaryRightward: boolean =\n                index < 2 && this._inverted && changed[0] < 0.25 && original[0] > 0.75 ||\n                index >= 2 && changed[0] < 0.25 && original[2] > 0.75;\n\n            if (passingBoundaryLeftward || passingBoundaryRightward) {\n                this._inverted = !this._inverted;\n            } else {\n                if (rect[0] - original[0] < -0.25) {\n                    rect[0] = original[0];\n                }\n\n                if (rect[2] - original[2] > 0.25) {\n                    rect[2] = original[2];\n                }\n            }\n\n            if (!this._inverted && rect[0] > rect[2] ||\n                this._inverted && rect[0] < rect[2]) {\n                rect[0] = original[0];\n                rect[2] = original[2];\n            }\n        } else {\n            if (rect[0] > rect[2]) {\n                rect[0] = original[0];\n                rect[2] = original[2];\n            }\n        }\n\n        if (rect[1] > rect[3]) {\n            rect[1] = original[1];\n            rect[3] = original[3];\n        }\n\n        this._rect[0] = rect[0];\n        this._rect[1] = rect[1];\n        this._rect[2] = rect[2];\n        this._rect[3] = rect[3];\n\n        this._notifyChanged$.next(this);\n    }\n\n    /** @ignore */\n    public setCentroid2d(value: number[], transform: Transform): void {\n        let original: number[] = this._rect.slice();\n\n        let x0: number = original[0];\n        let x1: number = this._inverted ? original[2] + 1 : original[2];\n\n        let y0: number = original[1];\n        let y1: number = original[3];\n\n        let centerX: number = x0 + (x1 - x0) / 2;\n        let centerY: number = y0 + (y1 - y0) / 2;\n\n        let translationX: number = 0;\n\n        if (transform.gpano != null &&\n            transform.gpano.CroppedAreaImageWidthPixels === transform.gpano.FullPanoWidthPixels) {\n            translationX = this._inverted ? value[0] + 1 - centerX : value[0] - centerX;\n        } else {\n            let minTranslationX: number = -x0;\n            let maxTranslationX: number = 1 - x1;\n\n            translationX = Math.max(minTranslationX, Math.min(maxTranslationX, value[0] - centerX));\n        }\n\n        let minTranslationY: number = -y0;\n        let maxTranslationY: number = 1 - y1;\n\n        let translationY: number = Math.max(minTranslationY, Math.min(maxTranslationY, value[1] - centerY));\n\n        this._rect[0] = original[0] + translationX;\n        this._rect[1] = original[1] + translationY;\n        this._rect[2] = original[2] + translationX;\n        this._rect[3] = original[3] + translationY;\n\n        if (this._rect[0] < 0) {\n            this._rect[0] += 1;\n            this._inverted = !this._inverted;\n        } else if (this._rect[0] > 1) {\n            this._rect[0] -= 1;\n            this._inverted = !this._inverted;\n        }\n\n        if (this._rect[2] < 0) {\n            this._rect[2] += 1;\n            this._inverted = !this._inverted;\n        } else if (this._rect[2] > 1) {\n            this._rect[2] -= 1;\n            this._inverted = !this._inverted;\n        }\n\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Get the 3D coordinates for the vertices of the rectangle with\n     * interpolated points along the lines.\n     *\n     * @param {Transform} transform - The transform of the node related to\n     * the rectangle.\n     * @returns {Array<Array<number>>} Polygon array of 3D world coordinates\n     * representing the rectangle.\n     * @ignore\n     */\n    public getPoints3d(transform: Transform): number[][] {\n        return this._getPoints2d()\n            .map(\n                (point: number[]) => {\n                    return transform.unprojectBasic(point, 200);\n                });\n    }\n\n    /**\n     * Get the coordinates of a vertex from the polygon representation of the geometry.\n     *\n     * @description The first vertex represents the bottom-left corner with the rest of\n     * the vertices following in clockwise order. The method shifts the right side\n     * coordinates of the rectangle by one unit to ensure that the vertices are ordered\n     * clockwise.\n     *\n     * @param {number} index - Vertex index.\n     * @returns {Array<number>} Array representing the 2D basic coordinates of the vertex.\n     * @ignore\n     */\n    public getVertex2d(index: number): number[] {\n        return this._rectToVertices2d(this._rect)[index];\n    }\n\n    /**\n     * Get the coordinates of a vertex from the polygon representation of the geometry.\n     *\n     * @description The first vertex represents the bottom-left corner with the rest of\n     * the vertices following in clockwise order. The coordinates will not be shifted\n     * so they may not appear in clockwise order when layed out on the plane.\n     *\n     * @param {number} index - Vertex index.\n     * @returns {Array<number>} Array representing the 2D basic coordinates of the vertex.\n     * @ignore\n     */\n    public getNonAdjustedVertex2d(index: number): number[] {\n        return this._rectToNonAdjustedVertices2d(this._rect)[index];\n    }\n\n    /**\n     * Get a vertex from the polygon representation of the 3D coordinates for the\n     * vertices of the geometry.\n     *\n     * @description The first vertex represents the bottom-left corner with the rest of\n     * the vertices following in clockwise order.\n     *\n     * @param {number} index - Vertex index.\n     * @param {Transform} transform - The transform of the node related to the geometry.\n     * @returns {Array<Array<number>>} Polygon array of 3D world coordinates representing\n     * the vertices of the geometry.\n     * @ignore\n     */\n    public getVertex3d(index: number, transform: Transform): number[] {\n        return transform.unprojectBasic(this._rectToVertices2d(this._rect)[index], 200);\n    }\n\n    /**\n     * Get a polygon representation of the 2D basic coordinates for the vertices of the rectangle.\n     *\n     * @description The first vertex represents the bottom-left corner with the rest of\n     * the vertices following in clockwise order.\n     *\n     * @returns {Array<Array<number>>} Polygon array of 2D basic coordinates representing\n     * the rectangle vertices.\n     * @ignore\n     */\n    public getVertices2d(): number[][] {\n        return this._rectToVertices2d(this._rect);\n    }\n\n    /**\n     * Get a polygon representation of the 3D coordinates for the vertices of the rectangle.\n     *\n     * @description The first vertex represents the bottom-left corner with the rest of\n     * the vertices following in clockwise order.\n     *\n     * @param {Transform} transform - The transform of the node related to the rectangle.\n     * @returns {Array<Array<number>>} Polygon array of 3D world coordinates representing\n     * the rectangle vertices.\n     * @ignore\n     */\n    public getVertices3d(transform: Transform): number[][] {\n        return this._rectToVertices2d(this._rect)\n            .map(\n                (vertex: number[]) => {\n                    return transform.unprojectBasic(vertex, 200);\n                });\n    }\n\n    /** @ignore */\n    public getCentroid2d(): number[] {\n        const rect: number[] = this._rect;\n\n        const x0: number = rect[0];\n        const x1: number = this._inverted ? rect[2] + 1 : rect[2];\n\n        const y0: number = rect[1];\n        const y1: number = rect[3];\n\n        const centroidX: number = (x0 + x1) / 2;\n        const centroidY: number = (y0 + y1) / 2;\n\n        return [centroidX, centroidY];\n    }\n\n    /** @ignore */\n    public getCentroid3d(transform: Transform): number[] {\n        const centroid2d: number[] = this.getCentroid2d();\n\n        return transform.unprojectBasic(centroid2d, 200);\n    }\n\n    /**\n     * @ignore\n     */\n    public getPoleOfInaccessibility2d(): number[] {\n        return this._getPoleOfInaccessibility2d(this._rectToVertices2d(this._rect));\n    }\n\n    /** @ignore */\n    public getPoleOfInaccessibility3d(transform: Transform): number[] {\n        let pole2d: number[] = this._getPoleOfInaccessibility2d(this._rectToVertices2d(this._rect));\n\n        return transform.unprojectBasic(pole2d, 200);\n    }\n\n    /** @ignore */\n    public getTriangles3d(transform: Transform): number[] {\n        return transform.fullPano ?\n            [] :\n            this._triangulate(\n                this._project(this._getPoints2d(), transform),\n                this.getPoints3d(transform));\n    }\n\n    /**\n     * Check if a particular bottom-right value is valid according to the current\n     * rectangle coordinates.\n     *\n     * @param {Array<number>} bottomRight - The bottom-right coordinates to validate\n     * @returns {boolean} Value indicating whether the provided bottom-right coordinates\n     * are valid.\n     * @ignore\n     */\n    public validate(bottomRight: number[]): boolean {\n        let rect: number[] = this._rect;\n\n        if (!this._inverted && bottomRight[0] < rect[0] ||\n            bottomRight[0] - rect[2] > 0.25 ||\n            bottomRight[1] < rect[1]) {\n            return false;\n        }\n\n        return true;\n    }\n\n    /**\n     * Get the 2D coordinates for the vertices of the rectangle with\n     * interpolated points along the lines.\n     *\n     * @returns {Array<Array<number>>} Polygon array of 2D basic coordinates\n     * representing the rectangle.\n     */\n    private _getPoints2d(): number[][] {\n        let vertices2d: number[][] = this._rectToVertices2d(this._rect);\n\n        let sides: number = vertices2d.length - 1;\n        let sections: number = 10;\n\n        let points2d: number[][] = [];\n\n        for (let i: number = 0; i < sides; ++i) {\n            let startX: number = vertices2d[i][0];\n            let startY: number = vertices2d[i][1];\n\n            let endX: number = vertices2d[i + 1][0];\n            let endY: number = vertices2d[i + 1][1];\n\n            let intervalX: number = (endX - startX) / (sections - 1);\n            let intervalY: number = (endY - startY) / (sections - 1);\n\n            for (let j: number = 0; j < sections; ++j) {\n                let point: number[] = [\n                    startX + j * intervalX,\n                    startY + j * intervalY,\n                ];\n\n                points2d.push(point);\n            }\n        }\n\n        return points2d;\n    }\n\n    /**\n     * Convert the top-left, bottom-right representation of a rectangle to a polygon\n     * representation of the vertices starting at the bottom-left corner going\n     * clockwise.\n     *\n     * @description The method shifts the right side coordinates of the rectangle\n     * by one unit to ensure that the vertices are ordered clockwise.\n     *\n     * @param {Array<number>} rect - Top-left, bottom-right representation of a\n     * rectangle.\n     * @returns {Array<Array<number>>} Polygon representation of the vertices of the\n     * rectangle.\n     */\n    private _rectToVertices2d(rect: number[]): number[][] {\n        return [\n            [rect[0], rect[3]],\n            [rect[0], rect[1]],\n            [this._inverted ? rect[2] + 1 : rect[2], rect[1]],\n            [this._inverted ? rect[2] + 1 : rect[2], rect[3]],\n            [rect[0], rect[3]],\n        ];\n    }\n\n    /**\n     * Convert the top-left, bottom-right representation of a rectangle to a polygon\n     * representation of the vertices starting at the bottom-left corner going\n     * clockwise.\n     *\n     * @description The first vertex represents the bottom-left corner with the rest of\n     * the vertices following in clockwise order. The coordinates will not be shifted\n     * to ensure that the vertices are ordered clockwise when layed out on the plane.\n     *\n     * @param {Array<number>} rect - Top-left, bottom-right representation of a\n     * rectangle.\n     * @returns {Array<Array<number>>} Polygon representation of the vertices of the\n     * rectangle.\n     */\n    private _rectToNonAdjustedVertices2d(rect: number[]): number[][] {\n        return [\n            [rect[0], rect[3]],\n            [rect[0], rect[1]],\n            [rect[2], rect[1]],\n            [rect[2], rect[3]],\n            [rect[0], rect[3]],\n        ];\n    }\n}\n\nexport default RectGeometry;\n",
     "import earcut from \"earcut\";\nimport * as martinez from \"martinez-polygon-clipping\";\nimport * as polylabel from \"@mapbox/polylabel\";\nimport * as THREE from \"three\";\n\nimport {Geometry} from \"../../../Component\";\nimport {Transform} from \"../../../Geo\";\n\n/**\n * @class VertexGeometry\n * @abstract\n * @classdesc Represents a vertex geometry.\n */\nexport abstract class VertexGeometry extends Geometry {\n\n    private _subsampleThreshold: number;\n\n    /**\n     * Create a vertex geometry.\n     *\n     * @constructor\n     * @ignore\n     */\n    constructor() {\n        super();\n\n        this._subsampleThreshold = 0.005;\n\n    }\n\n    /**\n     * Get the 3D coordinates for the vertices of the geometry with possibly\n     * subsampled points along the lines.\n     *\n     * @param {Transform} transform - The transform of the node related to\n     * the geometry.\n     * @returns {Array<Array<number>>} Polygon array of 3D world coordinates\n     * representing the geometry.\n     * @ignore\n     */\n    public abstract getPoints3d(transform: Transform): number[][];\n\n    /**\n     * Get the polygon pole of inaccessibility, the most\n     * distant internal point from the polygon outline.\n     *\n     * @returns {Array<number>} 2D basic coordinates for the pole of inaccessibility.\n     * @ignore\n     */\n    public abstract getPoleOfInaccessibility2d(): number[];\n\n    /**\n     * Get the polygon pole of inaccessibility, the most\n     * distant internal point from the polygon outline.\n     *\n     * @param transform - The transform of the node related to\n     * the geometry.\n     * @returns {Array<number>} 3D world coordinates for the pole of inaccessibility.\n     * @ignore\n     */\n    public abstract getPoleOfInaccessibility3d(transform: Transform): number[];\n\n    /**\n     * Get the coordinates of a vertex from the polygon representation of the geometry.\n     *\n     * @param {number} index - Vertex index.\n     * @returns {Array<number>} Array representing the 2D basic coordinates of the vertex.\n     * @ignore\n     */\n    public abstract getVertex2d(index: number): number[];\n\n    /**\n     * Get a vertex from the polygon representation of the 3D coordinates for the\n     * vertices of the geometry.\n     *\n     * @param {number} index - Vertex index.\n     * @param {Transform} transform - The transform of the node related to the geometry.\n     * @returns {Array<number>} Array representing the 3D world coordinates of the vertex.\n     * @ignore\n     */\n    public abstract getVertex3d(index: number, transform: Transform): number[];\n\n    /**\n     * Get a polygon representation of the 2D basic coordinates for the vertices of the geometry.\n     *\n     * @returns {Array<Array<number>>} Polygon array of 2D basic coordinates representing\n     * the vertices of the geometry.\n     * @ignore\n     */\n    public abstract getVertices2d(): number[][];\n\n    /**\n     * Get a polygon representation of the 3D world coordinates for the vertices of the geometry.\n     *\n     * @param {Transform} transform - The transform of the node related to the geometry.\n     * @returns {Array<Array<number>>} Polygon array of 3D world coordinates representing\n     * the vertices of the geometry.\n     * @ignore\n     */\n    public abstract getVertices3d(transform: Transform): number[][];\n\n    /**\n     * Get a flattend array of the 3D world coordinates for the\n     * triangles filling the geometry.\n     *\n     * @param {Transform} transform - The transform of the node related to the geometry.\n     * @returns {Array<number>} Flattened array of 3D world coordinates of the triangles.\n     * @ignore\n     */\n    public abstract getTriangles3d(transform: Transform): number[];\n\n    /**\n     * Set the value of a vertex in the polygon representation of the geometry.\n     *\n     * @description The polygon is defined to have the first vertex at the\n     * bottom-left corner with the rest of the vertices following in clockwise order.\n     *\n     * @param {number} index - The index of the vertex to be set.\n     * @param {Array<number>} value - The new value of the vertex.\n     * @param {Transform} transform - The transform of the node related to the geometry.\n     * @ignore\n     */\n    public abstract setVertex2d(index: number, value: number[], transform: Transform): void;\n\n    /**\n     * Finds the polygon pole of inaccessibility, the most distant internal\n     * point from the polygon outline.\n     *\n     * @param {Array<Array<number>>} points2d - 2d points of outline to triangulate.\n     * @returns {Array<number>} Point of inaccessibility.\n     * @ignore\n     */\n    protected _getPoleOfInaccessibility2d(points2d: number[][]): number[] {\n        let pole2d: number[] = polylabel([points2d], 3e-2);\n\n        return pole2d;\n    }\n\n    protected _project(points2d: number[][], transform: Transform): number[][] {\n        const camera: THREE.Camera = this._createCamera(\n            transform.upVector().toArray(),\n            transform.unprojectSfM([0, 0], 0),\n            transform.unprojectSfM([0, 0], 10));\n\n        return this._deunproject(\n            points2d,\n            transform,\n            camera);\n    }\n\n    protected _subsample(points2d: number[][], threshold: number = this._subsampleThreshold): number[][] {\n        const subsampled: number[][] = [];\n        const length: number = points2d.length;\n\n        for (let index: number = 0; index < length; index++) {\n            const p1: number[] = points2d[index];\n            const p2: number[] = points2d[(index + 1) % length];\n\n            subsampled.push(p1);\n\n            const dist: number = Math.sqrt((p2[0] - p1[0]) ** 2 + (p2[1] - p1[1]) ** 2);\n            const subsamples: number = Math.floor(dist / threshold);\n            const coeff: number = 1 / (subsamples + 1);\n\n            for (let i: number = 1; i <= subsamples; i++) {\n                const alpha: number = i * coeff;\n\n                const subsample: number[] = [\n                    (1 - alpha) * p1[0] + alpha * p2[0],\n                    (1 - alpha) * p1[1] + alpha * p2[1],\n                ];\n\n                subsampled.push(subsample);\n            }\n        }\n\n        return subsampled;\n    }\n\n    /**\n     * Triangulates a 2d polygon and returns the triangle\n     * representation as a flattened array of 3d points.\n     *\n     * @param {Array<Array<number>>} points2d - 2d points of outline to triangulate.\n     * @param {Array<Array<number>>} points3d - 3d points of outline corresponding to the 2d points.\n     * @param {Array<Array<Array<number>>>} [holes2d] - 2d points of holes to triangulate.\n     * @param {Array<Array<Array<number>>>} [holes3d] - 3d points of holes corresponding to the 2d points.\n     * @returns {Array<number>} Flattened array of 3d points ordered based on the triangles.\n     * @ignore\n     */\n    protected _triangulate(\n        points2d: number[][],\n        points3d: number[][],\n        holes2d?: number[][][],\n        holes3d?: number[][][]): number[] {\n\n        let data: number[][][] = [points2d.slice(0, -1)];\n        for (let hole2d of holes2d != null ? holes2d : []) {\n            data.push(hole2d.slice(0, -1));\n        }\n\n        let points: number[][] = points3d.slice(0, -1);\n        for (let hole3d of holes3d != null ? holes3d : []) {\n            points = points.concat(hole3d.slice(0, -1));\n        }\n\n        let flattened: { vertices: number[], holes: number[], dimensions: number } = earcut.flatten(data);\n        let indices: number[] = earcut(flattened.vertices, flattened.holes, flattened.dimensions);\n        let triangles: number[] = [];\n\n        for (let i: number = 0; i < indices.length; ++i) {\n            let point: number[] = points[indices[i]];\n\n            triangles.push(point[0]);\n            triangles.push(point[1]);\n            triangles.push(point[2]);\n        }\n\n        return triangles;\n    }\n\n    protected _triangulatePano(points2d: number[][], holes2d: number[][][], transform: Transform): number[] {\n        const triangles: number[] = [];\n\n        const epsilon: number = 1e-9;\n        const subareasX: number = 3;\n        const subareasY: number = 3;\n\n        for (let x: number = 0; x < subareasX; x++) {\n            for (let y: number = 0; y < subareasY; y++) {\n                const epsilonX0: number = x === 0 ? -epsilon : epsilon;\n                const epsilonY0: number = y === 0 ? -epsilon : epsilon;\n\n                const x0: number = x / subareasX + epsilonX0;\n                const y0: number = y / subareasY + epsilonY0;\n                const x1: number = (x + 1) / subareasX + epsilon;\n                const y1: number = (y + 1) / subareasY + epsilon;\n\n                const bbox2d: number[][] = [\n                    [x0, y0],\n                    [x0, y1],\n                    [x1, y1],\n                    [x1, y0],\n                    [x0, y0],\n                ];\n\n                const lookat2d: number[] = [\n                    (2 * x + 1) / (2 * subareasX),\n                    (2 * y + 1) / (2 * subareasY),\n                ];\n\n                triangles.push(...this._triangulateSubarea(points2d, holes2d, bbox2d, lookat2d, transform));\n            }\n        }\n\n        return triangles;\n    }\n\n    protected _unproject(points2d: number[][], transform: Transform, distance: number = 200): number[][] {\n        return points2d\n            .map(\n                (point: number[]) => {\n                    return transform.unprojectBasic(point, distance);\n                });\n    }\n\n    private _createCamera(upVector: number[], position: number[], lookAt: number[]): THREE.Camera {\n        const camera: THREE.Camera = new THREE.Camera();\n        camera.up.copy(new THREE.Vector3().fromArray(upVector));\n        camera.position.copy(new THREE.Vector3().fromArray(position));\n        camera.lookAt(new THREE.Vector3().fromArray(lookAt));\n        camera.updateMatrix();\n        camera.updateMatrixWorld(true);\n\n        return camera;\n    }\n\n    private _deunproject(points2d: number[][], transform: Transform, camera: THREE.Camera): number[][] {\n        return points2d\n            .map(\n                (point2d: number[]): number[] => {\n                    const pointWorld: number[] = transform.unprojectBasic(point2d, 10000);\n                    const pointCamera: THREE.Vector3 =\n                        new THREE.Vector3(pointWorld[0], pointWorld[1], pointWorld[2])\n                            .applyMatrix4(camera.matrixWorldInverse);\n\n                    return [pointCamera.x / pointCamera.z, pointCamera.y / pointCamera.z];\n                });\n    }\n\n    private _triangulateSubarea(\n        points2d: number[][],\n        holes2d: number[][][],\n        bbox2d: number[][],\n        lookat2d: number[],\n        transform: Transform): number[] {\n\n        const intersections: martinez.MultiPolygon = martinez.intersection([points2d, ...holes2d], [bbox2d]) as martinez.MultiPolygon;\n        if (!intersections) {\n            return [];\n        }\n\n        const triangles: number[] = [];\n        const threshold: number = this._subsampleThreshold;\n        const camera: THREE.Camera = this._createCamera(\n            transform.upVector().toArray(),\n            transform.unprojectSfM([0, 0], 0),\n            transform.unprojectBasic(lookat2d, 10));\n\n        for (const intersection of intersections) {\n            const subsampledPolygon2d: number[][] = this._subsample(intersection[0], threshold);\n\n            const polygon2d: number[][] = this._deunproject(subsampledPolygon2d, transform, camera);\n            const polygon3d: number[][] = this._unproject(subsampledPolygon2d, transform);\n\n            const polygonHoles2d: number[][][] = [];\n            const polygonHoles3d: number[][][] = [];\n            for (let i: number = 1; i < intersection.length; i++) {\n                let subsampledHole2d: number[][] = this._subsample(intersection[i], threshold);\n\n                const hole2d: number[][] = this._deunproject(subsampledHole2d, transform, camera);\n                const hole3d: number[][] = this._unproject(subsampledHole2d, transform);\n\n                polygonHoles2d.push(hole2d);\n                polygonHoles3d.push(hole3d);\n            }\n\n            triangles.push(...this._triangulate(polygon2d, polygon3d, polygonHoles2d, polygonHoles3d));\n        }\n\n        return triangles;\n    }\n}\n\nexport default VertexGeometry;\n",
     "import {map, withLatestFrom} from \"rxjs/operators\";\nimport {Observable, Subject} from \"rxjs\";\n\nimport {\n    Component,\n    Geometry,\n    ITagConfiguration,\n    TagCreator,\n    TagHandlerBase,\n} from \"../../../Component\";\nimport {\n    Transform,\n    ViewportCoords,\n} from \"../../../Geo\";\nimport {RenderCamera} from \"../../../Render\";\nimport {\n    Container,\n    Navigator,\n} from \"../../../Viewer\";\n\nexport abstract class CreateHandlerBase extends TagHandlerBase {\n    protected _tagCreator: TagCreator;\n\n    protected _geometryCreated$: Subject<Geometry>;\n\n    constructor(\n        component: Component<ITagConfiguration>,\n        container: Container,\n        navigator: Navigator,\n        viewportCoords: ViewportCoords,\n        tagCreator: TagCreator) {\n        super(component, container, navigator, viewportCoords);\n\n        this._tagCreator = tagCreator;\n        this._geometryCreated$ = new Subject<Geometry>();\n    }\n\n    public get geometryCreated$(): Observable<Geometry> {\n        return this._geometryCreated$;\n    }\n\n    protected abstract _enableCreate(): void;\n\n    protected abstract _disableCreate(): void;\n\n    protected _enable(): void {\n        this._enableCreate();\n        this._container.element.classList.add(\"component-tag-create\");\n    }\n\n    protected _disable(): void {\n        this._container.element.classList.remove(\"component-tag-create\");\n        this._disableCreate();\n    }\n\n    protected _validateBasic(basic: number[]): boolean {\n        const x: number = basic[0];\n        const y: number = basic[1];\n\n        return 0 <= x && x <= 1 && 0 <= y && y <= 1;\n    }\n\n    protected _mouseEventToBasic$(mouseEvent$: Observable<MouseEvent>): Observable<number[]> {\n        return mouseEvent$.pipe(\n            withLatestFrom(\n                this._container.renderService.renderCamera$,\n                this._navigator.stateService.currentTransform$),\n            map(\n                ([event, camera, transform]: [MouseEvent, RenderCamera, Transform]): number[] => {\n                    return this._mouseEventToBasic(\n                        event,\n                        this._container.element,\n                        camera,\n                        transform);\n                }));\n    }\n}\n\nexport default CreateHandlerBase;\n",
     "import {map, filter} from \"rxjs/operators\";\nimport {Subscription} from \"rxjs\";\n\nimport {\n    CreateHandlerBase,\n    PointGeometry,\n} from \"../../../Component\";\n\nexport class CreatePointHandler extends CreateHandlerBase {\n    private _geometryCreatedSubscription: Subscription;\n\n    protected _enableCreate(): void {\n        this._container.mouseService.deferPixels(this._name, 4);\n\n        this._geometryCreatedSubscription = this._mouseEventToBasic$(this._container.mouseService.proximateClick$).pipe(\n            filter(this._validateBasic),\n            map(\n                (basic: number[]): PointGeometry => {\n                    return new PointGeometry(basic);\n                }))\n            .subscribe(this._geometryCreated$);\n    }\n\n    protected _disableCreate(): void {\n        this._container.mouseService.undeferPixels(this._name);\n\n        this._geometryCreatedSubscription.unsubscribe();\n    }\n\n    protected _getNameExtension(): string {\n        return \"create-point\";\n    }\n}\n\nexport default CreatePointHandler;\n",
+    "import { Subject } from \"rxjs\";\n\nimport {\n    ExtremePointCreateTag,\n    CreateVertexHandler,\n} from \"../../../Component\";\nimport {Transform} from \"../../../Geo\";\n\nexport class CreatePointsHandler extends CreateVertexHandler {\n    protected _addPoint(tag: ExtremePointCreateTag, basicPoint: number[]): void {\n        tag.geometry.addPoint2d(basicPoint);\n    }\n\n    protected get _create$(): Subject<number[]> {\n        return this._tagCreator.createPoints$;\n    }\n\n    protected _getNameExtension(): string {\n        return \"create-points\";\n    }\n\n    protected _setVertex2d(tag: ExtremePointCreateTag, basicPoint: number[], transform: Transform): void {\n        tag.geometry.setPoint2d((tag.geometry).points.length - 1, basicPoint, transform);\n    }\n}\n\nexport default CreatePointsHandler;\n",
     "import {Subject} from \"rxjs\";\n\nimport {\n    CreateVertexHandler,\n    OutlineCreateTag,\n    PolygonGeometry,\n} from \"../../../Component\";\nimport {Transform} from \"../../../Geo\";\n\nexport class CreatePolygonHandler extends CreateVertexHandler {\n    protected _addPoint(tag: OutlineCreateTag, basicPoint: number[]): void {\n        tag.addPoint(basicPoint);\n    }\n\n    protected get _create$(): Subject<number[]> {\n        return this._tagCreator.createPolygon$;\n    }\n\n    protected _getNameExtension(): string {\n        return \"create-polygon\";\n    }\n\n    protected _setVertex2d(tag: OutlineCreateTag, basicPoint: number[], transform: Transform): void {\n        tag.geometry.setVertex2d((<PolygonGeometry>tag.geometry).polygon.length - 2, basicPoint, transform);\n    }\n}\n\nexport default CreatePolygonHandler;\n",
     "import {\n    combineLatest as observableCombineLatest,\n    empty as observableEmpty,\n    merge as observableMerge,\n    of as observableOf,\n    Observable,\n    Subscription,\n} from \"rxjs\";\n\nimport {\n    withLatestFrom,\n    map,\n    skip,\n    filter,\n    switchMap,\n    share,\n} from \"rxjs/operators\";\n\nimport {\n    CreateHandlerBase,\n    Geometry,\n    OutlineCreateTag,\n    RectGeometry,\n} from \"../../../Component\";\nimport {Transform} from \"../../../Geo\";\nimport {RenderCamera} from \"../../../Render\";\n\nexport class CreateRectDragHandler extends CreateHandlerBase {\n    private _addPointSubscription: Subscription;\n    private _createSubscription: Subscription;\n    private _deleteSubscription: Subscription;\n    private _geometryCreatedSubscription: Subscription;\n    private _initializeAnchorIndexingSubscription: Subscription;\n    private _setVertexSubscription: Subscription;\n\n    protected _enableCreate(): void {\n        this._container.mouseService.claimMouse(this._name, 2);\n\n        this._deleteSubscription = this._navigator.stateService.currentTransform$.pipe(\n            map((transform: Transform): void => { return null; }),\n            skip(1))\n            .subscribe(this._tagCreator.delete$);\n\n        this._createSubscription = this._mouseEventToBasic$(\n                this._container.mouseService.filtered$(this._name, this._container.mouseService.mouseDragStart$)).pipe(\n            filter(this._validateBasic))\n            .subscribe(this._tagCreator.createRect$);\n\n        this._initializeAnchorIndexingSubscription = this._tagCreator.tag$.pipe(\n            filter(\n                (tag: OutlineCreateTag): boolean => {\n                    return !!tag;\n                }))\n            .subscribe(\n                (tag: OutlineCreateTag): void => {\n                    (<RectGeometry>tag.geometry).initializeAnchorIndexing();\n                });\n\n        const basicMouse$: Observable<number[]> = observableCombineLatest(\n                observableMerge(\n                    this._container.mouseService.filtered$(this._name, this._container.mouseService.mouseMove$),\n                    this._container.mouseService.filtered$(this._name, this._container.mouseService.domMouseMove$)),\n                this._container.renderService.renderCamera$).pipe(\n            withLatestFrom(this._navigator.stateService.currentTransform$),\n            map(\n                ([[event, camera], transform]: [[MouseEvent, RenderCamera], Transform]): number[] => {\n                    return this._mouseEventToBasic(\n                        event,\n                        this._container.element,\n                        camera,\n                        transform);\n                }));\n\n        this._setVertexSubscription = this._tagCreator.tag$.pipe(\n            switchMap(\n                (tag: OutlineCreateTag): Observable<[OutlineCreateTag, number[], Transform]> => {\n                    return !!tag ?\n                        observableCombineLatest(\n                            observableOf(tag),\n                            basicMouse$,\n                            this._navigator.stateService.currentTransform$) :\n                        observableEmpty();\n                }))\n            .subscribe(\n                ([tag, basicPoint, transform]: [OutlineCreateTag, number[], Transform]): void => {\n                    (<RectGeometry>tag.geometry).setOppositeVertex2d(basicPoint, transform);\n                });\n\n        const basicMouseDragEnd$: Observable<number[]> = this._container.mouseService.mouseDragEnd$.pipe(\n            withLatestFrom(\n                this._mouseEventToBasic$(this._container.mouseService.filtered$(this._name, this._container.mouseService.mouseDrag$)).pipe(\n                    filter(this._validateBasic)),\n                (event: Event, basicPoint: number[]): number[] => {\n                    return basicPoint;\n                }),\n            share());\n\n        this._addPointSubscription = this._tagCreator.tag$.pipe(\n            switchMap(\n                (tag: OutlineCreateTag): Observable<[OutlineCreateTag, number[]]> => {\n                    return !!tag ?\n                        observableCombineLatest(\n                            observableOf(tag),\n                            basicMouseDragEnd$) :\n                        observableEmpty();\n                }))\n            .subscribe(\n                ([tag, basicPoint]: [OutlineCreateTag, number[]]): void => {\n                    const rectGeometry: RectGeometry = <RectGeometry>tag.geometry;\n                    if (!rectGeometry.validate(basicPoint)) {\n                        basicPoint = rectGeometry.getNonAdjustedVertex2d(3);\n                    }\n\n                    tag.addPoint(basicPoint);\n                });\n\n        this._geometryCreatedSubscription = this._tagCreator.tag$.pipe(\n            switchMap(\n                (tag: OutlineCreateTag): Observable<Geometry> => {\n                    return !!tag ?\n                        tag.created$.pipe(\n                            map(\n                                (t: OutlineCreateTag): Geometry => {\n                                    return t.geometry;\n                                })) :\n                        observableEmpty();\n                }))\n            .subscribe(this._geometryCreated$);\n    }\n\n    protected _disableCreate(): void {\n        this._container.mouseService.unclaimMouse(this._name);\n\n        this._tagCreator.delete$.next(null);\n\n        this._addPointSubscription.unsubscribe();\n        this._createSubscription.unsubscribe();\n        this._deleteSubscription.unsubscribe();\n        this._geometryCreatedSubscription.unsubscribe();\n        this._initializeAnchorIndexingSubscription.unsubscribe();\n        this._setVertexSubscription.unsubscribe();\n    }\n\n    protected _getNameExtension(): string {\n        return \"create-rect-drag\";\n    }\n}\n\nexport default CreateRectDragHandler;\n",
     "import {filter} from \"rxjs/operators\";\nimport {Subject, Subscription} from \"rxjs\";\n\nimport {\n    CreateVertexHandler,\n    OutlineCreateTag,\n    RectGeometry,\n} from \"../../../Component\";\nimport {Transform} from \"../../../Geo\";\n\nexport class CreateRectHandler extends CreateVertexHandler {\n    private _initializeAnchorIndexingSubscription: Subscription;\n\n    protected get _create$(): Subject<number[]> {\n        return this._tagCreator.createRect$;\n    }\n\n    protected _addPoint(tag: OutlineCreateTag, basicPoint: number[]): void {\n        const rectGeometry: RectGeometry = <RectGeometry>tag.geometry;\n        if (!rectGeometry.validate(basicPoint)) {\n            basicPoint = rectGeometry.getNonAdjustedVertex2d(3);\n        }\n\n        tag.addPoint(basicPoint);\n    }\n\n    protected _enable(): void {\n        super._enable();\n\n        this._initializeAnchorIndexingSubscription = this._tagCreator.tag$.pipe(\n            filter(\n                (tag: OutlineCreateTag): boolean => {\n                    return !!tag;\n                }))\n            .subscribe(\n                (tag: OutlineCreateTag): void => {\n                    (<RectGeometry>tag.geometry).initializeAnchorIndexing();\n                });\n    }\n\n    protected _disable(): void {\n        super._disable();\n\n        this._initializeAnchorIndexingSubscription.unsubscribe();\n    }\n\n    protected _getNameExtension(): string {\n        return \"create-rect\";\n    }\n\n    protected _setVertex2d(tag: OutlineCreateTag, basicPoint: number[], transform: Transform): void {\n        (<RectGeometry>tag.geometry).setOppositeVertex2d(basicPoint, transform);\n    }\n}\n\nexport default CreateRectHandler;\n",
-    "import {\n    of as observableOf,\n    empty as observableEmpty,\n    combineLatest as observableCombineLatest,\n    merge as observableMerge,\n    Observable,\n    Subject,\n    Subscription,\n} from \"rxjs\";\n\nimport {\n    filter,\n    refCount,\n    switchMap,\n    skip,\n    share,\n    take,\n    map,\n    publishReplay,\n} from \"rxjs/operators\";\n\nimport {\n    CreateHandlerBase,\n    Geometry,\n    OutlineCreateTag,\n} from \"../../../Component\";\nimport {Transform} from \"../../../Geo\";\nimport {RenderCamera} from \"../../../Render\";\n\nexport abstract class CreateVertexHandler extends CreateHandlerBase {\n    private _addPointSubscription: Subscription;\n    private _createSubscription: Subscription;\n    private _deleteSubscription: Subscription;\n    private _geometryCreateSubscription: Subscription;\n    private _setVertexSubscription: Subscription;\n\n    protected abstract get _create$(): Subject<number[]>;\n\n    protected _enableCreate(): void {\n        this._container.mouseService.deferPixels(this._name, 4);\n\n        const transformChanged$: Observable<void> = this._navigator.stateService.currentTransform$.pipe(\n            map((transform: Transform): void => { /*noop*/ }),\n            publishReplay(1),\n            refCount());\n\n        this._deleteSubscription = transformChanged$.pipe(\n            skip(1))\n            .subscribe(this._tagCreator.delete$);\n\n        const basicClick$: Observable<number[]> = this._mouseEventToBasic$(this._container.mouseService.proximateClick$).pipe(share());\n\n        this._createSubscription = transformChanged$.pipe(\n            switchMap(\n                (): Observable<number[]> => {\n                    return basicClick$.pipe(\n                        filter(this._validateBasic),\n                        take(1));\n                }))\n            .subscribe(this._create$);\n\n        this._setVertexSubscription = this._tagCreator.tag$.pipe(\n            switchMap(\n                (tag: OutlineCreateTag): Observable<[OutlineCreateTag, MouseEvent, RenderCamera, Transform]> => {\n                    return !!tag ?\n                        observableCombineLatest(\n                                observableOf(tag),\n                                observableMerge(\n                                        this._container.mouseService.mouseMove$,\n                                        this._container.mouseService.domMouseMove$),\n                                this._container.renderService.renderCamera$,\n                                this._navigator.stateService.currentTransform$) :\n                        observableEmpty();\n                }))\n            .subscribe(\n                ([tag, event, camera, transform]: [OutlineCreateTag, MouseEvent, RenderCamera, Transform]): void => {\n                    const basicPoint: number[] = this._mouseEventToBasic(\n                        event,\n                        this._container.element,\n                        camera,\n                        transform);\n\n                    this._setVertex2d(tag, basicPoint, transform);\n                });\n\n        this._addPointSubscription = this._tagCreator.tag$.pipe(\n            switchMap(\n                (tag: OutlineCreateTag): Observable<[OutlineCreateTag, number[]]> => {\n                    return !!tag ?\n                        observableCombineLatest(\n                                observableOf(tag),\n                                basicClick$) :\n                        observableEmpty();\n                }))\n            .subscribe(\n                ([tag, basicPoint]: [OutlineCreateTag, number[]]): void => {\n                    this._addPoint(tag, basicPoint);\n                });\n\n        this._geometryCreateSubscription = this._tagCreator.tag$.pipe(\n            switchMap(\n                (tag: OutlineCreateTag): Observable<Geometry> => {\n                    return !!tag ?\n                        tag.created$.pipe(\n                            map(\n                                (t: OutlineCreateTag): Geometry => {\n                                    return t.geometry;\n                                })) :\n                        observableEmpty();\n                }))\n            .subscribe(this._geometryCreated$);\n    }\n\n    protected abstract _addPoint(tag: OutlineCreateTag, basicPoint: number[]): void;\n\n    protected abstract _setVertex2d(tag: OutlineCreateTag, basicPoint: number[], transform: Transform): void;\n\n    protected _disableCreate(): void {\n        this._container.mouseService.undeferPixels(this._name);\n\n        this._tagCreator.delete$.next(null);\n\n        this._addPointSubscription.unsubscribe();\n        this._createSubscription.unsubscribe();\n        this._deleteSubscription.unsubscribe();\n        this._geometryCreateSubscription.unsubscribe();\n        this._setVertexSubscription.unsubscribe();\n    }\n}\n\nexport default CreateVertexHandler;\n",
+    "import {\n    of as observableOf,\n    empty as observableEmpty,\n    combineLatest as observableCombineLatest,\n    merge as observableMerge,\n    Observable,\n    Subject,\n    Subscription,\n} from \"rxjs\";\n\nimport {\n    filter,\n    refCount,\n    switchMap,\n    skip,\n    share,\n    take,\n    map,\n    publishReplay,\n} from \"rxjs/operators\";\n\nimport {\n    CreateHandlerBase,\n    Geometry,\n    CreateTag,\n} from \"../../../Component\";\nimport {Transform} from \"../../../Geo\";\nimport {RenderCamera} from \"../../../Render\";\n\nexport abstract class CreateVertexHandler extends CreateHandlerBase {\n    private _addPointSubscription: Subscription;\n    private _createSubscription: Subscription;\n    private _deleteSubscription: Subscription;\n    private _geometryCreateSubscription: Subscription;\n    private _setVertexSubscription: Subscription;\n\n    protected abstract get _create$(): Subject<number[]>;\n\n    protected _enableCreate(): void {\n        this._container.mouseService.deferPixels(this._name, 4);\n\n        const transformChanged$: Observable<void> = this._navigator.stateService.currentTransform$.pipe(\n            map((): void => { /*noop*/ }),\n            publishReplay(1),\n            refCount());\n\n        this._deleteSubscription = transformChanged$.pipe(\n            skip(1))\n            .subscribe(this._tagCreator.delete$);\n\n        const basicClick$: Observable<number[]> = this._mouseEventToBasic$(this._container.mouseService.proximateClick$).pipe(share());\n\n        this._createSubscription = transformChanged$.pipe(\n            switchMap(\n                (): Observable<number[]> => {\n                    return basicClick$.pipe(\n                        filter(this._validateBasic),\n                        take(1));\n                }))\n            .subscribe(this._create$);\n\n        this._setVertexSubscription = this._tagCreator.tag$.pipe(\n            switchMap(\n                (tag: CreateTag<Geometry>): Observable<[CreateTag<Geometry>, MouseEvent, RenderCamera, Transform]> => {\n                    return !!tag ?\n                        observableCombineLatest(\n                                observableOf(tag),\n                                observableMerge(\n                                        this._container.mouseService.mouseMove$,\n                                        this._container.mouseService.domMouseMove$),\n                                this._container.renderService.renderCamera$,\n                                this._navigator.stateService.currentTransform$) :\n                        observableEmpty();\n                }))\n            .subscribe(\n                ([tag, event, camera, transform]: [CreateTag<Geometry>, MouseEvent, RenderCamera, Transform]): void => {\n                    const basicPoint: number[] = this._mouseEventToBasic(\n                        event,\n                        this._container.element,\n                        camera,\n                        transform);\n\n                    this._setVertex2d(tag, basicPoint, transform);\n                });\n\n        this._addPointSubscription = this._tagCreator.tag$.pipe(\n            switchMap(\n                (tag: CreateTag<Geometry>): Observable<[CreateTag<Geometry>, number[]]> => {\n                    return !!tag ?\n                        observableCombineLatest(\n                                observableOf(tag),\n                                basicClick$) :\n                        observableEmpty();\n                }))\n            .subscribe(\n                ([tag, basicPoint]: [CreateTag<Geometry>, number[]]): void => {\n                    this._addPoint(tag, basicPoint);\n                });\n\n        this._geometryCreateSubscription = this._tagCreator.tag$.pipe(\n            switchMap(\n                (tag: CreateTag<Geometry>): Observable<Geometry> => {\n                    return !!tag ?\n                        tag.created$.pipe(\n                            map(\n                                (t: CreateTag<Geometry>): Geometry => {\n                                    return t.geometry;\n                                })) :\n                        observableEmpty();\n                }))\n            .subscribe(this._geometryCreated$);\n    }\n\n    protected abstract _addPoint(tag: CreateTag<Geometry>, basicPoint: number[]): void;\n\n    protected abstract _setVertex2d(tag: CreateTag<Geometry>, basicPoint: number[], transform: Transform): void;\n\n    protected _disableCreate(): void {\n        this._container.mouseService.undeferPixels(this._name);\n\n        this._tagCreator.delete$.next(null);\n\n        this._addPointSubscription.unsubscribe();\n        this._createSubscription.unsubscribe();\n        this._deleteSubscription.unsubscribe();\n        this._geometryCreateSubscription.unsubscribe();\n        this._setVertexSubscription.unsubscribe();\n    }\n}\n\nexport default CreateVertexHandler;\n",
     "import {\n    concat as observableConcat,\n    empty as observableEmpty,\n    combineLatest as observableCombineLatest,\n    of as observableOf,\n    merge as observableMerge,\n    from as observableFrom,\n    Observable,\n    Subscription,\n} from \"rxjs\";\n\nimport {\n    distinctUntilChanged,\n    share,\n    switchMap,\n    filter,\n    withLatestFrom,\n    first,\n    map,\n    mergeMap,\n} from \"rxjs/operators\";\n\nimport {\n    Component,\n    TagHandlerBase,\n    Geometry,\n    IInteraction,\n    InteractionCursor,\n    ITagConfiguration,\n    RenderTag,\n    Tag,\n    TagOperation,\n    TagSet,\n    VertexGeometry,\n} from \"../../../Component\";\nimport {\n    Transform,\n    ViewportCoords,\n} from \"../../../Geo\";\nimport {RenderCamera} from \"../../../Render\";\nimport {\n    Container,\n    Navigator,\n} from \"../../../Viewer\";\n\nexport class EditVertexHandler extends TagHandlerBase {\n    private _tagSet: TagSet;\n\n    private _claimMouseSubscription: Subscription;\n    private _cursorSubscription: Subscription;\n    private _preventDefaultSubscription: Subscription;\n    private _unclaimMouseSubscription: Subscription;\n    private _updateGeometrySubscription: Subscription;\n\n    constructor(\n        component: Component<ITagConfiguration>,\n        container: Container,\n        navigator: Navigator,\n        viewportCoords: ViewportCoords,\n        tagSet: TagSet) {\n        super(component, container, navigator, viewportCoords);\n\n        this._tagSet = tagSet;\n    }\n\n    protected _enable(): void {\n        const interaction$: Observable<IInteraction> = this._tagSet.changed$.pipe(\n            map(\n                (tagSet: TagSet): RenderTag<Tag>[] => {\n                    return tagSet.getAll();\n                }),\n            switchMap(\n                (tags: RenderTag<Tag>[]): Observable<IInteraction> => {\n                    return observableFrom(tags).pipe(\n                        mergeMap(\n                            (tag: RenderTag<Tag>): Observable<IInteraction> => {\n                                return tag.interact$;\n                            }));\n                }),\n            switchMap(\n                (interaction: IInteraction): Observable<IInteraction> => {\n                    return observableConcat(\n                        observableOf(interaction),\n                        this._container.mouseService.documentMouseUp$.pipe(\n                            map(\n                                (): IInteraction => {\n                                    return { offsetX: 0, offsetY: 0, operation: TagOperation.None, tag: null };\n                                }),\n                            first()));\n                }),\n            share());\n\n        const mouseMove$: Observable<MouseEvent> = observableMerge(\n                this._container.mouseService.mouseMove$,\n                this._container.mouseService.domMouseMove$).pipe(\n            share());\n\n        this._claimMouseSubscription = interaction$.pipe(\n            switchMap(\n                (interaction: IInteraction): Observable<MouseEvent> => {\n                    return !!interaction.tag ? this._container.mouseService.domMouseDragStart$ : observableEmpty();\n                }))\n            .subscribe(\n                (): void => {\n                    this._container.mouseService.claimMouse(this._name, 3);\n                });\n\n        this._cursorSubscription = interaction$.pipe(\n            map(\n                (interaction: IInteraction): string => {\n                    return interaction.cursor;\n                }),\n            distinctUntilChanged())\n            .subscribe(\n                (cursor: string): void => {\n                    const interactionCursors: InteractionCursor[] = [\"crosshair\", \"move\", \"nesw-resize\", \"nwse-resize\"];\n                    for (const interactionCursor of interactionCursors) {\n                        this._container.element.classList.remove(`component-tag-edit-${interactionCursor}`);\n                    }\n\n                    if (!!cursor) {\n                        this._container.element.classList.add(`component-tag-edit-${cursor}`);\n                    }\n                });\n\n        this._unclaimMouseSubscription = this._container.mouseService\n            .filtered$(this._name, this._container.mouseService.domMouseDragEnd$)\n            .subscribe(\n                (e: MouseEvent): void => {\n                    this._container.mouseService.unclaimMouse(this._name);\n                });\n\n        this._preventDefaultSubscription = interaction$.pipe(\n            switchMap(\n                (interaction: IInteraction): Observable<MouseEvent> => {\n                    return !!interaction.tag ?\n                        this._container.mouseService.documentMouseMove$ :\n                        observableEmpty();\n                }))\n            .subscribe(\n                (event: MouseEvent): void => {\n                    event.preventDefault(); // prevent selection of content outside the viewer\n                });\n\n        this._updateGeometrySubscription = interaction$.pipe(\n            switchMap(\n                (interaction: IInteraction): Observable<[MouseEvent, RenderCamera, IInteraction, Transform]> => {\n                    if (interaction.operation === TagOperation.None || !interaction.tag) {\n                        return observableEmpty();\n                    }\n\n                    const mouseDrag$: Observable<MouseEvent> =\n                        this._container.mouseService\n                            .filtered$(\n                                this._name,\n                                this._container.mouseService.domMouseDrag$).pipe(\n                            filter(\n                                (event: MouseEvent): boolean => {\n                                    return this._viewportCoords.insideElement(event, this._container.element);\n                                }));\n\n                    return observableCombineLatest<MouseEvent, RenderCamera>(\n                            mouseDrag$,\n                            this._container.renderService.renderCamera$).pipe(\n                        withLatestFrom(\n                            observableOf(interaction),\n                            this._navigator.stateService.currentTransform$,\n                            (\n                                [event, render]: [MouseEvent, RenderCamera],\n                                i: IInteraction,\n                                transform: Transform):\n                                [MouseEvent, RenderCamera, IInteraction, Transform] => {\n                                return [event, render, i, transform];\n                            }));\n                }))\n            .subscribe(\n                ([mouseEvent, renderCamera, interaction, transform]: [MouseEvent, RenderCamera, IInteraction, Transform]): void => {\n                    const basic: number[] = this._mouseEventToBasic(\n                        mouseEvent,\n                        this._container.element,\n                        renderCamera,\n                        transform,\n                        interaction.offsetX,\n                        interaction.offsetY);\n\n                    const geometry: Geometry = interaction.tag.geometry;\n                    if (interaction.operation === TagOperation.Centroid) {\n                        geometry.setCentroid2d(basic, transform);\n                    } else if (interaction.operation === TagOperation.Vertex) {\n                        (<VertexGeometry>geometry).setVertex2d(interaction.vertexIndex, basic, transform);\n                    }\n                });\n    }\n\n    protected _disable(): void {\n        this._claimMouseSubscription.unsubscribe();\n        this._cursorSubscription.unsubscribe();\n        this._preventDefaultSubscription.unsubscribe();\n        this._unclaimMouseSubscription.unsubscribe();\n        this._updateGeometrySubscription.unsubscribe();\n    }\n\n    protected _getNameExtension(): string {\n        return \"edit-vertex\";\n    }\n}\n\nexport default EditVertexHandler;\n",
     "import {\n    Component,\n    HandlerBase,\n    ITagConfiguration,\n} from \"../../../Component\";\nimport {\n    Transform,\n    ViewportCoords,\n} from \"../../../Geo\";\nimport {RenderCamera} from \"../../../Render\";\nimport {\n    Container,\n    Navigator,\n} from \"../../../Viewer\";\n\nexport abstract class TagHandlerBase extends HandlerBase<ITagConfiguration> {\n    protected _name: string;\n\n    protected _viewportCoords: ViewportCoords;\n\n    constructor(\n        component: Component<ITagConfiguration>,\n        container: Container,\n        navigator: Navigator,\n        viewportCoords: ViewportCoords) {\n        super(component, container, navigator);\n\n        this._name = `${this._component.name}-${this._getNameExtension()}`;\n\n        this._viewportCoords = viewportCoords;\n    }\n\n    protected _getConfiguration(enable: boolean): ITagConfiguration {\n        return {};\n    }\n\n    protected abstract _getNameExtension(): string;\n\n    protected _mouseEventToBasic(\n        event: MouseEvent,\n        element: HTMLElement,\n        camera: RenderCamera,\n        transform: Transform,\n        offsetX?: number,\n        offsetY?: number):\n        number[] {\n\n        offsetX = offsetX != null ? offsetX : 0;\n        offsetY = offsetY != null ? offsetY : 0;\n\n        const [canvasX, canvasY]: number[] = this._viewportCoords.canvasPosition(event, element);\n        const basic: number[] =\n            this._viewportCoords.canvasToBasic(\n                canvasX - offsetX,\n                canvasY - offsetY,\n                element,\n                transform,\n                camera.perspective);\n\n        return basic;\n    }\n}\n\nexport default TagHandlerBase;\n",
-    "import {map} from \"rxjs/operators\";\nimport * as THREE from \"three\";\nimport * as vd from \"virtual-dom\";\n\nimport {Observable, Subject, Subscription} from \"rxjs\";\n\nimport {\n    IOutlineCreateTagOptions,\n    PolygonGeometry,\n    RectGeometry,\n    VertexGeometry,\n} from \"../../../Component\";\nimport {\n    Transform,\n    ViewportCoords,\n} from \"../../../Geo\";\nimport {ISize} from \"../../../Render\";\n\nexport class OutlineCreateTag {\n    private _geometry: VertexGeometry;\n    private _outline: THREE.Line;\n    private _glObjects: THREE.Object3D[];\n    private _options: IOutlineCreateTagOptions;\n    private _transform: Transform;\n    private _viewportCoords: ViewportCoords;\n\n    private _aborted$: Subject<OutlineCreateTag>;\n    private _created$: Subject<OutlineCreateTag>;\n    private _glObjectsChanged$: Subject<OutlineCreateTag>;\n\n    private _geometryChangedSubscription: Subscription;\n\n    constructor(geometry: VertexGeometry, options: IOutlineCreateTagOptions, transform: Transform, viewportCoords?: ViewportCoords) {\n        this._geometry = geometry;\n        this._options = { color: options.color == null ? 0xFFFFFF : options.color };\n        this._transform = transform;\n        this._viewportCoords = !!viewportCoords ? viewportCoords : new ViewportCoords();\n\n        this._outline = this._createOutine();\n        this._glObjects = [this._outline];\n\n        this._aborted$ = new Subject<OutlineCreateTag>();\n        this._created$ = new Subject<OutlineCreateTag>();\n        this._glObjectsChanged$ = new Subject<OutlineCreateTag>();\n\n        this._geometryChangedSubscription = this._geometry.changed$\n            .subscribe(\n                (vertexGeometry: VertexGeometry): void => {\n                    this._disposeOutline();\n                    this._outline = this._createOutine();\n                    this._glObjects = [this._outline];\n\n                    this._glObjectsChanged$.next(this);\n                });\n    }\n\n    public get geometry(): VertexGeometry {\n        return this._geometry;\n    }\n\n    public get glObjects(): THREE.Object3D[] {\n        return this._glObjects;\n    }\n\n    public get aborted$(): Observable<OutlineCreateTag> {\n        return this._aborted$;\n    }\n\n    public get created$(): Observable<OutlineCreateTag> {\n        return this._created$;\n    }\n\n    public get glObjectsChanged$(): Observable<OutlineCreateTag> {\n        return this._glObjectsChanged$;\n    }\n\n    public get geometryChanged$(): Observable<OutlineCreateTag> {\n        return this._geometry.changed$.pipe(\n            map(\n                (geometry: VertexGeometry): OutlineCreateTag => {\n                    return this;\n                }));\n    }\n\n    public dispose(): void {\n        this._disposeOutline();\n        this._geometryChangedSubscription.unsubscribe();\n    }\n\n    public getDOMObjects(camera: THREE.Camera, size: ISize): vd.VNode[] {\n        const vNodes: vd.VNode[] = [];\n        const container: { offsetHeight: number, offsetWidth: number } = {\n            offsetHeight: size.height, offsetWidth: size.width,\n        };\n\n        const abort: (e: MouseEvent) => void = (e: MouseEvent): void => {\n            e.stopPropagation();\n            this._aborted$.next(this);\n        };\n\n        if (this._geometry instanceof RectGeometry) {\n            const anchorIndex: number = (<RectGeometry>this._geometry).anchorIndex;\n            const vertexIndex: number = anchorIndex === undefined ? 1 : anchorIndex;\n            const [basicX, basicY]: number[] = this._geometry.getVertex2d(vertexIndex);\n            const canvasPoint: number[] =\n                this._viewportCoords.basicToCanvasSafe(\n                    basicX,\n                    basicY,\n                    container,\n                    this._transform,\n                    camera);\n\n            if (canvasPoint != null) {\n                const background: string = this._colorToBackground(this._options.color);\n                const transform: string = this._canvasToTransform(canvasPoint);\n                const pointProperties: vd.createProperties = {\n                    style: { background: background, transform: transform },\n                };\n\n                const completerProperties: vd.createProperties = {\n                    onclick: abort,\n                    style: { transform: transform },\n                };\n\n                vNodes.push(vd.h(\"div.TagInteractor\", completerProperties, []));\n                vNodes.push(vd.h(\"div.TagVertex\", pointProperties, []));\n            }\n        } else if (this._geometry instanceof PolygonGeometry) {\n            const polygonGeometry: PolygonGeometry = <PolygonGeometry>this._geometry;\n\n            const [firstVertexBasicX, firstVertexBasicY]: number[] = polygonGeometry.getVertex2d(0);\n            const firstVertexCanvas: number[] =\n                this._viewportCoords.basicToCanvasSafe(\n                    firstVertexBasicX,\n                    firstVertexBasicY,\n                    container,\n                    this._transform,\n                    camera);\n\n            if (firstVertexCanvas != null) {\n                const firstOnclick: (e: MouseEvent) => void = polygonGeometry.polygon.length > 4 ?\n                    (e: MouseEvent): void => {\n                        e.stopPropagation();\n                        polygonGeometry.removeVertex2d(polygonGeometry.polygon.length - 2);\n                        this._created$.next(this);\n                    } :\n                    abort;\n\n                const transform: string = this._canvasToTransform(firstVertexCanvas);\n                const completerProperties: vd.createProperties = {\n                    onclick: firstOnclick,\n                    style: { transform: transform },\n                };\n\n                const firstClass: string = polygonGeometry.polygon.length > 4 ?\n                    \"TagCompleter\" :\n                    \"TagInteractor\";\n\n                vNodes.push(vd.h(\"div.\" + firstClass, completerProperties, []));\n            }\n\n            if (polygonGeometry.polygon.length > 3) {\n                const [lastVertexBasicX, lastVertexBasicY]: number[] = polygonGeometry.getVertex2d(polygonGeometry.polygon.length - 3);\n                const lastVertexCanvas: number[] =\n                    this._viewportCoords.basicToCanvasSafe(\n                        lastVertexBasicX,\n                        lastVertexBasicY,\n                        container,\n                        this._transform,\n                        camera);\n\n                if (lastVertexCanvas != null) {\n                    const remove: (e: MouseEvent) => void = (e: MouseEvent): void => {\n                        e.stopPropagation();\n                        polygonGeometry.removeVertex2d(polygonGeometry.polygon.length - 3);\n                    };\n\n                    const transform: string = this._canvasToTransform(lastVertexCanvas);\n                    const completerProperties: vd.createProperties = {\n                        onclick: remove,\n                        style: { transform: transform },\n                    };\n\n                    vNodes.push(vd.h(\"div.TagInteractor\", completerProperties, []));\n                }\n            }\n\n            const verticesBasic: number[][] = polygonGeometry.polygon.slice();\n            verticesBasic.splice(-2, 2);\n            for (const vertexBasic of verticesBasic) {\n                const vertexCanvas: number[] =\n                    this._viewportCoords.basicToCanvasSafe(\n                        vertexBasic[0],\n                        vertexBasic[1],\n                        container,\n                        this._transform,\n                        camera);\n\n                if (vertexCanvas != null) {\n                    const background: string = this._colorToBackground(this._options.color);\n                    const transform: string = this._canvasToTransform(vertexCanvas);\n                    const pointProperties: vd.createProperties = {\n                        style: {\n                            background: background,\n                            transform: transform,\n                        },\n                    };\n\n                    vNodes.push(vd.h(\"div.TagVertex\", pointProperties, []));\n                }\n            }\n        }\n\n        return vNodes;\n    }\n\n    public addPoint(point: number[]): void {\n        if (this._geometry instanceof RectGeometry) {\n            const rectGeometry: RectGeometry = <RectGeometry>this._geometry;\n\n            if (!rectGeometry.validate(point)) {\n                return;\n            }\n\n            this._created$.next(this);\n        } else if (this._geometry instanceof PolygonGeometry) {\n            const polygonGeometry: PolygonGeometry = <PolygonGeometry>this._geometry;\n\n            polygonGeometry.addVertex2d(point);\n        }\n    }\n\n    private _canvasToTransform(canvas: number[]): string {\n        const canvasX: number = Math.round(canvas[0]);\n        const canvasY: number = Math.round(canvas[1]);\n        const transform: string = `translate(-50%,-50%) translate(${canvasX}px,${canvasY}px)`;\n\n        return transform;\n    }\n\n    private _colorToBackground(color: number): string {\n        return \"#\" + (\"000000\" + color.toString(16)).substr(-6);\n    }\n\n    private _createOutine(): THREE.Line {\n        const polygon3d: number[][] = this._geometry instanceof RectGeometry ?\n            this._geometry.getPoints3d(this._transform) :\n            (<PolygonGeometry>this._geometry).getVertices3d(this._transform);\n\n        const positions: Float32Array = this._getLinePositions(polygon3d);\n\n        const geometry: THREE.BufferGeometry = new THREE.BufferGeometry();\n        geometry.addAttribute(\"position\", new THREE.BufferAttribute(positions, 3));\n\n        const material: THREE.LineBasicMaterial =\n            new THREE.LineBasicMaterial(\n                {\n                    color: this._options.color,\n                    linewidth: 1,\n                });\n\n        return new THREE.Line(geometry, material);\n    }\n\n    private _disposeOutline(): void {\n        if (this._outline == null) {\n            return;\n        }\n\n        const line: THREE.Line = this._outline;\n        line.geometry.dispose();\n        line.material.dispose();\n        this._outline = null;\n        this._glObjects = [];\n    }\n\n    private _getLinePositions(polygon3d: number[][]): Float32Array {\n        const length: number = polygon3d.length;\n        const positions: Float32Array = new Float32Array(length * 3);\n\n        for (let i: number = 0; i < length; ++i) {\n            const index: number = 3 * i;\n\n            const position: number[] = polygon3d[i];\n\n            positions[index] = position[0];\n            positions[index + 1] = position[1];\n            positions[index + 2] = position[2];\n        }\n\n        return positions;\n    }\n}\n\nexport default OutlineCreateTag;\n",
-    "import * as THREE from \"three\";\nimport * as vd from \"virtual-dom\";\n\nimport {Subscription} from \"rxjs\";\n\nimport {\n    InteractionCursor,\n    OutlineTag,\n    PolygonGeometry,\n    RectGeometry,\n    RenderTag,\n    TagDomain,\n    TagOperation,\n} from \"../../../Component\";\nimport {Transform} from \"../../../Geo\";\nimport {ISize} from \"../../../Render\";\nimport {ISpriteAtlas} from \"../../../Viewer\";\n\n/**\n * @class OutlineRenderTag\n * @classdesc Tag visualizing the properties of an OutlineTag.\n */\nexport class OutlineRenderTag extends RenderTag<OutlineTag> {\n    private _fill: THREE.Mesh;\n    private _holes: THREE.Line[];\n    private _outline: THREE.Line;\n\n    private _changedSubscription: Subscription;\n    private _geometryChangedSubscription: Subscription;\n\n    constructor(tag: OutlineTag, transform: Transform) {\n        super(tag, transform);\n\n        this._fill = !transform.gpano ?\n            this._createFill() :\n            transform.fullPano &&\n            tag.domain === TagDomain.TwoDimensional &&\n            tag.geometry instanceof PolygonGeometry ?\n                this._createFill() :\n                null;\n\n        this._holes = this._tag.lineWidth >= 1 ?\n            this._createHoles() :\n            [];\n\n        this._outline = this._tag.lineWidth >= 1 ?\n            this._createOutline() :\n            null;\n\n        this._geometryChangedSubscription = this._tag.geometry.changed$\n            .subscribe(\n                (): void => {\n                    if (this._fill != null) {\n                        this._updateFillGeometry();\n                    }\n\n                    if (this._holes.length > 0) {\n                        this._updateHoleGeometries();\n                    }\n\n                    if (this._outline != null) {\n                        this._updateOulineGeometry();\n                    }\n                });\n\n        this._changedSubscription = this._tag.changed$\n            .subscribe(\n                (): void => {\n                    let glObjectsChanged: boolean = false;\n\n                    if (this._fill != null) {\n                        this._updateFillMaterial(<THREE.MeshBasicMaterial>this._fill.material);\n                    }\n\n                    if (this._outline == null) {\n                        if (this._tag.lineWidth >= 1) {\n                            this._holes = this._createHoles();\n                            this._outline = this._createOutline();\n                            glObjectsChanged = true;\n                        }\n                    } else {\n                        this._updateHoleMaterials();\n                        this._updateOutlineMaterial();\n                    }\n\n                    if (glObjectsChanged) {\n                        this._glObjectsChanged$.next(this);\n                    }\n                });\n    }\n\n    public dispose(): void {\n        this._disposeFill();\n        this._disposeHoles();\n        this._disposeOutline();\n\n        this._changedSubscription.unsubscribe();\n        this._geometryChangedSubscription.unsubscribe();\n    }\n\n    public getDOMObjects(atlas: ISpriteAtlas, camera: THREE.Camera, size: ISize): vd.VNode[] {\n        const vNodes: vd.VNode[] = [];\n        const isRect: boolean = this._tag.geometry instanceof RectGeometry;\n        const isPerspective: boolean = !this._transform.gpano;\n        const container: { offsetHeight: number, offsetWidth: number } = {\n            offsetHeight: size.height, offsetWidth: size.width,\n        };\n\n        if (this._tag.icon != null && (isRect || isPerspective)) {\n            const [iconBasicX, iconBasicY]: number[] = this._tag.geometry instanceof RectGeometry ?\n                this._tag.geometry.getVertex2d(this._tag.iconIndex) :\n                this._tag.geometry.getPoleOfInaccessibility2d();\n\n            const iconCanvas: number[] =\n                this._viewportCoords.basicToCanvasSafe(\n                    iconBasicX,\n                    iconBasicY,\n                    container,\n                    this._transform,\n                    camera);\n\n            if (iconCanvas != null) {\n                const interact: (e: MouseEvent) => void = (e: MouseEvent): void => {\n                    this._interact$.next({ offsetX: 0, offsetY: 0, operation: TagOperation.None, tag: this._tag });\n                };\n\n                if (atlas.loaded) {\n                    const sprite: vd.VNode = atlas.getDOMSprite(this._tag.icon, this._tag.iconFloat);\n                    const iconCanvasX: number = Math.round(iconCanvas[0]);\n                    const iconCanvasY: number = Math.round(iconCanvas[1]);\n                    const transform: string = `translate(${iconCanvasX}px,${iconCanvasY}px)`;\n\n                    const click: (e: MouseEvent) => void = (e: MouseEvent): void => {\n                        e.stopPropagation();\n                        this._tag.click$.next(this._tag);\n                    };\n\n                    const properties: vd.createProperties = {\n                        onclick: click,\n                        onmousedown: interact,\n                        style: { transform: transform },\n                    };\n\n                    vNodes.push(vd.h(\"div.TagSymbol\", properties, [sprite]));\n                }\n            }\n        } else if (this._tag.text != null && (isRect || isPerspective)) {\n            const [textBasicX, textBasicY]: number[] = this._tag.geometry instanceof RectGeometry ?\n                this._tag.geometry.getVertex2d(3) :\n                this._tag.geometry.getPoleOfInaccessibility2d();\n\n            const textCanvas: number[] =\n                this._viewportCoords.basicToCanvasSafe(\n                    textBasicX,\n                    textBasicY,\n                    container,\n                    this._transform,\n                    camera);\n\n            if (textCanvas != null) {\n                const textCanvasX: number = Math.round(textCanvas[0]);\n                const textCanvasY: number = Math.round(textCanvas[1]);\n                const transform: string = this._tag.geometry instanceof RectGeometry ?\n                    `translate(${textCanvasX}px,${textCanvasY}px)` :\n                    `translate(-50%, -50%) translate(${textCanvasX}px,${textCanvasY}px)`;\n\n                const interact: (e: MouseEvent) => void = (e: MouseEvent): void => {\n                    this._interact$.next({ offsetX: 0, offsetY: 0, operation: TagOperation.None, tag: this._tag });\n                };\n\n                const properties: vd.createProperties = {\n                    onmousedown: interact,\n                    style: {\n                        color: this._colorToCss(this._tag.textColor),\n                        transform: transform,\n                    },\n                    textContent: this._tag.text,\n                };\n\n                vNodes.push(vd.h(\"span.TagSymbol\", properties, []));\n            }\n        }\n\n        if (!this._tag.editable) {\n            return vNodes;\n        }\n\n        const lineColor: string = this._colorToCss(this._tag.lineColor);\n\n        if (this._tag.geometry instanceof RectGeometry) {\n            const [centroidBasicX, centroidBasicY]: number[] = this._tag.geometry.getCentroid2d();\n            const centroidCanvas: number[] =\n                this._viewportCoords.basicToCanvasSafe(\n                    centroidBasicX,\n                    centroidBasicY,\n                    container,\n                    this._transform,\n                    camera);\n\n            if (centroidCanvas != null) {\n                const interact: (e: MouseEvent) => void = this._interact(TagOperation.Centroid, \"move\");\n                const centroidCanvasX: number = Math.round(centroidCanvas[0]);\n                const centroidCanvasY: number = Math.round(centroidCanvas[1]);\n                const transform: string = `translate(-50%, -50%) translate(${centroidCanvasX}px,${centroidCanvasY}px)`;\n\n                const properties: vd.createProperties = {\n                    onmousedown: interact,\n                    style: { background: lineColor, transform: transform },\n                };\n\n                vNodes.push(vd.h(\"div.TagMover\", properties, []));\n            }\n        }\n\n        const vertices2d: number[][] = this._tag.geometry.getVertices2d();\n\n        for (let i: number = 0; i < vertices2d.length - 1; i++) {\n            if (isRect &&\n                ((this._tag.icon != null && i === this._tag.iconIndex) ||\n                (this._tag.icon == null && this._tag.text != null && i === 3))) {\n                continue;\n            }\n\n            const [vertexBasicX, vertexBasicY]: number[] = vertices2d[i];\n            const vertexCanvas: number[] =\n                this._viewportCoords.basicToCanvasSafe(\n                    vertexBasicX,\n                    vertexBasicY,\n                    container,\n                    this._transform,\n                    camera);\n\n            if (vertexCanvas == null) {\n                continue;\n            }\n\n            const cursor: InteractionCursor = isRect ?\n                 i % 2 === 0 ? \"nesw-resize\" : \"nwse-resize\" :\n                 \"crosshair\";\n\n            const interact: (e: MouseEvent) => void = this._interact(TagOperation.Vertex, cursor, i);\n            const vertexCanvasX: number = Math.round(vertexCanvas[0]);\n            const vertexCanvasY: number = Math.round(vertexCanvas[1]);\n            const transform: string = `translate(-50%, -50%) translate(${vertexCanvasX}px,${vertexCanvasY}px)`;\n\n            const properties: vd.createProperties = {\n                onmousedown: interact,\n                style: { background: lineColor, transform: transform, cursor: cursor },\n            };\n\n            vNodes.push(vd.h(\"div.TagResizer\", properties, []));\n\n            if (!this._tag.indicateVertices) {\n                continue;\n            }\n\n            const pointProperties: vd.createProperties = {\n                style: { background: lineColor, transform: transform },\n            };\n\n            vNodes.push(vd.h(\"div.TagVertex\", pointProperties, []));\n        }\n\n        return vNodes;\n    }\n\n    public getGLObjects(): THREE.Object3D[] {\n        const glObjects: THREE.Object3D[] = [];\n\n        if (this._fill != null) {\n            glObjects.push(this._fill);\n        }\n\n        for (const hole of this._holes) {\n            glObjects.push(hole);\n        }\n\n        if (this._outline != null) {\n            glObjects.push(this._outline);\n        }\n\n        return glObjects;\n    }\n\n    public getRetrievableObjects(): THREE.Object3D[] {\n        return this._fill != null ? [this._fill] : [];\n    }\n\n    private _colorToCss(color: number): string {\n        return \"#\" + (\"000000\" + color.toString(16)).substr(-6);\n    }\n\n    private _createFill(): THREE.Mesh {\n        let triangles: number[] = this._getTriangles();\n        let positions: Float32Array = new Float32Array(triangles);\n\n        let geometry: THREE.BufferGeometry = new THREE.BufferGeometry();\n        geometry.addAttribute(\"position\", new THREE.BufferAttribute(positions, 3));\n        geometry.computeBoundingSphere();\n\n        let material: THREE.MeshBasicMaterial =\n            new THREE.MeshBasicMaterial({ side: THREE.DoubleSide, transparent: true });\n\n        this._updateFillMaterial(material);\n\n        return new THREE.Mesh(geometry, material);\n    }\n\n    private _createHoles(): THREE.Line[] {\n        let holes: THREE.Line[] = [];\n\n        if (this._tag.geometry instanceof PolygonGeometry) {\n            let holes3d: number[][][] = this._getHoles3d();\n\n            for (let holePoints3d of holes3d) {\n                let hole: THREE.Line = this._createLine(holePoints3d);\n                holes.push(hole);\n            }\n        }\n\n        return holes;\n    }\n\n    private _createLine(points3d: number[][]): THREE.Line {\n        let positions: Float32Array = this._getLinePositions(points3d);\n\n        let geometry: THREE.BufferGeometry = new THREE.BufferGeometry();\n        geometry.addAttribute(\"position\", new THREE.BufferAttribute(positions, 3));\n        geometry.computeBoundingSphere();\n\n        let material: THREE.LineBasicMaterial = new THREE.LineBasicMaterial();\n        this._updateLineBasicMaterial(material);\n\n        const line: THREE.Line = new THREE.Line(geometry, material);\n        line.renderOrder = 1;\n\n        return line;\n    }\n\n    private _createOutline(): THREE.Line {\n        return this._createLine(this._getPoints3d());\n    }\n\n    private _disposeFill(): void {\n        if (this._fill == null) {\n            return;\n        }\n\n        this._fill.geometry.dispose();\n        (<THREE.Material>this._fill.material).dispose();\n        this._fill = null;\n    }\n\n    private _disposeHoles(): void {\n        for (let hole of this._holes) {\n            hole.geometry.dispose();\n            hole.material.dispose();\n        }\n\n        this._holes = [];\n    }\n\n    private _disposeOutline(): void {\n        if (this._outline == null) {\n            return;\n        }\n\n        this._outline.geometry.dispose();\n        this._outline.material.dispose();\n        this._outline = null;\n    }\n\n    private _getLinePositions(points3d: number[][]): Float32Array {\n        let length: number = points3d.length;\n        let positions: Float32Array = new Float32Array(length * 3);\n\n        for (let i: number = 0; i < length; ++i) {\n            let index: number = 3 * i;\n            let position: number[] = points3d[i];\n\n            positions[index + 0] = position[0];\n            positions[index + 1] = position[1];\n            positions[index + 2] = position[2];\n        }\n\n        return positions;\n    }\n\n    private _getHoles3d(): number[][][] {\n        const polygonGeometry: PolygonGeometry = <PolygonGeometry>this._tag.geometry;\n\n        return this._in3dDomain() ?\n            polygonGeometry.getHoleVertices3d(this._transform) :\n            polygonGeometry.getHolePoints3d(this._transform);\n    }\n\n    private _getPoints3d(): number[][] {\n        return this._in3dDomain() ?\n            (<PolygonGeometry>this._tag.geometry).getVertices3d(this._transform) :\n            this._tag.geometry.getPoints3d(this._transform);\n    }\n\n    private _getTriangles(): number[] {\n        return this._in3dDomain() ?\n            (<PolygonGeometry>this._tag.geometry).get3dDomainTriangles3d(this._transform) :\n            this._tag.geometry.getTriangles3d(this._transform);\n    }\n\n    private _in3dDomain(): boolean {\n        return this._tag.geometry instanceof PolygonGeometry && this._tag.domain === TagDomain.ThreeDimensional;\n    }\n\n    private _interact(operation: TagOperation, cursor?: InteractionCursor, vertexIndex?: number): (e: MouseEvent) => void {\n        return (e: MouseEvent): void => {\n            let offsetX: number = e.offsetX - (<HTMLElement>e.target).offsetWidth / 2;\n            let offsetY: number = e.offsetY - (<HTMLElement>e.target).offsetHeight / 2;\n\n            this._interact$.next({\n                cursor: cursor,\n                offsetX: offsetX,\n                offsetY: offsetY,\n                operation: operation,\n                tag: this._tag,\n                vertexIndex: vertexIndex,\n            });\n        };\n    }\n\n    private _updateFillGeometry(): void {\n        let triangles: number[] = this._getTriangles();\n        let positions: Float32Array = new Float32Array(triangles);\n\n        let geometry: THREE.BufferGeometry = <THREE.BufferGeometry>this._fill.geometry;\n        let attribute: THREE.BufferAttribute = <THREE.BufferAttribute>geometry.getAttribute(\"position\");\n\n        if (attribute.array.length === positions.length) {\n            attribute.set(positions);\n            attribute.needsUpdate = true;\n        } else {\n            geometry.removeAttribute(\"position\");\n            geometry.addAttribute(\"position\", new THREE.BufferAttribute(positions, 3));\n        }\n\n        geometry.computeBoundingSphere();\n    }\n\n    private _updateFillMaterial(material: THREE.MeshBasicMaterial): void {\n        material.color = new THREE.Color(this._tag.fillColor);\n        material.opacity = this._tag.fillOpacity;\n        material.needsUpdate = true;\n    }\n\n    private _updateHoleGeometries(): void {\n        let holes3d: number[][][] = this._getHoles3d();\n\n        if (holes3d.length !== this._holes.length) {\n            throw new Error(\"Changing the number of holes is not supported.\");\n        }\n\n        for (let i: number = 0; i < this._holes.length; i++) {\n            let holePoints3d: number[][] = holes3d[i];\n            let hole: THREE.Line = this._holes[i];\n\n            this._updateLine(hole, holePoints3d);\n        }\n    }\n\n    private _updateHoleMaterials(): void {\n        for (let hole of this._holes) {\n            let material: THREE.LineBasicMaterial = <THREE.LineBasicMaterial>hole.material;\n\n            this._updateLineBasicMaterial(material);\n        }\n    }\n\n    private _updateLine(line: THREE.Line, points3d: number[][]): void {\n        let positions: Float32Array = this._getLinePositions(points3d);\n\n        let geometry: THREE.BufferGeometry = <THREE.BufferGeometry>line.geometry;\n        let attribute: THREE.BufferAttribute = <THREE.BufferAttribute>geometry.getAttribute(\"position\");\n\n        attribute.set(positions);\n        attribute.needsUpdate = true;\n\n        geometry.computeBoundingSphere();\n    }\n\n    private _updateOulineGeometry(): void {\n        this._updateLine(this._outline, this._getPoints3d());\n    }\n\n    private _updateOutlineMaterial(): void {\n        let material: THREE.LineBasicMaterial = <THREE.LineBasicMaterial>this._outline.material;\n\n        this._updateLineBasicMaterial(material);\n    }\n\n    private _updateLineBasicMaterial(material: THREE.LineBasicMaterial): void {\n        material.color = new THREE.Color(this._tag.lineColor);\n        material.linewidth = Math.max(this._tag.lineWidth, 1);\n        material.visible = this._tag.lineWidth >= 1 && this._tag.lineOpacity > 0;\n        material.opacity = this._tag.lineOpacity;\n        material.transparent = this._tag.lineOpacity < 1;\n        material.needsUpdate = true;\n    }\n}\n",
+    "import {map} from \"rxjs/operators\";\nimport * as THREE from \"three\";\nimport * as vd from \"virtual-dom\";\n\nimport {Observable, Subject, Subscription} from \"rxjs\";\n\nimport {\n    Geometry,\n    PolygonGeometry,\n    RectGeometry,\n} from \"../../../Component\";\nimport {\n    Transform,\n    ViewportCoords,\n} from \"../../../Geo\";\nimport { ISize } from \"../../../Render\";\n\nexport abstract class CreateTag<T extends Geometry> {\n    protected _geometry: T;\n\n    protected _transform: Transform;\n    protected _viewportCoords: ViewportCoords;\n\n    protected _aborted$: Subject<CreateTag<T>>;\n    protected _created$: Subject<CreateTag<T>>;\n\n    protected _glObjects: THREE.Object3D[];\n    protected _glObjectsChanged$: Subject<CreateTag<T>>;\n\n    protected _geometryChangedSubscription: Subscription;\n\n    constructor(geometry: T, transform: Transform, viewportCoords?: ViewportCoords) {\n\n        this._geometry = geometry;\n        this._transform = transform;\n        this._viewportCoords = !!viewportCoords ? viewportCoords : new ViewportCoords();\n\n        this._aborted$ = new Subject<CreateTag<T>>();\n        this._created$ = new Subject<CreateTag<T>>();\n        this._glObjectsChanged$ = new Subject<CreateTag<T>>();\n\n        this._geometryChangedSubscription = this._geometry.changed$\n            .subscribe(\n                (): void => {\n                    this._onGeometryChanged();\n\n                    this._glObjectsChanged$.next(this);\n                });\n    }\n\n    public get geometry(): T {\n        return this._geometry;\n    }\n\n    public get glObjects(): THREE.Object3D[] {\n        return this._glObjects;\n    }\n\n    public get aborted$(): Observable<CreateTag<T>> {\n        return this._aborted$;\n    }\n\n    public get created$(): Observable<CreateTag<T>> {\n        return this._created$;\n    }\n\n    public get glObjectsChanged$(): Observable<CreateTag<T>> {\n        return this._glObjectsChanged$;\n    }\n\n    public get geometryChanged$(): Observable<CreateTag<T>> {\n        return this._geometry.changed$.pipe(\n            map(\n                (): CreateTag<T> => {\n                    return this;\n                }));\n    }\n\n    public abstract getDOMObjects(camera: THREE.Camera, size: ISize): vd.VNode[];\n\n    public abstract create(): void;\n\n    public dispose(): void {\n        this._geometryChangedSubscription.unsubscribe();\n    }\n\n    protected abstract _onGeometryChanged(): void;\n\n    protected _canvasToTransform(canvas: number[]): string {\n        const canvasX: number = Math.round(canvas[0]);\n        const canvasY: number = Math.round(canvas[1]);\n        const transform: string = `translate(-50%,-50%) translate(${canvasX}px,${canvasY}px)`;\n\n        return transform;\n    }\n\n    protected _colorToBackground(color: number): string {\n        return \"#\" + (\"000000\" + color.toString(16)).substr(-6);\n    }\n\n    protected _createOutine(polygon3d: number[][], color: number): THREE.Line {\n        const positions: Float32Array = this._getLinePositions(polygon3d);\n\n        const geometry: THREE.BufferGeometry = new THREE.BufferGeometry();\n        geometry.addAttribute(\"position\", new THREE.BufferAttribute(positions, 3));\n\n        const material: THREE.LineBasicMaterial =\n            new THREE.LineBasicMaterial(\n                {\n                    color: color,\n                    linewidth: 1,\n                });\n\n        return new THREE.Line(geometry, material);\n    }\n\n    protected _disposeLine(line: THREE.Line): void {\n        if (line == null) {\n            return;\n        }\n\n        line.geometry.dispose();\n        line.material.dispose();\n    }\n\n    private _getLinePositions(polygon3d: number[][]): Float32Array {\n        const length: number = polygon3d.length;\n        const positions: Float32Array = new Float32Array(length * 3);\n\n        for (let i: number = 0; i < length; ++i) {\n            const index: number = 3 * i;\n\n            const position: number[] = polygon3d[i];\n\n            positions[index] = position[0];\n            positions[index + 1] = position[1];\n            positions[index + 2] = position[2];\n        }\n\n        return positions;\n    }\n}\n\nexport default CreateTag;\n",
+    "import * as vd from \"virtual-dom\";\nimport * as THREE from \"three\";\n\nimport { ViewportCoords, Transform } from \"../../../Geo\";\nimport { ISize } from \"../../../Render\";\nimport { RectGeometry, PointsGeometry } from \"../Tag\";\nimport { CreateTag, IExtremePointCreateTagOptions } from \"../../../Component\";\n\nexport class ExtremePointCreateTag extends CreateTag<PointsGeometry> {\n    private _rectGeometry: RectGeometry;\n    private _options: IExtremePointCreateTagOptions;\n    private _outline: THREE.Line;\n\n    constructor(\n        geometry: PointsGeometry,\n        options: IExtremePointCreateTagOptions,\n        transform: Transform,\n        viewportCoords?: ViewportCoords) {\n\n        super(geometry, transform, viewportCoords);\n\n        this._options = {\n            color: options.color == null ? 0xFFFFFF : options.color,\n            indicateCompleter: options.indicateCompleter == null ? true : options.indicateCompleter,\n        };\n\n        this._rectGeometry = new RectGeometry(this._geometry.getRect2d(transform));\n        this._createGlObjects();\n    }\n\n    public create(): void {\n        if (this._geometry.points.length < 3) {\n            return;\n        }\n\n        this._geometry.removePoint2d(this._geometry.points.length - 1);\n        this._created$.next(this);\n    }\n\n    public dispose(): void {\n        super.dispose();\n        this._disposeObjects();\n     }\n\n    public getDOMObjects(camera: THREE.Camera, size: ISize): vd.VNode[] {\n        const container: { offsetHeight: number, offsetWidth: number } = {\n            offsetHeight: size.height, offsetWidth: size.width,\n        };\n\n        const vNodes: vd.VNode[] = [];\n\n        const points2d: number[][] = this._geometry.getPoints2d();\n        const length: number = points2d.length;\n\n        for (let index: number = 0; index < length - 1; index++) {\n            const nonModifiedIndex: number = index;\n            const [pointX, pointY]: number[] = points2d[index];\n            const pointCanvas: number[] =\n                this._viewportCoords.basicToCanvasSafe(\n                    pointX,\n                    pointY,\n                    container,\n                    this._transform,\n                    camera);\n\n            if (!pointCanvas) {\n                continue;\n            }\n\n            const abort: (e: MouseEvent) => void = (e: MouseEvent): void => {\n                e.stopPropagation();\n                this._aborted$.next(this);\n            };\n\n            const remove: (e: MouseEvent) => void = (e: MouseEvent): void => {\n                e.stopPropagation();\n                this._geometry.removePoint2d(nonModifiedIndex);\n            };\n\n            const transform: string = this._canvasToTransform(pointCanvas);\n            const completerProperties: vd.createProperties = {\n                onclick: index === 0 && length < 3 ? abort : remove,\n                style: { transform: transform },\n            };\n\n            vNodes.push(vd.h(\"div.TagInteractor\", completerProperties, []));\n\n            const background: string = this._colorToBackground(this._options.color);\n            const pointProperties: vd.createProperties = {\n                style: {\n                    background: background,\n                    transform: transform,\n                },\n            };\n\n            vNodes.push(vd.h(\"div.TagVertex\", pointProperties, []));\n        }\n\n        if (length > 2 && this._options.indicateCompleter === true) {\n            const [centroidX, centroidY]: number[] = this._geometry.getCentroid2d(this._transform);\n            const centroidCanvas: number[] =\n            this._viewportCoords.basicToCanvasSafe(\n                centroidX,\n                centroidY,\n                container,\n                this._transform,\n                camera);\n\n            if (!!centroidCanvas) {\n                const complete: (e: MouseEvent) => void = (e: MouseEvent): void => {\n                    e.stopPropagation();\n                    this._geometry.removePoint2d(this._geometry.points.length - 1);\n                    this._created$.next(this);\n                };\n\n                const transform: string = this._canvasToTransform(centroidCanvas);\n                const completerProperties: vd.createProperties = {\n                    onclick: complete,\n                    style: { transform: transform },\n                };\n\n                vNodes.push(vd.h(\"div.TagCompleter.TagLarger\", completerProperties, []));\n\n                const pointProperties: vd.createProperties = {\n                    style: {\n                        background: this._colorToBackground(this._options.color),\n                        transform: transform,\n                    },\n                };\n\n                vNodes.push(vd.h(\"div.TagVertex.TagLarger\", pointProperties, []));\n\n                const dotProperties: vd.createProperties = {\n                    style: {\n                        transform: transform,\n                    },\n                };\n\n                vNodes.push(vd.h(\"div.TagDot\", dotProperties, []));\n            }\n        }\n\n        return vNodes;\n    }\n\n    protected _onGeometryChanged(): void {\n        this._disposeObjects();\n\n        this._rectGeometry = new RectGeometry(this._geometry.getRect2d(this._transform));\n        this._createGlObjects();\n    }\n\n    private _createGlObjects(): void {\n        this._glObjects = [];\n\n        const polygon3d: number[][] = this._rectGeometry.getPoints3d(this._transform);\n        this._outline = this._createOutine(polygon3d, this._options.color);\n        this._glObjects.push(this._outline);\n    }\n\n    private _disposeObjects(): void {\n        this._disposeLine(this._outline);\n        this._outline = null;\n        this._glObjects = null;\n    }\n}\n",
+    "import * as THREE from \"three\";\nimport * as vd from \"virtual-dom\";\n\nimport {\n    InteractionCursor,\n    RectGeometry,\n    TagOperation,\n    ExtremePointTag,\n    OutlineRenderTagBase,\n} from \"../../../Component\";\nimport {Transform} from \"../../../Geo\";\nimport {ISize} from \"../../../Render\";\nimport {ISpriteAtlas} from \"../../../Viewer\";\n\n/**\n * @class OutlineRenderTag\n * @classdesc Tag visualizing the properties of an OutlineTag.\n */\nexport class ExtremePointRenderTag extends OutlineRenderTagBase<ExtremePointTag> {\n    private _rectGeometry: RectGeometry;\n\n    constructor(tag: ExtremePointTag, transform: Transform) {\n        super(tag, transform);\n\n        this._rectGeometry = new RectGeometry(this._tag.geometry.getRect2d(transform));\n\n        this._fill = !transform.gpano ?\n            this._createFill() : null;\n\n        this._outline = this._tag.lineWidth >= 1 ?\n            this._createOutline() :\n            null;\n    }\n\n    public dispose(): void {\n        super.dispose();\n\n        this._disposeFill();\n        this._disposeOutline();\n    }\n\n    public getDOMObjects(atlas: ISpriteAtlas, camera: THREE.Camera, size: ISize): vd.VNode[] {\n        const vNodes: vd.VNode[] = [];\n        const container: { offsetHeight: number, offsetWidth: number } = {\n            offsetHeight: size.height, offsetWidth: size.width,\n        };\n\n        if (!this._tag.editable) {\n            return vNodes;\n        }\n\n        const lineColor: string = this._colorToCss(this._tag.lineColor);\n\n        const points2d: number[][] = this._tag.geometry.getPoints2d();\n\n        for (let i: number = 0; i < points2d.length; i++) {\n            const [vertexBasicX, vertexBasicY]: number[] = points2d[i];\n            const vertexCanvas: number[] =\n                this._viewportCoords.basicToCanvasSafe(\n                    vertexBasicX,\n                    vertexBasicY,\n                    container,\n                    this._transform,\n                    camera);\n\n            if (vertexCanvas == null) {\n                continue;\n            }\n\n            const cursor: InteractionCursor = \"crosshair\";\n\n            const interact: (e: MouseEvent) => void = this._interact(TagOperation.Vertex, cursor, i);\n            const vertexCanvasX: number = Math.round(vertexCanvas[0]);\n            const vertexCanvasY: number = Math.round(vertexCanvas[1]);\n            const transform: string = `translate(-50%, -50%) translate(${vertexCanvasX}px,${vertexCanvasY}px)`;\n\n            const properties: vd.createProperties = {\n                onmousedown: interact,\n                style: { background: lineColor, transform: transform, cursor: cursor },\n            };\n\n            vNodes.push(vd.h(\"div.TagResizer\", properties, []));\n\n            if (!this._tag.indicateVertices) {\n                continue;\n            }\n\n            const pointProperties: vd.createProperties = {\n                style: { background: lineColor, transform: transform },\n            };\n\n            vNodes.push(vd.h(\"div.TagVertex\", pointProperties, []));\n        }\n\n        return vNodes;\n    }\n\n    public getGLObjects(): THREE.Object3D[] {\n        const glObjects: THREE.Object3D[] = [];\n\n        if (this._fill != null) {\n            glObjects.push(this._fill);\n        }\n\n        if (this._outline != null) {\n            glObjects.push(this._outline);\n        }\n\n        return glObjects;\n    }\n\n    public getRetrievableObjects(): THREE.Object3D[] {\n        return this._fill != null ? [this._fill] : [];\n    }\n\n    protected _onGeometryChanged(): void {\n        this._rectGeometry = new RectGeometry(this._tag.geometry.getRect2d(this._transform));\n\n        if (this._fill != null) {\n            this._updateFillGeometry();\n        }\n\n        if (this._outline != null) {\n            this._updateOulineGeometry();\n        }\n    }\n\n    protected _onTagChanged(): boolean {\n        let glObjectsChanged: boolean = false;\n\n        if (this._fill != null) {\n            this._updateFillMaterial(<THREE.MeshBasicMaterial>this._fill.material);\n        }\n\n        if (this._outline == null) {\n            if (this._tag.lineWidth >= 1) {\n                this._outline = this._createOutline();\n                glObjectsChanged = true;\n            }\n        } else {\n            this._updateOutlineMaterial();\n        }\n\n        return glObjectsChanged;\n    }\n\n    protected _getPoints3d(): number[][] {\n        return this._rectGeometry.getPoints3d(this._transform);\n    }\n\n    protected _getTriangles(): number[] {\n        return this._rectGeometry.getTriangles3d(this._transform);\n    }\n\n    protected _updateFillMaterial(material: THREE.MeshBasicMaterial): void {\n        material.color = new THREE.Color(this._tag.fillColor);\n        material.opacity = this._tag.fillOpacity;\n        material.needsUpdate = true;\n    }\n\n    protected _updateLineBasicMaterial(material: THREE.LineBasicMaterial): void {\n        material.color = new THREE.Color(this._tag.lineColor);\n        material.linewidth = Math.max(this._tag.lineWidth, 1);\n        material.visible = this._tag.lineWidth >= 1 && this._tag.lineOpacity > 0;\n        material.opacity = this._tag.lineOpacity;\n        material.transparent = this._tag.lineOpacity < 1;\n        material.needsUpdate = true;\n    }\n\n    private _updateOutlineMaterial(): void {\n        let material: THREE.LineBasicMaterial = <THREE.LineBasicMaterial>this._outline.material;\n\n        this._updateLineBasicMaterial(material);\n    }\n}\n\nexport default ExtremePointRenderTag;\n",
+    "import {\n    Tag,\n    IExtremePointTagOptions,\n} from \"../../../Component\";\nimport PointsGeometry from \"../geometry/PointsGeometry\";\n\n/**\n * @class ExtremePointTag\n *\n * @classdesc Tag holding properties for visualizing a extreme points\n * and their outline.\n *\n * @example\n * ```\n * var geometry = new Mapillary.TagComponent.PointsGeometry([[0.3, 0.3], [0.5, 0.4]]);\n * var tag = new Mapillary.TagComponent.ExtremePointTag(\n *     \"id-1\",\n *     geometry\n *     { editable: true, lineColor: 0xff0000 });\n *\n * tagComponent.add([tag]);\n * ```\n */\nexport class ExtremePointTag extends Tag {\n    protected _geometry: PointsGeometry;\n\n    private _editable: boolean;\n    private _indicateVertices: boolean;\n    private _lineColor: number;\n    private _lineOpacity: number;\n    private _lineWidth: number;\n    private _fillColor: number;\n    private _fillOpacity: number;\n\n    /**\n     * Create an extreme point tag.\n     *\n     * @override\n     * @constructor\n     * @param {string} id - Unique identifier of the tag.\n     * @param {PointsGeometry} geometry - Geometry defining points of tag.\n     * @param {IExtremePointTagOptions} options - Options defining the visual appearance and\n     * behavior of the extreme point tag.\n     */\n    constructor(id: string, geometry: PointsGeometry, options?: IExtremePointTagOptions) {\n        super(id, geometry);\n\n        options = !!options ? options : {};\n\n        this._editable = options.editable == null ? false : options.editable;\n        this._fillColor = options.fillColor == null ? 0xFFFFFF : options.fillColor;\n        this._fillOpacity = options.fillOpacity == null ? 0.0 : options.fillOpacity;\n        this._indicateVertices = options.indicateVertices == null ? true : options.indicateVertices;\n        this._lineColor = options.lineColor == null ? 0xFFFFFF : options.lineColor;\n        this._lineOpacity = options.lineOpacity == null ? 1 : options.lineOpacity;\n        this._lineWidth = options.lineWidth == null ? 1 : options.lineWidth;\n    }\n\n    /**\n     * Get editable property.\n     * @returns {boolean} Value indicating if tag is editable.\n     */\n    public get editable(): boolean {\n        return this._editable;\n    }\n\n    /**\n     * Set editable property.\n     * @param {boolean}\n     *\n     * @fires Tag#changed\n     */\n    public set editable(value: boolean) {\n        this._editable = value;\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Get fill color property.\n     * @returns {number}\n     */\n    public get fillColor(): number {\n        return this._fillColor;\n    }\n\n    /**\n     * Set fill color property.\n     * @param {number}\n     *\n     * @fires Tag#changed\n     */\n    public set fillColor(value: number) {\n        this._fillColor = value;\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Get fill opacity property.\n     * @returns {number}\n     */\n    public get fillOpacity(): number {\n        return this._fillOpacity;\n    }\n\n    /**\n     * Set fill opacity property.\n     * @param {number}\n     *\n     * @fires Tag#changed\n     */\n    public set fillOpacity(value: number) {\n        this._fillOpacity = value;\n        this._notifyChanged$.next(this);\n    }\n\n    /** @inheritdoc */\n    public get geometry(): PointsGeometry {\n        return this._geometry;\n    }\n\n    /**\n     * Get indicate vertices property.\n     * @returns {boolean} Value indicating if vertices should be indicated\n     * when tag is editable.\n     */\n    public get indicateVertices(): boolean {\n        return this._indicateVertices;\n    }\n\n    /**\n     * Set indicate vertices property.\n     * @param {boolean}\n     *\n     * @fires Tag#changed\n     */\n    public set indicateVertices(value: boolean) {\n        this._indicateVertices = value;\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Get line color property.\n     * @returns {number}\n     */\n    public get lineColor(): number {\n        return this._lineColor;\n    }\n\n    /**\n     * Set line color property.\n     * @param {number}\n     *\n     * @fires Tag#changed\n     */\n    public set lineColor(value: number) {\n        this._lineColor = value;\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Get line opacity property.\n     * @returns {number}\n     */\n    public get lineOpacity(): number {\n        return this._lineOpacity;\n    }\n\n    /**\n     * Set line opacity property.\n     * @param {number}\n     *\n     * @fires Tag#changed\n     */\n    public set lineOpacity(value: number) {\n        this._lineOpacity = value;\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Get line width property.\n     * @returns {number}\n     */\n    public get lineWidth(): number {\n        return this._lineWidth;\n    }\n\n    /**\n     * Set line width property.\n     * @param {number}\n     *\n     * @fires Tag#changed\n     */\n    public set lineWidth(value: number) {\n        this._lineWidth = value;\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Set options for tag.\n     *\n     * @description Sets all the option properties provided and keeps\n     * the rest of the values as is.\n     *\n     * @param {IExtremePointTagOptions} options - Extreme point tag options\n     *\n     * @fires {Tag#changed}\n     */\n    public setOptions(options: IExtremePointTagOptions): void {\n        this._editable = options.editable == null ? this._editable : options.editable;\n        this._indicateVertices = options.indicateVertices == null ? this._indicateVertices : options.indicateVertices;\n        this._lineColor = options.lineColor == null ? this._lineColor : options.lineColor;\n        this._lineWidth = options.lineWidth == null ? this._lineWidth : options.lineWidth;\n        this._fillColor = options.fillColor == null ? this._fillColor : options.fillColor;\n        this._fillOpacity = options.fillOpacity == null ? this._fillOpacity : options.fillOpacity;\n        this._notifyChanged$.next(this);\n    }\n}\n\nexport default ExtremePointTag;\n",
+    "import {map} from \"rxjs/operators\";\nimport * as THREE from \"three\";\nimport * as vd from \"virtual-dom\";\n\nimport {Observable, Subject, Subscription} from \"rxjs\";\n\nimport {\n    CreateTag,\n    IOutlineCreateTagOptions,\n    PolygonGeometry,\n    RectGeometry,\n    VertexGeometry,\n} from \"../../../Component\";\nimport {\n    Transform,\n    ViewportCoords,\n} from \"../../../Geo\";\nimport {ISize} from \"../../../Render\";\n\nexport class OutlineCreateTag extends CreateTag<VertexGeometry> {\n    private _outline: THREE.Line;\n    private _options: IOutlineCreateTagOptions;\n\n    constructor(\n        geometry: VertexGeometry,\n        options: IOutlineCreateTagOptions,\n        transform: Transform,\n        viewportCoords?: ViewportCoords) {\n\n        super(geometry, transform, viewportCoords);\n\n        this._options = { color: options.color == null ? 0xFFFFFF : options.color };\n\n        this._createGlObjects();\n    }\n\n    public create(): void {\n        if (this._geometry instanceof RectGeometry) {\n            this._created$.next(this);\n        } else if (this._geometry instanceof PolygonGeometry) {\n            const polygonGeometry: PolygonGeometry = <PolygonGeometry>this._geometry;\n            polygonGeometry.removeVertex2d(polygonGeometry.polygon.length - 2);\n            this._created$.next(this);\n        }\n    }\n\n    public dispose(): void {\n        super.dispose();\n        this._disposeLine(this._outline);\n        this._disposeObjects();\n    }\n\n    public getDOMObjects(camera: THREE.Camera, size: ISize): vd.VNode[] {\n        const vNodes: vd.VNode[] = [];\n        const container: { offsetHeight: number, offsetWidth: number } = {\n            offsetHeight: size.height, offsetWidth: size.width,\n        };\n\n        const abort: (e: MouseEvent) => void = (e: MouseEvent): void => {\n            e.stopPropagation();\n            this._aborted$.next(this);\n        };\n\n        if (this._geometry instanceof RectGeometry) {\n            const anchorIndex: number = (<RectGeometry>this._geometry).anchorIndex;\n            const vertexIndex: number = anchorIndex === undefined ? 1 : anchorIndex;\n            const [basicX, basicY]: number[] = this._geometry.getVertex2d(vertexIndex);\n            const canvasPoint: number[] =\n                this._viewportCoords.basicToCanvasSafe(\n                    basicX,\n                    basicY,\n                    container,\n                    this._transform,\n                    camera);\n\n            if (canvasPoint != null) {\n                const background: string = this._colorToBackground(this._options.color);\n                const transform: string = this._canvasToTransform(canvasPoint);\n                const pointProperties: vd.createProperties = {\n                    style: { background: background, transform: transform },\n                };\n\n                const completerProperties: vd.createProperties = {\n                    onclick: abort,\n                    style: { transform: transform },\n                };\n\n                vNodes.push(vd.h(\"div.TagInteractor\", completerProperties, []));\n                vNodes.push(vd.h(\"div.TagVertex\", pointProperties, []));\n            }\n        } else if (this._geometry instanceof PolygonGeometry) {\n            const polygonGeometry: PolygonGeometry = <PolygonGeometry>this._geometry;\n\n            const [firstVertexBasicX, firstVertexBasicY]: number[] = polygonGeometry.getVertex2d(0);\n            const firstVertexCanvas: number[] =\n                this._viewportCoords.basicToCanvasSafe(\n                    firstVertexBasicX,\n                    firstVertexBasicY,\n                    container,\n                    this._transform,\n                    camera);\n\n            if (firstVertexCanvas != null) {\n                const firstOnclick: (e: MouseEvent) => void = polygonGeometry.polygon.length > 4 ?\n                    (e: MouseEvent): void => {\n                        e.stopPropagation();\n                        polygonGeometry.removeVertex2d(polygonGeometry.polygon.length - 2);\n                        this._created$.next(this);\n                    } :\n                    abort;\n\n                const transform: string = this._canvasToTransform(firstVertexCanvas);\n                const completerProperties: vd.createProperties = {\n                    onclick: firstOnclick,\n                    style: { transform: transform },\n                };\n\n                const firstClass: string = polygonGeometry.polygon.length > 4 ?\n                    \"TagCompleter\" :\n                    \"TagInteractor\";\n\n                vNodes.push(vd.h(\"div.\" + firstClass, completerProperties, []));\n            }\n\n            if (polygonGeometry.polygon.length > 3) {\n                const [lastVertexBasicX, lastVertexBasicY]: number[] = polygonGeometry.getVertex2d(polygonGeometry.polygon.length - 3);\n                const lastVertexCanvas: number[] =\n                    this._viewportCoords.basicToCanvasSafe(\n                        lastVertexBasicX,\n                        lastVertexBasicY,\n                        container,\n                        this._transform,\n                        camera);\n\n                if (lastVertexCanvas != null) {\n                    const remove: (e: MouseEvent) => void = (e: MouseEvent): void => {\n                        e.stopPropagation();\n                        polygonGeometry.removeVertex2d(polygonGeometry.polygon.length - 3);\n                    };\n\n                    const transform: string = this._canvasToTransform(lastVertexCanvas);\n                    const completerProperties: vd.createProperties = {\n                        onclick: remove,\n                        style: { transform: transform },\n                    };\n\n                    vNodes.push(vd.h(\"div.TagInteractor\", completerProperties, []));\n                }\n            }\n\n            const verticesBasic: number[][] = polygonGeometry.polygon.slice();\n            verticesBasic.splice(-2, 2);\n            for (const vertexBasic of verticesBasic) {\n                const vertexCanvas: number[] =\n                    this._viewportCoords.basicToCanvasSafe(\n                        vertexBasic[0],\n                        vertexBasic[1],\n                        container,\n                        this._transform,\n                        camera);\n\n                if (vertexCanvas != null) {\n                    const background: string = this._colorToBackground(this._options.color);\n                    const transform: string = this._canvasToTransform(vertexCanvas);\n                    const pointProperties: vd.createProperties = {\n                        style: {\n                            background: background,\n                            transform: transform,\n                        },\n                    };\n\n                    vNodes.push(vd.h(\"div.TagVertex\", pointProperties, []));\n                }\n            }\n        }\n\n        return vNodes;\n    }\n\n    public addPoint(point: number[]): void {\n        if (this._geometry instanceof RectGeometry) {\n            const rectGeometry: RectGeometry = <RectGeometry>this._geometry;\n\n            if (!rectGeometry.validate(point)) {\n                return;\n            }\n\n            this._created$.next(this);\n        } else if (this._geometry instanceof PolygonGeometry) {\n            const polygonGeometry: PolygonGeometry = <PolygonGeometry>this._geometry;\n\n            polygonGeometry.addVertex2d(point);\n        }\n    }\n\n    protected _onGeometryChanged(): void {\n        this._disposeLine(this._outline);\n        this._disposeObjects();\n\n        this._createGlObjects();\n    }\n\n    private _disposeObjects(): void {\n        this._outline = null;\n        this._glObjects = [];\n    }\n\n    private _createGlObjects(): void {\n        const polygon3d: number[][] = this._geometry instanceof RectGeometry ?\n        this._geometry.getPoints3d(this._transform) :\n        (<PolygonGeometry>this._geometry).getVertices3d(this._transform);\n\n        this._outline = this._createOutine(polygon3d, this._options.color);\n        this._glObjects = [this._outline];\n    }\n}\n\nexport default OutlineCreateTag;\n",
+    "import * as THREE from \"three\";\nimport * as vd from \"virtual-dom\";\n\nimport {\n    InteractionCursor,\n    OutlineTag,\n    PolygonGeometry,\n    RectGeometry,\n    TagDomain,\n    TagOperation,\n    OutlineRenderTagBase,\n} from \"../../../Component\";\nimport {Transform} from \"../../../Geo\";\nimport {ISize} from \"../../../Render\";\nimport {ISpriteAtlas} from \"../../../Viewer\";\n\n/**\n * @class OutlineRenderTag\n * @classdesc Tag visualizing the properties of an OutlineTag.\n */\nexport class OutlineRenderTag extends OutlineRenderTagBase<OutlineTag> {\n    private _holes: THREE.Line[];\n\n    constructor(tag: OutlineTag, transform: Transform) {\n        super(tag, transform);\n\n        this._fill = !transform.gpano ?\n            this._createFill() :\n            transform.fullPano &&\n            tag.domain === TagDomain.TwoDimensional &&\n            tag.geometry instanceof PolygonGeometry ?\n                this._createFill() :\n                null;\n\n        this._holes = this._tag.lineWidth >= 1 ?\n            this._createHoles() :\n            [];\n\n        this._outline = this._tag.lineWidth >= 1 ?\n            this._createOutline() :\n            null;\n    }\n\n    public dispose(): void {\n        super.dispose();\n\n        this._disposeFill();\n        this._disposeHoles();\n        this._disposeOutline();\n    }\n\n    public getDOMObjects(atlas: ISpriteAtlas, camera: THREE.Camera, size: ISize): vd.VNode[] {\n        const vNodes: vd.VNode[] = [];\n        const isRect: boolean = this._tag.geometry instanceof RectGeometry;\n        const isPerspective: boolean = !this._transform.gpano;\n        const container: { offsetHeight: number, offsetWidth: number } = {\n            offsetHeight: size.height, offsetWidth: size.width,\n        };\n\n        if (this._tag.icon != null && (isRect || isPerspective)) {\n            const [iconBasicX, iconBasicY]: number[] = this._tag.geometry instanceof RectGeometry ?\n                this._tag.geometry.getVertex2d(this._tag.iconIndex) :\n                this._tag.geometry.getPoleOfInaccessibility2d();\n\n            const iconCanvas: number[] =\n                this._viewportCoords.basicToCanvasSafe(\n                    iconBasicX,\n                    iconBasicY,\n                    container,\n                    this._transform,\n                    camera);\n\n            if (iconCanvas != null) {\n                const interact: (e: MouseEvent) => void = (): void => {\n                    this._interact$.next({ offsetX: 0, offsetY: 0, operation: TagOperation.None, tag: this._tag });\n                };\n\n                if (atlas.loaded) {\n                    const sprite: vd.VNode = atlas.getDOMSprite(this._tag.icon, this._tag.iconFloat);\n                    const iconCanvasX: number = Math.round(iconCanvas[0]);\n                    const iconCanvasY: number = Math.round(iconCanvas[1]);\n                    const transform: string = `translate(${iconCanvasX}px,${iconCanvasY}px)`;\n\n                    const click: (e: MouseEvent) => void = (e: MouseEvent): void => {\n                        e.stopPropagation();\n                        this._tag.click$.next(this._tag);\n                    };\n\n                    const properties: vd.createProperties = {\n                        onclick: click,\n                        onmousedown: interact,\n                        style: { transform: transform },\n                    };\n\n                    vNodes.push(vd.h(\"div.TagSymbol\", properties, [sprite]));\n                }\n            }\n        } else if (this._tag.text != null && (isRect || isPerspective)) {\n            const [textBasicX, textBasicY]: number[] = this._tag.geometry instanceof RectGeometry ?\n                this._tag.geometry.getVertex2d(3) :\n                this._tag.geometry.getPoleOfInaccessibility2d();\n\n            const textCanvas: number[] =\n                this._viewportCoords.basicToCanvasSafe(\n                    textBasicX,\n                    textBasicY,\n                    container,\n                    this._transform,\n                    camera);\n\n            if (textCanvas != null) {\n                const textCanvasX: number = Math.round(textCanvas[0]);\n                const textCanvasY: number = Math.round(textCanvas[1]);\n                const transform: string = this._tag.geometry instanceof RectGeometry ?\n                    `translate(${textCanvasX}px,${textCanvasY}px)` :\n                    `translate(-50%, -50%) translate(${textCanvasX}px,${textCanvasY}px)`;\n\n                const interact: (e: MouseEvent) => void = (): void => {\n                    this._interact$.next({ offsetX: 0, offsetY: 0, operation: TagOperation.None, tag: this._tag });\n                };\n\n                const properties: vd.createProperties = {\n                    onmousedown: interact,\n                    style: {\n                        color: this._colorToCss(this._tag.textColor),\n                        transform: transform,\n                    },\n                    textContent: this._tag.text,\n                };\n\n                vNodes.push(vd.h(\"span.TagSymbol\", properties, []));\n            }\n        }\n\n        if (!this._tag.editable) {\n            return vNodes;\n        }\n\n        const lineColor: string = this._colorToCss(this._tag.lineColor);\n\n        if (this._tag.geometry instanceof RectGeometry) {\n            const [centroidBasicX, centroidBasicY]: number[] = this._tag.geometry.getCentroid2d();\n            const centroidCanvas: number[] =\n                this._viewportCoords.basicToCanvasSafe(\n                    centroidBasicX,\n                    centroidBasicY,\n                    container,\n                    this._transform,\n                    camera);\n\n            if (centroidCanvas != null) {\n                const interact: (e: MouseEvent) => void = this._interact(TagOperation.Centroid, \"move\");\n                const centroidCanvasX: number = Math.round(centroidCanvas[0]);\n                const centroidCanvasY: number = Math.round(centroidCanvas[1]);\n                const transform: string = `translate(-50%, -50%) translate(${centroidCanvasX}px,${centroidCanvasY}px)`;\n\n                const properties: vd.createProperties = {\n                    onmousedown: interact,\n                    style: { background: lineColor, transform: transform },\n                };\n\n                vNodes.push(vd.h(\"div.TagMover\", properties, []));\n            }\n        }\n\n        const vertices2d: number[][] = this._tag.geometry.getVertices2d();\n\n        for (let i: number = 0; i < vertices2d.length - 1; i++) {\n            if (isRect &&\n                ((this._tag.icon != null && i === this._tag.iconIndex) ||\n                (this._tag.icon == null && this._tag.text != null && i === 3))) {\n                continue;\n            }\n\n            const [vertexBasicX, vertexBasicY]: number[] = vertices2d[i];\n            const vertexCanvas: number[] =\n                this._viewportCoords.basicToCanvasSafe(\n                    vertexBasicX,\n                    vertexBasicY,\n                    container,\n                    this._transform,\n                    camera);\n\n            if (vertexCanvas == null) {\n                continue;\n            }\n\n            const cursor: InteractionCursor = isRect ?\n                 i % 2 === 0 ? \"nesw-resize\" : \"nwse-resize\" :\n                 \"crosshair\";\n\n            const interact: (e: MouseEvent) => void = this._interact(TagOperation.Vertex, cursor, i);\n            const vertexCanvasX: number = Math.round(vertexCanvas[0]);\n            const vertexCanvasY: number = Math.round(vertexCanvas[1]);\n            const transform: string = `translate(-50%, -50%) translate(${vertexCanvasX}px,${vertexCanvasY}px)`;\n\n            const properties: vd.createProperties = {\n                onmousedown: interact,\n                style: { background: lineColor, transform: transform, cursor: cursor },\n            };\n\n            vNodes.push(vd.h(\"div.TagResizer\", properties, []));\n\n            if (!this._tag.indicateVertices) {\n                continue;\n            }\n\n            const pointProperties: vd.createProperties = {\n                style: { background: lineColor, transform: transform },\n            };\n\n            vNodes.push(vd.h(\"div.TagVertex\", pointProperties, []));\n        }\n\n        return vNodes;\n    }\n\n    public getGLObjects(): THREE.Object3D[] {\n        const glObjects: THREE.Object3D[] = [];\n\n        if (this._fill != null) {\n            glObjects.push(this._fill);\n        }\n\n        for (const hole of this._holes) {\n            glObjects.push(hole);\n        }\n\n        if (this._outline != null) {\n            glObjects.push(this._outline);\n        }\n\n        return glObjects;\n    }\n\n    public getRetrievableObjects(): THREE.Object3D[] {\n        return this._fill != null ? [this._fill] : [];\n    }\n\n    protected _onGeometryChanged(): void {\n        if (this._fill != null) {\n            this._updateFillGeometry();\n        }\n\n        if (this._holes.length > 0) {\n            this._updateHoleGeometries();\n        }\n\n        if (this._outline != null) {\n            this._updateOulineGeometry();\n        }\n    }\n\n    protected _onTagChanged(): boolean {\n        let glObjectsChanged: boolean = false;\n\n        if (this._fill != null) {\n            this._updateFillMaterial(<THREE.MeshBasicMaterial>this._fill.material);\n        }\n\n        if (this._outline == null) {\n            if (this._tag.lineWidth >= 1) {\n                this._holes = this._createHoles();\n                this._outline = this._createOutline();\n                glObjectsChanged = true;\n            }\n        } else {\n            this._updateHoleMaterials();\n            this._updateOutlineMaterial();\n        }\n\n        return glObjectsChanged;\n    }\n\n    protected _getPoints3d(): number[][] {\n        return this._in3dDomain() ?\n            (<PolygonGeometry>this._tag.geometry).getVertices3d(this._transform) :\n            this._tag.geometry.getPoints3d(this._transform);\n    }\n\n    protected _getTriangles(): number[] {\n        return this._in3dDomain() ?\n            (<PolygonGeometry>this._tag.geometry).get3dDomainTriangles3d(this._transform) :\n            this._tag.geometry.getTriangles3d(this._transform);\n    }\n\n    protected _updateFillMaterial(material: THREE.MeshBasicMaterial): void {\n        material.color = new THREE.Color(this._tag.fillColor);\n        material.opacity = this._tag.fillOpacity;\n        material.needsUpdate = true;\n    }\n\n    protected _updateLineBasicMaterial(material: THREE.LineBasicMaterial): void {\n        material.color = new THREE.Color(this._tag.lineColor);\n        material.linewidth = Math.max(this._tag.lineWidth, 1);\n        material.visible = this._tag.lineWidth >= 1 && this._tag.lineOpacity > 0;\n        material.opacity = this._tag.lineOpacity;\n        material.transparent = this._tag.lineOpacity < 1;\n        material.needsUpdate = true;\n    }\n\n    private _createHoles(): THREE.Line[] {\n        let holes: THREE.Line[] = [];\n\n        if (this._tag.geometry instanceof PolygonGeometry) {\n            let holes3d: number[][][] = this._getHoles3d();\n\n            for (let holePoints3d of holes3d) {\n                let hole: THREE.Line = this._createLine(holePoints3d);\n                holes.push(hole);\n            }\n        }\n\n        return holes;\n    }\n\n    private _disposeHoles(): void {\n        for (let hole of this._holes) {\n            hole.geometry.dispose();\n            hole.material.dispose();\n        }\n\n        this._holes = [];\n    }\n\n    private _getHoles3d(): number[][][] {\n        const polygonGeometry: PolygonGeometry = <PolygonGeometry>this._tag.geometry;\n\n        return this._in3dDomain() ?\n            polygonGeometry.getHoleVertices3d(this._transform) :\n            polygonGeometry.getHolePoints3d(this._transform);\n    }\n\n    private _in3dDomain(): boolean {\n        return this._tag.geometry instanceof PolygonGeometry && this._tag.domain === TagDomain.ThreeDimensional;\n    }\n\n    private _updateHoleGeometries(): void {\n        let holes3d: number[][][] = this._getHoles3d();\n\n        if (holes3d.length !== this._holes.length) {\n            throw new Error(\"Changing the number of holes is not supported.\");\n        }\n\n        for (let i: number = 0; i < this._holes.length; i++) {\n            let holePoints3d: number[][] = holes3d[i];\n            let hole: THREE.Line = this._holes[i];\n\n            this._updateLine(hole, holePoints3d);\n        }\n    }\n\n    private _updateHoleMaterials(): void {\n        for (const hole of this._holes) {\n            this._updateLineBasicMaterial(<THREE.LineBasicMaterial>hole.material);\n        }\n    }\n\n    private _updateOutlineMaterial(): void {\n        this._updateLineBasicMaterial(<THREE.LineBasicMaterial>this._outline.material);\n    }\n}\n",
+    "import * as THREE from \"three\";\nimport * as vd from \"virtual-dom\";\n\nimport {Subscription} from \"rxjs\";\n\nimport {\n    InteractionCursor,\n    RenderTag,\n    TagOperation,\n    Tag,\n} from \"../../../Component\";\nimport {Transform} from \"../../../Geo\";\nimport {ISize} from \"../../../Render\";\nimport {ISpriteAtlas} from \"../../../Viewer\";\n\nexport abstract class OutlineRenderTagBase<T extends Tag> extends RenderTag<T> {\n    protected _fill: THREE.Mesh;\n    protected _outline: THREE.Line;\n\n    private _changedSubscription: Subscription;\n    private _geometryChangedSubscription: Subscription;\n\n    constructor(tag: T, transform: Transform) {\n        super(tag, transform);\n\n        this._geometryChangedSubscription = this._tag.geometry.changed$\n            .subscribe(\n                (): void => {\n                    this._onGeometryChanged();\n                });\n\n        this._changedSubscription = this._tag.changed$\n            .subscribe(\n                (): void => {\n                    const glObjectsChanged: boolean = this._onTagChanged();\n\n                    if (glObjectsChanged) {\n                        this._glObjectsChanged$.next(this);\n                    }\n                });\n    }\n\n    public dispose(): void {\n        this._changedSubscription.unsubscribe();\n        this._geometryChangedSubscription.unsubscribe();\n    }\n\n    public abstract getDOMObjects(atlas: ISpriteAtlas, camera: THREE.Camera, size: ISize): vd.VNode[];\n\n    public abstract getGLObjects(): THREE.Object3D[];\n\n    public abstract getRetrievableObjects(): THREE.Object3D[];\n\n    protected abstract _getPoints3d(): number[][];\n\n    protected abstract _getTriangles(): number[];\n\n    protected abstract _onGeometryChanged(): void;\n\n    protected abstract _onTagChanged(): boolean;\n\n    protected abstract _updateLineBasicMaterial(material: THREE.LineBasicMaterial): void;\n\n    protected abstract _updateFillMaterial(material: THREE.MeshBasicMaterial): void;\n\n    protected _colorToCss(color: number): string {\n        return \"#\" + (\"000000\" + color.toString(16)).substr(-6);\n    }\n\n    protected _createFill(): THREE.Mesh {\n        let triangles: number[] = this._getTriangles();\n        let positions: Float32Array = new Float32Array(triangles);\n\n        let geometry: THREE.BufferGeometry = new THREE.BufferGeometry();\n        geometry.addAttribute(\"position\", new THREE.BufferAttribute(positions, 3));\n        geometry.computeBoundingSphere();\n\n        let material: THREE.MeshBasicMaterial =\n            new THREE.MeshBasicMaterial({ side: THREE.DoubleSide, transparent: true });\n\n        this._updateFillMaterial(material);\n\n        return new THREE.Mesh(geometry, material);\n    }\n\n    protected _createLine(points3d: number[][]): THREE.Line {\n        let positions: Float32Array = this._getLinePositions(points3d);\n\n        let geometry: THREE.BufferGeometry = new THREE.BufferGeometry();\n        geometry.addAttribute(\"position\", new THREE.BufferAttribute(positions, 3));\n        geometry.computeBoundingSphere();\n\n        let material: THREE.LineBasicMaterial = new THREE.LineBasicMaterial();\n        this._updateLineBasicMaterial(material);\n\n        const line: THREE.Line = new THREE.Line(geometry, material);\n        line.renderOrder = 1;\n\n        return line;\n    }\n\n    protected _createOutline(): THREE.Line {\n        return this._createLine(this._getPoints3d());\n    }\n\n    protected _disposeFill(): void {\n        if (this._fill == null) {\n            return;\n        }\n\n        this._fill.geometry.dispose();\n        (<THREE.Material>this._fill.material).dispose();\n        this._fill = null;\n    }\n\n    protected _disposeOutline(): void {\n        if (this._outline == null) {\n            return;\n        }\n\n        this._outline.geometry.dispose();\n        this._outline.material.dispose();\n        this._outline = null;\n    }\n\n    protected _getLinePositions(points3d: number[][]): Float32Array {\n        let length: number = points3d.length;\n        let positions: Float32Array = new Float32Array(length * 3);\n\n        for (let i: number = 0; i < length; ++i) {\n            let index: number = 3 * i;\n            let position: number[] = points3d[i];\n\n            positions[index + 0] = position[0];\n            positions[index + 1] = position[1];\n            positions[index + 2] = position[2];\n        }\n\n        return positions;\n    }\n\n    protected _interact(operation: TagOperation, cursor?: InteractionCursor, vertexIndex?: number): (e: MouseEvent) => void {\n        return (e: MouseEvent): void => {\n            let offsetX: number = e.offsetX - (<HTMLElement>e.target).offsetWidth / 2;\n            let offsetY: number = e.offsetY - (<HTMLElement>e.target).offsetHeight / 2;\n\n            this._interact$.next({\n                cursor: cursor,\n                offsetX: offsetX,\n                offsetY: offsetY,\n                operation: operation,\n                tag: this._tag,\n                vertexIndex: vertexIndex,\n            });\n        };\n    }\n\n    protected _updateFillGeometry(): void {\n        let triangles: number[] = this._getTriangles();\n        let positions: Float32Array = new Float32Array(triangles);\n\n        let geometry: THREE.BufferGeometry = <THREE.BufferGeometry>this._fill.geometry;\n        let attribute: THREE.BufferAttribute = <THREE.BufferAttribute>geometry.getAttribute(\"position\");\n\n        if (attribute.array.length === positions.length) {\n            attribute.set(positions);\n            attribute.needsUpdate = true;\n        } else {\n            geometry.removeAttribute(\"position\");\n            geometry.addAttribute(\"position\", new THREE.BufferAttribute(positions, 3));\n        }\n\n        geometry.computeBoundingSphere();\n    }\n\n    protected _updateLine(line: THREE.Line, points3d: number[][]): void {\n        let positions: Float32Array = this._getLinePositions(points3d);\n\n        let geometry: THREE.BufferGeometry = <THREE.BufferGeometry>line.geometry;\n        let attribute: THREE.BufferAttribute = <THREE.BufferAttribute>geometry.getAttribute(\"position\");\n\n        attribute.set(positions);\n        attribute.needsUpdate = true;\n\n        geometry.computeBoundingSphere();\n    }\n\n    protected _updateOulineGeometry(): void {\n        this._updateLine(this._outline, this._getPoints3d());\n    }\n}\n\nexport default OutlineRenderTagBase;\n",
     "import {Subject} from \"rxjs\";\n\nimport {\n    IOutlineTagOptions,\n    PolygonGeometry,\n    RectGeometry,\n    Tag,\n    TagDomain,\n    VertexGeometry,\n} from \"../../../Component\";\nimport {Alignment} from \"../../../Viewer\";\n\n/**\n * @class OutlineTag\n *\n * @classdesc Tag holding properties for visualizing a geometry outline.\n *\n * @example\n * ```\n * var geometry = new Mapillary.TagComponent.RectGeometry([0.3, 0.3, 0.5, 0.4]);\n * var tag = new Mapillary.TagComponent.OutlineTag(\n *     \"id-1\",\n *     geometry\n *     { editable: true, lineColor: 0xff0000 });\n *\n * tagComponent.add([tag]);\n * ```\n */\nexport class OutlineTag extends Tag {\n    /**\n     * Event fired when the icon of the outline tag is clicked.\n     *\n     * @event OutlineTag#click\n     * @type {OutlineTag} The tag instance that was clicked.\n     */\n    public static click: string = \"click\";\n\n    protected _geometry: VertexGeometry;\n\n    private _domain: TagDomain;\n    private _editable: boolean;\n    private _icon: string;\n    private _iconFloat: Alignment;\n    private _iconIndex: number;\n    private _indicateVertices: boolean;\n    private _lineColor: number;\n    private _lineOpacity: number;\n    private _lineWidth: number;\n    private _fillColor: number;\n    private _fillOpacity: number;\n    private _text: string;\n    private _textColor: number;\n\n    private _click$: Subject<OutlineTag>;\n\n    /**\n     * Create an outline tag.\n     *\n     * @override\n     * @constructor\n     * @param {string} id - Unique identifier of the tag.\n     * @param {VertexGeometry} geometry - Geometry defining vertices of tag.\n     * @param {IOutlineTagOptions} options - Options defining the visual appearance and\n     * behavior of the outline tag.\n     */\n    constructor(id: string, geometry: VertexGeometry, options?: IOutlineTagOptions) {\n        super(id, geometry);\n\n        options = !!options ? options : {};\n\n        const domain: TagDomain = options.domain != null && geometry instanceof PolygonGeometry ?\n            options.domain : TagDomain.TwoDimensional;\n\n        const twoDimensionalPolygon: boolean = this._twoDimensionalPolygon(domain, geometry);\n\n        this._domain = domain;\n        this._editable = options.editable == null || twoDimensionalPolygon ? false : options.editable;\n        this._fillColor = options.fillColor == null ? 0xFFFFFF : options.fillColor;\n        this._fillOpacity = options.fillOpacity == null ? 0.0 : options.fillOpacity;\n        this._icon = options.icon === undefined ? null : options.icon;\n        this._iconFloat = options.iconFloat == null ? Alignment.Center : options.iconFloat;\n        this._iconIndex = options.iconIndex == null ? 3 : options.iconIndex;\n        this._indicateVertices = options.indicateVertices == null ? true : options.indicateVertices;\n        this._lineColor = options.lineColor == null ? 0xFFFFFF : options.lineColor;\n        this._lineOpacity = options.lineOpacity == null ? 1 : options.lineOpacity;\n        this._lineWidth = options.lineWidth == null ? 1 : options.lineWidth;\n        this._text = options.text === undefined ? null : options.text;\n        this._textColor = options.textColor == null ? 0xFFFFFF : options.textColor;\n\n        this._click$ = new Subject<OutlineTag>();\n\n        this._click$\n            .subscribe(\n                (t: Tag): void => {\n                    this.fire(OutlineTag.click, this);\n                });\n    }\n\n    /**\n     * Click observable.\n     *\n     * @description An observable emitting the tag when the icon of the\n     * tag has been clicked.\n     *\n     * @returns {Observable<Tag>}\n     */\n    public get click$(): Subject<OutlineTag> {\n        return this._click$;\n    }\n\n    /**\n     * Get domain property.\n     *\n     * @description Readonly property that can only be set in constructor.\n     *\n     * @returns Value indicating the domain of the tag.\n     */\n    public get domain(): TagDomain {\n        return this._domain;\n    }\n\n    /**\n     * Get editable property.\n     * @returns {boolean} Value indicating if tag is editable.\n     */\n    public get editable(): boolean {\n        return this._editable;\n    }\n\n    /**\n     * Set editable property.\n     * @param {boolean}\n     *\n     * @fires Tag#changed\n     */\n    public set editable(value: boolean) {\n        if (this._twoDimensionalPolygon(this._domain, this._geometry)) {\n            return;\n        }\n\n        this._editable = value;\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Get fill color property.\n     * @returns {number}\n     */\n    public get fillColor(): number {\n        return this._fillColor;\n    }\n\n    /**\n     * Set fill color property.\n     * @param {number}\n     *\n     * @fires Tag#changed\n     */\n    public set fillColor(value: number) {\n        this._fillColor = value;\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Get fill opacity property.\n     * @returns {number}\n     */\n    public get fillOpacity(): number {\n        return this._fillOpacity;\n    }\n\n    /**\n     * Set fill opacity property.\n     * @param {number}\n     *\n     * @fires Tag#changed\n     */\n    public set fillOpacity(value: number) {\n        this._fillOpacity = value;\n        this._notifyChanged$.next(this);\n    }\n\n    /** @inheritdoc */\n    public get geometry(): VertexGeometry {\n        return this._geometry;\n    }\n\n    /**\n     * Get icon property.\n     * @returns {string}\n     */\n    public get icon(): string {\n        return this._icon;\n    }\n\n    /**\n     * Set icon property.\n     * @param {string}\n     *\n     * @fires Tag#changed\n     */\n    public set icon(value: string) {\n        this._icon = value;\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Get icon float property.\n     * @returns {Alignment}\n     */\n    public get iconFloat(): Alignment {\n        return this._iconFloat;\n    }\n\n    /**\n     * Set icon float property.\n     * @param {Alignment}\n     *\n     * @fires Tag#changed\n     */\n    public set iconFloat(value: Alignment) {\n        this._iconFloat = value;\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Get icon index property.\n     * @returns {number}\n     */\n    public get iconIndex(): number {\n        return this._iconIndex;\n    }\n\n    /**\n     * Set icon index property.\n     * @param {number}\n     *\n     * @fires Tag#changed\n     */\n    public set iconIndex(value: number) {\n        this._iconIndex = value;\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Get indicate vertices property.\n     * @returns {boolean} Value indicating if vertices should be indicated\n     * when tag is editable.\n     */\n    public get indicateVertices(): boolean {\n        return this._indicateVertices;\n    }\n\n    /**\n     * Set indicate vertices property.\n     * @param {boolean}\n     *\n     * @fires Tag#changed\n     */\n    public set indicateVertices(value: boolean) {\n        this._indicateVertices = value;\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Get line color property.\n     * @returns {number}\n     */\n    public get lineColor(): number {\n        return this._lineColor;\n    }\n\n    /**\n     * Set line color property.\n     * @param {number}\n     *\n     * @fires Tag#changed\n     */\n    public set lineColor(value: number) {\n        this._lineColor = value;\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Get line opacity property.\n     * @returns {number}\n     */\n    public get lineOpacity(): number {\n        return this._lineOpacity;\n    }\n\n    /**\n     * Set line opacity property.\n     * @param {number}\n     *\n     * @fires Tag#changed\n     */\n    public set lineOpacity(value: number) {\n        this._lineOpacity = value;\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Get line width property.\n     * @returns {number}\n     */\n    public get lineWidth(): number {\n        return this._lineWidth;\n    }\n\n    /**\n     * Set line width property.\n     * @param {number}\n     *\n     * @fires Tag#changed\n     */\n    public set lineWidth(value: number) {\n        this._lineWidth = value;\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Get text property.\n     * @returns {string}\n     */\n    public get text(): string {\n        return this._text;\n    }\n\n    /**\n     * Set text property.\n     * @param {string}\n     *\n     * @fires Tag#changed\n     */\n    public set text(value: string) {\n        this._text = value;\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Get text color property.\n     * @returns {number}\n     */\n    public get textColor(): number {\n        return this._textColor;\n    }\n\n    /**\n     * Set text color property.\n     * @param {number}\n     *\n     * @fires Tag#changed\n     */\n    public set textColor(value: number) {\n        this._textColor = value;\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Set options for tag.\n     *\n     * @description Sets all the option properties provided and keeps\n     * the rest of the values as is.\n     *\n     * @param {IOutlineTagOptions} options - Outline tag options\n     *\n     * @fires {Tag#changed}\n     */\n    public setOptions(options: IOutlineTagOptions): void {\n        const twoDimensionalPolygon: boolean = this._twoDimensionalPolygon(this._domain, this._geometry);\n\n        this._editable = twoDimensionalPolygon || options.editable == null ? this._editable : options.editable;\n        this._icon = options.icon === undefined ? this._icon : options.icon;\n        this._iconFloat = options.iconFloat == null ? this._iconFloat : options.iconFloat;\n        this._iconIndex = options.iconIndex == null ? this._iconIndex : options.iconIndex;\n        this._indicateVertices = options.indicateVertices == null ? this._indicateVertices : options.indicateVertices;\n        this._lineColor = options.lineColor == null ? this._lineColor : options.lineColor;\n        this._lineWidth = options.lineWidth == null ? this._lineWidth : options.lineWidth;\n        this._fillColor = options.fillColor == null ? this._fillColor : options.fillColor;\n        this._fillOpacity = options.fillOpacity == null ? this._fillOpacity : options.fillOpacity;\n        this._text = options.text === undefined ? this._text : options.text;\n        this._textColor = options.textColor == null ? this._textColor : options.textColor;\n        this._notifyChanged$.next(this);\n    }\n\n    private _twoDimensionalPolygon(domain: TagDomain, geometry: VertexGeometry): boolean {\n        return domain !== TagDomain.ThreeDimensional && geometry instanceof PolygonGeometry;\n    }\n}\n\nexport default OutlineTag;\n",
     "import * as THREE from \"three\";\nimport * as vd from \"virtual-dom\";\n\nimport {Observable, Subject} from \"rxjs\";\n\nimport {IInteraction} from \"../../../Component\";\nimport {\n    Transform,\n    ViewportCoords,\n} from \"../../../Geo\";\nimport {ISize} from \"../../../Render\";\nimport {ISpriteAtlas} from \"../../../Viewer\";\n\nexport abstract class RenderTag<T> {\n    protected _tag: T;\n    protected _transform: Transform;\n    protected _viewportCoords: ViewportCoords;\n\n    protected _glObjectsChanged$: Subject<RenderTag<T>>;\n    protected _interact$: Subject<IInteraction>;\n\n    constructor(tag: T, transform: Transform, viewportCoords?: ViewportCoords) {\n        this._tag = tag;\n        this._transform = transform;\n        this._viewportCoords = !!viewportCoords ? viewportCoords : new ViewportCoords();\n\n        this._glObjectsChanged$ = new Subject<RenderTag<T>>();\n        this._interact$ = new Subject<IInteraction>();\n    }\n\n    public get glObjectsChanged$(): Observable<RenderTag<T>> {\n        return this._glObjectsChanged$;\n    }\n\n    public get interact$(): Observable<IInteraction> {\n        return this._interact$;\n    }\n\n    public get tag(): T {\n        return this._tag;\n    }\n\n    public abstract dispose(): void;\n\n    public abstract getDOMObjects(atlas: ISpriteAtlas, camera: THREE.Camera, size: ISize): vd.VNode[];\n\n    public abstract getGLObjects(): THREE.Object3D[];\n\n    public abstract getRetrievableObjects(): THREE.Object3D[];\n}\n\nexport default RenderTag;\n",
     "import * as THREE from \"three\";\nimport * as vd from \"virtual-dom\";\n\nimport {\n    InteractionCursor,\n    RenderTag,\n    SpotTag,\n    Tag,\n    TagOperation,\n} from \"../../../Component\";\nimport {ISize} from \"../../../Render\";\nimport {\n    Alignment,\n    ISpriteAtlas,\n} from \"../../../Viewer\";\n\n/**\n * @class SpotRenderTag\n * @classdesc Tag visualizing the properties of a SpotTag.\n */\nexport class SpotRenderTag extends RenderTag<SpotTag> {\n    public dispose(): void { /* noop */ }\n\n    public getDOMObjects(atlas: ISpriteAtlas, camera: THREE.Camera, size: ISize): vd.VNode[] {\n        const tag: SpotTag = this._tag;\n        const container: { offsetHeight: number, offsetWidth: number } = {\n            offsetHeight: size.height, offsetWidth: size.width,\n        };\n\n        const vNodes: vd.VNode[] = [];\n        const [centroidBasicX, centroidBasicY]: number[] = tag.geometry.getCentroid2d();\n        const centroidCanvas: number[] =\n            this._viewportCoords.basicToCanvasSafe(\n                centroidBasicX,\n                centroidBasicY,\n                container,\n                this._transform,\n                camera);\n\n        if (centroidCanvas != null) {\n            const interactNone: (e: MouseEvent) => void = (e: MouseEvent): void => {\n                this._interact$.next({ offsetX: 0, offsetY: 0, operation: TagOperation.None, tag: tag });\n            };\n\n            const canvasX: number = Math.round(centroidCanvas[0]);\n            const canvasY: number = Math.round(centroidCanvas[1]);\n\n            if (tag.icon != null) {\n                if (atlas.loaded) {\n                    const sprite: vd.VNode = atlas.getDOMSprite(tag.icon, Alignment.Bottom);\n                    const iconTransform: string = `translate(${canvasX}px,${canvasY + 8}px)`;\n                    const properties: vd.createProperties = {\n                        onmousedown: interactNone,\n                        style: {\n                            pointerEvents: \"all\",\n                            transform: iconTransform,\n                        },\n                    };\n\n                    vNodes.push(vd.h(\"div\", properties, [sprite]));\n                }\n            } else if (tag.text != null) {\n                const textTransform: string = `translate(-50%,0%) translate(${canvasX}px,${canvasY + 8}px)`;\n                const properties: vd.createProperties = {\n                    onmousedown: interactNone,\n                    style: {\n                        color: this._colorToCss(tag.textColor),\n                        transform: textTransform,\n                    },\n                    textContent: tag.text,\n                };\n\n                vNodes.push(vd.h(\"span.TagSymbol\", properties, []));\n            }\n\n            const interact: (e: MouseEvent) => void = this._interact(TagOperation.Centroid, tag, \"move\");\n            const background: string = this._colorToCss(tag.color);\n            const transform: string = `translate(-50%,-50%) translate(${canvasX}px,${canvasY}px)`;\n\n            if (tag.editable) {\n                let interactorProperties: vd.createProperties = {\n                    onmousedown: interact,\n                    style: {\n                        background: background,\n                        transform: transform,\n                    },\n                };\n\n                vNodes.push(vd.h(\"div.TagSpotInteractor\", interactorProperties, []));\n            }\n\n            const pointProperties: vd.createProperties = {\n                style: {\n                    background: background,\n                    transform: transform,\n                },\n            };\n\n            vNodes.push(vd.h(\"div.TagVertex\", pointProperties, []));\n        }\n\n        return vNodes;\n    }\n\n    public getGLObjects(): THREE.Object3D[] { return []; }\n\n    public getRetrievableObjects(): THREE.Object3D[] { return []; }\n\n    private _colorToCss(color: number): string {\n        return \"#\" + (\"000000\" + color.toString(16)).substr(-6);\n    }\n\n    private _interact(operation: TagOperation, tag: Tag, cursor: InteractionCursor, vertexIndex?: number): (e: MouseEvent) => void {\n        return (e: MouseEvent): void => {\n            const offsetX: number = e.offsetX - (<HTMLElement>e.target).offsetWidth / 2;\n            const offsetY: number = e.offsetY - (<HTMLElement>e.target).offsetHeight / 2;\n\n            this._interact$.next({\n                cursor: cursor,\n                offsetX: offsetX,\n                offsetY: offsetY,\n                operation: operation,\n                tag: tag,\n                vertexIndex: vertexIndex,\n            });\n        };\n    }\n}\n",
     "import {\n    Geometry,\n    ISpotTagOptions,\n    Tag,\n} from \"../../../Component\";\n\n/**\n * @class SpotTag\n *\n * @classdesc Tag holding properties for visualizing the centroid of a geometry.\n *\n * @example\n * ```\n * var geometry = new Mapillary.TagComponent.PointGeometry([0.3, 0.3]);\n * var tag = new Mapillary.TagComponent.SpotTag(\n *     \"id-1\",\n *     geometry\n *     { editable: true, color: 0xff0000 });\n *\n * tagComponent.add([tag]);\n * ```\n */\nexport class SpotTag extends Tag {\n    protected _geometry: Geometry;\n\n    private _color: number;\n    private _editable: boolean;\n    private _icon: string;\n    private _text: string;\n    private _textColor: number;\n\n    /**\n     * Create a spot tag.\n     *\n     * @override\n     * @constructor\n     * @param {string} id\n     * @param {Geometry} geometry\n     * @param {IOutlineTagOptions} options - Options defining the visual appearance and\n     * behavior of the spot tag.\n     */\n    constructor(id: string, geometry: Geometry, options?: ISpotTagOptions) {\n        super(id, geometry);\n\n        options = !!options ? options : {};\n\n        this._color = options.color == null ? 0xFFFFFF : options.color;\n        this._editable = options.editable == null ? false : options.editable;\n        this._icon = options.icon === undefined ? null : options.icon;\n        this._text = options.text === undefined ? null : options.text;\n        this._textColor = options.textColor == null ? 0xFFFFFF : options.textColor;\n    }\n\n    /**\n     * Get color property.\n     * @returns {number} The color of the spot as a hexagonal number;\n     */\n    public get color(): number {\n        return this._color;\n    }\n\n    /**\n     * Set color property.\n     * @param {number}\n     *\n     * @fires Tag#changed\n     */\n    public set color(value: number) {\n        this._color = value;\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Get editable property.\n     * @returns {boolean} Value indicating if tag is editable.\n     */\n    public get editable(): boolean {\n        return this._editable;\n    }\n\n    /**\n     * Set editable property.\n     * @param {boolean}\n     *\n     * @fires Tag#changed\n     */\n    public set editable(value: boolean) {\n        this._editable = value;\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Get icon property.\n     * @returns {string}\n     */\n    public get icon(): string {\n        return this._icon;\n    }\n\n    /**\n     * Set icon property.\n     * @param {string}\n     *\n     * @fires Tag#changed\n     */\n    public set icon(value: string) {\n        this._icon = value;\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Get text property.\n     * @returns {string}\n     */\n    public get text(): string {\n        return this._text;\n    }\n\n    /**\n     * Set text property.\n     * @param {string}\n     *\n     * @fires Tag#changed\n     */\n    public set text(value: string) {\n        this._text = value;\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Get text color property.\n     * @returns {number}\n     */\n    public get textColor(): number {\n        return this._textColor;\n    }\n\n    /**\n     * Set text color property.\n     * @param {number}\n     *\n     * @fires Tag#changed\n     */\n    public set textColor(value: number) {\n        this._textColor = value;\n        this._notifyChanged$.next(this);\n    }\n\n    /**\n     * Set options for tag.\n     *\n     * @description Sets all the option properties provided and keps\n     * the rest of the values as is.\n     *\n     * @param {ISpotTagOptions} options - Spot tag options\n     *\n     * @fires {Tag#changed}\n     */\n    public setOptions(options: ISpotTagOptions): void {\n        this._color = options.color == null ? this._color : options.color;\n        this._editable = options.editable == null ? this._editable : options.editable;\n        this._icon = options.icon === undefined ? this._icon : options.icon;\n        this._text = options.text === undefined ? this._text : options.text;\n        this._textColor = options.textColor == null ? this._textColor : options.textColor;\n        this._notifyChanged$.next(this);\n    }\n}\n\nexport default SpotTag;\n",
     "import {share, map} from \"rxjs/operators\";\nimport {Observable, Subject} from \"rxjs\";\n\nimport {Geometry} from \"../../../Component\";\nimport {EventEmitter} from \"../../../Utils\";\n\n/**\n * @class Tag\n * @abstract\n * @classdesc Abstract class representing the basic functionality of for a tag.\n */\nexport abstract class Tag extends EventEmitter {\n    /**\n     * Event fired when a property related to the visual appearance of the\n     * tag has changed.\n     *\n     * @event Tag#changed\n     * @type {Tag} The tag instance that has changed.\n     */\n    public static changed: string = \"changed\";\n\n    /**\n     * Event fired when the geometry of the tag has changed.\n     *\n     * @event Tag#geometrychanged\n     * @type {Tag} The tag instance whose geometry has changed.\n     */\n    public static geometrychanged: string = \"geometrychanged\";\n\n    protected _id: string;\n    protected _geometry: Geometry;\n\n    protected _notifyChanged$: Subject<Tag>;\n\n    /**\n     * Create a tag.\n     *\n     * @constructor\n     * @param {string} id\n     * @param {Geometry} geometry\n     */\n    constructor(id: string, geometry: Geometry) {\n        super();\n\n        this._id = id;\n        this._geometry = geometry;\n\n        this._notifyChanged$ = new Subject<Tag>();\n\n        this._notifyChanged$\n            .subscribe(\n                (t: Tag): void => {\n                    this.fire(Tag.changed, this);\n                });\n\n        this._geometry.changed$\n            .subscribe(\n                (g: Geometry): void => {\n                    this.fire(Tag.geometrychanged, this);\n                });\n    }\n\n    /**\n     * Get id property.\n     * @returns {string}\n     */\n    public get id(): string {\n        return this._id;\n    }\n\n    /**\n     * Get geometry property.\n     * @returns {Geometry} The geometry of the tag.\n     */\n    public get geometry(): Geometry {\n        return this._geometry;\n    }\n\n    /**\n     * Get changed observable.\n     * @returns {Observable<Tag>}\n     * @ignore\n     */\n    public get changed$(): Observable<Tag> {\n        return this._notifyChanged$;\n    }\n\n    /**\n     * Get geometry changed observable.\n     * @returns {Observable<Tag>}\n     * @ignore\n     */\n    public get geometryChanged$(): Observable<Tag> {\n        return this._geometry.changed$.pipe(\n            map(\n                (geometry: Geometry): Tag => {\n                    return this;\n                }),\n            share());\n    }\n}\n\nexport default Tag;\n",
     "/**\n * Enumeration for tag domains.\n * @enum {number}\n * @readonly\n * @description Defines where lines between two vertices are treated\n * as straight.\n *\n * Only applicable for polygons. For rectangles lines between\n * vertices are always treated as straight in the distorted 2D\n * projection and bended in the undistorted 3D space.\n */\nexport enum TagDomain {\n    /**\n     * Treats lines between two vertices as straight in the\n     * distorted 2D projection, i.e. on the image. If the image\n     * is distorted this will result in bended lines when rendered\n     * in the undistorted 3D space.\n     */\n    TwoDimensional,\n\n    /**\n     * Treats lines as straight in the undistorted 3D space. If the\n     * image is distorted this will result in bended lines when rendered\n     * on the distorted 2D projection of the image.\n     */\n    ThreeDimensional,\n}\n\nexport default TagDomain;\n",
+    "/**\n * Enumeration for component size.\n * @enum {number}\n * @readonly\n * @description May be used by a component to allow for resizing\n * of the UI elements rendered by the component.\n */\nexport enum ComponentSize {\n    /**\n     * Automatic size. The size of the elements will automatically\n     * change at a predefined threshold.\n     */\n    Automatic,\n\n    /**\n     * Large size. The size of the elements will be fixed until another\n     * component size is configured.\n     */\n    Large,\n\n    /**\n     * Small size. The size of the elements will be fixed until another\n     * component size is configured.\n     */\n    Small,\n}\n\nexport default ComponentSize;\n",
     "import {\n    Component,\n    IComponentConfiguration,\n} from \"../../Component\";\nimport {\n    Container,\n    Navigator,\n} from \"../../Viewer\";\n\nexport abstract class HandlerBase<TConfiguration extends IComponentConfiguration> {\n    protected _component: Component<TConfiguration>;\n    protected _container: Container;\n    protected _navigator: Navigator;\n\n    protected _enabled: boolean;\n\n    /** @ignore */\n    constructor(component: Component<TConfiguration>, container: Container, navigator: Navigator) {\n        this._component = component;\n        this._container = container;\n        this._navigator = navigator;\n\n        this._enabled = false;\n    }\n\n    /**\n     * Returns a Boolean indicating whether the interaction is enabled.\n     *\n     * @returns {boolean} `true` if the interaction is enabled.\n     */\n    public get isEnabled(): boolean {\n        return this._enabled;\n    }\n\n    /**\n     * Enables the interaction.\n     *\n     * @example ```<component-name>.<handler-name>.enable();```\n     */\n    public enable(): void {\n        if (this._enabled || !this._component.activated) { return; }\n\n        this._enable();\n        this._enabled = true;\n\n        this._component.configure(this._getConfiguration(true));\n    }\n\n    /**\n     * Disables the interaction.\n     *\n     * @example ```<component-name>.<handler-name>.disable();```\n     */\n    public disable(): void {\n        if (!this._enabled) { return; }\n\n        this._disable();\n        this._enabled = false;\n\n        if (this._component.activated) {\n            this._component.configure(this._getConfiguration(false));\n        }\n    }\n\n    protected abstract _enable(): void;\n\n    protected abstract _disable(): void;\n\n    protected abstract _getConfiguration(enable: boolean): TConfiguration;\n}\n\nexport default HandlerBase;\n",
-    "import * as THREE from \"three\";\n\nimport {IGPano} from \"../../API\";\nimport {Transform} from \"../../Geo\";\nimport {Node} from \"../../Graph\";\nimport {Shaders} from \"../../Component\";\n\nexport class MeshFactory {\n    private _imagePlaneDepth: number;\n    private _imageSphereRadius: number;\n\n    constructor(imagePlaneDepth?: number, imageSphereRadius?: number) {\n        this._imagePlaneDepth = imagePlaneDepth != null ? imagePlaneDepth : 200;\n        this._imageSphereRadius = imageSphereRadius != null ? imageSphereRadius : 200;\n    }\n\n    public createMesh(node: Node, transform: Transform): THREE.Mesh {\n        let mesh: THREE.Mesh = node.pano ?\n            this._createImageSphere(node, transform) :\n            this._createImagePlane(node, transform);\n\n        return mesh;\n    }\n\n    public createFlatMesh(\n        node: Node,\n        transform: Transform,\n        basicX0: number,\n        basicX1: number,\n        basicY0: number,\n        basicY1: number): THREE.Mesh {\n\n        let texture: THREE.Texture = this._createTexture(node.image);\n        let materialParameters: THREE.ShaderMaterialParameters =\n            this._createDistortedPlaneMaterialParameters(transform, texture);\n        let material: THREE.ShaderMaterial = new THREE.ShaderMaterial(materialParameters);\n\n        let geometry: THREE.BufferGeometry = this._getFlatImagePlaneGeoFromBasic(transform, basicX0, basicX1, basicY0, basicY1);\n\n        return new THREE.Mesh(geometry, material);\n    }\n\n    public createCurtainMesh(node: Node, transform: Transform): THREE.Mesh {\n        if (node.pano && !node.fullPano) {\n            throw new Error(\"Cropped panoramas cannot have curtain.\");\n        }\n\n        return node.pano ?\n            this._createSphereCurtainMesh(node, transform) :\n            this._createCurtainMesh(node, transform);\n    }\n\n    public createDistortedCurtainMesh(node: Node, transform: Transform): THREE.Mesh {\n        if (node.pano) {\n            throw new Error(\"Cropped panoramas cannot have curtain.\");\n        }\n\n        return this._createDistortedCurtainMesh(node, transform);\n    }\n\n    private _createCurtainMesh(node: Node, transform: Transform): THREE.Mesh {\n        let texture: THREE.Texture = this._createTexture(node.image);\n        let materialParameters: THREE.ShaderMaterialParameters =\n            this._createCurtainPlaneMaterialParameters(transform, texture);\n        let material: THREE.ShaderMaterial = new THREE.ShaderMaterial(materialParameters);\n\n        let geometry: THREE.BufferGeometry = this._useMesh(transform, node) ?\n            this._getImagePlaneGeo(transform, node) :\n            this._getRegularFlatImagePlaneGeo(transform);\n\n        return new THREE.Mesh(geometry, material);\n    }\n\n    private _createDistortedCurtainMesh(node: Node, transform: Transform): THREE.Mesh {\n        let texture: THREE.Texture = this._createTexture(node.image);\n        let materialParameters: THREE.ShaderMaterialParameters =\n            this._createDistortedCurtainPlaneMaterialParameters(transform, texture);\n        let material: THREE.ShaderMaterial = new THREE.ShaderMaterial(materialParameters);\n\n        let geometry: THREE.BufferGeometry = this._getRegularFlatImagePlaneGeo(transform);\n\n        return new THREE.Mesh(geometry, material);\n    }\n\n    private _createSphereCurtainMesh(node: Node, transform: Transform): THREE.Mesh {\n        let texture: THREE.Texture = this._createTexture(node.image);\n        let materialParameters: THREE.ShaderMaterialParameters =\n            this._createCurtainSphereMaterialParameters(transform, texture);\n        let material: THREE.ShaderMaterial = new THREE.ShaderMaterial(materialParameters);\n\n        return this._useMesh(transform, node) ?\n            new THREE.Mesh(this._getImageSphereGeo(transform, node), material) :\n            new THREE.Mesh(this._getFlatImageSphereGeo(transform), material);\n    }\n\n    private _createImageSphere(node: Node, transform: Transform): THREE.Mesh {\n        let texture: THREE.Texture = this._createTexture(node.image);\n        let materialParameters: THREE.ShaderMaterialParameters = this._createSphereMaterialParameters(transform, texture);\n        let material: THREE.ShaderMaterial = new THREE.ShaderMaterial(materialParameters);\n\n        let mesh: THREE.Mesh = this._useMesh(transform, node) ?\n            new THREE.Mesh(this._getImageSphereGeo(transform, node), material) :\n            new THREE.Mesh(this._getFlatImageSphereGeo(transform), material);\n\n        return mesh;\n    }\n\n    private _createImagePlane(node: Node, transform: Transform): THREE.Mesh {\n        let texture: THREE.Texture = this._createTexture(node.image);\n        let materialParameters: THREE.ShaderMaterialParameters = this._createPlaneMaterialParameters(transform, texture);\n        let material: THREE.ShaderMaterial = new THREE.ShaderMaterial(materialParameters);\n\n        let geometry: THREE.BufferGeometry = this._useMesh(transform, node) ?\n            this._getImagePlaneGeo(transform, node) :\n            this._getRegularFlatImagePlaneGeo(transform);\n\n        return new THREE.Mesh(geometry, material);\n    }\n\n    private _createSphereMaterialParameters(transform: Transform, texture: THREE.Texture): THREE.ShaderMaterialParameters {\n        let gpano: IGPano = transform.gpano;\n\n        let halfCroppedWidth: number = (gpano.FullPanoWidthPixels - gpano.CroppedAreaImageWidthPixels) / 2;\n        let phiShift: number = 2 * Math.PI * (gpano.CroppedAreaLeftPixels - halfCroppedWidth) / gpano.FullPanoWidthPixels;\n        let phiLength: number = 2 * Math.PI * gpano.CroppedAreaImageWidthPixels / gpano.FullPanoWidthPixels;\n\n        let halfCroppedHeight: number = (gpano.FullPanoHeightPixels - gpano.CroppedAreaImageHeightPixels) / 2;\n        let thetaShift: number = Math.PI * (halfCroppedHeight - gpano.CroppedAreaTopPixels) / gpano.FullPanoHeightPixels;\n        let thetaLength: number = Math.PI * gpano.CroppedAreaImageHeightPixels / gpano.FullPanoHeightPixels;\n\n        let materialParameters: THREE.ShaderMaterialParameters = {\n            depthWrite: false,\n            fragmentShader: Shaders.equirectangular.fragment,\n            side: THREE.DoubleSide,\n            transparent: true,\n            uniforms: {\n                opacity: {\n                    type: \"f\",\n                    value: 1,\n                },\n                phiLength: {\n                    type: \"f\",\n                    value: phiLength,\n                },\n                phiShift: {\n                    type: \"f\",\n                    value: phiShift,\n                },\n                projectorMat: {\n                    type: \"m4\",\n                    value: transform.rt,\n                },\n                projectorTex: {\n                    type: \"t\",\n                    value: texture,\n                },\n                thetaLength: {\n                    type: \"f\",\n                    value: thetaLength,\n                },\n                thetaShift: {\n                    type: \"f\",\n                    value: thetaShift,\n                },\n            },\n            vertexShader: Shaders.equirectangular.vertex,\n        };\n\n        return materialParameters;\n    }\n\n    private _createCurtainSphereMaterialParameters(transform: Transform, texture: THREE.Texture): THREE.ShaderMaterialParameters {\n        let gpano: IGPano = transform.gpano;\n\n        let halfCroppedWidth: number = (gpano.FullPanoWidthPixels - gpano.CroppedAreaImageWidthPixels) / 2;\n        let phiShift: number = 2 * Math.PI * (gpano.CroppedAreaLeftPixels - halfCroppedWidth) / gpano.FullPanoWidthPixels;\n        let phiLength: number = 2 * Math.PI * gpano.CroppedAreaImageWidthPixels / gpano.FullPanoWidthPixels;\n\n        let halfCroppedHeight: number = (gpano.FullPanoHeightPixels - gpano.CroppedAreaImageHeightPixels) / 2;\n        let thetaShift: number = Math.PI * (halfCroppedHeight - gpano.CroppedAreaTopPixels) / gpano.FullPanoHeightPixels;\n        let thetaLength: number = Math.PI * gpano.CroppedAreaImageHeightPixels / gpano.FullPanoHeightPixels;\n\n        let materialParameters: THREE.ShaderMaterialParameters = {\n            depthWrite: false,\n            fragmentShader: Shaders.equirectangularCurtain.fragment,\n            side: THREE.DoubleSide,\n            transparent: true,\n            uniforms: {\n                curtain: {\n                    type: \"f\",\n                    value: 1,\n                },\n                opacity: {\n                    type: \"f\",\n                    value: 1,\n                },\n                phiLength: {\n                    type: \"f\",\n                    value: phiLength,\n                },\n                phiShift: {\n                    type: \"f\",\n                    value: phiShift,\n                },\n                projectorMat: {\n                    type: \"m4\",\n                    value: transform.rt,\n                },\n                projectorTex: {\n                    type: \"t\",\n                    value: texture,\n                },\n                thetaLength: {\n                    type: \"f\",\n                    value: thetaLength,\n                },\n                thetaShift: {\n                    type: \"f\",\n                    value: thetaShift,\n                },\n            },\n            vertexShader: Shaders.equirectangularCurtain.vertex,\n        };\n\n        return materialParameters;\n    }\n\n    private _createPlaneMaterialParameters(transform: Transform, texture: THREE.Texture): THREE.ShaderMaterialParameters {\n        let materialParameters: THREE.ShaderMaterialParameters = {\n            depthWrite: false,\n            fragmentShader: Shaders.perspective.fragment,\n            side: THREE.DoubleSide,\n            transparent: true,\n            uniforms: {\n                focal: {\n                    type: \"f\",\n                    value: transform.focal,\n                },\n                k1: {\n                    type: \"f\",\n                    value: transform.ck1,\n                },\n                k2: {\n                    type: \"f\",\n                    value: transform.ck2,\n                },\n                opacity: {\n                    type: \"f\",\n                    value: 1,\n                },\n                projectorMat: {\n                    type: \"m4\",\n                    value: transform.basicRt,\n                },\n                projectorTex: {\n                    type: \"t\",\n                    value: texture,\n                },\n                radial_peak: {\n                    type: \"f\",\n                    value: !!transform.radialPeak ? transform.radialPeak : 0,\n                },\n                scale_x: {\n                    type: \"f\",\n                    value: Math.max(transform.basicHeight, transform.basicWidth) / transform.basicWidth,\n                },\n                scale_y: {\n                    type: \"f\",\n                    value: Math.max(transform.basicWidth, transform.basicHeight) / transform.basicHeight,\n                },\n            },\n            vertexShader: Shaders.perspective.vertex,\n        };\n\n        return materialParameters;\n    }\n\n    private _createCurtainPlaneMaterialParameters(transform: Transform, texture: THREE.Texture): THREE.ShaderMaterialParameters {\n        let materialParameters: THREE.ShaderMaterialParameters = {\n            depthWrite: false,\n            fragmentShader: Shaders.perspectiveCurtain.fragment,\n            side: THREE.DoubleSide,\n            transparent: true,\n            uniforms: {\n                curtain: {\n                    type: \"f\",\n                    value: 1,\n                },\n                focal: {\n                    type: \"f\",\n                    value: transform.focal,\n                },\n                k1: {\n                    type: \"f\",\n                    value: transform.ck1,\n                },\n                k2: {\n                    type: \"f\",\n                    value: transform.ck2,\n                },\n                opacity: {\n                    type: \"f\",\n                    value: 1,\n                },\n                projectorMat: {\n                    type: \"m4\",\n                    value: transform.basicRt,\n                },\n                projectorTex: {\n                    type: \"t\",\n                    value: texture,\n                },\n                radial_peak: {\n                    type: \"f\",\n                    value: !!transform.radialPeak ? transform.radialPeak : 0,\n                },\n                scale_x: {\n                    type: \"f\",\n                    value: Math.max(transform.basicHeight, transform.basicWidth) / transform.basicWidth,\n                },\n                scale_y: {\n                    type: \"f\",\n                    value: Math.max(transform.basicWidth, transform.basicHeight) / transform.basicHeight,\n                },\n            },\n            vertexShader: Shaders.perspectiveCurtain.vertex,\n        };\n\n        return materialParameters;\n    }\n\n    private _createDistortedCurtainPlaneMaterialParameters(transform: Transform, texture: THREE.Texture): THREE.ShaderMaterialParameters {\n        let materialParameters: THREE.ShaderMaterialParameters = {\n            depthWrite: false,\n            fragmentShader: Shaders.perspectiveDistortedCurtain.fragment,\n            side: THREE.DoubleSide,\n            transparent: true,\n            uniforms: {\n                curtain: {\n                    type: \"f\",\n                    value: 1,\n                },\n                opacity: {\n                    type: \"f\",\n                    value: 1,\n                },\n                projectorMat: {\n                    type: \"m4\",\n                    value: transform.projectorMatrix(),\n                },\n                projectorTex: {\n                    type: \"t\",\n                    value: texture,\n                },\n            },\n            vertexShader: Shaders.perspectiveDistortedCurtain.vertex,\n        };\n\n        return materialParameters;\n    }\n\n    private _createDistortedPlaneMaterialParameters(transform: Transform, texture: THREE.Texture): THREE.ShaderMaterialParameters {\n        let materialParameters: THREE.ShaderMaterialParameters = {\n            depthWrite: false,\n            fragmentShader: Shaders.perspectiveDistorted.fragment,\n            side: THREE.DoubleSide,\n            transparent: true,\n            uniforms: {\n                opacity: {\n                    type: \"f\",\n                    value: 1,\n                },\n                projectorMat: {\n                    type: \"m4\",\n                    value: transform.projectorMatrix(),\n                },\n                projectorTex: {\n                    type: \"t\",\n                    value: texture,\n                },\n            },\n            vertexShader: Shaders.perspectiveDistorted.vertex,\n        };\n\n        return materialParameters;\n    }\n\n    private _createTexture(image: HTMLImageElement): THREE.Texture {\n        let texture: THREE.Texture = new THREE.Texture(image);\n        texture.minFilter = THREE.LinearFilter;\n        texture.needsUpdate = true;\n\n        return texture;\n    }\n\n    private _useMesh(transform: Transform, node: Node): boolean {\n        return node.mesh.vertices.length && transform.hasValidScale;\n    }\n\n    private _getImageSphereGeo(transform: Transform, node: Node): THREE.BufferGeometry {\n        let t: THREE.Matrix4 = new THREE.Matrix4().getInverse(transform.srt);\n\n        // push everything at least 5 meters in front of the camera\n        let minZ: number = 5.0 * transform.scale;\n        let maxZ: number = this._imageSphereRadius * transform.scale;\n\n        let vertices: number[] = node.mesh.vertices;\n        let numVertices: number = vertices.length / 3;\n        let positions: Float32Array = new Float32Array(vertices.length);\n        for (let i: number = 0; i < numVertices; ++i) {\n            let index: number = 3 * i;\n            let x: number = vertices[index + 0];\n            let y: number = vertices[index + 1];\n            let z: number = vertices[index + 2];\n\n            let l: number = Math.sqrt(x * x + y * y + z * z);\n            let boundedL: number = Math.max(minZ, Math.min(l, maxZ));\n            let factor: number = boundedL / l;\n            let p: THREE.Vector3 = new THREE.Vector3(x * factor, y * factor, z * factor);\n\n            p.applyMatrix4(t);\n\n            positions[index + 0] = p.x;\n            positions[index + 1] = p.y;\n            positions[index + 2] = p.z;\n        }\n\n        let faces: number[] = node.mesh.faces;\n        let indices: Uint16Array = new Uint16Array(faces.length);\n        for (let i: number = 0; i < faces.length; ++i) {\n            indices[i] = faces[i];\n        }\n\n        let geometry: THREE.BufferGeometry = new THREE.BufferGeometry();\n\n        geometry.addAttribute(\"position\", new THREE.BufferAttribute(positions, 3));\n        geometry.setIndex(new THREE.BufferAttribute(indices, 1));\n\n        return geometry;\n    }\n\n    private _getImagePlaneGeo(transform: Transform, node: Node): THREE.BufferGeometry {\n        const undistortionMarginFactor: number = 3;\n        let t: THREE.Matrix4 = new THREE.Matrix4().getInverse(transform.srt);\n\n        // push everything at least 5 meters in front of the camera\n        let minZ: number = 5.0 * transform.scale;\n        let maxZ: number = this._imagePlaneDepth * transform.scale;\n\n        let vertices: number[] = node.mesh.vertices;\n        let numVertices: number = vertices.length / 3;\n        let positions: Float32Array = new Float32Array(vertices.length);\n        for (let i: number = 0; i < numVertices; ++i) {\n            let index: number = 3 * i;\n            let x: number = vertices[index + 0];\n            let y: number = vertices[index + 1];\n            let z: number = vertices[index + 2];\n\n            if (i < 4) {\n                x *= undistortionMarginFactor;\n                y *= undistortionMarginFactor;\n            }\n\n            let boundedZ: number = Math.max(minZ, Math.min(z, maxZ));\n            let factor: number = boundedZ / z;\n            let p: THREE.Vector3 = new THREE.Vector3(x * factor, y * factor, boundedZ);\n\n            p.applyMatrix4(t);\n\n            positions[index + 0] = p.x;\n            positions[index + 1] = p.y;\n            positions[index + 2] = p.z;\n        }\n\n        let faces: number[] = node.mesh.faces;\n        let indices: Uint16Array = new Uint16Array(faces.length);\n        for (let i: number = 0; i < faces.length; ++i) {\n            indices[i] = faces[i];\n        }\n\n        let geometry: THREE.BufferGeometry = new THREE.BufferGeometry();\n\n        geometry.addAttribute(\"position\", new THREE.BufferAttribute(positions, 3));\n        geometry.setIndex(new THREE.BufferAttribute(indices, 1));\n\n        return geometry;\n    }\n\n    private _getFlatImageSphereGeo(transform: Transform): THREE.Geometry {\n        let gpano: IGPano = transform.gpano;\n        let phiStart: number = 2 * Math.PI * gpano.CroppedAreaLeftPixels / gpano.FullPanoWidthPixels;\n        let phiLength: number = 2 * Math.PI * gpano.CroppedAreaImageWidthPixels / gpano.FullPanoWidthPixels;\n        let thetaStart: number = Math.PI *\n            (gpano.FullPanoHeightPixels - gpano.CroppedAreaImageHeightPixels - gpano.CroppedAreaTopPixels) /\n            gpano.FullPanoHeightPixels;\n        let thetaLength: number = Math.PI * gpano.CroppedAreaImageHeightPixels / gpano.FullPanoHeightPixels;\n        let geometry: THREE.SphereGeometry = new THREE.SphereGeometry(\n            this._imageSphereRadius,\n            20,\n            40,\n            phiStart - Math.PI / 2,\n            phiLength,\n            thetaStart,\n            thetaLength);\n\n        geometry.applyMatrix(new THREE.Matrix4().getInverse(transform.rt));\n\n        return geometry;\n    }\n\n    private _getRegularFlatImagePlaneGeo(transform: Transform): THREE.BufferGeometry {\n        let width: number = transform.width;\n        let height: number = transform.height;\n        let size: number = Math.max(width, height);\n        let dx: number = width / 2.0 / size;\n        let dy: number = height / 2.0 / size;\n\n        return this._getFlatImagePlaneGeo(transform, dx, dy);\n    }\n\n    private _getFlatImagePlaneGeo(transform: Transform, dx: number, dy: number): THREE.BufferGeometry {\n        let vertices: number[][] = [];\n        vertices.push(transform.unprojectSfM([-dx, -dy], this._imagePlaneDepth));\n        vertices.push(transform.unprojectSfM([dx, -dy], this._imagePlaneDepth));\n        vertices.push(transform.unprojectSfM([dx, dy], this._imagePlaneDepth));\n        vertices.push(transform.unprojectSfM([-dx, dy], this._imagePlaneDepth));\n\n        return this._createFlatGeometry(vertices);\n    }\n\n    private _getFlatImagePlaneGeoFromBasic(\n        transform: Transform,\n        basicX0: number,\n        basicX1: number,\n        basicY0: number,\n        basicY1: number): THREE.BufferGeometry {\n\n        let vertices: number[][] = [];\n\n        vertices.push(transform.unprojectBasic([basicX0, basicY0], this._imagePlaneDepth));\n        vertices.push(transform.unprojectBasic([basicX1, basicY0], this._imagePlaneDepth));\n        vertices.push(transform.unprojectBasic([basicX1, basicY1], this._imagePlaneDepth));\n        vertices.push(transform.unprojectBasic([basicX0, basicY1], this._imagePlaneDepth));\n\n        return this._createFlatGeometry(vertices);\n    }\n\n    private _createFlatGeometry(vertices: number[][]): THREE.BufferGeometry {\n        let positions: Float32Array = new Float32Array(12);\n        for (let i: number = 0; i < vertices.length; i++) {\n            let index: number = 3 * i;\n            positions[index + 0] = vertices[i][0];\n            positions[index + 1] = vertices[i][1];\n            positions[index + 2] = vertices[i][2];\n        }\n\n        let indices: Uint16Array = new Uint16Array(6);\n        indices[0] = 0;\n        indices[1] = 1;\n        indices[2] = 3;\n        indices[3] = 1;\n        indices[4] = 2;\n        indices[5] = 3;\n\n        let geometry: THREE.BufferGeometry = new THREE.BufferGeometry();\n\n        geometry.addAttribute(\"position\", new THREE.BufferAttribute(positions, 3));\n        geometry.setIndex(new THREE.BufferAttribute(indices, 1));\n\n        return geometry;\n    }\n}\n\nexport default MeshFactory;\n",
-    "import * as THREE from \"three\";\n\nimport {IShaderMaterial} from \"../../Component\";\n\nexport class MeshScene {\n    public scene: THREE.Scene;\n    public sceneOld: THREE.Scene;\n\n    public imagePlanes: THREE.Mesh[];\n    public imagePlanesOld: THREE.Mesh[];\n\n    constructor() {\n        this.scene = new THREE.Scene();\n        this.sceneOld = new THREE.Scene();\n\n        this.imagePlanes = [];\n        this.imagePlanesOld = [];\n    }\n\n    public updateImagePlanes(planes: THREE.Mesh[]): void {\n        this._dispose(this.imagePlanesOld, this.sceneOld);\n\n        for (let plane of this.imagePlanes) {\n            this.scene.remove(plane);\n            this.sceneOld.add(plane);\n        }\n\n        for (let plane of planes) {\n            this.scene.add(plane);\n        }\n\n        this.imagePlanesOld = this.imagePlanes;\n        this.imagePlanes = planes;\n    }\n\n    public addImagePlanes(planes: THREE.Mesh[]): void {\n        for (let plane of planes) {\n            this.scene.add(plane);\n            this.imagePlanes.push(plane);\n        }\n    }\n\n    public addImagePlanesOld(planes: THREE.Mesh[]): void {\n        for (let plane of planes) {\n            this.sceneOld.add(plane);\n            this.imagePlanesOld.push(plane);\n        }\n    }\n\n    public setImagePlanes(planes: THREE.Mesh[]): void {\n        this._clear();\n        this.addImagePlanes(planes);\n    }\n\n    public setImagePlanesOld(planes: THREE.Mesh[]): void {\n        this._clearOld();\n        this.addImagePlanesOld(planes);\n    }\n\n    public clear(): void {\n        this._clear();\n        this._clearOld();\n    }\n\n    private _clear(): void {\n        this._dispose(this.imagePlanes, this.scene);\n        this.imagePlanes.length = 0;\n    }\n\n    private _clearOld(): void {\n        this._dispose(this.imagePlanesOld, this.sceneOld);\n        this.imagePlanesOld.length = 0;\n    }\n\n    private _dispose(planes: THREE.Mesh[], scene: THREE.Scene): void {\n        for (let plane of planes) {\n            scene.remove(plane);\n            plane.geometry.dispose();\n            (<THREE.Material>plane.material).dispose();\n            let texture: THREE.Texture = (<IShaderMaterial>plane.material).uniforms.projectorTex.value;\n            if (texture != null) {\n                texture.dispose();\n            }\n        }\n    }\n}\n\nexport default MeshScene;\n",
+    "import * as THREE from \"three\";\n\nimport {IGPano} from \"../../API\";\nimport {Transform} from \"../../Geo\";\nimport {Node} from \"../../Graph\";\nimport {Shaders} from \"../../Component\";\n\nexport class MeshFactory {\n    private _imagePlaneDepth: number;\n    private _imageSphereRadius: number;\n\n    constructor(imagePlaneDepth?: number, imageSphereRadius?: number) {\n        this._imagePlaneDepth = imagePlaneDepth != null ? imagePlaneDepth : 200;\n        this._imageSphereRadius = imageSphereRadius != null ? imageSphereRadius : 200;\n    }\n\n    public createMesh(node: Node, transform: Transform): THREE.Mesh {\n        if (node.pano) {\n            return this._createImageSphere(node, transform);\n        } else if (transform.cameraProjection === \"fisheye\") {\n            return this._createImagePlaneFisheye(node, transform);\n        } else {\n            return this._createImagePlane(node, transform);\n        }\n    }\n\n    public createFlatMesh(\n        node: Node,\n        transform: Transform,\n        basicX0: number,\n        basicX1: number,\n        basicY0: number,\n        basicY1: number): THREE.Mesh {\n\n        let texture: THREE.Texture = this._createTexture(node.image);\n        let materialParameters: THREE.ShaderMaterialParameters =\n            this._createDistortedPlaneMaterialParameters(transform, texture);\n        let material: THREE.ShaderMaterial = new THREE.ShaderMaterial(materialParameters);\n\n        let geometry: THREE.BufferGeometry = this._getFlatImagePlaneGeoFromBasic(transform, basicX0, basicX1, basicY0, basicY1);\n\n        return new THREE.Mesh(geometry, material);\n    }\n\n    public createCurtainMesh(node: Node, transform: Transform): THREE.Mesh {\n        if (node.pano && !node.fullPano) {\n            throw new Error(\"Cropped panoramas cannot have curtain.\");\n        }\n\n        if (node.pano) {\n            return this._createSphereCurtainMesh(node, transform);\n        } else if (transform.cameraProjection === \"fisheye\") {\n            return this._createCurtainMeshFisheye(node, transform);\n        } else {\n            return this._createCurtainMesh(node, transform);\n        }\n    }\n\n    public createDistortedCurtainMesh(node: Node, transform: Transform): THREE.Mesh {\n        if (node.pano) {\n            throw new Error(\"Cropped panoramas cannot have curtain.\");\n        }\n\n        return this._createDistortedCurtainMesh(node, transform);\n    }\n\n    private _createCurtainMesh(node: Node, transform: Transform): THREE.Mesh {\n        let texture: THREE.Texture = this._createTexture(node.image);\n        let materialParameters: THREE.ShaderMaterialParameters =\n            this._createCurtainPlaneMaterialParameters(transform, texture);\n        let material: THREE.ShaderMaterial = new THREE.ShaderMaterial(materialParameters);\n\n        let geometry: THREE.BufferGeometry = this._useMesh(transform, node) ?\n            this._getImagePlaneGeo(transform, node) :\n            this._getRegularFlatImagePlaneGeo(transform);\n\n        return new THREE.Mesh(geometry, material);\n    }\n\n    private _createCurtainMeshFisheye(node: Node, transform: Transform): THREE.Mesh {\n        let texture: THREE.Texture = this._createTexture(node.image);\n        let materialParameters: THREE.ShaderMaterialParameters =\n            this._createCurtainPlaneMaterialParametersFisheye(transform, texture);\n        let material: THREE.ShaderMaterial = new THREE.ShaderMaterial(materialParameters);\n\n        let geometry: THREE.BufferGeometry = this._useMesh(transform, node) ?\n            this._getImagePlaneGeoFisheye(transform, node) :\n            this._getRegularFlatImagePlaneGeo(transform);\n\n        return new THREE.Mesh(geometry, material);\n    }\n\n    private _createDistortedCurtainMesh(node: Node, transform: Transform): THREE.Mesh {\n        let texture: THREE.Texture = this._createTexture(node.image);\n        let materialParameters: THREE.ShaderMaterialParameters =\n            this._createDistortedCurtainPlaneMaterialParameters(transform, texture);\n        let material: THREE.ShaderMaterial = new THREE.ShaderMaterial(materialParameters);\n\n        let geometry: THREE.BufferGeometry = this._getRegularFlatImagePlaneGeo(transform);\n\n        return new THREE.Mesh(geometry, material);\n    }\n\n    private _createSphereCurtainMesh(node: Node, transform: Transform): THREE.Mesh {\n        let texture: THREE.Texture = this._createTexture(node.image);\n        let materialParameters: THREE.ShaderMaterialParameters =\n            this._createCurtainSphereMaterialParameters(transform, texture);\n        let material: THREE.ShaderMaterial = new THREE.ShaderMaterial(materialParameters);\n\n        return this._useMesh(transform, node) ?\n            new THREE.Mesh(this._getImageSphereGeo(transform, node), material) :\n            new THREE.Mesh(this._getFlatImageSphereGeo(transform), material);\n    }\n\n    private _createImageSphere(node: Node, transform: Transform): THREE.Mesh {\n        let texture: THREE.Texture = this._createTexture(node.image);\n        let materialParameters: THREE.ShaderMaterialParameters = this._createSphereMaterialParameters(transform, texture);\n        let material: THREE.ShaderMaterial = new THREE.ShaderMaterial(materialParameters);\n\n        let mesh: THREE.Mesh = this._useMesh(transform, node) ?\n            new THREE.Mesh(this._getImageSphereGeo(transform, node), material) :\n            new THREE.Mesh(this._getFlatImageSphereGeo(transform), material);\n\n        return mesh;\n    }\n\n    private _createImagePlane(node: Node, transform: Transform): THREE.Mesh {\n        let texture: THREE.Texture = this._createTexture(node.image);\n        let materialParameters: THREE.ShaderMaterialParameters = this._createPlaneMaterialParameters(transform, texture);\n        let material: THREE.ShaderMaterial = new THREE.ShaderMaterial(materialParameters);\n\n        let geometry: THREE.BufferGeometry = this._useMesh(transform, node) ?\n            this._getImagePlaneGeo(transform, node) :\n            this._getRegularFlatImagePlaneGeo(transform);\n\n        return new THREE.Mesh(geometry, material);\n    }\n\n    private _createImagePlaneFisheye(node: Node, transform: Transform): THREE.Mesh {\n        let texture: THREE.Texture = this._createTexture(node.image);\n        let materialParameters: THREE.ShaderMaterialParameters = this._createPlaneMaterialParametersFisheye(transform, texture);\n        let material: THREE.ShaderMaterial = new THREE.ShaderMaterial(materialParameters);\n\n        let geometry: THREE.BufferGeometry = this._useMesh(transform, node) ?\n            this._getImagePlaneGeoFisheye(transform, node) :\n            this._getRegularFlatImagePlaneGeoFisheye(transform);\n\n        return new THREE.Mesh(geometry, material);\n    }\n\n    private _createSphereMaterialParameters(transform: Transform, texture: THREE.Texture): THREE.ShaderMaterialParameters {\n        let gpano: IGPano = transform.gpano;\n\n        let halfCroppedWidth: number = (gpano.FullPanoWidthPixels - gpano.CroppedAreaImageWidthPixels) / 2;\n        let phiShift: number = 2 * Math.PI * (gpano.CroppedAreaLeftPixels - halfCroppedWidth) / gpano.FullPanoWidthPixels;\n        let phiLength: number = 2 * Math.PI * gpano.CroppedAreaImageWidthPixels / gpano.FullPanoWidthPixels;\n\n        let halfCroppedHeight: number = (gpano.FullPanoHeightPixels - gpano.CroppedAreaImageHeightPixels) / 2;\n        let thetaShift: number = Math.PI * (halfCroppedHeight - gpano.CroppedAreaTopPixels) / gpano.FullPanoHeightPixels;\n        let thetaLength: number = Math.PI * gpano.CroppedAreaImageHeightPixels / gpano.FullPanoHeightPixels;\n\n        let materialParameters: THREE.ShaderMaterialParameters = {\n            depthWrite: false,\n            fragmentShader: Shaders.equirectangular.fragment,\n            side: THREE.DoubleSide,\n            transparent: true,\n            uniforms: {\n                opacity: {\n                    type: \"f\",\n                    value: 1,\n                },\n                phiLength: {\n                    type: \"f\",\n                    value: phiLength,\n                },\n                phiShift: {\n                    type: \"f\",\n                    value: phiShift,\n                },\n                projectorMat: {\n                    type: \"m4\",\n                    value: transform.rt,\n                },\n                projectorTex: {\n                    type: \"t\",\n                    value: texture,\n                },\n                thetaLength: {\n                    type: \"f\",\n                    value: thetaLength,\n                },\n                thetaShift: {\n                    type: \"f\",\n                    value: thetaShift,\n                },\n            },\n            vertexShader: Shaders.equirectangular.vertex,\n        };\n\n        return materialParameters;\n    }\n\n    private _createCurtainSphereMaterialParameters(transform: Transform, texture: THREE.Texture): THREE.ShaderMaterialParameters {\n        let gpano: IGPano = transform.gpano;\n\n        let halfCroppedWidth: number = (gpano.FullPanoWidthPixels - gpano.CroppedAreaImageWidthPixels) / 2;\n        let phiShift: number = 2 * Math.PI * (gpano.CroppedAreaLeftPixels - halfCroppedWidth) / gpano.FullPanoWidthPixels;\n        let phiLength: number = 2 * Math.PI * gpano.CroppedAreaImageWidthPixels / gpano.FullPanoWidthPixels;\n\n        let halfCroppedHeight: number = (gpano.FullPanoHeightPixels - gpano.CroppedAreaImageHeightPixels) / 2;\n        let thetaShift: number = Math.PI * (halfCroppedHeight - gpano.CroppedAreaTopPixels) / gpano.FullPanoHeightPixels;\n        let thetaLength: number = Math.PI * gpano.CroppedAreaImageHeightPixels / gpano.FullPanoHeightPixels;\n\n        let materialParameters: THREE.ShaderMaterialParameters = {\n            depthWrite: false,\n            fragmentShader: Shaders.equirectangularCurtain.fragment,\n            side: THREE.DoubleSide,\n            transparent: true,\n            uniforms: {\n                curtain: {\n                    type: \"f\",\n                    value: 1,\n                },\n                opacity: {\n                    type: \"f\",\n                    value: 1,\n                },\n                phiLength: {\n                    type: \"f\",\n                    value: phiLength,\n                },\n                phiShift: {\n                    type: \"f\",\n                    value: phiShift,\n                },\n                projectorMat: {\n                    type: \"m4\",\n                    value: transform.rt,\n                },\n                projectorTex: {\n                    type: \"t\",\n                    value: texture,\n                },\n                thetaLength: {\n                    type: \"f\",\n                    value: thetaLength,\n                },\n                thetaShift: {\n                    type: \"f\",\n                    value: thetaShift,\n                },\n            },\n            vertexShader: Shaders.equirectangularCurtain.vertex,\n        };\n\n        return materialParameters;\n    }\n\n    private _createPlaneMaterialParameters(transform: Transform, texture: THREE.Texture): THREE.ShaderMaterialParameters {\n        let materialParameters: THREE.ShaderMaterialParameters = {\n            depthWrite: false,\n            fragmentShader: Shaders.perspective.fragment,\n            side: THREE.DoubleSide,\n            transparent: true,\n            uniforms: {\n                focal: {\n                    type: \"f\",\n                    value: transform.focal,\n                },\n                k1: {\n                    type: \"f\",\n                    value: transform.ck1,\n                },\n                k2: {\n                    type: \"f\",\n                    value: transform.ck2,\n                },\n                opacity: {\n                    type: \"f\",\n                    value: 1,\n                },\n                projectorMat: {\n                    type: \"m4\",\n                    value: transform.basicRt,\n                },\n                projectorTex: {\n                    type: \"t\",\n                    value: texture,\n                },\n                radial_peak: {\n                    type: \"f\",\n                    value: !!transform.radialPeak ? transform.radialPeak : 0,\n                },\n                scale_x: {\n                    type: \"f\",\n                    value: Math.max(transform.basicHeight, transform.basicWidth) / transform.basicWidth,\n                },\n                scale_y: {\n                    type: \"f\",\n                    value: Math.max(transform.basicWidth, transform.basicHeight) / transform.basicHeight,\n                },\n            },\n            vertexShader: Shaders.perspective.vertex,\n        };\n\n        return materialParameters;\n    }\n\n    private _createPlaneMaterialParametersFisheye(transform: Transform, texture: THREE.Texture): THREE.ShaderMaterialParameters {\n        let materialParameters: THREE.ShaderMaterialParameters = {\n            depthWrite: false,\n            fragmentShader: Shaders.fisheye.fragment,\n            side: THREE.DoubleSide,\n            transparent: true,\n            uniforms: {\n                focal: {\n                    type: \"f\",\n                    value: transform.focal,\n                },\n                k1: {\n                    type: \"f\",\n                    value: transform.ck1,\n                },\n                k2: {\n                    type: \"f\",\n                    value: transform.ck2,\n                },\n                opacity: {\n                    type: \"f\",\n                    value: 1,\n                },\n                projectorMat: {\n                    type: \"m4\",\n                    value: transform.basicRt,\n                },\n                projectorTex: {\n                    type: \"t\",\n                    value: texture,\n                },\n                radial_peak: {\n                    type: \"f\",\n                    value: !!transform.radialPeak ? transform.radialPeak : 0,\n                },\n                scale_x: {\n                    type: \"f\",\n                    value: Math.max(transform.basicHeight, transform.basicWidth) / transform.basicWidth,\n                },\n                scale_y: {\n                    type: \"f\",\n                    value: Math.max(transform.basicWidth, transform.basicHeight) / transform.basicHeight,\n                },\n            },\n            vertexShader: Shaders.fisheye.vertex,\n        };\n\n        return materialParameters;\n    }\n\n    private _createCurtainPlaneMaterialParametersFisheye(transform: Transform, texture: THREE.Texture): THREE.ShaderMaterialParameters {\n        let materialParameters: THREE.ShaderMaterialParameters = {\n            depthWrite: false,\n            fragmentShader: Shaders.fisheyeCurtain.fragment,\n            side: THREE.DoubleSide,\n            transparent: true,\n            uniforms: {\n                curtain: {\n                    type: \"f\",\n                    value: 1,\n                },\n                focal: {\n                    type: \"f\",\n                    value: transform.focal,\n                },\n                k1: {\n                    type: \"f\",\n                    value: transform.ck1,\n                },\n                k2: {\n                    type: \"f\",\n                    value: transform.ck2,\n                },\n                opacity: {\n                    type: \"f\",\n                    value: 1,\n                },\n                projectorMat: {\n                    type: \"m4\",\n                    value: transform.basicRt,\n                },\n                projectorTex: {\n                    type: \"t\",\n                    value: texture,\n                },\n                radial_peak: {\n                    type: \"f\",\n                    value: !!transform.radialPeak ? transform.radialPeak : 0,\n                },\n                scale_x: {\n                    type: \"f\",\n                    value: Math.max(transform.basicHeight, transform.basicWidth) / transform.basicWidth,\n                },\n                scale_y: {\n                    type: \"f\",\n                    value: Math.max(transform.basicWidth, transform.basicHeight) / transform.basicHeight,\n                },\n            },\n            vertexShader: Shaders.fisheyeCurtain.vertex,\n        };\n\n        return materialParameters;\n    }\n\n    private _createCurtainPlaneMaterialParameters(transform: Transform, texture: THREE.Texture): THREE.ShaderMaterialParameters {\n        let materialParameters: THREE.ShaderMaterialParameters = {\n            depthWrite: false,\n            fragmentShader: Shaders.perspectiveCurtain.fragment,\n            side: THREE.DoubleSide,\n            transparent: true,\n            uniforms: {\n                curtain: {\n                    type: \"f\",\n                    value: 1,\n                },\n                focal: {\n                    type: \"f\",\n                    value: transform.focal,\n                },\n                k1: {\n                    type: \"f\",\n                    value: transform.ck1,\n                },\n                k2: {\n                    type: \"f\",\n                    value: transform.ck2,\n                },\n                opacity: {\n                    type: \"f\",\n                    value: 1,\n                },\n                projectorMat: {\n                    type: \"m4\",\n                    value: transform.basicRt,\n                },\n                projectorTex: {\n                    type: \"t\",\n                    value: texture,\n                },\n                radial_peak: {\n                    type: \"f\",\n                    value: !!transform.radialPeak ? transform.radialPeak : 0,\n                },\n                scale_x: {\n                    type: \"f\",\n                    value: Math.max(transform.basicHeight, transform.basicWidth) / transform.basicWidth,\n                },\n                scale_y: {\n                    type: \"f\",\n                    value: Math.max(transform.basicWidth, transform.basicHeight) / transform.basicHeight,\n                },\n            },\n            vertexShader: Shaders.perspectiveCurtain.vertex,\n        };\n\n        return materialParameters;\n    }\n\n    private _createDistortedCurtainPlaneMaterialParameters(transform: Transform, texture: THREE.Texture): THREE.ShaderMaterialParameters {\n        let materialParameters: THREE.ShaderMaterialParameters = {\n            depthWrite: false,\n            fragmentShader: Shaders.perspectiveDistortedCurtain.fragment,\n            side: THREE.DoubleSide,\n            transparent: true,\n            uniforms: {\n                curtain: {\n                    type: \"f\",\n                    value: 1,\n                },\n                opacity: {\n                    type: \"f\",\n                    value: 1,\n                },\n                projectorMat: {\n                    type: \"m4\",\n                    value: transform.projectorMatrix(),\n                },\n                projectorTex: {\n                    type: \"t\",\n                    value: texture,\n                },\n            },\n            vertexShader: Shaders.perspectiveDistortedCurtain.vertex,\n        };\n\n        return materialParameters;\n    }\n\n    private _createDistortedPlaneMaterialParameters(transform: Transform, texture: THREE.Texture): THREE.ShaderMaterialParameters {\n        let materialParameters: THREE.ShaderMaterialParameters = {\n            depthWrite: false,\n            fragmentShader: Shaders.perspectiveDistorted.fragment,\n            side: THREE.DoubleSide,\n            transparent: true,\n            uniforms: {\n                opacity: {\n                    type: \"f\",\n                    value: 1,\n                },\n                projectorMat: {\n                    type: \"m4\",\n                    value: transform.projectorMatrix(),\n                },\n                projectorTex: {\n                    type: \"t\",\n                    value: texture,\n                },\n            },\n            vertexShader: Shaders.perspectiveDistorted.vertex,\n        };\n\n        return materialParameters;\n    }\n\n    private _createTexture(image: HTMLImageElement): THREE.Texture {\n        let texture: THREE.Texture = new THREE.Texture(image);\n        texture.minFilter = THREE.LinearFilter;\n        texture.needsUpdate = true;\n\n        return texture;\n    }\n\n    private _useMesh(transform: Transform, node: Node): boolean {\n        return node.mesh.vertices.length && transform.hasValidScale;\n    }\n\n    private _getImageSphereGeo(transform: Transform, node: Node): THREE.BufferGeometry {\n        let t: THREE.Matrix4 = new THREE.Matrix4().getInverse(transform.srt);\n\n        // push everything at least 5 meters in front of the camera\n        let minZ: number = 5.0 * transform.scale;\n        let maxZ: number = this._imageSphereRadius * transform.scale;\n\n        let vertices: number[] = node.mesh.vertices;\n        let numVertices: number = vertices.length / 3;\n        let positions: Float32Array = new Float32Array(vertices.length);\n        for (let i: number = 0; i < numVertices; ++i) {\n            let index: number = 3 * i;\n            let x: number = vertices[index + 0];\n            let y: number = vertices[index + 1];\n            let z: number = vertices[index + 2];\n\n            let l: number = Math.sqrt(x * x + y * y + z * z);\n            let boundedL: number = Math.max(minZ, Math.min(l, maxZ));\n            let factor: number = boundedL / l;\n            let p: THREE.Vector3 = new THREE.Vector3(x * factor, y * factor, z * factor);\n\n            p.applyMatrix4(t);\n\n            positions[index + 0] = p.x;\n            positions[index + 1] = p.y;\n            positions[index + 2] = p.z;\n        }\n\n        let faces: number[] = node.mesh.faces;\n        let indices: Uint16Array = new Uint16Array(faces.length);\n        for (let i: number = 0; i < faces.length; ++i) {\n            indices[i] = faces[i];\n        }\n\n        let geometry: THREE.BufferGeometry = new THREE.BufferGeometry();\n\n        geometry.addAttribute(\"position\", new THREE.BufferAttribute(positions, 3));\n        geometry.setIndex(new THREE.BufferAttribute(indices, 1));\n\n        return geometry;\n    }\n\n    private _getImagePlaneGeo(transform: Transform, node: Node): THREE.BufferGeometry {\n        const undistortionMarginFactor: number = 3;\n        let t: THREE.Matrix4 = new THREE.Matrix4().getInverse(transform.srt);\n\n        // push everything at least 5 meters in front of the camera\n        let minZ: number = 5.0 * transform.scale;\n        let maxZ: number = this._imagePlaneDepth * transform.scale;\n\n        let vertices: number[] = node.mesh.vertices;\n        let numVertices: number = vertices.length / 3;\n        let positions: Float32Array = new Float32Array(vertices.length);\n        for (let i: number = 0; i < numVertices; ++i) {\n            let index: number = 3 * i;\n            let x: number = vertices[index + 0];\n            let y: number = vertices[index + 1];\n            let z: number = vertices[index + 2];\n\n            if (i < 4) {\n                x *= undistortionMarginFactor;\n                y *= undistortionMarginFactor;\n            }\n\n            let boundedZ: number = Math.max(minZ, Math.min(z, maxZ));\n            let factor: number = boundedZ / z;\n            let p: THREE.Vector3 = new THREE.Vector3(x * factor, y * factor, boundedZ);\n\n            p.applyMatrix4(t);\n\n            positions[index + 0] = p.x;\n            positions[index + 1] = p.y;\n            positions[index + 2] = p.z;\n        }\n\n        let faces: number[] = node.mesh.faces;\n        let indices: Uint16Array = new Uint16Array(faces.length);\n        for (let i: number = 0; i < faces.length; ++i) {\n            indices[i] = faces[i];\n        }\n\n        let geometry: THREE.BufferGeometry = new THREE.BufferGeometry();\n\n        geometry.addAttribute(\"position\", new THREE.BufferAttribute(positions, 3));\n        geometry.setIndex(new THREE.BufferAttribute(indices, 1));\n\n        return geometry;\n    }\n\n    private _getImagePlaneGeoFisheye(transform: Transform, node: Node): THREE.BufferGeometry {\n        let t: THREE.Matrix4 = new THREE.Matrix4().getInverse(transform.srt);\n\n        // push everything at least 5 meters in front of the camera\n        let minZ: number = 5.0 * transform.scale;\n        let maxZ: number = this._imagePlaneDepth * transform.scale;\n\n        let vertices: number[] = node.mesh.vertices;\n        let numVertices: number = vertices.length / 3;\n        let positions: Float32Array = new Float32Array(vertices.length);\n        for (let i: number = 0; i < numVertices; ++i) {\n            let index: number = 3 * i;\n            let x: number = vertices[index + 0];\n            let y: number = vertices[index + 1];\n            let z: number = vertices[index + 2];\n\n            let l: number = Math.sqrt(x * x + y * y + z * z);\n            let boundedL: number = Math.max(minZ, Math.min(l, maxZ));\n            let factor: number = boundedL / l;\n            let p: THREE.Vector3 = new THREE.Vector3(x * factor, y * factor, z * factor);\n\n            p.applyMatrix4(t);\n\n            positions[index + 0] = p.x;\n            positions[index + 1] = p.y;\n            positions[index + 2] = p.z;\n        }\n\n        let faces: number[] = node.mesh.faces;\n        let indices: Uint16Array = new Uint16Array(faces.length);\n        for (let i: number = 0; i < faces.length; ++i) {\n            indices[i] = faces[i];\n        }\n\n        let geometry: THREE.BufferGeometry = new THREE.BufferGeometry();\n\n        geometry.addAttribute(\"position\", new THREE.BufferAttribute(positions, 3));\n        geometry.setIndex(new THREE.BufferAttribute(indices, 1));\n\n        return geometry;\n    }\n\n    private _getFlatImageSphereGeo(transform: Transform): THREE.Geometry {\n        let gpano: IGPano = transform.gpano;\n        let phiStart: number = 2 * Math.PI * gpano.CroppedAreaLeftPixels / gpano.FullPanoWidthPixels;\n        let phiLength: number = 2 * Math.PI * gpano.CroppedAreaImageWidthPixels / gpano.FullPanoWidthPixels;\n        let thetaStart: number = Math.PI *\n            (gpano.FullPanoHeightPixels - gpano.CroppedAreaImageHeightPixels - gpano.CroppedAreaTopPixels) /\n            gpano.FullPanoHeightPixels;\n        let thetaLength: number = Math.PI * gpano.CroppedAreaImageHeightPixels / gpano.FullPanoHeightPixels;\n        let geometry: THREE.SphereGeometry = new THREE.SphereGeometry(\n            this._imageSphereRadius,\n            20,\n            40,\n            phiStart - Math.PI / 2,\n            phiLength,\n            thetaStart,\n            thetaLength);\n\n        geometry.applyMatrix(new THREE.Matrix4().getInverse(transform.rt));\n\n        return geometry;\n    }\n\n    private _getRegularFlatImagePlaneGeo(transform: Transform): THREE.BufferGeometry {\n        let width: number = transform.width;\n        let height: number = transform.height;\n        let size: number = Math.max(width, height);\n        let dx: number = width / 2.0 / size;\n        let dy: number = height / 2.0 / size;\n\n        return this._getFlatImagePlaneGeo(transform, dx, dy);\n    }\n\n    private _getFlatImagePlaneGeo(transform: Transform, dx: number, dy: number): THREE.BufferGeometry {\n        let vertices: number[][] = [];\n        vertices.push(transform.unprojectSfM([-dx, -dy], this._imagePlaneDepth));\n        vertices.push(transform.unprojectSfM([dx, -dy], this._imagePlaneDepth));\n        vertices.push(transform.unprojectSfM([dx, dy], this._imagePlaneDepth));\n        vertices.push(transform.unprojectSfM([-dx, dy], this._imagePlaneDepth));\n\n        return this._createFlatGeometry(vertices);\n    }\n\n    private _getRegularFlatImagePlaneGeoFisheye(transform: Transform): THREE.BufferGeometry {\n        let width: number = transform.width;\n        let height: number = transform.height;\n        let size: number = Math.max(width, height);\n        let dx: number = width / 2.0 / size;\n        let dy: number = height / 2.0 / size;\n\n        return this._getFlatImagePlaneGeoFisheye(transform, dx, dy);\n    }\n\n    private _getFlatImagePlaneGeoFisheye(transform: Transform, dx: number, dy: number): THREE.BufferGeometry {\n        let vertices: number[][] = [];\n        vertices.push(transform.unprojectSfM([-dx, -dy], this._imagePlaneDepth));\n        vertices.push(transform.unprojectSfM([dx, -dy], this._imagePlaneDepth));\n        vertices.push(transform.unprojectSfM([dx, dy], this._imagePlaneDepth));\n        vertices.push(transform.unprojectSfM([-dx, dy], this._imagePlaneDepth));\n\n        return this._createFlatGeometry(vertices);\n    }\n\n    private _getFlatImagePlaneGeoFromBasic(\n        transform: Transform,\n        basicX0: number,\n        basicX1: number,\n        basicY0: number,\n        basicY1: number): THREE.BufferGeometry {\n\n        let vertices: number[][] = [];\n\n        vertices.push(transform.unprojectBasic([basicX0, basicY0], this._imagePlaneDepth));\n        vertices.push(transform.unprojectBasic([basicX1, basicY0], this._imagePlaneDepth));\n        vertices.push(transform.unprojectBasic([basicX1, basicY1], this._imagePlaneDepth));\n        vertices.push(transform.unprojectBasic([basicX0, basicY1], this._imagePlaneDepth));\n\n        return this._createFlatGeometry(vertices);\n    }\n\n    private _createFlatGeometry(vertices: number[][]): THREE.BufferGeometry {\n        let positions: Float32Array = new Float32Array(12);\n        for (let i: number = 0; i < vertices.length; i++) {\n            let index: number = 3 * i;\n            positions[index + 0] = vertices[i][0];\n            positions[index + 1] = vertices[i][1];\n            positions[index + 2] = vertices[i][2];\n        }\n\n        let indices: Uint16Array = new Uint16Array(6);\n        indices[0] = 0;\n        indices[1] = 1;\n        indices[2] = 3;\n        indices[3] = 1;\n        indices[4] = 2;\n        indices[5] = 3;\n\n        let geometry: THREE.BufferGeometry = new THREE.BufferGeometry();\n\n        geometry.addAttribute(\"position\", new THREE.BufferAttribute(positions, 3));\n        geometry.setIndex(new THREE.BufferAttribute(indices, 1));\n\n        return geometry;\n    }\n}\n\nexport default MeshFactory;\n",
+    "import * as THREE from \"three\";\n\nimport {IShaderMaterial} from \"../../Component\";\n\nexport class MeshScene {\n    private _planes: { [key: string]: THREE.Mesh };\n    private _planesOld: { [key: string]: THREE.Mesh };\n    private _planesPeriphery: { [key: string]: THREE.Mesh };\n\n    private _scene: THREE.Scene;\n    private _sceneOld: THREE.Scene;\n    private _scenePeriphery: THREE.Scene;\n\n    constructor() {\n        this._planes = {};\n        this._planesOld = {};\n        this._planesPeriphery = {};\n\n        this._scene = new THREE.Scene();\n        this._sceneOld = new THREE.Scene();\n        this._scenePeriphery = new THREE.Scene();\n    }\n\n    public get planes(): { [key: string]: THREE.Mesh } {\n        return this._planes;\n    }\n\n    public get planesOld(): { [key: string]: THREE.Mesh } {\n        return this._planesOld;\n    }\n\n    public get planesPeriphery(): { [key: string]: THREE.Mesh } {\n        return this._planesPeriphery;\n    }\n\n    public get scene(): THREE.Scene {\n        return this._scene;\n    }\n\n    public get sceneOld(): THREE.Scene {\n        return this._sceneOld;\n    }\n\n    public get scenePeriphery(): THREE.Scene {\n        return this._scenePeriphery;\n    }\n\n    public updateImagePlanes(planes: { [key: string]: THREE.Mesh }): void {\n        this._dispose(this._planesOld, this.sceneOld);\n\n        for (const key in this._planes) {\n            if (!this._planes.hasOwnProperty(key)) {\n                continue;\n\n            }\n\n            const plane: THREE.Mesh = this._planes[key];\n            this._scene.remove(plane);\n            this._sceneOld.add(plane);\n        }\n\n        for (const key in planes) {\n            if (!planes.hasOwnProperty(key)) {\n                continue;\n            }\n\n            this._scene.add(planes[key]);\n        }\n\n        this._planesOld = this._planes;\n        this._planes = planes;\n    }\n\n    public addImagePlanes(planes: { [key: string]: THREE.Mesh }): void {\n        for (const key in planes) {\n            if (!planes.hasOwnProperty(key)) {\n                continue;\n            }\n\n            const plane: THREE.Mesh = planes[key];\n            this._scene.add(plane);\n            this._planes[key] = plane;\n        }\n    }\n\n    public addImagePlanesOld(planes: { [key: string]: THREE.Mesh }): void {\n        for (const key in planes) {\n            if (!planes.hasOwnProperty(key)) {\n                continue;\n            }\n\n            const plane: THREE.Mesh = planes[key];\n            this._sceneOld.add(plane);\n            this._planesOld[key] = plane;\n        }\n    }\n\n    public setImagePlanes(planes: { [key: string]: THREE.Mesh }): void {\n        this._clear();\n        this.addImagePlanes(planes);\n    }\n\n    public addPeripheryPlanes(planes: { [key: string]: THREE.Mesh }): void {\n        for (const key in planes) {\n            if (!planes.hasOwnProperty(key)) {\n                continue;\n            }\n\n            const plane: THREE.Mesh = planes[key];\n            this._scenePeriphery.add(plane);\n            this._planesPeriphery[key] = plane;\n        }\n    }\n\n    public setPeripheryPlanes(planes: { [key: string]: THREE.Mesh }): void {\n        this._clearPeriphery();\n        this.addPeripheryPlanes(planes);\n    }\n\n    public setImagePlanesOld(planes: { [key: string]: THREE.Mesh }): void {\n        this._clearOld();\n        this.addImagePlanesOld(planes);\n    }\n\n    public clear(): void {\n        this._clear();\n        this._clearOld();\n    }\n\n    private _clear(): void {\n        this._dispose(this._planes, this._scene);\n        this._planes = {};\n    }\n\n    private _clearOld(): void {\n        this._dispose(this._planesOld, this._sceneOld);\n        this._planesOld = {};\n    }\n\n    private _clearPeriphery(): void {\n        this._dispose(this._planesPeriphery, this._scenePeriphery);\n        this._planesPeriphery = {};\n    }\n\n    private _dispose(planes: { [key: string]: THREE.Mesh }, scene: THREE.Scene): void {\n        for (const key in planes) {\n            if (!planes.hasOwnProperty(key)) {\n                continue;\n            }\n\n            const plane: THREE.Mesh = planes[key];\n            scene.remove(plane);\n            plane.geometry.dispose();\n            (<THREE.Material>plane.material).dispose();\n            let texture: THREE.Texture = (<IShaderMaterial>plane.material).uniforms.projectorTex.value;\n            if (texture != null) {\n                texture.dispose();\n            }\n        }\n    }\n}\n\nexport default MeshScene;\n",
     "import {\n    concat as observableConcat,\n    merge as observableMerge,\n    of as observableOf,\n    Observable,\n} from \"rxjs\";\n\nimport {\n    map,\n    filter,\n    pairwise,\n    startWith,\n    switchMap,\n    takeWhile,\n} from \"rxjs/operators\";\n\nimport {MouseService} from \"../../Viewer\";\n\nexport class MouseOperator {\n    public static filteredPairwiseMouseDrag$(\n        name: string,\n        mouseService: MouseService): Observable<[MouseEvent, MouseEvent]> {\n\n        return mouseService\n            .filtered$(name, mouseService.mouseDragStart$).pipe(\n            switchMap(\n                (mouseDragStart: MouseEvent): Observable<MouseEvent> => {\n                    const mouseDragging$: Observable<MouseEvent> = observableConcat(\n                        observableOf(mouseDragStart),\n                        mouseService\n                            .filtered$(name, mouseService.mouseDrag$));\n\n                    const mouseDragEnd$: Observable<MouseEvent> = mouseService\n                        .filtered$(name, mouseService.mouseDragEnd$).pipe(\n                        map(\n                            (): MouseEvent => {\n                                return null;\n                            }));\n\n                    return observableMerge(mouseDragging$, mouseDragEnd$).pipe(\n                        takeWhile(\n                            (e: MouseEvent): boolean => {\n                                return !!e;\n                            }),\n                        startWith(null));\n                }),\n            pairwise(),\n            filter(\n                (pair: [MouseEvent, MouseEvent]): boolean => {\n                    return pair[0] != null && pair[1] != null;\n                }));\n    }\n}\n\nexport default MouseOperator;\n",
-    "import {combineLatest as observableCombineLatest, Observable, Subject, Subscription} from \"rxjs\";\n\nimport {withLatestFrom, map} from \"rxjs/operators\";\nimport * as vd from \"virtual-dom\";\n\nimport {\n    ComponentService,\n    Component,\n    IComponentConfiguration,\n} from \"../../Component\";\nimport {\n    Transform,\n    ViewportCoords,\n} from \"../../Geo\";\nimport {\n    IVNodeHash,\n    RenderCamera,\n} from \"../../Render\";\nimport {\n    IFrame,\n    State,\n} from \"../../State\";\nimport {\n    Container,\n    Navigator,\n} from \"../../Viewer\";\n\nexport class ZoomComponent extends Component<IComponentConfiguration> {\n    public static componentName: string = \"zoom\";\n\n    private _viewportCoords: ViewportCoords;\n\n    private _zoomDelta$: Subject<number>;\n\n    private _renderSubscription: Subscription;\n    private _zoomSubscription: Subscription;\n\n    constructor(name: string, container: Container, navigator: Navigator) {\n        super(name, container, navigator);\n\n        this._viewportCoords = new ViewportCoords();\n\n        this._zoomDelta$ = new Subject<number>();\n    }\n\n    protected _activate(): void {\n        this._renderSubscription = observableCombineLatest(\n                this._navigator.stateService.currentState$,\n                this._navigator.stateService.state$).pipe(\n            map(\n                ([frame, state]: [IFrame, State]): [number, State] => {\n                    return [frame.state.zoom, state];\n                }),\n            map(\n                ([zoom, state]: [number, State]): IVNodeHash => {\n                    const zoomInIcon: vd.VNode = vd.h(\"div.ZoomInIcon\", []);\n                    const zoomInButton: vd.VNode = zoom >= 3 || state === State.Waiting ?\n                        vd.h(\"div.ZoomInButtonDisabled\", [zoomInIcon]) :\n                        vd.h(\"div.ZoomInButton\", { onclick: (): void => { this._zoomDelta$.next(1); } }, [zoomInIcon]);\n\n                    const zoomOutIcon: vd.VNode = vd.h(\"div.ZoomOutIcon\", []);\n                    const zoomOutButton: vd.VNode = zoom <= 0 || state === State.Waiting ?\n                        vd.h(\"div.ZoomOutButtonDisabled\", [zoomOutIcon]) :\n                        vd.h(\"div.ZoomOutButton\", { onclick: (): void => { this._zoomDelta$.next(-1); } }, [zoomOutIcon]);\n\n                    return {\n                        name: this._name,\n                        vnode: vd.h(\n                            \"div.ZoomContainer\",\n                            { oncontextmenu: (event: MouseEvent): void => { event.preventDefault(); } },\n                            [zoomInButton, zoomOutButton]),\n                    };\n                }))\n            .subscribe(this._container.domRenderer.render$);\n\n        this._zoomSubscription = this._zoomDelta$.pipe(\n            withLatestFrom(\n                this._container.renderService.renderCamera$,\n                this._navigator.stateService.currentTransform$))\n            .subscribe(\n                ([zoomDelta, render, transform]: [number, RenderCamera, Transform]): void => {\n                    const unprojected: THREE.Vector3 = this._viewportCoords.unprojectFromViewport(0, 0, render.perspective);\n                    const reference: number[] = transform.projectBasic(unprojected.toArray());\n\n                    this._navigator.stateService.zoomIn(zoomDelta, reference);\n                });\n    }\n\n    protected _deactivate(): void {\n        this._renderSubscription.unsubscribe();\n        this._zoomSubscription.unsubscribe();\n    }\n\n    protected _getDefaultConfiguration(): IComponentConfiguration {\n        return {};\n    }\n}\n\nComponentService.register(ZoomComponent);\nexport default ZoomComponent;\n",
+    "import {combineLatest as observableCombineLatest, Subject, Subscription} from \"rxjs\";\n\nimport {withLatestFrom, map} from \"rxjs/operators\";\nimport * as vd from \"virtual-dom\";\n\nimport {\n    ComponentService,\n    Component,\n} from \"../../Component\";\nimport {\n    Transform,\n    ViewportCoords,\n} from \"../../Geo\";\nimport {\n    IVNodeHash,\n    RenderCamera,\n} from \"../../Render\";\nimport {\n    IFrame,\n    State,\n} from \"../../State\";\nimport {\n    Container,\n    Navigator,\n} from \"../../Viewer\";\nimport IZoomConfiguration from \"../interfaces/IZoomConfiguration\";\nimport ISize from \"../../render/interfaces/ISize\";\nimport ComponentSize from \"../utils/ComponentSize\";\n\n/**\n * @class ZoomComponent\n *\n * @classdesc Component rendering UI elements used for zooming.\n *\n * @example\n * ```\n * var viewer = new Mapillary.Viewer(\n *     \"<element-id>\",\n *     \"<client-id>\",\n *     \"<my key>\");\n *\n * var zoomComponent = viewer.getComponent(\"zoom\");\n * zoomComponent.configure({ size: Mapillary.ComponentSize.Small });\n * ```\n */\nexport class ZoomComponent extends Component<IZoomConfiguration> {\n    public static componentName: string = \"zoom\";\n\n    private _viewportCoords: ViewportCoords;\n\n    private _zoomDelta$: Subject<number>;\n\n    private _renderSubscription: Subscription;\n    private _zoomSubscription: Subscription;\n\n    constructor(name: string, container: Container, navigator: Navigator) {\n        super(name, container, navigator);\n\n        this._viewportCoords = new ViewportCoords();\n\n        this._zoomDelta$ = new Subject<number>();\n    }\n\n    protected _activate(): void {\n        this._renderSubscription = observableCombineLatest(\n                this._navigator.stateService.currentState$,\n                this._navigator.stateService.state$,\n                this._configuration$,\n                this._container.renderService.size$).pipe(\n            map(\n                ([frame, state, configuration, size]: [IFrame, State, IZoomConfiguration, ISize]): IVNodeHash => {\n                    const zoom: number = frame.state.zoom;\n\n                    const zoomInIcon: vd.VNode = vd.h(\"div.ZoomInIcon\", []);\n                    const zoomInButton: vd.VNode = zoom >= 3 || state === State.Waiting ?\n                        vd.h(\"div.ZoomInButtonDisabled\", [zoomInIcon]) :\n                        vd.h(\"div.ZoomInButton\", { onclick: (): void => { this._zoomDelta$.next(1); } }, [zoomInIcon]);\n\n                    const zoomOutIcon: vd.VNode = vd.h(\"div.ZoomOutIcon\", []);\n                    const zoomOutButton: vd.VNode = zoom <= 0 || state === State.Waiting ?\n                        vd.h(\"div.ZoomOutButtonDisabled\", [zoomOutIcon]) :\n                        vd.h(\"div.ZoomOutButton\", { onclick: (): void => { this._zoomDelta$.next(-1); } }, [zoomOutIcon]);\n\n                    const compact: string = configuration.size === ComponentSize.Small ||\n                        configuration.size === ComponentSize.Automatic && size.width < 640 ?\n                        \".ZoomCompact\" : \"\";\n\n                    return {\n                        name: this._name,\n                        vnode: vd.h(\n                            \"div.ZoomContainer\" + compact,\n                            { oncontextmenu: (event: MouseEvent): void => { event.preventDefault(); } },\n                            [zoomInButton, zoomOutButton]),\n                    };\n                }))\n            .subscribe(this._container.domRenderer.render$);\n\n        this._zoomSubscription = this._zoomDelta$.pipe(\n            withLatestFrom(\n                this._container.renderService.renderCamera$,\n                this._navigator.stateService.currentTransform$))\n            .subscribe(\n                ([zoomDelta, render, transform]: [number, RenderCamera, Transform]): void => {\n                    const unprojected: THREE.Vector3 = this._viewportCoords.unprojectFromViewport(0, 0, render.perspective);\n                    const reference: number[] = transform.projectBasic(unprojected.toArray());\n\n                    this._navigator.stateService.zoomIn(zoomDelta, reference);\n                });\n    }\n\n    protected _deactivate(): void {\n        this._renderSubscription.unsubscribe();\n        this._zoomSubscription.unsubscribe();\n    }\n\n    protected _getDefaultConfiguration(): IZoomConfiguration {\n        return { size: ComponentSize.Automatic };\n    }\n}\n\nComponentService.register(ZoomComponent);\nexport default ZoomComponent;\n",
     "import {MapillaryError} from \"./MapillaryError\";\n\n/**\n * @class AbortMapillaryError\n *\n * @classdesc Error thrown when a move to request has been\n * aborted before completing because of a subsequent request.\n */\nexport class AbortMapillaryError extends MapillaryError {\n    constructor (message?: string) {\n        super(message != null ? message : \"The request was aborted.\");\n\n        Object.setPrototypeOf(this, AbortMapillaryError.prototype);\n\n        this.name = \"AbortMapillaryError\";\n    }\n}\n\nexport default AbortMapillaryError;\n",
     "import {MapillaryError} from \"./MapillaryError\";\n\nexport class ArgumentMapillaryError extends MapillaryError {\n    constructor (message?: string) {\n        super(message != null ? message : \"The argument is not valid.\");\n\n        Object.setPrototypeOf(this, ArgumentMapillaryError.prototype);\n\n        this.name = \"ArgumentMapillaryError\";\n    }\n}\n\nexport default ArgumentMapillaryError;\n",
     "import {MapillaryError} from \"./MapillaryError\";\n\nexport class GraphMapillaryError extends MapillaryError {\n    constructor (message: string) {\n        super(message);\n\n        Object.setPrototypeOf(this, GraphMapillaryError.prototype);\n\n        this.name = \"GraphMapillaryError\";\n    }\n}\n\nexport default GraphMapillaryError;\n",
     "export class MapillaryError extends Error {\n    constructor (message?: string) {\n        super(message);\n\n        Object.setPrototypeOf(this, MapillaryError.prototype);\n\n        this.name = \"MapillaryError\";\n    }\n}\n\nexport default MapillaryError;\n",
     "import * as THREE from \"three\";\n\nimport {Transform} from \"../Geo\";\n\n/**\n * @class Camera\n *\n * @classdesc Holds information about a camera.\n */\nexport class Camera {\n    private _position: THREE.Vector3;\n    private _lookat: THREE.Vector3;\n    private _up: THREE.Vector3;\n    private _focal: number;\n\n    /**\n     * Create a new camera instance.\n     * @param {Transform} [transform] - Optional transform instance.\n     */\n    constructor(transform?: Transform) {\n        if (transform != null) {\n            this._position = new THREE.Vector3().fromArray(transform.unprojectSfM([0, 0], 0));\n            this._lookat = new THREE.Vector3().fromArray(transform.unprojectSfM([0, 0], 10));\n            this._up = transform.upVector();\n            this._focal = this._getFocal(transform);\n        } else {\n            this._position = new THREE.Vector3(0, 0, 0);\n            this._lookat = new THREE.Vector3(0, 0, 1);\n            this._up = new THREE.Vector3(0, -1, 0);\n            this._focal = 1;\n        }\n    }\n\n   /**\n    * Get position.\n    * @returns {THREE.Vector3} The position vector.\n    */\n    public get position(): THREE.Vector3 {\n        return this._position;\n    }\n\n   /**\n    * Get lookat.\n    * @returns {THREE.Vector3} The lookat vector.\n    */\n    public get lookat(): THREE.Vector3 {\n        return this._lookat;\n    }\n\n   /**\n    * Get up.\n    * @returns {THREE.Vector3} The up vector.\n    */\n    public get up(): THREE.Vector3 {\n        return this._up;\n    }\n\n   /**\n    * Get focal.\n    * @returns {number} The focal length.\n    */\n    public get focal(): number {\n        return this._focal;\n    }\n\n   /**\n    * Set focal.\n    */\n    public set focal(value: number) {\n        this._focal = value;\n    }\n\n    /**\n     * Update this camera to the linearly interpolated value of two other cameras.\n     *\n     * @param {Camera} a - First camera.\n     * @param {Camera} b - Second camera.\n     * @param {number} alpha - Interpolation value on the interval [0, 1].\n     */\n    public lerpCameras(a: Camera, b: Camera, alpha: number): void {\n      this._position.subVectors(b.position, a.position).multiplyScalar(alpha).add(a.position);\n      this._lookat.subVectors(b.lookat, a.lookat).multiplyScalar(alpha).add(a.lookat);\n      this._up.subVectors(b.up, a.up).multiplyScalar(alpha).add(a.up);\n      this._focal = (1 - alpha) * a.focal + alpha * b.focal;\n    }\n\n    /**\n     * Copy the properties of another camera to this camera.\n     *\n     * @param {Camera} other - Another camera.\n     */\n    public copy(other: Camera): void {\n        this._position.copy(other.position);\n        this._lookat.copy(other.lookat);\n        this._up.copy(other.up);\n        this._focal = other.focal;\n    }\n\n    /**\n     * Clone this camera.\n     *\n     * @returns {Camera} A camera with cloned properties equal to this camera.\n     */\n    public clone(): Camera {\n        let camera: Camera = new Camera();\n\n        camera.position.copy(this._position);\n        camera.lookat.copy(this._lookat);\n        camera.up.copy(this._up);\n        camera.focal = this._focal;\n\n        return camera;\n    }\n\n    /**\n     * Determine the distance between this camera and another camera.\n     *\n     * @param {Camera} other - Another camera.\n     * @returns {number} The distance between the cameras.\n     */\n    public diff(other: Camera): number {\n        let pd: number = this._position.distanceToSquared(other.position);\n        let ld: number = this._lookat.distanceToSquared(other.lookat);\n        let ud: number = this._up.distanceToSquared(other.up);\n        let fd: number = 100 * Math.abs(this._focal - other.focal);\n\n        return Math.max(pd, ld, ud, fd);\n    }\n\n    /**\n     * Get the focal length based on the transform.\n     *\n     * @description Returns the focal length of the transform if gpano info is not available.\n     * Returns a focal length corresponding to a vertical fov clamped to [45, 90] degrees based on\n     * the gpano information if available.\n     *\n     * @returns {number} Focal length.\n     */\n    private _getFocal(transform: Transform): number {\n        if (transform.gpano == null) {\n            return transform.focal;\n        }\n\n        let vFov: number = Math.PI * transform.gpano.CroppedAreaImageHeightPixels / transform.gpano.FullPanoHeightPixels;\n        let focal: number = 0.5 / Math.tan(vFov / 2);\n\n        return Math.min(1 / (2 * (Math.sqrt(2) - 1)), Math.max(0.5, focal));\n    }\n}\n",
-    "import * as THREE from \"three\";\n\nimport {\n    GeoCoords,\n    ILatLonAlt,\n    Spatial,\n} from \"../Geo\";\n\nconst geoCoords: GeoCoords = new GeoCoords();\nconst spatial: Spatial = new Spatial();\n\nexport function computeTranslation(position: ILatLonAlt, rotation: number[], reference: ILatLonAlt): number[] {\n    const C: number[] = geoCoords.geodeticToEnu(\n        position.lat,\n        position.lon,\n        position.alt,\n        reference.lat,\n        reference.lon,\n        reference.alt);\n\n    const RC: THREE.Vector3 = spatial.rotate(C, rotation);\n    const translation: number[] = [-RC.x, -RC.y, -RC.z];\n\n    return translation;\n}\n",
+    "import * as THREE from \"three\";\n\nimport {\n    GeoCoords,\n    ILatLonAlt,\n    Spatial,\n    Transform,\n} from \"../Geo\";\nimport ViewportCoords from \"./ViewportCoords\";\n\nconst geoCoords: GeoCoords = new GeoCoords();\nconst spatial: Spatial = new Spatial();\n\nexport function computeTranslation(position: ILatLonAlt, rotation: number[], reference: ILatLonAlt): number[] {\n    const C: number[] = geoCoords.geodeticToEnu(\n        position.lat,\n        position.lon,\n        position.alt,\n        reference.lat,\n        reference.lon,\n        reference.alt);\n\n    const RC: THREE.Vector3 = spatial.rotate(C, rotation);\n    const translation: number[] = [-RC.x, -RC.y, -RC.z];\n\n    return translation;\n}\n\nexport function computeProjectedPoints(\n    transform: Transform,\n    basicVertices: number[][],\n    basicDirections: number[][],\n    pointsPerLine: number,\n    viewportCoords: ViewportCoords): number[][] {\n\n    const basicPoints: number[][] = [];\n\n    for (let side: number = 0; side < basicVertices.length; ++side) {\n        const v: number[] = basicVertices[side];\n        const d: number[] = basicDirections[side];\n\n        for (let i: number = 0; i <= pointsPerLine; ++i) {\n            basicPoints.push([v[0] + d[0] * i / pointsPerLine,\n                            v[1] + d[1] * i / pointsPerLine]);\n        }\n    }\n\n    const camera: THREE.Camera = new THREE.Camera();\n    camera.up.copy(transform.upVector());\n    camera.position.copy(new THREE.Vector3().fromArray(transform.unprojectSfM([0, 0], 0)));\n    camera.lookAt(new THREE.Vector3().fromArray(transform.unprojectSfM([0, 0], 10)));\n    camera.updateMatrix();\n    camera.updateMatrixWorld(true);\n\n    const projectedPoints: number[][] = basicPoints\n        .map(\n            (basicPoint: number[]): number[] => {\n                const worldPoint: number[] = transform.unprojectBasic(basicPoint, 10000);\n                const cameraPoint: number[] = viewportCoords.worldToCamera(worldPoint, camera);\n\n                return [\n                    Math.abs(cameraPoint[0] / cameraPoint[2]),\n                    Math.abs(cameraPoint[1] / cameraPoint[2]),\n                ];\n            });\n\n    return projectedPoints;\n}\n",
     "/**\n * @class GeoCoords\n *\n * @classdesc Converts coordinates between the geodetic (WGS84),\n * Earth-Centered, Earth-Fixed (ECEF) and local topocentric\n * East, North, Up (ENU) reference frames.\n *\n * The WGS84 has latitude (degrees), longitude (degrees) and\n * altitude (meters) values.\n *\n * The ECEF Z-axis pierces the north pole and the\n * XY-axis defines the equatorial plane. The X-axis extends\n * from the geocenter to the intersection of the Equator and\n * the Greenwich Meridian. All values in meters.\n *\n * The WGS84 parameters are:\n *\n * a = 6378137\n * b = a * (1 - f)\n * f = 1 / 298.257223563\n * e = Math.sqrt((a^2 - b^2) / a^2)\n * e' = Math.sqrt((a^2 - b^2) / b^2)\n *\n * The WGS84 to ECEF conversion is performed using the following:\n *\n * X = (N - h) * cos(phi) * cos(lambda)\n * Y = (N + h) * cos(phi) * sin(lambda)\n * Z = (b^2 * N / a^2 + h) * sin(phi)\n *\n * where\n *\n * phi = latitude\n * lambda = longitude\n * h = height above ellipsoid (altitude)\n * N = Radius of curvature (meters)\n *   = a / Math.sqrt(1 - e^2 * sin(phi)^2)\n *\n * The ECEF to WGS84 conversion is performed using the following:\n *\n * phi = arctan((Z + e'^2 * b * sin(theta)^3) / (p - e^2 * a * cos(theta)^3))\n * lambda = arctan(Y / X)\n * h = p / cos(phi) - N\n *\n * where\n *\n * p = Math.sqrt(X^2 + Y^2)\n * theta = arctan(Z * a / p * b)\n *\n * In the ENU reference frame the x-axis points to the\n * East, the y-axis to the North and the z-axis Up. All values\n * in meters.\n *\n * The ECEF to ENU conversion is performed using the following:\n *\n * | x |   |       -sin(lambda_r)                cos(lambda_r)             0      | | X - X_r |\n * | y | = | -sin(phi_r) * cos(lambda_r)  -sin(phi_r) * sin(lambda_r)  cos(phi_r) | | Y - Y_r |\n * | z |   |  cos(phi_r) * cos(lambda_r)   cos(phi_r) * sin(lambda_r)  sin(phi_r) | | Z - Z_r |\n *\n * where\n *\n * phi_r = latitude of reference\n * lambda_r = longitude of reference\n * X_r, Y_r, Z_r = ECEF coordinates of reference\n *\n * The ENU to ECEF conversion is performed by solving the above equation for X, Y, Z.\n *\n * WGS84 to ENU and ENU to WGS84 are two step conversions with ECEF calculated in\n * the first step for both conversions.\n */\nexport class GeoCoords {\n    private _wgs84a: number = 6378137.0;\n    private _wgs84b: number = 6356752.31424518;\n\n    /**\n     * Convert coordinates from geodetic (WGS84) reference to local topocentric\n     * (ENU) reference.\n     *\n     * @param {number} lat Latitude in degrees.\n     * @param {number} lon Longitude in degrees.\n     * @param {number} alt Altitude in meters.\n     * @param {number} refLat Reference latitude in degrees.\n     * @param {number} refLon Reference longitude in degrees.\n     * @param {number} refAlt Reference altitude in meters.\n     * @returns {Array<number>} The x, y, z local topocentric ENU coordinates.\n     */\n    public geodeticToEnu(\n        lat: number,\n        lon: number,\n        alt: number,\n        refLat: number,\n        refLon: number,\n        refAlt: number): number[] {\n\n        let ecef: number[] = this.geodeticToEcef(lat, lon, alt);\n\n        return this.ecefToEnu(ecef[0], ecef[1], ecef[2], refLat, refLon, refAlt);\n    }\n\n    /**\n     * Convert coordinates from local topocentric (ENU) reference to\n     * geodetic (WGS84) reference.\n     *\n     * @param {number} x Topocentric ENU coordinate in East direction.\n     * @param {number} y Topocentric ENU coordinate in North direction.\n     * @param {number} z Topocentric ENU coordinate in Up direction.\n     * @param {number} refLat Reference latitude in degrees.\n     * @param {number} refLon Reference longitude in degrees.\n     * @param {number} refAlt Reference altitude in meters.\n     * @returns {Array<number>} The latitude and longitude in degrees\n     *                          as well as altitude in meters.\n     */\n    public enuToGeodetic(\n        x: number,\n        y: number,\n        z: number,\n        refLat: number,\n        refLon: number,\n        refAlt: number): number[] {\n\n        let ecef: number[] = this.enuToEcef(x, y, z, refLat, refLon, refAlt);\n\n        return this.ecefToGeodetic(ecef[0], ecef[1], ecef[2]);\n    }\n\n    /**\n     * Convert coordinates from Earth-Centered, Earth-Fixed (ECEF) reference\n     * to local topocentric (ENU) reference.\n     *\n     * @param {number} X ECEF X-value.\n     * @param {number} Y ECEF Y-value.\n     * @param {number} Z ECEF Z-value.\n     * @param {number} refLat Reference latitude in degrees.\n     * @param {number} refLon Reference longitude in degrees.\n     * @param {number} refAlt Reference altitude in meters.\n     * @returns {Array<number>} The x, y, z topocentric ENU coordinates in East, North\n     * and Up directions respectively.\n     */\n    public ecefToEnu(\n        X: number,\n        Y: number,\n        Z: number,\n        refLat: number,\n        refLon: number,\n        refAlt: number): number[] {\n\n        let refEcef: number[] = this.geodeticToEcef(refLat, refLon, refAlt);\n\n        let V: number[] = [X - refEcef[0], Y - refEcef[1], Z - refEcef[2]];\n\n        refLat = refLat * Math.PI / 180.0;\n        refLon = refLon * Math.PI / 180.0;\n\n        let cosLat: number = Math.cos(refLat);\n        let sinLat: number = Math.sin(refLat);\n        let cosLon: number = Math.cos(refLon);\n        let sinLon: number = Math.sin(refLon);\n\n        let x: number = -sinLon * V[0] + cosLon * V[1];\n        let y: number = -sinLat * cosLon * V[0] - sinLat * sinLon * V[1] + cosLat * V[2];\n        let z: number = cosLat * cosLon * V[0] + cosLat * sinLon * V[1] + sinLat * V[2];\n\n        return [x, y, z];\n    }\n\n    /**\n     * Convert coordinates from local topocentric (ENU) reference\n     * to Earth-Centered, Earth-Fixed (ECEF) reference.\n     *\n     * @param {number} x Topocentric ENU coordinate in East direction.\n     * @param {number} y Topocentric ENU coordinate in North direction.\n     * @param {number} z Topocentric ENU coordinate in Up direction.\n     * @param {number} refLat Reference latitude in degrees.\n     * @param {number} refLon Reference longitude in degrees.\n     * @param {number} refAlt Reference altitude in meters.\n     * @returns {Array<number>} The X, Y, Z ECEF coordinates.\n     */\n    public enuToEcef(\n        x: number,\n        y: number,\n        z: number,\n        refLat: number,\n        refLon: number,\n        refAlt: number): number[] {\n\n        let refEcef: number[] = this.geodeticToEcef(refLat, refLon, refAlt);\n\n        refLat = refLat * Math.PI / 180.0;\n        refLon = refLon * Math.PI / 180.0;\n\n        let cosLat: number = Math.cos(refLat);\n        let sinLat: number = Math.sin(refLat);\n        let cosLon: number = Math.cos(refLon);\n        let sinLon: number = Math.sin(refLon);\n\n        let X: number = -sinLon * x - sinLat * cosLon * y + cosLat * cosLon * z + refEcef[0];\n        let Y: number = cosLon * x - sinLat * sinLon * y + cosLat * sinLon * z + refEcef[1];\n        let Z: number = cosLat * y + sinLat * z + refEcef[2];\n\n        return [X, Y, Z];\n    }\n\n    /**\n     * Convert coordinates from geodetic reference (WGS84) to Earth-Centered,\n     * Earth-Fixed (ECEF) reference.\n     *\n     * @param {number} lat Latitude in degrees.\n     * @param {number} lon Longitude in degrees.\n     * @param {number} alt Altitude in meters.\n     * @returns {Array<number>} The X, Y, Z ECEF coordinates.\n     */\n    public geodeticToEcef(lat: number, lon: number, alt: number): number[] {\n        let a: number = this._wgs84a;\n        let b: number = this._wgs84b;\n\n        lat = lat * Math.PI / 180.0;\n        lon = lon * Math.PI / 180.0;\n\n        let cosLat: number = Math.cos(lat);\n        let sinLat: number = Math.sin(lat);\n        let cosLon: number = Math.cos(lon);\n        let sinLon: number = Math.sin(lon);\n\n        let a2: number = a * a;\n        let b2: number = b * b;\n\n        let L: number = 1.0 / Math.sqrt(a2 * cosLat * cosLat + b2 * sinLat * sinLat);\n\n        let nhcl: number = (a2 * L + alt) * cosLat;\n\n        let X: number = nhcl * cosLon;\n        let Y: number = nhcl * sinLon;\n        let Z: number = (b2 * L + alt) * sinLat;\n\n        return [X, Y, Z];\n    }\n\n    /**\n     * Convert coordinates from Earth-Centered, Earth-Fixed (ECEF) reference\n     * to geodetic reference (WGS84).\n     *\n     * @param {number} X ECEF X-value.\n     * @param {number} Y ECEF Y-value.\n     * @param {number} Z ECEF Z-value.\n     * @returns {Array<number>} The latitude and longitude in degrees\n     *                          as well as altitude in meters.\n     */\n    public ecefToGeodetic(X: number, Y: number, Z: number): number[] {\n        let a: number = this._wgs84a;\n        let b: number = this._wgs84b;\n\n        let a2: number = a * a;\n        let b2: number = b * b;\n\n        let a2mb2: number = a2 - b2;\n\n        let ea: number = Math.sqrt(a2mb2 / a2);\n        let eb: number = Math.sqrt(a2mb2 / b2);\n\n        let p: number = Math.sqrt(X * X + Y * Y);\n        let theta: number = Math.atan2(Z * a, p * b);\n\n        let sinTheta: number = Math.sin(theta);\n        let cosTheta: number = Math.cos(theta);\n\n        let lon: number = Math.atan2(Y, X);\n        let lat: number =\n            Math.atan2(Z + eb * eb * b * sinTheta * sinTheta * sinTheta,\n                       p - ea * ea * a * cosTheta * cosTheta * cosTheta);\n\n        let sinLat: number = Math.sin(lat);\n        let cosLat: number = Math.cos(lat);\n\n        let N: number = a / Math.sqrt(1 - ea * ea * sinLat * sinLat);\n        let alt: number = p / cosLat - N;\n\n        return [lat * 180.0 / Math.PI, lon * 180.0 / Math.PI, alt];\n    }\n}\n\nexport default GeoCoords;\n",
     "export type Point = { x: number, y: number };\n\nexport type Segment = { p1: Point, p2: Point };\n\nfunction sign(n: number): number {\n    return n > 0 ? 1 : n < 0 ? -1 : 0;\n}\n\nfunction colinearPointOnSegment(p: Point, s: Segment): boolean {\n    return p.x <= Math.max(s.p1.x, s.p2.x) &&\n        p.x >= Math.min(s.p1.x, s.p2.x) &&\n        p.y >= Math.max(s.p1.y, s.p2.y) &&\n        p.y >= Math.min(s.p1.y, s.p2.y);\n}\n\nfunction parallel(s1: Segment, s2: Segment): boolean {\n    const ux: number = s1.p2.x - s1.p1.x;\n    const uy: number = s1.p2.y - s1.p1.y;\n    const vx: number = s2.p2.x - s2.p1.x;\n    const vy: number = s2.p2.y - s2.p1.y;\n\n    const cross: number = ux * vy - uy * vx;\n    const u2: number = ux * ux + uy * uy;\n    const v2: number = vx * vx + vy * vy;\n\n    const epsilon2: number = 1e-10;\n\n    return cross * cross < epsilon2 * u2 * v2;\n}\n\nfunction tripletOrientation(p1: Point, p2: Point, p3: Point): number {\n    const orientation: number =\n        (p2.y - p1.y) * (p3.x - p2.x) -\n        (p3.y - p2.y) * (p2.x - p1.x);\n\n    return sign(orientation);\n}\n\nexport function segmentsIntersect(s1: Segment, s2: Segment): boolean {\n    if (parallel(s1, s2)) {\n        return false;\n    }\n\n    const o1: number = tripletOrientation(s1.p1, s1.p2, s2.p1);\n    const o2: number = tripletOrientation(s1.p1, s1.p2, s2.p2);\n    const o3: number = tripletOrientation(s2.p1, s2.p2, s1.p1);\n    const o4: number = tripletOrientation(s2.p1, s2.p2, s1.p2);\n\n    if (o1 !== o2 && o3 !== o4) {\n        return true;\n    }\n\n    if (o1 === 0 && colinearPointOnSegment(s2.p1, s1)) {\n        return true;\n    }\n\n    if (o2 === 0 && colinearPointOnSegment(s2.p2, s1)) {\n        return true;\n    }\n\n    if (o3 === 0 && colinearPointOnSegment(s1.p1, s2)) {\n        return true;\n    }\n\n    if (o4 === 0 && colinearPointOnSegment(s1.p2, s2)) {\n        return true;\n    }\n\n    return false;\n}\n\nexport function segmentIntersection(s1: Segment, s2: Segment): Point {\n    if (parallel(s1, s2)) {\n        return undefined;\n    }\n\n    const x1: number = s1.p1.x;\n    const x2: number = s1.p2.x;\n    const y1: number = s1.p1.y;\n    const y2: number = s1.p2.y;\n\n    const x3: number = s2.p1.x;\n    const x4: number = s2.p2.x;\n    const y3: number = s2.p1.y;\n    const y4: number = s2.p2.y;\n\n    const den: number = (x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4);\n    const xNum: number = (x1 * y2 - y1 * x2) * (x3 - x4) - (x1 - x2) * (x3 * y4 - y3 * x4);\n    const yNum: number = (x1 * y2 - y1 * x2) * (y3 - y4) - (y1 - y2) * (x3 * y4 - y3 * x4);\n\n    return { x: xNum / den, y: yNum / den };\n}\n",
-    "import * as THREE from \"three\";\n\n/**\n * @class Spatial\n *\n * @classdesc Provides methods for scalar, vector and matrix calculations.\n */\nexport class Spatial {\n    private _epsilon: number = 1e-9;\n\n    /**\n     * Converts azimuthal phi rotation (counter-clockwise with origin on X-axis) to\n     * bearing (clockwise with origin at north or Y-axis).\n     *\n     * @param {number} phi - Azimuthal phi angle in radians.\n     * @returns {number} Bearing in radians.\n     */\n    public azimuthalToBearing(phi: number): number {\n         return -phi + Math.PI / 2;\n    }\n\n    /**\n     * Converts degrees to radians.\n     *\n     * @param {number} deg - Degrees.\n     * @returns {number} Radians.\n     */\n    public degToRad(deg: number): number {\n        return Math.PI * deg / 180;\n    }\n\n    /**\n     * Converts radians to degrees.\n     *\n     * @param {number} rad - Radians.\n     * @returns {number} Degrees.\n     */\n    public radToDeg(rad: number): number {\n        return 180 * rad / Math.PI;\n    }\n\n    /**\n     * Creates a rotation matrix from an angle-axis vector.\n     *\n     * @param {Array<number>} angleAxis - Angle-axis representation of a rotation.\n     * @returns {THREE.Matrix4} Rotation matrix.\n     */\n    public rotationMatrix(angleAxis: number[]): THREE.Matrix4 {\n        let axis: THREE.Vector3 =\n            new THREE.Vector3(angleAxis[0], angleAxis[1], angleAxis[2]);\n        let angle: number = axis.length();\n        if (angle > 0) {\n            axis.normalize();\n        }\n\n        return new THREE.Matrix4().makeRotationAxis(axis, angle);\n    }\n\n    /**\n     * Rotates a vector according to a angle-axis rotation vector.\n     *\n     * @param {Array<number>} vector - Vector to rotate.\n     * @param {Array<number>} angleAxis - Angle-axis representation of a rotation.\n     * @returns {THREE.Vector3} Rotated vector.\n     */\n    public rotate(vector: number[], angleAxis: number[]): THREE.Vector3 {\n        let v: THREE.Vector3 = new THREE.Vector3(vector[0], vector[1], vector[2]);\n        let rotationMatrix: THREE.Matrix4 = this.rotationMatrix(angleAxis);\n        v.applyMatrix4(rotationMatrix);\n\n        return v;\n    }\n\n    /**\n     * Calculates the optical center from a rotation vector\n     * on the angle-axis representation and a translation vector\n     * according to C = -R^T t.\n     *\n     * @param {Array<number>} rotation - Angle-axis representation of a rotation.\n     * @param {Array<number>} translation - Translation vector.\n     * @returns {THREE.Vector3} Optical center.\n     */\n    public opticalCenter(rotation: number[], translation: number[]): THREE.Vector3 {\n        let angleAxis: number[] = [-rotation[0], -rotation[1], -rotation[2]];\n        let vector: number[] = [-translation[0], -translation[1], -translation[2]];\n\n        return this.rotate(vector, angleAxis);\n    }\n\n    /**\n     * Calculates the viewing direction from a rotation vector\n     * on the angle-axis representation.\n     *\n     * @param {number[]} rotation - Angle-axis representation of a rotation.\n     * @returns {THREE.Vector3} Viewing direction.\n     */\n    public viewingDirection(rotation: number[]): THREE.Vector3 {\n        let angleAxis: number[] = [-rotation[0], -rotation[1], -rotation[2]];\n\n        return this.rotate([0, 0, 1], angleAxis);\n    }\n\n    /**\n     * Wrap a number on the interval [min, max].\n     *\n     * @param {number} value - Value to wrap.\n     * @param {number} min - Lower endpoint of interval.\n     * @param {number} max - Upper endpoint of interval.\n     * @returns {number} The wrapped number.\n     */\n    public wrap(value: number, min: number, max: number): number {\n        if (max < min) {\n            throw new Error(\"Invalid arguments: max must be larger than min.\");\n        }\n\n        let interval: number = (max - min);\n\n        while (value > max || value < min) {\n            if (value > max) {\n                value = value - interval;\n            } else if (value < min) {\n                value = value + interval;\n            }\n        }\n\n        return value;\n    }\n\n    /**\n     * Wrap an angle on the interval [-Pi, Pi].\n     *\n     * @param {number} angle - Value to wrap.\n     * @returns {number} Wrapped angle.\n     */\n    public wrapAngle(angle: number): number {\n        return this.wrap(angle, -Math.PI, Math.PI);\n    }\n\n    /**\n     * Limit the value to the interval [min, max] by changing the value to\n     * the nearest available one when it is outside the interval.\n     *\n     * @param {number} value - Value to clamp.\n     * @param {number} min - Minimum of the interval.\n     * @param {number} max - Maximum of the interval.\n     * @returns {number} Clamped value.\n     */\n    public clamp(value: number, min: number, max: number): number {\n        if (value < min) {\n            return min;\n        }\n\n        if (value > max) {\n            return max;\n        }\n\n        return value;\n    }\n\n    /**\n     * Calculates the counter-clockwise angle from the first\n     * vector (x1, y1)^T to the second (x2, y2)^T.\n     *\n     * @param {number} x1 - X coordinate of first vector.\n     * @param {number} y1 - Y coordinate of first vector.\n     * @param {number} x2 - X coordinate of second vector.\n     * @param {number} y2 - Y coordinate of second vector.\n     * @returns {number} Counter clockwise angle between the vectors.\n     */\n    public angleBetweenVector2(x1: number, y1: number, x2: number, y2: number): number {\n        let angle: number = Math.atan2(y2, x2) - Math.atan2(y1, x1);\n\n        return this.wrapAngle(angle);\n    }\n\n    /**\n     * Calculates the minimum (absolute) angle change for rotation\n     * from one angle to another on the [-Pi, Pi] interval.\n     *\n     * @param {number} angle1 - Start angle.\n     * @param {number} angle2 - Destination angle.\n     * @returns {number} Absolute angle change between angles.\n     */\n    public angleDifference(angle1: number, angle2: number): number {\n        let angle: number = angle2 - angle1;\n\n        return this.wrapAngle(angle);\n    }\n\n    /**\n     * Calculates the relative rotation angle between two\n     * angle-axis vectors.\n     *\n     * @param {number} rotation1 - First angle-axis vector.\n     * @param {number} rotation2 - Second angle-axis vector.\n     * @returns {number} Relative rotation angle.\n     */\n    public relativeRotationAngle(rotation1: number[], rotation2: number[]): number {\n        let R1T: THREE.Matrix4 = this.rotationMatrix(\n            [-rotation1[0], -rotation1[1], -rotation1[2]]);\n        let R2: THREE.Matrix4 = this.rotationMatrix(rotation2);\n\n        let R: THREE.Matrix4 = R1T.multiply(R2);\n        let elements: Float32Array = R.elements;\n\n        // from Tr(R) = 1 + 2 * cos(theta)\n        let tr: number = elements[0] + elements[5] + elements[10];\n        let theta: number = Math.acos(Math.max(Math.min((tr - 1) / 2, 1), -1));\n\n        return theta;\n    }\n\n    /**\n     * Calculates the angle from a vector to a plane.\n     *\n     * @param {Array<number>} vector - The vector.\n     * @param {Array<number>} planeNormal - Normal of the plane.\n     * @returns {number} Angle from between plane and vector.\n     */\n    public angleToPlane(vector: number[], planeNormal: number[]): number {\n        let v: THREE.Vector3 = new THREE.Vector3().fromArray(vector);\n        let norm: number = v.length();\n\n        if (norm < this._epsilon) {\n            return 0;\n        }\n\n        let projection: number = v.dot(new THREE.Vector3().fromArray(planeNormal));\n\n        return Math.asin(projection / norm);\n    }\n\n    /**\n     * Calculates the distance between two coordinates\n     * (latitude longitude pairs) in meters according to\n     * the haversine formula.\n     *\n     * @param {number} lat1 - Latitude of the first coordinate in degrees.\n     * @param {number} lon1 - Longitude of the first coordinate in degrees.\n     * @param {number} lat2 - Latitude of the second coordinate in degrees.\n     * @param {number} lon2 - Longitude of the second coordinate in degrees.\n     * @returns {number} Distance between lat lon positions in meters.\n     */\n    public distanceFromLatLon(lat1: number, lon1: number, lat2: number, lon2: number): number {\n        let r: number = 6371000;\n        let dLat: number = this.degToRad(lat2 - lat1);\n        let dLon: number = this.degToRad(lon2 - lon1);\n\n        let hav: number =\n            Math.sin(dLat / 2) * Math.sin(dLat / 2) +\n            Math.cos(this.degToRad(lat1)) * Math.cos(this.degToRad(lat2)) *\n            Math.sin(dLon / 2) * Math.sin(dLon / 2);\n\n        let d: number = 2 * r * Math.atan2(Math.sqrt(hav), Math.sqrt(1 - hav));\n\n        return d;\n    }\n}\n\nexport default Spatial;\n",
-    "import * as THREE from \"three\";\n\nimport {IGPano} from \"../API\";\n\n/**\n * @class Transform\n *\n * @classdesc Class used for calculating coordinate transformations\n * and projections.\n */\nexport class Transform {\n    private _width: number;\n    private _height: number;\n    private _focal: number;\n    private _orientation: number;\n    private _scale: number;\n    private _basicWidth: number;\n    private _basicHeight: number;\n    private _basicAspect: number;\n\n    private _gpano: IGPano;\n\n    private _rt: THREE.Matrix4;\n    private _srt: THREE.Matrix4;\n\n    private _basicRt: THREE.Matrix4;\n\n    private _textureScale: number[];\n\n    private _ck1: number;\n    private _ck2: number;\n\n    private _radialPeak: number;\n\n    /**\n     * Create a new transform instance.\n     * @param {number} orientation - Image orientation.\n     * @param {number} width - Image height.\n     * @param {number} height - Image width.\n     * @param {number} focal - Focal length.\n     * @param {number} scale - Atomic scale.\n     * @param {IGPano} gpano - Panorama properties.\n     * @param {Array<number>} rotation - Rotation vector in three dimensions.\n     * @param {Array<number>} translation - Translation vector in three dimensions.\n     * @param {HTMLImageElement} image - Image for fallback size calculations.\n     */\n    constructor(\n        orientation: number,\n        width: number,\n        height: number,\n        focal: number,\n        scale: number,\n        gpano: IGPano,\n        rotation: number[],\n        translation: number[],\n        image: HTMLImageElement,\n        textureScale?: number[],\n        ck1?: number,\n        ck2?: number) {\n\n        this._orientation = this._getValue(orientation, 1);\n\n        let imageWidth: number = image != null ? image.width : 4;\n        let imageHeight: number = image != null ? image.height : 3;\n        let keepOrientation: boolean = this._orientation < 5;\n\n        this._width = this._getValue(width, keepOrientation ? imageWidth : imageHeight);\n        this._height = this._getValue(height, keepOrientation ? imageHeight : imageWidth);\n\n        this._basicAspect = keepOrientation ?\n             this._width / this._height :\n             this._height / this._width;\n\n        this._basicWidth = keepOrientation ? width : height;\n        this._basicHeight = keepOrientation ? height : width;\n\n        this._focal = this._getValue(focal, 1);\n        this._scale = this._getValue(scale, 0);\n\n        this._gpano = gpano != null ? gpano : null;\n\n        this._rt = this._getRt(rotation, translation);\n        this._srt = this._getSrt(this._rt, this._scale);\n\n        this._basicRt = this._getBasicRt(this._rt, orientation);\n\n        this._textureScale = !!textureScale ? textureScale : [1, 1];\n\n        this._ck1 = !!ck1 ? ck1 : 0;\n        this._ck2 = !!ck2 ? ck2 : 0;\n\n        this._radialPeak = this._getRadialPeak(this._ck1, this._ck2);\n    }\n\n    public get ck1(): number {\n        return this._ck1;\n    }\n\n    public get ck2(): number {\n        return this._ck2;\n    }\n\n    /**\n     * Get basic aspect.\n     * @returns {number} The orientation adjusted aspect ratio.\n     */\n    public get basicAspect(): number {\n        return this._basicAspect;\n    }\n\n    /**\n     * Get basic height.\n     *\n     * @description Does not fall back to node image height but\n     * uses original value from API so can be faulty.\n     *\n     * @returns {number} The height of the basic version image\n     * (adjusted for orientation).\n     */\n    public get basicHeight(): number {\n        return this._basicHeight;\n    }\n\n    public get basicRt(): THREE.Matrix4 {\n        return this._basicRt;\n    }\n\n    /**\n     * Get basic width.\n     *\n     * @description Does not fall back to node image width but\n     * uses original value from API so can be faulty.\n     *\n     * @returns {number} The width of the basic version image\n     * (adjusted for orientation).\n     */\n    public get basicWidth(): number {\n        return this._basicWidth;\n    }\n\n    /**\n     * Get focal.\n     * @returns {number} The node focal length.\n     */\n    public get focal(): number {\n        return this._focal;\n    }\n\n    /**\n     * Get fullPano.\n     *\n     * @returns {boolean} Value indicating whether the node is a complete\n     * 360 panorama.\n     */\n    public get fullPano(): boolean {\n        return this._gpano != null &&\n            this._gpano.CroppedAreaLeftPixels === 0 &&\n            this._gpano.CroppedAreaTopPixels === 0 &&\n            this._gpano.CroppedAreaImageWidthPixels === this._gpano.FullPanoWidthPixels &&\n            this._gpano.CroppedAreaImageHeightPixels === this._gpano.FullPanoHeightPixels;\n    }\n\n    /**\n     * Get gpano.\n     * @returns {number} The node gpano information.\n     */\n    public get gpano(): IGPano {\n        return this._gpano;\n    }\n\n    /**\n     * Get height.\n     *\n     * @description Falls back to the node image height if\n     * the API data is faulty.\n     *\n     * @returns {number} The orientation adjusted image height.\n     */\n    public get height(): number {\n        return this._height;\n    }\n\n    /**\n     * Get orientation.\n     * @returns {number} The image orientation.\n     */\n    public get orientation(): number {\n        return this._orientation;\n    }\n\n    /**\n     * Get rt.\n     * @returns {THREE.Matrix4} The extrinsic camera matrix.\n     */\n    public get rt(): THREE.Matrix4 {\n        return this._rt;\n    }\n\n    /**\n     * Get srt.\n     * @returns {THREE.Matrix4} The scaled extrinsic camera matrix.\n     */\n    public get srt(): THREE.Matrix4 {\n        return this._srt;\n    }\n\n    /**\n     * Get scale.\n     * @returns {number} The node atomic reconstruction scale.\n     */\n    public get scale(): number {\n        return this._scale;\n    }\n\n    /**\n     * Get has valid scale.\n     * @returns {boolean} Value indicating if the scale of the transform is valid.\n     */\n    public get hasValidScale(): boolean {\n        return this._scale > 1e-2 && this._scale < 50;\n    }\n\n    /**\n     * Get radial peak.\n     * @returns {number} Value indicating the radius where the radial\n     * undistortion function peaks.\n     */\n    public get radialPeak(): number {\n        return this._radialPeak;\n    }\n\n    /**\n     * Get width.\n     *\n     * @description Falls back to the node image width if\n     * the API data is faulty.\n     *\n     * @returns {number} The orientation adjusted image width.\n     */\n    public get width(): number {\n        return this._width;\n    }\n\n    /**\n     * Calculate the up vector for the node transform.\n     *\n     * @returns {THREE.Vector3} Normalized and orientation adjusted up vector.\n     */\n    public upVector(): THREE.Vector3 {\n        let rte: Float32Array = this._rt.elements;\n\n        switch (this._orientation) {\n            case 1:\n                return new THREE.Vector3(-rte[1], -rte[5], -rte[9]);\n            case 3:\n                return new THREE.Vector3(rte[1],  rte[5],  rte[9]);\n            case 6:\n                return new THREE.Vector3(-rte[0], -rte[4], -rte[8]);\n            case 8:\n                return new THREE.Vector3(rte[0],  rte[4],  rte[8]);\n            default:\n                return new THREE.Vector3(-rte[1], -rte[5], -rte[9]);\n        }\n    }\n\n    /**\n     * Calculate projector matrix for projecting 3D points to texture map\n     * coordinates (u and v).\n     *\n     * @returns {THREE.Matrix4} Projection matrix for 3D point to texture\n     * map coordinate calculations.\n     */\n    public projectorMatrix(): THREE.Matrix4 {\n        let projector: THREE.Matrix4 = this._normalizedToTextureMatrix();\n\n        let f: number = this._focal;\n        let projection: THREE.Matrix4 = new THREE.Matrix4().set(\n            f, 0, 0, 0,\n            0, f, 0, 0,\n            0, 0, 0, 0,\n            0, 0, 1, 0);\n\n        projector.multiply(projection);\n        projector.multiply(this._rt);\n\n        return projector;\n    }\n\n    /**\n     * Project 3D world coordinates to basic coordinates.\n     *\n     * @param {Array<number>} point3d - 3D world coordinates.\n     * @return {Array<number>} 2D basic coordinates.\n     */\n    public projectBasic(point3d: number[]): number[] {\n        let sfm: number[] = this.projectSfM(point3d);\n        return this._sfmToBasic(sfm);\n    }\n\n    /**\n     * Unproject basic coordinates to 3D world coordinates.\n     *\n     * @param {Array<number>} basic - 2D basic coordinates.\n     * @param {Array<number>} distance - Distance to unproject from camera center.\n     * @param {boolean} [depth] - Treat the distance value as depth from camera center.\n     *                            Only applicable for perspective images. Will be\n     *                            ignored for panoramas.\n     * @returns {Array<number>} Unprojected 3D world coordinates.\n     */\n    public unprojectBasic(basic: number[], distance: number, depth?: boolean): number[] {\n        let sfm: number[] = this._basicToSfm(basic);\n        return this.unprojectSfM(sfm, distance, depth);\n    }\n\n    /**\n     * Project 3D world coordinates to SfM coordinates.\n     *\n     * @param {Array<number>} point3d - 3D world coordinates.\n     * @return {Array<number>} 2D SfM coordinates.\n     */\n    public projectSfM(point3d: number[]): number[] {\n        let v: THREE.Vector4 = new THREE.Vector4(point3d[0], point3d[1], point3d[2], 1);\n        v.applyMatrix4(this._rt);\n        return this._bearingToSfm([v.x, v.y, v.z]);\n    }\n\n    /**\n     * Unproject SfM coordinates to a 3D world coordinates.\n     *\n     * @param {Array<number>} sfm - 2D SfM coordinates.\n     * @param {Array<number>} distance - Distance to unproject from camera center.\n     * @param {boolean} [depth] - Treat the distance value as depth from camera center.\n     *                            Only applicable for perspective images. Will be\n     *                            ignored for panoramas.\n     * @returns {Array<number>} Unprojected 3D world coordinates.\n     */\n    public unprojectSfM(sfm: number[], distance: number, depth?: boolean): number[] {\n        let bearing: number[] = this._sfmToBearing(sfm);\n\n        const v: THREE.Vector4 = depth && !this.gpano ?\n            new THREE.Vector4(\n                distance * bearing[0] / bearing[2],\n                distance * bearing[1] / bearing[2],\n                distance,\n                1) :\n            new THREE.Vector4(\n                distance * bearing[0],\n                distance * bearing[1],\n                distance * bearing[2],\n                1);\n\n        v.applyMatrix4(new THREE.Matrix4().getInverse(this._rt));\n        return [v.x / v.w, v.y / v.w, v.z / v.w];\n    }\n\n    /**\n     * Transform SfM coordinates to bearing vector (3D cartesian\n     * coordinates on the unit sphere).\n     *\n     * @param {Array<number>} sfm - 2D SfM coordinates.\n     * @returns {Array<number>} Bearing vector (3D cartesian coordinates\n     * on the unit sphere).\n     */\n    private _sfmToBearing(sfm: number[]): number[] {\n        if (this._fullPano()) {\n            let lon: number = sfm[0] * 2 * Math.PI;\n            let lat: number = -sfm[1] * 2 * Math.PI;\n            let x: number = Math.cos(lat) * Math.sin(lon);\n            let y: number = -Math.sin(lat);\n            let z: number = Math.cos(lat) * Math.cos(lon);\n            return [x, y, z];\n        } else if (this._gpano) {\n            let size: number = Math.max(this.gpano.CroppedAreaImageWidthPixels, this.gpano.CroppedAreaImageHeightPixels);\n            let fullPanoPixel: number[] = [\n                sfm[0] * size + this.gpano.CroppedAreaImageWidthPixels / 2 + this.gpano.CroppedAreaLeftPixels,\n                sfm[1] * size + this.gpano.CroppedAreaImageHeightPixels / 2 + this.gpano.CroppedAreaTopPixels,\n            ];\n            let lon: number = 2 * Math.PI * (fullPanoPixel[0] / this.gpano.FullPanoWidthPixels - 0.5);\n            let lat: number = - Math.PI * (fullPanoPixel[1] / this.gpano.FullPanoHeightPixels - 0.5);\n            let x: number = Math.cos(lat) * Math.sin(lon);\n            let y: number = -Math.sin(lat);\n            let z: number = Math.cos(lat) * Math.cos(lon);\n            return [x, y, z];\n        } else {\n            let [dxn, dyn]: number[] = [sfm[0] / this._focal, sfm[1] / this._focal];\n            const rp: number = this._radialPeak;\n            const dr: number = Math.sqrt(dxn * dxn + dyn * dyn);\n            let d: number = 1.0;\n\n            for (let i: number = 0; i < 10; i++) {\n                let r: number = dr / d;\n\n                if (r > rp) {\n                    r = rp;\n                }\n\n                d = 1 + this._ck1 * r ** 2 + this._ck2 * r ** 4;\n            }\n\n            const xn: number = dxn / d;\n            const yn: number = dyn / d;\n\n            let v: THREE.Vector3 = new THREE.Vector3(xn, yn, 1);\n            v.normalize();\n            return [v.x, v.y, v.z];\n        }\n    }\n\n    /**\n     * Transform bearing vector (3D cartesian coordiantes on the unit sphere) to\n     * SfM coordinates.\n     *\n     * @param {Array<number>} bearing - Bearing vector (3D cartesian coordinates on the\n     * unit sphere).\n     * @returns {Array<number>} 2D SfM coordinates.\n     */\n    private _bearingToSfm(bearing: number[]): number[] {\n        if (this._fullPano()) {\n            let x: number = bearing[0];\n            let y: number = bearing[1];\n            let z: number = bearing[2];\n            let lon: number = Math.atan2(x, z);\n            let lat: number = Math.atan2(-y, Math.sqrt(x * x + z * z));\n            return [lon / (2 * Math.PI), -lat / (2 * Math.PI)];\n        } else if (this._gpano) {\n            let x: number = bearing[0];\n            let y: number = bearing[1];\n            let z: number = bearing[2];\n            let lon: number = Math.atan2(x, z);\n            let lat: number = Math.atan2(-y, Math.sqrt(x * x + z * z));\n            let fullPanoPixel: number[] = [\n                (lon / (2 * Math.PI) + 0.5) * this.gpano.FullPanoWidthPixels,\n                (- lat / Math.PI + 0.5) * this.gpano.FullPanoHeightPixels,\n            ];\n            let size: number = Math.max(this.gpano.CroppedAreaImageWidthPixels, this.gpano.CroppedAreaImageHeightPixels);\n            return [\n                (fullPanoPixel[0] - this.gpano.CroppedAreaLeftPixels - this.gpano.CroppedAreaImageWidthPixels / 2) / size,\n                (fullPanoPixel[1] - this.gpano.CroppedAreaTopPixels - this.gpano.CroppedAreaImageHeightPixels / 2) / size,\n            ];\n        } else {\n            if (bearing[2] > 0) {\n                let [xn, yn]: number[] = [bearing[0] / bearing[2], bearing[1] / bearing[2]];\n                let r2: number = xn * xn + yn * yn;\n                const rp2: number = this._radialPeak ** 2;\n\n                if (r2 > rp2) {\n                    r2 = rp2;\n                }\n\n                const d: number = 1 + this._ck1 * r2 + this._ck2 * r2 ** 2;\n                return [\n                    this._focal * d * xn,\n                    this._focal * d * yn,\n                ];\n            } else {\n                return [\n                    bearing[0] < 0 ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY,\n                    bearing[1] < 0 ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY,\n                ];\n            }\n        }\n    }\n\n    /**\n     * Convert basic coordinates to SfM coordinates.\n     *\n     * @param {Array<number>} basic - 2D basic coordinates.\n     * @returns {Array<number>} 2D SfM coordinates.\n     */\n    private _basicToSfm(basic: number[]): number[] {\n        let rotatedX: number;\n        let rotatedY: number;\n\n        switch (this._orientation) {\n            case 1:\n                rotatedX = basic[0];\n                rotatedY = basic[1];\n                break;\n            case 3:\n                rotatedX = 1 - basic[0];\n                rotatedY = 1 - basic[1];\n                break;\n            case 6:\n                rotatedX = basic[1];\n                rotatedY = 1 - basic[0];\n                break;\n            case 8:\n                rotatedX = 1 - basic[1];\n                rotatedY = basic[0];\n                break;\n            default:\n                rotatedX = basic[0];\n                rotatedY = basic[1];\n                break;\n        }\n\n        let w: number = this._width;\n        let h: number = this._height;\n        let s: number = Math.max(w, h);\n        let sfmX: number = rotatedX * w / s - w / s / 2;\n        let sfmY: number = rotatedY * h / s - h / s / 2;\n\n        return [sfmX, sfmY];\n    }\n\n    /**\n     * Convert SfM coordinates to basic coordinates.\n     *\n     * @param {Array<number>} sfm - 2D SfM coordinates.\n     * @returns {Array<number>} 2D basic coordinates.\n     */\n    private _sfmToBasic(sfm: number[]): number[] {\n        let w: number = this._width;\n        let h: number = this._height;\n        let s: number = Math.max(w, h);\n        let rotatedX: number = (sfm[0] + w / s / 2) / w * s;\n        let rotatedY: number = (sfm[1] + h / s / 2) / h * s;\n\n        let basicX: number;\n        let basicY: number;\n\n        switch (this._orientation) {\n            case 1:\n                basicX = rotatedX;\n                basicY = rotatedY;\n                break;\n            case 3:\n                basicX = 1 - rotatedX;\n                basicY = 1 - rotatedY;\n                break;\n            case 6:\n                basicX = 1 - rotatedY;\n                basicY = rotatedX;\n                break;\n            case 8:\n                basicX = rotatedY;\n                basicY = 1 - rotatedX;\n                break;\n            default:\n                basicX = rotatedX;\n                basicY = rotatedY;\n                break;\n        }\n\n        return [basicX, basicY];\n    }\n\n    /**\n     * Determines if the gpano information indicates a full panorama.\n     *\n     * @returns {boolean} Value determining if the gpano information indicates\n     * a full panorama.\n     */\n    private _fullPano(): boolean {\n        return this.gpano != null &&\n            this.gpano.CroppedAreaLeftPixels === 0 &&\n            this.gpano.CroppedAreaTopPixels === 0 &&\n            this.gpano.CroppedAreaImageWidthPixels === this.gpano.FullPanoWidthPixels &&\n            this.gpano.CroppedAreaImageHeightPixels === this.gpano.FullPanoHeightPixels;\n    }\n\n    /**\n     * Checks a value and returns it if it exists and is larger than 0.\n     * Fallbacks if it is null.\n     *\n     * @param {number} value - Value to check.\n     * @param {number} fallback - Value to fall back to.\n     * @returns {number} The value or its fallback value if it is not defined or negative.\n     */\n    private _getValue(value: number, fallback: number): number {\n        return value != null && value > 0 ? value : fallback;\n    }\n\n    /**\n     * Creates the extrinsic camera matrix [ R | t ].\n     *\n     * @param {Array<number>} rotation - Rotation vector in angle axis representation.\n     * @param {Array<number>} translation - Translation vector.\n     * @returns {THREE.Matrix4} Extrisic camera matrix.\n     */\n    private _getRt(rotation: number[], translation: number[]): THREE.Matrix4 {\n        let axis: THREE.Vector3 = new THREE.Vector3(rotation[0], rotation[1], rotation[2]);\n        let angle: number = axis.length();\n        if (angle > 0) {\n            axis.normalize();\n        }\n\n        let rt: THREE.Matrix4 = new THREE.Matrix4();\n        rt.makeRotationAxis(axis, angle);\n        rt.setPosition(\n            new THREE.Vector3(\n                translation[0],\n                translation[1],\n                translation[2]));\n\n        return rt;\n    }\n\n    /**\n     * Calculates the scaled extrinsic camera matrix scale * [ R | t ].\n     *\n     * @param {THREE.Matrix4} rt - Extrisic camera matrix.\n     * @param {number} scale - Scale factor.\n     * @returns {THREE.Matrix4} Scaled extrisic camera matrix.\n     */\n    private _getSrt(rt: THREE.Matrix4, scale: number): THREE.Matrix4 {\n        let srt: THREE.Matrix4 = rt.clone();\n        let elements: Float32Array = srt.elements;\n\n        elements[12] = scale * elements[12];\n        elements[13] = scale * elements[13];\n        elements[14] = scale * elements[14];\n\n        srt.scale(new THREE.Vector3(scale, scale, scale));\n\n        return srt;\n    }\n\n    private _getBasicRt(rt: THREE.Matrix4, orientation: number): THREE.Matrix4 {\n        const axis: THREE.Vector3 = new THREE.Vector3(0, 0, 1);\n        let angle: number = 0;\n\n        switch (orientation) {\n            case 3:\n                angle = Math.PI;\n                break;\n            case 6:\n                angle = Math.PI / 2;\n                break;\n            case 8:\n                angle = 3 * Math.PI / 2;\n                break;\n            default:\n                break;\n        }\n\n        return new THREE.Matrix4()\n            .makeRotationAxis(axis, angle)\n            .multiply(rt);\n    }\n\n    private _getRadialPeak(k1: number, k2: number): number {\n        const a: number = 5 * k2;\n        const b: number = 3 * k1;\n        const c: number = 1;\n        const d: number = b ** 2 - 4 * a * c;\n\n        if (d < 0) {\n            return undefined;\n        }\n\n        const root1: number = (-b - Math.sqrt(d)) / 2 / a;\n        const root2: number = (-b + Math.sqrt(d)) / 2 / a;\n\n        const minRoot: number = Math.min(root1, root2);\n        const maxRoot: number = Math.max(root1, root2);\n\n        return minRoot > 0 ?\n            Math.sqrt(minRoot) :\n            maxRoot > 0 ?\n                Math.sqrt(maxRoot) :\n                undefined;\n    }\n\n    /**\n     * Calculate a transformation matrix from normalized coordinates for\n     * texture map coordinates.\n     *\n     * @returns {THREE.Matrix4} Normalized coordinates to texture map\n     * coordinates transformation matrix.\n     */\n    private _normalizedToTextureMatrix(): THREE.Matrix4 {\n        const size: number = Math.max(this._width, this._height);\n\n        const scaleX: number = this._orientation < 5 ? this._textureScale[0] : this._textureScale[1];\n        const scaleY: number = this._orientation < 5 ? this._textureScale[1] : this._textureScale[0];\n\n        const w: number = size / this._width * scaleX;\n        const h: number = size / this._height * scaleY;\n\n        switch (this._orientation) {\n            case 1:\n                return new THREE.Matrix4().set(w, 0, 0, 0.5, 0, -h, 0, 0.5, 0, 0, 1, 0, 0, 0, 0, 1);\n            case 3:\n                return new THREE.Matrix4().set(-w, 0, 0, 0.5, 0, h, 0, 0.5, 0, 0, 1, 0, 0, 0, 0, 1);\n            case 6:\n                return new THREE.Matrix4().set(0, -h, 0, 0.5, -w, 0, 0, 0.5, 0, 0, 1, 0, 0, 0, 0, 1);\n            case 8:\n                return new THREE.Matrix4().set(0, h, 0, 0.5, w, 0, 0, 0.5, 0, 0, 1, 0, 0, 0, 0, 1);\n            default:\n                return new THREE.Matrix4().set(w, 0, 0, 0.5, 0, -h, 0, 0.5, 0, 0, 1, 0, 0, 0, 0, 1);\n        }\n    }\n}\n",
-    "import * as THREE from \"three\";\n\nimport {Transform} from \"../Geo\";\n\n/**\n * @class ViewportCoords\n *\n * @classdesc Provides methods for calculating 2D coordinate conversions\n * as well as 3D projection and unprojection.\n *\n * Basic coordinates are 2D coordinates on the [0, 1] interval and\n * have the origin point, (0, 0), at the top left corner and the\n * maximum value, (1, 1), at the bottom right corner of the original\n * image.\n *\n * Viewport coordinates are 2D coordinates on the [-1, 1] interval and\n * have the origin point in the center. The bottom left corner point is\n * (-1, -1) and the top right corner point is (1, 1).\n *\n * Canvas coordiantes are 2D pixel coordinates on the [0, canvasWidth] and\n * [0, canvasHeight] intervals. The origin point (0, 0) is in the top left\n * corner and the maximum value is (canvasWidth, canvasHeight) is in the\n * bottom right corner.\n *\n * 3D coordinates are in the topocentric world reference frame.\n */\nexport class ViewportCoords {\n    private _unprojectDepth: number = 200;\n\n    /**\n     * Convert basic coordinates to canvas coordinates.\n     *\n     * @description Transform origin and camera position needs to be the\n     * equal for reliable return value.\n     *\n     * @param {number} basicX - Basic X coordinate.\n     * @param {number} basicY - Basic Y coordinate.\n     * @param {HTMLElement} container - The viewer container.\n     * @param {Transform} transform - Transform of the node to unproject from.\n     * @param {THREE.Camera} camera - Camera used in rendering.\n     * @returns {Array<number>} 2D canvas coordinates.\n     */\n    public basicToCanvas(\n        basicX: number,\n        basicY: number,\n        container: { offsetHeight: number, offsetWidth: number },\n        transform: Transform,\n        camera: THREE.Camera):\n        number[] {\n\n        const point3d: number[] = transform.unprojectBasic([basicX, basicY], this._unprojectDepth);\n        const canvas: number[] = this.projectToCanvas(point3d, container, camera);\n\n        return canvas;\n    }\n\n    /**\n     * Convert basic coordinates to canvas coordinates safely. If 3D point is\n     * behind camera null will be returned.\n     *\n     * @description Transform origin and camera position needs to be the\n     * equal for reliable return value.\n     *\n     * @param {number} basicX - Basic X coordinate.\n     * @param {number} basicY - Basic Y coordinate.\n     * @param {HTMLElement} container - The viewer container.\n     * @param {Transform} transform - Transform of the node to unproject from.\n     * @param {THREE.Camera} camera - Camera used in rendering.\n     * @returns {Array<number>} 2D canvas coordinates if the basic point represents a 3D point\n     * in front of the camera, otherwise null.\n     */\n    public basicToCanvasSafe(\n        basicX: number,\n        basicY: number,\n        container: { offsetHeight: number, offsetWidth: number },\n        transform: Transform,\n        camera: THREE.Camera):\n        number[] {\n\n        const viewport: number[] = this.basicToViewportSafe(basicX, basicY, transform, camera);\n\n        if (viewport === null) {\n            return null;\n        }\n\n        const canvas: number[] = this.viewportToCanvas(viewport[0], viewport[1], container);\n\n        return canvas;\n    }\n\n    /**\n     * Convert basic coordinates to viewport coordinates.\n     *\n     * @description Transform origin and camera position needs to be the\n     * equal for reliable return value.\n     *\n     * @param {number} basicX - Basic X coordinate.\n     * @param {number} basicY - Basic Y coordinate.\n     * @param {Transform} transform - Transform of the node to unproject from.\n     * @param {THREE.Camera} camera - Camera used in rendering.\n     * @returns {Array<number>} 2D viewport coordinates.\n     */\n    public basicToViewport(\n        basicX: number,\n        basicY: number,\n        transform: Transform,\n        camera: THREE.Camera):\n        number[] {\n\n        const point3d: number[] = transform.unprojectBasic([basicX, basicY], this._unprojectDepth);\n        const viewport: number[] = this.projectToViewport(point3d, camera);\n\n        return viewport;\n    }\n\n    /**\n     * Convert basic coordinates to viewport coordinates safely. If 3D point is\n     * behind camera null will be returned.\n     *\n     * @description Transform origin and camera position needs to be the\n     * equal for reliable return value.\n     *\n     * @param {number} basicX - Basic X coordinate.\n     * @param {number} basicY - Basic Y coordinate.\n     * @param {Transform} transform - Transform of the node to unproject from.\n     * @param {THREE.Camera} camera - Camera used in rendering.\n     * @returns {Array<number>} 2D viewport coordinates.\n     */\n    public basicToViewportSafe(\n        basicX: number,\n        basicY: number,\n        transform: Transform,\n        camera: THREE.Camera):\n        number[] {\n\n        const point3d: number[] = transform.unprojectBasic([basicX, basicY], this._unprojectDepth);\n        const pointCamera: number[] = this.worldToCamera(point3d, camera);\n\n        if (pointCamera[2] > 0) {\n            return null;\n        }\n\n        const viewport: number[] = this.projectToViewport(point3d, camera);\n\n        return viewport;\n    }\n\n    /**\n     * Convert camera 3D coordinates to viewport coordinates.\n     *\n     * @param {number} pointCamera - 3D point in camera coordinate system.\n     * @param {THREE.Camera} camera - Camera used in rendering.\n     * @returns {Array<number>} 2D viewport coordinates.\n     */\n    public cameraToViewport(\n        pointCamera: number[],\n        camera: THREE.Camera):\n        number[] {\n\n        const viewport: THREE.Vector3 =\n            new THREE.Vector3().fromArray(pointCamera)\n                .applyMatrix4(camera.projectionMatrix);\n\n        return [viewport.x, viewport.y];\n    }\n\n    /**\n     * Get canvas pixel position from event.\n     *\n     * @param {Event} event - Event containing clientX and clientY properties.\n     * @param {HTMLElement} element - HTML element.\n     * @returns {Array<number>} 2D canvas coordinates.\n     */\n    public canvasPosition(event: { clientX: number, clientY: number }, element: HTMLElement): number[] {\n        const clientRect: ClientRect = element.getBoundingClientRect();\n\n        const canvasX: number = event.clientX - clientRect.left - element.clientLeft;\n        const canvasY: number = event.clientY - clientRect.top - element.clientTop;\n\n        return [canvasX, canvasY];\n    }\n\n    /**\n     * Convert canvas coordinates to basic coordinates.\n     *\n     * @description Transform origin and camera position needs to be the\n     * equal for reliable return value.\n     *\n     * @param {number} canvasX - Canvas X coordinate.\n     * @param {number} canvasY - Canvas Y coordinate.\n     * @param {HTMLElement} container - The viewer container.\n     * @param {Transform} transform - Transform of the node to unproject from.\n     * @param {THREE.Camera} camera - Camera used in rendering.\n     * @returns {Array<number>} 2D basic coordinates.\n     */\n    public canvasToBasic(\n        canvasX: number,\n        canvasY: number,\n        container: { offsetHeight: number, offsetWidth: number },\n        transform: Transform,\n        camera: THREE.Camera):\n        number[] {\n\n        const point3d: number[] =\n            this.unprojectFromCanvas(canvasX, canvasY, container, camera)\n                .toArray();\n\n        const basic: number[] = transform.projectBasic(point3d);\n\n        return basic;\n    }\n\n    /**\n     * Convert canvas coordinates to viewport coordinates.\n     *\n     * @param {number} canvasX - Canvas X coordinate.\n     * @param {number} canvasY - Canvas Y coordinate.\n     * @param {HTMLElement} container - The viewer container.\n     * @returns {Array<number>} 2D viewport coordinates.\n     */\n    public canvasToViewport(\n        canvasX: number,\n        canvasY: number,\n        container: { offsetHeight: number, offsetWidth: number }):\n        number[] {\n\n        const [canvasWidth, canvasHeight]: number[] = this.containerToCanvas(container);\n        const viewportX: number = 2 * canvasX / canvasWidth - 1;\n        const viewportY: number = 1 - 2 * canvasY / canvasHeight;\n\n        return [viewportX, viewportY];\n    }\n\n    /**\n     * Determines the width and height of the container in canvas coordinates.\n     *\n     * @param {HTMLElement} container - The viewer container.\n     * @returns {Array<number>} 2D canvas coordinates.\n     */\n    public containerToCanvas(container: { offsetHeight: number, offsetWidth: number }): number[] {\n        return [container.offsetWidth, container.offsetHeight];\n    }\n\n    /**\n     * Determine basic distances from image to canvas corners.\n     *\n     * @description Transform origin and camera position needs to be the\n     * equal for reliable return value.\n     *\n     * Determines the smallest basic distance for every side of the canvas.\n     *\n     * @param {Transform} transform - Transform of the node to unproject from.\n     * @param {THREE.Camera} camera - Camera used in rendering.\n     * @returns {Array<number>} Array of basic distances as [top, right, bottom, left].\n     */\n    public getBasicDistances(\n        transform: Transform,\n        camera: THREE.Camera):\n        number[] {\n\n        const topLeftBasic: number[] = this.viewportToBasic(-1, 1, transform, camera);\n        const topRightBasic: number[] = this.viewportToBasic(1, 1, transform, camera);\n        const bottomRightBasic: number[] = this.viewportToBasic(1, -1, transform, camera);\n        const bottomLeftBasic: number[] = this.viewportToBasic(-1, -1, transform, camera);\n\n        let topBasicDistance: number = 0;\n        let rightBasicDistance: number = 0;\n        let bottomBasicDistance: number = 0;\n        let leftBasicDistance: number = 0;\n\n        if (topLeftBasic[1] < 0 && topRightBasic[1] < 0) {\n            topBasicDistance = topLeftBasic[1] > topRightBasic[1] ?\n                -topLeftBasic[1] :\n                -topRightBasic[1];\n        }\n\n        if (topRightBasic[0] > 1 && bottomRightBasic[0] > 1) {\n            rightBasicDistance = topRightBasic[0] < bottomRightBasic[0] ?\n                topRightBasic[0] - 1 :\n                bottomRightBasic[0] - 1;\n        }\n\n        if (bottomRightBasic[1] > 1 && bottomLeftBasic[1] > 1) {\n            bottomBasicDistance = bottomRightBasic[1] < bottomLeftBasic[1] ?\n                bottomRightBasic[1] - 1 :\n                bottomLeftBasic[1] - 1;\n        }\n\n        if (bottomLeftBasic[0] < 0 && topLeftBasic[0] < 0) {\n            leftBasicDistance = bottomLeftBasic[0] > topLeftBasic[0] ?\n                -bottomLeftBasic[0] :\n                -topLeftBasic[0];\n        }\n\n        return [topBasicDistance, rightBasicDistance, bottomBasicDistance, leftBasicDistance];\n    }\n\n    /**\n     * Determine pixel distances from image to canvas corners.\n     *\n     * @description Transform origin and camera position needs to be the\n     * equal for reliable return value.\n     *\n     * Determines the smallest pixel distance for every side of the canvas.\n     *\n     * @param {HTMLElement} container - The viewer container.\n     * @param {Transform} transform - Transform of the node to unproject from.\n     * @param {THREE.Camera} camera - Camera used in rendering.\n     * @returns {Array<number>} Array of pixel distances as [top, right, bottom, left].\n     */\n    public getPixelDistances(\n        container: { offsetHeight: number, offsetWidth: number },\n        transform: Transform,\n        camera: THREE.Camera):\n        number[] {\n\n        const topLeftBasic: number[] = this.viewportToBasic(-1, 1, transform, camera);\n        const topRightBasic: number[] = this.viewportToBasic(1, 1, transform, camera);\n        const bottomRightBasic: number[] = this.viewportToBasic(1, -1, transform, camera);\n        const bottomLeftBasic: number[] = this.viewportToBasic(-1, -1, transform, camera);\n\n        let topPixelDistance: number = 0;\n        let rightPixelDistance: number = 0;\n        let bottomPixelDistance: number = 0;\n        let leftPixelDistance: number = 0;\n\n        const [canvasWidth, canvasHeight]: number[] = this.containerToCanvas(container);\n\n        if (topLeftBasic[1] < 0 && topRightBasic[1] < 0) {\n            const basicX: number = topLeftBasic[1] > topRightBasic[1] ?\n                topLeftBasic[0] :\n                topRightBasic[0];\n\n            const canvas: number[] = this.basicToCanvas(basicX, 0, container, transform, camera);\n\n            topPixelDistance = canvas[1] > 0 ? canvas[1] : 0;\n        }\n\n        if (topRightBasic[0] > 1 && bottomRightBasic[0] > 1) {\n            const basicY: number = topRightBasic[0] < bottomRightBasic[0] ?\n                topRightBasic[1] :\n                bottomRightBasic[1];\n\n            const canvas: number[] = this.basicToCanvas(1, basicY, container, transform, camera);\n\n            rightPixelDistance = canvas[0] < canvasWidth ? canvasWidth - canvas[0] : 0;\n        }\n\n        if (bottomRightBasic[1] > 1 && bottomLeftBasic[1] > 1) {\n            const basicX: number = bottomRightBasic[1] < bottomLeftBasic[1] ?\n                bottomRightBasic[0] :\n                bottomLeftBasic[0];\n\n            const canvas: number[] = this.basicToCanvas(basicX, 1, container, transform, camera);\n\n            bottomPixelDistance = canvas[1] < canvasHeight ? canvasHeight - canvas[1] : 0;\n        }\n\n        if (bottomLeftBasic[0] < 0 && topLeftBasic[0] < 0) {\n            const basicY: number = bottomLeftBasic[0] > topLeftBasic[0] ?\n                bottomLeftBasic[1] :\n                topLeftBasic[1];\n\n            const canvas: number[] = this.basicToCanvas(0, basicY, container, transform, camera);\n\n            leftPixelDistance = canvas[0] > 0 ? canvas[0] : 0;\n        }\n\n        return [topPixelDistance, rightPixelDistance, bottomPixelDistance, leftPixelDistance];\n    }\n\n    /**\n     * Determine if an event occured inside an element.\n     *\n     * @param {Event} event - Event containing clientX and clientY properties.\n     * @param {HTMLElement} element - HTML element.\n     * @returns {boolean} Value indicating if the event occured inside the element or not.\n     */\n    public insideElement(event: { clientX: number, clientY: number }, element: HTMLElement): boolean {\n        const clientRect: ClientRect = element.getBoundingClientRect();\n\n        const minX: number = clientRect.left + element.clientLeft;\n        const maxX: number = minX + element.clientWidth;\n        const minY: number = clientRect.top + element.clientTop;\n        const maxY: number = minY + element.clientHeight;\n\n        return event.clientX > minX &&\n            event.clientX < maxX &&\n            event.clientY > minY &&\n            event.clientY < maxY;\n    }\n\n    /**\n     * Project 3D world coordinates to canvas coordinates.\n     *\n     * @param {Array<number>} point3D - 3D world coordinates.\n     * @param {HTMLElement} container - The viewer container.\n     * @param {THREE.Camera} camera - Camera used in rendering.\n     * @returns {Array<number>} 2D canvas coordinates.\n     */\n    public projectToCanvas(\n        point3d: number[],\n        container: { offsetHeight: number, offsetWidth: number },\n        camera: THREE.Camera):\n        number[] {\n\n        const viewport: number[] = this.projectToViewport(point3d, camera);\n        const canvas: number[] =\n            this.viewportToCanvas(viewport[0], viewport[1], container);\n\n        return canvas;\n    }\n\n    /**\n     * Project 3D world coordinates to viewport coordinates.\n     *\n     * @param {Array<number>} point3D - 3D world coordinates.\n     * @param {THREE.Camera} camera - Camera used in rendering.\n     * @returns {Array<number>} 2D viewport coordinates.\n     */\n    public projectToViewport(\n        point3d: number[],\n        camera: THREE.Camera):\n        number[] {\n\n        const viewport: THREE.Vector3 =\n            new THREE.Vector3(point3d[0], point3d[1], point3d[2])\n                .project(camera);\n\n        return [viewport.x, viewport.y];\n    }\n\n    /**\n     * Uproject canvas coordinates to 3D world coordinates.\n     *\n     * @param {number} canvasX - Canvas X coordinate.\n     * @param {number} canvasY - Canvas Y coordinate.\n     * @param {HTMLElement} container - The viewer container.\n     * @param {THREE.Camera} camera - Camera used in rendering.\n     * @returns {Array<number>} 3D world coordinates.\n     */\n    public unprojectFromCanvas(\n        canvasX: number,\n        canvasY: number,\n        container: { offsetHeight: number, offsetWidth: number },\n        camera: THREE.Camera):\n        THREE.Vector3 {\n\n        const viewport: number[] =\n            this.canvasToViewport(canvasX, canvasY, container);\n\n        const point3d: THREE.Vector3 =\n            this.unprojectFromViewport(viewport[0], viewport[1], camera);\n\n        return point3d;\n    }\n\n    /**\n     * Unproject viewport coordinates to 3D world coordinates.\n     *\n     * @param {number} viewportX - Viewport X coordinate.\n     * @param {number} viewportY - Viewport Y coordinate.\n     * @param {THREE.Camera} camera - Camera used in rendering.\n     * @returns {Array<number>} 3D world coordinates.\n     */\n    public unprojectFromViewport(\n        viewportX: number,\n        viewportY: number,\n        camera: THREE.Camera):\n        THREE.Vector3 {\n\n        const point3d: THREE.Vector3 =\n            new THREE.Vector3(viewportX, viewportY, 1)\n                .unproject(camera);\n\n        return point3d;\n    }\n\n    /**\n     * Convert viewport coordinates to basic coordinates.\n     *\n     * @description Transform origin and camera position needs to be the\n     * equal for reliable return value.\n     *\n     * @param {number} viewportX - Viewport X coordinate.\n     * @param {number} viewportY - Viewport Y coordinate.\n     * @param {Transform} transform - Transform of the node to unproject from.\n     * @param {THREE.Camera} camera - Camera used in rendering.\n     * @returns {Array<number>} 2D basic coordinates.\n     */\n    public viewportToBasic(\n        viewportX: number,\n        viewportY: number,\n        transform: Transform,\n        camera: THREE.Camera):\n        number[] {\n\n        const point3d: number[] =\n            new THREE.Vector3(viewportX, viewportY, 1)\n                .unproject(camera)\n                .toArray();\n\n        const basic: number[] = transform.projectBasic(point3d);\n\n        return basic;\n    }\n\n    /**\n     * Convert viewport coordinates to canvas coordinates.\n     *\n     * @param {number} viewportX - Viewport X coordinate.\n     * @param {number} viewportY - Viewport Y coordinate.\n     * @param {HTMLElement} container - The viewer container.\n     * @returns {Array<number>} 2D canvas coordinates.\n     */\n    public viewportToCanvas(\n        viewportX: number,\n        viewportY: number,\n        container: { offsetHeight: number, offsetWidth: number }):\n        number[] {\n\n        const [canvasWidth, canvasHeight]: number[] = this.containerToCanvas(container);\n        const canvasX: number = canvasWidth * (viewportX + 1) / 2;\n        const canvasY: number = -canvasHeight * (viewportY - 1) / 2;\n\n        return [canvasX, canvasY];\n    }\n\n    /**\n     * Convert 3D world coordinates to 3D camera coordinates.\n     *\n     * @param {number} point3D - 3D point in world coordinate system.\n     * @param {THREE.Camera} camera - Camera used in rendering.\n     * @returns {Array<number>} 3D camera coordinates.\n     */\n    public worldToCamera(\n        point3d: number[],\n        camera: THREE.Camera): number[] {\n\n        const pointCamera: THREE.Vector3 =\n            new THREE.Vector3(point3d[0], point3d[1], point3d[2])\n                .applyMatrix4(camera.matrixWorldInverse);\n\n        return pointCamera.toArray();\n    }\n}\n\nexport default ViewportCoords;\n",
+    "import * as THREE from \"three\";\n\n/**\n * @class Spatial\n *\n * @classdesc Provides methods for scalar, vector and matrix calculations.\n */\nexport class Spatial {\n    private _epsilon: number = 1e-9;\n\n    /**\n     * Converts azimuthal phi rotation (counter-clockwise with origin on X-axis) to\n     * bearing (clockwise with origin at north or Y-axis).\n     *\n     * @param {number} phi - Azimuthal phi angle in radians.\n     * @returns {number} Bearing in radians.\n     */\n    public azimuthalToBearing(phi: number): number {\n         return -phi + Math.PI / 2;\n    }\n\n    /**\n     * Converts degrees to radians.\n     *\n     * @param {number} deg - Degrees.\n     * @returns {number} Radians.\n     */\n    public degToRad(deg: number): number {\n        return Math.PI * deg / 180;\n    }\n\n    /**\n     * Converts radians to degrees.\n     *\n     * @param {number} rad - Radians.\n     * @returns {number} Degrees.\n     */\n    public radToDeg(rad: number): number {\n        return 180 * rad / Math.PI;\n    }\n\n    /**\n     * Creates a rotation matrix from an angle-axis vector.\n     *\n     * @param {Array<number>} angleAxis - Angle-axis representation of a rotation.\n     * @returns {THREE.Matrix4} Rotation matrix.\n     */\n    public rotationMatrix(angleAxis: number[]): THREE.Matrix4 {\n        let axis: THREE.Vector3 =\n            new THREE.Vector3(angleAxis[0], angleAxis[1], angleAxis[2]);\n        let angle: number = axis.length();\n        if (angle > 0) {\n            axis.normalize();\n        }\n\n        return new THREE.Matrix4().makeRotationAxis(axis, angle);\n    }\n\n    /**\n     * Rotates a vector according to a angle-axis rotation vector.\n     *\n     * @param {Array<number>} vector - Vector to rotate.\n     * @param {Array<number>} angleAxis - Angle-axis representation of a rotation.\n     * @returns {THREE.Vector3} Rotated vector.\n     */\n    public rotate(vector: number[], angleAxis: number[]): THREE.Vector3 {\n        let v: THREE.Vector3 = new THREE.Vector3(vector[0], vector[1], vector[2]);\n        let rotationMatrix: THREE.Matrix4 = this.rotationMatrix(angleAxis);\n        v.applyMatrix4(rotationMatrix);\n\n        return v;\n    }\n\n    /**\n     * Calculates the optical center from a rotation vector\n     * on the angle-axis representation and a translation vector\n     * according to C = -R^T t.\n     *\n     * @param {Array<number>} rotation - Angle-axis representation of a rotation.\n     * @param {Array<number>} translation - Translation vector.\n     * @returns {THREE.Vector3} Optical center.\n     */\n    public opticalCenter(rotation: number[], translation: number[]): THREE.Vector3 {\n        let angleAxis: number[] = [-rotation[0], -rotation[1], -rotation[2]];\n        let vector: number[] = [-translation[0], -translation[1], -translation[2]];\n\n        return this.rotate(vector, angleAxis);\n    }\n\n    /**\n     * Calculates the viewing direction from a rotation vector\n     * on the angle-axis representation.\n     *\n     * @param {number[]} rotation - Angle-axis representation of a rotation.\n     * @returns {THREE.Vector3} Viewing direction.\n     */\n    public viewingDirection(rotation: number[]): THREE.Vector3 {\n        let angleAxis: number[] = [-rotation[0], -rotation[1], -rotation[2]];\n\n        return this.rotate([0, 0, 1], angleAxis);\n    }\n\n    /**\n     * Wrap a number on the interval [min, max].\n     *\n     * @param {number} value - Value to wrap.\n     * @param {number} min - Lower endpoint of interval.\n     * @param {number} max - Upper endpoint of interval.\n     * @returns {number} The wrapped number.\n     */\n    public wrap(value: number, min: number, max: number): number {\n        if (max < min) {\n            throw new Error(\"Invalid arguments: max must be larger than min.\");\n        }\n\n        let interval: number = (max - min);\n\n        while (value > max || value < min) {\n            if (value > max) {\n                value = value - interval;\n            } else if (value < min) {\n                value = value + interval;\n            }\n        }\n\n        return value;\n    }\n\n    /**\n     * Wrap an angle on the interval [-Pi, Pi].\n     *\n     * @param {number} angle - Value to wrap.\n     * @returns {number} Wrapped angle.\n     */\n    public wrapAngle(angle: number): number {\n        return this.wrap(angle, -Math.PI, Math.PI);\n    }\n\n    /**\n     * Limit the value to the interval [min, max] by changing the value to\n     * the nearest available one when it is outside the interval.\n     *\n     * @param {number} value - Value to clamp.\n     * @param {number} min - Minimum of the interval.\n     * @param {number} max - Maximum of the interval.\n     * @returns {number} Clamped value.\n     */\n    public clamp(value: number, min: number, max: number): number {\n        if (value < min) {\n            return min;\n        }\n\n        if (value > max) {\n            return max;\n        }\n\n        return value;\n    }\n\n    /**\n     * Calculates the counter-clockwise angle from the first\n     * vector (x1, y1)^T to the second (x2, y2)^T.\n     *\n     * @param {number} x1 - X coordinate of first vector.\n     * @param {number} y1 - Y coordinate of first vector.\n     * @param {number} x2 - X coordinate of second vector.\n     * @param {number} y2 - Y coordinate of second vector.\n     * @returns {number} Counter clockwise angle between the vectors.\n     */\n    public angleBetweenVector2(x1: number, y1: number, x2: number, y2: number): number {\n        let angle: number = Math.atan2(y2, x2) - Math.atan2(y1, x1);\n\n        return this.wrapAngle(angle);\n    }\n\n    /**\n     * Calculates the minimum (absolute) angle change for rotation\n     * from one angle to another on the [-Pi, Pi] interval.\n     *\n     * @param {number} angle1 - Start angle.\n     * @param {number} angle2 - Destination angle.\n     * @returns {number} Absolute angle change between angles.\n     */\n    public angleDifference(angle1: number, angle2: number): number {\n        let angle: number = angle2 - angle1;\n\n        return this.wrapAngle(angle);\n    }\n\n    /**\n     * Calculates the relative rotation angle between two\n     * angle-axis vectors.\n     *\n     * @param {number} rotation1 - First angle-axis vector.\n     * @param {number} rotation2 - Second angle-axis vector.\n     * @returns {number} Relative rotation angle.\n     */\n    public relativeRotationAngle(rotation1: number[], rotation2: number[]): number {\n        let R1T: THREE.Matrix4 = this.rotationMatrix(\n            [-rotation1[0], -rotation1[1], -rotation1[2]]);\n        let R2: THREE.Matrix4 = this.rotationMatrix(rotation2);\n\n        let R: THREE.Matrix4 = R1T.multiply(R2);\n        let elements: Float32Array = R.elements;\n\n        // from Tr(R) = 1 + 2 * cos(theta)\n        let tr: number = elements[0] + elements[5] + elements[10];\n        let theta: number = Math.acos(Math.max(Math.min((tr - 1) / 2, 1), -1));\n\n        return theta;\n    }\n\n    /**\n     * Calculates the angle from a vector to a plane.\n     *\n     * @param {Array<number>} vector - The vector.\n     * @param {Array<number>} planeNormal - Normal of the plane.\n     * @returns {number} Angle from between plane and vector.\n     */\n    public angleToPlane(vector: number[], planeNormal: number[]): number {\n        let v: THREE.Vector3 = new THREE.Vector3().fromArray(vector);\n        let norm: number = v.length();\n\n        if (norm < this._epsilon) {\n            return 0;\n        }\n\n        let projection: number = v.dot(new THREE.Vector3().fromArray(planeNormal));\n\n        return Math.asin(projection / norm);\n    }\n\n    public azimuthal(direction: number[], up: number[]): number {\n        const directionVector: THREE.Vector3 = new THREE.Vector3().fromArray(direction);\n        const upVector: THREE.Vector3 = new THREE.Vector3().fromArray(up);\n\n        const upProjection: number = directionVector.clone().dot(upVector);\n        const planeProjection: THREE.Vector3 = directionVector.clone().sub(upVector.clone().multiplyScalar(upProjection));\n\n        return Math.atan2(planeProjection.y, planeProjection.x);\n    }\n\n    /**\n     * Calculates the distance between two coordinates\n     * (latitude longitude pairs) in meters according to\n     * the haversine formula.\n     *\n     * @param {number} lat1 - Latitude of the first coordinate in degrees.\n     * @param {number} lon1 - Longitude of the first coordinate in degrees.\n     * @param {number} lat2 - Latitude of the second coordinate in degrees.\n     * @param {number} lon2 - Longitude of the second coordinate in degrees.\n     * @returns {number} Distance between lat lon positions in meters.\n     */\n    public distanceFromLatLon(lat1: number, lon1: number, lat2: number, lon2: number): number {\n        let r: number = 6371000;\n        let dLat: number = this.degToRad(lat2 - lat1);\n        let dLon: number = this.degToRad(lon2 - lon1);\n\n        let hav: number =\n            Math.sin(dLat / 2) * Math.sin(dLat / 2) +\n            Math.cos(this.degToRad(lat1)) * Math.cos(this.degToRad(lat2)) *\n            Math.sin(dLon / 2) * Math.sin(dLon / 2);\n\n        let d: number = 2 * r * Math.atan2(Math.sqrt(hav), Math.sqrt(1 - hav));\n\n        return d;\n    }\n}\n\nexport default Spatial;\n",
+    "import * as THREE from \"three\";\n\nimport {IGPano} from \"../API\";\nimport { CameraProjection } from \"../api/interfaces/CameraProjection\";\n\n/**\n * @class Transform\n *\n * @classdesc Class used for calculating coordinate transformations\n * and projections.\n */\nexport class Transform {\n    private _width: number;\n    private _height: number;\n    private _focal: number;\n    private _orientation: number;\n    private _scale: number;\n    private _basicWidth: number;\n    private _basicHeight: number;\n    private _basicAspect: number;\n\n    private _gpano: IGPano;\n\n    private _rt: THREE.Matrix4;\n    private _srt: THREE.Matrix4;\n\n    private _basicRt: THREE.Matrix4;\n\n    private _textureScale: number[];\n\n    private _ck1: number;\n    private _ck2: number;\n    private _cameraProjection: CameraProjection;\n\n    private _radialPeak: number;\n\n    /**\n     * Create a new transform instance.\n     * @param {number} orientation - Image orientation.\n     * @param {number} width - Image height.\n     * @param {number} height - Image width.\n     * @param {number} focal - Focal length.\n     * @param {number} scale - Atomic scale.\n     * @param {IGPano} gpano - Panorama properties.\n     * @param {Array<number>} rotation - Rotation vector in three dimensions.\n     * @param {Array<number>} translation - Translation vector in three dimensions.\n     * @param {HTMLImageElement} image - Image for fallback size calculations.\n     */\n    constructor(\n        orientation: number,\n        width: number,\n        height: number,\n        focal: number,\n        scale: number,\n        gpano: IGPano,\n        rotation: number[],\n        translation: number[],\n        image: HTMLImageElement,\n        textureScale?: number[],\n        ck1?: number,\n        ck2?: number,\n        cameraProjection?: CameraProjection) {\n\n        this._orientation = this._getValue(orientation, 1);\n\n        let imageWidth: number = image != null ? image.width : 4;\n        let imageHeight: number = image != null ? image.height : 3;\n        let keepOrientation: boolean = this._orientation < 5;\n\n        this._width = this._getValue(width, keepOrientation ? imageWidth : imageHeight);\n        this._height = this._getValue(height, keepOrientation ? imageHeight : imageWidth);\n\n        this._basicAspect = keepOrientation ?\n             this._width / this._height :\n             this._height / this._width;\n\n        this._basicWidth = keepOrientation ? width : height;\n        this._basicHeight = keepOrientation ? height : width;\n\n        this._focal = this._getValue(focal, 1);\n        this._scale = this._getValue(scale, 0);\n\n        this._gpano = gpano != null ? gpano : null;\n\n        this._rt = this._getRt(rotation, translation);\n        this._srt = this._getSrt(this._rt, this._scale);\n\n        this._basicRt = this._getBasicRt(this._rt, orientation);\n\n        this._textureScale = !!textureScale ? textureScale : [1, 1];\n\n        this._ck1 = !!ck1 ? ck1 : 0;\n        this._ck2 = !!ck2 ? ck2 : 0;\n        this._cameraProjection = !!cameraProjection ?\n            cameraProjection :\n            !!gpano ?\n                \"equirectangular\" :\n                \"perspective\";\n\n        this._radialPeak = this._getRadialPeak(this._ck1, this._ck2);\n    }\n\n    public get ck1(): number {\n        return this._ck1;\n    }\n\n    public get ck2(): number {\n        return this._ck2;\n    }\n\n    public get cameraProjection(): string {\n        return this._cameraProjection;\n    }\n\n    /**\n     * Get basic aspect.\n     * @returns {number} The orientation adjusted aspect ratio.\n     */\n    public get basicAspect(): number {\n        return this._basicAspect;\n    }\n\n    /**\n     * Get basic height.\n     *\n     * @description Does not fall back to node image height but\n     * uses original value from API so can be faulty.\n     *\n     * @returns {number} The height of the basic version image\n     * (adjusted for orientation).\n     */\n    public get basicHeight(): number {\n        return this._basicHeight;\n    }\n\n    public get basicRt(): THREE.Matrix4 {\n        return this._basicRt;\n    }\n\n    /**\n     * Get basic width.\n     *\n     * @description Does not fall back to node image width but\n     * uses original value from API so can be faulty.\n     *\n     * @returns {number} The width of the basic version image\n     * (adjusted for orientation).\n     */\n    public get basicWidth(): number {\n        return this._basicWidth;\n    }\n\n    /**\n     * Get focal.\n     * @returns {number} The node focal length.\n     */\n    public get focal(): number {\n        return this._focal;\n    }\n\n    /**\n     * Get fullPano.\n     *\n     * @returns {boolean} Value indicating whether the node is a complete\n     * 360 panorama.\n     */\n    public get fullPano(): boolean {\n        return this._gpano != null &&\n            this._gpano.CroppedAreaLeftPixels === 0 &&\n            this._gpano.CroppedAreaTopPixels === 0 &&\n            this._gpano.CroppedAreaImageWidthPixels === this._gpano.FullPanoWidthPixels &&\n            this._gpano.CroppedAreaImageHeightPixels === this._gpano.FullPanoHeightPixels;\n    }\n\n    /**\n     * Get gpano.\n     * @returns {number} The node gpano information.\n     */\n    public get gpano(): IGPano {\n        return this._gpano;\n    }\n\n    /**\n     * Get height.\n     *\n     * @description Falls back to the node image height if\n     * the API data is faulty.\n     *\n     * @returns {number} The orientation adjusted image height.\n     */\n    public get height(): number {\n        return this._height;\n    }\n\n    /**\n     * Get orientation.\n     * @returns {number} The image orientation.\n     */\n    public get orientation(): number {\n        return this._orientation;\n    }\n\n    /**\n     * Get rt.\n     * @returns {THREE.Matrix4} The extrinsic camera matrix.\n     */\n    public get rt(): THREE.Matrix4 {\n        return this._rt;\n    }\n\n    /**\n     * Get srt.\n     * @returns {THREE.Matrix4} The scaled extrinsic camera matrix.\n     */\n    public get srt(): THREE.Matrix4 {\n        return this._srt;\n    }\n\n    /**\n     * Get scale.\n     * @returns {number} The node atomic reconstruction scale.\n     */\n    public get scale(): number {\n        return this._scale;\n    }\n\n    /**\n     * Get has valid scale.\n     * @returns {boolean} Value indicating if the scale of the transform is valid.\n     */\n    public get hasValidScale(): boolean {\n        return this._scale > 1e-2 && this._scale < 50;\n    }\n\n    /**\n     * Get radial peak.\n     * @returns {number} Value indicating the radius where the radial\n     * undistortion function peaks.\n     */\n    public get radialPeak(): number {\n        return this._radialPeak;\n    }\n\n    /**\n     * Get width.\n     *\n     * @description Falls back to the node image width if\n     * the API data is faulty.\n     *\n     * @returns {number} The orientation adjusted image width.\n     */\n    public get width(): number {\n        return this._width;\n    }\n\n    /**\n     * Calculate the up vector for the node transform.\n     *\n     * @returns {THREE.Vector3} Normalized and orientation adjusted up vector.\n     */\n    public upVector(): THREE.Vector3 {\n        let rte: Float32Array = this._rt.elements;\n\n        switch (this._orientation) {\n            case 1:\n                return new THREE.Vector3(-rte[1], -rte[5], -rte[9]);\n            case 3:\n                return new THREE.Vector3(rte[1],  rte[5],  rte[9]);\n            case 6:\n                return new THREE.Vector3(-rte[0], -rte[4], -rte[8]);\n            case 8:\n                return new THREE.Vector3(rte[0],  rte[4],  rte[8]);\n            default:\n                return new THREE.Vector3(-rte[1], -rte[5], -rte[9]);\n        }\n    }\n\n    /**\n     * Calculate projector matrix for projecting 3D points to texture map\n     * coordinates (u and v).\n     *\n     * @returns {THREE.Matrix4} Projection matrix for 3D point to texture\n     * map coordinate calculations.\n     */\n    public projectorMatrix(): THREE.Matrix4 {\n        let projector: THREE.Matrix4 = this._normalizedToTextureMatrix();\n\n        let f: number = this._focal;\n        let projection: THREE.Matrix4 = new THREE.Matrix4().set(\n            f, 0, 0, 0,\n            0, f, 0, 0,\n            0, 0, 0, 0,\n            0, 0, 1, 0);\n\n        projector.multiply(projection);\n        projector.multiply(this._rt);\n\n        return projector;\n    }\n\n    /**\n     * Project 3D world coordinates to basic coordinates.\n     *\n     * @param {Array<number>} point3d - 3D world coordinates.\n     * @return {Array<number>} 2D basic coordinates.\n     */\n    public projectBasic(point3d: number[]): number[] {\n        let sfm: number[] = this.projectSfM(point3d);\n        return this._sfmToBasic(sfm);\n    }\n\n    /**\n     * Unproject basic coordinates to 3D world coordinates.\n     *\n     * @param {Array<number>} basic - 2D basic coordinates.\n     * @param {Array<number>} distance - Distance to unproject from camera center.\n     * @param {boolean} [depth] - Treat the distance value as depth from camera center.\n     *                            Only applicable for perspective images. Will be\n     *                            ignored for panoramas.\n     * @returns {Array<number>} Unprojected 3D world coordinates.\n     */\n    public unprojectBasic(basic: number[], distance: number, depth?: boolean): number[] {\n        let sfm: number[] = this._basicToSfm(basic);\n        return this.unprojectSfM(sfm, distance, depth);\n    }\n\n    /**\n     * Project 3D world coordinates to SfM coordinates.\n     *\n     * @param {Array<number>} point3d - 3D world coordinates.\n     * @return {Array<number>} 2D SfM coordinates.\n     */\n    public projectSfM(point3d: number[]): number[] {\n        let v: THREE.Vector4 = new THREE.Vector4(point3d[0], point3d[1], point3d[2], 1);\n        v.applyMatrix4(this._rt);\n        return this._bearingToSfm([v.x, v.y, v.z]);\n    }\n\n    /**\n     * Unproject SfM coordinates to a 3D world coordinates.\n     *\n     * @param {Array<number>} sfm - 2D SfM coordinates.\n     * @param {Array<number>} distance - Distance to unproject from camera center.\n     * @param {boolean} [depth] - Treat the distance value as depth from camera center.\n     *                            Only applicable for perspective images. Will be\n     *                            ignored for panoramas.\n     * @returns {Array<number>} Unprojected 3D world coordinates.\n     */\n    public unprojectSfM(sfm: number[], distance: number, depth?: boolean): number[] {\n        let bearing: number[] = this._sfmToBearing(sfm);\n\n        const v: THREE.Vector4 = depth && !this.gpano ?\n            new THREE.Vector4(\n                distance * bearing[0] / bearing[2],\n                distance * bearing[1] / bearing[2],\n                distance,\n                1) :\n            new THREE.Vector4(\n                distance * bearing[0],\n                distance * bearing[1],\n                distance * bearing[2],\n                1);\n\n        v.applyMatrix4(new THREE.Matrix4().getInverse(this._rt));\n        return [v.x / v.w, v.y / v.w, v.z / v.w];\n    }\n\n    /**\n     * Transform SfM coordinates to bearing vector (3D cartesian\n     * coordinates on the unit sphere).\n     *\n     * @param {Array<number>} sfm - 2D SfM coordinates.\n     * @returns {Array<number>} Bearing vector (3D cartesian coordinates\n     * on the unit sphere).\n     */\n    private _sfmToBearing(sfm: number[]): number[] {\n        if (this._fullPano()) {\n            let lon: number = sfm[0] * 2 * Math.PI;\n            let lat: number = -sfm[1] * 2 * Math.PI;\n            let x: number = Math.cos(lat) * Math.sin(lon);\n            let y: number = -Math.sin(lat);\n            let z: number = Math.cos(lat) * Math.cos(lon);\n            return [x, y, z];\n        } else if (this._gpano) {\n            let size: number = Math.max(this.gpano.CroppedAreaImageWidthPixels, this.gpano.CroppedAreaImageHeightPixels);\n            let fullPanoPixel: number[] = [\n                sfm[0] * size + this.gpano.CroppedAreaImageWidthPixels / 2 + this.gpano.CroppedAreaLeftPixels,\n                sfm[1] * size + this.gpano.CroppedAreaImageHeightPixels / 2 + this.gpano.CroppedAreaTopPixels,\n            ];\n            let lon: number = 2 * Math.PI * (fullPanoPixel[0] / this.gpano.FullPanoWidthPixels - 0.5);\n            let lat: number = - Math.PI * (fullPanoPixel[1] / this.gpano.FullPanoHeightPixels - 0.5);\n            let x: number = Math.cos(lat) * Math.sin(lon);\n            let y: number = -Math.sin(lat);\n            let z: number = Math.cos(lat) * Math.cos(lon);\n            return [x, y, z];\n        } else if (this._cameraProjection === \"fisheye\") {\n            let [dxn, dyn]: number[] = [sfm[0] / this._focal, sfm[1] / this._focal];\n            const dTheta: number = Math.sqrt(dxn * dxn + dyn * dyn);\n            let d: number = this._distortionFromDistortedRadius(dTheta, this._ck1, this._ck2, this._radialPeak);\n            let theta: number = dTheta / d;\n            let z: number = Math.cos(theta);\n            let r: number = Math.sin(theta);\n            let x: number = r * dxn / dTheta;\n            let y: number = r * dyn / dTheta;\n            return [x, y, z];\n        } else {\n            let [dxn, dyn]: number[] = [sfm[0] / this._focal, sfm[1] / this._focal];\n            const dr: number = Math.sqrt(dxn * dxn + dyn * dyn);\n            let d: number = this._distortionFromDistortedRadius(dr, this._ck1, this._ck2, this._radialPeak);\n\n            const xn: number = dxn / d;\n            const yn: number = dyn / d;\n\n            let v: THREE.Vector3 = new THREE.Vector3(xn, yn, 1);\n            v.normalize();\n            return [v.x, v.y, v.z];\n        }\n    }\n\n    /** Compute distortion given the distorted radius.\n     *\n     *  Solves for d in the equation\n     *    y = d(x, k1, k2) * x\n     * given the distorted radius, y.\n     */\n    private _distortionFromDistortedRadius(distortedRadius: number, k1: number, k2: number, radialPeak: number): number {\n        let d: number = 1.0;\n        for (let i: number = 0; i < 10; i++) {\n            let radius: number = distortedRadius / d;\n            if (radius > radialPeak) {\n                radius = radialPeak;\n            }\n            d = 1 + k1 * radius ** 2 + k2 * radius ** 4;\n        }\n        return d;\n    }\n\n    /**\n     * Transform bearing vector (3D cartesian coordiantes on the unit sphere) to\n     * SfM coordinates.\n     *\n     * @param {Array<number>} bearing - Bearing vector (3D cartesian coordinates on the\n     * unit sphere).\n     * @returns {Array<number>} 2D SfM coordinates.\n     */\n    private _bearingToSfm(bearing: number[]): number[] {\n        if (this._fullPano()) {\n            let x: number = bearing[0];\n            let y: number = bearing[1];\n            let z: number = bearing[2];\n            let lon: number = Math.atan2(x, z);\n            let lat: number = Math.atan2(-y, Math.sqrt(x * x + z * z));\n            return [lon / (2 * Math.PI), -lat / (2 * Math.PI)];\n        } else if (this._gpano) {\n            let x: number = bearing[0];\n            let y: number = bearing[1];\n            let z: number = bearing[2];\n            let lon: number = Math.atan2(x, z);\n            let lat: number = Math.atan2(-y, Math.sqrt(x * x + z * z));\n            let fullPanoPixel: number[] = [\n                (lon / (2 * Math.PI) + 0.5) * this.gpano.FullPanoWidthPixels,\n                (- lat / Math.PI + 0.5) * this.gpano.FullPanoHeightPixels,\n            ];\n            let size: number = Math.max(this.gpano.CroppedAreaImageWidthPixels, this.gpano.CroppedAreaImageHeightPixels);\n            return [\n                (fullPanoPixel[0] - this.gpano.CroppedAreaLeftPixels - this.gpano.CroppedAreaImageWidthPixels / 2) / size,\n                (fullPanoPixel[1] - this.gpano.CroppedAreaTopPixels - this.gpano.CroppedAreaImageHeightPixels / 2) / size,\n            ];\n        } else if (this._cameraProjection === \"fisheye\") {\n            if (bearing[2] > 0) {\n                const [x, y, z]: number[] = bearing;\n                const r: number = Math.sqrt(x * x + y * y);\n                let theta: number = Math.atan2(r, z);\n\n                if (theta > this._radialPeak) {\n                    theta = this._radialPeak;\n                }\n\n                const distortion: number = 1.0 + theta ** 2 * (this._ck1 + theta ** 2 * this._ck2);\n                const s: number = this._focal * distortion * theta / r;\n\n                return [s * x, s * y];\n            } else {\n                return [\n                    bearing[0] < 0 ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY,\n                    bearing[1] < 0 ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY,\n                ];\n            }\n        } else {\n            if (bearing[2] > 0) {\n                let [xn, yn]: number[] = [bearing[0] / bearing[2], bearing[1] / bearing[2]];\n                let r2: number = xn * xn + yn * yn;\n                const rp2: number = this._radialPeak ** 2;\n\n                if (r2 > rp2) {\n                    r2 = rp2;\n                }\n\n                const d: number = 1 + this._ck1 * r2 + this._ck2 * r2 ** 2;\n                return [\n                    this._focal * d * xn,\n                    this._focal * d * yn,\n                ];\n            } else {\n                return [\n                    bearing[0] < 0 ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY,\n                    bearing[1] < 0 ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY,\n                ];\n            }\n        }\n    }\n\n    /**\n     * Convert basic coordinates to SfM coordinates.\n     *\n     * @param {Array<number>} basic - 2D basic coordinates.\n     * @returns {Array<number>} 2D SfM coordinates.\n     */\n    private _basicToSfm(basic: number[]): number[] {\n        let rotatedX: number;\n        let rotatedY: number;\n\n        switch (this._orientation) {\n            case 1:\n                rotatedX = basic[0];\n                rotatedY = basic[1];\n                break;\n            case 3:\n                rotatedX = 1 - basic[0];\n                rotatedY = 1 - basic[1];\n                break;\n            case 6:\n                rotatedX = basic[1];\n                rotatedY = 1 - basic[0];\n                break;\n            case 8:\n                rotatedX = 1 - basic[1];\n                rotatedY = basic[0];\n                break;\n            default:\n                rotatedX = basic[0];\n                rotatedY = basic[1];\n                break;\n        }\n\n        let w: number = this._width;\n        let h: number = this._height;\n        let s: number = Math.max(w, h);\n        let sfmX: number = rotatedX * w / s - w / s / 2;\n        let sfmY: number = rotatedY * h / s - h / s / 2;\n\n        return [sfmX, sfmY];\n    }\n\n    /**\n     * Convert SfM coordinates to basic coordinates.\n     *\n     * @param {Array<number>} sfm - 2D SfM coordinates.\n     * @returns {Array<number>} 2D basic coordinates.\n     */\n    private _sfmToBasic(sfm: number[]): number[] {\n        let w: number = this._width;\n        let h: number = this._height;\n        let s: number = Math.max(w, h);\n        let rotatedX: number = (sfm[0] + w / s / 2) / w * s;\n        let rotatedY: number = (sfm[1] + h / s / 2) / h * s;\n\n        let basicX: number;\n        let basicY: number;\n\n        switch (this._orientation) {\n            case 1:\n                basicX = rotatedX;\n                basicY = rotatedY;\n                break;\n            case 3:\n                basicX = 1 - rotatedX;\n                basicY = 1 - rotatedY;\n                break;\n            case 6:\n                basicX = 1 - rotatedY;\n                basicY = rotatedX;\n                break;\n            case 8:\n                basicX = rotatedY;\n                basicY = 1 - rotatedX;\n                break;\n            default:\n                basicX = rotatedX;\n                basicY = rotatedY;\n                break;\n        }\n\n        return [basicX, basicY];\n    }\n\n    /**\n     * Determines if the gpano information indicates a full panorama.\n     *\n     * @returns {boolean} Value determining if the gpano information indicates\n     * a full panorama.\n     */\n    private _fullPano(): boolean {\n        return this.gpano != null &&\n            this.gpano.CroppedAreaLeftPixels === 0 &&\n            this.gpano.CroppedAreaTopPixels === 0 &&\n            this.gpano.CroppedAreaImageWidthPixels === this.gpano.FullPanoWidthPixels &&\n            this.gpano.CroppedAreaImageHeightPixels === this.gpano.FullPanoHeightPixels;\n    }\n\n    /**\n     * Checks a value and returns it if it exists and is larger than 0.\n     * Fallbacks if it is null.\n     *\n     * @param {number} value - Value to check.\n     * @param {number} fallback - Value to fall back to.\n     * @returns {number} The value or its fallback value if it is not defined or negative.\n     */\n    private _getValue(value: number, fallback: number): number {\n        return value != null && value > 0 ? value : fallback;\n    }\n\n    /**\n     * Creates the extrinsic camera matrix [ R | t ].\n     *\n     * @param {Array<number>} rotation - Rotation vector in angle axis representation.\n     * @param {Array<number>} translation - Translation vector.\n     * @returns {THREE.Matrix4} Extrisic camera matrix.\n     */\n    private _getRt(rotation: number[], translation: number[]): THREE.Matrix4 {\n        let axis: THREE.Vector3 = new THREE.Vector3(rotation[0], rotation[1], rotation[2]);\n        let angle: number = axis.length();\n        if (angle > 0) {\n            axis.normalize();\n        }\n\n        let rt: THREE.Matrix4 = new THREE.Matrix4();\n        rt.makeRotationAxis(axis, angle);\n        rt.setPosition(\n            new THREE.Vector3(\n                translation[0],\n                translation[1],\n                translation[2]));\n\n        return rt;\n    }\n\n    /**\n     * Calculates the scaled extrinsic camera matrix scale * [ R | t ].\n     *\n     * @param {THREE.Matrix4} rt - Extrisic camera matrix.\n     * @param {number} scale - Scale factor.\n     * @returns {THREE.Matrix4} Scaled extrisic camera matrix.\n     */\n    private _getSrt(rt: THREE.Matrix4, scale: number): THREE.Matrix4 {\n        let srt: THREE.Matrix4 = rt.clone();\n        let elements: Float32Array = srt.elements;\n\n        elements[12] = scale * elements[12];\n        elements[13] = scale * elements[13];\n        elements[14] = scale * elements[14];\n\n        srt.scale(new THREE.Vector3(scale, scale, scale));\n\n        return srt;\n    }\n\n    private _getBasicRt(rt: THREE.Matrix4, orientation: number): THREE.Matrix4 {\n        const axis: THREE.Vector3 = new THREE.Vector3(0, 0, 1);\n        let angle: number = 0;\n\n        switch (orientation) {\n            case 3:\n                angle = Math.PI;\n                break;\n            case 6:\n                angle = Math.PI / 2;\n                break;\n            case 8:\n                angle = 3 * Math.PI / 2;\n                break;\n            default:\n                break;\n        }\n\n        return new THREE.Matrix4()\n            .makeRotationAxis(axis, angle)\n            .multiply(rt);\n    }\n\n    private _getRadialPeak(k1: number, k2: number): number {\n        const a: number = 5 * k2;\n        const b: number = 3 * k1;\n        const c: number = 1;\n        const d: number = b ** 2 - 4 * a * c;\n\n        if (d < 0) {\n            return undefined;\n        }\n\n        const root1: number = (-b - Math.sqrt(d)) / 2 / a;\n        const root2: number = (-b + Math.sqrt(d)) / 2 / a;\n\n        const minRoot: number = Math.min(root1, root2);\n        const maxRoot: number = Math.max(root1, root2);\n\n        return minRoot > 0 ?\n            Math.sqrt(minRoot) :\n            maxRoot > 0 ?\n                Math.sqrt(maxRoot) :\n                undefined;\n    }\n\n    /**\n     * Calculate a transformation matrix from normalized coordinates for\n     * texture map coordinates.\n     *\n     * @returns {THREE.Matrix4} Normalized coordinates to texture map\n     * coordinates transformation matrix.\n     */\n    private _normalizedToTextureMatrix(): THREE.Matrix4 {\n        const size: number = Math.max(this._width, this._height);\n\n        const scaleX: number = this._orientation < 5 ? this._textureScale[0] : this._textureScale[1];\n        const scaleY: number = this._orientation < 5 ? this._textureScale[1] : this._textureScale[0];\n\n        const w: number = size / this._width * scaleX;\n        const h: number = size / this._height * scaleY;\n\n        switch (this._orientation) {\n            case 1:\n                return new THREE.Matrix4().set(w, 0, 0, 0.5, 0, -h, 0, 0.5, 0, 0, 1, 0, 0, 0, 0, 1);\n            case 3:\n                return new THREE.Matrix4().set(-w, 0, 0, 0.5, 0, h, 0, 0.5, 0, 0, 1, 0, 0, 0, 0, 1);\n            case 6:\n                return new THREE.Matrix4().set(0, -h, 0, 0.5, -w, 0, 0, 0.5, 0, 0, 1, 0, 0, 0, 0, 1);\n            case 8:\n                return new THREE.Matrix4().set(0, h, 0, 0.5, w, 0, 0, 0.5, 0, 0, 1, 0, 0, 0, 0, 1);\n            default:\n                return new THREE.Matrix4().set(w, 0, 0, 0.5, 0, -h, 0, 0.5, 0, 0, 1, 0, 0, 0, 0, 1);\n        }\n    }\n}\n",
+    "import * as THREE from \"three\";\n\nimport {Transform} from \"../Geo\";\n\n/**\n * @class ViewportCoords\n *\n * @classdesc Provides methods for calculating 2D coordinate conversions\n * as well as 3D projection and unprojection.\n *\n * Basic coordinates are 2D coordinates on the [0, 1] interval and\n * have the origin point, (0, 0), at the top left corner and the\n * maximum value, (1, 1), at the bottom right corner of the original\n * image.\n *\n * Viewport coordinates are 2D coordinates on the [-1, 1] interval and\n * have the origin point in the center. The bottom left corner point is\n * (-1, -1) and the top right corner point is (1, 1).\n *\n * Canvas coordiantes are 2D pixel coordinates on the [0, canvasWidth] and\n * [0, canvasHeight] intervals. The origin point (0, 0) is in the top left\n * corner and the maximum value is (canvasWidth, canvasHeight) is in the\n * bottom right corner.\n *\n * 3D coordinates are in the topocentric world reference frame.\n */\nexport class ViewportCoords {\n    private _unprojectDepth: number = 200;\n\n    /**\n     * Convert basic coordinates to canvas coordinates.\n     *\n     * @description Transform origin and camera position needs to be the\n     * equal for reliable return value.\n     *\n     * @param {number} basicX - Basic X coordinate.\n     * @param {number} basicY - Basic Y coordinate.\n     * @param {HTMLElement} container - The viewer container.\n     * @param {Transform} transform - Transform of the node to unproject from.\n     * @param {THREE.Camera} camera - Camera used in rendering.\n     * @returns {Array<number>} 2D canvas coordinates.\n     */\n    public basicToCanvas(\n        basicX: number,\n        basicY: number,\n        container: { offsetHeight: number, offsetWidth: number },\n        transform: Transform,\n        camera: THREE.Camera):\n        number[] {\n\n        const point3d: number[] = transform.unprojectBasic([basicX, basicY], this._unprojectDepth);\n        const canvas: number[] = this.projectToCanvas(point3d, container, camera);\n\n        return canvas;\n    }\n\n    /**\n     * Convert basic coordinates to canvas coordinates safely. If 3D point is\n     * behind camera null will be returned.\n     *\n     * @description Transform origin and camera position needs to be the\n     * equal for reliable return value.\n     *\n     * @param {number} basicX - Basic X coordinate.\n     * @param {number} basicY - Basic Y coordinate.\n     * @param {HTMLElement} container - The viewer container.\n     * @param {Transform} transform - Transform of the node to unproject from.\n     * @param {THREE.Camera} camera - Camera used in rendering.\n     * @returns {Array<number>} 2D canvas coordinates if the basic point represents a 3D point\n     * in front of the camera, otherwise null.\n     */\n    public basicToCanvasSafe(\n        basicX: number,\n        basicY: number,\n        container: { offsetHeight: number, offsetWidth: number },\n        transform: Transform,\n        camera: THREE.Camera):\n        number[] {\n\n        const viewport: number[] = this.basicToViewportSafe(basicX, basicY, transform, camera);\n\n        if (viewport === null) {\n            return null;\n        }\n\n        const canvas: number[] = this.viewportToCanvas(viewport[0], viewport[1], container);\n\n        return canvas;\n    }\n\n    /**\n     * Convert basic coordinates to viewport coordinates.\n     *\n     * @description Transform origin and camera position needs to be the\n     * equal for reliable return value.\n     *\n     * @param {number} basicX - Basic X coordinate.\n     * @param {number} basicY - Basic Y coordinate.\n     * @param {Transform} transform - Transform of the node to unproject from.\n     * @param {THREE.Camera} camera - Camera used in rendering.\n     * @returns {Array<number>} 2D viewport coordinates.\n     */\n    public basicToViewport(\n        basicX: number,\n        basicY: number,\n        transform: Transform,\n        camera: THREE.Camera):\n        number[] {\n\n        const point3d: number[] = transform.unprojectBasic([basicX, basicY], this._unprojectDepth);\n        const viewport: number[] = this.projectToViewport(point3d, camera);\n\n        return viewport;\n    }\n\n    /**\n     * Convert basic coordinates to viewport coordinates safely. If 3D point is\n     * behind camera null will be returned.\n     *\n     * @description Transform origin and camera position needs to be the\n     * equal for reliable return value.\n     *\n     * @param {number} basicX - Basic X coordinate.\n     * @param {number} basicY - Basic Y coordinate.\n     * @param {Transform} transform - Transform of the node to unproject from.\n     * @param {THREE.Camera} camera - Camera used in rendering.\n     * @returns {Array<number>} 2D viewport coordinates.\n     */\n    public basicToViewportSafe(\n        basicX: number,\n        basicY: number,\n        transform: Transform,\n        camera: THREE.Camera):\n        number[] {\n\n        const point3d: number[] = transform.unprojectBasic([basicX, basicY], this._unprojectDepth);\n        const pointCamera: number[] = this.worldToCamera(point3d, camera);\n\n        if (pointCamera[2] > 0) {\n            return null;\n        }\n\n        const viewport: number[] = this.projectToViewport(point3d, camera);\n\n        return viewport;\n    }\n\n    /**\n     * Convert camera 3D coordinates to viewport coordinates.\n     *\n     * @param {number} pointCamera - 3D point in camera coordinate system.\n     * @param {THREE.Camera} camera - Camera used in rendering.\n     * @returns {Array<number>} 2D viewport coordinates.\n     */\n    public cameraToViewport(\n        pointCamera: number[],\n        camera: THREE.Camera):\n        number[] {\n\n        const viewport: THREE.Vector3 =\n            new THREE.Vector3().fromArray(pointCamera)\n                .applyMatrix4(camera.projectionMatrix);\n\n        return [viewport.x, viewport.y];\n    }\n\n    /**\n     * Get canvas pixel position from event.\n     *\n     * @param {Event} event - Event containing clientX and clientY properties.\n     * @param {HTMLElement} element - HTML element.\n     * @returns {Array<number>} 2D canvas coordinates.\n     */\n    public canvasPosition(event: { clientX: number, clientY: number }, element: HTMLElement): number[] {\n        const clientRect: ClientRect = element.getBoundingClientRect();\n\n        const canvasX: number = event.clientX - clientRect.left - element.clientLeft;\n        const canvasY: number = event.clientY - clientRect.top - element.clientTop;\n\n        return [canvasX, canvasY];\n    }\n\n    /**\n     * Convert canvas coordinates to basic coordinates.\n     *\n     * @description Transform origin and camera position needs to be the\n     * equal for reliable return value.\n     *\n     * @param {number} canvasX - Canvas X coordinate.\n     * @param {number} canvasY - Canvas Y coordinate.\n     * @param {HTMLElement} container - The viewer container.\n     * @param {Transform} transform - Transform of the node to unproject from.\n     * @param {THREE.Camera} camera - Camera used in rendering.\n     * @returns {Array<number>} 2D basic coordinates.\n     */\n    public canvasToBasic(\n        canvasX: number,\n        canvasY: number,\n        container: { offsetHeight: number, offsetWidth: number },\n        transform: Transform,\n        camera: THREE.Camera):\n        number[] {\n\n        const point3d: number[] =\n            this.unprojectFromCanvas(canvasX, canvasY, container, camera)\n                .toArray();\n\n        const basic: number[] = transform.projectBasic(point3d);\n\n        return basic;\n    }\n\n    /**\n     * Convert canvas coordinates to viewport coordinates.\n     *\n     * @param {number} canvasX - Canvas X coordinate.\n     * @param {number} canvasY - Canvas Y coordinate.\n     * @param {HTMLElement} container - The viewer container.\n     * @returns {Array<number>} 2D viewport coordinates.\n     */\n    public canvasToViewport(\n        canvasX: number,\n        canvasY: number,\n        container: { offsetHeight: number, offsetWidth: number }):\n        number[] {\n\n        const [canvasWidth, canvasHeight]: number[] = this.containerToCanvas(container);\n        const viewportX: number = 2 * canvasX / canvasWidth - 1;\n        const viewportY: number = 1 - 2 * canvasY / canvasHeight;\n\n        return [viewportX, viewportY];\n    }\n\n    /**\n     * Determines the width and height of the container in canvas coordinates.\n     *\n     * @param {HTMLElement} container - The viewer container.\n     * @returns {Array<number>} 2D canvas coordinates.\n     */\n    public containerToCanvas(container: { offsetHeight: number, offsetWidth: number }): number[] {\n        return [container.offsetWidth, container.offsetHeight];\n    }\n\n    /**\n     * Determine basic distances from image to canvas corners.\n     *\n     * @description Transform origin and camera position needs to be the\n     * equal for reliable return value.\n     *\n     * Determines the smallest basic distance for every side of the canvas.\n     *\n     * @param {Transform} transform - Transform of the node to unproject from.\n     * @param {THREE.Camera} camera - Camera used in rendering.\n     * @returns {Array<number>} Array of basic distances as [top, right, bottom, left].\n     */\n    public getBasicDistances(\n        transform: Transform,\n        camera: THREE.Camera):\n        number[] {\n\n        const topLeftBasic: number[] = this.viewportToBasic(-1, 1, transform, camera);\n        const topRightBasic: number[] = this.viewportToBasic(1, 1, transform, camera);\n        const bottomRightBasic: number[] = this.viewportToBasic(1, -1, transform, camera);\n        const bottomLeftBasic: number[] = this.viewportToBasic(-1, -1, transform, camera);\n\n        let topBasicDistance: number = 0;\n        let rightBasicDistance: number = 0;\n        let bottomBasicDistance: number = 0;\n        let leftBasicDistance: number = 0;\n\n        if (topLeftBasic[1] < 0 && topRightBasic[1] < 0) {\n            topBasicDistance = topLeftBasic[1] > topRightBasic[1] ?\n                -topLeftBasic[1] :\n                -topRightBasic[1];\n        }\n\n        if (topRightBasic[0] > 1 && bottomRightBasic[0] > 1) {\n            rightBasicDistance = topRightBasic[0] < bottomRightBasic[0] ?\n                topRightBasic[0] - 1 :\n                bottomRightBasic[0] - 1;\n        }\n\n        if (bottomRightBasic[1] > 1 && bottomLeftBasic[1] > 1) {\n            bottomBasicDistance = bottomRightBasic[1] < bottomLeftBasic[1] ?\n                bottomRightBasic[1] - 1 :\n                bottomLeftBasic[1] - 1;\n        }\n\n        if (bottomLeftBasic[0] < 0 && topLeftBasic[0] < 0) {\n            leftBasicDistance = bottomLeftBasic[0] > topLeftBasic[0] ?\n                -bottomLeftBasic[0] :\n                -topLeftBasic[0];\n        }\n\n        return [topBasicDistance, rightBasicDistance, bottomBasicDistance, leftBasicDistance];\n    }\n\n    /**\n     * Determine pixel distances from image to canvas corners.\n     *\n     * @description Transform origin and camera position needs to be the\n     * equal for reliable return value.\n     *\n     * Determines the smallest pixel distance for every side of the canvas.\n     *\n     * @param {HTMLElement} container - The viewer container.\n     * @param {Transform} transform - Transform of the node to unproject from.\n     * @param {THREE.Camera} camera - Camera used in rendering.\n     * @returns {Array<number>} Array of pixel distances as [top, right, bottom, left].\n     */\n    public getPixelDistances(\n        container: { offsetHeight: number, offsetWidth: number },\n        transform: Transform,\n        camera: THREE.Camera):\n        number[] {\n\n        const topLeftBasic: number[] = this.viewportToBasic(-1, 1, transform, camera);\n        const topRightBasic: number[] = this.viewportToBasic(1, 1, transform, camera);\n        const bottomRightBasic: number[] = this.viewportToBasic(1, -1, transform, camera);\n        const bottomLeftBasic: number[] = this.viewportToBasic(-1, -1, transform, camera);\n\n        let topPixelDistance: number = 0;\n        let rightPixelDistance: number = 0;\n        let bottomPixelDistance: number = 0;\n        let leftPixelDistance: number = 0;\n\n        const [canvasWidth, canvasHeight]: number[] = this.containerToCanvas(container);\n\n        if (topLeftBasic[1] < 0 && topRightBasic[1] < 0) {\n            const basicX: number = topLeftBasic[1] > topRightBasic[1] ?\n                topLeftBasic[0] :\n                topRightBasic[0];\n\n            const canvas: number[] = this.basicToCanvas(basicX, 0, container, transform, camera);\n\n            topPixelDistance = canvas[1] > 0 ? canvas[1] : 0;\n        }\n\n        if (topRightBasic[0] > 1 && bottomRightBasic[0] > 1) {\n            const basicY: number = topRightBasic[0] < bottomRightBasic[0] ?\n                topRightBasic[1] :\n                bottomRightBasic[1];\n\n            const canvas: number[] = this.basicToCanvas(1, basicY, container, transform, camera);\n\n            rightPixelDistance = canvas[0] < canvasWidth ? canvasWidth - canvas[0] : 0;\n        }\n\n        if (bottomRightBasic[1] > 1 && bottomLeftBasic[1] > 1) {\n            const basicX: number = bottomRightBasic[1] < bottomLeftBasic[1] ?\n                bottomRightBasic[0] :\n                bottomLeftBasic[0];\n\n            const canvas: number[] = this.basicToCanvas(basicX, 1, container, transform, camera);\n\n            bottomPixelDistance = canvas[1] < canvasHeight ? canvasHeight - canvas[1] : 0;\n        }\n\n        if (bottomLeftBasic[0] < 0 && topLeftBasic[0] < 0) {\n            const basicY: number = bottomLeftBasic[0] > topLeftBasic[0] ?\n                bottomLeftBasic[1] :\n                topLeftBasic[1];\n\n            const canvas: number[] = this.basicToCanvas(0, basicY, container, transform, camera);\n\n            leftPixelDistance = canvas[0] > 0 ? canvas[0] : 0;\n        }\n\n        return [topPixelDistance, rightPixelDistance, bottomPixelDistance, leftPixelDistance];\n    }\n\n    /**\n     * Determine if an event occured inside an element.\n     *\n     * @param {Event} event - Event containing clientX and clientY properties.\n     * @param {HTMLElement} element - HTML element.\n     * @returns {boolean} Value indicating if the event occured inside the element or not.\n     */\n    public insideElement(event: { clientX: number, clientY: number }, element: HTMLElement): boolean {\n        const clientRect: ClientRect = element.getBoundingClientRect();\n\n        const minX: number = clientRect.left + element.clientLeft;\n        const maxX: number = minX + element.clientWidth;\n        const minY: number = clientRect.top + element.clientTop;\n        const maxY: number = minY + element.clientHeight;\n\n        return event.clientX > minX &&\n            event.clientX < maxX &&\n            event.clientY > minY &&\n            event.clientY < maxY;\n    }\n\n    /**\n     * Project 3D world coordinates to canvas coordinates.\n     *\n     * @param {Array<number>} point3D - 3D world coordinates.\n     * @param {HTMLElement} container - The viewer container.\n     * @param {THREE.Camera} camera - Camera used in rendering.\n     * @returns {Array<number>} 2D canvas coordinates.\n     */\n    public projectToCanvas(\n        point3d: number[],\n        container: { offsetHeight: number, offsetWidth: number },\n        camera: THREE.Camera):\n        number[] {\n\n        const viewport: number[] = this.projectToViewport(point3d, camera);\n        const canvas: number[] =\n            this.viewportToCanvas(viewport[0], viewport[1], container);\n\n        return canvas;\n    }\n\n    /**\n     * Project 3D world coordinates to canvas coordinates safely. If 3D\n     * point is behind camera null will be returned.\n     *\n     * @param {Array<number>} point3D - 3D world coordinates.\n     * @param {HTMLElement} container - The viewer container.\n     * @param {THREE.Camera} camera - Camera used in rendering.\n     * @returns {Array<number>} 2D canvas coordinates.\n     */\n    public projectToCanvasSafe(\n        point3d: number[],\n        container: { offsetHeight: number, offsetWidth: number },\n        camera: THREE.Camera):\n        number[] {\n\n        const pointCamera: number[] = this.worldToCamera(point3d, camera);\n\n        if (pointCamera[2] > 0) {\n            return null;\n        }\n\n        const viewport: number[] = this.projectToViewport(point3d, camera);\n        const canvas: number[] =\n            this.viewportToCanvas(viewport[0], viewport[1], container);\n\n        return canvas;\n    }\n\n    /**\n     * Project 3D world coordinates to viewport coordinates.\n     *\n     * @param {Array<number>} point3D - 3D world coordinates.\n     * @param {THREE.Camera} camera - Camera used in rendering.\n     * @returns {Array<number>} 2D viewport coordinates.\n     */\n    public projectToViewport(\n        point3d: number[],\n        camera: THREE.Camera):\n        number[] {\n\n        const viewport: THREE.Vector3 =\n            new THREE.Vector3(point3d[0], point3d[1], point3d[2])\n                .project(camera);\n\n        return [viewport.x, viewport.y];\n    }\n\n    /**\n     * Uproject canvas coordinates to 3D world coordinates.\n     *\n     * @param {number} canvasX - Canvas X coordinate.\n     * @param {number} canvasY - Canvas Y coordinate.\n     * @param {HTMLElement} container - The viewer container.\n     * @param {THREE.Camera} camera - Camera used in rendering.\n     * @returns {Array<number>} 3D world coordinates.\n     */\n    public unprojectFromCanvas(\n        canvasX: number,\n        canvasY: number,\n        container: { offsetHeight: number, offsetWidth: number },\n        camera: THREE.Camera):\n        THREE.Vector3 {\n\n        const viewport: number[] =\n            this.canvasToViewport(canvasX, canvasY, container);\n\n        const point3d: THREE.Vector3 =\n            this.unprojectFromViewport(viewport[0], viewport[1], camera);\n\n        return point3d;\n    }\n\n    /**\n     * Unproject viewport coordinates to 3D world coordinates.\n     *\n     * @param {number} viewportX - Viewport X coordinate.\n     * @param {number} viewportY - Viewport Y coordinate.\n     * @param {THREE.Camera} camera - Camera used in rendering.\n     * @returns {Array<number>} 3D world coordinates.\n     */\n    public unprojectFromViewport(\n        viewportX: number,\n        viewportY: number,\n        camera: THREE.Camera):\n        THREE.Vector3 {\n\n        const point3d: THREE.Vector3 =\n            new THREE.Vector3(viewportX, viewportY, 1)\n                .unproject(camera);\n\n        return point3d;\n    }\n\n    /**\n     * Convert viewport coordinates to basic coordinates.\n     *\n     * @description Transform origin and camera position needs to be the\n     * equal for reliable return value.\n     *\n     * @param {number} viewportX - Viewport X coordinate.\n     * @param {number} viewportY - Viewport Y coordinate.\n     * @param {Transform} transform - Transform of the node to unproject from.\n     * @param {THREE.Camera} camera - Camera used in rendering.\n     * @returns {Array<number>} 2D basic coordinates.\n     */\n    public viewportToBasic(\n        viewportX: number,\n        viewportY: number,\n        transform: Transform,\n        camera: THREE.Camera):\n        number[] {\n\n        const point3d: number[] =\n            new THREE.Vector3(viewportX, viewportY, 1)\n                .unproject(camera)\n                .toArray();\n\n        const basic: number[] = transform.projectBasic(point3d);\n\n        return basic;\n    }\n\n    /**\n     * Convert viewport coordinates to canvas coordinates.\n     *\n     * @param {number} viewportX - Viewport X coordinate.\n     * @param {number} viewportY - Viewport Y coordinate.\n     * @param {HTMLElement} container - The viewer container.\n     * @returns {Array<number>} 2D canvas coordinates.\n     */\n    public viewportToCanvas(\n        viewportX: number,\n        viewportY: number,\n        container: { offsetHeight: number, offsetWidth: number }):\n        number[] {\n\n        const [canvasWidth, canvasHeight]: number[] = this.containerToCanvas(container);\n        const canvasX: number = canvasWidth * (viewportX + 1) / 2;\n        const canvasY: number = -canvasHeight * (viewportY - 1) / 2;\n\n        return [canvasX, canvasY];\n    }\n\n    /**\n     * Convert 3D world coordinates to 3D camera coordinates.\n     *\n     * @param {number} point3D - 3D point in world coordinate system.\n     * @param {THREE.Camera} camera - Camera used in rendering.\n     * @returns {Array<number>} 3D camera coordinates.\n     */\n    public worldToCamera(\n        point3d: number[],\n        camera: THREE.Camera): number[] {\n\n        const pointCamera: THREE.Vector3 =\n            new THREE.Vector3(point3d[0], point3d[1], point3d[2])\n                .applyMatrix4(camera.matrixWorldInverse);\n\n        return pointCamera.toArray();\n    }\n}\n\nexport default ViewportCoords;\n",
     "import {\n    FilterExpression,\n    FilterOperation,\n    FilterOperator,\n    FilterValue,\n    Node,\n} from \"../Graph\";\nimport {Func} from \"../Utils\";\n\nexport type FilterFunction = Func<Node, boolean>;\n\n/**\n * @class Filter\n *\n * @classdesc Represents a class for creating node filters. Implementation and\n * definitions based on https://github.com/mapbox/feature-filter.\n */\nexport class FilterCreator {\n    /**\n     * Create a filter from a filter expression.\n     *\n     * @description The following filters are supported:\n     *\n     * Comparison\n     * `==`\n     * `!=`\n     * `<`\n     * `<=`\n     * `>`\n     * `>=`\n     *\n     * Set membership\n     * `in`\n     * `!in`\n     *\n     * Combining\n     * `all`\n     *\n     * @param {FilterExpression} filter - Comparison, set membership or combinding filter\n     * expression.\n     * @returns {FilterFunction} Function taking a node and returning a boolean that\n     * indicates whether the node passed the test or not.\n     */\n    public createFilter(filter: FilterExpression): FilterFunction {\n        return <FilterFunction>new Function(\"node\", \"return \" + this._compile(filter) + \";\");\n    }\n\n    private _compile(filter: FilterExpression): string {\n        if (filter == null || filter.length <= 1) {\n            return \"true\";\n        }\n\n        const operator: FilterOperator = <FilterOperator>filter[0];\n        const operation: string =\n            operator === \"==\" ? this._compileComparisonOp(\"===\", <string>filter[1], filter[2], false) :\n            operator === \"!=\" ? this._compileComparisonOp(\"!==\", <string>filter[1], filter[2], false) :\n            operator === \">\" ||\n            operator === \">=\" ||\n            operator === \"<\" ||\n            operator === \"<=\" ? this._compileComparisonOp(operator, <string>filter[1], filter[2], true) :\n            operator === \"in\" ?\n                this._compileInOp<FilterValue>(<string>filter[1], <FilterValue[]>filter.slice(2)) :\n            operator === \"!in\" ?\n                this._compileNegation(\n                    this._compileInOp<FilterValue>(<string>filter[1], <FilterValue[]>filter.slice(2))) :\n            operator === \"all\" ? this._compileLogicalOp(<FilterOperation[]>filter.slice(1), \"&&\") :\n            \"true\";\n\n        return \"(\" + operation + \")\";\n    }\n\n    private _compare<T>(a: T, b: T): number {\n        return a < b ? -1 : a > b ? 1 : 0;\n    }\n\n    private _compileComparisonOp<T>(operator: string, property: string, value: T, checkType: boolean): string {\n        const left: string = this._compilePropertyReference(property);\n        const right: string = JSON.stringify(value);\n\n        return (checkType ? \"typeof \" + left + \"===typeof \" + right + \"&&\" : \"\") + left + operator + right;\n    }\n\n    private _compileInOp<T>(property: string, values: T[]): string {\n        const compare: (a: T, b: T) => number = this._compare;\n        const left: string = JSON.stringify(values.sort(compare));\n        const right: string = this._compilePropertyReference(property);\n\n        return left + \".indexOf(\" + right + \")!==-1\";\n    }\n\n    private _compileLogicalOp(filters: FilterOperation[], operator: string): string {\n        const compile: (filter: FilterExpression) => string = this._compile.bind(this);\n\n        return filters.map<string>(compile).join(operator);\n    }\n\n    private _compileNegation(expression: string): string {\n        return \"!(\" + expression + \")\";\n    }\n\n    private _compilePropertyReference(property: string): string {\n        return \"node[\" + JSON.stringify(property) + \"]\";\n    }\n}\n\nexport default FilterCreator;\n",
     "import {merge as observableMerge, from as observableFrom, of as observableOf, Observable, Subject} from \"rxjs\";\n\nimport {tap, refCount, catchError, publish, finalize, map, reduce, mergeMap, mergeAll, last} from \"rxjs/operators\";\nimport * as rbush from \"rbush\";\n\nimport {\n    APIv3,\n    ICoreNode,\n    IFillNode,\n    IFullNode,\n    ILatLon,\n    ISequence,\n} from \"../API\";\nimport {\n    IEdge,\n    IPotentialEdge,\n    EdgeCalculator,\n} from \"../Edge\";\nimport {GraphMapillaryError} from \"../Error\";\nimport {\n    FilterCreator,\n    FilterExpression,\n    FilterFunction,\n    IGraphConfiguration,\n    Node,\n    NodeCache,\n    Sequence,\n    GraphCalculator,\n} from \"../Graph\";\n\ntype NodeIndexItem = {\n    lat: number;\n    lon: number;\n    node: Node;\n};\n\ntype NodeTiles = {\n    cache: string[];\n    caching: string[];\n};\n\ntype SpatialArea = {\n    all: { [key: string]: Node };\n    cacheKeys: string[];\n    cacheNodes: { [key: string]: Node };\n};\n\ntype NodeAccess = {\n    node: Node;\n    accessed: number;\n};\n\ntype TileAccess = {\n    nodes: Node[];\n    accessed: number;\n};\n\ntype SequenceAccess = {\n    sequence: Sequence;\n    accessed: number;\n};\n\n/**\n * @class Graph\n *\n * @classdesc Represents a graph of nodes with edges.\n */\nexport class Graph {\n    private _apiV3: APIv3;\n\n    /**\n     * Nodes that have initialized cache with a timestamp of last access.\n     */\n    private _cachedNodes: { [key: string]: NodeAccess };\n\n    /**\n     * Nodes for which the required tiles are cached.\n     */\n    private _cachedNodeTiles: { [key: string]: boolean };\n\n    /**\n     * Sequences for which the nodes are cached.\n     */\n    private _cachedSequenceNodes: { [sequenceKey: string]: boolean };\n\n    /**\n     * Nodes for which the spatial edges are cached.\n     */\n    private _cachedSpatialEdges: { [key: string]: Node };\n\n    /**\n     * Cached tiles with a timestamp of last access.\n     */\n    private _cachedTiles: { [h: string]: TileAccess };\n\n    /**\n     * Nodes for which fill properties are being retreived.\n     */\n    private _cachingFill$: { [key: string]: Observable<Graph> };\n\n    /**\n     * Nodes for which full properties are being retrieved.\n     */\n    private _cachingFull$: { [key: string]: Observable<Graph> };\n\n    /**\n     * Sequences for which the nodes are being retrieved.\n     */\n    private _cachingSequenceNodes$: { [sequenceKey: string]: Observable<Graph> };\n\n    /**\n     * Sequences that are being retrieved.\n     */\n    private _cachingSequences$: { [sequenceKey: string]: Observable<Graph> };\n\n    /**\n     * Nodes for which the spatial area fill properties are being retrieved.\n     */\n    private _cachingSpatialArea$: { [key: string]: Observable<Graph>[] };\n\n    /**\n     * Tiles that are being retrieved.\n     */\n    private _cachingTiles$: { [h: string]: Observable<Graph> };\n\n    private _changed$: Subject<Graph>;\n\n    private _defaultAlt: number;\n    private _edgeCalculator: EdgeCalculator;\n    private _filter: FilterFunction;\n    private _filterCreator: FilterCreator;\n    private _graphCalculator: GraphCalculator;\n    private _configuration: IGraphConfiguration;\n\n    /**\n     * All nodes in the graph.\n     */\n    private _nodes: { [key: string]: Node };\n\n    /**\n     * Contains all nodes in the graph. Used for fast spatial lookups.\n     */\n    private _nodeIndex: rbush.RBush<NodeIndexItem>;\n\n    /**\n     * All node index items sorted in tiles for easy uncache.\n     */\n    private _nodeIndexTiles: { [h: string]: NodeIndexItem[] };\n\n    /**\n     * Node to tile dictionary for easy tile access updates.\n     */\n    private _nodeToTile: { [key: string]: string };\n\n    /**\n     * Nodes retrieved before tiles, stored on tile level.\n     */\n    private _preStored: { [h: string]: { [key: string]: Node } };\n\n    /**\n     * Tiles required for a node to retrive spatial area.\n     */\n    private _requiredNodeTiles: { [key: string]: NodeTiles };\n\n    /**\n     * Other nodes required for node to calculate spatial edges.\n     */\n    private _requiredSpatialArea: { [key: string]: SpatialArea };\n\n    /**\n     * All sequences in graph with a timestamp of last access.\n     */\n    private _sequences: { [skey: string]: SequenceAccess };\n\n    private _tilePrecision: number;\n    private _tileThreshold: number;\n\n    /**\n     * Create a new graph instance.\n     *\n     * @param {APIv3} [apiV3] - API instance for retrieving data.\n     * @param {rbush.RBush<NodeIndexItem>} [nodeIndex] - Node index for fast spatial retreival.\n     * @param {GraphCalculator} [graphCalculator] - Instance for graph calculations.\n     * @param {EdgeCalculator} [edgeCalculator] - Instance for edge calculations.\n     * @param {FilterCreator} [filterCreator] - Instance for  filter creation.\n     * @param {IGraphConfiguration} [configuration] - Configuration struct.\n     */\n    constructor(\n        apiV3: APIv3,\n        nodeIndex?: rbush.RBush<NodeIndexItem>,\n        graphCalculator?: GraphCalculator,\n        edgeCalculator?: EdgeCalculator,\n        filterCreator?: FilterCreator,\n        configuration?: IGraphConfiguration) {\n\n        this._apiV3 = apiV3;\n\n        this._cachedNodes = {};\n        this._cachedNodeTiles = {};\n        this._cachedSequenceNodes = {};\n        this._cachedSpatialEdges = {};\n        this._cachedTiles = {};\n\n        this._cachingFill$ = {};\n        this._cachingFull$ = {};\n        this._cachingSequenceNodes$ = {};\n        this._cachingSequences$ = {};\n        this._cachingSpatialArea$ = {};\n        this._cachingTiles$ = {};\n\n        this._changed$ = new Subject<Graph>();\n\n        this._defaultAlt = 2;\n        this._edgeCalculator = edgeCalculator != null ? edgeCalculator : new EdgeCalculator();\n        this._filterCreator = filterCreator != null ? filterCreator : new FilterCreator();\n        this._filter = this._filterCreator.createFilter(undefined);\n        this._graphCalculator = graphCalculator != null ? graphCalculator : new GraphCalculator();\n        this._configuration = configuration != null ?\n            configuration :\n            {\n                maxSequences: 50,\n                maxUnusedNodes: 100,\n                maxUnusedPreStoredNodes: 30,\n                maxUnusedTiles: 20,\n            };\n\n        this._nodes = {};\n        this._nodeIndex = nodeIndex != null ? nodeIndex : rbush<NodeIndexItem>(16, [\".lat\", \".lon\", \".lat\", \".lon\"]);\n        this._nodeIndexTiles = {};\n        this._nodeToTile = {};\n\n        this._preStored = {};\n\n        this._requiredNodeTiles = {};\n        this._requiredSpatialArea = {};\n\n        this._sequences = {};\n\n        this._tilePrecision = 7;\n        this._tileThreshold = 20;\n    }\n\n    /**\n     * Get changed$.\n     *\n     * @returns {Observable<Graph>} Observable emitting\n     * the graph every time it has changed.\n     */\n    public get changed$(): Observable<Graph> {\n        return this._changed$;\n    }\n\n    /**\n     * Caches the full node data for all images within a bounding\n     * box.\n     *\n     * @description The node assets are not cached.\n     *\n     * @param {ILatLon} sw - South west corner of bounding box.\n     * @param {ILatLon} ne - North east corner of bounding box.\n     * @returns {Observable<Graph>} Observable emitting the full\n     * nodes in the bounding box.\n     */\n    public cacheBoundingBox$(sw: ILatLon, ne: ILatLon): Observable<Node[]> {\n        const cacheTiles$: Observable<Graph>[] = this._graphCalculator.encodeHsFromBoundingBox(sw, ne)\n            .filter(\n                (h: string): boolean => {\n                    return !(h in this._cachedTiles);\n                })\n            .map(\n                (h): Observable<Graph> => {\n                    return h in this._cachingTiles$ ?\n                        this._cachingTiles$[h] :\n                        this._cacheTile$(h);\n                });\n\n        if (cacheTiles$.length === 0) {\n            cacheTiles$.push(observableOf(this));\n        }\n\n        return observableFrom(cacheTiles$).pipe(\n            mergeAll(),\n            last(),\n            mergeMap(\n                (graph: Graph): Observable<Node[]> => {\n                    const nodes: Node[] = this._nodeIndex\n                        .search({\n                            maxX: ne.lat,\n                            maxY: ne.lon,\n                            minX: sw.lat,\n                            minY: sw.lon,\n                        })\n                        .map(\n                            (item: NodeIndexItem): Node => {\n                                return item.node;\n                            });\n\n                    const fullNodes: Node[] = [];\n                    const coreNodes: string[] = [];\n\n                    for (const node of nodes) {\n                        if (node.full) {\n                            fullNodes.push(node);\n                        } else {\n                            coreNodes.push(node.key);\n                        }\n                    }\n\n                    const coreNodeBatches: string[][] = [];\n                    const batchSize: number = 200;\n                    while (coreNodes.length > 0) {\n                         coreNodeBatches.push(coreNodes.splice(0, batchSize));\n                    }\n\n                    const fullNodes$: Observable<Node[]> = observableOf(fullNodes);\n                    const fillNodes$: Observable<Node[]>[] = coreNodeBatches\n                        .map(\n                            (batch: string[]): Observable<Node[]> => {\n                                return this._apiV3.imageByKeyFill$(batch).pipe(\n                                    map(\n                                        (imageByKeyFill: { [key: string]: IFillNode }): Node[] => {\n                                            const filledNodes: Node[] = [];\n\n                                            for (const fillKey in imageByKeyFill) {\n                                                if (!imageByKeyFill.hasOwnProperty(fillKey)) {\n                                                    continue;\n                                                }\n\n                                                if (this.hasNode(fillKey)) {\n                                                    const node: Node = this.getNode(fillKey);\n\n                                                    if (!node.full) {\n                                                        this._makeFull(node, imageByKeyFill[fillKey]);\n                                                    }\n\n                                                    filledNodes.push(node);\n                                                }\n                                            }\n\n                                            return filledNodes;\n                                        }));\n                            });\n\n                    return observableMerge(\n                            fullNodes$,\n                            observableFrom(fillNodes$).pipe(\n                                mergeAll()));\n                }),\n            reduce(\n                (acc: Node[], value: Node[]): Node[] => {\n                    return acc.concat(value);\n                }));\n    }\n\n    /**\n     * Retrieve and cache node fill properties.\n     *\n     * @param {string} key - Key of node to fill.\n     * @returns {Observable<Graph>} Observable emitting the graph\n     * when the node has been updated.\n     * @throws {GraphMapillaryError} When the operation is not valid on the\n     * current graph.\n     */\n    public cacheFill$(key: string): Observable<Graph> {\n        if (key in this._cachingFull$) {\n            throw new GraphMapillaryError(`Cannot fill node while caching full (${key}).`);\n        }\n\n        if (!this.hasNode(key)) {\n            throw new GraphMapillaryError(`Cannot fill node that does not exist in graph (${key}).`);\n        }\n\n        if (key in this._cachingFill$) {\n            return this._cachingFill$[key];\n        }\n\n        let node: Node = this.getNode(key);\n        if (node.full) {\n            throw new GraphMapillaryError(`Cannot fill node that is already full (${key}).`);\n        }\n\n        this._cachingFill$[key] = this._apiV3.imageByKeyFill$([key]).pipe(\n            tap(\n                (imageByKeyFill: { [key: string]: IFillNode }): void => {\n                    if (!node.full) {\n                        this._makeFull(node, imageByKeyFill[key]);\n                    }\n\n                    delete this._cachingFill$[key];\n                }),\n            map(\n                (imageByKeyFill: { [key: string]: IFillNode }): Graph => {\n                    return this;\n                }),\n            finalize(\n                (): void => {\n                    if (key in this._cachingFill$) {\n                        delete this._cachingFill$[key];\n                    }\n\n                    this._changed$.next(this);\n                }),\n            publish(),\n            refCount());\n\n        return this._cachingFill$[key];\n    }\n\n    /**\n     * Retrieve and cache full node properties.\n     *\n     * @param {string} key - Key of node to fill.\n     * @returns {Observable<Graph>} Observable emitting the graph\n     * when the node has been updated.\n     * @throws {GraphMapillaryError} When the operation is not valid on the\n     * current graph.\n     */\n    public cacheFull$(key: string): Observable<Graph> {\n        if (key in this._cachingFull$) {\n            return this._cachingFull$[key];\n        }\n\n        if (this.hasNode(key)) {\n            throw new GraphMapillaryError(`Cannot cache full node that already exist in graph (${key}).`);\n        }\n\n        this._cachingFull$[key] = this._apiV3.imageByKeyFull$([key]).pipe(\n            tap(\n                (imageByKeyFull: { [key: string]: IFullNode }): void => {\n                    let fn: IFullNode = imageByKeyFull[key];\n\n                    if (this.hasNode(key)) {\n                        let node: Node = this.getNode(key);\n\n                        if (!node.full) {\n                            this._makeFull(node, fn);\n                        }\n                    } else {\n                        if (fn.sequence_key == null) {\n                            throw new GraphMapillaryError(`Node has no sequence key (${key}).`);\n                        }\n\n                        let node: Node = new Node(fn);\n                        this._makeFull(node, fn);\n\n                        let h: string = this._graphCalculator.encodeH(node.originalLatLon, this._tilePrecision);\n                        this._preStore(h, node);\n                        this._setNode(node);\n\n                        delete this._cachingFull$[key];\n                    }\n                }),\n            map(\n                (imageByKeyFull: { [key: string]: IFullNode }): Graph => {\n                    return this;\n                }),\n            finalize(\n                (): void => {\n                    if (key in this._cachingFull$) {\n                        delete this._cachingFull$[key];\n                    }\n\n                    this._changed$.next(this);\n                }),\n            publish(),\n            refCount());\n\n        return this._cachingFull$[key];\n    }\n\n    /**\n     * Retrieve and cache a node sequence.\n     *\n     * @param {string} key - Key of node for which to retrieve sequence.\n     * @returns {Observable<Graph>} Observable emitting the graph\n     * when the sequence has been retrieved.\n     * @throws {GraphMapillaryError} When the operation is not valid on the\n     * current graph.\n     */\n    public cacheNodeSequence$(key: string): Observable<Graph> {\n        if (!this.hasNode(key)) {\n            throw new GraphMapillaryError(`Cannot cache sequence edges of node that does not exist in graph (${key}).`);\n        }\n\n        let node: Node = this.getNode(key);\n        if (node.sequenceKey in this._sequences) {\n            throw new GraphMapillaryError(`Sequence already cached (${key}), (${node.sequenceKey}).`);\n        }\n\n        return this._cacheSequence$(node.sequenceKey);\n    }\n\n    /**\n     * Retrieve and cache a sequence.\n     *\n     * @param {string} sequenceKey - Key of sequence to cache.\n     * @returns {Observable<Graph>} Observable emitting the graph\n     * when the sequence has been retrieved.\n     * @throws {GraphMapillaryError} When the operation is not valid on the\n     * current graph.\n     */\n    public cacheSequence$(sequenceKey: string): Observable<Graph> {\n        if (sequenceKey in this._sequences) {\n            throw new GraphMapillaryError(`Sequence already cached (${sequenceKey})`);\n        }\n\n        return this._cacheSequence$(sequenceKey);\n    }\n\n    /**\n     * Cache sequence edges for a node.\n     *\n     * @param {string} key - Key of node.\n     * @throws {GraphMapillaryError} When the operation is not valid on the\n     * current graph.\n     */\n    public cacheSequenceEdges(key: string): void {\n        let node: Node = this.getNode(key);\n\n        if (!(node.sequenceKey in this._sequences)) {\n            throw new GraphMapillaryError(`Sequence is not cached (${key}), (${node.sequenceKey})`);\n        }\n\n        let sequence: Sequence = this._sequences[node.sequenceKey].sequence;\n        let edges: IEdge[] = this._edgeCalculator.computeSequenceEdges(node, sequence);\n\n        node.cacheSequenceEdges(edges);\n    }\n\n    /**\n     * Retrieve and cache full nodes for all keys in a sequence.\n     *\n     * @param {string} sequenceKey - Key of sequence.\n     * @param {string} referenceNodeKey - Key of node to use as reference\n     * for optimized caching.\n     * @returns {Observable<Graph>} Observable emitting the graph\n     * when the nodes of the sequence has been cached.\n     */\n    public cacheSequenceNodes$(sequenceKey: string, referenceNodeKey?: string): Observable<Graph> {\n        if (!this.hasSequence(sequenceKey)) {\n            throw new GraphMapillaryError(\n                `Cannot cache sequence nodes of sequence that does not exist in graph (${sequenceKey}).`);\n        }\n\n        if (this.hasSequenceNodes(sequenceKey)) {\n            throw new GraphMapillaryError(`Sequence nodes already cached (${sequenceKey}).`);\n        }\n\n        const sequence: Sequence = this.getSequence(sequenceKey);\n        if (sequence.key in this._cachingSequenceNodes$) {\n            return this._cachingSequenceNodes$[sequence.key];\n        }\n\n        const batches: string[][] = [];\n        const keys: string[] = sequence.keys.slice();\n\n        const referenceBatchSize: number = 50;\n        if (!!referenceNodeKey && keys.length > referenceBatchSize) {\n            const referenceIndex: number = keys.indexOf(referenceNodeKey);\n            const startIndex: number = Math.max(\n                0,\n                Math.min(\n                    referenceIndex - referenceBatchSize / 2,\n                    keys.length - referenceBatchSize));\n\n            batches.push(keys.splice(startIndex, referenceBatchSize));\n        }\n\n        const batchSize: number = 200;\n        while (keys.length > 0) {\n            batches.push(keys.splice(0, batchSize));\n        }\n\n        let batchesToCache: number = batches.length;\n        const sequenceNodes$: Observable<Graph> = observableFrom(batches).pipe(\n            mergeMap(\n                (batch: string[]): Observable<Graph> => {\n                    return this._apiV3.imageByKeyFull$(batch).pipe(\n                        tap(\n                            (imageByKeyFull: { [key: string]: IFullNode }): void => {\n                                for (const fullKey in imageByKeyFull) {\n                                    if (!imageByKeyFull.hasOwnProperty(fullKey)) {\n                                        continue;\n                                    }\n\n                                    const fn: IFullNode = imageByKeyFull[fullKey];\n\n                                    if (this.hasNode(fullKey)) {\n                                        const node: Node = this.getNode(fn.key);\n\n                                        if (!node.full) {\n                                            this._makeFull(node, fn);\n                                        }\n                                    } else {\n                                        if (fn.sequence_key == null) {\n                                            console.warn(`Sequence missing, discarding node (${fn.key})`);\n                                        }\n\n                                        const node: Node = new Node(fn);\n                                        this._makeFull(node, fn);\n\n                                        const h: string = this._graphCalculator.encodeH(node.originalLatLon, this._tilePrecision);\n                                        this._preStore(h, node);\n                                        this._setNode(node);\n                                    }\n                                }\n\n                                batchesToCache--;\n                            }),\n                        map(\n                            (imageByKeyFull: { [key: string]: IFullNode }): Graph => {\n                                return this;\n                            }));\n                },\n                6),\n            last(),\n            finalize(\n                (): void => {\n                    delete this._cachingSequenceNodes$[sequence.key];\n\n                    if (batchesToCache === 0) {\n                        this._cachedSequenceNodes[sequence.key] = true;\n                    }\n                }),\n            publish(),\n            refCount());\n\n        this._cachingSequenceNodes$[sequence.key] = sequenceNodes$;\n\n        return sequenceNodes$;\n    }\n\n    /**\n     * Retrieve and cache full nodes for a node spatial area.\n     *\n     * @param {string} key - Key of node for which to retrieve sequence.\n     * @returns {Observable<Graph>} Observable emitting the graph\n     * when the nodes in the spatial area has been made full.\n     * @throws {GraphMapillaryError} When the operation is not valid on the\n     * current graph.\n     */\n    public cacheSpatialArea$(key: string): Observable<Graph>[] {\n        if (!this.hasNode(key)) {\n            throw new GraphMapillaryError(`Cannot cache spatial area of node that does not exist in graph (${key}).`);\n        }\n\n        if (key in this._cachedSpatialEdges) {\n            throw new GraphMapillaryError(`Node already spatially cached (${key}).`);\n        }\n\n        if (!(key in this._requiredSpatialArea)) {\n            throw new GraphMapillaryError(`Spatial area not determined (${key}).`);\n        }\n\n        let spatialArea: SpatialArea = this._requiredSpatialArea[key];\n        if (Object.keys(spatialArea.cacheNodes).length === 0) {\n            throw new GraphMapillaryError(`Spatial nodes already cached (${key}).`);\n        }\n\n        if (key in this._cachingSpatialArea$) {\n            return this._cachingSpatialArea$[key];\n        }\n\n        let batches: string[][] = [];\n        while (spatialArea.cacheKeys.length > 0) {\n            batches.push(spatialArea.cacheKeys.splice(0, 200));\n        }\n\n        let batchesToCache: number = batches.length;\n        let spatialNodes$: Observable<Graph>[] = [];\n\n        for (let batch of batches) {\n            let spatialNodeBatch$: Observable<Graph> = this._apiV3.imageByKeyFill$(batch).pipe(\n                tap(\n                    (imageByKeyFill: { [key: string]: IFillNode }): void => {\n                        for (let fillKey in imageByKeyFill) {\n                            if (!imageByKeyFill.hasOwnProperty(fillKey)) {\n                                continue;\n                            }\n\n                            let spatialNode: Node = spatialArea.cacheNodes[fillKey];\n                            if (spatialNode.full) {\n                                delete spatialArea.cacheNodes[fillKey];\n                                continue;\n                            }\n\n                            let fillNode: IFillNode = imageByKeyFill[fillKey];\n                            this._makeFull(spatialNode, fillNode);\n\n                            delete spatialArea.cacheNodes[fillKey];\n                        }\n\n                        if (--batchesToCache === 0) {\n                            delete this._cachingSpatialArea$[key];\n                        }\n                    }),\n                map(\n                    (imageByKeyFill: { [key: string]: IFillNode }): Graph => {\n                        return this;\n                    }),\n                catchError(\n                    (error: Error): Observable<Graph> => {\n                        for (let batchKey of batch) {\n                            if (batchKey in spatialArea.all) {\n                                delete spatialArea.all[batchKey];\n                            }\n\n                            if (batchKey in spatialArea.cacheNodes) {\n                                delete spatialArea.cacheNodes[batchKey];\n                            }\n                        }\n\n                        if (--batchesToCache === 0) {\n                            delete this._cachingSpatialArea$[key];\n                        }\n\n                        throw error;\n                    }),\n                finalize(\n                    (): void => {\n                        if (Object.keys(spatialArea.cacheNodes).length === 0) {\n                            this._changed$.next(this);\n                        }\n                    }),\n                publish(),\n                refCount());\n\n            spatialNodes$.push(spatialNodeBatch$);\n        }\n\n        this._cachingSpatialArea$[key] = spatialNodes$;\n\n        return spatialNodes$;\n    }\n\n    /**\n     * Cache spatial edges for a node.\n     *\n     * @param {string} key - Key of node.\n     * @throws {GraphMapillaryError} When the operation is not valid on the\n     * current graph.\n     */\n    public cacheSpatialEdges(key: string): void {\n        if (key in this._cachedSpatialEdges) {\n             throw new GraphMapillaryError(`Spatial edges already cached (${key}).`);\n        }\n\n        let node: Node = this.getNode(key);\n        let sequence: Sequence = this._sequences[node.sequenceKey].sequence;\n\n        let fallbackKeys: string[] = [];\n        let prevKey: string = sequence.findPrevKey(node.key);\n        if (prevKey != null) {\n            fallbackKeys.push(prevKey);\n        }\n\n        let nextKey: string = sequence.findNextKey(node.key);\n        if (nextKey != null) {\n            fallbackKeys.push(nextKey);\n        }\n\n        let allSpatialNodes: { [key: string]: Node } = this._requiredSpatialArea[key].all;\n        let potentialNodes: Node[] = [];\n        let filter: FilterFunction = this._filter;\n        for (let spatialNodeKey in allSpatialNodes) {\n            if (!allSpatialNodes.hasOwnProperty(spatialNodeKey)) {\n                continue;\n            }\n\n            let spatialNode: Node = allSpatialNodes[spatialNodeKey];\n\n            if (filter(spatialNode)) {\n                potentialNodes.push(spatialNode);\n            }\n        }\n\n        let potentialEdges: IPotentialEdge[] =\n            this._edgeCalculator.getPotentialEdges(node, potentialNodes, fallbackKeys);\n\n        let edges: IEdge[] =\n            this._edgeCalculator.computeStepEdges(\n                node,\n                potentialEdges,\n                prevKey,\n                nextKey);\n\n        edges = edges.concat(this._edgeCalculator.computeTurnEdges(node, potentialEdges));\n        edges = edges.concat(this._edgeCalculator.computePanoEdges(node, potentialEdges));\n        edges = edges.concat(this._edgeCalculator.computePerspectiveToPanoEdges(node, potentialEdges));\n        edges = edges.concat(this._edgeCalculator.computeSimilarEdges(node, potentialEdges));\n\n        node.cacheSpatialEdges(edges);\n\n        this._cachedSpatialEdges[key] = node;\n        delete this._requiredSpatialArea[key];\n        delete this._cachedNodeTiles[key];\n    }\n\n    /**\n     * Retrieve and cache geohash tiles for a node.\n     *\n     * @param {string} key - Key of node for which to retrieve tiles.\n     * @returns {Array<Observable<Graph>>} Array of observables emitting\n     * the graph for each tile required for the node has been cached.\n     * @throws {GraphMapillaryError} When the operation is not valid on the\n     * current graph.\n     */\n    public cacheTiles$(key: string): Observable<Graph>[] {\n        if (key in this._cachedNodeTiles) {\n            throw new GraphMapillaryError(`Tiles already cached (${key}).`);\n        }\n\n        if (key in this._cachedSpatialEdges) {\n            throw new GraphMapillaryError(`Spatial edges already cached so tiles considered cached (${key}).`);\n        }\n\n        if (!(key in this._requiredNodeTiles)) {\n            throw new GraphMapillaryError(`Tiles have not been determined (${key}).`);\n        }\n\n        let nodeTiles: NodeTiles = this._requiredNodeTiles[key];\n        if (nodeTiles.cache.length === 0 &&\n            nodeTiles.caching.length === 0) {\n            throw new GraphMapillaryError(`Tiles already cached (${key}).`);\n        }\n\n        if (!this.hasNode(key)) {\n            throw new GraphMapillaryError(`Cannot cache tiles of node that does not exist in graph (${key}).`);\n        }\n\n        let hs: string[] = nodeTiles.cache.slice();\n        nodeTiles.caching = this._requiredNodeTiles[key].caching.concat(hs);\n        nodeTiles.cache = [];\n\n        let cacheTiles$: Observable<Graph>[] = [];\n\n        for (let h of nodeTiles.caching) {\n            const cacheTile$: Observable<Graph> = h in this._cachingTiles$ ?\n                this._cachingTiles$[h] :\n                this._cacheTile$(h);\n\n            cacheTiles$.push(\n                cacheTile$.pipe(\n                    tap(\n                        (graph: Graph): void => {\n                            let index: number = nodeTiles.caching.indexOf(h);\n                            if (index > -1) {\n                                nodeTiles.caching.splice(index, 1);\n                            }\n\n                            if (nodeTiles.caching.length === 0 &&\n                                nodeTiles.cache.length === 0) {\n                                delete this._requiredNodeTiles[key];\n\n                                this._cachedNodeTiles[key] = true;\n                            }\n                        }),\n                    catchError(\n                        (error: Error): Observable<Graph> => {\n                            let index: number = nodeTiles.caching.indexOf(h);\n                            if (index > -1) {\n                                nodeTiles.caching.splice(index, 1);\n                            }\n\n                            if (nodeTiles.caching.length === 0 &&\n                                nodeTiles.cache.length === 0) {\n                                delete this._requiredNodeTiles[key];\n\n                                this._cachedNodeTiles[key] = true;\n                            }\n\n                            throw error;\n                        }),\n                    finalize(\n                        (): void => {\n                            this._changed$.next(this);\n                        }),\n                    publish(),\n                    refCount()));\n        }\n\n        return cacheTiles$;\n    }\n\n    /**\n     * Initialize the cache for a node.\n     *\n     * @param {string} key - Key of node.\n     * @throws {GraphMapillaryError} When the operation is not valid on the\n     * current graph.\n     */\n    public initializeCache(key: string): void {\n        if (key in this._cachedNodes) {\n            throw new GraphMapillaryError(`Node already in cache (${key}).`);\n        }\n\n        let node: Node = this.getNode(key);\n        node.initializeCache(new NodeCache());\n\n        let accessed: number = new Date().getTime();\n        this._cachedNodes[key] = { accessed: accessed, node: node };\n\n        this._updateCachedTileAccess(key, accessed);\n    }\n\n    /**\n     * Get a value indicating if the graph is fill caching a node.\n     *\n     * @param {string} key - Key of node.\n     * @returns {boolean} Value indicating if the node is being fill cached.\n     */\n    public isCachingFill(key: string): boolean {\n        return key in this._cachingFill$;\n    }\n\n    /**\n     * Get a value indicating if the graph is fully caching a node.\n     *\n     * @param {string} key - Key of node.\n     * @returns {boolean} Value indicating if the node is being fully cached.\n     */\n    public isCachingFull(key: string): boolean {\n        return key in this._cachingFull$;\n    }\n\n    /**\n     * Get a value indicating if the graph is caching a sequence of a node.\n     *\n     * @param {string} key - Key of node.\n     * @returns {boolean} Value indicating if the sequence of a node is\n     * being cached.\n     */\n    public isCachingNodeSequence(key: string): boolean {\n        let node: Node = this.getNode(key);\n\n        return node.sequenceKey in this._cachingSequences$;\n    }\n\n    /**\n     * Get a value indicating if the graph is caching a sequence.\n     *\n     * @param {string} sequenceKey - Key of sequence.\n     * @returns {boolean} Value indicating if the sequence is\n     * being cached.\n     */\n    public isCachingSequence(sequenceKey: string): boolean {\n        return sequenceKey in this._cachingSequences$;\n    }\n\n    /**\n     * Get a value indicating if the graph is caching sequence nodes.\n     *\n     * @param {string} sequenceKey - Key of sequence.\n     * @returns {boolean} Value indicating if the sequence nodes are\n     * being cached.\n     */\n    public isCachingSequenceNodes(sequenceKey: string): boolean {\n        return sequenceKey in this._cachingSequenceNodes$;\n    }\n\n    /**\n     * Get a value indicating if the graph is caching the tiles\n     * required for calculating spatial edges of a node.\n     *\n     * @param {string} key - Key of node.\n     * @returns {boolean} Value indicating if the tiles of\n     * a node are being cached.\n     */\n    public isCachingTiles(key: string): boolean {\n        return key in this._requiredNodeTiles &&\n            this._requiredNodeTiles[key].cache.length === 0 &&\n            this._requiredNodeTiles[key].caching.length > 0;\n    }\n\n    /**\n     * Get a value indicating if the cache has been initialized\n     * for a node.\n     *\n     * @param {string} key - Key of node.\n     * @returns {boolean} Value indicating if the cache has been\n     * initialized for a node.\n     */\n    public hasInitializedCache(key: string): boolean {\n        return key in this._cachedNodes;\n    }\n\n    /**\n     * Get a value indicating if a node exist in the graph.\n     *\n     * @param {string} key - Key of node.\n     * @returns {boolean} Value indicating if a node exist in the graph.\n     */\n    public hasNode(key: string): boolean {\n        let accessed: number = new Date().getTime();\n\n        this._updateCachedNodeAccess(key, accessed);\n        this._updateCachedTileAccess(key, accessed);\n\n        return key in this._nodes;\n    }\n\n    /**\n     * Get a value indicating if a node sequence exist in the graph.\n     *\n     * @param {string} key - Key of node.\n     * @returns {boolean} Value indicating if a node sequence exist\n     * in the graph.\n     */\n    public hasNodeSequence(key: string): boolean {\n        let node: Node = this.getNode(key);\n        let sequenceKey: string = node.sequenceKey;\n\n        let hasNodeSequence: boolean = sequenceKey in this._sequences;\n\n        if (hasNodeSequence) {\n            this._sequences[sequenceKey].accessed = new Date().getTime();\n        }\n\n        return hasNodeSequence;\n    }\n\n    /**\n     * Get a value indicating if a sequence exist in the graph.\n     *\n     * @param {string} sequenceKey - Key of sequence.\n     * @returns {boolean} Value indicating if a sequence exist\n     * in the graph.\n     */\n    public hasSequence(sequenceKey: string): boolean {\n        let hasSequence: boolean = sequenceKey in this._sequences;\n\n        if (hasSequence) {\n            this._sequences[sequenceKey].accessed = new Date().getTime();\n        }\n\n        return hasSequence;\n    }\n\n    /**\n     * Get a value indicating if sequence nodes has been cached in the graph.\n     *\n     * @param {string} sequenceKey - Key of sequence.\n     * @returns {boolean} Value indicating if a sequence nodes has been\n     * cached in the graph.\n     */\n    public hasSequenceNodes(sequenceKey: string): boolean {\n        return sequenceKey in this._cachedSequenceNodes;\n    }\n\n    /**\n     * Get a value indicating if the graph has fully cached\n     * all nodes in the spatial area of a node.\n     *\n     * @param {string} key - Key of node.\n     * @returns {boolean} Value indicating if the spatial area\n     * of a node has been cached.\n     */\n    public hasSpatialArea(key: string): boolean {\n        if (!this.hasNode(key)) {\n            throw new GraphMapillaryError(`Spatial area nodes cannot be determined if node not in graph (${key}).`);\n        }\n\n        if (key in this._cachedSpatialEdges) {\n            return true;\n        }\n\n        if (key in this._requiredSpatialArea) {\n            return Object.keys(this._requiredSpatialArea[key].cacheNodes).length === 0;\n        }\n\n        let node: Node = this.getNode(key);\n        let bbox: [ILatLon, ILatLon] = this._graphCalculator.boundingBoxCorners(node.latLon, this._tileThreshold);\n\n        let spatialItems: NodeIndexItem[] = this._nodeIndex.search({\n            maxX: bbox[1].lat,\n            maxY: bbox[1].lon,\n            minX: bbox[0].lat,\n            minY: bbox[0].lon,\n        });\n\n        let spatialNodes: SpatialArea = {\n            all: {},\n            cacheKeys: [],\n            cacheNodes: {},\n        };\n\n        for (let spatialItem of spatialItems) {\n            spatialNodes.all[spatialItem.node.key] = spatialItem.node;\n\n            if (!spatialItem.node.full) {\n                spatialNodes.cacheKeys.push(spatialItem.node.key);\n                spatialNodes.cacheNodes[spatialItem.node.key] = spatialItem.node;\n            }\n        }\n\n        this._requiredSpatialArea[key] = spatialNodes;\n\n        return spatialNodes.cacheKeys.length === 0;\n    }\n\n    /**\n     * Get a value indicating if the graph has a tiles required\n     * for a node.\n     *\n     * @param {string} key - Key of node.\n     * @returns {boolean} Value indicating if the the tiles required\n     * by a node has been cached.\n     */\n    public hasTiles(key: string): boolean {\n        if (key in this._cachedNodeTiles) {\n            return true;\n        }\n\n        if (key in this._cachedSpatialEdges) {\n            return true;\n        }\n\n        if (!this.hasNode(key)) {\n            throw new GraphMapillaryError(`Node does not exist in graph (${key}).`);\n        }\n\n        let nodeTiles: NodeTiles = { cache: [], caching: [] };\n\n        if (!(key in this._requiredNodeTiles)) {\n            let node: Node = this.getNode(key);\n            nodeTiles.cache = this._graphCalculator\n                .encodeHs(\n                    node.latLon,\n                    this._tilePrecision,\n                    this._tileThreshold)\n                .filter(\n                    (h: string): boolean => {\n                        return !(h in this._cachedTiles);\n                    });\n\n            if (nodeTiles.cache.length > 0) {\n                this._requiredNodeTiles[key] = nodeTiles;\n            }\n        } else {\n            nodeTiles = this._requiredNodeTiles[key];\n        }\n\n        return nodeTiles.cache.length === 0 && nodeTiles.caching.length === 0;\n    }\n\n    /**\n     * Get a node.\n     *\n     * @param {string} key - Key of node.\n     * @returns {Node} Retrieved node.\n     */\n    public getNode(key: string): Node {\n        let accessed: number = new Date().getTime();\n\n        this._updateCachedNodeAccess(key, accessed);\n        this._updateCachedTileAccess(key, accessed);\n\n        return this._nodes[key];\n    }\n\n    /**\n     * Get a sequence.\n     *\n     * @param {string} sequenceKey - Key of sequence.\n     * @returns {Node} Retrieved sequence.\n     */\n    public getSequence(sequenceKey: string): Sequence {\n        let sequenceAccess: SequenceAccess = this._sequences[sequenceKey];\n        sequenceAccess.accessed = new Date().getTime();\n\n        return sequenceAccess.sequence;\n    }\n\n    /**\n     * Reset all spatial edges of the graph nodes.\n     */\n    public resetSpatialEdges(): void {\n        let cachedKeys: string[] = Object.keys(this._cachedSpatialEdges);\n\n        for (let cachedKey of cachedKeys) {\n            let node: Node = this._cachedSpatialEdges[cachedKey];\n            node.resetSpatialEdges();\n\n            delete this._cachedSpatialEdges[cachedKey];\n        }\n    }\n\n    /**\n     * Reset the complete graph but keep the nodes corresponding\n     * to the supplied keys. All other nodes will be disposed.\n     *\n     * @param {Array<string>} keepKeys - Keys for nodes to keep\n     * in graph after reset.\n     */\n    public reset(keepKeys: string[]): void {\n        const nodes: Node[] = [];\n        for (const key of keepKeys) {\n            if (!this.hasNode(key)) {\n                throw new Error(`Node does not exist ${key}`);\n            }\n\n            const node: Node = this.getNode(key);\n            node.resetSequenceEdges();\n            node.resetSpatialEdges();\n            nodes.push(node);\n        }\n\n        for (let cachedKey of Object.keys(this._cachedNodes)) {\n            if (keepKeys.indexOf(cachedKey) !== -1) {\n                continue;\n            }\n\n            this._cachedNodes[cachedKey].node.dispose();\n            delete this._cachedNodes[cachedKey];\n        }\n\n        this._cachedNodeTiles = {};\n        this._cachedSpatialEdges = {};\n        this._cachedTiles = {};\n\n        this._cachingFill$ = {};\n        this._cachingFull$ = {};\n        this._cachingSequences$ = {};\n        this._cachingSpatialArea$ = {};\n        this._cachingTiles$ = {};\n\n        this._nodes = {};\n        this._nodeToTile = {};\n\n        this._preStored = {};\n\n        for (const node of nodes) {\n            this._nodes[node.key] = node;\n\n            const h: string = this._graphCalculator.encodeH(node.originalLatLon, this._tilePrecision);\n            this._preStore(h, node);\n        }\n\n        this._requiredNodeTiles = {};\n        this._requiredSpatialArea = {};\n\n        this._sequences = {};\n\n        this._nodeIndexTiles = {};\n        this._nodeIndex.clear();\n    }\n\n    /**\n     * Set the spatial node filter.\n     *\n     * @param {FilterExpression} filter - Filter expression to be applied\n     * when calculating spatial edges.\n     */\n    public setFilter(filter: FilterExpression): void {\n        this._filter = this._filterCreator.createFilter(filter);\n    }\n\n    /**\n     * Uncache the graph according to the graph configuration.\n     *\n     * @description Uncaches unused tiles, unused nodes and\n     * sequences according to the numbers specified in the\n     * graph configuration. Sequences does not have a direct\n     * reference to either tiles or nodes and may be uncached\n     * even if they are related to the nodes that should be kept.\n     *\n     * @param {Array<string>} keepKeys - Keys of nodes to keep in\n     * graph unrelated to last access. Tiles related to those keys\n     * will also be kept in graph.\n     * @param {string} keepSequenceKey - Optional key of sequence\n     * for which the belonging nodes should not be disposed or\n     * removed from the graph. These nodes may still be uncached if\n     * not specified in keep keys param.\n     */\n    public uncache(keepKeys: string[], keepSequenceKey?: string): void {\n        let keysInUse: { [key: string]: boolean } = {};\n\n        this._addNewKeys(keysInUse, this._cachingFull$);\n        this._addNewKeys(keysInUse, this._cachingFill$);\n        this._addNewKeys(keysInUse, this._cachingSpatialArea$);\n        this._addNewKeys(keysInUse, this._requiredNodeTiles);\n        this._addNewKeys(keysInUse, this._requiredSpatialArea);\n\n        for (let key of keepKeys) {\n            if (key in keysInUse) {\n                continue;\n            }\n\n            keysInUse[key] = true;\n        }\n\n        let keepHs: { [h: string]: boolean } = {};\n        for (let key in keysInUse) {\n            if (!keysInUse.hasOwnProperty(key)) {\n                continue;\n            }\n\n            let node: Node = this._nodes[key];\n\n            let nodeHs: string[] = this._graphCalculator.encodeHs(node.latLon);\n            for (let nodeH of nodeHs) {\n                if (!(nodeH in keepHs)) {\n                    keepHs[nodeH] = true;\n                }\n            }\n        }\n\n        let potentialHs: [string, TileAccess][] = [];\n        for (let h in this._cachedTiles) {\n            if (!this._cachedTiles.hasOwnProperty(h) || h in keepHs) {\n                continue;\n            }\n\n            potentialHs.push([h, this._cachedTiles[h]]);\n        }\n\n        let uncacheHs: string[] = potentialHs\n            .sort(\n                (h1: [string, TileAccess], h2: [string, TileAccess]): number => {\n                    return h2[1].accessed - h1[1].accessed;\n                })\n            .slice(this._configuration.maxUnusedTiles)\n            .map(\n                (h: [string, TileAccess]): string => {\n                    return h[0];\n                });\n\n        for (let uncacheH of uncacheHs) {\n            this._uncacheTile(uncacheH, keepSequenceKey);\n        }\n\n        let potentialPreStored: [NodeAccess, string][] = [];\n        let nonCachedPreStored: [string, string][] = [];\n        for (let h in this._preStored) {\n            if (!this._preStored.hasOwnProperty(h) || h in this._cachingTiles$) {\n                continue;\n            }\n\n            const prestoredNodes: { [key: string]: Node } = this._preStored[h];\n\n            for (let key in prestoredNodes) {\n                if (!prestoredNodes.hasOwnProperty(key) || key in keysInUse) {\n                    continue;\n                }\n\n                if (prestoredNodes[key].sequenceKey === keepSequenceKey) {\n                    continue;\n                }\n\n                if (key in this._cachedNodes) {\n                    potentialPreStored.push([this._cachedNodes[key], h]);\n                } else {\n                    nonCachedPreStored.push([key, h]);\n                }\n            }\n        }\n\n        let uncachePreStored: [string, string][] = potentialPreStored\n            .sort(\n                ([na1, h1]: [NodeAccess, string], [na2, h2]: [NodeAccess, string]): number => {\n                    return na2.accessed - na1.accessed;\n                })\n            .slice(this._configuration.maxUnusedPreStoredNodes)\n            .map(\n                ([na, h]: [NodeAccess, string]): [string, string] => {\n                    return [na.node.key, h];\n                });\n\n        this._uncachePreStored(nonCachedPreStored);\n        this._uncachePreStored(uncachePreStored);\n\n        let potentialNodes: NodeAccess[] = [];\n        for (let key in this._cachedNodes) {\n            if (!this._cachedNodes.hasOwnProperty(key) || key in keysInUse) {\n                continue;\n            }\n\n            potentialNodes.push(this._cachedNodes[key]);\n        }\n\n        let uncacheNodes: NodeAccess[] = potentialNodes\n            .sort(\n                (n1: NodeAccess, n2: NodeAccess): number => {\n                    return n2.accessed - n1.accessed;\n                })\n            .slice(this._configuration.maxUnusedNodes);\n\n        for (let nodeAccess of uncacheNodes) {\n            nodeAccess.node.uncache();\n            let key: string = nodeAccess.node.key;\n            delete this._cachedNodes[key];\n\n            if (key in this._cachedNodeTiles) {\n                delete this._cachedNodeTiles[key];\n            }\n\n            if (key in this._cachedSpatialEdges) {\n                delete this._cachedSpatialEdges[key];\n            }\n        }\n\n        let potentialSequences: SequenceAccess[] = [];\n        for (let sequenceKey in this._sequences) {\n            if (!this._sequences.hasOwnProperty(sequenceKey) ||\n                sequenceKey in this._cachingSequences$ ||\n                sequenceKey === keepSequenceKey) {\n                continue;\n            }\n\n            potentialSequences.push(this._sequences[sequenceKey]);\n        }\n\n        let uncacheSequences: SequenceAccess[] = potentialSequences\n            .sort(\n                (s1: SequenceAccess, s2: SequenceAccess): number => {\n                    return s2.accessed - s1.accessed;\n                })\n            .slice(this._configuration.maxSequences);\n\n        for (let sequenceAccess of uncacheSequences) {\n            let sequenceKey: string = sequenceAccess.sequence.key;\n\n            delete this._sequences[sequenceKey];\n\n            if (sequenceKey in this._cachedSequenceNodes) {\n                delete this._cachedSequenceNodes[sequenceKey];\n            }\n\n            sequenceAccess.sequence.dispose();\n        }\n    }\n\n    private _addNewKeys<T>(keys: { [key: string]: boolean }, dict: { [key: string]: T }): void {\n        for (let key in dict) {\n            if (!dict.hasOwnProperty(key) || !this.hasNode(key)) {\n                continue;\n            }\n\n            if (!(key in keys)) {\n                keys[key] = true;\n            }\n        }\n    }\n\n    private _cacheSequence$(sequenceKey: string): Observable<Graph> {\n        if (sequenceKey in this._cachingSequences$) {\n            return this._cachingSequences$[sequenceKey];\n        }\n\n        this._cachingSequences$[sequenceKey] = this._apiV3.sequenceByKey$([sequenceKey]).pipe(\n            tap(\n                (sequenceByKey: { [sequenceKey: string]: ISequence }): void => {\n                    if (!(sequenceKey in this._sequences)) {\n                        this._sequences[sequenceKey] = {\n                            accessed: new Date().getTime(),\n                            sequence: new Sequence(sequenceByKey[sequenceKey]),\n                        };\n                    }\n\n                    delete this._cachingSequences$[sequenceKey];\n                }),\n            map(\n                (sequenceByKey: { [sequenceKey: string]: ISequence }): Graph => {\n                    return this;\n                }),\n            finalize(\n                (): void => {\n                    if (sequenceKey in this._cachingSequences$) {\n                        delete this._cachingSequences$[sequenceKey];\n                    }\n\n                    this._changed$.next(this);\n                }),\n            publish(),\n            refCount());\n\n        return this._cachingSequences$[sequenceKey];\n    }\n\n    private _cacheTile$(h: string): Observable<Graph> {\n        this._cachingTiles$[h] = this._apiV3.imagesByH$([h]).pipe(\n            tap(\n                (imagesByH: { [key: string]: { [index: string]: ICoreNode } }): void => {\n                    let coreNodes: { [index: string]: ICoreNode } = imagesByH[h];\n\n                    if (h in this._cachedTiles) {\n                        return;\n                    }\n\n                    this._nodeIndexTiles[h] = [];\n                    this._cachedTiles[h] = { accessed: new Date().getTime(), nodes: [] };\n                    let hCache: Node[] = this._cachedTiles[h].nodes;\n                    let preStored: { [key: string]: Node } = this._removeFromPreStore(h);\n\n                    for (let index in coreNodes) {\n                        if (!coreNodes.hasOwnProperty(index)) {\n                            continue;\n                        }\n\n                        let coreNode: ICoreNode = coreNodes[index];\n\n                        if (coreNode == null) {\n                            break;\n                        }\n\n                        if (coreNode.sequence_key == null) {\n                            console.warn(`Sequence missing, discarding node (${coreNode.key})`);\n\n                            continue;\n                        }\n\n                        if (preStored != null && coreNode.key in preStored) {\n                            let preStoredNode: Node = preStored[coreNode.key];\n                            delete preStored[coreNode.key];\n\n                            hCache.push(preStoredNode);\n\n                            let preStoredNodeIndexItem: NodeIndexItem = {\n                                lat: preStoredNode.latLon.lat,\n                                lon: preStoredNode.latLon.lon,\n                                node: preStoredNode,\n                            };\n\n                            this._nodeIndex.insert(preStoredNodeIndexItem);\n                            this._nodeIndexTiles[h].push(preStoredNodeIndexItem);\n                            this._nodeToTile[preStoredNode.key] = h;\n\n                            continue;\n                        }\n\n                        let node: Node = new Node(coreNode);\n\n                        hCache.push(node);\n\n                        let nodeIndexItem: NodeIndexItem = {\n                            lat: node.latLon.lat,\n                            lon: node.latLon.lon,\n                            node: node,\n                        };\n\n                        this._nodeIndex.insert(nodeIndexItem);\n                        this._nodeIndexTiles[h].push(nodeIndexItem);\n                        this._nodeToTile[node.key] = h;\n\n                        this._setNode(node);\n                    }\n\n                    delete this._cachingTiles$[h];\n                }),\n            map(\n                (imagesByH: { [key: string]: { [index: string]: ICoreNode } }): Graph => {\n                    return this;\n                }),\n            catchError(\n                (error: Error): Observable<Graph> => {\n                    delete this._cachingTiles$[h];\n\n                    throw error;\n                }),\n            publish(),\n            refCount());\n\n        return this._cachingTiles$[h];\n    }\n\n    private _makeFull(node: Node, fillNode: IFillNode): void {\n        if (fillNode.calt == null) {\n            fillNode.calt = this._defaultAlt;\n        }\n\n        if (fillNode.c_rotation == null) {\n            fillNode.c_rotation = this._graphCalculator.rotationFromCompass(fillNode.ca, fillNode.orientation);\n        }\n\n        node.makeFull(fillNode);\n    }\n\n    private _preStore(h: string, node: Node): void {\n        if (!(h in this._preStored)) {\n            this._preStored[h] = {};\n        }\n\n        this._preStored[h][node.key] = node;\n    }\n\n    private _removeFromPreStore(h: string): { [key: string]: Node } {\n        let preStored: { [key: string]: Node } = null;\n\n        if (h in this._preStored) {\n            preStored = this._preStored[h];\n            delete this._preStored[h];\n        }\n\n        return preStored;\n    }\n\n    private _setNode(node: Node): void {\n        let key: string = node.key;\n\n        if (this.hasNode(key)) {\n            throw new GraphMapillaryError(`Node already exist (${key}).`);\n        }\n\n        this._nodes[key] = node;\n    }\n\n    private _uncacheTile(h: string, keepSequenceKey: string): void {\n        for (let node of this._cachedTiles[h].nodes) {\n            let key: string = node.key;\n\n            delete this._nodeToTile[key];\n\n            if (key in this._cachedNodes) {\n                delete this._cachedNodes[key];\n            }\n\n            if (key in this._cachedNodeTiles) {\n                delete this._cachedNodeTiles[key];\n            }\n\n            if (key in this._cachedSpatialEdges) {\n                delete this._cachedSpatialEdges[key];\n            }\n\n            if (node.sequenceKey === keepSequenceKey) {\n                this._preStore(h, node);\n                node.uncache();\n            } else {\n                delete this._nodes[key];\n\n                if (node.sequenceKey in this._cachedSequenceNodes) {\n                    delete this._cachedSequenceNodes[node.sequenceKey];\n                }\n\n                node.dispose();\n            }\n        }\n\n        for (let nodeIndexItem of this._nodeIndexTiles[h]) {\n            this._nodeIndex.remove(nodeIndexItem);\n        }\n\n        delete this._nodeIndexTiles[h];\n        delete this._cachedTiles[h];\n    }\n\n    private _uncachePreStored(preStored: [string, string][]): void {\n        let hs: { [h: string]: boolean } = {};\n        for (let [key, h] of preStored) {\n            if (key in this._nodes) {\n                delete this._nodes[key];\n            }\n\n            if (key in this._cachedNodes) {\n                delete this._cachedNodes[key];\n            }\n\n            let node: Node = this._preStored[h][key];\n\n            if (node.sequenceKey in this._cachedSequenceNodes) {\n                delete this._cachedSequenceNodes[node.sequenceKey];\n            }\n\n            delete this._preStored[h][key];\n\n            node.dispose();\n\n            hs[h] = true;\n        }\n\n        for (let h in hs) {\n            if (!hs.hasOwnProperty(h)) {\n                continue;\n            }\n\n            if (Object.keys(this._preStored[h]).length === 0) {\n                delete this._preStored[h];\n            }\n        }\n    }\n\n    private _updateCachedTileAccess(key: string, accessed: number): void {\n        if (key in this._nodeToTile) {\n            this._cachedTiles[this._nodeToTile[key]].accessed = accessed;\n        }\n    }\n\n    private _updateCachedNodeAccess(key: string, accessed: number): void {\n        if (key in this._cachedNodes) {\n            this._cachedNodes[key].accessed = accessed;\n        }\n    }\n}\n\nexport default Graph;\n",
     "import * as geohash from \"latlon-geohash\";\nimport * as THREE from \"three\";\n\nimport {ILatLon} from \"../API\";\nimport {GraphMapillaryError} from \"../Error\";\nimport {GeoCoords} from \"../Geo\";\n\n/**\n * @class GraphCalculator\n *\n * @classdesc Represents a calculator for graph entities.\n */\nexport class GraphCalculator {\n    private _geoCoords: GeoCoords;\n\n    /**\n     * Create a new graph calculator instance.\n     *\n     * @param {GeoCoords} geoCoords - Geo coords instance.\n     */\n    constructor(geoCoords?: GeoCoords) {\n        this._geoCoords = geoCoords != null ? geoCoords : new GeoCoords();\n    }\n\n    /**\n     * Encode the geohash tile for geodetic coordinates.\n     *\n     * @param {ILatLon} latlon - Latitude and longitude to encode.\n     * @param {number} precision - Precision of the encoding.\n     *\n     * @returns {string} The geohash tile for the lat, lon and precision.\n     */\n    public encodeH(latLon: ILatLon, precision: number = 7): string {\n        return geohash.encode(latLon.lat, latLon.lon, precision);\n    }\n\n    /**\n     * Encode the geohash tiles within a threshold from a position\n     * using Manhattan distance.\n     *\n     * @param {ILatLon} latlon - Latitude and longitude to encode.\n     * @param {number} precision - Precision of the encoding.\n     * @param {number} threshold - Threshold of the encoding in meters.\n     *\n     * @returns {string} The geohash tiles reachable within the threshold.\n     */\n    public encodeHs(latLon: ILatLon, precision: number = 7, threshold: number = 20): string[] {\n        let h: string = geohash.encode(latLon.lat, latLon.lon, precision);\n        let bounds: geohash.Bounds = geohash.bounds(h);\n        let ne: geohash.Point = bounds.ne;\n        let sw: geohash.Point = bounds.sw;\n        let neighbours: geohash.Neighbours = geohash.neighbours(h);\n\n        let bl: number[] = [0, 0, 0];\n        let tr: number[] =\n            this._geoCoords.geodeticToEnu(\n                ne.lat,\n                ne.lon,\n                0,\n                sw.lat,\n                sw.lon,\n                0);\n\n        let position: number[] =\n            this._geoCoords.geodeticToEnu(\n                latLon.lat,\n                latLon.lon,\n                0,\n                sw.lat,\n                sw.lon,\n                0);\n\n        let left: number = position[0] - bl[0];\n        let right: number = tr[0] - position[0];\n        let bottom: number = position[1] - bl[1];\n        let top: number = tr[1] - position[1];\n\n        let l: boolean = left < threshold;\n        let r: boolean = right < threshold;\n        let b: boolean = bottom < threshold;\n        let t: boolean = top < threshold;\n\n        let hs: string[] = [h];\n\n        if (t) {\n            hs.push(neighbours.n);\n        }\n\n        if (t && l) {\n            hs.push(neighbours.nw);\n        }\n\n        if (l) {\n            hs.push(neighbours.w);\n        }\n\n        if (l && b) {\n            hs.push(neighbours.sw);\n        }\n\n        if (b) {\n            hs.push(neighbours.s);\n        }\n\n        if (b && r) {\n            hs.push(neighbours.se);\n        }\n\n        if (r) {\n            hs.push(neighbours.e);\n        }\n\n        if (r && t) {\n            hs.push(neighbours.ne);\n        }\n\n        return hs;\n    }\n\n    /**\n     * Encode the minimum set of geohash tiles containing a bounding box.\n     *\n     * @description The current algorithm does expect the bounding box\n     * to be sufficiently small to be contained in an area with the size\n     * of maximally four tiles. Up to nine adjacent tiles may be returned.\n     * The method currently uses the largest side as the threshold leading to\n     * more tiles being returned than needed in edge cases.\n     *\n     * @param {ILatLon} sw - South west corner of bounding box.\n     * @param {ILatLon} ne - North east corner of bounding box.\n     * @param {number} precision - Precision of the encoding.\n     *\n     * @returns {string} The geohash tiles containing the bounding box.\n     */\n    public encodeHsFromBoundingBox(sw: ILatLon, ne: ILatLon, precision: number = 7): string[] {\n        if (ne.lat <= sw.lat || ne.lon <= sw.lon) {\n            throw new GraphMapillaryError(\"North east needs to be top right of south west\");\n        }\n\n        const centerLat: number = (sw.lat + ne.lat) / 2;\n        const centerLon: number = (sw.lon + ne.lon) / 2;\n\n        const enu: number[] =\n            this._geoCoords.geodeticToEnu(\n                ne.lat,\n                ne.lon,\n                0,\n                centerLat,\n                centerLon,\n                0);\n\n        const threshold: number = Math.max(enu[0], enu[1]);\n\n        return this.encodeHs({ lat: centerLat, lon: centerLon }, precision, threshold);\n    }\n\n    /**\n     * Get the bounding box corners for a circle with radius of a threshold\n     * with center in a geodetic position.\n     *\n     * @param {ILatLon} latlon - Latitude and longitude to encode.\n     * @param {number} threshold - Threshold distance from the position in meters.\n     *\n     * @returns {Array<ILatLon>} The south west and north east corners of the\n     * bounding box.\n     */\n    public boundingBoxCorners(latLon: ILatLon, threshold: number): [ILatLon, ILatLon] {\n        let bl: number[] =\n            this._geoCoords.enuToGeodetic(\n                -threshold,\n                -threshold,\n                0,\n                latLon.lat,\n                latLon.lon,\n                0);\n\n        let tr: number[] =\n            this._geoCoords.enuToGeodetic(\n                threshold,\n                threshold,\n                0,\n                latLon.lat,\n                latLon.lon,\n                0);\n\n        return [\n            { lat: bl[0], lon: bl[1] },\n            { lat: tr[0], lon: tr[1] },\n        ];\n    }\n\n    /**\n     * Convert a compass angle to an angle axis rotation vector.\n     *\n     * @param {number} compassAngle - The compass angle in degrees.\n     * @param {number} orientation - The orientation of the original image.\n     *\n     * @returns {Array<number>} Angle axis rotation vector.\n     */\n    public rotationFromCompass(compassAngle: number, orientation: number): number[] {\n        let x: number = 0;\n        let y: number = 0;\n        let z: number = 0;\n\n        switch (orientation) {\n            case 1:\n                x = Math.PI / 2;\n                break;\n            case 3:\n                x = -Math.PI / 2;\n                z = Math.PI;\n                break;\n            case 6:\n                y = -Math.PI / 2;\n                z = -Math.PI / 2;\n                break;\n            case 8:\n                y = Math.PI / 2;\n                z = Math.PI / 2;\n                break;\n            default:\n                break;\n        }\n\n        let rz: THREE.Matrix4 = new THREE.Matrix4().makeRotationZ(z);\n        let euler: THREE.Euler = new THREE.Euler(x, y, compassAngle * Math.PI / 180, \"XYZ\");\n        let re: THREE.Matrix4 = new THREE.Matrix4().makeRotationFromEuler(euler);\n\n        let rotation: THREE.Vector4 = new THREE.Vector4().setAxisAngleFromRotationMatrix(<any>re.multiply(rz));\n\n        return rotation.multiplyScalar(rotation.w).toArray().slice(0, 3);\n    }\n}\n\nexport default GraphCalculator;\n",
     "import {\n    concat as observableConcat,\n    empty as observableEmpty,\n    from as observableFrom,\n    of as observableOf,\n    Observable,\n    Subject,\n    Subscription,\n} from \"rxjs\";\n\nimport {\n    first,\n    expand,\n    map,\n    last,\n    mergeMap,\n    startWith,\n    publishReplay,\n    refCount,\n    catchError,\n    finalize,\n    tap,\n} from \"rxjs/operators\";\n\nimport {ILatLon} from \"../API\";\nimport {\n    FilterExpression,\n    Graph,\n    GraphMode,\n    ImageLoadingService,\n    Node,\n    Sequence,\n} from \"../Graph\";\n\n/**\n * @class GraphService\n *\n * @classdesc Represents a service for graph operations.\n */\nexport class GraphService {\n    private _graph$: Observable<Graph>;\n    private _graphMode: GraphMode;\n    private _graphMode$: Observable<GraphMode>;\n    private _graphModeSubject$: Subject<GraphMode>;\n\n    private _imageLoadingService: ImageLoadingService;\n\n    private _firstGraphSubjects$: Subject<Graph>[];\n\n    private _initializeCacheSubscriptions: Subscription[];\n    private _sequenceSubscriptions: Subscription[];\n    private _spatialSubscriptions: Subscription[];\n\n    /**\n     * Create a new graph service instance.\n     *\n     * @param {Graph} graph - Graph instance to be operated on.\n     */\n    constructor(graph: Graph, imageLoadingService: ImageLoadingService) {\n        this._graph$ = observableConcat(\n                observableOf(graph),\n                graph.changed$).pipe(\n            publishReplay(1),\n            refCount());\n\n        this._graph$.subscribe(() => { /*noop*/ });\n\n        this._graphMode = GraphMode.Spatial;\n        this._graphModeSubject$ = new Subject<GraphMode>();\n        this._graphMode$ = this._graphModeSubject$.pipe(\n            startWith(this._graphMode),\n            publishReplay(1),\n            refCount());\n\n        this._graphMode$.subscribe(() => { /*noop*/ });\n\n        this._imageLoadingService = imageLoadingService;\n\n        this._firstGraphSubjects$ = [];\n\n        this._initializeCacheSubscriptions = [];\n        this._sequenceSubscriptions = [];\n        this._spatialSubscriptions = [];\n    }\n\n    /**\n     * Get graph mode observable.\n     *\n     * @description Emits the current graph mode.\n     *\n     * @returns {Observable<GraphMode>} Observable\n     * emitting the current graph mode when it changes.\n     */\n    public get graphMode$(): Observable<GraphMode> {\n        return this._graphMode$;\n    }\n\n    /**\n     * Cache full nodes in a bounding box.\n     *\n     * @description When called, the full properties of\n     * the node are retrieved. The node cache is not initialized\n     * for any new nodes retrieved and the node assets are not\n     * retrieved, {@link cacheNode$} needs to be called for caching\n     * assets.\n     *\n     * @param {ILatLon} sw - South west corner of bounding box.\n     * @param {ILatLon} ne - North east corner of bounding box.\n     * @return {Observable<Array<Node>>} Observable emitting a single item,\n     * the nodes of the bounding box, when they have all been retrieved.\n     * @throws {Error} Propagates any IO node caching errors to the caller.\n     */\n    public cacheBoundingBox$(sw: ILatLon, ne: ILatLon): Observable<Node[]> {\n        return this._graph$.pipe(\n            first(),\n            mergeMap(\n                (graph: Graph): Observable<Node[]> => {\n                    return graph.cacheBoundingBox$(sw, ne);\n                }));\n    }\n\n    /**\n     * Cache a node in the graph and retrieve it.\n     *\n     * @description When called, the full properties of\n     * the node are retrieved and the node cache is initialized.\n     * After that the node assets are cached and the node\n     * is emitted to the observable when.\n     * In parallel to caching the node assets, the sequence and\n     * spatial edges of the node are cached. For this, the sequence\n     * of the node and the required tiles and spatial nodes are\n     * retrieved. The sequence and spatial edges may be set before\n     * or after the node is returned.\n     *\n     * @param {string} key - Key of the node to cache.\n     * @return {Observable<Node>} Observable emitting a single item,\n     * the node, when it has been retrieved and its assets are cached.\n     * @throws {Error} Propagates any IO node caching errors to the caller.\n     */\n    public cacheNode$(key: string): Observable<Node> {\n        const firstGraphSubject$: Subject<Graph> = new Subject<Graph>();\n\n        this._firstGraphSubjects$.push(firstGraphSubject$);\n\n        const firstGraph$: Observable<Graph> = firstGraphSubject$.pipe(\n            publishReplay(1),\n            refCount());\n\n        const node$: Observable<Node> = firstGraph$.pipe(\n            map(\n                (graph: Graph): Node => {\n                    return graph.getNode(key);\n                }),\n            mergeMap(\n                (node: Node): Observable<Node> => {\n                    return node.assetsCached ?\n                        observableOf(node) :\n                        node.cacheAssets$();\n                }),\n            publishReplay(1),\n            refCount());\n\n        node$.subscribe(\n            (node: Node): void => {\n                this._imageLoadingService.loadnode$.next(node);\n            },\n            (error: Error): void => {\n                console.error(`Failed to cache node (${key})`, error);\n            });\n\n        const initializeCacheSubscription: Subscription = this._graph$.pipe(\n            first(),\n            mergeMap(\n                (graph: Graph): Observable<Graph> => {\n                    if (graph.isCachingFull(key) || !graph.hasNode(key)) {\n                        return graph.cacheFull$(key);\n                    }\n\n                    if (graph.isCachingFill(key) || !graph.getNode(key).full) {\n                        return graph.cacheFill$(key);\n                    }\n\n                    return observableOf<Graph>(graph);\n                }),\n            tap(\n                (graph: Graph): void => {\n                    if (!graph.hasInitializedCache(key)) {\n                        graph.initializeCache(key);\n                    }\n                }),\n            finalize(\n                (): void => {\n                    if (initializeCacheSubscription == null) {\n                        return;\n                    }\n\n                    this._removeFromArray(initializeCacheSubscription, this._initializeCacheSubscriptions);\n                    this._removeFromArray(firstGraphSubject$, this._firstGraphSubjects$);\n                }))\n            .subscribe(\n                (graph: Graph): void => {\n                    firstGraphSubject$.next(graph);\n                    firstGraphSubject$.complete();\n                },\n                (error: Error): void => {\n                    firstGraphSubject$.error(error);\n                });\n\n        if (!initializeCacheSubscription.closed) {\n            this._initializeCacheSubscriptions.push(initializeCacheSubscription);\n        }\n\n        const graphSequence$: Observable<Graph> = firstGraph$.pipe(\n            mergeMap(\n                (graph: Graph): Observable<Graph> => {\n                    if (graph.isCachingNodeSequence(key) || !graph.hasNodeSequence(key)) {\n                        return graph.cacheNodeSequence$(key);\n                    }\n\n                    return observableOf<Graph>(graph);\n                }),\n            publishReplay(1),\n            refCount());\n\n        const sequenceSubscription: Subscription = graphSequence$.pipe(\n            tap(\n                (graph: Graph): void => {\n                    if (!graph.getNode(key).sequenceEdges.cached) {\n                        graph.cacheSequenceEdges(key);\n                    }\n                }),\n            finalize(\n                (): void => {\n                    if (sequenceSubscription == null) {\n                        return;\n                    }\n\n                    this._removeFromArray(sequenceSubscription, this._sequenceSubscriptions);\n                }))\n            .subscribe(\n                (graph: Graph): void => { return; },\n                (error: Error): void => {\n                    console.error(`Failed to cache sequence edges (${key}).`, error);\n                });\n\n        if (!sequenceSubscription.closed) {\n            this._sequenceSubscriptions.push(sequenceSubscription);\n        }\n\n        if (this._graphMode === GraphMode.Spatial) {\n            const spatialSubscription: Subscription = firstGraph$.pipe(\n                expand(\n                    (graph: Graph): Observable<Graph> => {\n                        if (graph.hasTiles(key)) {\n                            return observableEmpty();\n                        }\n\n                        return observableFrom<Observable<Graph>>(graph.cacheTiles$(key)).pipe(\n                            mergeMap(\n                                (graph$: Observable<Graph>): Observable<Graph> => {\n                                    return graph$.pipe(\n                                        mergeMap(\n                                            (g: Graph): Observable<Graph> => {\n                                                if (g.isCachingTiles(key)) {\n                                                    return observableEmpty();\n                                                }\n\n                                                return observableOf<Graph>(g);\n                                            }),\n                                        catchError(\n                                            (error: Error, caught$: Observable<Graph>): Observable<Graph> => {\n                                                console.error(`Failed to cache tile data (${key}).`, error);\n\n                                                return observableEmpty();\n                                            }));\n                                }));\n                    }),\n                last(),\n                mergeMap(\n                    (graph: Graph): Observable<Graph> => {\n                        if (graph.hasSpatialArea(key)) {\n                            return observableOf<Graph>(graph);\n                        }\n\n                        return observableFrom<Observable<Graph>>(graph.cacheSpatialArea$(key)).pipe(\n                            mergeMap(\n                                (graph$: Observable<Graph>): Observable<Graph> => {\n                                    return graph$.pipe(\n                                        catchError(\n                                            (error: Error, caught$: Observable<Graph>): Observable<Graph> => {\n                                                console.error(`Failed to cache spatial nodes (${key}).`, error);\n\n                                                return observableEmpty();\n                                            }));\n                                }));\n                    }),\n                last(),\n                mergeMap(\n                    (graph: Graph): Observable<Graph> => {\n                        return graph.hasNodeSequence(key) ?\n                            observableOf<Graph>(graph) :\n                            graph.cacheNodeSequence$(key);\n                    }),\n                tap(\n                    (graph: Graph): void => {\n                        if (!graph.getNode(key).spatialEdges.cached) {\n                            graph.cacheSpatialEdges(key);\n                        }\n                    }),\n                finalize(\n                    (): void => {\n                        if (spatialSubscription == null) {\n                            return;\n                        }\n\n                        this._removeFromArray(spatialSubscription, this._spatialSubscriptions);\n                    }))\n                .subscribe(\n                    (graph: Graph): void => { return; },\n                    (error: Error): void => {\n                        console.error(`Failed to cache spatial edges (${key}).`, error);\n                    });\n\n            if (!spatialSubscription.closed) {\n                this._spatialSubscriptions.push(spatialSubscription);\n            }\n        }\n\n        return node$.pipe(\n            first(\n                (node: Node): boolean => {\n                    return node.assetsCached;\n                }));\n    }\n\n    /**\n     * Cache a sequence in the graph and retrieve it.\n     *\n     * @param {string} sequenceKey - Sequence key.\n     * @returns {Observable<Sequence>} Observable emitting a single item,\n     * the sequence, when it has been retrieved and its assets are cached.\n     * @throws {Error} Propagates any IO node caching errors to the caller.\n     */\n    public cacheSequence$(sequenceKey: string): Observable<Sequence> {\n        return this._graph$.pipe(\n            first(),\n            mergeMap(\n                (graph: Graph): Observable<Graph> => {\n                    if (graph.isCachingSequence(sequenceKey) || !graph.hasSequence(sequenceKey)) {\n                        return graph.cacheSequence$(sequenceKey);\n                    }\n\n                    return observableOf<Graph>(graph);\n                }),\n            map(\n                (graph: Graph): Sequence => {\n                    return graph.getSequence(sequenceKey);\n                }));\n    }\n\n    /**\n     * Cache a sequence and its nodes in the graph and retrieve the sequence.\n     *\n     * @description Caches a sequence and its assets are cached and\n     * retrieves all nodes belonging to the sequence. The node assets\n     * or edges will not be cached.\n     *\n     * @param {string} sequenceKey - Sequence key.\n     * @param {string} referenceNodeKey - Key of node to use as reference\n     * for optimized caching.\n     * @returns {Observable<Sequence>} Observable emitting a single item,\n     * the sequence, when it has been retrieved, its assets are cached and\n     * all nodes belonging to the sequence has been retrieved.\n     * @throws {Error} Propagates any IO node caching errors to the caller.\n     */\n    public cacheSequenceNodes$(sequenceKey: string, referenceNodeKey?: string): Observable<Sequence> {\n        return this._graph$.pipe(\n            first(),\n            mergeMap(\n                (graph: Graph): Observable<Graph> => {\n                    if (graph.isCachingSequence(sequenceKey) || !graph.hasSequence(sequenceKey)) {\n                        return graph.cacheSequence$(sequenceKey);\n                    }\n\n                    return observableOf<Graph>(graph);\n                }),\n            mergeMap(\n                (graph: Graph): Observable<Graph> => {\n                    if (graph.isCachingSequenceNodes(sequenceKey) || !graph.hasSequenceNodes(sequenceKey)) {\n                        return graph.cacheSequenceNodes$(sequenceKey, referenceNodeKey);\n                    }\n\n                    return observableOf<Graph>(graph);\n                }),\n            map(\n                (graph: Graph): Sequence => {\n                    return graph.getSequence(sequenceKey);\n                }));\n    }\n\n    /**\n     * Set a spatial edge filter on the graph.\n     *\n     * @description Resets the spatial edges of all cached nodes.\n     *\n     * @param {FilterExpression} filter - Filter expression to be applied.\n     * @return {Observable<Graph>} Observable emitting a single item,\n     * the graph, when the spatial edges have been reset.\n     */\n    public setFilter$(filter: FilterExpression): Observable<void> {\n        this._resetSubscriptions(this._spatialSubscriptions);\n\n        return this._graph$.pipe(\n            first(),\n            tap(\n                (graph: Graph): void => {\n                    graph.resetSpatialEdges();\n                    graph.setFilter(filter);\n                }),\n            map(\n                (graph: Graph): void => {\n                    return undefined;\n                }));\n    }\n\n    /**\n     * Set the graph mode.\n     *\n     * @description If graph mode is set to spatial, caching\n     * is performed with emphasis on spatial edges. If graph\n     * mode is set to sequence no tile data is requested and\n     * no spatial edges are computed.\n     *\n     * When setting graph mode to sequence all spatial\n     * subscriptions are aborted.\n     *\n     * @param {GraphMode} mode - Graph mode to set.\n     */\n    public setGraphMode(mode: GraphMode): void {\n        if (this._graphMode === mode) {\n            return;\n        }\n\n        if (mode === GraphMode.Sequence) {\n            this._resetSubscriptions(this._spatialSubscriptions);\n        }\n\n        this._graphMode = mode;\n        this._graphModeSubject$.next(this._graphMode);\n    }\n\n    /**\n     * Reset the graph.\n     *\n     * @description Resets the graph but keeps the nodes of the\n     * supplied keys.\n     *\n     * @param {Array<string>} keepKeys - Keys of nodes to keep in graph.\n     * @return {Observable<Node>} Observable emitting a single item,\n     * the graph, when it has been reset.\n     */\n    public reset$(keepKeys: string[]): Observable<void> {\n        this._abortSubjects(this._firstGraphSubjects$);\n        this._resetSubscriptions(this._initializeCacheSubscriptions);\n        this._resetSubscriptions(this._sequenceSubscriptions);\n        this._resetSubscriptions(this._spatialSubscriptions);\n\n        return this._graph$.pipe(\n            first(),\n            tap(\n                (graph: Graph): void => {\n                    graph.reset(keepKeys);\n                }),\n            map(\n                (graph: Graph): void => {\n                    return undefined;\n                }));\n    }\n\n    /**\n     * Uncache the graph.\n     *\n     * @description Uncaches the graph by removing tiles, nodes and\n     * sequences. Keeps the nodes of the supplied keys and the tiles\n     * related to those nodes.\n     *\n     * @param {Array<string>} keepKeys - Keys of nodes to keep in graph.\n     * @param {string} keepSequenceKey - Optional key of sequence\n     * for which the belonging nodes should not be disposed or\n     * removed from the graph. These nodes may still be uncached if\n     * not specified in keep keys param.\n     * @return {Observable<Graph>} Observable emitting a single item,\n     * the graph, when the graph has been uncached.\n     */\n    public uncache$(keepKeys: string[], keepSequenceKey?: string): Observable<void> {\n        return this._graph$.pipe(\n            first(),\n            tap(\n                (graph: Graph): void => {\n                    graph.uncache(keepKeys, keepSequenceKey);\n                }),\n            map(\n                (graph: Graph): void => {\n                    return undefined;\n                }));\n    }\n\n    private _abortSubjects<T>(subjects: Subject<T>[]): void {\n        for (const subject of subjects.slice()) {\n            this._removeFromArray(subject, subjects);\n\n            subject.error(new Error(\"Cache node request was aborted.\"));\n        }\n    }\n\n    private _removeFromArray<T>(object: T, objects: T[]): void {\n        const index: number = objects.indexOf(object);\n        if (index !== -1) {\n            objects.splice(index, 1);\n        }\n    }\n\n    private _resetSubscriptions(subscriptions: Subscription[]): void {\n        for (const subscription of subscriptions.slice()) {\n            this._removeFromArray(subscription, subscriptions);\n\n            if (!subscription.closed) {\n                subscription.unsubscribe();\n            }\n        }\n    }\n}\n\nexport default GraphService;\n",
     "import {refCount, publishReplay, map, filter, scan} from \"rxjs/operators\";\nimport {Subject, Observable} from \"rxjs\";\n\nimport {ILoadStatus, Node} from \"../Graph\";\n\ntype LoadStatus = [{ [key: string]: ILoadStatus }, boolean];\n\nexport class ImageLoadingService {\n    private _loadnode$: Subject<Node> = new Subject<Node>();\n    private _loadstatus$: Observable<{[key: string]: ILoadStatus}>;\n\n    constructor () {\n        this._loadstatus$ = this._loadnode$.pipe(\n            scan<Node, LoadStatus>(\n                ([nodes]: LoadStatus, node: Node): [{[key: string]: ILoadStatus}, boolean] => {\n                    let changed: boolean = false;\n                    if (node.loadStatus.total === 0 || node.loadStatus.loaded === node.loadStatus.total) {\n                        if (node.key in nodes) {\n                            delete nodes[node.key];\n                            changed = true;\n                        }\n                    } else {\n                        nodes[node.key] = node.loadStatus;\n                        changed = true;\n                    }\n\n                    return [nodes, changed];\n                },\n                [{}, false]),\n            filter(\n                ([nodes, changed]: [{[key: string]: ILoadStatus}, boolean]): boolean => {\n                    return changed;\n                }),\n            map(\n                ([nodes]: [{[key: string]: ILoadStatus}, boolean]): {[key: string]: ILoadStatus} => {\n                    return nodes;\n                }),\n            publishReplay(1),\n            refCount());\n\n        this._loadstatus$.subscribe(() => { /*noop*/ });\n    }\n\n    public get loadnode$(): Subject<Node> {\n        return this._loadnode$;\n    }\n\n    public get loadstatus$(): Observable<{[key: string]: ILoadStatus}> {\n        return this._loadstatus$;\n    }\n}\n",
     "import * as Pbf from \"pbf\";\n\nimport {IMesh} from \"../Graph\";\n\nexport class MeshReader {\n    public static read(buffer: Buffer): IMesh {\n        let pbf: Pbf<IMesh> = new Pbf<IMesh>(buffer);\n\n        return pbf.readFields(MeshReader._readMeshField, { faces: [], vertices: [] });\n    }\n\n    private static _readMeshField(tag: number, mesh: IMesh, pbf: Pbf<IMesh>): void {\n        if (tag === 1) {\n            mesh.vertices.push(pbf.readFloat());\n        } else if (tag === 2) {\n            mesh.faces.push(pbf.readVarint());\n        }\n    }\n}\n",
-    "import {map} from \"rxjs/operators\";\nimport {Observable} from \"rxjs\";\n\nimport {\n    ICoreNode,\n    IFillNode,\n    IGPano,\n    ILatLon,\n} from \"../API\";\nimport {IEdge} from \"../Edge\";\nimport {\n    IEdgeStatus,\n    IMesh,\n    ILoadStatus,\n    NodeCache,\n} from \"../Graph\";\nimport {ImageSize} from \"../Viewer\";\n\n/**\n * @class Node\n *\n * @classdesc Represents a node in the navigation graph.\n *\n * Explanation of position and bearing properties:\n *\n * When images are uploaded they will have GPS information in the EXIF, this is what\n * is called `originalLatLon` {@link Node.originalLatLon}.\n *\n * When Structure from Motions has been run for a node a `computedLatLon` that\n * differs from the `originalLatLon` will be created. It is different because\n * GPS positions are not very exact and SfM aligns the camera positions according\n * to the 3D reconstruction {@link Node.computedLatLon}.\n *\n * At last there exist a `latLon` property which evaluates to\n * the `computedLatLon` from SfM if it exists but falls back\n * to the `originalLatLon` from the EXIF GPS otherwise {@link Node.latLon}.\n *\n * Everything that is done in in the Viewer is based on the SfM positions,\n * i.e. `computedLatLon`. That is why the smooth transitions go in the right\n * direction (nd not in strange directions because of bad GPS).\n *\n * E.g. when placing a marker in the Viewer it is relative to the SfM\n * position i.e. the `computedLatLon`.\n *\n * The same concept as above also applies to the compass angle (or bearing) properties\n * `originalCa`, `computedCa` and `ca`.\n */\nexport class Node {\n    private _cache: NodeCache;\n    private _core: ICoreNode;\n    private _fill: IFillNode;\n\n    /**\n     * Create a new node instance.\n     *\n     * @description Nodes are always created internally by the library.\n     * Nodes can not be added to the library through any API method.\n     *\n     * @param {ICoreNode} coreNode - Raw core node data.\n     * @ignore\n     */\n    constructor(core: ICoreNode) {\n        this._cache = null;\n        this._core = core;\n        this._fill = null;\n    }\n\n    /**\n     * Get assets cached.\n     *\n     * @description The assets that need to be cached for this property\n     * to report true are the following: fill properties, image and mesh.\n     * The library ensures that the current node will always have the\n     * assets cached.\n     *\n     * @returns {boolean} Value indicating whether all assets have been\n     * cached.\n     *\n     * @ignore\n     */\n    public get assetsCached(): boolean {\n        return this._core != null &&\n            this._fill != null &&\n            this._cache != null &&\n            this._cache.image != null &&\n            this._cache.mesh != null;\n    }\n\n    /**\n     * Get alt.\n     *\n     * @description If SfM has not been run the computed altitude is\n     * set to a default value of two meters.\n     *\n     * @returns {number} Altitude, in meters.\n     */\n    public get alt(): number {\n        return this._fill.calt;\n    }\n\n    /**\n     * Get ca.\n     *\n     * @description If the SfM computed compass angle exists it will\n     * be returned, otherwise the original EXIF compass angle.\n     *\n     * @returns {number} Compass angle, measured in degrees\n     * clockwise with respect to north.\n     */\n    public get ca(): number {\n        return this._fill.cca != null ? this._fill.cca : this._fill.ca;\n    }\n\n    /**\n     * Get capturedAt.\n     *\n     * @returns {number} Timestamp when the image was captured.\n     */\n    public get capturedAt(): number {\n        return this._fill.captured_at;\n    }\n\n    /**\n     * Get camera uuid.\n     *\n     * @description Will be undefined if the camera uuid was not\n     * recorded in the image exif information.\n     *\n     * @returns {string} Universally unique id for camera used\n     * when capturing image.\n     */\n    public get cameraUuid(): string {\n        return this._fill.captured_with_camera_uuid;\n    }\n\n    /**\n     * Get ck1.\n     *\n     * @description Will not be set if SfM has not been run.\n     *\n     * @returns {number} SfM computed radial distortion parameter\n     * k1.\n     */\n    public get ck1(): number {\n        return this._fill.ck1;\n    }\n\n    /**\n     * Get ck2.\n     *\n     * @description Will not be set if SfM has not been run.\n     *\n     * @returns {number} SfM computed radial distortion parameter\n     * k2.\n     */\n    public get ck2(): number {\n        return this._fill.ck2;\n    }\n\n    /**\n     * Get computedCA.\n     *\n     * @description Will not be set if SfM has not been run.\n     *\n     * @returns {number} SfM computed compass angle, measured\n     * in degrees clockwise with respect to north.\n     */\n    public get computedCA(): number {\n        return this._fill.cca;\n    }\n\n    /**\n     * Get computedLatLon.\n     *\n     * @description Will not be set if SfM has not been run.\n     *\n     * @returns {ILatLon} SfM computed latitude longitude in WGS84 datum,\n     * measured in degrees.\n     */\n    public get computedLatLon(): ILatLon {\n        return this._core.cl;\n    }\n\n    /**\n     * Get focal.\n     *\n     * @description Will not be set if SfM has not been run.\n     *\n     * @returns {number} SfM computed focal length.\n     */\n    public get focal(): number {\n        return this._fill.cfocal;\n    }\n\n    /**\n     * Get full.\n     *\n     * @description The library ensures that the current node will\n     * always be full.\n     *\n     * @returns {boolean} Value indicating whether the node has all\n     * properties filled.\n     *\n     * @ignore\n     */\n    public get full(): boolean {\n        return this._fill != null;\n    }\n\n    /**\n     * Get fullPano.\n     *\n     * @returns {boolean} Value indicating whether the node is a complete\n     * 360 panorama.\n     */\n    public get fullPano(): boolean {\n        return this._fill.gpano != null &&\n            this._fill.gpano.CroppedAreaLeftPixels === 0 &&\n            this._fill.gpano.CroppedAreaTopPixels === 0 &&\n            this._fill.gpano.CroppedAreaImageWidthPixels === this._fill.gpano.FullPanoWidthPixels &&\n            this._fill.gpano.CroppedAreaImageHeightPixels === this._fill.gpano.FullPanoHeightPixels;\n    }\n\n    /**\n     * Get gpano.\n     *\n     * @description Will not be set for non panoramic images.\n     *\n     * @returns {IGPano} Panorama information for panorama images.\n     */\n    public get gpano(): IGPano {\n        return this._fill.gpano;\n    }\n\n    /**\n     * Get height.\n     *\n     * @returns {number} Height of original image, not adjusted\n     * for orientation.\n     */\n    public get height(): number {\n        return this._fill.height;\n    }\n\n    /**\n     * Get image.\n     *\n     * @description The image will always be set on the current node.\n     *\n     * @returns {HTMLImageElement} Cached image element of the node.\n     */\n    public get image(): HTMLImageElement {\n        return this._cache.image;\n    }\n\n    /**\n     * Get image$.\n     *\n     * @returns {Observable<HTMLImageElement>} Observable emitting\n     * the cached image when it is updated.\n     *\n     * @ignore\n     */\n    public get image$(): Observable<HTMLImageElement> {\n        return this._cache.image$;\n    }\n\n    /**\n     * Get key.\n     *\n     * @returns {string} Unique key of the node.\n     */\n    public get key(): string {\n        return this._core.key;\n    }\n\n    /**\n     * Get latLon.\n     *\n     * @description If the SfM computed latitude longitude exist\n     * it will be returned, otherwise the original EXIF latitude\n     * longitude.\n     *\n     * @returns {ILatLon} Latitude longitude in WGS84 datum,\n     * measured in degrees.\n     */\n    public get latLon(): ILatLon {\n        return this._core.cl != null ? this._core.cl : this._core.l;\n    }\n\n    /**\n     * Get loadStatus.\n     *\n     * @returns {ILoadStatus} Value indicating the load status\n     * of the mesh and image.\n     */\n    public get loadStatus(): ILoadStatus {\n        return this._cache.loadStatus;\n    }\n\n    /**\n     * Get merged.\n     *\n     * @returns {boolean} Value indicating whether SfM has been\n     * run on the node and the node has been merged into a\n     * connected component.\n     */\n    public get merged(): boolean {\n        return this._fill != null &&\n            this._fill.merge_version != null &&\n            this._fill.merge_version > 0;\n    }\n\n    /**\n     * Get mergeCC.\n     *\n     * @description Will not be set if SfM has not yet been run on\n     * node.\n     *\n     * @returns {number} SfM connected component key to which\n     * image belongs.\n     */\n    public get mergeCC(): number {\n        return this._fill.merge_cc;\n    }\n\n    /**\n     * Get mergeVersion.\n     *\n     * @returns {number} Version for which SfM was run and image was merged.\n     */\n    public get mergeVersion(): number {\n        return this._fill.merge_version;\n    }\n\n    /**\n     * Get mesh.\n     *\n     * @description The mesh will always be set on the current node.\n     *\n     * @returns {IMesh} SfM triangulated mesh of reconstructed\n     * atomic 3D points.\n     */\n    public get mesh(): IMesh {\n        return this._cache.mesh;\n    }\n\n    /**\n     * Get organizationKey.\n     *\n     * @returns {string} Unique key of the organization to which\n     * the node belongs. If the node does not belong to an\n     * organization the organization key will be undefined.\n     */\n    public get organizationKey(): string {\n        return this._fill.organization_key;\n    }\n\n    /**\n     * Get orientation.\n     *\n     * @returns {number} EXIF orientation of original image.\n     */\n    public get orientation(): number {\n        return this._fill.orientation;\n    }\n\n    /**\n     * Get originalCA.\n     *\n     * @returns {number} Original EXIF compass angle, measured in\n     * degrees.\n     */\n    public get originalCA(): number {\n        return this._fill.ca;\n    }\n\n    /**\n     * Get originalLatLon.\n     *\n     * @returns {ILatLon} Original EXIF latitude longitude in\n     * WGS84 datum, measured in degrees.\n     */\n    public get originalLatLon(): ILatLon {\n        return this._core.l;\n    }\n\n    /**\n     * Get pano.\n     *\n     * @returns {boolean} Value indicating whether the node is a panorama.\n     * It could be a cropped or full panorama.\n     */\n    public get pano(): boolean {\n        return this._fill.gpano != null &&\n            this._fill.gpano.FullPanoWidthPixels != null;\n    }\n\n    /**\n     * Get private.\n     *\n     * @returns {boolean} Value specifying if image is accessible to\n     * organization members only or to everyone.\n     */\n    public get private(): boolean {\n        return this._fill.private;\n    }\n\n    /**\n     * Get projectKey.\n     *\n     * @returns {string} Unique key of the project to which\n     * the node belongs. If the node does not belong to a\n     * project the project key will be undefined.\n     *\n     * @deprecated This property will be deprecated in favor\n     * of the organization key and private properties.\n     */\n    public get projectKey(): string {\n        return this._fill.project != null ?\n            this._fill.project.key :\n            null;\n    }\n\n    /**\n     * Get rotation.\n     *\n     * @description Will not be set if SfM has not been run.\n     *\n     * @returns {Array<number>} Rotation vector in angle axis representation.\n     */\n    public get rotation(): number[] {\n        return this._fill.c_rotation;\n    }\n\n    /**\n     * Get scale.\n     *\n     * @description Will not be set if SfM has not been run.\n     *\n     * @returns {number} Scale of atomic reconstruction.\n     */\n    public get scale(): number {\n        return this._fill.atomic_scale;\n    }\n\n    /**\n     * Get sequenceKey.\n     *\n     * @returns {string} Unique key of the sequence to which\n     * the node belongs.\n     */\n    public get sequenceKey(): string {\n        return this._core.sequence_key;\n    }\n\n    /**\n     * Get sequenceEdges.\n     *\n     * @returns {IEdgeStatus} Value describing the status of the\n     * sequence edges.\n     */\n    public get sequenceEdges(): IEdgeStatus {\n        return this._cache.sequenceEdges;\n    }\n\n    /**\n     * Get sequenceEdges$.\n     *\n     * @description Internal observable, should not be used as an API.\n     *\n     * @returns {Observable<IEdgeStatus>} Observable emitting\n     * values describing the status of the sequence edges.\n     *\n     * @ignore\n     */\n    public get sequenceEdges$(): Observable<IEdgeStatus> {\n        return this._cache.sequenceEdges$;\n    }\n\n    /**\n     * Get spatialEdges.\n     *\n     * @returns {IEdgeStatus} Value describing the status of the\n     * spatial edges.\n     */\n    public get spatialEdges(): IEdgeStatus {\n        return this._cache.spatialEdges;\n    }\n\n    /**\n     * Get spatialEdges$.\n     *\n     * @description Internal observable, should not be used as an API.\n     *\n     * @returns {Observable<IEdgeStatus>} Observable emitting\n     * values describing the status of the spatial edges.\n     *\n     * @ignore\n     */\n    public get spatialEdges$(): Observable<IEdgeStatus> {\n        return this._cache.spatialEdges$;\n    }\n\n    /**\n     * Get userKey.\n     *\n     * @returns {string} Unique key of the user who uploaded\n     * the image.\n     */\n    public get userKey(): string {\n        return this._fill.user.key;\n    }\n\n    /**\n     * Get username.\n     *\n     * @returns {string} Username of the user who uploaded\n     * the image.\n     */\n    public get username(): string {\n        return this._fill.user.username;\n    }\n\n    /**\n     * Get width.\n     *\n     * @returns {number} Width of original image, not\n     * adjusted for orientation.\n     */\n    public get width(): number {\n        return this._fill.width;\n    }\n\n    /**\n     * Cache the image and mesh assets.\n     *\n     * @description The assets are always cached internally by the\n     * library prior to setting a node as the current node.\n     *\n     * @returns {Observable<Node>} Observable emitting this node whenever the\n     * load status has changed and when the mesh or image has been fully loaded.\n     *\n     * @ignore\n     */\n    public cacheAssets$(): Observable<Node> {\n        return this._cache.cacheAssets$(this.key, this.pano, this.merged).pipe(\n            map(\n                (): Node => {\n                    return this;\n                }));\n    }\n\n    /**\n     * Cache the image asset.\n     *\n     * @description Use for caching a differently sized image than\n     * the one currently held by the node.\n     *\n     * @returns {Observable<Node>} Observable emitting this node whenever the\n     * load status has changed and when the mesh or image has been fully loaded.\n     *\n     * @ignore\n     */\n    public cacheImage$(imageSize: ImageSize): Observable<Node> {\n        return this._cache.cacheImage$(this.key, imageSize).pipe(\n            map(\n                (): Node => {\n                    return this;\n                }));\n    }\n\n    /**\n     * Cache the sequence edges.\n     *\n     * @description The sequence edges are cached asynchronously\n     * internally by the library.\n     *\n     * @param {Array<IEdge>} edges - Sequence edges to cache.\n     * @ignore\n     */\n    public cacheSequenceEdges(edges: IEdge[]): void {\n        this._cache.cacheSequenceEdges(edges);\n    }\n\n    /**\n     * Cache the spatial edges.\n     *\n     * @description The spatial edges are cached asynchronously\n     * internally by the library.\n     *\n     * @param {Array<IEdge>} edges - Spatial edges to cache.\n     * @ignore\n     */\n    public cacheSpatialEdges(edges: IEdge[]): void {\n        this._cache.cacheSpatialEdges(edges);\n    }\n\n    /**\n     * Dispose the node.\n     *\n     * @description Disposes all cached assets.\n     * @ignore\n     */\n    public dispose(): void {\n        if (this._cache != null) {\n            this._cache.dispose();\n            this._cache = null;\n        }\n\n        this._core = null;\n        this._fill = null;\n    }\n\n    /**\n     * Initialize the node cache.\n     *\n     * @description The node cache is initialized internally by\n     * the library.\n     *\n     * @param {NodeCache} cache - The node cache to set as cache.\n     * @ignore\n     */\n    public initializeCache(cache: NodeCache): void {\n        if (this._cache != null) {\n            throw new Error(`Node cache already initialized (${this.key}).`);\n        }\n\n        this._cache = cache;\n    }\n\n    /**\n     * Fill the node with all properties.\n     *\n     * @description The node is filled internally by\n     * the library.\n     *\n     * @param {IFillNode} fill - The fill node struct.\n     * @ignore\n     */\n    public makeFull(fill: IFillNode): void {\n        if (fill == null) {\n            throw new Error(\"Fill can not be null.\");\n        }\n\n        this._fill = fill;\n    }\n\n    /**\n     * Reset the sequence edges.\n     *\n     * @ignore\n     */\n    public resetSequenceEdges(): void {\n        this._cache.resetSequenceEdges();\n    }\n\n    /**\n     * Reset the spatial edges.\n     *\n     * @ignore\n     */\n    public resetSpatialEdges(): void {\n        this._cache.resetSpatialEdges();\n    }\n\n    /**\n     * Clears the image and mesh assets, aborts\n     * any outstanding requests and resets edges.\n     *\n     * @ignore\n     */\n    public uncache(): void {\n        if (this._cache == null) {\n            return;\n        }\n\n        this._cache.dispose();\n        this._cache = null;\n    }\n}\n\nexport default Node;\n",
+    "import {map} from \"rxjs/operators\";\nimport {Observable} from \"rxjs\";\n\nimport {\n    ICoreNode,\n    IFillNode,\n    IGPano,\n    ILatLon,\n} from \"../API\";\nimport {IEdge} from \"../Edge\";\nimport {\n    IEdgeStatus,\n    IMesh,\n    ILoadStatus,\n    NodeCache,\n} from \"../Graph\";\nimport {ImageSize} from \"../Viewer\";\n\n/**\n * @class Node\n *\n * @classdesc Represents a node in the navigation graph.\n *\n * Explanation of position and bearing properties:\n *\n * When images are uploaded they will have GPS information in the EXIF, this is what\n * is called `originalLatLon` {@link Node.originalLatLon}.\n *\n * When Structure from Motions has been run for a node a `computedLatLon` that\n * differs from the `originalLatLon` will be created. It is different because\n * GPS positions are not very exact and SfM aligns the camera positions according\n * to the 3D reconstruction {@link Node.computedLatLon}.\n *\n * At last there exist a `latLon` property which evaluates to\n * the `computedLatLon` from SfM if it exists but falls back\n * to the `originalLatLon` from the EXIF GPS otherwise {@link Node.latLon}.\n *\n * Everything that is done in in the Viewer is based on the SfM positions,\n * i.e. `computedLatLon`. That is why the smooth transitions go in the right\n * direction (nd not in strange directions because of bad GPS).\n *\n * E.g. when placing a marker in the Viewer it is relative to the SfM\n * position i.e. the `computedLatLon`.\n *\n * The same concept as above also applies to the compass angle (or bearing) properties\n * `originalCa`, `computedCa` and `ca`.\n */\nexport class Node {\n    private _cache: NodeCache;\n    private _core: ICoreNode;\n    private _fill: IFillNode;\n\n    /**\n     * Create a new node instance.\n     *\n     * @description Nodes are always created internally by the library.\n     * Nodes can not be added to the library through any API method.\n     *\n     * @param {ICoreNode} coreNode - Raw core node data.\n     * @ignore\n     */\n    constructor(core: ICoreNode) {\n        this._cache = null;\n        this._core = core;\n        this._fill = null;\n    }\n\n    /**\n     * Get assets cached.\n     *\n     * @description The assets that need to be cached for this property\n     * to report true are the following: fill properties, image and mesh.\n     * The library ensures that the current node will always have the\n     * assets cached.\n     *\n     * @returns {boolean} Value indicating whether all assets have been\n     * cached.\n     *\n     * @ignore\n     */\n    public get assetsCached(): boolean {\n        return this._core != null &&\n            this._fill != null &&\n            this._cache != null &&\n            this._cache.image != null &&\n            this._cache.mesh != null;\n    }\n\n    /**\n     * Get alt.\n     *\n     * @description If SfM has not been run the computed altitude is\n     * set to a default value of two meters.\n     *\n     * @returns {number} Altitude, in meters.\n     */\n    public get alt(): number {\n        return this._fill.calt;\n    }\n\n    /**\n     * Get ca.\n     *\n     * @description If the SfM computed compass angle exists it will\n     * be returned, otherwise the original EXIF compass angle.\n     *\n     * @returns {number} Compass angle, measured in degrees\n     * clockwise with respect to north.\n     */\n    public get ca(): number {\n        return this._fill.cca != null ? this._fill.cca : this._fill.ca;\n    }\n\n    /**\n     * Get cameraProjection.\n     *\n     * @description Will be undefined if SfM has not been run.\n     *\n     * @returns {number} The camera projection of the image.\n     */\n    public get cameraProjection(): \"perspective\" | \"fisheye\" | \"equirectangular\" {\n        return this._fill.camera_projection_type;\n    }\n\n    /**\n     * Get capturedAt.\n     *\n     * @returns {number} Timestamp when the image was captured.\n     */\n    public get capturedAt(): number {\n        return this._fill.captured_at;\n    }\n\n    /**\n     * Get camera uuid.\n     *\n     * @description Will be undefined if the camera uuid was not\n     * recorded in the image exif information.\n     *\n     * @returns {string} Universally unique id for camera used\n     * when capturing image.\n     */\n    public get cameraUuid(): string {\n        return this._fill.captured_with_camera_uuid;\n    }\n\n    /**\n     * Get clusterKey.\n     *\n     * @returns {string} Unique key of the SfM cluster to which\n     * the node belongs.\n     */\n    public get clusterKey(): string {\n        return this._fill.cluster_key;\n    }\n\n    /**\n     * Get ck1.\n     *\n     * @description Will not be set if SfM has not been run.\n     *\n     * @returns {number} SfM computed radial distortion parameter\n     * k1.\n     */\n    public get ck1(): number {\n        return this._fill.ck1;\n    }\n\n    /**\n     * Get ck2.\n     *\n     * @description Will not be set if SfM has not been run.\n     *\n     * @returns {number} SfM computed radial distortion parameter\n     * k2.\n     */\n    public get ck2(): number {\n        return this._fill.ck2;\n    }\n\n    /**\n     * Get computedCA.\n     *\n     * @description Will not be set if SfM has not been run.\n     *\n     * @returns {number} SfM computed compass angle, measured\n     * in degrees clockwise with respect to north.\n     */\n    public get computedCA(): number {\n        return this._fill.cca;\n    }\n\n    /**\n     * Get computedLatLon.\n     *\n     * @description Will not be set if SfM has not been run.\n     *\n     * @returns {ILatLon} SfM computed latitude longitude in WGS84 datum,\n     * measured in degrees.\n     */\n    public get computedLatLon(): ILatLon {\n        return this._core.cl;\n    }\n\n    /**\n     * Get focal.\n     *\n     * @description Will not be set if SfM has not been run.\n     *\n     * @returns {number} SfM computed focal length.\n     */\n    public get focal(): number {\n        return this._fill.cfocal;\n    }\n\n    /**\n     * Get full.\n     *\n     * @description The library ensures that the current node will\n     * always be full.\n     *\n     * @returns {boolean} Value indicating whether the node has all\n     * properties filled.\n     *\n     * @ignore\n     */\n    public get full(): boolean {\n        return this._fill != null;\n    }\n\n    /**\n     * Get fullPano.\n     *\n     * @returns {boolean} Value indicating whether the node is a complete\n     * 360 panorama.\n     */\n    public get fullPano(): boolean {\n        return this._fill.gpano != null &&\n            this._fill.gpano.CroppedAreaLeftPixels === 0 &&\n            this._fill.gpano.CroppedAreaTopPixels === 0 &&\n            this._fill.gpano.CroppedAreaImageWidthPixels === this._fill.gpano.FullPanoWidthPixels &&\n            this._fill.gpano.CroppedAreaImageHeightPixels === this._fill.gpano.FullPanoHeightPixels;\n    }\n\n    /**\n     * Get gpano.\n     *\n     * @description Will not be set for non panoramic images.\n     *\n     * @returns {IGPano} Panorama information for panorama images.\n     */\n    public get gpano(): IGPano {\n        return this._fill.gpano;\n    }\n\n    /**\n     * Get height.\n     *\n     * @returns {number} Height of original image, not adjusted\n     * for orientation.\n     */\n    public get height(): number {\n        return this._fill.height;\n    }\n\n    /**\n     * Get image.\n     *\n     * @description The image will always be set on the current node.\n     *\n     * @returns {HTMLImageElement} Cached image element of the node.\n     */\n    public get image(): HTMLImageElement {\n        return this._cache.image;\n    }\n\n    /**\n     * Get image$.\n     *\n     * @returns {Observable<HTMLImageElement>} Observable emitting\n     * the cached image when it is updated.\n     *\n     * @ignore\n     */\n    public get image$(): Observable<HTMLImageElement> {\n        return this._cache.image$;\n    }\n\n    /**\n     * Get key.\n     *\n     * @returns {string} Unique key of the node.\n     */\n    public get key(): string {\n        return this._core.key;\n    }\n\n    /**\n     * Get latLon.\n     *\n     * @description If the SfM computed latitude longitude exist\n     * it will be returned, otherwise the original EXIF latitude\n     * longitude.\n     *\n     * @returns {ILatLon} Latitude longitude in WGS84 datum,\n     * measured in degrees.\n     */\n    public get latLon(): ILatLon {\n        return this._core.cl != null ? this._core.cl : this._core.l;\n    }\n\n    /**\n     * Get loadStatus.\n     *\n     * @returns {ILoadStatus} Value indicating the load status\n     * of the mesh and image.\n     *\n     * @ignore\n     */\n    public get loadStatus(): ILoadStatus {\n        return this._cache.loadStatus;\n    }\n\n    /**\n     * Get merged.\n     *\n     * @returns {boolean} Value indicating whether SfM has been\n     * run on the node and the node has been merged into a\n     * connected component.\n     */\n    public get merged(): boolean {\n        return this._fill != null &&\n            this._fill.merge_version != null &&\n            this._fill.merge_version > 0;\n    }\n\n    /**\n     * Get mergeCC.\n     *\n     * @description Will not be set if SfM has not yet been run on\n     * node.\n     *\n     * @returns {number} SfM connected component key to which\n     * image belongs.\n     */\n    public get mergeCC(): number {\n        return this._fill.merge_cc;\n    }\n\n    /**\n     * Get mergeVersion.\n     *\n     * @returns {number} Version for which SfM was run and image was merged.\n     */\n    public get mergeVersion(): number {\n        return this._fill.merge_version;\n    }\n\n    /**\n     * Get mesh.\n     *\n     * @description The mesh will always be set on the current node.\n     *\n     * @returns {IMesh} SfM triangulated mesh of reconstructed\n     * atomic 3D points.\n     */\n    public get mesh(): IMesh {\n        return this._cache.mesh;\n    }\n\n    /**\n     * Get organizationKey.\n     *\n     * @returns {string} Unique key of the organization to which\n     * the node belongs. If the node does not belong to an\n     * organization the organization key will be undefined.\n     */\n    public get organizationKey(): string {\n        return this._fill.organization_key;\n    }\n\n    /**\n     * Get orientation.\n     *\n     * @returns {number} EXIF orientation of original image.\n     */\n    public get orientation(): number {\n        return this._fill.orientation;\n    }\n\n    /**\n     * Get originalCA.\n     *\n     * @returns {number} Original EXIF compass angle, measured in\n     * degrees.\n     */\n    public get originalCA(): number {\n        return this._fill.ca;\n    }\n\n    /**\n     * Get originalLatLon.\n     *\n     * @returns {ILatLon} Original EXIF latitude longitude in\n     * WGS84 datum, measured in degrees.\n     */\n    public get originalLatLon(): ILatLon {\n        return this._core.l;\n    }\n\n    /**\n     * Get pano.\n     *\n     * @returns {boolean} Value indicating whether the node is a panorama.\n     * It could be a cropped or full panorama.\n     */\n    public get pano(): boolean {\n        return this._fill.gpano != null &&\n            this._fill.gpano.FullPanoWidthPixels != null;\n    }\n\n    /**\n     * Get private.\n     *\n     * @returns {boolean} Value specifying if image is accessible to\n     * organization members only or to everyone.\n     */\n    public get private(): boolean {\n        return this._fill.private;\n    }\n\n    /**\n     * Get projectKey.\n     *\n     * @returns {string} Unique key of the project to which\n     * the node belongs. If the node does not belong to a\n     * project the project key will be undefined.\n     *\n     * @deprecated This property will be deprecated in favor\n     * of the organization key and private properties.\n     */\n    public get projectKey(): string {\n        return this._fill.project != null ?\n            this._fill.project.key :\n            null;\n    }\n\n    /**\n     * Get rotation.\n     *\n     * @description Will not be set if SfM has not been run.\n     *\n     * @returns {Array<number>} Rotation vector in angle axis representation.\n     */\n    public get rotation(): number[] {\n        return this._fill.c_rotation;\n    }\n\n    /**\n     * Get scale.\n     *\n     * @description Will not be set if SfM has not been run.\n     *\n     * @returns {number} Scale of atomic reconstruction.\n     */\n    public get scale(): number {\n        return this._fill.atomic_scale;\n    }\n\n    /**\n     * Get sequenceKey.\n     *\n     * @returns {string} Unique key of the sequence to which\n     * the node belongs.\n     */\n    public get sequenceKey(): string {\n        return this._core.sequence_key;\n    }\n\n    /**\n     * Get sequenceEdges.\n     *\n     * @returns {IEdgeStatus} Value describing the status of the\n     * sequence edges.\n     *\n     * @ignore\n     */\n    public get sequenceEdges(): IEdgeStatus {\n        return this._cache.sequenceEdges;\n    }\n\n    /**\n     * Get sequenceEdges$.\n     *\n     * @description Internal observable, should not be used as an API.\n     *\n     * @returns {Observable<IEdgeStatus>} Observable emitting\n     * values describing the status of the sequence edges.\n     *\n     * @ignore\n     */\n    public get sequenceEdges$(): Observable<IEdgeStatus> {\n        return this._cache.sequenceEdges$;\n    }\n\n    /**\n     * Get spatialEdges.\n     *\n     * @returns {IEdgeStatus} Value describing the status of the\n     * spatial edges.\n     *\n     * @ignore\n     */\n    public get spatialEdges(): IEdgeStatus {\n        return this._cache.spatialEdges;\n    }\n\n    /**\n     * Get spatialEdges$.\n     *\n     * @description Internal observable, should not be used as an API.\n     *\n     * @returns {Observable<IEdgeStatus>} Observable emitting\n     * values describing the status of the spatial edges.\n     *\n     * @ignore\n     */\n    public get spatialEdges$(): Observable<IEdgeStatus> {\n        return this._cache.spatialEdges$;\n    }\n\n    /**\n     * Get userKey.\n     *\n     * @returns {string} Unique key of the user who uploaded\n     * the image.\n     */\n    public get userKey(): string {\n        return this._fill.user.key;\n    }\n\n    /**\n     * Get username.\n     *\n     * @returns {string} Username of the user who uploaded\n     * the image.\n     */\n    public get username(): string {\n        return this._fill.user.username;\n    }\n\n    /**\n     * Get width.\n     *\n     * @returns {number} Width of original image, not\n     * adjusted for orientation.\n     */\n    public get width(): number {\n        return this._fill.width;\n    }\n\n    /**\n     * Cache the image and mesh assets.\n     *\n     * @description The assets are always cached internally by the\n     * library prior to setting a node as the current node.\n     *\n     * @returns {Observable<Node>} Observable emitting this node whenever the\n     * load status has changed and when the mesh or image has been fully loaded.\n     *\n     * @ignore\n     */\n    public cacheAssets$(): Observable<Node> {\n        return this._cache.cacheAssets$(this.key, this.pano, this.merged).pipe(\n            map(\n                (): Node => {\n                    return this;\n                }));\n    }\n\n    /**\n     * Cache the image asset.\n     *\n     * @description Use for caching a differently sized image than\n     * the one currently held by the node.\n     *\n     * @returns {Observable<Node>} Observable emitting this node whenever the\n     * load status has changed and when the mesh or image has been fully loaded.\n     *\n     * @ignore\n     */\n    public cacheImage$(imageSize: ImageSize): Observable<Node> {\n        return this._cache.cacheImage$(this.key, imageSize).pipe(\n            map(\n                (): Node => {\n                    return this;\n                }));\n    }\n\n    /**\n     * Cache the sequence edges.\n     *\n     * @description The sequence edges are cached asynchronously\n     * internally by the library.\n     *\n     * @param {Array<IEdge>} edges - Sequence edges to cache.\n     * @ignore\n     */\n    public cacheSequenceEdges(edges: IEdge[]): void {\n        this._cache.cacheSequenceEdges(edges);\n    }\n\n    /**\n     * Cache the spatial edges.\n     *\n     * @description The spatial edges are cached asynchronously\n     * internally by the library.\n     *\n     * @param {Array<IEdge>} edges - Spatial edges to cache.\n     * @ignore\n     */\n    public cacheSpatialEdges(edges: IEdge[]): void {\n        this._cache.cacheSpatialEdges(edges);\n    }\n\n    /**\n     * Dispose the node.\n     *\n     * @description Disposes all cached assets.\n     * @ignore\n     */\n    public dispose(): void {\n        if (this._cache != null) {\n            this._cache.dispose();\n            this._cache = null;\n        }\n\n        this._core = null;\n        this._fill = null;\n    }\n\n    /**\n     * Initialize the node cache.\n     *\n     * @description The node cache is initialized internally by\n     * the library.\n     *\n     * @param {NodeCache} cache - The node cache to set as cache.\n     * @ignore\n     */\n    public initializeCache(cache: NodeCache): void {\n        if (this._cache != null) {\n            throw new Error(`Node cache already initialized (${this.key}).`);\n        }\n\n        this._cache = cache;\n    }\n\n    /**\n     * Fill the node with all properties.\n     *\n     * @description The node is filled internally by\n     * the library.\n     *\n     * @param {IFillNode} fill - The fill node struct.\n     * @ignore\n     */\n    public makeFull(fill: IFillNode): void {\n        if (fill == null) {\n            throw new Error(\"Fill can not be null.\");\n        }\n\n        this._fill = fill;\n    }\n\n    /**\n     * Reset the sequence edges.\n     *\n     * @ignore\n     */\n    public resetSequenceEdges(): void {\n        this._cache.resetSequenceEdges();\n    }\n\n    /**\n     * Reset the spatial edges.\n     *\n     * @ignore\n     */\n    public resetSpatialEdges(): void {\n        this._cache.resetSpatialEdges();\n    }\n\n    /**\n     * Clears the image and mesh assets, aborts\n     * any outstanding requests and resets edges.\n     *\n     * @ignore\n     */\n    public uncache(): void {\n        if (this._cache == null) {\n            return;\n        }\n\n        this._cache.dispose();\n        this._cache = null;\n    }\n}\n\nexport default Node;\n",
     "import {of as observableOf, combineLatest as observableCombineLatest, Subject, Observable, Subscriber, Subscription} from \"rxjs\";\n\nimport {map, tap, startWith, publishReplay, refCount, finalize, first} from \"rxjs/operators\";\n\nimport {IEdge} from \"../Edge\";\nimport {\n    IEdgeStatus,\n    IMesh,\n    ILoadStatus,\n    ILoadStatusObject,\n    MeshReader,\n} from \"../Graph\";\nimport {\n    Settings,\n    Urls,\n} from \"../Utils\";\nimport {ImageSize} from \"../Viewer\";\n\n/**\n * @class NodeCache\n *\n * @classdesc Represents the cached properties of a node.\n */\nexport class NodeCache {\n    private _disposed: boolean;\n\n    private _image: HTMLImageElement;\n    private _loadStatus: ILoadStatus;\n    private _mesh: IMesh;\n    private _sequenceEdges: IEdgeStatus;\n    private _spatialEdges: IEdgeStatus;\n\n    private _imageRequest: XMLHttpRequest;\n    private _meshRequest: XMLHttpRequest;\n\n    private _imageChanged$: Subject<HTMLImageElement>;\n    private _image$: Observable<HTMLImageElement>;\n    private _sequenceEdgesChanged$: Subject<IEdgeStatus>;\n    private _sequenceEdges$: Observable<IEdgeStatus>;\n    private _spatialEdgesChanged$: Subject<IEdgeStatus>;\n    private _spatialEdges$: Observable<IEdgeStatus>;\n\n    private _cachingAssets$: Observable<NodeCache>;\n\n    private _iamgeSubscription: Subscription;\n    private _sequenceEdgesSubscription: Subscription;\n    private _spatialEdgesSubscription: Subscription;\n\n    /**\n     * Create a new node cache instance.\n     */\n    constructor() {\n        this._disposed = false;\n\n        this._image = null;\n        this._loadStatus = { loaded: 0, total: 0 };\n        this._mesh = null;\n        this._sequenceEdges = { cached: false, edges: [] };\n        this._spatialEdges = { cached: false, edges: [] };\n\n        this._imageChanged$ = new Subject<HTMLImageElement>();\n        this._image$ = this._imageChanged$.pipe(\n            startWith(null),\n            publishReplay(1),\n            refCount());\n\n        this._iamgeSubscription = this._image$.subscribe();\n\n        this._sequenceEdgesChanged$ = new Subject<IEdgeStatus>();\n        this._sequenceEdges$ = this._sequenceEdgesChanged$.pipe(\n            startWith(this._sequenceEdges),\n            publishReplay(1),\n            refCount());\n\n        this._sequenceEdgesSubscription = this._sequenceEdges$.subscribe(() => { /*noop*/ });\n\n        this._spatialEdgesChanged$ = new Subject<IEdgeStatus>();\n        this._spatialEdges$ = this._spatialEdgesChanged$.pipe(\n            startWith(this._spatialEdges),\n            publishReplay(1),\n            refCount());\n\n        this._spatialEdgesSubscription = this._spatialEdges$.subscribe(() => { /*noop*/ });\n\n        this._cachingAssets$ = null;\n    }\n\n    /**\n     * Get image.\n     *\n     * @description Will not be set when assets have not been cached\n     * or when the object has been disposed.\n     *\n     * @returns {HTMLImageElement} Cached image element of the node.\n     */\n    public get image(): HTMLImageElement {\n        return this._image;\n    }\n\n    /**\n     * Get image$.\n     *\n     * @returns {Observable<HTMLImageElement>} Observable emitting\n     * the cached image when it is updated.\n     */\n    public get image$(): Observable<HTMLImageElement> {\n        return this._image$;\n    }\n\n    /**\n     * Get loadStatus.\n     *\n     * @returns {ILoadStatus} Value indicating the load status\n     * of the mesh and image.\n     */\n    public get loadStatus(): ILoadStatus {\n        return this._loadStatus;\n    }\n\n    /**\n     * Get mesh.\n     *\n     * @description Will not be set when assets have not been cached\n     * or when the object has been disposed.\n     *\n     * @returns {IMesh} SfM triangulated mesh of reconstructed\n     * atomic 3D points.\n     */\n    public get mesh(): IMesh {\n        return this._mesh;\n    }\n\n    /**\n     * Get sequenceEdges.\n     *\n     * @returns {IEdgeStatus} Value describing the status of the\n     * sequence edges.\n     */\n    public get sequenceEdges(): IEdgeStatus {\n        return this._sequenceEdges;\n    }\n\n    /**\n     * Get sequenceEdges$.\n     *\n     * @returns {Observable<IEdgeStatus>} Observable emitting\n     * values describing the status of the sequence edges.\n     */\n    public get sequenceEdges$(): Observable<IEdgeStatus> {\n        return this._sequenceEdges$;\n    }\n\n    /**\n     * Get spatialEdges.\n     *\n     * @returns {IEdgeStatus} Value describing the status of the\n     * spatial edges.\n     */\n    public get spatialEdges(): IEdgeStatus {\n        return this._spatialEdges;\n    }\n\n    /**\n     * Get spatialEdges$.\n     *\n     * @returns {Observable<IEdgeStatus>} Observable emitting\n     * values describing the status of the spatial edges.\n     */\n    public get spatialEdges$(): Observable<IEdgeStatus> {\n        return this._spatialEdges$;\n    }\n\n    /**\n     * Cache the image and mesh assets.\n     *\n     * @param {string} key - Key of the node to cache.\n     * @param {boolean} pano - Value indicating whether node is a panorama.\n     * @param {boolean} merged - Value indicating whether node is merged.\n     * @returns {Observable<NodeCache>} Observable emitting this node\n     * cache whenever the load status has changed and when the mesh or image\n     * has been fully loaded.\n     */\n    public cacheAssets$(key: string, pano: boolean, merged: boolean): Observable<NodeCache> {\n        if (this._cachingAssets$ != null) {\n            return this._cachingAssets$;\n        }\n\n        let imageSize: ImageSize = pano ?\n            Settings.basePanoramaSize :\n            Settings.baseImageSize;\n\n        this._cachingAssets$ = observableCombineLatest(\n                this._cacheImage$(key, imageSize),\n                this._cacheMesh$(key, merged)).pipe(\n            map(\n                ([imageStatus, meshStatus]: [ILoadStatusObject<HTMLImageElement>, ILoadStatusObject<IMesh>]): NodeCache => {\n                    this._loadStatus.loaded = 0;\n                    this._loadStatus.total = 0;\n\n                    if (meshStatus) {\n                        this._mesh = meshStatus.object;\n                        this._loadStatus.loaded += meshStatus.loaded.loaded;\n                        this._loadStatus.total += meshStatus.loaded.total;\n                    }\n\n                    if (imageStatus) {\n                        this._image = imageStatus.object;\n                        this._loadStatus.loaded += imageStatus.loaded.loaded;\n                        this._loadStatus.total += imageStatus.loaded.total;\n                    }\n\n                    return this;\n                }),\n            finalize(\n                (): void => {\n                    this._cachingAssets$ = null;\n                }),\n            publishReplay(1),\n            refCount());\n\n        this._cachingAssets$.pipe(\n            first(\n                (nodeCache: NodeCache): boolean => {\n                    return !!nodeCache._image;\n                }))\n            .subscribe(\n                (nodeCache: NodeCache): void => {\n                    this._imageChanged$.next(this._image);\n                },\n                (error: Error): void => { /*noop*/ });\n\n        return this._cachingAssets$;\n    }\n\n    /**\n     * Cache an image with a higher resolution than the current one.\n     *\n     * @param {string} key - Key of the node to cache.\n     * @param {ImageSize} imageSize - The size to cache.\n     * @returns {Observable<NodeCache>} Observable emitting a single item,\n     * the node cache, when the image has been cached. If supplied image\n     * size is not larger than the current image size the node cache is\n     * returned immediately.\n     */\n    public cacheImage$(key: string, imageSize: ImageSize): Observable<NodeCache> {\n        if (this._image != null && imageSize <= Math.max(this._image.width, this._image.height)) {\n            return observableOf<NodeCache>(this);\n        }\n\n        const cacheImage$: Observable<NodeCache> = this._cacheImage$(key, imageSize).pipe(\n            first(\n                (status: ILoadStatusObject<HTMLImageElement>): boolean => {\n                    return status.object != null;\n                }),\n            tap(\n                (status: ILoadStatusObject<HTMLImageElement>): void => {\n                    this._disposeImage();\n                    this._image = status.object;\n                }),\n            map(\n                (imageStatus: ILoadStatusObject<HTMLImageElement>): NodeCache => {\n                    return this;\n                }),\n            publishReplay(1),\n            refCount());\n\n        cacheImage$\n            .subscribe(\n                (nodeCache: NodeCache): void => {\n                    this._imageChanged$.next(this._image);\n                },\n                (error: Error): void => { /*noop*/ });\n\n        return cacheImage$;\n    }\n\n    /**\n     * Cache the sequence edges.\n     *\n     * @param {Array<IEdge>} edges - Sequence edges to cache.\n     */\n    public cacheSequenceEdges(edges: IEdge[]): void {\n        this._sequenceEdges = { cached: true, edges: edges };\n        this._sequenceEdgesChanged$.next(this._sequenceEdges);\n    }\n\n    /**\n     * Cache the spatial edges.\n     *\n     * @param {Array<IEdge>} edges - Spatial edges to cache.\n     */\n    public cacheSpatialEdges(edges: IEdge[]): void {\n        this._spatialEdges = { cached: true, edges: edges };\n        this._spatialEdgesChanged$.next(this._spatialEdges);\n    }\n\n    /**\n     * Dispose the node cache.\n     *\n     * @description Disposes all cached assets and unsubscribes to\n     * all streams.\n     */\n    public dispose(): void {\n        this._iamgeSubscription.unsubscribe();\n        this._sequenceEdgesSubscription.unsubscribe();\n        this._spatialEdgesSubscription.unsubscribe();\n\n        this._disposeImage();\n\n        this._mesh = null;\n        this._loadStatus.loaded = 0;\n        this._loadStatus.total = 0;\n        this._sequenceEdges = { cached: false, edges: [] };\n        this._spatialEdges = { cached: false, edges: [] };\n\n        this._imageChanged$.next(null);\n        this._sequenceEdgesChanged$.next(this._sequenceEdges);\n        this._spatialEdgesChanged$.next(this._spatialEdges);\n\n        this._disposed = true;\n\n        if (this._imageRequest != null) {\n            this._imageRequest.abort();\n        }\n\n        if (this._meshRequest != null) {\n            this._meshRequest.abort();\n        }\n    }\n\n    /**\n     * Reset the sequence edges.\n     */\n    public resetSequenceEdges(): void {\n        this._sequenceEdges = { cached: false, edges: [] };\n        this._sequenceEdgesChanged$.next(this._sequenceEdges);\n    }\n\n    /**\n     * Reset the spatial edges.\n     */\n    public resetSpatialEdges(): void {\n        this._spatialEdges = { cached: false, edges: [] };\n        this._spatialEdgesChanged$.next(this._spatialEdges);\n    }\n\n    /**\n     * Cache the image.\n     *\n     * @param {string} key - Key of the node to cache.\n     * @param {boolean} pano - Value indicating whether node is a panorama.\n     * @returns {Observable<ILoadStatusObject<HTMLImageElement>>} Observable\n     * emitting a load status object every time the load status changes\n     * and completes when the image is fully loaded.\n     */\n    private _cacheImage$(key: string, imageSize: ImageSize): Observable<ILoadStatusObject<HTMLImageElement>> {\n        return Observable.create(\n            (subscriber: Subscriber<ILoadStatusObject<HTMLImageElement>>): void => {\n                let xmlHTTP: XMLHttpRequest = new XMLHttpRequest();\n                xmlHTTP.open(\"GET\", Urls.thumbnail(key, imageSize, Urls.origin), true);\n                xmlHTTP.responseType = \"arraybuffer\";\n                xmlHTTP.timeout = 15000;\n\n                xmlHTTP.onload = (pe: ProgressEvent) => {\n                    if (xmlHTTP.status !== 200) {\n                        this._imageRequest = null;\n\n                        subscriber.error(\n                            new Error(`Failed to fetch image (${key}). Status: ${xmlHTTP.status}, ${xmlHTTP.statusText}`));\n\n                        return;\n                    }\n\n                    let image: HTMLImageElement = new Image();\n                    image.crossOrigin = \"Anonymous\";\n\n                    image.onload = (e: Event) => {\n                        this._imageRequest = null;\n\n                        if (this._disposed) {\n                            window.URL.revokeObjectURL(image.src);\n                            subscriber.error(new Error(`Image load was aborted (${key})`));\n\n                            return;\n                        }\n\n                        subscriber.next({ loaded: { loaded: pe.loaded, total: pe.total }, object: image });\n                        subscriber.complete();\n                    };\n\n                    image.onerror = (error: ErrorEvent) => {\n                        this._imageRequest = null;\n\n                        subscriber.error(new Error(`Failed to load image (${key})`));\n                    };\n\n                    let blob: Blob = new Blob([xmlHTTP.response]);\n                    image.src = window.URL.createObjectURL(blob);\n                };\n\n                xmlHTTP.onprogress = (pe: ProgressEvent) => {\n                    if (this._disposed) {\n                        return;\n                    }\n\n                    subscriber.next({loaded: { loaded: pe.loaded, total: pe.total }, object: null });\n                };\n\n                xmlHTTP.onerror = (error: Event) => {\n                    this._imageRequest = null;\n\n                    subscriber.error(new Error(`Failed to fetch image (${key})`));\n                };\n\n                xmlHTTP.ontimeout = (e: Event) => {\n                    this._imageRequest = null;\n\n                    subscriber.error(new Error(`Image request timed out (${key})`));\n                };\n\n                xmlHTTP.onabort = (event: Event) => {\n                    this._imageRequest = null;\n\n                    subscriber.error(new Error(`Image request was aborted (${key})`));\n                };\n\n                this._imageRequest = xmlHTTP;\n\n                xmlHTTP.send(null);\n            });\n    }\n\n    /**\n     * Cache the mesh.\n     *\n     * @param {string} key - Key of the node to cache.\n     * @param {boolean} merged - Value indicating whether node is merged.\n     * @returns {Observable<ILoadStatusObject<IMesh>>} Observable emitting\n     * a load status object every time the load status changes and completes\n     * when the mesh is fully loaded.\n     */\n    private _cacheMesh$(key: string, merged: boolean): Observable<ILoadStatusObject<IMesh>> {\n        return Observable.create(\n            (subscriber: Subscriber<ILoadStatusObject<IMesh>>): void => {\n                if (!merged) {\n                    subscriber.next(this._createEmptyMeshLoadStatus());\n                    subscriber.complete();\n                    return;\n                }\n\n                let xmlHTTP: XMLHttpRequest = new XMLHttpRequest();\n                xmlHTTP.open(\"GET\", Urls.protoMesh(key), true);\n                xmlHTTP.responseType = \"arraybuffer\";\n                xmlHTTP.timeout = 15000;\n\n                xmlHTTP.onload = (pe: ProgressEvent) => {\n                    this._meshRequest = null;\n\n                    if (this._disposed) {\n                        return;\n                    }\n\n                    let mesh: IMesh = xmlHTTP.status === 200 ?\n                        MeshReader.read(new Buffer(xmlHTTP.response)) :\n                        { faces: [], vertices: [] };\n\n                    subscriber.next({ loaded: { loaded: pe.loaded, total: pe.total }, object: mesh });\n                    subscriber.complete();\n                };\n\n                xmlHTTP.onprogress = (pe: ProgressEvent) => {\n                    if (this._disposed) {\n                        return;\n                    }\n\n                    subscriber.next({ loaded: { loaded: pe.loaded, total: pe.total }, object: null });\n                };\n\n                xmlHTTP.onerror = (e: Event) => {\n                    this._meshRequest = null;\n\n                    console.error(`Failed to cache mesh (${key})`);\n\n                    subscriber.next(this._createEmptyMeshLoadStatus());\n                    subscriber.complete();\n                };\n\n                xmlHTTP.ontimeout = (e: Event) => {\n                    this._meshRequest = null;\n\n                    console.error(`Mesh request timed out (${key})`);\n\n                    subscriber.next(this._createEmptyMeshLoadStatus());\n                    subscriber.complete();\n                };\n\n                xmlHTTP.onabort = (e: Event) => {\n                    this._meshRequest = null;\n\n                    subscriber.error(new Error(`Mesh request was aborted (${key})`));\n                };\n\n                this._meshRequest = xmlHTTP;\n\n                xmlHTTP.send(null);\n            });\n    }\n\n    /**\n     * Create a load status object with an empty mesh.\n     *\n     * @returns {ILoadStatusObject<IMesh>} Load status object\n     * with empty mesh.\n     */\n    private _createEmptyMeshLoadStatus(): ILoadStatusObject<IMesh> {\n        return {\n            loaded: { loaded: 0, total: 0 },\n            object: { faces: [], vertices: [] },\n        };\n    }\n\n    private _disposeImage(): void {\n        if (this._image != null) {\n            window.URL.revokeObjectURL(this._image.src);\n        }\n\n        this._image = null;\n    }\n}\n\nexport default NodeCache;\n",
     "import {ISequence} from \"../API\";\n\n/**\n * @class Sequence\n *\n * @classdesc Represents a sequence of ordered nodes.\n */\nexport class Sequence {\n    private _key: string;\n    private _keys: string[];\n\n    /**\n     * Create a new sequene instance.\n     *\n     * @param {ISequence} sequence - Raw sequence data.\n     */\n    constructor(sequence: ISequence) {\n        this._key = sequence.key;\n        this._keys = sequence.keys;\n    }\n\n    /**\n     * Get key.\n     *\n     * @returns {string} Unique sequence key.\n     */\n    public get key(): string {\n        return this._key;\n    }\n\n    /**\n     * Get keys.\n     *\n     * @returns {Array<string>} Array of ordered node keys in the sequence.\n     */\n    public get keys(): string[] {\n        return this._keys;\n    }\n\n    /**\n     * Dispose the sequence.\n     *\n     * @description Disposes all cached assets.\n     */\n    public dispose(): void {\n        this._key = null;\n        this._keys = null;\n    }\n\n    /**\n     * Find the next node key in the sequence with respect to\n     * the provided node key.\n     *\n     * @param {string} key - Reference node key.\n     * @returns {string} Next key in sequence if it exists, null otherwise.\n     */\n    public findNextKey(key: string): string {\n        let i: number = this._keys.indexOf(key);\n\n        if ((i + 1) >= this._keys.length || i === -1) {\n            return null;\n        } else {\n            return this._keys[i + 1];\n        }\n    }\n\n    /**\n     * Find the previous node key in the sequence with respect to\n     * the provided node key.\n     *\n     * @param {string} key - Reference node key.\n     * @returns {string} Previous key in sequence if it exists, null otherwise.\n     */\n    public findPrevKey(key: string): string {\n        let i: number = this._keys.indexOf(key);\n\n        if (i === 0 || i === -1) {\n            return null;\n        } else {\n            return this._keys[i - 1];\n        }\n    }\n}\n\nexport default Sequence;\n",
     "import * as THREE from \"three\";\n\nimport {\n    Node,\n    Sequence,\n} from \"../../Graph\";\nimport\n{\n    EdgeDirection,\n    IStep,\n    ITurn,\n    IPano,\n    IEdge,\n    IPotentialEdge,\n    EdgeCalculatorSettings,\n    EdgeCalculatorDirections,\n    EdgeCalculatorCoefficients,\n} from \"../../Edge\";\nimport {ArgumentMapillaryError} from \"../../Error\";\nimport {GeoCoords, Spatial} from \"../../Geo\";\n\n/**\n * @class EdgeCalculator\n *\n * @classdesc Represents a class for calculating node edges.\n */\nexport class EdgeCalculator {\n\n    private _spatial: Spatial;\n    private _geoCoords: GeoCoords;\n\n    private _settings: EdgeCalculatorSettings;\n    private _directions: EdgeCalculatorDirections;\n    private _coefficients: EdgeCalculatorCoefficients;\n\n    /**\n     * Create a new edge calculator instance.\n     *\n     * @param {EdgeCalculatorSettings} settings - Settings struct.\n     * @param {EdgeCalculatorDirections} directions - Directions struct.\n     * @param {EdgeCalculatorCoefficients} coefficients - Coefficients struct.\n     */\n    constructor(\n        settings?: EdgeCalculatorSettings,\n        directions?: EdgeCalculatorDirections,\n        coefficients?: EdgeCalculatorCoefficients) {\n\n        this._spatial = new Spatial();\n        this._geoCoords = new GeoCoords();\n\n        this._settings = settings != null ? settings : new EdgeCalculatorSettings();\n        this._directions = directions != null ? directions : new EdgeCalculatorDirections();\n        this._coefficients = coefficients != null ? coefficients : new EdgeCalculatorCoefficients();\n    }\n\n    /**\n     * Returns the potential edges to destination nodes for a set\n     * of nodes with respect to a source node.\n     *\n     * @param {Node} node - Source node.\n     * @param {Array<Node>} nodes - Potential destination nodes.\n     * @param {Array<string>} fallbackKeys - Keys for destination nodes that should\n     * be returned even if they do not meet the criteria for a potential edge.\n     * @throws {ArgumentMapillaryError} If node is not full.\n     */\n    public getPotentialEdges(node: Node, potentialNodes: Node[], fallbackKeys: string[]): IPotentialEdge[] {\n        if (!node.full) {\n            throw new ArgumentMapillaryError(\"Node has to be full.\");\n        }\n\n        if (!node.merged) {\n            return [];\n        }\n\n        let currentDirection: THREE.Vector3 =\n            this._spatial.viewingDirection(node.rotation);\n        let currentVerticalDirection: number =\n            this._spatial.angleToPlane(currentDirection.toArray(), [0, 0, 1]);\n\n        let potentialEdges: IPotentialEdge[] = [];\n\n        for (let potential of potentialNodes) {\n            if (!potential.merged ||\n                potential.key === node.key) {\n                continue;\n            }\n\n            let enu: number[] = this._geoCoords.geodeticToEnu(\n                potential.latLon.lat,\n                potential.latLon.lon,\n                potential.alt,\n                node.latLon.lat,\n                node.latLon.lon,\n                node.alt);\n\n            let motion: THREE.Vector3 = new THREE.Vector3(enu[0], enu[1], enu[2]);\n            let distance: number = motion.length();\n\n            if (distance > this._settings.maxDistance &&\n                fallbackKeys.indexOf(potential.key) < 0) {\n                continue;\n            }\n\n            let motionChange: number = this._spatial.angleBetweenVector2(\n                currentDirection.x,\n                currentDirection.y,\n                motion.x,\n                motion.y);\n\n            let verticalMotion: number = this._spatial.angleToPlane(motion.toArray(), [0, 0, 1]);\n\n            let direction: THREE.Vector3 =\n                this._spatial.viewingDirection(potential.rotation);\n\n            let directionChange: number = this._spatial.angleBetweenVector2(\n                currentDirection.x,\n                currentDirection.y,\n                direction.x,\n                direction.y);\n\n            let verticalDirection: number = this._spatial.angleToPlane(direction.toArray(), [0, 0, 1]);\n            let verticalDirectionChange: number = verticalDirection - currentVerticalDirection;\n\n            let rotation: number = this._spatial.relativeRotationAngle(\n                node.rotation,\n                potential.rotation);\n\n            let worldMotionAzimuth: number =\n                this._spatial.angleBetweenVector2(1, 0, motion.x, motion.y);\n\n            let sameSequence: boolean = potential.sequenceKey != null &&\n                node.sequenceKey != null &&\n                potential.sequenceKey === node.sequenceKey;\n\n            let sameMergeCC: boolean =\n                 (potential.mergeCC == null && node.mergeCC == null) ||\n                 potential.mergeCC === node.mergeCC;\n\n            let sameUser: boolean =\n                potential.userKey === node.userKey;\n\n            let potentialEdge: IPotentialEdge = {\n                capturedAt: potential.capturedAt,\n                croppedPano: potential.pano && !potential.fullPano,\n                directionChange: directionChange,\n                distance: distance,\n                fullPano: potential.fullPano,\n                key: potential.key,\n                motionChange: motionChange,\n                rotation: rotation,\n                sameMergeCC: sameMergeCC,\n                sameSequence: sameSequence,\n                sameUser: sameUser,\n                sequenceKey: potential.sequenceKey,\n                verticalDirectionChange: verticalDirectionChange,\n                verticalMotion: verticalMotion,\n                worldMotionAzimuth: worldMotionAzimuth,\n            };\n\n            potentialEdges.push(potentialEdge);\n        }\n\n        return potentialEdges;\n    }\n\n    /**\n     * Computes the sequence edges for a node.\n     *\n     * @param {Node} node - Source node.\n     * @throws {ArgumentMapillaryError} If node is not full.\n     */\n    public computeSequenceEdges(node: Node, sequence: Sequence): IEdge[] {\n        if (!node.full) {\n            throw new ArgumentMapillaryError(\"Node has to be full.\");\n        }\n\n        if (node.sequenceKey !== sequence.key) {\n            throw new ArgumentMapillaryError(\"Node and sequence does not correspond.\");\n        }\n\n        let edges: IEdge[] = [];\n\n        let nextKey: string = sequence.findNextKey(node.key);\n        if (nextKey != null) {\n            edges.push({\n                data: {\n                    direction: EdgeDirection.Next,\n                    worldMotionAzimuth: Number.NaN,\n                },\n                from: node.key,\n                to: nextKey,\n            });\n        }\n\n        let prevKey: string = sequence.findPrevKey(node.key);\n        if (prevKey != null) {\n            edges.push({\n                data: {\n                    direction: EdgeDirection.Prev,\n                    worldMotionAzimuth: Number.NaN,\n                },\n                from: node.key,\n                to: prevKey,\n            });\n        }\n\n        return edges;\n    }\n\n    /**\n     * Computes the similar edges for a node.\n     *\n     * @description Similar edges for perspective images and cropped panoramas\n     * look roughly in the same direction and are positioned closed to the node.\n     * Similar edges for full panoramas only target other full panoramas.\n     *\n     * @param {Node} node - Source node.\n     * @param {Array<IPotentialEdge>} potentialEdges - Potential edges.\n     * @throws {ArgumentMapillaryError} If node is not full.\n     */\n    public computeSimilarEdges(node: Node, potentialEdges: IPotentialEdge[]): IEdge[] {\n        if (!node.full) {\n            throw new ArgumentMapillaryError(\"Node has to be full.\");\n        }\n\n        let nodeFullPano: boolean = node.fullPano;\n        let sequenceGroups: { [key: string]: IPotentialEdge[] } = {};\n\n        for (let potentialEdge of potentialEdges) {\n            if (potentialEdge.sequenceKey == null) {\n                continue;\n            }\n\n            if (potentialEdge.sameSequence) {\n                continue;\n            }\n\n            if (nodeFullPano) {\n                if (!potentialEdge.fullPano) {\n                    continue;\n                }\n            } else {\n                if (!potentialEdge.fullPano &&\n                    Math.abs(potentialEdge.directionChange) > this._settings.similarMaxDirectionChange) {\n                    continue;\n                }\n            }\n\n            if (potentialEdge.distance > this._settings.similarMaxDistance) {\n                continue;\n            }\n\n            if (potentialEdge.sameUser &&\n                Math.abs(potentialEdge.capturedAt - node.capturedAt) <\n                    this._settings.similarMinTimeDifference) {\n                continue;\n            }\n\n            if (sequenceGroups[potentialEdge.sequenceKey] == null) {\n                sequenceGroups[potentialEdge.sequenceKey] = [];\n            }\n\n            sequenceGroups[potentialEdge.sequenceKey].push(potentialEdge);\n\n        }\n\n        let similarEdges: IPotentialEdge[] = [];\n\n        let calculateScore: (potentialEdge: IPotentialEdge) => number =\n            node.fullPano ?\n                (potentialEdge: IPotentialEdge): number => {\n                    return potentialEdge.distance;\n                } :\n                (potentialEdge: IPotentialEdge): number => {\n                    return this._coefficients.similarDistance * potentialEdge.distance +\n                        this._coefficients.similarRotation * potentialEdge.rotation;\n                };\n\n        for (let sequenceKey in sequenceGroups) {\n            if (!sequenceGroups.hasOwnProperty(sequenceKey)) {\n                continue;\n            }\n\n            let lowestScore: number = Number.MAX_VALUE;\n            let similarEdge: IPotentialEdge = null;\n\n            for (let potentialEdge of sequenceGroups[sequenceKey]) {\n                let score: number = calculateScore(potentialEdge);\n\n                if (score < lowestScore) {\n                    lowestScore = score;\n                    similarEdge = potentialEdge;\n                }\n            }\n\n            if (similarEdge == null) {\n                continue;\n            }\n\n            similarEdges.push(similarEdge);\n        }\n\n        return similarEdges\n            .map<IEdge>(\n                (potentialEdge: IPotentialEdge): IEdge => {\n                    return {\n                        data: {\n                            direction: EdgeDirection.Similar,\n                            worldMotionAzimuth: potentialEdge.worldMotionAzimuth,\n                        },\n                        from: node.key,\n                        to: potentialEdge.key,\n                    };\n                });\n    }\n\n    /**\n     * Computes the step edges for a perspective node.\n     *\n     * @description Step edge targets can only be other perspective nodes.\n     * Returns an empty array for cropped and full panoramas.\n     *\n     * @param {Node} node - Source node.\n     * @param {Array<IPotentialEdge>} potentialEdges - Potential edges.\n     * @param {string} prevKey - Key of previous node in sequence.\n     * @param {string} prevKey - Key of next node in sequence.\n     * @throws {ArgumentMapillaryError} If node is not full.\n     */\n    public computeStepEdges(\n        node: Node,\n        potentialEdges: IPotentialEdge[],\n        prevKey: string,\n        nextKey: string): IEdge[] {\n\n        if (!node.full) {\n            throw new ArgumentMapillaryError(\"Node has to be full.\");\n        }\n\n        let edges: IEdge[] = [];\n\n        if (node.pano) {\n            return edges;\n        }\n\n        for (let k in this._directions.steps) {\n            if (!this._directions.steps.hasOwnProperty(k)) {\n                continue;\n            }\n\n            let step: IStep = this._directions.steps[k];\n\n            let lowestScore: number = Number.MAX_VALUE;\n            let edge: IPotentialEdge = null;\n            let fallback: IPotentialEdge = null;\n\n            for (let potential of potentialEdges) {\n                if (potential.croppedPano || potential.fullPano) {\n                    continue;\n                }\n\n                if (Math.abs(potential.directionChange) > this._settings.stepMaxDirectionChange) {\n                    continue;\n                }\n\n                let motionDifference: number =\n                    this._spatial.angleDifference(step.motionChange, potential.motionChange);\n                let directionMotionDifference: number =\n                    this._spatial.angleDifference(potential.directionChange, motionDifference);\n                let drift: number =\n                    Math.max(Math.abs(motionDifference), Math.abs(directionMotionDifference));\n\n                if (Math.abs(drift) > this._settings.stepMaxDrift) {\n                    continue;\n                }\n\n                let potentialKey: string = potential.key;\n                if (step.useFallback && (potentialKey === prevKey || potentialKey === nextKey)) {\n                    fallback = potential;\n                }\n\n                if (potential.distance > this._settings.stepMaxDistance) {\n                    continue;\n                }\n\n                motionDifference = Math.sqrt(\n                    motionDifference * motionDifference +\n                    potential.verticalMotion * potential.verticalMotion);\n\n                let score: number =\n                    this._coefficients.stepPreferredDistance *\n                    Math.abs(potential.distance - this._settings.stepPreferredDistance) /\n                    this._settings.stepMaxDistance +\n                    this._coefficients.stepMotion * motionDifference / this._settings.stepMaxDrift +\n                    this._coefficients.stepRotation * potential.rotation / this._settings.stepMaxDirectionChange +\n                    this._coefficients.stepSequencePenalty * (potential.sameSequence ? 0 : 1) +\n                    this._coefficients.stepMergeCCPenalty * (potential.sameMergeCC ? 0 : 1);\n\n                if (score < lowestScore) {\n                    lowestScore = score;\n                    edge = potential;\n                }\n            }\n\n            edge = edge == null ? fallback : edge;\n            if (edge != null) {\n                edges.push({\n                    data: {\n                        direction: step.direction,\n                        worldMotionAzimuth: edge.worldMotionAzimuth,\n                    },\n                    from: node.key,\n                    to: edge.key,\n                });\n            }\n        }\n\n        return edges;\n    }\n\n    /**\n     * Computes the turn edges for a perspective node.\n     *\n     * @description Turn edge targets can only be other perspective images.\n     * Returns an empty array for cropped and full panoramas.\n     *\n     * @param {Node} node - Source node.\n     * @param {Array<IPotentialEdge>} potentialEdges - Potential edges.\n     * @throws {ArgumentMapillaryError} If node is not full.\n     */\n    public computeTurnEdges(node: Node, potentialEdges: IPotentialEdge[]): IEdge[] {\n        if (!node.full) {\n            throw new ArgumentMapillaryError(\"Node has to be full.\");\n        }\n\n        let edges: IEdge[] = [];\n\n        if (node.pano) {\n            return edges;\n        }\n\n        for (let k in this._directions.turns) {\n            if (!this._directions.turns.hasOwnProperty(k)) {\n                continue;\n            }\n\n            let turn: ITurn = this._directions.turns[k];\n\n            let lowestScore: number = Number.MAX_VALUE;\n            let edge: IPotentialEdge = null;\n\n            for (let potential of potentialEdges) {\n                if (potential.croppedPano || potential.fullPano) {\n                    continue;\n                }\n\n                if (potential.distance > this._settings.turnMaxDistance) {\n                    continue;\n                }\n\n                let rig: boolean =\n                    turn.direction !== EdgeDirection.TurnU &&\n                    potential.distance < this._settings.turnMaxRigDistance &&\n                    Math.abs(potential.directionChange) > this._settings.turnMinRigDirectionChange;\n\n                let directionDifference: number = this._spatial.angleDifference(\n                    turn.directionChange, potential.directionChange);\n\n                let score: number;\n\n                if (\n                    rig &&\n                    potential.directionChange * turn.directionChange > 0 &&\n                    Math.abs(potential.directionChange) < Math.abs(turn.directionChange)) {\n                    score = -Math.PI / 2 + Math.abs(potential.directionChange);\n                } else {\n                    if (Math.abs(directionDifference) > this._settings.turnMaxDirectionChange) {\n                        continue;\n                    }\n\n                    let motionDifference: number = turn.motionChange ?\n                        this._spatial.angleDifference(turn.motionChange, potential.motionChange) : 0;\n\n                    motionDifference = Math.sqrt(\n                        motionDifference * motionDifference +\n                        potential.verticalMotion * potential.verticalMotion);\n\n                    score =\n                        this._coefficients.turnDistance * potential.distance /\n                        this._settings.turnMaxDistance +\n                        this._coefficients.turnMotion * motionDifference / Math.PI +\n                        this._coefficients.turnSequencePenalty * (potential.sameSequence ? 0 : 1) +\n                        this._coefficients.turnMergeCCPenalty * (potential.sameMergeCC ? 0 : 1);\n                }\n\n                if (score < lowestScore) {\n                    lowestScore = score;\n                    edge = potential;\n                }\n            }\n\n            if (edge != null) {\n                edges.push({\n                    data: {\n                        direction: turn.direction,\n                        worldMotionAzimuth: edge.worldMotionAzimuth,\n                    },\n                    from: node.key,\n                    to: edge.key,\n                });\n            }\n        }\n\n        return edges;\n    }\n\n    /**\n     * Computes the pano edges for a perspective node.\n     *\n     * @description Perspective to pano edge targets can only be\n     * full pano nodes. Returns an empty array for cropped and full panoramas.\n     *\n     * @param {Node} node - Source node.\n     * @param {Array<IPotentialEdge>} potentialEdges - Potential edges.\n     * @throws {ArgumentMapillaryError} If node is not full.\n     */\n    public computePerspectiveToPanoEdges(node: Node, potentialEdges: IPotentialEdge[]): IEdge[] {\n        if (!node.full) {\n            throw new ArgumentMapillaryError(\"Node has to be full.\");\n        }\n\n        if (node.pano) {\n            return [];\n        }\n\n        let lowestScore: number = Number.MAX_VALUE;\n        let edge: IPotentialEdge = null;\n\n        for (let potential of potentialEdges) {\n            if (!potential.fullPano) {\n                continue;\n            }\n\n            let score: number =\n                this._coefficients.panoPreferredDistance *\n                Math.abs(potential.distance - this._settings.panoPreferredDistance) /\n                this._settings.panoMaxDistance +\n                this._coefficients.panoMotion * Math.abs(potential.motionChange) / Math.PI +\n                this._coefficients.panoMergeCCPenalty * (potential.sameMergeCC ? 0 : 1);\n\n            if (score < lowestScore) {\n                lowestScore = score;\n                edge = potential;\n            }\n        }\n\n        if (edge == null) {\n            return [];\n        }\n\n        return [\n            {\n                data: {\n                    direction: EdgeDirection.Pano,\n                    worldMotionAzimuth: edge.worldMotionAzimuth,\n                },\n                from: node.key,\n                to: edge.key,\n            },\n        ];\n    }\n\n    /**\n     * Computes the full pano and step edges for a full pano node.\n     *\n     * @description Pano to pano edge targets can only be\n     * full pano nodes. Pano to step edge targets can only be perspective\n     * nodes.\n     * Returns an empty array for cropped panoramas and perspective nodes.\n     *\n     * @param {Node} node - Source node.\n     * @param {Array<IPotentialEdge>} potentialEdges - Potential edges.\n     * @throws {ArgumentMapillaryError} If node is not full.\n     */\n    public computePanoEdges(node: Node, potentialEdges: IPotentialEdge[]): IEdge[] {\n        if (!node.full) {\n            throw new ArgumentMapillaryError(\"Node has to be full.\");\n        }\n\n        if (!node.fullPano) {\n            return [];\n        }\n\n        let panoEdges: IEdge[] = [];\n        let potentialPanos: IPotentialEdge[] = [];\n        let potentialSteps: [EdgeDirection, IPotentialEdge][] = [];\n\n        for (let potential of potentialEdges) {\n            if (potential.distance > this._settings.panoMaxDistance) {\n                continue;\n            }\n\n            if (potential.fullPano) {\n                if (potential.distance < this._settings.panoMinDistance) {\n                    continue;\n                }\n\n                potentialPanos.push(potential);\n            } else {\n                if (potential.croppedPano) {\n                    continue;\n                }\n\n                for (let k in this._directions.panos) {\n                    if (!this._directions.panos.hasOwnProperty(k)) {\n                        continue;\n                    }\n\n                    let pano: IPano = this._directions.panos[k];\n\n                    let turn: number = this._spatial.angleDifference(\n                        potential.directionChange,\n                        potential.motionChange);\n\n                    let turnChange: number = this._spatial.angleDifference(pano.directionChange, turn);\n\n                    if (Math.abs(turnChange) > this._settings.panoMaxStepTurnChange) {\n                        continue;\n                    }\n\n                    potentialSteps.push([pano.direction, potential]);\n\n                    // break if step direction found\n                    break;\n                }\n            }\n        }\n\n        let maxRotationDifference: number = Math.PI / this._settings.panoMaxItems;\n        let occupiedAngles: number[] = [];\n        let stepAngles: number[] = [];\n\n        for (let index: number = 0; index < this._settings.panoMaxItems; index++) {\n            let rotation: number = index / this._settings.panoMaxItems * 2 * Math.PI;\n\n            let lowestScore: number = Number.MAX_VALUE;\n            let edge: IPotentialEdge = null;\n\n            for (let potential of potentialPanos) {\n                let motionDifference: number = this._spatial.angleDifference(rotation, potential.motionChange);\n\n                if (Math.abs(motionDifference) > maxRotationDifference) {\n                    continue;\n                }\n\n                let occupiedDifference: number = Number.MAX_VALUE;\n                for (let occupiedAngle of occupiedAngles) {\n                    let difference: number = Math.abs(this._spatial.angleDifference(occupiedAngle, potential.motionChange));\n                    if (difference < occupiedDifference) {\n                        occupiedDifference = difference;\n                    }\n                }\n\n                if (occupiedDifference <= maxRotationDifference) {\n                    continue;\n                }\n\n                let score: number =\n                    this._coefficients.panoPreferredDistance *\n                    Math.abs(potential.distance - this._settings.panoPreferredDistance) /\n                    this._settings.panoMaxDistance +\n                    this._coefficients.panoMotion * Math.abs(motionDifference) / maxRotationDifference +\n                    this._coefficients.panoSequencePenalty * (potential.sameSequence ? 0 : 1) +\n                    this._coefficients.panoMergeCCPenalty * (potential.sameMergeCC ? 0 : 1);\n\n                if (score < lowestScore) {\n                    lowestScore = score;\n                    edge = potential;\n                }\n            }\n\n            if (edge != null) {\n                occupiedAngles.push(edge.motionChange);\n                panoEdges.push({\n                    data: {\n                        direction: EdgeDirection.Pano,\n                        worldMotionAzimuth: edge.worldMotionAzimuth,\n                    },\n                    from: node.key,\n                    to: edge.key,\n                });\n            } else {\n                stepAngles.push(rotation);\n            }\n        }\n\n        let occupiedStepAngles: {[direction: string]: number[] } = {};\n        occupiedStepAngles[EdgeDirection.Pano] = occupiedAngles;\n        occupiedStepAngles[EdgeDirection.StepForward] = [];\n        occupiedStepAngles[EdgeDirection.StepLeft] = [];\n        occupiedStepAngles[EdgeDirection.StepBackward] = [];\n        occupiedStepAngles[EdgeDirection.StepRight] = [];\n\n        for (let stepAngle of stepAngles) {\n            let occupations: [EdgeDirection, IPotentialEdge][] = [];\n\n            for (let k in this._directions.panos) {\n                if (!this._directions.panos.hasOwnProperty(k)) {\n                    continue;\n                }\n\n                let pano: IPano = this._directions.panos[k];\n\n                let allOccupiedAngles: number[] = occupiedStepAngles[EdgeDirection.Pano]\n                    .concat(occupiedStepAngles[pano.direction])\n                    .concat(occupiedStepAngles[pano.prev])\n                    .concat(occupiedStepAngles[pano.next]);\n\n                let lowestScore: number = Number.MAX_VALUE;\n                let edge: [EdgeDirection, IPotentialEdge] = null;\n\n                for (let potential of potentialSteps) {\n                    if (potential[0] !== pano.direction) {\n                        continue;\n                    }\n\n                    let motionChange: number = this._spatial.angleDifference(stepAngle, potential[1].motionChange);\n\n                    if (Math.abs(motionChange) > maxRotationDifference) {\n                        continue;\n                    }\n\n                    let minOccupiedDifference: number = Number.MAX_VALUE;\n                    for (let occupiedAngle of allOccupiedAngles) {\n                        let occupiedDifference: number =\n                            Math.abs(this._spatial.angleDifference(occupiedAngle, potential[1].motionChange));\n\n                        if (occupiedDifference < minOccupiedDifference) {\n                            minOccupiedDifference = occupiedDifference;\n                        }\n                    }\n\n                    if (minOccupiedDifference <= maxRotationDifference) {\n                        continue;\n                    }\n\n                    let score: number = this._coefficients.panoPreferredDistance *\n                        Math.abs(potential[1].distance - this._settings.panoPreferredDistance) /\n                        this._settings.panoMaxDistance +\n                        this._coefficients.panoMotion * Math.abs(motionChange) / maxRotationDifference +\n                        this._coefficients.panoMergeCCPenalty * (potential[1].sameMergeCC ? 0 : 1);\n\n                    if (score < lowestScore) {\n                        lowestScore = score;\n                        edge = potential;\n                    }\n                }\n\n                if (edge != null) {\n                    occupations.push(edge);\n                    panoEdges.push({\n                        data: {\n                            direction: edge[0],\n                            worldMotionAzimuth: edge[1].worldMotionAzimuth,\n                        },\n                        from: node.key,\n                        to: edge[1].key,\n                    });\n                }\n            }\n\n            for (let occupation of occupations) {\n                occupiedStepAngles[occupation[0]].push(occupation[1].motionChange);\n            }\n        }\n\n        return panoEdges;\n    }\n}\n\nexport default EdgeCalculator;\n",
     "import {combineLatest as observableCombineLatest} from \"rxjs\";\n\nimport {\n    scan,\n    filter,\n    map,\n    distinctUntilChanged,\n    pluck,\n    refCount,\n    publishReplay,\n} from \"rxjs/operators\";\n\nimport * as vd from \"virtual-dom\";\n\nimport {Observable, Subject} from \"rxjs\";\n\nimport {ISize, IVNodeHash, RenderMode, RenderService} from \"../Render\";\nimport {IFrame} from \"../State\";\n\ninterface INodePatch {\n    vnode: vd.VNode;\n    vpatch: vd.VPatch[];\n}\n\ninterface IVNodeHashes {\n    [name: string]: vd.VNode;\n}\n\ninterface IOffset {\n    bottom: number;\n    left: number;\n    right: number;\n    top: number;\n}\n\ninterface IAdaptive {\n    elementHeight: number;\n    elementWidth: number;\n    imageAspect: number;\n    renderMode: RenderMode;\n}\n\ninterface IAdaptiveOperation {\n    (adaptive: IAdaptive): IAdaptive;\n}\n\nexport class DOMRenderer {\n    private _renderService: RenderService;\n    private _currentFrame$: Observable<IFrame>;\n\n    private _adaptiveOperation$: Subject<IAdaptiveOperation> = new Subject<IAdaptiveOperation>();\n    private _offset$: Observable<IOffset>;\n\n    private _element$: Observable<Element>;\n    private _vPatch$: Observable<vd.VPatch[]>;\n    private _vNode$: Observable<vd.VNode>;\n    private _render$: Subject<IVNodeHash> = new Subject<IVNodeHash>();\n    private _renderAdaptive$: Subject<IVNodeHash> = new Subject<IVNodeHash>();\n\n    constructor (element: HTMLElement, renderService: RenderService, currentFrame$: Observable<IFrame>) {\n        this._renderService = renderService;\n        this._currentFrame$ = currentFrame$;\n\n        let rootNode: Element = vd.create(vd.h(\"div.domRenderer\", []));\n        element.appendChild(rootNode);\n\n        this._offset$ = this._adaptiveOperation$.pipe(\n            scan(\n                (adaptive: IAdaptive, operation: IAdaptiveOperation): IAdaptive => {\n                    return operation(adaptive);\n                },\n                {\n                    elementHeight: element.offsetHeight,\n                    elementWidth: element.offsetWidth,\n                    imageAspect: 0,\n                    renderMode: RenderMode.Fill,\n                }),\n            filter(\n                (adaptive: IAdaptive): boolean => {\n                    return adaptive.imageAspect > 0 && adaptive.elementWidth > 0 && adaptive.elementHeight > 0;\n                }),\n            map(\n                (adaptive: IAdaptive): IOffset => {\n                    let elementAspect: number = adaptive.elementWidth / adaptive.elementHeight;\n                    let ratio: number = adaptive.imageAspect / elementAspect;\n\n                    let verticalOffset: number = 0;\n                    let horizontalOffset: number = 0;\n\n                    if (adaptive.renderMode === RenderMode.Letterbox) {\n                        if (adaptive.imageAspect > elementAspect) {\n                            verticalOffset = adaptive.elementHeight * (1 - 1 / ratio) / 2;\n                        } else {\n                            horizontalOffset = adaptive.elementWidth * (1 - ratio) / 2;\n                        }\n                    } else {\n                        if (adaptive.imageAspect > elementAspect) {\n                            horizontalOffset = -adaptive.elementWidth * (ratio - 1) / 2;\n                        } else {\n                            verticalOffset = -adaptive.elementHeight * (1 / ratio - 1) / 2;\n                        }\n                    }\n\n                    return {\n                        bottom: verticalOffset,\n                        left: horizontalOffset,\n                        right: horizontalOffset,\n                        top: verticalOffset,\n                    };\n                }));\n\n        this._currentFrame$.pipe(\n            filter(\n                (frame: IFrame): boolean => {\n                    return frame.state.currentNode != null;\n                }),\n            distinctUntilChanged(\n                (k1: string, k2: string): boolean => {\n                    return k1 === k2;\n                },\n                (frame: IFrame): string => {\n                    return frame.state.currentNode.key;\n                }),\n            map(\n                (frame: IFrame): number => {\n                    return frame.state.currentTransform.basicAspect;\n                }),\n            map(\n                 (aspect: number): IAdaptiveOperation => {\n                    return (adaptive: IAdaptive): IAdaptive => {\n                        adaptive.imageAspect = aspect;\n\n                        return adaptive;\n                    };\n                }))\n            .subscribe(this._adaptiveOperation$);\n\n        observableCombineLatest(\n                this._renderAdaptive$.pipe(\n                    scan(\n                        (vNodeHashes: IVNodeHashes, vNodeHash: IVNodeHash): IVNodeHashes => {\n                            if (vNodeHash.vnode == null) {\n                                delete vNodeHashes[vNodeHash.name];\n                            } else {\n                                vNodeHashes[vNodeHash.name] = vNodeHash.vnode;\n                            }\n                            return vNodeHashes;\n                        },\n                        {})),\n                this._offset$).pipe(\n            map(\n                (vo: [IVNodeHashes, IOffset]): IVNodeHash => {\n                    let vNodes: vd.VNode[] = [];\n                    let hashes: IVNodeHashes = vo[0];\n                    for (const name in hashes) {\n                        if (!hashes.hasOwnProperty(name)) {\n                            continue;\n                        }\n\n                        vNodes.push(hashes[name]);\n                    }\n\n                    let offset: IOffset = vo[1];\n\n                    let properties: vd.createProperties = {\n                        style: {\n                            bottom: offset.bottom + \"px\",\n                            left: offset.left + \"px\",\n                            \"pointer-events\": \"none\",\n                            position: \"absolute\",\n                            right: offset.right + \"px\",\n                            top: offset.top + \"px\",\n                        },\n                    };\n\n                    return {\n                        name: \"adaptiveDomRenderer\",\n                        vnode: vd.h(\"div.adaptiveDomRenderer\", properties, vNodes),\n                    };\n                }))\n            .subscribe(this._render$);\n\n        this._vNode$ = this._render$.pipe(\n            scan(\n                (vNodeHashes: IVNodeHashes, vNodeHash: IVNodeHash): IVNodeHashes => {\n                    if (vNodeHash.vnode == null) {\n                        delete vNodeHashes[vNodeHash.name];\n                    } else {\n                        vNodeHashes[vNodeHash.name] = vNodeHash.vnode;\n                    }\n\n                    return vNodeHashes;\n                },\n                {}),\n            map(\n                (hashes: IVNodeHashes): vd.VNode => {\n                    let vNodes: vd.VNode[] = [];\n                    for (const name in hashes) {\n                        if (!hashes.hasOwnProperty(name)) {\n                            continue;\n                        }\n\n                        vNodes.push(hashes[name]);\n                    }\n\n                    return vd.h(\"div.domRenderer\", vNodes);\n                }));\n\n        this._vPatch$ = this._vNode$.pipe(\n            scan(\n                (nodePatch: INodePatch, vNode: vd.VNode): INodePatch => {\n                    nodePatch.vpatch = vd.diff(nodePatch.vnode, vNode);\n                    nodePatch.vnode = vNode;\n                    return nodePatch;\n                },\n                {vnode: vd.h(\"div.domRenderer\", []), vpatch: null}),\n            pluck<INodePatch, vd.VPatch[]>(\"vpatch\"));\n\n        this._element$ = this._vPatch$.pipe(\n            scan(\n                (oldElement: Element, vPatch: vd.VPatch[]): Element => {\n                    return vd.patch(oldElement, vPatch);\n                },\n                rootNode),\n            publishReplay(1),\n            refCount());\n\n        this._element$.subscribe(() => { /*noop*/ });\n\n        this._renderService.size$.pipe(\n            map(\n                (size: ISize): IAdaptiveOperation => {\n                    return (adaptive: IAdaptive): IAdaptive => {\n                        adaptive.elementWidth = size.width;\n                        adaptive.elementHeight = size.height;\n\n                        return adaptive;\n                    };\n                }))\n            .subscribe(this._adaptiveOperation$);\n\n        this._renderService.renderMode$.pipe(\n            map(\n                (renderMode: RenderMode): IAdaptiveOperation => {\n                    return (adaptive: IAdaptive): IAdaptive => {\n                        adaptive.renderMode = renderMode;\n\n                        return adaptive;\n                    };\n                }))\n            .subscribe(this._adaptiveOperation$);\n    }\n\n    public get element$(): Observable<Element> {\n        return this._element$;\n    }\n\n    public get render$(): Subject<IVNodeHash> {\n        return this._render$;\n    }\n\n    public get renderAdaptive$(): Subject<IVNodeHash> {\n        return this._renderAdaptive$;\n    }\n\n    public clear(name: string): void {\n        this._renderAdaptive$.next({name: name, vnode: null});\n        this._render$.next({name: name, vnode: null});\n    }\n}\n\nexport default DOMRenderer;\n",
     "export enum GLRenderStage {\n    Background,\n    Foreground,\n}\n\nexport default GLRenderStage;\n",
     "import {merge as observableMerge, combineLatest as observableCombineLatest, Observable, Subject, Subscription} from \"rxjs\";\n\nimport {mergeMap, scan, filter, share, startWith, distinctUntilChanged, map, first, publishReplay, refCount} from \"rxjs/operators\";\nimport * as THREE from \"three\";\n\nimport {\n    GLRenderStage,\n    IGLRenderFunction,\n    IGLRender,\n    IGLRenderHash,\n    RenderCamera,\n    RenderService,\n    ISize,\n} from \"../Render\";\nimport {DOM} from \"../Utils\";\n\ninterface IGLRenderer {\n    needsRender: boolean;\n    renderer: THREE.WebGLRenderer;\n}\n\ninterface IRenderCamera {\n    frameId: number;\n    needsRender: boolean;\n    perspective: THREE.PerspectiveCamera;\n}\n\ninterface IGLRenderHashes {\n    [name: string]: IGLRender;\n}\n\ninterface IEraser {\n    needsRender: boolean;\n}\n\ninterface IGLRendererOperation {\n    (renderer: IGLRenderer): IGLRenderer;\n}\n\ninterface IRenderCameraOperation {\n    (camera: IRenderCamera): IRenderCamera;\n}\n\ninterface IGLRenderHashesOperation extends Function {\n    (hashes: IGLRenderHashes): IGLRenderHashes;\n}\n\ninterface IEraserOperation {\n    (eraser: IEraser): IEraser;\n}\n\ninterface ICombination {\n    camera: IRenderCamera;\n    eraser: IEraser;\n    renderer: IGLRenderer;\n    renders: IGLRender[];\n}\n\nexport class GLRenderer {\n    private _renderService: RenderService;\n    private _dom: DOM;\n\n    private _renderFrame$: Subject<RenderCamera> = new Subject<RenderCamera>();\n\n    private _renderCameraOperation$: Subject<IRenderCameraOperation> = new Subject<IRenderCameraOperation>();\n    private _renderCamera$: Observable<IRenderCamera>;\n\n    private _render$: Subject<IGLRenderHash> = new Subject<IGLRenderHash>();\n    private _clear$: Subject<string> = new Subject<string>();\n    private _renderOperation$: Subject<IGLRenderHashesOperation> = new Subject<IGLRenderHashesOperation>();\n    private _renderCollection$: Observable<IGLRenderHashes>;\n\n    private _rendererOperation$: Subject<IGLRendererOperation> = new Subject<IGLRendererOperation>();\n    private _renderer$: Observable<IGLRenderer>;\n\n    private _eraserOperation$: Subject<IEraserOperation> = new Subject<IEraserOperation>();\n    private _eraser$: Observable<IEraser>;\n\n    private _webGLRenderer$: Observable<THREE.WebGLRenderer>;\n\n    private _renderFrameSubscription: Subscription;\n\n    constructor (canvasContainer: HTMLElement, renderService: RenderService, dom?: DOM) {\n        this._renderService = renderService;\n        this._dom = !!dom ? dom : new DOM();\n\n        this._renderer$ = this._rendererOperation$.pipe(\n            scan(\n                (renderer: IGLRenderer, operation: IGLRendererOperation): IGLRenderer => {\n                    return operation(renderer);\n                },\n                { needsRender: false, renderer: null }),\n            filter(\n                (renderer: IGLRenderer): boolean => {\n                    return !!renderer.renderer;\n                }));\n\n        this._renderCollection$ = this._renderOperation$.pipe(\n            scan(\n                (hashes: IGLRenderHashes, operation: IGLRenderHashesOperation): IGLRenderHashes => {\n                    return operation(hashes);\n                },\n                {}),\n            share());\n\n        this._renderCamera$ = this._renderCameraOperation$.pipe(\n            scan(\n                (rc: IRenderCamera, operation: IRenderCameraOperation): IRenderCamera => {\n                    return operation(rc);\n                },\n                { frameId: -1, needsRender: false, perspective: null }));\n\n        this._eraser$ = this._eraserOperation$.pipe(\n            startWith(\n                (eraser: IEraser): IEraser => {\n                    return eraser;\n                }),\n            scan(\n                (eraser: IEraser, operation: IEraserOperation): IEraser => {\n                    return operation(eraser);\n                },\n                { needsRender: false }));\n\n        observableCombineLatest(\n                this._renderer$,\n                this._renderCollection$,\n                this._renderCamera$,\n                this._eraser$).pipe(\n            map(\n                ([renderer, hashes, rc, eraser]: [IGLRenderer, IGLRenderHashes, IRenderCamera, IEraser]): ICombination => {\n                    let renders: IGLRender[] = Object.keys(hashes)\n                        .map((key: string): IGLRender => {\n                            return hashes[key];\n                        });\n\n                    return { camera: rc, eraser: eraser, renderer: renderer, renders: renders };\n                }),\n            filter(\n                (co: ICombination): boolean => {\n                    let needsRender: boolean =\n                        co.renderer.needsRender ||\n                        co.camera.needsRender ||\n                        co.eraser.needsRender;\n\n                    let frameId: number = co.camera.frameId;\n\n                    for (let render of co.renders) {\n                        if (render.frameId !== frameId) {\n                            return false;\n                        }\n\n                        needsRender = needsRender || render.needsRender;\n                    }\n\n                    return needsRender;\n                }),\n            distinctUntilChanged(\n                (n1: number, n2: number): boolean => {\n                    return n1 === n2;\n                },\n                (co: ICombination): number => {\n                    return co.eraser.needsRender ? -1 : co.camera.frameId;\n                }))\n            .subscribe(\n                (co: ICombination): void => {\n                    co.renderer.needsRender = false;\n                    co.camera.needsRender = false;\n                    co.eraser.needsRender = false;\n\n                    let perspectiveCamera: THREE.PerspectiveCamera = co.camera.perspective;\n\n                    let backgroundRenders: IGLRenderFunction[] = [];\n                    let foregroundRenders: IGLRenderFunction[] = [];\n\n                    for (let render of co.renders) {\n                        if (render.stage === GLRenderStage.Background) {\n                            backgroundRenders.push(render.render);\n                        } else if (render.stage === GLRenderStage.Foreground) {\n                            foregroundRenders.push(render.render);\n                        }\n                    }\n\n                    let renderer: THREE.WebGLRenderer = co.renderer.renderer;\n\n                    renderer.clear();\n\n                    for (let render of backgroundRenders) {\n                        render(perspectiveCamera, renderer);\n                    }\n\n                    renderer.clearDepth();\n\n                    for (let render of foregroundRenders) {\n                        render(perspectiveCamera, renderer);\n                    }\n                });\n\n        this._renderFrame$.pipe(\n            map(\n                (rc: RenderCamera): IRenderCameraOperation => {\n                    return (irc: IRenderCamera): IRenderCamera => {\n                        irc.frameId = rc.frameId;\n                        irc.perspective = rc.perspective;\n\n                        if (rc.changed === true) {\n                            irc.needsRender = true;\n                        }\n\n                        return irc;\n                    };\n                }))\n            .subscribe(this._renderCameraOperation$);\n\n        this._renderFrameSubscribe();\n\n        let renderHash$: Observable<IGLRenderHashesOperation> = this._render$.pipe(\n            map(\n                (hash: IGLRenderHash) => {\n                    return (hashes: IGLRenderHashes): IGLRenderHashes => {\n                        hashes[hash.name] = hash.render;\n\n                        return hashes;\n                    };\n                }));\n\n        let clearHash$: Observable<IGLRenderHashesOperation> = this._clear$.pipe(\n            map(\n                (name: string) => {\n                    return (hashes: IGLRenderHashes): IGLRenderHashes => {\n                        delete hashes[name];\n\n                        return hashes;\n                    };\n                }));\n\n        observableMerge(renderHash$, clearHash$)\n            .subscribe(this._renderOperation$);\n\n        this._webGLRenderer$ = this._render$.pipe(\n            first(),\n            map(\n                (hash: IGLRenderHash): THREE.WebGLRenderer => {\n                    const canvas: HTMLCanvasElement = this._dom.createElement(\"canvas\", \"mapillary-js-canvas\");\n                    canvas.style.position = \"absolute\";\n                    canvas.setAttribute(\"tabindex\", \"0\");\n                    canvasContainer.appendChild(canvas);\n\n                    const element: HTMLElement = renderService.element;\n                    const webGLRenderer: THREE.WebGLRenderer = new THREE.WebGLRenderer({ canvas: canvas });\n                    webGLRenderer.setPixelRatio(window.devicePixelRatio);\n                    webGLRenderer.setSize(element.offsetWidth, element.offsetHeight);\n                    webGLRenderer.setClearColor(new THREE.Color(0x202020), 1.0);\n                    webGLRenderer.autoClear = false;\n\n                    return webGLRenderer;\n                }),\n            publishReplay(1),\n            refCount());\n\n        this._webGLRenderer$.subscribe(() => { /*noop*/ });\n\n        let createRenderer$: Observable<IGLRendererOperation> = this._webGLRenderer$.pipe(\n            first(),\n            map(\n                (webGLRenderer: THREE.WebGLRenderer): IGLRendererOperation => {\n                    return (renderer: IGLRenderer): IGLRenderer => {\n                        renderer.needsRender = true;\n                        renderer.renderer = webGLRenderer;\n\n                        return renderer;\n                    };\n                }));\n\n        let resizeRenderer$: Observable<IGLRendererOperation> = this._renderService.size$.pipe(\n            map(\n                (size: ISize): IGLRendererOperation => {\n                    return (renderer: IGLRenderer): IGLRenderer => {\n                        if (renderer.renderer == null) {\n                            return renderer;\n                        }\n\n                        renderer.renderer.setSize(size.width, size.height);\n                        renderer.needsRender = true;\n\n                        return renderer;\n                    };\n                }));\n\n        let clearRenderer$: Observable<IGLRendererOperation> = this._clear$.pipe(\n            map(\n                (name: string) => {\n                    return (renderer: IGLRenderer): IGLRenderer => {\n                        if (renderer.renderer == null) {\n                            return renderer;\n                        }\n\n                        renderer.needsRender = true;\n\n                        return renderer;\n                    };\n                }));\n\n        observableMerge(createRenderer$, resizeRenderer$, clearRenderer$)\n            .subscribe(this._rendererOperation$);\n\n        let renderCollectionEmpty$: Observable<IGLRenderHashes> = this._renderCollection$.pipe(\n            filter(\n                (hashes: IGLRenderHashes): boolean => {\n                    return Object.keys(hashes).length === 0;\n                }),\n            share());\n\n        renderCollectionEmpty$\n            .subscribe(\n                (hashes: IGLRenderHashes): void => {\n                    if (this._renderFrameSubscription == null) {\n                        return;\n                    }\n\n                    this._renderFrameSubscription.unsubscribe();\n                    this._renderFrameSubscription = null;\n\n                    this._renderFrameSubscribe();\n                });\n\n        renderCollectionEmpty$.pipe(\n            map(\n                (hashes: IGLRenderHashes): IEraserOperation => {\n                    return (eraser: IEraser): IEraser => {\n                        eraser.needsRender = true;\n\n                        return eraser;\n                    };\n                }))\n            .subscribe(this._eraserOperation$);\n    }\n\n    public get render$(): Subject<IGLRenderHash> {\n        return this._render$;\n    }\n\n    public get webGLRenderer$(): Observable<THREE.WebGLRenderer> {\n        return this._webGLRenderer$;\n    }\n\n    public clear(name: string): void {\n        this._clear$.next(name);\n    }\n\n    private _renderFrameSubscribe(): void {\n        this._render$.pipe(\n            first(),\n            map(\n                (renderHash: IGLRenderHash): IRenderCameraOperation => {\n                    return (irc: IRenderCamera): IRenderCamera => {\n                        irc.needsRender = true;\n\n                        return irc;\n                    };\n                }))\n             .subscribe(\n                (operation: IRenderCameraOperation): void => {\n                    this._renderCameraOperation$.next(operation);\n                });\n\n        this._renderFrameSubscription = this._render$.pipe(\n            first(),\n            mergeMap(\n                (hash: IGLRenderHash): Observable<RenderCamera> => {\n                    return this._renderService.renderCameraFrame$;\n                }))\n            .subscribe(this._renderFrame$);\n    }\n}\n\nexport default GLRenderer;\n",
-    "import * as THREE from \"three\";\n\nimport {\n    Camera,\n    Spatial,\n    Transform,\n    ViewportCoords,\n} from \"../Geo\";\nimport {\n    RenderMode,\n    ISize,\n} from \"../Render\";\nimport {\n    IRotation,\n    IFrame,\n    State,\n} from \"../State\";\nimport { ICurrentState } from \"../state/interfaces/interfaces\";\n\nexport class RenderCamera {\n    private _spatial: Spatial;\n    private _viewportCoords: ViewportCoords;\n\n    private _alpha: number;\n    private _renderMode: RenderMode;\n    private _zoom: number;\n    private _frameId: number;\n\n    private _camera: Camera;\n    private _perspective: THREE.PerspectiveCamera;\n\n    private _rotation: IRotation;\n\n    private _changed: boolean;\n    private _changedForFrame: number;\n\n    private _currentNodeId: string;\n    private _previousNodeId: string;\n\n    private _currentPano: boolean;\n    private _previousPano: boolean;\n\n    private _state: State;\n\n    private _currentProjectedPoints: number[][];\n    private _previousProjectedPoints: number[][];\n\n    private _currentFov: number;\n    private _previousFov: number;\n\n    private _initialFov: number;\n\n    constructor(elementWidth: number, elementHeight: number, renderMode: RenderMode) {\n        this._spatial = new Spatial();\n        this._viewportCoords = new ViewportCoords();\n\n        this._initialFov = 50;\n\n        this._alpha = -1;\n        this._renderMode = renderMode;\n        this._zoom = 0;\n\n        this._frameId = -1;\n\n        this._changed = false;\n        this._changedForFrame = -1;\n\n        this._currentNodeId = null;\n        this._previousNodeId = null;\n\n        this._currentPano = false;\n        this._previousPano = false;\n\n        this._state = null;\n\n        this._currentProjectedPoints = [];\n        this._previousProjectedPoints = [];\n\n        this._currentFov = this._initialFov;\n        this._previousFov = this._initialFov;\n\n        this._camera = new Camera();\n\n        this._perspective = new THREE.PerspectiveCamera(\n            this._initialFov,\n            this._computeAspect(elementWidth, elementHeight),\n            0.16,\n            10000);\n\n        this._perspective.matrixAutoUpdate = false;\n\n        this._rotation = { phi: 0, theta: 0 };\n    }\n\n    public get alpha(): number {\n        return this._alpha;\n    }\n\n    public get camera(): Camera {\n        return this._camera;\n    }\n\n    public get changed(): boolean {\n        return this._frameId === this._changedForFrame;\n    }\n\n    public get frameId(): number {\n        return this._frameId;\n    }\n\n    public get perspective(): THREE.PerspectiveCamera {\n        return this._perspective;\n    }\n\n    public get renderMode(): RenderMode {\n        return this._renderMode;\n    }\n\n    public get rotation(): IRotation {\n        return this._rotation;\n    }\n\n    public get zoom(): number {\n        return this._zoom;\n    }\n\n    public setFrame(frame: IFrame): void {\n        const state: ICurrentState = frame.state;\n\n        if (state.state !== this._state) {\n            this._state = state.state;\n\n            this._changed = true;\n        }\n\n        const currentNodeId: string = state.currentNode.key;\n        const previousNodeId: string = !!state.previousNode ? state.previousNode.key : null;\n\n        if (currentNodeId !== this._currentNodeId) {\n            this._currentNodeId = currentNodeId;\n            this._currentPano = !!state.currentTransform.gpano;\n            this._currentProjectedPoints = this._computeProjectedPoints(state.currentTransform);\n\n            this._changed = true;\n        }\n\n        if (previousNodeId !== this._previousNodeId) {\n            this._previousNodeId = previousNodeId;\n            this._previousPano = !!state.previousTransform.gpano;\n            this._previousProjectedPoints = this._computeProjectedPoints(state.previousTransform);\n\n            this._changed = true;\n        }\n\n        const zoom: number = state.zoom;\n\n        if (zoom !== this._zoom) {\n            this._zoom = zoom;\n\n            this._changed = true;\n        }\n\n        if (this._changed) {\n            this._currentFov = this._computeCurrentFov();\n            this._previousFov = this._computePreviousFov();\n        }\n\n        const alpha: number = state.alpha;\n\n        if (this._changed || alpha !== this._alpha) {\n            this._alpha = alpha;\n\n            this._perspective.fov = this._state === State.Earth ?\n                60 :\n                this._interpolateFov(\n                    this._currentFov,\n                    this._previousFov,\n                    this._alpha);\n\n            this._changed = true;\n        }\n\n        const camera: Camera = state.camera;\n\n        if (this._camera.diff(camera) > 1e-9) {\n            this._camera.copy(camera);\n\n            this._rotation = this._computeRotation(camera);\n\n            this._perspective.up.copy(camera.up);\n            this._perspective.position.copy(camera.position);\n            this._perspective.lookAt(camera.lookat);\n            this._perspective.updateMatrix();\n            this._perspective.updateMatrixWorld(false);\n\n            this._changed = true;\n        }\n\n        if (this._changed) {\n            this._perspective.updateProjectionMatrix();\n        }\n\n        this._setFrameId(frame.id);\n    }\n\n    public setRenderMode(renderMode: RenderMode): void {\n        this._renderMode = renderMode;\n\n        this._perspective.fov = this._computeFov();\n        this._perspective.updateProjectionMatrix();\n\n        this._changed = true;\n    }\n\n    public setSize(size: ISize): void {\n        this._perspective.aspect = this._computeAspect(size.width, size.height);\n\n        this._perspective.fov = this._computeFov();\n        this._perspective.updateProjectionMatrix();\n\n        this._changed = true;\n    }\n\n    private _computeAspect(elementWidth: number, elementHeight: number): number {\n        return elementWidth === 0 ? 0 : elementWidth / elementHeight;\n    }\n\n    private _computeCurrentFov(): number {\n        if (!this._currentNodeId) {\n            return this._initialFov;\n        }\n\n        return this._currentPano ?\n            this._yToFov(1, this._zoom) :\n            this._computeVerticalFov(this._currentProjectedPoints, this._renderMode, this._zoom, this.perspective.aspect);\n    }\n\n    private _computeFov(): number {\n        this._currentFov = this._computeCurrentFov();\n        this._previousFov = this._computePreviousFov();\n\n        return this._interpolateFov(this._currentFov, this._previousFov, this._alpha);\n    }\n\n    private _computePreviousFov(): number {\n        if (!this._currentNodeId) {\n            return this._initialFov;\n        }\n\n        return !this._previousNodeId ?\n            this._currentFov :\n            this._previousPano ?\n                this._yToFov(1, this._zoom) :\n                this._computeVerticalFov(this._previousProjectedPoints, this._renderMode, this._zoom, this.perspective.aspect);\n    }\n\n    private _computeProjectedPoints(transform: Transform): number[][] {\n        const os: number[][] = [[0.5, 0], [1, 0]];\n        const ds: number[][] = [[0.5, 0], [0, 0.5]];\n        const pointsPerSide: number = 100;\n\n        const basicPoints: number[][] = [];\n\n        for (let side: number = 0; side < os.length; ++side) {\n            const o: number[] = os[side];\n            const d: number[] = ds[side];\n\n            for (let i: number = 0; i <= pointsPerSide; ++i) {\n                basicPoints.push([o[0] + d[0] * i / pointsPerSide,\n                                o[1] + d[1] * i / pointsPerSide]);\n            }\n        }\n\n        const camera: THREE.Camera = new THREE.Camera();\n        camera.up.copy(transform.upVector());\n        camera.position.copy(new THREE.Vector3().fromArray(transform.unprojectSfM([0, 0], 0)));\n        camera.lookAt(new THREE.Vector3().fromArray(transform.unprojectSfM([0, 0], 10)));\n        camera.updateMatrix();\n        camera.updateMatrixWorld(true);\n\n        const projectedPoints: number[][] = basicPoints\n            .map(\n                (basicPoint: number[]): number[] => {\n                    const worldPoint: number[] = transform.unprojectBasic(basicPoint, 10000);\n                    const cameraPoint: number[] = this._viewportCoords.worldToCamera(worldPoint, camera);\n\n                    return [\n                        Math.abs(cameraPoint[0] / cameraPoint[2]),\n                        Math.abs(cameraPoint[1] / cameraPoint[2]),\n                    ];\n                });\n\n        return projectedPoints;\n    }\n\n    private _computeRequiredVerticalFov(projectedPoint: number[], zoom: number, aspect: number): number {\n        const maxY: number = Math.max(projectedPoint[0] / aspect, projectedPoint[1]);\n\n        return this._yToFov(maxY, zoom);\n    }\n\n    private _computeRotation(camera: Camera): IRotation {\n        let direction: THREE.Vector3 = camera.lookat.clone().sub(camera.position);\n        let up: THREE.Vector3 = camera.up.clone();\n\n        let upProjection: number = direction.clone().dot(up);\n        let planeProjection: THREE.Vector3 = direction.clone().sub(up.clone().multiplyScalar(upProjection));\n\n        let phi: number = Math.atan2(planeProjection.y, planeProjection.x);\n        let theta: number = Math.PI / 2 - this._spatial.angleToPlane(direction.toArray(), [0, 0, 1]);\n\n        return { phi: phi, theta: theta };\n    }\n\n    private _computeVerticalFov(projectedPoints: number[][], renderMode: RenderMode, zoom: number, aspect: number): number {\n        const fovs: number[] = projectedPoints\n            .map(\n                (projectedPoint: number[]): number => {\n                    return this._computeRequiredVerticalFov(projectedPoint, zoom, aspect);\n                });\n\n        const fov: number = renderMode === RenderMode.Fill ?\n            Math.min(...fovs) * 0.995 :\n            Math.max(...fovs);\n\n        return fov;\n    }\n\n    private _yToFov(y: number, zoom: number): number {\n        return 2 * Math.atan(y / Math.pow(2, zoom)) * 180 / Math.PI;\n    }\n\n    private _interpolateFov(v1: number, v2: number, alpha: number): number {\n        return alpha * v1 + (1 - alpha) * v2;\n    }\n\n    private _setFrameId(frameId: number): void {\n        this._frameId = frameId;\n\n        if (this._changed) {\n            this._changed = false;\n            this._changedForFrame = frameId;\n        }\n    }\n}\n\nexport default RenderCamera;\n",
+    "import * as THREE from \"three\";\n\nimport {\n    Camera,\n    Spatial,\n    Transform,\n    ViewportCoords,\n    Geo,\n} from \"../Geo\";\nimport {\n    RenderMode,\n    ISize,\n} from \"../Render\";\nimport {\n    IRotation,\n    IFrame,\n    State,\n} from \"../State\";\nimport { ICurrentState } from \"../state/interfaces/interfaces\";\n\nexport class RenderCamera {\n    private _spatial: Spatial;\n    private _viewportCoords: ViewportCoords;\n\n    private _alpha: number;\n    private _renderMode: RenderMode;\n    private _zoom: number;\n    private _frameId: number;\n\n    private _camera: Camera;\n    private _perspective: THREE.PerspectiveCamera;\n\n    private _rotation: IRotation;\n\n    private _changed: boolean;\n    private _changedForFrame: number;\n\n    private _currentNodeId: string;\n    private _previousNodeId: string;\n\n    private _currentPano: boolean;\n    private _previousPano: boolean;\n\n    private _state: State;\n\n    private _currentProjectedPoints: number[][];\n    private _previousProjectedPoints: number[][];\n\n    private _currentFov: number;\n    private _previousFov: number;\n\n    private _initialFov: number;\n\n    constructor(elementWidth: number, elementHeight: number, renderMode: RenderMode) {\n        this._spatial = new Spatial();\n        this._viewportCoords = new ViewportCoords();\n\n        this._initialFov = 50;\n\n        this._alpha = -1;\n        this._renderMode = renderMode;\n        this._zoom = 0;\n\n        this._frameId = -1;\n\n        this._changed = false;\n        this._changedForFrame = -1;\n\n        this._currentNodeId = null;\n        this._previousNodeId = null;\n\n        this._currentPano = false;\n        this._previousPano = false;\n\n        this._state = null;\n\n        this._currentProjectedPoints = [];\n        this._previousProjectedPoints = [];\n\n        this._currentFov = this._initialFov;\n        this._previousFov = this._initialFov;\n\n        this._camera = new Camera();\n\n        this._perspective = new THREE.PerspectiveCamera(\n            this._initialFov,\n            this._computeAspect(elementWidth, elementHeight),\n            0.16,\n            10000);\n\n        this._perspective.matrixAutoUpdate = false;\n\n        this._rotation = { phi: 0, theta: 0 };\n    }\n\n    public get alpha(): number {\n        return this._alpha;\n    }\n\n    public get camera(): Camera {\n        return this._camera;\n    }\n\n    public get changed(): boolean {\n        return this._frameId === this._changedForFrame;\n    }\n\n    public get frameId(): number {\n        return this._frameId;\n    }\n\n    public get perspective(): THREE.PerspectiveCamera {\n        return this._perspective;\n    }\n\n    public get renderMode(): RenderMode {\n        return this._renderMode;\n    }\n\n    public get rotation(): IRotation {\n        return this._rotation;\n    }\n\n    public get zoom(): number {\n        return this._zoom;\n    }\n\n    public getTilt(): number {\n        return 90 - this._spatial.radToDeg(this._rotation.theta);\n    }\n\n    public fovToZoom(fov: number): number {\n        fov = Math.min(90, Math.max(0, fov));\n\n        const currentFov: number = this._computeCurrentFov(0);\n        const actualFov: number = this._alpha === 1 ?\n            currentFov :\n            this._interpolateFov(currentFov, this._computePreviousFov(0), this._alpha);\n\n        const y0: number = Math.tan(actualFov / 2 * Math.PI / 180);\n        const y1: number = Math.tan(fov / 2 * Math.PI / 180);\n\n        const zoom: number = Math.log(y0 / y1) / Math.log(2);\n\n        return zoom;\n    }\n\n    public setFrame(frame: IFrame): void {\n        const state: ICurrentState = frame.state;\n\n        if (state.state !== this._state) {\n            this._state = state.state;\n\n            this._changed = true;\n        }\n\n        const currentNodeId: string = state.currentNode.key;\n        const previousNodeId: string = !!state.previousNode ? state.previousNode.key : null;\n\n        if (currentNodeId !== this._currentNodeId) {\n            this._currentNodeId = currentNodeId;\n            this._currentPano = !!state.currentTransform.gpano;\n            this._currentProjectedPoints = this._computeProjectedPoints(state.currentTransform);\n\n            this._changed = true;\n        }\n\n        if (previousNodeId !== this._previousNodeId) {\n            this._previousNodeId = previousNodeId;\n            this._previousPano = !!state.previousTransform.gpano;\n            this._previousProjectedPoints = this._computeProjectedPoints(state.previousTransform);\n\n            this._changed = true;\n        }\n\n        const zoom: number = state.zoom;\n\n        if (zoom !== this._zoom) {\n            this._zoom = zoom;\n\n            this._changed = true;\n        }\n\n        if (this._changed) {\n            this._currentFov = this._computeCurrentFov(this.zoom);\n            this._previousFov = this._computePreviousFov(this._zoom);\n        }\n\n        const alpha: number = state.alpha;\n\n        if (this._changed || alpha !== this._alpha) {\n            this._alpha = alpha;\n\n            this._perspective.fov = this._state === State.Earth ?\n                60 :\n                this._interpolateFov(\n                    this._currentFov,\n                    this._previousFov,\n                    this._alpha);\n\n            this._changed = true;\n        }\n\n        const camera: Camera = state.camera;\n\n        if (this._camera.diff(camera) > 1e-9) {\n            this._camera.copy(camera);\n\n            this._rotation = this._computeRotation(camera);\n\n            this._perspective.up.copy(camera.up);\n            this._perspective.position.copy(camera.position);\n            this._perspective.lookAt(camera.lookat);\n            this._perspective.updateMatrix();\n            this._perspective.updateMatrixWorld(false);\n\n            this._changed = true;\n        }\n\n        if (this._changed) {\n            this._perspective.updateProjectionMatrix();\n        }\n\n        this._setFrameId(frame.id);\n    }\n\n    public setRenderMode(renderMode: RenderMode): void {\n        this._renderMode = renderMode;\n\n        this._perspective.fov = this._computeFov();\n        this._perspective.updateProjectionMatrix();\n\n        this._changed = true;\n    }\n\n    public setSize(size: ISize): void {\n        this._perspective.aspect = this._computeAspect(size.width, size.height);\n\n        this._perspective.fov = this._computeFov();\n        this._perspective.updateProjectionMatrix();\n\n        this._changed = true;\n    }\n\n    private _computeAspect(elementWidth: number, elementHeight: number): number {\n        return elementWidth === 0 ? 0 : elementWidth / elementHeight;\n    }\n\n    private _computeCurrentFov(zoom: number): number {\n        if (this._perspective.aspect === 0) {\n            return 0;\n        }\n\n        if (!this._currentNodeId) {\n            return this._initialFov;\n        }\n\n        return this._currentPano ?\n            this._yToFov(1, zoom) :\n            this._computeVerticalFov(this._currentProjectedPoints, this._renderMode, zoom, this.perspective.aspect);\n    }\n\n    private _computeFov(): number {\n        this._currentFov = this._computeCurrentFov(this._zoom);\n        this._previousFov = this._computePreviousFov(this._zoom);\n\n        return this._interpolateFov(this._currentFov, this._previousFov, this._alpha);\n    }\n\n    private _computePreviousFov(zoom: number): number {\n        if (this._perspective.aspect === 0) {\n            return 0;\n        }\n\n        if (!this._currentNodeId) {\n            return this._initialFov;\n        }\n\n        return !this._previousNodeId ?\n            this._currentFov :\n            this._previousPano ?\n                this._yToFov(1, zoom) :\n                this._computeVerticalFov(this._previousProjectedPoints, this._renderMode, zoom, this.perspective.aspect);\n    }\n\n    private _computeProjectedPoints(transform: Transform): number[][] {\n        const vertices: number[][] = [[0.5, 0], [1, 0]];\n        const directions: number[][] = [[0.5, 0], [0, 0.5]];\n        const pointsPerLine: number = 100;\n\n        return Geo.computeProjectedPoints(transform, vertices, directions, pointsPerLine, this._viewportCoords);\n    }\n\n    private _computeRequiredVerticalFov(projectedPoint: number[], zoom: number, aspect: number): number {\n        const maxY: number = Math.max(projectedPoint[0] / aspect, projectedPoint[1]);\n\n        return this._yToFov(maxY, zoom);\n    }\n\n    private _computeRotation(camera: Camera): IRotation {\n        let direction: THREE.Vector3 = camera.lookat.clone().sub(camera.position);\n        let up: THREE.Vector3 = camera.up.clone();\n\n        let phi: number = this._spatial.azimuthal(direction.toArray(), up.toArray());\n        let theta: number = Math.PI / 2 - this._spatial.angleToPlane(direction.toArray(), [0, 0, 1]);\n\n        return { phi: phi, theta: theta };\n    }\n\n    private _computeVerticalFov(projectedPoints: number[][], renderMode: RenderMode, zoom: number, aspect: number): number {\n        const fovs: number[] = projectedPoints\n            .map(\n                (projectedPoint: number[]): number => {\n                    return this._computeRequiredVerticalFov(projectedPoint, zoom, aspect);\n                });\n\n        const fov: number = renderMode === RenderMode.Fill ?\n            Math.min(...fovs) * 0.995 :\n            Math.max(...fovs);\n\n        return fov;\n    }\n\n    private _yToFov(y: number, zoom: number): number {\n        return 2 * Math.atan(y / Math.pow(2, zoom)) * 180 / Math.PI;\n    }\n\n    private _interpolateFov(v1: number, v2: number, alpha: number): number {\n        return alpha * v1 + (1 - alpha) * v2;\n    }\n\n    private _setFrameId(frameId: number): void {\n        this._frameId = frameId;\n\n        if (this._changed) {\n            this._changed = false;\n            this._changedForFrame = frameId;\n        }\n    }\n}\n\nexport default RenderCamera;\n",
     "/**\n * Enumeration for render mode\n * @enum {number}\n * @readonly\n * @description Modes for specifying how rendering is done\n * in the viewer. All modes preserves the original aspect\n * ratio of the images.\n */\nexport enum RenderMode {\n\n    /**\n     * Displays all content within the viewer.\n     *\n     * @description Black bars shown on both\n     * sides of the content. Bars are shown\n     * either below and above or to the left\n     * and right of the content depending on\n     * the aspect ratio relation between the\n     * image and the viewer.\n     */\n    Letterbox,\n\n    /**\n     * Fills the viewer by cropping content.\n     *\n     * @description Cropping is done either\n     * in horizontal or vertical direction\n     * depending on the aspect ratio relation\n     * between the image and the viewer.\n     */\n    Fill,\n}\n\nexport default RenderMode;\n",
     "import {withLatestFrom, map, startWith, scan, publishReplay, skip, refCount, tap, filter} from \"rxjs/operators\";\nimport {Observable, Subject, BehaviorSubject} from \"rxjs\";\n\nimport {Spatial} from \"../Geo\";\nimport {RenderCamera, RenderMode, ISize} from \"../Render\";\nimport {IFrame} from \"../State\";\n\ninterface IRenderCameraOperation {\n    (rc: RenderCamera): RenderCamera;\n}\n\nexport class RenderService {\n    private _bearing$: Observable<number>;\n\n    private _element: HTMLElement;\n    private _currentFrame$: Observable<IFrame>;\n\n    private _renderCameraOperation$: Subject<IRenderCameraOperation>;\n    private _renderCameraHolder$: Observable<RenderCamera>;\n    private _renderCameraFrame$: Observable<RenderCamera>;\n    private _renderCamera$: Observable<RenderCamera>;\n\n    private _resize$: Subject<void>;\n    private _size$: BehaviorSubject<ISize>;\n\n    private _spatial: Spatial;\n\n    private _renderMode$: BehaviorSubject<RenderMode>;\n\n    constructor(element: HTMLElement, currentFrame$: Observable<IFrame>, renderMode: RenderMode, renderCamera?: RenderCamera) {\n        this._element = element;\n        this._currentFrame$ = currentFrame$;\n\n        this._spatial = new Spatial();\n\n        renderMode = renderMode != null ? renderMode : RenderMode.Fill;\n\n        this._resize$ = new Subject<void>();\n        this._renderCameraOperation$ = new Subject<IRenderCameraOperation>();\n\n        this._size$ =\n            new BehaviorSubject<ISize>(\n                {\n                    height: this._element.offsetHeight,\n                    width: this._element.offsetWidth,\n                });\n\n        this._resize$.pipe(\n            map(\n                (): ISize => {\n                    return { height: this._element.offsetHeight, width: this._element.offsetWidth };\n                }))\n            .subscribe(this._size$);\n\n        this._renderMode$ = new BehaviorSubject<RenderMode>(renderMode);\n\n        this._renderCameraHolder$ = this._renderCameraOperation$.pipe(\n            startWith(\n                (rc: RenderCamera): RenderCamera => {\n                    return rc;\n                }),\n            scan(\n                (rc: RenderCamera, operation: IRenderCameraOperation): RenderCamera => {\n                    return operation(rc);\n                },\n                !!renderCamera ? renderCamera : new RenderCamera(this._element.offsetWidth, this._element.offsetHeight, renderMode)),\n            publishReplay(1),\n            refCount());\n\n        this._renderCameraFrame$ = this._currentFrame$.pipe(\n            withLatestFrom(this._renderCameraHolder$),\n            tap(\n                ([frame, rc]: [IFrame, RenderCamera]): void => {\n                    rc.setFrame(frame);\n                }),\n            map(\n                (args: [IFrame, RenderCamera]): RenderCamera => {\n                    return args[1];\n                }),\n            publishReplay(1),\n            refCount());\n\n        this._renderCamera$ = this._renderCameraFrame$.pipe(\n            filter(\n                (rc: RenderCamera): boolean => {\n                    return rc.changed;\n                }),\n            publishReplay(1),\n            refCount());\n\n        this._bearing$ = this._renderCamera$.pipe(\n            map(\n                (rc: RenderCamera): number => {\n                    let bearing: number =\n                        this._spatial.radToDeg(\n                            this._spatial.azimuthalToBearing(rc.rotation.phi));\n\n                    return this._spatial.wrap(bearing, 0, 360);\n                }),\n            publishReplay(1),\n            refCount());\n\n        this._size$.pipe(\n            skip(1),\n            map(\n                (size: ISize) => {\n                    return (rc: RenderCamera): RenderCamera => {\n                        rc.setSize(size);\n\n                        return rc;\n                    };\n                }))\n            .subscribe(this._renderCameraOperation$);\n\n        this._renderMode$.pipe(\n            skip(1),\n            map(\n                (rm: RenderMode) => {\n                    return (rc: RenderCamera): RenderCamera => {\n                        rc.setRenderMode(rm);\n\n                        return rc;\n                    };\n                }))\n            .subscribe(this._renderCameraOperation$);\n\n        this._bearing$.subscribe(() => { /*noop*/ });\n        this._renderCameraHolder$.subscribe(() => { /*noop*/ });\n        this._size$.subscribe(() => { /*noop*/ });\n        this._renderMode$.subscribe(() => { /*noop*/ });\n        this._renderCamera$.subscribe(() => { /*noop*/ });\n        this._renderCameraFrame$.subscribe(() => { /*noop*/ });\n    }\n\n    public get bearing$(): Observable<number> {\n        return this._bearing$;\n    }\n\n    public get element(): HTMLElement {\n        return this._element;\n    }\n\n    public get resize$(): Subject<void> {\n        return this._resize$;\n    }\n\n    public get size$(): Observable<ISize> {\n        return this._size$;\n    }\n\n    public get renderMode$(): Subject<RenderMode> {\n        return this._renderMode$;\n    }\n\n    public get renderCameraFrame$(): Observable<RenderCamera> {\n        return this._renderCameraFrame$;\n    }\n\n    public get renderCamera$(): Observable<RenderCamera> {\n        return this._renderCamera$;\n    }\n}\n\nexport default RenderService;\n",
     "export class FrameGenerator {\n    private _cancelAnimationFrame: (handle: number) => void;\n    private _requestAnimationFrame: (cb: () => void) => number;\n\n    constructor(root: any) {\n        if (root.requestAnimationFrame) {\n            this._cancelAnimationFrame = root.cancelAnimationFrame.bind(root);\n            this._requestAnimationFrame = root.requestAnimationFrame.bind(root);\n        } else if (root.mozRequestAnimationFrame) {\n            this._cancelAnimationFrame = root.mozCancelAnimationFrame.bind(root);\n            this._requestAnimationFrame = root.mozRequestAnimationFrame.bind(root);\n        } else if (root.webkitRequestAnimationFrame) {\n            this._cancelAnimationFrame = root.webkitCancelAnimationFrame.bind(root);\n            this._requestAnimationFrame = root.webkitRequestAnimationFrame.bind(root);\n        } else if (root.msRequestAnimationFrame) {\n            this._cancelAnimationFrame = root.msCancelAnimationFrame.bind(root);\n            this._requestAnimationFrame = root.msRequestAnimationFrame.bind(root);\n        } else if (root.oRequestAnimationFrame) {\n            this._cancelAnimationFrame = root.oCancelAnimationFrame.bind(root);\n            this._requestAnimationFrame = root.oRequestAnimationFrame.bind(root);\n        } else {\n            this._cancelAnimationFrame = root.clearTimeout.bind(root);\n            this._requestAnimationFrame = (cb: () => void): number => { return root.setTimeout(cb, 1000 / 60); };\n        }\n    }\n\n     public get cancelAnimationFrame(): (handle: number) => void {\n         return this._cancelAnimationFrame;\n     }\n\n     public get requestAnimationFrame(): (cb: () => void) => number {\n         return this._requestAnimationFrame;\n     }\n}\n\nexport default FrameGenerator;\n",
     "import {\n    BehaviorSubject,\n    Observable,\n    Subject,\n} from \"rxjs\";\n\nimport {\n    first,\n    tap,\n    filter,\n    withLatestFrom,\n    startWith,\n    pairwise,\n    distinctUntilChanged,\n    publishReplay,\n    refCount,\n    bufferCount,\n    share,\n    switchMap,\n    map,\n    scan,\n} from \"rxjs/operators\";\n\nimport {ILatLon} from \"../API\";\nimport {Node} from \"../Graph\";\nimport {\n    Camera,\n    ILatLonAlt,\n    Transform,\n} from \"../Geo\";\nimport {\n    FrameGenerator,\n    IStateContext,\n    IFrame,\n    IRotation,\n    StateContext,\n    State,\n    TransitionMode,\n} from \"../State\";\n\ninterface IContextOperation {\n    (context: IStateContext): IStateContext;\n}\n\nexport class StateService {\n    private _start$: Subject<void>;\n\n    private _frame$: Subject<number>;\n\n    private _contextOperation$: BehaviorSubject<IContextOperation>;\n    private _context$: Observable<IStateContext>;\n    private _fps$: Observable<number>;\n    private _state$: Observable<State>;\n\n    private _currentState$: Observable<IFrame>;\n    private _lastState$: Observable<IFrame>;\n    private _currentNode$: Observable<Node>;\n    private _currentNodeExternal$: Observable<Node>;\n    private _currentCamera$: Observable<Camera>;\n    private _currentKey$: BehaviorSubject<string>;\n    private _currentTransform$: Observable<Transform>;\n    private _reference$: Observable<ILatLonAlt>;\n\n    private _inMotionOperation$: Subject<boolean>;\n    private _inMotion$: Observable<boolean>;\n\n    private _inTranslationOperation$: Subject<boolean>;\n    private _inTranslation$: Observable<boolean>;\n\n    private _appendNode$: Subject<Node> = new Subject<Node>();\n\n    private _frameGenerator: FrameGenerator;\n    private _frameId: number;\n\n    private _fpsSampleRate: number;\n\n    constructor(transitionMode?: TransitionMode) {\n        this._start$ = new Subject<void>();\n        this._frame$ = new Subject<number>();\n        this._fpsSampleRate = 30;\n\n        this._contextOperation$ = new BehaviorSubject<IContextOperation>(\n            (context: IStateContext): IStateContext => {\n                return context;\n            });\n\n        this._context$ = this._contextOperation$.pipe(\n            scan(\n                (context: IStateContext, operation: IContextOperation): IStateContext => {\n                    return operation(context);\n                },\n                new StateContext(transitionMode)),\n            publishReplay(1),\n            refCount());\n\n        this._state$ = this._context$.pipe(\n            map(\n                (context: IStateContext): State => {\n                    return context.state;\n                }),\n            distinctUntilChanged(),\n            publishReplay(1),\n            refCount());\n\n        this._fps$ = this._start$.pipe(\n            switchMap(\n                (): Observable<number> => {\n                    return this._frame$.pipe(\n                        bufferCount(1, this._fpsSampleRate),\n                        map(\n                            (frameIds: number[]): number => {\n                                return new Date().getTime();\n                            }),\n                        pairwise(),\n                        map(\n                            (times: [number, number]): number => {\n                                return Math.max(20, 1000 * this._fpsSampleRate / (times[1] - times[0]));\n                            }),\n                        startWith(60));\n                }),\n            share());\n\n        this._currentState$ = this._frame$.pipe(\n            withLatestFrom(\n                this._fps$,\n                this._context$,\n                (frameId: number, fps: number, context: IStateContext): [number, number, IStateContext] => {\n                    return [frameId, fps, context];\n                }),\n            filter(\n                (fc: [number, number, IStateContext]): boolean => {\n                    return fc[2].currentNode != null;\n                }),\n            tap(\n                (fc: [number, number, IStateContext]): void => {\n                    fc[2].update(fc[1]);\n                }),\n            map(\n                (fc: [number, number, IStateContext]): IFrame => {\n                    return { fps: fc[1], id: fc[0], state: fc[2] };\n                }),\n            share());\n\n        this._lastState$ = this._currentState$.pipe(\n            publishReplay(1),\n            refCount());\n\n        let nodeChanged$: Observable<IFrame> = this._currentState$.pipe(\n            distinctUntilChanged(\n                undefined,\n                (f: IFrame): string => {\n                    return f.state.currentNode.key;\n                }),\n            publishReplay(1),\n            refCount());\n\n        let nodeChangedSubject$: Subject<IFrame> = new Subject<IFrame>();\n\n        nodeChanged$\n            .subscribe(nodeChangedSubject$);\n\n        this._currentKey$ = new BehaviorSubject<string>(null);\n\n        nodeChangedSubject$.pipe(\n            map(\n                (f: IFrame): string => {\n                    return f.state.currentNode.key;\n                }))\n            .subscribe(this._currentKey$);\n\n        this._currentNode$ = nodeChangedSubject$.pipe(\n            map(\n                (f: IFrame): Node => {\n                    return f.state.currentNode;\n                }),\n            publishReplay(1),\n            refCount());\n\n        this._currentCamera$ = nodeChangedSubject$.pipe(\n            map(\n                (f: IFrame): Camera => {\n                    return f.state.currentCamera;\n                }),\n            publishReplay(1),\n            refCount());\n\n        this._currentTransform$ = nodeChangedSubject$.pipe(\n            map(\n                (f: IFrame): Transform => {\n                    return f.state.currentTransform;\n                }),\n            publishReplay(1),\n            refCount());\n\n        this._reference$ = nodeChangedSubject$.pipe(\n            map(\n                (f: IFrame): ILatLonAlt => {\n                    return f.state.reference;\n                }),\n            distinctUntilChanged(\n                (r1: ILatLon, r2: ILatLon): boolean => {\n                    return r1.lat === r2.lat && r1.lon === r2.lon;\n                },\n                (reference: ILatLonAlt): ILatLon => {\n                    return { lat: reference.lat, lon: reference.lon };\n                }),\n            publishReplay(1),\n            refCount());\n\n        this._currentNodeExternal$ = nodeChanged$.pipe(\n            map(\n                (f: IFrame): Node => {\n                    return f.state.currentNode;\n                }),\n            publishReplay(1),\n            refCount());\n\n        this._appendNode$.pipe(\n            map(\n                (node: Node) => {\n                    return (context: IStateContext): IStateContext => {\n                        context.append([node]);\n\n                        return context;\n                    };\n                }))\n            .subscribe(this._contextOperation$);\n\n        this._inMotionOperation$ = new Subject<boolean>();\n\n        nodeChanged$.pipe(\n            map(\n                (frame: IFrame): boolean => {\n                    return true;\n                }))\n            .subscribe(this._inMotionOperation$);\n\n        this._inMotionOperation$.pipe(\n            distinctUntilChanged(),\n            filter(\n                (moving: boolean): boolean => {\n                    return moving;\n                }),\n            switchMap(\n                (moving: boolean): Observable<boolean> => {\n                    return this._currentState$.pipe(\n                        filter(\n                            (frame: IFrame): boolean => {\n                                return frame.state.nodesAhead === 0;\n                            }),\n                        map(\n                            (frame: IFrame): [Camera, number] => {\n                                return [frame.state.camera.clone(), frame.state.zoom];\n                            }),\n                        pairwise(),\n                        map(\n                            (pair: [[Camera, number], [Camera, number]]): boolean => {\n                                let c1: Camera = pair[0][0];\n                                let c2: Camera = pair[1][0];\n\n                                let z1: number = pair[0][1];\n                                let z2: number = pair[1][1];\n\n                                return c1.diff(c2) > 1e-5 || Math.abs(z1 - z2) > 1e-5;\n                            }),\n                        first(\n                            (changed: boolean): boolean => {\n                                return !changed;\n                            }));\n                }))\n            .subscribe(this._inMotionOperation$);\n\n        this._inMotion$ = this._inMotionOperation$.pipe(\n            distinctUntilChanged(),\n            publishReplay(1),\n            refCount());\n\n        this._inTranslationOperation$ = new Subject<boolean>();\n\n        nodeChanged$.pipe(\n            map(\n                (frame: IFrame): boolean => {\n                    return true;\n                }))\n            .subscribe(this._inTranslationOperation$);\n\n        this._inTranslationOperation$.pipe(\n            distinctUntilChanged(),\n            filter(\n                (inTranslation: boolean): boolean => {\n                    return inTranslation;\n                }),\n            switchMap(\n                (inTranslation: boolean): Observable<boolean> => {\n                    return this._currentState$.pipe(\n                        filter(\n                            (frame: IFrame): boolean => {\n                                return frame.state.nodesAhead === 0;\n                            }),\n                        map(\n                            (frame: IFrame): THREE.Vector3 => {\n                                return frame.state.camera.position.clone();\n                            }),\n                        pairwise(),\n                        map(\n                            (pair: [THREE.Vector3, THREE.Vector3]): boolean => {\n                                return pair[0].distanceToSquared(pair[1]) !== 0;\n                            }),\n                        first(\n                            (changed: boolean): boolean => {\n                                return !changed;\n                            }));\n                }))\n            .subscribe(this._inTranslationOperation$);\n\n        this._inTranslation$ = this._inTranslationOperation$.pipe(\n            distinctUntilChanged(),\n            publishReplay(1),\n            refCount());\n\n        this._state$.subscribe(() => { /*noop*/ });\n        this._currentNode$.subscribe(() => { /*noop*/ });\n        this._currentCamera$.subscribe(() => { /*noop*/ });\n        this._currentTransform$.subscribe(() => { /*noop*/ });\n        this._reference$.subscribe(() => { /*noop*/ });\n        this._currentNodeExternal$.subscribe(() => { /*noop*/ });\n        this._lastState$.subscribe(() => { /*noop*/ });\n        this._inMotion$.subscribe(() => { /*noop*/ });\n        this._inTranslation$.subscribe(() => { /*noop*/ });\n\n        this._frameId = null;\n        this._frameGenerator = new FrameGenerator(window);\n    }\n\n    public get currentState$(): Observable<IFrame> {\n        return this._currentState$;\n    }\n\n    public get currentNode$(): Observable<Node> {\n        return this._currentNode$;\n    }\n\n    public get currentKey$(): Observable<string> {\n        return this._currentKey$;\n    }\n\n    public get currentNodeExternal$(): Observable<Node> {\n        return this._currentNodeExternal$;\n    }\n\n    public get currentCamera$(): Observable<Camera> {\n        return this._currentCamera$;\n    }\n\n    public get currentTransform$(): Observable<Transform> {\n        return this._currentTransform$;\n    }\n\n    public get state$(): Observable<State> {\n        return this._state$;\n    }\n\n    public get reference$(): Observable<ILatLonAlt> {\n        return this._reference$;\n    }\n\n    public get inMotion$(): Observable<boolean> {\n        return this._inMotion$;\n    }\n\n    public get inTranslation$(): Observable<boolean> {\n        return this._inTranslation$;\n    }\n\n    public get appendNode$(): Subject<Node> {\n        return this._appendNode$;\n    }\n\n    public earth(): void {\n        this._inMotionOperation$.next(true);\n        this._invokeContextOperation((context: IStateContext) => { context.earth(); });\n    }\n\n    public traverse(): void {\n        this._inMotionOperation$.next(true);\n        this._invokeContextOperation((context: IStateContext) => { context.traverse(); });\n    }\n\n    public wait(): void {\n        this._invokeContextOperation((context: IStateContext) => { context.wait(); });\n    }\n\n    public waitInteractively(): void {\n        this._invokeContextOperation((context: IStateContext) => { context.waitInteractively(); });\n    }\n\n    public appendNodes(nodes: Node[]): void {\n        this._invokeContextOperation((context: IStateContext) => { context.append(nodes); });\n    }\n\n    public prependNodes(nodes: Node[]): void {\n        this._invokeContextOperation((context: IStateContext) => { context.prepend(nodes); });\n    }\n\n    public removeNodes(n: number): void {\n        this._invokeContextOperation((context: IStateContext) => { context.remove(n); });\n    }\n\n    public clearNodes(): void {\n        this._invokeContextOperation((context: IStateContext) => { context.clear(); });\n    }\n\n    public clearPriorNodes(): void {\n        this._invokeContextOperation((context: IStateContext) => { context.clearPrior(); });\n    }\n\n    public cutNodes(): void {\n        this._invokeContextOperation((context: IStateContext) => { context.cut(); });\n    }\n\n    public setNodes(nodes: Node[]): void {\n        this._invokeContextOperation((context: IStateContext) => { context.set(nodes); });\n    }\n\n    public rotate(delta: IRotation): void {\n        this._inMotionOperation$.next(true);\n        this._invokeContextOperation((context: IStateContext) => { context.rotate(delta); });\n    }\n\n    public rotateUnbounded(delta: IRotation): void {\n        this._inMotionOperation$.next(true);\n        this._invokeContextOperation((context: IStateContext) => { context.rotateUnbounded(delta); });\n    }\n\n    public rotateWithoutInertia(delta: IRotation): void {\n        this._inMotionOperation$.next(true);\n        this._invokeContextOperation((context: IStateContext) => { context.rotateWithoutInertia(delta); });\n    }\n\n    public rotateBasic(basicRotation: number[]): void {\n        this._inMotionOperation$.next(true);\n        this._invokeContextOperation((context: IStateContext) => { context.rotateBasic(basicRotation); });\n    }\n\n    public rotateBasicUnbounded(basicRotation: number[]): void {\n        this._inMotionOperation$.next(true);\n        this._invokeContextOperation((context: IStateContext) => { context.rotateBasicUnbounded(basicRotation); });\n    }\n\n    public rotateBasicWithoutInertia(basicRotation: number[]): void {\n        this._inMotionOperation$.next(true);\n        this._invokeContextOperation((context: IStateContext) => { context.rotateBasicWithoutInertia(basicRotation); });\n    }\n\n    public rotateToBasic(basic: number[]): void {\n        this._inMotionOperation$.next(true);\n        this._invokeContextOperation((context: IStateContext) => { context.rotateToBasic(basic); });\n    }\n\n    public move(delta: number): void {\n        this._inMotionOperation$.next(true);\n        this._invokeContextOperation((context: IStateContext) => { context.move(delta); });\n    }\n\n    public moveTo(position: number): void {\n        this._inMotionOperation$.next(true);\n        this._invokeContextOperation((context: IStateContext) => { context.moveTo(position); });\n    }\n\n    public dolly(delta: number): void {\n        this._inMotionOperation$.next(true);\n        this._invokeContextOperation((context: IStateContext) => { context.dolly(delta); });\n    }\n\n    public orbit(rotation: IRotation): void {\n        this._inMotionOperation$.next(true);\n        this._invokeContextOperation((context: IStateContext) => { context.orbit(rotation); });\n    }\n\n    public truck(direction: number[]): void {\n        this._inMotionOperation$.next(true);\n        this._invokeContextOperation((context: IStateContext) => { context.truck(direction); });\n    }\n\n    /**\n     * Change zoom level while keeping the reference point position approximately static.\n     *\n     * @parameter {number} delta - Change in zoom level.\n     * @parameter {Array<number>} reference - Reference point in basic coordinates.\n     */\n    public zoomIn(delta: number, reference: number[]): void {\n        this._inMotionOperation$.next(true);\n        this._invokeContextOperation((context: IStateContext) => { context.zoomIn(delta, reference); });\n    }\n\n    public getCenter(): Observable<number[]> {\n        return this._lastState$.pipe(\n            first(),\n            map(\n                (frame: IFrame): number[] => {\n                    return (<IStateContext>frame.state).getCenter();\n                }));\n    }\n\n    public getZoom(): Observable<number> {\n        return this._lastState$.pipe(\n            first(),\n            map(\n                (frame: IFrame): number => {\n                    return frame.state.zoom;\n                }));\n    }\n\n    public setCenter(center: number[]): void {\n        this._inMotionOperation$.next(true);\n        this._invokeContextOperation((context: IStateContext) => { context.setCenter(center); });\n    }\n\n    public setSpeed(speed: number): void {\n        this._invokeContextOperation((context: IStateContext) => { context.setSpeed(speed); });\n    }\n\n    public setTransitionMode(mode: TransitionMode): void {\n        this._invokeContextOperation((context: IStateContext) => { context.setTransitionMode(mode); });\n    }\n\n    public setZoom(zoom: number): void {\n        this._inMotionOperation$.next(true);\n        this._invokeContextOperation((context: IStateContext) => { context.setZoom(zoom); });\n    }\n\n    public start(): void {\n        if (this._frameId == null) {\n            this._start$.next(null);\n            this._frameId = this._frameGenerator.requestAnimationFrame(this._frame.bind(this));\n            this._frame$.next(this._frameId);\n        }\n    }\n\n    public stop(): void {\n        if (this._frameId != null) {\n            this._frameGenerator.cancelAnimationFrame(this._frameId);\n            this._frameId = null;\n        }\n    }\n\n    private _invokeContextOperation(action: (context: IStateContext) => void): void {\n        this._contextOperation$\n            .next(\n                (context: IStateContext): IStateContext => {\n                    action(context);\n\n                    return context;\n                });\n    }\n\n    private _frame(time: number): void {\n        this._frameId = this._frameGenerator.requestAnimationFrame(this._frame.bind(this));\n        this._frame$.next(this._frameId);\n    }\n}\n",
     "/**\n * Enumeration for transition mode\n * @enum {number}\n * @readonly\n * @description Modes for specifying how transitions\n * between nodes are performed.\n */\nexport enum TransitionMode {\n    /**\n     * Default transitions.\n     *\n     * @description The viewer dynamically determines\n     * whether transitions should be performed with or\n     * without motion and blending for each transition\n     * based on the underlying data.\n     */\n    Default,\n\n    /**\n     * Instantaneous transitions.\n     *\n     * @description All transitions are performed\n     * without motion or blending.\n     */\n    Instantaneous,\n}\n\nexport default TransitionMode;\n",
     "import * as THREE from \"three\";\n\nimport {\n    InteractiveWaitingState,\n    IRotation,\n    IState,\n    StateBase,\n    TraversingState,\n    WaitingState,\n} from \"../../State\";\nimport {\n    Camera,\n} from \"../../Geo\";\n\nexport class EarthState extends StateBase {\n    constructor(state: IState) {\n        super(state);\n\n        const viewingDirection: THREE.Vector3 = this._camera.lookat\n            .clone()\n            .sub(this._camera.position)\n            .normalize();\n\n        this._camera.lookat.copy(this._camera.position);\n        this._camera.position.z = state.camera.position.z + 20;\n        this._camera.position.x = state.camera.position.x - 16 * viewingDirection.x;\n        this._camera.position.y = state.camera.position.y - 16 * viewingDirection.y;\n        this._camera.up.set(0, 0, 1);\n    }\n\n    public traverse(): StateBase {\n        return new TraversingState(this);\n    }\n\n    public wait(): StateBase {\n        return new WaitingState(this);\n    }\n\n    public waitInteractively(): StateBase {\n        return new InteractiveWaitingState(this);\n    }\n\n    public dolly(delta: number): void {\n        const camera: Camera = this._camera;\n        const offset: THREE.Vector3 = new THREE.Vector3()\n            .copy(camera.position)\n            .sub(camera.lookat);\n\n        const length: number = offset.length();\n        const scaled: number = length * Math.pow(2, -delta);\n        const clipped: number = Math.max(1, Math.min(scaled, 1000));\n\n        offset.normalize();\n        offset.multiplyScalar(clipped);\n\n        camera.position.copy(camera.lookat).add(offset);\n    }\n\n    public orbit(rotation: IRotation): void {\n        const camera: Camera = this._camera;\n        const q: THREE.Quaternion = new THREE.Quaternion().setFromUnitVectors(camera.up, new THREE.Vector3( 0, 0, 1 ));\n        const qInverse: THREE.Quaternion = q.clone().inverse();\n\n        const offset: THREE.Vector3 = new THREE.Vector3();\n        offset.copy(camera.position).sub(camera.lookat);\n        offset.applyQuaternion(q);\n        const length: number = offset.length();\n\n        let phi: number = Math.atan2(offset.y, offset.x);\n        phi += rotation.phi;\n\n        let theta: number = Math.atan2(Math.sqrt(offset.x * offset.x + offset.y * offset.y), offset.z);\n        theta += rotation.theta;\n        theta = Math.max(0.1, Math.min(Math.PI - 0.1, theta));\n\n        offset.x = Math.sin(theta) * Math.cos(phi);\n        offset.y = Math.sin(theta) * Math.sin(phi);\n        offset.z = Math.cos(theta);\n        offset.applyQuaternion(qInverse);\n\n        camera.position.copy(camera.lookat).add(offset.multiplyScalar(length));\n    }\n\n    public truck(direction: number[]): void {\n        this._camera.position.add(new THREE.Vector3().fromArray(direction));\n        this._camera.lookat.add(new THREE.Vector3().fromArray(direction));\n    }\n\n    public update(): void { /*noop*/ }\n}\n\nexport default EarthState;\n",
-    "import * as THREE from \"three\";\n\nimport {\n    IGPano,\n} from \"../../API\";\nimport {\n    Camera,\n    Transform,\n} from \"../../Geo\";\nimport {\n    Node,\n} from \"../../Graph\";\nimport {\n    IRotation,\n    IState,\n    RotationDelta,\n    StateBase,\n} from \"../../State\";\n\nexport abstract class InteractiveStateBase extends StateBase {\n    /**\n     * Animation speed in transitions per frame at 60 FPS. Run time\n     * animation speed is adjusted to FPS.\n     */\n    protected _animationSpeed: number;\n\n    protected _rotationDelta: RotationDelta;\n    protected _requestedRotationDelta: RotationDelta;\n\n    protected _basicRotation: number[];\n    protected _requestedBasicRotation: number[];\n    protected _requestedBasicRotationUnbounded: number[];\n\n    protected _rotationAcceleration: number;\n    protected _rotationIncreaseAlpha: number;\n    protected _rotationDecreaseAlpha: number;\n    protected _rotationThreshold: number;\n    protected _unboundedRotationAlpha: number;\n\n    protected _desiredZoom: number;\n    protected _minZoom: number;\n    protected _maxZoom: number;\n    protected _lookatDepth: number;\n    protected _desiredLookat: THREE.Vector3;\n    protected _desiredCenter: number[];\n\n    constructor(state: IState) {\n        super(state);\n\n        this._animationSpeed = 1 / 40;\n\n        this._rotationDelta = new RotationDelta(0, 0);\n        this._requestedRotationDelta = null;\n\n        this._basicRotation = [0, 0];\n        this._requestedBasicRotation = null;\n        this._requestedBasicRotationUnbounded = null;\n\n        this._rotationAcceleration = 0.86;\n        this._rotationIncreaseAlpha = 0.97;\n        this._rotationDecreaseAlpha = 0.9;\n        this._rotationThreshold = 1e-3;\n        this._unboundedRotationAlpha = 0.8;\n\n        this._desiredZoom = state.zoom;\n        this._minZoom = 0;\n        this._maxZoom = 3;\n        this._lookatDepth = 10;\n\n        this._desiredLookat = null;\n        this._desiredCenter = null;\n    }\n\n    public rotate(rotationDelta: IRotation): void {\n        if (this._currentNode == null) {\n            return;\n        }\n\n        this._desiredZoom = this._zoom;\n        this._desiredLookat = null;\n        this._requestedBasicRotation = null;\n\n        if (this._requestedRotationDelta != null) {\n            this._requestedRotationDelta.phi = this._requestedRotationDelta.phi + rotationDelta.phi;\n            this._requestedRotationDelta.theta = this._requestedRotationDelta.theta + rotationDelta.theta;\n        } else {\n            this._requestedRotationDelta = new RotationDelta(rotationDelta.phi, rotationDelta.theta);\n        }\n    }\n\n    public rotateUnbounded(delta: IRotation): void {\n        if (this._currentNode == null) {\n            return;\n        }\n\n        this._requestedBasicRotation = null;\n        this._requestedRotationDelta = null;\n\n        this._applyRotation(delta, this._currentCamera);\n        this._applyRotation(delta, this._previousCamera);\n\n        if (!this._desiredLookat) {\n            return;\n        }\n\n        const q: THREE.Quaternion = new THREE.Quaternion().setFromUnitVectors(this._currentCamera.up, new THREE.Vector3(0, 0, 1));\n        const qInverse: THREE.Quaternion = q.clone().inverse();\n\n        const offset: THREE.Vector3 = new THREE.Vector3()\n            .copy(this._desiredLookat)\n            .sub(this._camera.position)\n            .applyQuaternion(q);\n\n        const length: number = offset.length();\n\n        let phi: number = Math.atan2(offset.y, offset.x);\n        phi += delta.phi;\n\n        let theta: number = Math.atan2(Math.sqrt(offset.x * offset.x + offset.y * offset.y), offset.z);\n        theta += delta.theta;\n        theta = Math.max(0.1, Math.min(Math.PI - 0.1, theta));\n\n        offset.x = Math.sin(theta) * Math.cos(phi);\n        offset.y = Math.sin(theta) * Math.sin(phi);\n        offset.z = Math.cos(theta);\n\n        offset.applyQuaternion(qInverse);\n\n        this._desiredLookat\n            .copy(this._camera.position)\n            .add(offset.multiplyScalar(length));\n    }\n\n    public rotateWithoutInertia(rotationDelta: IRotation): void {\n        if (this._currentNode == null) {\n            return;\n        }\n\n        this._desiredZoom = this._zoom;\n        this._desiredLookat = null;\n        this._requestedBasicRotation = null;\n        this._requestedRotationDelta = null;\n\n        const threshold: number = Math.PI / (10 * Math.pow(2, this._zoom));\n        const delta: IRotation = {\n            phi: this._spatial.clamp(rotationDelta.phi, -threshold, threshold),\n            theta: this._spatial.clamp(rotationDelta.theta, -threshold, threshold),\n        };\n\n        this._applyRotation(delta, this._currentCamera);\n        this._applyRotation(delta, this._previousCamera);\n    }\n\n    public rotateBasic(basicRotation: number[]): void {\n        if (this._currentNode == null) {\n            return;\n        }\n\n        this._desiredZoom = this._zoom;\n        this._desiredLookat = null;\n        this._requestedRotationDelta = null;\n\n        if (this._requestedBasicRotation != null) {\n            this._requestedBasicRotation[0] += basicRotation[0];\n            this._requestedBasicRotation[1] += basicRotation[1];\n\n            let threshold: number = 0.05 / Math.pow(2, this._zoom);\n\n            this._requestedBasicRotation[0] =\n                this._spatial.clamp(this._requestedBasicRotation[0], -threshold, threshold);\n\n            this._requestedBasicRotation[1] =\n                this._spatial.clamp(this._requestedBasicRotation[1], -threshold, threshold);\n        } else {\n            this._requestedBasicRotation = basicRotation.slice();\n        }\n    }\n\n    public rotateBasicUnbounded(basicRotation: number[]): void {\n        if (this._currentNode == null) {\n            return;\n        }\n\n        if (this._requestedBasicRotationUnbounded != null) {\n            this._requestedBasicRotationUnbounded[0] += basicRotation[0];\n            this._requestedBasicRotationUnbounded[1] += basicRotation[1];\n        } else {\n            this._requestedBasicRotationUnbounded = basicRotation.slice();\n        }\n    }\n\n    public rotateBasicWithoutInertia(basic: number[]): void {\n        if (this._currentNode == null) {\n            return;\n        }\n\n        this._desiredZoom = this._zoom;\n        this._desiredLookat = null;\n        this._requestedRotationDelta = null;\n        this._requestedBasicRotation = null;\n\n        const threshold: number = 0.05 / Math.pow(2, this._zoom);\n\n        const basicRotation: number[] = basic.slice();\n        basicRotation[0] = this._spatial.clamp(basicRotation[0], -threshold, threshold);\n        basicRotation[1] = this._spatial.clamp(basicRotation[1], -threshold, threshold);\n\n        this._applyRotationBasic(basicRotation);\n    }\n\n    public rotateToBasic(basic: number[]): void {\n        if (this._currentNode == null) {\n            return;\n        }\n\n        this._desiredZoom = this._zoom;\n        this._desiredLookat = null;\n\n        basic[0] = this._spatial.clamp(basic[0], 0, 1);\n        basic[1] = this._spatial.clamp(basic[1], 0, 1);\n\n        let lookat: number[] = this.currentTransform.unprojectBasic(basic, this._lookatDepth);\n        this._currentCamera.lookat.fromArray(lookat);\n    }\n\n    public zoomIn(delta: number, reference: number[]): void {\n        if (this._currentNode == null) {\n            return;\n        }\n\n        this._desiredZoom = Math.max(this._minZoom, Math.min(this._maxZoom, this._desiredZoom + delta));\n\n        let currentCenter: number[] = this.currentTransform.projectBasic(\n            this._currentCamera.lookat.toArray());\n\n        let currentCenterX: number = currentCenter[0];\n        let currentCenterY: number = currentCenter[1];\n\n        let zoom0: number = Math.pow(2, this._zoom);\n        let zoom1: number = Math.pow(2, this._desiredZoom);\n\n        let refX: number = reference[0];\n        let refY: number = reference[1];\n\n        if (this.currentTransform.gpano != null &&\n            this.currentTransform.gpano.CroppedAreaImageWidthPixels === this.currentTransform.gpano.FullPanoWidthPixels) {\n            if (refX - currentCenterX > 0.5) {\n                refX = refX - 1;\n            } else if (currentCenterX - refX > 0.5) {\n                refX = 1 + refX;\n            }\n        }\n\n        let newCenterX: number = refX - zoom0 / zoom1 * (refX - currentCenterX);\n        let newCenterY: number = refY - zoom0 / zoom1 * (refY - currentCenterY);\n\n        let gpano: IGPano = this.currentTransform.gpano;\n\n        if (this._currentNode.fullPano) {\n            newCenterX = this._spatial.wrap(newCenterX + this._basicRotation[0], 0, 1);\n            newCenterY = this._spatial.clamp(newCenterY + this._basicRotation[1], 0.05, 0.95);\n        } else if (gpano != null &&\n            this.currentTransform.gpano.CroppedAreaImageWidthPixels === this.currentTransform.gpano.FullPanoWidthPixels) {\n            newCenterX = this._spatial.wrap(newCenterX + this._basicRotation[0], 0, 1);\n            newCenterY = this._spatial.clamp(newCenterY + this._basicRotation[1], 0, 1);\n        } else {\n            newCenterX = this._spatial.clamp(newCenterX, 0, 1);\n            newCenterY = this._spatial.clamp(newCenterY, 0, 1);\n        }\n\n        this._desiredLookat = new THREE.Vector3()\n            .fromArray(this.currentTransform.unprojectBasic([newCenterX, newCenterY], this._lookatDepth));\n    }\n\n    public setCenter(center: number[]): void {\n        this._desiredLookat = null;\n        this._requestedRotationDelta = null;\n        this._requestedBasicRotation = null;\n        this._desiredZoom = this._zoom;\n\n        let clamped: number[] = [\n            this._spatial.clamp(center[0], 0, 1),\n            this._spatial.clamp(center[1], 0, 1),\n        ];\n\n        if (this._currentNode == null) {\n            this._desiredCenter = clamped;\n            return;\n        }\n\n        this._desiredCenter = null;\n\n        let currentLookat: THREE.Vector3 = new THREE.Vector3()\n            .fromArray(this.currentTransform.unprojectBasic(clamped, this._lookatDepth));\n\n        let previousTransform: Transform = this.previousTransform != null ?\n            this.previousTransform :\n            this.currentTransform;\n        let previousLookat: THREE.Vector3 = new THREE.Vector3()\n            .fromArray(previousTransform.unprojectBasic(clamped, this._lookatDepth));\n\n        this._currentCamera.lookat.copy(currentLookat);\n        this._previousCamera.lookat.copy(previousLookat);\n    }\n\n    public setZoom(zoom: number): void {\n        this._desiredLookat = null;\n        this._requestedRotationDelta = null;\n        this._requestedBasicRotation = null;\n\n        this._zoom = this._spatial.clamp(zoom, this._minZoom, this._maxZoom);\n        this._desiredZoom = this._zoom;\n    }\n\n    protected _applyRotation(delta: IRotation, camera: Camera): void {\n        if (camera == null) {\n            return;\n        }\n\n        let q: THREE.Quaternion = new THREE.Quaternion().setFromUnitVectors(camera.up, new THREE.Vector3(0, 0, 1));\n        let qInverse: THREE.Quaternion = q.clone().inverse();\n\n        let offset: THREE.Vector3 = new THREE.Vector3();\n        offset.copy(camera.lookat).sub(camera.position);\n        offset.applyQuaternion(q);\n        let length: number = offset.length();\n\n        let phi: number = Math.atan2(offset.y, offset.x);\n        phi += delta.phi;\n\n        let theta: number = Math.atan2(Math.sqrt(offset.x * offset.x + offset.y * offset.y), offset.z);\n        theta += delta.theta;\n        theta = Math.max(0.1, Math.min(Math.PI - 0.1, theta));\n\n        offset.x = Math.sin(theta) * Math.cos(phi);\n        offset.y = Math.sin(theta) * Math.sin(phi);\n        offset.z = Math.cos(theta);\n        offset.applyQuaternion(qInverse);\n\n        camera.lookat.copy(camera.position).add(offset.multiplyScalar(length));\n    }\n\n    protected _applyRotationBasic(basicRotation: number[]): void {\n        let currentNode: Node = this._currentNode;\n        let previousNode: Node = this._previousNode != null ?\n            this.previousNode :\n            this.currentNode;\n\n        let currentCamera: Camera = this._currentCamera;\n        let previousCamera: Camera = this._previousCamera;\n\n        let currentTransform: Transform = this.currentTransform;\n        let previousTransform: Transform = this.previousTransform != null ?\n            this.previousTransform :\n            this.currentTransform;\n\n        let currentBasic: number[] = currentTransform.projectBasic(currentCamera.lookat.toArray());\n        let previousBasic: number[] = previousTransform.projectBasic(previousCamera.lookat.toArray());\n\n        let currentGPano: IGPano = currentTransform.gpano;\n        let previousGPano: IGPano = previousTransform.gpano;\n\n        if (currentNode.fullPano) {\n            currentBasic[0] = this._spatial.wrap(currentBasic[0] + basicRotation[0], 0, 1);\n            currentBasic[1] = this._spatial.clamp(currentBasic[1] + basicRotation[1], 0.05, 0.95);\n        } else if (currentGPano != null &&\n            currentTransform.gpano.CroppedAreaImageWidthPixels === currentTransform.gpano.FullPanoWidthPixels) {\n            currentBasic[0] = this._spatial.wrap(currentBasic[0] + basicRotation[0], 0, 1);\n            currentBasic[1] = this._spatial.clamp(currentBasic[1] + basicRotation[1], 0, 1);\n        } else {\n            currentBasic[0] = this._spatial.clamp(currentBasic[0] + basicRotation[0], 0, 1);\n            currentBasic[1] = this._spatial.clamp(currentBasic[1] + basicRotation[1], 0, 1);\n        }\n\n        if (previousNode.fullPano) {\n            previousBasic[0] = this._spatial.wrap(previousBasic[0] + basicRotation[0], 0, 1);\n            previousBasic[1] = this._spatial.clamp(previousBasic[1] + basicRotation[1], 0.05, 0.95);\n        } else if (previousGPano != null &&\n            previousTransform.gpano.CroppedAreaImageWidthPixels === previousTransform.gpano.FullPanoWidthPixels) {\n            previousBasic[0] = this._spatial.wrap(previousBasic[0] + basicRotation[0], 0, 1);\n            previousBasic[1] = this._spatial.clamp(previousBasic[1] + basicRotation[1], 0, 1);\n        } else {\n            previousBasic[0] = this._spatial.clamp(previousBasic[0] + basicRotation[0], 0, 1);\n            previousBasic[1] = this._spatial.clamp(currentBasic[1] + basicRotation[1], 0, 1);\n        }\n\n        let currentLookat: number[] = currentTransform.unprojectBasic(currentBasic, this._lookatDepth);\n        currentCamera.lookat.fromArray(currentLookat);\n\n        let previousLookat: number[] = previousTransform.unprojectBasic(previousBasic, this._lookatDepth);\n        previousCamera.lookat.fromArray(previousLookat);\n    }\n\n    protected _updateZoom(animationSpeed: number): void {\n        let diff: number = this._desiredZoom - this._zoom;\n        let sign: number = diff > 0 ? 1 : diff < 0 ? -1 : 0;\n\n        if (diff === 0) {\n            return;\n        } else if (Math.abs(diff) < 2e-3) {\n            this._zoom = this._desiredZoom;\n            if (this._desiredLookat != null) {\n                this._desiredLookat = null;\n            }\n        } else {\n            this._zoom += sign * Math.max(Math.abs(5 * animationSpeed * diff), 2e-3);\n        }\n    }\n\n    protected _updateLookat(animationSpeed: number): void {\n        if (this._desiredLookat === null) {\n            return;\n        }\n\n        let diff: number = this._desiredLookat.distanceToSquared(this._currentCamera.lookat);\n\n        if (Math.abs(diff) < 1e-6) {\n            this._currentCamera.lookat.copy(this._desiredLookat);\n            this._desiredLookat = null;\n        } else {\n            this._currentCamera.lookat.lerp(this._desiredLookat, 5 * animationSpeed);\n        }\n    }\n\n    protected _updateRotation(): void {\n        if (this._requestedRotationDelta != null) {\n            let length: number = this._rotationDelta.lengthSquared();\n            let requestedLength: number = this._requestedRotationDelta.lengthSquared();\n\n            if (requestedLength > length) {\n                this._rotationDelta.lerp(this._requestedRotationDelta, this._rotationIncreaseAlpha);\n            } else {\n                this._rotationDelta.lerp(this._requestedRotationDelta, this._rotationDecreaseAlpha);\n            }\n\n            this._requestedRotationDelta = null;\n\n            return;\n        }\n\n        if (this._rotationDelta.isZero) {\n            return;\n        }\n\n        this._rotationDelta.multiply(this._rotationAcceleration);\n        this._rotationDelta.threshold(this._rotationThreshold);\n    }\n\n    protected _updateRotationBasic(): void {\n        if (this._requestedBasicRotation != null) {\n            let x: number = this._basicRotation[0];\n            let y: number = this._basicRotation[1];\n\n            let reqX: number = this._requestedBasicRotation[0];\n            let reqY: number = this._requestedBasicRotation[1];\n\n            if (Math.abs(reqX) > Math.abs(x)) {\n                this._basicRotation[0] = (1 - this._rotationIncreaseAlpha) * x + this._rotationIncreaseAlpha * reqX;\n            } else {\n                this._basicRotation[0] = (1 - this._rotationDecreaseAlpha) * x + this._rotationDecreaseAlpha * reqX;\n            }\n\n            if (Math.abs(reqY) > Math.abs(y)) {\n                this._basicRotation[1] = (1 - this._rotationIncreaseAlpha) * y + this._rotationIncreaseAlpha * reqY;\n            } else {\n                this._basicRotation[1] = (1 - this._rotationDecreaseAlpha) * y + this._rotationDecreaseAlpha * reqY;\n            }\n\n            this._requestedBasicRotation = null;\n\n            return;\n        }\n\n        if (this._requestedBasicRotationUnbounded != null) {\n            let reqX: number = this._requestedBasicRotationUnbounded[0];\n            let reqY: number = this._requestedBasicRotationUnbounded[1];\n\n            if (Math.abs(reqX) > 0) {\n                this._basicRotation[0] = (1 - this._unboundedRotationAlpha) * this._basicRotation[0] + this._unboundedRotationAlpha * reqX;\n            }\n\n            if (Math.abs(reqY) > 0) {\n                this._basicRotation[1] = (1 - this._unboundedRotationAlpha) * this._basicRotation[1] + this._unboundedRotationAlpha * reqY;\n            }\n\n            if (this._desiredLookat != null) {\n                let desiredBasicLookat: number[] = this.currentTransform.projectBasic(this._desiredLookat.toArray());\n\n                desiredBasicLookat[0] += reqX;\n                desiredBasicLookat[1] += reqY;\n\n                this._desiredLookat = new THREE.Vector3()\n                    .fromArray(this.currentTransform.unprojectBasic(desiredBasicLookat, this._lookatDepth));\n            }\n\n            this._requestedBasicRotationUnbounded = null;\n        }\n\n        if (this._basicRotation[0] === 0 && this._basicRotation[1] === 0) {\n            return;\n        }\n\n        this._basicRotation[0] = this._rotationAcceleration * this._basicRotation[0];\n        this._basicRotation[1] = this._rotationAcceleration * this._basicRotation[1];\n\n        if (Math.abs(this._basicRotation[0]) < this._rotationThreshold / Math.pow(2, this._zoom) &&\n            Math.abs(this._basicRotation[1]) < this._rotationThreshold / Math.pow(2, this._zoom)) {\n            this._basicRotation = [0, 0];\n        }\n    }\n\n    protected _clearRotation(): void {\n        if (this._currentNode.fullPano) {\n            return;\n        }\n\n        if (this._requestedRotationDelta != null) {\n            this._requestedRotationDelta = null;\n        }\n\n        if (!this._rotationDelta.isZero) {\n            this._rotationDelta.reset();\n        }\n\n        if (this._requestedBasicRotation != null) {\n            this._requestedBasicRotation = null;\n        }\n\n        if (this._basicRotation[0] > 0 || this._basicRotation[1] > 0) {\n            this._basicRotation = [0, 0];\n        }\n    }\n\n    protected _setDesiredCenter(): void {\n        if (this._desiredCenter == null) {\n            return;\n        }\n\n        let lookatDirection: THREE.Vector3 = new THREE.Vector3()\n            .fromArray(this.currentTransform.unprojectBasic(this._desiredCenter, this._lookatDepth))\n            .sub(this._currentCamera.position);\n\n        this._currentCamera.lookat.copy(this._currentCamera.position.clone().add(lookatDirection));\n        this._previousCamera.lookat.copy(this._previousCamera.position.clone().add(lookatDirection));\n\n        this._desiredCenter = null;\n    }\n\n    protected _setDesiredZoom(): void {\n        this._desiredZoom =\n            this._currentNode.fullPano || this._previousNode == null ?\n            this._zoom : 0;\n    }\n}\n\nexport default InteractiveStateBase;\n",
+    "import * as THREE from \"three\";\n\nimport {\n    IGPano,\n} from \"../../API\";\nimport {\n    Camera,\n    Transform,\n} from \"../../Geo\";\nimport {\n    Node,\n} from \"../../Graph\";\nimport {\n    IRotation,\n    IState,\n    RotationDelta,\n    StateBase,\n} from \"../../State\";\n\nexport abstract class InteractiveStateBase extends StateBase {\n    /**\n     * Animation speed in transitions per frame at 60 FPS. Run time\n     * animation speed is adjusted to FPS.\n     */\n    protected _animationSpeed: number;\n\n    protected _rotationDelta: RotationDelta;\n    protected _requestedRotationDelta: RotationDelta;\n\n    protected _basicRotation: number[];\n    protected _requestedBasicRotation: number[];\n    protected _requestedBasicRotationUnbounded: number[];\n\n    protected _rotationAcceleration: number;\n    protected _rotationIncreaseAlpha: number;\n    protected _rotationDecreaseAlpha: number;\n    protected _rotationThreshold: number;\n    protected _unboundedRotationAlpha: number;\n\n    protected _desiredZoom: number;\n    protected _minZoom: number;\n    protected _maxZoom: number;\n    protected _lookatDepth: number;\n    protected _desiredLookat: THREE.Vector3;\n    protected _desiredCenter: number[];\n\n    constructor(state: IState) {\n        super(state);\n\n        this._animationSpeed = 1 / 40;\n\n        this._rotationDelta = new RotationDelta(0, 0);\n        this._requestedRotationDelta = null;\n\n        this._basicRotation = [0, 0];\n        this._requestedBasicRotation = null;\n        this._requestedBasicRotationUnbounded = null;\n\n        this._rotationAcceleration = 0.86;\n        this._rotationIncreaseAlpha = 0.97;\n        this._rotationDecreaseAlpha = 0.9;\n        this._rotationThreshold = 1e-3;\n        this._unboundedRotationAlpha = 0.8;\n\n        this._desiredZoom = state.zoom;\n        this._minZoom = 0;\n        this._maxZoom = 3;\n        this._lookatDepth = 10;\n\n        this._desiredLookat = null;\n        this._desiredCenter = null;\n    }\n\n    public rotate(rotationDelta: IRotation): void {\n        if (this._currentNode == null) {\n            return;\n        }\n\n        if (rotationDelta.phi === 0 && rotationDelta.theta === 0) {\n            return;\n        }\n\n        this._desiredZoom = this._zoom;\n        this._desiredLookat = null;\n        this._requestedBasicRotation = null;\n\n        if (this._requestedRotationDelta != null) {\n            this._requestedRotationDelta.phi = this._requestedRotationDelta.phi + rotationDelta.phi;\n            this._requestedRotationDelta.theta = this._requestedRotationDelta.theta + rotationDelta.theta;\n        } else {\n            this._requestedRotationDelta = new RotationDelta(rotationDelta.phi, rotationDelta.theta);\n        }\n    }\n\n    public rotateUnbounded(delta: IRotation): void {\n        if (this._currentNode == null) {\n            return;\n        }\n\n        this._requestedBasicRotation = null;\n        this._requestedRotationDelta = null;\n\n        this._applyRotation(delta, this._currentCamera);\n        this._applyRotation(delta, this._previousCamera);\n\n        if (!this._desiredLookat) {\n            return;\n        }\n\n        const q: THREE.Quaternion = new THREE.Quaternion().setFromUnitVectors(this._currentCamera.up, new THREE.Vector3(0, 0, 1));\n        const qInverse: THREE.Quaternion = q.clone().inverse();\n\n        const offset: THREE.Vector3 = new THREE.Vector3()\n            .copy(this._desiredLookat)\n            .sub(this._camera.position)\n            .applyQuaternion(q);\n\n        const length: number = offset.length();\n\n        let phi: number = Math.atan2(offset.y, offset.x);\n        phi += delta.phi;\n\n        let theta: number = Math.atan2(Math.sqrt(offset.x * offset.x + offset.y * offset.y), offset.z);\n        theta += delta.theta;\n        theta = Math.max(0.1, Math.min(Math.PI - 0.1, theta));\n\n        offset.x = Math.sin(theta) * Math.cos(phi);\n        offset.y = Math.sin(theta) * Math.sin(phi);\n        offset.z = Math.cos(theta);\n\n        offset.applyQuaternion(qInverse);\n\n        this._desiredLookat\n            .copy(this._camera.position)\n            .add(offset.multiplyScalar(length));\n    }\n\n    public rotateWithoutInertia(rotationDelta: IRotation): void {\n        if (this._currentNode == null) {\n            return;\n        }\n\n        this._desiredZoom = this._zoom;\n        this._desiredLookat = null;\n        this._requestedBasicRotation = null;\n        this._requestedRotationDelta = null;\n\n        const threshold: number = Math.PI / (10 * Math.pow(2, this._zoom));\n        const delta: IRotation = {\n            phi: this._spatial.clamp(rotationDelta.phi, -threshold, threshold),\n            theta: this._spatial.clamp(rotationDelta.theta, -threshold, threshold),\n        };\n\n        this._applyRotation(delta, this._currentCamera);\n        this._applyRotation(delta, this._previousCamera);\n    }\n\n    public rotateBasic(basicRotation: number[]): void {\n        if (this._currentNode == null) {\n            return;\n        }\n\n        this._desiredZoom = this._zoom;\n        this._desiredLookat = null;\n        this._requestedRotationDelta = null;\n\n        if (this._requestedBasicRotation != null) {\n            this._requestedBasicRotation[0] += basicRotation[0];\n            this._requestedBasicRotation[1] += basicRotation[1];\n\n            let threshold: number = 0.05 / Math.pow(2, this._zoom);\n\n            this._requestedBasicRotation[0] =\n                this._spatial.clamp(this._requestedBasicRotation[0], -threshold, threshold);\n\n            this._requestedBasicRotation[1] =\n                this._spatial.clamp(this._requestedBasicRotation[1], -threshold, threshold);\n        } else {\n            this._requestedBasicRotation = basicRotation.slice();\n        }\n    }\n\n    public rotateBasicUnbounded(basicRotation: number[]): void {\n        if (this._currentNode == null) {\n            return;\n        }\n\n        if (this._requestedBasicRotationUnbounded != null) {\n            this._requestedBasicRotationUnbounded[0] += basicRotation[0];\n            this._requestedBasicRotationUnbounded[1] += basicRotation[1];\n        } else {\n            this._requestedBasicRotationUnbounded = basicRotation.slice();\n        }\n    }\n\n    public rotateBasicWithoutInertia(basic: number[]): void {\n        if (this._currentNode == null) {\n            return;\n        }\n\n        this._desiredZoom = this._zoom;\n        this._desiredLookat = null;\n        this._requestedRotationDelta = null;\n        this._requestedBasicRotation = null;\n\n        const threshold: number = 0.05 / Math.pow(2, this._zoom);\n\n        const basicRotation: number[] = basic.slice();\n        basicRotation[0] = this._spatial.clamp(basicRotation[0], -threshold, threshold);\n        basicRotation[1] = this._spatial.clamp(basicRotation[1], -threshold, threshold);\n\n        this._applyRotationBasic(basicRotation);\n    }\n\n    public rotateToBasic(basic: number[]): void {\n        if (this._currentNode == null) {\n            return;\n        }\n\n        this._desiredZoom = this._zoom;\n        this._desiredLookat = null;\n\n        basic[0] = this._spatial.clamp(basic[0], 0, 1);\n        basic[1] = this._spatial.clamp(basic[1], 0, 1);\n\n        let lookat: number[] = this.currentTransform.unprojectBasic(basic, this._lookatDepth);\n        this._currentCamera.lookat.fromArray(lookat);\n    }\n\n    public zoomIn(delta: number, reference: number[]): void {\n        if (this._currentNode == null) {\n            return;\n        }\n\n        this._desiredZoom = Math.max(this._minZoom, Math.min(this._maxZoom, this._desiredZoom + delta));\n\n        let currentCenter: number[] = this.currentTransform.projectBasic(\n            this._currentCamera.lookat.toArray());\n\n        let currentCenterX: number = currentCenter[0];\n        let currentCenterY: number = currentCenter[1];\n\n        let zoom0: number = Math.pow(2, this._zoom);\n        let zoom1: number = Math.pow(2, this._desiredZoom);\n\n        let refX: number = reference[0];\n        let refY: number = reference[1];\n\n        if (this.currentTransform.gpano != null &&\n            this.currentTransform.gpano.CroppedAreaImageWidthPixels === this.currentTransform.gpano.FullPanoWidthPixels) {\n            if (refX - currentCenterX > 0.5) {\n                refX = refX - 1;\n            } else if (currentCenterX - refX > 0.5) {\n                refX = 1 + refX;\n            }\n        }\n\n        let newCenterX: number = refX - zoom0 / zoom1 * (refX - currentCenterX);\n        let newCenterY: number = refY - zoom0 / zoom1 * (refY - currentCenterY);\n\n        let gpano: IGPano = this.currentTransform.gpano;\n\n        if (this._currentNode.fullPano) {\n            newCenterX = this._spatial.wrap(newCenterX + this._basicRotation[0], 0, 1);\n            newCenterY = this._spatial.clamp(newCenterY + this._basicRotation[1], 0.05, 0.95);\n        } else if (gpano != null &&\n            this.currentTransform.gpano.CroppedAreaImageWidthPixels === this.currentTransform.gpano.FullPanoWidthPixels) {\n            newCenterX = this._spatial.wrap(newCenterX + this._basicRotation[0], 0, 1);\n            newCenterY = this._spatial.clamp(newCenterY + this._basicRotation[1], 0, 1);\n        } else {\n            newCenterX = this._spatial.clamp(newCenterX, 0, 1);\n            newCenterY = this._spatial.clamp(newCenterY, 0, 1);\n        }\n\n        this._desiredLookat = new THREE.Vector3()\n            .fromArray(this.currentTransform.unprojectBasic([newCenterX, newCenterY], this._lookatDepth));\n    }\n\n    public setCenter(center: number[]): void {\n        this._desiredLookat = null;\n        this._requestedRotationDelta = null;\n        this._requestedBasicRotation = null;\n        this._desiredZoom = this._zoom;\n\n        let clamped: number[] = [\n            this._spatial.clamp(center[0], 0, 1),\n            this._spatial.clamp(center[1], 0, 1),\n        ];\n\n        if (this._currentNode == null) {\n            this._desiredCenter = clamped;\n            return;\n        }\n\n        this._desiredCenter = null;\n\n        let currentLookat: THREE.Vector3 = new THREE.Vector3()\n            .fromArray(this.currentTransform.unprojectBasic(clamped, this._lookatDepth));\n\n        let previousTransform: Transform = this.previousTransform != null ?\n            this.previousTransform :\n            this.currentTransform;\n        let previousLookat: THREE.Vector3 = new THREE.Vector3()\n            .fromArray(previousTransform.unprojectBasic(clamped, this._lookatDepth));\n\n        this._currentCamera.lookat.copy(currentLookat);\n        this._previousCamera.lookat.copy(previousLookat);\n    }\n\n    public setZoom(zoom: number): void {\n        this._desiredLookat = null;\n        this._requestedRotationDelta = null;\n        this._requestedBasicRotation = null;\n\n        this._zoom = this._spatial.clamp(zoom, this._minZoom, this._maxZoom);\n        this._desiredZoom = this._zoom;\n    }\n\n    protected _applyRotation(delta: IRotation, camera: Camera): void {\n        if (camera == null) {\n            return;\n        }\n\n        let q: THREE.Quaternion = new THREE.Quaternion().setFromUnitVectors(camera.up, new THREE.Vector3(0, 0, 1));\n        let qInverse: THREE.Quaternion = q.clone().inverse();\n\n        let offset: THREE.Vector3 = new THREE.Vector3();\n        offset.copy(camera.lookat).sub(camera.position);\n        offset.applyQuaternion(q);\n        let length: number = offset.length();\n\n        let phi: number = Math.atan2(offset.y, offset.x);\n        phi += delta.phi;\n\n        let theta: number = Math.atan2(Math.sqrt(offset.x * offset.x + offset.y * offset.y), offset.z);\n        theta += delta.theta;\n        theta = Math.max(0.1, Math.min(Math.PI - 0.1, theta));\n\n        offset.x = Math.sin(theta) * Math.cos(phi);\n        offset.y = Math.sin(theta) * Math.sin(phi);\n        offset.z = Math.cos(theta);\n        offset.applyQuaternion(qInverse);\n\n        camera.lookat.copy(camera.position).add(offset.multiplyScalar(length));\n    }\n\n    protected _applyRotationBasic(basicRotation: number[]): void {\n        let currentNode: Node = this._currentNode;\n        let previousNode: Node = this._previousNode != null ?\n            this.previousNode :\n            this.currentNode;\n\n        let currentCamera: Camera = this._currentCamera;\n        let previousCamera: Camera = this._previousCamera;\n\n        let currentTransform: Transform = this.currentTransform;\n        let previousTransform: Transform = this.previousTransform != null ?\n            this.previousTransform :\n            this.currentTransform;\n\n        let currentBasic: number[] = currentTransform.projectBasic(currentCamera.lookat.toArray());\n        let previousBasic: number[] = previousTransform.projectBasic(previousCamera.lookat.toArray());\n\n        let currentGPano: IGPano = currentTransform.gpano;\n        let previousGPano: IGPano = previousTransform.gpano;\n\n        if (currentNode.fullPano) {\n            currentBasic[0] = this._spatial.wrap(currentBasic[0] + basicRotation[0], 0, 1);\n            currentBasic[1] = this._spatial.clamp(currentBasic[1] + basicRotation[1], 0.05, 0.95);\n        } else if (currentGPano != null &&\n            currentTransform.gpano.CroppedAreaImageWidthPixels === currentTransform.gpano.FullPanoWidthPixels) {\n            currentBasic[0] = this._spatial.wrap(currentBasic[0] + basicRotation[0], 0, 1);\n            currentBasic[1] = this._spatial.clamp(currentBasic[1] + basicRotation[1], 0, 1);\n        } else {\n            currentBasic[0] = this._spatial.clamp(currentBasic[0] + basicRotation[0], 0, 1);\n            currentBasic[1] = this._spatial.clamp(currentBasic[1] + basicRotation[1], 0, 1);\n        }\n\n        if (previousNode.fullPano) {\n            previousBasic[0] = this._spatial.wrap(previousBasic[0] + basicRotation[0], 0, 1);\n            previousBasic[1] = this._spatial.clamp(previousBasic[1] + basicRotation[1], 0.05, 0.95);\n        } else if (previousGPano != null &&\n            previousTransform.gpano.CroppedAreaImageWidthPixels === previousTransform.gpano.FullPanoWidthPixels) {\n            previousBasic[0] = this._spatial.wrap(previousBasic[0] + basicRotation[0], 0, 1);\n            previousBasic[1] = this._spatial.clamp(previousBasic[1] + basicRotation[1], 0, 1);\n        } else {\n            previousBasic[0] = this._spatial.clamp(previousBasic[0] + basicRotation[0], 0, 1);\n            previousBasic[1] = this._spatial.clamp(currentBasic[1] + basicRotation[1], 0, 1);\n        }\n\n        let currentLookat: number[] = currentTransform.unprojectBasic(currentBasic, this._lookatDepth);\n        currentCamera.lookat.fromArray(currentLookat);\n\n        let previousLookat: number[] = previousTransform.unprojectBasic(previousBasic, this._lookatDepth);\n        previousCamera.lookat.fromArray(previousLookat);\n    }\n\n    protected _updateZoom(animationSpeed: number): void {\n        let diff: number = this._desiredZoom - this._zoom;\n        let sign: number = diff > 0 ? 1 : diff < 0 ? -1 : 0;\n\n        if (diff === 0) {\n            return;\n        } else if (Math.abs(diff) < 2e-3) {\n            this._zoom = this._desiredZoom;\n            if (this._desiredLookat != null) {\n                this._desiredLookat = null;\n            }\n        } else {\n            this._zoom += sign * Math.max(Math.abs(5 * animationSpeed * diff), 2e-3);\n        }\n    }\n\n    protected _updateLookat(animationSpeed: number): void {\n        if (this._desiredLookat === null) {\n            return;\n        }\n\n        let diff: number = this._desiredLookat.distanceToSquared(this._currentCamera.lookat);\n\n        if (Math.abs(diff) < 1e-6) {\n            this._currentCamera.lookat.copy(this._desiredLookat);\n            this._desiredLookat = null;\n        } else {\n            this._currentCamera.lookat.lerp(this._desiredLookat, 5 * animationSpeed);\n        }\n    }\n\n    protected _updateRotation(): void {\n        if (this._requestedRotationDelta != null) {\n            let length: number = this._rotationDelta.lengthSquared();\n            let requestedLength: number = this._requestedRotationDelta.lengthSquared();\n\n            if (requestedLength > length) {\n                this._rotationDelta.lerp(this._requestedRotationDelta, this._rotationIncreaseAlpha);\n            } else {\n                this._rotationDelta.lerp(this._requestedRotationDelta, this._rotationDecreaseAlpha);\n            }\n\n            this._requestedRotationDelta = null;\n\n            return;\n        }\n\n        if (this._rotationDelta.isZero) {\n            return;\n        }\n\n        const alpha: number = this.currentNode.fullPano ? 1 : this._alpha;\n\n        this._rotationDelta.multiply(this._rotationAcceleration * alpha);\n        this._rotationDelta.threshold(this._rotationThreshold);\n    }\n\n    protected _updateRotationBasic(): void {\n        if (this._requestedBasicRotation != null) {\n            let x: number = this._basicRotation[0];\n            let y: number = this._basicRotation[1];\n\n            let reqX: number = this._requestedBasicRotation[0];\n            let reqY: number = this._requestedBasicRotation[1];\n\n            if (Math.abs(reqX) > Math.abs(x)) {\n                this._basicRotation[0] = (1 - this._rotationIncreaseAlpha) * x + this._rotationIncreaseAlpha * reqX;\n            } else {\n                this._basicRotation[0] = (1 - this._rotationDecreaseAlpha) * x + this._rotationDecreaseAlpha * reqX;\n            }\n\n            if (Math.abs(reqY) > Math.abs(y)) {\n                this._basicRotation[1] = (1 - this._rotationIncreaseAlpha) * y + this._rotationIncreaseAlpha * reqY;\n            } else {\n                this._basicRotation[1] = (1 - this._rotationDecreaseAlpha) * y + this._rotationDecreaseAlpha * reqY;\n            }\n\n            this._requestedBasicRotation = null;\n\n            return;\n        }\n\n        if (this._requestedBasicRotationUnbounded != null) {\n            let reqX: number = this._requestedBasicRotationUnbounded[0];\n            let reqY: number = this._requestedBasicRotationUnbounded[1];\n\n            if (Math.abs(reqX) > 0) {\n                this._basicRotation[0] = (1 - this._unboundedRotationAlpha) * this._basicRotation[0] + this._unboundedRotationAlpha * reqX;\n            }\n\n            if (Math.abs(reqY) > 0) {\n                this._basicRotation[1] = (1 - this._unboundedRotationAlpha) * this._basicRotation[1] + this._unboundedRotationAlpha * reqY;\n            }\n\n            if (this._desiredLookat != null) {\n                let desiredBasicLookat: number[] = this.currentTransform.projectBasic(this._desiredLookat.toArray());\n\n                desiredBasicLookat[0] += reqX;\n                desiredBasicLookat[1] += reqY;\n\n                this._desiredLookat = new THREE.Vector3()\n                    .fromArray(this.currentTransform.unprojectBasic(desiredBasicLookat, this._lookatDepth));\n            }\n\n            this._requestedBasicRotationUnbounded = null;\n        }\n\n        if (this._basicRotation[0] === 0 && this._basicRotation[1] === 0) {\n            return;\n        }\n\n        this._basicRotation[0] = this._rotationAcceleration * this._basicRotation[0];\n        this._basicRotation[1] = this._rotationAcceleration * this._basicRotation[1];\n\n        if (Math.abs(this._basicRotation[0]) < this._rotationThreshold / Math.pow(2, this._zoom) &&\n            Math.abs(this._basicRotation[1]) < this._rotationThreshold / Math.pow(2, this._zoom)) {\n            this._basicRotation = [0, 0];\n        }\n    }\n\n    protected _clearRotation(): void {\n        if (this._currentNode.fullPano) {\n            return;\n        }\n\n        if (this._requestedRotationDelta != null) {\n            this._requestedRotationDelta = null;\n        }\n\n        if (!this._rotationDelta.isZero) {\n            this._rotationDelta.reset();\n        }\n\n        if (this._requestedBasicRotation != null) {\n            this._requestedBasicRotation = null;\n        }\n\n        if (this._basicRotation[0] > 0 || this._basicRotation[1] > 0) {\n            this._basicRotation = [0, 0];\n        }\n    }\n\n    protected _setDesiredCenter(): void {\n        if (this._desiredCenter == null) {\n            return;\n        }\n\n        let lookatDirection: THREE.Vector3 = new THREE.Vector3()\n            .fromArray(this.currentTransform.unprojectBasic(this._desiredCenter, this._lookatDepth))\n            .sub(this._currentCamera.position);\n\n        this._currentCamera.lookat.copy(this._currentCamera.position.clone().add(lookatDirection));\n        this._previousCamera.lookat.copy(this._previousCamera.position.clone().add(lookatDirection));\n\n        this._desiredCenter = null;\n    }\n\n    protected _setDesiredZoom(): void {\n        this._desiredZoom =\n            this._currentNode.fullPano || this._previousNode == null ?\n            this._zoom : 0;\n    }\n}\n\nexport default InteractiveStateBase;\n",
     "import {\n    Node,\n} from \"../../Graph\";\nimport {\n    IState,\n    InteractiveStateBase,\n    StateBase,\n    TraversingState,\n    WaitingState,\n} from \"../../State\";\n\nexport class InteractiveWaitingState extends InteractiveStateBase {\n    constructor(state: IState) {\n        super(state);\n\n        this._adjustCameras();\n\n        this._motionless = this._motionlessTransition();\n    }\n\n    public traverse(): StateBase {\n        return new TraversingState(this);\n    }\n\n    public wait(): StateBase {\n        return new WaitingState(this);\n    }\n\n    public prepend(nodes: Node[]): void {\n        super.prepend(nodes);\n\n        this._motionless = this._motionlessTransition();\n    }\n\n    public set(nodes: Node[]): void {\n        super.set(nodes);\n\n        this._motionless = this._motionlessTransition();\n    }\n\n    public move(delta: number): void {\n        this._alpha = Math.max(0, Math.min(1, this._alpha + delta));\n    }\n\n    public moveTo(position: number): void {\n        this._alpha = Math.max(0, Math.min(1, position));\n    }\n\n    public update(fps: number): void {\n        this._updateRotation();\n        if (!this._rotationDelta.isZero) {\n            this._applyRotation(this._rotationDelta, this._previousCamera);\n            this._applyRotation(this._rotationDelta, this._currentCamera);\n        }\n\n        this._updateRotationBasic();\n        if (this._basicRotation[0] !== 0 || this._basicRotation[1] !== 0) {\n            this._applyRotationBasic(this._basicRotation);\n        }\n\n        let animationSpeed: number = this._animationSpeed * (60 / fps);\n        this._updateZoom(animationSpeed);\n        this._updateLookat(animationSpeed);\n\n        this._camera.lerpCameras(this._previousCamera, this._currentCamera, this.alpha);\n    }\n\n    protected _getAlpha(): number {\n        return this._motionless ? Math.round(this._alpha) : this._alpha;\n    }\n\n    protected _setCurrentCamera(): void {\n        super._setCurrentCamera();\n\n        this._adjustCameras();\n    }\n\n    private _adjustCameras(): void {\n        if (this._previousNode == null) {\n            return;\n        }\n\n        if (this._currentNode.fullPano) {\n            let lookat: THREE.Vector3 = this._camera.lookat.clone().sub(this._camera.position);\n            this._currentCamera.lookat.copy(lookat.clone().add(this._currentCamera.position));\n        }\n\n        if (this._previousNode.fullPano) {\n            let lookat: THREE.Vector3 = this._currentCamera.lookat.clone().sub(this._currentCamera.position);\n            this._previousCamera.lookat.copy(lookat.clone().add(this._previousCamera.position));\n        }\n    }\n}\n\nexport default InteractiveWaitingState;\n",
-    "import {ArgumentMapillaryError} from \"../../Error\";\nimport {Node} from \"../../Graph\";\nimport {\n    Camera,\n    Geo,\n    GeoCoords,\n    ILatLonAlt,\n    Transform,\n    Spatial,\n} from \"../../Geo\";\nimport {\n    IRotation,\n    IState,\n    TransitionMode,\n} from \"../../State\";\n\nexport abstract class StateBase implements IState {\n    protected _spatial: Spatial;\n    protected _geoCoords: GeoCoords;\n\n    protected _reference: ILatLonAlt;\n\n    protected _alpha: number;\n    protected _camera: Camera;\n    protected _zoom: number;\n\n    protected _currentIndex: number;\n\n    protected _trajectory: Node[];\n    protected _currentNode: Node;\n    protected _previousNode: Node;\n\n    protected _trajectoryTransforms: Transform[];\n\n    protected _trajectoryCameras: Camera[];\n    protected _currentCamera: Camera;\n    protected _previousCamera: Camera;\n\n    protected _motionless: boolean;\n\n    private _referenceThreshold: number;\n    private _transitionMode: TransitionMode;\n\n    constructor(state: IState) {\n        this._spatial = new Spatial();\n        this._geoCoords = new GeoCoords();\n\n        this._referenceThreshold = 0.01;\n        this._transitionMode = state.transitionMode;\n\n        this._reference = state.reference;\n\n        this._alpha = state.alpha;\n        this._camera = state.camera.clone();\n        this._zoom = state.zoom;\n\n        this._currentIndex = state.currentIndex;\n\n        this._trajectory = state.trajectory.slice();\n        this._trajectoryTransforms = [];\n        this._trajectoryCameras = [];\n\n        for (let node of this._trajectory) {\n            let translation: number[] = this._nodeToTranslation(node, this._reference);\n            let transform: Transform = new Transform(\n                node.orientation,\n                node.width,\n                node.height,\n                node.focal,\n                node.scale,\n                node.gpano,\n                node.rotation,\n                translation,\n                node.image,\n                undefined,\n                node.ck1,\n                node.ck2);\n\n            this._trajectoryTransforms.push(transform);\n            this._trajectoryCameras.push(new Camera(transform));\n        }\n\n        this._currentNode = this._trajectory.length > 0 ?\n            this._trajectory[this._currentIndex] :\n            null;\n\n        this._previousNode = this._trajectory.length > 1 && this.currentIndex > 0 ?\n            this._trajectory[this._currentIndex - 1] :\n            null;\n\n        this._currentCamera = this._trajectoryCameras.length > 0 ?\n            this._trajectoryCameras[this._currentIndex].clone() :\n            new Camera();\n\n        this._previousCamera = this._trajectoryCameras.length > 1 && this.currentIndex > 0 ?\n            this._trajectoryCameras[this._currentIndex - 1].clone() :\n            this._currentCamera.clone();\n    }\n\n    public get reference(): ILatLonAlt {\n        return this._reference;\n    }\n\n    public get alpha(): number {\n        return this._getAlpha();\n    }\n\n    public get camera(): Camera {\n        return this._camera;\n    }\n\n    public get zoom(): number {\n        return this._zoom;\n    }\n\n    public get trajectory(): Node[] {\n        return this._trajectory;\n    }\n\n    public get currentIndex(): number {\n        return this._currentIndex;\n    }\n\n    public get currentNode(): Node {\n        return this._currentNode;\n    }\n\n    public get previousNode(): Node {\n        return this._previousNode;\n    }\n\n    public get currentCamera(): Camera {\n        return this._currentCamera;\n    }\n\n    public get currentTransform(): Transform {\n        return this._trajectoryTransforms.length > 0 ?\n            this._trajectoryTransforms[this.currentIndex] : null;\n    }\n\n    public get previousTransform(): Transform {\n        return this._trajectoryTransforms.length > 1 && this.currentIndex > 0 ?\n            this._trajectoryTransforms[this.currentIndex - 1] : null;\n    }\n\n    public get motionless(): boolean {\n        return this._motionless;\n    }\n\n    public get transitionMode(): TransitionMode {\n        return this._transitionMode;\n    }\n\n    public earth(): StateBase { throw new Error(\"Not implemented\"); }\n\n    public traverse(): StateBase { throw new Error(\"Not implemented\"); }\n\n    public wait(): StateBase { throw new Error(\"Not implemented\"); }\n\n    public waitInteractively(): StateBase { throw new Error(\"Not implemented\"); }\n\n    public move(delta: number): void { /*noop*/ }\n\n    public moveTo(position: number): void { /*noop*/ }\n\n    public rotate(delta: IRotation): void { /*noop*/ }\n\n    public rotateUnbounded(delta: IRotation): void { /*noop*/ }\n\n    public rotateWithoutInertia(delta: IRotation): void { /*noop*/ }\n\n    public rotateBasic(basicRotation: number[]): void { /*noop*/ }\n\n    public rotateBasicUnbounded(basicRotation: number[]): void { /*noop*/ }\n\n    public rotateBasicWithoutInertia(basicRotation: number[]): void { /*noop*/ }\n\n    public rotateToBasic(basic: number[]): void { /*noop*/ }\n\n    public setSpeed(speed: number): void { /*noop*/ }\n\n    public zoomIn(delta: number, reference: number[]): void { /*noop*/ }\n\n    public update(fps: number): void { /*noop*/ }\n\n    public setCenter(center: number[]): void { /*noop*/ }\n\n    public setZoom(zoom: number): void { /*noop*/ }\n\n    public dolly(delta: number): void { /*noop*/ }\n\n    public orbit(rotation: IRotation): void { /*noop*/ }\n\n    public truck(direction: number[]): void { /*noop*/ }\n\n    public append(nodes: Node[]): void {\n        if (nodes.length < 1) {\n            throw Error(\"Trajectory can not be empty\");\n        }\n\n        if (this._currentIndex < 0) {\n            this.set(nodes);\n        } else {\n            this._trajectory = this._trajectory.concat(nodes);\n            this._appendToTrajectories(nodes);\n        }\n    }\n\n    public prepend(nodes: Node[]): void {\n        if (nodes.length < 1) {\n            throw Error(\"Trajectory can not be empty\");\n        }\n\n        this._trajectory = nodes.slice().concat(this._trajectory);\n        this._currentIndex += nodes.length;\n\n        this._setCurrentNode();\n\n        let referenceReset: boolean = this._setReference(this._currentNode);\n        if (referenceReset) {\n            this._setTrajectories();\n        } else {\n            this._prependToTrajectories(nodes);\n        }\n\n        this._setCurrentCamera();\n    }\n\n    public remove(n: number): void {\n        if (n < 0) {\n            throw Error(\"n must be a positive integer\");\n        }\n\n        if (this._currentIndex - 1 < n) {\n            throw Error(\"Current and previous nodes can not be removed\");\n        }\n\n        for (let i: number = 0; i < n; i++) {\n            this._trajectory.shift();\n            this._trajectoryTransforms.shift();\n            this._trajectoryCameras.shift();\n            this._currentIndex--;\n        }\n\n        this._setCurrentNode();\n    }\n\n    public clearPrior(): void {\n        if (this._currentIndex > 0) {\n            this.remove(this._currentIndex - 1);\n        }\n    }\n\n    public clear(): void {\n        this.cut();\n\n        if (this._currentIndex > 0) {\n            this.remove(this._currentIndex - 1);\n        }\n    }\n\n    public cut(): void {\n        while (this._trajectory.length - 1 > this._currentIndex) {\n            this._trajectory.pop();\n            this._trajectoryTransforms.pop();\n            this._trajectoryCameras.pop();\n        }\n    }\n\n    public set(nodes: Node[]): void {\n        this._setTrajectory(nodes);\n        this._setCurrentNode();\n        this._setReference(this._currentNode);\n        this._setTrajectories();\n        this._setCurrentCamera();\n    }\n\n    public getCenter(): number[] {\n        return this._currentNode != null ?\n            this.currentTransform.projectBasic(this._camera.lookat.toArray()) :\n            [0.5, 0.5];\n    }\n\n    public setTransitionMode(mode: TransitionMode): void {\n        this._transitionMode = mode;\n    }\n\n    protected _getAlpha(): number { return 1; }\n\n    protected _setCurrent(): void {\n        this._setCurrentNode();\n\n        let referenceReset: boolean = this._setReference(this._currentNode);\n        if (referenceReset) {\n            this._setTrajectories();\n        }\n\n        this._setCurrentCamera();\n    }\n\n    protected _setCurrentCamera(): void {\n        this._currentCamera = this._trajectoryCameras[this._currentIndex].clone();\n        this._previousCamera = this._currentIndex > 0 ?\n            this._trajectoryCameras[this._currentIndex - 1].clone() :\n            this._currentCamera.clone();\n    }\n\n    protected _motionlessTransition(): boolean {\n        let nodesSet: boolean = this._currentNode != null && this._previousNode != null;\n\n        return nodesSet && (\n            this._transitionMode === TransitionMode.Instantaneous || !(\n                this._currentNode.merged &&\n                this._previousNode.merged &&\n                this._withinOriginalDistance() &&\n                this._sameConnectedComponent()\n            ));\n    }\n\n    private _setReference(node: Node): boolean {\n        // do not reset reference if node is within threshold distance\n        if (Math.abs(node.latLon.lat - this.reference.lat) < this._referenceThreshold &&\n            Math.abs(node.latLon.lon - this.reference.lon) < this._referenceThreshold) {\n            return false;\n        }\n\n        // do not reset reference if previous node exist and transition is with motion\n        if (this._previousNode != null && !this._motionlessTransition()) {\n            return false;\n        }\n\n        this._reference.lat = node.latLon.lat;\n        this._reference.lon = node.latLon.lon;\n        this._reference.alt = node.alt;\n\n        return true;\n    }\n\n    private _setCurrentNode(): void {\n        this._currentNode = this._trajectory.length > 0 ?\n            this._trajectory[this._currentIndex] :\n            null;\n\n        this._previousNode = this._currentIndex > 0 ?\n            this._trajectory[this._currentIndex - 1] :\n            null;\n    }\n\n    private _setTrajectory(nodes: Node[]): void {\n        if (nodes.length < 1) {\n            throw new ArgumentMapillaryError(\"Trajectory can not be empty\");\n        }\n\n        if (this._currentNode != null) {\n            this._trajectory = [this._currentNode].concat(nodes);\n            this._currentIndex = 1;\n        } else {\n            this._trajectory = nodes.slice();\n            this._currentIndex = 0;\n        }\n    }\n\n    private _setTrajectories(): void {\n        this._trajectoryTransforms.length = 0;\n        this._trajectoryCameras.length = 0;\n\n        this._appendToTrajectories(this._trajectory);\n    }\n\n    private _appendToTrajectories(nodes: Node[]): void {\n        for (let node of nodes) {\n            if (!node.assetsCached) {\n                throw new ArgumentMapillaryError(\"Assets must be cached when node is added to trajectory\");\n            }\n\n            let translation: number[] = this._nodeToTranslation(node, this.reference);\n            let transform: Transform = new Transform(\n                node.orientation,\n                node.width,\n                node.height,\n                node.focal,\n                node.scale,\n                node.gpano,\n                node.rotation,\n                translation,\n                node.image,\n                undefined,\n                node.ck1,\n                node.ck2);\n\n            this._trajectoryTransforms.push(transform);\n            this._trajectoryCameras.push(new Camera(transform));\n        }\n    }\n\n    private _prependToTrajectories(nodes: Node[]): void {\n        for (let node of nodes.reverse()) {\n            if (!node.assetsCached) {\n                throw new ArgumentMapillaryError(\"Assets must be cached when added to trajectory\");\n            }\n\n            let translation: number[] = this._nodeToTranslation(node, this.reference);\n            let transform: Transform = new Transform(\n                node.orientation,\n                node.width,\n                node.height,\n                node.focal,\n                node.scale,\n                node.gpano,\n                node.rotation,\n                translation,\n                node.image,\n                undefined,\n                node.ck1,\n                node.ck2);\n\n            this._trajectoryTransforms.unshift(transform);\n            this._trajectoryCameras.unshift(new Camera(transform));\n        }\n    }\n\n    private _nodeToTranslation(node: Node, reference: ILatLonAlt): number[] {\n        return Geo.computeTranslation(\n            { alt: node.alt, lat: node.latLon.lat, lon: node.latLon.lon },\n            node.rotation,\n            reference);\n    }\n\n    private _sameConnectedComponent(): boolean {\n        let current: Node = this._currentNode;\n        let previous: Node = this._previousNode;\n\n        return !!current && !!previous &&\n            current.mergeCC === previous.mergeCC;\n    }\n\n    private _withinOriginalDistance(): boolean {\n        let current: Node = this._currentNode;\n        let previous: Node = this._previousNode;\n\n        if (!current || !previous) {\n            return true;\n        }\n\n        // 50 km/h moves 28m in 2s\n        let distance: number = this._spatial.distanceFromLatLon(\n            current.originalLatLon.lat,\n            current.originalLatLon.lon,\n            previous.originalLatLon.lat,\n            previous.originalLatLon.lon);\n\n        return distance < 25;\n    }\n}\n",
+    "import {ArgumentMapillaryError} from \"../../Error\";\nimport {Node} from \"../../Graph\";\nimport {\n    Camera,\n    Geo,\n    GeoCoords,\n    ILatLonAlt,\n    Transform,\n    Spatial,\n} from \"../../Geo\";\nimport {\n    IRotation,\n    IState,\n    TransitionMode,\n} from \"../../State\";\n\nexport abstract class StateBase implements IState {\n    protected _spatial: Spatial;\n    protected _geoCoords: GeoCoords;\n\n    protected _reference: ILatLonAlt;\n\n    protected _alpha: number;\n    protected _camera: Camera;\n    protected _zoom: number;\n\n    protected _currentIndex: number;\n\n    protected _trajectory: Node[];\n    protected _currentNode: Node;\n    protected _previousNode: Node;\n\n    protected _trajectoryTransforms: Transform[];\n\n    protected _trajectoryCameras: Camera[];\n    protected _currentCamera: Camera;\n    protected _previousCamera: Camera;\n\n    protected _motionless: boolean;\n\n    private _referenceThreshold: number;\n    private _transitionMode: TransitionMode;\n\n    constructor(state: IState) {\n        this._spatial = new Spatial();\n        this._geoCoords = new GeoCoords();\n\n        this._referenceThreshold = 0.01;\n        this._transitionMode = state.transitionMode;\n\n        this._reference = state.reference;\n\n        this._alpha = state.alpha;\n        this._camera = state.camera.clone();\n        this._zoom = state.zoom;\n\n        this._currentIndex = state.currentIndex;\n\n        this._trajectory = state.trajectory.slice();\n        this._trajectoryTransforms = [];\n        this._trajectoryCameras = [];\n\n        for (let node of this._trajectory) {\n            let translation: number[] = this._nodeToTranslation(node, this._reference);\n            let transform: Transform = new Transform(\n                node.orientation,\n                node.width,\n                node.height,\n                node.focal,\n                node.scale,\n                node.gpano,\n                node.rotation,\n                translation,\n                node.image,\n                undefined,\n                node.ck1,\n                node.ck2,\n                node.cameraProjection);\n\n            this._trajectoryTransforms.push(transform);\n            this._trajectoryCameras.push(new Camera(transform));\n        }\n\n        this._currentNode = this._trajectory.length > 0 ?\n            this._trajectory[this._currentIndex] :\n            null;\n\n        this._previousNode = this._trajectory.length > 1 && this.currentIndex > 0 ?\n            this._trajectory[this._currentIndex - 1] :\n            null;\n\n        this._currentCamera = this._trajectoryCameras.length > 0 ?\n            this._trajectoryCameras[this._currentIndex].clone() :\n            new Camera();\n\n        this._previousCamera = this._trajectoryCameras.length > 1 && this.currentIndex > 0 ?\n            this._trajectoryCameras[this._currentIndex - 1].clone() :\n            this._currentCamera.clone();\n    }\n\n    public get reference(): ILatLonAlt {\n        return this._reference;\n    }\n\n    public get alpha(): number {\n        return this._getAlpha();\n    }\n\n    public get camera(): Camera {\n        return this._camera;\n    }\n\n    public get zoom(): number {\n        return this._zoom;\n    }\n\n    public get trajectory(): Node[] {\n        return this._trajectory;\n    }\n\n    public get currentIndex(): number {\n        return this._currentIndex;\n    }\n\n    public get currentNode(): Node {\n        return this._currentNode;\n    }\n\n    public get previousNode(): Node {\n        return this._previousNode;\n    }\n\n    public get currentCamera(): Camera {\n        return this._currentCamera;\n    }\n\n    public get currentTransform(): Transform {\n        return this._trajectoryTransforms.length > 0 ?\n            this._trajectoryTransforms[this.currentIndex] : null;\n    }\n\n    public get previousTransform(): Transform {\n        return this._trajectoryTransforms.length > 1 && this.currentIndex > 0 ?\n            this._trajectoryTransforms[this.currentIndex - 1] : null;\n    }\n\n    public get motionless(): boolean {\n        return this._motionless;\n    }\n\n    public get transitionMode(): TransitionMode {\n        return this._transitionMode;\n    }\n\n    public earth(): StateBase { throw new Error(\"Not implemented\"); }\n\n    public traverse(): StateBase { throw new Error(\"Not implemented\"); }\n\n    public wait(): StateBase { throw new Error(\"Not implemented\"); }\n\n    public waitInteractively(): StateBase { throw new Error(\"Not implemented\"); }\n\n    public move(delta: number): void { /*noop*/ }\n\n    public moveTo(position: number): void { /*noop*/ }\n\n    public rotate(delta: IRotation): void { /*noop*/ }\n\n    public rotateUnbounded(delta: IRotation): void { /*noop*/ }\n\n    public rotateWithoutInertia(delta: IRotation): void { /*noop*/ }\n\n    public rotateBasic(basicRotation: number[]): void { /*noop*/ }\n\n    public rotateBasicUnbounded(basicRotation: number[]): void { /*noop*/ }\n\n    public rotateBasicWithoutInertia(basicRotation: number[]): void { /*noop*/ }\n\n    public rotateToBasic(basic: number[]): void { /*noop*/ }\n\n    public setSpeed(speed: number): void { /*noop*/ }\n\n    public zoomIn(delta: number, reference: number[]): void { /*noop*/ }\n\n    public update(fps: number): void { /*noop*/ }\n\n    public setCenter(center: number[]): void { /*noop*/ }\n\n    public setZoom(zoom: number): void { /*noop*/ }\n\n    public dolly(delta: number): void { /*noop*/ }\n\n    public orbit(rotation: IRotation): void { /*noop*/ }\n\n    public truck(direction: number[]): void { /*noop*/ }\n\n    public append(nodes: Node[]): void {\n        if (nodes.length < 1) {\n            throw Error(\"Trajectory can not be empty\");\n        }\n\n        if (this._currentIndex < 0) {\n            this.set(nodes);\n        } else {\n            this._trajectory = this._trajectory.concat(nodes);\n            this._appendToTrajectories(nodes);\n        }\n    }\n\n    public prepend(nodes: Node[]): void {\n        if (nodes.length < 1) {\n            throw Error(\"Trajectory can not be empty\");\n        }\n\n        this._trajectory = nodes.slice().concat(this._trajectory);\n        this._currentIndex += nodes.length;\n\n        this._setCurrentNode();\n\n        let referenceReset: boolean = this._setReference(this._currentNode);\n        if (referenceReset) {\n            this._setTrajectories();\n        } else {\n            this._prependToTrajectories(nodes);\n        }\n\n        this._setCurrentCamera();\n    }\n\n    public remove(n: number): void {\n        if (n < 0) {\n            throw Error(\"n must be a positive integer\");\n        }\n\n        if (this._currentIndex - 1 < n) {\n            throw Error(\"Current and previous nodes can not be removed\");\n        }\n\n        for (let i: number = 0; i < n; i++) {\n            this._trajectory.shift();\n            this._trajectoryTransforms.shift();\n            this._trajectoryCameras.shift();\n            this._currentIndex--;\n        }\n\n        this._setCurrentNode();\n    }\n\n    public clearPrior(): void {\n        if (this._currentIndex > 0) {\n            this.remove(this._currentIndex - 1);\n        }\n    }\n\n    public clear(): void {\n        this.cut();\n\n        if (this._currentIndex > 0) {\n            this.remove(this._currentIndex - 1);\n        }\n    }\n\n    public cut(): void {\n        while (this._trajectory.length - 1 > this._currentIndex) {\n            this._trajectory.pop();\n            this._trajectoryTransforms.pop();\n            this._trajectoryCameras.pop();\n        }\n    }\n\n    public set(nodes: Node[]): void {\n        this._setTrajectory(nodes);\n        this._setCurrentNode();\n        this._setReference(this._currentNode);\n        this._setTrajectories();\n        this._setCurrentCamera();\n    }\n\n    public getCenter(): number[] {\n        return this._currentNode != null ?\n            this.currentTransform.projectBasic(this._camera.lookat.toArray()) :\n            [0.5, 0.5];\n    }\n\n    public setTransitionMode(mode: TransitionMode): void {\n        this._transitionMode = mode;\n    }\n\n    protected _getAlpha(): number { return 1; }\n\n    protected _setCurrent(): void {\n        this._setCurrentNode();\n\n        let referenceReset: boolean = this._setReference(this._currentNode);\n        if (referenceReset) {\n            this._setTrajectories();\n        }\n\n        this._setCurrentCamera();\n    }\n\n    protected _setCurrentCamera(): void {\n        this._currentCamera = this._trajectoryCameras[this._currentIndex].clone();\n        this._previousCamera = this._currentIndex > 0 ?\n            this._trajectoryCameras[this._currentIndex - 1].clone() :\n            this._currentCamera.clone();\n    }\n\n    protected _motionlessTransition(): boolean {\n        let nodesSet: boolean = this._currentNode != null && this._previousNode != null;\n\n        return nodesSet && (\n            this._transitionMode === TransitionMode.Instantaneous || !(\n                this._currentNode.merged &&\n                this._previousNode.merged &&\n                this._withinOriginalDistance() &&\n                this._sameConnectedComponent()\n            ));\n    }\n\n    private _setReference(node: Node): boolean {\n        // do not reset reference if node is within threshold distance\n        if (Math.abs(node.latLon.lat - this.reference.lat) < this._referenceThreshold &&\n            Math.abs(node.latLon.lon - this.reference.lon) < this._referenceThreshold) {\n            return false;\n        }\n\n        // do not reset reference if previous node exist and transition is with motion\n        if (this._previousNode != null && !this._motionlessTransition()) {\n            return false;\n        }\n\n        this._reference.lat = node.latLon.lat;\n        this._reference.lon = node.latLon.lon;\n        this._reference.alt = node.alt;\n\n        return true;\n    }\n\n    private _setCurrentNode(): void {\n        this._currentNode = this._trajectory.length > 0 ?\n            this._trajectory[this._currentIndex] :\n            null;\n\n        this._previousNode = this._currentIndex > 0 ?\n            this._trajectory[this._currentIndex - 1] :\n            null;\n    }\n\n    private _setTrajectory(nodes: Node[]): void {\n        if (nodes.length < 1) {\n            throw new ArgumentMapillaryError(\"Trajectory can not be empty\");\n        }\n\n        if (this._currentNode != null) {\n            this._trajectory = [this._currentNode].concat(nodes);\n            this._currentIndex = 1;\n        } else {\n            this._trajectory = nodes.slice();\n            this._currentIndex = 0;\n        }\n    }\n\n    private _setTrajectories(): void {\n        this._trajectoryTransforms.length = 0;\n        this._trajectoryCameras.length = 0;\n\n        this._appendToTrajectories(this._trajectory);\n    }\n\n    private _appendToTrajectories(nodes: Node[]): void {\n        for (let node of nodes) {\n            if (!node.assetsCached) {\n                throw new ArgumentMapillaryError(\"Assets must be cached when node is added to trajectory\");\n            }\n\n            let translation: number[] = this._nodeToTranslation(node, this.reference);\n            let transform: Transform = new Transform(\n                node.orientation,\n                node.width,\n                node.height,\n                node.focal,\n                node.scale,\n                node.gpano,\n                node.rotation,\n                translation,\n                node.image,\n                undefined,\n                node.ck1,\n                node.ck2,\n                node.cameraProjection);\n\n            this._trajectoryTransforms.push(transform);\n            this._trajectoryCameras.push(new Camera(transform));\n        }\n    }\n\n    private _prependToTrajectories(nodes: Node[]): void {\n        for (let node of nodes.reverse()) {\n            if (!node.assetsCached) {\n                throw new ArgumentMapillaryError(\"Assets must be cached when added to trajectory\");\n            }\n\n            let translation: number[] = this._nodeToTranslation(node, this.reference);\n            let transform: Transform = new Transform(\n                node.orientation,\n                node.width,\n                node.height,\n                node.focal,\n                node.scale,\n                node.gpano,\n                node.rotation,\n                translation,\n                node.image,\n                undefined,\n                node.ck1,\n                node.ck2,\n                node.cameraProjection);\n\n            this._trajectoryTransforms.unshift(transform);\n            this._trajectoryCameras.unshift(new Camera(transform));\n        }\n    }\n\n    private _nodeToTranslation(node: Node, reference: ILatLonAlt): number[] {\n        return Geo.computeTranslation(\n            { alt: node.alt, lat: node.latLon.lat, lon: node.latLon.lon },\n            node.rotation,\n            reference);\n    }\n\n    private _sameConnectedComponent(): boolean {\n        let current: Node = this._currentNode;\n        let previous: Node = this._previousNode;\n\n        return !!current && !!previous &&\n            current.mergeCC === previous.mergeCC;\n    }\n\n    private _withinOriginalDistance(): boolean {\n        let current: Node = this._currentNode;\n        let previous: Node = this._previousNode;\n\n        if (!current || !previous) {\n            return true;\n        }\n\n        // 50 km/h moves 28m in 2s\n        let distance: number = this._spatial.distanceFromLatLon(\n            current.originalLatLon.lat,\n            current.originalLatLon.lon,\n            previous.originalLatLon.lat,\n            previous.originalLatLon.lon);\n\n        return distance < 25;\n    }\n}\n",
     "import * as THREE from \"three\";\nimport * as UnitBezier from \"@mapbox/unitbezier\";\n\nimport {\n    EarthState,\n    IState,\n    InteractiveStateBase,\n    InteractiveWaitingState,\n    StateBase,\n    WaitingState,\n} from \"../../State\";\nimport {\n    Node,\n} from \"../../Graph\";\n\nexport class TraversingState extends InteractiveStateBase {\n    private _baseAlpha: number;\n\n    private _speedCoefficient: number;\n\n    private _unitBezier: UnitBezier;\n    private _useBezier: boolean;\n\n    constructor (state: IState) {\n        super(state);\n\n        this._adjustCameras();\n\n        this._motionless = this._motionlessTransition();\n\n        this._baseAlpha = this._alpha;\n        this._speedCoefficient = 1;\n        this._unitBezier = new UnitBezier(0.74, 0.67, 0.38, 0.96);\n        this._useBezier = false;\n    }\n\n    public earth(): StateBase {\n        return new EarthState(this);\n    }\n\n    public wait(): StateBase {\n        return new WaitingState(this);\n    }\n\n    public waitInteractively(): StateBase {\n        return new InteractiveWaitingState(this);\n    }\n\n    public append(nodes: Node[]): void {\n        let emptyTrajectory: boolean = this._trajectory.length === 0;\n\n        if (emptyTrajectory) {\n            this._resetTransition();\n        }\n\n        super.append(nodes);\n\n        if (emptyTrajectory) {\n            this._setDesiredCenter();\n            this._setDesiredZoom();\n        }\n    }\n\n    public prepend(nodes: Node[]): void {\n        let emptyTrajectory: boolean = this._trajectory.length === 0;\n\n        if (emptyTrajectory) {\n            this._resetTransition();\n        }\n\n        super.prepend(nodes);\n\n        if (emptyTrajectory) {\n            this._setDesiredCenter();\n            this._setDesiredZoom();\n        }\n    }\n\n    public set(nodes: Node[]): void {\n        super.set(nodes);\n\n        this._desiredLookat = null;\n\n        this._resetTransition();\n        this._clearRotation();\n\n        this._setDesiredCenter();\n        this._setDesiredZoom();\n\n        if (this._trajectory.length < 3) {\n            this._useBezier = true;\n        }\n    }\n\n    public setSpeed(speed: number): void {\n        this._speedCoefficient = this._spatial.clamp(speed, 0, 10);\n    }\n\n    public update(fps: number): void {\n        if (this._alpha === 1 && this._currentIndex + this._alpha < this._trajectory.length) {\n            this._currentIndex += 1;\n\n            this._useBezier = this._trajectory.length < 3 &&\n                this._currentIndex + 1 === this._trajectory.length;\n\n            this._setCurrent();\n            this._resetTransition();\n            this._clearRotation();\n\n            this._desiredZoom = this._currentNode.fullPano ? this._zoom : 0;\n\n            this._desiredLookat = null;\n        }\n\n        let animationSpeed: number = this._animationSpeed * (60 / fps);\n        this._baseAlpha = Math.min(1, this._baseAlpha + this._speedCoefficient * animationSpeed);\n        if (this._useBezier) {\n            this._alpha = this._unitBezier.solve(this._baseAlpha);\n        } else {\n            this._alpha = this._baseAlpha;\n        }\n\n        this._updateRotation();\n        if (!this._rotationDelta.isZero) {\n            this._applyRotation(this._rotationDelta, this._previousCamera);\n            this._applyRotation(this._rotationDelta, this._currentCamera);\n        }\n\n        this._updateRotationBasic();\n        if (this._basicRotation[0] !== 0 || this._basicRotation[1] !== 0) {\n            this._applyRotationBasic(this._basicRotation);\n        }\n\n        this._updateZoom(animationSpeed);\n        this._updateLookat(animationSpeed);\n\n        this._camera.lerpCameras(this._previousCamera, this._currentCamera, this.alpha);\n    }\n\n    protected _getAlpha(): number {\n        return this._motionless ? Math.ceil(this._alpha) : this._alpha;\n    }\n\n    protected _setCurrentCamera(): void {\n        super._setCurrentCamera();\n\n        this._adjustCameras();\n    }\n\n    private _adjustCameras(): void {\n        if (this._previousNode == null) {\n            return;\n        }\n\n        let lookat: THREE.Vector3 = this._camera.lookat.clone().sub(this._camera.position);\n        this._previousCamera.lookat.copy(lookat.clone().add(this._previousCamera.position));\n\n        if (this._currentNode.fullPano) {\n            this._currentCamera.lookat.copy(lookat.clone().add(this._currentCamera.position));\n        }\n    }\n\n    private _resetTransition(): void {\n        this._alpha = 0;\n        this._baseAlpha = 0;\n\n        this._motionless = this._motionlessTransition();\n    }\n}\n\nexport default TraversingState;\n",
     "import {\n    Node,\n} from \"../../Graph\";\nimport {\n    IState,\n    StateBase,\n    InteractiveWaitingState,\n    TraversingState,\n} from \"../../State\";\n\nexport class WaitingState extends StateBase {\n    constructor(state: IState) {\n        super(state);\n\n        this._zoom = 0;\n\n        this._adjustCameras();\n\n        this._motionless = this._motionlessTransition();\n    }\n\n    public traverse(): StateBase {\n        return new TraversingState(this);\n    }\n\n    public waitInteractively(): StateBase {\n        return new InteractiveWaitingState(this);\n    }\n\n    public prepend(nodes: Node[]): void {\n        super.prepend(nodes);\n\n        this._motionless = this._motionlessTransition();\n    }\n\n    public set(nodes: Node[]): void {\n        super.set(nodes);\n\n        this._motionless = this._motionlessTransition();\n    }\n\n    public move(delta: number): void {\n        this._alpha = Math.max(0, Math.min(1, this._alpha + delta));\n    }\n\n    public moveTo(position: number): void {\n        this._alpha = Math.max(0, Math.min(1, position));\n    }\n\n    public update(fps: number): void {\n        this._camera.lerpCameras(this._previousCamera, this._currentCamera, this.alpha);\n    }\n\n    protected _getAlpha(): number {\n        return this._motionless ? Math.round(this._alpha) : this._alpha;\n    }\n\n    protected _setCurrentCamera(): void {\n        super._setCurrentCamera();\n\n        this._adjustCameras();\n    }\n\n    private _adjustCameras(): void {\n        if (this._previousNode == null) {\n            return;\n        }\n\n        if (this._currentNode.fullPano) {\n            let lookat: THREE.Vector3 = this._camera.lookat.clone().sub(this._camera.position);\n            this._currentCamera.lookat.copy(lookat.clone().add(this._currentCamera.position));\n        }\n\n        if (this._previousNode.fullPano) {\n            let lookat: THREE.Vector3 = this._currentCamera.lookat.clone().sub(this._currentCamera.position);\n            this._previousCamera.lookat.copy(lookat.clone().add(this._previousCamera.position));\n        }\n    }\n}\n\nexport default WaitingState;\n",
     "import {Observable, Subscriber} from \"rxjs\";\n\n/**\n * @class ImageTileLoader\n *\n * @classdesc Represents a loader of image tiles.\n */\nexport class ImageTileLoader {\n    private _origin: string;\n    private _scheme: string;\n    private _host: string;\n\n    /**\n     * Create a new node image tile loader instance.\n     *\n     * @param {string} scheme - The URI scheme.\n     * @param {string} host - The URI host.\n     * @param {string} [origin] - The origin query param.\n     */\n    constructor(scheme: string, host: string, origin?: string) {\n        this._scheme = scheme;\n        this._host = host;\n        this._origin = origin != null ? `?origin=${origin}` : \"\";\n    }\n\n    /**\n     * Retrieve an image tile.\n     *\n     * @description Retrieve an image tile by specifying the area\n     * as well as the scaled size.\n     *\n     * @param {string} identifier - The identifier of the image.\n     * @param {number} x - The top left x pixel coordinate for the tile\n     * in the original image.\n     * @param {number} y - The top left y pixel coordinate for the tile\n     * in the original image.\n     * @param {number} w - The pixel width of the tile in the original image.\n     * @param {number} h - The pixel height of the tile in the original image.\n     * @param {number} scaledW - The scaled width of the returned tile.\n     * @param {number} scaledH - The scaled height of the returned tile.\n     */\n    public getTile(\n        identifier: string,\n        x: number,\n        y: number,\n        w: number,\n        h: number,\n        scaledW: number,\n        scaledH: number): [Observable<HTMLImageElement>, Function] {\n\n        let characteristics: string = `/${identifier}/${x},${y},${w},${h}/${scaledW},${scaledH}/0/default.jpg`;\n        let url: string =\n            this._scheme +\n            \"://\" +\n            this._host +\n            characteristics +\n            this._origin;\n\n        let xmlHTTP: XMLHttpRequest = null;\n\n        return [Observable.create(\n            (subscriber: Subscriber<HTMLImageElement>): void => {\n                xmlHTTP = new XMLHttpRequest();\n                xmlHTTP.open(\"GET\", url, true);\n                xmlHTTP.responseType = \"arraybuffer\";\n                xmlHTTP.timeout = 15000;\n\n                xmlHTTP.onload = (event: Event) => {\n                    if (xmlHTTP.status !== 200) {\n                        subscriber.error(\n                            new Error(\n                                `Failed to fetch tile (${identifier}: ${x},${y},${w},${h}). ` +\n                                `Status: ${xmlHTTP.status}, ${xmlHTTP.statusText}`));\n\n                        return;\n                    }\n\n                    let image: HTMLImageElement = new Image();\n                    image.crossOrigin = \"Anonymous\";\n\n                    image.onload = (e: Event) => {\n                        subscriber.next(image);\n                        subscriber.complete();\n                    };\n\n                    image.onerror = (error: ErrorEvent) => {\n                        subscriber.error(new Error(`Failed to load tile image (${identifier}: ${x},${y},${w},${h})`));\n                    };\n\n                    let blob: Blob = new Blob([xmlHTTP.response]);\n                    image.src = window.URL.createObjectURL(blob);\n                };\n\n                xmlHTTP.onerror = (error: Event) => {\n                    subscriber.error(new Error(`Failed to fetch tile (${identifier}: ${x},${y},${w},${h})`));\n                };\n\n                xmlHTTP.ontimeout = (error: Event) => {\n                    subscriber.error(new Error(`Tile request timed out (${identifier}: ${x},${y},${w},${h})`));\n                };\n\n                xmlHTTP.onabort = (event: Event) => {\n                    subscriber.error(new Error(`Tile request was aborted (${identifier}: ${x},${y},${w},${h})`));\n                };\n\n                xmlHTTP.send(null);\n            }),\n            (): void => {\n                if (xmlHTTP != null) {\n                    xmlHTTP.abort();\n                }\n            },\n        ];\n    }\n}\n\nexport default ImageTileLoader;\n",
     "export class EventEmitter {\n    private _events: {[eventType: string]: any[]};\n\n    constructor () {\n        this._events = {};\n    }\n\n    /**\n     * Subscribe to an event by its name.\n     * @param {string }eventType - The name of the event to subscribe to.\n     * @param {any} fn - The handler called when the event occurs.\n     */\n    public on(eventType: string, fn: any): void {\n        this._events[eventType] = this._events[eventType] || [];\n        this._events[eventType].push(fn);\n        return;\n    }\n\n    /**\n     * Unsubscribe from an event by its name.\n     * @param {string} eventType - The name of the event to subscribe to.\n     * @param {any} fn - The handler to remove.\n     */\n    public off(eventType: string, fn: any): void {\n        if (!eventType) {\n            this._events = {};\n            return;\n        }\n\n        if (!this._listens(eventType)) {\n            let idx: number = this._events[eventType].indexOf(fn);\n            if (idx >= 0) {\n                this._events[eventType].splice(idx, 1);\n            }\n            if (this._events[eventType].length) {\n                delete this._events[eventType];\n            }\n        } else {\n            delete this._events[eventType];\n        }\n\n        return;\n    }\n\n    public fire(eventType: string, data: any): void {\n        if (!this._listens(eventType)) {\n            return;\n        }\n\n        for (let fn of this._events[eventType]) {\n            fn.call(this, data);\n        }\n        return;\n    }\n\n    private _listens(eventType: string): boolean {\n        return !!(this._events && this._events[eventType]);\n    }\n}\n\nexport default EventEmitter;\n",
     "import {\n    ImageSize,\n    IViewerOptions,\n} from \"../Viewer\";\n\nexport class Settings {\n    private static _baseImageSize: number;\n    private static _basePanoramaSize: number;\n    private static _maxImageSize: number;\n\n    public static setOptions(options: IViewerOptions): void {\n        Settings._baseImageSize = options.baseImageSize != null ?\n            options.baseImageSize :\n            ImageSize.Size640;\n\n        Settings._basePanoramaSize = options.basePanoramaSize != null ?\n            options.basePanoramaSize :\n            ImageSize.Size2048;\n\n        Settings._maxImageSize = options.maxImageSize != null ?\n            options.maxImageSize :\n            ImageSize.Size2048;\n    }\n\n    public static get baseImageSize(): number {\n        return Settings._baseImageSize;\n    }\n\n    public static get basePanoramaSize(): number {\n        return Settings._basePanoramaSize;\n    }\n\n    public static get maxImageSize(): number {\n        return Settings._maxImageSize;\n    }\n}\n\nexport default Settings;\n",
     "export function isBrowser(): boolean {\n    return typeof window !== \"undefined\" && typeof document !== \"undefined\";\n}\n\nexport function isArraySupported(): boolean {\n    return !!(\n        Array.prototype &&\n        Array.prototype.filter &&\n        Array.prototype.indexOf &&\n        Array.prototype.map &&\n        Array.prototype.reverse\n    );\n}\n\nexport function isFunctionSupported(): boolean {\n    return !!(Function.prototype && Function.prototype.bind);\n}\n\nexport function isJSONSupported(): boolean {\n    return \"JSON\" in window && \"parse\" in JSON && \"stringify\" in JSON;\n}\n\nexport function isObjectSupported(): boolean {\n    return !!(\n        Object.keys &&\n        Object.assign\n    );\n}\n\nexport function isBlobSupported(): boolean {\n    return \"Blob\" in window && \"URL\" in window;\n}\n\nlet isWebGLSupportedCache: boolean = undefined;\nexport function isWebGLSupportedCached(): boolean {\n    if (isWebGLSupportedCache === undefined) {\n        isWebGLSupportedCache = isWebGLSupported();\n    }\n\n    return isWebGLSupportedCache;\n}\n\nexport function isWebGLSupported(): boolean {\n    const webGLContextAttributes: WebGLContextAttributes = {\n        alpha: false,\n        antialias: false,\n        depth: true,\n        failIfMajorPerformanceCaveat: false,\n        premultipliedAlpha: true,\n        preserveDrawingBuffer: false,\n        stencil: true,\n    };\n\n    const canvas: HTMLCanvasElement = document.createElement(\"canvas\");\n    const context: WebGLRenderingContext =\n        canvas.getContext(\"webgl\", webGLContextAttributes) ||\n        canvas.getContext(\"experimental-webgl\", webGLContextAttributes);\n\n    if (!context) {\n        return false;\n    }\n\n    const requiredExtensions: string[] = [\n        \"OES_standard_derivatives\",\n    ];\n\n    const supportedExtensions: string[] = context.getSupportedExtensions();\n    for (const requiredExtension of requiredExtensions) {\n        if (supportedExtensions.indexOf(requiredExtension) === -1) {\n            return false;\n        }\n    }\n\n    return true;\n}\n",
-    "import {IUrlOptions} from \"../Viewer\";\n\nexport class Urls {\n    private static _apiHost: string = \"a.mapillary.com\";\n    private static _atomicReconstructionHost: string = \"d3necqxnn15whe.cloudfront.net\";\n    private static _exploreHost: string = \"www.mapillary.com\";\n    private static _imageHost: string = \"d1cuyjsrcm0gby.cloudfront.net\";\n    private static _imageTileHost: string = \"d2qb1440i7l50o.cloudfront.net\";\n    private static _meshHost: string = \"d1brzeo354iq2l.cloudfront.net\";\n    private static _origin: string = \"mapillary.webgl\";\n    private static _scheme: string = \"https\";\n\n    public static get explore(): string {\n        return `${Urls._scheme}://${Urls._exploreHost}`;\n    }\n\n    public static get origin(): string {\n        return Urls._origin;\n    }\n\n    public static get tileScheme(): string {\n        return Urls._scheme;\n    }\n\n    public static get tileDomain(): string {\n        return Urls._imageTileHost;\n    }\n\n    public static atomicReconstruction(key: string): string {\n        return `${Urls._scheme}://${Urls._atomicReconstructionHost}/${key}/sfm/v1.0/atomic_reconstruction.json`;\n    }\n\n    public static exporeImage(key: string): string {\n        return `${Urls._scheme}://${Urls._exploreHost}/app/?pKey=${key}&focus=photo`;\n    }\n\n    public static exporeUser(username: string): string {\n        return `${Urls._scheme}://${Urls._exploreHost}/app/user/${username}`;\n    }\n\n    public static falcorModel(clientId: string): string {\n        return `${Urls._scheme}://${Urls._apiHost}/v3/model.json?client_id=${clientId}`;\n    }\n\n    public static protoMesh(key: string): string {\n        return `${Urls._scheme}://${Urls._meshHost}/v2/mesh/${key}`;\n    }\n\n    public static thumbnail(key: string, size: number, origin?: string): string {\n        const query: string = !!origin ? `?origin=${origin}` : \"\";\n\n        return `${Urls._scheme}://${Urls._imageHost}/${key}/thumb-${size}.jpg${query}`;\n    }\n\n    public static setOptions(options: IUrlOptions): void {\n        if (!options) {\n            return;\n        }\n\n        if (!!options.apiHost) {\n            Urls._apiHost = options.apiHost;\n        }\n\n        if (!!options.atomicReconstructionHost) {\n            Urls._atomicReconstructionHost = options.atomicReconstructionHost;\n        }\n\n        if (!!options.exploreHost) {\n            Urls._exploreHost = options.exploreHost;\n        }\n\n        if (!!options.imageHost) {\n            Urls._imageHost = options.imageHost;\n        }\n\n        if (!!options.imageTileHost) {\n            Urls._imageTileHost = options.imageTileHost;\n        }\n\n        if (!!options.meshHost) {\n            Urls._meshHost = options.meshHost;\n        }\n\n        if (!!options.scheme) {\n            Urls._scheme = options.scheme;\n        }\n    }\n}\n\nexport default Urls;\n",
+    "import {IUrlOptions} from \"../Viewer\";\n\nexport class Urls {\n    private static _apiHost: string = \"a.mapillary.com\";\n    private static _clusterReconstructionHost: string = \"cluster-reconstructions.mapillary.com\";\n    private static _exploreHost: string = \"www.mapillary.com\";\n    private static _imageHost: string = \"images.mapillary.com\";\n    private static _imageTileHost: string = \"loris.mapillary.com\";\n    private static _meshHost: string = \"meshes.mapillary.com\";\n    private static _origin: string = \"mapillary.webgl\";\n    private static _scheme: string = \"https\";\n\n    public static get explore(): string {\n        return `${Urls._scheme}://${Urls._exploreHost}`;\n    }\n\n    public static get origin(): string {\n        return Urls._origin;\n    }\n\n    public static get tileScheme(): string {\n        return Urls._scheme;\n    }\n\n    public static get tileDomain(): string {\n        return Urls._imageTileHost;\n    }\n\n    public static clusterReconstruction(key: string): string {\n        return `${Urls._scheme}://${Urls._clusterReconstructionHost}/${key}/v1.0/aligned.jsonz`;\n    }\n\n    public static exporeImage(key: string): string {\n        return `${Urls._scheme}://${Urls._exploreHost}/app/?pKey=${key}&focus=photo`;\n    }\n\n    public static exporeUser(username: string): string {\n        return `${Urls._scheme}://${Urls._exploreHost}/app/user/${username}`;\n    }\n\n    public static falcorModel(clientId: string): string {\n        return `${Urls._scheme}://${Urls._apiHost}/v3/model.json?client_id=${clientId}`;\n    }\n\n    public static protoMesh(key: string): string {\n        return `${Urls._scheme}://${Urls._meshHost}/v2/mesh/${key}`;\n    }\n\n    public static thumbnail(key: string, size: number, origin?: string): string {\n        const query: string = !!origin ? `?origin=${origin}` : \"\";\n\n        return `${Urls._scheme}://${Urls._imageHost}/${key}/thumb-${size}.jpg${query}`;\n    }\n\n    public static setOptions(options: IUrlOptions): void {\n        if (!options) {\n            return;\n        }\n\n        if (!!options.apiHost) {\n            Urls._apiHost = options.apiHost;\n        }\n\n        if (!!options.clusterReconstructionHost) {\n            Urls._clusterReconstructionHost = options.clusterReconstructionHost;\n        }\n\n        if (!!options.exploreHost) {\n            Urls._exploreHost = options.exploreHost;\n        }\n\n        if (!!options.imageHost) {\n            Urls._imageHost = options.imageHost;\n        }\n\n        if (!!options.imageTileHost) {\n            Urls._imageTileHost = options.imageTileHost;\n        }\n\n        if (!!options.meshHost) {\n            Urls._meshHost = options.meshHost;\n        }\n\n        if (!!options.scheme) {\n            Urls._scheme = options.scheme;\n        }\n    }\n}\n\nexport default Urls;\n",
     "/**\n * Enumeration for alignments\n * @enum {number}\n * @readonly\n */\nexport enum Alignment {\n    /**\n     * Align to bottom\n     */\n    Bottom,\n\n    /**\n     * Align to bottom left\n     */\n    BottomLeft,\n\n    /**\n     * Align to bottom right\n     */\n    BottomRight,\n\n    /**\n     * Align to center\n     */\n    Center,\n\n    /**\n     * Align to left\n     */\n    Left,\n\n    /**\n     * Align to right\n     */\n    Right,\n\n    /**\n     * Align to top\n     */\n    Top,\n\n    /**\n     * Align to top left\n     */\n    TopLeft,\n\n    /**\n     * Align to top right\n     */\n    TopRight,\n}\n\nexport default Alignment;\n",
     "import {\n    empty as observableEmpty,\n    from as observableFrom,\n    Observable,\n    Subscription,\n} from \"rxjs\";\n\nimport {\n    catchError,\n    timeout,\n    first,\n    distinctUntilChanged,\n    map,\n    bufferCount,\n    withLatestFrom,\n    switchMap,\n    skip,\n    mergeMap,\n} from \"rxjs/operators\";\n\nimport {\n    GraphMode,\n    GraphService,\n    IEdgeStatus,\n    Node,\n} from \"../Graph\";\nimport {\n    IFrame,\n    StateService,\n} from \"../State\";\n\nexport class CacheService {\n    private _graphService: GraphService;\n    private _stateService: StateService;\n\n    private _started: boolean;\n\n    private _uncacheSubscription: Subscription;\n    private _cacheNodeSubscription: Subscription;\n\n    constructor(graphService: GraphService, stateService: StateService) {\n        this._graphService = graphService;\n        this._stateService = stateService;\n\n        this._started = false;\n    }\n\n    public get started(): boolean {\n        return this._started;\n    }\n\n    public start(): void {\n        if (this._started) {\n            return;\n        }\n\n        this._uncacheSubscription = this._stateService.currentState$.pipe(\n            distinctUntilChanged(\n                undefined,\n                (frame: IFrame): string => {\n                    return frame.state.currentNode.key;\n                }),\n            map(\n                (frame: IFrame): [string[], string] => {\n                    const trajectory: Node[] = frame.state.trajectory;\n                    const trajectoryKeys: string[] = trajectory\n                        .map(\n                            (n: Node): string => {\n                                return n.key;\n                            });\n\n                    const sequenceKey: string = trajectory[trajectory.length - 1].sequenceKey;\n\n                    return [trajectoryKeys, sequenceKey];\n                }),\n            bufferCount(1, 5),\n            withLatestFrom(this._graphService.graphMode$),\n            switchMap(\n                ([keepBuffer, graphMode]: [[string[], string][], GraphMode]): Observable<void> => {\n                    let keepKeys: string[] = keepBuffer[0][0];\n                    let keepSequenceKey: string = graphMode === GraphMode.Sequence ?\n                        keepBuffer[0][1] : undefined;\n\n                    return this._graphService.uncache$(keepKeys, keepSequenceKey);\n                }))\n            .subscribe(() => { /*noop*/ });\n\n        this._cacheNodeSubscription = this._graphService.graphMode$.pipe(\n            skip(1),\n            withLatestFrom(this._stateService.currentState$),\n            switchMap(\n                ([mode, frame]: [GraphMode, IFrame]): Observable<IEdgeStatus> => {\n                    return mode === GraphMode.Sequence ?\n                        this._keyToEdges(\n                            frame.state.currentNode.key,\n                            (node: Node): Observable<IEdgeStatus> => {\n                                return node.sequenceEdges$;\n                            }) :\n                        observableFrom(frame.state.trajectory\n                                .map(\n                                    (node: Node): string => {\n                                        return node.key;\n                                    })\n                                .slice(frame.state.currentIndex)).pipe(\n                            mergeMap(\n                                (key: string): Observable<IEdgeStatus> => {\n                                    return this._keyToEdges(\n                                        key,\n                                        (node: Node): Observable<IEdgeStatus> => {\n                                            return node.spatialEdges$;\n                                        });\n                                },\n                                6));\n                }))\n            .subscribe(() => { /*noop*/ });\n\n        this._started = true;\n    }\n\n    public stop(): void {\n        if (!this._started) {\n            return;\n        }\n\n        this._uncacheSubscription.unsubscribe();\n        this._uncacheSubscription = null;\n\n        this._cacheNodeSubscription.unsubscribe();\n        this._cacheNodeSubscription = null;\n\n        this._started = false;\n    }\n\n    private _keyToEdges(key: string, nodeToEdgeMap: (node: Node) => Observable<IEdgeStatus>): Observable<IEdgeStatus> {\n        return this._graphService.cacheNode$(key).pipe(\n            switchMap(nodeToEdgeMap),\n            first(\n                (status: IEdgeStatus): boolean => {\n                    return status.cached;\n                }),\n            timeout(15000),\n            catchError(\n                (error: Error): Observable<IEdgeStatus> => {\n                    console.error(`Failed to cache edges (${key}).`, error);\n\n                    return observableEmpty();\n                }));\n    }\n}\n\nexport default CacheService;\n",
-    "import {first, switchMap, distinctUntilChanged} from \"rxjs/operators\";\nimport {Observable} from \"rxjs\";\n\nimport {Node} from \"../Graph\";\nimport {\n    Component,\n    ComponentService,\n    CoverComponent,\n    CoverState,\n    IComponentConfiguration,\n    ICoverConfiguration,\n} from \"../Component\";\nimport {\n    Container,\n    IComponentOptions,\n    Navigator,\n    Observer,\n} from \"../Viewer\";\n\nexport class ComponentController {\n    private _container: Container;\n    private _coverComponent: CoverComponent;\n    private _observer: Observer;\n    private _navigator: Navigator;\n    private _componentService: ComponentService;\n    private _options: IComponentOptions;\n    private _key: string;\n    private _navigable: boolean;\n\n    constructor(\n        container: Container,\n        navigator: Navigator,\n        observer: Observer,\n        key: string,\n        options: IComponentOptions,\n        componentService?: ComponentService) {\n        this._container = container;\n        this._observer = observer;\n        this._navigator = navigator;\n        this._options = options != null ? options : {};\n        this._key = key;\n        this._navigable = key == null;\n        this._componentService = !!componentService ?\n            componentService :\n            new ComponentService(this._container, this._navigator);\n\n        this._coverComponent = this._componentService.getCover();\n\n        this._initializeComponents();\n\n        if (key) {\n            this._initilizeCoverComponent();\n            this._subscribeCoverComponent();\n        } else {\n            this._navigator.movedToKey$.pipe(\n                first(\n                    (k: string): boolean => {\n                        return k != null;\n                    }))\n                .subscribe(\n                    (k: string): void => {\n                        this._key = k;\n                        this._componentService.deactivateCover();\n                        this._coverComponent.configure({ key: this._key, state: CoverState.Hidden });\n                        this._subscribeCoverComponent();\n                        this._navigator.stateService.start();\n                        this._navigator.cacheService.start();\n                        this._observer.startEmit();\n                    });\n        }\n    }\n\n    public get navigable(): boolean {\n        return this._navigable;\n    }\n\n    public get<TComponent extends Component<IComponentConfiguration>>(name: string): TComponent {\n        return this._componentService.get<TComponent>(name);\n    }\n\n    public activate(name: string): void {\n        this._componentService.activate(name);\n    }\n\n    public activateCover(): void {\n        this._coverComponent.configure({ state: CoverState.Visible });\n    }\n\n    public deactivate(name: string): void {\n        this._componentService.deactivate(name);\n    }\n\n    public deactivateCover(): void {\n        this._coverComponent.configure({ state: CoverState.Loading });\n    }\n\n    private _initializeComponents(): void {\n        let options: IComponentOptions = this._options;\n\n        this._uFalse(options.background, \"background\");\n        this._uFalse(options.debug, \"debug\");\n        this._uFalse(options.image, \"image\");\n        this._uFalse(options.marker, \"marker\");\n        this._uFalse(options.navigation, \"navigation\");\n        this._uFalse(options.popup, \"popup\");\n        this._uFalse(options.route, \"route\");\n        this._uFalse(options.slider, \"slider\");\n        this._uFalse(options.spatialData, \"spatialData\");\n        this._uFalse(options.tag, \"tag\");\n\n        this._uTrue(options.attribution, \"attribution\");\n        this._uTrue(options.bearing, \"bearing\");\n        this._uTrue(options.cache, \"cache\");\n        this._uTrue(options.direction, \"direction\");\n        this._uTrue(options.imagePlane, \"imagePlane\");\n        this._uTrue(options.keyboard, \"keyboard\");\n        this._uTrue(options.loading, \"loading\");\n        this._uTrue(options.mouse, \"mouse\");\n        this._uTrue(options.sequence, \"sequence\");\n        this._uTrue(options.stats, \"stats\");\n        this._uTrue(options.zoom, \"zoom\");\n    }\n\n    private _initilizeCoverComponent(): void {\n        let options: IComponentOptions = this._options;\n\n        this._coverComponent.configure({ key: this._key });\n        if (options.cover === undefined || options.cover) {\n            this.activateCover();\n        } else {\n            this.deactivateCover();\n        }\n    }\n\n    private _setNavigable(navigable: boolean): void {\n        if (this._navigable === navigable) {\n            return;\n        }\n\n        this._navigable = navigable;\n        this._observer.navigable$.next(navigable);\n    }\n\n    private _subscribeCoverComponent(): void {\n        this._coverComponent.configuration$.pipe(\n            distinctUntilChanged(\n                undefined,\n                (c: ICoverConfiguration): CoverState => {\n                    return c.state;\n                }))\n        .subscribe((conf: ICoverConfiguration) => {\n            if (conf.state === CoverState.Loading) {\n                this._navigator.stateService.currentKey$.pipe(\n                    first(),\n                    switchMap(\n                        (key: string): Observable<Node> => {\n                            const keyChanged: boolean = key == null || key !== conf.key;\n\n                            if (keyChanged) {\n                                this._setNavigable(false);\n                            }\n\n                            return keyChanged ?\n                                this._navigator.moveToKey$(conf.key) :\n                                this._navigator.stateService.currentNode$.pipe(\n                                    first());\n                        }))\n                    .subscribe(\n                        (): void => {\n                            this._navigator.stateService.start();\n                            this._navigator.cacheService.start();\n                            this._observer.startEmit();\n                            this._coverComponent.configure({ state: CoverState.Hidden });\n                            this._componentService.deactivateCover();\n                            this._setNavigable(true);\n                        },\n                        (error: Error): void => {\n                            console.error(\"Failed to deactivate cover.\", error);\n\n                            this._coverComponent.configure({ state: CoverState.Visible });\n                        });\n            } else if (conf.state === CoverState.Visible) {\n                this._observer.stopEmit();\n                this._navigator.stateService.stop();\n                this._navigator.cacheService.stop();\n                this._navigator.playService.stop();\n                this._componentService.activateCover();\n                this._setNavigable(conf.key == null);\n            }\n        });\n    }\n\n    private _uFalse<TConfiguration extends IComponentConfiguration>(option: boolean | TConfiguration, name: string): void {\n        if (option === undefined) {\n            this._componentService.deactivate(name);\n            return;\n        }\n        if (typeof option === \"boolean\") {\n            if (option) {\n                this._componentService.activate(name);\n            } else {\n                this._componentService.deactivate(name);\n            }\n            return;\n        }\n        this._componentService.configure(name, <TConfiguration>option);\n        this._componentService.activate(name);\n    }\n\n    private _uTrue<TConfiguration extends IComponentConfiguration>(option: boolean | TConfiguration, name: string): void {\n        if (option === undefined) {\n            this._componentService.activate(name);\n            return;\n        }\n        if (typeof option === \"boolean\") {\n            if (option) {\n                this._componentService.activate(name);\n            } else {\n                this._componentService.deactivate(name);\n            }\n            return;\n        }\n        this._componentService.configure(name, <TConfiguration>option);\n        this._componentService.activate(name);\n    }\n}\n",
+    "import {first, switchMap, distinctUntilChanged} from \"rxjs/operators\";\nimport {Observable} from \"rxjs\";\n\nimport {Node} from \"../Graph\";\nimport {\n    Component,\n    ComponentService,\n    CoverComponent,\n    CoverState,\n    IComponentConfiguration,\n    ICoverConfiguration,\n} from \"../Component\";\nimport {\n    Container,\n    IComponentOptions,\n    Navigator,\n    Observer,\n} from \"../Viewer\";\n\nexport class ComponentController {\n    private _container: Container;\n    private _coverComponent: CoverComponent;\n    private _observer: Observer;\n    private _navigator: Navigator;\n    private _componentService: ComponentService;\n    private _options: IComponentOptions;\n    private _key: string;\n    private _navigable: boolean;\n\n    constructor(\n        container: Container,\n        navigator: Navigator,\n        observer: Observer,\n        key: string,\n        options: IComponentOptions,\n        componentService?: ComponentService) {\n        this._container = container;\n        this._observer = observer;\n        this._navigator = navigator;\n        this._options = options != null ? options : {};\n        this._key = key;\n        this._navigable = key == null;\n        this._componentService = !!componentService ?\n            componentService :\n            new ComponentService(this._container, this._navigator);\n\n        this._coverComponent = this._componentService.getCover();\n\n        this._initializeComponents();\n\n        if (key) {\n            this._initilizeCoverComponent();\n            this._subscribeCoverComponent();\n        } else {\n            this._navigator.movedToKey$.pipe(\n                first(\n                    (k: string): boolean => {\n                        return k != null;\n                    }))\n                .subscribe(\n                    (k: string): void => {\n                        this._key = k;\n                        this._componentService.deactivateCover();\n                        this._coverComponent.configure({ key: this._key, state: CoverState.Hidden });\n                        this._subscribeCoverComponent();\n                        this._navigator.stateService.start();\n                        this._navigator.cacheService.start();\n                        this._navigator.panService.start();\n                        this._observer.startEmit();\n                    });\n        }\n    }\n\n    public get navigable(): boolean {\n        return this._navigable;\n    }\n\n    public get<TComponent extends Component<IComponentConfiguration>>(name: string): TComponent {\n        return this._componentService.get<TComponent>(name);\n    }\n\n    public activate(name: string): void {\n        this._componentService.activate(name);\n    }\n\n    public activateCover(): void {\n        this._coverComponent.configure({ state: CoverState.Visible });\n    }\n\n    public deactivate(name: string): void {\n        this._componentService.deactivate(name);\n    }\n\n    public deactivateCover(): void {\n        this._coverComponent.configure({ state: CoverState.Loading });\n    }\n\n    private _initializeComponents(): void {\n        let options: IComponentOptions = this._options;\n\n        this._uFalse(options.background, \"background\");\n        this._uFalse(options.debug, \"debug\");\n        this._uFalse(options.image, \"image\");\n        this._uFalse(options.marker, \"marker\");\n        this._uFalse(options.navigation, \"navigation\");\n        this._uFalse(options.popup, \"popup\");\n        this._uFalse(options.route, \"route\");\n        this._uFalse(options.slider, \"slider\");\n        this._uFalse(options.spatialData, \"spatialData\");\n        this._uFalse(options.tag, \"tag\");\n\n        this._uTrue(options.attribution, \"attribution\");\n        this._uTrue(options.bearing, \"bearing\");\n        this._uTrue(options.cache, \"cache\");\n        this._uTrue(options.direction, \"direction\");\n        this._uTrue(options.imagePlane, \"imagePlane\");\n        this._uTrue(options.keyboard, \"keyboard\");\n        this._uTrue(options.loading, \"loading\");\n        this._uTrue(options.mouse, \"mouse\");\n        this._uTrue(options.sequence, \"sequence\");\n        this._uTrue(options.stats, \"stats\");\n        this._uTrue(options.zoom, \"zoom\");\n    }\n\n    private _initilizeCoverComponent(): void {\n        let options: IComponentOptions = this._options;\n\n        this._coverComponent.configure({ key: this._key });\n        if (options.cover === undefined || options.cover) {\n            this.activateCover();\n        } else {\n            this.deactivateCover();\n        }\n    }\n\n    private _setNavigable(navigable: boolean): void {\n        if (this._navigable === navigable) {\n            return;\n        }\n\n        this._navigable = navigable;\n        this._observer.navigable$.next(navigable);\n    }\n\n    private _subscribeCoverComponent(): void {\n        this._coverComponent.configuration$.pipe(\n            distinctUntilChanged(\n                undefined,\n                (c: ICoverConfiguration): CoverState => {\n                    return c.state;\n                }))\n        .subscribe((conf: ICoverConfiguration) => {\n            if (conf.state === CoverState.Loading) {\n                this._navigator.stateService.currentKey$.pipe(\n                    first(),\n                    switchMap(\n                        (key: string): Observable<Node> => {\n                            const keyChanged: boolean = key == null || key !== conf.key;\n\n                            if (keyChanged) {\n                                this._setNavigable(false);\n                            }\n\n                            return keyChanged ?\n                                this._navigator.moveToKey$(conf.key) :\n                                this._navigator.stateService.currentNode$.pipe(\n                                    first());\n                        }))\n                    .subscribe(\n                        (): void => {\n                            this._navigator.stateService.start();\n                            this._navigator.cacheService.start();\n                            this._navigator.panService.start();\n                            this._observer.startEmit();\n                            this._coverComponent.configure({ state: CoverState.Hidden });\n                            this._componentService.deactivateCover();\n                            this._setNavigable(true);\n                        },\n                        (error: Error): void => {\n                            console.error(\"Failed to deactivate cover.\", error);\n\n                            this._coverComponent.configure({ state: CoverState.Visible });\n                        });\n            } else if (conf.state === CoverState.Visible) {\n                this._observer.stopEmit();\n                this._navigator.stateService.stop();\n                this._navigator.cacheService.stop();\n                this._navigator.playService.stop();\n                this._navigator.panService.stop();\n                this._componentService.activateCover();\n                this._setNavigable(conf.key == null);\n            }\n        });\n    }\n\n    private _uFalse<TConfiguration extends IComponentConfiguration>(option: boolean | TConfiguration, name: string): void {\n        if (option === undefined) {\n            this._componentService.deactivate(name);\n            return;\n        }\n        if (typeof option === \"boolean\") {\n            if (option) {\n                this._componentService.activate(name);\n            } else {\n                this._componentService.deactivate(name);\n            }\n            return;\n        }\n        this._componentService.configure(name, <TConfiguration>option);\n        this._componentService.activate(name);\n    }\n\n    private _uTrue<TConfiguration extends IComponentConfiguration>(option: boolean | TConfiguration, name: string): void {\n        if (option === undefined) {\n            this._componentService.activate(name);\n            return;\n        }\n        if (typeof option === \"boolean\") {\n            if (option) {\n                this._componentService.activate(name);\n            } else {\n                this._componentService.deactivate(name);\n            }\n            return;\n        }\n        this._componentService.configure(name, <TConfiguration>option);\n        this._componentService.activate(name);\n    }\n}\n",
     "import {\n    GLRenderer,\n    DOMRenderer,\n    RenderService,\n} from \"../Render\";\nimport {StateService} from \"../State\";\nimport {DOM} from \"../Utils\";\nimport {\n    IViewerOptions,\n    KeyboardService,\n    MouseService,\n    TouchService,\n    SpriteService,\n} from \"../Viewer\";\n\nexport class Container {\n    public id: string;\n\n    public renderService: RenderService;\n\n    public glRenderer: GLRenderer;\n    public domRenderer: DOMRenderer;\n\n    public keyboardService: KeyboardService;\n    public mouseService: MouseService;\n    public touchService: TouchService;\n\n    public spriteService: SpriteService;\n\n    private _canvasContainer: HTMLElement;\n    private _container: HTMLElement;\n    private _domContainer: HTMLElement;\n\n    private _dom: DOM;\n\n    constructor (id: string, stateService: StateService, options: IViewerOptions, dom?: DOM) {\n        this.id = id;\n        this._dom = !!dom ? dom : new DOM();\n\n        this._container = this._dom.document.getElementById(id);\n\n        if (!this._container) {\n            throw new Error(`Container '${id}' not found.`);\n        }\n\n        this._container.classList.add(\"mapillary-js\");\n\n        this._canvasContainer = this._dom.createElement(\"div\", \"mapillary-js-interactive\", this._container);\n        this._domContainer = this._dom.createElement(\"div\", \"mapillary-js-dom\", this._container);\n\n        this.renderService = new RenderService(this._container, stateService.currentState$, options.renderMode);\n\n        this.glRenderer = new GLRenderer(this._canvasContainer, this.renderService, this._dom);\n        this.domRenderer = new DOMRenderer(this._domContainer, this.renderService, stateService.currentState$);\n\n        this.keyboardService = new KeyboardService(this._canvasContainer);\n        this.mouseService = new MouseService(this._container, this._canvasContainer, this._domContainer, document);\n        this.touchService = new TouchService(this._canvasContainer, this._domContainer);\n\n        this.spriteService = new SpriteService(options.sprite);\n    }\n\n    public get element(): HTMLElement {\n        return this._container;\n    }\n\n    public get canvasContainer(): HTMLElement {\n        return this._canvasContainer;\n    }\n\n    public get domContainer(): HTMLElement {\n        return this._domContainer;\n    }\n}\n\nexport default Container;\n",
     "/**\n * Enumeration for image sizes\n * @enum {number}\n * @readonly\n * @description Image sizes in pixels for the long side of the image.\n */\nexport enum ImageSize {\n\n    /**\n     * 320 pixels image size\n     */\n    Size320 = 320,\n\n    /**\n     * 640 pixels image size\n     */\n    Size640 = 640,\n\n    /**\n     * 1024 pixels image size\n     */\n    Size1024 = 1024,\n\n    /**\n     * 2048 pixels image size\n     */\n    Size2048 = 2048,\n}\n",
     "import {fromEvent as observableFromEvent, Observable} from \"rxjs\";\n\nexport class KeyboardService {\n    private _keyDown$: Observable<KeyboardEvent>;\n    private _keyUp$: Observable<KeyboardEvent>;\n\n    constructor(canvasContainer: HTMLElement) {\n        this._keyDown$ = observableFromEvent<KeyboardEvent>(canvasContainer, \"keydown\");\n        this._keyUp$ = observableFromEvent<KeyboardEvent>(canvasContainer, \"keyup\");\n    }\n\n    public get keyDown$(): Observable<KeyboardEvent> {\n        return this._keyDown$;\n    }\n\n    public get keyUp$(): Observable<KeyboardEvent> {\n        return this._keyUp$;\n    }\n}\n\nexport default KeyboardService;\n",
     "import {map, distinctUntilChanged, debounceTime, refCount, publishReplay, scan, startWith} from \"rxjs/operators\";\nimport {Observable, Subject} from \"rxjs\";\n\ninterface ILoader {\n    task: string;\n    loading: boolean;\n}\n\nexport class LoadingService {\n    private _loaders$: Observable<{[key: string]: boolean}>;\n    private _loadersSubject$: Subject<any> = new Subject<any>();\n\n    constructor () {\n        this._loaders$ = this._loadersSubject$.pipe(\n            scan(\n                (loaders: {[key: string]: boolean}, loader: ILoader): {[key: string]: boolean} => {\n                    if (loader.task !== undefined) {\n                        loaders[loader.task] = loader.loading;\n                    }\n                    return loaders;\n                },\n                {}),\n            startWith({}),\n            publishReplay(1),\n            refCount());\n    }\n\n    public get loading$(): Observable<boolean> {\n        return this._loaders$.pipe(\n            map(\n                (loaders: {[key: string]: boolean}): boolean => {\n                    for (const key in loaders) {\n                        if (!loaders.hasOwnProperty(key)) {\n                            continue;\n                        }\n\n                        if (loaders[key]) {\n                            return true;\n                        }\n                    }\n\n                    return false;\n                }),\n            debounceTime(100),\n            distinctUntilChanged());\n    }\n\n    public taskLoading$(task: string): Observable<boolean> {\n        return this._loaders$.pipe(\n            map(\n                (loaders: {[key: string]: boolean}): boolean => {\n                    return !!loaders[task];\n                }),\n            debounceTime(100),\n            distinctUntilChanged());\n    }\n\n    public startLoading(task: string): void {\n        this._loadersSubject$.next({loading: true, task: task});\n    }\n\n    public stopLoading(task: string): void {\n        this._loadersSubject$.next({loading: false, task: task});\n    }\n}\n\nexport default LoadingService;\n",
     "import {\n    concat as observableConcat,\n    merge as observableMerge,\n    combineLatest as observableCombineLatest,\n    fromEvent as observableFromEvent,\n    of as observableOf,\n    BehaviorSubject,\n    Observable,\n    Subject,\n} from \"rxjs\";\n\nimport {\n    switchMap,\n    distinctUntilChanged,\n    publishReplay,\n    refCount,\n    scan,\n    map,\n    startWith,\n    filter,\n    share,\n    takeUntil,\n    take,\n    withLatestFrom,\n    first,\n    bufferCount,\n} from \"rxjs/operators\";\n\nimport {\n    IMouseClaim,\n    IMouseDeferPixels,\n} from \"../Viewer\";\n\nexport class MouseService {\n    private _activeSubject$: BehaviorSubject<boolean>;\n    private _active$: Observable<boolean>;\n\n    private _domMouseDown$: Observable<MouseEvent>;\n    private _domMouseMove$: Observable<MouseEvent>;\n\n    private _domMouseDragStart$: Observable<MouseEvent>;\n    private _domMouseDrag$: Observable<MouseEvent>;\n    private _domMouseDragEnd$: Observable<MouseEvent | FocusEvent>;\n\n    private _documentMouseMove$: Observable<MouseEvent>;\n    private _documentMouseUp$: Observable<MouseEvent>;\n\n    private _mouseDown$: Observable<MouseEvent>;\n    private _mouseMove$: Observable<MouseEvent>;\n    private _mouseLeave$: Observable<MouseEvent>;\n    private _mouseUp$: Observable<MouseEvent>;\n    private _mouseOut$: Observable<MouseEvent>;\n    private _mouseOver$: Observable<MouseEvent>;\n\n    private _contextMenu$: Observable<MouseEvent>;\n    private _consistentContextMenu$: Observable<MouseEvent>;\n    private _click$: Observable<MouseEvent>;\n    private _dblClick$: Observable<MouseEvent>;\n\n    private _mouseWheel$: Observable<WheelEvent>;\n\n    private _mouseDragStart$: Observable<MouseEvent>;\n    private _mouseDrag$: Observable<MouseEvent>;\n    private _mouseDragEnd$: Observable<MouseEvent | FocusEvent>;\n\n    private _deferPixelClaims$: Subject<IMouseDeferPixels>;\n    private _deferPixels$: Observable<number>;\n    private _proximateClick$: Observable<MouseEvent>;\n    private _staticClick$: Observable<MouseEvent>;\n\n    private _claimMouse$: Subject<IMouseClaim>;\n    private _claimWheel$: Subject<IMouseClaim>;\n\n    private _mouseOwner$: Observable<string>;\n    private _wheelOwner$: Observable<string>;\n\n    constructor(\n        container: EventTarget,\n        canvasContainer: EventTarget,\n        domContainer: EventTarget,\n        doc: EventTarget) {\n\n        this._activeSubject$ = new BehaviorSubject<boolean>(false);\n\n        this._active$ = this._activeSubject$.pipe(\n            distinctUntilChanged(),\n            publishReplay(1),\n            refCount());\n\n        this._claimMouse$ = new Subject<IMouseClaim>();\n        this._claimWheel$ = new Subject<IMouseClaim>();\n\n        this._deferPixelClaims$ = new Subject<IMouseDeferPixels>();\n        this._deferPixels$ = this._deferPixelClaims$.pipe(\n            scan(\n                (claims: { [key: string]: number }, claim: IMouseDeferPixels): { [key: string]: number } => {\n                    if (claim.deferPixels == null) {\n                        delete claims[claim.name];\n                    } else {\n                        claims[claim.name] = claim.deferPixels;\n                    }\n\n                    return claims;\n                },\n                {}),\n            map(\n                (claims: { [key: string]: number }): number => {\n                    let deferPixelMax: number = -1;\n                    for (const key in claims) {\n                        if (!claims.hasOwnProperty(key)) {\n                            continue;\n                        }\n\n                        const deferPixels: number = claims[key];\n                        if (deferPixels > deferPixelMax) {\n                            deferPixelMax = deferPixels;\n                        }\n                    }\n\n                    return deferPixelMax;\n                }),\n            startWith(-1),\n            publishReplay(1),\n            refCount());\n\n        this._deferPixels$.subscribe((): void => { /* noop */ });\n\n        this._documentMouseMove$ = observableFromEvent<MouseEvent>(doc, \"mousemove\");\n        this._documentMouseUp$ = observableFromEvent<MouseEvent>(doc, \"mouseup\");\n\n        this._mouseDown$ = observableFromEvent<MouseEvent>(canvasContainer, \"mousedown\");\n        this._mouseLeave$ = observableFromEvent<MouseEvent>(canvasContainer, \"mouseleave\");\n        this._mouseMove$ = observableFromEvent<MouseEvent>(canvasContainer, \"mousemove\");\n        this._mouseUp$ = observableFromEvent<MouseEvent>(canvasContainer, \"mouseup\");\n        this._mouseOut$ = observableFromEvent<MouseEvent>(canvasContainer, \"mouseout\");\n        this._mouseOver$ = observableFromEvent<MouseEvent>(canvasContainer, \"mouseover\");\n\n        this._domMouseDown$ = observableFromEvent<MouseEvent>(domContainer, \"mousedown\");\n        this._domMouseMove$ = observableFromEvent<MouseEvent>(domContainer, \"mousemove\");\n\n        this._click$ = observableFromEvent<MouseEvent>(canvasContainer, \"click\");\n        this._contextMenu$ = observableFromEvent<MouseEvent>(canvasContainer, \"contextmenu\");\n\n        this._dblClick$ = observableMerge(\n                observableFromEvent<MouseEvent>(container, \"click\"),\n                observableFromEvent<MouseEvent>(canvasContainer, \"dblclick\")).pipe(\n            bufferCount(3, 1),\n            filter(\n                (events: MouseEvent[]): boolean => {\n                    const event1: MouseEvent = events[0];\n                    const event2: MouseEvent = events[1];\n                    const event3: MouseEvent = events[2];\n\n                    return event1.type === \"click\" &&\n                        event2.type === \"click\" &&\n                        event3.type === \"dblclick\" &&\n                        (<HTMLElement>event1.target).parentNode === canvasContainer &&\n                        (<HTMLElement>event2.target).parentNode === canvasContainer;\n                }),\n            map(\n                (events: MouseEvent[]): MouseEvent => {\n                    return events[2];\n                }),\n            share());\n\n        observableMerge(\n                this._domMouseDown$,\n                this._domMouseMove$,\n                this._dblClick$,\n                this._contextMenu$)\n            .subscribe(\n                (event: MouseEvent): void => {\n                    event.preventDefault();\n                });\n\n        this._mouseWheel$ = observableMerge(\n                observableFromEvent<WheelEvent>(canvasContainer, \"wheel\"),\n                observableFromEvent<WheelEvent>(domContainer, \"wheel\")).pipe(\n            share());\n\n        this._consistentContextMenu$ = observableMerge(\n                this._mouseDown$,\n                this._mouseMove$,\n                this._mouseOut$,\n                this._mouseUp$,\n                this._contextMenu$).pipe(\n            bufferCount(3, 1),\n            filter(\n                (events: MouseEvent[]): boolean => {\n                    // fire context menu on mouse up both on mac and windows\n                    return events[0].type === \"mousedown\" &&\n                        events[1].type === \"contextmenu\" &&\n                        events[2].type === \"mouseup\";\n                }),\n            map(\n                (events: MouseEvent[]): MouseEvent => {\n                    return events[1];\n                }),\n            share());\n\n        const dragStop$: Observable<MouseEvent | FocusEvent> = observableMerge(\n                observableFromEvent<FocusEvent>(window, \"blur\"),\n                this._documentMouseUp$.pipe(\n                    filter(\n                        (e: MouseEvent): boolean => {\n                            return e.button === 0;\n                        }))).pipe(\n            share());\n\n        const mouseDragInitiate$: Observable<[MouseEvent, MouseEvent]> =\n            this._createMouseDragInitiate$(this._mouseDown$, dragStop$, true).pipe(share());\n\n        this._mouseDragStart$ = this._createMouseDragStart$(mouseDragInitiate$).pipe(share());\n        this._mouseDrag$ = this._createMouseDrag$(mouseDragInitiate$, dragStop$).pipe(share());\n        this._mouseDragEnd$ = this._createMouseDragEnd$(this._mouseDragStart$, dragStop$).pipe(share());\n\n        const domMouseDragInitiate$: Observable<[MouseEvent, MouseEvent]> =\n            this._createMouseDragInitiate$(this._domMouseDown$, dragStop$, false).pipe(share());\n\n        this._domMouseDragStart$ = this._createMouseDragStart$(domMouseDragInitiate$).pipe(share());\n        this._domMouseDrag$ = this._createMouseDrag$(domMouseDragInitiate$, dragStop$).pipe(share());\n        this._domMouseDragEnd$ = this._createMouseDragEnd$(this._domMouseDragStart$, dragStop$).pipe(share());\n\n        this._proximateClick$ = this._mouseDown$.pipe(\n            switchMap(\n                (mouseDown: MouseEvent): Observable<MouseEvent> => {\n                    return this._click$.pipe(\n                        takeUntil(this._createDeferredMouseMove$(mouseDown, this._documentMouseMove$)),\n                        take(1));\n                }),\n            share());\n\n        this._staticClick$ = this._mouseDown$.pipe(\n            switchMap(\n                (e: MouseEvent): Observable<MouseEvent> => {\n                    return this._click$.pipe(\n                        takeUntil(this._documentMouseMove$),\n                        take(1));\n                }),\n            share());\n\n        this._mouseDragStart$.subscribe();\n        this._mouseDrag$.subscribe();\n        this._mouseDragEnd$.subscribe();\n\n        this._domMouseDragStart$.subscribe();\n        this._domMouseDrag$.subscribe();\n        this._domMouseDragEnd$.subscribe();\n\n        this._staticClick$.subscribe();\n\n        this._mouseOwner$ = this._createOwner$(this._claimMouse$).pipe(\n            publishReplay(1),\n            refCount());\n\n        this._wheelOwner$ = this._createOwner$(this._claimWheel$).pipe(\n            publishReplay(1),\n            refCount());\n\n        this._mouseOwner$.subscribe(() => { /* noop */ });\n        this._wheelOwner$.subscribe(() => { /* noop */ });\n    }\n\n    public get active$(): Observable<boolean> {\n        return this._active$;\n    }\n\n    public get activate$(): Subject<boolean> {\n        return this._activeSubject$;\n    }\n\n    public get documentMouseMove$(): Observable<MouseEvent> {\n        return this._documentMouseMove$;\n    }\n\n    public get documentMouseUp$(): Observable<MouseEvent> {\n        return this._documentMouseUp$;\n    }\n\n    public get domMouseDragStart$(): Observable<MouseEvent> {\n        return this._domMouseDragStart$;\n    }\n\n    public get domMouseDrag$(): Observable<MouseEvent> {\n        return this._domMouseDrag$;\n    }\n\n    public get domMouseDragEnd$(): Observable<MouseEvent | FocusEvent> {\n        return this._domMouseDragEnd$;\n    }\n\n    public get domMouseDown$(): Observable<MouseEvent> {\n        return this._domMouseDown$;\n    }\n\n    public get domMouseMove$(): Observable<MouseEvent> {\n        return this._domMouseMove$;\n    }\n\n    public get mouseOwner$(): Observable<string> {\n        return this._mouseOwner$;\n    }\n\n    public get mouseDown$(): Observable<MouseEvent> {\n        return this._mouseDown$;\n    }\n\n    public get mouseMove$(): Observable<MouseEvent> {\n        return this._mouseMove$;\n    }\n\n    public get mouseLeave$(): Observable<MouseEvent> {\n        return this._mouseLeave$;\n    }\n\n    public get mouseOut$(): Observable<MouseEvent> {\n        return this._mouseOut$;\n    }\n\n    public get mouseOver$(): Observable<MouseEvent> {\n        return this._mouseOver$;\n    }\n\n    public get mouseUp$(): Observable<MouseEvent> {\n        return this._mouseUp$;\n    }\n\n    public get click$(): Observable<MouseEvent> {\n        return this._click$;\n    }\n\n    public get dblClick$(): Observable<MouseEvent> {\n        return this._dblClick$;\n    }\n\n    public get contextMenu$(): Observable<MouseEvent> {\n        return this._consistentContextMenu$;\n    }\n\n    public get mouseWheel$(): Observable<WheelEvent> {\n        return this._mouseWheel$;\n    }\n\n    public get mouseDragStart$(): Observable<MouseEvent> {\n        return this._mouseDragStart$;\n    }\n\n    public get mouseDrag$(): Observable<MouseEvent> {\n        return this._mouseDrag$;\n    }\n\n    public get mouseDragEnd$(): Observable<MouseEvent | FocusEvent> {\n        return this._mouseDragEnd$;\n    }\n\n    public get proximateClick$(): Observable<MouseEvent> {\n        return this._proximateClick$;\n    }\n\n    public get staticClick$(): Observable<MouseEvent> {\n        return this._staticClick$;\n    }\n\n    public claimMouse(name: string, zindex: number): void {\n        this._claimMouse$.next({ name: name, zindex: zindex });\n    }\n\n    public unclaimMouse(name: string): void {\n        this._claimMouse$.next({ name: name, zindex: null });\n    }\n\n    public deferPixels(name: string, deferPixels: number): void {\n        this._deferPixelClaims$.next({ name: name, deferPixels: deferPixels });\n    }\n\n    public undeferPixels(name: string): void {\n        this._deferPixelClaims$.next({ name: name, deferPixels: null });\n    }\n\n    public claimWheel(name: string, zindex: number): void {\n        this._claimWheel$.next({name: name, zindex: zindex});\n    }\n\n    public unclaimWheel(name: string): void {\n        this._claimWheel$.next({name: name, zindex: null});\n    }\n\n    public filtered$<T>(name: string, observable$: Observable<T>): Observable<T> {\n        return this._filtered(name, observable$, this._mouseOwner$);\n    }\n\n    public filteredWheel$<T>(name: string, observable$: Observable<T>): Observable<T> {\n        return this._filtered(name, observable$, this._wheelOwner$);\n    }\n\n    private _createDeferredMouseMove$(\n        origin: MouseEvent,\n        mouseMove$: Observable<MouseEvent>): Observable<MouseEvent> {\n        return mouseMove$.pipe(\n            map(\n                (mouseMove: MouseEvent): [MouseEvent, number] => {\n                    const deltaX: number = mouseMove.clientX - origin.clientX;\n                    const deltaY: number = mouseMove.clientY - origin.clientY;\n\n                    return [mouseMove, Math.sqrt(deltaX * deltaX + deltaY * deltaY)];\n                }),\n            withLatestFrom(this._deferPixels$),\n            filter(\n                ([[mouseMove, delta], deferPixels]: [[MouseEvent, number], number]): boolean => {\n                    return delta > deferPixels;\n                }),\n            map(\n                ([[mouseMove, delta], deferPixels]: [[MouseEvent, number], number]): MouseEvent => {\n                    return mouseMove;\n                }));\n    }\n\n    private _createMouseDrag$(\n        mouseDragStartInitiate$: Observable<[MouseEvent, MouseEvent]>,\n        stop$: Observable<Event>): Observable<MouseEvent> {\n\n        return mouseDragStartInitiate$.pipe(\n            map(\n                ([mouseDown, mouseMove]: [MouseEvent, MouseEvent]): MouseEvent => {\n                    return mouseMove;\n                }),\n            switchMap(\n                (mouseMove: MouseEvent): Observable<MouseEvent> => {\n                    return observableConcat(\n                            observableOf(mouseMove),\n                            this._documentMouseMove$).pipe(\n                        takeUntil(stop$));\n                }));\n    }\n\n    private _createMouseDragEnd$<T>(mouseDragStart$: Observable<MouseEvent>, stop$: Observable<T>): Observable<T> {\n        return mouseDragStart$.pipe(\n            switchMap(\n                (event: MouseEvent): Observable<T> => {\n                    return stop$.pipe(first());\n                }));\n    }\n\n    private _createMouseDragStart$(mouseDragStartInitiate$: Observable<[MouseEvent, MouseEvent]>): Observable<MouseEvent> {\n        return mouseDragStartInitiate$.pipe(\n            map(\n                ([mouseDown, mouseMove]: [MouseEvent, MouseEvent]): MouseEvent => {\n                    return mouseDown;\n                }));\n    }\n\n    private _createMouseDragInitiate$(\n        mouseDown$: Observable<MouseEvent>,\n        stop$: Observable<Event>,\n        defer: boolean): Observable<[MouseEvent, MouseEvent]> {\n\n        return mouseDown$.pipe(\n            filter(\n                (mouseDown: MouseEvent): boolean => {\n                    return mouseDown.button === 0;\n                }),\n            switchMap(\n                (mouseDown: MouseEvent): Observable<[MouseEvent, MouseEvent]> => {\n                    return observableCombineLatest(\n                            observableOf(mouseDown),\n                            defer ?\n                                this._createDeferredMouseMove$(mouseDown, this._documentMouseMove$) :\n                                this._documentMouseMove$).pipe(\n                        takeUntil(stop$),\n                        take(1));\n                }));\n    }\n\n    private _createOwner$(claim$: Observable<IMouseClaim>): Observable<string> {\n        return claim$.pipe(\n            scan(\n                (claims: { [key: string]: number }, claim: IMouseClaim): { [key: string]: number } => {\n                    if (claim.zindex == null) {\n                        delete claims[claim.name];\n                    } else {\n                        claims[claim.name] = claim.zindex;\n                    }\n\n                    return claims;\n                },\n                {}),\n            map(\n                (claims: { [key: string]: number }): string => {\n                    let owner: string = null;\n                    let zIndexMax: number = -1;\n\n                    for (const name in claims) {\n                        if (!claims.hasOwnProperty(name)) {\n                            continue;\n                        }\n\n                        if (claims[name] > zIndexMax) {\n                            zIndexMax = claims[name];\n                            owner = name;\n                        }\n                    }\n\n                    return owner;\n                }),\n            startWith(null));\n    }\n\n    private _filtered<T>(name: string, observable$: Observable<T>, owner$: Observable<string>): Observable<T> {\n        return observable$.pipe(\n            withLatestFrom(owner$),\n            filter(\n                ([item, owner]: [T, string]): boolean => {\n                    return owner === name;\n                }),\n            map(\n                ([item, owner]: [T, string]): T => {\n                    return item;\n                }));\n    }\n}\n\nexport default MouseService;\n",
-    "import {from as observableFrom, throwError as observableThrowError, BehaviorSubject, Observable, ReplaySubject, Subscription} from \"rxjs\";\n\nimport {last, tap, map, mergeAll, finalize, mergeMap, first} from \"rxjs/operators\";\n\nimport {\n    APIv3,\n    IFullNode,\n} from \"../API\";\nimport {\n    FilterExpression,\n    Graph,\n    GraphService,\n    IEdgeStatus,\n    ImageLoadingService,\n    Node,\n} from \"../Graph\";\nimport {EdgeDirection} from \"../Edge\";\nimport {AbortMapillaryError} from \"../Error\";\nimport {\n    StateService,\n    IFrame,\n} from \"../State\";\nimport {\n    CacheService,\n    IViewerOptions,\n    LoadingService,\n    PlayService,\n} from \"../Viewer\";\n\nexport class Navigator {\n    private _apiV3: APIv3;\n\n    private _cacheService: CacheService;\n    private _graphService: GraphService;\n    private _imageLoadingService: ImageLoadingService;\n    private _loadingService: LoadingService;\n    private _loadingName: string;\n    private _playService: PlayService;\n    private _stateService: StateService;\n\n    private _keyRequested$: BehaviorSubject<string>;\n    private _movedToKey$: BehaviorSubject<string>;\n\n    private _request$: ReplaySubject<Node>;\n    private _requestSubscription: Subscription;\n    private _nodeRequestSubscription: Subscription;\n\n    constructor (\n        clientId: string,\n        options: IViewerOptions,\n        token?: string,\n        apiV3?: APIv3,\n        graphService?: GraphService,\n        imageLoadingService?: ImageLoadingService,\n        loadingService?: LoadingService,\n        stateService?: StateService,\n        cacheService?: CacheService,\n        playService?: PlayService) {\n\n        this._apiV3 = apiV3 != null ? apiV3 : new APIv3(clientId, token);\n\n        this._imageLoadingService = imageLoadingService != null ? imageLoadingService : new ImageLoadingService();\n\n        this._graphService = graphService != null ?\n            graphService :\n            new GraphService(new Graph(this.apiV3), this._imageLoadingService);\n\n        this._loadingService = loadingService != null ? loadingService : new LoadingService();\n        this._loadingName = \"navigator\";\n\n        this._stateService = stateService != null ? stateService : new StateService(options.transitionMode);\n\n        this._cacheService = cacheService != null ?\n            cacheService :\n            new CacheService(this._graphService, this._stateService);\n\n        this._playService = playService != null ?\n            playService :\n            new PlayService(this._graphService, this._stateService);\n\n        this._keyRequested$ = new BehaviorSubject<string>(null);\n        this._movedToKey$ = new BehaviorSubject<string>(null);\n\n        this._request$ = null;\n        this._requestSubscription = null;\n        this._nodeRequestSubscription = null;\n    }\n\n    public get apiV3(): APIv3 {\n        return this._apiV3;\n    }\n\n    public get cacheService(): CacheService {\n        return this._cacheService;\n    }\n\n    public get graphService(): GraphService {\n        return this._graphService;\n    }\n\n    public get imageLoadingService(): ImageLoadingService {\n        return this._imageLoadingService;\n    }\n\n    public get loadingService(): LoadingService {\n        return this._loadingService;\n    }\n\n    public get movedToKey$(): Observable<string> {\n        return this._movedToKey$;\n    }\n\n    public get playService(): PlayService {\n        return this._playService;\n    }\n\n    public get stateService(): StateService {\n        return this._stateService;\n    }\n\n    public moveToKey$(key: string): Observable<Node> {\n        this._abortRequest(`to key ${key}`);\n\n        this._loadingService.startLoading(this._loadingName);\n\n        const node$: Observable<Node> = this._moveToKey$(key);\n\n        return this._makeRequest$(node$);\n    }\n\n    public moveDir$(direction: EdgeDirection): Observable<Node> {\n        this._abortRequest(`in dir ${EdgeDirection[direction]}`);\n\n        this._loadingService.startLoading(this._loadingName);\n\n        const node$: Observable<Node> = this.stateService.currentNode$.pipe(\n            first(),\n            mergeMap(\n                (node: Node): Observable<string> => {\n                    return ([EdgeDirection.Next, EdgeDirection.Prev].indexOf(direction) > -1 ?\n                        node.sequenceEdges$ :\n                        node.spatialEdges$).pipe(\n                            first(),\n                            map(\n                                (status: IEdgeStatus): string => {\n                                    for (let edge of status.edges) {\n                                        if (edge.data.direction === direction) {\n                                            return edge.to;\n                                        }\n                                    }\n\n                                    return null;\n                                }));\n                }),\n            mergeMap(\n                (directionKey: string) => {\n                    if (directionKey == null) {\n                        this._loadingService.stopLoading(this._loadingName);\n\n                        return observableThrowError(new Error(`Direction (${direction}) does not exist for current node.`));\n                    }\n\n                    return this._moveToKey$(directionKey);\n                }));\n\n        return this._makeRequest$(node$);\n    }\n\n    public moveCloseTo$(lat: number, lon: number): Observable<Node> {\n        this._abortRequest(`to lat ${lat}, lon ${lon}`);\n\n        this._loadingService.startLoading(this._loadingName);\n\n        const node$: Observable<Node> = this.apiV3.imageCloseTo$(lat, lon).pipe(\n            mergeMap(\n                (fullNode: IFullNode): Observable<Node> => {\n                    if (fullNode == null) {\n                        this._loadingService.stopLoading(this._loadingName);\n\n                        return observableThrowError(new Error(`No image found close to lat ${lat}, lon ${lon}.`));\n                    }\n\n                    return this._moveToKey$(fullNode.key);\n                }));\n\n        return this._makeRequest$(node$);\n    }\n\n    public setFilter$(filter: FilterExpression): Observable<void> {\n        this._stateService.clearNodes();\n\n        return this._movedToKey$.pipe(\n            first(),\n            mergeMap(\n                (key: string): Observable<Node> => {\n                    if (key != null) {\n                        return this._trajectoryKeys$().pipe(\n                            mergeMap(\n                                (keys: string[]): Observable<Node> => {\n                                    return this._graphService.setFilter$(filter).pipe(\n                                        mergeMap(\n                                            (): Observable<Node> => {\n                                                return this._cacheKeys$(keys);\n                                            }));\n                                }),\n                            last());\n                    }\n\n                    return this._keyRequested$.pipe(\n                        first(),\n                        mergeMap(\n                            (requestedKey: string): Observable<Node> => {\n                                if (requestedKey != null) {\n                                    return this._graphService.setFilter$(filter).pipe(\n                                        mergeMap(\n                                            (): Observable<Node> => {\n                                                return this._graphService.cacheNode$(requestedKey);\n                                            }));\n                                }\n\n                                return this._graphService.setFilter$(filter).pipe(\n                                    map(\n                                        (): Node => {\n                                            return undefined;\n                                        }));\n                            }));\n                }),\n            map(\n                (node: Node): void => {\n                    return undefined;\n                }));\n    }\n\n    public setToken$(token?: string): Observable<void> {\n        this._abortRequest(\"to set token\");\n\n        this._stateService.clearNodes();\n\n        return this._movedToKey$.pipe(\n            first(),\n            tap(\n                (key: string): void => {\n                    this._apiV3.setToken(token);\n                }),\n            mergeMap(\n                (key: string): Observable<void> => {\n                    return key == null ?\n                        this._graphService.reset$([]) :\n                        this._trajectoryKeys$().pipe(\n                            mergeMap(\n                                (keys: string[]): Observable<Node> => {\n                                    return this._graphService.reset$(keys).pipe(\n                                        mergeMap(\n                                            (): Observable<Node> => {\n                                                return this._cacheKeys$(keys);\n                                            }));\n                                }),\n                            last(),\n                            map(\n                                (node: Node): void => {\n                                    return undefined;\n                                }));\n                    }));\n    }\n\n    private _cacheKeys$(keys: string[]): Observable<Node> {\n        let cacheNodes$: Observable<Node>[] = keys\n            .map(\n                (key: string): Observable<Node> => {\n                        return this._graphService.cacheNode$(key);\n                });\n\n        return observableFrom<Observable<Node>>(cacheNodes$).pipe(\n            mergeAll());\n    }\n\n    private _abortRequest(reason: string): void {\n        if (this._requestSubscription != null) {\n            this._requestSubscription.unsubscribe();\n            this._requestSubscription = null;\n        }\n\n        if (this._nodeRequestSubscription != null) {\n            this._nodeRequestSubscription.unsubscribe();\n            this._nodeRequestSubscription = null;\n        }\n\n        if (this._request$ != null) {\n            if (!(this._request$.isStopped || this._request$.hasError)) {\n                this._request$.error(new AbortMapillaryError(`Request aborted by a subsequent request ${reason}.`));\n            }\n\n            this._request$ = null;\n        }\n    }\n\n    private _makeRequest$(node$: Observable<Node>): Observable<Node> {\n        const request$: ReplaySubject<Node> = new ReplaySubject<Node>(1);\n        this._requestSubscription = request$\n            .subscribe(undefined, (): void => { /*noop*/ });\n\n        this._request$ = request$;\n\n        this._nodeRequestSubscription = node$\n            .subscribe(\n                (node: Node): void => {\n                    this._request$ = null;\n\n                    request$.next(node);\n                    request$.complete();\n                },\n                (error: Error): void => {\n                    this._request$ = null;\n\n                    request$.error(error);\n                });\n\n        return request$;\n    }\n\n    private _moveToKey$(key: string): Observable<Node> {\n        this._keyRequested$.next(key);\n\n        return this._graphService.cacheNode$(key).pipe(\n            tap(\n                (node: Node) => {\n                    this._stateService.setNodes([node]);\n                    this._movedToKey$.next(node.key);\n                }),\n            finalize(\n                (): void => {\n                    this._loadingService.stopLoading(this._loadingName);\n                }));\n    }\n\n    private _trajectoryKeys$(): Observable<string[]> {\n        return this._stateService.currentState$.pipe(\n            first(),\n            map(\n                (frame: IFrame): string[] => {\n                    return frame.state.trajectory\n                            .map(\n                                (node: Node): string => {\n                                    return node.key;\n                                });\n                }));\n    }\n}\n\nexport default Navigator;\n",
-    "import {\n    merge as observableMerge,\n    empty as observableEmpty,\n    combineLatest as observableCombineLatest,\n    Observable,\n    Subject,\n    Subscription,\n} from \"rxjs\";\n\nimport {\n    distinctUntilChanged,\n    withLatestFrom,\n    switchMap,\n    auditTime,\n    first,\n    map,\n} from \"rxjs/operators\";\n\nimport {ILatLon} from \"../API\";\nimport {\n    ILatLonAlt,\n    Transform,\n} from \"../Geo\";\nimport {\n    IEdgeStatus,\n    Node,\n} from \"../Graph\";\nimport {RenderCamera} from \"../Render\";\nimport {EventEmitter} from \"../Utils\";\nimport {\n    Container,\n    IUnprojection,\n    IViewerMouseEvent,\n    Navigator,\n    Projection,\n    Viewer,\n} from \"../Viewer\";\n\nexport class Observer {\n    private _started: boolean;\n\n    private _navigable$: Subject<boolean>;\n\n    private _bearingSubscription: Subscription;\n    private _currentNodeSubscription: Subscription;\n    private _moveSubscription: Subscription;\n    private _sequenceEdgesSubscription: Subscription;\n    private _spatialEdgesSubscription: Subscription;\n    private _viewerMouseEventSubscription: Subscription;\n\n    private _container: Container;\n    private _eventEmitter: EventEmitter;\n    private _navigator: Navigator;\n    private _projection: Projection;\n\n    constructor(eventEmitter: EventEmitter, navigator: Navigator, container: Container) {\n        this._container = container;\n        this._eventEmitter = eventEmitter;\n        this._navigator = navigator;\n        this._projection = new Projection();\n\n        this._started = false;\n\n        this._navigable$ = new Subject<boolean>();\n\n        // navigable and loading should always emit, also when cover is activated.\n        this._navigable$\n            .subscribe(\n                (navigable: boolean): void => {\n                    this._eventEmitter.fire(Viewer.navigablechanged, navigable);\n                });\n\n        this._navigator.loadingService.loading$\n            .subscribe(\n                (loading: boolean): void => {\n                    this._eventEmitter.fire(Viewer.loadingchanged, loading);\n                });\n    }\n\n    public get started(): boolean {\n        return this._started;\n    }\n\n    public get navigable$(): Subject<boolean> {\n        return this._navigable$;\n    }\n\n    public projectBasic$(basicPoint: number[]): Observable<number[]> {\n        return observableCombineLatest(\n                this._container.renderService.renderCamera$,\n                this._navigator.stateService.currentTransform$).pipe(\n            first(),\n            map(\n                ([render, transform]: [RenderCamera, Transform]): number[] => {\n                    const canvasPoint: number[] = this._projection.basicToCanvas(\n                        basicPoint,\n                        this._container.element,\n                        render,\n                        transform);\n\n                    return [Math.round(canvasPoint[0]), Math.round(canvasPoint[1])];\n                }));\n    }\n\n    public startEmit(): void {\n        if (this._started) {\n            return;\n        }\n\n        this._started = true;\n\n        this._currentNodeSubscription = this._navigator.stateService.currentNodeExternal$\n            .subscribe((node: Node): void => {\n                this._eventEmitter.fire(Viewer.nodechanged, node);\n            });\n\n        this._sequenceEdgesSubscription = this._navigator.stateService.currentNodeExternal$.pipe(\n            switchMap(\n                (node: Node): Observable<IEdgeStatus> => {\n                    return node.sequenceEdges$;\n                }))\n            .subscribe(\n                (status: IEdgeStatus): void => {\n                    this._eventEmitter.fire(Viewer.sequenceedgeschanged, status);\n                });\n\n        this._spatialEdgesSubscription = this._navigator.stateService.currentNodeExternal$.pipe(\n            switchMap(\n                (node: Node): Observable<IEdgeStatus> => {\n                    return node.spatialEdges$;\n                }))\n            .subscribe(\n                (status: IEdgeStatus): void => {\n                    this._eventEmitter.fire(Viewer.spatialedgeschanged, status);\n                });\n\n        this._moveSubscription = observableCombineLatest(\n                this._navigator.stateService.inMotion$,\n                this._container.mouseService.active$,\n                this._container.touchService.active$).pipe(\n            map(\n                (values: boolean[]): boolean => {\n                    return values[0] || values[1] || values[2];\n                }),\n            distinctUntilChanged())\n            .subscribe(\n                (started: boolean) => {\n                    if (started) {\n                        this._eventEmitter.fire(Viewer.movestart, null);\n                    } else {\n                        this._eventEmitter.fire(Viewer.moveend, null);\n                    }\n                });\n\n        this._bearingSubscription = this._container.renderService.bearing$.pipe(\n            auditTime(100),\n            distinctUntilChanged(\n                (b1: number, b2: number): boolean => {\n                    return Math.abs(b2 - b1) < 1;\n                }))\n            .subscribe(\n                (bearing): void => {\n                    this._eventEmitter.fire(Viewer.bearingchanged, bearing);\n                 });\n\n        const mouseMove$: Observable<MouseEvent> = this._container.mouseService.active$.pipe(\n            switchMap(\n                (active: boolean): Observable<MouseEvent> => {\n                    return active ?\n                        observableEmpty() :\n                        this._container.mouseService.mouseMove$;\n                }));\n\n        this._viewerMouseEventSubscription = observableMerge(\n                this._mapMouseEvent$(Viewer.click, this._container.mouseService.staticClick$),\n                this._mapMouseEvent$(Viewer.contextmenu, this._container.mouseService.contextMenu$),\n                this._mapMouseEvent$(Viewer.dblclick, this._container.mouseService.dblClick$),\n                this._mapMouseEvent$(Viewer.mousedown, this._container.mouseService.mouseDown$),\n                this._mapMouseEvent$(Viewer.mousemove, mouseMove$),\n                this._mapMouseEvent$(Viewer.mouseout, this._container.mouseService.mouseOut$),\n                this._mapMouseEvent$(Viewer.mouseover, this._container.mouseService.mouseOver$),\n                this._mapMouseEvent$(Viewer.mouseup, this._container.mouseService.mouseUp$)).pipe(\n            withLatestFrom(\n                this._container.renderService.renderCamera$,\n                this._navigator.stateService.reference$,\n                this._navigator.stateService.currentTransform$),\n            map(\n                ([[type, event], render, reference, transform]:\n                [[string, MouseEvent], RenderCamera, ILatLonAlt, Transform]): IViewerMouseEvent => {\n                    const unprojection: IUnprojection =\n                        this._projection.eventToUnprojection(\n                            event,\n                            this._container.element,\n                            render,\n                            reference,\n                            transform);\n\n                    return  {\n                        basicPoint: unprojection.basicPoint,\n                        latLon: unprojection.latLon,\n                        originalEvent: event,\n                        pixelPoint: unprojection.pixelPoint,\n                        target: <Viewer>this._eventEmitter,\n                        type: type,\n                    };\n                }))\n            .subscribe(\n                (event: IViewerMouseEvent): void => {\n                    this._eventEmitter.fire(event.type, event);\n                });\n    }\n\n    public stopEmit(): void {\n        if (!this.started) {\n            return;\n        }\n\n        this._started = false;\n\n        this._bearingSubscription.unsubscribe();\n        this._currentNodeSubscription.unsubscribe();\n        this._moveSubscription.unsubscribe();\n        this._sequenceEdgesSubscription.unsubscribe();\n        this._spatialEdgesSubscription.unsubscribe();\n        this._viewerMouseEventSubscription.unsubscribe();\n\n        this._bearingSubscription = null;\n        this._currentNodeSubscription = null;\n        this._moveSubscription = null;\n        this._sequenceEdgesSubscription = null;\n        this._spatialEdgesSubscription = null;\n        this._viewerMouseEventSubscription = null;\n    }\n\n    public unproject$(canvasPoint: number[]): Observable<ILatLon> {\n        return observableCombineLatest(\n                this._container.renderService.renderCamera$,\n                this._navigator.stateService.reference$,\n                this._navigator.stateService.currentTransform$).pipe(\n            first(),\n            map(\n                ([render, reference, transform]: [RenderCamera, ILatLonAlt, Transform]): ILatLon => {\n                    const unprojection: IUnprojection =\n                        this._projection.canvasToUnprojection(\n                            canvasPoint,\n                            this._container.element,\n                            render,\n                            reference,\n                            transform);\n\n                    return unprojection.latLon;\n                }));\n    }\n\n    public unprojectBasic$(canvasPoint: number[]): Observable<number[]> {\n        return observableCombineLatest(\n                this._container.renderService.renderCamera$,\n                this._navigator.stateService.currentTransform$).pipe(\n            first(),\n            map(\n                ([render, transform]: [RenderCamera, Transform]): number[] => {\n                    return this._projection.canvasToBasic(\n                        canvasPoint,\n                        this._container.element,\n                        render,\n                        transform);\n                }));\n    }\n\n    private _mapMouseEvent$(type: string, mouseEvent$: Observable<MouseEvent>): Observable<[string, MouseEvent]> {\n        return mouseEvent$.pipe(map(\n            (event: MouseEvent): [string, MouseEvent] => {\n                return [type, event];\n            }));\n    }\n}\n\nexport default Observer;\n",
+    "import {from as observableFrom, throwError as observableThrowError, BehaviorSubject, Observable, ReplaySubject, Subscription} from \"rxjs\";\n\nimport {last, tap, map, mergeAll, finalize, mergeMap, first} from \"rxjs/operators\";\n\nimport {\n    APIv3,\n    IFullNode,\n} from \"../API\";\nimport {\n    FilterExpression,\n    Graph,\n    GraphService,\n    IEdgeStatus,\n    ImageLoadingService,\n    Node,\n} from \"../Graph\";\nimport {EdgeDirection} from \"../Edge\";\nimport {AbortMapillaryError} from \"../Error\";\nimport {\n    StateService,\n    IFrame,\n} from \"../State\";\nimport {\n    CacheService,\n    IViewerOptions,\n    LoadingService,\n    PlayService,\n} from \"../Viewer\";\nimport { PanService } from \"./PanService\";\n\nexport class Navigator {\n    private _apiV3: APIv3;\n\n    private _cacheService: CacheService;\n    private _graphService: GraphService;\n    private _imageLoadingService: ImageLoadingService;\n    private _loadingService: LoadingService;\n    private _loadingName: string;\n    private _panService: PanService;\n    private _playService: PlayService;\n    private _stateService: StateService;\n\n    private _keyRequested$: BehaviorSubject<string>;\n    private _movedToKey$: BehaviorSubject<string>;\n\n    private _request$: ReplaySubject<Node>;\n    private _requestSubscription: Subscription;\n    private _nodeRequestSubscription: Subscription;\n\n    constructor (\n        clientId: string,\n        options: IViewerOptions,\n        token?: string,\n        apiV3?: APIv3,\n        graphService?: GraphService,\n        imageLoadingService?: ImageLoadingService,\n        loadingService?: LoadingService,\n        stateService?: StateService,\n        cacheService?: CacheService,\n        playService?: PlayService,\n        panService?: PanService) {\n\n        this._apiV3 = apiV3 != null ? apiV3 : new APIv3(clientId, token);\n\n        this._imageLoadingService = imageLoadingService != null ? imageLoadingService : new ImageLoadingService();\n\n        this._graphService = graphService != null ?\n            graphService :\n            new GraphService(new Graph(this.apiV3), this._imageLoadingService);\n\n        this._loadingService = loadingService != null ? loadingService : new LoadingService();\n        this._loadingName = \"navigator\";\n\n        this._stateService = stateService != null ? stateService : new StateService(options.transitionMode);\n\n        this._cacheService = cacheService != null ?\n            cacheService :\n            new CacheService(this._graphService, this._stateService);\n\n        this._playService = playService != null ?\n            playService :\n            new PlayService(this._graphService, this._stateService);\n\n        this._panService = panService != null ?\n            panService :\n            new PanService(this._graphService, this._stateService, options.combinedPanning);\n\n        this._keyRequested$ = new BehaviorSubject<string>(null);\n        this._movedToKey$ = new BehaviorSubject<string>(null);\n\n        this._request$ = null;\n        this._requestSubscription = null;\n        this._nodeRequestSubscription = null;\n    }\n\n    public get apiV3(): APIv3 {\n        return this._apiV3;\n    }\n\n    public get cacheService(): CacheService {\n        return this._cacheService;\n    }\n\n    public get graphService(): GraphService {\n        return this._graphService;\n    }\n\n    public get imageLoadingService(): ImageLoadingService {\n        return this._imageLoadingService;\n    }\n\n    public get loadingService(): LoadingService {\n        return this._loadingService;\n    }\n\n    public get movedToKey$(): Observable<string> {\n        return this._movedToKey$;\n    }\n\n    public get panService(): PanService {\n        return this._panService;\n    }\n\n    public get playService(): PlayService {\n        return this._playService;\n    }\n\n    public get stateService(): StateService {\n        return this._stateService;\n    }\n\n    public moveToKey$(key: string): Observable<Node> {\n        this._abortRequest(`to key ${key}`);\n\n        this._loadingService.startLoading(this._loadingName);\n\n        const node$: Observable<Node> = this._moveToKey$(key);\n\n        return this._makeRequest$(node$);\n    }\n\n    public moveDir$(direction: EdgeDirection): Observable<Node> {\n        this._abortRequest(`in dir ${EdgeDirection[direction]}`);\n\n        this._loadingService.startLoading(this._loadingName);\n\n        const node$: Observable<Node> = this.stateService.currentNode$.pipe(\n            first(),\n            mergeMap(\n                (node: Node): Observable<string> => {\n                    return ([EdgeDirection.Next, EdgeDirection.Prev].indexOf(direction) > -1 ?\n                        node.sequenceEdges$ :\n                        node.spatialEdges$).pipe(\n                            first(),\n                            map(\n                                (status: IEdgeStatus): string => {\n                                    for (let edge of status.edges) {\n                                        if (edge.data.direction === direction) {\n                                            return edge.to;\n                                        }\n                                    }\n\n                                    return null;\n                                }));\n                }),\n            mergeMap(\n                (directionKey: string) => {\n                    if (directionKey == null) {\n                        this._loadingService.stopLoading(this._loadingName);\n\n                        return observableThrowError(new Error(`Direction (${direction}) does not exist for current node.`));\n                    }\n\n                    return this._moveToKey$(directionKey);\n                }));\n\n        return this._makeRequest$(node$);\n    }\n\n    public moveCloseTo$(lat: number, lon: number): Observable<Node> {\n        this._abortRequest(`to lat ${lat}, lon ${lon}`);\n\n        this._loadingService.startLoading(this._loadingName);\n\n        const node$: Observable<Node> = this.apiV3.imageCloseTo$(lat, lon).pipe(\n            mergeMap(\n                (fullNode: IFullNode): Observable<Node> => {\n                    if (fullNode == null) {\n                        this._loadingService.stopLoading(this._loadingName);\n\n                        return observableThrowError(new Error(`No image found close to lat ${lat}, lon ${lon}.`));\n                    }\n\n                    return this._moveToKey$(fullNode.key);\n                }));\n\n        return this._makeRequest$(node$);\n    }\n\n    public setFilter$(filter: FilterExpression): Observable<void> {\n        this._stateService.clearNodes();\n\n        return this._movedToKey$.pipe(\n            first(),\n            mergeMap(\n                (key: string): Observable<Node> => {\n                    if (key != null) {\n                        return this._trajectoryKeys$().pipe(\n                            mergeMap(\n                                (keys: string[]): Observable<Node> => {\n                                    return this._graphService.setFilter$(filter).pipe(\n                                        mergeMap(\n                                            (): Observable<Node> => {\n                                                return this._cacheKeys$(keys);\n                                            }));\n                                }),\n                            last());\n                    }\n\n                    return this._keyRequested$.pipe(\n                        first(),\n                        mergeMap(\n                            (requestedKey: string): Observable<Node> => {\n                                if (requestedKey != null) {\n                                    return this._graphService.setFilter$(filter).pipe(\n                                        mergeMap(\n                                            (): Observable<Node> => {\n                                                return this._graphService.cacheNode$(requestedKey);\n                                            }));\n                                }\n\n                                return this._graphService.setFilter$(filter).pipe(\n                                    map(\n                                        (): Node => {\n                                            return undefined;\n                                        }));\n                            }));\n                }),\n            map(\n                (node: Node): void => {\n                    return undefined;\n                }));\n    }\n\n    public setToken$(token?: string): Observable<void> {\n        this._abortRequest(\"to set token\");\n\n        this._stateService.clearNodes();\n\n        return this._movedToKey$.pipe(\n            first(),\n            tap(\n                (key: string): void => {\n                    this._apiV3.setToken(token);\n                }),\n            mergeMap(\n                (key: string): Observable<void> => {\n                    return key == null ?\n                        this._graphService.reset$([]) :\n                        this._trajectoryKeys$().pipe(\n                            mergeMap(\n                                (keys: string[]): Observable<Node> => {\n                                    return this._graphService.reset$(keys).pipe(\n                                        mergeMap(\n                                            (): Observable<Node> => {\n                                                return this._cacheKeys$(keys);\n                                            }));\n                                }),\n                            last(),\n                            map(\n                                (node: Node): void => {\n                                    return undefined;\n                                }));\n                    }));\n    }\n\n    private _cacheKeys$(keys: string[]): Observable<Node> {\n        let cacheNodes$: Observable<Node>[] = keys\n            .map(\n                (key: string): Observable<Node> => {\n                        return this._graphService.cacheNode$(key);\n                });\n\n        return observableFrom<Observable<Node>>(cacheNodes$).pipe(\n            mergeAll());\n    }\n\n    private _abortRequest(reason: string): void {\n        if (this._requestSubscription != null) {\n            this._requestSubscription.unsubscribe();\n            this._requestSubscription = null;\n        }\n\n        if (this._nodeRequestSubscription != null) {\n            this._nodeRequestSubscription.unsubscribe();\n            this._nodeRequestSubscription = null;\n        }\n\n        if (this._request$ != null) {\n            if (!(this._request$.isStopped || this._request$.hasError)) {\n                this._request$.error(new AbortMapillaryError(`Request aborted by a subsequent request ${reason}.`));\n            }\n\n            this._request$ = null;\n        }\n    }\n\n    private _makeRequest$(node$: Observable<Node>): Observable<Node> {\n        const request$: ReplaySubject<Node> = new ReplaySubject<Node>(1);\n        this._requestSubscription = request$\n            .subscribe(undefined, (): void => { /*noop*/ });\n\n        this._request$ = request$;\n\n        this._nodeRequestSubscription = node$\n            .subscribe(\n                (node: Node): void => {\n                    this._request$ = null;\n\n                    request$.next(node);\n                    request$.complete();\n                },\n                (error: Error): void => {\n                    this._request$ = null;\n\n                    request$.error(error);\n                });\n\n        return request$;\n    }\n\n    private _moveToKey$(key: string): Observable<Node> {\n        this._keyRequested$.next(key);\n\n        return this._graphService.cacheNode$(key).pipe(\n            tap(\n                (node: Node) => {\n                    this._stateService.setNodes([node]);\n                    this._movedToKey$.next(node.key);\n                }),\n            finalize(\n                (): void => {\n                    this._loadingService.stopLoading(this._loadingName);\n                }));\n    }\n\n    private _trajectoryKeys$(): Observable<string[]> {\n        return this._stateService.currentState$.pipe(\n            first(),\n            map(\n                (frame: IFrame): string[] => {\n                    return frame.state.trajectory\n                            .map(\n                                (node: Node): string => {\n                                    return node.key;\n                                });\n                }));\n    }\n}\n\nexport default Navigator;\n",
+    "import {\n    merge as observableMerge,\n    empty as observableEmpty,\n    combineLatest as observableCombineLatest,\n    Observable,\n    Subject,\n    Subscription,\n} from \"rxjs\";\n\nimport {\n    distinctUntilChanged,\n    withLatestFrom,\n    switchMap,\n    auditTime,\n    first,\n    map,\n} from \"rxjs/operators\";\n\nimport {ILatLon} from \"../API\";\nimport {\n    ILatLonAlt,\n    Transform,\n} from \"../Geo\";\nimport {\n    IEdgeStatus,\n    Node,\n} from \"../Graph\";\nimport {RenderCamera} from \"../Render\";\nimport {EventEmitter} from \"../Utils\";\nimport {\n    Container,\n    IUnprojection,\n    IViewerMouseEvent,\n    Navigator,\n    Projection,\n    Viewer,\n} from \"../Viewer\";\n\nexport class Observer {\n    private _started: boolean;\n\n    private _navigable$: Subject<boolean>;\n\n    private _bearingSubscription: Subscription;\n    private _currentNodeSubscription: Subscription;\n    private _fovSubscription: Subscription;\n    private _moveSubscription: Subscription;\n    private _positionSubscription: Subscription;\n    private _povSubscription: Subscription;\n    private _sequenceEdgesSubscription: Subscription;\n    private _spatialEdgesSubscription: Subscription;\n    private _viewerMouseEventSubscription: Subscription;\n\n    private _container: Container;\n    private _eventEmitter: EventEmitter;\n    private _navigator: Navigator;\n    private _projection: Projection;\n\n    constructor(eventEmitter: EventEmitter, navigator: Navigator, container: Container) {\n        this._container = container;\n        this._eventEmitter = eventEmitter;\n        this._navigator = navigator;\n        this._projection = new Projection();\n\n        this._started = false;\n\n        this._navigable$ = new Subject<boolean>();\n\n        // navigable and loading should always emit, also when cover is activated.\n        this._navigable$\n            .subscribe(\n                (navigable: boolean): void => {\n                    this._eventEmitter.fire(Viewer.navigablechanged, navigable);\n                });\n\n        this._navigator.loadingService.loading$\n            .subscribe(\n                (loading: boolean): void => {\n                    this._eventEmitter.fire(Viewer.loadingchanged, loading);\n                });\n    }\n\n    public get started(): boolean {\n        return this._started;\n    }\n\n    public get navigable$(): Subject<boolean> {\n        return this._navigable$;\n    }\n\n    public get projection(): Projection {\n        return this._projection;\n    }\n\n    public project$(latLon: ILatLon): Observable<number[]> {\n        return observableCombineLatest(\n            this._container.renderService.renderCamera$,\n            this._navigator.stateService.currentNode$,\n            this._navigator.stateService.reference$).pipe(\n            first(),\n            map(\n                ([render, node, reference]: [RenderCamera, Node, ILatLonAlt]): number[] => {\n                    if (this._projection.distanceBetweenLatLons(latLon, node.latLon) > 1000) {\n                        return null;\n                    }\n\n                    const canvasPoint: number[] = this._projection.latLonToCanvas(\n                        latLon,\n                        this._container.element,\n                        render,\n                        reference);\n\n                    return !!canvasPoint ?\n                        [Math.round(canvasPoint[0]), Math.round(canvasPoint[1])] :\n                        null;\n                }));\n    }\n\n    public projectBasic$(basicPoint: number[]): Observable<number[]> {\n        return observableCombineLatest(\n                this._container.renderService.renderCamera$,\n                this._navigator.stateService.currentTransform$).pipe(\n            first(),\n            map(\n                ([render, transform]: [RenderCamera, Transform]): number[] => {\n                    const canvasPoint: number[] = this._projection.basicToCanvas(\n                        basicPoint,\n                        this._container.element,\n                        render,\n                        transform);\n\n                    return !!canvasPoint ?\n                        [Math.round(canvasPoint[0]), Math.round(canvasPoint[1])] :\n                        null;\n                }));\n    }\n\n    public startEmit(): void {\n        if (this._started) {\n            return;\n        }\n\n        this._started = true;\n\n        this._currentNodeSubscription = this._navigator.stateService.currentNodeExternal$\n            .subscribe((node: Node): void => {\n                this._eventEmitter.fire(Viewer.nodechanged, node);\n            });\n\n        this._sequenceEdgesSubscription = this._navigator.stateService.currentNodeExternal$.pipe(\n            switchMap(\n                (node: Node): Observable<IEdgeStatus> => {\n                    return node.sequenceEdges$;\n                }))\n            .subscribe(\n                (status: IEdgeStatus): void => {\n                    this._eventEmitter.fire(Viewer.sequenceedgeschanged, status);\n                });\n\n        this._spatialEdgesSubscription = this._navigator.stateService.currentNodeExternal$.pipe(\n            switchMap(\n                (node: Node): Observable<IEdgeStatus> => {\n                    return node.spatialEdges$;\n                }))\n            .subscribe(\n                (status: IEdgeStatus): void => {\n                    this._eventEmitter.fire(Viewer.spatialedgeschanged, status);\n                });\n\n        this._moveSubscription = observableCombineLatest(\n                this._navigator.stateService.inMotion$,\n                this._container.mouseService.active$,\n                this._container.touchService.active$).pipe(\n            map(\n                (values: boolean[]): boolean => {\n                    return values[0] || values[1] || values[2];\n                }),\n            distinctUntilChanged())\n            .subscribe(\n                (started: boolean) => {\n                    if (started) {\n                        this._eventEmitter.fire(Viewer.movestart, null);\n                    } else {\n                        this._eventEmitter.fire(Viewer.moveend, null);\n                    }\n                });\n\n        this._bearingSubscription = this._container.renderService.bearing$.pipe(\n            auditTime(100),\n            distinctUntilChanged(\n                (b1: number, b2: number): boolean => {\n                    return Math.abs(b2 - b1) < 1;\n                }))\n            .subscribe(\n                (bearing): void => {\n                    this._eventEmitter.fire(Viewer.bearingchanged, bearing);\n                 });\n\n        const mouseMove$: Observable<MouseEvent> = this._container.mouseService.active$.pipe(\n            switchMap(\n                (active: boolean): Observable<MouseEvent> => {\n                    return active ?\n                        observableEmpty() :\n                        this._container.mouseService.mouseMove$;\n                }));\n\n        this._viewerMouseEventSubscription = observableMerge(\n                this._mapMouseEvent$(Viewer.click, this._container.mouseService.staticClick$),\n                this._mapMouseEvent$(Viewer.contextmenu, this._container.mouseService.contextMenu$),\n                this._mapMouseEvent$(Viewer.dblclick, this._container.mouseService.dblClick$),\n                this._mapMouseEvent$(Viewer.mousedown, this._container.mouseService.mouseDown$),\n                this._mapMouseEvent$(Viewer.mousemove, mouseMove$),\n                this._mapMouseEvent$(Viewer.mouseout, this._container.mouseService.mouseOut$),\n                this._mapMouseEvent$(Viewer.mouseover, this._container.mouseService.mouseOver$),\n                this._mapMouseEvent$(Viewer.mouseup, this._container.mouseService.mouseUp$)).pipe(\n            withLatestFrom(\n                this._container.renderService.renderCamera$,\n                this._navigator.stateService.reference$,\n                this._navigator.stateService.currentTransform$),\n            map(\n                ([[type, event], render, reference, transform]:\n                [[string, MouseEvent], RenderCamera, ILatLonAlt, Transform]): IViewerMouseEvent => {\n                    const unprojection: IUnprojection =\n                        this._projection.eventToUnprojection(\n                            event,\n                            this._container.element,\n                            render,\n                            reference,\n                            transform);\n\n                    return  {\n                        basicPoint: unprojection.basicPoint,\n                        latLon: unprojection.latLon,\n                        originalEvent: event,\n                        pixelPoint: unprojection.pixelPoint,\n                        target: <Viewer>this._eventEmitter,\n                        type: type,\n                    };\n                }))\n            .subscribe(\n                (event: IViewerMouseEvent): void => {\n                    this._eventEmitter.fire(event.type, event);\n                });\n\n        this._positionSubscription = this._container.renderService.renderCamera$.pipe(\n            distinctUntilChanged(\n                ([x1, y1], [x2, y2]): boolean => {\n                    return this._closeTo(x1, x2, 1e-2) &&\n                        this._closeTo(y1, y2, 1e-2);\n                },\n                (rc: RenderCamera): number[] => {\n                    return rc.camera.position.toArray();\n                }))\n            .subscribe(\n                (): void => {\n                    this._eventEmitter.fire(\n                        Viewer.positionchanged,\n                        {\n                            target: this._eventEmitter,\n                            type: Viewer.positionchanged,\n                        });\n                });\n\n        this._povSubscription = this._container.renderService.renderCamera$.pipe(\n            distinctUntilChanged(\n                ([phi1, theta1], [phi2, theta2]): boolean => {\n                    return this._closeTo(phi1, phi2, 1e-3) &&\n                        this._closeTo(theta1, theta2, 1e-3);\n                },\n                (rc: RenderCamera): [number, number] => {\n                    return [rc.rotation.phi, rc.rotation.theta];\n                }))\n            .subscribe(\n                (): void => {\n                    this._eventEmitter.fire(\n                        Viewer.povchanged,\n                        {\n                            target: this._eventEmitter,\n                            type: Viewer.povchanged,\n                        });\n                });\n\n        this._fovSubscription = this._container.renderService.renderCamera$.pipe(\n            distinctUntilChanged(\n                (fov1, fov2): boolean => {\n                    return this._closeTo(fov1, fov2, 1e-2);\n                },\n                (rc: RenderCamera): number => {\n                    return rc.perspective.fov;\n                }))\n            .subscribe(\n                (): void => {\n                    this._eventEmitter.fire(\n                        Viewer.fovchanged,\n                        {\n                            target: this._eventEmitter,\n                            type: Viewer.fovchanged,\n                        });\n                });\n    }\n\n    public stopEmit(): void {\n        if (!this.started) {\n            return;\n        }\n\n        this._started = false;\n\n        this._bearingSubscription.unsubscribe();\n        this._currentNodeSubscription.unsubscribe();\n        this._fovSubscription.unsubscribe();\n        this._moveSubscription.unsubscribe();\n        this._positionSubscription.unsubscribe();\n        this._povSubscription.unsubscribe();\n        this._sequenceEdgesSubscription.unsubscribe();\n        this._spatialEdgesSubscription.unsubscribe();\n        this._viewerMouseEventSubscription.unsubscribe();\n\n        this._bearingSubscription = null;\n        this._currentNodeSubscription = null;\n        this._fovSubscription = null;\n        this._moveSubscription = null;\n        this._positionSubscription = null;\n        this._povSubscription = null;\n        this._sequenceEdgesSubscription = null;\n        this._spatialEdgesSubscription = null;\n        this._viewerMouseEventSubscription = null;\n    }\n\n    public unproject$(canvasPoint: number[]): Observable<ILatLon> {\n        return observableCombineLatest(\n                this._container.renderService.renderCamera$,\n                this._navigator.stateService.reference$,\n                this._navigator.stateService.currentTransform$).pipe(\n            first(),\n            map(\n                ([render, reference, transform]: [RenderCamera, ILatLonAlt, Transform]): ILatLon => {\n                    const unprojection: IUnprojection =\n                        this._projection.canvasToUnprojection(\n                            canvasPoint,\n                            this._container.element,\n                            render,\n                            reference,\n                            transform);\n\n                    return unprojection.latLon;\n                }));\n    }\n\n    public unprojectBasic$(canvasPoint: number[]): Observable<number[]> {\n        return observableCombineLatest(\n                this._container.renderService.renderCamera$,\n                this._navigator.stateService.currentTransform$).pipe(\n            first(),\n            map(\n                ([render, transform]: [RenderCamera, Transform]): number[] => {\n                    return this._projection.canvasToBasic(\n                        canvasPoint,\n                        this._container.element,\n                        render,\n                        transform);\n                }));\n    }\n\n    private _closeTo(v1: number, v2: number, absoluteTolerance: number): boolean {\n        return Math.abs(v1 - v2) <= absoluteTolerance;\n    }\n\n    private _mapMouseEvent$(type: string, mouseEvent$: Observable<MouseEvent>): Observable<[string, MouseEvent]> {\n        return mouseEvent$.pipe(map(\n            (event: MouseEvent): [string, MouseEvent] => {\n                return [type, event];\n            }));\n    }\n}\n\nexport default Observer;\n",
+    "import * as THREE from \"three\";\n\nimport {\n    of as observableOf,\n    combineLatest as observableCombineLatest,\n    empty as observableEmpty,\n    Observable,\n    Subject,\n    Subscription,\n} from \"rxjs\";\n\nimport {\n    map,\n    switchMap,\n    withLatestFrom,\n    distinctUntilChanged,\n    catchError,\n    startWith,\n    publishReplay,\n    refCount,\n} from \"rxjs/operators\";\n\nimport * as Geo from \"../geo/Geo\";\nimport GeoCoords from \"../geo/GeoCoords\";\nimport GraphService from \"../graph/GraphService\";\nimport GraphCalculator from \"../graph/GraphCalculator\";\nimport ILatLon from \"../api/interfaces/ILatLon\";\nimport ILatLonAlt from \"../geo/interfaces/ILatLonAlt\";\nimport Node from \"../graph/Node\";\nimport Spatial from \"../geo/Spatial\";\nimport { StateService } from \"../state/StateService\";\nimport { Transform } from \"../geo/Transform\";\nimport ViewportCoords from \"../geo/ViewportCoords\";\nimport { IFrame } from \"../State\";\n\nenum PanMode {\n    Disabled,\n    Enabled,\n    Started,\n}\n\nexport class PanService {\n    private _graphService: GraphService;\n    private _stateService: StateService;\n    private _graphCalculator: GraphCalculator;\n    private _geoCoords: GeoCoords;\n    private _spatial: Spatial;\n    private _viewportCoords: ViewportCoords;\n\n    private _panNodesSubject$: Subject<[Node, Transform, number][]>;\n    private _panNodes$: Observable<[Node, Transform, number][]>;\n    private _panNodesSubscription: Subscription;\n\n    private _mode: PanMode;\n\n    constructor(\n        graphService: GraphService,\n        stateService: StateService,\n        enabled?: boolean,\n        geoCoords?: GeoCoords,\n        graphCalculator?: GraphCalculator,\n        spatial?: Spatial,\n        viewportCoords?: ViewportCoords) {\n\n        this._graphService = graphService;\n        this._stateService = stateService;\n        this._geoCoords = !!geoCoords ? geoCoords : new GeoCoords();\n        this._graphCalculator = !!graphCalculator ? graphCalculator : new GraphCalculator(this._geoCoords);\n        this._spatial = !!spatial ? spatial : new Spatial();\n        this._viewportCoords = !!viewportCoords ? viewportCoords : new ViewportCoords();\n\n        this._mode = enabled !== false ? PanMode.Enabled : PanMode.Disabled;\n\n        this._panNodesSubject$ = new Subject<[Node, Transform, number][]>();\n        this._panNodes$ = this._panNodesSubject$.pipe(\n            startWith([]),\n            publishReplay(1),\n            refCount());\n\n        this._panNodes$.subscribe();\n    }\n\n    public get panNodes$(): Observable<[Node, Transform, number][]> {\n        return this._panNodes$;\n    }\n\n    public enable(): void {\n        if (this._mode !== PanMode.Disabled) {\n            return;\n        }\n\n        this._mode = PanMode.Enabled;\n        this.start();\n    }\n\n    public disable(): void {\n        if (this._mode === PanMode.Disabled) {\n            return;\n        }\n\n        this.stop();\n\n        this._mode = PanMode.Disabled;\n    }\n\n    public start(): void {\n        if (this._mode !== PanMode.Enabled) {\n            return;\n        }\n\n        const panNodes$: Observable<[Node, Transform, number][]> = this._stateService.currentNode$.pipe(\n            switchMap(\n                (current: Node): Observable<[Node, Transform, number][]> => {\n                    if (!current.merged) {\n                        return observableOf([]);\n                    }\n\n                    const current$: Observable<Node> = observableOf(current);\n\n                    const bounds: ILatLon[] = this._graphCalculator.boundingBoxCorners(current.latLon, 20);\n\n                    const adjacent$: Observable<Node[]> = this._graphService\n                        .cacheBoundingBox$(bounds[0], bounds[1]).pipe(\n                            catchError(\n                                (error: Error): Observable<Node> => {\n                                    console.error(`Failed to cache periphery bounding box (${current.key})`, error);\n\n                                    return observableEmpty();\n                                }),\n                            map(\n                                (nodes: Node[]): Node[] => {\n                                    if (current.pano) {\n                                        return [];\n                                    }\n\n                                    const potential: Node[] = [];\n\n                                    for (const node of nodes) {\n                                        if (node.key === current.key) {\n                                            continue;\n                                        }\n\n                                        if (node.mergeCC !== current.mergeCC) {\n                                            continue;\n                                        }\n\n                                        if (node.pano) {\n                                            continue;\n                                        }\n\n                                        if (this._distance(node, current) > 4) {\n                                            continue;\n                                        }\n\n                                        potential.push(node);\n                                    }\n\n                                    return potential;\n                                }));\n\n                    return observableCombineLatest(current$, adjacent$).pipe(\n                        withLatestFrom(this._stateService.reference$),\n                        map(\n                            ([[cn, adjacent], reference]: [[Node, Node[]], ILatLonAlt]): [Node, Transform, number][] => {\n                                const currentDirection: THREE.Vector3 = this._spatial.viewingDirection(cn.rotation);\n                                const currentTranslation: number[] = Geo.computeTranslation(\n                                    { lat: cn.latLon.lat, lon: cn.latLon.lon, alt: cn.alt },\n                                    cn.rotation,\n                                    reference);\n                                const currentTransform: Transform = this._createTransform(cn, currentTranslation);\n                                const currentAzimuthal: number = this._spatial.wrap(\n                                    this._spatial.azimuthal(\n                                        currentDirection.toArray(),\n                                        currentTransform.upVector().toArray()),\n                                    0,\n                                    2 * Math.PI);\n\n                                const currentProjectedPoints: number[][] = this._computeProjectedPoints(currentTransform);\n\n                                const currentHFov: number = this._computeHorizontalFov(currentProjectedPoints) / 180 * Math.PI;\n\n                                const preferredOverlap: number = Math.PI / 8;\n                                let left: [number, Node, Transform, number] = undefined;\n                                let right: [number, Node, Transform, number] = undefined;\n\n                                for (const a of adjacent) {\n                                    const translation: number[] = Geo.computeTranslation(\n                                        { lat: a.latLon.lat, lon: a.latLon.lon, alt: a.alt },\n                                        a.rotation,\n                                        reference);\n\n                                    const transform: Transform = this._createTransform(a, translation);\n                                    const projectedPoints: number[][] = this._computeProjectedPoints(transform);\n                                    const hFov: number = this._computeHorizontalFov(projectedPoints) / 180 * Math.PI;\n\n                                    const direction: THREE.Vector3 = this._spatial.viewingDirection(a.rotation);\n                                    const azimuthal: number = this._spatial.wrap(\n                                        this._spatial.azimuthal(\n                                            direction.toArray(),\n                                            transform.upVector().toArray()),\n                                        0,\n                                        2 * Math.PI);\n\n                                    const directionChange: number = this._spatial.angleBetweenVector2(\n                                        currentDirection.x,\n                                        currentDirection.y,\n                                        direction.x,\n                                        direction.y);\n\n                                    let overlap: number = Number.NEGATIVE_INFINITY;\n                                    if (directionChange > 0) {\n                                        if (currentAzimuthal > azimuthal) {\n                                            overlap = currentAzimuthal - 2 * Math.PI + currentHFov / 2 - (azimuthal - hFov / 2);\n                                        } else {\n                                            overlap = currentAzimuthal + currentHFov / 2 - (azimuthal - hFov / 2);\n                                        }\n                                    } else {\n                                        if (currentAzimuthal < azimuthal) {\n                                            overlap = azimuthal + hFov / 2 - (currentAzimuthal + 2 * Math.PI - currentHFov / 2);\n                                        } else {\n                                            overlap = azimuthal + hFov / 2 - (currentAzimuthal - currentHFov / 2);\n                                        }\n                                    }\n\n                                    const nonOverlap: number = Math.abs(hFov - overlap);\n\n                                    const distanceCost: number = this._distance(a, cn);\n                                    const timeCost: number = Math.min(this._timeDifference(a, cn), 4);\n                                    const overlapCost: number = 20 * Math.abs(overlap - preferredOverlap);\n                                    const fovCost: number = Math.min(5, 1 / Math.min(hFov / currentHFov, 1));\n                                    const nonOverlapCost: number = overlap > 0 ? -2 * nonOverlap : 0;\n\n                                    const cost: number = distanceCost + timeCost + overlapCost + fovCost + nonOverlapCost;\n\n                                    if (overlap > 0 &&\n                                        overlap < 0.5 * currentHFov &&\n                                        overlap < 0.5 * hFov &&\n                                        nonOverlap > 0.5 * currentHFov) {\n\n                                        if (directionChange > 0) {\n                                            if (!left) {\n                                                left = [cost, a, transform, hFov];\n                                            } else {\n                                                if (cost < left[0]) {\n                                                    left = [cost, a, transform, hFov];\n                                                }\n                                            }\n                                        } else {\n                                            if (!right) {\n                                                right = [cost, a, transform, hFov];\n                                            } else {\n                                                if (cost < right[0]) {\n                                                    right = [cost, a, transform, hFov];\n                                                }\n                                            }\n                                        }\n                                    }\n                                }\n\n                                const panNodes: [Node, Transform, number][] = [];\n\n                                if (!!left) {\n                                    panNodes.push([left[1], left[2], left[3]]);\n                                }\n\n                                if (!!right) {\n                                    panNodes.push([right[1], right[2], right[3]]);\n                                }\n\n                                return panNodes;\n                            }),\n                        startWith([]));\n                }));\n\n        this._panNodesSubscription = this._stateService.currentState$.pipe(\n            map(\n                (frame: IFrame): boolean => {\n                    return frame.state.nodesAhead > 0;\n                }),\n            distinctUntilChanged(),\n            switchMap(\n                (traversing: boolean): Observable<[Node, Transform, number][]> => {\n                    return traversing ? observableOf([]) : panNodes$;\n                }))\n            .subscribe(\n                (panNodes: [Node, Transform, number][]): void => {\n                    this._panNodesSubject$.next(panNodes);\n                });\n\n        this._mode = PanMode.Started;\n    }\n\n    public stop(): void {\n        if (this._mode !== PanMode.Started) {\n            return;\n        }\n\n        this._panNodesSubscription.unsubscribe();\n        this._panNodesSubject$.next([]);\n\n        this._mode = PanMode.Enabled;\n    }\n\n    private _distance(node: Node, reference: Node): number {\n        const [x, y, z]: number[] = this._geoCoords.geodeticToEnu(\n            node.latLon.lat,\n            node.latLon.lon,\n            node.alt,\n            reference.latLon.lat,\n            reference.latLon.lon,\n            reference.alt);\n\n        return Math.sqrt(x * x + y * y + z * z);\n    }\n\n    private _timeDifference(node: Node, reference: Node): number {\n        return Math.abs(node.capturedAt - reference.capturedAt) / (1000 * 60 * 60 * 24 * 30);\n    }\n\n    private _createTransform(node: Node, translation: number[]): Transform {\n        return new Transform(\n            node.orientation,\n            node.width,\n            node.height,\n            node.focal,\n            node.scale,\n            node.gpano,\n            node.rotation,\n            translation,\n            node.assetsCached ? node.image : undefined,\n            undefined,\n            node.ck1,\n            node.ck2,\n            node.cameraProjection);\n    }\n\n    private _computeProjectedPoints(transform: Transform): number[][] {\n        const vertices: number[][] = [[1, 0]];\n        const directions: number[][] = [[0, 0.5]];\n        const pointsPerLine: number = 20;\n\n        return Geo.computeProjectedPoints(transform, vertices, directions, pointsPerLine, this._viewportCoords);\n    }\n\n    private _computeHorizontalFov(projectedPoints: number[][]): number {\n        const fovs: number[] = projectedPoints\n            .map(\n                (projectedPoint: number[]): number => {\n                    return this._coordToFov(projectedPoint[0]);\n                });\n\n        const fov: number = Math.min(...fovs);\n\n        return fov;\n    }\n\n    private _coordToFov(x: number): number {\n        return 2 * Math.atan(x) * 180 / Math.PI;\n    }\n}\n",
     "import {\n    combineLatest as observableCombineLatest,\n    empty as observableEmpty,\n    from as observableFrom,\n    of as observableOf,\n    zip as observableZip,\n    Observable,\n    Subject,\n    Subscription,\n} from \"rxjs\";\n\nimport {\n    publish,\n    finalize,\n    startWith,\n    publishReplay,\n    refCount,\n    map,\n    distinctUntilChanged,\n    switchMap,\n    retry,\n    catchError,\n    scan,\n    filter,\n    withLatestFrom,\n    first,\n    timeout,\n    bufferCount,\n    mergeMap,\n} from \"rxjs/operators\";\n\nimport {ILatLon} from \"../API\";\nimport {EdgeDirection} from \"../Edge\";\nimport {\n    Graph,\n    GraphCalculator,\n    GraphMode,\n    GraphService,\n    IEdgeStatus,\n    Node,\n    Sequence,\n} from \"../Graph\";\nimport {\n    ICurrentState,\n    IFrame,\n    StateService,\n} from \"../State\";\n\nexport class PlayService {\n    public static readonly sequenceSpeed: number = 0.54;\n\n    private _graphService: GraphService;\n    private _stateService: StateService;\n    private _graphCalculator: GraphCalculator;\n\n    private _nodesAhead: number;\n    private _playing: boolean;\n    private _speed: number;\n\n    private _direction$: Observable<EdgeDirection>;\n    private _directionSubject$: Subject<EdgeDirection>;\n    private _playing$: Observable<boolean>;\n    private _playingSubject$: Subject<boolean>;\n    private _speed$: Observable<number>;\n    private _speedSubject$: Subject<number>;\n\n    private _playingSubscription: Subscription;\n    private _cacheSubscription: Subscription;\n    private _clearSubscription: Subscription;\n    private _graphModeSubscription: Subscription;\n    private _stopSubscription: Subscription;\n\n    private _bridging$: Observable<Node>;\n\n    constructor(graphService: GraphService, stateService: StateService, graphCalculator?: GraphCalculator) {\n        this._graphService = graphService;\n        this._stateService = stateService;\n        this._graphCalculator = !!graphCalculator ? graphCalculator : new GraphCalculator();\n\n        this._directionSubject$ = new Subject<EdgeDirection>();\n        this._direction$ = this._directionSubject$.pipe(\n            startWith(EdgeDirection.Next),\n            publishReplay(1),\n            refCount());\n\n        this._direction$.subscribe();\n\n        this._playing = false;\n        this._playingSubject$ = new Subject<boolean>();\n        this._playing$ = this._playingSubject$.pipe(\n            startWith(this._playing),\n            publishReplay(1),\n            refCount());\n\n        this._playing$.subscribe();\n\n        this._speed = 0.5;\n        this._speedSubject$ = new Subject<number>();\n        this._speed$ = this._speedSubject$.pipe(\n            startWith(this._speed),\n            publishReplay(1),\n            refCount());\n\n        this._speed$.subscribe();\n\n        this._nodesAhead = this._mapNodesAhead(this._mapSpeed(this._speed));\n\n        this._bridging$ = null;\n    }\n\n    public get playing(): boolean {\n        return this._playing;\n    }\n\n    public get direction$(): Observable<EdgeDirection> {\n        return this._direction$;\n    }\n\n    public get playing$(): Observable<boolean> {\n        return this._playing$;\n    }\n\n    public get speed$(): Observable<number> {\n        return this._speed$;\n    }\n\n    public play(): void {\n        if (this._playing) {\n            return;\n        }\n\n        this._stateService.cutNodes();\n        const stateSpeed: number = this._setSpeed(this._speed);\n        this._stateService.setSpeed(stateSpeed);\n\n        this._graphModeSubscription = this._speed$.pipe(\n            map(\n                (speed: number): GraphMode => {\n                    return speed > PlayService.sequenceSpeed ? GraphMode.Sequence : GraphMode.Spatial;\n                }),\n            distinctUntilChanged())\n            .subscribe(\n                (mode: GraphMode): void => {\n                    this._graphService.setGraphMode(mode);\n                });\n\n        this._cacheSubscription = observableCombineLatest(\n                this._stateService.currentNode$.pipe(\n                    map(\n                        (node: Node): [string, string] => {\n                            return [node.sequenceKey, node.key];\n                        }),\n                    distinctUntilChanged(\n                        undefined,\n                        ([sequenceKey, nodeKey]: [string, string]): string => {\n                            return sequenceKey;\n                        })),\n                this._graphService.graphMode$,\n                this._direction$).pipe(\n            switchMap(\n                ([[sequenceKey, nodeKey], mode, direction]: [[string, string], GraphMode, EdgeDirection]):\n                    Observable<[Sequence, EdgeDirection]> => {\n\n                    if (direction !== EdgeDirection.Next && direction !== EdgeDirection.Prev) {\n                        return observableOf<[Sequence, EdgeDirection]>([undefined, direction]);\n                    }\n\n                    const sequence$: Observable<Sequence> = (mode === GraphMode.Sequence ?\n                        this._graphService.cacheSequenceNodes$(sequenceKey, nodeKey) :\n                        this._graphService.cacheSequence$(sequenceKey)).pipe(\n                            retry(3),\n                            catchError(\n                                (error: Error): Observable<Sequence> => {\n                                    console.error(error);\n\n                                    return observableOf(undefined);\n                                }));\n\n                    return observableCombineLatest(\n                            sequence$,\n                            observableOf(direction));\n                }),\n            switchMap(\n                ([sequence, direction]: [Sequence, EdgeDirection]): Observable<string> => {\n                    if (sequence === undefined) {\n                        return observableEmpty();\n                    }\n\n                    const sequenceKeys: string[] = sequence.keys.slice();\n                    if (direction === EdgeDirection.Prev) {\n                        sequenceKeys.reverse();\n                    }\n\n                    return this._stateService.currentState$.pipe(\n                        map(\n                            (frame: IFrame): [string, number] => {\n                                return [frame.state.trajectory[frame.state.trajectory.length - 1].key, frame.state.nodesAhead];\n                            }),\n                        scan(\n                            (\n                                [lastRequestKey, previousRequestKeys]: [string, string[]],\n                                [lastTrajectoryKey, nodesAhead]: [string, number]):\n                                [string, string[]] => {\n\n                                if (lastRequestKey === undefined) {\n                                    lastRequestKey = lastTrajectoryKey;\n                                }\n\n                                const lastIndex: number = sequenceKeys.length - 1;\n                                if (nodesAhead >= this._nodesAhead || sequenceKeys[lastIndex] === lastRequestKey) {\n                                    return [lastRequestKey, []];\n                                }\n\n                                const current: number = sequenceKeys.indexOf(lastTrajectoryKey);\n                                const start: number = sequenceKeys.indexOf(lastRequestKey) + 1;\n                                const end: number = Math.min(lastIndex, current + this._nodesAhead - nodesAhead) + 1;\n\n                                if (end <= start) {\n                                    return [lastRequestKey, []];\n                                }\n\n                                return [sequenceKeys[end - 1], sequenceKeys.slice(start, end)];\n                            },\n                            [undefined, []]),\n                        mergeMap(\n                            ([lastRequestKey, newRequestKeys]: [string, string[]]): Observable<string> => {\n                                return observableFrom(newRequestKeys);\n                            }));\n                }),\n            mergeMap(\n                (key: string): Observable<Node> => {\n                    return this._graphService.cacheNode$(key).pipe(\n                        catchError(\n                            (): Observable<Node> => {\n                                return observableEmpty();\n                            }));\n                },\n                6))\n            .subscribe();\n\n        this._playingSubscription = this._stateService.currentState$.pipe(\n            filter(\n                (frame: IFrame): boolean => {\n                    return frame.state.nodesAhead < this._nodesAhead;\n                }),\n            distinctUntilChanged(\n                undefined,\n                (frame: IFrame): string => {\n                    return frame.state.lastNode.key;\n                }),\n            map(\n                (frame: IFrame): [Node, boolean] => {\n                    const lastNode: Node = frame.state.lastNode;\n                    const trajectory: Node[] = frame.state.trajectory;\n                    let increasingTime: boolean = undefined;\n\n                    for (let i: number = trajectory.length - 2; i >= 0; i--) {\n                        const node: Node = trajectory[i];\n                        if (node.sequenceKey !== lastNode.sequenceKey) {\n                            break;\n                        }\n\n                        if (node.capturedAt !== lastNode.capturedAt) {\n                            increasingTime = node.capturedAt < lastNode.capturedAt;\n                            break;\n                        }\n                    }\n\n                    return [frame.state.lastNode, increasingTime];\n                }),\n            withLatestFrom(this._direction$),\n            switchMap(\n                ([[node, increasingTime], direction]: [[Node, boolean], EdgeDirection]): Observable<Node> => {\n                    return observableZip(\n                            ([EdgeDirection.Next, EdgeDirection.Prev].indexOf(direction) > -1 ?\n                                    node.sequenceEdges$ :\n                                    node.spatialEdges$).pipe(\n                                first(\n                                    (status: IEdgeStatus): boolean => {\n                                        return status.cached;\n                                    }),\n                                timeout(15000)),\n                            observableOf<EdgeDirection>(direction)).pipe(\n                        map(\n                            ([s, d]: [IEdgeStatus, EdgeDirection]): string => {\n                                for (let edge of s.edges) {\n                                    if (edge.data.direction === d) {\n                                        return edge.to;\n                                    }\n                                }\n\n                                return null;\n                            }),\n                        switchMap(\n                            (key: string): Observable<Node> => {\n                                return key != null ?\n                                    this._graphService.cacheNode$(key) :\n                                    this._bridge$(node, increasingTime).pipe(\n                                        filter(\n                                            (n: Node): boolean => {\n                                                return !!n;\n                                            }));\n                            }));\n                }))\n            .subscribe(\n                (node: Node): void => {\n                    this._stateService.appendNodes([node]);\n                },\n                (error: Error): void => {\n                    console.error(error);\n                    this.stop();\n                });\n\n        this._clearSubscription = this._stateService.currentNode$.pipe(\n            bufferCount(1, 10))\n            .subscribe(\n                (nodes: Node[]): void => {\n                    this._stateService.clearPriorNodes();\n                });\n\n        this._setPlaying(true);\n\n        const currentLastNodes$: Observable<Node> = this._stateService.currentState$.pipe(\n            map(\n                (frame: IFrame): ICurrentState => {\n                    return frame.state;\n                }),\n            distinctUntilChanged(\n                ([kc1, kl1]: [string, string], [kc2, kl2]: [string, string]): boolean => {\n                    return kc1 === kc2 && kl1 === kl2;\n                },\n                (state: ICurrentState): [string, string] => {\n                    return [state.currentNode.key, state.lastNode.key];\n                }),\n            filter(\n                (state: ICurrentState): boolean => {\n                    return state.currentNode.key === state.lastNode.key &&\n                        state.currentIndex === state.trajectory.length - 1;\n                }),\n            map(\n                (state: ICurrentState): Node => {\n                    return state.currentNode;\n                }));\n\n        this._stopSubscription = observableCombineLatest(\n                currentLastNodes$,\n                this._direction$).pipe(\n            switchMap(\n                ([node, direction]: [Node, EdgeDirection]): Observable<boolean> => {\n                    const edgeStatus$: Observable<IEdgeStatus> = (\n                        [EdgeDirection.Next, EdgeDirection.Prev].indexOf(direction) > -1 ?\n                            node.sequenceEdges$ :\n                            node.spatialEdges$).pipe(\n                        first(\n                            (status: IEdgeStatus): boolean => {\n                                return status.cached;\n                            }),\n                        timeout(15000),\n                        catchError(\n                            (error: Error): Observable<IEdgeStatus> => {\n                                console.error(error);\n\n                                return observableOf<IEdgeStatus>({ cached: false, edges: [] });\n                            }));\n\n                    return observableCombineLatest(\n                            observableOf(direction),\n                            edgeStatus$).pipe(\n                        map(\n                            ([d, es]: [EdgeDirection, IEdgeStatus]): boolean => {\n                                for (const edge of es.edges) {\n                                    if (edge.data.direction === d) {\n                                        return true;\n                                    }\n                                }\n\n                                return false;\n                            }));\n                }),\n            mergeMap(\n                (hasEdge: boolean): Observable<boolean> => {\n                    if (hasEdge || !this._bridging$) {\n                        return observableOf(hasEdge);\n                    }\n\n                    return this._bridging$.pipe(\n                        map(\n                            (node: Node): boolean => {\n                                return node != null;\n                            }),\n                        catchError(\n                            (error: Error): Observable<boolean> => {\n                                console.error(error);\n\n                                return observableOf<boolean>(false);\n                            }));\n                }),\n            first(\n                (hasEdge: boolean): boolean => {\n                    return !hasEdge;\n                }))\n            .subscribe(\n                undefined,\n                undefined,\n                (): void => { this.stop(); });\n\n        if (this._stopSubscription.closed) {\n            this._stopSubscription = null;\n        }\n    }\n\n    public setDirection(direction: EdgeDirection): void {\n        this._directionSubject$.next(direction);\n    }\n\n    public setSpeed(speed: number): void {\n        speed = Math.max(0, Math.min(1, speed));\n        if (speed === this._speed) {\n            return;\n        }\n\n        const stateSpeed: number = this._setSpeed(speed);\n\n        if (this._playing) {\n            this._stateService.setSpeed(stateSpeed);\n        }\n\n        this._speedSubject$.next(this._speed);\n    }\n\n    public stop(): void {\n        if (!this._playing) {\n            return;\n        }\n\n        if (!!this._stopSubscription) {\n            if (!this._stopSubscription.closed) {\n                this._stopSubscription.unsubscribe();\n            }\n\n            this._stopSubscription = null;\n        }\n\n        this._graphModeSubscription.unsubscribe();\n        this._graphModeSubscription = null;\n\n        this._cacheSubscription.unsubscribe();\n        this._cacheSubscription = null;\n\n        this._playingSubscription.unsubscribe();\n        this._playingSubscription = null;\n\n        this._clearSubscription.unsubscribe();\n        this._clearSubscription = null;\n\n        this._stateService.setSpeed(1);\n        this._stateService.cutNodes();\n        this._graphService.setGraphMode(GraphMode.Spatial);\n\n        this._setPlaying(false);\n    }\n\n    private _bridge$(node: Node, increasingTime: boolean): Observable<Node> {\n        if (increasingTime === undefined) {\n            return observableOf(null);\n        }\n\n        const boundingBox: ILatLon[] = this._graphCalculator.boundingBoxCorners(node.latLon, 25);\n\n        this._bridging$ = this._graphService.cacheBoundingBox$(boundingBox[0], boundingBox[1]).pipe(\n            mergeMap(\n                (nodes: Node[]): Observable<Node> => {\n                    let nextNode: Node = null;\n                    for (const n of nodes) {\n                        if (n.sequenceKey === node.sequenceKey ||\n                            !n.cameraUuid ||\n                            n.cameraUuid !== node.cameraUuid ||\n                            n.capturedAt === node.capturedAt ||\n                            n.capturedAt > node.capturedAt !== increasingTime) {\n                            continue;\n                        }\n\n                        const delta: number = Math.abs(n.capturedAt - node.capturedAt);\n\n                        if (delta > 15000) {\n                            continue;\n                        }\n\n                        if (!nextNode || delta < Math.abs(nextNode.capturedAt - node.capturedAt)) {\n                            nextNode = n;\n                        }\n                    }\n\n                    return !!nextNode ?\n                        this._graphService.cacheNode$(nextNode.key) :\n                        observableOf(null);\n                }),\n            finalize(\n                (): void => {\n                    this._bridging$ = null;\n                }),\n            publish(),\n            refCount());\n\n        return this._bridging$;\n    }\n\n    private _mapSpeed(speed: number): number {\n        const x: number = 2 * speed - 1;\n\n        return Math.pow(10, x) - 0.2 * x;\n    }\n\n    private _mapNodesAhead(stateSpeed: number): number {\n        return Math.round(Math.max(10, Math.min(50, 8 + 6 * stateSpeed)));\n    }\n\n    private _setPlaying(playing: boolean): void {\n        this._playing = playing;\n        this._playingSubject$.next(playing);\n    }\n\n    private _setSpeed(speed: number): number {\n        this._speed = speed;\n        const stateSpeed: number = this._mapSpeed(this._speed);\n        this._nodesAhead = this._mapNodesAhead(stateSpeed);\n\n        return stateSpeed;\n    }\n}\n\nexport default PlayService;\n",
-    "import * as THREE from \"three\";\n\nimport {ILatLon} from \"../API\";\nimport {\n    GeoCoords,\n    ILatLonAlt,\n    Transform,\n    ViewportCoords,\n} from \"../Geo\";\nimport {RenderCamera} from \"../Render\";\nimport {IUnprojection} from \"../Viewer\";\n\nexport class Projection {\n    private _geoCoords: GeoCoords;\n    private _viewportCoords: ViewportCoords;\n\n    constructor(geoCoords?: GeoCoords, viewportCoords?: ViewportCoords) {\n        this._geoCoords = !!geoCoords ? geoCoords : new GeoCoords();\n        this._viewportCoords = !!viewportCoords ? viewportCoords : new ViewportCoords();\n    }\n\n    public basicToCanvas(\n        basicPoint: number[],\n        container: HTMLElement,\n        render: RenderCamera,\n        transform: Transform): number[] {\n\n        return this._viewportCoords\n            .basicToCanvas(basicPoint[0], basicPoint[1], container, transform, render.perspective);\n    }\n\n    public canvasToBasic(\n        canvasPoint: number[],\n        container: HTMLElement,\n        render: RenderCamera,\n        transform: Transform): number[] {\n\n        let basicPoint: number[] = this._viewportCoords\n            .canvasToBasic(canvasPoint[0], canvasPoint[1], container, transform, render.perspective);\n\n        if (basicPoint[0] < 0 || basicPoint[0] > 1 || basicPoint[1] < 0 || basicPoint[1] > 1) {\n            basicPoint = null;\n        }\n\n        return basicPoint;\n    }\n\n    public eventToUnprojection(\n        event: MouseEvent | Touch,\n        container: HTMLElement,\n        render: RenderCamera,\n        reference: ILatLonAlt,\n        transform: Transform): IUnprojection {\n\n        const pixelPoint: number[] = this._viewportCoords.canvasPosition(event, container);\n\n        return this.canvasToUnprojection(pixelPoint, container, render, reference, transform);\n    }\n\n    public canvasToUnprojection(\n        canvasPoint: number[],\n        container: HTMLElement,\n        render: RenderCamera,\n        reference: ILatLonAlt,\n        transform: Transform): IUnprojection {\n\n        const canvasX: number = canvasPoint[0];\n        const canvasY: number = canvasPoint[1];\n\n        const [viewportX, viewportY]: number[] =\n            this._viewportCoords.canvasToViewport(canvasX, canvasY, container);\n\n        const point3d: THREE.Vector3 = new THREE.Vector3(viewportX, viewportY, 1)\n            .unproject(render.perspective);\n\n        let basicPoint: number[] = transform.projectBasic(point3d.toArray());\n        if (basicPoint[0] < 0 || basicPoint[0] > 1 || basicPoint[1] < 0 || basicPoint[1] > 1) {\n            basicPoint = null;\n        }\n\n        const direction3d: THREE.Vector3 = point3d.clone().sub(render.camera.position).normalize();\n        const dist: number = -2 / direction3d.z;\n\n        let latLon: ILatLon = null;\n        if (dist > 0 && dist < 100 && !!basicPoint) {\n            const point: THREE.Vector3 = direction3d.clone().multiplyScalar(dist).add(render.camera.position);\n            const latLonArray: number[] = this._geoCoords\n                .enuToGeodetic(\n                    point.x,\n                    point.y,\n                    point.z,\n                    reference.lat,\n                    reference.lon,\n                    reference.alt)\n                .slice(0, 2);\n\n            latLon = { lat: latLonArray[0], lon: latLonArray[1] };\n        }\n\n        const unprojection: IUnprojection = {\n            basicPoint: basicPoint,\n            latLon: latLon,\n            pixelPoint: [canvasX, canvasY],\n        };\n\n        return unprojection;\n    }\n}\n\nexport default Projection;\n",
+    "import * as THREE from \"three\";\n\nimport {ILatLon} from \"../API\";\nimport {\n    GeoCoords,\n    ILatLonAlt,\n    Transform,\n    ViewportCoords,\n} from \"../Geo\";\nimport {RenderCamera} from \"../Render\";\nimport {IUnprojection} from \"../Viewer\";\nimport Spatial from \"../geo/Spatial\";\n\nexport class Projection {\n    private _geoCoords: GeoCoords;\n    private _spatial: Spatial;\n    private _viewportCoords: ViewportCoords;\n\n    constructor(geoCoords?: GeoCoords, viewportCoords?: ViewportCoords, spatial?: Spatial) {\n        this._geoCoords = !!geoCoords ? geoCoords : new GeoCoords();\n        this._spatial = !!spatial ? spatial : new Spatial();\n        this._viewportCoords = !!viewportCoords ? viewportCoords : new ViewportCoords();\n    }\n\n    public basicToCanvas(\n        basicPoint: number[],\n        container: HTMLElement,\n        render: RenderCamera,\n        transform: Transform): number[] {\n\n        return this._viewportCoords\n            .basicToCanvasSafe(basicPoint[0], basicPoint[1], container, transform, render.perspective);\n    }\n\n    public canvasToBasic(\n        canvasPoint: number[],\n        container: HTMLElement,\n        render: RenderCamera,\n        transform: Transform): number[] {\n\n        let basicPoint: number[] = this._viewportCoords\n            .canvasToBasic(canvasPoint[0], canvasPoint[1], container, transform, render.perspective);\n\n        if (basicPoint[0] < 0 || basicPoint[0] > 1 || basicPoint[1] < 0 || basicPoint[1] > 1) {\n            basicPoint = null;\n        }\n\n        return basicPoint;\n    }\n\n    public eventToUnprojection(\n        event: MouseEvent | Touch,\n        container: HTMLElement,\n        render: RenderCamera,\n        reference: ILatLonAlt,\n        transform: Transform): IUnprojection {\n\n        const pixelPoint: number[] = this._viewportCoords.canvasPosition(event, container);\n\n        return this.canvasToUnprojection(pixelPoint, container, render, reference, transform);\n    }\n\n    public canvasToUnprojection(\n        canvasPoint: number[],\n        container: HTMLElement,\n        render: RenderCamera,\n        reference: ILatLonAlt,\n        transform: Transform): IUnprojection {\n\n        const canvasX: number = canvasPoint[0];\n        const canvasY: number = canvasPoint[1];\n\n        const [viewportX, viewportY]: number[] =\n            this._viewportCoords.canvasToViewport(canvasX, canvasY, container);\n\n        const point3d: THREE.Vector3 = new THREE.Vector3(viewportX, viewportY, 1)\n            .unproject(render.perspective);\n\n        let basicPoint: number[] = transform.projectBasic(point3d.toArray());\n        if (basicPoint[0] < 0 || basicPoint[0] > 1 || basicPoint[1] < 0 || basicPoint[1] > 1) {\n            basicPoint = null;\n        }\n\n        const direction3d: THREE.Vector3 = point3d.clone().sub(render.camera.position).normalize();\n        const dist: number = -2 / direction3d.z;\n\n        let latLon: ILatLon = null;\n        if (dist > 0 && dist < 100 && !!basicPoint) {\n            const point: THREE.Vector3 = direction3d.clone().multiplyScalar(dist).add(render.camera.position);\n            const latLonArray: number[] = this._geoCoords\n                .enuToGeodetic(\n                    point.x,\n                    point.y,\n                    point.z,\n                    reference.lat,\n                    reference.lon,\n                    reference.alt)\n                .slice(0, 2);\n\n            latLon = { lat: latLonArray[0], lon: latLonArray[1] };\n        }\n\n        const unprojection: IUnprojection = {\n            basicPoint: basicPoint,\n            latLon: latLon,\n            pixelPoint: [canvasX, canvasY],\n        };\n\n        return unprojection;\n    }\n\n    public cameraToLatLon(render: RenderCamera, reference: ILatLonAlt): ILatLon {\n        const position: THREE.Vector3 = render.camera.position;\n        const [lat, lon]: number[] = this._geoCoords.enuToGeodetic(\n            position.x,\n            position.y,\n            position.z,\n            reference.lat,\n            reference.lon,\n            reference.alt);\n\n        return { lat: lat, lon: lon };\n    }\n\n    public latLonToCanvas(\n        latLon: ILatLon,\n        container: HTMLElement,\n        render: RenderCamera,\n        reference: ILatLonAlt): number[] {\n\n        const point3d: number[] = this._geoCoords.geodeticToEnu(\n            latLon.lat,\n            latLon.lon,\n            0,\n            reference.lat,\n            reference.lon,\n            reference.alt);\n\n        const canvas: number[] = this._viewportCoords.projectToCanvasSafe(\n            point3d,\n            container,\n            render.perspective);\n\n        return canvas;\n    }\n\n    public distanceBetweenLatLons(latLon1: ILatLon, latLon2: ILatLon): number {\n        return this._spatial.distanceFromLatLon(\n            latLon1.lat,\n            latLon1.lon,\n            latLon2.lat,\n            latLon2.lon);\n    }\n}\n\nexport default Projection;\n",
     "import {refCount, publishReplay, scan, startWith} from \"rxjs/operators\";\nimport * as THREE from \"three\";\nimport * as vd from \"virtual-dom\";\n\nimport {Observable, Subject} from \"rxjs\";\n\nimport {Alignment, ISpriteAtlas} from \"../Viewer\";\n\nclass SpriteAtlas implements ISpriteAtlas {\n    private _image: HTMLImageElement;\n    private _texture: THREE.Texture;\n    private _json: ISprites;\n\n    public set json(value: ISprites) {\n        this._json = value;\n    }\n\n    public set image(value: HTMLImageElement) {\n        this._image = value;\n        this._texture = new THREE.Texture(this._image);\n        this._texture.minFilter = THREE.NearestFilter;\n    }\n\n    public get loaded(): boolean {\n        return !!(this._image && this._json);\n    }\n\n    public getGLSprite(name: string): THREE.Object3D {\n        if (!this.loaded) {\n            throw new Error(\"Sprites cannot be retrieved before the atlas is loaded.\");\n        }\n\n        let definition: ISprite = this._json[name];\n\n        if (!definition) {\n            console.warn(\"Sprite with key\" + name + \"does not exist in sprite definition.\");\n\n            return new THREE.Object3D();\n        }\n\n        let texture: THREE.Texture = this._texture.clone();\n        texture.needsUpdate = true;\n\n        let width: number = this._image.width;\n        let height: number = this._image.height;\n\n        texture.offset.x = definition.x / width;\n        texture.offset.y = (height - definition.y - definition.height) / height;\n        texture.repeat.x = definition.width / width;\n        texture.repeat.y = definition.height / height;\n\n        let material: THREE.SpriteMaterial = new THREE.SpriteMaterial({ map: texture });\n\n        return new THREE.Sprite(material);\n    }\n\n    public getDOMSprite(\n        name: string,\n        float?: Alignment): vd.VNode {\n\n        if (!this.loaded) {\n            throw new Error(\"Sprites cannot be retrieved before the atlas is loaded.\");\n        }\n\n        if (float == null) {\n            float = Alignment.Center;\n        }\n\n        let definition: ISprite = this._json[name];\n\n        if (!definition) {\n            console.warn(\"Sprite with key\" + name + \"does not exist in sprite definition.\");\n\n            return vd.h(\"div\", {}, []);\n        }\n\n        let clipTop: number = definition.y;\n        let clipRigth: number = definition.x + definition.width;\n        let clipBottom: number = definition.y + definition.height;\n        let clipLeft: number = definition.x;\n\n        let left: number = -definition.x;\n        let top: number = -definition.y;\n\n        let height: number = this._image.height;\n        let width: number = this._image.width;\n\n        switch (float) {\n            case Alignment.Bottom:\n            case Alignment.Center:\n            case Alignment.Top:\n                left -= definition.width / 2;\n                break;\n            case Alignment.BottomLeft:\n            case Alignment.Left:\n            case Alignment.TopLeft:\n                left -= definition.width;\n                break;\n            case Alignment.BottomRight:\n            case Alignment.Right:\n            case Alignment.TopRight:\n            default:\n                break;\n        }\n\n        switch (float) {\n            case Alignment.Center:\n            case Alignment.Left:\n            case Alignment.Right:\n                top -= definition.height / 2;\n                break;\n            case Alignment.Top:\n            case Alignment.TopLeft:\n            case Alignment.TopRight:\n                top -= definition.height;\n                break;\n            case Alignment.Bottom:\n            case Alignment.BottomLeft:\n            case Alignment.BottomRight:\n            default:\n                break;\n        }\n\n        let pixelRatioInverse: number = 1 / definition.pixelRatio;\n\n        clipTop *= pixelRatioInverse;\n        clipRigth *= pixelRatioInverse;\n        clipBottom *= pixelRatioInverse;\n        clipLeft *= pixelRatioInverse;\n        left *= pixelRatioInverse;\n        top *= pixelRatioInverse;\n        height *= pixelRatioInverse;\n        width *= pixelRatioInverse;\n\n        let properties: vd.createProperties = {\n            src: this._image.src,\n            style: {\n                clip: `rect(${clipTop}px, ${clipRigth}px, ${clipBottom}px, ${clipLeft}px)`,\n                height: `${height}px`,\n                left: `${left}px`,\n                position: \"absolute\",\n                top: `${top}px`,\n                width: `${width}px`,\n            },\n        };\n\n        return vd.h(\"img\", properties, []);\n    }\n}\n\ninterface ISprite {\n    width: number;\n    height: number;\n    x: number;\n    y: number;\n    pixelRatio: number;\n}\n\ninterface ISprites {\n    [key: string]: ISprite;\n}\n\ninterface ISpriteAtlasOperation {\n    (atlas: SpriteAtlas): SpriteAtlas;\n}\n\nexport class SpriteService {\n    private _retina: boolean;\n\n    private _spriteAtlasOperation$: Subject<ISpriteAtlasOperation>;\n    private _spriteAtlas$: Observable<SpriteAtlas>;\n\n    constructor(sprite?: string) {\n        this._retina = window.devicePixelRatio > 1;\n\n        this._spriteAtlasOperation$ = new Subject<ISpriteAtlasOperation>();\n\n        this._spriteAtlas$ = this._spriteAtlasOperation$.pipe(\n            startWith(\n                (atlas: SpriteAtlas): SpriteAtlas => {\n                    return atlas;\n                }),\n            scan(\n                (atlas: SpriteAtlas, operation: ISpriteAtlasOperation): SpriteAtlas => {\n                    return operation(atlas);\n                },\n                new SpriteAtlas()),\n            publishReplay(1),\n            refCount());\n\n        this._spriteAtlas$.subscribe(() => { /*noop*/ });\n\n        if (sprite == null) {\n            return;\n        }\n\n        let format: string = this._retina ? \"@2x\" : \"\";\n\n        let imageXmlHTTP: XMLHttpRequest = new XMLHttpRequest();\n        imageXmlHTTP.open(\"GET\", sprite + format + \".png\", true);\n        imageXmlHTTP.responseType = \"arraybuffer\";\n        imageXmlHTTP.onload = () => {\n            let image: HTMLImageElement = new Image();\n            image.onload = () => {\n                this._spriteAtlasOperation$.next(\n                    (atlas: SpriteAtlas): SpriteAtlas => {\n                        atlas.image = image;\n\n                        return atlas;\n                    });\n            };\n\n            let blob: Blob = new Blob([imageXmlHTTP.response]);\n            image.src = window.URL.createObjectURL(blob);\n        };\n\n        imageXmlHTTP.onerror = (error: Event) => {\n            console.error(new Error(`Failed to fetch sprite sheet (${sprite}${format}.png)`));\n        };\n\n        imageXmlHTTP.send();\n\n        let jsonXmlHTTP: XMLHttpRequest = new XMLHttpRequest();\n        jsonXmlHTTP.open(\"GET\", sprite + format + \".json\", true);\n        jsonXmlHTTP.responseType = \"text\";\n        jsonXmlHTTP.onload = () => {\n            let json: ISprites = <ISprites>JSON.parse(jsonXmlHTTP.response);\n\n            this._spriteAtlasOperation$.next(\n                    (atlas: SpriteAtlas): SpriteAtlas => {\n                        atlas.json = json;\n\n                        return atlas;\n                    });\n        };\n\n        jsonXmlHTTP.onerror = (error: Event) => {\n            console.error(new Error(`Failed to fetch sheet (${sprite}${format}.json)`));\n        };\n\n        jsonXmlHTTP.send();\n    }\n\n    public get spriteAtlas$(): Observable<ISpriteAtlas> {\n        return this._spriteAtlas$;\n    }\n}\n\nexport default SpriteService;\n",
     "import {\n    merge as observableMerge,\n    fromEvent as observableFromEvent,\n    timer as observableTimer,\n    BehaviorSubject,\n    Observable,\n    Subject,\n} from \"rxjs\";\n\nimport {\n    bufferWhen,\n    mergeMap,\n    take,\n    takeUntil,\n    switchMap,\n    distinctUntilChanged,\n    scan,\n    refCount,\n    first,\n    map,\n    skip,\n    share,\n    filter,\n    publishReplay,\n} from \"rxjs/operators\";\n\nimport {IPinch} from \"../Viewer\";\n\ninterface IPinchOperation {\n    (pinch: IPinch): IPinch;\n}\n\nexport class TouchService {\n    private _activeSubject$: BehaviorSubject<boolean>;\n    private _active$: Observable<boolean>;\n\n    private _touchStart$: Observable<TouchEvent>;\n    private _touchMove$: Observable<TouchEvent>;\n    private _touchEnd$: Observable<TouchEvent>;\n    private _touchCancel$: Observable<TouchEvent>;\n\n    private _singleTouchDrag$: Observable<TouchEvent>;\n    private _singleTouchDragStart$: Observable<TouchEvent>;\n    private _singleTouchDragEnd$: Observable<TouchEvent>;\n    private _singleTouchMove$: Observable<TouchEvent>;\n\n    private _pinchOperation$: Subject<IPinchOperation>;\n    private _pinch$: Observable<IPinch>;\n    private _pinchStart$: Observable<TouchEvent>;\n    private _pinchEnd$: Observable<TouchEvent>;\n    private _pinchChange$: Observable<IPinch>;\n\n    private _doubleTap$: Observable<TouchEvent>;\n\n    constructor(canvasContainer: HTMLElement, domContainer: HTMLElement) {\n        this._activeSubject$ = new BehaviorSubject<boolean>(false);\n\n        this._active$ = this._activeSubject$.pipe(\n            distinctUntilChanged(),\n            publishReplay(1),\n            refCount());\n\n        observableFromEvent<TouchEvent>(domContainer, \"touchmove\")\n            .subscribe(\n                (event: TouchEvent): void => {\n                    event.preventDefault();\n                });\n\n        this._touchStart$ = observableFromEvent<TouchEvent>(canvasContainer, \"touchstart\");\n        this._touchMove$ = observableFromEvent<TouchEvent>(canvasContainer, \"touchmove\");\n        this._touchEnd$ = observableFromEvent<TouchEvent>(canvasContainer, \"touchend\");\n        this._touchCancel$ = observableFromEvent<TouchEvent>(canvasContainer, \"touchcancel\");\n\n        const tapStart$: Observable<TouchEvent> = this._touchStart$.pipe(\n            filter(\n                (te: TouchEvent): boolean => {\n                    return te.touches.length === 1 && te.targetTouches.length === 1;\n                }),\n            share());\n\n        this._doubleTap$ = tapStart$.pipe(\n            bufferWhen(\n                (): Observable<number | TouchEvent> => {\n                    return tapStart$.pipe(\n                        first(),\n                        switchMap(\n                            (event: TouchEvent): Observable<number | TouchEvent> => {\n                                return observableMerge(\n                                        observableTimer(300),\n                                        tapStart$).pipe(\n                                    take(1));\n                            }));\n                }),\n            filter(\n                (events: TouchEvent[]): boolean => {\n                    return events.length === 2;\n                }),\n            map(\n                (events: TouchEvent[]): TouchEvent => {\n                    return events[events.length - 1];\n                }),\n            share());\n\n        this._doubleTap$\n            .subscribe(\n                (event: TouchEvent): void => {\n                    event.preventDefault();\n                });\n\n        this._singleTouchMove$ = this._touchMove$.pipe(\n            filter(\n                (te: TouchEvent): boolean => {\n                    return te.touches.length === 1 && te.targetTouches.length === 1;\n                }),\n            share());\n\n        let singleTouchStart$: Observable<TouchEvent> = observableMerge<TouchEvent>(\n                this._touchStart$,\n                this._touchEnd$,\n                this._touchCancel$).pipe(\n            filter(\n                (te: TouchEvent): boolean => {\n                    return te.touches.length === 1 && te.targetTouches.length === 1;\n                }));\n\n        let multipleTouchStart$: Observable<TouchEvent> = observableMerge<TouchEvent>(\n                this._touchStart$,\n                this._touchEnd$,\n                this._touchCancel$).pipe(\n            filter(\n                (te: TouchEvent): boolean => {\n                    return te.touches.length >= 1;\n                }));\n\n        let touchStop$: Observable<TouchEvent> = observableMerge<TouchEvent>(\n                this._touchEnd$,\n                this._touchCancel$).pipe(\n            filter(\n                (te: TouchEvent): boolean => {\n                    return te.touches.length === 0;\n                }));\n\n        this._singleTouchDragStart$ = singleTouchStart$.pipe(\n            mergeMap(\n                (e: TouchEvent): Observable<TouchEvent> => {\n                    return this._singleTouchMove$.pipe(\n                        takeUntil(\n                            observableMerge(\n                                touchStop$,\n                                multipleTouchStart$)),\n                        take(1));\n                }));\n\n        this._singleTouchDragEnd$ = singleTouchStart$.pipe(\n            mergeMap(\n                (e: TouchEvent): Observable<TouchEvent> => {\n                    return observableMerge(\n                            touchStop$,\n                            multipleTouchStart$).pipe(\n                        first());\n                }));\n\n        this._singleTouchDrag$ = singleTouchStart$.pipe(\n            switchMap(\n                (te: TouchEvent): Observable<TouchEvent> => {\n                    return this._singleTouchMove$.pipe(\n                        skip(1),\n                        takeUntil(\n                            observableMerge(\n                                    multipleTouchStart$,\n                                    touchStop$)));\n                }));\n\n        let touchesChanged$: Observable<TouchEvent> = observableMerge<TouchEvent>(\n                this._touchStart$,\n                this._touchEnd$,\n                this._touchCancel$);\n\n        this._pinchStart$ = touchesChanged$.pipe(\n            filter(\n                (te: TouchEvent): boolean => {\n                    return te.touches.length === 2 && te.targetTouches.length === 2;\n                }));\n\n        this._pinchEnd$ = touchesChanged$.pipe(\n            filter(\n                (te: TouchEvent): boolean => {\n                    return te.touches.length !== 2 || te.targetTouches.length !== 2;\n                }));\n\n        this._pinchOperation$ = new Subject<IPinchOperation>();\n\n        this._pinch$ = this._pinchOperation$.pipe(\n            scan(\n                (pinch: IPinch, operation: IPinchOperation): IPinch => {\n                    return operation(pinch);\n                },\n                {\n                    changeX: 0,\n                    changeY: 0,\n                    clientX: 0,\n                    clientY: 0,\n                    distance: 0,\n                    distanceChange: 0,\n                    distanceX: 0,\n                    distanceY: 0,\n                    originalEvent: null,\n                    pageX: 0,\n                    pageY: 0,\n                    screenX: 0,\n                    screenY: 0,\n                    touch1: null,\n                    touch2: null,\n                }));\n\n        this._touchMove$.pipe(\n            filter(\n                (te: TouchEvent): boolean => {\n                    return te.touches.length === 2 && te.targetTouches.length === 2;\n                }),\n            map(\n                (te: TouchEvent): IPinchOperation => {\n                    return (previous: IPinch): IPinch => {\n                        let touch1: Touch = te.touches[0];\n                        let touch2: Touch = te.touches[1];\n\n                        let minX: number = Math.min(touch1.clientX, touch2.clientX);\n                        let maxX: number = Math.max(touch1.clientX, touch2.clientX);\n\n                        let minY: number = Math.min(touch1.clientY, touch2.clientY);\n                        let maxY: number = Math.max(touch1.clientY, touch2.clientY);\n\n                        let centerClientX: number = minX + (maxX - minX) / 2;\n                        let centerClientY: number = minY + (maxY - minY) / 2;\n\n                        let centerPageX: number = centerClientX + touch1.pageX - touch1.clientX;\n                        let centerPageY: number = centerClientY + touch1.pageY - touch1.clientY;\n\n                        let centerScreenX: number = centerClientX + touch1.screenX - touch1.clientX;\n                        let centerScreenY: number = centerClientY + touch1.screenY - touch1.clientY;\n\n                        let distanceX: number = Math.abs(touch1.clientX - touch2.clientX);\n                        let distanceY: number = Math.abs(touch1.clientY - touch2.clientY);\n\n                        let distance: number = Math.sqrt(distanceX * distanceX + distanceY * distanceY);\n\n                        let distanceChange: number = distance - previous.distance;\n\n                        let changeX: number = distanceX - previous.distanceX;\n                        let changeY: number = distanceY - previous.distanceY;\n\n                        let current: IPinch = {\n                            changeX: changeX,\n                            changeY: changeY,\n                            clientX: centerClientX,\n                            clientY: centerClientY,\n                            distance: distance,\n                            distanceChange: distanceChange,\n                            distanceX: distanceX,\n                            distanceY: distanceY,\n                            originalEvent: te,\n                            pageX: centerPageX,\n                            pageY: centerPageY,\n                            screenX: centerScreenX,\n                            screenY: centerScreenY,\n                            touch1: touch1,\n                            touch2: touch2,\n                        };\n\n                        return current;\n                    };\n                }))\n            .subscribe(this._pinchOperation$);\n\n        this._pinchChange$ = this._pinchStart$.pipe(\n            switchMap(\n                (te: TouchEvent): Observable<IPinch> => {\n                    return this._pinch$.pipe(\n                        skip(1),\n                        takeUntil(this._pinchEnd$));\n                }));\n    }\n\n    public get active$(): Observable<boolean> {\n        return this._active$;\n    }\n\n    public get activate$(): Subject<boolean> {\n        return this._activeSubject$;\n    }\n\n    public get doubleTap$(): Observable<TouchEvent> {\n        return this._doubleTap$;\n    }\n\n    public get touchStart$(): Observable<TouchEvent> {\n        return this._touchStart$;\n    }\n\n    public get touchMove$(): Observable<TouchEvent> {\n        return this._touchMove$;\n    }\n\n    public get touchEnd$(): Observable<TouchEvent> {\n        return this._touchEnd$;\n    }\n\n    public get touchCancel$(): Observable<TouchEvent> {\n        return this._touchCancel$;\n    }\n\n    public get singleTouchDragStart$(): Observable<TouchEvent> {\n        return this._singleTouchDragStart$;\n    }\n\n    public get singleTouchDrag$(): Observable<TouchEvent> {\n        return this._singleTouchDrag$;\n    }\n\n    public get singleTouchDragEnd$(): Observable<TouchEvent> {\n        return this._singleTouchDragEnd$;\n    }\n\n    public get pinch$(): Observable<IPinch> {\n        return this._pinchChange$;\n    }\n\n    public get pinchStart$(): Observable<TouchEvent> {\n        return this._pinchStart$;\n    }\n\n    public get pinchEnd$(): Observable<TouchEvent> {\n        return this._pinchEnd$;\n    }\n}\n",
-    "import {throwError as observableThrowError, Observable} from \"rxjs\";\n\nimport {first} from \"rxjs/operators\";\nimport * as when from \"when\";\n\nimport {ILatLon} from \"../API\";\nimport {EdgeDirection} from \"../Edge\";\nimport {AbortMapillaryError} from \"../Error\";\nimport {\n    FilterExpression,\n    Node,\n} from \"../Graph\";\nimport {\n    ComponentController,\n    Container,\n    IViewerOptions,\n    Navigator,\n    Observer,\n} from \"../Viewer\";\nimport {\n    Component,\n    IComponentConfiguration,\n} from \"../Component\";\nimport {\n    EventEmitter,\n    Settings,\n    Urls,\n} from \"../Utils\";\nimport {RenderMode} from \"../Render\";\nimport {TransitionMode} from \"../State\";\n\n/**\n * @class Viewer\n *\n * @classdesc The Viewer object represents the navigable image viewer.\n * Create a Viewer by specifying a container, client ID, image key and\n * other options. The viewer exposes methods and events for programmatic\n * interaction.\n *\n * In the case of asynchronous methods, MapillaryJS returns promises to\n * the results. Notifications are always emitted through JavaScript events.\n *\n * The viewer works with a few different coordinate systems.\n *\n * Container pixel coordinates\n *\n * Pixel coordinates are coordinates on the viewer container. The origin is\n * in the top left corner of the container. The axes are\n * directed according to the following for a viewer container with a width\n * of 640 pixels and height of 480 pixels.\n *\n * ```\n * (0,0)                          (640, 0)\n *      +------------------------>\n *      |\n *      |\n *      |\n *      v                        +\n * (0, 480)                       (640, 480)\n * ```\n *\n * Basic image coordinates\n *\n * Basic image coordinates represents points in the original image adjusted for\n * orientation. They range from 0 to 1 on both axes. The origin is in the top left\n * corner of the image and the axes are directed\n * according to the following for all image types.\n *\n * ```\n * (0,0)                          (1, 0)\n *      +------------------------>\n *      |\n *      |\n *      |\n *      v                        +\n * (0, 1)                         (1, 1)\n * ```\n *\n * For every camera viewing direction it is possible to convert between these\n * two coordinate systems for the current node. The image can be panned and\n * zoomed independently of the size of the viewer container resulting in\n * different conversion results for different viewing directions.\n */\nexport class Viewer extends EventEmitter {\n    /**\n     * Fired when the viewing direction of the camera changes.\n     *\n     * @description Related to the computed compass angle\n     * ({@link Node.computedCa}) from SfM, not the original EXIF compass\n     * angle.\n     *\n     * @event\n     * @type {number} bearing - Value indicating the current bearing\n     * measured in degrees clockwise with respect to north.\n     */\n    public static bearingchanged: string = \"bearingchanged\";\n\n    /**\n     * Fired when a pointing device (usually a mouse) is pressed and released at\n     * the same point in the viewer.\n     * @event\n     * @type {IViewerMouseEvent} event - Viewer mouse event data.\n     */\n    public static click: string = \"click\";\n\n    /**\n     * Fired when the right button of the mouse is clicked within the viewer.\n     * @event\n     * @type {IViewerMouseEvent} event - Viewer mouse event data.\n     */\n    public static contextmenu: string = \"contextmenu\";\n\n    /**\n     * Fired when a pointing device (usually a mouse) is clicked twice at\n     * the same point in the viewer.\n     * @event\n     * @type {IViewerMouseEvent} event - Viewer mouse event data.\n     */\n    public static dblclick: string = \"dblclick\";\n\n    /**\n     * Fired when the viewer is loading more data.\n     * @event\n     * @type {boolean} loading - Boolean indicating whether the viewer is loading.\n     */\n    public static loadingchanged: string = \"loadingchanged\";\n\n    /**\n     * Fired when a pointing device (usually a mouse) is pressed within the viewer.\n     * @event\n     * @type {IViewerMouseEvent} event - Viewer mouse event data.\n     */\n    public static mousedown: string = \"mousedown\";\n\n    /**\n     * Fired when a pointing device (usually a mouse) is moved within the viewer.\n     * @description Will not fire when the mouse is actively used, e.g. for drag pan.\n     * @event\n     * @type {IViewerMouseEvent} event - Viewer mouse event data.\n     */\n    public static mousemove: string = \"mousemove\";\n\n    /**\n     * Fired when a pointing device (usually a mouse) leaves the viewer's canvas.\n     * @event\n     * @type {IViewerMouseEvent} event - Viewer mouse event data.\n     */\n    public static mouseout: string = \"mouseout\";\n\n    /**\n     * Fired when a pointing device (usually a mouse) is moved onto the viewer's canvas.\n     * @event\n     * @type {IViewerMouseEvent} event - Viewer mouse event data.\n     */\n    public static mouseover: string = \"mouseover\";\n\n    /**\n     * Fired when a pointing device (usually a mouse) is released within the viewer.\n     * @event\n     * @type {IViewerMouseEvent} event - Viewer mouse event data.\n     */\n    public static mouseup: string = \"mouseup\";\n\n    /**\n     * Fired when the viewer motion stops and it is in a fixed\n     * position with a fixed point of view.\n     * @event\n     */\n    public static moveend: string = \"moveend\";\n\n    /**\n     * Fired when the motion from one view to another start,\n     * either by changing the position (e.g. when changing node) or\n     * when changing point of view (e.g. by interaction such as pan and zoom).\n     * @event\n     */\n    public static movestart: string = \"movestart\";\n\n    /**\n     * Fired when the navigable state of the viewer changes.\n     *\n     * @description The navigable state indicates if the viewer supports\n     * moving, i.e. calling the `moveToKey`, `moveDir` and `moveCloseTo`\n     * methods. The viewer will not be in a navigable state if the cover\n     * is activated and the viewer has been supplied a key. When the cover\n     * is deactivated or activated without being supplied a key it will\n     * be navigable.\n     *\n     * @event\n     * @type {boolean} navigable - Boolean indicating whether the viewer is navigable.\n     */\n    public static navigablechanged: string = \"navigablechanged\";\n\n    /**\n     * Fired every time the viewer navigates to a new node.\n     * @event\n     * @type {Node} node - Current node.\n     */\n    public static nodechanged: string = \"nodechanged\";\n\n    /**\n     * Fired every time the sequence edges of the current node changes.\n     * @event\n     * @type {IEdgeStatus} status - The edge status object.\n     */\n    public static sequenceedgeschanged: string = \"sequenceedgeschanged\";\n\n    /**\n     * Fired every time the spatial edges of the current node changes.\n     * @event\n     * @type {IEdgeStatus} status - The edge status object.\n     */\n    public static spatialedgeschanged: string = \"spatialedgeschanged\";\n\n    /**\n     * Private component controller object which manages component states.\n     */\n    private _componentController: ComponentController;\n\n    /**\n     * Private container object which maintains the DOM Element,\n     * renderers and relevant services.\n     */\n    private _container: Container;\n\n    /**\n     * Private observer object which observes the viewer state and\n     * fires events on behalf of the viewer.\n     */\n    private _observer: Observer;\n\n    /**\n     * Private navigator object which controls navigation throught\n     * the vast seas of Mapillary.\n     */\n    private _navigator: Navigator;\n\n    /**\n     * Create a new viewer instance.\n     *\n     * @description It is possible to initialize the viewer with or\n     * without a key.\n     *\n     * When you want to show a specific image in the viewer from\n     * the start you should initialize it with a key.\n     *\n     * When you do not know the first image key at implementation\n     * time, e.g. in a map-viewer application you should initialize\n     * the viewer without a key and call `moveToKey` instead.\n     *\n     * When initializing with a key the viewer is bound to that key\n     * until the node for that key has been successfully loaded.\n     * Also, a cover with the image of the key will be shown.\n     * If the data for that key can not be loaded because the key is\n     * faulty or other errors occur it is not possible to navigate\n     * to another key because the viewer is not navigable. The viewer\n     * becomes navigable when the data for the key has been loaded and\n     * the image is shown in the viewer. This way of initializing\n     * the viewer is mostly for embedding in blog posts and similar\n     * where one wants to show a specific image initially.\n     *\n     * If the viewer is initialized without a key (with null or\n     * undefined) it is not bound to any particular key and it is\n     * possible to move to any key with `viewer.moveToKey(\"<my-image-key>\")`.\n     * If the first move to a key fails it is possible to move to another\n     * key. The viewer will show a black background until a move\n     * succeeds. This way of intitializing is suited for a map-viewer\n     * application when the initial key is not known at implementation\n     * time.\n     *\n     * @param {string} id - Required `id` of a DOM element which will\n     * be transformed into the viewer.\n     * @param {string} clientId - Required `Mapillary API ClientID`. Can\n     * be obtained from https://www.mapillary.com/app/settings/developers.\n     * @param {string} key - Optional `image-key` to start from. The key\n     * can be any Mapillary image. If a key is provided the viewer is\n     * bound to that key until it has been fully loaded. If null is provided\n     * no image is loaded at viewer initialization and the viewer is not\n     * bound to any particular key. Any image can then be navigated to\n     * with e.g. `viewer.moveToKey(\"<my-image-key>\")`.\n     * @param {IViewerOptions} options - Optional configuration object\n     * specifing Viewer's and the components' initial setup.\n     * @param {string} token - Optional bearer token for API requests of\n     * protected resources.\n     *\n     * @example\n     * ```\n     * var viewer = new Mapillary.Viewer(\"<element-id>\", \"<client-id>\", \"<image-key>\");\n     * ```\n     */\n    constructor (id: string, clientId: string, key?: string, options?: IViewerOptions, token?: string) {\n        super();\n\n        options = options != null ? options : {};\n\n        Settings.setOptions(options);\n        Urls.setOptions(options.url);\n\n        this._navigator = new Navigator(clientId, options, token);\n        this._container = new Container(id, this._navigator.stateService, options);\n        this._observer = new Observer(this, this._navigator, this._container);\n        this._componentController = new ComponentController(this._container, this._navigator, this._observer, key, options.component);\n    }\n\n    /**\n     * Return a boolean indicating if the viewer is in a navigable state.\n     *\n     * @description The navigable state indicates if the viewer supports\n     * moving, i.e. calling the {@link moveToKey}, {@link moveDir`}\n     * and {@link moveCloseTo} methods or changing the authentication state,\n     * i.e. calling {@link setAuthToken}. The viewer will not be in a navigable\n     * state if the cover is activated and the viewer has been supplied a key.\n     * When the cover is deactivated or the viewer is activated without being\n     * supplied a key it will be navigable.\n     *\n     * @returns {boolean} Boolean indicating whether the viewer is navigable.\n     */\n    public get isNavigable(): boolean {\n        return this._componentController.navigable;\n    }\n\n    /**\n     * Activate a component.\n     *\n     * @param {string} name - Name of the component which will become active.\n     *\n     * @example\n     * ```\n     * viewer.activateComponent(\"marker\");\n     * ```\n     */\n    public activateComponent(name: string): void {\n        this._componentController.activate(name);\n    }\n\n    /**\n     * Activate the cover (deactivates all other components).\n     */\n    public activateCover(): void {\n        this._componentController.activateCover();\n    }\n\n    /**\n     * Deactivate a component.\n     *\n     * @param {string} name - Name of component which become inactive.\n     *\n     * @example\n     * ```\n     * viewer.deactivateComponent(\"mouse\");\n     * ```\n     */\n    public deactivateComponent(name: string): void {\n        this._componentController.deactivate(name);\n    }\n\n    /**\n     * Deactivate the cover (activates all components marked as active).\n     */\n    public deactivateCover(): void {\n        this._componentController.deactivateCover();\n    }\n\n    /**\n     * Get the bearing of the current viewer camera.\n     *\n     * @description The bearing depends on how the camera\n     * is currently rotated and does not correspond\n     * to the compass angle of the current node if the view\n     * has been panned.\n     *\n     * Bearing is measured in degrees clockwise with respect to\n     * north.\n     *\n     * @returns {Promise<number>} Promise to the bearing\n     * of the current viewer camera.\n     *\n     * @example\n     * ```\n     * viewer.getBearing().then((b) => { console.log(b); });\n     * ```\n     */\n    public getBearing(): when.Promise<number> {\n        return when.promise<number>(\n            (resolve: (value: number) => void, reject: (reason: Error) => void): void => {\n                this._container.renderService.bearing$.pipe(\n                    first())\n                    .subscribe(\n                        (bearing: number): void => {\n                            resolve(bearing);\n                        },\n                        (error: Error): void => {\n                            reject(error);\n                        });\n            });\n    }\n\n    /**\n     * Get the basic coordinates of the current image that is\n     * at the center of the viewport.\n     *\n     * @description Basic coordinates are 2D coordinates on the [0, 1] interval\n     * and have the origin point, (0, 0), at the top left corner and the\n     * maximum value, (1, 1), at the bottom right corner of the original\n     * image.\n     *\n     * @returns {Promise<number[]>} Promise to the basic coordinates\n     * of the current image at the center for the viewport.\n     *\n     * @example\n     * ```\n     * viewer.getCenter().then((c) => { console.log(c); });\n     * ```\n     */\n    public getCenter(): when.Promise<number[]> {\n        return when.promise<number[]>(\n            (resolve: (value: number[]) => void, reject: (reason: Error) => void): void => {\n                this._navigator.stateService.getCenter()\n                    .subscribe(\n                        (center: number[]): void => {\n                            resolve(center);\n                        },\n                        (error: Error): void => {\n                            reject(error);\n                        });\n            });\n    }\n\n    /**\n     * Get a component.\n     *\n     * @param {string} name - Name of component.\n     * @returns {Component} The requested component.\n     *\n     * @example\n     * ```\n     * var mouseComponent = viewer.getComponent(\"mouse\");\n     * ```\n     */\n    public getComponent<TComponent extends Component<IComponentConfiguration>>(name: string): TComponent {\n        return this._componentController.get<TComponent>(name);\n    }\n\n    /**\n     * Returns the viewer's containing HTML element.\n     *\n     * @returns {HTMLElement} The viewer's container.\n     */\n    public getContainer(): HTMLElement {\n        return this._container.element;\n    }\n\n    /**\n     * Get the image's current zoom level.\n     *\n     * @returns {Promise<number>} Promise to the viewers's current\n     * zoom level.\n     *\n     * @example\n     * ```\n     * viewer.getZoom().then((z) => { console.log(z); });\n     * ```\n     */\n    public getZoom(): when.Promise<number> {\n         return when.promise<number>(\n            (resolve: (value: number) => void, reject: (reason: Error) => void): void => {\n                this._navigator.stateService.getZoom()\n                    .subscribe(\n                        (zoom: number): void => {\n                            resolve(zoom);\n                        },\n                        (error: Error): void => {\n                            reject(error);\n                        });\n            });\n    }\n\n    /**\n     * Move close to given latitude and longitude.\n     *\n     * @description Because the method propagates IO errors, these potential errors\n     * need to be handled by the method caller (see example).\n     *\n     * @param {Number} lat - Latitude, in degrees.\n     * @param {Number} lon - Longitude, in degrees.\n     * @returns {Promise<Node>} Promise to the node that was navigated to.\n     * @throws {Error} If no nodes exist close to provided latitude\n     * longitude.\n     * @throws {Error} Propagates any IO errors to the caller.\n     * @throws {Error} When viewer is not navigable.\n     * @throws {AbortMapillaryError} When a subsequent move request is made\n     * before the move close to call has completed.\n     *\n     * @example\n     * ```\n     * viewer.moveCloseTo(0, 0).then(\n     *     (n) => { console.log(n); },\n     *     (e) => { console.error(e); });\n     * ```\n     */\n    public moveCloseTo(lat: number, lon: number): when.Promise<Node> {\n        const moveCloseTo$: Observable<Node> = this.isNavigable ?\n            this._navigator.moveCloseTo$(lat, lon) :\n            observableThrowError(new Error(\"Calling moveCloseTo is not supported when viewer is not navigable.\"));\n\n        return when.promise<Node>(\n            (resolve: (value: Node) => void, reject: (reason: Error) => void): void => {\n                moveCloseTo$.subscribe(\n                    (node: Node): void => {\n                        resolve(node);\n                    },\n                    (error: Error): void => {\n                        reject(error);\n                    });\n            });\n    }\n\n    /**\n     * Navigate in a given direction.\n     *\n     * @description This method has to be called through EdgeDirection enumeration as in the example.\n     *\n     * @param {EdgeDirection} dir - Direction in which which to move.\n     * @returns {Promise<Node>} Promise to the node that was navigated to.\n     * @throws {Error} If the current node does not have the edge direction\n     * or the edges has not yet been cached.\n     * @throws {Error} Propagates any IO errors to the caller.\n     * @throws {Error} When viewer is not navigable.\n     * @throws {AbortMapillaryError} When a subsequent move request is made\n     * before the move dir call has completed.\n     *\n     * @example\n     * ```\n     * viewer.moveDir(Mapillary.EdgeDirection.Next).then(\n     *     (n) => { console.log(n); },\n     *     (e) => { console.error(e); });\n     * ```\n     */\n    public moveDir(dir: EdgeDirection): when.Promise<Node> {\n        const moveDir$: Observable<Node> = this.isNavigable ?\n            this._navigator.moveDir$(dir) :\n            observableThrowError(new Error(\"Calling moveDir is not supported when viewer is not navigable.\"));\n\n        return when.promise<Node>(\n            (resolve: (value: Node) => void, reject: (reason: Error) => void): void => {\n                moveDir$.subscribe(\n                    (node: Node): void => {\n                        resolve(node);\n                    },\n                    (error: Error): void => {\n                        reject(error);\n                    });\n            });\n    }\n\n    /**\n     * Navigate to a given image key.\n     *\n     * @param {string} key - A valid Mapillary image key.\n     * @returns {Promise<Node>} Promise to the node that was navigated to.\n     * @throws {Error} Propagates any IO errors to the caller.\n     * @throws {Error} When viewer is not navigable.\n     * @throws {AbortMapillaryError} When a subsequent move request is made\n     * before the move to key call has completed.\n     *\n     * @example\n     * ```\n     * viewer.moveToKey(\"<my key>\").then(\n     *     (n) => { console.log(n); },\n     *     (e) => { console.error(e); });\n     * ```\n     */\n    public moveToKey(key: string): when.Promise<Node> {\n        const moveToKey$: Observable<Node> = this.isNavigable ?\n            this._navigator.moveToKey$(key) :\n            observableThrowError(new Error(\"Calling moveToKey is not supported when viewer is not navigable.\"));\n\n        return when.promise<Node>(\n            (resolve: (value: Node) => void, reject: (reason: Error) => void): void => {\n                moveToKey$.subscribe(\n                    (node: Node): void => {\n                        resolve(node);\n                    },\n                    (error: Error): void => {\n                        reject(error);\n                    });\n            });\n    }\n\n    /**\n     * Project basic image coordinates for the current node to canvas pixel\n     * coordinates.\n     *\n     * @description The basic image coordinates may not always correspond to a\n     * pixel point that lies in the visible area of the viewer container.\n     *\n     * @param {Array<number>} basicPoint - Basic images coordinates to project.\n     * @returns {Promise<Array<number>>} Promise to the pixel coordinates corresponding\n     * to the basic image point.\n     *\n     * @example\n     * ```\n     * viewer.projectFromBasic([0.3, 0.7])\n     *     .then((pixelPoint) => { console.log(pixelPoint); });\n     * ```\n     */\n    public projectFromBasic(basicPoint: number[]): when.Promise<number[]> {\n        return when.promise<number[]>(\n            (resolve: (value: number[]) => void, reject: (reason: Error) => void): void => {\n                this._observer.projectBasic$(basicPoint)\n                    .subscribe(\n                        (pixelPoint: number[]): void => {\n                            resolve(pixelPoint);\n                        },\n                        (error: Error): void => {\n                            reject(error);\n                        });\n            });\n    }\n\n    /**\n     * Detect the viewer's new width and height and resize it.\n     *\n     * @description The components will also detect the viewer's\n     * new size and resize their rendered elements if needed.\n     *\n     * @example\n     * ```\n     * viewer.resize();\n     * ```\n     */\n    public resize(): void {\n        this._container.renderService.resize$.next(null);\n    }\n\n    /**\n     * Set a bearer token for authenticated API requests of\n     * protected resources.\n     *\n     * @description When the supplied token is null or undefined,\n     * any previously set bearer token will be cleared and the\n     * viewer will make unauthenticated requests.\n     *\n     * Calling setAuthToken aborts all outstanding move requests.\n     * The promises of those move requests will be rejected with a\n     * {@link AbortMapillaryError} the rejections need to be caught.\n     *\n     * Calling setAuthToken also resets the complete viewer cache\n     * so it should not be called repeatedly.\n     *\n     * @param {string} [token] token - Bearer token.\n     * @returns {Promise<void>} Promise that resolves after token\n     * is set.\n     *\n     * @throws {Error} When viewer is not navigable.\n     *\n     * @example\n     * ```\n     * viewer.setAuthToken(\"<my token>\")\n     *     .then(() => { console.log(\"token set\"); });\n     * ```\n     */\n    public setAuthToken(token?: string): when.Promise<void> {\n        const setToken$: Observable<void> = this.isNavigable ?\n            this._navigator.setToken$(token) :\n            observableThrowError(new Error(\"Calling setAuthToken is not supported when viewer is not navigable.\"));\n\n        return when.promise<void>(\n            (resolve: (value: void) => void, reject: (reason: Error) => void): void => {\n                setToken$\n                    .subscribe(\n                        (): void => {\n                            resolve(undefined);\n                        },\n                        (error: Error): void => {\n                            reject(error);\n                        });\n            });\n    }\n\n    /**\n     * Set the basic coordinates of the current image to be in the\n     * center of the viewport.\n     *\n     * @description Basic coordinates are 2D coordinates on the [0, 1] interval\n     * and has the origin point, (0, 0), at the top left corner and the\n     * maximum value, (1, 1), at the bottom right corner of the original\n     * image.\n     *\n     * @param {number[]} The basic coordinates of the current\n     * image to be at the center for the viewport.\n     *\n     * @example\n     * ```\n     * viewer.setCenter([0.5, 0.5]);\n     * ```\n     */\n    public setCenter(center: number[]): void {\n        this._navigator.stateService.setCenter(center);\n    }\n\n    /**\n     * Set the filter selecting nodes to use when calculating\n     * the spatial edges.\n     *\n     * @description The following filter types are supported:\n     *\n     * Comparison\n     *\n     * `[\"==\", key, value]` equality: `node[key] = value`\n     *\n     * `[\"!=\", key, value]` inequality: `node[key] ≠ value`\n     *\n     * `[\"<\", key, value]` less than: `node[key] < value`\n     *\n     * `[\"<=\", key, value]` less than or equal: `node[key] ≤ value`\n     *\n     * `[\">\", key, value]` greater than: `node[key] > value`\n     *\n     * `[\">=\", key, value]` greater than or equal: `node[key] ≥ value`\n     *\n     * Set membership\n     *\n     * `[\"in\", key, v0, ..., vn]` set inclusion: `node[key] ∈ {v0, ..., vn}`\n     *\n     * `[\"!in\", key, v0, ..., vn]` set exclusion: `node[key] ∉ {v0, ..., vn}`\n     *\n     * Combining\n     *\n     * `[\"all\", f0, ..., fn]` logical `AND`: `f0 ∧ ... ∧ fn`\n     *\n     * A key must be a string that identifies a property name of a\n     * simple {@link Node} property. A value must be a string, number, or\n     * boolean. Strictly-typed comparisons are used. The values\n     * `f0, ..., fn` of the combining filter must be filter expressions.\n     *\n     * Clear the filter by setting it to null or empty array.\n     *\n     * @param {FilterExpression} filter - The filter expression.\n     * @returns {Promise<void>} Promise that resolves after filter is applied.\n     *\n     * @example\n     * ```\n     * viewer.setFilter([\"==\", \"sequenceKey\", \"<my sequence key>\"]);\n     * ```\n     */\n    public setFilter(filter: FilterExpression): when.Promise<void> {\n        return when.promise<void>(\n            (resolve: (value: void) => void, reject: (reason: Error) => void): void => {\n                this._navigator.setFilter$(filter)\n                    .subscribe(\n                        (): void => {\n                            resolve(undefined);\n                        },\n                        (error: Error): void => {\n                            reject(error);\n                        });\n            });\n    }\n\n    /**\n     * Set the viewer's render mode.\n     *\n     * @param {RenderMode} renderMode - Render mode.\n     *\n     * @example\n     * ```\n     * viewer.setRenderMode(Mapillary.RenderMode.Letterbox);\n     * ```\n     */\n    public setRenderMode(renderMode: RenderMode): void {\n        this._container.renderService.renderMode$.next(renderMode);\n    }\n\n    /**\n     * Set the viewer's transition mode.\n     *\n     * @param {TransitionMode} transitionMode - Transition mode.\n     *\n     * @example\n     * ```\n     * viewer.setTransitionMode(Mapillary.TransitionMode.Instantaneous);\n     * ```\n     */\n    public setTransitionMode(transitionMode: TransitionMode): void {\n        this._navigator.stateService.setTransitionMode(transitionMode);\n    }\n\n    /**\n     * Set the image's current zoom level.\n     *\n     * @description Possible zoom level values are on the [0, 3] interval.\n     * Zero means zooming out to fit the image to the view whereas three\n     * shows the highest level of detail.\n     *\n     * @param {number} The image's current zoom level.\n     *\n     * @example\n     * ```\n     * viewer.setZoom(2);\n     * ```\n     */\n    public setZoom(zoom: number): void {\n        this._navigator.stateService.setZoom(zoom);\n    }\n\n    /**\n     * Unproject canvas pixel coordinates to an ILatLon representing geographical\n     * coordinates.\n     *\n     * @description The pixel point may not always correspond to geographical\n     * coordinates. In the case of no correspondence the returned value will\n     * be `null`.\n     *\n     * @param {Array<number>} pixelPoint - Pixel coordinates to unproject.\n     * @returns {Promise<ILatLon>} Promise to the latLon corresponding to the pixel point.\n     *\n     * @example\n     * ```\n     * viewer.unproject([100, 100])\n     *     .then((latLon) => { console.log(latLon); });\n     * ```\n     */\n    public unproject(pixelPoint: number[]): when.Promise<ILatLon> {\n        return when.promise<ILatLon>(\n            (resolve: (value: ILatLon) => void, reject: (reason: Error) => void): void => {\n                this._observer.unproject$(pixelPoint)\n                    .subscribe(\n                        (latLon: ILatLon): void => {\n                            resolve(latLon);\n                        },\n                        (error: Error): void => {\n                            reject(error);\n                        });\n            });\n    }\n\n    /**\n     * Unproject canvas pixel coordinates to basic image coordinates for the\n     * current node.\n     *\n     * @description The pixel point may not always correspond to basic image\n     * coordinates. In the case of no correspondence the returned value will\n     * be `null`.\n     *\n     * @param {Array<number>} pixelPoint - Pixel coordinates to unproject.\n     * @returns {Promise<ILatLon>} Promise to the basic coordinates corresponding\n     * to the pixel point.\n     *\n     * @example\n     * ```\n     * viewer.unprojectToBasic([100, 100])\n     *     .then((basicPoint) => { console.log(basicPoint); });\n     * ```\n     */\n    public unprojectToBasic(pixelPoint: number[]): when.Promise<number[]> {\n        return when.promise<number[]>(\n            (resolve: (value: number[]) => void, reject: (reason: Error) => void): void => {\n                this._observer.unprojectBasic$(pixelPoint)\n                    .subscribe(\n                        (basicPoint: number[]): void => {\n                            resolve(basicPoint);\n                        },\n                        (error: Error): void => {\n                            reject(error);\n                        });\n            });\n    }\n}\n"
+    "import {\n    throwError as observableThrowError,\n    combineLatest as observableCombineLatest,\n    Observable,\n} from \"rxjs\";\n\nimport {first} from \"rxjs/operators\";\nimport * as when from \"when\";\n\nimport {ILatLon} from \"../API\";\nimport {EdgeDirection} from \"../Edge\";\nimport {\n    FilterExpression,\n    Node,\n} from \"../Graph\";\nimport {\n    ComponentController,\n    Container,\n    IViewerOptions,\n    Navigator,\n    Observer,\n} from \"../Viewer\";\nimport {\n    Component,\n    IComponentConfiguration,\n} from \"../Component\";\nimport {\n    EventEmitter,\n    Settings,\n    Urls,\n} from \"../Utils\";\nimport {RenderMode} from \"../Render\";\nimport {TransitionMode} from \"../State\";\nimport { IPointOfView } from \"./interfaces/interfaces\";\nimport RenderCamera from \"../render/RenderCamera\";\nimport ILatLonAlt from \"../geo/interfaces/ILatLonAlt\";\n\n/**\n * @class Viewer\n *\n * @classdesc The Viewer object represents the navigable image viewer.\n * Create a Viewer by specifying a container, client ID, image key and\n * other options. The viewer exposes methods and events for programmatic\n * interaction.\n *\n * In the case of asynchronous methods, MapillaryJS returns promises to\n * the results. Notifications are always emitted through JavaScript events.\n *\n * The viewer works with a few different coordinate systems.\n *\n * Container pixel coordinates\n *\n * Pixel coordinates are coordinates on the viewer container. The origin is\n * in the top left corner of the container. The axes are\n * directed according to the following for a viewer container with a width\n * of 640 pixels and height of 480 pixels.\n *\n * ```\n * (0,0)                          (640, 0)\n *      +------------------------>\n *      |\n *      |\n *      |\n *      v                        +\n * (0, 480)                       (640, 480)\n * ```\n *\n * Basic image coordinates\n *\n * Basic image coordinates represents points in the original image adjusted for\n * orientation. They range from 0 to 1 on both axes. The origin is in the top left\n * corner of the image and the axes are directed\n * according to the following for all image types.\n *\n * ```\n * (0,0)                          (1, 0)\n *      +------------------------>\n *      |\n *      |\n *      |\n *      v                        +\n * (0, 1)                         (1, 1)\n * ```\n *\n * For every camera viewing direction it is possible to convert between these\n * two coordinate systems for the current node. The image can be panned and\n * zoomed independently of the size of the viewer container resulting in\n * different conversion results for different viewing directions.\n */\nexport class Viewer extends EventEmitter {\n    /**\n     * Fired when the viewing direction of the camera changes.\n     *\n     * @description Related to the computed compass angle\n     * ({@link Node.computedCA}) from SfM, not the original EXIF compass\n     * angle.\n     *\n     * @event\n     * @type {number} bearing - Value indicating the current bearing\n     * measured in degrees clockwise with respect to north.\n     */\n    public static bearingchanged: string = \"bearingchanged\";\n\n    /**\n     * Fired when a pointing device (usually a mouse) is pressed and released at\n     * the same point in the viewer.\n     * @event\n     * @type  {@link IViewerMouseEvent} event - Viewer mouse event data.\n     */\n    public static click: string = \"click\";\n\n    /**\n     * Fired when the right button of the mouse is clicked within the viewer.\n     * @event\n     * @type  {@link IViewerMouseEvent} event - Viewer mouse event data.\n     */\n    public static contextmenu: string = \"contextmenu\";\n\n    /**\n     * Fired when a pointing device (usually a mouse) is clicked twice at\n     * the same point in the viewer.\n     * @event\n     * @type  {@link IViewerMouseEvent} event - Viewer mouse event data.\n     */\n    public static dblclick: string = \"dblclick\";\n\n    /**\n     * Fired when the viewer's vertical field of view changes.\n     *\n     * @event\n     * @type  {@link IViewerEvent} event - The event object.\n     */\n    public static fovchanged: string = \"fovchanged\";\n\n    /**\n     * Fired when the viewer is loading more data.\n     * @event\n     * @type {boolean} loading - Boolean indicating whether the viewer is loading.\n     */\n    public static loadingchanged: string = \"loadingchanged\";\n\n    /**\n     * Fired when a pointing device (usually a mouse) is pressed within the viewer.\n     * @event\n     * @type  {@link IViewerMouseEvent} event - Viewer mouse event data.\n     */\n    public static mousedown: string = \"mousedown\";\n\n    /**\n     * Fired when a pointing device (usually a mouse) is moved within the viewer.\n     * @description Will not fire when the mouse is actively used, e.g. for drag pan.\n     * @event\n     * @type  {@link IViewerMouseEvent} event - Viewer mouse event data.\n     */\n    public static mousemove: string = \"mousemove\";\n\n    /**\n     * Fired when a pointing device (usually a mouse) leaves the viewer's canvas.\n     * @event\n     * @type  {@link IViewerMouseEvent} event - Viewer mouse event data.\n     */\n    public static mouseout: string = \"mouseout\";\n\n    /**\n     * Fired when a pointing device (usually a mouse) is moved onto the viewer's canvas.\n     * @event\n     * @type  {@link IViewerMouseEvent} event - Viewer mouse event data.\n     */\n    public static mouseover: string = \"mouseover\";\n\n    /**\n     * Fired when a pointing device (usually a mouse) is released within the viewer.\n     * @event\n     * @type  {@link IViewerMouseEvent} event - Viewer mouse event data.\n     */\n    public static mouseup: string = \"mouseup\";\n\n    /**\n     * Fired when the viewer motion stops and it is in a fixed\n     * position with a fixed point of view.\n     * @event\n     */\n    public static moveend: string = \"moveend\";\n\n    /**\n     * Fired when the motion from one view to another start,\n     * either by changing the position (e.g. when changing node) or\n     * when changing point of view (e.g. by interaction such as pan and zoom).\n     * @event\n     */\n    public static movestart: string = \"movestart\";\n\n    /**\n     * Fired when the navigable state of the viewer changes.\n     *\n     * @description The navigable state indicates if the viewer supports\n     * moving, i.e. calling the `moveToKey`, `moveDir` and `moveCloseTo`\n     * methods. The viewer will not be in a navigable state if the cover\n     * is activated and the viewer has been supplied a key. When the cover\n     * is deactivated or activated without being supplied a key it will\n     * be navigable.\n     *\n     * @event\n     * @type {boolean} navigable - Boolean indicating whether the viewer is navigable.\n     */\n    public static navigablechanged: string = \"navigablechanged\";\n\n    /**\n     * Fired every time the viewer navigates to a new node.\n     *\n     * @event\n     * @type  {@link Node} node - Current node.\n     */\n    public static nodechanged: string = \"nodechanged\";\n\n    /**\n     * Fired when the viewer's position changes.\n     *\n     * @description The viewer's position changes when transitioning\n     * between nodes.\n     *\n     * @event\n     * @type  {@link IViewerEvent} event - The event object.\n     */\n    public static positionchanged: string = \"positionchanged\";\n\n    /**\n     * Fired when the viewer's point of view changes. The point of view changes\n     * when the bearing, or tilt changes.\n     *\n     * @event\n     * @type  {@link IViewerEvent} event - The event object.\n     */\n    public static povchanged: string = \"povchanged\";\n\n    /**\n     * Fired every time the sequence edges of the current node changes.\n     * @event\n     * @type  {@link IEdgeStatus} status - The edge status object.\n     */\n    public static sequenceedgeschanged: string = \"sequenceedgeschanged\";\n\n    /**\n     * Fired every time the spatial edges of the current node changes.\n     * @event\n     * @type  {@link IEdgeStatus} status - The edge status object.\n     */\n    public static spatialedgeschanged: string = \"spatialedgeschanged\";\n\n    /**\n     * Private component controller object which manages component states.\n     */\n    private _componentController: ComponentController;\n\n    /**\n     * Private container object which maintains the DOM Element,\n     * renderers and relevant services.\n     */\n    private _container: Container;\n\n    /**\n     * Private observer object which observes the viewer state and\n     * fires events on behalf of the viewer.\n     */\n    private _observer: Observer;\n\n    /**\n     * Private navigator object which controls navigation throught\n     * the vast seas of Mapillary.\n     */\n    private _navigator: Navigator;\n\n    /**\n     * Create a new viewer instance.\n     *\n     * @description It is possible to initialize the viewer with or\n     * without a key.\n     *\n     * When you want to show a specific image in the viewer from\n     * the start you should initialize it with a key.\n     *\n     * When you do not know the first image key at implementation\n     * time, e.g. in a map-viewer application you should initialize\n     * the viewer without a key and call `moveToKey` instead.\n     *\n     * When initializing with a key the viewer is bound to that key\n     * until the node for that key has been successfully loaded.\n     * Also, a cover with the image of the key will be shown.\n     * If the data for that key can not be loaded because the key is\n     * faulty or other errors occur it is not possible to navigate\n     * to another key because the viewer is not navigable. The viewer\n     * becomes navigable when the data for the key has been loaded and\n     * the image is shown in the viewer. This way of initializing\n     * the viewer is mostly for embedding in blog posts and similar\n     * where one wants to show a specific image initially.\n     *\n     * If the viewer is initialized without a key (with null or\n     * undefined) it is not bound to any particular key and it is\n     * possible to move to any key with `viewer.moveToKey(\"<my-image-key>\")`.\n     * If the first move to a key fails it is possible to move to another\n     * key. The viewer will show a black background until a move\n     * succeeds. This way of intitializing is suited for a map-viewer\n     * application when the initial key is not known at implementation\n     * time.\n     *\n     * @param {string} id - Required `id` of a DOM element which will\n     * be transformed into the viewer.\n     * @param {string} clientId - Required `Mapillary API ClientID`. Can\n     * be obtained from https://www.mapillary.com/app/settings/developers.\n     * @param {string} key - Optional `image-key` to start from. The key\n     * can be any Mapillary image. If a key is provided the viewer is\n     * bound to that key until it has been fully loaded. If null is provided\n     * no image is loaded at viewer initialization and the viewer is not\n     * bound to any particular key. Any image can then be navigated to\n     * with e.g. `viewer.moveToKey(\"<my-image-key>\")`.\n     * @param {IViewerOptions} options - Optional configuration object\n     * specifing Viewer's and the components' initial setup.\n     * @param {string} token - Optional bearer token for API requests of\n     * protected resources.\n     *\n     * @example\n     * ```\n     * var viewer = new Mapillary.Viewer(\"<element-id>\", \"<client-id>\", \"<image-key>\");\n     * ```\n     */\n    constructor (id: string, clientId: string, key?: string, options?: IViewerOptions, token?: string) {\n        super();\n\n        options = options != null ? options : {};\n\n        Settings.setOptions(options);\n        Urls.setOptions(options.url);\n\n        this._navigator = new Navigator(clientId, options, token);\n        this._container = new Container(id, this._navigator.stateService, options);\n        this._observer = new Observer(this, this._navigator, this._container);\n        this._componentController = new ComponentController(this._container, this._navigator, this._observer, key, options.component);\n    }\n\n    /**\n     * Return a boolean indicating if the viewer is in a navigable state.\n     *\n     * @description The navigable state indicates if the viewer supports\n     * moving, i.e. calling the {@link moveToKey}, {@link moveDir}\n     * and {@link moveCloseTo} methods or changing the authentication state,\n     * i.e. calling {@link setAuthToken}. The viewer will not be in a navigable\n     * state if the cover is activated and the viewer has been supplied a key.\n     * When the cover is deactivated or the viewer is activated without being\n     * supplied a key it will be navigable.\n     *\n     * @returns {boolean} Boolean indicating whether the viewer is navigable.\n     */\n    public get isNavigable(): boolean {\n        return this._componentController.navigable;\n    }\n\n    /**\n     * Activate the combined panning functionality.\n     *\n     * @description The combined panning functionality is active by default.\n     */\n    public activateCombinedPanning(): void {\n        this._navigator.panService.enable();\n    }\n\n    /**\n     * Activate a component.\n     *\n     * @param {string} name - Name of the component which will become active.\n     *\n     * @example\n     * ```\n     * viewer.activateComponent(\"marker\");\n     * ```\n     */\n    public activateComponent(name: string): void {\n        this._componentController.activate(name);\n    }\n\n    /**\n     * Activate the cover (deactivates all other components).\n     */\n    public activateCover(): void {\n        this._componentController.activateCover();\n    }\n\n    /**\n     * Deactivate the combined panning functionality.\n     *\n     * @description Deactivating the combined panning functionality\n     * could be needed in scenarios involving sequence only navigation.\n     */\n    public deactivateCombinedPanning(): void {\n        this._navigator.panService.disable();\n    }\n\n    /**\n     * Deactivate a component.\n     *\n     * @param {string} name - Name of component which become inactive.\n     *\n     * @example\n     * ```\n     * viewer.deactivateComponent(\"mouse\");\n     * ```\n     */\n    public deactivateComponent(name: string): void {\n        this._componentController.deactivate(name);\n    }\n\n    /**\n     * Deactivate the cover (activates all components marked as active).\n     */\n    public deactivateCover(): void {\n        this._componentController.deactivateCover();\n    }\n\n    /**\n     * Get the bearing of the current viewer camera.\n     *\n     * @description The bearing depends on how the camera\n     * is currently rotated and does not correspond\n     * to the compass angle of the current node if the view\n     * has been panned.\n     *\n     * Bearing is measured in degrees clockwise with respect to\n     * north.\n     *\n     * @returns {Promise<number>} Promise to the bearing\n     * of the current viewer camera.\n     *\n     * @example\n     * ```\n     * viewer.getBearing().then((b) => { console.log(b); });\n     * ```\n     */\n    public getBearing(): when.Promise<number> {\n        return when.promise<number>(\n            (resolve: (value: number) => void, reject: (reason: Error) => void): void => {\n                this._container.renderService.bearing$.pipe(\n                    first())\n                    .subscribe(\n                        (bearing: number): void => {\n                            resolve(bearing);\n                        },\n                        (error: Error): void => {\n                            reject(error);\n                        });\n            });\n    }\n\n    /**\n     * Returns the HTML element containing the viewer's <canvas> element.\n     *\n     * @description This is the element to which event bindings for viewer\n     * interactivity (such as panning and zooming) are attached.\n     *\n     * @returns {HTMLElement} The container viewer's <canvas> element.\n     */\n    public getCanvasContainer(): HTMLElement {\n        return this._container.canvasContainer;\n    }\n\n    /**\n     * Get the basic coordinates of the current image that is\n     * at the center of the viewport.\n     *\n     * @description Basic coordinates are 2D coordinates on the [0, 1] interval\n     * and have the origin point, (0, 0), at the top left corner and the\n     * maximum value, (1, 1), at the bottom right corner of the original\n     * image.\n     *\n     * @returns {Promise<number[]>} Promise to the basic coordinates\n     * of the current image at the center for the viewport.\n     *\n     * @example\n     * ```\n     * viewer.getCenter().then((c) => { console.log(c); });\n     * ```\n     */\n    public getCenter(): when.Promise<number[]> {\n        return when.promise<number[]>(\n            (resolve: (value: number[]) => void, reject: (reason: Error) => void): void => {\n                this._navigator.stateService.getCenter()\n                    .subscribe(\n                        (center: number[]): void => {\n                            resolve(center);\n                        },\n                        (error: Error): void => {\n                            reject(error);\n                        });\n            });\n    }\n\n    /**\n     * Get a component.\n     *\n     * @param {string} name - Name of component.\n     * @returns {Component} The requested component.\n     *\n     * @example\n     * ```\n     * var mouseComponent = viewer.getComponent(\"mouse\");\n     * ```\n     */\n    public getComponent<TComponent extends Component<IComponentConfiguration>>(name: string): TComponent {\n        return this._componentController.get<TComponent>(name);\n    }\n\n    /**\n     * Returns the viewer's containing HTML element.\n     *\n     * @returns {HTMLElement} The viewer's container.\n     */\n    public getContainer(): HTMLElement {\n        return this._container.element;\n    }\n\n    /**\n     * Get the viewer's current vertical field of view.\n     *\n     * @description The vertical field of view rendered on the viewer canvas\n     * measured in degrees.\n     *\n     * @returns {Promise<number>} Promise to the current field of view\n     * of the viewer camera.\n     *\n     * @example\n     * ```\n     * viewer.getFieldOfView().then((fov) => { console.log(fov); });\n     * ```\n     */\n    public getFieldOfView(): when.Promise<number> {\n        return when.promise<number>(\n            (resolve: (value: number) => void, reject: (reason: Error) => void): void => {\n                this._container.renderService.renderCamera$.pipe(\n                    first())\n                    .subscribe(\n                        (rc: RenderCamera): void => {\n                            resolve(rc.perspective.fov);\n                        },\n                        (error: Error): void => {\n                            reject(error);\n                        });\n            });\n    }\n\n    /**\n     * Get the viewer's current point of view.\n     *\n     * @returns {Promise<IPointOfView>} Promise to the current point of view\n     * of the viewer camera.\n     *\n     * @example\n     * ```\n     * viewer.getPointOfView().then((pov) => { console.log(pov); });\n     * ```\n     */\n    public getPointOfView(): when.Promise<IPointOfView> {\n        return when.promise<IPointOfView>(\n            (resolve: (value: IPointOfView) => void, reject: (reason: Error) => void): void => {\n                observableCombineLatest(\n                    this._container.renderService.renderCamera$,\n                    this._container.renderService.bearing$).pipe(\n                    first())\n                    .subscribe(\n                        ([rc, bearing]: [RenderCamera, number]): void => {\n                            resolve({\n                                bearing: bearing,\n                                tilt: rc.getTilt(),\n                            });\n                        },\n                        (error: Error): void => {\n                            reject(error);\n                        });\n            });\n    }\n\n    /**\n     * Get the viewer's current position\n     *\n     * @returns {Promise<ILatLon>} Promise to the viewers's current\n     * position.\n     *\n     * @example\n     * ```\n     * viewer.getPosition().then((pos) => { console.log(pos); });\n     * ```\n     */\n    public getPosition(): when.Promise<ILatLon> {\n        return when.promise<ILatLon>(\n            (resolve: (value: ILatLon) => void, reject: (reason: Error) => void): void => {\n                observableCombineLatest(\n                    this._container.renderService.renderCamera$,\n                    this._navigator.stateService.reference$).pipe(\n                    first())\n                    .subscribe(\n                        ([render, reference]: [RenderCamera, ILatLonAlt]): void => {\n                            resolve(this._observer.projection.cameraToLatLon(render, reference));\n                        },\n                        (error: Error): void => {\n                            reject(error);\n                        });\n            });\n    }\n\n    /**\n     * Get the image's current zoom level.\n     *\n     * @returns {Promise<number>} Promise to the viewers's current\n     * zoom level.\n     *\n     * @example\n     * ```\n     * viewer.getZoom().then((z) => { console.log(z); });\n     * ```\n     */\n    public getZoom(): when.Promise<number> {\n         return when.promise<number>(\n            (resolve: (value: number) => void, reject: (reason: Error) => void): void => {\n                this._navigator.stateService.getZoom()\n                    .subscribe(\n                        (zoom: number): void => {\n                            resolve(zoom);\n                        },\n                        (error: Error): void => {\n                            reject(error);\n                        });\n            });\n    }\n\n    /**\n     * Move close to given latitude and longitude.\n     *\n     * @description Because the method propagates IO errors, these potential errors\n     * need to be handled by the method caller (see example).\n     *\n     * @param {Number} lat - Latitude, in degrees.\n     * @param {Number} lon - Longitude, in degrees.\n     * @returns {Promise<Node>} Promise to the node that was navigated to.\n     * @throws {Error} If no nodes exist close to provided latitude\n     * longitude.\n     * @throws {Error} Propagates any IO errors to the caller.\n     * @throws {Error} When viewer is not navigable.\n     * @throws  {@link AbortMapillaryError} When a subsequent move request is made\n     * before the move close to call has completed.\n     *\n     * @example\n     * ```\n     * viewer.moveCloseTo(0, 0).then(\n     *     (n) => { console.log(n); },\n     *     (e) => { console.error(e); });\n     * ```\n     */\n    public moveCloseTo(lat: number, lon: number): when.Promise<Node> {\n        const moveCloseTo$: Observable<Node> = this.isNavigable ?\n            this._navigator.moveCloseTo$(lat, lon) :\n            observableThrowError(new Error(\"Calling moveCloseTo is not supported when viewer is not navigable.\"));\n\n        return when.promise<Node>(\n            (resolve: (value: Node) => void, reject: (reason: Error) => void): void => {\n                moveCloseTo$.subscribe(\n                    (node: Node): void => {\n                        resolve(node);\n                    },\n                    (error: Error): void => {\n                        reject(error);\n                    });\n            });\n    }\n\n    /**\n     * Navigate in a given direction.\n     *\n     * @description This method has to be called through EdgeDirection enumeration as in the example.\n     *\n     * @param {EdgeDirection} dir - Direction in which which to move.\n     * @returns {Promise<Node>} Promise to the node that was navigated to.\n     * @throws {Error} If the current node does not have the edge direction\n     * or the edges has not yet been cached.\n     * @throws {Error} Propagates any IO errors to the caller.\n     * @throws {Error} When viewer is not navigable.\n     * @throws  {@link AbortMapillaryError} When a subsequent move request is made\n     * before the move dir call has completed.\n     *\n     * @example\n     * ```\n     * viewer.moveDir(Mapillary.EdgeDirection.Next).then(\n     *     (n) => { console.log(n); },\n     *     (e) => { console.error(e); });\n     * ```\n     */\n    public moveDir(dir: EdgeDirection): when.Promise<Node> {\n        const moveDir$: Observable<Node> = this.isNavigable ?\n            this._navigator.moveDir$(dir) :\n            observableThrowError(new Error(\"Calling moveDir is not supported when viewer is not navigable.\"));\n\n        return when.promise<Node>(\n            (resolve: (value: Node) => void, reject: (reason: Error) => void): void => {\n                moveDir$.subscribe(\n                    (node: Node): void => {\n                        resolve(node);\n                    },\n                    (error: Error): void => {\n                        reject(error);\n                    });\n            });\n    }\n\n    /**\n     * Navigate to a given image key.\n     *\n     * @param {string} key - A valid Mapillary image key.\n     * @returns {Promise<Node>} Promise to the node that was navigated to.\n     * @throws {Error} Propagates any IO errors to the caller.\n     * @throws {Error} When viewer is not navigable.\n     * @throws  {@link AbortMapillaryError} When a subsequent move request is made\n     * before the move to key call has completed.\n     *\n     * @example\n     * ```\n     * viewer.moveToKey(\"<my key>\").then(\n     *     (n) => { console.log(n); },\n     *     (e) => { console.error(e); });\n     * ```\n     */\n    public moveToKey(key: string): when.Promise<Node> {\n        const moveToKey$: Observable<Node> = this.isNavigable ?\n            this._navigator.moveToKey$(key) :\n            observableThrowError(new Error(\"Calling moveToKey is not supported when viewer is not navigable.\"));\n\n        return when.promise<Node>(\n            (resolve: (value: Node) => void, reject: (reason: Error) => void): void => {\n                moveToKey$.subscribe(\n                    (node: Node): void => {\n                        resolve(node);\n                    },\n                    (error: Error): void => {\n                        reject(error);\n                    });\n            });\n    }\n\n    /**\n     * Project an ILatLon representing geographicalcoordinates to\n     * canvas pixel coordinates.\n     *\n     * @description The geographical coordinates may not always correspond to pixel\n     * coordinates, e.g. if the geographical coordinates have a position behind the\n     * viewer camera. In the case of no correspondence the returned value will\n     * be `null`.\n     *\n     * If the distance from the viewer camera position to the provided lat-lon\n     * is more than 1000 meters `null` will be returned.\n     *\n     * The projection is performed from the ground plane, i.e.\n     * the altitude with respect to the ground plane for the geographical\n     * point is zero.\n     *\n     * Note that whenever the camera moves, the result of the method will be\n     * different.\n     *\n     * @param {ILatLon} latLon - Geographical coordinates to project.\n     * @returns {Promise<Array<number>>} Promise to the pixel coordinates corresponding\n     * to the latLon.\n     *\n     * @example\n     * ```\n     * viewer.project({ lat: 0, lon: 0 })\n     *     .then((pixelPoint) => {\n     *          if (!pixelPoint) {\n     *              console.log(\"no correspondence\");\n     *          }\n     *\n     *          console.log(pixelPoint);\n     *     });\n     * ```\n     */\n    public project(latLon: ILatLon): when.Promise<number[]> {\n        return when.promise<number[]>(\n            (resolve: (value: number[]) => void, reject: (reason: Error) => void): void => {\n                this._observer.project$(latLon)\n                    .subscribe(\n                        (pixelPoint: number[]): void => {\n                            resolve(pixelPoint);\n                        },\n                        (error: Error): void => {\n                            reject(error);\n                        });\n            });\n    }\n\n    /**\n     * Project basic image coordinates for the current node to canvas pixel\n     * coordinates.\n     *\n     * @description The basic image coordinates may not always correspond to a\n     * pixel point that lies in the visible area of the viewer container. In the\n     * case of no correspondence the returned value can be `null`.\n     *\n     *\n     * @param {Array<number>} basicPoint - Basic images coordinates to project.\n     * @returns {Promise<Array<number>>} Promise to the pixel coordinates corresponding\n     * to the basic image point.\n     *\n     * @example\n     * ```\n     * viewer.projectFromBasic([0.3, 0.7])\n     *     .then((pixelPoint) => { console.log(pixelPoint); });\n     * ```\n     */\n    public projectFromBasic(basicPoint: number[]): when.Promise<number[]> {\n        return when.promise<number[]>(\n            (resolve: (value: number[]) => void, reject: (reason: Error) => void): void => {\n                this._observer.projectBasic$(basicPoint)\n                    .subscribe(\n                        (pixelPoint: number[]): void => {\n                            resolve(pixelPoint);\n                        },\n                        (error: Error): void => {\n                            reject(error);\n                        });\n            });\n    }\n\n    /**\n     * Detect the viewer's new width and height and resize it.\n     *\n     * @description The components will also detect the viewer's\n     * new size and resize their rendered elements if needed.\n     *\n     * @example\n     * ```\n     * viewer.resize();\n     * ```\n     */\n    public resize(): void {\n        this._container.renderService.resize$.next(null);\n    }\n\n    /**\n     * Set a bearer token for authenticated API requests of\n     * protected resources.\n     *\n     * @description When the supplied token is null or undefined,\n     * any previously set bearer token will be cleared and the\n     * viewer will make unauthenticated requests.\n     *\n     * Calling setAuthToken aborts all outstanding move requests.\n     * The promises of those move requests will be rejected with a\n     * {@link AbortMapillaryError} the rejections need to be caught.\n     *\n     * Calling setAuthToken also resets the complete viewer cache\n     * so it should not be called repeatedly.\n     *\n     * @param {string} [token] token - Bearer token.\n     * @returns {Promise<void>} Promise that resolves after token\n     * is set.\n     *\n     * @throws {Error} When viewer is not navigable.\n     *\n     * @example\n     * ```\n     * viewer.setAuthToken(\"<my token>\")\n     *     .then(() => { console.log(\"token set\"); });\n     * ```\n     */\n    public setAuthToken(token?: string): when.Promise<void> {\n        const setToken$: Observable<void> = this.isNavigable ?\n            this._navigator.setToken$(token) :\n            observableThrowError(new Error(\"Calling setAuthToken is not supported when viewer is not navigable.\"));\n\n        return when.promise<void>(\n            (resolve: (value: void) => void, reject: (reason: Error) => void): void => {\n                setToken$\n                    .subscribe(\n                        (): void => {\n                            resolve(undefined);\n                        },\n                        (error: Error): void => {\n                            reject(error);\n                        });\n            });\n    }\n\n    /**\n     * Set the basic coordinates of the current image to be in the\n     * center of the viewport.\n     *\n     * @description Basic coordinates are 2D coordinates on the [0, 1] interval\n     * and has the origin point, (0, 0), at the top left corner and the\n     * maximum value, (1, 1), at the bottom right corner of the original\n     * image.\n     *\n     * @param {number[]} The basic coordinates of the current\n     * image to be at the center for the viewport.\n     *\n     * @example\n     * ```\n     * viewer.setCenter([0.5, 0.5]);\n     * ```\n     */\n    public setCenter(center: number[]): void {\n        this._navigator.stateService.setCenter(center);\n    }\n\n    /**\n     * Set the filter selecting nodes to use when calculating\n     * the spatial edges.\n     *\n     * @description The following filter types are supported:\n     *\n     * Comparison\n     *\n     * `[\"==\", key, value]` equality: `node[key] = value`\n     *\n     * `[\"!=\", key, value]` inequality: `node[key] ≠ value`\n     *\n     * `[\"<\", key, value]` less than: `node[key] < value`\n     *\n     * `[\"<=\", key, value]` less than or equal: `node[key] ≤ value`\n     *\n     * `[\">\", key, value]` greater than: `node[key] > value`\n     *\n     * `[\">=\", key, value]` greater than or equal: `node[key] ≥ value`\n     *\n     * Set membership\n     *\n     * `[\"in\", key, v0, ..., vn]` set inclusion: `node[key] ∈ {v0, ..., vn}`\n     *\n     * `[\"!in\", key, v0, ..., vn]` set exclusion: `node[key] ∉ {v0, ..., vn}`\n     *\n     * Combining\n     *\n     * `[\"all\", f0, ..., fn]` logical `AND`: `f0 ∧ ... ∧ fn`\n     *\n     * A key must be a string that identifies a property name of a\n     * simple {@link Node} property. A value must be a string, number, or\n     * boolean. Strictly-typed comparisons are used. The values\n     * `f0, ..., fn` of the combining filter must be filter expressions.\n     *\n     * Clear the filter by setting it to null or empty array.\n     *\n     * Commonly used filter properties (see the {@link Node} class\n     * documentation for a full list of properties that can be used\n     * in a filter) and common use cases:\n     *\n     * ```\n     * fullPano        // Show only full 360 panoramas or not\n     * organizationKey // Show images from one or several organizations\n     * sequenceKey     // Show images from one or several sequences\n     * userKey         // Show images from one or several users\n     * capturedAt      // Show images from a certain time interval\n     * ```\n     *\n     * @param {FilterExpression} filter - The filter expression.\n     * @returns {Promise<void>} Promise that resolves after filter is applied.\n     *\n     * @example\n     * ```\n     * viewer.setFilter([\"==\", \"sequenceKey\", \"<my sequence key>\"]);\n     *\n     * // Other examples\n     * // viewer.setFilter([\"==\", \"organizationKey\", \"<my organization key>\"]);\n     * // viewer.setFilter([\"in\", \"userKey\", \"<my user key #1>\", \"<my user key #2>\"]);\n     * // viewer.setFilter([\"==\", \"fullPano\", true]);\n     * // viewer.setFilter([\">=\", \"capturedAt\", <my time stamp>]);\n     * ```\n     */\n    public setFilter(filter: FilterExpression): when.Promise<void> {\n        return when.promise<void>(\n            (resolve: (value: void) => void, reject: (reason: Error) => void): void => {\n                this._navigator.setFilter$(filter)\n                    .subscribe(\n                        (): void => {\n                            resolve(undefined);\n                        },\n                        (error: Error): void => {\n                            reject(error);\n                        });\n            });\n    }\n\n    /**\n     * Set the viewer's current vertical field of view.\n     *\n     * @description Sets the vertical field of view rendered\n     * on the viewer canvas measured in degrees. The value\n     * will be clamped to be able to set a valid zoom level\n     * based on the projection model of the current image and\n     * the viewer's current render mode.\n     *\n     * @param {number} fov - Vertical field of view in degrees.\n     *\n     * @example\n     * ```\n     * viewer.setFieldOfView(45);\n     * ```\n     */\n    public setFieldOfView(fov: number): void {\n        this._container.renderService.renderCamera$.pipe(\n            first())\n            .subscribe(\n                (rc: RenderCamera): void => {\n                    const zoom: number = rc.fovToZoom(fov);\n                    this._navigator.stateService.setZoom(zoom);\n                });\n    }\n\n    /**\n     * Set the viewer's render mode.\n     *\n     * @param {RenderMode} renderMode - Render mode.\n     *\n     * @example\n     * ```\n     * viewer.setRenderMode(Mapillary.RenderMode.Letterbox);\n     * ```\n     */\n    public setRenderMode(renderMode: RenderMode): void {\n        this._container.renderService.renderMode$.next(renderMode);\n    }\n\n    /**\n     * Set the viewer's transition mode.\n     *\n     * @param {TransitionMode} transitionMode - Transition mode.\n     *\n     * @example\n     * ```\n     * viewer.setTransitionMode(Mapillary.TransitionMode.Instantaneous);\n     * ```\n     */\n    public setTransitionMode(transitionMode: TransitionMode): void {\n        this._navigator.stateService.setTransitionMode(transitionMode);\n    }\n\n    /**\n     * Set the image's current zoom level.\n     *\n     * @description Possible zoom level values are on the [0, 3] interval.\n     * Zero means zooming out to fit the image to the view whereas three\n     * shows the highest level of detail.\n     *\n     * @param {number} The image's current zoom level.\n     *\n     * @example\n     * ```\n     * viewer.setZoom(2);\n     * ```\n     */\n    public setZoom(zoom: number): void {\n        this._navigator.stateService.setZoom(zoom);\n    }\n\n    /**\n     * Unproject canvas pixel coordinates to an ILatLon representing geographical\n     * coordinates.\n     *\n     * @description The pixel point may not always correspond to geographical\n     * coordinates. In the case of no correspondence the returned value will\n     * be `null`.\n     *\n     * The unprojection to a latLon will be performed towards the ground plane, i.e.\n     * the altitude with respect to the ground plane for the returned latLon is zero.\n     *\n     * @param {Array<number>} pixelPoint - Pixel coordinates to unproject.\n     * @returns {Promise<ILatLon>} Promise to the latLon corresponding to the pixel point.\n     *\n     * @example\n     * ```\n     * viewer.unproject([100, 100])\n     *     .then((latLon) => { console.log(latLon); });\n     * ```\n     */\n    public unproject(pixelPoint: number[]): when.Promise<ILatLon> {\n        return when.promise<ILatLon>(\n            (resolve: (value: ILatLon) => void, reject: (reason: Error) => void): void => {\n                this._observer.unproject$(pixelPoint)\n                    .subscribe(\n                        (latLon: ILatLon): void => {\n                            resolve(latLon);\n                        },\n                        (error: Error): void => {\n                            reject(error);\n                        });\n            });\n    }\n\n    /**\n     * Unproject canvas pixel coordinates to basic image coordinates for the\n     * current node.\n     *\n     * @description The pixel point may not always correspond to basic image\n     * coordinates. In the case of no correspondence the returned value will\n     * be `null`.\n     *\n     * @param {Array<number>} pixelPoint - Pixel coordinates to unproject.\n     * @returns {Promise<ILatLon>} Promise to the basic coordinates corresponding\n     * to the pixel point.\n     *\n     * @example\n     * ```\n     * viewer.unprojectToBasic([100, 100])\n     *     .then((basicPoint) => { console.log(basicPoint); });\n     * ```\n     */\n    public unprojectToBasic(pixelPoint: number[]): when.Promise<number[]> {\n        return when.promise<number[]>(\n            (resolve: (value: number[]) => void, reject: (reason: Error) => void): void => {\n                this._observer.unprojectBasic$(pixelPoint)\n                    .subscribe(\n                        (basicPoint: number[]): void => {\n                            resolve(basicPoint);\n                        },\n                        (error: Error): void => {\n                            reject(error);\n                        });\n            });\n    }\n}\n"
   ]
 }
\ No newline at end of file