cesium 1.18.0 → 1.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2692) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/Cesium/Assets/Textures/NaturalEarthII/tilemapresource.xml +2 -3
  3. data/app/assets/javascripts/Cesium/Assets/approximateTerrainHeights.json +1 -0
  4. data/app/assets/javascripts/Cesium/Cesium.js +26 -7
  5. data/app/assets/javascripts/Cesium/Core/ArcGisImageServerTerrainProvider.js +2 -2
  6. data/app/assets/javascripts/Cesium/Core/AssociativeArray.js +1 -1
  7. data/app/assets/javascripts/Cesium/Core/AttributeCompression.js +1 -1
  8. data/app/assets/javascripts/Cesium/Core/AxisAlignedBoundingBox.js +1 -1
  9. data/app/assets/javascripts/Cesium/Core/BingMapsApi.js +19 -3
  10. data/app/assets/javascripts/Cesium/Core/BoundingRectangle.js +60 -1
  11. data/app/assets/javascripts/Cesium/Core/BoundingSphere.js +1 -1
  12. data/app/assets/javascripts/Cesium/Core/BoxGeometry.js +7 -38
  13. data/app/assets/javascripts/Cesium/Core/BoxOutlineGeometry.js +6 -2
  14. data/app/assets/javascripts/Cesium/Core/Cartesian2.js +56 -1
  15. data/app/assets/javascripts/Cesium/Core/Cartesian3.js +125 -39
  16. data/app/assets/javascripts/Cesium/Core/Cartesian4.js +56 -1
  17. data/app/assets/javascripts/Cesium/Core/Cartographic.js +1 -1
  18. data/app/assets/javascripts/Cesium/Core/CatmullRomSpline.js +1 -1
  19. data/app/assets/javascripts/Cesium/Core/CesiumTerrainProvider.js +3 -3
  20. data/app/assets/javascripts/Cesium/Core/CircleGeometry.js +15 -5
  21. data/app/assets/javascripts/Cesium/Core/CircleOutlineGeometry.js +2 -5
  22. data/app/assets/javascripts/Cesium/Core/Clock.js +177 -73
  23. data/app/assets/javascripts/Cesium/Core/ClockRange.js +1 -1
  24. data/app/assets/javascripts/Cesium/Core/ClockStep.js +1 -1
  25. data/app/assets/javascripts/Cesium/Core/Color.js +238 -20
  26. data/app/assets/javascripts/Cesium/Core/ColorGeometryInstanceAttribute.js +1 -1
  27. data/app/assets/javascripts/Cesium/Core/ComponentDatatype.js +1 -1
  28. data/app/assets/javascripts/Cesium/Core/CornerType.js +1 -1
  29. data/app/assets/javascripts/Cesium/Core/CorridorGeometry.js +154 -11
  30. data/app/assets/javascripts/Cesium/Core/CorridorGeometryLibrary.js +1 -26
  31. data/app/assets/javascripts/Cesium/Core/CorridorOutlineGeometry.js +13 -10
  32. data/app/assets/javascripts/Cesium/Core/Credit.js +1 -1
  33. data/app/assets/javascripts/Cesium/Core/CubicRealPolynomial.js +1 -1
  34. data/app/assets/javascripts/Cesium/Core/CylinderGeometry.js +15 -14
  35. data/app/assets/javascripts/Cesium/Core/CylinderGeometryLibrary.js +1 -1
  36. data/app/assets/javascripts/Cesium/Core/CylinderOutlineGeometry.js +15 -14
  37. data/app/assets/javascripts/Cesium/Core/DefaultProxy.js +1 -1
  38. data/app/assets/javascripts/Cesium/Core/DeveloperError.js +7 -1
  39. data/app/assets/javascripts/Cesium/Core/EarthOrientationParameters.js +1 -1
  40. data/app/assets/javascripts/Cesium/Core/EarthOrientationParametersSample.js +1 -1
  41. data/app/assets/javascripts/Cesium/Core/EasingFunction.js +1 -1
  42. data/app/assets/javascripts/Cesium/Core/EllipseGeometry.js +75 -12
  43. data/app/assets/javascripts/Cesium/Core/EllipseGeometryLibrary.js +1 -1
  44. data/app/assets/javascripts/Cesium/Core/EllipseOutlineGeometry.js +11 -13
  45. data/app/assets/javascripts/Cesium/Core/Ellipsoid.js +1 -1
  46. data/app/assets/javascripts/Cesium/Core/EllipsoidGeodesic.js +1 -1
  47. data/app/assets/javascripts/Cesium/Core/EllipsoidGeometry.js +30 -7
  48. data/app/assets/javascripts/Cesium/Core/EllipsoidOutlineGeometry.js +8 -3
  49. data/app/assets/javascripts/Cesium/Core/EllipsoidTangentPlane.js +1 -1
  50. data/app/assets/javascripts/Cesium/Core/EllipsoidTerrainProvider.js +1 -1
  51. data/app/assets/javascripts/Cesium/Core/EllipsoidalOccluder.js +1 -43
  52. data/app/assets/javascripts/Cesium/Core/EncodedCartesian3.js +1 -1
  53. data/app/assets/javascripts/Cesium/Core/Event.js +1 -1
  54. data/app/assets/javascripts/Cesium/Core/EventHelper.js +1 -1
  55. data/app/assets/javascripts/Cesium/Core/ExtrapolationType.js +1 -1
  56. data/app/assets/javascripts/Cesium/Core/FeatureDetection.js +1 -1
  57. data/app/assets/javascripts/Cesium/Core/Fullscreen.js +9 -9
  58. data/app/assets/javascripts/Cesium/Core/GeographicProjection.js +1 -1
  59. data/app/assets/javascripts/Cesium/Core/GeographicTilingScheme.js +1 -1
  60. data/app/assets/javascripts/Cesium/Core/Geometry.js +1 -1
  61. data/app/assets/javascripts/Cesium/Core/GeometryAttribute.js +1 -1
  62. data/app/assets/javascripts/Cesium/Core/GeometryAttributes.js +1 -1
  63. data/app/assets/javascripts/Cesium/Core/GeometryInstance.js +1 -1
  64. data/app/assets/javascripts/Cesium/Core/GeometryInstanceAttribute.js +1 -1
  65. data/app/assets/javascripts/Cesium/Core/GeometryPipeline.js +94 -32
  66. data/app/assets/javascripts/Cesium/Core/GeometryType.js +1 -1
  67. data/app/assets/javascripts/Cesium/Core/GregorianDate.js +1 -1
  68. data/app/assets/javascripts/Cesium/Core/HeadingPitchRange.js +1 -1
  69. data/app/assets/javascripts/Cesium/Core/HeightmapTerrainData.js +19 -15
  70. data/app/assets/javascripts/Cesium/Core/HeightmapTessellator.js +2 -2
  71. data/app/assets/javascripts/Cesium/Core/HermitePolynomialApproximation.js +1 -1
  72. data/app/assets/javascripts/Cesium/Core/HermiteSpline.js +1 -1
  73. data/app/assets/javascripts/Cesium/Core/Iau2000Orientation.js +1 -1
  74. data/app/assets/javascripts/Cesium/Core/Iau2006XysData.js +1 -1
  75. data/app/assets/javascripts/Cesium/Core/Iau2006XysSample.js +1 -1
  76. data/app/assets/javascripts/Cesium/Core/IauOrientationAxes.js +1 -1
  77. data/app/assets/javascripts/Cesium/Core/IauOrientationParameters.js +1 -1
  78. data/app/assets/javascripts/Cesium/Core/IndexDatatype.js +1 -1
  79. data/app/assets/javascripts/Cesium/Core/InterpolationAlgorithm.js +1 -1
  80. data/app/assets/javascripts/Cesium/Core/Intersect.js +1 -1
  81. data/app/assets/javascripts/Cesium/Core/IntersectionTests.js +19 -6
  82. data/app/assets/javascripts/Cesium/Core/Intersections2D.js +1 -1
  83. data/app/assets/javascripts/Cesium/Core/Interval.js +1 -1
  84. data/app/assets/javascripts/Cesium/Core/Iso8601.js +1 -1
  85. data/app/assets/javascripts/Cesium/Core/JulianDate.js +3 -3
  86. data/app/assets/javascripts/Cesium/Core/KeyboardEventModifier.js +1 -1
  87. data/app/assets/javascripts/Cesium/Core/LagrangePolynomialApproximation.js +1 -1
  88. data/app/assets/javascripts/Cesium/Core/LeapSecond.js +1 -1
  89. data/app/assets/javascripts/Cesium/Core/LinearApproximation.js +1 -1
  90. data/app/assets/javascripts/Cesium/Core/LinearSpline.js +1 -1
  91. data/app/assets/javascripts/Cesium/Core/MapProjection.js +1 -1
  92. data/app/assets/javascripts/Cesium/Core/MapboxApi.js +1 -1
  93. data/app/assets/javascripts/Cesium/Core/Math.js +1 -1
  94. data/app/assets/javascripts/Cesium/Core/Matrix2.js +17 -1
  95. data/app/assets/javascripts/Cesium/Core/Matrix3.js +17 -1
  96. data/app/assets/javascripts/Cesium/Core/Matrix4.js +103 -40
  97. data/app/assets/javascripts/Cesium/Core/NearFarScalar.js +1 -1
  98. data/app/assets/javascripts/Cesium/Core/Occluder.js +1 -1
  99. data/app/assets/javascripts/Cesium/Core/OrientedBoundingBox.js +33 -17
  100. data/app/assets/javascripts/Cesium/Core/Packable.js +1 -1
  101. data/app/assets/javascripts/Cesium/Core/PackableForInterpolation.js +1 -1
  102. data/app/assets/javascripts/Cesium/Core/PinBuilder.js +1 -1
  103. data/app/assets/javascripts/Cesium/Core/PixelFormat.js +1 -1
  104. data/app/assets/javascripts/Cesium/Core/Plane.js +1 -1
  105. data/app/assets/javascripts/Cesium/Core/PointGeometry.js +1 -1
  106. data/app/assets/javascripts/Cesium/Core/PolygonGeometry.js +291 -114
  107. data/app/assets/javascripts/Cesium/Core/PolygonGeometryLibrary.js +67 -26
  108. data/app/assets/javascripts/Cesium/Core/PolygonHierarchy.js +1 -1
  109. data/app/assets/javascripts/Cesium/Core/PolygonOutlineGeometry.js +30 -23
  110. data/app/assets/javascripts/Cesium/Core/PolygonPipeline.js +15 -759
  111. data/app/assets/javascripts/Cesium/Core/PolylineGeometry.js +6 -4
  112. data/app/assets/javascripts/Cesium/Core/PolylinePipeline.js +2 -59
  113. data/app/assets/javascripts/Cesium/Core/PolylineVolumeGeometry.js +4 -4
  114. data/app/assets/javascripts/Cesium/Core/PolylineVolumeGeometryLibrary.js +1 -1
  115. data/app/assets/javascripts/Cesium/Core/PolylineVolumeOutlineGeometry.js +4 -4
  116. data/app/assets/javascripts/Cesium/Core/PrimitiveType.js +1 -1
  117. data/app/assets/javascripts/Cesium/Core/QuadraticRealPolynomial.js +1 -1
  118. data/app/assets/javascripts/Cesium/Core/QuantizedMeshTerrainData.js +8 -4
  119. data/app/assets/javascripts/Cesium/Core/QuarticRealPolynomial.js +1 -1
  120. data/app/assets/javascripts/Cesium/Core/Quaternion.js +1 -1
  121. data/app/assets/javascripts/Cesium/Core/QuaternionSpline.js +1 -1
  122. data/app/assets/javascripts/Cesium/Core/Queue.js +1 -1
  123. data/app/assets/javascripts/Cesium/Core/Ray.js +1 -1
  124. data/app/assets/javascripts/Cesium/Core/Rectangle.js +58 -1
  125. data/app/assets/javascripts/Cesium/Core/RectangleGeometry.js +68 -10
  126. data/app/assets/javascripts/Cesium/Core/RectangleGeometryLibrary.js +1 -1
  127. data/app/assets/javascripts/Cesium/Core/RectangleOutlineGeometry.js +10 -7
  128. data/app/assets/javascripts/Cesium/Core/ReferenceFrame.js +1 -1
  129. data/app/assets/javascripts/Cesium/Core/RequestErrorEvent.js +1 -1
  130. data/app/assets/javascripts/Cesium/Core/RuntimeError.js +8 -1
  131. data/app/assets/javascripts/Cesium/Core/ScreenSpaceEventHandler.js +32 -11
  132. data/app/assets/javascripts/Cesium/Core/ScreenSpaceEventType.js +1 -1
  133. data/app/assets/javascripts/Cesium/Core/ShowGeometryInstanceAttribute.js +1 -2
  134. data/app/assets/javascripts/Cesium/Core/Simon1994PlanetaryPositions.js +1 -1
  135. data/app/assets/javascripts/Cesium/Core/SimplePolylineGeometry.js +1 -1
  136. data/app/assets/javascripts/Cesium/Core/SphereGeometry.js +1 -1
  137. data/app/assets/javascripts/Cesium/Core/SphereOutlineGeometry.js +1 -1
  138. data/app/assets/javascripts/Cesium/Core/Spherical.js +1 -1
  139. data/app/assets/javascripts/Cesium/Core/Spline.js +1 -1
  140. data/app/assets/javascripts/Cesium/Core/TaskProcessor.js +1 -1
  141. data/app/assets/javascripts/Cesium/Core/TerrainData.js +3 -1
  142. data/app/assets/javascripts/Cesium/Core/TerrainEncoding.js +1 -1
  143. data/app/assets/javascripts/Cesium/Core/TerrainMesh.js +8 -2
  144. data/app/assets/javascripts/Cesium/Core/TerrainProvider.js +1 -1
  145. data/app/assets/javascripts/Cesium/Core/TerrainQuantization.js +1 -1
  146. data/app/assets/javascripts/Cesium/Core/TileProviderError.js +1 -1
  147. data/app/assets/javascripts/Cesium/Core/TilingScheme.js +1 -1
  148. data/app/assets/javascripts/Cesium/Core/TimeConstants.js +1 -1
  149. data/app/assets/javascripts/Cesium/Core/TimeInterval.js +3 -3
  150. data/app/assets/javascripts/Cesium/Core/TimeIntervalCollection.js +3 -3
  151. data/app/assets/javascripts/Cesium/Core/TimeStandard.js +1 -1
  152. data/app/assets/javascripts/Cesium/Core/Tipsify.js +1 -1
  153. data/app/assets/javascripts/Cesium/Core/Transforms.js +141 -1
  154. data/app/assets/javascripts/Cesium/Core/TranslationRotationScale.js +2 -2
  155. data/app/assets/javascripts/Cesium/Core/TridiagonalSystemSolver.js +1 -1
  156. data/app/assets/javascripts/Cesium/Core/VRTheWorldTerrainProvider.js +2 -2
  157. data/app/assets/javascripts/Cesium/Core/VertexFormat.js +1 -1
  158. data/app/assets/javascripts/Cesium/Core/VideoSynchronizer.js +1 -1
  159. data/app/assets/javascripts/Cesium/Core/Visibility.js +1 -1
  160. data/app/assets/javascripts/Cesium/Core/WallGeometry.js +5 -7
  161. data/app/assets/javascripts/Cesium/Core/WallGeometryLibrary.js +20 -9
  162. data/app/assets/javascripts/Cesium/Core/WallOutlineGeometry.js +3 -6
  163. data/app/assets/javascripts/Cesium/Core/WebMercatorProjection.js +1 -1
  164. data/app/assets/javascripts/Cesium/Core/WebMercatorTilingScheme.js +1 -1
  165. data/app/assets/javascripts/Cesium/Core/WindingOrder.js +1 -1
  166. data/app/assets/javascripts/Cesium/Core/appendForwardSlash.js +1 -1
  167. data/app/assets/javascripts/Cesium/Core/arrayRemoveDuplicates.js +101 -0
  168. data/app/assets/javascripts/Cesium/Core/barycentricCoordinates.js +1 -1
  169. data/app/assets/javascripts/Cesium/Core/binarySearch.js +1 -1
  170. data/app/assets/javascripts/Cesium/Core/buildModuleUrl.js +4 -2
  171. data/app/assets/javascripts/Cesium/Core/cancelAnimationFrame.js +2 -2
  172. data/app/assets/javascripts/Cesium/Core/clone.js +1 -1
  173. data/app/assets/javascripts/Cesium/Core/combine.js +1 -1
  174. data/app/assets/javascripts/Cesium/Core/createGuid.js +1 -1
  175. data/app/assets/javascripts/Cesium/Core/defaultValue.js +1 -1
  176. data/app/assets/javascripts/Cesium/Core/defineProperties.js +1 -1
  177. data/app/assets/javascripts/Cesium/Core/defined.js +2 -2
  178. data/app/assets/javascripts/Cesium/Core/deprecationWarning.js +7 -10
  179. data/app/assets/javascripts/Cesium/Core/destroyObject.js +1 -1
  180. data/app/assets/javascripts/Cesium/Core/formatError.js +1 -1
  181. data/app/assets/javascripts/Cesium/Core/freezeObject.js +1 -1
  182. data/app/assets/javascripts/Cesium/Core/getAbsoluteUri.js +1 -1
  183. data/app/assets/javascripts/Cesium/Core/getBaseUri.js +6 -6
  184. data/app/assets/javascripts/Cesium/Core/getExtensionFromUri.js +1 -1
  185. data/app/assets/javascripts/Cesium/Core/getFilenameFromUri.js +1 -1
  186. data/app/assets/javascripts/Cesium/Core/getImagePixels.js +1 -1
  187. data/app/assets/javascripts/Cesium/Core/getMagic.js +1 -1
  188. data/app/assets/javascripts/Cesium/Core/getStringFromTypedArray.js +1 -1
  189. data/app/assets/javascripts/Cesium/Core/getTimestamp.js +1 -1
  190. data/app/assets/javascripts/Cesium/Core/isArray.js +1 -1
  191. data/app/assets/javascripts/Cesium/Core/isCrossOriginUrl.js +1 -1
  192. data/app/assets/javascripts/Cesium/Core/isLeapYear.js +1 -1
  193. data/app/assets/javascripts/Cesium/Core/joinUrls.js +9 -11
  194. data/app/assets/javascripts/Cesium/Core/loadArrayBuffer.js +1 -1
  195. data/app/assets/javascripts/Cesium/Core/loadBlob.js +1 -1
  196. data/app/assets/javascripts/Cesium/Core/loadImage.js +1 -1
  197. data/app/assets/javascripts/Cesium/Core/loadImageFromTypedArray.js +1 -1
  198. data/app/assets/javascripts/Cesium/Core/loadImageViaBlob.js +1 -1
  199. data/app/assets/javascripts/Cesium/Core/loadJson.js +1 -1
  200. data/app/assets/javascripts/Cesium/Core/loadJsonp.js +1 -1
  201. data/app/assets/javascripts/Cesium/Core/loadText.js +1 -1
  202. data/app/assets/javascripts/Cesium/Core/loadWithXhr.js +1 -1
  203. data/app/assets/javascripts/Cesium/Core/loadXML.js +1 -1
  204. data/app/assets/javascripts/Cesium/Core/mergeSort.js +1 -1
  205. data/app/assets/javascripts/Cesium/Core/objectToQuery.js +1 -1
  206. data/app/assets/javascripts/Cesium/Core/oneTimeWarning.js +52 -0
  207. data/app/assets/javascripts/Cesium/Core/parseResponseHeaders.js +1 -1
  208. data/app/assets/javascripts/Cesium/Core/pointInsideTriangle.js +1 -1
  209. data/app/assets/javascripts/Cesium/Core/queryToObject.js +1 -1
  210. data/app/assets/javascripts/Cesium/Core/requestAnimationFrame.js +2 -2
  211. data/app/assets/javascripts/Cesium/Core/sampleTerrain.js +2 -2
  212. data/app/assets/javascripts/Cesium/Core/scaleToGeodeticSurface.js +1 -1
  213. data/app/assets/javascripts/Cesium/Core/subdivideArray.js +1 -1
  214. data/app/assets/javascripts/Cesium/Core/throttleRequestByServer.js +1 -1
  215. data/app/assets/javascripts/Cesium/Core/wrapFunction.js +1 -1
  216. data/app/assets/javascripts/Cesium/Core/writeTextToCanvas.js +1 -1
  217. data/app/assets/javascripts/Cesium/DataSources/BillboardGraphics.js +17 -3
  218. data/app/assets/javascripts/Cesium/DataSources/BillboardVisualizer.js +20 -4
  219. data/app/assets/javascripts/Cesium/DataSources/BoundingSphereState.js +1 -1
  220. data/app/assets/javascripts/Cesium/DataSources/BoxGeometryUpdater.js +1 -1
  221. data/app/assets/javascripts/Cesium/DataSources/BoxGraphics.js +1 -1
  222. data/app/assets/javascripts/Cesium/DataSources/CallbackProperty.js +1 -1
  223. data/app/assets/javascripts/Cesium/DataSources/CheckerboardMaterialProperty.js +1 -1
  224. data/app/assets/javascripts/Cesium/DataSources/ColorMaterialProperty.js +1 -1
  225. data/app/assets/javascripts/Cesium/DataSources/CompositeEntityCollection.js +15 -2
  226. data/app/assets/javascripts/Cesium/DataSources/CompositeMaterialProperty.js +1 -1
  227. data/app/assets/javascripts/Cesium/DataSources/CompositePositionProperty.js +1 -1
  228. data/app/assets/javascripts/Cesium/DataSources/CompositeProperty.js +1 -1
  229. data/app/assets/javascripts/Cesium/DataSources/ConstantPositionProperty.js +1 -1
  230. data/app/assets/javascripts/Cesium/DataSources/ConstantProperty.js +1 -1
  231. data/app/assets/javascripts/Cesium/DataSources/CorridorGeometryUpdater.js +85 -27
  232. data/app/assets/javascripts/Cesium/DataSources/CorridorGraphics.js +1 -1
  233. data/app/assets/javascripts/Cesium/DataSources/CustomDataSource.js +14 -1
  234. data/app/assets/javascripts/Cesium/DataSources/CylinderGeometryUpdater.js +1 -1
  235. data/app/assets/javascripts/Cesium/DataSources/CylinderGraphics.js +3 -6
  236. data/app/assets/javascripts/Cesium/DataSources/CzmlDataSource.js +461 -229
  237. data/app/assets/javascripts/Cesium/DataSources/DataSource.js +9 -1
  238. data/app/assets/javascripts/Cesium/DataSources/DataSourceClock.js +17 -13
  239. data/app/assets/javascripts/Cesium/DataSources/DataSourceCollection.js +1 -1
  240. data/app/assets/javascripts/Cesium/DataSources/DataSourceDisplay.js +18 -2
  241. data/app/assets/javascripts/Cesium/DataSources/DynamicGeometryUpdater.js +1 -1
  242. data/app/assets/javascripts/Cesium/DataSources/EllipseGeometryUpdater.js +86 -27
  243. data/app/assets/javascripts/Cesium/DataSources/EllipseGraphics.js +1 -1
  244. data/app/assets/javascripts/Cesium/DataSources/EllipsoidGeometryUpdater.js +1 -1
  245. data/app/assets/javascripts/Cesium/DataSources/EllipsoidGraphics.js +1 -1
  246. data/app/assets/javascripts/Cesium/DataSources/Entity.js +2 -2
  247. data/app/assets/javascripts/Cesium/DataSources/EntityCollection.js +72 -5
  248. data/app/assets/javascripts/Cesium/DataSources/EntityView.js +13 -17
  249. data/app/assets/javascripts/Cesium/DataSources/GeoJsonDataSource.js +95 -47
  250. data/app/assets/javascripts/Cesium/DataSources/GeometryUpdater.js +1 -1
  251. data/app/assets/javascripts/Cesium/DataSources/GeometryVisualizer.js +25 -14
  252. data/app/assets/javascripts/Cesium/DataSources/GridMaterialProperty.js +1 -1
  253. data/app/assets/javascripts/Cesium/DataSources/ImageMaterialProperty.js +31 -13
  254. data/app/assets/javascripts/Cesium/DataSources/KmlDataSource.js +999 -177
  255. data/app/assets/javascripts/Cesium/DataSources/LabelGraphics.js +14 -1
  256. data/app/assets/javascripts/Cesium/DataSources/LabelVisualizer.js +14 -5
  257. data/app/assets/javascripts/Cesium/DataSources/MaterialProperty.js +1 -1
  258. data/app/assets/javascripts/Cesium/DataSources/ModelGraphics.js +41 -2
  259. data/app/assets/javascripts/Cesium/DataSources/ModelVisualizer.js +19 -3
  260. data/app/assets/javascripts/Cesium/DataSources/NodeTransformationProperty.js +1 -1
  261. data/app/assets/javascripts/Cesium/DataSources/PathGraphics.js +2 -2
  262. data/app/assets/javascripts/Cesium/DataSources/PathVisualizer.js +5 -2
  263. data/app/assets/javascripts/Cesium/DataSources/PointGraphics.js +14 -2
  264. data/app/assets/javascripts/Cesium/DataSources/PointVisualizer.js +170 -24
  265. data/app/assets/javascripts/Cesium/DataSources/PolygonGeometryUpdater.js +113 -34
  266. data/app/assets/javascripts/Cesium/DataSources/PolygonGraphics.js +27 -3
  267. data/app/assets/javascripts/Cesium/DataSources/PolylineArrowMaterialProperty.js +1 -1
  268. data/app/assets/javascripts/Cesium/DataSources/PolylineGeometryUpdater.js +1 -1
  269. data/app/assets/javascripts/Cesium/DataSources/PolylineGlowMaterialProperty.js +1 -1
  270. data/app/assets/javascripts/Cesium/DataSources/PolylineGraphics.js +1 -1
  271. data/app/assets/javascripts/Cesium/DataSources/PolylineOutlineMaterialProperty.js +1 -1
  272. data/app/assets/javascripts/Cesium/DataSources/PolylineVolumeGeometryUpdater.js +1 -1
  273. data/app/assets/javascripts/Cesium/DataSources/PolylineVolumeGraphics.js +1 -1
  274. data/app/assets/javascripts/Cesium/DataSources/PositionProperty.js +1 -1
  275. data/app/assets/javascripts/Cesium/DataSources/PositionPropertyArray.js +1 -1
  276. data/app/assets/javascripts/Cesium/DataSources/Property.js +1 -1
  277. data/app/assets/javascripts/Cesium/DataSources/PropertyArray.js +1 -1
  278. data/app/assets/javascripts/Cesium/DataSources/PropertyBag.js +1 -1
  279. data/app/assets/javascripts/Cesium/DataSources/RectangleGeometryUpdater.js +86 -25
  280. data/app/assets/javascripts/Cesium/DataSources/RectangleGraphics.js +1 -1
  281. data/app/assets/javascripts/Cesium/DataSources/ReferenceProperty.js +1 -1
  282. data/app/assets/javascripts/Cesium/DataSources/Rotation.js +1 -1
  283. data/app/assets/javascripts/Cesium/DataSources/SampledPositionProperty.js +1 -1
  284. data/app/assets/javascripts/Cesium/DataSources/SampledProperty.js +1 -1
  285. data/app/assets/javascripts/Cesium/DataSources/ScaledPositionProperty.js +1 -1
  286. data/app/assets/javascripts/Cesium/DataSources/StaticGeometryColorBatch.js +3 -1
  287. data/app/assets/javascripts/Cesium/DataSources/StaticGeometryPerMaterialBatch.js +1 -1
  288. data/app/assets/javascripts/Cesium/DataSources/StaticGroundGeometryColorBatch.js +336 -0
  289. data/app/assets/javascripts/Cesium/DataSources/StaticOutlineGeometryBatch.js +1 -1
  290. data/app/assets/javascripts/Cesium/DataSources/StripeMaterialProperty.js +1 -1
  291. data/app/assets/javascripts/Cesium/DataSources/StripeOrientation.js +1 -1
  292. data/app/assets/javascripts/Cesium/DataSources/TimeIntervalCollectionPositionProperty.js +1 -1
  293. data/app/assets/javascripts/Cesium/DataSources/TimeIntervalCollectionProperty.js +1 -1
  294. data/app/assets/javascripts/Cesium/DataSources/VelocityOrientationProperty.js +19 -61
  295. data/app/assets/javascripts/Cesium/DataSources/VelocityVectorProperty.js +187 -0
  296. data/app/assets/javascripts/Cesium/DataSources/Visualizer.js +1 -1
  297. data/app/assets/javascripts/Cesium/DataSources/WallGeometryUpdater.js +1 -1
  298. data/app/assets/javascripts/Cesium/DataSources/WallGraphics.js +1 -1
  299. data/app/assets/javascripts/Cesium/DataSources/createMaterialPropertyDescriptor.js +1 -1
  300. data/app/assets/javascripts/Cesium/DataSources/createPropertyDescriptor.js +1 -1
  301. data/app/assets/javascripts/Cesium/DataSources/createRawPropertyDescriptor.js +1 -1
  302. data/app/assets/javascripts/Cesium/DataSources/dynamicGeometryGetBoundingSphere.js +10 -3
  303. data/app/assets/javascripts/Cesium/Renderer/AutomaticUniforms.js +25 -1
  304. data/app/assets/javascripts/Cesium/Renderer/Buffer.js +1 -1
  305. data/app/assets/javascripts/Cesium/Renderer/BufferUsage.js +1 -1
  306. data/app/assets/javascripts/Cesium/Renderer/ClearCommand.js +1 -1
  307. data/app/assets/javascripts/Cesium/Renderer/ComputeCommand.js +1 -1
  308. data/app/assets/javascripts/Cesium/Renderer/ComputeEngine.js +1 -1
  309. data/app/assets/javascripts/Cesium/Renderer/Context.js +16 -18
  310. data/app/assets/javascripts/Cesium/Renderer/ContextLimits.js +1 -1
  311. data/app/assets/javascripts/Cesium/Renderer/CubeMap.js +2 -2
  312. data/app/assets/javascripts/Cesium/Renderer/CubeMapFace.js +1 -1
  313. data/app/assets/javascripts/Cesium/Renderer/DrawCommand.js +312 -30
  314. data/app/assets/javascripts/Cesium/Renderer/Framebuffer.js +2 -2
  315. data/app/assets/javascripts/Cesium/Renderer/MipmapHint.js +1 -1
  316. data/app/assets/javascripts/Cesium/Renderer/PassState.js +1 -1
  317. data/app/assets/javascripts/Cesium/Renderer/PickFramebuffer.js +1 -1
  318. data/app/assets/javascripts/Cesium/Renderer/PixelDatatype.js +1 -1
  319. data/app/assets/javascripts/Cesium/Renderer/RenderState.js +2 -2
  320. data/app/assets/javascripts/Cesium/Renderer/Renderbuffer.js +1 -1
  321. data/app/assets/javascripts/Cesium/Renderer/RenderbufferFormat.js +1 -1
  322. data/app/assets/javascripts/Cesium/Renderer/Sampler.js +1 -1
  323. data/app/assets/javascripts/Cesium/Renderer/ShaderCache.js +1 -1
  324. data/app/assets/javascripts/Cesium/Renderer/ShaderProgram.js +3 -4
  325. data/app/assets/javascripts/Cesium/Renderer/ShaderSource.js +32 -1
  326. data/app/assets/javascripts/Cesium/Renderer/Texture.js +1 -1
  327. data/app/assets/javascripts/Cesium/Renderer/TextureMagnificationFilter.js +1 -1
  328. data/app/assets/javascripts/Cesium/Renderer/TextureMinificationFilter.js +1 -1
  329. data/app/assets/javascripts/Cesium/Renderer/TextureWrap.js +1 -1
  330. data/app/assets/javascripts/Cesium/Renderer/UniformState.js +36 -11
  331. data/app/assets/javascripts/Cesium/Renderer/VertexArray.js +1 -1
  332. data/app/assets/javascripts/Cesium/Renderer/VertexArrayFacade.js +1 -1
  333. data/app/assets/javascripts/Cesium/Renderer/WebGLConstants.js +1 -1
  334. data/app/assets/javascripts/Cesium/Renderer/createUniform.js +1 -1
  335. data/app/assets/javascripts/Cesium/Renderer/createUniformArray.js +1 -1
  336. data/app/assets/javascripts/Cesium/Renderer/loadCubeMap.js +1 -1
  337. data/app/assets/javascripts/Cesium/Scene/Appearance.js +1 -1
  338. data/app/assets/javascripts/Cesium/Scene/ArcGisMapServerImageryProvider.js +5 -4
  339. data/app/assets/javascripts/Cesium/Scene/Billboard.js +25 -37
  340. data/app/assets/javascripts/Cesium/Scene/BillboardCollection.js +49 -25
  341. data/app/assets/javascripts/Cesium/Scene/BingMapsImageryProvider.js +11 -4
  342. data/app/assets/javascripts/Cesium/Scene/BingMapsStyle.js +1 -1
  343. data/app/assets/javascripts/Cesium/Scene/BlendEquation.js +1 -1
  344. data/app/assets/javascripts/Cesium/Scene/BlendFunction.js +1 -1
  345. data/app/assets/javascripts/Cesium/Scene/BlendingState.js +2 -2
  346. data/app/assets/javascripts/Cesium/Scene/Camera.js +397 -187
  347. data/app/assets/javascripts/Cesium/Scene/CameraEventAggregator.js +2 -2
  348. data/app/assets/javascripts/Cesium/Scene/CameraEventType.js +2 -2
  349. data/app/assets/javascripts/Cesium/Scene/CameraFlightPath.js +4 -5
  350. data/app/assets/javascripts/Cesium/Scene/CreditDisplay.js +1 -1
  351. data/app/assets/javascripts/Cesium/Scene/CullFace.js +1 -1
  352. data/app/assets/javascripts/Cesium/Scene/CullingVolume.js +75 -2
  353. data/app/assets/javascripts/Cesium/Scene/DebugAppearance.js +2 -2
  354. data/app/assets/javascripts/Cesium/Scene/DebugModelMatrixPrimitive.js +1 -1
  355. data/app/assets/javascripts/Cesium/Scene/DepthFunction.js +1 -1
  356. data/app/assets/javascripts/Cesium/Scene/DepthPlane.js +1 -1
  357. data/app/assets/javascripts/Cesium/Scene/DeviceOrientationCameraController.js +14 -5
  358. data/app/assets/javascripts/Cesium/Scene/DiscardMissingTileImagePolicy.js +1 -1
  359. data/app/assets/javascripts/Cesium/Scene/EllipsoidPrimitive.js +1 -1
  360. data/app/assets/javascripts/Cesium/Scene/EllipsoidSurfaceAppearance.js +1 -1
  361. data/app/assets/javascripts/Cesium/Scene/FXAA.js +1 -1
  362. data/app/assets/javascripts/Cesium/Scene/Fog.js +1 -1
  363. data/app/assets/javascripts/Cesium/Scene/FrameRateMonitor.js +9 -9
  364. data/app/assets/javascripts/Cesium/Scene/FrameState.js +39 -1
  365. data/app/assets/javascripts/Cesium/Scene/FrustumCommands.js +1 -1
  366. data/app/assets/javascripts/Cesium/Scene/GetFeatureInfoFormat.js +2 -4
  367. data/app/assets/javascripts/Cesium/Scene/Globe.js +89 -17
  368. data/app/assets/javascripts/Cesium/Scene/GlobeDepth.js +4 -6
  369. data/app/assets/javascripts/Cesium/Scene/GlobeSurfaceShaderSet.js +17 -9
  370. data/app/assets/javascripts/Cesium/Scene/GlobeSurfaceTile.js +24 -6
  371. data/app/assets/javascripts/Cesium/Scene/GlobeSurfaceTileProvider.js +171 -118
  372. data/app/assets/javascripts/Cesium/Scene/GoogleEarthImageryProvider.js +2 -2
  373. data/app/assets/javascripts/Cesium/Scene/GridImageryProvider.js +1 -1
  374. data/app/assets/javascripts/Cesium/Scene/GroundPrimitive.js +335 -91
  375. data/app/assets/javascripts/Cesium/Scene/HeightReference.js +1 -1
  376. data/app/assets/javascripts/Cesium/Scene/HorizontalOrigin.js +1 -1
  377. data/app/assets/javascripts/Cesium/Scene/Imagery.js +1 -1
  378. data/app/assets/javascripts/Cesium/Scene/ImageryLayer.js +32 -5
  379. data/app/assets/javascripts/Cesium/Scene/ImageryLayerCollection.js +27 -1
  380. data/app/assets/javascripts/Cesium/Scene/ImageryLayerFeatureInfo.js +1 -1
  381. data/app/assets/javascripts/Cesium/Scene/ImageryProvider.js +1 -1
  382. data/app/assets/javascripts/Cesium/Scene/ImageryState.js +1 -1
  383. data/app/assets/javascripts/Cesium/Scene/Label.js +26 -11
  384. data/app/assets/javascripts/Cesium/Scene/LabelCollection.js +11 -7
  385. data/app/assets/javascripts/Cesium/Scene/LabelStyle.js +2 -2
  386. data/app/assets/javascripts/Cesium/Scene/MapMode2D.js +32 -0
  387. data/app/assets/javascripts/Cesium/Scene/MapboxImageryProvider.js +4 -4
  388. data/app/assets/javascripts/Cesium/Scene/Material.js +6 -6
  389. data/app/assets/javascripts/Cesium/Scene/MaterialAppearance.js +1 -1
  390. data/app/assets/javascripts/Cesium/Scene/Model.js +675 -160
  391. data/app/assets/javascripts/Cesium/Scene/ModelAnimation.js +1 -1
  392. data/app/assets/javascripts/Cesium/Scene/ModelAnimationCache.js +1 -1
  393. data/app/assets/javascripts/Cesium/Scene/ModelAnimationCollection.js +8 -6
  394. data/app/assets/javascripts/Cesium/Scene/ModelAnimationLoop.js +2 -2
  395. data/app/assets/javascripts/Cesium/Scene/ModelAnimationState.js +2 -2
  396. data/app/assets/javascripts/Cesium/Scene/ModelMaterial.js +1 -1
  397. data/app/assets/javascripts/Cesium/Scene/ModelMesh.js +1 -1
  398. data/app/assets/javascripts/Cesium/Scene/ModelNode.js +2 -2
  399. data/app/assets/javascripts/Cesium/Scene/Moon.js +1 -1
  400. data/app/assets/javascripts/Cesium/Scene/NeverTileDiscardPolicy.js +1 -1
  401. data/app/assets/javascripts/Cesium/Scene/OIT.js +66 -33
  402. data/app/assets/javascripts/Cesium/Scene/OrthographicFrustum.js +2 -2
  403. data/app/assets/javascripts/Cesium/Scene/Pass.js +12 -8
  404. data/app/assets/javascripts/Cesium/Scene/PerInstanceColorAppearance.js +1 -1
  405. data/app/assets/javascripts/Cesium/Scene/PerformanceDisplay.js +1 -1
  406. data/app/assets/javascripts/Cesium/Scene/PerspectiveFrustum.js +3 -3
  407. data/app/assets/javascripts/Cesium/Scene/PerspectiveOffCenterFrustum.js +4 -4
  408. data/app/assets/javascripts/Cesium/Scene/PickDepth.js +1 -1
  409. data/app/assets/javascripts/Cesium/Scene/PointAppearance.js +1 -1
  410. data/app/assets/javascripts/Cesium/Scene/PointPrimitive.js +5 -13
  411. data/app/assets/javascripts/Cesium/Scene/PointPrimitiveCollection.js +8 -8
  412. data/app/assets/javascripts/Cesium/Scene/Polyline.js +5 -3
  413. data/app/assets/javascripts/Cesium/Scene/PolylineCollection.js +51 -23
  414. data/app/assets/javascripts/Cesium/Scene/PolylineColorAppearance.js +1 -1
  415. data/app/assets/javascripts/Cesium/Scene/PolylineMaterialAppearance.js +1 -1
  416. data/app/assets/javascripts/Cesium/Scene/Primitive.js +75 -46
  417. data/app/assets/javascripts/Cesium/Scene/PrimitiveCollection.js +1 -1
  418. data/app/assets/javascripts/Cesium/Scene/PrimitivePipeline.js +3 -3
  419. data/app/assets/javascripts/Cesium/Scene/PrimitiveState.js +2 -2
  420. data/app/assets/javascripts/Cesium/Scene/QuadtreeOccluders.js +1 -1
  421. data/app/assets/javascripts/Cesium/Scene/QuadtreePrimitive.js +80 -41
  422. data/app/assets/javascripts/Cesium/Scene/QuadtreeTile.js +5 -11
  423. data/app/assets/javascripts/Cesium/Scene/QuadtreeTileLoadState.js +1 -1
  424. data/app/assets/javascripts/Cesium/Scene/QuadtreeTileProvider.js +1 -1
  425. data/app/assets/javascripts/Cesium/Scene/Scene.js +529 -92
  426. data/app/assets/javascripts/Cesium/Scene/SceneMode.js +1 -1
  427. data/app/assets/javascripts/Cesium/Scene/SceneTransforms.js +129 -49
  428. data/app/assets/javascripts/Cesium/Scene/SceneTransitioner.js +476 -337
  429. data/app/assets/javascripts/Cesium/Scene/ScreenSpaceCameraController.js +127 -30
  430. data/app/assets/javascripts/Cesium/Scene/ShadowMap.js +1640 -0
  431. data/app/assets/javascripts/Cesium/Scene/ShadowMapShader.js +341 -0
  432. data/app/assets/javascripts/Cesium/Scene/SingleTileImageryProvider.js +1 -1
  433. data/app/assets/javascripts/Cesium/Scene/SkyAtmosphere.js +101 -33
  434. data/app/assets/javascripts/Cesium/Scene/SkyBox.js +1 -1
  435. data/app/assets/javascripts/Cesium/Scene/StencilFunction.js +1 -1
  436. data/app/assets/javascripts/Cesium/Scene/StencilOperation.js +1 -1
  437. data/app/assets/javascripts/Cesium/Scene/Sun.js +8 -3
  438. data/app/assets/javascripts/Cesium/Scene/SunPostProcess.js +6 -2
  439. data/app/assets/javascripts/Cesium/Scene/TerrainState.js +2 -2
  440. data/app/assets/javascripts/Cesium/Scene/TextureAtlas.js +21 -43
  441. data/app/assets/javascripts/Cesium/Scene/TileBoundingBox.js +2 -2
  442. data/app/assets/javascripts/Cesium/Scene/TileCoordinatesImageryProvider.js +1 -1
  443. data/app/assets/javascripts/Cesium/Scene/TileDiscardPolicy.js +1 -1
  444. data/app/assets/javascripts/Cesium/Scene/TileImagery.js +1 -1
  445. data/app/assets/javascripts/Cesium/Scene/TileReplacementQueue.js +1 -1
  446. data/app/assets/javascripts/Cesium/Scene/TileState.js +1 -1
  447. data/app/assets/javascripts/Cesium/Scene/TileTerrain.js +8 -15
  448. data/app/assets/javascripts/Cesium/Scene/TweenCollection.js +1 -1
  449. data/app/assets/javascripts/Cesium/Scene/UrlTemplateImageryProvider.js +9 -9
  450. data/app/assets/javascripts/Cesium/Scene/VerticalOrigin.js +2 -2
  451. data/app/assets/javascripts/Cesium/Scene/ViewportQuad.js +2 -2
  452. data/app/assets/javascripts/Cesium/Scene/WebMapServiceImageryProvider.js +2 -2
  453. data/app/assets/javascripts/Cesium/Scene/WebMapTileServiceImageryProvider.js +1 -1
  454. data/app/assets/javascripts/Cesium/Scene/createOpenStreetMapImageryProvider.js +6 -5
  455. data/app/assets/javascripts/Cesium/Scene/createTangentSpaceDebugPrimitive.js +1 -1
  456. data/app/assets/javascripts/Cesium/Scene/createTileMapServiceImageryProvider.js +23 -26
  457. data/app/assets/javascripts/Cesium/Scene/getModelAccessor.js +1 -1
  458. data/app/assets/javascripts/Cesium/Scene/modelMaterialsCommon.js +1 -1
  459. data/app/assets/javascripts/Cesium/Shaders/AdjustTranslucentFS.js +14 -11
  460. data/app/assets/javascripts/Cesium/Shaders/Appearances/AllMaterialAppearanceFS.js +18 -14
  461. data/app/assets/javascripts/Cesium/Shaders/Appearances/AllMaterialAppearanceVS.js +13 -9
  462. data/app/assets/javascripts/Cesium/Shaders/Appearances/BasicMaterialAppearanceFS.js +15 -11
  463. data/app/assets/javascripts/Cesium/Shaders/Appearances/BasicMaterialAppearanceVS.js +10 -6
  464. data/app/assets/javascripts/Cesium/Shaders/Appearances/EllipsoidSurfaceAppearanceFS.js +24 -15
  465. data/app/assets/javascripts/Cesium/Shaders/Appearances/EllipsoidSurfaceAppearanceVS.js +11 -7
  466. data/app/assets/javascripts/Cesium/Shaders/Appearances/PerInstanceColorAppearanceFS.js +15 -11
  467. data/app/assets/javascripts/Cesium/Shaders/Appearances/PerInstanceColorAppearanceVS.js +11 -7
  468. data/app/assets/javascripts/Cesium/Shaders/Appearances/PerInstanceFlatColorAppearanceFS.js +3 -2
  469. data/app/assets/javascripts/Cesium/Shaders/Appearances/PerInstanceFlatColorAppearanceVS.js +9 -5
  470. data/app/assets/javascripts/Cesium/Shaders/Appearances/PointAppearanceFS.js +4 -2
  471. data/app/assets/javascripts/Cesium/Shaders/Appearances/PointAppearanceVS.js +8 -5
  472. data/app/assets/javascripts/Cesium/Shaders/Appearances/PolylineColorAppearanceVS.js +16 -11
  473. data/app/assets/javascripts/Cesium/Shaders/Appearances/PolylineMaterialAppearanceVS.js +17 -12
  474. data/app/assets/javascripts/Cesium/Shaders/Appearances/TexturedMaterialAppearanceFS.js +16 -12
  475. data/app/assets/javascripts/Cesium/Shaders/Appearances/TexturedMaterialAppearanceVS.js +11 -7
  476. data/app/assets/javascripts/Cesium/Shaders/BillboardCollectionFS.js +16 -12
  477. data/app/assets/javascripts/Cesium/Shaders/BillboardCollectionVS.glsl +9 -14
  478. data/app/assets/javascripts/Cesium/Shaders/BillboardCollectionVS.js +197 -142
  479. data/app/assets/javascripts/Cesium/Shaders/Builtin/Constants/degreesPerRadian.js +17 -3
  480. data/app/assets/javascripts/Cesium/Shaders/Builtin/Constants/depthRange.js +15 -3
  481. data/app/assets/javascripts/Cesium/Shaders/Builtin/Constants/epsilon1.js +8 -3
  482. data/app/assets/javascripts/Cesium/Shaders/Builtin/Constants/epsilon2.js +8 -3
  483. data/app/assets/javascripts/Cesium/Shaders/Builtin/Constants/epsilon3.js +8 -3
  484. data/app/assets/javascripts/Cesium/Shaders/Builtin/Constants/epsilon4.js +8 -3
  485. data/app/assets/javascripts/Cesium/Shaders/Builtin/Constants/epsilon5.js +8 -3
  486. data/app/assets/javascripts/Cesium/Shaders/Builtin/Constants/epsilon6.js +8 -3
  487. data/app/assets/javascripts/Cesium/Shaders/Builtin/Constants/epsilon7.js +8 -3
  488. data/app/assets/javascripts/Cesium/Shaders/Builtin/Constants/infinity.js +8 -3
  489. data/app/assets/javascripts/Cesium/Shaders/Builtin/Constants/oneOverPi.js +17 -3
  490. data/app/assets/javascripts/Cesium/Shaders/Builtin/Constants/oneOverTwoPi.js +17 -3
  491. data/app/assets/javascripts/Cesium/Shaders/Builtin/Constants/passCompute.glsl +9 -0
  492. data/app/assets/javascripts/Cesium/Shaders/Builtin/Constants/passCompute.js +14 -0
  493. data/app/assets/javascripts/Cesium/Shaders/Builtin/Constants/passEnvironment.glsl +9 -0
  494. data/app/assets/javascripts/Cesium/Shaders/Builtin/Constants/passEnvironment.js +14 -0
  495. data/app/assets/javascripts/Cesium/Shaders/Builtin/Constants/passGlobe.glsl +9 -0
  496. data/app/assets/javascripts/Cesium/Shaders/Builtin/Constants/passGlobe.js +14 -0
  497. data/app/assets/javascripts/Cesium/Shaders/Builtin/Constants/passGround.glsl +9 -0
  498. data/app/assets/javascripts/Cesium/Shaders/Builtin/Constants/passGround.js +14 -0
  499. data/app/assets/javascripts/Cesium/Shaders/Builtin/Constants/passOpaque.glsl +9 -0
  500. data/app/assets/javascripts/Cesium/Shaders/Builtin/Constants/passOpaque.js +14 -0
  501. data/app/assets/javascripts/Cesium/Shaders/Builtin/Constants/passOverlay.glsl +9 -0
  502. data/app/assets/javascripts/Cesium/Shaders/Builtin/Constants/passOverlay.js +14 -0
  503. data/app/assets/javascripts/Cesium/Shaders/Builtin/Constants/passTranslucent.glsl +9 -0
  504. data/app/assets/javascripts/Cesium/Shaders/Builtin/Constants/passTranslucent.js +14 -0
  505. data/app/assets/javascripts/Cesium/Shaders/Builtin/Constants/pi.js +17 -3
  506. data/app/assets/javascripts/Cesium/Shaders/Builtin/Constants/piOverFour.js +17 -3
  507. data/app/assets/javascripts/Cesium/Shaders/Builtin/Constants/piOverSix.js +17 -3
  508. data/app/assets/javascripts/Cesium/Shaders/Builtin/Constants/piOverThree.js +17 -3
  509. data/app/assets/javascripts/Cesium/Shaders/Builtin/Constants/piOverTwo.js +17 -3
  510. data/app/assets/javascripts/Cesium/Shaders/Builtin/Constants/radiansPerDegree.js +17 -3
  511. data/app/assets/javascripts/Cesium/Shaders/Builtin/Constants/sceneMode2D.js +12 -3
  512. data/app/assets/javascripts/Cesium/Shaders/Builtin/Constants/sceneMode3D.js +12 -3
  513. data/app/assets/javascripts/Cesium/Shaders/Builtin/Constants/sceneModeColumbusView.js +12 -3
  514. data/app/assets/javascripts/Cesium/Shaders/Builtin/Constants/sceneModeMorphing.js +12 -3
  515. data/app/assets/javascripts/Cesium/Shaders/Builtin/Constants/solarRadius.js +14 -3
  516. data/app/assets/javascripts/Cesium/Shaders/Builtin/Constants/threePiOver2.js +17 -3
  517. data/app/assets/javascripts/Cesium/Shaders/Builtin/Constants/twoPi.js +17 -3
  518. data/app/assets/javascripts/Cesium/Shaders/Builtin/Constants/webMercatorMaxLatitude.js +17 -3
  519. data/app/assets/javascripts/Cesium/Shaders/Builtin/CzmBuiltins.js +43 -1
  520. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/RGBToXYZ.js +29 -11
  521. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/XYZToRGB.js +29 -10
  522. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/alphaWeight.js +24 -19
  523. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/antialias.js +35 -10
  524. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/cascadeColor.glsl +8 -0
  525. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/cascadeColor.js +13 -0
  526. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/cascadeDistance.glsl +7 -0
  527. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/cascadeDistance.js +12 -0
  528. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/cascadeMatrix.glsl +10 -0
  529. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/cascadeMatrix.js +15 -0
  530. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/cascadeWeights.glsl +10 -0
  531. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/cascadeWeights.js +15 -0
  532. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/columbusViewMorph.js +11 -4
  533. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/computePosition.js +23 -2
  534. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/cosineAndSine.js +208 -162
  535. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/decompressTextureCoordinates.js +17 -8
  536. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/eastNorthUpToEyeCoordinates.js +32 -9
  537. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/ellipsoidContainsPoint.js +11 -4
  538. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/ellipsoidNew.js +13 -6
  539. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/ellipsoidWgs84TextureCoordinates.js +9 -3
  540. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/equalsEpsilon.js +30 -6
  541. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/eyeOffset.js +19 -7
  542. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/eyeToWindowCoordinates.js +31 -6
  543. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/fog.js +18 -5
  544. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/geodeticSurfaceNormal.js +15 -3
  545. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/getDefaultMaterial.js +26 -10
  546. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/getLambertDiffuse.js +22 -5
  547. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/getSpecular.js +26 -7
  548. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/getWaterNoise.js +36 -25
  549. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/getWgs84EllipsoidEC.js +20 -7
  550. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/hue.js +29 -13
  551. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/isEmpty.js +18 -3
  552. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/isFull.js +18 -3
  553. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/latitudeToWebMercatorFraction.js +20 -5
  554. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/luminance.js +19 -4
  555. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/metersPerPixel.js +40 -27
  556. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/modelToWindowCoordinates.js +36 -6
  557. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/multiplyWithColorBalance.js +17 -8
  558. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/nearFarScalar.js +25 -9
  559. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/octDecode.js +65 -31
  560. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/packDepth.js +17 -6
  561. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/phong.js +53 -23
  562. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/pointAlongRay.js +18 -3
  563. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/rayEllipsoidIntersectionInterval.js +82 -71
  564. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/saturation.js +21 -5
  565. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/shadowDepthCompare.glsl +24 -0
  566. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/shadowDepthCompare.js +29 -0
  567. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/shadowVisibility.glsl +66 -0
  568. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/shadowVisibility.js +72 -0
  569. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/signNotZero.js +20 -8
  570. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/tangentToEyeSpaceMatrix.js +24 -8
  571. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/translateRelativeToEye.js +39 -5
  572. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/translucentPhong.js +29 -17
  573. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/transpose.js +38 -14
  574. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/unpackDepth.js +17 -5
  575. data/app/assets/javascripts/Cesium/Shaders/Builtin/Functions/windowToEyeCoordinates.js +34 -9
  576. data/app/assets/javascripts/Cesium/Shaders/Builtin/Structs/depthRangeStruct.js +9 -6
  577. data/app/assets/javascripts/Cesium/Shaders/Builtin/Structs/ellipsoid.js +12 -8
  578. data/app/assets/javascripts/Cesium/Shaders/Builtin/Structs/material.js +22 -10
  579. data/app/assets/javascripts/Cesium/Shaders/Builtin/Structs/materialInput.js +22 -10
  580. data/app/assets/javascripts/Cesium/Shaders/Builtin/Structs/ray.js +11 -6
  581. data/app/assets/javascripts/Cesium/Shaders/Builtin/Structs/raySegment.js +24 -4
  582. data/app/assets/javascripts/Cesium/Shaders/Builtin/Structs/shadowParameters.glsl +15 -0
  583. data/app/assets/javascripts/Cesium/Shaders/Builtin/Structs/shadowParameters.js +20 -0
  584. data/app/assets/javascripts/Cesium/Shaders/CompositeOITFS.js +18 -8
  585. data/app/assets/javascripts/Cesium/Shaders/DepthPlaneFS.js +18 -15
  586. data/app/assets/javascripts/Cesium/Shaders/DepthPlaneVS.js +6 -5
  587. data/app/assets/javascripts/Cesium/Shaders/EllipsoidFS.js +87 -56
  588. data/app/assets/javascripts/Cesium/Shaders/EllipsoidVS.js +22 -6
  589. data/app/assets/javascripts/Cesium/Shaders/GlobeFS.glsl +2 -2
  590. data/app/assets/javascripts/Cesium/Shaders/GlobeFS.js +184 -101
  591. data/app/assets/javascripts/Cesium/Shaders/GlobeVS.glsl +8 -7
  592. data/app/assets/javascripts/Cesium/Shaders/GlobeVS.js +86 -56
  593. data/app/assets/javascripts/Cesium/Shaders/GroundAtmosphere.js +107 -44
  594. data/app/assets/javascripts/Cesium/Shaders/Materials/BumpMapMaterial.js +25 -18
  595. data/app/assets/javascripts/Cesium/Shaders/Materials/CheckerboardMaterial.js +23 -14
  596. data/app/assets/javascripts/Cesium/Shaders/Materials/DotMaterial.js +12 -7
  597. data/app/assets/javascripts/Cesium/Shaders/Materials/FadeMaterial.js +25 -19
  598. data/app/assets/javascripts/Cesium/Shaders/Materials/GridMaterial.js +45 -30
  599. data/app/assets/javascripts/Cesium/Shaders/Materials/NormalMapMaterial.js +15 -12
  600. data/app/assets/javascripts/Cesium/Shaders/Materials/PolylineArrowMaterial.js +52 -40
  601. data/app/assets/javascripts/Cesium/Shaders/Materials/PolylineGlowMaterial.js +12 -7
  602. data/app/assets/javascripts/Cesium/Shaders/Materials/PolylineOutlineMaterial.js +22 -14
  603. data/app/assets/javascripts/Cesium/Shaders/Materials/RimLightingMaterial.js +13 -8
  604. data/app/assets/javascripts/Cesium/Shaders/Materials/StripeMaterial.js +16 -10
  605. data/app/assets/javascripts/Cesium/Shaders/Materials/Water.js +47 -21
  606. data/app/assets/javascripts/Cesium/Shaders/PointPrimitiveCollectionFS.js +20 -15
  607. data/app/assets/javascripts/Cesium/Shaders/PointPrimitiveCollectionVS.js +128 -82
  608. data/app/assets/javascripts/Cesium/Shaders/PolylineCommon.glsl +2 -2
  609. data/app/assets/javascripts/Cesium/Shaders/PolylineCommon.js +87 -68
  610. data/app/assets/javascripts/Cesium/Shaders/PolylineFS.js +11 -9
  611. data/app/assets/javascripts/Cesium/Shaders/PolylineVS.js +45 -40
  612. data/app/assets/javascripts/Cesium/Shaders/PostProcessFilters/AdditiveBlend.js +10 -6
  613. data/app/assets/javascripts/Cesium/Shaders/PostProcessFilters/BrightPass.js +20 -11
  614. data/app/assets/javascripts/Cesium/Shaders/PostProcessFilters/FXAA.js +223 -136
  615. data/app/assets/javascripts/Cesium/Shaders/PostProcessFilters/GaussianBlur1D.js +29 -17
  616. data/app/assets/javascripts/Cesium/Shaders/PostProcessFilters/PassThrough.js +5 -3
  617. data/app/assets/javascripts/Cesium/Shaders/ReprojectWebMercatorFS.js +4 -2
  618. data/app/assets/javascripts/Cesium/Shaders/ReprojectWebMercatorVS.js +6 -3
  619. data/app/assets/javascripts/Cesium/Shaders/ShadowVolumeFS.js +9 -6
  620. data/app/assets/javascripts/Cesium/Shaders/ShadowVolumeVS.js +12 -7
  621. data/app/assets/javascripts/Cesium/Shaders/SkyAtmosphereFS.glsl +47 -7
  622. data/app/assets/javascripts/Cesium/Shaders/SkyAtmosphereFS.js +90 -10
  623. data/app/assets/javascripts/Cesium/Shaders/SkyAtmosphereVS.glsl +52 -51
  624. data/app/assets/javascripts/Cesium/Shaders/SkyAtmosphereVS.js +115 -61
  625. data/app/assets/javascripts/Cesium/Shaders/SkyBoxFS.js +5 -3
  626. data/app/assets/javascripts/Cesium/Shaders/SkyBoxVS.js +6 -4
  627. data/app/assets/javascripts/Cesium/Shaders/SunFS.js +4 -2
  628. data/app/assets/javascripts/Cesium/Shaders/SunTextureFS.js +45 -21
  629. data/app/assets/javascripts/Cesium/Shaders/SunVS.js +24 -17
  630. data/app/assets/javascripts/Cesium/Shaders/ViewportQuadFS.js +15 -11
  631. data/app/assets/javascripts/Cesium/Shaders/ViewportQuadVS.js +7 -6
  632. data/app/assets/javascripts/Cesium/ThirdParty/NoSleep.js +2 -2
  633. data/app/assets/javascripts/Cesium/ThirdParty/earcut-2.1.1.js +649 -0
  634. data/app/assets/javascripts/Cesium/ThirdParty/knockout-3.4.0.js +123 -0
  635. data/app/assets/javascripts/Cesium/ThirdParty/knockout.js +2 -2
  636. data/app/assets/javascripts/Cesium/Widgets/Animation/Animation.js +1 -1
  637. data/app/assets/javascripts/Cesium/Widgets/Animation/AnimationViewModel.js +4 -24
  638. data/app/assets/javascripts/Cesium/Widgets/BaseLayerPicker/BaseLayerPicker.js +5 -5
  639. data/app/assets/javascripts/Cesium/Widgets/BaseLayerPicker/BaseLayerPickerViewModel.js +1 -1
  640. data/app/assets/javascripts/Cesium/Widgets/BaseLayerPicker/ProviderViewModel.js +1 -1
  641. data/app/assets/javascripts/Cesium/Widgets/BaseLayerPicker/createDefaultImageryProviderViewModels.js +14 -14
  642. data/app/assets/javascripts/Cesium/Widgets/BaseLayerPicker/createDefaultTerrainProviderViewModels.js +2 -2
  643. data/app/assets/javascripts/Cesium/Widgets/CesiumInspector/CesiumInspector.js +1 -1
  644. data/app/assets/javascripts/Cesium/Widgets/CesiumInspector/CesiumInspectorViewModel.js +1 -1
  645. data/app/assets/javascripts/Cesium/Widgets/CesiumWidget/CesiumWidget.js +10 -4
  646. data/app/assets/javascripts/Cesium/Widgets/ClockViewModel.js +76 -133
  647. data/app/assets/javascripts/Cesium/Widgets/Command.js +1 -1
  648. data/app/assets/javascripts/Cesium/Widgets/FullscreenButton/FullscreenButton.js +1 -1
  649. data/app/assets/javascripts/Cesium/Widgets/FullscreenButton/FullscreenButtonViewModel.js +1 -1
  650. data/app/assets/javascripts/Cesium/Widgets/Geocoder/Geocoder.js +2 -2
  651. data/app/assets/javascripts/Cesium/Widgets/Geocoder/GeocoderViewModel.js +9 -5
  652. data/app/assets/javascripts/Cesium/Widgets/HomeButton/HomeButton.js +1 -1
  653. data/app/assets/javascripts/Cesium/Widgets/HomeButton/HomeButtonViewModel.js +2 -47
  654. data/app/assets/javascripts/Cesium/Widgets/InfoBox/InfoBox.js +1 -1
  655. data/app/assets/javascripts/Cesium/Widgets/InfoBox/InfoBoxViewModel.js +1 -1
  656. data/app/assets/javascripts/Cesium/Widgets/NavigationHelpButton/NavigationHelpButton.js +1 -1
  657. data/app/assets/javascripts/Cesium/Widgets/NavigationHelpButton/NavigationHelpButtonViewModel.js +1 -1
  658. data/app/assets/javascripts/Cesium/Widgets/PerformanceWatchdog/PerformanceWatchdog.js +1 -1
  659. data/app/assets/javascripts/Cesium/Widgets/PerformanceWatchdog/PerformanceWatchdogViewModel.js +1 -1
  660. data/app/assets/javascripts/Cesium/Widgets/SceneModePicker/SceneModePicker.js +1 -1
  661. data/app/assets/javascripts/Cesium/Widgets/SceneModePicker/SceneModePickerViewModel.js +1 -1
  662. data/app/assets/javascripts/Cesium/Widgets/SelectionIndicator/SelectionIndicator.js +1 -1
  663. data/app/assets/javascripts/Cesium/Widgets/SelectionIndicator/SelectionIndicatorViewModel.js +1 -1
  664. data/app/assets/javascripts/Cesium/Widgets/SvgPathBindingHandler.js +1 -1
  665. data/app/assets/javascripts/Cesium/Widgets/Timeline/Timeline.js +1 -1
  666. data/app/assets/javascripts/Cesium/Widgets/Timeline/TimelineHighlightRange.js +1 -1
  667. data/app/assets/javascripts/Cesium/Widgets/Timeline/TimelineTrack.js +1 -1
  668. data/app/assets/javascripts/Cesium/Widgets/ToggleButtonViewModel.js +1 -1
  669. data/app/assets/javascripts/Cesium/Widgets/VRButton/VRButton.js +2 -3
  670. data/app/assets/javascripts/Cesium/Widgets/VRButton/VRButtonViewModel.js +1 -1
  671. data/app/assets/javascripts/Cesium/Widgets/Viewer/Viewer.js +130 -38
  672. data/app/assets/javascripts/Cesium/Widgets/Viewer/viewerCesiumInspectorMixin.js +1 -1
  673. data/app/assets/javascripts/Cesium/Widgets/Viewer/viewerDragDropMixin.js +27 -5
  674. data/app/assets/javascripts/Cesium/Widgets/Viewer/viewerPerformanceWatchdogMixin.js +1 -1
  675. data/app/assets/javascripts/Cesium/Widgets/createCommand.js +1 -1
  676. data/app/assets/javascripts/Cesium/Widgets/getElement.js +1 -1
  677. data/app/assets/javascripts/Cesium/Widgets/subscribeAndEvaluate.js +1 -1
  678. data/app/assets/javascripts/Cesium/Workers/cesiumWorkerBootstrapper.js +1 -23
  679. data/app/assets/javascripts/Cesium/Workers/combineGeometry.js +801 -190
  680. data/app/assets/javascripts/Cesium/Workers/createBoxGeometry.js +404 -155
  681. data/app/assets/javascripts/Cesium/Workers/createBoxOutlineGeometry.js +402 -118
  682. data/app/assets/javascripts/Cesium/Workers/createCircleGeometry.js +5844 -318
  683. data/app/assets/javascripts/Cesium/Workers/createCircleOutlineGeometry.js +411 -137
  684. data/app/assets/javascripts/Cesium/Workers/createCorridorGeometry.js +2273 -277
  685. data/app/assets/javascripts/Cesium/Workers/createCorridorOutlineGeometry.js +2131 -275
  686. data/app/assets/javascripts/Cesium/Workers/createCylinderGeometry.js +466 -134
  687. data/app/assets/javascripts/Cesium/Workers/createCylinderOutlineGeometry.js +465 -133
  688. data/app/assets/javascripts/Cesium/Workers/createEllipseGeometry.js +5829 -313
  689. data/app/assets/javascripts/Cesium/Workers/createEllipseOutlineGeometry.js +409 -132
  690. data/app/assets/javascripts/Cesium/Workers/createEllipsoidGeometry.js +480 -126
  691. data/app/assets/javascripts/Cesium/Workers/createEllipsoidOutlineGeometry.js +405 -120
  692. data/app/assets/javascripts/Cesium/Workers/createGeometry.js +801 -190
  693. data/app/assets/javascripts/Cesium/Workers/createPointGeometry.js +397 -117
  694. data/app/assets/javascripts/Cesium/Workers/createPolygonGeometry.js +2020 -1892
  695. data/app/assets/javascripts/Cesium/Workers/createPolygonOutlineGeometry.js +1748 -1845
  696. data/app/assets/javascripts/Cesium/Workers/createPolylineGeometry.js +755 -211
  697. data/app/assets/javascripts/Cesium/Workers/createPolylineVolumeGeometry.js +7848 -7187
  698. data/app/assets/javascripts/Cesium/Workers/createPolylineVolumeOutlineGeometry.js +9211 -8612
  699. data/app/assets/javascripts/Cesium/Workers/createRectangleGeometry.js +1758 -1929
  700. data/app/assets/javascripts/Cesium/Workers/createRectangleOutlineGeometry.js +1657 -1945
  701. data/app/assets/javascripts/Cesium/Workers/createSimplePolylineGeometry.js +649 -207
  702. data/app/assets/javascripts/Cesium/Workers/createSphereGeometry.js +481 -127
  703. data/app/assets/javascripts/Cesium/Workers/createSphereOutlineGeometry.js +406 -121
  704. data/app/assets/javascripts/Cesium/Workers/createTaskProcessorWorker.js +1 -1
  705. data/app/assets/javascripts/Cesium/Workers/createVerticesFromHeightmap.js +778 -213
  706. data/app/assets/javascripts/Cesium/Workers/createVerticesFromQuantizedTerrainMesh.js +783 -531
  707. data/app/assets/javascripts/Cesium/Workers/createWallGeometry.js +2323 -1870
  708. data/app/assets/javascripts/Cesium/Workers/createWallOutlineGeometry.js +2320 -1868
  709. data/app/assets/javascripts/Cesium/Workers/transferTypedArrayTest.js +1 -1
  710. data/app/assets/javascripts/Cesium/Workers/upsampleQuantizedTerrainMesh.js +780 -214
  711. data/app/assets/javascripts/Cesium/main.js +1 -1
  712. data/lib/cesium/engine.rb +0 -2
  713. data/lib/cesium/version.rb +1 -1
  714. data/test/dummy/log/development.log +7 -0
  715. data/test/dummy/tmp/cache/assets/B70/EA0/sprockets%2F415763926244628691463c356154a895 +0 -0
  716. data/test/dummy/tmp/cache/assets/BA3/7C0/sprockets%2F9199311873d9097949e7e43421215154 +0 -0
  717. data/test/dummy/tmp/cache/assets/BB8/EE0/sprockets%2F22646b151508362346e2037627746ed0 +0 -0
  718. data/test/dummy/tmp/cache/assets/BD4/E30/sprockets%2F63f08889074483c4176494c5763b2291 +0 -0
  719. data/test/dummy/tmp/cache/assets/BD8/B40/sprockets%2F164720065103c7505436426a256c0e0f +0 -0
  720. data/test/dummy/tmp/cache/assets/BE6/130/sprockets%2Fa803162154793f1463540d2c30093d69 +0 -0
  721. data/test/dummy/tmp/cache/assets/C00/920/sprockets%2F4168a71e5976c541d561972b17848434 +0 -0
  722. data/test/dummy/tmp/cache/assets/C08/870/sprockets%2F36f6990a925f3931d77806412c968733 +0 -0
  723. data/test/dummy/tmp/cache/assets/C09/580/sprockets%2F249187d5a491008c57209948c865893e +0 -0
  724. data/test/dummy/tmp/cache/assets/C11/130/sprockets%2F1b030e38f01f4166e1164512847193d4 +0 -0
  725. data/test/dummy/tmp/cache/assets/C16/010/sprockets%2F44d3496a9801634301be407503c78c05 +0 -0
  726. data/test/dummy/tmp/cache/assets/C16/BE0/sprockets%2F730c481502395cc21463bcc305986308 +0 -0
  727. data/test/dummy/tmp/cache/assets/C1D/0F0/sprockets%2Fd185114097044d84160c2b2c197a8776 +0 -0
  728. data/test/dummy/tmp/cache/assets/C1D/8C0/sprockets%2F5e27813463747ac2a868260fb4224370 +0 -0
  729. data/test/dummy/tmp/cache/assets/C21/280/sprockets%2F501c5298f4631437a27a6b514783e851 +0 -0
  730. data/test/dummy/tmp/cache/assets/C23/D40/sprockets%2F6a100052cb79899083d4e93c16294192 +0 -0
  731. data/test/dummy/tmp/cache/assets/C28/C50/sprockets%2Fa0547c4859498c809088a437023bd254 +0 -0
  732. data/test/dummy/tmp/cache/assets/C2B/E00/sprockets%2Fc04978048739428a79d6348576ab030a +0 -0
  733. data/test/dummy/tmp/cache/assets/C2D/2B0/sprockets%2F8fb4c07a40972c58848150577f808351 +0 -0
  734. data/test/dummy/tmp/cache/assets/C2E/360/sprockets%2F318d19847257c8325ae5d1768373109f +0 -0
  735. data/test/dummy/tmp/cache/assets/C30/6A0/sprockets%2F86639346b855d519444548bde64d2080 +0 -0
  736. data/test/dummy/tmp/cache/assets/C31/430/sprockets%2F757866099770079f1160438af16a47dc +0 -0
  737. data/test/dummy/tmp/cache/assets/C31/890/sprockets%2F82ba164b323d36f31099766199596f73 +0 -0
  738. data/test/dummy/tmp/cache/assets/C38/390/sprockets%2F1a55d53525172efa026d840b35506014 +0 -0
  739. data/test/dummy/tmp/cache/assets/C3B/500/sprockets%2F8a8546745e8f5486045f7797c1619b11 +0 -0
  740. data/test/dummy/tmp/cache/assets/C3C/000/sprockets%2F849cf39629892037a0d865817086d8c3 +0 -0
  741. data/test/dummy/tmp/cache/assets/C3E/980/sprockets%2F00fce10d03861d2101743695f0716c66 +0 -0
  742. data/test/dummy/tmp/cache/assets/C41/190/sprockets%2F93fc2cf200a5a781542882095101d056 +0 -0
  743. data/test/dummy/tmp/cache/assets/C43/910/sprockets%2Fa5310b505465cfc5091562a24c787505 +0 -0
  744. data/test/dummy/tmp/cache/assets/C44/EF0/sprockets%2F240e8542975a86810b0a22a9b1a67146 +0 -0
  745. data/test/dummy/tmp/cache/assets/C45/280/sprockets%2F17431114665e693186d90f05f4c0c30a +0 -0
  746. data/test/dummy/tmp/cache/assets/C48/170/sprockets%2F433accb9424237a1971b90769d040725 +0 -0
  747. data/test/dummy/tmp/cache/assets/C48/A40/sprockets%2F8019259f130684d1a510dbc34203f887 +0 -0
  748. data/test/dummy/tmp/cache/assets/C49/100/sprockets%2F2803de2f7f2329384d141864d40005e5 +0 -0
  749. data/test/dummy/tmp/cache/assets/C4A/720/sprockets%2F7b3e799b999140224211f208a43640ac +0 -0
  750. data/test/dummy/tmp/cache/assets/C4A/930/sprockets%2Fd88401412b1d606300ec88f32478098a +0 -0
  751. data/test/dummy/tmp/cache/assets/C4A/B10/sprockets%2F6a04d003d41e0b3667c93653d6406948 +0 -0
  752. data/test/dummy/tmp/cache/assets/C4A/CD0/sprockets%2F56c4436d8128b0781f3e27192f22a206 +0 -0
  753. data/test/dummy/tmp/cache/assets/C4A/FE0/sprockets%2F9d13c5426cd241c98670a8c203452455 +0 -0
  754. data/test/dummy/tmp/cache/assets/C4C/690/sprockets%2F68055490815dd241d825a63e5207de50 +0 -0
  755. data/test/dummy/tmp/cache/assets/C4C/840/sprockets%2F4a4840159653544c8405091bf3c8b7b2 +0 -0
  756. data/test/dummy/tmp/cache/assets/C4C/870/sprockets%2F87d9111687142ac781f1436630eb4b16 +0 -0
  757. data/test/dummy/tmp/cache/assets/C4C/970/sprockets%2F6d3aaf87a41246f4c815449565022901 +0 -0
  758. data/test/dummy/tmp/cache/assets/C4D/7F0/sprockets%2F7a1a613e8e51e07f56097180649134b2 +0 -0
  759. data/test/dummy/tmp/cache/assets/C4E/0E0/sprockets%2F45db287304280bac49d406998e341171 +0 -0
  760. data/test/dummy/tmp/cache/assets/C4E/2C0/sprockets%2F201e128c44919bc76a327a949149d711 +0 -0
  761. data/test/dummy/tmp/cache/assets/C4E/E90/sprockets%2F94236344d8f073e0855073e296b1c1c2 +0 -0
  762. data/test/dummy/tmp/cache/assets/C4F/690/sprockets%2F771870445807107490b63bfd6e0b543d +0 -0
  763. data/test/dummy/tmp/cache/assets/C53/290/sprockets%2Fccc1d66149733e921216e73563904e09 +0 -0
  764. data/test/dummy/tmp/cache/assets/C53/EC0/sprockets%2F50d8a6419663d2122f30958ca747557a +0 -0
  765. data/test/dummy/tmp/cache/assets/C53/F70/sprockets%2F2593d93f154598557e0b3c52110f4a93 +0 -0
  766. data/test/dummy/tmp/cache/assets/C54/680/sprockets%2F31c6133a4541f42b507e5689b076759f +0 -0
  767. data/test/dummy/tmp/cache/assets/C54/DB0/sprockets%2F2719348e2d22ac92794d138751f702f2 +0 -0
  768. data/test/dummy/tmp/cache/assets/C55/190/sprockets%2F4954963bb7014c50075c9955e92117ad +0 -0
  769. data/test/dummy/tmp/cache/assets/C55/260/sprockets%2F327e55ae4e55071a665577d8204068a7 +0 -0
  770. data/test/dummy/tmp/cache/assets/C56/F70/sprockets%2Fb7936623915940a2406637b4cf39a6a8 +0 -0
  771. data/test/dummy/tmp/cache/assets/C57/090/sprockets%2F1da581873ec878f18603d04d08628271 +0 -0
  772. data/test/dummy/tmp/cache/assets/C57/690/sprockets%2F8ec676600b031750853c8417840dd96f +0 -0
  773. data/test/dummy/tmp/cache/assets/C58/E80/sprockets%2F5a04e8d5c583fd764108461d70570658 +0 -0
  774. data/test/dummy/tmp/cache/assets/C5A/A30/sprockets%2F72626d58007d569ee313823e7c081c59 +0 -0
  775. data/test/dummy/tmp/cache/assets/C5C/600/sprockets%2F6ec94c904254580e8691821109d6ad57 +0 -0
  776. data/test/dummy/tmp/cache/assets/C5D/920/sprockets%2F02a0a3531eb2547a50108216af76052e +0 -0
  777. data/test/dummy/tmp/cache/assets/C5D/D20/sprockets%2F0a72b69dd9748ee93063018a88534418 +0 -0
  778. data/test/dummy/tmp/cache/assets/C5F/0D0/sprockets%2F55884638b487591e0c6a547e164d41e3 +0 -0
  779. data/test/dummy/tmp/cache/assets/C5F/8E0/sprockets%2F05629754bf709956d70b6145a8a538e5 +0 -0
  780. data/test/dummy/tmp/cache/assets/C60/9A0/sprockets%2F8e864573639a6852d1dac09861431a88 +0 -0
  781. data/test/dummy/tmp/cache/assets/C61/690/sprockets%2Fef30d34398c6492a49253844e5705f84 +0 -0
  782. data/test/dummy/tmp/cache/assets/C62/AE0/sprockets%2F73190d40c15416381cfb235a40290a0d +0 -0
  783. data/test/dummy/tmp/cache/assets/C64/8F0/sprockets%2Fd004e9ae71630e404522735a44c52a11 +0 -0
  784. data/test/dummy/tmp/cache/assets/C67/000/sprockets%2F459162b63f85d762351846ff602c978e +0 -0
  785. data/test/dummy/tmp/cache/assets/C67/440/sprockets%2F7b39936ea20f266108d772fa98474956 +0 -0
  786. data/test/dummy/tmp/cache/assets/C69/C10/sprockets%2F0d7a126eccc4329435124e522220378a +0 -0
  787. data/test/dummy/tmp/cache/assets/C6A/290/sprockets%2F080307eac72147555366d0e64d1023ab +0 -0
  788. data/test/dummy/tmp/cache/assets/C6A/A20/sprockets%2F700c900bd7b522d041681823904ae2e4 +0 -0
  789. data/test/dummy/tmp/cache/assets/C6B/180/sprockets%2Fc06c1202213e2846058431e3e707a2ff +0 -0
  790. data/test/dummy/tmp/cache/assets/C6C/810/sprockets%2F2718853497b7c397d445ef31f934d458 +0 -0
  791. data/test/dummy/tmp/cache/assets/C6D/BE0/sprockets%2F64a2905185a109011db1f405b65e267d +0 -0
  792. data/test/dummy/tmp/cache/assets/C6E/7D0/sprockets%2F86970687f69e155a83e951cec4596043 +0 -0
  793. data/test/dummy/tmp/cache/assets/C6F/200/sprockets%2F077d53f7ba6e3516496c867968b27774 +0 -0
  794. data/test/dummy/tmp/cache/assets/C6F/3B0/sprockets%2F072048ba3124b22756e3f534e390f16a +0 -0
  795. data/test/dummy/tmp/cache/assets/C6F/DF0/sprockets%2F19b991b49958f790691b43cc876c9441 +0 -0
  796. data/test/dummy/tmp/cache/assets/C70/1B0/sprockets%2F4811e0613a227e101b26d64ffe154683 +0 -0
  797. data/test/dummy/tmp/cache/assets/C70/1F0/sprockets%2F22a273052fb00b84bce2849f13982530 +0 -0
  798. data/test/dummy/tmp/cache/assets/C70/580/sprockets%2Fe894a965928c1287872a0fd297b99353 +0 -0
  799. data/test/dummy/tmp/cache/assets/C70/850/sprockets%2F7be0213040c3acb682e573608e441970 +0 -0
  800. data/test/dummy/tmp/cache/assets/C70/920/sprockets%2F962b044631a652d42417c109eb24ec81 +0 -0
  801. data/test/dummy/tmp/cache/assets/C72/120/sprockets%2F0e1a725795d10e13e4164c31e88351d1 +0 -0
  802. data/test/dummy/tmp/cache/assets/C72/AC0/sprockets%2F44b7435a96cd144c4b5250e01855a821 +0 -0
  803. data/test/dummy/tmp/cache/assets/C73/5C0/sprockets%2F2080c93263c030d48dc94ea39305327c +0 -0
  804. data/test/dummy/tmp/cache/assets/C73/DA0/sprockets%2F7181b49b99a79c76839798190aa6059f +0 -0
  805. data/test/dummy/tmp/cache/assets/C75/FB0/sprockets%2F93279bdd44712b4008b4d29051904f0c +0 -0
  806. data/test/dummy/tmp/cache/assets/C76/7D0/sprockets%2F4d655f939b8b1a2462ea13042b367711 +0 -0
  807. data/test/dummy/tmp/cache/assets/C77/780/sprockets%2F8638238293665a14e6ce2dca0a402363 +0 -0
  808. data/test/dummy/tmp/cache/assets/C7A/080/sprockets%2Fb7920ad71b46043c642816643ce1a795 +0 -0
  809. data/test/dummy/tmp/cache/assets/C7A/410/sprockets%2F55d7ac1c22d7347551e2a65251d17288 +0 -0
  810. data/test/dummy/tmp/cache/assets/C7C/060/sprockets%2F32694b33b7720372b42698cc49dab360 +0 -0
  811. data/test/dummy/tmp/cache/assets/C7C/820/sprockets%2F75345871dc6b88eb502f1ec014518621 +0 -0
  812. data/test/dummy/tmp/cache/assets/C7C/C90/sprockets%2F92c082511a234b21cf6c479b6f507576 +0 -0
  813. data/test/dummy/tmp/cache/assets/C7D/2C0/sprockets%2F510dcf322fa428af8292d31657315757 +0 -0
  814. data/test/dummy/tmp/cache/assets/C7D/600/sprockets%2F24302027765679153e1c3da944e4af4f +0 -0
  815. data/test/dummy/tmp/cache/assets/C7D/950/sprockets%2F6c0363b13959ad48161b25b1c835657e +0 -0
  816. data/test/dummy/tmp/cache/assets/C7E/020/sprockets%2Fb4872fbe9811293022084aa304d9864e +0 -0
  817. data/test/dummy/tmp/cache/assets/C7E/C90/sprockets%2F1f75e76943967aa1351a564142fa052f +0 -0
  818. data/test/dummy/tmp/cache/assets/C7F/C80/sprockets%2F172018043d58cd572b8e4914de134a79 +0 -0
  819. data/test/dummy/tmp/cache/assets/C7F/DE0/sprockets%2F20684b3051676c77e9b2fa423363ee71 +0 -0
  820. data/test/dummy/tmp/cache/assets/C80/0C0/sprockets%2F3400b37f7b6f95f54bf7768165200b32 +0 -0
  821. data/test/dummy/tmp/cache/assets/C80/140/sprockets%2F171f748250c3977590f1318aa18dd4d2 +0 -0
  822. data/test/dummy/tmp/cache/assets/C80/6D0/sprockets%2F307ca271082e5c14996c36267a288df0 +0 -0
  823. data/test/dummy/tmp/cache/assets/C80/710/sprockets%2F41b1692a0f1a77581854ee4b7709913a +0 -0
  824. data/test/dummy/tmp/cache/assets/C80/CD0/sprockets%2F0032971af77940c1af9e2f460177809a +0 -0
  825. data/test/dummy/tmp/cache/assets/C81/1D0/sprockets%2F2a5c1b8466476169a6e9127cd511e183 +0 -0
  826. data/test/dummy/tmp/cache/assets/C82/D20/sprockets%2F16a1605945c145b495cb85886de4603a +0 -0
  827. data/test/dummy/tmp/cache/assets/C83/180/sprockets%2F49eb5e9d119c601182d7359d1663420f +0 -0
  828. data/test/dummy/tmp/cache/assets/C83/380/sprockets%2F5e3f360822828773e961b800b9d0f1b5 +0 -0
  829. data/test/dummy/tmp/cache/assets/C83/520/sprockets%2F04723d8215f9557d6d801cf6b713824b +0 -0
  830. data/test/dummy/tmp/cache/assets/C83/7D0/sprockets%2F8a78d82e23b532c404b638c51b772855 +0 -0
  831. data/test/dummy/tmp/cache/assets/C83/A10/sprockets%2F888080c85be8f70236b191a37c1954a1 +0 -0
  832. data/test/dummy/tmp/cache/assets/C83/C20/sprockets%2F9399873eb3e83ae6409c409311aa0337 +0 -0
  833. data/test/dummy/tmp/cache/assets/C83/CF0/sprockets%2Fbf48616ee2905ea86820e1435287d601 +0 -0
  834. data/test/dummy/tmp/cache/assets/C84/090/sprockets%2F8b3262ab072d0c591f8919887aa69150 +0 -0
  835. data/test/dummy/tmp/cache/assets/C84/1B0/sprockets%2Ff5833fd0038d74016a792bf285d31819 +0 -0
  836. data/test/dummy/tmp/cache/assets/C84/510/sprockets%2F230e7994085286b76d2ed057d4b453d0 +0 -0
  837. data/test/dummy/tmp/cache/assets/C84/9D0/sprockets%2F95037f9678608da3a107e507baf73432 +0 -0
  838. data/test/dummy/tmp/cache/assets/C84/9F0/sprockets%2F93ea52b0048348f92586340f39ad471d +0 -0
  839. data/test/dummy/tmp/cache/assets/C86/1A0/sprockets%2F46d3f6f265fce039f207282c09068182 +0 -0
  840. data/test/dummy/tmp/cache/assets/C86/390/sprockets%2Fbf94371a30ea291d595677637e50e136 +0 -0
  841. data/test/dummy/tmp/cache/assets/C86/F40/sprockets%2Fa74f2353732b85185fdb46302b91796e +0 -0
  842. data/test/dummy/tmp/cache/assets/C86/FD0/sprockets%2F95be23334957f803517b6b4d2f18e704 +0 -0
  843. data/test/dummy/tmp/cache/assets/C87/130/sprockets%2F70284d571d967d3e17b3151d58e3d419 +0 -0
  844. data/test/dummy/tmp/cache/assets/C87/860/sprockets%2F06a90e1784696233013dd6ee75e4549b +0 -0
  845. data/test/dummy/tmp/cache/assets/C87/990/sprockets%2Fe99c6569107adae32564262cf9313175 +0 -0
  846. data/test/dummy/tmp/cache/assets/C87/9E0/sprockets%2F6830a5d84c87260428ec40874d25d2f6 +0 -0
  847. data/test/dummy/tmp/cache/assets/C88/480/sprockets%2Fa10a30c47b2a89644c3971c78845479f +0 -0
  848. data/test/dummy/tmp/cache/assets/C88/F80/sprockets%2F40018b3244b595e623d6183e8e7d89f1 +0 -0
  849. data/test/dummy/tmp/cache/assets/C89/C70/sprockets%2F8dfab10881842fb5e999140013f60769 +0 -0
  850. data/test/dummy/tmp/cache/assets/C8A/970/sprockets%2F9ac0c50557820ea3209b5e8f87182994 +0 -0
  851. data/test/dummy/tmp/cache/assets/C8B/280/sprockets%2F531c75712039f5913a77f3f8a37c429f +0 -0
  852. data/test/dummy/tmp/cache/assets/C8B/2B0/sprockets%2F757dfb06ec7a511563928862c5e94611 +0 -0
  853. data/test/dummy/tmp/cache/assets/C8C/2C0/sprockets%2F440b422a30853a03a2fd5902b62a62d2 +0 -0
  854. data/test/dummy/tmp/cache/assets/C8E/560/sprockets%2Fd689186c39da83044435b63c38ff6316 +0 -0
  855. data/test/dummy/tmp/cache/assets/C8E/B50/sprockets%2F1dd74756236ef168e5378ab072486f43 +0 -0
  856. data/test/dummy/tmp/cache/assets/C8F/000/sprockets%2F01a04205ee116fbb2683034aa55c8720 +0 -0
  857. data/test/dummy/tmp/cache/assets/C8F/2D0/sprockets%2F04cb2049579f1d33989f85c4333fe058 +0 -0
  858. data/test/dummy/tmp/cache/assets/C8F/3D0/sprockets%2F9a11673b79cf574111cca89f08768617 +0 -0
  859. data/test/dummy/tmp/cache/assets/C8F/780/sprockets%2Fe8d1b692466401f8a06c4697ff368280 +0 -0
  860. data/test/dummy/tmp/cache/assets/C90/3E0/sprockets%2Fed300792c820da1a4a180f3620e15530 +0 -0
  861. data/test/dummy/tmp/cache/assets/C90/640/sprockets%2Fa6375818960a576f5f7322f600487dcf +0 -0
  862. data/test/dummy/tmp/cache/assets/C90/F70/sprockets%2F58e63190d56e5b6e83e6487a84e35141 +0 -0
  863. data/test/dummy/tmp/cache/assets/C91/0D0/sprockets%2F5bd71287903ba95d2fb5743719549e92 +0 -0
  864. data/test/dummy/tmp/cache/assets/C91/8A0/sprockets%2Fe02395f83f6f5201913e1b888f46f645 +0 -0
  865. data/test/dummy/tmp/cache/assets/C91/9F0/sprockets%2F6c7a863808922147872566c40f7bcbd9 +0 -0
  866. data/test/dummy/tmp/cache/assets/C92/590/sprockets%2Fc853abc9c15987065c59c7395f328414 +0 -0
  867. data/test/dummy/tmp/cache/assets/C92/9A0/sprockets%2F6c85f9c609287aa6552391f576f0f405 +0 -0
  868. data/test/dummy/tmp/cache/assets/C92/C30/sprockets%2F2377b6f8d46f2a90820935754366f5ce +0 -0
  869. data/test/dummy/tmp/cache/assets/C92/DE0/sprockets%2F4e99f3610096e97c1287705d942ffb41 +0 -0
  870. data/test/dummy/tmp/cache/assets/C94/D10/sprockets%2F903d696bc385f21c973d97789a31e504 +0 -0
  871. data/test/dummy/tmp/cache/assets/C94/EC0/sprockets%2F1b6eff75c92917925b99948d113705d1 +0 -0
  872. data/test/dummy/tmp/cache/assets/C94/F40/sprockets%2F9a37284984ca20b598cc83b76d792166 +0 -0
  873. data/test/dummy/tmp/cache/assets/C95/B00/sprockets%2F4c52f13c15086198d5664ea4f775499f +0 -0
  874. data/test/dummy/tmp/cache/assets/C95/C40/sprockets%2F5215355bd83595661d71909bd8d896be +0 -0
  875. data/test/dummy/tmp/cache/assets/C95/E80/sprockets%2F188cbb0b17651c27b776977a9965e618 +0 -0
  876. data/test/dummy/tmp/cache/assets/C95/F70/sprockets%2F7d9b253e09f897f582400c3796c573b4 +0 -0
  877. data/test/dummy/tmp/cache/assets/C96/130/sprockets%2F65282946954409cc01f088f5c79ac68d +0 -0
  878. data/test/dummy/tmp/cache/assets/C96/1F0/sprockets%2Fc53ab6d278f5853970ef30296977572b +0 -0
  879. data/test/dummy/tmp/cache/assets/C96/290/sprockets%2Fa3d8033501e001f443c63c158a3a539d +0 -0
  880. data/test/dummy/tmp/cache/assets/C96/4C0/sprockets%2F289f946909e090b275a6b4e618a636d9 +0 -0
  881. data/test/dummy/tmp/cache/assets/C98/010/sprockets%2F3298073c8f769e62c70743ba5e93e945 +0 -0
  882. data/test/dummy/tmp/cache/assets/C98/D10/sprockets%2F26c19ec2f71a6305b43a823df0301254 +0 -0
  883. data/test/dummy/tmp/cache/assets/C99/370/sprockets%2F31a8306eb0a214485560f618913aec0a +0 -0
  884. data/test/dummy/tmp/cache/assets/C99/F10/sprockets%2F42347073fbba17e3be3883820c1000a8 +0 -0
  885. data/test/dummy/tmp/cache/assets/C9A/D60/sprockets%2F1c018c69d4f01ec016141ee18702b931 +0 -0
  886. data/test/dummy/tmp/cache/assets/C9B/380/sprockets%2F4e74f5a9e474b193de760499b1924795 +0 -0
  887. data/test/dummy/tmp/cache/assets/C9B/3A0/sprockets%2Fc094497ae817a3b6ea351032b105e620 +0 -0
  888. data/test/dummy/tmp/cache/assets/C9B/DF0/sprockets%2Ff7f415b64653f36815f3768c916666ec +0 -0
  889. data/test/dummy/tmp/cache/assets/C9C/120/sprockets%2F839161c85f65ed8f68d928b6e4041188 +0 -0
  890. data/test/dummy/tmp/cache/assets/C9C/D40/sprockets%2F72242032d5981411677a1ba91a2dafb6 +0 -0
  891. data/test/dummy/tmp/cache/assets/C9D/160/sprockets%2Fe44f317cb4c4d30720950d9028ee0121 +0 -0
  892. data/test/dummy/tmp/cache/assets/C9D/630/sprockets%2Fc6e27b659f5002ae303131e6d14b5371 +0 -0
  893. data/test/dummy/tmp/cache/assets/C9D/800/sprockets%2F35555164855b7b54f987dcf843cf8608 +0 -0
  894. data/test/dummy/tmp/cache/assets/C9E/160/sprockets%2F77816cc31480820ade5356034adeb311 +0 -0
  895. data/test/dummy/tmp/cache/assets/C9E/810/sprockets%2F7b91bc41a55d3247e3d1602637ab4037 +0 -0
  896. data/test/dummy/tmp/cache/assets/C9F/3A0/sprockets%2F2469356cd21d5a5902b06584ea0b20d5 +0 -0
  897. data/test/dummy/tmp/cache/assets/CA0/050/sprockets%2Fd4520f127c13e5a8423f01f67c5a4326 +0 -0
  898. data/test/dummy/tmp/cache/assets/CA0/600/sprockets%2F1554ed77fd047e539e9f682d35088991 +0 -0
  899. data/test/dummy/tmp/cache/assets/CA0/F30/sprockets%2F982647a591ddc998757090e366d275ed +0 -0
  900. data/test/dummy/tmp/cache/assets/CA1/7D0/sprockets%2F50a78c30747ead33523476cb40a059c2 +0 -0
  901. data/test/dummy/tmp/cache/assets/CA1/9B0/sprockets%2F45053226eab1846002ea7c538960dec2 +0 -0
  902. data/test/dummy/tmp/cache/assets/CA2/AB0/sprockets%2F407fea2123617145a476051d92e05efc +0 -0
  903. data/test/dummy/tmp/cache/assets/CA2/BC0/sprockets%2F336f5a0e85027c07c4460b10d548a7d4 +0 -0
  904. data/test/dummy/tmp/cache/assets/CA2/BD0/sprockets%2F49a81581024283ecaadb62346b47f006 +0 -0
  905. data/test/dummy/tmp/cache/assets/CA5/400/sprockets%2F2b82a7e99c0e05652445e06c1d17d051 +0 -0
  906. data/test/dummy/tmp/cache/assets/CA5/830/sprockets%2F410b486189cd22c6aa26437262e4fb16 +0 -0
  907. data/test/dummy/tmp/cache/assets/CA5/CE0/sprockets%2F849135fbf223644334ec2581842bb0ac +0 -0
  908. data/test/dummy/tmp/cache/assets/CA5/E50/sprockets%2F3e4d2074451614cfb807084ca42447dd +0 -0
  909. data/test/dummy/tmp/cache/assets/CA6/050/sprockets%2F0870154ae63a5f7c83121ef17d0846b2 +0 -0
  910. data/test/dummy/tmp/cache/assets/CA6/700/sprockets%2F60e083d5d4a45568066fad1d33b03519 +0 -0
  911. data/test/dummy/tmp/cache/assets/CA6/AD0/sprockets%2F288da8bd123c34371e2401459e8bd504 +0 -0
  912. data/test/dummy/tmp/cache/assets/CA7/070/sprockets%2F2d0497e8544ea11f3981814312abd3b5 +0 -0
  913. data/test/dummy/tmp/cache/assets/CA7/760/sprockets%2Fa271c3b894511332a0e1ab2589f46f39 +0 -0
  914. data/test/dummy/tmp/cache/assets/CA7/D20/sprockets%2F1f594f974f38ae85702ec10ae4233000 +0 -0
  915. data/test/dummy/tmp/cache/assets/CA7/D40/sprockets%2F09291437a41fbc8b0053920f836c4b9a +0 -0
  916. data/test/dummy/tmp/cache/assets/CA8/4C0/sprockets%2F921af2e1125bd4e722b86684326fd251 +0 -0
  917. data/test/dummy/tmp/cache/assets/CA8/790/sprockets%2F53bf33929435986dd2a0af314b2860b1 +0 -0
  918. data/test/dummy/tmp/cache/assets/CA8/8A0/sprockets%2F09a719af6b910a477a8e63a67016400e +0 -0
  919. data/test/dummy/tmp/cache/assets/CA8/A70/sprockets%2F2747015d607d40e647d84f4a7d02b51c +0 -0
  920. data/test/dummy/tmp/cache/assets/CA8/CF0/sprockets%2F13bc06476e3f5fa270409bd41c760791 +0 -0
  921. data/test/dummy/tmp/cache/assets/CA8/ED0/sprockets%2F95a93b16c02b6e70c4c44c8497153a22 +0 -0
  922. data/test/dummy/tmp/cache/assets/CA8/F50/sprockets%2F6c3b801a4e229736f0b183c35d542e29 +0 -0
  923. data/test/dummy/tmp/cache/assets/CAA/8B0/sprockets%2Ffcec766b6270b4380670c04215991b4c +0 -0
  924. data/test/dummy/tmp/cache/assets/CAA/8D0/sprockets%2Fb49800d7d861022a35878a725b5f15ab +0 -0
  925. data/test/dummy/tmp/cache/assets/CAA/BC0/sprockets%2F42078e308f64bba6180ed593c1257a08 +0 -0
  926. data/test/dummy/tmp/cache/assets/CAA/EF0/sprockets%2F13b3f1125490c5a2e82e24d64f780e39 +0 -0
  927. data/test/dummy/tmp/cache/assets/CAB/320/sprockets%2F78ac4929439bc866a653a2a12a2a5165 +0 -0
  928. data/test/dummy/tmp/cache/assets/CAB/4D0/sprockets%2F21a12d7663bea8213a833927457ed4f4 +0 -0
  929. data/test/dummy/tmp/cache/assets/CAB/720/sprockets%2F491d20bb57b07051ed188bd0f7028894 +0 -0
  930. data/test/dummy/tmp/cache/assets/CAB/750/sprockets%2F212a47ef9bbb0b0a425335683067f878 +0 -0
  931. data/test/dummy/tmp/cache/assets/CAB/890/sprockets%2F2f32992c977b6a811f0e38c6110434cb +0 -0
  932. data/test/dummy/tmp/cache/assets/CAB/D10/sprockets%2F27544d50488ac62f23e860d2f51307ea +0 -0
  933. data/test/dummy/tmp/cache/assets/CAC/F40/sprockets%2Fcce78188e804745f718a00dc1410e254 +0 -0
  934. data/test/dummy/tmp/cache/assets/CAD/4B0/sprockets%2F37111738f65d62046cb8e56440fc4ab6 +0 -0
  935. data/test/dummy/tmp/cache/assets/CAD/6C0/sprockets%2Fe836e0b2710029315f25e31966fa86ae +0 -0
  936. data/test/dummy/tmp/cache/assets/CAD/7F0/sprockets%2F52a078730ed34d144927702ecd5dc475 +0 -0
  937. data/test/dummy/tmp/cache/assets/CAD/890/sprockets%2F0b64e08b0310b5955e4274998de205ce +0 -0
  938. data/test/dummy/tmp/cache/assets/CAD/B70/sprockets%2F57254337db5e0be73c242ea5066744f5 +0 -0
  939. data/test/dummy/tmp/cache/assets/CAD/BE0/sprockets%2Fb4ae46150b8011119cd56d3789cf2288 +0 -0
  940. data/test/dummy/tmp/cache/assets/CAE/200/sprockets%2F48c74ad503720c817e9ba301f1b89583 +0 -0
  941. data/test/dummy/tmp/cache/assets/CAE/290/sprockets%2F8078875c0d64178ad1a11991d25bb44c +0 -0
  942. data/test/dummy/tmp/cache/assets/CAE/490/sprockets%2F51e43a989180ced34952a2b8c644c530 +0 -0
  943. data/test/dummy/tmp/cache/assets/CAE/630/sprockets%2F9d24d9f35a4650e41b4645c5d81b0842 +0 -0
  944. data/test/dummy/tmp/cache/assets/CAE/660/sprockets%2F15b8345da313eea0a96760340c9559e7 +0 -0
  945. data/test/dummy/tmp/cache/assets/CAE/880/sprockets%2Fd6c9a58dd76ec050444d324819262e20 +0 -0
  946. data/test/dummy/tmp/cache/assets/CAE/900/sprockets%2F0e397258561ee4b801e90c11134c9a8f +0 -0
  947. data/test/dummy/tmp/cache/assets/CAE/A40/sprockets%2F037f34c1814912af7f1f5d81080dd962 +0 -0
  948. data/test/dummy/tmp/cache/assets/CAF/8F0/sprockets%2Fdfb0351981258b34aa1a77478e5027e7 +0 -0
  949. data/test/dummy/tmp/cache/assets/CAF/F30/sprockets%2F93a3cb60248afb131545f47709fb6645 +0 -0
  950. data/test/dummy/tmp/cache/assets/CB0/240/sprockets%2F6e09e74c352d05b8f80699035203a1ef +0 -0
  951. data/test/dummy/tmp/cache/assets/CB0/6C0/sprockets%2Fb052b2fcf6576527d249d81d9251304f +0 -0
  952. data/test/dummy/tmp/cache/assets/CB0/6E0/sprockets%2Fb6374ab19b20f2254690b9099d1e73b8 +0 -0
  953. data/test/dummy/tmp/cache/assets/CB0/CB0/sprockets%2F4cf4d8b16152352bc516a4985b74d159 +0 -0
  954. data/test/dummy/tmp/cache/assets/CB0/CE0/sprockets%2F27b63550e66772dd1a53c2f583f1e921 +0 -0
  955. data/test/dummy/tmp/cache/assets/CB0/DA0/sprockets%2F4b44084421b0deeb1d2586e46b676793 +0 -0
  956. data/test/dummy/tmp/cache/assets/CB0/EF0/sprockets%2Fa01136a757d377c8efd38821723f82c0 +0 -0
  957. data/test/dummy/tmp/cache/assets/CB1/370/sprockets%2F590488652cd4303cc682fe9c941400cc +0 -0
  958. data/test/dummy/tmp/cache/assets/CB1/720/sprockets%2F018fab435fc393f71862ec3d10737934 +0 -0
  959. data/test/dummy/tmp/cache/assets/CB1/EA0/sprockets%2F4759506f0564d9c58127be282a1dbd51 +0 -0
  960. data/test/dummy/tmp/cache/assets/CB1/EE0/sprockets%2F931d2725b8c14ed84a31e373fc813188 +0 -0
  961. data/test/dummy/tmp/cache/assets/CB2/300/sprockets%2F224075f1624945daf1f76df5b3689c00 +0 -0
  962. data/test/dummy/tmp/cache/assets/CB2/360/sprockets%2F837c1d6062902933d1293dc73a7cdf47 +0 -0
  963. data/test/dummy/tmp/cache/assets/CB2/5A0/sprockets%2F434a0c6d7c301964022e91e8f99bb727 +0 -0
  964. data/test/dummy/tmp/cache/assets/CB2/E80/sprockets%2F4745738104a5b1a1952a3df67955e8da +0 -0
  965. data/test/dummy/tmp/cache/assets/CB3/360/sprockets%2F957ef101ecd45863632de600c9597a30 +0 -0
  966. data/test/dummy/tmp/cache/assets/CB3/720/sprockets%2F9d2028796498a1ab2c9bbb05665a0964 +0 -0
  967. data/test/dummy/tmp/cache/assets/CB3/AA0/sprockets%2F1a5341f5bbe847df26e716510318779c +0 -0
  968. data/test/dummy/tmp/cache/assets/CB3/CA0/sprockets%2F1d2306c646f5e2bf436be4914a949364 +0 -0
  969. data/test/dummy/tmp/cache/assets/CB3/F40/sprockets%2F65e40dc324ca81a9e17856342a77e591 +0 -0
  970. data/test/dummy/tmp/cache/assets/CB4/240/sprockets%2F940b55ae0d29d6602ca1776712f6f928 +0 -0
  971. data/test/dummy/tmp/cache/assets/CB4/790/sprockets%2F7dd7073112b9c5019e753ffa56463b66 +0 -0
  972. data/test/dummy/tmp/cache/assets/CB4/890/sprockets%2F7f8ab6f90720f3f6b19243c41b366465 +0 -0
  973. data/test/dummy/tmp/cache/assets/CB4/A60/sprockets%2Fa8fe69f6103d6939050046f08db165b5 +0 -0
  974. data/test/dummy/tmp/cache/assets/CB4/C50/sprockets%2Ff9ed4040f57f633876cd232780fa0128 +0 -0
  975. data/test/dummy/tmp/cache/assets/CB4/D90/sprockets%2F5fb974e230f8a43f0146694636b621fc +0 -0
  976. data/test/dummy/tmp/cache/assets/CB5/200/sprockets%2F769c51757781c4a190185baf1297eb3a +0 -0
  977. data/test/dummy/tmp/cache/assets/CB5/220/sprockets%2F014337688f75cc53366e1dee09642f0c +0 -0
  978. data/test/dummy/tmp/cache/assets/CB5/310/sprockets%2F2833f6b19a5ac7453729822f259b2db6 +0 -0
  979. data/test/dummy/tmp/cache/assets/CB5/610/sprockets%2F33ac72c81dc2a77850687691f1172c8d +0 -0
  980. data/test/dummy/tmp/cache/assets/CB5/B60/sprockets%2Fd29dae0ef3568721735ec72217826a28 +0 -0
  981. data/test/dummy/tmp/cache/assets/CB5/D90/sprockets%2F794b6d6ac1939404bb8e644725c0f155 +0 -0
  982. data/test/dummy/tmp/cache/assets/CB6/110/sprockets%2Fef8631566777061408af1c64bd43b3d9 +0 -0
  983. data/test/dummy/tmp/cache/assets/CB6/2C0/sprockets%2F84ca6c105bf1676b9b712908174747de +0 -0
  984. data/test/dummy/tmp/cache/assets/CB7/2E0/sprockets%2Ff1ed26933745612dc769d5fb75c17321 +0 -0
  985. data/test/dummy/tmp/cache/assets/CB7/A10/sprockets%2Fd34b045e6d4215367bcf6f08e4638926 +0 -0
  986. data/test/dummy/tmp/cache/assets/CB7/C10/sprockets%2F262600ead4686290c10b01aa60e0ce20 +0 -0
  987. data/test/dummy/tmp/cache/assets/CB7/D40/sprockets%2F699ef7310dacea441646312a965f7923 +0 -0
  988. data/test/dummy/tmp/cache/assets/CB7/D70/sprockets%2F2cdf87e3d1b3659309903e519a7251f5 +0 -0
  989. data/test/dummy/tmp/cache/assets/CB7/F00/sprockets%2F4e642eb013c8669a50db2fa895234779 +0 -0
  990. data/test/dummy/tmp/cache/assets/CB7/FA0/sprockets%2Fe11b1d418699c10ce19c92b8a8562992 +0 -0
  991. data/test/dummy/tmp/cache/assets/CB8/3B0/sprockets%2Ff293c101ef37e37fad1336567f288805 +0 -0
  992. data/test/dummy/tmp/cache/assets/CB8/550/sprockets%2F4979e71c0cc90484d185942e6ba104e7 +0 -0
  993. data/test/dummy/tmp/cache/assets/CB8/740/sprockets%2F86f24d82550d1d67070d828c593cda29 +0 -0
  994. data/test/dummy/tmp/cache/assets/CB8/7F0/sprockets%2F09b29c8ae26818da63953740870abb86 +0 -0
  995. data/test/dummy/tmp/cache/assets/CB8/980/sprockets%2F49c37cd6ce40901b895305f7393e53a5 +0 -0
  996. data/test/dummy/tmp/cache/assets/CB8/AC0/sprockets%2F31296d9a08823af1b68971b91645fb5c +0 -0
  997. data/test/dummy/tmp/cache/assets/CB8/B30/sprockets%2F13f7cb02749922719ffa184c96160a8f +0 -0
  998. data/test/dummy/tmp/cache/assets/CB8/CE0/sprockets%2Fd82b3fa60209f7b3e19775f13806785a +0 -0
  999. data/test/dummy/tmp/cache/assets/CB9/260/sprockets%2F7cfb2307bb86615c7743d75d164e9354 +0 -0
  1000. data/test/dummy/tmp/cache/assets/CB9/680/sprockets%2F769814cdb49069f4d3c4d73317a360b8 +0 -0
  1001. data/test/dummy/tmp/cache/assets/CB9/BE0/sprockets%2F5616190f6338dd921fae3517868cc8a2 +0 -0
  1002. data/test/dummy/tmp/cache/assets/CB9/D80/sprockets%2Fb71db9a0566b74607e170a9679c5276d +0 -0
  1003. data/test/dummy/tmp/cache/assets/CB9/FB0/sprockets%2F284a0fe46e42c9d28f912830cf479604 +0 -0
  1004. data/test/dummy/tmp/cache/assets/CB9/FC0/sprockets%2Fae273d06916808a44c8c47b744d2883e +0 -0
  1005. data/test/dummy/tmp/cache/assets/CB9/FD0/sprockets%2F868358f2ee30f4326e761014cd2576ee +0 -0
  1006. data/test/dummy/tmp/cache/assets/CBA/1A0/sprockets%2F8d919816a78bf3c2342a9810f35c26c8 +0 -0
  1007. data/test/dummy/tmp/cache/assets/CBA/FE0/sprockets%2Fbcdc17a3d142901246f0010d01d63a92 +0 -0
  1008. data/test/dummy/tmp/cache/assets/CBB/4A0/sprockets%2F836b47264a423975db0f9b8d494424fb +0 -0
  1009. data/test/dummy/tmp/cache/assets/CBB/5D0/sprockets%2F7965dc683e03140b80566dbd76677f0c +0 -0
  1010. data/test/dummy/tmp/cache/assets/CBB/A70/sprockets%2F7d2284b9010bf8c6791f192496a48f3c +0 -0
  1011. data/test/dummy/tmp/cache/assets/CBB/C00/sprockets%2Ff9a9076aa8206b5af62e6759423c3459 +0 -0
  1012. data/test/dummy/tmp/cache/assets/CBC/B00/sprockets%2F781e0bd52bee4781ff663069a5941079 +0 -0
  1013. data/test/dummy/tmp/cache/assets/CBD/1B0/sprockets%2F8d8816a2a02333e97652d4be4d5c7977 +0 -0
  1014. data/test/dummy/tmp/cache/assets/CBD/8F0/sprockets%2Fa06568f2e94fe5040f3f1f18e0965476 +0 -0
  1015. data/test/dummy/tmp/cache/assets/CBD/F90/sprockets%2F96237bbf67793f5df1545a4608345b1f +0 -0
  1016. data/test/dummy/tmp/cache/assets/CBE/150/sprockets%2F6709c8934146f58d1d8e0386b385b1dc +0 -0
  1017. data/test/dummy/tmp/cache/assets/CBE/C50/sprockets%2Ff9a19372c0905a91eb97d9798b131c55 +0 -0
  1018. data/test/dummy/tmp/cache/assets/CBE/C70/sprockets%2F0b854864714ec43d7fd4d62a495d1894 +0 -0
  1019. data/test/dummy/tmp/cache/assets/CBF/0B0/sprockets%2F8b64669d931f40a85fb4b56431769fb2 +0 -0
  1020. data/test/dummy/tmp/cache/assets/CBF/2F0/sprockets%2F663199019e22fac7e8f7dbc876443721 +0 -0
  1021. data/test/dummy/tmp/cache/assets/CBF/8B0/sprockets%2F97895a24c544a015857f2fc94b47d53d +0 -0
  1022. data/test/dummy/tmp/cache/assets/CBF/E20/sprockets%2Fc0e317c628dccdb0418071361a11b342 +0 -0
  1023. data/test/dummy/tmp/cache/assets/CC0/1E0/sprockets%2F153766c84f6119b4238b753ff92cc57e +0 -0
  1024. data/test/dummy/tmp/cache/assets/CC0/3A0/sprockets%2F26cd86b84410a02a601212bd2236f6da +0 -0
  1025. data/test/dummy/tmp/cache/assets/CC1/0C0/sprockets%2Ff1db17a26e4b3c3570f9972f57940779 +0 -0
  1026. data/test/dummy/tmp/cache/assets/CC1/3B0/sprockets%2F737207abfffd639437c1659e439629d0 +0 -0
  1027. data/test/dummy/tmp/cache/assets/CC1/AA0/sprockets%2F267c43786e51759667824117ceea5ade +0 -0
  1028. data/test/dummy/tmp/cache/assets/CC1/E10/sprockets%2F6a72d98c94d5e89008d0515f0467fb47 +0 -0
  1029. data/test/dummy/tmp/cache/assets/CC1/EA0/sprockets%2Fc361f5bd9186644d45e91e77e8700c65 +0 -0
  1030. data/test/dummy/tmp/cache/assets/CC2/070/sprockets%2F50f57bd3b454979837b58a044d892a9c +0 -0
  1031. data/test/dummy/tmp/cache/assets/CC2/820/sprockets%2F9723ad49856657ae3df92c726914a5b4 +0 -0
  1032. data/test/dummy/tmp/cache/assets/CC2/850/sprockets%2F0991ccdfb7d10695d34851e69d719735 +0 -0
  1033. data/test/dummy/tmp/cache/assets/CC2/B00/sprockets%2F75f12caf383557d3a572971d099566fd +0 -0
  1034. data/test/dummy/tmp/cache/assets/CC3/1D0/sprockets%2Fe05f83785d87559e712ef7331136b7fa +0 -0
  1035. data/test/dummy/tmp/cache/assets/CC3/2F0/sprockets%2Fa76e9c1a4024f8697e1493825e4f239f +0 -0
  1036. data/test/dummy/tmp/cache/assets/CC3/520/sprockets%2Faaa0355000f0805367da5825e31e5b2d +0 -0
  1037. data/test/dummy/tmp/cache/assets/CC3/CD0/sprockets%2F4ff64f374e84188231f8460486f4d4cb +0 -0
  1038. data/test/dummy/tmp/cache/assets/CC3/FE0/sprockets%2F6a49a6093617b8d69096cd49d86801af +0 -0
  1039. data/test/dummy/tmp/cache/assets/CC4/210/sprockets%2F941735f953ac8c797ab549ee3063e815 +0 -0
  1040. data/test/dummy/tmp/cache/assets/CC4/610/sprockets%2F0f600ac692c703702d410becdb436560 +0 -0
  1041. data/test/dummy/tmp/cache/assets/CC5/340/sprockets%2F79c459809c63e81dbf88caa155961760 +0 -0
  1042. data/test/dummy/tmp/cache/assets/CC5/FB0/sprockets%2F80e0c2f9390c8a479972b8841e949cb3 +0 -0
  1043. data/test/dummy/tmp/cache/assets/CC6/340/sprockets%2Faf04460bb9266d71004db70120f0ed74 +0 -0
  1044. data/test/dummy/tmp/cache/assets/CC7/560/sprockets%2F749218952e9de9fd31469d955da0a770 +0 -0
  1045. data/test/dummy/tmp/cache/assets/CC7/C90/sprockets%2F86038323baeaf54599ae8856744f297c +0 -0
  1046. data/test/dummy/tmp/cache/assets/CC8/2A0/sprockets%2F3a8642f97f97582307a90a8414e7de9e +0 -0
  1047. data/test/dummy/tmp/cache/assets/CC8/5C0/sprockets%2F623593ea6c022c4642dd63c52ae1201e +0 -0
  1048. data/test/dummy/tmp/cache/assets/CC8/B10/sprockets%2Fd9164d28d858d600bd68333f9c17796f +0 -0
  1049. data/test/dummy/tmp/cache/assets/CC9/1B0/sprockets%2F4d312d451724beb0b28b853dc259401a +0 -0
  1050. data/test/dummy/tmp/cache/assets/CC9/200/sprockets%2F742fb8ce196abf238199836fd7457166 +0 -0
  1051. data/test/dummy/tmp/cache/assets/CC9/720/sprockets%2F4640bd1191bd9e37a578f8799c3757c7 +0 -0
  1052. data/test/dummy/tmp/cache/assets/CC9/7B0/sprockets%2Fabc7b6219110ac27372a23cc6956513b +0 -0
  1053. data/test/dummy/tmp/cache/assets/CC9/E30/sprockets%2F77b10d6c0995c9d5691faa55783887f2 +0 -0
  1054. data/test/dummy/tmp/cache/assets/CC9/EA0/sprockets%2Fa571e551db777b73999fc805787b306f +0 -0
  1055. data/test/dummy/tmp/cache/assets/CCA/380/sprockets%2Fe073c91452b0924043eb4dd1d3a3626b +0 -0
  1056. data/test/dummy/tmp/cache/assets/CCA/920/sprockets%2F215205e30fddd55921aa2e9086730c0b +0 -0
  1057. data/test/dummy/tmp/cache/assets/CCB/0F0/sprockets%2Fb7445a8b50d583c3401b86c1b6c304d0 +0 -0
  1058. data/test/dummy/tmp/cache/assets/CCB/380/sprockets%2F36b8a4080e2a0dc2a4f43aa933945423 +0 -0
  1059. data/test/dummy/tmp/cache/assets/CCB/E20/sprockets%2F79ec53487306397cd3e8569fbb27581d +0 -0
  1060. data/test/dummy/tmp/cache/assets/CCC/080/sprockets%2F1d990a5a2f7133c864bdc253de820001 +0 -0
  1061. data/test/dummy/tmp/cache/assets/CCC/9C0/sprockets%2F9c4f952df49a196a50e49f848c056657 +0 -0
  1062. data/test/dummy/tmp/cache/assets/CCD/2A0/sprockets%2Fd8e7588c5343d749e07d68a53931df93 +0 -0
  1063. data/test/dummy/tmp/cache/assets/CCD/320/sprockets%2F39bf4604985317d62f187f34f76c9f5e +0 -0
  1064. data/test/dummy/tmp/cache/assets/CCD/400/sprockets%2Ff7db620709d9861e813887a2b485f88f +0 -0
  1065. data/test/dummy/tmp/cache/assets/CCD/540/sprockets%2Fe0a827b1d64b02b6c604f39208723ae2 +0 -0
  1066. data/test/dummy/tmp/cache/assets/CCE/890/sprockets%2F9103b5078baff06bf0b346b0a3637850 +0 -0
  1067. data/test/dummy/tmp/cache/assets/CCF/5D0/sprockets%2F231033ec0602e5e3479e9e45a32dc2a5 +0 -0
  1068. data/test/dummy/tmp/cache/assets/CCF/A80/sprockets%2Fb1ee31427714b62bf2715112e59eee11 +0 -0
  1069. data/test/dummy/tmp/cache/assets/CCF/DB0/sprockets%2F65ae3451660470d13147eaed413eac55 +0 -0
  1070. data/test/dummy/tmp/cache/assets/CCF/DD0/sprockets%2F48b052bf1038b30ff6ca155265c3b276 +0 -0
  1071. data/test/dummy/tmp/cache/assets/CD0/040/sprockets%2Fc7969f4117330ae6bc1626e100c02ae8 +0 -0
  1072. data/test/dummy/tmp/cache/assets/CD0/060/sprockets%2F194200d1635fd24089c114cace0fd809 +0 -0
  1073. data/test/dummy/tmp/cache/assets/CD0/310/sprockets%2F825eb4414b555ce140fc46ad24b48061 +0 -0
  1074. data/test/dummy/tmp/cache/assets/CD0/CC0/sprockets%2F771b3a4436b40d00e3890464eb91cbd3 +0 -0
  1075. data/test/dummy/tmp/cache/assets/CD2/3D0/sprockets%2F71f7f67333976f4c98c59233dd3827ff +0 -0
  1076. data/test/dummy/tmp/cache/assets/CD2/4A0/sprockets%2F991fe86378937a4f7e4e5819e5c34e14 +0 -0
  1077. data/test/dummy/tmp/cache/assets/CD2/790/sprockets%2F4c0c03eb3164a4f3b90d114c8862592f +0 -0
  1078. data/test/dummy/tmp/cache/assets/CD2/A70/sprockets%2Fafa74f1e22c50a7d66281a60d0341795 +0 -0
  1079. data/test/dummy/tmp/cache/assets/CD2/BD0/sprockets%2F4903eb530840a7a76ee4fa931e108b12 +0 -0
  1080. data/test/dummy/tmp/cache/assets/CD3/940/sprockets%2F641b837eeb02a10631a0d20acd987887 +0 -0
  1081. data/test/dummy/tmp/cache/assets/CD3/EF0/sprockets%2F90c59425e8b8e5aa14316c4301b71bc6 +0 -0
  1082. data/test/dummy/tmp/cache/assets/CD4/5E0/sprockets%2Fa205678e1618b5bc0332f74f062ab8b6 +0 -0
  1083. data/test/dummy/tmp/cache/assets/CD4/8F0/sprockets%2Ff6b7441a9ecc030939344a1c4e6c1028 +0 -0
  1084. data/test/dummy/tmp/cache/assets/CD4/950/sprockets%2Fa9d42b8887502bfbaea025306a772550 +0 -0
  1085. data/test/dummy/tmp/cache/assets/CD4/A30/sprockets%2Ff3112c09e4e2e532317914748bd0df0d +0 -0
  1086. data/test/dummy/tmp/cache/assets/CD4/A70/sprockets%2F3583df2e043a1b817e472354c2b7d1a7 +0 -0
  1087. data/test/dummy/tmp/cache/assets/CD4/B00/sprockets%2F0111854211a8785de20af26e9e8d5bb1 +0 -0
  1088. data/test/dummy/tmp/cache/assets/CD4/BD0/sprockets%2Fb805aac67c1040af26d8e841804d7308 +0 -0
  1089. data/test/dummy/tmp/cache/assets/CD4/C30/sprockets%2F8146caa7c2d5a8410bf19b14d4602893 +0 -0
  1090. data/test/dummy/tmp/cache/assets/CD4/D30/sprockets%2F6741dd0454f9080fa418ed09a192ab40 +0 -0
  1091. data/test/dummy/tmp/cache/assets/CD5/900/sprockets%2F0603a31cdcdf8ec2872219242c65f336 +0 -0
  1092. data/test/dummy/tmp/cache/assets/CD5/CC0/sprockets%2F843089224034e8c141f9c547cb00bdcd +0 -0
  1093. data/test/dummy/tmp/cache/assets/CD5/F50/sprockets%2F120f1500069ba842c60db619f9e6ac85 +0 -0
  1094. data/test/dummy/tmp/cache/assets/CD6/0D0/sprockets%2F3dc8011007c8862be4e12b98cf691a40 +0 -0
  1095. data/test/dummy/tmp/cache/assets/CD6/510/sprockets%2F15410f3d417f3870b7b09f9f3a0c5b43 +0 -0
  1096. data/test/dummy/tmp/cache/assets/CD6/A10/sprockets%2F2fe23b7d391780f61215a714e2b7ec05 +0 -0
  1097. data/test/dummy/tmp/cache/assets/CD6/A90/sprockets%2F667a0820029dd4632401c94ef04cdfd5 +0 -0
  1098. data/test/dummy/tmp/cache/assets/CD6/D70/sprockets%2Fb3ac25a40753c9b2472e3e759334ae61 +0 -0
  1099. data/test/dummy/tmp/cache/assets/CD7/370/sprockets%2F71dd9364063592e030066a72ba77ddbc +0 -0
  1100. data/test/dummy/tmp/cache/assets/CD7/720/sprockets%2F2d8001653bf8cf5347a1cb3836e257d0 +0 -0
  1101. data/test/dummy/tmp/cache/assets/CD7/760/sprockets%2F7a82d6b6895ca9a5e3a414318f11a430 +0 -0
  1102. data/test/dummy/tmp/cache/assets/CD7/780/sprockets%2F08596628d7b1440d26ba09e251ffe2a0 +0 -0
  1103. data/test/dummy/tmp/cache/assets/CD7/AF0/sprockets%2F8ea5147f262ca0db032440670e576f7d +0 -0
  1104. data/test/dummy/tmp/cache/assets/CD7/FE0/sprockets%2Fc1900103439ec4a366c54f6574f48aba +0 -0
  1105. data/test/dummy/tmp/cache/assets/CD8/B20/sprockets%2F364405189b0c5f332ae0fe14a05f95d8 +0 -0
  1106. data/test/dummy/tmp/cache/assets/CD8/C00/sprockets%2Fe3431564d507425b4d87a2d48aa8a34d +0 -0
  1107. data/test/dummy/tmp/cache/assets/CD8/D10/sprockets%2F443f419118cbe6bf5e16765d32a9400a +0 -0
  1108. data/test/dummy/tmp/cache/assets/CD9/200/sprockets%2F3427d0dd3c506916339cf92e307ae04d +0 -0
  1109. data/test/dummy/tmp/cache/assets/CD9/3C0/sprockets%2Fb082b86281b7a873eb2250f31854afd4 +0 -0
  1110. data/test/dummy/tmp/cache/assets/CD9/830/sprockets%2F056590d09da88c9b1920143a3b37d6ea +0 -0
  1111. data/test/dummy/tmp/cache/assets/CD9/8D0/sprockets%2F7d0adf8915d0b1fca18f919929104220 +0 -0
  1112. data/test/dummy/tmp/cache/assets/CDA/2C0/sprockets%2F40a829c1758af25c8238f3070ab5d0c9 +0 -0
  1113. data/test/dummy/tmp/cache/assets/CDA/700/sprockets%2F24c5884ae3352ca70a9546d02bb6e844 +0 -0
  1114. data/test/dummy/tmp/cache/assets/CDA/8B0/sprockets%2F14f573b31a508fc9a74d384a82104ec7 +0 -0
  1115. data/test/dummy/tmp/cache/assets/CDB/360/sprockets%2F840a5e454cf0a80d6c294432eac39258 +0 -0
  1116. data/test/dummy/tmp/cache/assets/CDB/390/sprockets%2F53426e5c2fbb6e454271f97b01b872c1 +0 -0
  1117. data/test/dummy/tmp/cache/assets/CDB/FE0/sprockets%2F010d42b73ce096ab163fc07b846f4697 +0 -0
  1118. data/test/dummy/tmp/cache/assets/CDB/FF0/sprockets%2F28a75074023f9a605dc4578ecfd2e122 +0 -0
  1119. data/test/dummy/tmp/cache/assets/CDC/3A0/sprockets%2F2bdb3f8510205db3f3bf4605947851f7 +0 -0
  1120. data/test/dummy/tmp/cache/assets/CDC/910/sprockets%2F4127b7bf7565f5eb82a54f5012c7512d +0 -0
  1121. data/test/dummy/tmp/cache/assets/CDC/9C0/sprockets%2F81c08804c53996c9cbbbb9c5b0471025 +0 -0
  1122. data/test/dummy/tmp/cache/assets/CDC/C80/sprockets%2F0bfd35e879aa5b71147405519bff2622 +0 -0
  1123. data/test/dummy/tmp/cache/assets/CDC/C90/sprockets%2Fdf275148311cc0a3c977d1d52683e4a7 +0 -0
  1124. data/test/dummy/tmp/cache/assets/CDC/D70/sprockets%2F3a839de3659ba10d4f72a04e624327d7 +0 -0
  1125. data/test/dummy/tmp/cache/assets/CDC/E00/sprockets%2Fc1f1468ab4aee474745a15710e4a9538 +0 -0
  1126. data/test/dummy/tmp/cache/assets/CDC/F20/sprockets%2Fc35c0a48695530638225806ba4fae6bf +0 -0
  1127. data/test/dummy/tmp/cache/assets/CDC/F40/sprockets%2Fc342722b6d9e42814386ef1de21b8a53 +0 -0
  1128. data/test/dummy/tmp/cache/assets/CDD/3E0/sprockets%2Fa8a24b94a9671009427cea4d884aa256 +0 -0
  1129. data/test/dummy/tmp/cache/assets/CDD/4E0/sprockets%2F7a22053281c92bb5f06995dcb1bc5866 +0 -0
  1130. data/test/dummy/tmp/cache/assets/CDD/5A0/sprockets%2Fb7dfa40599517f39400db36240fa16c9 +0 -0
  1131. data/test/dummy/tmp/cache/assets/CDD/770/sprockets%2F29c146b4b8a6109f305da7a6d47386a5 +0 -0
  1132. data/test/dummy/tmp/cache/assets/CDD/820/sprockets%2F013468b4581ca790dae9f03f70071fd8 +0 -0
  1133. data/test/dummy/tmp/cache/assets/CDD/8C0/sprockets%2Fbee326071215e6c434c0f091f38c5e88 +0 -0
  1134. data/test/dummy/tmp/cache/assets/CDD/B20/sprockets%2Ff408a3907451b845100f92d7e904fbfa +0 -0
  1135. data/test/dummy/tmp/cache/assets/CDD/BE0/sprockets%2F8756a8072a115c8ec63a7ec2461485ba +0 -0
  1136. data/test/dummy/tmp/cache/assets/CDD/C10/sprockets%2Fcc0b9b27c73e2960c038ff5112b38666 +0 -0
  1137. data/test/dummy/tmp/cache/assets/CDD/D40/sprockets%2F57d10e644e2935b92803de4516fa3b5c +0 -0
  1138. data/test/dummy/tmp/cache/assets/CDE/400/sprockets%2F1a1e6562a81a5be59fe6c205797711d3 +0 -0
  1139. data/test/dummy/tmp/cache/assets/CDE/5B0/sprockets%2F2949a1487f82baa4bb0121945db7d288 +0 -0
  1140. data/test/dummy/tmp/cache/assets/CDE/640/sprockets%2F39d72e391539a0a64982ecde1200f66a +0 -0
  1141. data/test/dummy/tmp/cache/assets/CDE/660/sprockets%2F7a61352a3829824ad29457df3e23eca4 +0 -0
  1142. data/test/dummy/tmp/cache/assets/CDF/3A0/sprockets%2F3ae02eef2a1aa9779480d1027828c865 +0 -0
  1143. data/test/dummy/tmp/cache/assets/CDF/400/sprockets%2Fa008852da54f1bf9693830b51658ac7b +0 -0
  1144. data/test/dummy/tmp/cache/assets/CDF/410/sprockets%2F72f4f8b59311d00416f921a7a9c7fe14 +0 -0
  1145. data/test/dummy/tmp/cache/assets/CDF/610/sprockets%2F50b229b6ae22759d78144894a10dfb4e +0 -0
  1146. data/test/dummy/tmp/cache/assets/CDF/6C0/sprockets%2F44a74e092fc54e346f6a361f056503fe +0 -0
  1147. data/test/dummy/tmp/cache/assets/CDF/750/sprockets%2F150a7c3c91a07a30e664fa886693ad67 +0 -0
  1148. data/test/dummy/tmp/cache/assets/CDF/A70/sprockets%2F06f44917744447f1655c4d2aad5d0de4 +0 -0
  1149. data/test/dummy/tmp/cache/assets/CDF/B40/sprockets%2Fbb77dbf8982340452a6bda4e53053494 +0 -0
  1150. data/test/dummy/tmp/cache/assets/CDF/B40/sprockets%2Fd90abc6d71641d7c219031c864af9754 +0 -0
  1151. data/test/dummy/tmp/cache/assets/CE0/0A0/sprockets%2F9f83fa0f5605423cc68165c3b7f1b831 +0 -0
  1152. data/test/dummy/tmp/cache/assets/CE0/150/sprockets%2Fff06616bc548913b33660c93ea6663ac +0 -0
  1153. data/test/dummy/tmp/cache/assets/CE0/310/sprockets%2F9ee5a8c15b510b043e88f5826cc33409 +0 -0
  1154. data/test/dummy/tmp/cache/assets/CE0/340/sprockets%2F284aa881b4e78191f904a950baf6209b +0 -0
  1155. data/test/dummy/tmp/cache/assets/CE0/6A0/sprockets%2Fbc57607042f83d29d06adb986528c31b +0 -0
  1156. data/test/dummy/tmp/cache/assets/CE0/DE0/sprockets%2F39b36b9c6a734b4dad50930d88540d72 +0 -0
  1157. data/test/dummy/tmp/cache/assets/CE1/0C0/sprockets%2Fc394dea3dc5163500f7a9eb265953347 +0 -0
  1158. data/test/dummy/tmp/cache/assets/CE1/470/sprockets%2F983d99d27b4b3592a5e6ac7d073010f2 +0 -0
  1159. data/test/dummy/tmp/cache/assets/CE1/4D0/sprockets%2F6225b3f8be16410c0c82288fb84944cf +0 -0
  1160. data/test/dummy/tmp/cache/assets/CE1/6D0/sprockets%2Ff9c5663fd99dc061ae23541a08e40680 +0 -0
  1161. data/test/dummy/tmp/cache/assets/CE1/710/sprockets%2F26af7b6d5c4ba2939130f3984b3f6415 +0 -0
  1162. data/test/dummy/tmp/cache/assets/CE1/DD0/sprockets%2F92603e14dbdc46d0105d70a886889f0e +0 -0
  1163. data/test/dummy/tmp/cache/assets/CE1/E50/sprockets%2F3c417ddc0b7d41ef67749ca332316578 +0 -0
  1164. data/test/dummy/tmp/cache/assets/CE1/F70/sprockets%2F344548525d95f8dcb0f266cf75ba4220 +0 -0
  1165. data/test/dummy/tmp/cache/assets/CE2/2E0/sprockets%2F43321dc8922d569786f3e3493b1aca2e +0 -0
  1166. data/test/dummy/tmp/cache/assets/CE2/3B0/sprockets%2F8553af0a6d6470721b885f1f072fe2c7 +0 -0
  1167. data/test/dummy/tmp/cache/assets/CE2/500/sprockets%2F30f8a44a9e40ac4f70d91679a90a8607 +0 -0
  1168. data/test/dummy/tmp/cache/assets/CE2/6F0/sprockets%2F804bb91ff37d3660bff1145654590bd7 +0 -0
  1169. data/test/dummy/tmp/cache/assets/CE2/870/sprockets%2Fdfc00541846d52d8664d7090e03b9eb8 +0 -0
  1170. data/test/dummy/tmp/cache/assets/CE2/8A0/sprockets%2Fa2c93e9943480db60c7708231eda937b +0 -0
  1171. data/test/dummy/tmp/cache/assets/CE2/950/sprockets%2F663338454ffec19c3c93b8006070d5de +0 -0
  1172. data/test/dummy/tmp/cache/assets/CE2/9E0/sprockets%2F66a32be0e7d4510279e1fd8671a74d83 +0 -0
  1173. data/test/dummy/tmp/cache/assets/CE2/F10/sprockets%2Fa5794166683dc3f6ef423306a092ec4c +0 -0
  1174. data/test/dummy/tmp/cache/assets/CE3/160/sprockets%2F9b7a40c1f4ef4229b043a96698de4234 +0 -0
  1175. data/test/dummy/tmp/cache/assets/CE3/290/sprockets%2F2b7625038f6f3a615b5d49c507eb638c +0 -0
  1176. data/test/dummy/tmp/cache/assets/CE3/470/sprockets%2Fa13229635ceb37ef34c94f4a1877117f +0 -0
  1177. data/test/dummy/tmp/cache/assets/CE3/4B0/sprockets%2F4ef804e2710c5921fd770bf913ae8068 +0 -0
  1178. data/test/dummy/tmp/cache/assets/CE3/520/sprockets%2F6476f636c225ae17b555e2f90322b8fc +0 -0
  1179. data/test/dummy/tmp/cache/assets/CE3/5A0/sprockets%2F13f6bb14f6138bc58c48704d03378d9d +0 -0
  1180. data/test/dummy/tmp/cache/assets/CE3/B60/sprockets%2Fa2e894941598cd923e2c4c9052e03af1 +0 -0
  1181. data/test/dummy/tmp/cache/assets/CE3/E60/sprockets%2Ffb6b2018c00f29225e926afcd3788863 +0 -0
  1182. data/test/dummy/tmp/cache/assets/CE3/FC0/sprockets%2F66711511a9b1286d5548c6bf1c7bf3e8 +0 -0
  1183. data/test/dummy/tmp/cache/assets/CE4/0C0/sprockets%2F54039551e7915c9bb5d514c4be46d27e +0 -0
  1184. data/test/dummy/tmp/cache/assets/CE4/130/sprockets%2F9a139942cd593a872cd21af5372ff235 +0 -0
  1185. data/test/dummy/tmp/cache/assets/CE4/140/sprockets%2F95c089facf860ae0b332b6671642917e +0 -0
  1186. data/test/dummy/tmp/cache/assets/CE4/970/sprockets%2F32866ea407500e99bb62e5c62a8617df +0 -0
  1187. data/test/dummy/tmp/cache/assets/CE5/2C0/sprockets%2F2e7e02748f316add5563de824b9526d2 +0 -0
  1188. data/test/dummy/tmp/cache/assets/CE5/380/sprockets%2F2b93db591cc871673288fe40d14f360e +0 -0
  1189. data/test/dummy/tmp/cache/assets/CE5/840/sprockets%2F11b05d355ea016da79fe243f9805999b +0 -0
  1190. data/test/dummy/tmp/cache/assets/CE5/A40/sprockets%2Fb3d6e316b2b9e457c2f7037a96d01859 +0 -0
  1191. data/test/dummy/tmp/cache/assets/CE5/C80/sprockets%2F37e6a27fa0588533d06cb58e09b4b584 +0 -0
  1192. data/test/dummy/tmp/cache/assets/CE6/0B0/sprockets%2Fb3e8c9040f2df4229b9d142588b59c16 +0 -0
  1193. data/test/dummy/tmp/cache/assets/CE6/210/sprockets%2F6b9b4b82ed79654259f177c02d8bc040 +0 -0
  1194. data/test/dummy/tmp/cache/assets/CE6/250/sprockets%2Fed7d322e28c360a5be419f8c83557534 +0 -0
  1195. data/test/dummy/tmp/cache/assets/CE6/320/sprockets%2Fed9936a17a2843e6059215d19fb209ed +0 -0
  1196. data/test/dummy/tmp/cache/assets/CE6/380/sprockets%2Fd01c51f0838d8e83705f7ce63225b97b +0 -0
  1197. data/test/dummy/tmp/cache/assets/CE6/DD0/sprockets%2Ffd590df3a5e39763c7258802d8233c1c +0 -0
  1198. data/test/dummy/tmp/cache/assets/CE7/7E0/sprockets%2F9081847a834bbf79fd76a55c1148dc20 +0 -0
  1199. data/test/dummy/tmp/cache/assets/CE7/950/sprockets%2Fff862019c138153201ac6ccd597987ed +0 -0
  1200. data/test/dummy/tmp/cache/assets/CE7/9F0/sprockets%2F037a29d79b76c928626f3a3bcd87310e +0 -0
  1201. data/test/dummy/tmp/cache/assets/CE7/F00/sprockets%2Fe93ef14e64157334de37b164fa2d1589 +0 -0
  1202. data/test/dummy/tmp/cache/assets/CE8/2C0/sprockets%2F1fd87d34113f4744598518fe09ddd0e0 +0 -0
  1203. data/test/dummy/tmp/cache/assets/CE8/870/sprockets%2F1574e536fd30e824bb3e916f82a9066f +0 -0
  1204. data/test/dummy/tmp/cache/assets/CE8/910/sprockets%2F080f8c0b62830c954799a2d5edf591d2 +0 -0
  1205. data/test/dummy/tmp/cache/assets/CE8/CD0/sprockets%2F93de125e583b5e116af4d5159af69076 +0 -0
  1206. data/test/dummy/tmp/cache/assets/CE8/FB0/sprockets%2F2c33796115a3ea9eead9620776473eb8 +0 -0
  1207. data/test/dummy/tmp/cache/assets/CE9/380/sprockets%2Fdb39605a961a8c0f9150d48ca81938f7 +0 -0
  1208. data/test/dummy/tmp/cache/assets/CE9/8F0/sprockets%2F505f0e4ca77daae7369943e392a85607 +0 -0
  1209. data/test/dummy/tmp/cache/assets/CE9/9C0/sprockets%2Fbf411959ef26087692cb04c7a98f4a50 +0 -0
  1210. data/test/dummy/tmp/cache/assets/CE9/C60/sprockets%2F7eef977dbc06c32f097f2825166603b3 +0 -0
  1211. data/test/dummy/tmp/cache/assets/CE9/DA0/sprockets%2F44572af4a8be42d567e38e80a729651d +0 -0
  1212. data/test/dummy/tmp/cache/assets/CEA/310/sprockets%2Ff042d3ef9f0b34c3996563990f703a7b +0 -0
  1213. data/test/dummy/tmp/cache/assets/CEA/650/sprockets%2F23e7e5e0a1649a489dd3ef092e851933 +0 -0
  1214. data/test/dummy/tmp/cache/assets/CEA/790/sprockets%2F08888489e9e0723c2ee23b2e13f0ee36 +0 -0
  1215. data/test/dummy/tmp/cache/assets/CEA/8C0/sprockets%2F4d757db04f37413787a19a4579bb5bb9 +0 -0
  1216. data/test/dummy/tmp/cache/assets/CEA/8F0/sprockets%2F9a6c20bb09238891ef59fc17547b286a +0 -0
  1217. data/test/dummy/tmp/cache/assets/CEA/D20/sprockets%2F1976f0ca183934d8bc849b53f170ef08 +0 -0
  1218. data/test/dummy/tmp/cache/assets/CEA/D40/sprockets%2F13f82f6e55726a092f6718777cb3ab3e +0 -0
  1219. data/test/dummy/tmp/cache/assets/CEB/130/sprockets%2F80df7fdb158154fe724b345592f274b7 +0 -0
  1220. data/test/dummy/tmp/cache/assets/CEB/1D0/sprockets%2Fb3014c30d4b5ad090fb00a5a303b7929 +0 -0
  1221. data/test/dummy/tmp/cache/assets/CEB/570/sprockets%2Fa479c9185e3057b9044491bc5bf6fb38 +0 -0
  1222. data/test/dummy/tmp/cache/assets/CEB/660/sprockets%2F8d5dac99dad6219456d03326811e58e7 +0 -0
  1223. data/test/dummy/tmp/cache/assets/CEB/8A0/sprockets%2F159eb5218f66cb1523956585e1add78c +0 -0
  1224. data/test/dummy/tmp/cache/assets/CEB/E20/sprockets%2F2392417f6ade39578bbc805a7f15458d +0 -0
  1225. data/test/dummy/tmp/cache/assets/CEC/230/sprockets%2F06c6439d6734e9122d0429d99bd76ceb +0 -0
  1226. data/test/dummy/tmp/cache/assets/CEC/290/sprockets%2F7077b1e5731389d9236ffae8142e8bd3 +0 -0
  1227. data/test/dummy/tmp/cache/assets/CEC/350/sprockets%2F6e753e09528676b0667afde7e251c8b0 +0 -0
  1228. data/test/dummy/tmp/cache/assets/CEC/4C0/sprockets%2Fdd5b21c9738f4781b4d32d6425835fd8 +0 -0
  1229. data/test/dummy/tmp/cache/assets/CEC/700/sprockets%2F41fb69b7745f7118f9fd12843d354d1d +0 -0
  1230. data/test/dummy/tmp/cache/assets/CEC/830/sprockets%2Fc4e97e059861f48bd5d644184e14b8a1 +0 -0
  1231. data/test/dummy/tmp/cache/assets/CEC/9B0/sprockets%2F623d2921e3b7bd6cbe9288253e18e776 +0 -0
  1232. data/test/dummy/tmp/cache/assets/CEC/FC0/sprockets%2F0d2e77a643248769fd2f6c6d34389bc0 +0 -0
  1233. data/test/dummy/tmp/cache/assets/CED/3F0/sprockets%2F2e9385419f85782925bea76024cddde0 +0 -0
  1234. data/test/dummy/tmp/cache/assets/CED/4D0/sprockets%2F370f12be838ce375948b6d4f37a46c37 +0 -0
  1235. data/test/dummy/tmp/cache/assets/CED/610/sprockets%2F8f08d75c4e213f271c616476ee59d8b2 +0 -0
  1236. data/test/dummy/tmp/cache/assets/CED/610/sprockets%2Fc464c2668d8d57244934c45b9a28e7ba +0 -0
  1237. data/test/dummy/tmp/cache/assets/CED/820/sprockets%2F95259b083f2fe5806fc98b262fca2437 +0 -0
  1238. data/test/dummy/tmp/cache/assets/CED/9C0/sprockets%2F25aa2692a87f9b8f53c70b525997e42b +0 -0
  1239. data/test/dummy/tmp/cache/assets/CEE/280/sprockets%2F76be09b87b67819e2d65b3ac61910d96 +0 -0
  1240. data/test/dummy/tmp/cache/assets/CEE/320/sprockets%2F6ef494b9dfed486274ef54901251c172 +0 -0
  1241. data/test/dummy/tmp/cache/assets/CEE/440/sprockets%2F05a5ffa8911066898ad595b4b9971d1c +0 -0
  1242. data/test/dummy/tmp/cache/assets/CEE/5E0/sprockets%2Fcd968453ce27bc7dc058e871c6976111 +0 -0
  1243. data/test/dummy/tmp/cache/assets/CEF/F90/sprockets%2Fb3af8b93c6e451443df642e6846179f4 +0 -0
  1244. data/test/dummy/tmp/cache/assets/CEF/FB0/sprockets%2F1344982637e6864df2f0e60bcfcc9745 +0 -0
  1245. data/test/dummy/tmp/cache/assets/CEF/FF0/sprockets%2F616967591b95dfe51f4eb048f0ed4426 +0 -0
  1246. data/test/dummy/tmp/cache/assets/CF0/2D0/sprockets%2F2a12ef035037b0440f54e40e6ad2db70 +0 -0
  1247. data/test/dummy/tmp/cache/assets/CF0/3E0/sprockets%2F0219f445a952da190d37779cef6ea499 +0 -0
  1248. data/test/dummy/tmp/cache/assets/CF0/8D0/sprockets%2Fd87a027ff95cd7b9080555d76f16824a +0 -0
  1249. data/test/dummy/tmp/cache/assets/CF0/C60/sprockets%2F6dd5c450564d64588695223ef7d2fe4a +0 -0
  1250. data/test/dummy/tmp/cache/assets/CF0/CD0/sprockets%2F4452429dc09139968df6e8b57bb8ad24 +0 -0
  1251. data/test/dummy/tmp/cache/assets/CF0/D70/sprockets%2Fef73b2f0c344ef70e7935b876d544187 +0 -0
  1252. data/test/dummy/tmp/cache/assets/CF1/2F0/sprockets%2F7259bd2bd5768d0f7fc5176be3884614 +0 -0
  1253. data/test/dummy/tmp/cache/assets/CF1/7D0/sprockets%2F66b85d77b399e98bc9387a3811ab1d14 +0 -0
  1254. data/test/dummy/tmp/cache/assets/CF2/740/sprockets%2F8729f01be5f82ddd5185b7e38773708a +0 -0
  1255. data/test/dummy/tmp/cache/assets/CF2/970/sprockets%2F9d71592e5dd487a7135c722e2a7f45f9 +0 -0
  1256. data/test/dummy/tmp/cache/assets/CF3/1F0/sprockets%2F022005741ac6e3b8b0d0b3d64c29b92b +0 -0
  1257. data/test/dummy/tmp/cache/assets/CF3/200/sprockets%2F86629853277ff066ff97a8f0d1b3a5a4 +0 -0
  1258. data/test/dummy/tmp/cache/assets/CF3/3C0/sprockets%2F51e42f76f5859c6497179b22b40c8dde +0 -0
  1259. data/test/dummy/tmp/cache/assets/CF3/620/sprockets%2F6e512892899d83e072fcffd654254b1d +0 -0
  1260. data/test/dummy/tmp/cache/assets/CF3/850/sprockets%2Fb94be7f87b7b2159d9909e90e0f90620 +0 -0
  1261. data/test/dummy/tmp/cache/assets/CF3/8F0/sprockets%2F979d1a04836f5c2e9c291e23ef79367a +0 -0
  1262. data/test/dummy/tmp/cache/assets/CF4/230/sprockets%2Ff23ca5926549df84d0e5744bf881628e +0 -0
  1263. data/test/dummy/tmp/cache/assets/CF4/2A0/sprockets%2F7fe03b6e6847eaaf067731842957d92f +0 -0
  1264. data/test/dummy/tmp/cache/assets/CF4/4B0/sprockets%2Fe71842466354e399f04d0ce8c6fe953d +0 -0
  1265. data/test/dummy/tmp/cache/assets/CF4/5E0/sprockets%2F9796c9a8269cae458eb3537f9b30c234 +0 -0
  1266. data/test/dummy/tmp/cache/assets/CF4/6F0/sprockets%2F9cb6c3571023113b0af4a1a326fb7b29 +0 -0
  1267. data/test/dummy/tmp/cache/assets/CF4/9E0/sprockets%2F3ec2020f0e16ea2409a9ab577e013a35 +0 -0
  1268. data/test/dummy/tmp/cache/assets/CF5/050/sprockets%2F9bbb9f0428f7f282017d43ed8376758f +0 -0
  1269. data/test/dummy/tmp/cache/assets/CF5/E20/sprockets%2F0081f109024251dfd417f9f1a6cd0ba1 +0 -0
  1270. data/test/dummy/tmp/cache/assets/CF5/E70/sprockets%2F234ba1c230c43ee15548087dc4a3f04a +0 -0
  1271. data/test/dummy/tmp/cache/assets/CF6/3F0/sprockets%2Fc8a187687d86c86d20ccd8d39258428a +0 -0
  1272. data/test/dummy/tmp/cache/assets/CF6/880/sprockets%2Ff7f85513ffd669855b1bd5358193d5d2 +0 -0
  1273. data/test/dummy/tmp/cache/assets/CF7/900/sprockets%2F25954532c431e017d2233aed3dd10edc +0 -0
  1274. data/test/dummy/tmp/cache/assets/CF7/F70/sprockets%2Fae6e6576ed90a32b820967df2b797397 +0 -0
  1275. data/test/dummy/tmp/cache/assets/CF8/420/sprockets%2F646a9a8f589a6440b5a91498666ffbb5 +0 -0
  1276. data/test/dummy/tmp/cache/assets/CF8/460/sprockets%2Fed2bf0482ac1b94d79998947722594bf +0 -0
  1277. data/test/dummy/tmp/cache/assets/CF8/D50/sprockets%2F85b7586ada7412939757fedf63a8b644 +0 -0
  1278. data/test/dummy/tmp/cache/assets/CF8/E50/sprockets%2F6728e09dd75320afa91170a4bfbb0030 +0 -0
  1279. data/test/dummy/tmp/cache/assets/CF9/710/sprockets%2Fa6680189367ffaf80c58dc19d6583e38 +0 -0
  1280. data/test/dummy/tmp/cache/assets/CF9/CA0/sprockets%2Fe3287c6767a894efd1e4461ae21599e8 +0 -0
  1281. data/test/dummy/tmp/cache/assets/CFA/070/sprockets%2F242580b78eb63aa6b89e6b62789796ee +0 -0
  1282. data/test/dummy/tmp/cache/assets/CFA/0D0/sprockets%2F05ccf5ba00db8fbb271a929924530043 +0 -0
  1283. data/test/dummy/tmp/cache/assets/CFA/2C0/sprockets%2F1d13d50c44706754611cd6b6d1cc30ed +0 -0
  1284. data/test/dummy/tmp/cache/assets/CFA/570/sprockets%2F71fa5e8db4d49036a8b201022d54cb23 +0 -0
  1285. data/test/dummy/tmp/cache/assets/CFA/640/sprockets%2Ff60ca5388719314b4780ba2eba530a1a +0 -0
  1286. data/test/dummy/tmp/cache/assets/CFA/720/sprockets%2Fdc2ea106de9ab60be261248f21059224 +0 -0
  1287. data/test/dummy/tmp/cache/assets/CFA/B50/sprockets%2F8505a240bc3a2e4b1a953417c73ebc72 +0 -0
  1288. data/test/dummy/tmp/cache/assets/CFA/DC0/sprockets%2F7fd2f2c83201801df1a530c2f650f26a +0 -0
  1289. data/test/dummy/tmp/cache/assets/CFA/E80/sprockets%2F1e3305c0e72303f1d85bc3e7d5a1b067 +0 -0
  1290. data/test/dummy/tmp/cache/assets/CFB/180/sprockets%2Fac8c5119b033c030096e7e37e0a95a0c +0 -0
  1291. data/test/dummy/tmp/cache/assets/CFB/980/sprockets%2F7d6839a51b968136f9f8d2bf3349e53e +0 -0
  1292. data/test/dummy/tmp/cache/assets/CFB/AB0/sprockets%2F4310d259c9d51b895d0b3c1a6eb031d2 +0 -0
  1293. data/test/dummy/tmp/cache/assets/CFC/0E0/sprockets%2Fe99f6ace35113dfc044311e14a605a51 +0 -0
  1294. data/test/dummy/tmp/cache/assets/CFC/260/sprockets%2F0e71d529f601042aaf154b7d7a7d7b10 +0 -0
  1295. data/test/dummy/tmp/cache/assets/CFC/530/sprockets%2F30c81913fe6fa70899924896cbe78bc7 +0 -0
  1296. data/test/dummy/tmp/cache/assets/CFC/9F0/sprockets%2F7922cd5ca1a340f4b4d450bad4551916 +0 -0
  1297. data/test/dummy/tmp/cache/assets/CFC/D80/sprockets%2F077bef6b6c40a38e35144a20051c5f1f +0 -0
  1298. data/test/dummy/tmp/cache/assets/CFC/FB0/sprockets%2F2b13bc27bbe25b0e17b73e567734700c +0 -0
  1299. data/test/dummy/tmp/cache/assets/CFD/170/sprockets%2F42cfd4e964989e13191824ef9fc548d4 +0 -0
  1300. data/test/dummy/tmp/cache/assets/CFD/400/sprockets%2F0dfc8e84ff74a1051c840840aab16051 +0 -0
  1301. data/test/dummy/tmp/cache/assets/CFD/470/sprockets%2Fd1eb4316039dba02de282ac28358b913 +0 -0
  1302. data/test/dummy/tmp/cache/assets/CFD/530/sprockets%2Fc3236310ab22e4d1c9519d3f33bf62a8 +0 -0
  1303. data/test/dummy/tmp/cache/assets/CFD/B10/sprockets%2Fd709e935422bb4948d69e2c744ff695f +0 -0
  1304. data/test/dummy/tmp/cache/assets/CFD/C30/sprockets%2F4861b94cbe06b03c26bb73d6e0e43213 +0 -0
  1305. data/test/dummy/tmp/cache/assets/CFE/0C0/sprockets%2F2751741fbca2a0c193703763ff6c13da +0 -0
  1306. data/test/dummy/tmp/cache/assets/CFE/A80/sprockets%2F9331b1565d97cf408ab413022ec07ccb +0 -0
  1307. data/test/dummy/tmp/cache/assets/CFE/AE0/sprockets%2F7c886a80519554ea620aac2325bb1ce0 +0 -0
  1308. data/test/dummy/tmp/cache/assets/CFE/AF0/sprockets%2Fcf3dde9e1202c5192390b23371a4b37c +0 -0
  1309. data/test/dummy/tmp/cache/assets/CFF/030/sprockets%2F67435e26ad42d483d12a4aeb5f04802b +0 -0
  1310. data/test/dummy/tmp/cache/assets/CFF/070/sprockets%2F1b3bc280c5e8d2f2e426d75064f310b4 +0 -0
  1311. data/test/dummy/tmp/cache/assets/CFF/0E0/sprockets%2Ff63db558958bc9e0278f78a6f7d72705 +0 -0
  1312. data/test/dummy/tmp/cache/assets/CFF/1A0/sprockets%2F39530e913daa380b1b4fd535119f1e0e +0 -0
  1313. data/test/dummy/tmp/cache/assets/CFF/220/sprockets%2F99056183f5c3e22ebe6a63c2323a1ab2 +0 -0
  1314. data/test/dummy/tmp/cache/assets/CFF/670/sprockets%2F9376a8c2f4a797fec7d6492bf8208594 +0 -0
  1315. data/test/dummy/tmp/cache/assets/CFF/860/sprockets%2F5c7d2a10419532611c629aef1e62ed3b +0 -0
  1316. data/test/dummy/tmp/cache/assets/CFF/8A0/sprockets%2F8bbd3b8c70a0998b0703d3222d4a3c45 +0 -0
  1317. data/test/dummy/tmp/cache/assets/D00/180/sprockets%2Fc46253339a0af89b71ab34d039ad82b0 +0 -0
  1318. data/test/dummy/tmp/cache/assets/D00/1C0/sprockets%2F1003ca26c60873d279c257fdea14ea25 +0 -0
  1319. data/test/dummy/tmp/cache/assets/D00/5E0/sprockets%2F40611fe44dda10993c1b28b4b93225cf +0 -0
  1320. data/test/dummy/tmp/cache/assets/D00/C10/sprockets%2F169d5c9cc4598e63f95577f52e9da370 +0 -0
  1321. data/test/dummy/tmp/cache/assets/D00/F60/sprockets%2Fb032c07696f4ff12c2024db22555f6ad +0 -0
  1322. data/test/dummy/tmp/cache/assets/D01/0E0/sprockets%2F134d0dd2f5cfc525b317e232a479e900 +0 -0
  1323. data/test/dummy/tmp/cache/assets/D01/A60/sprockets%2F3ca75cfcf2037d5364e4531448da120d +0 -0
  1324. data/test/dummy/tmp/cache/assets/D02/5F0/sprockets%2F47c2f882e0175d7d56d9d885f7bf2597 +0 -0
  1325. data/test/dummy/tmp/cache/assets/D02/9C0/sprockets%2F4bdf76951ce2310ecc12870dac901904 +0 -0
  1326. data/test/dummy/tmp/cache/assets/D03/620/sprockets%2F81d03fe39eae417f80342ae66242af10 +0 -0
  1327. data/test/dummy/tmp/cache/assets/D03/8B0/sprockets%2Febcb583b805d6193b261002efcf52067 +0 -0
  1328. data/test/dummy/tmp/cache/assets/D03/A20/sprockets%2Fe530a3ae26f349ac8c10647e621b2f36 +0 -0
  1329. data/test/dummy/tmp/cache/assets/D04/3A0/sprockets%2F2d5c0cc93688011b7d71a3aa5373b48e +0 -0
  1330. data/test/dummy/tmp/cache/assets/D04/B00/sprockets%2F00735a4a37eb6126f08bd35c3488cda5 +0 -0
  1331. data/test/dummy/tmp/cache/assets/D04/B30/sprockets%2F2f43c49fb8c3d1d80ba81307c44821c3 +0 -0
  1332. data/test/dummy/tmp/cache/assets/D04/CD0/sprockets%2Fceb7645ca4df4b8e5d42161232623c70 +0 -0
  1333. data/test/dummy/tmp/cache/assets/D05/3B0/sprockets%2F61fc14de47c1d0400f5fdc17565e9033 +0 -0
  1334. data/test/dummy/tmp/cache/assets/D05/430/sprockets%2F76629c52ae8228b6f4d8ded97d691888 +0 -0
  1335. data/test/dummy/tmp/cache/assets/D05/4A0/sprockets%2F61c2c0d2ca2aa0fcf877c81532257469 +0 -0
  1336. data/test/dummy/tmp/cache/assets/D05/930/sprockets%2F5ed590a61f704c61e17d72ca2af87103 +0 -0
  1337. data/test/dummy/tmp/cache/assets/D05/EB0/sprockets%2F88780a60baac2a29c14c09a2f3c95229 +0 -0
  1338. data/test/dummy/tmp/cache/assets/D05/F90/sprockets%2Ff656115176f84c4fb4790c03aa11cdf1 +0 -0
  1339. data/test/dummy/tmp/cache/assets/D06/010/sprockets%2Fd3f70dc8d4dbb2b2590212294418cf27 +0 -0
  1340. data/test/dummy/tmp/cache/assets/D06/300/sprockets%2F5e2e9da172903ee0aa476447f0a4d217 +0 -0
  1341. data/test/dummy/tmp/cache/assets/D06/FE0/sprockets%2F9a0cd09294a56d31c4390b823ad51e7d +0 -0
  1342. data/test/dummy/tmp/cache/assets/D07/1F0/sprockets%2F5635d72ea41c7982ec9323d125ba02ed +0 -0
  1343. data/test/dummy/tmp/cache/assets/D07/390/sprockets%2Fdd33e50087f613fb14d4a22f7bc63807 +0 -0
  1344. data/test/dummy/tmp/cache/assets/D07/680/sprockets%2F2921bb7defb45d60b04558a3e012686f +0 -0
  1345. data/test/dummy/tmp/cache/assets/D07/8D0/sprockets%2F823cf8df688427fe2569f999750f23eb +0 -0
  1346. data/test/dummy/tmp/cache/assets/D08/7C0/sprockets%2F5b865128ca116b17bb159d968e6aae10 +0 -0
  1347. data/test/dummy/tmp/cache/assets/D08/A10/sprockets%2F7764ebd1a9c4f03b9f2d3a52232026e8 +0 -0
  1348. data/test/dummy/tmp/cache/assets/D08/C30/sprockets%2F25800231754c73509b45efc8caaf52cf +0 -0
  1349. data/test/dummy/tmp/cache/assets/D08/E10/sprockets%2Fd004e64e4981c97f2046e2cb5e6ba420 +0 -0
  1350. data/test/dummy/tmp/cache/assets/D09/0E0/sprockets%2F861a0a04ea603309d93a883f25f9fb2c +0 -0
  1351. data/test/dummy/tmp/cache/assets/D09/100/sprockets%2Fd696fb8fbd707484e69f9815a79387d2 +0 -0
  1352. data/test/dummy/tmp/cache/assets/D09/210/sprockets%2F0c57094235e32edddcc747ed202873b3 +0 -0
  1353. data/test/dummy/tmp/cache/assets/D09/3D0/sprockets%2F724ad72478f44b426da0224da92cee54 +0 -0
  1354. data/test/dummy/tmp/cache/assets/D09/5E0/sprockets%2F3318d97233cc6ec853c21cb33f8a190d +0 -0
  1355. data/test/dummy/tmp/cache/assets/D09/680/sprockets%2F6e5aeb11318f3a858b8c24d0038474eb +0 -0
  1356. data/test/dummy/tmp/cache/assets/D09/820/sprockets%2F85b308247d96cd3f111ad8a444cd841b +0 -0
  1357. data/test/dummy/tmp/cache/assets/D09/940/sprockets%2F117b8bef6f033eabf80c8376160b4247 +0 -0
  1358. data/test/dummy/tmp/cache/assets/D09/B40/sprockets%2Fdc13f0ec5c52056111f8d7ab958343d7 +0 -0
  1359. data/test/dummy/tmp/cache/assets/D0A/0E0/sprockets%2F4b9ea32c5ae7b75b362b7071b35d2739 +0 -0
  1360. data/test/dummy/tmp/cache/assets/D0A/1A0/sprockets%2F0dadca80c1376047e97c5256acd77127 +0 -0
  1361. data/test/dummy/tmp/cache/assets/D0A/300/sprockets%2F00165b651485bfc396a57ea3951aca9c +0 -0
  1362. data/test/dummy/tmp/cache/assets/D0A/590/sprockets%2F660e4ed70999ad0fb5402f2b8322f0e2 +0 -0
  1363. data/test/dummy/tmp/cache/assets/D0A/720/sprockets%2F3f99583002696fb4d521dee231e2a3da +0 -0
  1364. data/test/dummy/tmp/cache/assets/D0A/810/sprockets%2F9cc7c89425ba1686a18a1d8beb005209 +0 -0
  1365. data/test/dummy/tmp/cache/assets/D0A/890/sprockets%2F8a5a29d81021eced955403acf246c790 +0 -0
  1366. data/test/dummy/tmp/cache/assets/D0A/B90/sprockets%2F84a57505123dc77ee41c5b9261cd52cd +0 -0
  1367. data/test/dummy/tmp/cache/assets/D0A/CB0/sprockets%2F01b7bc8d4406b16b212891ef72eeb775 +0 -0
  1368. data/test/dummy/tmp/cache/assets/D0A/F30/sprockets%2F64a591be6f28b5b7124aa6053fb6490e +0 -0
  1369. data/test/dummy/tmp/cache/assets/D0B/130/sprockets%2F42a66ff402fe17f41184d0ecb68c6424 +0 -0
  1370. data/test/dummy/tmp/cache/assets/D0B/220/sprockets%2F282c3ab5703c68d4a44172e8a3d665de +0 -0
  1371. data/test/dummy/tmp/cache/assets/D0B/430/sprockets%2F946f48f97b74e7c38a90b851d7899c6e +0 -0
  1372. data/test/dummy/tmp/cache/assets/D0B/5F0/sprockets%2Feed5c02da0683664c842f6cc009b8632 +0 -0
  1373. data/test/dummy/tmp/cache/assets/D0B/640/sprockets%2F9366c3e436388b239ebcda0fc24520f1 +0 -0
  1374. data/test/dummy/tmp/cache/assets/D0B/730/sprockets%2F72842ad2887cb116fae708af921a4c16 +0 -0
  1375. data/test/dummy/tmp/cache/assets/D0B/800/sprockets%2F128694f9db7bd2ff0bac9c0322372453 +0 -0
  1376. data/test/dummy/tmp/cache/assets/D0B/B00/sprockets%2F75a80653b8109c70d939afa19cd31db2 +0 -0
  1377. data/test/dummy/tmp/cache/assets/D0B/C90/sprockets%2Fbb750bf14bd815c15c9d372358a29c91 +0 -0
  1378. data/test/dummy/tmp/cache/assets/D0B/E60/sprockets%2F5d8a090323b68ecf521164e70eff23b7 +0 -0
  1379. data/test/dummy/tmp/cache/assets/D0C/090/sprockets%2F3bf824532b35b3d3fe6a08c4185e0e95 +0 -0
  1380. data/test/dummy/tmp/cache/assets/D0C/1C0/sprockets%2Fee732f263dba34752073c7ff91361ad4 +0 -0
  1381. data/test/dummy/tmp/cache/assets/D0C/430/sprockets%2Fd02a0759b11f6518dcf0ed0894a760e8 +0 -0
  1382. data/test/dummy/tmp/cache/assets/D0C/570/sprockets%2Fcd362c2a0626ffdf755b794076a40a82 +0 -0
  1383. data/test/dummy/tmp/cache/assets/D0C/610/sprockets%2Fd5649ac600c7962a0883a78a9cc1da05 +0 -0
  1384. data/test/dummy/tmp/cache/assets/D0C/6B0/sprockets%2Fd18e543f7d154cc106243bf2f6c27f72 +0 -0
  1385. data/test/dummy/tmp/cache/assets/D0C/760/sprockets%2F5043d114bc66f610c93969ca647deaf0 +0 -0
  1386. data/test/dummy/tmp/cache/assets/D0C/C30/sprockets%2F3ea6ea3b7d011db381536746695e5dd2 +0 -0
  1387. data/test/dummy/tmp/cache/assets/D0D/090/sprockets%2F53622478b6257527acbb51c6f9bbb42f +0 -0
  1388. data/test/dummy/tmp/cache/assets/D0D/570/sprockets%2F72ee1883b6c0209c1611a552a8eb7ef9 +0 -0
  1389. data/test/dummy/tmp/cache/assets/D0D/980/sprockets%2F41ef6c755cac1d2da9e452d238603197 +0 -0
  1390. data/test/dummy/tmp/cache/assets/D0D/ED0/sprockets%2F3788b0aca5aec5145a257eb5955507f3 +0 -0
  1391. data/test/dummy/tmp/cache/assets/D0D/F70/sprockets%2Fcbe13926041dc94c8ddb4a781146249e +0 -0
  1392. data/test/dummy/tmp/cache/assets/D0E/220/sprockets%2Fcbf6939f3475ee87b88994b97b7715d6 +0 -0
  1393. data/test/dummy/tmp/cache/assets/D0E/290/sprockets%2F059437fa9369eff7004cdb1f0b36380b +0 -0
  1394. data/test/dummy/tmp/cache/assets/D0E/2E0/sprockets%2F2a282da6089ac07527d4eb070f6f758b +0 -0
  1395. data/test/dummy/tmp/cache/assets/D0E/3C0/sprockets%2F5c55a77e185d6b730fcf1b1297b431d5 +0 -0
  1396. data/test/dummy/tmp/cache/assets/D0E/620/sprockets%2F3de38432c45ddc16e6d8553416c1cf26 +0 -0
  1397. data/test/dummy/tmp/cache/assets/D0E/9C0/sprockets%2F5cd42d2b2e5d7839ef077276b52b9a00 +0 -0
  1398. data/test/dummy/tmp/cache/assets/D0E/A10/sprockets%2F05ebd4b57720dbc2c207882946bd47a9 +0 -0
  1399. data/test/dummy/tmp/cache/assets/D0E/C00/sprockets%2F010b6f849ec9259fa3de514a18e74a32 +0 -0
  1400. data/test/dummy/tmp/cache/assets/D0E/FB0/sprockets%2F211db87b55b9f2ec7d75111aa1922f99 +0 -0
  1401. data/test/dummy/tmp/cache/assets/D0F/000/sprockets%2F483b8bb18b87ece00226c80fb1f61965 +0 -0
  1402. data/test/dummy/tmp/cache/assets/D0F/560/sprockets%2F18f67b27b2141576c51de1c3d2b9f38e +0 -0
  1403. data/test/dummy/tmp/cache/assets/D0F/560/sprockets%2F5f923aab9c0522298d836e8ae0c1426f +0 -0
  1404. data/test/dummy/tmp/cache/assets/D0F/870/sprockets%2F2e97e46c0514892b18bbb2d7a4e4862a +0 -0
  1405. data/test/dummy/tmp/cache/assets/D0F/980/sprockets%2Fdaa14ed9a3657161c56c66483e2d17e4 +0 -0
  1406. data/test/dummy/tmp/cache/assets/D0F/DE0/sprockets%2F69bf7ad2a1388f3e306a7320a882af38 +0 -0
  1407. data/test/dummy/tmp/cache/assets/D10/300/sprockets%2F21c9f4b074feb773e4e223e35691f30e +0 -0
  1408. data/test/dummy/tmp/cache/assets/D10/410/sprockets%2F5fa7802b4854988b4cb0bee2e0d34491 +0 -0
  1409. data/test/dummy/tmp/cache/assets/D10/730/sprockets%2F3dab68310e657844a5adcb9e180790c7 +0 -0
  1410. data/test/dummy/tmp/cache/assets/D10/850/sprockets%2Fc9d90745ea3ca04d148d40409e9b82f4 +0 -0
  1411. data/test/dummy/tmp/cache/assets/D10/8F0/sprockets%2F9ced9499938561d5a5889d9a93c08d9f +0 -0
  1412. data/test/dummy/tmp/cache/assets/D10/CB0/sprockets%2F732e6da303a457dd84651c7a746ed9b1 +0 -0
  1413. data/test/dummy/tmp/cache/assets/D10/EF0/sprockets%2F346fda251eb63406780ce6e3c337a88d +0 -0
  1414. data/test/dummy/tmp/cache/assets/D10/FC0/sprockets%2F563f9f7eb632fc32ab885a1bc2127429 +0 -0
  1415. data/test/dummy/tmp/cache/assets/D11/2F0/sprockets%2Fe6f61417924f79c80bbe47a75b08a03b +0 -0
  1416. data/test/dummy/tmp/cache/assets/D11/510/sprockets%2F48f352a44fa4fc68f850537d1c6c06c2 +0 -0
  1417. data/test/dummy/tmp/cache/assets/D11/660/sprockets%2F18364ce3b27ed0747916df341d8fad14 +0 -0
  1418. data/test/dummy/tmp/cache/assets/D11/AD0/sprockets%2F3c0e80cb649c82b7c42d0914be888a36 +0 -0
  1419. data/test/dummy/tmp/cache/assets/D11/C40/sprockets%2F04aecf869ffe1036d6a34e5412b37548 +0 -0
  1420. data/test/dummy/tmp/cache/assets/D11/CA0/sprockets%2F771462dbc4b5ca18a79675e303a9f1e5 +0 -0
  1421. data/test/dummy/tmp/cache/assets/D11/F80/sprockets%2F708e296fdc9635072ba21545affaf452 +0 -0
  1422. data/test/dummy/tmp/cache/assets/D12/320/sprockets%2F45d98b1a0f4df9794921bed2f0f71015 +0 -0
  1423. data/test/dummy/tmp/cache/assets/D12/6A0/sprockets%2Fb27002b49aed22f5f982089695eba4c4 +0 -0
  1424. data/test/dummy/tmp/cache/assets/D12/7C0/sprockets%2F1f2db5b36886d30af1f230790f3e8f47 +0 -0
  1425. data/test/dummy/tmp/cache/assets/D12/890/sprockets%2F4a3f3b35d4b821627f348b7db2268ec9 +0 -0
  1426. data/test/dummy/tmp/cache/assets/D13/0B0/sprockets%2F8fa65d01a766afba41822191f99ab685 +0 -0
  1427. data/test/dummy/tmp/cache/assets/D13/2B0/sprockets%2F2f9ce439715127b74621f3dbb6bc861f +0 -0
  1428. data/test/dummy/tmp/cache/assets/D13/380/sprockets%2Fc3f62e9c3083521dff321d75592b99aa +0 -0
  1429. data/test/dummy/tmp/cache/assets/D13/490/sprockets%2F6fdcca903e16974a7065620d8e8a155d +0 -0
  1430. data/test/dummy/tmp/cache/assets/D13/740/sprockets%2Ffe5b9163b9c64525852a6cdb161cb783 +0 -0
  1431. data/test/dummy/tmp/cache/assets/D13/9A0/sprockets%2F3813c433df54f19eb7257aed6e2287c1 +0 -0
  1432. data/test/dummy/tmp/cache/assets/D13/9D0/sprockets%2F8ce730879e6e086a1e53115b046d1dff +0 -0
  1433. data/test/dummy/tmp/cache/assets/D13/E70/sprockets%2Ff65d6f1d244dc0a17109771f887f3a3d +0 -0
  1434. data/test/dummy/tmp/cache/assets/D14/0F0/sprockets%2Ff82e9e555d5326ff2226159aeec16c12 +0 -0
  1435. data/test/dummy/tmp/cache/assets/D14/220/sprockets%2F84a72d24ac9ea56176e018ee138d9f05 +0 -0
  1436. data/test/dummy/tmp/cache/assets/D14/3F0/sprockets%2F719e0a69eb9aa68caa2d672675b62660 +0 -0
  1437. data/test/dummy/tmp/cache/assets/D14/400/sprockets%2F049f119c2b9b2da78355c1187fdc865a +0 -0
  1438. data/test/dummy/tmp/cache/assets/D14/8B0/sprockets%2Fc08dff89cf0e8ba261b442283749e062 +0 -0
  1439. data/test/dummy/tmp/cache/assets/D14/C90/sprockets%2F33b03169fab0ff73ae417887b690a4f9 +0 -0
  1440. data/test/dummy/tmp/cache/assets/D14/CE0/sprockets%2F9d9cc6b0e34afb42924876e23963b50b +0 -0
  1441. data/test/dummy/tmp/cache/assets/D15/010/sprockets%2F7d43d9dd12a5902d5eb03e8061e689e6 +0 -0
  1442. data/test/dummy/tmp/cache/assets/D15/030/sprockets%2Fa5affe567dc74a8321744f5902f6d531 +0 -0
  1443. data/test/dummy/tmp/cache/assets/D15/4B0/sprockets%2F643ea4288c39b957a82be0621f4a9d4c +0 -0
  1444. data/test/dummy/tmp/cache/assets/D15/4D0/sprockets%2F3ff5fa34513b93faa9fc167536585a52 +0 -0
  1445. data/test/dummy/tmp/cache/assets/D15/6B0/sprockets%2F3bfbac97eb5796307418d0f0e679144a +0 -0
  1446. data/test/dummy/tmp/cache/assets/D15/790/sprockets%2F1c3f4f891ad225c51c5f71e7e6847e22 +0 -0
  1447. data/test/dummy/tmp/cache/assets/D15/7D0/sprockets%2F326e2817cf99c2e9a933a936b3ca126d +0 -0
  1448. data/test/dummy/tmp/cache/assets/D15/7F0/sprockets%2F747aa65b72a2066c93638af05bfc49f6 +0 -0
  1449. data/test/dummy/tmp/cache/assets/D15/DC0/sprockets%2Fe0070306dd5f89aebbe73936d01e9990 +0 -0
  1450. data/test/dummy/tmp/cache/assets/D16/0C0/sprockets%2F58fb9abfdb670a8502813dc88487711a +0 -0
  1451. data/test/dummy/tmp/cache/assets/D16/200/sprockets%2Fc74cd1183d9a36031f7961945ec7bed4 +0 -0
  1452. data/test/dummy/tmp/cache/assets/D16/2C0/sprockets%2Fa90ad78854c9bd1156e3866eb0e234f5 +0 -0
  1453. data/test/dummy/tmp/cache/assets/D16/350/sprockets%2F481fad5a50bfc8c5b239b627690669f1 +0 -0
  1454. data/test/dummy/tmp/cache/assets/D16/4D0/sprockets%2Fc39108a25f0ff6c6c087932b9ed0e565 +0 -0
  1455. data/test/dummy/tmp/cache/assets/D16/E90/sprockets%2Ff6f373fe403f4421e5eef7cf14870118 +0 -0
  1456. data/test/dummy/tmp/cache/assets/D16/F50/sprockets%2F64609577d7841668dec220ed4d0ccd1f +0 -0
  1457. data/test/dummy/tmp/cache/assets/D17/040/sprockets%2F8ad5a2866ec65662f970520395ecbaf2 +0 -0
  1458. data/test/dummy/tmp/cache/assets/D17/160/sprockets%2Fbae77b58c1fd2e9072306427e86727cc +0 -0
  1459. data/test/dummy/tmp/cache/assets/D17/350/sprockets%2F872313faadc302ebc49306696cc9689d +0 -0
  1460. data/test/dummy/tmp/cache/assets/D17/4F0/sprockets%2Fb75a0450ac61cf9f16983cee94b76165 +0 -0
  1461. data/test/dummy/tmp/cache/assets/D17/720/sprockets%2Fd88740a269159b5ed542cac385cc5a94 +0 -0
  1462. data/test/dummy/tmp/cache/assets/D17/780/sprockets%2Fd5c58fccc3367e80721dc613866bf660 +0 -0
  1463. data/test/dummy/tmp/cache/assets/D17/860/sprockets%2F138e6bcec6692bd3e6760d23a49e2287 +0 -0
  1464. data/test/dummy/tmp/cache/assets/D17/AA0/sprockets%2Fc0f895b740d8d572e5d1495f80a23e6a +0 -0
  1465. data/test/dummy/tmp/cache/assets/D17/C50/sprockets%2Fc3f3c439bf5e484757eee298b106062a +0 -0
  1466. data/test/dummy/tmp/cache/assets/D17/F70/sprockets%2F9c39629de564e4a296b2db0c471fb941 +0 -0
  1467. data/test/dummy/tmp/cache/assets/D18/280/sprockets%2Fc70f5cc8315cd0dc493329f9463c8b56 +0 -0
  1468. data/test/dummy/tmp/cache/assets/D18/290/sprockets%2F5cb980f53c999c04b9b0b930dd08266e +0 -0
  1469. data/test/dummy/tmp/cache/assets/D18/300/sprockets%2F4b5e886e88a00ab8ad527b679cc12179 +0 -0
  1470. data/test/dummy/tmp/cache/assets/D18/540/sprockets%2F2e14b68eb93ccb58bf790f0715166f19 +0 -0
  1471. data/test/dummy/tmp/cache/assets/D18/5B0/sprockets%2Faab076893f33e5c552fb70c1827c8d96 +0 -0
  1472. data/test/dummy/tmp/cache/assets/D18/5C0/sprockets%2F806ddba8f1127fcc8e5a108b86937744 +0 -0
  1473. data/test/dummy/tmp/cache/assets/D18/610/sprockets%2Ffb8ca45b4472354d827192c7ea25f89a +0 -0
  1474. data/test/dummy/tmp/cache/assets/D18/690/sprockets%2F2273c14180eb2ce398b7f4fec8188f26 +0 -0
  1475. data/test/dummy/tmp/cache/assets/D18/790/sprockets%2Fd685dcaf46894a095d72ae68035e2d05 +0 -0
  1476. data/test/dummy/tmp/cache/assets/D18/960/sprockets%2Fb2599041fd51dcfc454185da95ee2396 +0 -0
  1477. data/test/dummy/tmp/cache/assets/D18/A30/sprockets%2Fed6c096e33c730609fd681f9c342a86a +0 -0
  1478. data/test/dummy/tmp/cache/assets/D18/B30/sprockets%2F1ef8de2df042157368b285697adb538a +0 -0
  1479. data/test/dummy/tmp/cache/assets/D19/220/sprockets%2Fd109923d72986131f9ceb24d65dc92fb +0 -0
  1480. data/test/dummy/tmp/cache/assets/D19/420/sprockets%2F379a804e588c4e9ca18e4ee3306653ac +0 -0
  1481. data/test/dummy/tmp/cache/assets/D19/730/sprockets%2Fce771c3ae2127f91a0f67f7f2f571774 +0 -0
  1482. data/test/dummy/tmp/cache/assets/D19/AE0/sprockets%2F29dd77cb7d01481f308397bbb7618b9c +0 -0
  1483. data/test/dummy/tmp/cache/assets/D19/CF0/sprockets%2Ff8dda9781cbd3a795752581028d4e70a +0 -0
  1484. data/test/dummy/tmp/cache/assets/D1A/5D0/sprockets%2F5131b11116be12111ba22e43df8f2fec +0 -0
  1485. data/test/dummy/tmp/cache/assets/D1A/630/sprockets%2F2174485dc959e692517f81ebccc18ad1 +0 -0
  1486. data/test/dummy/tmp/cache/assets/D1A/670/sprockets%2F4f45089e5678ba2b1c06518bde98a7d4 +0 -0
  1487. data/test/dummy/tmp/cache/assets/D1A/AB0/sprockets%2F3c731bd6b32d6881f6724639e47fcee1 +0 -0
  1488. data/test/dummy/tmp/cache/assets/D1A/D80/sprockets%2Fe285d6ec19c323360f5f5495befa8345 +0 -0
  1489. data/test/dummy/tmp/cache/assets/D1B/000/sprockets%2F33b9a53497029670f2a64dc3fb9fdc86 +0 -0
  1490. data/test/dummy/tmp/cache/assets/D1B/000/sprockets%2Fe9444b550979532e5dc13f0e0f177eff +0 -0
  1491. data/test/dummy/tmp/cache/assets/D1B/0C0/sprockets%2F7ca1fa05d6f3e9394ed1439949cb2690 +0 -0
  1492. data/test/dummy/tmp/cache/assets/D1B/B70/sprockets%2F68152d6df8d2af0717e60e5387e8ac18 +0 -0
  1493. data/test/dummy/tmp/cache/assets/D1B/D20/sprockets%2Fa8faebab8e88716f8f6a373628203364 +0 -0
  1494. data/test/dummy/tmp/cache/assets/D1B/D60/sprockets%2Fb70f31481add8338f2d9c64e6187bc95 +0 -0
  1495. data/test/dummy/tmp/cache/assets/D1B/E30/sprockets%2Fae987ee8829c3e5b215bc5f323d61627 +0 -0
  1496. data/test/dummy/tmp/cache/assets/D1B/F30/sprockets%2Fd0809029790934fadf2cbc395a548cf8 +0 -0
  1497. data/test/dummy/tmp/cache/assets/D1C/030/sprockets%2Fdee6c3ab722997fff9127c31767e0415 +0 -0
  1498. data/test/dummy/tmp/cache/assets/D1C/230/sprockets%2F064c29ce898edd6351a50e4179c4a6e8 +0 -0
  1499. data/test/dummy/tmp/cache/assets/D1C/280/sprockets%2Ff7739e72d2907f6dbda12ba3896e0619 +0 -0
  1500. data/test/dummy/tmp/cache/assets/D1C/470/sprockets%2F377c82344c98c9a1f1a984a2fda5d683 +0 -0
  1501. data/test/dummy/tmp/cache/assets/D1C/540/sprockets%2F334e02662b45fcc11013c90d2ebaad05 +0 -0
  1502. data/test/dummy/tmp/cache/assets/D1C/8F0/sprockets%2F95222ee74605c7485eee7a0f703dce68 +0 -0
  1503. data/test/dummy/tmp/cache/assets/D1D/010/sprockets%2Fe9ee683526f75ecb43b74f4d834012b9 +0 -0
  1504. data/test/dummy/tmp/cache/assets/D1D/460/sprockets%2Fc964116863a0e39db98ac9ba1c1f8976 +0 -0
  1505. data/test/dummy/tmp/cache/assets/D1D/4B0/sprockets%2Fe238270322125853fceb96fd7e4f95ee +0 -0
  1506. data/test/dummy/tmp/cache/assets/D1D/7C0/sprockets%2F2658affbe8bc283984784335105edea6 +0 -0
  1507. data/test/dummy/tmp/cache/assets/D1D/C90/sprockets%2Fa688522a4494897a6f6a5e6b80b0c4ff +0 -0
  1508. data/test/dummy/tmp/cache/assets/D1D/FC0/sprockets%2F71971d1f863f746f20a99bbd62de51d7 +0 -0
  1509. data/test/dummy/tmp/cache/assets/D1E/280/sprockets%2Faf6e30265d55b19575089dd09eb9f44e +0 -0
  1510. data/test/dummy/tmp/cache/assets/D1E/360/sprockets%2Facdf07f1f658079c6e3d916663b26d56 +0 -0
  1511. data/test/dummy/tmp/cache/assets/D1E/550/sprockets%2F8e92d88c23785f2b3b11ce99ac06936c +0 -0
  1512. data/test/dummy/tmp/cache/assets/D1E/640/sprockets%2Fb6659a71e769a42269dbf4f3c358e21f +0 -0
  1513. data/test/dummy/tmp/cache/assets/D1E/650/sprockets%2Fcdcfe9d0458130ee48e49b14977353f4 +0 -0
  1514. data/test/dummy/tmp/cache/assets/D1E/DC0/sprockets%2F645b6ef3a71597548d3e8f7a5043ff0d +0 -0
  1515. data/test/dummy/tmp/cache/assets/D1F/2D0/sprockets%2Fe03a6cf19f5d7f693510d90b62f569c9 +0 -0
  1516. data/test/dummy/tmp/cache/assets/D1F/4E0/sprockets%2F77275f55c523218e6d47af5fa85ad29e +0 -0
  1517. data/test/dummy/tmp/cache/assets/D1F/640/sprockets%2Ff2cc190ca52597fd57599f41a7a9723e +0 -0
  1518. data/test/dummy/tmp/cache/assets/D1F/8A0/sprockets%2F28491fd6bb09d8836c1cc0f05f9797a5 +0 -0
  1519. data/test/dummy/tmp/cache/assets/D1F/AA0/sprockets%2F458c88821b0948ba750dd2ea679ae86d +0 -0
  1520. data/test/dummy/tmp/cache/assets/D1F/E60/sprockets%2F07f2a6848ce8d680ba61f828bb9d3890 +0 -0
  1521. data/test/dummy/tmp/cache/assets/D21/2E0/sprockets%2Fc795f0286e2ec5f0d79f179eac158731 +0 -0
  1522. data/test/dummy/tmp/cache/assets/D21/4E0/sprockets%2F15129dcb96697f9eb74fe1fe82a17316 +0 -0
  1523. data/test/dummy/tmp/cache/assets/D21/6C0/sprockets%2F7dbd24986e6074d4907487ab2fc7ce72 +0 -0
  1524. data/test/dummy/tmp/cache/assets/D21/AF0/sprockets%2F8d56bc7093bd548af93f398c08c28c70 +0 -0
  1525. data/test/dummy/tmp/cache/assets/D22/810/sprockets%2F95f75e1268ef8fce5d69b01157e3109e +0 -0
  1526. data/test/dummy/tmp/cache/assets/D22/990/sprockets%2F1bc4ab3477ad23231f11422f42fdda18 +0 -0
  1527. data/test/dummy/tmp/cache/assets/D22/B50/sprockets%2Ff9319c6e43e983c216f99aca73c4844b +0 -0
  1528. data/test/dummy/tmp/cache/assets/D22/E10/sprockets%2F65e527527104f4eb64e9afd7856fe3f3 +0 -0
  1529. data/test/dummy/tmp/cache/assets/D23/150/sprockets%2F030c2207a3052f84ecfa2b05af8c42a8 +0 -0
  1530. data/test/dummy/tmp/cache/assets/D23/1B0/sprockets%2F3ae20324133b89e4391da32bbd1af23d +0 -0
  1531. data/test/dummy/tmp/cache/assets/D23/3E0/sprockets%2F89eb745583edfe3c2f09a856c61c7651 +0 -0
  1532. data/test/dummy/tmp/cache/assets/D23/550/sprockets%2F8ae9f4f4e1c90f843150364d8e8e595a +0 -0
  1533. data/test/dummy/tmp/cache/assets/D23/5B0/sprockets%2F1f95e34b784460e6699debf56b6a4e15 +0 -0
  1534. data/test/dummy/tmp/cache/assets/D23/5F0/sprockets%2F8b8841f36e4be6308855d6cfb4409e9b +0 -0
  1535. data/test/dummy/tmp/cache/assets/D23/B10/sprockets%2Fc06e6ed7f709f8005e084ddd989269b0 +0 -0
  1536. data/test/dummy/tmp/cache/assets/D24/770/sprockets%2F1e5491fe1b520f41a6cfb52d46da0003 +0 -0
  1537. data/test/dummy/tmp/cache/assets/D24/8B0/sprockets%2Ff465f90a8991a2c4986f13b87f9c0fb2 +0 -0
  1538. data/test/dummy/tmp/cache/assets/D24/9A0/sprockets%2F723667858e3fc7af44b1f68c9e17d2e2 +0 -0
  1539. data/test/dummy/tmp/cache/assets/D24/AC0/sprockets%2F8d22996f1c4a36f3d49a1e5997aa7e56 +0 -0
  1540. data/test/dummy/tmp/cache/assets/D24/EB0/sprockets%2F9d429705deb41789a37705f3c67ee4ee +0 -0
  1541. data/test/dummy/tmp/cache/assets/D25/220/sprockets%2F608588a7c74acdb9e9f13b9a66b46953 +0 -0
  1542. data/test/dummy/tmp/cache/assets/D25/590/sprockets%2Faa1c19bcc0b1257c0b1987c82825b0c1 +0 -0
  1543. data/test/dummy/tmp/cache/assets/D25/5B0/sprockets%2F56355268a998595bebb9b6c42ba875af +0 -0
  1544. data/test/dummy/tmp/cache/assets/D25/A10/sprockets%2F8459d7a6e879de2a674d224bd7b960d5 +0 -0
  1545. data/test/dummy/tmp/cache/assets/D25/B10/sprockets%2F31587c7769f852ce8f3fe4064ec14c7c +0 -0
  1546. data/test/dummy/tmp/cache/assets/D26/090/sprockets%2F96098fae84af37c7199177bea92533af +0 -0
  1547. data/test/dummy/tmp/cache/assets/D26/8D0/sprockets%2Fdd06c9b99fe167f48a99d1350c837d35 +0 -0
  1548. data/test/dummy/tmp/cache/assets/D26/C90/sprockets%2F211f9fe1812bba01a705b8207daa239f +0 -0
  1549. data/test/dummy/tmp/cache/assets/D26/C90/sprockets%2Fb09f146e78fc920d934ee9e19dc92284 +0 -0
  1550. data/test/dummy/tmp/cache/assets/D26/C90/sprockets%2Ff78c003cad298697456d86b714e36eff +0 -0
  1551. data/test/dummy/tmp/cache/assets/D27/800/sprockets%2Fbda3823ab830a10b16a96087f6ca6c03 +0 -0
  1552. data/test/dummy/tmp/cache/assets/D28/800/sprockets%2F3c02ffc712301d473a7af7719ca3ab31 +0 -0
  1553. data/test/dummy/tmp/cache/assets/D28/950/sprockets%2Ff17a0aaa22dc704c67096b804c5ab471 +0 -0
  1554. data/test/dummy/tmp/cache/assets/D28/B20/sprockets%2F09f462027d72b7e7de9fd98087dfc373 +0 -0
  1555. data/test/dummy/tmp/cache/assets/D29/040/sprockets%2F02b88051f350e24596d3fe3340bacbaa +0 -0
  1556. data/test/dummy/tmp/cache/assets/D29/840/sprockets%2F402201ec92b1b3bb45245e5a6bdda948 +0 -0
  1557. data/test/dummy/tmp/cache/assets/D29/950/sprockets%2F2a027eeac6051acbc93563ef44345d01 +0 -0
  1558. data/test/dummy/tmp/cache/assets/D29/BD0/sprockets%2F8c85bb6d4859250bcff55847487d65bd +0 -0
  1559. data/test/dummy/tmp/cache/assets/D29/F00/sprockets%2F40adb76487003a4ab13615c01fc97ead +0 -0
  1560. data/test/dummy/tmp/cache/assets/D29/F80/sprockets%2F3d888988ef5e7292bf1f181eb622b19f +0 -0
  1561. data/test/dummy/tmp/cache/assets/D2A/530/sprockets%2Fc3c476dc0fef40502fa3c935a10330c8 +0 -0
  1562. data/test/dummy/tmp/cache/assets/D2A/5A0/sprockets%2Fd520d019a6a1ba7853bc8ab0c25445c8 +0 -0
  1563. data/test/dummy/tmp/cache/assets/D2A/8A0/sprockets%2Fc2ae580fda7ad422395ab21533a72e33 +0 -0
  1564. data/test/dummy/tmp/cache/assets/D2A/E70/sprockets%2Fb3dc3e00630d3fbac07174c782331c9d +0 -0
  1565. data/test/dummy/tmp/cache/assets/D2C/090/sprockets%2F37e2bcd7a00ea56b8a58181023a3f71d +0 -0
  1566. data/test/dummy/tmp/cache/assets/D2C/200/sprockets%2Fea42ef470e90c4282457aaab741e1d20 +0 -0
  1567. data/test/dummy/tmp/cache/assets/D2C/230/sprockets%2Ff9ed5894f5a416a7c4bf59117d792f49 +0 -0
  1568. data/test/dummy/tmp/cache/assets/D2C/2D0/sprockets%2Fc3d17948d766d978e393bdd1781cc49d +0 -0
  1569. data/test/dummy/tmp/cache/assets/D2C/420/sprockets%2Fff47f6f47f5fb84b813d75969c12d436 +0 -0
  1570. data/test/dummy/tmp/cache/assets/D2C/C30/sprockets%2F4c45fa4505e5938b24204663eaacbba1 +0 -0
  1571. data/test/dummy/tmp/cache/assets/D2C/C90/sprockets%2F4a6a04460007524debf322dbd2d748ed +0 -0
  1572. data/test/dummy/tmp/cache/assets/D2C/CF0/sprockets%2Fbe3d5250223d54ca33db9039b92ad36b +0 -0
  1573. data/test/dummy/tmp/cache/assets/D2D/750/sprockets%2F7fa91d4380a87f8be94605bd49949fd6 +0 -0
  1574. data/test/dummy/tmp/cache/assets/D2D/860/sprockets%2Ff5003f0f4a20770b1d06e19b980c2fec +0 -0
  1575. data/test/dummy/tmp/cache/assets/D2E/170/sprockets%2F74d1aebb319115da8451b4e00ae8f338 +0 -0
  1576. data/test/dummy/tmp/cache/assets/D2E/170/sprockets%2Fe6a334436c00a177c4ba453a4df309fe +0 -0
  1577. data/test/dummy/tmp/cache/assets/D2E/AA0/sprockets%2F3995ff450d69e4f972be748ca7834ab8 +0 -0
  1578. data/test/dummy/tmp/cache/assets/D2F/750/sprockets%2Fe2a3783cf749ff959ee3128ce923b994 +0 -0
  1579. data/test/dummy/tmp/cache/assets/D2F/950/sprockets%2F8f1c56d5b377af88a8896e279b2f634e +0 -0
  1580. data/test/dummy/tmp/cache/assets/D2F/B90/sprockets%2F348310802c3fd47de3854ad2c73adda0 +0 -0
  1581. data/test/dummy/tmp/cache/assets/D30/020/sprockets%2F505a1083ccd6e6787acd291db05a3a35 +0 -0
  1582. data/test/dummy/tmp/cache/assets/D30/200/sprockets%2Fa2f1ab1cf6a773164ef3a240b092876c +0 -0
  1583. data/test/dummy/tmp/cache/assets/D30/280/sprockets%2F1b72a1bc53ae152e338bac388742df35 +0 -0
  1584. data/test/dummy/tmp/cache/assets/D30/380/sprockets%2Fcae2f87a008a1175c61745cdad2780a4 +0 -0
  1585. data/test/dummy/tmp/cache/assets/D30/800/sprockets%2F29aa0abdc4d9559d0106c227f385ca60 +0 -0
  1586. data/test/dummy/tmp/cache/assets/D30/860/sprockets%2F54721d2472da2b68b4117ae416bdcdc7 +0 -0
  1587. data/test/dummy/tmp/cache/assets/D30/9F0/sprockets%2Fd45b9299eb2827664ff94f548daf518e +0 -0
  1588. data/test/dummy/tmp/cache/assets/D30/A60/sprockets%2Fb8f58930c97253b39abcc115acc124a1 +0 -0
  1589. data/test/dummy/tmp/cache/assets/D30/AE0/sprockets%2F04ac8121e3246b33cdfa62f905bb49f3 +0 -0
  1590. data/test/dummy/tmp/cache/assets/D30/BF0/sprockets%2Fe4e84f11d27afb83120e34ad54f01a48 +0 -0
  1591. data/test/dummy/tmp/cache/assets/D30/C70/sprockets%2F54f1716129d313e30dff8f21cd00a4ee +0 -0
  1592. data/test/dummy/tmp/cache/assets/D30/D00/sprockets%2Fa4278112be39200de394ca5c5aeb7b46 +0 -0
  1593. data/test/dummy/tmp/cache/assets/D30/F10/sprockets%2F465c3d452345580daadcf5932c0fc1a3 +0 -0
  1594. data/test/dummy/tmp/cache/assets/D31/F40/sprockets%2F98e56dbef366363d878197884bd2daf5 +0 -0
  1595. data/test/dummy/tmp/cache/assets/D32/540/sprockets%2F4dce62322241cbf7de05fd80342e8a61 +0 -0
  1596. data/test/dummy/tmp/cache/assets/D32/A20/sprockets%2F312a5122c497e50fb1a32e4fc7c5ea77 +0 -0
  1597. data/test/dummy/tmp/cache/assets/D32/B10/sprockets%2F2a27e017a0c879621dcbf40fe91ba238 +0 -0
  1598. data/test/dummy/tmp/cache/assets/D32/D70/sprockets%2Fda7da389106c83aafd914ca2e4014608 +0 -0
  1599. data/test/dummy/tmp/cache/assets/D33/020/sprockets%2F01c4a2531f1c7324d8dbef0645f0e6e7 +0 -0
  1600. data/test/dummy/tmp/cache/assets/D33/060/sprockets%2F117f814b864eaf00a3a91f89a4dbb062 +0 -0
  1601. data/test/dummy/tmp/cache/assets/D33/4B0/sprockets%2F880ea9eead5c5dd1216b9563038a4a00 +0 -0
  1602. data/test/dummy/tmp/cache/assets/D33/570/sprockets%2F4ee3083a14b4cba4158cb3d527ed2495 +0 -0
  1603. data/test/dummy/tmp/cache/assets/D33/890/sprockets%2Fbcb860ab607140a1d739f8c127fe057b +0 -0
  1604. data/test/dummy/tmp/cache/assets/D33/A10/sprockets%2F252c911c7ecb3b378ca58511ba79a42c +0 -0
  1605. data/test/dummy/tmp/cache/assets/D33/BE0/sprockets%2F962b00cab2180a85c58ca205de7565ee +0 -0
  1606. data/test/dummy/tmp/cache/assets/D34/1D0/sprockets%2F311225bc49faae3c839eb24232fe76d1 +0 -0
  1607. data/test/dummy/tmp/cache/assets/D34/650/sprockets%2Fb741123e3d70c9ec63515d194a1cfd7a +0 -0
  1608. data/test/dummy/tmp/cache/assets/D34/880/sprockets%2F6ea174533a4ab2c4455f56e4ccb4811f +0 -0
  1609. data/test/dummy/tmp/cache/assets/D34/950/sprockets%2Fa9ab3c0627dd00d6b037ddf42259448d +0 -0
  1610. data/test/dummy/tmp/cache/assets/D34/AB0/sprockets%2Ffd3bd7d7ca6b39b102f2e286f0461107 +0 -0
  1611. data/test/dummy/tmp/cache/assets/D34/CF0/sprockets%2F4f93aa82b61ce48090350e1e4ce204ef +0 -0
  1612. data/test/dummy/tmp/cache/assets/D34/E10/sprockets%2F74034ea037bd6434c8eb68ccf2b3026d +0 -0
  1613. data/test/dummy/tmp/cache/assets/D34/F10/sprockets%2F8e2570cc10ce5d1a88cb70e23ba80783 +0 -0
  1614. data/test/dummy/tmp/cache/assets/D35/4B0/sprockets%2Fe0e3c624373b0c0038ccd087f9a8d4d3 +0 -0
  1615. data/test/dummy/tmp/cache/assets/D35/9C0/sprockets%2Ffd51df36dcc611642a50f460a4c197c6 +0 -0
  1616. data/test/dummy/tmp/cache/assets/D35/DC0/sprockets%2F4271a256db0b166be553384b7e8ccad4 +0 -0
  1617. data/test/dummy/tmp/cache/assets/D36/020/sprockets%2F7e78b42ca2f717752a2b1d262a5ad27f +0 -0
  1618. data/test/dummy/tmp/cache/assets/D36/0F0/sprockets%2Fcc0211f5aa98029c59d8ff0e055c9b10 +0 -0
  1619. data/test/dummy/tmp/cache/assets/D36/220/sprockets%2F6246256acf41d8b8c1551b905db32ddd +0 -0
  1620. data/test/dummy/tmp/cache/assets/D36/230/sprockets%2F3c16319ad1da2566bea8d38ad5a77325 +0 -0
  1621. data/test/dummy/tmp/cache/assets/D36/860/sprockets%2F6e22ec7ea9943cbab166c291b711472a +0 -0
  1622. data/test/dummy/tmp/cache/assets/D36/990/sprockets%2F2508cad8b402c37cc09f6dfa6222c476 +0 -0
  1623. data/test/dummy/tmp/cache/assets/D36/AD0/sprockets%2Fbb238ccd373ef74d05ba241c5f810729 +0 -0
  1624. data/test/dummy/tmp/cache/assets/D36/E50/sprockets%2F43b67afc1a948300095d5f0fc3e41ea7 +0 -0
  1625. data/test/dummy/tmp/cache/assets/D37/190/sprockets%2F1b0a29942409f65198f4dd0b107ddabf +0 -0
  1626. data/test/dummy/tmp/cache/assets/D37/2B0/sprockets%2F3941d2daeba5fdb39206366a69b645a1 +0 -0
  1627. data/test/dummy/tmp/cache/assets/D37/340/sprockets%2F9b14483f8eabb0bb815c1275b05f67a5 +0 -0
  1628. data/test/dummy/tmp/cache/assets/D37/3D0/sprockets%2F8f6dcfb531329d1ea60dc0983f41d033 +0 -0
  1629. data/test/dummy/tmp/cache/assets/D37/780/sprockets%2Fec34f1a3407b6838dd62343a4cf3e1c7 +0 -0
  1630. data/test/dummy/tmp/cache/assets/D37/900/sprockets%2Febe3008d566af1190d271b270e74c9bf +0 -0
  1631. data/test/dummy/tmp/cache/assets/D37/990/sprockets%2F08438adf3e196cbe41a39a50a34d6f43 +0 -0
  1632. data/test/dummy/tmp/cache/assets/D37/B20/sprockets%2F3ce30ec934ca2db7968dc170e2206a66 +0 -0
  1633. data/test/dummy/tmp/cache/assets/D37/DD0/sprockets%2F5596e2d48f78dc5962ee112fe8d9399f +0 -0
  1634. data/test/dummy/tmp/cache/assets/D37/DE0/sprockets%2F92e9570516bd069ed02b6b54be113eea +0 -0
  1635. data/test/dummy/tmp/cache/assets/D37/F00/sprockets%2F18060fd4371473efaa135cea6076ced7 +0 -0
  1636. data/test/dummy/tmp/cache/assets/D37/F00/sprockets%2F390cea618b99119ed0464d6a81b4bb2a +0 -0
  1637. data/test/dummy/tmp/cache/assets/D37/F20/sprockets%2F16df6ed68997bc0c45996cff6797760b +0 -0
  1638. data/test/dummy/tmp/cache/assets/D37/FB0/sprockets%2Fa91fcd2fc7631616b25bb8522a7d45a6 +0 -0
  1639. data/test/dummy/tmp/cache/assets/D38/140/sprockets%2F4079eb6113850c5bb0bf8d1bd29e941d +0 -0
  1640. data/test/dummy/tmp/cache/assets/D38/200/sprockets%2Fbc07f823d9abf9115b066cf67b26c051 +0 -0
  1641. data/test/dummy/tmp/cache/assets/D38/250/sprockets%2F7701084fe6eb8e57c306d1ceeb0015e5 +0 -0
  1642. data/test/dummy/tmp/cache/assets/D38/3A0/sprockets%2F17e2b185c523471dbc3fce74385d34bb +0 -0
  1643. data/test/dummy/tmp/cache/assets/D38/570/sprockets%2F61b134e50dc0762f5fa4b92e68a802fd +0 -0
  1644. data/test/dummy/tmp/cache/assets/D38/5A0/sprockets%2F05c60f19fe5c929377109d0acb6bc1d2 +0 -0
  1645. data/test/dummy/tmp/cache/assets/D38/A90/sprockets%2Fe5d173da497d0b0ec3e1e93f5d472213 +0 -0
  1646. data/test/dummy/tmp/cache/assets/D38/C20/sprockets%2F3d9fb25a1f0def521f89bc71092a4901 +0 -0
  1647. data/test/dummy/tmp/cache/assets/D38/C60/sprockets%2F35b3e86d753c2ace3d20b3fa5459e091 +0 -0
  1648. data/test/dummy/tmp/cache/assets/D38/C80/sprockets%2F0c40fce56bb9b9d01f5112c7974a22f7 +0 -0
  1649. data/test/dummy/tmp/cache/assets/D39/050/sprockets%2F3406276fc15fbf075d244d2b7d5d9ac1 +0 -0
  1650. data/test/dummy/tmp/cache/assets/D39/090/sprockets%2F391807084d2d05fb51a6f857cb3cfb3a +0 -0
  1651. data/test/dummy/tmp/cache/assets/D39/180/sprockets%2F81a53f304a41a21977cecb8ab3568f4e +0 -0
  1652. data/test/dummy/tmp/cache/assets/D39/180/sprockets%2F893de2bf113e285c30b3d74e146fa7a4 +0 -0
  1653. data/test/dummy/tmp/cache/assets/D39/2E0/sprockets%2F9eb5ff48d2360d72d896595f71ef77f9 +0 -0
  1654. data/test/dummy/tmp/cache/assets/D39/440/sprockets%2Fc0b90a4d3bc660db1e865f329364d9b3 +0 -0
  1655. data/test/dummy/tmp/cache/assets/D39/570/sprockets%2F00640f4a599ee9f23b4f2377d1ba0c7b +0 -0
  1656. data/test/dummy/tmp/cache/assets/D39/670/sprockets%2F3ceb02555854acc1e9b950f80d1a6f80 +0 -0
  1657. data/test/dummy/tmp/cache/assets/D39/970/sprockets%2F74cbac51616a63a922f1ea7716e169cd +0 -0
  1658. data/test/dummy/tmp/cache/assets/D39/E60/sprockets%2Fb2b694b416276b2ced81c926c65bcb60 +0 -0
  1659. data/test/dummy/tmp/cache/assets/D39/F30/sprockets%2F1f5d352f97c8a3828dda9014611caed0 +0 -0
  1660. data/test/dummy/tmp/cache/assets/D3A/050/sprockets%2F2da25665d8a0f229b1509e86afec2b80 +0 -0
  1661. data/test/dummy/tmp/cache/assets/D3A/140/sprockets%2F01ee9c5ce6ab0fd011b0584955fe7337 +0 -0
  1662. data/test/dummy/tmp/cache/assets/D3A/340/sprockets%2Ffa4cc89d1060a2e28c618df61b12875c +0 -0
  1663. data/test/dummy/tmp/cache/assets/D3A/480/sprockets%2F2c623b9833b72f21230c6d7b9ec5fa6c +0 -0
  1664. data/test/dummy/tmp/cache/assets/D3A/720/sprockets%2Fb5b3e2f3157e0c52d380fe3f94b96d01 +0 -0
  1665. data/test/dummy/tmp/cache/assets/D3A/8A0/sprockets%2F91b4d0e462a4a841d5a7df5562de72e2 +0 -0
  1666. data/test/dummy/tmp/cache/assets/D3A/9E0/sprockets%2F62f2cbed105a1411ff3e9f2f7167089a +0 -0
  1667. data/test/dummy/tmp/cache/assets/D3A/F00/sprockets%2Fa682b6bc9df4741b972e1f371d70d0c0 +0 -0
  1668. data/test/dummy/tmp/cache/assets/D3B/080/sprockets%2F007cc1999cf3c568c32d35a48bcb343b +0 -0
  1669. data/test/dummy/tmp/cache/assets/D3B/1B0/sprockets%2F3aa8045c2b099ad8a5f37d9523bb6b55 +0 -0
  1670. data/test/dummy/tmp/cache/assets/D3B/2C0/sprockets%2F5f98712fffc4d6ac560ec126317c3d10 +0 -0
  1671. data/test/dummy/tmp/cache/assets/D3B/760/sprockets%2F22c078eb83157c2b38a1a5d6d6aef925 +0 -0
  1672. data/test/dummy/tmp/cache/assets/D3B/8C0/sprockets%2Fe4622c65b4e60b1c9464a7f08ebeb903 +0 -0
  1673. data/test/dummy/tmp/cache/assets/D3B/950/sprockets%2F5d83f8acdd5d02159e10e0532c682e8b +0 -0
  1674. data/test/dummy/tmp/cache/assets/D3B/F70/sprockets%2F20db54bbc3acc7e74e591466a75522c9 +0 -0
  1675. data/test/dummy/tmp/cache/assets/D3C/0D0/sprockets%2F073ca7ba66cd78eaa19534bc574d5317 +0 -0
  1676. data/test/dummy/tmp/cache/assets/D3C/0E0/sprockets%2F143b7730fcb2613d79af709c3a8fa55c +0 -0
  1677. data/test/dummy/tmp/cache/assets/D3C/870/sprockets%2F51d9cef4de63228a0c0a41ac89b49258 +0 -0
  1678. data/test/dummy/tmp/cache/assets/D3C/980/sprockets%2F003e4c454b7d12de5a863b45e94ec47d +0 -0
  1679. data/test/dummy/tmp/cache/assets/D3C/9B0/sprockets%2Fee4a76b790fba505cf9b577321118cb3 +0 -0
  1680. data/test/dummy/tmp/cache/assets/D3C/A80/sprockets%2Fb1b8fb435100acde83b7794667d0f55b +0 -0
  1681. data/test/dummy/tmp/cache/assets/D3C/C20/sprockets%2F36ebf6fae0ed08d0366818a4e63830d1 +0 -0
  1682. data/test/dummy/tmp/cache/assets/D3C/D60/sprockets%2Fc7ba7158b9c4d176fd4c0230069ea5d6 +0 -0
  1683. data/test/dummy/tmp/cache/assets/D3C/FD0/sprockets%2F4b44f3268c024ed9995b52ad30c3c8bc +0 -0
  1684. data/test/dummy/tmp/cache/assets/D3C/FE0/sprockets%2F24f6d543983043d0d1feefacb090196e +0 -0
  1685. data/test/dummy/tmp/cache/assets/D3D/210/sprockets%2F28a6f4bdaf689094b6a09121dbbe1476 +0 -0
  1686. data/test/dummy/tmp/cache/assets/D3D/970/sprockets%2F8c3fa39c04a27661633af6952dace4e3 +0 -0
  1687. data/test/dummy/tmp/cache/assets/D3D/C10/sprockets%2F48581f8b1580d984413b3fab2dd9bcb0 +0 -0
  1688. data/test/dummy/tmp/cache/assets/D3D/C30/sprockets%2Fc5213c2edff881f6715b82f148cd007b +0 -0
  1689. data/test/dummy/tmp/cache/assets/D3D/D80/sprockets%2F9c0cbc841bf606ddec0963173c2894a4 +0 -0
  1690. data/test/dummy/tmp/cache/assets/D3E/0B0/sprockets%2Fc1186ea6268e63a1f7a660dd1768bd3b +0 -0
  1691. data/test/dummy/tmp/cache/assets/D3E/240/sprockets%2Fd40ed280ab0708b0e619f709eb68c9c4 +0 -0
  1692. data/test/dummy/tmp/cache/assets/D3E/2B0/sprockets%2F4d280812e44d52559f57e2afdd1bca56 +0 -0
  1693. data/test/dummy/tmp/cache/assets/D3E/500/sprockets%2Fe0d19b79ad67649fb3c1cf715a11a393 +0 -0
  1694. data/test/dummy/tmp/cache/assets/D3E/520/sprockets%2F4765d7ea3ba6a5d16231c29de0d958c4 +0 -0
  1695. data/test/dummy/tmp/cache/assets/D3E/880/sprockets%2Fb745e535cb3165fc1882efcd903ed034 +0 -0
  1696. data/test/dummy/tmp/cache/assets/D3E/A00/sprockets%2F5f0492202676cecb4d3ffa49d610d65e +0 -0
  1697. data/test/dummy/tmp/cache/assets/D3E/A50/sprockets%2F1b32762a6614ecff6b77934ff9b0a5a1 +0 -0
  1698. data/test/dummy/tmp/cache/assets/D3E/AD0/sprockets%2F933941a230bea56ca69e1df56d5f07f2 +0 -0
  1699. data/test/dummy/tmp/cache/assets/D3E/ED0/sprockets%2F3d738409aa99ac466e77d0aeb2cd6150 +0 -0
  1700. data/test/dummy/tmp/cache/assets/D3E/F00/sprockets%2F8f159505cdb7a6e1170b91ff5c2c18e3 +0 -0
  1701. data/test/dummy/tmp/cache/assets/D3F/280/sprockets%2F13e050b7a477cc5fd1ee4083bd599e71 +0 -0
  1702. data/test/dummy/tmp/cache/assets/D3F/3E0/sprockets%2Fef152ffc3b86506be616e326f20c27f5 +0 -0
  1703. data/test/dummy/tmp/cache/assets/D3F/570/sprockets%2Fa33a6f2619d9e53bad331f8e04b738a9 +0 -0
  1704. data/test/dummy/tmp/cache/assets/D3F/590/sprockets%2F94fabee73d36410bdd216a2547f99b16 +0 -0
  1705. data/test/dummy/tmp/cache/assets/D3F/5E0/sprockets%2Fcbf1d7fac4114ec9059f87f2a0936342 +0 -0
  1706. data/test/dummy/tmp/cache/assets/D3F/B90/sprockets%2Fb98ad8b0651a07fa27790a1cc977be16 +0 -0
  1707. data/test/dummy/tmp/cache/assets/D40/2A0/sprockets%2F6e3ea5fbeff0a58c3782e181e5430472 +0 -0
  1708. data/test/dummy/tmp/cache/assets/D40/350/sprockets%2Fb8d0e083f40a26ff64f605285045fcef +0 -0
  1709. data/test/dummy/tmp/cache/assets/D40/740/sprockets%2F263bd7c97b6f2a3f3c82c6c1d6a41873 +0 -0
  1710. data/test/dummy/tmp/cache/assets/D40/810/sprockets%2F6003489e39c622ea2527b9ec61e7ecbb +0 -0
  1711. data/test/dummy/tmp/cache/assets/D40/880/sprockets%2F7813c7a2e234b7d2dcca77bff3315587 +0 -0
  1712. data/test/dummy/tmp/cache/assets/D40/9A0/sprockets%2Fb09fd34326b7d7a238e247c9f2aa2b87 +0 -0
  1713. data/test/dummy/tmp/cache/assets/D40/D20/sprockets%2F47e105703f9f1ea7c8da4508b7763cca +0 -0
  1714. data/test/dummy/tmp/cache/assets/D40/F10/sprockets%2F8149df5844bbe3a8205c469a29b3c2eb +0 -0
  1715. data/test/dummy/tmp/cache/assets/D41/410/sprockets%2F22edb903fc08a47f75beb47d5e096361 +0 -0
  1716. data/test/dummy/tmp/cache/assets/D41/540/sprockets%2Ff05b4b5481ce50788dd254f33bd77aa7 +0 -0
  1717. data/test/dummy/tmp/cache/assets/D41/5E0/sprockets%2F79d1b0f2ef48f72114cfc1e7189f41c1 +0 -0
  1718. data/test/dummy/tmp/cache/assets/D41/C00/sprockets%2F08791f8723ba99285dc032a1febcfe05 +0 -0
  1719. data/test/dummy/tmp/cache/assets/D41/E30/sprockets%2F0a50215c4d6fb949f17fa6c69c05e4e5 +0 -0
  1720. data/test/dummy/tmp/cache/assets/D41/F00/sprockets%2Ff9b62079e2c23fb68ec4e34b2f52921b +0 -0
  1721. data/test/dummy/tmp/cache/assets/D42/0C0/sprockets%2Fae17be1f5b63976f45fdb0d45e240287 +0 -0
  1722. data/test/dummy/tmp/cache/assets/D42/180/sprockets%2F9f136ad5150d873084dfc8fc4ef20e52 +0 -0
  1723. data/test/dummy/tmp/cache/assets/D42/6C0/sprockets%2Feefb3bf65b9531ae414d60991a54a568 +0 -0
  1724. data/test/dummy/tmp/cache/assets/D42/740/sprockets%2Fd671638ace8452e53de83b0b8f21dc73 +0 -0
  1725. data/test/dummy/tmp/cache/assets/D42/AC0/sprockets%2Fc5ae257ce91660cf1d694bd7f283180b +0 -0
  1726. data/test/dummy/tmp/cache/assets/D43/010/sprockets%2F99f2034c5afbf60c8d6d7a9b52615b80 +0 -0
  1727. data/test/dummy/tmp/cache/assets/D43/180/sprockets%2F77aa2f22b06e86bde4652662f7f3fb44 +0 -0
  1728. data/test/dummy/tmp/cache/assets/D43/3C0/sprockets%2F0bbea991fc5823892656b5cf52a26bf3 +0 -0
  1729. data/test/dummy/tmp/cache/assets/D43/770/sprockets%2F54f1826aad6b2ffd39e74741a4567a1f +0 -0
  1730. data/test/dummy/tmp/cache/assets/D44/2B0/sprockets%2F3ad39d2fc61e52af9f763e55526ae811 +0 -0
  1731. data/test/dummy/tmp/cache/assets/D44/410/sprockets%2Faff2c973a38dda06b82fe9250757c146 +0 -0
  1732. data/test/dummy/tmp/cache/assets/D44/500/sprockets%2F21a29ea628b20f49e94865c60bcb8dd7 +0 -0
  1733. data/test/dummy/tmp/cache/assets/D44/610/sprockets%2F015d093ebf54e2bd91f81f7c4c85a098 +0 -0
  1734. data/test/dummy/tmp/cache/assets/D44/740/sprockets%2F3ab786df73a67cab584b9e533f634d11 +0 -0
  1735. data/test/dummy/tmp/cache/assets/D44/840/sprockets%2F9fbf3c57246341509cc2b79b1ca4f9c6 +0 -0
  1736. data/test/dummy/tmp/cache/assets/D44/970/sprockets%2F648de6a616d5c62248ffe00859dc0c1e +0 -0
  1737. data/test/dummy/tmp/cache/assets/D44/CF0/sprockets%2F612899c13686e28debad09c5df15c2d1 +0 -0
  1738. data/test/dummy/tmp/cache/assets/D45/0C0/sprockets%2F516fc9d887a1ad9640352f26fcd2a90e +0 -0
  1739. data/test/dummy/tmp/cache/assets/D45/3D0/sprockets%2F55e171c4e73a7d6485c6ba5c1663afe8 +0 -0
  1740. data/test/dummy/tmp/cache/assets/D45/630/sprockets%2F4057a5865c88d6bff9e4ff43f50a1b10 +0 -0
  1741. data/test/dummy/tmp/cache/assets/D45/7F0/sprockets%2F204e7166ba9740fdd44ecf84ff4d4470 +0 -0
  1742. data/test/dummy/tmp/cache/assets/D45/BD0/sprockets%2Fbc5657521c68a4d1a48decf5649365da +0 -0
  1743. data/test/dummy/tmp/cache/assets/D46/0B0/sprockets%2Fe25e1919f53af4fe48caa29a4039719c +0 -0
  1744. data/test/dummy/tmp/cache/assets/D46/2A0/sprockets%2F298292c84f0e15f90bfc6aa75cd039f3 +0 -0
  1745. data/test/dummy/tmp/cache/assets/D46/5B0/sprockets%2F5d006b6678e543be4caf73ac762d755f +0 -0
  1746. data/test/dummy/tmp/cache/assets/D46/610/sprockets%2F0f7fe1a1c4c86f26d477a1a4f4c88906 +0 -0
  1747. data/test/dummy/tmp/cache/assets/D46/6D0/sprockets%2F5c5c2ed4c5b6ef33d157f955d7e41902 +0 -0
  1748. data/test/dummy/tmp/cache/assets/D46/890/sprockets%2F5ca5e9e8272bf7e14e20f4ea81078d91 +0 -0
  1749. data/test/dummy/tmp/cache/assets/D46/910/sprockets%2F8953f1c40aae7d8a9a7196e34b3148de +0 -0
  1750. data/test/dummy/tmp/cache/assets/D46/A00/sprockets%2Fd15c6cb08ebf8797713e952ab6f154d1 +0 -0
  1751. data/test/dummy/tmp/cache/assets/D46/C30/sprockets%2Ff5ac37c7c007684e128ebb4c387f8b09 +0 -0
  1752. data/test/dummy/tmp/cache/assets/D46/D20/sprockets%2Fafcff74e0c596d4014caf09274253e89 +0 -0
  1753. data/test/dummy/tmp/cache/assets/D46/E30/sprockets%2F2743604000c3caab937a02accd3c71bb +0 -0
  1754. data/test/dummy/tmp/cache/assets/D46/E90/sprockets%2F2c2cf7b08d87d19e01573e9c0d972af5 +0 -0
  1755. data/test/dummy/tmp/cache/assets/D47/250/sprockets%2Ff454a48261a92c98e55a9b2e9acff430 +0 -0
  1756. data/test/dummy/tmp/cache/assets/D47/2E0/sprockets%2F704ecaf274e48a7580b3aae979a97c50 +0 -0
  1757. data/test/dummy/tmp/cache/assets/D47/3B0/sprockets%2F7ff55581118e0181ecf59a7a5cb3cf48 +0 -0
  1758. data/test/dummy/tmp/cache/assets/D47/5C0/sprockets%2F68f9e6a027bd2b7aeb7751454d7af247 +0 -0
  1759. data/test/dummy/tmp/cache/assets/D47/A40/sprockets%2F8f06e434276a6eced1522deb9d9d8027 +0 -0
  1760. data/test/dummy/tmp/cache/assets/D47/D90/sprockets%2Fe1c556e7d92e1d2b512e547746d73bef +0 -0
  1761. data/test/dummy/tmp/cache/assets/D47/F30/sprockets%2F95b3748e9aae1797d3cb5cc720c1f266 +0 -0
  1762. data/test/dummy/tmp/cache/assets/D48/0B0/sprockets%2F30a04c89c989d773b306c21bf8d64def +0 -0
  1763. data/test/dummy/tmp/cache/assets/D48/140/sprockets%2Fe57106ab8293a7f3d776e690bbd447dc +0 -0
  1764. data/test/dummy/tmp/cache/assets/D48/180/sprockets%2F760b662df9e52cdf625807f2d5a51a9e +0 -0
  1765. data/test/dummy/tmp/cache/assets/D48/210/sprockets%2F32168c495dbc6784b0f398dc9a8cae12 +0 -0
  1766. data/test/dummy/tmp/cache/assets/D48/2D0/sprockets%2F0be50e01c1aee3d2e4b1167bc704b150 +0 -0
  1767. data/test/dummy/tmp/cache/assets/D48/3B0/sprockets%2Fd8418ab89f1d64859a83ed83bde050a3 +0 -0
  1768. data/test/dummy/tmp/cache/assets/D48/3F0/sprockets%2F95af62f8399e2434dddaa8e622073b3f +0 -0
  1769. data/test/dummy/tmp/cache/assets/D48/610/sprockets%2F04cb90fbd5ec4f92106f6268f2987b2e +0 -0
  1770. data/test/dummy/tmp/cache/assets/D48/F10/sprockets%2Fb3111df9478d4ad38897db3a4fb286c5 +0 -0
  1771. data/test/dummy/tmp/cache/assets/D48/F70/sprockets%2F773649806672f43eb7429cdfac0febb1 +0 -0
  1772. data/test/dummy/tmp/cache/assets/D49/000/sprockets%2Fd94896eee0f35a0a966393090fcc3fc1 +0 -0
  1773. data/test/dummy/tmp/cache/assets/D49/370/sprockets%2F56bf43f01cedd6c95f90f37cd5331757 +0 -0
  1774. data/test/dummy/tmp/cache/assets/D49/D70/sprockets%2Fb9e7a4cd11a1fbd665187834e795b44f +0 -0
  1775. data/test/dummy/tmp/cache/assets/D49/F00/sprockets%2F6a89ca8c96f50072b95d70df61cc7b80 +0 -0
  1776. data/test/dummy/tmp/cache/assets/D4A/0B0/sprockets%2Fa339d447533dfdab55192ed95e5e91c6 +0 -0
  1777. data/test/dummy/tmp/cache/assets/D4A/580/sprockets%2F9ec98f3f247fb14bf451730449d1cb7e +0 -0
  1778. data/test/dummy/tmp/cache/assets/D4A/650/sprockets%2F824d6a94276cdd80a615348f4cb7dfe5 +0 -0
  1779. data/test/dummy/tmp/cache/assets/D4A/9C0/sprockets%2Fb33796ae4af40993b4e8c7ef324f06f3 +0 -0
  1780. data/test/dummy/tmp/cache/assets/D4A/B40/sprockets%2Fbf77934b4ad18295b9eae7a5f32c9316 +0 -0
  1781. data/test/dummy/tmp/cache/assets/D4A/BF0/sprockets%2Fc564d4cc768137c7f5a3ffad2166684c +0 -0
  1782. data/test/dummy/tmp/cache/assets/D4A/CE0/sprockets%2Fc6f977bde89d1a1910507fa495290bcf +0 -0
  1783. data/test/dummy/tmp/cache/assets/D4A/EF0/sprockets%2Fb6b3aa8642c8fa584f0376d4648d7c8b +0 -0
  1784. data/test/dummy/tmp/cache/assets/D4B/3C0/sprockets%2F26891ba685ff4c6f9d4f2f1c6242f03f +0 -0
  1785. data/test/dummy/tmp/cache/assets/D4B/430/sprockets%2F3717d58544de674bf0f87b1fd67a45ac +0 -0
  1786. data/test/dummy/tmp/cache/assets/D4B/440/sprockets%2F0f661ce7dd63adff2444327c83c5f678 +0 -0
  1787. data/test/dummy/tmp/cache/assets/D4B/4F0/sprockets%2Fd57bb48b0c6ea8859a4fda0d88592624 +0 -0
  1788. data/test/dummy/tmp/cache/assets/D4B/920/sprockets%2F3f9aa27e107a5a864ed768825d47bbe7 +0 -0
  1789. data/test/dummy/tmp/cache/assets/D4B/CE0/sprockets%2F2e96cfae6d4a435e37970c055ac589e4 +0 -0
  1790. data/test/dummy/tmp/cache/assets/D4B/D30/sprockets%2Ff7549dc58e2b8520272e8db83ea6ac65 +0 -0
  1791. data/test/dummy/tmp/cache/assets/D4B/EB0/sprockets%2F90e1f184458ccb432d9fddb8994423af +0 -0
  1792. data/test/dummy/tmp/cache/assets/D4B/F30/sprockets%2F87e2067c8a98c80860ca18525aefaff4 +0 -0
  1793. data/test/dummy/tmp/cache/assets/D4C/B10/sprockets%2F8885160be6866e27b6e5fa2c49a4c5da +0 -0
  1794. data/test/dummy/tmp/cache/assets/D4D/6B0/sprockets%2F42f643654eb2b4737e87decb738fc6a5 +0 -0
  1795. data/test/dummy/tmp/cache/assets/D4D/8F0/sprockets%2F81f8c1d4e17c7829dbdef5171e84d561 +0 -0
  1796. data/test/dummy/tmp/cache/assets/D4E/0F0/sprockets%2F1ec59da25b29654f5ce86a66c999ba22 +0 -0
  1797. data/test/dummy/tmp/cache/assets/D4E/110/sprockets%2Fcf0a2ac2c576aa71029323062dfb5a1c +0 -0
  1798. data/test/dummy/tmp/cache/assets/D4E/4C0/sprockets%2Ff1bec818b617e964d6a5f1ef8f339540 +0 -0
  1799. data/test/dummy/tmp/cache/assets/D4E/8E0/sprockets%2F0d70620be0274ccaa6743a0b2092bded +0 -0
  1800. data/test/dummy/tmp/cache/assets/D4E/DD0/sprockets%2F287ba626c4f5b4639b2890e9d8f5eb2c +0 -0
  1801. data/test/dummy/tmp/cache/assets/D4E/DE0/sprockets%2F382aafa1acb033c709e7789d9878bd59 +0 -0
  1802. data/test/dummy/tmp/cache/assets/D4F/360/sprockets%2F91ecbdd16b46d37e46b95d95347b68f1 +0 -0
  1803. data/test/dummy/tmp/cache/assets/D4F/400/sprockets%2Fa39424f3692471f84bf5f4ca5d3f92ff +0 -0
  1804. data/test/dummy/tmp/cache/assets/D4F/470/sprockets%2F3370d5f56c376be2ee02890a6a7f9f9f +0 -0
  1805. data/test/dummy/tmp/cache/assets/D4F/A60/sprockets%2F7e7b2a309fe6c9274de094b52d7399cc +0 -0
  1806. data/test/dummy/tmp/cache/assets/D4F/AD0/sprockets%2F4940ada070aac964e8964c9429c9ff7c +0 -0
  1807. data/test/dummy/tmp/cache/assets/D4F/AF0/sprockets%2F7c58e3c84ea677f3767d4e2b44d02c6f +0 -0
  1808. data/test/dummy/tmp/cache/assets/D4F/D40/sprockets%2Fc00fd09b0c72bd4124b2509ccab6d252 +0 -0
  1809. data/test/dummy/tmp/cache/assets/D50/1C0/sprockets%2Ff3d4c379e548c6a635cf4c71959be1c5 +0 -0
  1810. data/test/dummy/tmp/cache/assets/D50/3F0/sprockets%2F10bbd58b768f6ca68f89872d5ca21c59 +0 -0
  1811. data/test/dummy/tmp/cache/assets/D50/9E0/sprockets%2F8a6f447c87a7b29a5cfe7f6a631563d5 +0 -0
  1812. data/test/dummy/tmp/cache/assets/D50/BB0/sprockets%2F4544b5c9d81fdc942637568eefe0a17f +0 -0
  1813. data/test/dummy/tmp/cache/assets/D50/DE0/sprockets%2F4fb7cab2cc42720412e2831b096bcac0 +0 -0
  1814. data/test/dummy/tmp/cache/assets/D50/EB0/sprockets%2Fb1701915ee2cfa8987fa97f45d757ca3 +0 -0
  1815. data/test/dummy/tmp/cache/assets/D50/F40/sprockets%2F0a264e8ef7b828ffbc499e545d1d3554 +0 -0
  1816. data/test/dummy/tmp/cache/assets/D51/0C0/sprockets%2F4c68994d9a5d43eeaa94f0bf98c35162 +0 -0
  1817. data/test/dummy/tmp/cache/assets/D51/5A0/sprockets%2F5f73f98cef4232f98131ab3c913f7e9c +0 -0
  1818. data/test/dummy/tmp/cache/assets/D51/6A0/sprockets%2F46a61332ec4d9db317f5981f96f5e4ef +0 -0
  1819. data/test/dummy/tmp/cache/assets/D51/860/sprockets%2F0559a601f98ad9e14ad85d9e9866bc3b +0 -0
  1820. data/test/dummy/tmp/cache/assets/D51/A80/sprockets%2F0e4ebc3cb443fe89e96507429a729ed8 +0 -0
  1821. data/test/dummy/tmp/cache/assets/D51/EC0/sprockets%2F741e01ffc618da7e6ee5a5f3945c5499 +0 -0
  1822. data/test/dummy/tmp/cache/assets/D51/FD0/sprockets%2F8f7fe2bcf6a3682bfe40832d8d258098 +0 -0
  1823. data/test/dummy/tmp/cache/assets/D52/210/sprockets%2F0c6c258182a5a7ee4fb499eff8545a68 +0 -0
  1824. data/test/dummy/tmp/cache/assets/D52/3A0/sprockets%2F1f04f799cc97cceef1c984f78120441f +0 -0
  1825. data/test/dummy/tmp/cache/assets/D52/7B0/sprockets%2F7222c931fe78519f9cc9ccf345e6b7e1 +0 -0
  1826. data/test/dummy/tmp/cache/assets/D52/C10/sprockets%2Fdf92f8b92422d0c6196e986b0fa84d8d +0 -0
  1827. data/test/dummy/tmp/cache/assets/D52/D80/sprockets%2F5138aadb7a52a3ad1d4af165703360bd +0 -0
  1828. data/test/dummy/tmp/cache/assets/D53/070/sprockets%2F29887b939a9adbb8873cfb30b56c3e56 +0 -0
  1829. data/test/dummy/tmp/cache/assets/D53/0B0/sprockets%2F3ce0380426fadc73b3e4b21a4b305d6a +0 -0
  1830. data/test/dummy/tmp/cache/assets/D54/580/sprockets%2F69ee693f2337e2f1728399dcafe06b6c +0 -0
  1831. data/test/dummy/tmp/cache/assets/D54/590/sprockets%2F8a3d4f1829a4de0f63886028ef75efe6 +0 -0
  1832. data/test/dummy/tmp/cache/assets/D54/6D0/sprockets%2Fb6963f0e4a080df49a6956dff72591ff +0 -0
  1833. data/test/dummy/tmp/cache/assets/D54/6F0/sprockets%2F1d0a638a1dd4b3b5810da3be81d02e29 +0 -0
  1834. data/test/dummy/tmp/cache/assets/D54/860/sprockets%2F1f59eedd506ee9d285b6c631f87e2348 +0 -0
  1835. data/test/dummy/tmp/cache/assets/D54/D40/sprockets%2F8bf7c2fe4d4a3b4379ce3509ce827598 +0 -0
  1836. data/test/dummy/tmp/cache/assets/D54/E60/sprockets%2Fc730209ccf9b67f94d9da6252738dff6 +0 -0
  1837. data/test/dummy/tmp/cache/assets/D55/050/sprockets%2Ff8a1519f64f695a48b04fc494d7fce19 +0 -0
  1838. data/test/dummy/tmp/cache/assets/D55/3B0/sprockets%2F44413599bec29f9eef497bec466b91a3 +0 -0
  1839. data/test/dummy/tmp/cache/assets/D55/4E0/sprockets%2F5a973d4e0e4688e594eb63cfa5f2649c +0 -0
  1840. data/test/dummy/tmp/cache/assets/D55/880/sprockets%2F34928d8459d36e97d1eded237f5c3bf3 +0 -0
  1841. data/test/dummy/tmp/cache/assets/D55/AB0/sprockets%2F78cc27be14be303abe1e433ff002271b +0 -0
  1842. data/test/dummy/tmp/cache/assets/D55/BD0/sprockets%2Fb0f1d009a6c45a8184050ccaad0f625f +0 -0
  1843. data/test/dummy/tmp/cache/assets/D57/5C0/sprockets%2F2da710dd9256d942b03cfcac3602ca16 +0 -0
  1844. data/test/dummy/tmp/cache/assets/D57/730/sprockets%2F40eb1d78a46bf0f79687cf21d959ee85 +0 -0
  1845. data/test/dummy/tmp/cache/assets/D57/AC0/sprockets%2F33ea84ea0fb3021aa76691135ac4de0f +0 -0
  1846. data/test/dummy/tmp/cache/assets/D57/D80/sprockets%2F5ab6d5ee29c4c9d4e9652b8c50488a99 +0 -0
  1847. data/test/dummy/tmp/cache/assets/D57/D90/sprockets%2F263b732a422b1beaac8e30dbda198076 +0 -0
  1848. data/test/dummy/tmp/cache/assets/D58/8C0/sprockets%2F513d20cb6d72b9f39bbf979ff682d696 +0 -0
  1849. data/test/dummy/tmp/cache/assets/D58/DA0/sprockets%2F21200e25aa4eb27fe8bc2d5a25a874f0 +0 -0
  1850. data/test/dummy/tmp/cache/assets/D59/110/sprockets%2F2ec0c121af2f7eb46d4a164c3fd75032 +0 -0
  1851. data/test/dummy/tmp/cache/assets/D59/930/sprockets%2F220a1dbf7192adca0582f12665ceba47 +0 -0
  1852. data/test/dummy/tmp/cache/assets/D59/A10/sprockets%2Fb5b42410db439e79bbbc0dd4413c181d +0 -0
  1853. data/test/dummy/tmp/cache/assets/D59/C80/sprockets%2Fe8f792ea1f2a5de6742e7df3856494f4 +0 -0
  1854. data/test/dummy/tmp/cache/assets/D59/F50/sprockets%2F9f2c7e737ba13a57c6ff589292d86fa7 +0 -0
  1855. data/test/dummy/tmp/cache/assets/D5A/430/sprockets%2Fac7b33b9eb700ba71fa400a4552cf495 +0 -0
  1856. data/test/dummy/tmp/cache/assets/D5B/130/sprockets%2Fcef83ae8e7e6449d6eca77c857293055 +0 -0
  1857. data/test/dummy/tmp/cache/assets/D5B/260/sprockets%2F6879e30caa1f296ed0c48e8469989fbb +0 -0
  1858. data/test/dummy/tmp/cache/assets/D5B/9C0/sprockets%2Fca567b8e449bf9f055ae5bd9e7593359 +0 -0
  1859. data/test/dummy/tmp/cache/assets/D5B/BF0/sprockets%2F333e7d5ac1b4a512eee0f75f3a253b60 +0 -0
  1860. data/test/dummy/tmp/cache/assets/D5B/CD0/sprockets%2F6d8f1d103ecb952adc2baa442720692b +0 -0
  1861. data/test/dummy/tmp/cache/assets/D5B/E70/sprockets%2F1d7605e68cbf7122108b1dbbe2a24a6e +0 -0
  1862. data/test/dummy/tmp/cache/assets/D5C/060/sprockets%2F37c94f0ca9c109c8e7ec4698883eaf49 +0 -0
  1863. data/test/dummy/tmp/cache/assets/D5C/370/sprockets%2Ff6f72925d6c49e05e66faa4765fe8c57 +0 -0
  1864. data/test/dummy/tmp/cache/assets/D5C/430/sprockets%2F957422a30de2a26d2dae2def5c2b9320 +0 -0
  1865. data/test/dummy/tmp/cache/assets/D5C/7C0/sprockets%2F15ecba65509f6d4dc40d0d30b132bf39 +0 -0
  1866. data/test/dummy/tmp/cache/assets/D5C/AF0/sprockets%2Fd78d099f5f2b643966ae56fb9c94b38a +0 -0
  1867. data/test/dummy/tmp/cache/assets/D5C/F90/sprockets%2Fee2c3661a4544caac83916b15db071ae +0 -0
  1868. data/test/dummy/tmp/cache/assets/D5D/3B0/sprockets%2Fd5471e7133cf16e6a11bbee20f2a0b79 +0 -0
  1869. data/test/dummy/tmp/cache/assets/D5D/6A0/sprockets%2F6f3ce4b9a631e869f04f1f88e4f6783f +0 -0
  1870. data/test/dummy/tmp/cache/assets/D5D/6F0/sprockets%2F4d0b9aae508a3e10ecdd0b2f36283727 +0 -0
  1871. data/test/dummy/tmp/cache/assets/D5D/E70/sprockets%2F14c8120abdb1d9e80d0e71f7553aa84a +0 -0
  1872. data/test/dummy/tmp/cache/assets/D5E/470/sprockets%2Fed21b8ab1bd015d1eb827132abe96765 +0 -0
  1873. data/test/dummy/tmp/cache/assets/D5E/540/sprockets%2F989fc9956e6f8db3448a45ffca0e2834 +0 -0
  1874. data/test/dummy/tmp/cache/assets/D5E/7F0/sprockets%2F1ce2528ff4137bc28b310d70192ccdaf +0 -0
  1875. data/test/dummy/tmp/cache/assets/D5E/F40/sprockets%2F796de867fd6629cdddac27c884f77042 +0 -0
  1876. data/test/dummy/tmp/cache/assets/D5E/FF0/sprockets%2F16a29a82bcd0a5fc4eeba77012b60594 +0 -0
  1877. data/test/dummy/tmp/cache/assets/D5F/860/sprockets%2F2d0c3d64d14c238086a2ea4be4b15fd8 +0 -0
  1878. data/test/dummy/tmp/cache/assets/D5F/A40/sprockets%2F210ff6cd4eb7b47969889b99ed462cf5 +0 -0
  1879. data/test/dummy/tmp/cache/assets/D5F/DE0/sprockets%2Fe3e9357da07a01a5624f34f90b4cac2c +0 -0
  1880. data/test/dummy/tmp/cache/assets/D5F/F10/sprockets%2F1561addd40bda45d5c5c66f106f0157e +0 -0
  1881. data/test/dummy/tmp/cache/assets/D60/150/sprockets%2F43ad144a2b48d3a43acf3c8a26f5d393 +0 -0
  1882. data/test/dummy/tmp/cache/assets/D60/550/sprockets%2F7f69dde6b042535a50e04be0ef504db0 +0 -0
  1883. data/test/dummy/tmp/cache/assets/D60/760/sprockets%2Ff2488acab1571bcae10c7c23d5f64606 +0 -0
  1884. data/test/dummy/tmp/cache/assets/D60/7F0/sprockets%2F1b74fae303ee4342b07f231ccb853b9e +0 -0
  1885. data/test/dummy/tmp/cache/assets/D61/0A0/sprockets%2F379b37d8874599b67afd82ecfd3c892a +0 -0
  1886. data/test/dummy/tmp/cache/assets/D61/1E0/sprockets%2F2525c7f31cf412e0259a1feb68dc2c2c +0 -0
  1887. data/test/dummy/tmp/cache/assets/D61/290/sprockets%2Fc9f8e96feacec3e16f533698428348e7 +0 -0
  1888. data/test/dummy/tmp/cache/assets/D61/500/sprockets%2F2d4aaa4e27206670c2f90c48bfc33c6d +0 -0
  1889. data/test/dummy/tmp/cache/assets/D61/550/sprockets%2Fad72362d0158ce06f1d5b3bb95a3c18e +0 -0
  1890. data/test/dummy/tmp/cache/assets/D61/590/sprockets%2F10b1195e9b551779d1a1f41ac5dde5ab +0 -0
  1891. data/test/dummy/tmp/cache/assets/D61/A70/sprockets%2F80d5badad75248c606accd813d27235a +0 -0
  1892. data/test/dummy/tmp/cache/assets/D62/AC0/sprockets%2Fe923a17641d1cdb9a430439e4dabd2f4 +0 -0
  1893. data/test/dummy/tmp/cache/assets/D62/D00/sprockets%2Fbb112cb101c984bf728881d13ddc7d3d +0 -0
  1894. data/test/dummy/tmp/cache/assets/D62/D60/sprockets%2F445fcd788beb7311a3e01c084554cacb +0 -0
  1895. data/test/dummy/tmp/cache/assets/D62/E40/sprockets%2F20ec5093a0bdf38b6a0dc4136729f5dd +0 -0
  1896. data/test/dummy/tmp/cache/assets/D62/E70/sprockets%2F0777c54fb10d608e142dbdc660fae80a +0 -0
  1897. data/test/dummy/tmp/cache/assets/D63/190/sprockets%2Fbd70e9419cd66b14aa1bb3b0d616e783 +0 -0
  1898. data/test/dummy/tmp/cache/assets/D63/2C0/sprockets%2Fb29b4f22c11cdf82445a279ce2b3e08b +0 -0
  1899. data/test/dummy/tmp/cache/assets/D63/580/sprockets%2F03cf42442c9a0f798d2e3bb265b6dca1 +0 -0
  1900. data/test/dummy/tmp/cache/assets/D63/5B0/sprockets%2Fde6d630c9345ce06a5bf31c3f2d2a482 +0 -0
  1901. data/test/dummy/tmp/cache/assets/D63/C60/sprockets%2F232faf0ad8939d4700feb135e3b22bf6 +0 -0
  1902. data/test/dummy/tmp/cache/assets/D63/CF0/sprockets%2Fc2365f12ddb086ab82c1855e8a11e5ea +0 -0
  1903. data/test/dummy/tmp/cache/assets/D63/E80/sprockets%2F73ef5a22222bb8eb6077a1fa57da08d5 +0 -0
  1904. data/test/dummy/tmp/cache/assets/D64/0E0/sprockets%2Fa2d2eccd78b41ae522541165640efed7 +0 -0
  1905. data/test/dummy/tmp/cache/assets/D64/0F0/sprockets%2F4dab4a89380cac7b55ffc425c247103d +0 -0
  1906. data/test/dummy/tmp/cache/assets/D64/200/sprockets%2F76e44dde04df41070e90db2d4f3de232 +0 -0
  1907. data/test/dummy/tmp/cache/assets/D64/2C0/sprockets%2Fbe3e2f353562d4e253db14b4942cc9ba +0 -0
  1908. data/test/dummy/tmp/cache/assets/D64/3E0/sprockets%2F0a6e1743aaa90ed05f89e69db02fd042 +0 -0
  1909. data/test/dummy/tmp/cache/assets/D64/470/sprockets%2F64fc35191d5a0ea77ee0a5b16b1c9f51 +0 -0
  1910. data/test/dummy/tmp/cache/assets/D64/EC0/sprockets%2Febd1142b05d915ae2188315d4e6bee9a +0 -0
  1911. data/test/dummy/tmp/cache/assets/D64/FB0/sprockets%2F0a322e44c856469dc2aac61b4e8ac0f8 +0 -0
  1912. data/test/dummy/tmp/cache/assets/D65/0D0/sprockets%2F67a08a07bbdfa66813323ebdf632f4d2 +0 -0
  1913. data/test/dummy/tmp/cache/assets/D65/390/sprockets%2F5a8932bfeba07d1607613f62bf1b9e1b +0 -0
  1914. data/test/dummy/tmp/cache/assets/D65/760/sprockets%2F2a2bda980cf5457127a83de17ea4c3c4 +0 -0
  1915. data/test/dummy/tmp/cache/assets/D65/790/sprockets%2F2af45a2e4693e5d26d2aab1606f3a4f8 +0 -0
  1916. data/test/dummy/tmp/cache/assets/D65/7A0/sprockets%2F4e227e9ffe7b3dab051940801cd2fb42 +0 -0
  1917. data/test/dummy/tmp/cache/assets/D65/AB0/sprockets%2F6e53b6197c5eb11f5bc0ca1bf430b589 +0 -0
  1918. data/test/dummy/tmp/cache/assets/D65/F00/sprockets%2F3e71c0da28fc232d8817c52481ddc4cb +0 -0
  1919. data/test/dummy/tmp/cache/assets/D66/150/sprockets%2Fe66cc7f2bdbbc467b20a58f00812a936 +0 -0
  1920. data/test/dummy/tmp/cache/assets/D66/580/sprockets%2F6a12a93be78ba78bc1b4d8a532392da5 +0 -0
  1921. data/test/dummy/tmp/cache/assets/D66/610/sprockets%2Fcb8fee59849ef8f859aa853d091e2938 +0 -0
  1922. data/test/dummy/tmp/cache/assets/D66/680/sprockets%2Feac220c53d6b904767a143f4fd1f66cb +0 -0
  1923. data/test/dummy/tmp/cache/assets/D66/AA0/sprockets%2Fec6cda6a541188dc413a263fd6424c7c +0 -0
  1924. data/test/dummy/tmp/cache/assets/D66/B30/sprockets%2F6992569d033bfa4f4beb0af2132ce4b5 +0 -0
  1925. data/test/dummy/tmp/cache/assets/D66/BD0/sprockets%2F6a4c066ff4c7ce5e545a7c3133a31de3 +0 -0
  1926. data/test/dummy/tmp/cache/assets/D66/D60/sprockets%2Fd116910cf8d03281dfa078d9c81af3ca +0 -0
  1927. data/test/dummy/tmp/cache/assets/D66/F50/sprockets%2F3f8db65ac02247d21db75d02af68e9b1 +0 -0
  1928. data/test/dummy/tmp/cache/assets/D66/FF0/sprockets%2Fa7b86be98c5a2d12a8c24023e8ae26a5 +0 -0
  1929. data/test/dummy/tmp/cache/assets/D67/370/sprockets%2Facdaf6f0e62abf292b09712d9045e517 +0 -0
  1930. data/test/dummy/tmp/cache/assets/D67/4D0/sprockets%2F3e38546657770aba0636bc5bdfee1da0 +0 -0
  1931. data/test/dummy/tmp/cache/assets/D67/540/sprockets%2F2451fa1457a12b81ae27acc885d1cf9f +0 -0
  1932. data/test/dummy/tmp/cache/assets/D67/B20/sprockets%2F21d840a6b2f0d40810f667fd47affaf4 +0 -0
  1933. data/test/dummy/tmp/cache/assets/D67/F30/sprockets%2Fa1c2a19503d7136786bf4c98fdb0cda3 +0 -0
  1934. data/test/dummy/tmp/cache/assets/D68/4E0/sprockets%2F013c5d547bd5e3350f8f5fe1f4eb03e3 +0 -0
  1935. data/test/dummy/tmp/cache/assets/D68/7B0/sprockets%2F01f91bbce586ad5a7181d176fa5bc454 +0 -0
  1936. data/test/dummy/tmp/cache/assets/D68/A40/sprockets%2Fbcbde6fb3133581e518637e4fab224d5 +0 -0
  1937. data/test/dummy/tmp/cache/assets/D68/AC0/sprockets%2Fbe5cf99c151ee682d96f9588d57866cc +0 -0
  1938. data/test/dummy/tmp/cache/assets/D68/BA0/sprockets%2F5f1ba7106c2c359ba063f98f1dba38a9 +0 -0
  1939. data/test/dummy/tmp/cache/assets/D68/BB0/sprockets%2F5ee24cf41716a40da7a8c8dd1cc21488 +0 -0
  1940. data/test/dummy/tmp/cache/assets/D69/720/sprockets%2Fcfca87f8a37e2336a3b36d231326f7bb +0 -0
  1941. data/test/dummy/tmp/cache/assets/D69/E80/sprockets%2F1223e38f9d64debba29b6de61af70441 +0 -0
  1942. data/test/dummy/tmp/cache/assets/D6A/3D0/sprockets%2Fcf97f9bd0e343d50ae3b006654b65bd5 +0 -0
  1943. data/test/dummy/tmp/cache/assets/D6A/410/sprockets%2F8003e6c1bfdd8215d846b4a9b2d8d15d +0 -0
  1944. data/test/dummy/tmp/cache/assets/D6A/4F0/sprockets%2Fe4fa6346422a8dce6bad5025dd95a059 +0 -0
  1945. data/test/dummy/tmp/cache/assets/D6A/DF0/sprockets%2F44fc4a3f2b6657a6d1369aab8a3356cd +0 -0
  1946. data/test/dummy/tmp/cache/assets/D6B/110/sprockets%2Fdd0933d445b1d5fcb5c3718b956bb46a +0 -0
  1947. data/test/dummy/tmp/cache/assets/D6B/550/sprockets%2F11c395f147e050afeefb528d228ec4e4 +0 -0
  1948. data/test/dummy/tmp/cache/assets/D6B/950/sprockets%2F088ce0fca047df84da4162b4a57197ae +0 -0
  1949. data/test/dummy/tmp/cache/assets/D6B/960/sprockets%2Fa94ad11312cbf8b365c85da4c79f6a80 +0 -0
  1950. data/test/dummy/tmp/cache/assets/D6B/970/sprockets%2F1d2049a78db9cb5f916bc1123a785edb +0 -0
  1951. data/test/dummy/tmp/cache/assets/D6B/990/sprockets%2F24de0146ba11805f7ed595d1e19dfdf2 +0 -0
  1952. data/test/dummy/tmp/cache/assets/D6B/AD0/sprockets%2F6f2bc7cfcfc77277a912a6216db416d0 +0 -0
  1953. data/test/dummy/tmp/cache/assets/D6B/CB0/sprockets%2F17feb2110d6ccedb3694d955515b6a8b +0 -0
  1954. data/test/dummy/tmp/cache/assets/D6B/ED0/sprockets%2F0d47f0db16fd911acd461da4f6690d67 +0 -0
  1955. data/test/dummy/tmp/cache/assets/D6B/FF0/sprockets%2Ff807f9367e272ada8d2e137e31bbb5a2 +0 -0
  1956. data/test/dummy/tmp/cache/assets/D6C/4D0/sprockets%2F56c8e1e02c020eb9e6a54e4827dbe74c +0 -0
  1957. data/test/dummy/tmp/cache/assets/D6D/000/sprockets%2Fbf8570a4b7a458df4b0d8a190c9b38b3 +0 -0
  1958. data/test/dummy/tmp/cache/assets/D6D/5A0/sprockets%2F93cdc99cc7adf79210460311d71cfae4 +0 -0
  1959. data/test/dummy/tmp/cache/assets/D6D/5B0/sprockets%2F99c1095648b73ceac5e30e9b40fdb20d +0 -0
  1960. data/test/dummy/tmp/cache/assets/D6D/AB0/sprockets%2F3c94b5eff3b7d0b9750583b08240cfcc +0 -0
  1961. data/test/dummy/tmp/cache/assets/D6D/DF0/sprockets%2F839c9b7b20c2a49bd9516a84bec6a61a +0 -0
  1962. data/test/dummy/tmp/cache/assets/D6E/260/sprockets%2F9e08f2ce1f70279b622b9e1dfda1642c +0 -0
  1963. data/test/dummy/tmp/cache/assets/D6E/300/sprockets%2F3ad5a388b388247dd303bdbbf73b3f57 +0 -0
  1964. data/test/dummy/tmp/cache/assets/D6E/3D0/sprockets%2F2de147b15cce533a83e64b8ea6492ff1 +0 -0
  1965. data/test/dummy/tmp/cache/assets/D6E/470/sprockets%2F71df3138a1fe8b97f7fadb7dc1203714 +0 -0
  1966. data/test/dummy/tmp/cache/assets/D6E/6D0/sprockets%2Ffc7d3ba0ef7c52a8455bf1268a29623e +0 -0
  1967. data/test/dummy/tmp/cache/assets/D6F/0C0/sprockets%2F877dcbc20a7c9c5290c2430dc8cf2d95 +0 -0
  1968. data/test/dummy/tmp/cache/assets/D6F/590/sprockets%2F8944d5a80e04dc5ffc31a0e96f8c1f21 +0 -0
  1969. data/test/dummy/tmp/cache/assets/D6F/840/sprockets%2F6ab574d92e8d730d1b2c4afc5c6635b8 +0 -0
  1970. data/test/dummy/tmp/cache/assets/D6F/9D0/sprockets%2F175ffadaff090cf9a26072c1191ef476 +0 -0
  1971. data/test/dummy/tmp/cache/assets/D6F/B30/sprockets%2F891af7ae615030666e4a3d6d3beb9f2d +0 -0
  1972. data/test/dummy/tmp/cache/assets/D6F/FF0/sprockets%2Fc74fa24a4bb8a8c9e77cfd024536324e +0 -0
  1973. data/test/dummy/tmp/cache/assets/D70/1F0/sprockets%2F33fed3bb84d5fc46d5768330d03e5ef0 +0 -0
  1974. data/test/dummy/tmp/cache/assets/D70/710/sprockets%2F4ffb8a8a4d611869018aae84f17a2d4d +0 -0
  1975. data/test/dummy/tmp/cache/assets/D71/180/sprockets%2F2574c07ca5ce6516e7813cfc4327ffae +0 -0
  1976. data/test/dummy/tmp/cache/assets/D71/1B0/sprockets%2F6292986fc0a384bdb1bed92a6c6a294c +0 -0
  1977. data/test/dummy/tmp/cache/assets/D71/B60/sprockets%2F32bc9f57ad1fe2d506fd74cc913b8633 +0 -0
  1978. data/test/dummy/tmp/cache/assets/D72/210/sprockets%2F601cebd8e41a363fe7522e78a814bfd9 +0 -0
  1979. data/test/dummy/tmp/cache/assets/D72/260/sprockets%2F805c75a5e038c51b5bab63f7af785ef3 +0 -0
  1980. data/test/dummy/tmp/cache/assets/D72/530/sprockets%2F7aa68b6e5a14184724c816b06f8fdebd +0 -0
  1981. data/test/dummy/tmp/cache/assets/D72/550/sprockets%2Fdc8a1e3cc36d42587cd9c5750e703e4d +0 -0
  1982. data/test/dummy/tmp/cache/assets/D72/A70/sprockets%2F36ee7d5d6c2a8f6e74cfa1cd25259105 +0 -0
  1983. data/test/dummy/tmp/cache/assets/D72/AD0/sprockets%2F73ce023923f93c1f4dd858d329d4adda +0 -0
  1984. data/test/dummy/tmp/cache/assets/D72/B60/sprockets%2Ff4caba13e07f3458c6c603ca9de96098 +0 -0
  1985. data/test/dummy/tmp/cache/assets/D72/BE0/sprockets%2F88fc2b40cd6bb985b28a0c16808ade85 +0 -0
  1986. data/test/dummy/tmp/cache/assets/D72/CE0/sprockets%2Fbcea4cc992dbbf24281d0e85292667b6 +0 -0
  1987. data/test/dummy/tmp/cache/assets/D72/DF0/sprockets%2Ff47176999aaa4b50b1e4b3ffa58c255d +0 -0
  1988. data/test/dummy/tmp/cache/assets/D73/1B0/sprockets%2F75c7059fe58fbcc1cb01309e6aed7923 +0 -0
  1989. data/test/dummy/tmp/cache/assets/D73/1E0/sprockets%2F2028a62d96b8b021e87ea2c9dded688a +0 -0
  1990. data/test/dummy/tmp/cache/assets/D73/400/sprockets%2F0dc6b3f8a8f917a2d8f3923cd952ba43 +0 -0
  1991. data/test/dummy/tmp/cache/assets/D73/600/sprockets%2F7e3978b4100bece3fc9d5c61c31fc729 +0 -0
  1992. data/test/dummy/tmp/cache/assets/D73/830/sprockets%2F14dea579703e5a5dcc0f680a9b9c763c +0 -0
  1993. data/test/dummy/tmp/cache/assets/D73/920/sprockets%2F77a5d5acdcd4b3629277aa338f8d7e12 +0 -0
  1994. data/test/dummy/tmp/cache/assets/D73/B20/sprockets%2Fce034e90f2e3d630d09ac39e8782f6db +0 -0
  1995. data/test/dummy/tmp/cache/assets/D73/C10/sprockets%2Fe4408813823d9a881c9b12eaefdb5ef2 +0 -0
  1996. data/test/dummy/tmp/cache/assets/D74/730/sprockets%2F4ff3e7892bfe3b71c2813a34ffe2a654 +0 -0
  1997. data/test/dummy/tmp/cache/assets/D74/A30/sprockets%2Fb9a16284ea2f906ecfe15f36a88fb612 +0 -0
  1998. data/test/dummy/tmp/cache/assets/D74/AF0/sprockets%2Fac41667bf3be098b78246d4a741faf9a +0 -0
  1999. data/test/dummy/tmp/cache/assets/D74/BD0/sprockets%2F8cc50b95ff7a60e1b5628a2c883db54f +0 -0
  2000. data/test/dummy/tmp/cache/assets/D74/F00/sprockets%2F35bfb58f60c6bdd9076b5319d09d4b3f +0 -0
  2001. data/test/dummy/tmp/cache/assets/D74/FD0/sprockets%2F64dbb94566f1a107a8a455fa7cb76ff4 +0 -0
  2002. data/test/dummy/tmp/cache/assets/D75/2B0/sprockets%2F960435d4e7acc5e18decf3134e5df258 +0 -0
  2003. data/test/dummy/tmp/cache/assets/D75/2C0/sprockets%2F5580e9bd1b1d8e6bf3ea14e7b3568d73 +0 -0
  2004. data/test/dummy/tmp/cache/assets/D75/2D0/sprockets%2Fe39e053e9582b104e24e9b7d2edcb7a9 +0 -0
  2005. data/test/dummy/tmp/cache/assets/D75/420/sprockets%2F8fd813d3c06bf1cb2727c578384cfba9 +0 -0
  2006. data/test/dummy/tmp/cache/assets/D75/7B0/sprockets%2F2537b4b5fdfadf6053ce17e04f4f8890 +0 -0
  2007. data/test/dummy/tmp/cache/assets/D75/BB0/sprockets%2Feb3518880cfef75fa6a3873b0c3f307f +0 -0
  2008. data/test/dummy/tmp/cache/assets/D76/0E0/sprockets%2F33f18c25f3ed89ad276e43c3dae675d2 +0 -0
  2009. data/test/dummy/tmp/cache/assets/D76/670/sprockets%2F63bc78b4f8df84d0e1bc584fc636802a +0 -0
  2010. data/test/dummy/tmp/cache/assets/D76/6C0/sprockets%2F619dedc58b2e260e9b216ae485e34fd6 +0 -0
  2011. data/test/dummy/tmp/cache/assets/D76/740/sprockets%2F4b1a5581b16ee55d84da6f0d929ede65 +0 -0
  2012. data/test/dummy/tmp/cache/assets/D76/7B0/sprockets%2F58ef2a5a5d3c11dbd386ff366768be24 +0 -0
  2013. data/test/dummy/tmp/cache/assets/D76/7E0/sprockets%2F650e53bd32a8419c790dc9ef01ef7e9a +0 -0
  2014. data/test/dummy/tmp/cache/assets/D76/920/sprockets%2Ff7e0984c14c72fe461748e6bcc82c0bd +0 -0
  2015. data/test/dummy/tmp/cache/assets/D76/AF0/sprockets%2F2ce576e1efea17e381f625a88df04e16 +0 -0
  2016. data/test/dummy/tmp/cache/assets/D76/C20/sprockets%2Fc67cdf7b14fc589f68b2cb349b124c43 +0 -0
  2017. data/test/dummy/tmp/cache/assets/D77/010/sprockets%2F5beb73eeeb35746142ffc7497d4d2a54 +0 -0
  2018. data/test/dummy/tmp/cache/assets/D77/090/sprockets%2F73f172c5a4c42c57d53ed87cded7d427 +0 -0
  2019. data/test/dummy/tmp/cache/assets/D77/190/sprockets%2Fbbe597fc66514ba44231e1a83fd8ce98 +0 -0
  2020. data/test/dummy/tmp/cache/assets/D77/430/sprockets%2Fed6b89a0c3f2b7153d1937a99ffd360d +0 -0
  2021. data/test/dummy/tmp/cache/assets/D77/450/sprockets%2F5e321bdeefaf01a41af98f3e58824859 +0 -0
  2022. data/test/dummy/tmp/cache/assets/D77/5B0/sprockets%2F4f5ccf72b681c291f2f3c7d929a35bb7 +0 -0
  2023. data/test/dummy/tmp/cache/assets/D77/9B0/sprockets%2F9c114f8c77c699c1c75155d15ab6dfbb +0 -0
  2024. data/test/dummy/tmp/cache/assets/D77/AE0/sprockets%2F5668bbe7bf9792cfd8da59d01b7a1061 +0 -0
  2025. data/test/dummy/tmp/cache/assets/D77/C20/sprockets%2Fa02eda53d75b86e6c7429f8ea538e04e +0 -0
  2026. data/test/dummy/tmp/cache/assets/D78/1A0/sprockets%2F48db88a2a7fbc0c663be27cc938552c9 +0 -0
  2027. data/test/dummy/tmp/cache/assets/D78/780/sprockets%2Fdeeca354e12c8ebcd89967558b2b4505 +0 -0
  2028. data/test/dummy/tmp/cache/assets/D78/7B0/sprockets%2F26b674a8dec384b76fc39ee7241ddc06 +0 -0
  2029. data/test/dummy/tmp/cache/assets/D78/AF0/sprockets%2F99e5bb91d87451ad1e01fe3fe9ef4017 +0 -0
  2030. data/test/dummy/tmp/cache/assets/D79/4F0/sprockets%2Ff0b9f7193991dc74a2a2dec06eaf7990 +0 -0
  2031. data/test/dummy/tmp/cache/assets/D79/550/sprockets%2Ff3f804b18df8bd2952d33b5ff26c7d28 +0 -0
  2032. data/test/dummy/tmp/cache/assets/D79/740/sprockets%2F9026180d0eee8e48c1cf6c4be16d59f7 +0 -0
  2033. data/test/dummy/tmp/cache/assets/D7A/3F0/sprockets%2Fbf3d583f5ba468586a1db5f56e52ef61 +0 -0
  2034. data/test/dummy/tmp/cache/assets/D7B/0E0/sprockets%2F76df5edda070b0c17b5caa61132a303a +0 -0
  2035. data/test/dummy/tmp/cache/assets/D7B/230/sprockets%2F4e473cebde712a45d9879939c2e2bec1 +0 -0
  2036. data/test/dummy/tmp/cache/assets/D7B/260/sprockets%2F0d277dabe82a3ad3ec30ce2a14a52303 +0 -0
  2037. data/test/dummy/tmp/cache/assets/D7B/8B0/sprockets%2F17fce732f3ce6957611ea1f69cedd571 +0 -0
  2038. data/test/dummy/tmp/cache/assets/D7B/9C0/sprockets%2Ff3ce94c1f45e20a6f74da8fb849e5353 +0 -0
  2039. data/test/dummy/tmp/cache/assets/D7B/F40/sprockets%2Fb0ea1b768efb8e8e732928bcf530379c +0 -0
  2040. data/test/dummy/tmp/cache/assets/D7C/510/sprockets%2F51792eee7e8f3e3c4b3983fc4e0b96a0 +0 -0
  2041. data/test/dummy/tmp/cache/assets/D7C/530/sprockets%2F185e7a53a16cf20abab0b1013da4a9c7 +0 -0
  2042. data/test/dummy/tmp/cache/assets/D7C/C40/sprockets%2Fbc948d13a994b95d1f250eb7cdea1799 +0 -0
  2043. data/test/dummy/tmp/cache/assets/D7C/FB0/sprockets%2Fe8f0b9a5d83e431c3d687b93bd59e34c +0 -0
  2044. data/test/dummy/tmp/cache/assets/D7C/FD0/sprockets%2Fcd25fd762489e5a66a627b705a7fae8c +0 -0
  2045. data/test/dummy/tmp/cache/assets/D7D/680/sprockets%2F70e6dd79d693fca593c6e42a42534fde +0 -0
  2046. data/test/dummy/tmp/cache/assets/D7D/6B0/sprockets%2Fffb153cefdcc93107bb26ee973299377 +0 -0
  2047. data/test/dummy/tmp/cache/assets/D7D/920/sprockets%2F0300aeaf0de1fa392f1025d1f258bb3c +0 -0
  2048. data/test/dummy/tmp/cache/assets/D7D/B10/sprockets%2Fd9a65b96e6fabd9d045d957eb910c165 +0 -0
  2049. data/test/dummy/tmp/cache/assets/D7D/B10/sprockets%2Fe2e97e13d5d14ac9f868a362ef7d50c7 +0 -0
  2050. data/test/dummy/tmp/cache/assets/D7D/EA0/sprockets%2F538fa5b5f9fd9825a1c8f0ec03915ee6 +0 -0
  2051. data/test/dummy/tmp/cache/assets/D7D/EB0/sprockets%2F14fa9ab07afd1b4052fd1aa23b143f61 +0 -0
  2052. data/test/dummy/tmp/cache/assets/D7E/0B0/sprockets%2F643779cbba8d11c9e2eb528ffd5a4588 +0 -0
  2053. data/test/dummy/tmp/cache/assets/D7E/0D0/sprockets%2Fab73d771fed0a1998e9fe9514ce645b2 +0 -0
  2054. data/test/dummy/tmp/cache/assets/D7E/1A0/sprockets%2Fdf486db981c919371a42cc58caffd717 +0 -0
  2055. data/test/dummy/tmp/cache/assets/D7E/2E0/sprockets%2Fc7778ea99de21bd0506ad2d88b7772ed +0 -0
  2056. data/test/dummy/tmp/cache/assets/D7E/560/sprockets%2Fe54ec5189221ce385cdcd73eb9c3889a +0 -0
  2057. data/test/dummy/tmp/cache/assets/D7E/850/sprockets%2Fdb6ad325585d3ff7b7d446575e17dd9a +0 -0
  2058. data/test/dummy/tmp/cache/assets/D7E/D70/sprockets%2F91e9640cd916be3c33ecd97cf4376fe2 +0 -0
  2059. data/test/dummy/tmp/cache/assets/D7E/E60/sprockets%2Fe9c9bfeabf98e3403ff02021c677a898 +0 -0
  2060. data/test/dummy/tmp/cache/assets/D7F/080/sprockets%2F7511d57cb850c808dcda48e7bfb6e968 +0 -0
  2061. data/test/dummy/tmp/cache/assets/D7F/5C0/sprockets%2Fdf992dbdcd26ad9963f461f9b570270e +0 -0
  2062. data/test/dummy/tmp/cache/assets/D7F/A00/sprockets%2Fa938e14849c6af6006d4fd18e9f63deb +0 -0
  2063. data/test/dummy/tmp/cache/assets/D7F/AB0/sprockets%2F3af0782e9feb5df9e522505fd783f54b +0 -0
  2064. data/test/dummy/tmp/cache/assets/D7F/AC0/sprockets%2F29f29d0d2da6f272ca5dbf8826ed5787 +0 -0
  2065. data/test/dummy/tmp/cache/assets/D7F/B50/sprockets%2F68870658f9d7af2ea3cd8ead3a4346f3 +0 -0
  2066. data/test/dummy/tmp/cache/assets/D80/000/sprockets%2F77deac6031fb485e38f2ecf0f84677c7 +0 -0
  2067. data/test/dummy/tmp/cache/assets/D80/100/sprockets%2F7659e9f48a711ecf468fc5c2e3d3a42f +0 -0
  2068. data/test/dummy/tmp/cache/assets/D80/4A0/sprockets%2Fc0322f552fc7ddecd97889feaf544660 +0 -0
  2069. data/test/dummy/tmp/cache/assets/D80/720/sprockets%2Fedc921d9f96f2b7d68b2312f0347d9ff +0 -0
  2070. data/test/dummy/tmp/cache/assets/D80/730/sprockets%2F3f9f174f1045e0bddcf4ce3887596f7a +0 -0
  2071. data/test/dummy/tmp/cache/assets/D80/A00/sprockets%2Fdcdd788a82dd3d594a7a95089372fec0 +0 -0
  2072. data/test/dummy/tmp/cache/assets/D80/F00/sprockets%2F99f3e81bfe55e0a17f38598c4a4e7c0d +0 -0
  2073. data/test/dummy/tmp/cache/assets/D80/FA0/sprockets%2F3ef6904ed431cff977ca415fd457ec75 +0 -0
  2074. data/test/dummy/tmp/cache/assets/D81/200/sprockets%2Fcde5804f6925f2aa9d8f82bdb9e80960 +0 -0
  2075. data/test/dummy/tmp/cache/assets/D81/3B0/sprockets%2Fe2694a510e4ee49c9c3682bd4c8e76ef +0 -0
  2076. data/test/dummy/tmp/cache/assets/D81/A80/sprockets%2Fbeed9454c399e752c2bd365e58f8a4e1 +0 -0
  2077. data/test/dummy/tmp/cache/assets/D82/510/sprockets%2Ffc2d84d9484e82de8bd3204edc4558d9 +0 -0
  2078. data/test/dummy/tmp/cache/assets/D82/9C0/sprockets%2Fc5ffb04889e82819aeb546956da7ca5b +0 -0
  2079. data/test/dummy/tmp/cache/assets/D82/B60/sprockets%2Feda7e9086b9d09ed40ccb598e8a20994 +0 -0
  2080. data/test/dummy/tmp/cache/assets/D83/B30/sprockets%2F99bf9d4676359727ea4c7c91c71bbadc +0 -0
  2081. data/test/dummy/tmp/cache/assets/D83/FD0/sprockets%2F0f6d83f8774197ccf51bcfa3b73887cd +0 -0
  2082. data/test/dummy/tmp/cache/assets/D84/2E0/sprockets%2F65d3cce2c12c7ff8864738c338acff88 +0 -0
  2083. data/test/dummy/tmp/cache/assets/D85/050/sprockets%2Fd5cf44ed1bc6b22a2da566f014181b0d +0 -0
  2084. data/test/dummy/tmp/cache/assets/D85/3C0/sprockets%2F505849fee2f95e1c009dc56b859cff7b +0 -0
  2085. data/test/dummy/tmp/cache/assets/D85/460/sprockets%2F9692ef5b8c5e2f3352659f6a64baff7b +0 -0
  2086. data/test/dummy/tmp/cache/assets/D85/4F0/sprockets%2F0c5495b8ef9e647ac6b68efc85155f0e +0 -0
  2087. data/test/dummy/tmp/cache/assets/D85/9A0/sprockets%2F8c7269a7c4a7f26474a48fafdaf7f943 +0 -0
  2088. data/test/dummy/tmp/cache/assets/D86/6D0/sprockets%2Fdfcd0a634b6506b2339e7a13c160acdb +0 -0
  2089. data/test/dummy/tmp/cache/assets/D86/8B0/sprockets%2Ff347b2ca9e265abe21b3eedda2325004 +0 -0
  2090. data/test/dummy/tmp/cache/assets/D86/8D0/sprockets%2F01297d1e51cdfbcce40ca119a6af0291 +0 -0
  2091. data/test/dummy/tmp/cache/assets/D86/A60/sprockets%2F8332efdcd639e759be83060dd8b8d59d +0 -0
  2092. data/test/dummy/tmp/cache/assets/D87/470/sprockets%2F87dbc8969c4a3129ab6bc6d1599e7d7e +0 -0
  2093. data/test/dummy/tmp/cache/assets/D87/6A0/sprockets%2F3024cda74ce7bdc0ba63109371bca58c +0 -0
  2094. data/test/dummy/tmp/cache/assets/D87/CA0/sprockets%2F7acb8148c7874a46f4ae6f5f75c939ea +0 -0
  2095. data/test/dummy/tmp/cache/assets/D87/DE0/sprockets%2F7bc000a5f5d8b65381a03a0c0eafc9a8 +0 -0
  2096. data/test/dummy/tmp/cache/assets/D87/DE0/sprockets%2Fc5f4e0bb142bc8012baa649fe1b7804a +0 -0
  2097. data/test/dummy/tmp/cache/assets/D88/6E0/sprockets%2F2d8c8f5d9e37f75a0a9b68b5cb9485e4 +0 -0
  2098. data/test/dummy/tmp/cache/assets/D88/FF0/sprockets%2F3eef071767aaed7df6558367a9a94c8f +0 -0
  2099. data/test/dummy/tmp/cache/assets/D89/800/sprockets%2Fdb9ee8f27df0f998275d5683d5fb07a2 +0 -0
  2100. data/test/dummy/tmp/cache/assets/D89/A50/sprockets%2F41cb1394fafc7abb3bc2b4c2824647a1 +0 -0
  2101. data/test/dummy/tmp/cache/assets/D89/DF0/sprockets%2Fb8ca8ddcdf983496f377059c08f04e6f +0 -0
  2102. data/test/dummy/tmp/cache/assets/D8A/310/sprockets%2Fd0e01c2266c1b24db1bc158e2ad689ec +0 -0
  2103. data/test/dummy/tmp/cache/assets/D8B/150/sprockets%2F4fd00aad1dc612897da021f51761cdde +0 -0
  2104. data/test/dummy/tmp/cache/assets/D8B/600/sprockets%2F9eca92c03896a5795e29dae9549b4def +0 -0
  2105. data/test/dummy/tmp/cache/assets/D8B/830/sprockets%2F8ac41fd80222d4c3fcea24c74e01c24f +0 -0
  2106. data/test/dummy/tmp/cache/assets/D8B/F60/sprockets%2Fa9def494f7c9af6b76470759db7d75c0 +0 -0
  2107. data/test/dummy/tmp/cache/assets/D8C/040/sprockets%2Faf41f9126938112fcfbb0aa0e1d4f35c +0 -0
  2108. data/test/dummy/tmp/cache/assets/D8C/4A0/sprockets%2F6690479190c88cefdafc6fa781f93fe4 +0 -0
  2109. data/test/dummy/tmp/cache/assets/D8C/730/sprockets%2Fee55e710a1ca60d3e1b16ce45fd72a80 +0 -0
  2110. data/test/dummy/tmp/cache/assets/D8C/8D0/sprockets%2F86b26909aa44e265f9e7f7ddc89f3d7b +0 -0
  2111. data/test/dummy/tmp/cache/assets/D8C/DF0/sprockets%2F9913ce78d96ec81886b1dc37dee17af8 +0 -0
  2112. data/test/dummy/tmp/cache/assets/D8D/190/sprockets%2F81a3e60dea0c6e6a27930ba0d4d557bc +0 -0
  2113. data/test/dummy/tmp/cache/assets/D8D/1D0/sprockets%2F0106dd9cc3e02cfb7b7ea5a95a4a2561 +0 -0
  2114. data/test/dummy/tmp/cache/assets/D8D/1D0/sprockets%2F4a0deb3ad4d6092ff232e0b2d0787cb5 +0 -0
  2115. data/test/dummy/tmp/cache/assets/D8D/3D0/sprockets%2Fa8544ad386345d5602b5ecaebbea0f21 +0 -0
  2116. data/test/dummy/tmp/cache/assets/D8D/520/sprockets%2Fa63eeeb1e03332dbc79b344dc8ba2650 +0 -0
  2117. data/test/dummy/tmp/cache/assets/D8D/690/sprockets%2Ff1c775ec217ba4a2a4826cd7a5c3a4b2 +0 -0
  2118. data/test/dummy/tmp/cache/assets/D8E/050/sprockets%2Fa10db95bdc04a123f348f9c5b4b66fa1 +0 -0
  2119. data/test/dummy/tmp/cache/assets/D8E/490/sprockets%2Fb3bbafaeec7ec0d139168652b6a30660 +0 -0
  2120. data/test/dummy/tmp/cache/assets/D8E/5F0/sprockets%2F123b3f0aaa8ab1864ed5d6e29d2167ca +0 -0
  2121. data/test/dummy/tmp/cache/assets/D8E/7D0/sprockets%2F3b423339b9a58aa6dc2d31c6a65ba7ca +0 -0
  2122. data/test/dummy/tmp/cache/assets/D8E/8E0/sprockets%2Fb0085b1cac2fa3c4dd069337f6f3cb08 +0 -0
  2123. data/test/dummy/tmp/cache/assets/D8F/880/sprockets%2F1aea781830ad62c59bfdb0105c2d7cb9 +0 -0
  2124. data/test/dummy/tmp/cache/assets/D8F/880/sprockets%2F6142d4acf06317a0e6bd7eaedc630d74 +0 -0
  2125. data/test/dummy/tmp/cache/assets/D8F/910/sprockets%2F7d5608304cdbab9a0268c0aeff125aa9 +0 -0
  2126. data/test/dummy/tmp/cache/assets/D8F/950/sprockets%2F7e9bec4920660226bb1fbcca051ad4d8 +0 -0
  2127. data/test/dummy/tmp/cache/assets/D90/240/sprockets%2Fcf46450118b8f3035dbdfe16d0eea3b3 +0 -0
  2128. data/test/dummy/tmp/cache/assets/D90/980/sprockets%2F2f09c8074c7a0ae04c15ea39cb660fea +0 -0
  2129. data/test/dummy/tmp/cache/assets/D90/9F0/sprockets%2Fde504d63ac1099d80ce9ce127cb21b2c +0 -0
  2130. data/test/dummy/tmp/cache/assets/D90/C00/sprockets%2Fab691533f1127900c07c2debabd7ff5c +0 -0
  2131. data/test/dummy/tmp/cache/assets/D90/D90/sprockets%2F04de7f181beb223838a0749abccc1d6a +0 -0
  2132. data/test/dummy/tmp/cache/assets/D90/D90/sprockets%2Fd83620dddcc6284fa7a3cf29e1c0a232 +0 -0
  2133. data/test/dummy/tmp/cache/assets/D91/8C0/sprockets%2F69a1d40bebf6a37342dd10ff2140ee9d +0 -0
  2134. data/test/dummy/tmp/cache/assets/D91/B00/sprockets%2F0ef14a0b942c845028bae00ff7dcfb83 +0 -0
  2135. data/test/dummy/tmp/cache/assets/D92/040/sprockets%2F0552b8b24c29c61b4d7c4ab1f348edea +0 -0
  2136. data/test/dummy/tmp/cache/assets/D92/350/sprockets%2Fe4d921372a1656b3c0cbca2ff9a60ee5 +0 -0
  2137. data/test/dummy/tmp/cache/assets/D92/6A0/sprockets%2F3f4a4fe919134a90fa8ebb33a58b40aa +0 -0
  2138. data/test/dummy/tmp/cache/assets/D92/720/sprockets%2F5b4face0a381590dcceb7193e3343d2d +0 -0
  2139. data/test/dummy/tmp/cache/assets/D92/890/sprockets%2F62fb2a4be25fd586be41b0dba2c49922 +0 -0
  2140. data/test/dummy/tmp/cache/assets/D92/A70/sprockets%2F2bcbeb2844be03b4b7e8360c15f98b2a +0 -0
  2141. data/test/dummy/tmp/cache/assets/D92/F40/sprockets%2Fed082888eb327fe45fef49d795af1f87 +0 -0
  2142. data/test/dummy/tmp/cache/assets/D93/090/sprockets%2F156a2a85d3d5e762c16aefdd6fa2b313 +0 -0
  2143. data/test/dummy/tmp/cache/assets/D93/5E0/sprockets%2Fbbf15a3789bac5f814c71ba5ca20e465 +0 -0
  2144. data/test/dummy/tmp/cache/assets/D93/F00/sprockets%2F2ba869ab341ca37f23fad244dde2a279 +0 -0
  2145. data/test/dummy/tmp/cache/assets/D94/2F0/sprockets%2Fa2c5fc3aeb5c324d627c470d5ec1646e +0 -0
  2146. data/test/dummy/tmp/cache/assets/D94/890/sprockets%2F2b94cea2022c41c5dede8ae3e3b97281 +0 -0
  2147. data/test/dummy/tmp/cache/assets/D94/CA0/sprockets%2F75e7eecfe153f1887f36dff6784fd159 +0 -0
  2148. data/test/dummy/tmp/cache/assets/D94/DD0/sprockets%2F5daec387012d6ac7fa18308f72de0b6a +0 -0
  2149. data/test/dummy/tmp/cache/assets/D95/520/sprockets%2F33bd6dfe5c00aa43d1ea876bb44a6578 +0 -0
  2150. data/test/dummy/tmp/cache/assets/D95/740/sprockets%2Fcd50ae7710f3d5fe0a830bc9eec26039 +0 -0
  2151. data/test/dummy/tmp/cache/assets/D95/C60/sprockets%2F29af5d21e0bd908bd45226fa3de9ec11 +0 -0
  2152. data/test/dummy/tmp/cache/assets/D96/240/sprockets%2F86a05986a3bad6ea7fd18ce16c2b0b42 +0 -0
  2153. data/test/dummy/tmp/cache/assets/D96/240/sprockets%2Fff9b4efbe49d65b80d2d121640aa840a +0 -0
  2154. data/test/dummy/tmp/cache/assets/D96/580/sprockets%2F6fcae2137e71a0b9ad0c6ce48740be29 +0 -0
  2155. data/test/dummy/tmp/cache/assets/D96/5B0/sprockets%2Fbce441e010b4da916725de2ede99e1a6 +0 -0
  2156. data/test/dummy/tmp/cache/assets/D96/780/sprockets%2F3bcb836f508c1b30f559ab5bdc3f344e +0 -0
  2157. data/test/dummy/tmp/cache/assets/D96/9A0/sprockets%2Fec9907bade1891db6bc20180a843cec3 +0 -0
  2158. data/test/dummy/tmp/cache/assets/D96/B40/sprockets%2F90a85be6000c45257cc63dec8c1bcf8b +0 -0
  2159. data/test/dummy/tmp/cache/assets/D96/BD0/sprockets%2Febabcba3d82ef0278f9402ba24f29950 +0 -0
  2160. data/test/dummy/tmp/cache/assets/D96/E80/sprockets%2Fbd9f655dd12709f8b5aadfa16b0f0720 +0 -0
  2161. data/test/dummy/tmp/cache/assets/D96/EE0/sprockets%2Fdaf746b24a37f32faf161e018f93ca4c +0 -0
  2162. data/test/dummy/tmp/cache/assets/D97/150/sprockets%2F50048750bbbe1bb32fe83a8a6f9cd52f +0 -0
  2163. data/test/dummy/tmp/cache/assets/D97/3D0/sprockets%2F44b63b15cae4c6f7d5b04ed3754f41be +0 -0
  2164. data/test/dummy/tmp/cache/assets/D97/420/sprockets%2F8e834e0e5c0fd8de55d5a45200ad91ac +0 -0
  2165. data/test/dummy/tmp/cache/assets/D97/520/sprockets%2Fbfb270b07453b284dca3ecdb95ca7179 +0 -0
  2166. data/test/dummy/tmp/cache/assets/D97/680/sprockets%2F45bdc5ddcb2f81c449e13a775b2bc651 +0 -0
  2167. data/test/dummy/tmp/cache/assets/D97/8E0/sprockets%2F00fa20f763bafd6ae82c8f3d1c70d774 +0 -0
  2168. data/test/dummy/tmp/cache/assets/D97/A10/sprockets%2Ff1fe3b6160ec3da42f287aed3d3235c9 +0 -0
  2169. data/test/dummy/tmp/cache/assets/D97/C80/sprockets%2F5e0eb6a40b9b9d214d8cb3935c8dad41 +0 -0
  2170. data/test/dummy/tmp/cache/assets/D97/F90/sprockets%2F4ed9ede531aa0b2b7ae19ec6a6783530 +0 -0
  2171. data/test/dummy/tmp/cache/assets/D98/0E0/sprockets%2Fde97f1af4c83632e5a03dc3043c8b5af +0 -0
  2172. data/test/dummy/tmp/cache/assets/D98/620/sprockets%2F4739cf0d47eb5ca845b2e43bfc7d0c21 +0 -0
  2173. data/test/dummy/tmp/cache/assets/D98/6E0/sprockets%2F05b7f7fbcaf3804c457ae14c0bb285c9 +0 -0
  2174. data/test/dummy/tmp/cache/assets/D98/A50/sprockets%2F0523ed18a9ed1f98e35ba5f38c1fab20 +0 -0
  2175. data/test/dummy/tmp/cache/assets/D98/E50/sprockets%2Faef92317051bbb1338e0ffd234d99daf +0 -0
  2176. data/test/dummy/tmp/cache/assets/D99/270/sprockets%2Fb6e2851b3cb1de64b763a733fb2d73df +0 -0
  2177. data/test/dummy/tmp/cache/assets/D99/3B0/sprockets%2Ff16c9f0ce8f0ad8036433b8ddc30fe41 +0 -0
  2178. data/test/dummy/tmp/cache/assets/D99/540/sprockets%2F54daaf4bbbfb679b5175a258f0580c5a +0 -0
  2179. data/test/dummy/tmp/cache/assets/D99/550/sprockets%2F4f1ced696bba05434d705a9e16bbf34e +0 -0
  2180. data/test/dummy/tmp/cache/assets/D99/9F0/sprockets%2Fa0d4d37b20b6df5f06092917eb7febe3 +0 -0
  2181. data/test/dummy/tmp/cache/assets/D99/B80/sprockets%2F51f06ed4d0554dd5b308a8a70fc7dad8 +0 -0
  2182. data/test/dummy/tmp/cache/assets/D9A/CD0/sprockets%2F8de942d2fae072b4bda81e0f0570d95d +0 -0
  2183. data/test/dummy/tmp/cache/assets/D9B/500/sprockets%2F19629c0bef01845ebb045a81d7cfe6dc +0 -0
  2184. data/test/dummy/tmp/cache/assets/D9B/830/sprockets%2Fb6c854eff56bcf61aa456259233c2aea +0 -0
  2185. data/test/dummy/tmp/cache/assets/D9B/890/sprockets%2F5fbe783dc1df2d081a95b1fea3700a89 +0 -0
  2186. data/test/dummy/tmp/cache/assets/D9B/C30/sprockets%2F16ae5460a9ba6ac7d19afd0c50f953d9 +0 -0
  2187. data/test/dummy/tmp/cache/assets/D9B/D60/sprockets%2Fcfedc7bc416b3291dcb16761509eb8d3 +0 -0
  2188. data/test/dummy/tmp/cache/assets/D9B/D80/sprockets%2Faba1c493f2a8d60f352727aedf4b557e +0 -0
  2189. data/test/dummy/tmp/cache/assets/D9B/EB0/sprockets%2Fbccb6fe3223846961bdabb25a4095fe8 +0 -0
  2190. data/test/dummy/tmp/cache/assets/D9C/230/sprockets%2F5126f140ae32b9557afd23d7f8cbdbc9 +0 -0
  2191. data/test/dummy/tmp/cache/assets/D9C/3B0/sprockets%2F753bd274643e017fee5cbe0ec9ee04d2 +0 -0
  2192. data/test/dummy/tmp/cache/assets/D9C/830/sprockets%2F262d680e9978a830c4b9db0ccac64cba +0 -0
  2193. data/test/dummy/tmp/cache/assets/D9C/920/sprockets%2F8fdd5d884c80b3ff0b5e63ccc0453e11 +0 -0
  2194. data/test/dummy/tmp/cache/assets/D9C/A00/sprockets%2F693526f5730d6efccbae008e0c348fca +0 -0
  2195. data/test/dummy/tmp/cache/assets/D9C/CA0/sprockets%2F38552a482bd034bdebb8dafe16b8e448 +0 -0
  2196. data/test/dummy/tmp/cache/assets/D9C/CA0/sprockets%2F81e4c6aa40ffcb2dd9a756391fac5660 +0 -0
  2197. data/test/dummy/tmp/cache/assets/D9C/E60/sprockets%2Fec59dcd3aa8d87bf031a0cf41a084995 +0 -0
  2198. data/test/dummy/tmp/cache/assets/D9C/F80/sprockets%2F92177152ae69fdafa3d0446ebb7ac71f +0 -0
  2199. data/test/dummy/tmp/cache/assets/D9D/240/sprockets%2Fabd46ee901845237db0ead67fce673d0 +0 -0
  2200. data/test/dummy/tmp/cache/assets/D9D/450/sprockets%2Fcc373a7814f46e9e68d3cb8ab0ec6a20 +0 -0
  2201. data/test/dummy/tmp/cache/assets/D9D/660/sprockets%2F72b3ef3c70cb276766e5fb2d2bff2e14 +0 -0
  2202. data/test/dummy/tmp/cache/assets/D9D/700/sprockets%2F7843bf281aaa9b81391767dbb3fabca8 +0 -0
  2203. data/test/dummy/tmp/cache/assets/D9D/940/sprockets%2Fafb8efc8d08a26c3335ff3640db8b074 +0 -0
  2204. data/test/dummy/tmp/cache/assets/D9D/D20/sprockets%2F8905ebdedf20eb708ab7c2445b3833df +0 -0
  2205. data/test/dummy/tmp/cache/assets/D9D/DF0/sprockets%2F14d420aaa32413baa042bddcad2811ee +0 -0
  2206. data/test/dummy/tmp/cache/assets/D9D/E00/sprockets%2F62f7d32b35fb23cc6360fbedd75c6e17 +0 -0
  2207. data/test/dummy/tmp/cache/assets/D9D/E10/sprockets%2F75f56ca3a7a4b2b2e57ea289ec91a62c +0 -0
  2208. data/test/dummy/tmp/cache/assets/D9D/ED0/sprockets%2F823cdb7734aa042f363e8befdbc8367a +0 -0
  2209. data/test/dummy/tmp/cache/assets/D9D/ED0/sprockets%2Ff6d62e6a1bf51a917bed5a28184e53fa +0 -0
  2210. data/test/dummy/tmp/cache/assets/D9E/190/sprockets%2F2ee4d943af5dd25b6a9cf42a4f4d6306 +0 -0
  2211. data/test/dummy/tmp/cache/assets/D9E/5E0/sprockets%2F468b16b0cb34e9d09ac36ff74180bcff +0 -0
  2212. data/test/dummy/tmp/cache/assets/D9E/690/sprockets%2F68ab8c1d75a9b4a2ae4b123e77be99c1 +0 -0
  2213. data/test/dummy/tmp/cache/assets/D9E/750/sprockets%2F3ab32a9aab15487d6b9be355c37dfe92 +0 -0
  2214. data/test/dummy/tmp/cache/assets/D9E/7A0/sprockets%2Fb11b94cd6be9b556afbc550e1438e9b5 +0 -0
  2215. data/test/dummy/tmp/cache/assets/D9F/280/sprockets%2F35ad5fcec037a9fcdf43a55c925a9730 +0 -0
  2216. data/test/dummy/tmp/cache/assets/D9F/680/sprockets%2Fedd2d4c5656b3b159d6eb04bef0289a7 +0 -0
  2217. data/test/dummy/tmp/cache/assets/D9F/6B0/sprockets%2Fc8fc14cce588a0bb6514e68c43d15b6f +0 -0
  2218. data/test/dummy/tmp/cache/assets/D9F/6E0/sprockets%2Fbb0a236a70758a95bbcb8e66e588c2cd +0 -0
  2219. data/test/dummy/tmp/cache/assets/D9F/700/sprockets%2F2588f3481ab1859aff3cbc0e9dd0c2d5 +0 -0
  2220. data/test/dummy/tmp/cache/assets/D9F/790/sprockets%2F4d9649c0c0fdecf285b30fa1474b59db +0 -0
  2221. data/test/dummy/tmp/cache/assets/D9F/9C0/sprockets%2Fffc7d816802d6a5085e5b3e3f93bb4aa +0 -0
  2222. data/test/dummy/tmp/cache/assets/D9F/A40/sprockets%2Fda603c8efc43cd83b238627eebf591c1 +0 -0
  2223. data/test/dummy/tmp/cache/assets/DA0/120/sprockets%2F1dae5fb238ce54be6de6f83f3c302628 +0 -0
  2224. data/test/dummy/tmp/cache/assets/DA0/2C0/sprockets%2Fc509492337bcf5c07fd36f1d55ccc4fb +0 -0
  2225. data/test/dummy/tmp/cache/assets/DA0/6A0/sprockets%2F64ef7b9a2cab3451d2256c5be08fb7f8 +0 -0
  2226. data/test/dummy/tmp/cache/assets/DA0/730/sprockets%2F06dc5952fd6bd4577e9ea2b800cc3b5e +0 -0
  2227. data/test/dummy/tmp/cache/assets/DA0/AF0/sprockets%2Ffd5bb98b534294f62b14ee8cd1b0e29b +0 -0
  2228. data/test/dummy/tmp/cache/assets/DA1/330/sprockets%2Fc31e85029f1c94c22757fffa32e7abfc +0 -0
  2229. data/test/dummy/tmp/cache/assets/DA1/480/sprockets%2Fe751abde7804d66263e93ee7e1bbf03d +0 -0
  2230. data/test/dummy/tmp/cache/assets/DA1/4C0/sprockets%2Fe2f4888fb4302a6bfe7f729ccb074aa3 +0 -0
  2231. data/test/dummy/tmp/cache/assets/DA1/4E0/sprockets%2F25ee9aeeca7f9706b117dae5f79152a0 +0 -0
  2232. data/test/dummy/tmp/cache/assets/DA1/620/sprockets%2Ff46117893705b0f59fae35babd8cc1ee +0 -0
  2233. data/test/dummy/tmp/cache/assets/DA1/AC0/sprockets%2Fd0938e403e53c41dd397bebfc38c3ae8 +0 -0
  2234. data/test/dummy/tmp/cache/assets/DA1/BE0/sprockets%2F4571a9660eeadd8a7dbc0977b0ddb564 +0 -0
  2235. data/test/dummy/tmp/cache/assets/DA2/210/sprockets%2Fcf1005ebeb968dc1a3ecd75b93391c79 +0 -0
  2236. data/test/dummy/tmp/cache/assets/DA2/250/sprockets%2Fd07b798cc1eda20971c7f55c843eeea1 +0 -0
  2237. data/test/dummy/tmp/cache/assets/DA2/4A0/sprockets%2F670f4ee452da78be3f04a9a2b13f76ff +0 -0
  2238. data/test/dummy/tmp/cache/assets/DA2/720/sprockets%2F5839bafde83c10bce89de12e12f884c0 +0 -0
  2239. data/test/dummy/tmp/cache/assets/DA2/900/sprockets%2F1cbafbc425d5ab9ea9052687c35a98f6 +0 -0
  2240. data/test/dummy/tmp/cache/assets/DA2/990/sprockets%2F41dbab3891e458ea9da2ee49acd08295 +0 -0
  2241. data/test/dummy/tmp/cache/assets/DA2/A00/sprockets%2Fbba663f59b4fb86f900bd856bfcb5125 +0 -0
  2242. data/test/dummy/tmp/cache/assets/DA2/C20/sprockets%2Fd1af091c8ebf55de949cfb5b431167e2 +0 -0
  2243. data/test/dummy/tmp/cache/assets/DA3/310/sprockets%2F81215b7f845fbe20efd6db7f15c1dc77 +0 -0
  2244. data/test/dummy/tmp/cache/assets/DA3/7B0/sprockets%2Fb20f9d42c879feea70b12b6fe9a7443c +0 -0
  2245. data/test/dummy/tmp/cache/assets/DA3/BE0/sprockets%2F77794cc60c4f48ea4b38e1f3cfbee230 +0 -0
  2246. data/test/dummy/tmp/cache/assets/DA4/160/sprockets%2Fa219e9635b17ec93e0bc88fe03aae4f8 +0 -0
  2247. data/test/dummy/tmp/cache/assets/DA4/210/sprockets%2Fe226ea6c238496afd62bb59d6b93af2d +0 -0
  2248. data/test/dummy/tmp/cache/assets/DA4/440/sprockets%2Ff72d59f3ce546ce02fedb09f6423cc71 +0 -0
  2249. data/test/dummy/tmp/cache/assets/DA4/570/sprockets%2F9cb40f555575a9ebc3df1fc70ff350a9 +0 -0
  2250. data/test/dummy/tmp/cache/assets/DA4/7D0/sprockets%2Ff785329b1ea2cd8b6aecafb93316892c +0 -0
  2251. data/test/dummy/tmp/cache/assets/DA4/E60/sprockets%2F9cc625acbeceed27b29b6240774f564e +0 -0
  2252. data/test/dummy/tmp/cache/assets/DA5/4E0/sprockets%2F7ee781cfeeb8b125b6449b27ace16a84 +0 -0
  2253. data/test/dummy/tmp/cache/assets/DA5/670/sprockets%2Faf276cef126bb7e149702ae3e4d9ed49 +0 -0
  2254. data/test/dummy/tmp/cache/assets/DA5/7D0/sprockets%2F9e21aaec784efd03d75b6260c838f9ca +0 -0
  2255. data/test/dummy/tmp/cache/assets/DA5/850/sprockets%2Fd349efeb6bc4a914c6c961bea4f56408 +0 -0
  2256. data/test/dummy/tmp/cache/assets/DA5/B00/sprockets%2F9a65bfffad606825b2df851d823b77ba +0 -0
  2257. data/test/dummy/tmp/cache/assets/DA5/D50/sprockets%2F506747a2fdb15aacde9e38e4398f3a5d +0 -0
  2258. data/test/dummy/tmp/cache/assets/DA6/AF0/sprockets%2F6e8c46cad9893b1bd8af6e35130dee26 +0 -0
  2259. data/test/dummy/tmp/cache/assets/DA6/B40/sprockets%2Fb8d0ca6785a2c51f875de5ebf5e760b4 +0 -0
  2260. data/test/dummy/tmp/cache/assets/DA6/E70/sprockets%2F9b696267509c0edcbd4d5fe5b39da42b +0 -0
  2261. data/test/dummy/tmp/cache/assets/DA6/FC0/sprockets%2Fa9a778bdcdfa61b7a896175bece25271 +0 -0
  2262. data/test/dummy/tmp/cache/assets/DA7/180/sprockets%2Fd73e504186ef5af78cdf7c24cfc3f620 +0 -0
  2263. data/test/dummy/tmp/cache/assets/DA7/2E0/sprockets%2F4ad87d35f9e6da4d35a39e9d503cc1a9 +0 -0
  2264. data/test/dummy/tmp/cache/assets/DA7/670/sprockets%2F7b1860c85ed37bbedb85689652dae2bb +0 -0
  2265. data/test/dummy/tmp/cache/assets/DA7/690/sprockets%2Fc49a7fa0c7dc57f03aa9f4fdb3994291 +0 -0
  2266. data/test/dummy/tmp/cache/assets/DA7/E80/sprockets%2Fa0227f61714ce886a5ee8c2dafed6e75 +0 -0
  2267. data/test/dummy/tmp/cache/assets/DA7/EC0/sprockets%2Fb6fb402b414a93e9155ff708edbf99ea +0 -0
  2268. data/test/dummy/tmp/cache/assets/DA8/670/sprockets%2F7fa8cffb6c3f4080dc45367eb638b80e +0 -0
  2269. data/test/dummy/tmp/cache/assets/DA8/7A0/sprockets%2Febee8835fef38639b31ed381026aeb4f +0 -0
  2270. data/test/dummy/tmp/cache/assets/DA8/9D0/sprockets%2Fcae25fa34b675c9c4c476bcc58e73c57 +0 -0
  2271. data/test/dummy/tmp/cache/assets/DA8/B70/sprockets%2F3ddd853d4c7253dc5ab53748cc7e4f5f +0 -0
  2272. data/test/dummy/tmp/cache/assets/DA9/0F0/sprockets%2Fc5ee1745b2af4a8400b8ffd943e89cf5 +0 -0
  2273. data/test/dummy/tmp/cache/assets/DA9/520/sprockets%2Feb3fb449864678a9bf1b81fd651aa4fc +0 -0
  2274. data/test/dummy/tmp/cache/assets/DA9/6C0/sprockets%2Fcab86eb3c55f4cec292978700c79bfb4 +0 -0
  2275. data/test/dummy/tmp/cache/assets/DA9/6C0/sprockets%2Fff22f389eaabe920d9917593f53d0add +0 -0
  2276. data/test/dummy/tmp/cache/assets/DA9/B10/sprockets%2Feee74b1f0ee7c04ce8a936a84634f9b4 +0 -0
  2277. data/test/dummy/tmp/cache/assets/DA9/B50/sprockets%2F33bf06585f1ea78e692c673fbd5fddc0 +0 -0
  2278. data/test/dummy/tmp/cache/assets/DAA/3C0/sprockets%2Fd98d9a4aacaf34f7c2c80215ee96a588 +0 -0
  2279. data/test/dummy/tmp/cache/assets/DAA/A70/sprockets%2Ff91185ef25f2a8cc36a7ec6f9f6114fa +0 -0
  2280. data/test/dummy/tmp/cache/assets/DAA/AC0/sprockets%2F3c3b0b95fdbaa97909ef9294cb5465dc +0 -0
  2281. data/test/dummy/tmp/cache/assets/DAA/D30/sprockets%2Fba92440f66d3ab82ccfcd4f86e899a16 +0 -0
  2282. data/test/dummy/tmp/cache/assets/DAA/FD0/sprockets%2Fed079f328d7bec564dc4ce6c43792dd1 +0 -0
  2283. data/test/dummy/tmp/cache/assets/DAB/300/sprockets%2Fe822e0c7ed2416485de1f78ded67ed0f +0 -0
  2284. data/test/dummy/tmp/cache/assets/DAB/5A0/sprockets%2F567452effadda63e1508f90dbbd749d8 +0 -0
  2285. data/test/dummy/tmp/cache/assets/DAB/6A0/sprockets%2F12f3e9f27333f32b79e8bc767becabe8 +0 -0
  2286. data/test/dummy/tmp/cache/assets/DAB/B40/sprockets%2Fe7a1c88beb7a5f83f45fb0e891d7238a +0 -0
  2287. data/test/dummy/tmp/cache/assets/DAC/C10/sprockets%2Fcaf97fa0f6dc423148fc81fcc9a95745 +0 -0
  2288. data/test/dummy/tmp/cache/assets/DAC/F40/sprockets%2F3fe1cc6f892dead945802da28ef59e05 +0 -0
  2289. data/test/dummy/tmp/cache/assets/DAD/170/sprockets%2F33a1add4ee0283afc041dc1f00089bbc +0 -0
  2290. data/test/dummy/tmp/cache/assets/DAD/970/sprockets%2Ff79fae2ac5d828366ed1bf9c37c90a19 +0 -0
  2291. data/test/dummy/tmp/cache/assets/DAD/C30/sprockets%2Fc367fd7fbb14376f138cb80c5e8dfd84 +0 -0
  2292. data/test/dummy/tmp/cache/assets/DAD/D40/sprockets%2F6d8bbc6aa4f33f5a67f0890b89a8da96 +0 -0
  2293. data/test/dummy/tmp/cache/assets/DAE/8E0/sprockets%2Faee3dc2a887eeee336ef1893818372bd +0 -0
  2294. data/test/dummy/tmp/cache/assets/DAE/EC0/sprockets%2F709cc8de3d84dd37b9f9890b46ba2ec2 +0 -0
  2295. data/test/dummy/tmp/cache/assets/DAE/F00/sprockets%2F872b872dfa0f87e987bff32f5a1a54be +0 -0
  2296. data/test/dummy/tmp/cache/assets/DAF/0B0/sprockets%2F127d0c8a454b2b959c5effcc6ff7d829 +0 -0
  2297. data/test/dummy/tmp/cache/assets/DAF/250/sprockets%2Fbea10954ca85a6d397d894df6c8b8ed2 +0 -0
  2298. data/test/dummy/tmp/cache/assets/DAF/790/sprockets%2F87f6dce871aee8d0ae1345c1dd799b56 +0 -0
  2299. data/test/dummy/tmp/cache/assets/DB0/5E0/sprockets%2F111dcb8dd1015bcb905d15ca50d5ef3b +0 -0
  2300. data/test/dummy/tmp/cache/assets/DB0/960/sprockets%2Fdca36b7d8f8dc27d38094987cf2aae55 +0 -0
  2301. data/test/dummy/tmp/cache/assets/DB0/D90/sprockets%2Fc73eda334eac400b1cc12732b90dde0f +0 -0
  2302. data/test/dummy/tmp/cache/assets/DB1/010/sprockets%2Fe4b277e9d34f824ce15c697ff7d1aca9 +0 -0
  2303. data/test/dummy/tmp/cache/assets/DB2/A30/sprockets%2Fdf6f888ba2c274b3982978dc7b30dbfd +0 -0
  2304. data/test/dummy/tmp/cache/assets/DB2/FF0/sprockets%2F42d355fbbe8da4ff9d9c27695194dc5c +0 -0
  2305. data/test/dummy/tmp/cache/assets/DB3/2B0/sprockets%2F89f4a28a5f96c6c9dd5043abe7c5ed85 +0 -0
  2306. data/test/dummy/tmp/cache/assets/DB3/2E0/sprockets%2F67b0e900efa0080eaa416eb03cd2db8c +0 -0
  2307. data/test/dummy/tmp/cache/assets/DB3/3A0/sprockets%2F0fec5ca6626996faa5b0d6569fc98e5c +0 -0
  2308. data/test/dummy/tmp/cache/assets/DB3/3F0/sprockets%2F8b3975e48c4b9ca4685fbd9d0ca595eb +0 -0
  2309. data/test/dummy/tmp/cache/assets/DB3/400/sprockets%2Fb34576fbf3a08f9e99aed924aa68b79a +0 -0
  2310. data/test/dummy/tmp/cache/assets/DB3/560/sprockets%2F09265ecfe8875619e47c3f4deda73cdc +0 -0
  2311. data/test/dummy/tmp/cache/assets/DB3/9C0/sprockets%2Ff15f826b5db25c2055ce9dff84898eeb +0 -0
  2312. data/test/dummy/tmp/cache/assets/DB3/B20/sprockets%2F2c83285ff94ab2f4a688c71eafffa399 +0 -0
  2313. data/test/dummy/tmp/cache/assets/DB4/4F0/sprockets%2F296e2f64ef5c7fe29d69fbac5cb29714 +0 -0
  2314. data/test/dummy/tmp/cache/assets/DB4/5A0/sprockets%2Ff6c4c504c300bcf2baa95ca8923dcb10 +0 -0
  2315. data/test/dummy/tmp/cache/assets/DB4/670/sprockets%2F2b5f4f8f5ad218e9ec53f9fde943254e +0 -0
  2316. data/test/dummy/tmp/cache/assets/DB4/730/sprockets%2F22a0f9985f2ee491b998e9a3dfbbb7c6 +0 -0
  2317. data/test/dummy/tmp/cache/assets/DB4/A70/sprockets%2F11aaa7b192ebb5a461e5bed0138e4a7b +0 -0
  2318. data/test/dummy/tmp/cache/assets/DB4/F60/sprockets%2F60712b2ed0cb5fc6cb6442fae3cd203b +0 -0
  2319. data/test/dummy/tmp/cache/assets/DB5/460/sprockets%2Fd2eaa3b6abf0aded1e25055b303b9691 +0 -0
  2320. data/test/dummy/tmp/cache/assets/DB5/F30/sprockets%2Fd5925f7c79df0ad0e8d956eed84483ab +0 -0
  2321. data/test/dummy/tmp/cache/assets/DB6/320/sprockets%2Fe559edb9cc5663f6d55937a68eb4d4bc +0 -0
  2322. data/test/dummy/tmp/cache/assets/DB6/860/sprockets%2F1081c1eb464dd58cacda381baed4b314 +0 -0
  2323. data/test/dummy/tmp/cache/assets/DB6/AB0/sprockets%2F3e996efd32efb4a9e4d66b63ee960e90 +0 -0
  2324. data/test/dummy/tmp/cache/assets/DB6/DF0/sprockets%2Ff660ad1581acfc05d77bd33fa14bb1a2 +0 -0
  2325. data/test/dummy/tmp/cache/assets/DB7/BB0/sprockets%2Fde6bb518e6ea4e2e15095c2ba0f01ba3 +0 -0
  2326. data/test/dummy/tmp/cache/assets/DB7/D70/sprockets%2F4f4fff578c1ce749a4765f8a896aa4ca +0 -0
  2327. data/test/dummy/tmp/cache/assets/DB8/2C0/sprockets%2F9e22b0c5e3ecd370519aa5bf003bdaa9 +0 -0
  2328. data/test/dummy/tmp/cache/assets/DB9/3C0/sprockets%2Fdba147ede0e572d80d29cf00bc52c2c1 +0 -0
  2329. data/test/dummy/tmp/cache/assets/DB9/430/sprockets%2F6f49fd89105cc57e75ce798e62a9aaeb +0 -0
  2330. data/test/dummy/tmp/cache/assets/DB9/990/sprockets%2F2b66d14fe1dcac5ca8f422b112af50e7 +0 -0
  2331. data/test/dummy/tmp/cache/assets/DB9/9A0/sprockets%2F24cedfba35e2cda224264eda76d120a8 +0 -0
  2332. data/test/dummy/tmp/cache/assets/DB9/BC0/sprockets%2F48ba40ced57f11b12ceae162c9bef050 +0 -0
  2333. data/test/dummy/tmp/cache/assets/DBA/3B0/sprockets%2Ffd06bc030bc3ae7a13682ad3ce3e37f4 +0 -0
  2334. data/test/dummy/tmp/cache/assets/DBA/E30/sprockets%2F6542cedc93fecba4076b31ea1221aae7 +0 -0
  2335. data/test/dummy/tmp/cache/assets/DBB/3C0/sprockets%2Fa56fb241a0612acb8b6b88ae23c6ce5a +0 -0
  2336. data/test/dummy/tmp/cache/assets/DBB/450/sprockets%2F4d412bacafeebff011918e21e201de68 +0 -0
  2337. data/test/dummy/tmp/cache/assets/DBB/950/sprockets%2Fbb3a309979ecb4dbf669f6fe2778e5c7 +0 -0
  2338. data/test/dummy/tmp/cache/assets/DBB/B70/sprockets%2Fd1997fbb98dd249b8586fe8e127bc4af +0 -0
  2339. data/test/dummy/tmp/cache/assets/DBB/FF0/sprockets%2F071723b7dec01ca21f5d72c4d7b3cfea +0 -0
  2340. data/test/dummy/tmp/cache/assets/DBC/A70/sprockets%2F0f7da71f1d2e23fc55bc2441e0efa41f +0 -0
  2341. data/test/dummy/tmp/cache/assets/DBC/C20/sprockets%2Ffb9d59e753f1e696fc861e74a6cf0d6f +0 -0
  2342. data/test/dummy/tmp/cache/assets/DBC/D60/sprockets%2Fa5d629edbdaa0ee111fe4170093a6de4 +0 -0
  2343. data/test/dummy/tmp/cache/assets/DBC/FD0/sprockets%2Fcb32366dc0b2c1f2a69ebe48dbb139c0 +0 -0
  2344. data/test/dummy/tmp/cache/assets/DBC/FE0/sprockets%2Fe78f2cc2dd0bd01854bf2bb3bd1e0276 +0 -0
  2345. data/test/dummy/tmp/cache/assets/DBD/040/sprockets%2Fbab3c9aeedf12b684be7a100458ad308 +0 -0
  2346. data/test/dummy/tmp/cache/assets/DBD/3E0/sprockets%2Fdee13da1110dd9fafe3495e91da40d03 +0 -0
  2347. data/test/dummy/tmp/cache/assets/DBD/B10/sprockets%2Ff56450f3fc25ab33ef1114be384acafb +0 -0
  2348. data/test/dummy/tmp/cache/assets/DBD/C00/sprockets%2Fc10a55b9aebe3ad6d5730d08c029bb7d +0 -0
  2349. data/test/dummy/tmp/cache/assets/DBD/DF0/sprockets%2F687f97d06e7aab4e768668ffbe5f2f0d +0 -0
  2350. data/test/dummy/tmp/cache/assets/DBE/150/sprockets%2F2b5bf9bf22a03d0919cf1bab468a8a2d +0 -0
  2351. data/test/dummy/tmp/cache/assets/DBE/2C0/sprockets%2F551e2bb3e1bc603f1d8e829b24bf4ada +0 -0
  2352. data/test/dummy/tmp/cache/assets/DBE/3F0/sprockets%2F98ba39074d64ed3c3d0ab1a8adc3f13a +0 -0
  2353. data/test/dummy/tmp/cache/assets/DBE/880/sprockets%2F90cda2c525af06a2df3314ff03fe8e0d +0 -0
  2354. data/test/dummy/tmp/cache/assets/DBE/EB0/sprockets%2F472ff473ee0da1ca1f0ab06578b38bca +0 -0
  2355. data/test/dummy/tmp/cache/assets/DBE/EF0/sprockets%2Fab6106e1a9bb5bcda65cb06d8e9801c3 +0 -0
  2356. data/test/dummy/tmp/cache/assets/DBF/060/sprockets%2Ff0805abfb20e90ee57bc466cab5cb514 +0 -0
  2357. data/test/dummy/tmp/cache/assets/DBF/290/sprockets%2F8acf830eb40f48cfb303c151edb4b25f +0 -0
  2358. data/test/dummy/tmp/cache/assets/DBF/A50/sprockets%2Fb61db5cd1576d6aacf374dbcd02a8217 +0 -0
  2359. data/test/dummy/tmp/cache/assets/DBF/B00/sprockets%2Fec730ac85ab0e8ccfaf212b57b083f07 +0 -0
  2360. data/test/dummy/tmp/cache/assets/DC0/1A0/sprockets%2Fc9de417a45eea1220205b4ecdc5e7d7a +0 -0
  2361. data/test/dummy/tmp/cache/assets/DC0/8A0/sprockets%2F923f5de8d5a0de54dec61b9002cdad11 +0 -0
  2362. data/test/dummy/tmp/cache/assets/DC0/A30/sprockets%2F2e07ac4a2323f9fca40c5defbc8a6317 +0 -0
  2363. data/test/dummy/tmp/cache/assets/DC0/D50/sprockets%2Fa097614dbabbcbf1b8cd36b662d64c24 +0 -0
  2364. data/test/dummy/tmp/cache/assets/DC0/E00/sprockets%2Ffc5fa9a7e991958a6576b725fdbdcc89 +0 -0
  2365. data/test/dummy/tmp/cache/assets/DC0/F50/sprockets%2Fcec2b1e1bda6d7a4b0ef3a381837f930 +0 -0
  2366. data/test/dummy/tmp/cache/assets/DC1/610/sprockets%2Fec13df1137f894b0c53bdbb8751abaa7 +0 -0
  2367. data/test/dummy/tmp/cache/assets/DC2/120/sprockets%2Fec38aced45c12d13f8c60e0b4dc36d45 +0 -0
  2368. data/test/dummy/tmp/cache/assets/DC2/330/sprockets%2Fbd56a181b5c2e63215f0b46acc9fdd3e +0 -0
  2369. data/test/dummy/tmp/cache/assets/DC2/4A0/sprockets%2Fbb9ede156dcc1c81616c9a4fa033ee03 +0 -0
  2370. data/test/dummy/tmp/cache/assets/DC2/940/sprockets%2F8d48c857f51edc4c3c0fd1a0cf0514ab +0 -0
  2371. data/test/dummy/tmp/cache/assets/DC2/C00/sprockets%2Fa12e90d33a80cdc4ffe1f2ea012689cf +0 -0
  2372. data/test/dummy/tmp/cache/assets/DC3/160/sprockets%2F129f0ad08b545cfedaf5ab12c5059de5 +0 -0
  2373. data/test/dummy/tmp/cache/assets/DC3/530/sprockets%2F757efdc940de1fa101dda5fb836140bd +0 -0
  2374. data/test/dummy/tmp/cache/assets/DC3/5C0/sprockets%2F555de405a7c6e58ba794dbf1d01b4aba +0 -0
  2375. data/test/dummy/tmp/cache/assets/DC3/D20/sprockets%2Fcb4fb9601f3ed45b1a50ed39ee614a2e +0 -0
  2376. data/test/dummy/tmp/cache/assets/DC3/D20/sprockets%2Ff2e1a2c5129bce4971a7af2c0eeae546 +0 -0
  2377. data/test/dummy/tmp/cache/assets/DC3/FA0/sprockets%2Fd25ccfdee31d877151b24a9dab2a90b6 +0 -0
  2378. data/test/dummy/tmp/cache/assets/DC4/310/sprockets%2Feb91f4262ece3b0f3cc25e48fd254ab2 +0 -0
  2379. data/test/dummy/tmp/cache/assets/DC4/A20/sprockets%2Fb9ca8fae522bc3346e01cce6a5c1974b +0 -0
  2380. data/test/dummy/tmp/cache/assets/DC4/E50/sprockets%2F8de30090e0349c483201dcf3dfddecdc +0 -0
  2381. data/test/dummy/tmp/cache/assets/DC6/BB0/sprockets%2Fc650cd342bf1d6306bf614ebcebe56f6 +0 -0
  2382. data/test/dummy/tmp/cache/assets/DC6/CA0/sprockets%2Fdc3aa6f23c59d97b11825af4ef3c0a3e +0 -0
  2383. data/test/dummy/tmp/cache/assets/DC6/F20/sprockets%2F472c8761d34a4a0af40eebf8b9d6b0af +0 -0
  2384. data/test/dummy/tmp/cache/assets/DC7/280/sprockets%2F270ea0cbdfd05cc48eff704780066cdd +0 -0
  2385. data/test/dummy/tmp/cache/assets/DC7/780/sprockets%2Fc21ca53b58d0e0754def4bfefa7a5076 +0 -0
  2386. data/test/dummy/tmp/cache/assets/DC7/7D0/sprockets%2F69e6da13074b1135afe6ff8cadd2be15 +0 -0
  2387. data/test/dummy/tmp/cache/assets/DC7/8F0/sprockets%2Fc7f71dae2d71a0dec9ceb9237f16124b +0 -0
  2388. data/test/dummy/tmp/cache/assets/DC7/BC0/sprockets%2Fa6b9f243219b55edccdc362a64cb4ed4 +0 -0
  2389. data/test/dummy/tmp/cache/assets/DC7/EE0/sprockets%2Fbcfa5f1dd43080040d9f06cddf0d95c9 +0 -0
  2390. data/test/dummy/tmp/cache/assets/DC8/3A0/sprockets%2F0a82147fab265bfcb884f782beafc0b4 +0 -0
  2391. data/test/dummy/tmp/cache/assets/DC8/410/sprockets%2Fcddde980ab9e710d80161e09fa3dba92 +0 -0
  2392. data/test/dummy/tmp/cache/assets/DC8/4D0/sprockets%2Fda2a6be6764d1e4fbfbd95e8d821111a +0 -0
  2393. data/test/dummy/tmp/cache/assets/DC8/590/sprockets%2F804613cab66aacfd4fae5f0ea275692e +0 -0
  2394. data/test/dummy/tmp/cache/assets/DC8/670/sprockets%2F47b5310b4dbf58b2b8dcd6ba98c05db6 +0 -0
  2395. data/test/dummy/tmp/cache/assets/DC8/9E0/sprockets%2F0fad3b3f1ed38ea3041c6f6f382c79da +0 -0
  2396. data/test/dummy/tmp/cache/assets/DC8/B00/sprockets%2F6f814a096f8ae113dbede4cdf243fb31 +0 -0
  2397. data/test/dummy/tmp/cache/assets/DC8/D80/sprockets%2Ff4236d1b64f8ea9ebc1a1aea0d596b38 +0 -0
  2398. data/test/dummy/tmp/cache/assets/DC8/E20/sprockets%2F3a5db4f8c6a4749fd24a05f1e062eebc +0 -0
  2399. data/test/dummy/tmp/cache/assets/DC8/FF0/sprockets%2F10f2f3fdbf1f2a8c0cac8d6394cf8207 +0 -0
  2400. data/test/dummy/tmp/cache/assets/DC9/3C0/sprockets%2F7c707b5f3a1c6bc1fd26ea9f8a2b9b32 +0 -0
  2401. data/test/dummy/tmp/cache/assets/DC9/7E0/sprockets%2Fa4efa2a36e1a334fb529dd5a909f6fb3 +0 -0
  2402. data/test/dummy/tmp/cache/assets/DC9/BC0/sprockets%2F42d9ff9f511d0c7e072f24bbfc305cce +0 -0
  2403. data/test/dummy/tmp/cache/assets/DCA/2C0/sprockets%2Fb48833de6cb1db246ca8fbaae441848c +0 -0
  2404. data/test/dummy/tmp/cache/assets/DCA/310/sprockets%2F032481b7ad8da4f7ecc2ea13fd7497ac +0 -0
  2405. data/test/dummy/tmp/cache/assets/DCA/920/sprockets%2Ff39dbfc5b7b633a9a1dd3653a64cd5b3 +0 -0
  2406. data/test/dummy/tmp/cache/assets/DCB/620/sprockets%2Ff03f8d235d0b22d486dfd1f3dddf0f19 +0 -0
  2407. data/test/dummy/tmp/cache/assets/DCB/7F0/sprockets%2F7e1ceccd440d8b325b15b95ee45af1f7 +0 -0
  2408. data/test/dummy/tmp/cache/assets/DCB/950/sprockets%2F39a5640eb2a1fe3e354d2fef56a5f6da +0 -0
  2409. data/test/dummy/tmp/cache/assets/DCB/D50/sprockets%2F285bfff127e41bfcab2ce7941eba9343 +0 -0
  2410. data/test/dummy/tmp/cache/assets/DCC/0E0/sprockets%2F3a58dd8b234afe2902cf72f8eaa3d6f1 +0 -0
  2411. data/test/dummy/tmp/cache/assets/DCC/490/sprockets%2Fef191a783bb65fade10ba88a9a43e1f6 +0 -0
  2412. data/test/dummy/tmp/cache/assets/DCC/610/sprockets%2F7e59dfc897a88b7e96d649cdf0d1e6f9 +0 -0
  2413. data/test/dummy/tmp/cache/assets/DCC/F20/sprockets%2Fd01120eaba8c37dcc74adc56996cf8b7 +0 -0
  2414. data/test/dummy/tmp/cache/assets/DCD/090/sprockets%2Fe46caf85209b6ebb213aeafe63cf0687 +0 -0
  2415. data/test/dummy/tmp/cache/assets/DCD/290/sprockets%2Ffdfdf7ac4922a4fc2be372d4125726fc +0 -0
  2416. data/test/dummy/tmp/cache/assets/DCD/6C0/sprockets%2Fe0d70bd50ef15ccf46fad2cb6629687a +0 -0
  2417. data/test/dummy/tmp/cache/assets/DCD/9B0/sprockets%2F2d5cfcb4da95df6b3ea2821f43336ed7 +0 -0
  2418. data/test/dummy/tmp/cache/assets/DCD/C10/sprockets%2Fdaff331d5829710b1fd4fc6b95cb62ce +0 -0
  2419. data/test/dummy/tmp/cache/assets/DCD/DE0/sprockets%2F8ac7911da2d373a2ea6dadc78d5e77d1 +0 -0
  2420. data/test/dummy/tmp/cache/assets/DCD/F50/sprockets%2Fcfbad427aaa6d9e29757650fa417ece0 +0 -0
  2421. data/test/dummy/tmp/cache/assets/DCE/120/sprockets%2F2717e6fdc18f2a78ec7ad543cada554a +0 -0
  2422. data/test/dummy/tmp/cache/assets/DCE/560/sprockets%2F612c2e344718626fca3be27ccff6bdef +0 -0
  2423. data/test/dummy/tmp/cache/assets/DCE/BB0/sprockets%2F3d240ff1ffacfc5a8a42832554dfcb88 +0 -0
  2424. data/test/dummy/tmp/cache/assets/DCE/BF0/sprockets%2Ff2114c9c5f93cd1afbe449b6f2b3ce55 +0 -0
  2425. data/test/dummy/tmp/cache/assets/DCE/D80/sprockets%2Fa8e3b62e0d5bd2a64fb78e1990eb73bd +0 -0
  2426. data/test/dummy/tmp/cache/assets/DCE/E50/sprockets%2Fd1ea6e93b6e9769ac6efb0d1b03c5e24 +0 -0
  2427. data/test/dummy/tmp/cache/assets/DCE/E70/sprockets%2Fa3de81b32c9ba72be70ed91fbd48638c +0 -0
  2428. data/test/dummy/tmp/cache/assets/DCF/100/sprockets%2Fcf70cfe01aee0b6c8725e39eec353e46 +0 -0
  2429. data/test/dummy/tmp/cache/assets/DCF/180/sprockets%2Fa0fb6e0ea7cad056e5e49e3d875c40d8 +0 -0
  2430. data/test/dummy/tmp/cache/assets/DCF/310/sprockets%2F4cb6d36bdf46eb44c23df73ff6127b6b +0 -0
  2431. data/test/dummy/tmp/cache/assets/DCF/5D0/sprockets%2F95dcbbc1e3f58076e0fbc297cbaf9124 +0 -0
  2432. data/test/dummy/tmp/cache/assets/DCF/6B0/sprockets%2F6039db30eee2cb1da99f025e7d1e6f7d +0 -0
  2433. data/test/dummy/tmp/cache/assets/DCF/6F0/sprockets%2Fb35295b9c0ed38dd040ea475edfea37f +0 -0
  2434. data/test/dummy/tmp/cache/assets/DCF/AC0/sprockets%2Fca3f2c931d05fd9271edb9db0f19c92f +0 -0
  2435. data/test/dummy/tmp/cache/assets/DCF/AE0/sprockets%2F900dedad9af2bf2a03f65987d776aa0e +0 -0
  2436. data/test/dummy/tmp/cache/assets/DCF/DB0/sprockets%2F7fe8eb0dc1c379b7c5a2a5c9ca3592e2 +0 -0
  2437. data/test/dummy/tmp/cache/assets/DD0/790/sprockets%2Fadd5869be41bfaf62ef0904173eeae36 +0 -0
  2438. data/test/dummy/tmp/cache/assets/DD0/DB0/sprockets%2Fa560efdeac84f667d861e99f12a1aa1c +0 -0
  2439. data/test/dummy/tmp/cache/assets/DD1/0F0/sprockets%2F2d5d6f23b583efe3a07a5ecd89fb192a +0 -0
  2440. data/test/dummy/tmp/cache/assets/DD1/170/sprockets%2F152cb8bdf7b33b44e8d9aad9e33e7f14 +0 -0
  2441. data/test/dummy/tmp/cache/assets/DD1/430/sprockets%2F6fab6dee09e2a1fa196299e026b61efd +0 -0
  2442. data/test/dummy/tmp/cache/assets/DD1/4D0/sprockets%2Fdce63533526a840e5c29ae9cfdab4ef5 +0 -0
  2443. data/test/dummy/tmp/cache/assets/DD1/5E0/sprockets%2F55e02d2a574d7be1a47dffd6e61cfb85 +0 -0
  2444. data/test/dummy/tmp/cache/assets/DD1/920/sprockets%2F38abeb9c5dcfe1cd075d87e82246b8a0 +0 -0
  2445. data/test/dummy/tmp/cache/assets/DD1/E40/sprockets%2Fd589cebd39090ef2d2c01ce821f6ffb4 +0 -0
  2446. data/test/dummy/tmp/cache/assets/DD1/F00/sprockets%2Fc1fcf69ebbcac068cdde63655c183634 +0 -0
  2447. data/test/dummy/tmp/cache/assets/DD2/0D0/sprockets%2F88ac4db9ccf889dbf2b241ef205b643b +0 -0
  2448. data/test/dummy/tmp/cache/assets/DD2/330/sprockets%2Fd469365fcbc57cbef0adf2a6661190ff +0 -0
  2449. data/test/dummy/tmp/cache/assets/DD2/690/sprockets%2F1af8faaf194cf7b22c403e20d7f98de8 +0 -0
  2450. data/test/dummy/tmp/cache/assets/DD2/720/sprockets%2Fa7e3feaca76d2fd8f11d79a30938b70d +0 -0
  2451. data/test/dummy/tmp/cache/assets/DD2/790/sprockets%2F5a497b1a59b46ddbf649e70e1adf5c0f +0 -0
  2452. data/test/dummy/tmp/cache/assets/DD2/A10/sprockets%2F141ae3d75a58f3f39b0e8fa0fa7ed77c +0 -0
  2453. data/test/dummy/tmp/cache/assets/DD2/D70/sprockets%2F471feef5b3f8b0eabe323a799a257c5d +0 -0
  2454. data/test/dummy/tmp/cache/assets/DD2/E70/sprockets%2Fe730043939f99ffbd01c5ed4cace55ad +0 -0
  2455. data/test/dummy/tmp/cache/assets/DD3/110/sprockets%2F209deabb73d6ffa92664ad4959ebde11 +0 -0
  2456. data/test/dummy/tmp/cache/assets/DD3/150/sprockets%2Fbae8affcbd247de88930e215e7d4d460 +0 -0
  2457. data/test/dummy/tmp/cache/assets/DD3/320/sprockets%2F5bee8af9a92d83b7e208c81bfff60b12 +0 -0
  2458. data/test/dummy/tmp/cache/assets/DD3/3C0/sprockets%2F670f4b0d3e1cd2c7e5edbd9a8b489b46 +0 -0
  2459. data/test/dummy/tmp/cache/assets/DD4/C60/sprockets%2Fa8943e2bebcb9b6e254b3864ec8b3e5c +0 -0
  2460. data/test/dummy/tmp/cache/assets/DD5/0C0/sprockets%2F0e99e7247af82993003fcaeeb5ddc3cd +0 -0
  2461. data/test/dummy/tmp/cache/assets/DD5/340/sprockets%2Fa6ce8c348d5365e9eb5f9eaaa047d71a +0 -0
  2462. data/test/dummy/tmp/cache/assets/DD5/8B0/sprockets%2F91d4cd95cbcbc61b897ca2843a80f6fd +0 -0
  2463. data/test/dummy/tmp/cache/assets/DD5/930/sprockets%2F5d0bf5434925565bcc5ac9ffb49c1ffc +0 -0
  2464. data/test/dummy/tmp/cache/assets/DD6/1E0/sprockets%2Fdd47599b50e574a8ade74c55eca3d0ed +0 -0
  2465. data/test/dummy/tmp/cache/assets/DD6/8F0/sprockets%2Fbe18b83b44e3d85159fbd32deccfc756 +0 -0
  2466. data/test/dummy/tmp/cache/assets/DD6/B10/sprockets%2F1b4327737f681cbdf081ff9bcfe54edb +0 -0
  2467. data/test/dummy/tmp/cache/assets/DD6/B60/sprockets%2F86be7769ab1b85b52fa1c6dedc66db72 +0 -0
  2468. data/test/dummy/tmp/cache/assets/DD7/0E0/sprockets%2F52cf53fdfc217fc4cb025d7877da97cd +0 -0
  2469. data/test/dummy/tmp/cache/assets/DD7/730/sprockets%2F80efa66fc9dc27c8b6384a360b8a7eae +0 -0
  2470. data/test/dummy/tmp/cache/assets/DD7/C10/sprockets%2Fa1637f48f8aece1606cc2729aed6f9cb +0 -0
  2471. data/test/dummy/tmp/cache/assets/DD7/F60/sprockets%2F391f7279bfdbfc62e910e2a1ff75f1fc +0 -0
  2472. data/test/dummy/tmp/cache/assets/DD7/FC0/sprockets%2Fe552dc00585585fbcafc89d98af2b2fa +0 -0
  2473. data/test/dummy/tmp/cache/assets/DD8/980/sprockets%2Feef46de7ca33f529ce7adb095169e3b4 +0 -0
  2474. data/test/dummy/tmp/cache/assets/DD9/000/sprockets%2Ffc576d5de3f0907dad48e0fc5df43a49 +0 -0
  2475. data/test/dummy/tmp/cache/assets/DD9/1A0/sprockets%2F2f65b9e64e6fe4fe309aaeaf5a14c865 +0 -0
  2476. data/test/dummy/tmp/cache/assets/DD9/6F0/sprockets%2Fc265e624ee5dd27cda3868aaa8495fec +0 -0
  2477. data/test/dummy/tmp/cache/assets/DDA/500/sprockets%2F103ae3c64e8c9af97ddfdf278f661b1e +0 -0
  2478. data/test/dummy/tmp/cache/assets/DDB/330/sprockets%2F33596dfd43de9f36bfa8dd47bd408da4 +0 -0
  2479. data/test/dummy/tmp/cache/assets/DDB/E40/sprockets%2Fb413afa11a2c4cbf2ec4a23e45e036db +0 -0
  2480. data/test/dummy/tmp/cache/assets/DDC/C00/sprockets%2F05cf75fea285df8f82c3682eaca89b1e +0 -0
  2481. data/test/dummy/tmp/cache/assets/DDD/370/sprockets%2F016219ffdd478c3c40e6f4efee84da9f +0 -0
  2482. data/test/dummy/tmp/cache/assets/DDD/B00/sprockets%2Fff4d19b3dd289880e7a618fd9aa3cac8 +0 -0
  2483. data/test/dummy/tmp/cache/assets/DDE/860/sprockets%2F8c57c9956b38b6572a9dcd1a6fcbeaf4 +0 -0
  2484. data/test/dummy/tmp/cache/assets/DDE/D00/sprockets%2F74c27cac3ef959ecc8cfd9327b7fa334 +0 -0
  2485. data/test/dummy/tmp/cache/assets/DE0/EA0/sprockets%2Fdbeee979d2b1e6d6b28cde425f84b737 +0 -0
  2486. data/test/dummy/tmp/cache/assets/DE1/390/sprockets%2F1d6b3e8d0c351b537faa02cc1ccc4bd3 +0 -0
  2487. data/test/dummy/tmp/cache/assets/DE1/490/sprockets%2Fced4bd89388e3be73a96b67af27e0cb9 +0 -0
  2488. data/test/dummy/tmp/cache/assets/DE1/DA0/sprockets%2Ffc904392efc8ad2959bb95c14bdaff79 +0 -0
  2489. data/test/dummy/tmp/cache/assets/DE3/310/sprockets%2Fa88eabb20e2ecca3230d5c1a8aa1e485 +0 -0
  2490. data/test/dummy/tmp/cache/assets/DE3/310/sprockets%2Fdd26e8d4e2ba0972c50eba4baa0d134b +0 -0
  2491. data/test/dummy/tmp/cache/assets/DE4/630/sprockets%2F3fbaa3b49828d89831cef787bf9ade6a +0 -0
  2492. data/test/dummy/tmp/cache/assets/DE4/790/sprockets%2Fde774ff5425bb9f0dad9a954ef4ef726 +0 -0
  2493. data/test/dummy/tmp/cache/assets/DE5/610/sprockets%2F9ab8e1cb0f8f692cbb8a387957f3d7fd +0 -0
  2494. data/test/dummy/tmp/cache/assets/DE5/6D0/sprockets%2F6e6fdbc91e3f5879c8c092bab7ff581e +0 -0
  2495. data/test/dummy/tmp/cache/assets/DE5/F60/sprockets%2F20d60b0f1cfaf7c27d5e0ee4c1e21fc0 +0 -0
  2496. data/test/dummy/tmp/cache/assets/DE6/230/sprockets%2Fcfdab95d58360b61999eb6fae7deb649 +0 -0
  2497. data/test/dummy/tmp/cache/assets/DE6/920/sprockets%2Fbf9feba9970af2ae25844f64f6e94f6b +0 -0
  2498. data/test/dummy/tmp/cache/assets/DE6/C60/sprockets%2Faadf89e09dc9d89db8b60fa5d66d6824 +0 -0
  2499. data/test/dummy/tmp/cache/assets/DE6/FF0/sprockets%2F993388d5d17cecccf692ad3e9f8dcc70 +0 -0
  2500. data/test/dummy/tmp/cache/assets/DE7/180/sprockets%2Fa5f5aaa04c00e4fce24c97cbf5411cc4 +0 -0
  2501. data/test/dummy/tmp/cache/assets/DE7/450/sprockets%2F0ff422cad3faf40e061e51edebb321c9 +0 -0
  2502. data/test/dummy/tmp/cache/assets/DE7/750/sprockets%2Fdddda1271b2572dbb85ae180fb21a9bb +0 -0
  2503. data/test/dummy/tmp/cache/assets/DE7/B20/sprockets%2Fa8a0a74dd4ea466074cbdeebf340a1a3 +0 -0
  2504. data/test/dummy/tmp/cache/assets/DE8/A30/sprockets%2F3c1c2c8aab9ef12043bdc6a307bf82eb +0 -0
  2505. data/test/dummy/tmp/cache/assets/DE8/F10/sprockets%2F8beab679ebe7f05e9d4f8b546e0ee279 +0 -0
  2506. data/test/dummy/tmp/cache/assets/DE8/FA0/sprockets%2F93ca8a8d6919cace4cc9d8e69ff82d23 +0 -0
  2507. data/test/dummy/tmp/cache/assets/DE9/340/sprockets%2Fe57938b0cff9802d1e7aebe2cef798e9 +0 -0
  2508. data/test/dummy/tmp/cache/assets/DEA/980/sprockets%2Fc5897a1f996aafff34f555f76a39fbbd +0 -0
  2509. data/test/dummy/tmp/cache/assets/DEA/DF0/sprockets%2Fbda59ab08df48c989fa5ff7de993336b +0 -0
  2510. data/test/dummy/tmp/cache/assets/DEB/340/sprockets%2F0bd787c4c2a1dc1fd7605abf1e53bbb4 +0 -0
  2511. data/test/dummy/tmp/cache/assets/DEB/B70/sprockets%2F03ccc43525fa4dfdd1603a6d4ac8ac6d +0 -0
  2512. data/test/dummy/tmp/cache/assets/DEB/E30/sprockets%2Fcb8889cff8b8fe8b171b93d647deaf07 +0 -0
  2513. data/test/dummy/tmp/cache/assets/DEC/5F0/sprockets%2F410f8c0c1dcf61a1d2dc2a7d3e5bd5e8 +0 -0
  2514. data/test/dummy/tmp/cache/assets/DEE/930/sprockets%2F8e899ec8a7afe2577634ef981ccabcc9 +0 -0
  2515. data/test/dummy/tmp/cache/assets/DEE/C00/sprockets%2Ff040b0f7cea1235fc5f3dc1db8b16e9a +0 -0
  2516. data/test/dummy/tmp/cache/assets/DF0/710/sprockets%2F57eceb7a040cb74c96bde000cc9a8ce0 +0 -0
  2517. data/test/dummy/tmp/cache/assets/DF1/820/sprockets%2F5e1f6fa6109bbba3f92d23bed60d2f1e +0 -0
  2518. data/test/dummy/tmp/cache/assets/DF1/850/sprockets%2Fce67eaf0bbcc74a4d003c2ef0bf54558 +0 -0
  2519. data/test/dummy/tmp/cache/assets/DF2/940/sprockets%2F0ba96f7c7a30ba087e1c1f4c6b4bf2ee +0 -0
  2520. data/test/dummy/tmp/cache/assets/DF2/A10/sprockets%2F081cbd1c386eca6abacfdc8515f34d53 +0 -0
  2521. data/test/dummy/tmp/cache/assets/DF3/7B0/sprockets%2Fbe3e96d12fac88a1e35da10fad9722ca +0 -0
  2522. data/test/dummy/tmp/cache/assets/DF4/0E0/sprockets%2Ffcdd82e15975e6d9ac2bcaa3d0f01a27 +0 -0
  2523. data/test/dummy/tmp/cache/assets/DF4/2C0/sprockets%2F33f40add4c7a49d56dedd7a31dd3bc34 +0 -0
  2524. data/test/dummy/tmp/cache/assets/DF5/1D0/sprockets%2Fa2721b94a4d43f7caab1e8eebe5465ae +0 -0
  2525. data/test/dummy/tmp/cache/assets/DF5/5F0/sprockets%2F21f5be1d0fb58cc648f3f1e106df3fba +0 -0
  2526. data/test/dummy/tmp/cache/assets/DF5/7A0/sprockets%2Fea6fcce2a4274dc6dd8216ebc31c319d +0 -0
  2527. data/test/dummy/tmp/cache/assets/DF5/920/sprockets%2Fa371cd46590babfadb09d81728ea0cff +0 -0
  2528. data/test/dummy/tmp/cache/assets/DF6/880/sprockets%2Fed15aedc9c0ded3a58b4954bcc3222b9 +0 -0
  2529. data/test/dummy/tmp/cache/assets/DF6/CD0/sprockets%2Fd6e3ce6a1e92bef3c6806bb1e24d6d1b +0 -0
  2530. data/test/dummy/tmp/cache/assets/DF8/350/sprockets%2F0e8e61549bcb7ceb12cb02cf7dafc782 +0 -0
  2531. data/test/dummy/tmp/cache/assets/DF8/B00/sprockets%2F3996526da65e50caedbb2d7bc8abe2d1 +0 -0
  2532. data/test/dummy/tmp/cache/assets/DF8/B50/sprockets%2Fcf8e79edfe8092bcd084d3aa2d323ab0 +0 -0
  2533. data/test/dummy/tmp/cache/assets/DF8/CE0/sprockets%2Fb3ab656dfab979e2e7a0082c4a2fe0df +0 -0
  2534. data/test/dummy/tmp/cache/assets/DF8/E50/sprockets%2F13385f98ce306faeb14c3fdd4dbbd3a5 +0 -0
  2535. data/test/dummy/tmp/cache/assets/DF9/120/sprockets%2F27f205fbbf2b0bb9c624d7dc41fec6e7 +0 -0
  2536. data/test/dummy/tmp/cache/assets/DF9/700/sprockets%2Ff30deccfda011d97ad3f63c90d49b5f3 +0 -0
  2537. data/test/dummy/tmp/cache/assets/DF9/7B0/sprockets%2F26fbd83e4add33750acbc4f5ff1b7f51 +0 -0
  2538. data/test/dummy/tmp/cache/assets/DFA/E50/sprockets%2Fc948a8cdd056abf24bcb9351c81fa5fa +0 -0
  2539. data/test/dummy/tmp/cache/assets/DFB/AB0/sprockets%2Ff5d4fbb5ca58aed3c46e1462d3a7bf45 +0 -0
  2540. data/test/dummy/tmp/cache/assets/DFD/910/sprockets%2F6e4aeb3cfdb2adf8086199e003bd4ce8 +0 -0
  2541. data/test/dummy/tmp/cache/assets/DFD/F40/sprockets%2F2c1baed96c603fd0746aed6b9d427cfd +0 -0
  2542. data/test/dummy/tmp/cache/assets/DFE/4F0/sprockets%2F4695a10bc9aa0c898cf21dec63bcc7ff +0 -0
  2543. data/test/dummy/tmp/cache/assets/DFE/6D0/sprockets%2F5ed9adae017357437e0cf4efffb12fb5 +0 -0
  2544. data/test/dummy/tmp/cache/assets/DFF/B90/sprockets%2F9bf7f6a7b2f42f6c25336cffb1c7aa3d +0 -0
  2545. data/test/dummy/tmp/cache/assets/E00/630/sprockets%2Fead43f2cf9d3f3a37a590e212e8fc9ea +0 -0
  2546. data/test/dummy/tmp/cache/assets/E01/250/sprockets%2Fe4282269fdedfc1d2bd08e9d7433ceab +0 -0
  2547. data/test/dummy/tmp/cache/assets/E01/7D0/sprockets%2F771e23888dbed36f017cbb35acdbc8df +0 -0
  2548. data/test/dummy/tmp/cache/assets/E01/E30/sprockets%2Fea636d9c8b493cced44c9eed11d50d1e +0 -0
  2549. data/test/dummy/tmp/cache/assets/E02/270/sprockets%2F5381b3fbea0bdffe7f60e7a68c9d3b44 +0 -0
  2550. data/test/dummy/tmp/cache/assets/E02/2E0/sprockets%2Fb29204c6ef5e6c80fa6a76aec3bf64ef +0 -0
  2551. data/test/dummy/tmp/cache/assets/E02/460/sprockets%2Febdaa5d81edadcf19f17470971a692df +0 -0
  2552. data/test/dummy/tmp/cache/assets/E02/470/sprockets%2F09b78eecc03a56bf09cbe5d73a49a8ce +0 -0
  2553. data/test/dummy/tmp/cache/assets/E02/560/sprockets%2Fc9835ca26fea59cccb5eb03865cbad58 +0 -0
  2554. data/test/dummy/tmp/cache/assets/E02/6B0/sprockets%2Fb0c6cb515e5ef58ec2b8c40f9c75dad7 +0 -0
  2555. data/test/dummy/tmp/cache/assets/E02/9E0/sprockets%2F3be9c22c954bbcea0c7ef648e5d3ff15 +0 -0
  2556. data/test/dummy/tmp/cache/assets/E03/520/sprockets%2Fb0bc6a9ad234b985b729bdecbc93c7d9 +0 -0
  2557. data/test/dummy/tmp/cache/assets/E03/8C0/sprockets%2Fdddca472be9884cdfe6af78222bad074 +0 -0
  2558. data/test/dummy/tmp/cache/assets/E03/E10/sprockets%2Ff973aa441beed766f88d05a5afe3b4ae +0 -0
  2559. data/test/dummy/tmp/cache/assets/E04/2F0/sprockets%2Fa16d6dfb55f306bacadfcc65ba936989 +0 -0
  2560. data/test/dummy/tmp/cache/assets/E04/730/sprockets%2F583c8db59edef3f0c5b7e336e284babb +0 -0
  2561. data/test/dummy/tmp/cache/assets/E04/780/sprockets%2F3cacfdba6603ee6a76d7626e6d9ad53f +0 -0
  2562. data/test/dummy/tmp/cache/assets/E04/B60/sprockets%2F67fde7c8e76f5ea08e905cc2b641caab +0 -0
  2563. data/test/dummy/tmp/cache/assets/E04/BB0/sprockets%2F27aa47e7bad23d38389eae6a436efdfc +0 -0
  2564. data/test/dummy/tmp/cache/assets/E05/2A0/sprockets%2Fde0ab0df6698a6bc364e6c9e847bcc3c +0 -0
  2565. data/test/dummy/tmp/cache/assets/E05/940/sprockets%2Fa7342fe6aaeca22f6f9474c16f77dfcc +0 -0
  2566. data/test/dummy/tmp/cache/assets/E05/9A0/sprockets%2Ffbf122467d4e4b4d1bbc6fdc78a85d8f +0 -0
  2567. data/test/dummy/tmp/cache/assets/E06/710/sprockets%2Fee1f8c455d6c11ac74bf1eef2d3c799d +0 -0
  2568. data/test/dummy/tmp/cache/assets/E06/B20/sprockets%2Fba3bff72fd31e9b292e1626efff5d82d +0 -0
  2569. data/test/dummy/tmp/cache/assets/E06/BC0/sprockets%2F0e410c76d8b9975ac0e8ed9dfbcad4f3 +0 -0
  2570. data/test/dummy/tmp/cache/assets/E06/C00/sprockets%2F454dec05493096cc77cae8bfef7a7cba +0 -0
  2571. data/test/dummy/tmp/cache/assets/E07/F70/sprockets%2F482a5de5a6dadcc2b4d8778a8faf0e86 +0 -0
  2572. data/test/dummy/tmp/cache/assets/E09/210/sprockets%2Fa1e78b1bf197e2c7d2dea09ade69fd68 +0 -0
  2573. data/test/dummy/tmp/cache/assets/E09/290/sprockets%2F1d76236f1ae4e9f939daf9d4fe0b5eab +0 -0
  2574. data/test/dummy/tmp/cache/assets/E09/550/sprockets%2F0bbdef332e5e3c32f4ffd8989c6c7ad4 +0 -0
  2575. data/test/dummy/tmp/cache/assets/E0A/330/sprockets%2Fb889aacf3c5b1287fa490ae24ee9d8df +0 -0
  2576. data/test/dummy/tmp/cache/assets/E0B/200/sprockets%2Ff177bd5ef30963eeefc8d15d0eff354d +0 -0
  2577. data/test/dummy/tmp/cache/assets/E0B/CD0/sprockets%2Feb97c4db2f3b997e9500fbcd840fcee4 +0 -0
  2578. data/test/dummy/tmp/cache/assets/E0D/350/sprockets%2Fc6edebe6ed17558da6ed0ee584914ee3 +0 -0
  2579. data/test/dummy/tmp/cache/assets/E0D/8B0/sprockets%2Ffbca95fe1efe7e13f7970a654886aacc +0 -0
  2580. data/test/dummy/tmp/cache/assets/E0E/850/sprockets%2F9e16585b5e9e67d2ad3bfc79fe3c3cbb +0 -0
  2581. data/test/dummy/tmp/cache/assets/E0F/4F0/sprockets%2Fa3272540abfe5c98fe7e63a98fde7fcc +0 -0
  2582. data/test/dummy/tmp/cache/assets/E0F/5D0/sprockets%2F8f5ef8baff83ddff0818be088bbb1853 +0 -0
  2583. data/test/dummy/tmp/cache/assets/E11/EC0/sprockets%2Fd75c4edbd1e28d4f149e777df905ebdf +0 -0
  2584. data/test/dummy/tmp/cache/assets/E13/A80/sprockets%2Fbac5968b0fd53fd82c909858adfeac9f +0 -0
  2585. data/test/dummy/tmp/cache/assets/E13/DA0/sprockets%2Fc5017eb7eedaca0008cf0fb35ea37b1b +0 -0
  2586. data/test/dummy/tmp/cache/assets/E13/DA0/sprockets%2Febedc0c00a2810be6e2dfaa6b155ca95 +0 -0
  2587. data/test/dummy/tmp/cache/assets/E16/0C0/sprockets%2F2bccb375c7950ce793eebff682d8fe7f +0 -0
  2588. data/test/dummy/tmp/cache/assets/E16/890/sprockets%2F25d48ca77decab21aa4e144a30aed4ed +0 -0
  2589. data/test/dummy/tmp/cache/assets/E16/E40/sprockets%2Fbb69b561797ceeecead7925783b6feaf +0 -0
  2590. data/test/dummy/tmp/cache/assets/E19/800/sprockets%2F3283b2bd65f095fded0b1aaaeda19ea1 +0 -0
  2591. data/test/dummy/tmp/cache/assets/E19/BE0/sprockets%2F4d4cd0209cbbd0a14c6bb7ceeab97b62 +0 -0
  2592. data/test/dummy/tmp/cache/assets/E1A/330/sprockets%2F5d3fee1ad3cab203a53ee8c7aa3428db +0 -0
  2593. data/test/dummy/tmp/cache/assets/E1C/EF0/sprockets%2F6bfdb8efbdf13897c99efc9944a7ad34 +0 -0
  2594. data/test/dummy/tmp/cache/assets/E1C/FC0/sprockets%2F589c8b2bb3d0ef15abcda1e262b07dcd +0 -0
  2595. data/test/dummy/tmp/cache/assets/E1D/8F0/sprockets%2Febcd95ad06f1ab89fe54aa1b0aca1448 +0 -0
  2596. data/test/dummy/tmp/cache/assets/E1F/CA0/sprockets%2Ffb153c81fcdff3d13c8fa84c1f20caa3 +0 -0
  2597. data/test/dummy/tmp/cache/assets/E20/010/sprockets%2F8cb66cce4dde9b6a6e89f19e86fe096d +0 -0
  2598. data/test/dummy/tmp/cache/assets/E20/FA0/sprockets%2Fd6da9bcad0bfd4362f1726adda8b1d62 +0 -0
  2599. data/test/dummy/tmp/cache/assets/E20/FE0/sprockets%2F0fdc8a5cb3bb74767d15fb2b0feaf1d1 +0 -0
  2600. data/test/dummy/tmp/cache/assets/E22/0C0/sprockets%2Fd2cafc37db0bfb5cfd12ed623fb90681 +0 -0
  2601. data/test/dummy/tmp/cache/assets/E22/640/sprockets%2Fa79cffda9ea30a3c7a346db03f6eb30d +0 -0
  2602. data/test/dummy/tmp/cache/assets/E24/0F0/sprockets%2F2fd0d00a336b9aadafdcd036597ff9bc +0 -0
  2603. data/test/dummy/tmp/cache/assets/E24/2B0/sprockets%2Fd48b5664b861eaba2cd9aef35ebab2a4 +0 -0
  2604. data/test/dummy/tmp/cache/assets/E24/BE0/sprockets%2Fa312aeac9f17cbfcfb3ea0c0de779509 +0 -0
  2605. data/test/dummy/tmp/cache/assets/E24/C30/sprockets%2Fab80a42e61baf5bc74ec668ed4d3a6bc +0 -0
  2606. data/test/dummy/tmp/cache/assets/E26/6A0/sprockets%2Fcf2fb4bac4d1e8b2a5b5b9a8f85c361b +0 -0
  2607. data/test/dummy/tmp/cache/assets/E28/120/sprockets%2F1eb7accde46b360442adaf08beaf789d +0 -0
  2608. data/test/dummy/tmp/cache/assets/E28/290/sprockets%2Ffdb3a8a37fb515b9dc90614b4dab7bdf +0 -0
  2609. data/test/dummy/tmp/cache/assets/E28/A80/sprockets%2F34a8d9e9cbd7a2a5178da0afbf4e10fd +0 -0
  2610. data/test/dummy/tmp/cache/assets/E28/D00/sprockets%2Fcb82c1534ddccee2fa79b6a84e1d3ae4 +0 -0
  2611. data/test/dummy/tmp/cache/assets/E29/5D0/sprockets%2F5c50c8b4fb7b4604db1d8f2bc7ddea9b +0 -0
  2612. data/test/dummy/tmp/cache/assets/E29/E20/sprockets%2F1da1cf4f8fb0b07de5540dcf72ebea79 +0 -0
  2613. data/test/dummy/tmp/cache/assets/E29/FA0/sprockets%2Ffabb9a9e2898ac07e5aec5a3dc1173cb +0 -0
  2614. data/test/dummy/tmp/cache/assets/E2A/2F0/sprockets%2Fc19ab67c37ebb29d3155cacee4fa49bc +0 -0
  2615. data/test/dummy/tmp/cache/assets/E2A/570/sprockets%2Fc8c8f0c4ff9cdaa029e206e60bfcc47a +0 -0
  2616. data/test/dummy/tmp/cache/assets/E2A/FC0/sprockets%2Fa90fba67cf290f1ae5d51b9ccd74fbb4 +0 -0
  2617. data/test/dummy/tmp/cache/assets/E2D/020/sprockets%2F57300cdaee8dec0f1aff7408a9f28cfb +0 -0
  2618. data/test/dummy/tmp/cache/assets/E2D/2F0/sprockets%2F6db7e742b38bbafd7e971dbdbab350c9 +0 -0
  2619. data/test/dummy/tmp/cache/assets/E2D/600/sprockets%2F40ae8adc98c5e01ce0cf4b8fc0d967ea +0 -0
  2620. data/test/dummy/tmp/cache/assets/E2E/360/sprockets%2F9a2b86a5c0eae250bcdf72eedf958ac5 +0 -0
  2621. data/test/dummy/tmp/cache/assets/E2E/5A0/sprockets%2F82621e8fafb4f8ffbca15a74b6cc5d1e +0 -0
  2622. data/test/dummy/tmp/cache/assets/E2E/9A0/sprockets%2Ff35bacb57bb882a5f7f8f220eebadd91 +0 -0
  2623. data/test/dummy/tmp/cache/assets/E2E/9F0/sprockets%2Fd0f6b8cb9b7091c6ba6d05fb8adadf66 +0 -0
  2624. data/test/dummy/tmp/cache/assets/E2F/3D0/sprockets%2F3d8aa6ffceaf05eefca73ce469e71222 +0 -0
  2625. data/test/dummy/tmp/cache/assets/E2F/8C0/sprockets%2Fb333cacd9aae969cf4e25ce0dddd4277 +0 -0
  2626. data/test/dummy/tmp/cache/assets/E2F/E50/sprockets%2Fcf2e5ab5e03d797bcfbbb558d38b35af +0 -0
  2627. data/test/dummy/tmp/cache/assets/E30/D40/sprockets%2F18d6abe9e22e7e22ceaf2ee8f108ad5f +0 -0
  2628. data/test/dummy/tmp/cache/assets/E31/6E0/sprockets%2Ff305b61e7fa499ad2504bfebb9e7edea +0 -0
  2629. data/test/dummy/tmp/cache/assets/E32/A20/sprockets%2F9de0fd05844dd0acb4eca4e3ed8ff917 +0 -0
  2630. data/test/dummy/tmp/cache/assets/E35/4C0/sprockets%2Fe7a4909adc7a80fd85ea1eb9b55fdd1e +0 -0
  2631. data/test/dummy/tmp/cache/assets/E36/E00/sprockets%2F56ae6c5d1c3ecc2c9cceb813c8b998eb +0 -0
  2632. data/test/dummy/tmp/cache/assets/E38/1B0/sprockets%2Ffcb2daabef4cb855fef8866c245a637e +0 -0
  2633. data/test/dummy/tmp/cache/assets/E39/760/sprockets%2Feaefb1f9a06b9989f418edb1db2ef7c2 +0 -0
  2634. data/test/dummy/tmp/cache/assets/E3A/7B0/sprockets%2Ff97762db911d9badaeae98af6bf128dc +0 -0
  2635. data/test/dummy/tmp/cache/assets/E3A/C40/sprockets%2Fa4fffedf4d4bf3ec8597f2581c0a87ab +0 -0
  2636. data/test/dummy/tmp/cache/assets/E3B/340/sprockets%2Fdbc7eef48e00def6bd3e64ecd8954c44 +0 -0
  2637. data/test/dummy/tmp/cache/assets/E3E/2D0/sprockets%2F4e7fda6ffbcb5a5f816cf91cd5d723f9 +0 -0
  2638. data/test/dummy/tmp/cache/assets/E3E/7F0/sprockets%2F5eaeea01d1e91c54fcbc0ccbd1004d6b +0 -0
  2639. data/test/dummy/tmp/cache/assets/E3E/AC0/sprockets%2Fa90ce5acf76adb824efaad100a041dba +0 -0
  2640. data/test/dummy/tmp/cache/assets/E43/4F0/sprockets%2Fdcecff17c38b49f56d79da2df807cfa8 +0 -0
  2641. data/test/dummy/tmp/cache/assets/E44/340/sprockets%2F7e85e986e305dedde1f6facedf2c07e9 +0 -0
  2642. data/test/dummy/tmp/cache/assets/E48/A90/sprockets%2Fa3d1dbca7b4efb41f7161b1ccd72cdb6 +0 -0
  2643. data/test/dummy/tmp/cache/assets/E4C/650/sprockets%2Fcb056fbabd058c22885aabfabc5d6d3b +0 -0
  2644. data/test/dummy/tmp/cache/assets/E4D/6F0/sprockets%2F2fff12c7ef5fed2e65ee89ec5395f6ee +0 -0
  2645. data/test/dummy/tmp/cache/assets/E4D/980/sprockets%2Fbbbe61cb3ecb82cb4fbff3a8a0c04684 +0 -0
  2646. data/test/dummy/tmp/cache/assets/E4D/B10/sprockets%2F11a1f50de2df1f43bca44cfdb8cbbe86 +0 -0
  2647. data/test/dummy/tmp/cache/assets/E4E/470/sprockets%2F1d0cddc56a9072ffcd7be4db3a02ca8d +0 -0
  2648. data/test/dummy/tmp/cache/assets/E4F/A80/sprockets%2F811cebd4c603ffcdec7ba7f670db0b3a +0 -0
  2649. data/test/dummy/tmp/cache/assets/E51/3A0/sprockets%2F920a82be7aebe4bdf7bfe13a2e9a0b6b +0 -0
  2650. data/test/dummy/tmp/cache/assets/E51/480/sprockets%2Ffd0d14acc0f5f69ccdc1526ddb8a1da7 +0 -0
  2651. data/test/dummy/tmp/cache/assets/E51/8C0/sprockets%2F21366bb0cb72acda7aebe1feb7f7cd38 +0 -0
  2652. data/test/dummy/tmp/cache/assets/E55/220/sprockets%2Fad2dd26bc3fd1e2bfdb7b8ba8a44854d +0 -0
  2653. data/test/dummy/tmp/cache/assets/E55/520/sprockets%2Febd22b7b53c1fcd59aacc1d4ae3797eb +0 -0
  2654. data/test/dummy/tmp/cache/assets/E5D/240/sprockets%2Ff5afbd4e941cfabbdf5b4803e3ae1e88 +0 -0
  2655. data/test/dummy/tmp/cache/assets/E5D/6B0/sprockets%2Fdef6eaba54c5749f8bb0d9c14be4d3cb +0 -0
  2656. data/test/dummy/tmp/cache/assets/E5E/350/sprockets%2Fd68af9fb3aae95a0a79ca12bd1edd69d +0 -0
  2657. data/test/dummy/tmp/cache/assets/E5E/3A0/sprockets%2Fedf4ef7fdfa720cf0e6ca1e215c4ff91 +0 -0
  2658. data/test/dummy/tmp/cache/assets/E5F/DA0/sprockets%2Ffe0d5fd3b2dccdd3f59710b9dba49b9c +0 -0
  2659. data/test/dummy/tmp/cache/assets/E5F/F90/sprockets%2Fd4c59e3e7d005abceea7f7ec20df5c7e +0 -0
  2660. data/test/dummy/tmp/cache/assets/E62/280/sprockets%2Feac41dd5eb4b65a4d33af7ff7c4d8c9d +0 -0
  2661. data/test/dummy/tmp/cache/assets/E62/400/sprockets%2F64e9bdfb83d53acc66b63ebc88bbd6ba +0 -0
  2662. data/test/dummy/tmp/cache/assets/E62/790/sprockets%2Fcc9cdebfc45e1e9e40f59d45244cabcf +0 -0
  2663. data/test/dummy/tmp/cache/assets/E64/F30/sprockets%2F1de08065449c2cdc6cfcf8dccf47fdcc +0 -0
  2664. data/test/dummy/tmp/cache/assets/E65/BB0/sprockets%2F6d3ef3fcfef1fbf001c9dcce78fd6208 +0 -0
  2665. data/test/dummy/tmp/cache/assets/E67/7C0/sprockets%2F5fdef75e5fc94f4672cbbce2d4bde3a4 +0 -0
  2666. data/test/dummy/tmp/cache/assets/E68/940/sprockets%2Fde64d61ec0d2e5c8fad88fbecfd94a35 +0 -0
  2667. data/test/dummy/tmp/cache/assets/E6A/070/sprockets%2F17edc5ef63f8db0c2d8cf66b57ccea8e +0 -0
  2668. data/test/dummy/tmp/cache/assets/E6D/020/sprockets%2F9ece9c4c2e5b8ec1eececcea9d624198 +0 -0
  2669. data/test/dummy/tmp/cache/assets/E6E/9C0/sprockets%2Ffa55f351fcecf1bc2ba6ba1310cbfaa5 +0 -0
  2670. data/test/dummy/tmp/cache/assets/E6E/D70/sprockets%2Ff854d53e9df9fa1bf725dadd7e0f2cff +0 -0
  2671. data/test/dummy/tmp/cache/assets/E6F/7F0/sprockets%2F7a185c9f3999fec67aeddbfb23dea2de +0 -0
  2672. data/test/dummy/tmp/cache/assets/E79/F50/sprockets%2Ffa2b3f5c123a6ec5bfcdd35db4dd6ba1 +0 -0
  2673. data/test/dummy/tmp/cache/assets/E80/170/sprockets%2Fa0c50f15b9cdb1af4c2dfbcf90fe7ce2 +0 -0
  2674. data/test/dummy/tmp/cache/assets/E82/D10/sprockets%2F06afa77b0aacab9b76cb6e6318decfca +0 -0
  2675. data/test/dummy/tmp/cache/assets/E87/7D0/sprockets%2Ffe93f8ccabbebc20f353f51f5a4fe1cc +0 -0
  2676. data/test/dummy/tmp/cache/assets/E8A/370/sprockets%2Fba6cd8430accc5ffa10ff6eeb7aa939f +0 -0
  2677. data/test/dummy/tmp/cache/assets/E8C/D10/sprockets%2F956badfdacc7f96fb3bbf36dcc0b317c +0 -0
  2678. data/test/dummy/tmp/cache/assets/E91/7C0/sprockets%2Fef3c30e9c07b8affa4e39fceb6cb3e7b +0 -0
  2679. data/test/dummy/tmp/cache/assets/E93/EC0/sprockets%2Fe2f9ce9b0cbf7c9b0935ce1bfafe24ee +0 -0
  2680. data/test/dummy/tmp/cache/assets/E96/510/sprockets%2Ff3dd99b915fbacd1c6e7ebcf916b5abf +0 -0
  2681. data/test/dummy/tmp/cache/assets/E9A/790/sprockets%2Ffece53daabdeb86f6a4996af4dc99d0a +0 -0
  2682. data/test/dummy/tmp/cache/assets/EA6/850/sprockets%2Ff2eaf24266aaa0f2adeb0ffe01e5fdad +0 -0
  2683. data/test/dummy/tmp/cache/assets/EB0/300/sprockets%2Fe4bacccace2941a1a8ddfbdd97b2ad82 +0 -0
  2684. data/test/dummy/tmp/cache/assets/EB6/E70/sprockets%2F76a6b2ceb48abb4ddaca9bef2fce155e +0 -0
  2685. data/test/dummy/tmp/cache/assets/EC3/EF0/sprockets%2Fd4e09aca6af1fb9fbf6f86bbcca4e59c +0 -0
  2686. data/test/dummy/tmp/data/meta_request/055bf7bc695a78c99960938def7e04ed.json +1 -0
  2687. metadata +180 -8
  2688. data/app/assets/javascripts/Cesium/Core/definedNotNull.js +0 -23
  2689. data/app/assets/javascripts/Cesium/Scene/OpenStreetMapImageryProvider.js +0 -415
  2690. data/app/assets/javascripts/Cesium/Scene/TileMapServiceImageryProvider.js +0 -580
  2691. data/app/assets/javascripts/Cesium/ThirdParty/knockout-3.2.0.js +0 -112
  2692. data/test/dummy/tmp/pids/server.pid +0 -1
@@ -20,9 +20,10 @@
20
20
  * Portions licensed separately.
21
21
  * See https://github.com/AnalyticalGraphicsInc/cesium/blob/master/LICENSE.md for full licensing details.
22
22
  */
23
- (function () {/*global define*/
23
+ (function () {
24
+ /*global define*/
24
25
  define('Core/defined',[],function() {
25
- "use strict";
26
+ 'use strict';
26
27
 
27
28
  /**
28
29
  * @exports defined
@@ -38,7 +39,7 @@ define('Core/defined',[],function() {
38
39
  * }
39
40
  */
40
41
  function defined(value) {
41
- return value !== undefined;
42
+ return value !== undefined && value !== null;
42
43
  }
43
44
 
44
45
  return defined;
@@ -49,7 +50,7 @@ define('Core/freezeObject',[
49
50
  './defined'
50
51
  ], function(
51
52
  defined) {
52
- "use strict";
53
+ 'use strict';
53
54
 
54
55
  /**
55
56
  * Freezes an object, using Object.freeze if available, otherwise returns
@@ -74,7 +75,7 @@ define('Core/defaultValue',[
74
75
  './freezeObject'
75
76
  ], function(
76
77
  freezeObject) {
77
- "use strict";
78
+ 'use strict';
78
79
 
79
80
  /**
80
81
  * Returns the first parameter if not undefined, otherwise the second parameter.
@@ -110,7 +111,7 @@ define('Core/DeveloperError',[
110
111
  './defined'
111
112
  ], function(
112
113
  defined) {
113
- "use strict";
114
+ 'use strict';
114
115
 
115
116
  /**
116
117
  * Constructs an exception object that is thrown due to a developer error, e.g., invalid argument,
@@ -124,6 +125,7 @@ define('Core/DeveloperError',[
124
125
  *
125
126
  * @alias DeveloperError
126
127
  * @constructor
128
+ * @extends Error
127
129
  *
128
130
  * @param {String} [message] The error message for this exception.
129
131
  *
@@ -160,6 +162,11 @@ define('Core/DeveloperError',[
160
162
  this.stack = stack;
161
163
  }
162
164
 
165
+ if (defined(Object.create)) {
166
+ DeveloperError.prototype = Object.create(Error.prototype);
167
+ DeveloperError.prototype.constructor = DeveloperError;
168
+ }
169
+
163
170
  DeveloperError.prototype.toString = function() {
164
171
  var str = this.name + ': ' + this.message;
165
172
 
@@ -394,7 +401,7 @@ define('Core/Math',[
394
401
  defaultValue,
395
402
  defined,
396
403
  DeveloperError) {
397
- "use strict";
404
+ 'use strict';
398
405
 
399
406
  /**
400
407
  * Math functions.
@@ -1174,7 +1181,7 @@ define('Core/Cartesian3',[
1174
1181
  DeveloperError,
1175
1182
  freezeObject,
1176
1183
  CesiumMath) {
1177
- "use strict";
1184
+ 'use strict';
1178
1185
 
1179
1186
  /**
1180
1187
  * A 3D Cartesian point.
@@ -1343,6 +1350,63 @@ define('Core/Cartesian3',[
1343
1350
  return result;
1344
1351
  };
1345
1352
 
1353
+ /**
1354
+ * Flattens an array of Cartesian3s into an array of components.
1355
+ *
1356
+ * @param {Cartesian3[]} array The array of cartesians to pack.
1357
+ * @param {Number[]} result The array onto which to store the result.
1358
+ * @returns {Number[]} The packed array.
1359
+ */
1360
+ Cartesian3.packArray = function(array, result) {
1361
+ if (!defined(array)) {
1362
+ throw new DeveloperError('array is required');
1363
+ }
1364
+
1365
+ var length = array.length;
1366
+ if (!defined(result)) {
1367
+ result = new Array(length * 3);
1368
+ } else {
1369
+ result.length = length * 3;
1370
+ }
1371
+
1372
+ for (var i = 0; i < length; ++i) {
1373
+ Cartesian3.pack(array[i], result, i * 3);
1374
+ }
1375
+ return result;
1376
+ };
1377
+
1378
+ /**
1379
+ * Unpacks an array of cartesian components into an array of Cartesian3s.
1380
+ *
1381
+ * @param {Number[]} array The array of components to unpack.
1382
+ * @param {Cartesian3[]} result The array onto which to store the result.
1383
+ * @returns {Cartesian3[]} The unpacked array.
1384
+ */
1385
+ Cartesian3.unpackArray = function(array, result) {
1386
+ if (!defined(array)) {
1387
+ throw new DeveloperError('array is required');
1388
+ }
1389
+ if (array.length < 3) {
1390
+ throw new DeveloperError('array length cannot be less than 3.');
1391
+ }
1392
+ if (array.length % 3 !== 0) {
1393
+ throw new DeveloperError('array length must be a multiple of 3.');
1394
+ }
1395
+
1396
+ var length = array.length;
1397
+ if (!defined(result)) {
1398
+ result = new Array(length / 3);
1399
+ } else {
1400
+ result.length = length / 3;
1401
+ }
1402
+
1403
+ for (var i = 0; i < length; i += 3) {
1404
+ var index = i / 3;
1405
+ result[index] = Cartesian3.unpack(array, i, result[index]);
1406
+ }
1407
+ return result;
1408
+ };
1409
+
1346
1410
  /**
1347
1411
  * Creates a Cartesian3 from three consecutive elements in an array.
1348
1412
  * @function
@@ -1909,9 +1973,9 @@ define('Core/Cartesian3',[
1909
1973
  throw new DeveloperError('latitude is required');
1910
1974
  }
1911
1975
 
1912
- var lon = CesiumMath.toRadians(longitude);
1913
- var lat = CesiumMath.toRadians(latitude);
1914
- return Cartesian3.fromRadians(lon, lat, height, ellipsoid, result);
1976
+ longitude = CesiumMath.toRadians(longitude);
1977
+ latitude = CesiumMath.toRadians(latitude);
1978
+ return Cartesian3.fromRadians(longitude, latitude, height, ellipsoid, result);
1915
1979
  };
1916
1980
 
1917
1981
  var scratchN = new Cartesian3();
@@ -1972,15 +2036,30 @@ define('Core/Cartesian3',[
1972
2036
  */
1973
2037
  Cartesian3.fromDegreesArray = function(coordinates, ellipsoid, result) {
1974
2038
  if (!defined(coordinates)) {
1975
- throw new DeveloperError('positions is required.');
2039
+ throw new DeveloperError('coordinates is required.');
2040
+ }
2041
+ if (coordinates.length < 2) {
2042
+ throw new DeveloperError('coordinates length cannot be less than 2.');
2043
+ }
2044
+ if (coordinates.length % 2 !== 0) {
2045
+ throw new DeveloperError('coordinates length must be a multiple of 2.');
1976
2046
  }
1977
2047
 
1978
- var pos = new Array(coordinates.length);
1979
- for (var i = 0; i < coordinates.length; i++) {
1980
- pos[i] = CesiumMath.toRadians(coordinates[i]);
2048
+ var length = coordinates.length;
2049
+ if (!defined(result)) {
2050
+ result = new Array(length / 2);
2051
+ } else {
2052
+ result.length = length / 2;
2053
+ }
2054
+
2055
+ for (var i = 0; i < length; i += 2) {
2056
+ var longitude = coordinates[i];
2057
+ var latitude = coordinates[i + 1];
2058
+ var index = i / 2;
2059
+ result[index] = Cartesian3.fromDegrees(longitude, latitude, 0, ellipsoid, result[index]);
1981
2060
  }
1982
2061
 
1983
- return Cartesian3.fromRadiansArray(pos, ellipsoid, result);
2062
+ return result;
1984
2063
  };
1985
2064
 
1986
2065
  /**
@@ -1996,26 +2075,27 @@ define('Core/Cartesian3',[
1996
2075
  */
1997
2076
  Cartesian3.fromRadiansArray = function(coordinates, ellipsoid, result) {
1998
2077
  if (!defined(coordinates)) {
1999
- throw new DeveloperError('positions is required.');
2078
+ throw new DeveloperError('coordinates is required.');
2000
2079
  }
2001
2080
  if (coordinates.length < 2) {
2002
- throw new DeveloperError('positions length cannot be less than 2.');
2081
+ throw new DeveloperError('coordinates length cannot be less than 2.');
2003
2082
  }
2004
2083
  if (coordinates.length % 2 !== 0) {
2005
- throw new DeveloperError('positions length must be a multiple of 2.');
2084
+ throw new DeveloperError('coordinates length must be a multiple of 2.');
2006
2085
  }
2007
2086
 
2008
2087
  var length = coordinates.length;
2009
2088
  if (!defined(result)) {
2010
- result = new Array(length/2);
2089
+ result = new Array(length / 2);
2011
2090
  } else {
2012
- result.length = length/2;
2091
+ result.length = length / 2;
2013
2092
  }
2014
2093
 
2015
- for ( var i = 0; i < length; i+=2) {
2016
- var lon = coordinates[i];
2017
- var lat = coordinates[i+1];
2018
- result[i/2] = Cartesian3.fromRadians(lon, lat, 0, ellipsoid, result[i/2]);
2094
+ for (var i = 0; i < length; i += 2) {
2095
+ var longitude = coordinates[i];
2096
+ var latitude = coordinates[i + 1];
2097
+ var index = i / 2;
2098
+ result[index] = Cartesian3.fromRadians(longitude, latitude, 0, ellipsoid, result[index]);
2019
2099
  }
2020
2100
 
2021
2101
  return result;
@@ -2024,7 +2104,7 @@ define('Core/Cartesian3',[
2024
2104
  /**
2025
2105
  * Returns an array of Cartesian3 positions given an array of longitude, latitude and height values where longitude and latitude are given in degrees.
2026
2106
  *
2027
- * @param {Number[]} coordinates A list of longitude, latitude and height values. Values alternate [longitude, latitude, height,, longitude, latitude, height...].
2107
+ * @param {Number[]} coordinates A list of longitude, latitude and height values. Values alternate [longitude, latitude, height, longitude, latitude, height...].
2028
2108
  * @param {Ellipsoid} [ellipsoid=Ellipsoid.WGS84] The ellipsoid on which the position lies.
2029
2109
  * @param {Cartesian3[]} [result] An array of Cartesian3 objects to store the result.
2030
2110
  * @returns {Cartesian3[]} The array of positions.
@@ -2034,29 +2114,37 @@ define('Core/Cartesian3',[
2034
2114
  */
2035
2115
  Cartesian3.fromDegreesArrayHeights = function(coordinates, ellipsoid, result) {
2036
2116
  if (!defined(coordinates)) {
2037
- throw new DeveloperError('positions is required.');
2117
+ throw new DeveloperError('coordinates is required.');
2038
2118
  }
2039
2119
  if (coordinates.length < 3) {
2040
- throw new DeveloperError('positions length cannot be less than 3.');
2120
+ throw new DeveloperError('coordinates length cannot be less than 3.');
2041
2121
  }
2042
2122
  if (coordinates.length % 3 !== 0) {
2043
- throw new DeveloperError('positions length must be a multiple of 3.');
2123
+ throw new DeveloperError('coordinates length must be a multiple of 3.');
2044
2124
  }
2045
2125
 
2046
- var pos = new Array(coordinates.length);
2047
- for (var i = 0; i < coordinates.length; i+=3) {
2048
- pos[i] = CesiumMath.toRadians(coordinates[i]);
2049
- pos[i+1] = CesiumMath.toRadians(coordinates[i+1]);
2050
- pos[i+2] = coordinates[i+2];
2126
+ var length = coordinates.length;
2127
+ if (!defined(result)) {
2128
+ result = new Array(length / 3);
2129
+ } else {
2130
+ result.length = length / 3;
2131
+ }
2132
+
2133
+ for (var i = 0; i < length; i += 3) {
2134
+ var longitude = coordinates[i];
2135
+ var latitude = coordinates[i + 1];
2136
+ var height = coordinates[i + 2];
2137
+ var index = i / 3;
2138
+ result[index] = Cartesian3.fromDegrees(longitude, latitude, height, ellipsoid, result[index]);
2051
2139
  }
2052
2140
 
2053
- return Cartesian3.fromRadiansArrayHeights(pos, ellipsoid, result);
2141
+ return result;
2054
2142
  };
2055
2143
 
2056
2144
  /**
2057
2145
  * Returns an array of Cartesian3 positions given an array of longitude, latitude and height values where longitude and latitude are given in radians.
2058
2146
  *
2059
- * @param {Number[]} coordinates A list of longitude, latitude and height values. Values alternate [longitude, latitude, height,, longitude, latitude, height...].
2147
+ * @param {Number[]} coordinates A list of longitude, latitude and height values. Values alternate [longitude, latitude, height, longitude, latitude, height...].
2060
2148
  * @param {Ellipsoid} [ellipsoid=Ellipsoid.WGS84] The ellipsoid on which the position lies.
2061
2149
  * @param {Cartesian3[]} [result] An array of Cartesian3 objects to store the result.
2062
2150
  * @returns {Cartesian3[]} The array of positions.
@@ -2066,27 +2154,28 @@ define('Core/Cartesian3',[
2066
2154
  */
2067
2155
  Cartesian3.fromRadiansArrayHeights = function(coordinates, ellipsoid, result) {
2068
2156
  if (!defined(coordinates)) {
2069
- throw new DeveloperError('positions is required.');
2157
+ throw new DeveloperError('coordinates is required.');
2070
2158
  }
2071
2159
  if (coordinates.length < 3) {
2072
- throw new DeveloperError('positions length cannot be less than 3.');
2160
+ throw new DeveloperError('coordinates length cannot be less than 3.');
2073
2161
  }
2074
2162
  if (coordinates.length % 3 !== 0) {
2075
- throw new DeveloperError('positions length must be a multiple of 3.');
2163
+ throw new DeveloperError('coordinates length must be a multiple of 3.');
2076
2164
  }
2077
2165
 
2078
2166
  var length = coordinates.length;
2079
2167
  if (!defined(result)) {
2080
- result = new Array(length/3);
2168
+ result = new Array(length / 3);
2081
2169
  } else {
2082
- result.length = length/3;
2170
+ result.length = length / 3;
2083
2171
  }
2084
2172
 
2085
- for ( var i = 0; i < length; i+=3) {
2086
- var lon = coordinates[i];
2087
- var lat = coordinates[i+1];
2088
- var alt = coordinates[i+2];
2089
- result[i/3] = Cartesian3.fromRadians(lon, lat, alt, ellipsoid, result[i/3]);
2173
+ for (var i = 0; i < length; i += 3) {
2174
+ var longitude = coordinates[i];
2175
+ var latitude = coordinates[i + 1];
2176
+ var height = coordinates[i + 2];
2177
+ var index = i / 3;
2178
+ result[index] = Cartesian3.fromRadians(longitude, latitude, height, ellipsoid, result[index]);
2090
2179
  }
2091
2180
 
2092
2181
  return result;
@@ -2182,7 +2271,7 @@ define('Core/scaleToGeodeticSurface',[
2182
2271
  defined,
2183
2272
  DeveloperError,
2184
2273
  CesiumMath) {
2185
- "use strict";
2274
+ 'use strict';
2186
2275
 
2187
2276
  var scaleToGeodeticSurfaceIntersection = new Cartesian3();
2188
2277
  var scaleToGeodeticSurfaceGradient = new Cartesian3();
@@ -2323,7 +2412,7 @@ define('Core/Cartographic',[
2323
2412
  freezeObject,
2324
2413
  CesiumMath,
2325
2414
  scaleToGeodeticSurface) {
2326
- "use strict";
2415
+ 'use strict';
2327
2416
 
2328
2417
  /**
2329
2418
  * A position defined by longitude, latitude, and height.
@@ -2578,7 +2667,7 @@ define('Core/defineProperties',[
2578
2667
  './defined'
2579
2668
  ], function(
2580
2669
  defined) {
2581
- "use strict";
2670
+ 'use strict';
2582
2671
 
2583
2672
  var definePropertyWorks = (function() {
2584
2673
  try {
@@ -2628,7 +2717,7 @@ define('Core/Ellipsoid',[
2628
2717
  freezeObject,
2629
2718
  CesiumMath,
2630
2719
  scaleToGeodeticSurface) {
2631
- "use strict";
2720
+ 'use strict';
2632
2721
 
2633
2722
  function initialize(ellipsoid, x, y, z) {
2634
2723
  x = defaultValue(x, 0.0);
@@ -3221,7 +3310,7 @@ define('Core/Rectangle',[
3221
3310
  Ellipsoid,
3222
3311
  freezeObject,
3223
3312
  CesiumMath) {
3224
- "use strict";
3313
+ 'use strict';
3225
3314
 
3226
3315
  /**
3227
3316
  * A two dimensional region specified as longitude and latitude coordinates.
@@ -3464,6 +3553,61 @@ define('Core/Rectangle',[
3464
3553
  return result;
3465
3554
  };
3466
3555
 
3556
+ /**
3557
+ * Creates the smallest possible Rectangle that encloses all positions in the provided array.
3558
+ *
3559
+ * @param {Cartesian[]} cartesians The list of Cartesian instances.
3560
+ * @param {Ellipsoid} [ellipsoid=Ellipsoid.WGS84] The ellipsoid the cartesians are on.
3561
+ * @param {Rectangle} [result] The object onto which to store the result, or undefined if a new instance should be created.
3562
+ * @returns {Rectangle} The modified result parameter or a new Rectangle instance if none was provided.
3563
+ */
3564
+ Rectangle.fromCartesianArray = function(cartesians, ellipsoid, result) {
3565
+ if (!defined(cartesians)) {
3566
+ throw new DeveloperError('cartesians is required.');
3567
+ }
3568
+
3569
+ var west = Number.MAX_VALUE;
3570
+ var east = -Number.MAX_VALUE;
3571
+ var westOverIDL = Number.MAX_VALUE;
3572
+ var eastOverIDL = -Number.MAX_VALUE;
3573
+ var south = Number.MAX_VALUE;
3574
+ var north = -Number.MAX_VALUE;
3575
+
3576
+ for ( var i = 0, len = cartesians.length; i < len; i++) {
3577
+ var position = ellipsoid.cartesianToCartographic(cartesians[i]);
3578
+ west = Math.min(west, position.longitude);
3579
+ east = Math.max(east, position.longitude);
3580
+ south = Math.min(south, position.latitude);
3581
+ north = Math.max(north, position.latitude);
3582
+
3583
+ var lonAdjusted = position.longitude >= 0 ? position.longitude : position.longitude + CesiumMath.TWO_PI;
3584
+ westOverIDL = Math.min(westOverIDL, lonAdjusted);
3585
+ eastOverIDL = Math.max(eastOverIDL, lonAdjusted);
3586
+ }
3587
+
3588
+ if(east - west > eastOverIDL - westOverIDL) {
3589
+ west = westOverIDL;
3590
+ east = eastOverIDL;
3591
+
3592
+ if (east > CesiumMath.PI) {
3593
+ east = east - CesiumMath.TWO_PI;
3594
+ }
3595
+ if (west > CesiumMath.PI) {
3596
+ west = west - CesiumMath.TWO_PI;
3597
+ }
3598
+ }
3599
+
3600
+ if (!defined(result)) {
3601
+ return new Rectangle(west, south, east, north);
3602
+ }
3603
+
3604
+ result.west = west;
3605
+ result.south = south;
3606
+ result.east = east;
3607
+ result.north = north;
3608
+ return result;
3609
+ };
3610
+
3467
3611
  /**
3468
3612
  * Duplicates an Rectangle.
3469
3613
  *
@@ -3968,7 +4112,7 @@ define('Core/GeographicProjection',[
3968
4112
  defineProperties,
3969
4113
  DeveloperError,
3970
4114
  Ellipsoid) {
3971
- "use strict";
4115
+ 'use strict';
3972
4116
 
3973
4117
  /**
3974
4118
  * A simple map projection where longitude and latitude are linearly mapped to X and Y by multiplying
@@ -4074,7 +4218,7 @@ define('Core/Intersect',[
4074
4218
  './freezeObject'
4075
4219
  ], function(
4076
4220
  freezeObject) {
4077
- "use strict";
4221
+ 'use strict';
4078
4222
 
4079
4223
  /**
4080
4224
  * This enumerated type is used in determining where, relative to the frustum, an
@@ -4117,7 +4261,7 @@ define('Core/Interval',[
4117
4261
  './defaultValue'
4118
4262
  ], function(
4119
4263
  defaultValue) {
4120
- "use strict";
4264
+ 'use strict';
4121
4265
 
4122
4266
  /**
4123
4267
  * Represents the closed interval [start, stop].
@@ -4150,6 +4294,7 @@ define('Core/Matrix3',[
4150
4294
  './Cartesian3',
4151
4295
  './defaultValue',
4152
4296
  './defined',
4297
+ './defineProperties',
4153
4298
  './DeveloperError',
4154
4299
  './freezeObject',
4155
4300
  './Math'
@@ -4157,10 +4302,11 @@ define('Core/Matrix3',[
4157
4302
  Cartesian3,
4158
4303
  defaultValue,
4159
4304
  defined,
4305
+ defineProperties,
4160
4306
  DeveloperError,
4161
4307
  freezeObject,
4162
4308
  CesiumMath) {
4163
- "use strict";
4309
+ 'use strict';
4164
4310
 
4165
4311
  /**
4166
4312
  * A 3x3 matrix, indexable as a column-major order array.
@@ -5562,6 +5708,20 @@ define('Core/Matrix3',[
5562
5708
  */
5563
5709
  Matrix3.COLUMN2ROW2 = 8;
5564
5710
 
5711
+ defineProperties(Matrix3.prototype, {
5712
+ /**
5713
+ * Gets the number of items in the collection.
5714
+ * @memberof Matrix3.prototype
5715
+ *
5716
+ * @type {Number}
5717
+ */
5718
+ length : {
5719
+ get : function() {
5720
+ return Matrix3.packedLength;
5721
+ }
5722
+ }
5723
+ });
5724
+
5565
5725
  /**
5566
5726
  * Duplicates the provided Matrix3 instance.
5567
5727
  *
@@ -5639,7 +5799,7 @@ define('Core/Cartesian4',[
5639
5799
  DeveloperError,
5640
5800
  freezeObject,
5641
5801
  CesiumMath) {
5642
- "use strict";
5802
+ 'use strict';
5643
5803
 
5644
5804
  /**
5645
5805
  * A 4D Cartesian point.
@@ -5808,6 +5968,57 @@ define('Core/Cartesian4',[
5808
5968
  return result;
5809
5969
  };
5810
5970
 
5971
+ /**
5972
+ * Flattens an array of Cartesian4s into and array of components.
5973
+ *
5974
+ * @param {Cartesian4[]} array The array of cartesians to pack.
5975
+ * @param {Number[]} result The array onto which to store the result.
5976
+ * @returns {Number[]} The packed array.
5977
+ */
5978
+ Cartesian4.packArray = function(array, result) {
5979
+ if (!defined(array)) {
5980
+ throw new DeveloperError('array is required');
5981
+ }
5982
+
5983
+ var length = array.length;
5984
+ if (!defined(result)) {
5985
+ result = new Array(length * 4);
5986
+ } else {
5987
+ result.length = length * 4;
5988
+ }
5989
+
5990
+ for (var i = 0; i < length; ++i) {
5991
+ Cartesian4.pack(array[i], result, i * 4);
5992
+ }
5993
+ return result;
5994
+ };
5995
+
5996
+ /**
5997
+ * Unpacks an array of cartesian components into and array of Cartesian4s.
5998
+ *
5999
+ * @param {Number[]} array The array of components to unpack.
6000
+ * @param {Cartesian4[]} result The array onto which to store the result.
6001
+ * @returns {Cartesian4[]} The unpacked array.
6002
+ */
6003
+ Cartesian4.unpackArray = function(array, result) {
6004
+ if (!defined(array)) {
6005
+ throw new DeveloperError('array is required');
6006
+ }
6007
+
6008
+ var length = array.length;
6009
+ if (!defined(result)) {
6010
+ result = new Array(length / 4);
6011
+ } else {
6012
+ result.length = length / 4;
6013
+ }
6014
+
6015
+ for (var i = 0; i < length; i += 4) {
6016
+ var index = i / 4;
6017
+ result[index] = Cartesian4.unpack(array, i, result[index]);
6018
+ }
6019
+ return result;
6020
+ };
6021
+
5811
6022
  /**
5812
6023
  * Creates a Cartesian4 from four consecutive elements in an array.
5813
6024
  * @function
@@ -6413,7 +6624,7 @@ define('Core/RuntimeError',[
6413
6624
  './defined'
6414
6625
  ], function(
6415
6626
  defined) {
6416
- "use strict";
6627
+ 'use strict';
6417
6628
 
6418
6629
  /**
6419
6630
  * Constructs an exception object that is thrown due to an error that can occur at runtime, e.g.,
@@ -6426,6 +6637,7 @@ define('Core/RuntimeError',[
6426
6637
  *
6427
6638
  * @alias RuntimeError
6428
6639
  * @constructor
6640
+ * @extends Error
6429
6641
  *
6430
6642
  * @param {String} [message] The error message for this exception.
6431
6643
  *
@@ -6461,6 +6673,12 @@ define('Core/RuntimeError',[
6461
6673
  */
6462
6674
  this.stack = stack;
6463
6675
  }
6676
+
6677
+ if (defined(Object.create)) {
6678
+ RuntimeError.prototype = Object.create(Error.prototype);
6679
+ RuntimeError.prototype.constructor = RuntimeError;
6680
+ }
6681
+
6464
6682
  RuntimeError.prototype.toString = function() {
6465
6683
  var str = this.name + ': ' + this.message;
6466
6684
 
@@ -6480,6 +6698,7 @@ define('Core/Matrix4',[
6480
6698
  './Cartesian4',
6481
6699
  './defaultValue',
6482
6700
  './defined',
6701
+ './defineProperties',
6483
6702
  './DeveloperError',
6484
6703
  './freezeObject',
6485
6704
  './Math',
@@ -6490,12 +6709,13 @@ define('Core/Matrix4',[
6490
6709
  Cartesian4,
6491
6710
  defaultValue,
6492
6711
  defined,
6712
+ defineProperties,
6493
6713
  DeveloperError,
6494
6714
  freezeObject,
6495
6715
  CesiumMath,
6496
6716
  Matrix3,
6497
6717
  RuntimeError) {
6498
- "use strict";
6718
+ 'use strict';
6499
6719
 
6500
6720
  /**
6501
6721
  * A 4x4 matrix, indexable as a column-major order array.
@@ -6534,6 +6754,7 @@ define('Core/Matrix4',[
6534
6754
  * @see Matrix4.computePerspectiveOffCenter
6535
6755
  * @see Matrix4.computeInfinitePerspectiveOffCenter
6536
6756
  * @see Matrix4.computeViewportTransformation
6757
+ * @see Matrix4.computeView
6537
6758
  * @see Matrix2
6538
6759
  * @see Matrix3
6539
6760
  * @see Packable
@@ -7001,7 +7222,7 @@ define('Core/Matrix4',[
7001
7222
  };
7002
7223
 
7003
7224
  var fromCameraF = new Cartesian3();
7004
- var fromCameraS = new Cartesian3();
7225
+ var fromCameraR = new Cartesian3();
7005
7226
  var fromCameraU = new Cartesian3();
7006
7227
 
7007
7228
  /**
@@ -7016,55 +7237,55 @@ define('Core/Matrix4',[
7016
7237
  throw new DeveloperError('camera is required.');
7017
7238
  }
7018
7239
 
7019
- var eye = camera.eye;
7020
- var target = camera.target;
7240
+ var position = camera.position;
7241
+ var direction = camera.direction;
7021
7242
  var up = camera.up;
7022
7243
 
7023
- if (!defined(eye)) {
7024
- throw new DeveloperError('camera.eye is required.');
7244
+ if (!defined(position)) {
7245
+ throw new DeveloperError('camera.position is required.');
7025
7246
  }
7026
- if (!defined(target)) {
7027
- throw new DeveloperError('camera.target is required.');
7247
+ if (!defined(direction)) {
7248
+ throw new DeveloperError('camera.direction is required.');
7028
7249
  }
7029
7250
  if (!defined(up)) {
7030
7251
  throw new DeveloperError('camera.up is required.');
7031
7252
  }
7032
7253
 
7033
- Cartesian3.normalize(Cartesian3.subtract(target, eye, fromCameraF), fromCameraF);
7034
- Cartesian3.normalize(Cartesian3.cross(fromCameraF, up, fromCameraS), fromCameraS);
7035
- Cartesian3.normalize(Cartesian3.cross(fromCameraS, fromCameraF, fromCameraU), fromCameraU);
7254
+ Cartesian3.normalize(direction, fromCameraF);
7255
+ Cartesian3.normalize(Cartesian3.cross(fromCameraF, up, fromCameraR), fromCameraR);
7256
+ Cartesian3.normalize(Cartesian3.cross(fromCameraR, fromCameraF, fromCameraU), fromCameraU);
7036
7257
 
7037
- var sX = fromCameraS.x;
7038
- var sY = fromCameraS.y;
7039
- var sZ = fromCameraS.z;
7258
+ var sX = fromCameraR.x;
7259
+ var sY = fromCameraR.y;
7260
+ var sZ = fromCameraR.z;
7040
7261
  var fX = fromCameraF.x;
7041
7262
  var fY = fromCameraF.y;
7042
7263
  var fZ = fromCameraF.z;
7043
7264
  var uX = fromCameraU.x;
7044
7265
  var uY = fromCameraU.y;
7045
7266
  var uZ = fromCameraU.z;
7046
- var eyeX = eye.x;
7047
- var eyeY = eye.y;
7048
- var eyeZ = eye.z;
7049
- var t0 = sX * -eyeX + sY * -eyeY+ sZ * -eyeZ;
7050
- var t1 = uX * -eyeX + uY * -eyeY+ uZ * -eyeZ;
7051
- var t2 = fX * eyeX + fY * eyeY + fZ * eyeZ;
7052
-
7053
- //The code below this comment is an optimized
7054
- //version of the commented lines.
7055
- //Rather that create two matrices and then multiply,
7056
- //we just bake in the multiplcation as part of creation.
7057
- //var rotation = new Matrix4(
7058
- // sX, sY, sZ, 0.0,
7059
- // uX, uY, uZ, 0.0,
7060
- // -fX, -fY, -fZ, 0.0,
7061
- // 0.0, 0.0, 0.0, 1.0);
7062
- //var translation = new Matrix4(
7063
- // 1.0, 0.0, 0.0, -eye.x,
7064
- // 0.0, 1.0, 0.0, -eye.y,
7065
- // 0.0, 0.0, 1.0, -eye.z,
7066
- // 0.0, 0.0, 0.0, 1.0);
7067
- //return rotation.multiply(translation);
7267
+ var positionX = position.x;
7268
+ var positionY = position.y;
7269
+ var positionZ = position.z;
7270
+ var t0 = sX * -positionX + sY * -positionY+ sZ * -positionZ;
7271
+ var t1 = uX * -positionX + uY * -positionY+ uZ * -positionZ;
7272
+ var t2 = fX * positionX + fY * positionY + fZ * positionZ;
7273
+
7274
+ // The code below this comment is an optimized
7275
+ // version of the commented lines.
7276
+ // Rather that create two matrices and then multiply,
7277
+ // we just bake in the multiplcation as part of creation.
7278
+ // var rotation = new Matrix4(
7279
+ // sX, sY, sZ, 0.0,
7280
+ // uX, uY, uZ, 0.0,
7281
+ // -fX, -fY, -fZ, 0.0,
7282
+ // 0.0, 0.0, 0.0, 1.0);
7283
+ // var translation = new Matrix4(
7284
+ // 1.0, 0.0, 0.0, -position.x,
7285
+ // 0.0, 1.0, 0.0, -position.y,
7286
+ // 0.0, 0.0, 1.0, -position.z,
7287
+ // 0.0, 0.0, 0.0, 1.0);
7288
+ // return rotation.multiply(translation);
7068
7289
  if (!defined(result)) {
7069
7290
  return new Matrix4(
7070
7291
  sX, sY, sZ, t0,
@@ -7089,7 +7310,6 @@ define('Core/Matrix4',[
7089
7310
  result[14] = t2;
7090
7311
  result[15] = 1.0;
7091
7312
  return result;
7092
-
7093
7313
  };
7094
7314
 
7095
7315
  /**
@@ -7102,14 +7322,14 @@ define('Core/Matrix4',[
7102
7322
  * @param {Matrix4} result The object in which the result will be stored.
7103
7323
  * @returns {Matrix4} The modified result parameter.
7104
7324
  *
7105
- * @exception {DeveloperError} fovY must be in [0, PI).
7325
+ * @exception {DeveloperError} fovY must be in (0, PI].
7106
7326
  * @exception {DeveloperError} aspectRatio must be greater than zero.
7107
7327
  * @exception {DeveloperError} near must be greater than zero.
7108
7328
  * @exception {DeveloperError} far must be greater than zero.
7109
7329
  */
7110
7330
  Matrix4.computePerspectiveFieldOfView = function(fovY, aspectRatio, near, far, result) {
7111
7331
  if (fovY <= 0.0 || fovY > Math.PI) {
7112
- throw new DeveloperError('fovY must be in [0, PI).');
7332
+ throw new DeveloperError('fovY must be in (0, PI].');
7113
7333
  }
7114
7334
  if (aspectRatio <= 0.0) {
7115
7335
  throw new DeveloperError('aspectRatio must be greater than zero.');
@@ -7285,7 +7505,6 @@ define('Core/Matrix4',[
7285
7505
  * @param {Number} bottom The number of meters below of the camera that will be in view.
7286
7506
  * @param {Number} top The number of meters above of the camera that will be in view.
7287
7507
  * @param {Number} near The distance to the near plane in meters.
7288
- * @param {Number} far The distance to the far plane in meters.
7289
7508
  * @param {Matrix4} result The object in which the result will be stored.
7290
7509
  * @returns {Matrix4} The modified result parameter.
7291
7510
  */
@@ -7398,6 +7617,52 @@ define('Core/Matrix4',[
7398
7617
  return result;
7399
7618
  };
7400
7619
 
7620
+ /**
7621
+ * Computes a Matrix4 instance that transforms from world space to view space.
7622
+ *
7623
+ * @param {Cartesian3} position The position of the camera.
7624
+ * @param {Cartesian3} direction The forward direction.
7625
+ * @param {Cartesian3} up The up direction.
7626
+ * @param {Cartesian3} right The right direction.
7627
+ * @param {Matrix4} result The object in which the result will be stored.
7628
+ * @returns {Matrix4} The modified result parameter.
7629
+ */
7630
+ Matrix4.computeView = function(position, direction, up, right, result) {
7631
+ if (!defined(position)) {
7632
+ throw new DeveloperError('position is required');
7633
+ }
7634
+ if (!defined(direction)) {
7635
+ throw new DeveloperError('direction is required');
7636
+ }
7637
+ if (!defined(up)) {
7638
+ throw new DeveloperError('up is required');
7639
+ }
7640
+ if (!defined(right)) {
7641
+ throw new DeveloperError('right is required');
7642
+ }
7643
+ if (!defined(result)) {
7644
+ throw new DeveloperError('result is required');
7645
+ }
7646
+
7647
+ result[0] = right.x;
7648
+ result[1] = up.x;
7649
+ result[2] = -direction.x;
7650
+ result[3] = 0.0;
7651
+ result[4] = right.y;
7652
+ result[5] = up.y;
7653
+ result[6] = -direction.y;
7654
+ result[7] = 0.0;
7655
+ result[8] = right.z;
7656
+ result[9] = up.z;
7657
+ result[10] = -direction.z;
7658
+ result[11] = 0.0;
7659
+ result[12] = -Cartesian3.dot(right, position);
7660
+ result[13] = -Cartesian3.dot(up, position);
7661
+ result[14] = Cartesian3.dot(direction, position);
7662
+ result[15] = 1.0;
7663
+ return result;
7664
+ };
7665
+
7401
7666
  /**
7402
7667
  * Computes an Array from the provided Matrix4 instance.
7403
7668
  * The array will be in column-major order.
@@ -9090,6 +9355,20 @@ define('Core/Matrix4',[
9090
9355
  */
9091
9356
  Matrix4.COLUMN3ROW3 = 15;
9092
9357
 
9358
+ defineProperties(Matrix4.prototype, {
9359
+ /**
9360
+ * Gets the number of items in the collection.
9361
+ * @memberof Matrix4.prototype
9362
+ *
9363
+ * @type {Number}
9364
+ */
9365
+ length : {
9366
+ get : function() {
9367
+ return Matrix4.packedLength;
9368
+ }
9369
+ }
9370
+ });
9371
+
9093
9372
  /**
9094
9373
  * Duplicates the provided Matrix4 instance.
9095
9374
  *
@@ -9173,7 +9452,7 @@ define('Core/Plane',[
9173
9452
  defined,
9174
9453
  DeveloperError,
9175
9454
  freezeObject) {
9176
- "use strict";
9455
+ 'use strict';
9177
9456
 
9178
9457
  /**
9179
9458
  * A plane in Hessian Normal Form defined by
@@ -9360,7 +9639,7 @@ define('Core/BoundingSphere',[
9360
9639
  Matrix4,
9361
9640
  Plane,
9362
9641
  Rectangle) {
9363
- "use strict";
9642
+ 'use strict';
9364
9643
 
9365
9644
  /**
9366
9645
  * A bounding sphere with a center and a radius.
@@ -10656,7 +10935,7 @@ define('Renderer/WebGLConstants',[
10656
10935
  '../Core/freezeObject'
10657
10936
  ], function(
10658
10937
  freezeObject) {
10659
- "use strict";
10938
+ 'use strict';
10660
10939
 
10661
10940
  /**
10662
10941
  * WebGL constants.
@@ -11252,7 +11531,7 @@ define('Core/Fullscreen',[
11252
11531
  ], function(
11253
11532
  defined,
11254
11533
  defineProperties) {
11255
- "use strict";
11534
+ 'use strict';
11256
11535
 
11257
11536
  var _supportsFullscreen;
11258
11537
  var _names = {
@@ -11420,22 +11699,22 @@ define('Core/Fullscreen',[
11420
11699
 
11421
11700
  // casing of Fullscreen differs across browsers
11422
11701
  name = prefix + 'FullscreenEnabled';
11423
- if (defined(document[name])) {
11702
+ if (document[name] !== undefined) {
11424
11703
  _names.fullscreenEnabled = name;
11425
11704
  } else {
11426
11705
  name = prefix + 'FullScreenEnabled';
11427
- if (defined(document[name])) {
11706
+ if (document[name] !== undefined) {
11428
11707
  _names.fullscreenEnabled = name;
11429
11708
  }
11430
11709
  }
11431
11710
 
11432
11711
  // casing of Fullscreen differs across browsers
11433
11712
  name = prefix + 'FullscreenElement';
11434
- if (defined(document[name])) {
11713
+ if (document[name] !== undefined) {
11435
11714
  _names.fullscreenElement = name;
11436
11715
  } else {
11437
11716
  name = prefix + 'FullScreenElement';
11438
- if (defined(document[name])) {
11717
+ if (document[name] !== undefined) {
11439
11718
  _names.fullscreenElement = name;
11440
11719
  }
11441
11720
  }
@@ -11443,7 +11722,7 @@ define('Core/Fullscreen',[
11443
11722
  // thankfully, event names are all lowercase per spec
11444
11723
  name = prefix + 'fullscreenchange';
11445
11724
  // event names do not have 'on' in the front, but the property on the document does
11446
- if (defined(document['on' + name])) {
11725
+ if (document['on' + name] !== undefined) {
11447
11726
  //except on IE
11448
11727
  if (prefix === 'ms') {
11449
11728
  name = 'MSFullscreenChange';
@@ -11452,7 +11731,7 @@ define('Core/Fullscreen',[
11452
11731
  }
11453
11732
 
11454
11733
  name = prefix + 'fullscreenerror';
11455
- if (defined(document['on' + name])) {
11734
+ if (document['on' + name] !== undefined) {
11456
11735
  //except on IE
11457
11736
  if (prefix === 'ms') {
11458
11737
  name = 'MSFullscreenError';
@@ -11469,7 +11748,7 @@ define('Core/Fullscreen',[
11469
11748
  * If fullscreen mode is not supported by the browser, does nothing.
11470
11749
  *
11471
11750
  * @param {Object} element The HTML element which will be placed into fullscreen mode.
11472
- * @param {HMDVRDevice} vrDevice The VR device.
11751
+ * @param {HMDVRDevice} [vrDevice] The VR device.
11473
11752
  *
11474
11753
  * @example
11475
11754
  * // Put the entire page into fullscreen.
@@ -11500,6 +11779,7 @@ define('Core/Fullscreen',[
11500
11779
 
11501
11780
  return Fullscreen;
11502
11781
  });
11782
+
11503
11783
  /*global define*/
11504
11784
  define('Core/FeatureDetection',[
11505
11785
  './defaultValue',
@@ -11509,7 +11789,7 @@ define('Core/FeatureDetection',[
11509
11789
  defaultValue,
11510
11790
  defined,
11511
11791
  Fullscreen) {
11512
- "use strict";
11792
+ 'use strict';
11513
11793
 
11514
11794
  var theNavigator;
11515
11795
  if (typeof navigator !== 'undefined') {
@@ -11756,7 +12036,7 @@ define('Core/ComponentDatatype',[
11756
12036
  DeveloperError,
11757
12037
  FeatureDetection,
11758
12038
  freezeObject) {
11759
- "use strict";
12039
+ 'use strict';
11760
12040
 
11761
12041
  // Bail out if the browser doesn't support typed arrays, to prevent the setup function
11762
12042
  // from failing, since we won't be able to create a WebGL context anyway.
@@ -12000,7 +12280,7 @@ define('Core/GeometryType',[
12000
12280
  './freezeObject'
12001
12281
  ], function(
12002
12282
  freezeObject) {
12003
- "use strict";
12283
+ 'use strict';
12004
12284
 
12005
12285
  /**
12006
12286
  * @private
@@ -12022,7 +12302,7 @@ define('Core/PrimitiveType',[
12022
12302
  ], function(
12023
12303
  WebGLConstants,
12024
12304
  freezeObject) {
12025
- "use strict";
12305
+ 'use strict';
12026
12306
 
12027
12307
  /**
12028
12308
  * The type of a geometric primitive, i.e., points, lines, and triangles.
@@ -12120,7 +12400,7 @@ define('Core/Geometry',[
12120
12400
  DeveloperError,
12121
12401
  GeometryType,
12122
12402
  PrimitiveType) {
12123
- "use strict";
12403
+ 'use strict';
12124
12404
 
12125
12405
  /**
12126
12406
  * A geometry representation with attributes forming vertices and optional index data
@@ -12313,7 +12593,7 @@ define('Core/GeometryAttribute',[
12313
12593
  defaultValue,
12314
12594
  defined,
12315
12595
  DeveloperError) {
12316
- "use strict";
12596
+ 'use strict';
12317
12597
 
12318
12598
  /**
12319
12599
  * Values and type information for geometry attributes. A {@link Geometry}
@@ -12450,7 +12730,7 @@ define('Core/GeometryAttributes',[
12450
12730
  './defaultValue'
12451
12731
  ], function(
12452
12732
  defaultValue) {
12453
- "use strict";
12733
+ 'use strict';
12454
12734
 
12455
12735
  /**
12456
12736
  * Attributes, which make up a geometry's vertices. Each property in this object corresponds to a
@@ -12554,7 +12834,7 @@ define('Core/IndexDatatype',[
12554
12834
  DeveloperError,
12555
12835
  freezeObject,
12556
12836
  CesiumMath) {
12557
- "use strict";
12837
+ 'use strict';
12558
12838
 
12559
12839
  /**
12560
12840
  * Constants for WebGL index datatypes. These corresponds to the
@@ -12687,72 +12967,722 @@ define('Core/IndexDatatype',[
12687
12967
  return freezeObject(IndexDatatype);
12688
12968
  });
12689
12969
 
12690
- /*global define*/
12691
- define('Core/Cartesian2',[
12692
- './defaultValue',
12693
- './defined',
12694
- './DeveloperError',
12695
- './freezeObject',
12696
- './Math'
12697
- ], function(
12698
- defaultValue,
12699
- defined,
12700
- DeveloperError,
12701
- freezeObject,
12702
- CesiumMath) {
12703
- "use strict";
12970
+ (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define('ThirdParty/earcut-2.1.1',[],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.earcut = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
12971
+ 'use strict';
12704
12972
 
12705
- /**
12706
- * A 2D Cartesian point.
12707
- * @alias Cartesian2
12708
- * @constructor
12709
- *
12710
- * @param {Number} [x=0.0] The X component.
12711
- * @param {Number} [y=0.0] The Y component.
12712
- *
12713
- * @see Cartesian3
12714
- * @see Cartesian4
12715
- * @see Packable
12716
- */
12717
- function Cartesian2(x, y) {
12718
- /**
12719
- * The X component.
12720
- * @type {Number}
12721
- * @default 0.0
12722
- */
12723
- this.x = defaultValue(x, 0.0);
12973
+ module.exports = earcut;
12724
12974
 
12725
- /**
12726
- * The Y component.
12727
- * @type {Number}
12728
- * @default 0.0
12729
- */
12730
- this.y = defaultValue(y, 0.0);
12731
- }
12975
+ function earcut(data, holeIndices, dim) {
12732
12976
 
12733
- /**
12734
- * Creates a Cartesian2 instance from x and y coordinates.
12735
- *
12736
- * @param {Number} x The x coordinate.
12737
- * @param {Number} y The y coordinate.
12738
- * @param {Cartesian2} [result] The object onto which to store the result.
12739
- * @returns {Cartesian2} The modified result parameter or a new Cartesian2 instance if one was not provided.
12740
- */
12741
- Cartesian2.fromElements = function(x, y, result) {
12742
- if (!defined(result)) {
12743
- return new Cartesian2(x, y);
12744
- }
12977
+ dim = dim || 2;
12745
12978
 
12746
- result.x = x;
12747
- result.y = y;
12748
- return result;
12749
- };
12979
+ var hasHoles = holeIndices && holeIndices.length,
12980
+ outerLen = hasHoles ? holeIndices[0] * dim : data.length,
12981
+ outerNode = linkedList(data, 0, outerLen, dim, true),
12982
+ triangles = [];
12750
12983
 
12751
- /**
12752
- * Duplicates a Cartesian2 instance.
12753
- *
12754
- * @param {Cartesian2} cartesian The Cartesian to duplicate.
12755
- * @param {Cartesian2} [result] The object onto which to store the result.
12984
+ if (!outerNode) return triangles;
12985
+
12986
+ var minX, minY, maxX, maxY, x, y, size;
12987
+
12988
+ if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim);
12989
+
12990
+ // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox
12991
+ if (data.length > 80 * dim) {
12992
+ minX = maxX = data[0];
12993
+ minY = maxY = data[1];
12994
+
12995
+ for (var i = dim; i < outerLen; i += dim) {
12996
+ x = data[i];
12997
+ y = data[i + 1];
12998
+ if (x < minX) minX = x;
12999
+ if (y < minY) minY = y;
13000
+ if (x > maxX) maxX = x;
13001
+ if (y > maxY) maxY = y;
13002
+ }
13003
+
13004
+ // minX, minY and size are later used to transform coords into integers for z-order calculation
13005
+ size = Math.max(maxX - minX, maxY - minY);
13006
+ }
13007
+
13008
+ earcutLinked(outerNode, triangles, dim, minX, minY, size);
13009
+
13010
+ return triangles;
13011
+ }
13012
+
13013
+ // create a circular doubly linked list from polygon points in the specified winding order
13014
+ function linkedList(data, start, end, dim, clockwise) {
13015
+ var i, last;
13016
+
13017
+ if (clockwise === (signedArea(data, start, end, dim) > 0)) {
13018
+ for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);
13019
+ } else {
13020
+ for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);
13021
+ }
13022
+
13023
+ if (last && equals(last, last.next)) {
13024
+ removeNode(last);
13025
+ last = last.next;
13026
+ }
13027
+
13028
+ return last;
13029
+ }
13030
+
13031
+ // eliminate colinear or duplicate points
13032
+ function filterPoints(start, end) {
13033
+ if (!start) return start;
13034
+ if (!end) end = start;
13035
+
13036
+ var p = start,
13037
+ again;
13038
+ do {
13039
+ again = false;
13040
+
13041
+ if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {
13042
+ removeNode(p);
13043
+ p = end = p.prev;
13044
+ if (p === p.next) return null;
13045
+ again = true;
13046
+
13047
+ } else {
13048
+ p = p.next;
13049
+ }
13050
+ } while (again || p !== end);
13051
+
13052
+ return end;
13053
+ }
13054
+
13055
+ // main ear slicing loop which triangulates a polygon (given as a linked list)
13056
+ function earcutLinked(ear, triangles, dim, minX, minY, size, pass) {
13057
+ if (!ear) return;
13058
+
13059
+ // interlink polygon nodes in z-order
13060
+ if (!pass && size) indexCurve(ear, minX, minY, size);
13061
+
13062
+ var stop = ear,
13063
+ prev, next;
13064
+
13065
+ // iterate through ears, slicing them one by one
13066
+ while (ear.prev !== ear.next) {
13067
+ prev = ear.prev;
13068
+ next = ear.next;
13069
+
13070
+ if (size ? isEarHashed(ear, minX, minY, size) : isEar(ear)) {
13071
+ // cut off the triangle
13072
+ triangles.push(prev.i / dim);
13073
+ triangles.push(ear.i / dim);
13074
+ triangles.push(next.i / dim);
13075
+
13076
+ removeNode(ear);
13077
+
13078
+ // skipping the next vertice leads to less sliver triangles
13079
+ ear = next.next;
13080
+ stop = next.next;
13081
+
13082
+ continue;
13083
+ }
13084
+
13085
+ ear = next;
13086
+
13087
+ // if we looped through the whole remaining polygon and can't find any more ears
13088
+ if (ear === stop) {
13089
+ // try filtering points and slicing again
13090
+ if (!pass) {
13091
+ earcutLinked(filterPoints(ear), triangles, dim, minX, minY, size, 1);
13092
+
13093
+ // if this didn't work, try curing all small self-intersections locally
13094
+ } else if (pass === 1) {
13095
+ ear = cureLocalIntersections(ear, triangles, dim);
13096
+ earcutLinked(ear, triangles, dim, minX, minY, size, 2);
13097
+
13098
+ // as a last resort, try splitting the remaining polygon into two
13099
+ } else if (pass === 2) {
13100
+ splitEarcut(ear, triangles, dim, minX, minY, size);
13101
+ }
13102
+
13103
+ break;
13104
+ }
13105
+ }
13106
+ }
13107
+
13108
+ // check whether a polygon node forms a valid ear with adjacent nodes
13109
+ function isEar(ear) {
13110
+ var a = ear.prev,
13111
+ b = ear,
13112
+ c = ear.next;
13113
+
13114
+ if (area(a, b, c) >= 0) return false; // reflex, can't be an ear
13115
+
13116
+ // now make sure we don't have other points inside the potential ear
13117
+ var p = ear.next.next;
13118
+
13119
+ while (p !== ear.prev) {
13120
+ if (pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&
13121
+ area(p.prev, p, p.next) >= 0) return false;
13122
+ p = p.next;
13123
+ }
13124
+
13125
+ return true;
13126
+ }
13127
+
13128
+ function isEarHashed(ear, minX, minY, size) {
13129
+ var a = ear.prev,
13130
+ b = ear,
13131
+ c = ear.next;
13132
+
13133
+ if (area(a, b, c) >= 0) return false; // reflex, can't be an ear
13134
+
13135
+ // triangle bbox; min & max are calculated like this for speed
13136
+ var minTX = a.x < b.x ? (a.x < c.x ? a.x : c.x) : (b.x < c.x ? b.x : c.x),
13137
+ minTY = a.y < b.y ? (a.y < c.y ? a.y : c.y) : (b.y < c.y ? b.y : c.y),
13138
+ maxTX = a.x > b.x ? (a.x > c.x ? a.x : c.x) : (b.x > c.x ? b.x : c.x),
13139
+ maxTY = a.y > b.y ? (a.y > c.y ? a.y : c.y) : (b.y > c.y ? b.y : c.y);
13140
+
13141
+ // z-order range for the current triangle bbox;
13142
+ var minZ = zOrder(minTX, minTY, minX, minY, size),
13143
+ maxZ = zOrder(maxTX, maxTY, minX, minY, size);
13144
+
13145
+ // first look for points inside the triangle in increasing z-order
13146
+ var p = ear.nextZ;
13147
+
13148
+ while (p && p.z <= maxZ) {
13149
+ if (p !== ear.prev && p !== ear.next &&
13150
+ pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&
13151
+ area(p.prev, p, p.next) >= 0) return false;
13152
+ p = p.nextZ;
13153
+ }
13154
+
13155
+ // then look for points in decreasing z-order
13156
+ p = ear.prevZ;
13157
+
13158
+ while (p && p.z >= minZ) {
13159
+ if (p !== ear.prev && p !== ear.next &&
13160
+ pointInTriangle(a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y) &&
13161
+ area(p.prev, p, p.next) >= 0) return false;
13162
+ p = p.prevZ;
13163
+ }
13164
+
13165
+ return true;
13166
+ }
13167
+
13168
+ // go through all polygon nodes and cure small local self-intersections
13169
+ function cureLocalIntersections(start, triangles, dim) {
13170
+ var p = start;
13171
+ do {
13172
+ var a = p.prev,
13173
+ b = p.next.next;
13174
+
13175
+ if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {
13176
+
13177
+ triangles.push(a.i / dim);
13178
+ triangles.push(p.i / dim);
13179
+ triangles.push(b.i / dim);
13180
+
13181
+ // remove two nodes involved
13182
+ removeNode(p);
13183
+ removeNode(p.next);
13184
+
13185
+ p = start = b;
13186
+ }
13187
+ p = p.next;
13188
+ } while (p !== start);
13189
+
13190
+ return p;
13191
+ }
13192
+
13193
+ // try splitting polygon into two and triangulate them independently
13194
+ function splitEarcut(start, triangles, dim, minX, minY, size) {
13195
+ // look for a valid diagonal that divides the polygon into two
13196
+ var a = start;
13197
+ do {
13198
+ var b = a.next.next;
13199
+ while (b !== a.prev) {
13200
+ if (a.i !== b.i && isValidDiagonal(a, b)) {
13201
+ // split the polygon in two by the diagonal
13202
+ var c = splitPolygon(a, b);
13203
+
13204
+ // filter colinear points around the cuts
13205
+ a = filterPoints(a, a.next);
13206
+ c = filterPoints(c, c.next);
13207
+
13208
+ // run earcut on each half
13209
+ earcutLinked(a, triangles, dim, minX, minY, size);
13210
+ earcutLinked(c, triangles, dim, minX, minY, size);
13211
+ return;
13212
+ }
13213
+ b = b.next;
13214
+ }
13215
+ a = a.next;
13216
+ } while (a !== start);
13217
+ }
13218
+
13219
+ // link every hole into the outer loop, producing a single-ring polygon without holes
13220
+ function eliminateHoles(data, holeIndices, outerNode, dim) {
13221
+ var queue = [],
13222
+ i, len, start, end, list;
13223
+
13224
+ for (i = 0, len = holeIndices.length; i < len; i++) {
13225
+ start = holeIndices[i] * dim;
13226
+ end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;
13227
+ list = linkedList(data, start, end, dim, false);
13228
+ if (list === list.next) list.steiner = true;
13229
+ queue.push(getLeftmost(list));
13230
+ }
13231
+
13232
+ queue.sort(compareX);
13233
+
13234
+ // process holes from left to right
13235
+ for (i = 0; i < queue.length; i++) {
13236
+ eliminateHole(queue[i], outerNode);
13237
+ outerNode = filterPoints(outerNode, outerNode.next);
13238
+ }
13239
+
13240
+ return outerNode;
13241
+ }
13242
+
13243
+ function compareX(a, b) {
13244
+ return a.x - b.x;
13245
+ }
13246
+
13247
+ // find a bridge between vertices that connects hole with an outer ring and and link it
13248
+ function eliminateHole(hole, outerNode) {
13249
+ outerNode = findHoleBridge(hole, outerNode);
13250
+ if (outerNode) {
13251
+ var b = splitPolygon(outerNode, hole);
13252
+ filterPoints(b, b.next);
13253
+ }
13254
+ }
13255
+
13256
+ // David Eberly's algorithm for finding a bridge between hole and outer polygon
13257
+ function findHoleBridge(hole, outerNode) {
13258
+ var p = outerNode,
13259
+ hx = hole.x,
13260
+ hy = hole.y,
13261
+ qx = -Infinity,
13262
+ m;
13263
+
13264
+ // find a segment intersected by a ray from the hole's leftmost point to the left;
13265
+ // segment's endpoint with lesser x will be potential connection point
13266
+ do {
13267
+ if (hy <= p.y && hy >= p.next.y) {
13268
+ var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);
13269
+ if (x <= hx && x > qx) {
13270
+ qx = x;
13271
+ if (x === hx) {
13272
+ if (hy === p.y) return p;
13273
+ if (hy === p.next.y) return p.next;
13274
+ }
13275
+ m = p.x < p.next.x ? p : p.next;
13276
+ }
13277
+ }
13278
+ p = p.next;
13279
+ } while (p !== outerNode);
13280
+
13281
+ if (!m) return null;
13282
+
13283
+ if (hx === qx) return m.prev; // hole touches outer segment; pick lower endpoint
13284
+
13285
+ // look for points inside the triangle of hole point, segment intersection and endpoint;
13286
+ // if there are no points found, we have a valid connection;
13287
+ // otherwise choose the point of the minimum angle with the ray as connection point
13288
+
13289
+ var stop = m,
13290
+ mx = m.x,
13291
+ my = m.y,
13292
+ tanMin = Infinity,
13293
+ tan;
13294
+
13295
+ p = m.next;
13296
+
13297
+ while (p !== stop) {
13298
+ if (hx >= p.x && p.x >= mx &&
13299
+ pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {
13300
+
13301
+ tan = Math.abs(hy - p.y) / (hx - p.x); // tangential
13302
+
13303
+ if ((tan < tanMin || (tan === tanMin && p.x > m.x)) && locallyInside(p, hole)) {
13304
+ m = p;
13305
+ tanMin = tan;
13306
+ }
13307
+ }
13308
+
13309
+ p = p.next;
13310
+ }
13311
+
13312
+ return m;
13313
+ }
13314
+
13315
+ // interlink polygon nodes in z-order
13316
+ function indexCurve(start, minX, minY, size) {
13317
+ var p = start;
13318
+ do {
13319
+ if (p.z === null) p.z = zOrder(p.x, p.y, minX, minY, size);
13320
+ p.prevZ = p.prev;
13321
+ p.nextZ = p.next;
13322
+ p = p.next;
13323
+ } while (p !== start);
13324
+
13325
+ p.prevZ.nextZ = null;
13326
+ p.prevZ = null;
13327
+
13328
+ sortLinked(p);
13329
+ }
13330
+
13331
+ // Simon Tatham's linked list merge sort algorithm
13332
+ // http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html
13333
+ function sortLinked(list) {
13334
+ var i, p, q, e, tail, numMerges, pSize, qSize,
13335
+ inSize = 1;
13336
+
13337
+ do {
13338
+ p = list;
13339
+ list = null;
13340
+ tail = null;
13341
+ numMerges = 0;
13342
+
13343
+ while (p) {
13344
+ numMerges++;
13345
+ q = p;
13346
+ pSize = 0;
13347
+ for (i = 0; i < inSize; i++) {
13348
+ pSize++;
13349
+ q = q.nextZ;
13350
+ if (!q) break;
13351
+ }
13352
+
13353
+ qSize = inSize;
13354
+
13355
+ while (pSize > 0 || (qSize > 0 && q)) {
13356
+
13357
+ if (pSize === 0) {
13358
+ e = q;
13359
+ q = q.nextZ;
13360
+ qSize--;
13361
+ } else if (qSize === 0 || !q) {
13362
+ e = p;
13363
+ p = p.nextZ;
13364
+ pSize--;
13365
+ } else if (p.z <= q.z) {
13366
+ e = p;
13367
+ p = p.nextZ;
13368
+ pSize--;
13369
+ } else {
13370
+ e = q;
13371
+ q = q.nextZ;
13372
+ qSize--;
13373
+ }
13374
+
13375
+ if (tail) tail.nextZ = e;
13376
+ else list = e;
13377
+
13378
+ e.prevZ = tail;
13379
+ tail = e;
13380
+ }
13381
+
13382
+ p = q;
13383
+ }
13384
+
13385
+ tail.nextZ = null;
13386
+ inSize *= 2;
13387
+
13388
+ } while (numMerges > 1);
13389
+
13390
+ return list;
13391
+ }
13392
+
13393
+ // z-order of a point given coords and size of the data bounding box
13394
+ function zOrder(x, y, minX, minY, size) {
13395
+ // coords are transformed into non-negative 15-bit integer range
13396
+ x = 32767 * (x - minX) / size;
13397
+ y = 32767 * (y - minY) / size;
13398
+
13399
+ x = (x | (x << 8)) & 0x00FF00FF;
13400
+ x = (x | (x << 4)) & 0x0F0F0F0F;
13401
+ x = (x | (x << 2)) & 0x33333333;
13402
+ x = (x | (x << 1)) & 0x55555555;
13403
+
13404
+ y = (y | (y << 8)) & 0x00FF00FF;
13405
+ y = (y | (y << 4)) & 0x0F0F0F0F;
13406
+ y = (y | (y << 2)) & 0x33333333;
13407
+ y = (y | (y << 1)) & 0x55555555;
13408
+
13409
+ return x | (y << 1);
13410
+ }
13411
+
13412
+ // find the leftmost node of a polygon ring
13413
+ function getLeftmost(start) {
13414
+ var p = start,
13415
+ leftmost = start;
13416
+ do {
13417
+ if (p.x < leftmost.x) leftmost = p;
13418
+ p = p.next;
13419
+ } while (p !== start);
13420
+
13421
+ return leftmost;
13422
+ }
13423
+
13424
+ // check if a point lies within a convex triangle
13425
+ function pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {
13426
+ return (cx - px) * (ay - py) - (ax - px) * (cy - py) >= 0 &&
13427
+ (ax - px) * (by - py) - (bx - px) * (ay - py) >= 0 &&
13428
+ (bx - px) * (cy - py) - (cx - px) * (by - py) >= 0;
13429
+ }
13430
+
13431
+ // check if a diagonal between two polygon nodes is valid (lies in polygon interior)
13432
+ function isValidDiagonal(a, b) {
13433
+ return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) &&
13434
+ locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b);
13435
+ }
13436
+
13437
+ // signed area of a triangle
13438
+ function area(p, q, r) {
13439
+ return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);
13440
+ }
13441
+
13442
+ // check if two points are equal
13443
+ function equals(p1, p2) {
13444
+ return p1.x === p2.x && p1.y === p2.y;
13445
+ }
13446
+
13447
+ // check if two segments intersect
13448
+ function intersects(p1, q1, p2, q2) {
13449
+ if ((equals(p1, q1) && equals(p2, q2)) ||
13450
+ (equals(p1, q2) && equals(p2, q1))) return true;
13451
+ return area(p1, q1, p2) > 0 !== area(p1, q1, q2) > 0 &&
13452
+ area(p2, q2, p1) > 0 !== area(p2, q2, q1) > 0;
13453
+ }
13454
+
13455
+ // check if a polygon diagonal intersects any polygon segments
13456
+ function intersectsPolygon(a, b) {
13457
+ var p = a;
13458
+ do {
13459
+ if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&
13460
+ intersects(p, p.next, a, b)) return true;
13461
+ p = p.next;
13462
+ } while (p !== a);
13463
+
13464
+ return false;
13465
+ }
13466
+
13467
+ // check if a polygon diagonal is locally inside the polygon
13468
+ function locallyInside(a, b) {
13469
+ return area(a.prev, a, a.next) < 0 ?
13470
+ area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 :
13471
+ area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;
13472
+ }
13473
+
13474
+ // check if the middle point of a polygon diagonal is inside the polygon
13475
+ function middleInside(a, b) {
13476
+ var p = a,
13477
+ inside = false,
13478
+ px = (a.x + b.x) / 2,
13479
+ py = (a.y + b.y) / 2;
13480
+ do {
13481
+ if (((p.y > py) !== (p.next.y > py)) && (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x))
13482
+ inside = !inside;
13483
+ p = p.next;
13484
+ } while (p !== a);
13485
+
13486
+ return inside;
13487
+ }
13488
+
13489
+ // link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;
13490
+ // if one belongs to the outer ring and another to a hole, it merges it into a single ring
13491
+ function splitPolygon(a, b) {
13492
+ var a2 = new Node(a.i, a.x, a.y),
13493
+ b2 = new Node(b.i, b.x, b.y),
13494
+ an = a.next,
13495
+ bp = b.prev;
13496
+
13497
+ a.next = b;
13498
+ b.prev = a;
13499
+
13500
+ a2.next = an;
13501
+ an.prev = a2;
13502
+
13503
+ b2.next = a2;
13504
+ a2.prev = b2;
13505
+
13506
+ bp.next = b2;
13507
+ b2.prev = bp;
13508
+
13509
+ return b2;
13510
+ }
13511
+
13512
+ // create a node and optionally link it with previous one (in a circular doubly linked list)
13513
+ function insertNode(i, x, y, last) {
13514
+ var p = new Node(i, x, y);
13515
+
13516
+ if (!last) {
13517
+ p.prev = p;
13518
+ p.next = p;
13519
+
13520
+ } else {
13521
+ p.next = last.next;
13522
+ p.prev = last;
13523
+ last.next.prev = p;
13524
+ last.next = p;
13525
+ }
13526
+ return p;
13527
+ }
13528
+
13529
+ function removeNode(p) {
13530
+ p.next.prev = p.prev;
13531
+ p.prev.next = p.next;
13532
+
13533
+ if (p.prevZ) p.prevZ.nextZ = p.nextZ;
13534
+ if (p.nextZ) p.nextZ.prevZ = p.prevZ;
13535
+ }
13536
+
13537
+ function Node(i, x, y) {
13538
+ // vertice index in coordinates array
13539
+ this.i = i;
13540
+
13541
+ // vertex coordinates
13542
+ this.x = x;
13543
+ this.y = y;
13544
+
13545
+ // previous and next vertice nodes in a polygon ring
13546
+ this.prev = null;
13547
+ this.next = null;
13548
+
13549
+ // z-order curve value
13550
+ this.z = null;
13551
+
13552
+ // previous and next nodes in z-order
13553
+ this.prevZ = null;
13554
+ this.nextZ = null;
13555
+
13556
+ // indicates whether this is a steiner point
13557
+ this.steiner = false;
13558
+ }
13559
+
13560
+ // return a percentage difference between the polygon area and its triangulation area;
13561
+ // used to verify correctness of triangulation
13562
+ earcut.deviation = function (data, holeIndices, dim, triangles) {
13563
+ var hasHoles = holeIndices && holeIndices.length;
13564
+ var outerLen = hasHoles ? holeIndices[0] * dim : data.length;
13565
+
13566
+ var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));
13567
+ if (hasHoles) {
13568
+ for (var i = 0, len = holeIndices.length; i < len; i++) {
13569
+ var start = holeIndices[i] * dim;
13570
+ var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;
13571
+ polygonArea -= Math.abs(signedArea(data, start, end, dim));
13572
+ }
13573
+ }
13574
+
13575
+ var trianglesArea = 0;
13576
+ for (i = 0; i < triangles.length; i += 3) {
13577
+ var a = triangles[i] * dim;
13578
+ var b = triangles[i + 1] * dim;
13579
+ var c = triangles[i + 2] * dim;
13580
+ trianglesArea += Math.abs(
13581
+ (data[a] - data[c]) * (data[b + 1] - data[a + 1]) -
13582
+ (data[a] - data[b]) * (data[c + 1] - data[a + 1]));
13583
+ }
13584
+
13585
+ return polygonArea === 0 && trianglesArea === 0 ? 0 :
13586
+ Math.abs((trianglesArea - polygonArea) / polygonArea);
13587
+ };
13588
+
13589
+ function signedArea(data, start, end, dim) {
13590
+ var sum = 0;
13591
+ for (var i = start, j = end - dim; i < end; i += dim) {
13592
+ sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);
13593
+ j = i;
13594
+ }
13595
+ return sum;
13596
+ }
13597
+
13598
+ // turn a polygon in a multi-dimensional array form (e.g. as in GeoJSON) into a form Earcut accepts
13599
+ earcut.flatten = function (data) {
13600
+ var dim = data[0][0].length,
13601
+ result = {vertices: [], holes: [], dimensions: dim},
13602
+ holeIndex = 0;
13603
+
13604
+ for (var i = 0; i < data.length; i++) {
13605
+ for (var j = 0; j < data[i].length; j++) {
13606
+ for (var d = 0; d < dim; d++) result.vertices.push(data[i][j][d]);
13607
+ }
13608
+ if (i > 0) {
13609
+ holeIndex += data[i - 1].length;
13610
+ result.holes.push(holeIndex);
13611
+ }
13612
+ }
13613
+ return result;
13614
+ };
13615
+
13616
+ },{}]},{},[1])(1)
13617
+ });
13618
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5L25vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJzcmMvZWFyY3V0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gZSh0LG4scil7ZnVuY3Rpb24gcyhvLHUpe2lmKCFuW29dKXtpZighdFtvXSl7dmFyIGE9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtpZighdSYmYSlyZXR1cm4gYShvLCEwKTtpZihpKXJldHVybiBpKG8sITApO3ZhciBmPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIrbytcIidcIik7dGhyb3cgZi5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGZ9dmFyIGw9bltvXT17ZXhwb3J0czp7fX07dFtvXVswXS5jYWxsKGwuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W29dWzFdW2VdO3JldHVybiBzKG4/bjplKX0sbCxsLmV4cG9ydHMsZSx0LG4scil9cmV0dXJuIG5bb10uZXhwb3J0c312YXIgaT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2Zvcih2YXIgbz0wO288ci5sZW5ndGg7bysrKXMocltvXSk7cmV0dXJuIHN9KSIsIid1c2Ugc3RyaWN0JztcclxuXHJcbm1vZHVsZS5leHBvcnRzID0gZWFyY3V0O1xyXG5cclxuZnVuY3Rpb24gZWFyY3V0KGRhdGEsIGhvbGVJbmRpY2VzLCBkaW0pIHtcclxuXHJcbiAgICBkaW0gPSBkaW0gfHwgMjtcclxuXHJcbiAgICB2YXIgaGFzSG9sZXMgPSBob2xlSW5kaWNlcyAmJiBob2xlSW5kaWNlcy5sZW5ndGgsXHJcbiAgICAgICAgb3V0ZXJMZW4gPSBoYXNIb2xlcyA/IGhvbGVJbmRpY2VzWzBdICogZGltIDogZGF0YS5sZW5ndGgsXHJcbiAgICAgICAgb3V0ZXJOb2RlID0gbGlua2VkTGlzdChkYXRhLCAwLCBvdXRlckxlbiwgZGltLCB0cnVlKSxcclxuICAgICAgICB0cmlhbmdsZXMgPSBbXTtcclxuXHJcbiAgICBpZiAoIW91dGVyTm9kZSkgcmV0dXJuIHRyaWFuZ2xlcztcclxuXHJcbiAgICB2YXIgbWluWCwgbWluWSwgbWF4WCwgbWF4WSwgeCwgeSwgc2l6ZTtcclxuXHJcbiAgICBpZiAoaGFzSG9sZXMpIG91dGVyTm9kZSA9IGVsaW1pbmF0ZUhvbGVzKGRhdGEsIGhvbGVJbmRpY2VzLCBvdXRlck5vZGUsIGRpbSk7XHJcblxyXG4gICAgLy8gaWYgdGhlIHNoYXBlIGlzIG5vdCB0b28gc2ltcGxlLCB3ZSdsbCB1c2Ugei1vcmRlciBjdXJ2ZSBoYXNoIGxhdGVyOyBjYWxjdWxhdGUgcG9seWdvbiBiYm94XHJcbiAgICBpZiAoZGF0YS5sZW5ndGggPiA4MCAqIGRpbSkge1xyXG4gICAgICAgIG1pblggPSBtYXhYID0gZGF0YVswXTtcclxuICAgICAgICBtaW5ZID0gbWF4WSA9IGRhdGFbMV07XHJcblxyXG4gICAgICAgIGZvciAodmFyIGkgPSBkaW07IGkgPCBvdXRlckxlbjsgaSArPSBkaW0pIHtcclxuICAgICAgICAgICAgeCA9IGRhdGFbaV07XHJcbiAgICAgICAgICAgIHkgPSBkYXRhW2kgKyAxXTtcclxuICAgICAgICAgICAgaWYgKHggPCBtaW5YKSBtaW5YID0geDtcclxuICAgICAgICAgICAgaWYgKHkgPCBtaW5ZKSBtaW5ZID0geTtcclxuICAgICAgICAgICAgaWYgKHggPiBtYXhYKSBtYXhYID0geDtcclxuICAgICAgICAgICAgaWYgKHkgPiBtYXhZKSBtYXhZID0geTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIG1pblgsIG1pblkgYW5kIHNpemUgYXJlIGxhdGVyIHVzZWQgdG8gdHJhbnNmb3JtIGNvb3JkcyBpbnRvIGludGVnZXJzIGZvciB6LW9yZGVyIGNhbGN1bGF0aW9uXHJcbiAgICAgICAgc2l6ZSA9IE1hdGgubWF4KG1heFggLSBtaW5YLCBtYXhZIC0gbWluWSk7XHJcbiAgICB9XHJcblxyXG4gICAgZWFyY3V0TGlua2VkKG91dGVyTm9kZSwgdHJpYW5nbGVzLCBkaW0sIG1pblgsIG1pblksIHNpemUpO1xyXG5cclxuICAgIHJldHVybiB0cmlhbmdsZXM7XHJcbn1cclxuXHJcbi8vIGNyZWF0ZSBhIGNpcmN1bGFyIGRvdWJseSBsaW5rZWQgbGlzdCBmcm9tIHBvbHlnb24gcG9pbnRzIGluIHRoZSBzcGVjaWZpZWQgd2luZGluZyBvcmRlclxyXG5mdW5jdGlvbiBsaW5rZWRMaXN0KGRhdGEsIHN0YXJ0LCBlbmQsIGRpbSwgY2xvY2t3aXNlKSB7XHJcbiAgICB2YXIgaSwgbGFzdDtcclxuXHJcbiAgICBpZiAoY2xvY2t3aXNlID09PSAoc2lnbmVkQXJlYShkYXRhLCBzdGFydCwgZW5kLCBkaW0pID4gMCkpIHtcclxuICAgICAgICBmb3IgKGkgPSBzdGFydDsgaSA8IGVuZDsgaSArPSBkaW0pIGxhc3QgPSBpbnNlcnROb2RlKGksIGRhdGFbaV0sIGRhdGFbaSArIDFdLCBsYXN0KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZm9yIChpID0gZW5kIC0gZGltOyBpID49IHN0YXJ0OyBpIC09IGRpbSkgbGFzdCA9IGluc2VydE5vZGUoaSwgZGF0YVtpXSwgZGF0YVtpICsgMV0sIGxhc3QpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChsYXN0ICYmIGVxdWFscyhsYXN0LCBsYXN0Lm5leHQpKSB7XHJcbiAgICAgICAgcmVtb3ZlTm9kZShsYXN0KTtcclxuICAgICAgICBsYXN0ID0gbGFzdC5uZXh0O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBsYXN0O1xyXG59XHJcblxyXG4vLyBlbGltaW5hdGUgY29saW5lYXIgb3IgZHVwbGljYXRlIHBvaW50c1xyXG5mdW5jdGlvbiBmaWx0ZXJQb2ludHMoc3RhcnQsIGVuZCkge1xyXG4gICAgaWYgKCFzdGFydCkgcmV0dXJuIHN0YXJ0O1xyXG4gICAgaWYgKCFlbmQpIGVuZCA9IHN0YXJ0O1xyXG5cclxuICAgIHZhciBwID0gc3RhcnQsXHJcbiAgICAgICAgYWdhaW47XHJcbiAgICBkbyB7XHJcbiAgICAgICAgYWdhaW4gPSBmYWxzZTtcclxuXHJcbiAgICAgICAgaWYgKCFwLnN0ZWluZXIgJiYgKGVxdWFscyhwLCBwLm5leHQpIHx8IGFyZWEocC5wcmV2LCBwLCBwLm5leHQpID09PSAwKSkge1xyXG4gICAgICAgICAgICByZW1vdmVOb2RlKHApO1xyXG4gICAgICAgICAgICBwID0gZW5kID0gcC5wcmV2O1xyXG4gICAgICAgICAgICBpZiAocCA9PT0gcC5uZXh0KSByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgYWdhaW4gPSB0cnVlO1xyXG5cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBwID0gcC5uZXh0O1xyXG4gICAgICAgIH1cclxuICAgIH0gd2hpbGUgKGFnYWluIHx8IHAgIT09IGVuZCk7XHJcblxyXG4gICAgcmV0dXJuIGVuZDtcclxufVxyXG5cclxuLy8gbWFpbiBlYXIgc2xpY2luZyBsb29wIHdoaWNoIHRyaWFuZ3VsYXRlcyBhIHBvbHlnb24gKGdpdmVuIGFzIGEgbGlua2VkIGxpc3QpXHJcbmZ1bmN0aW9uIGVhcmN1dExpbmtlZChlYXIsIHRyaWFuZ2xlcywgZGltLCBtaW5YLCBtaW5ZLCBzaXplLCBwYXNzKSB7XHJcbiAgICBpZiAoIWVhcikgcmV0dXJuO1xyXG5cclxuICAgIC8vIGludGVybGluayBwb2x5Z29uIG5vZGVzIGluIHotb3JkZXJcclxuICAgIGlmICghcGFzcyAmJiBzaXplKSBpbmRleEN1cnZlKGVhciwgbWluWCwgbWluWSwgc2l6ZSk7XHJcblxyXG4gICAgdmFyIHN0b3AgPSBlYXIsXHJcbiAgICAgICAgcHJldiwgbmV4dDtcclxuXHJcbiAgICAvLyBpdGVyYXRlIHRocm91Z2ggZWFycywgc2xpY2luZyB0aGVtIG9uZSBieSBvbmVcclxuICAgIHdoaWxlIChlYXIucHJldiAhPT0gZWFyLm5leHQpIHtcclxuICAgICAgICBwcmV2ID0gZWFyLnByZXY7XHJcbiAgICAgICAgbmV4dCA9IGVhci5uZXh0O1xyXG5cclxuICAgICAgICBpZiAoc2l6ZSA/IGlzRWFySGFzaGVkKGVhciwgbWluWCwgbWluWSwgc2l6ZSkgOiBpc0VhcihlYXIpKSB7XHJcbiAgICAgICAgICAgIC8vIGN1dCBvZmYgdGhlIHRyaWFuZ2xlXHJcbiAgICAgICAgICAgIHRyaWFuZ2xlcy5wdXNoKHByZXYuaSAvIGRpbSk7XHJcbiAgICAgICAgICAgIHRyaWFuZ2xlcy5wdXNoKGVhci5pIC8gZGltKTtcclxuICAgICAgICAgICAgdHJpYW5nbGVzLnB1c2gobmV4dC5pIC8gZGltKTtcclxuXHJcbiAgICAgICAgICAgIHJlbW92ZU5vZGUoZWFyKTtcclxuXHJcbiAgICAgICAgICAgIC8vIHNraXBwaW5nIHRoZSBuZXh0IHZlcnRpY2UgbGVhZHMgdG8gbGVzcyBzbGl2ZXIgdHJpYW5nbGVzXHJcbiAgICAgICAgICAgIGVhciA9IG5leHQubmV4dDtcclxuICAgICAgICAgICAgc3RvcCA9IG5leHQubmV4dDtcclxuXHJcbiAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZWFyID0gbmV4dDtcclxuXHJcbiAgICAgICAgLy8gaWYgd2UgbG9vcGVkIHRocm91Z2ggdGhlIHdob2xlIHJlbWFpbmluZyBwb2x5Z29uIGFuZCBjYW4ndCBmaW5kIGFueSBtb3JlIGVhcnNcclxuICAgICAgICBpZiAoZWFyID09PSBzdG9wKSB7XHJcbiAgICAgICAgICAgIC8vIHRyeSBmaWx0ZXJpbmcgcG9pbnRzIGFuZCBzbGljaW5nIGFnYWluXHJcbiAgICAgICAgICAgIGlmICghcGFzcykge1xyXG4gICAgICAgICAgICAgICAgZWFyY3V0TGlua2VkKGZpbHRlclBvaW50cyhlYXIpLCB0cmlhbmdsZXMsIGRpbSwgbWluWCwgbWluWSwgc2l6ZSwgMSk7XHJcblxyXG4gICAgICAgICAgICAvLyBpZiB0aGlzIGRpZG4ndCB3b3JrLCB0cnkgY3VyaW5nIGFsbCBzbWFsbCBzZWxmLWludGVyc2VjdGlvbnMgbG9jYWxseVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHBhc3MgPT09IDEpIHtcclxuICAgICAgICAgICAgICAgIGVhciA9IGN1cmVMb2NhbEludGVyc2VjdGlvbnMoZWFyLCB0cmlhbmdsZXMsIGRpbSk7XHJcbiAgICAgICAgICAgICAgICBlYXJjdXRMaW5rZWQoZWFyLCB0cmlhbmdsZXMsIGRpbSwgbWluWCwgbWluWSwgc2l6ZSwgMik7XHJcblxyXG4gICAgICAgICAgICAvLyBhcyBhIGxhc3QgcmVzb3J0LCB0cnkgc3BsaXR0aW5nIHRoZSByZW1haW5pbmcgcG9seWdvbiBpbnRvIHR3b1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHBhc3MgPT09IDIpIHtcclxuICAgICAgICAgICAgICAgIHNwbGl0RWFyY3V0KGVhciwgdHJpYW5nbGVzLCBkaW0sIG1pblgsIG1pblksIHNpemUpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbi8vIGNoZWNrIHdoZXRoZXIgYSBwb2x5Z29uIG5vZGUgZm9ybXMgYSB2YWxpZCBlYXIgd2l0aCBhZGphY2VudCBub2Rlc1xyXG5mdW5jdGlvbiBpc0VhcihlYXIpIHtcclxuICAgIHZhciBhID0gZWFyLnByZXYsXHJcbiAgICAgICAgYiA9IGVhcixcclxuICAgICAgICBjID0gZWFyLm5leHQ7XHJcblxyXG4gICAgaWYgKGFyZWEoYSwgYiwgYykgPj0gMCkgcmV0dXJuIGZhbHNlOyAvLyByZWZsZXgsIGNhbid0IGJlIGFuIGVhclxyXG5cclxuICAgIC8vIG5vdyBtYWtlIHN1cmUgd2UgZG9uJ3QgaGF2ZSBvdGhlciBwb2ludHMgaW5zaWRlIHRoZSBwb3RlbnRpYWwgZWFyXHJcbiAgICB2YXIgcCA9IGVhci5uZXh0Lm5leHQ7XHJcblxyXG4gICAgd2hpbGUgKHAgIT09IGVhci5wcmV2KSB7XHJcbiAgICAgICAgaWYgKHBvaW50SW5UcmlhbmdsZShhLngsIGEueSwgYi54LCBiLnksIGMueCwgYy55LCBwLngsIHAueSkgJiZcclxuICAgICAgICAgICAgYXJlYShwLnByZXYsIHAsIHAubmV4dCkgPj0gMCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIHAgPSBwLm5leHQ7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRydWU7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzRWFySGFzaGVkKGVhciwgbWluWCwgbWluWSwgc2l6ZSkge1xyXG4gICAgdmFyIGEgPSBlYXIucHJldixcclxuICAgICAgICBiID0gZWFyLFxyXG4gICAgICAgIGMgPSBlYXIubmV4dDtcclxuXHJcbiAgICBpZiAoYXJlYShhLCBiLCBjKSA+PSAwKSByZXR1cm4gZmFsc2U7IC8vIHJlZmxleCwgY2FuJ3QgYmUgYW4gZWFyXHJcblxyXG4gICAgLy8gdHJpYW5nbGUgYmJveDsgbWluICYgbWF4IGFyZSBjYWxjdWxhdGVkIGxpa2UgdGhpcyBmb3Igc3BlZWRcclxuICAgIHZhciBtaW5UWCA9IGEueCA8IGIueCA/IChhLnggPCBjLnggPyBhLnggOiBjLngpIDogKGIueCA8IGMueCA/IGIueCA6IGMueCksXHJcbiAgICAgICAgbWluVFkgPSBhLnkgPCBiLnkgPyAoYS55IDwgYy55ID8gYS55IDogYy55KSA6IChiLnkgPCBjLnkgPyBiLnkgOiBjLnkpLFxyXG4gICAgICAgIG1heFRYID0gYS54ID4gYi54ID8gKGEueCA+IGMueCA/IGEueCA6IGMueCkgOiAoYi54ID4gYy54ID8gYi54IDogYy54KSxcclxuICAgICAgICBtYXhUWSA9IGEueSA+IGIueSA/IChhLnkgPiBjLnkgPyBhLnkgOiBjLnkpIDogKGIueSA+IGMueSA/IGIueSA6IGMueSk7XHJcblxyXG4gICAgLy8gei1vcmRlciByYW5nZSBmb3IgdGhlIGN1cnJlbnQgdHJpYW5nbGUgYmJveDtcclxuICAgIHZhciBtaW5aID0gek9yZGVyKG1pblRYLCBtaW5UWSwgbWluWCwgbWluWSwgc2l6ZSksXHJcbiAgICAgICAgbWF4WiA9IHpPcmRlcihtYXhUWCwgbWF4VFksIG1pblgsIG1pblksIHNpemUpO1xyXG5cclxuICAgIC8vIGZpcnN0IGxvb2sgZm9yIHBvaW50cyBpbnNpZGUgdGhlIHRyaWFuZ2xlIGluIGluY3JlYXNpbmcgei1vcmRlclxyXG4gICAgdmFyIHAgPSBlYXIubmV4dFo7XHJcblxyXG4gICAgd2hpbGUgKHAgJiYgcC56IDw9IG1heFopIHtcclxuICAgICAgICBpZiAocCAhPT0gZWFyLnByZXYgJiYgcCAhPT0gZWFyLm5leHQgJiZcclxuICAgICAgICAgICAgcG9pbnRJblRyaWFuZ2xlKGEueCwgYS55LCBiLngsIGIueSwgYy54LCBjLnksIHAueCwgcC55KSAmJlxyXG4gICAgICAgICAgICBhcmVhKHAucHJldiwgcCwgcC5uZXh0KSA+PSAwKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgcCA9IHAubmV4dFo7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdGhlbiBsb29rIGZvciBwb2ludHMgaW4gZGVjcmVhc2luZyB6LW9yZGVyXHJcbiAgICBwID0gZWFyLnByZXZaO1xyXG5cclxuICAgIHdoaWxlIChwICYmIHAueiA+PSBtaW5aKSB7XHJcbiAgICAgICAgaWYgKHAgIT09IGVhci5wcmV2ICYmIHAgIT09IGVhci5uZXh0ICYmXHJcbiAgICAgICAgICAgIHBvaW50SW5UcmlhbmdsZShhLngsIGEueSwgYi54LCBiLnksIGMueCwgYy55LCBwLngsIHAueSkgJiZcclxuICAgICAgICAgICAgYXJlYShwLnByZXYsIHAsIHAubmV4dCkgPj0gMCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIHAgPSBwLnByZXZaO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cnVlO1xyXG59XHJcblxyXG4vLyBnbyB0aHJvdWdoIGFsbCBwb2x5Z29uIG5vZGVzIGFuZCBjdXJlIHNtYWxsIGxvY2FsIHNlbGYtaW50ZXJzZWN0aW9uc1xyXG5mdW5jdGlvbiBjdXJlTG9jYWxJbnRlcnNlY3Rpb25zKHN0YXJ0LCB0cmlhbmdsZXMsIGRpbSkge1xyXG4gICAgdmFyIHAgPSBzdGFydDtcclxuICAgIGRvIHtcclxuICAgICAgICB2YXIgYSA9IHAucHJldixcclxuICAgICAgICAgICAgYiA9IHAubmV4dC5uZXh0O1xyXG5cclxuICAgICAgICBpZiAoIWVxdWFscyhhLCBiKSAmJiBpbnRlcnNlY3RzKGEsIHAsIHAubmV4dCwgYikgJiYgbG9jYWxseUluc2lkZShhLCBiKSAmJiBsb2NhbGx5SW5zaWRlKGIsIGEpKSB7XHJcblxyXG4gICAgICAgICAgICB0cmlhbmdsZXMucHVzaChhLmkgLyBkaW0pO1xyXG4gICAgICAgICAgICB0cmlhbmdsZXMucHVzaChwLmkgLyBkaW0pO1xyXG4gICAgICAgICAgICB0cmlhbmdsZXMucHVzaChiLmkgLyBkaW0pO1xyXG5cclxuICAgICAgICAgICAgLy8gcmVtb3ZlIHR3byBub2RlcyBpbnZvbHZlZFxyXG4gICAgICAgICAgICByZW1vdmVOb2RlKHApO1xyXG4gICAgICAgICAgICByZW1vdmVOb2RlKHAubmV4dCk7XHJcblxyXG4gICAgICAgICAgICBwID0gc3RhcnQgPSBiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBwID0gcC5uZXh0O1xyXG4gICAgfSB3aGlsZSAocCAhPT0gc3RhcnQpO1xyXG5cclxuICAgIHJldHVybiBwO1xyXG59XHJcblxyXG4vLyB0cnkgc3BsaXR0aW5nIHBvbHlnb24gaW50byB0d28gYW5kIHRyaWFuZ3VsYXRlIHRoZW0gaW5kZXBlbmRlbnRseVxyXG5mdW5jdGlvbiBzcGxpdEVhcmN1dChzdGFydCwgdHJpYW5nbGVzLCBkaW0sIG1pblgsIG1pblksIHNpemUpIHtcclxuICAgIC8vIGxvb2sgZm9yIGEgdmFsaWQgZGlhZ29uYWwgdGhhdCBkaXZpZGVzIHRoZSBwb2x5Z29uIGludG8gdHdvXHJcbiAgICB2YXIgYSA9IHN0YXJ0O1xyXG4gICAgZG8ge1xyXG4gICAgICAgIHZhciBiID0gYS5uZXh0Lm5leHQ7XHJcbiAgICAgICAgd2hpbGUgKGIgIT09IGEucHJldikge1xyXG4gICAgICAgICAgICBpZiAoYS5pICE9PSBiLmkgJiYgaXNWYWxpZERpYWdvbmFsKGEsIGIpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBzcGxpdCB0aGUgcG9seWdvbiBpbiB0d28gYnkgdGhlIGRpYWdvbmFsXHJcbiAgICAgICAgICAgICAgICB2YXIgYyA9IHNwbGl0UG9seWdvbihhLCBiKTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBmaWx0ZXIgY29saW5lYXIgcG9pbnRzIGFyb3VuZCB0aGUgY3V0c1xyXG4gICAgICAgICAgICAgICAgYSA9IGZpbHRlclBvaW50cyhhLCBhLm5leHQpO1xyXG4gICAgICAgICAgICAgICAgYyA9IGZpbHRlclBvaW50cyhjLCBjLm5leHQpO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIHJ1biBlYXJjdXQgb24gZWFjaCBoYWxmXHJcbiAgICAgICAgICAgICAgICBlYXJjdXRMaW5rZWQoYSwgdHJpYW5nbGVzLCBkaW0sIG1pblgsIG1pblksIHNpemUpO1xyXG4gICAgICAgICAgICAgICAgZWFyY3V0TGlua2VkKGMsIHRyaWFuZ2xlcywgZGltLCBtaW5YLCBtaW5ZLCBzaXplKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBiID0gYi5uZXh0O1xyXG4gICAgICAgIH1cclxuICAgICAgICBhID0gYS5uZXh0O1xyXG4gICAgfSB3aGlsZSAoYSAhPT0gc3RhcnQpO1xyXG59XHJcblxyXG4vLyBsaW5rIGV2ZXJ5IGhvbGUgaW50byB0aGUgb3V0ZXIgbG9vcCwgcHJvZHVjaW5nIGEgc2luZ2xlLXJpbmcgcG9seWdvbiB3aXRob3V0IGhvbGVzXHJcbmZ1bmN0aW9uIGVsaW1pbmF0ZUhvbGVzKGRhdGEsIGhvbGVJbmRpY2VzLCBvdXRlck5vZGUsIGRpbSkge1xyXG4gICAgdmFyIHF1ZXVlID0gW10sXHJcbiAgICAgICAgaSwgbGVuLCBzdGFydCwgZW5kLCBsaXN0O1xyXG5cclxuICAgIGZvciAoaSA9IDAsIGxlbiA9IGhvbGVJbmRpY2VzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgICAgc3RhcnQgPSBob2xlSW5kaWNlc1tpXSAqIGRpbTtcclxuICAgICAgICBlbmQgPSBpIDwgbGVuIC0gMSA/IGhvbGVJbmRpY2VzW2kgKyAxXSAqIGRpbSA6IGRhdGEubGVuZ3RoO1xyXG4gICAgICAgIGxpc3QgPSBsaW5rZWRMaXN0KGRhdGEsIHN0YXJ0LCBlbmQsIGRpbSwgZmFsc2UpO1xyXG4gICAgICAgIGlmIChsaXN0ID09PSBsaXN0Lm5leHQpIGxpc3Quc3RlaW5lciA9IHRydWU7XHJcbiAgICAgICAgcXVldWUucHVzaChnZXRMZWZ0bW9zdChsaXN0KSk7XHJcbiAgICB9XHJcblxyXG4gICAgcXVldWUuc29ydChjb21wYXJlWCk7XHJcblxyXG4gICAgLy8gcHJvY2VzcyBob2xlcyBmcm9tIGxlZnQgdG8gcmlnaHRcclxuICAgIGZvciAoaSA9IDA7IGkgPCBxdWV1ZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGVsaW1pbmF0ZUhvbGUocXVldWVbaV0sIG91dGVyTm9kZSk7XHJcbiAgICAgICAgb3V0ZXJOb2RlID0gZmlsdGVyUG9pbnRzKG91dGVyTm9kZSwgb3V0ZXJOb2RlLm5leHQpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBvdXRlck5vZGU7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNvbXBhcmVYKGEsIGIpIHtcclxuICAgIHJldHVybiBhLnggLSBiLng7XHJcbn1cclxuXHJcbi8vIGZpbmQgYSBicmlkZ2UgYmV0d2VlbiB2ZXJ0aWNlcyB0aGF0IGNvbm5lY3RzIGhvbGUgd2l0aCBhbiBvdXRlciByaW5nIGFuZCBhbmQgbGluayBpdFxyXG5mdW5jdGlvbiBlbGltaW5hdGVIb2xlKGhvbGUsIG91dGVyTm9kZSkge1xyXG4gICAgb3V0ZXJOb2RlID0gZmluZEhvbGVCcmlkZ2UoaG9sZSwgb3V0ZXJOb2RlKTtcclxuICAgIGlmIChvdXRlck5vZGUpIHtcclxuICAgICAgICB2YXIgYiA9IHNwbGl0UG9seWdvbihvdXRlck5vZGUsIGhvbGUpO1xyXG4gICAgICAgIGZpbHRlclBvaW50cyhiLCBiLm5leHQpO1xyXG4gICAgfVxyXG59XHJcblxyXG4vLyBEYXZpZCBFYmVybHkncyBhbGdvcml0aG0gZm9yIGZpbmRpbmcgYSBicmlkZ2UgYmV0d2VlbiBob2xlIGFuZCBvdXRlciBwb2x5Z29uXHJcbmZ1bmN0aW9uIGZpbmRIb2xlQnJpZGdlKGhvbGUsIG91dGVyTm9kZSkge1xyXG4gICAgdmFyIHAgPSBvdXRlck5vZGUsXHJcbiAgICAgICAgaHggPSBob2xlLngsXHJcbiAgICAgICAgaHkgPSBob2xlLnksXHJcbiAgICAgICAgcXggPSAtSW5maW5pdHksXHJcbiAgICAgICAgbTtcclxuXHJcbiAgICAvLyBmaW5kIGEgc2VnbWVudCBpbnRlcnNlY3RlZCBieSBhIHJheSBmcm9tIHRoZSBob2xlJ3MgbGVmdG1vc3QgcG9pbnQgdG8gdGhlIGxlZnQ7XHJcbiAgICAvLyBzZWdtZW50J3MgZW5kcG9pbnQgd2l0aCBsZXNzZXIgeCB3aWxsIGJlIHBvdGVudGlhbCBjb25uZWN0aW9uIHBvaW50XHJcbiAgICBkbyB7XHJcbiAgICAgICAgaWYgKGh5IDw9IHAueSAmJiBoeSA+PSBwLm5leHQueSkge1xyXG4gICAgICAgICAgICB2YXIgeCA9IHAueCArIChoeSAtIHAueSkgKiAocC5uZXh0LnggLSBwLngpIC8gKHAubmV4dC55IC0gcC55KTtcclxuICAgICAgICAgICAgaWYgKHggPD0gaHggJiYgeCA+IHF4KSB7XHJcbiAgICAgICAgICAgICAgICBxeCA9IHg7XHJcbiAgICAgICAgICAgICAgICBpZiAoeCA9PT0gaHgpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaHkgPT09IHAueSkgcmV0dXJuIHA7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGh5ID09PSBwLm5leHQueSkgcmV0dXJuIHAubmV4dDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIG0gPSBwLnggPCBwLm5leHQueCA/IHAgOiBwLm5leHQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcCA9IHAubmV4dDtcclxuICAgIH0gd2hpbGUgKHAgIT09IG91dGVyTm9kZSk7XHJcblxyXG4gICAgaWYgKCFtKSByZXR1cm4gbnVsbDtcclxuXHJcbiAgICBpZiAoaHggPT09IHF4KSByZXR1cm4gbS5wcmV2OyAvLyBob2xlIHRvdWNoZXMgb3V0ZXIgc2VnbWVudDsgcGljayBsb3dlciBlbmRwb2ludFxyXG5cclxuICAgIC8vIGxvb2sgZm9yIHBvaW50cyBpbnNpZGUgdGhlIHRyaWFuZ2xlIG9mIGhvbGUgcG9pbnQsIHNlZ21lbnQgaW50ZXJzZWN0aW9uIGFuZCBlbmRwb2ludDtcclxuICAgIC8vIGlmIHRoZXJlIGFyZSBubyBwb2ludHMgZm91bmQsIHdlIGhhdmUgYSB2YWxpZCBjb25uZWN0aW9uO1xyXG4gICAgLy8gb3RoZXJ3aXNlIGNob29zZSB0aGUgcG9pbnQgb2YgdGhlIG1pbmltdW0gYW5nbGUgd2l0aCB0aGUgcmF5IGFzIGNvbm5lY3Rpb24gcG9pbnRcclxuXHJcbiAgICB2YXIgc3RvcCA9IG0sXHJcbiAgICAgICAgbXggPSBtLngsXHJcbiAgICAgICAgbXkgPSBtLnksXHJcbiAgICAgICAgdGFuTWluID0gSW5maW5pdHksXHJcbiAgICAgICAgdGFuO1xyXG5cclxuICAgIHAgPSBtLm5leHQ7XHJcblxyXG4gICAgd2hpbGUgKHAgIT09IHN0b3ApIHtcclxuICAgICAgICBpZiAoaHggPj0gcC54ICYmIHAueCA+PSBteCAmJlxyXG4gICAgICAgICAgICAgICAgcG9pbnRJblRyaWFuZ2xlKGh5IDwgbXkgPyBoeCA6IHF4LCBoeSwgbXgsIG15LCBoeSA8IG15ID8gcXggOiBoeCwgaHksIHAueCwgcC55KSkge1xyXG5cclxuICAgICAgICAgICAgdGFuID0gTWF0aC5hYnMoaHkgLSBwLnkpIC8gKGh4IC0gcC54KTsgLy8gdGFuZ2VudGlhbFxyXG5cclxuICAgICAgICAgICAgaWYgKCh0YW4gPCB0YW5NaW4gfHwgKHRhbiA9PT0gdGFuTWluICYmIHAueCA+IG0ueCkpICYmIGxvY2FsbHlJbnNpZGUocCwgaG9sZSkpIHtcclxuICAgICAgICAgICAgICAgIG0gPSBwO1xyXG4gICAgICAgICAgICAgICAgdGFuTWluID0gdGFuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBwID0gcC5uZXh0O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBtO1xyXG59XHJcblxyXG4vLyBpbnRlcmxpbmsgcG9seWdvbiBub2RlcyBpbiB6LW9yZGVyXHJcbmZ1bmN0aW9uIGluZGV4Q3VydmUoc3RhcnQsIG1pblgsIG1pblksIHNpemUpIHtcclxuICAgIHZhciBwID0gc3RhcnQ7XHJcbiAgICBkbyB7XHJcbiAgICAgICAgaWYgKHAueiA9PT0gbnVsbCkgcC56ID0gek9yZGVyKHAueCwgcC55LCBtaW5YLCBtaW5ZLCBzaXplKTtcclxuICAgICAgICBwLnByZXZaID0gcC5wcmV2O1xyXG4gICAgICAgIHAubmV4dFogPSBwLm5leHQ7XHJcbiAgICAgICAgcCA9IHAubmV4dDtcclxuICAgIH0gd2hpbGUgKHAgIT09IHN0YXJ0KTtcclxuXHJcbiAgICBwLnByZXZaLm5leHRaID0gbnVsbDtcclxuICAgIHAucHJldlogPSBudWxsO1xyXG5cclxuICAgIHNvcnRMaW5rZWQocCk7XHJcbn1cclxuXHJcbi8vIFNpbW9uIFRhdGhhbSdzIGxpbmtlZCBsaXN0IG1lcmdlIHNvcnQgYWxnb3JpdGhtXHJcbi8vIGh0dHA6Ly93d3cuY2hpYXJrLmdyZWVuZW5kLm9yZy51ay9+c2d0YXRoYW0vYWxnb3JpdGhtcy9saXN0c29ydC5odG1sXHJcbmZ1bmN0aW9uIHNvcnRMaW5rZWQobGlzdCkge1xyXG4gICAgdmFyIGksIHAsIHEsIGUsIHRhaWwsIG51bU1lcmdlcywgcFNpemUsIHFTaXplLFxyXG4gICAgICAgIGluU2l6ZSA9IDE7XHJcblxyXG4gICAgZG8ge1xyXG4gICAgICAgIHAgPSBsaXN0O1xyXG4gICAgICAgIGxpc3QgPSBudWxsO1xyXG4gICAgICAgIHRhaWwgPSBudWxsO1xyXG4gICAgICAgIG51bU1lcmdlcyA9IDA7XHJcblxyXG4gICAgICAgIHdoaWxlIChwKSB7XHJcbiAgICAgICAgICAgIG51bU1lcmdlcysrO1xyXG4gICAgICAgICAgICBxID0gcDtcclxuICAgICAgICAgICAgcFNpemUgPSAwO1xyXG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgaW5TaXplOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIHBTaXplKys7XHJcbiAgICAgICAgICAgICAgICBxID0gcS5uZXh0WjtcclxuICAgICAgICAgICAgICAgIGlmICghcSkgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHFTaXplID0gaW5TaXplO1xyXG5cclxuICAgICAgICAgICAgd2hpbGUgKHBTaXplID4gMCB8fCAocVNpemUgPiAwICYmIHEpKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHBTaXplID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZSA9IHE7XHJcbiAgICAgICAgICAgICAgICAgICAgcSA9IHEubmV4dFo7XHJcbiAgICAgICAgICAgICAgICAgICAgcVNpemUtLTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocVNpemUgPT09IDAgfHwgIXEpIHtcclxuICAgICAgICAgICAgICAgICAgICBlID0gcDtcclxuICAgICAgICAgICAgICAgICAgICBwID0gcC5uZXh0WjtcclxuICAgICAgICAgICAgICAgICAgICBwU2l6ZS0tO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwLnogPD0gcS56KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZSA9IHA7XHJcbiAgICAgICAgICAgICAgICAgICAgcCA9IHAubmV4dFo7XHJcbiAgICAgICAgICAgICAgICAgICAgcFNpemUtLTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZSA9IHE7XHJcbiAgICAgICAgICAgICAgICAgICAgcSA9IHEubmV4dFo7XHJcbiAgICAgICAgICAgICAgICAgICAgcVNpemUtLTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodGFpbCkgdGFpbC5uZXh0WiA9IGU7XHJcbiAgICAgICAgICAgICAgICBlbHNlIGxpc3QgPSBlO1xyXG5cclxuICAgICAgICAgICAgICAgIGUucHJldlogPSB0YWlsO1xyXG4gICAgICAgICAgICAgICAgdGFpbCA9IGU7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHAgPSBxO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGFpbC5uZXh0WiA9IG51bGw7XHJcbiAgICAgICAgaW5TaXplICo9IDI7XHJcblxyXG4gICAgfSB3aGlsZSAobnVtTWVyZ2VzID4gMSk7XHJcblxyXG4gICAgcmV0dXJuIGxpc3Q7XHJcbn1cclxuXHJcbi8vIHotb3JkZXIgb2YgYSBwb2ludCBnaXZlbiBjb29yZHMgYW5kIHNpemUgb2YgdGhlIGRhdGEgYm91bmRpbmcgYm94XHJcbmZ1bmN0aW9uIHpPcmRlcih4LCB5LCBtaW5YLCBtaW5ZLCBzaXplKSB7XHJcbiAgICAvLyBjb29yZHMgYXJlIHRyYW5zZm9ybWVkIGludG8gbm9uLW5lZ2F0aXZlIDE1LWJpdCBpbnRlZ2VyIHJhbmdlXHJcbiAgICB4ID0gMzI3NjcgKiAoeCAtIG1pblgpIC8gc2l6ZTtcclxuICAgIHkgPSAzMjc2NyAqICh5IC0gbWluWSkgLyBzaXplO1xyXG5cclxuICAgIHggPSAoeCB8ICh4IDw8IDgpKSAmIDB4MDBGRjAwRkY7XHJcbiAgICB4ID0gKHggfCAoeCA8PCA0KSkgJiAweDBGMEYwRjBGO1xyXG4gICAgeCA9ICh4IHwgKHggPDwgMikpICYgMHgzMzMzMzMzMztcclxuICAgIHggPSAoeCB8ICh4IDw8IDEpKSAmIDB4NTU1NTU1NTU7XHJcblxyXG4gICAgeSA9ICh5IHwgKHkgPDwgOCkpICYgMHgwMEZGMDBGRjtcclxuICAgIHkgPSAoeSB8ICh5IDw8IDQpKSAmIDB4MEYwRjBGMEY7XHJcbiAgICB5ID0gKHkgfCAoeSA8PCAyKSkgJiAweDMzMzMzMzMzO1xyXG4gICAgeSA9ICh5IHwgKHkgPDwgMSkpICYgMHg1NTU1NTU1NTtcclxuXHJcbiAgICByZXR1cm4geCB8ICh5IDw8IDEpO1xyXG59XHJcblxyXG4vLyBmaW5kIHRoZSBsZWZ0bW9zdCBub2RlIG9mIGEgcG9seWdvbiByaW5nXHJcbmZ1bmN0aW9uIGdldExlZnRtb3N0KHN0YXJ0KSB7XHJcbiAgICB2YXIgcCA9IHN0YXJ0LFxyXG4gICAgICAgIGxlZnRtb3N0ID0gc3RhcnQ7XHJcbiAgICBkbyB7XHJcbiAgICAgICAgaWYgKHAueCA8IGxlZnRtb3N0LngpIGxlZnRtb3N0ID0gcDtcclxuICAgICAgICBwID0gcC5uZXh0O1xyXG4gICAgfSB3aGlsZSAocCAhPT0gc3RhcnQpO1xyXG5cclxuICAgIHJldHVybiBsZWZ0bW9zdDtcclxufVxyXG5cclxuLy8gY2hlY2sgaWYgYSBwb2ludCBsaWVzIHdpdGhpbiBhIGNvbnZleCB0cmlhbmdsZVxyXG5mdW5jdGlvbiBwb2ludEluVHJpYW5nbGUoYXgsIGF5LCBieCwgYnksIGN4LCBjeSwgcHgsIHB5KSB7XHJcbiAgICByZXR1cm4gKGN4IC0gcHgpICogKGF5IC0gcHkpIC0gKGF4IC0gcHgpICogKGN5IC0gcHkpID49IDAgJiZcclxuICAgICAgICAgICAoYXggLSBweCkgKiAoYnkgLSBweSkgLSAoYnggLSBweCkgKiAoYXkgLSBweSkgPj0gMCAmJlxyXG4gICAgICAgICAgIChieCAtIHB4KSAqIChjeSAtIHB5KSAtIChjeCAtIHB4KSAqIChieSAtIHB5KSA+PSAwO1xyXG59XHJcblxyXG4vLyBjaGVjayBpZiBhIGRpYWdvbmFsIGJldHdlZW4gdHdvIHBvbHlnb24gbm9kZXMgaXMgdmFsaWQgKGxpZXMgaW4gcG9seWdvbiBpbnRlcmlvcilcclxuZnVuY3Rpb24gaXNWYWxpZERpYWdvbmFsKGEsIGIpIHtcclxuICAgIHJldHVybiBhLm5leHQuaSAhPT0gYi5pICYmIGEucHJldi5pICE9PSBiLmkgJiYgIWludGVyc2VjdHNQb2x5Z29uKGEsIGIpICYmXHJcbiAgICAgICAgICAgbG9jYWxseUluc2lkZShhLCBiKSAmJiBsb2NhbGx5SW5zaWRlKGIsIGEpICYmIG1pZGRsZUluc2lkZShhLCBiKTtcclxufVxyXG5cclxuLy8gc2lnbmVkIGFyZWEgb2YgYSB0cmlhbmdsZVxyXG5mdW5jdGlvbiBhcmVhKHAsIHEsIHIpIHtcclxuICAgIHJldHVybiAocS55IC0gcC55KSAqIChyLnggLSBxLngpIC0gKHEueCAtIHAueCkgKiAoci55IC0gcS55KTtcclxufVxyXG5cclxuLy8gY2hlY2sgaWYgdHdvIHBvaW50cyBhcmUgZXF1YWxcclxuZnVuY3Rpb24gZXF1YWxzKHAxLCBwMikge1xyXG4gICAgcmV0dXJuIHAxLnggPT09IHAyLnggJiYgcDEueSA9PT0gcDIueTtcclxufVxyXG5cclxuLy8gY2hlY2sgaWYgdHdvIHNlZ21lbnRzIGludGVyc2VjdFxyXG5mdW5jdGlvbiBpbnRlcnNlY3RzKHAxLCBxMSwgcDIsIHEyKSB7XHJcbiAgICBpZiAoKGVxdWFscyhwMSwgcTEpICYmIGVxdWFscyhwMiwgcTIpKSB8fFxyXG4gICAgICAgIChlcXVhbHMocDEsIHEyKSAmJiBlcXVhbHMocDIsIHExKSkpIHJldHVybiB0cnVlO1xyXG4gICAgcmV0dXJuIGFyZWEocDEsIHExLCBwMikgPiAwICE9PSBhcmVhKHAxLCBxMSwgcTIpID4gMCAmJlxyXG4gICAgICAgICAgIGFyZWEocDIsIHEyLCBwMSkgPiAwICE9PSBhcmVhKHAyLCBxMiwgcTEpID4gMDtcclxufVxyXG5cclxuLy8gY2hlY2sgaWYgYSBwb2x5Z29uIGRpYWdvbmFsIGludGVyc2VjdHMgYW55IHBvbHlnb24gc2VnbWVudHNcclxuZnVuY3Rpb24gaW50ZXJzZWN0c1BvbHlnb24oYSwgYikge1xyXG4gICAgdmFyIHAgPSBhO1xyXG4gICAgZG8ge1xyXG4gICAgICAgIGlmIChwLmkgIT09IGEuaSAmJiBwLm5leHQuaSAhPT0gYS5pICYmIHAuaSAhPT0gYi5pICYmIHAubmV4dC5pICE9PSBiLmkgJiZcclxuICAgICAgICAgICAgICAgIGludGVyc2VjdHMocCwgcC5uZXh0LCBhLCBiKSkgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgcCA9IHAubmV4dDtcclxuICAgIH0gd2hpbGUgKHAgIT09IGEpO1xyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxufVxyXG5cclxuLy8gY2hlY2sgaWYgYSBwb2x5Z29uIGRpYWdvbmFsIGlzIGxvY2FsbHkgaW5zaWRlIHRoZSBwb2x5Z29uXHJcbmZ1bmN0aW9uIGxvY2FsbHlJbnNpZGUoYSwgYikge1xyXG4gICAgcmV0dXJuIGFyZWEoYS5wcmV2LCBhLCBhLm5leHQpIDwgMCA/XHJcbiAgICAgICAgYXJlYShhLCBiLCBhLm5leHQpID49IDAgJiYgYXJlYShhLCBhLnByZXYsIGIpID49IDAgOlxyXG4gICAgICAgIGFyZWEoYSwgYiwgYS5wcmV2KSA8IDAgfHwgYXJlYShhLCBhLm5leHQsIGIpIDwgMDtcclxufVxyXG5cclxuLy8gY2hlY2sgaWYgdGhlIG1pZGRsZSBwb2ludCBvZiBhIHBvbHlnb24gZGlhZ29uYWwgaXMgaW5zaWRlIHRoZSBwb2x5Z29uXHJcbmZ1bmN0aW9uIG1pZGRsZUluc2lkZShhLCBiKSB7XHJcbiAgICB2YXIgcCA9IGEsXHJcbiAgICAgICAgaW5zaWRlID0gZmFsc2UsXHJcbiAgICAgICAgcHggPSAoYS54ICsgYi54KSAvIDIsXHJcbiAgICAgICAgcHkgPSAoYS55ICsgYi55KSAvIDI7XHJcbiAgICBkbyB7XHJcbiAgICAgICAgaWYgKCgocC55ID4gcHkpICE9PSAocC5uZXh0LnkgPiBweSkpICYmIChweCA8IChwLm5leHQueCAtIHAueCkgKiAocHkgLSBwLnkpIC8gKHAubmV4dC55IC0gcC55KSArIHAueCkpXHJcbiAgICAgICAgICAgIGluc2lkZSA9ICFpbnNpZGU7XHJcbiAgICAgICAgcCA9IHAubmV4dDtcclxuICAgIH0gd2hpbGUgKHAgIT09IGEpO1xyXG5cclxuICAgIHJldHVybiBpbnNpZGU7XHJcbn1cclxuXHJcbi8vIGxpbmsgdHdvIHBvbHlnb24gdmVydGljZXMgd2l0aCBhIGJyaWRnZTsgaWYgdGhlIHZlcnRpY2VzIGJlbG9uZyB0byB0aGUgc2FtZSByaW5nLCBpdCBzcGxpdHMgcG9seWdvbiBpbnRvIHR3bztcclxuLy8gaWYgb25lIGJlbG9uZ3MgdG8gdGhlIG91dGVyIHJpbmcgYW5kIGFub3RoZXIgdG8gYSBob2xlLCBpdCBtZXJnZXMgaXQgaW50byBhIHNpbmdsZSByaW5nXHJcbmZ1bmN0aW9uIHNwbGl0UG9seWdvbihhLCBiKSB7XHJcbiAgICB2YXIgYTIgPSBuZXcgTm9kZShhLmksIGEueCwgYS55KSxcclxuICAgICAgICBiMiA9IG5ldyBOb2RlKGIuaSwgYi54LCBiLnkpLFxyXG4gICAgICAgIGFuID0gYS5uZXh0LFxyXG4gICAgICAgIGJwID0gYi5wcmV2O1xyXG5cclxuICAgIGEubmV4dCA9IGI7XHJcbiAgICBiLnByZXYgPSBhO1xyXG5cclxuICAgIGEyLm5leHQgPSBhbjtcclxuICAgIGFuLnByZXYgPSBhMjtcclxuXHJcbiAgICBiMi5uZXh0ID0gYTI7XHJcbiAgICBhMi5wcmV2ID0gYjI7XHJcblxyXG4gICAgYnAubmV4dCA9IGIyO1xyXG4gICAgYjIucHJldiA9IGJwO1xyXG5cclxuICAgIHJldHVybiBiMjtcclxufVxyXG5cclxuLy8gY3JlYXRlIGEgbm9kZSBhbmQgb3B0aW9uYWxseSBsaW5rIGl0IHdpdGggcHJldmlvdXMgb25lIChpbiBhIGNpcmN1bGFyIGRvdWJseSBsaW5rZWQgbGlzdClcclxuZnVuY3Rpb24gaW5zZXJ0Tm9kZShpLCB4LCB5LCBsYXN0KSB7XHJcbiAgICB2YXIgcCA9IG5ldyBOb2RlKGksIHgsIHkpO1xyXG5cclxuICAgIGlmICghbGFzdCkge1xyXG4gICAgICAgIHAucHJldiA9IHA7XHJcbiAgICAgICAgcC5uZXh0ID0gcDtcclxuXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIHAubmV4dCA9IGxhc3QubmV4dDtcclxuICAgICAgICBwLnByZXYgPSBsYXN0O1xyXG4gICAgICAgIGxhc3QubmV4dC5wcmV2ID0gcDtcclxuICAgICAgICBsYXN0Lm5leHQgPSBwO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHA7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHJlbW92ZU5vZGUocCkge1xyXG4gICAgcC5uZXh0LnByZXYgPSBwLnByZXY7XHJcbiAgICBwLnByZXYubmV4dCA9IHAubmV4dDtcclxuXHJcbiAgICBpZiAocC5wcmV2WikgcC5wcmV2Wi5uZXh0WiA9IHAubmV4dFo7XHJcbiAgICBpZiAocC5uZXh0WikgcC5uZXh0Wi5wcmV2WiA9IHAucHJldlo7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIE5vZGUoaSwgeCwgeSkge1xyXG4gICAgLy8gdmVydGljZSBpbmRleCBpbiBjb29yZGluYXRlcyBhcnJheVxyXG4gICAgdGhpcy5pID0gaTtcclxuXHJcbiAgICAvLyB2ZXJ0ZXggY29vcmRpbmF0ZXNcclxuICAgIHRoaXMueCA9IHg7XHJcbiAgICB0aGlzLnkgPSB5O1xyXG5cclxuICAgIC8vIHByZXZpb3VzIGFuZCBuZXh0IHZlcnRpY2Ugbm9kZXMgaW4gYSBwb2x5Z29uIHJpbmdcclxuICAgIHRoaXMucHJldiA9IG51bGw7XHJcbiAgICB0aGlzLm5leHQgPSBudWxsO1xyXG5cclxuICAgIC8vIHotb3JkZXIgY3VydmUgdmFsdWVcclxuICAgIHRoaXMueiA9IG51bGw7XHJcblxyXG4gICAgLy8gcHJldmlvdXMgYW5kIG5leHQgbm9kZXMgaW4gei1vcmRlclxyXG4gICAgdGhpcy5wcmV2WiA9IG51bGw7XHJcbiAgICB0aGlzLm5leHRaID0gbnVsbDtcclxuXHJcbiAgICAvLyBpbmRpY2F0ZXMgd2hldGhlciB0aGlzIGlzIGEgc3RlaW5lciBwb2ludFxyXG4gICAgdGhpcy5zdGVpbmVyID0gZmFsc2U7XHJcbn1cclxuXHJcbi8vIHJldHVybiBhIHBlcmNlbnRhZ2UgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBwb2x5Z29uIGFyZWEgYW5kIGl0cyB0cmlhbmd1bGF0aW9uIGFyZWE7XHJcbi8vIHVzZWQgdG8gdmVyaWZ5IGNvcnJlY3RuZXNzIG9mIHRyaWFuZ3VsYXRpb25cclxuZWFyY3V0LmRldmlhdGlvbiA9IGZ1bmN0aW9uIChkYXRhLCBob2xlSW5kaWNlcywgZGltLCB0cmlhbmdsZXMpIHtcclxuICAgIHZhciBoYXNIb2xlcyA9IGhvbGVJbmRpY2VzICYmIGhvbGVJbmRpY2VzLmxlbmd0aDtcclxuICAgIHZhciBvdXRlckxlbiA9IGhhc0hvbGVzID8gaG9sZUluZGljZXNbMF0gKiBkaW0gOiBkYXRhLmxlbmd0aDtcclxuXHJcbiAgICB2YXIgcG9seWdvbkFyZWEgPSBNYXRoLmFicyhzaWduZWRBcmVhKGRhdGEsIDAsIG91dGVyTGVuLCBkaW0pKTtcclxuICAgIGlmIChoYXNIb2xlcykge1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBob2xlSW5kaWNlcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICAgICAgICB2YXIgc3RhcnQgPSBob2xlSW5kaWNlc1tpXSAqIGRpbTtcclxuICAgICAgICAgICAgdmFyIGVuZCA9IGkgPCBsZW4gLSAxID8gaG9sZUluZGljZXNbaSArIDFdICogZGltIDogZGF0YS5sZW5ndGg7XHJcbiAgICAgICAgICAgIHBvbHlnb25BcmVhIC09IE1hdGguYWJzKHNpZ25lZEFyZWEoZGF0YSwgc3RhcnQsIGVuZCwgZGltKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHZhciB0cmlhbmdsZXNBcmVhID0gMDtcclxuICAgIGZvciAoaSA9IDA7IGkgPCB0cmlhbmdsZXMubGVuZ3RoOyBpICs9IDMpIHtcclxuICAgICAgICB2YXIgYSA9IHRyaWFuZ2xlc1tpXSAqIGRpbTtcclxuICAgICAgICB2YXIgYiA9IHRyaWFuZ2xlc1tpICsgMV0gKiBkaW07XHJcbiAgICAgICAgdmFyIGMgPSB0cmlhbmdsZXNbaSArIDJdICogZGltO1xyXG4gICAgICAgIHRyaWFuZ2xlc0FyZWEgKz0gTWF0aC5hYnMoXHJcbiAgICAgICAgICAgIChkYXRhW2FdIC0gZGF0YVtjXSkgKiAoZGF0YVtiICsgMV0gLSBkYXRhW2EgKyAxXSkgLVxyXG4gICAgICAgICAgICAoZGF0YVthXSAtIGRhdGFbYl0pICogKGRhdGFbYyArIDFdIC0gZGF0YVthICsgMV0pKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcG9seWdvbkFyZWEgPT09IDAgJiYgdHJpYW5nbGVzQXJlYSA9PT0gMCA/IDAgOlxyXG4gICAgICAgIE1hdGguYWJzKCh0cmlhbmdsZXNBcmVhIC0gcG9seWdvbkFyZWEpIC8gcG9seWdvbkFyZWEpO1xyXG59O1xyXG5cclxuZnVuY3Rpb24gc2lnbmVkQXJlYShkYXRhLCBzdGFydCwgZW5kLCBkaW0pIHtcclxuICAgIHZhciBzdW0gPSAwO1xyXG4gICAgZm9yICh2YXIgaSA9IHN0YXJ0LCBqID0gZW5kIC0gZGltOyBpIDwgZW5kOyBpICs9IGRpbSkge1xyXG4gICAgICAgIHN1bSArPSAoZGF0YVtqXSAtIGRhdGFbaV0pICogKGRhdGFbaSArIDFdICsgZGF0YVtqICsgMV0pO1xyXG4gICAgICAgIGogPSBpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN1bTtcclxufVxyXG5cclxuLy8gdHVybiBhIHBvbHlnb24gaW4gYSBtdWx0aS1kaW1lbnNpb25hbCBhcnJheSBmb3JtIChlLmcuIGFzIGluIEdlb0pTT04pIGludG8gYSBmb3JtIEVhcmN1dCBhY2NlcHRzXHJcbmVhcmN1dC5mbGF0dGVuID0gZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgIHZhciBkaW0gPSBkYXRhWzBdWzBdLmxlbmd0aCxcclxuICAgICAgICByZXN1bHQgPSB7dmVydGljZXM6IFtdLCBob2xlczogW10sIGRpbWVuc2lvbnM6IGRpbX0sXHJcbiAgICAgICAgaG9sZUluZGV4ID0gMDtcclxuXHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGRhdGFbaV0ubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgZm9yICh2YXIgZCA9IDA7IGQgPCBkaW07IGQrKykgcmVzdWx0LnZlcnRpY2VzLnB1c2goZGF0YVtpXVtqXVtkXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpID4gMCkge1xyXG4gICAgICAgICAgICBob2xlSW5kZXggKz0gZGF0YVtpIC0gMV0ubGVuZ3RoO1xyXG4gICAgICAgICAgICByZXN1bHQuaG9sZXMucHVzaChob2xlSW5kZXgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn07XHJcbiJdfQ==
13619
+ ;
13620
+ /*global define*/
13621
+ define('Core/Cartesian2',[
13622
+ './defaultValue',
13623
+ './defined',
13624
+ './DeveloperError',
13625
+ './freezeObject',
13626
+ './Math'
13627
+ ], function(
13628
+ defaultValue,
13629
+ defined,
13630
+ DeveloperError,
13631
+ freezeObject,
13632
+ CesiumMath) {
13633
+ 'use strict';
13634
+
13635
+ /**
13636
+ * A 2D Cartesian point.
13637
+ * @alias Cartesian2
13638
+ * @constructor
13639
+ *
13640
+ * @param {Number} [x=0.0] The X component.
13641
+ * @param {Number} [y=0.0] The Y component.
13642
+ *
13643
+ * @see Cartesian3
13644
+ * @see Cartesian4
13645
+ * @see Packable
13646
+ */
13647
+ function Cartesian2(x, y) {
13648
+ /**
13649
+ * The X component.
13650
+ * @type {Number}
13651
+ * @default 0.0
13652
+ */
13653
+ this.x = defaultValue(x, 0.0);
13654
+
13655
+ /**
13656
+ * The Y component.
13657
+ * @type {Number}
13658
+ * @default 0.0
13659
+ */
13660
+ this.y = defaultValue(y, 0.0);
13661
+ }
13662
+
13663
+ /**
13664
+ * Creates a Cartesian2 instance from x and y coordinates.
13665
+ *
13666
+ * @param {Number} x The x coordinate.
13667
+ * @param {Number} y The y coordinate.
13668
+ * @param {Cartesian2} [result] The object onto which to store the result.
13669
+ * @returns {Cartesian2} The modified result parameter or a new Cartesian2 instance if one was not provided.
13670
+ */
13671
+ Cartesian2.fromElements = function(x, y, result) {
13672
+ if (!defined(result)) {
13673
+ return new Cartesian2(x, y);
13674
+ }
13675
+
13676
+ result.x = x;
13677
+ result.y = y;
13678
+ return result;
13679
+ };
13680
+
13681
+ /**
13682
+ * Duplicates a Cartesian2 instance.
13683
+ *
13684
+ * @param {Cartesian2} cartesian The Cartesian to duplicate.
13685
+ * @param {Cartesian2} [result] The object onto which to store the result.
12756
13686
  * @returns {Cartesian2} The modified result parameter or a new Cartesian2 instance if one was not provided. (Returns undefined if cartesian is undefined)
12757
13687
  */
12758
13688
  Cartesian2.clone = function(cartesian, result) {
@@ -12841,10 +13771,61 @@ define('Core/Cartesian2',[
12841
13771
  };
12842
13772
 
12843
13773
  /**
12844
- * Creates a Cartesian2 from two consecutive elements in an array.
12845
- * @function
13774
+ * Flattens an array of Cartesian2s into and array of components.
12846
13775
  *
12847
- * @param {Number[]} array The array whose two consecutive elements correspond to the x and y components, respectively.
13776
+ * @param {Cartesian2[]} array The array of cartesians to pack.
13777
+ * @param {Number[]} result The array onto which to store the result.
13778
+ * @returns {Number[]} The packed array.
13779
+ */
13780
+ Cartesian2.packArray = function(array, result) {
13781
+ if (!defined(array)) {
13782
+ throw new DeveloperError('array is required');
13783
+ }
13784
+
13785
+ var length = array.length;
13786
+ if (!defined(result)) {
13787
+ result = new Array(length * 2);
13788
+ } else {
13789
+ result.length = length * 2;
13790
+ }
13791
+
13792
+ for (var i = 0; i < length; ++i) {
13793
+ Cartesian2.pack(array[i], result, i * 2);
13794
+ }
13795
+ return result;
13796
+ };
13797
+
13798
+ /**
13799
+ * Unpacks an array of cartesian components into and array of Cartesian2s.
13800
+ *
13801
+ * @param {Number[]} array The array of components to unpack.
13802
+ * @param {Cartesian2[]} result The array onto which to store the result.
13803
+ * @returns {Cartesian2[]} The unpacked array.
13804
+ */
13805
+ Cartesian2.unpackArray = function(array, result) {
13806
+ if (!defined(array)) {
13807
+ throw new DeveloperError('array is required');
13808
+ }
13809
+
13810
+ var length = array.length;
13811
+ if (!defined(result)) {
13812
+ result = new Array(length / 2);
13813
+ } else {
13814
+ result.length = length / 2;
13815
+ }
13816
+
13817
+ for (var i = 0; i < length; i += 2) {
13818
+ var index = i / 2;
13819
+ result[index] = Cartesian2.unpack(array, i, result[index]);
13820
+ }
13821
+ return result;
13822
+ };
13823
+
13824
+ /**
13825
+ * Creates a Cartesian2 from two consecutive elements in an array.
13826
+ * @function
13827
+ *
13828
+ * @param {Number[]} array The array whose two consecutive elements correspond to the x and y components, respectively.
12848
13829
  * @param {Number} [startingIndex=0] The offset into the array of the first element, which corresponds to the x component.
12849
13830
  * @param {Cartesian2} [result] The object onto which to store the result.
12850
13831
  * @returns {Cartesian2} The modified result parameter or a new Cartesian2 instance if one was not provided.
@@ -13411,7 +14392,7 @@ define('Core/AxisAlignedBoundingBox',[
13411
14392
  defined,
13412
14393
  DeveloperError,
13413
14394
  Intersect) {
13414
- "use strict";
14395
+ 'use strict';
13415
14396
 
13416
14397
  /**
13417
14398
  * Creates an instance of an AxisAlignedBoundingBox from the minimum and maximum points along the x, y, and z axes.
@@ -13638,7 +14619,7 @@ define('Core/QuadraticRealPolynomial',[
13638
14619
  ], function(
13639
14620
  DeveloperError,
13640
14621
  CesiumMath) {
13641
- "use strict";
14622
+ 'use strict';
13642
14623
 
13643
14624
  /**
13644
14625
  * Defines functions for 2nd order polynomial functions of one variable with only real coefficients.
@@ -13773,7 +14754,7 @@ define('Core/CubicRealPolynomial',[
13773
14754
  ], function(
13774
14755
  DeveloperError,
13775
14756
  QuadraticRealPolynomial) {
13776
- "use strict";
14757
+ 'use strict';
13777
14758
 
13778
14759
  /**
13779
14760
  * Defines functions for 3rd order polynomial functions of one variable with only real coefficients.
@@ -14013,7 +14994,7 @@ define('Core/QuarticRealPolynomial',[
14013
14994
  DeveloperError,
14014
14995
  CesiumMath,
14015
14996
  QuadraticRealPolynomial) {
14016
- "use strict";
14997
+ 'use strict';
14017
14998
 
14018
14999
  /**
14019
15000
  * Defines functions for 4th order polynomial functions of one variable with only real coefficients.
@@ -14337,7 +15318,7 @@ define('Core/Ray',[
14337
15318
  defaultValue,
14338
15319
  defined,
14339
15320
  DeveloperError) {
14340
- "use strict";
15321
+ 'use strict';
14341
15322
 
14342
15323
  /**
14343
15324
  * Represents a ray that extends infinitely from the provided origin in the provided direction.
@@ -14423,7 +15404,7 @@ define('Core/IntersectionTests',[
14423
15404
  QuadraticRealPolynomial,
14424
15405
  QuarticRealPolynomial,
14425
15406
  Ray) {
14426
- "use strict";
15407
+ 'use strict';
14427
15408
 
14428
15409
  /**
14429
15410
  * Functions for computing the intersection between geometries such as rays, planes, triangles, and ellipsoids.
@@ -14478,7 +15459,19 @@ define('Core/IntersectionTests',[
14478
15459
  var scratchTVec = new Cartesian3();
14479
15460
  var scratchQVec = new Cartesian3();
14480
15461
 
14481
- function rayTriangle(ray, p0, p1, p2, cullBackFaces) {
15462
+ /**
15463
+ * Computes the intersection of a ray and a triangle as a parametric distance along the input ray.
15464
+ * @memberof IntersectionTests
15465
+ *
15466
+ * @param {Ray} ray The ray.
15467
+ * @param {Cartesian3} p0 The first vertex of the triangle.
15468
+ * @param {Cartesian3} p1 The second vertex of the triangle.
15469
+ * @param {Cartesian3} p2 The third vertex of the triangle.
15470
+ * @param {Boolean} [cullBackFaces=false] If <code>true</code>, will only compute an intersection with the front face of the triangle
15471
+ * and return undefined for intersections with the back face.
15472
+ * @returns {Number} The intersection as a parametric distance along the ray, or undefined if there is no intersection.
15473
+ */
15474
+ IntersectionTests.rayTriangleParametric = function(ray, p0, p1, p2, cullBackFaces) {
14482
15475
  if (!defined(ray)) {
14483
15476
  throw new DeveloperError('ray is required.');
14484
15477
  }
@@ -14552,10 +15545,10 @@ define('Core/IntersectionTests',[
14552
15545
  }
14553
15546
 
14554
15547
  return t;
14555
- }
15548
+ };
14556
15549
 
14557
15550
  /**
14558
- * Computes the intersection of a ray and a triangle.
15551
+ * Computes the intersection of a ray and a triangle as a Cartesian3 coordinate.
14559
15552
  * @memberof IntersectionTests
14560
15553
  *
14561
15554
  * @param {Ray} ray The ray.
@@ -14568,7 +15561,7 @@ define('Core/IntersectionTests',[
14568
15561
  * @returns {Cartesian3} The intersection point or undefined if there is no intersections.
14569
15562
  */
14570
15563
  IntersectionTests.rayTriangle = function(ray, p0, p1, p2, cullBackFaces, result) {
14571
- var t = rayTriangle(ray, p0, p1, p2, cullBackFaces);
15564
+ var t = IntersectionTests.rayTriangleParametric(ray, p0, p1, p2, cullBackFaces);
14572
15565
  if (!defined(t) || t < 0.0) {
14573
15566
  return undefined;
14574
15567
  }
@@ -14610,7 +15603,7 @@ define('Core/IntersectionTests',[
14610
15603
  Cartesian3.subtract(v1, v0, ray.direction);
14611
15604
  Cartesian3.normalize(ray.direction, ray.direction);
14612
15605
 
14613
- var t = rayTriangle(ray, p0, p1, p2, cullBackFaces);
15606
+ var t = IntersectionTests.rayTriangleParametric(ray, p0, p1, p2, cullBackFaces);
14614
15607
  if (!defined(t) || t < 0.0 || t > Cartesian3.distance(v0, v1)) {
14615
15608
  return undefined;
14616
15609
  }
@@ -14735,6 +15728,7 @@ define('Core/IntersectionTests',[
14735
15728
  }
14736
15729
 
14737
15730
  var ray = scratchLineSegmentRay;
15731
+ Cartesian3.clone(p0, ray.origin);
14738
15732
  var direction = Cartesian3.subtract(p1, p0, ray.direction);
14739
15733
 
14740
15734
  var maxT = Cartesian3.magnitude(direction);
@@ -16026,7 +17020,7 @@ define('Core/binarySearch',[
16026
17020
  ], function(
16027
17021
  defined,
16028
17022
  DeveloperError) {
16029
- "use strict";
17023
+ 'use strict';
16030
17024
 
16031
17025
  /**
16032
17026
  * Finds an item in a sorted array.
@@ -16103,7 +17097,7 @@ define('Core/binarySearch',[
16103
17097
 
16104
17098
  /*global define*/
16105
17099
  define('Core/EarthOrientationParametersSample',[],function() {
16106
- "use strict";
17100
+ 'use strict';
16107
17101
 
16108
17102
  /**
16109
17103
  * A set of Earth Orientation Parameters (EOP) sampled at a time.
@@ -16477,7 +17471,7 @@ return sprintf;
16477
17471
 
16478
17472
  /*global define*/
16479
17473
  define('Core/GregorianDate',[],function() {
16480
- "use strict";
17474
+ 'use strict';
16481
17475
 
16482
17476
  /**
16483
17477
  * Represents a Gregorian date in a more precise format than the JavaScript Date object.
@@ -16538,7 +17532,7 @@ define('Core/isLeapYear',[
16538
17532
  './DeveloperError'
16539
17533
  ], function(
16540
17534
  DeveloperError) {
16541
- "use strict";
17535
+ 'use strict';
16542
17536
 
16543
17537
  /**
16544
17538
  * Determines if a given date is a leap year.
@@ -16564,7 +17558,7 @@ define('Core/isLeapYear',[
16564
17558
 
16565
17559
  /*global define*/
16566
17560
  define('Core/LeapSecond',[],function() {
16567
- "use strict";
17561
+ 'use strict';
16568
17562
 
16569
17563
  /**
16570
17564
  * Describes a single leap second, which is constructed from a {@link JulianDate} and a
@@ -16598,7 +17592,7 @@ define('Core/TimeConstants',[
16598
17592
  './freezeObject'
16599
17593
  ], function(
16600
17594
  freezeObject) {
16601
- "use strict";
17595
+ 'use strict';
16602
17596
 
16603
17597
  /**
16604
17598
  * Constants for time conversions like those done by {@link JulianDate}.
@@ -16691,7 +17685,7 @@ define('Core/TimeStandard',[
16691
17685
  './freezeObject'
16692
17686
  ], function(
16693
17687
  freezeObject) {
16694
- "use strict";
17688
+ 'use strict';
16695
17689
 
16696
17690
  /**
16697
17691
  * Provides the type of time standards which JulianDate can take as input.
@@ -16743,7 +17737,7 @@ define('Core/JulianDate',[
16743
17737
  LeapSecond,
16744
17738
  TimeConstants,
16745
17739
  TimeStandard) {
16746
- "use strict";
17740
+ 'use strict';
16747
17741
 
16748
17742
  var gregorianDateScratch = new GregorianDate();
16749
17743
  var daysInMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
@@ -16892,8 +17886,8 @@ define('Core/JulianDate',[
16892
17886
  * @alias JulianDate
16893
17887
  * @constructor
16894
17888
  *
16895
- * @param {Number} julianDayNumber The Julian Day Number representing the number of whole days. Fractional days will also be handled correctly.
16896
- * @param {Number} secondsOfDay The number of seconds into the current Julian Day Number. Fractional seconds, negative seconds and seconds greater than a day will be handled correctly.
17889
+ * @param {Number} [julianDayNumber=0.0] The Julian Day Number representing the number of whole days. Fractional days will also be handled correctly.
17890
+ * @param {Number} [secondsOfDay=0.0] The number of seconds into the current Julian Day Number. Fractional seconds, negative seconds and seconds greater than a day will be handled correctly.
16897
17891
  * @param {TimeStandard} [timeStandard=TimeStandard.UTC] The time standard in which the first two parameters are defined.
16898
17892
  */
16899
17893
  function JulianDate(julianDayNumber, secondsOfDay, timeStandard) {
@@ -17716,7 +18710,7 @@ define('Core/clone',[
17716
18710
  './defaultValue'
17717
18711
  ], function(
17718
18712
  defaultValue) {
17719
- "use strict";
18713
+ 'use strict';
17720
18714
 
17721
18715
  /**
17722
18716
  * Clones an object, returning a new object containing the same properties.
@@ -17753,7 +18747,7 @@ define('Core/clone',[
17753
18747
 
17754
18748
  /*global define*/
17755
18749
  define('Core/parseResponseHeaders',[], function() {
17756
- "use strict";
18750
+ 'use strict';
17757
18751
 
17758
18752
  /**
17759
18753
  * Parses the result of XMLHttpRequest's getAllResponseHeaders() method into
@@ -17802,7 +18796,7 @@ define('Core/RequestErrorEvent',[
17802
18796
  ], function(
17803
18797
  defined,
17804
18798
  parseResponseHeaders) {
17805
- "use strict";
18799
+ 'use strict';
17806
18800
 
17807
18801
  /**
17808
18802
  * An event that is raised when a request encounters an error.
@@ -17877,7 +18871,7 @@ define('Core/loadWithXhr',[
17877
18871
  DeveloperError,
17878
18872
  RequestErrorEvent,
17879
18873
  RuntimeError) {
17880
- "use strict";
18874
+ 'use strict';
17881
18875
 
17882
18876
  /**
17883
18877
  * Asynchronously loads the given URL. Returns a promise that will resolve to
@@ -18048,7 +19042,7 @@ define('Core/loadText',[
18048
19042
  './loadWithXhr'
18049
19043
  ], function(
18050
19044
  loadWithXhr) {
18051
- "use strict";
19045
+ 'use strict';
18052
19046
 
18053
19047
  /**
18054
19048
  * Asynchronously loads the given URL as text. Returns a promise that will resolve to
@@ -18098,7 +19092,7 @@ define('Core/loadJson',[
18098
19092
  defined,
18099
19093
  DeveloperError,
18100
19094
  loadText) {
18101
- "use strict";
19095
+ 'use strict';
18102
19096
 
18103
19097
  var defaultHeaders = {
18104
19098
  Accept : 'application/json,*/*;q=0.01'
@@ -18181,7 +19175,7 @@ define('Core/EarthOrientationParameters',[
18181
19175
  RuntimeError,
18182
19176
  TimeConstants,
18183
19177
  TimeStandard) {
18184
- "use strict";
19178
+ 'use strict';
18185
19179
 
18186
19180
  /**
18187
19181
  * Specifies Earth polar motion coordinates and the difference between UT1 and UTC.
@@ -18826,7 +19820,7 @@ define('Core/getAbsoluteUri',[
18826
19820
  defaultValue,
18827
19821
  defined,
18828
19822
  DeveloperError) {
18829
- "use strict";
19823
+ 'use strict';
18830
19824
 
18831
19825
  /**
18832
19826
  * Given a relative Uri and a base Uri, returns the absolute Uri of the relative Uri.
@@ -18853,20 +19847,127 @@ define('Core/getAbsoluteUri',[
18853
19847
  return getAbsoluteUri;
18854
19848
  });
18855
19849
 
19850
+ /*global define*/
19851
+ define('Core/joinUrls',[
19852
+ '../ThirdParty/Uri',
19853
+ './defaultValue',
19854
+ './defined',
19855
+ './DeveloperError'
19856
+ ], function(
19857
+ Uri,
19858
+ defaultValue,
19859
+ defined,
19860
+ DeveloperError) {
19861
+ 'use strict';
19862
+
19863
+ /**
19864
+ * Function for joining URLs in a manner that is aware of query strings and fragments.
19865
+ * This is useful when the base URL has a query string that needs to be maintained
19866
+ * (e.g. a presigned base URL).
19867
+ * @param {String|Uri} first The base URL.
19868
+ * @param {String|Uri} second The URL path to join to the base URL. If this URL is absolute, it is returned unmodified.
19869
+ * @param {Boolean} [appendSlash=true] The boolean determining whether there should be a forward slash between first and second.
19870
+ * @private
19871
+ */
19872
+ function joinUrls(first, second, appendSlash) {
19873
+ if (!defined(first)) {
19874
+ throw new DeveloperError('first is required');
19875
+ }
19876
+ if (!defined(second)) {
19877
+ throw new DeveloperError('second is required');
19878
+ }
19879
+
19880
+ appendSlash = defaultValue(appendSlash, true);
19881
+
19882
+ if (!(first instanceof Uri)) {
19883
+ first = new Uri(first);
19884
+ }
19885
+
19886
+ if (!(second instanceof Uri)) {
19887
+ second = new Uri(second);
19888
+ }
19889
+
19890
+ // Uri.isAbsolute returns false for a URL like '//foo.com'. So if we have an authority but
19891
+ // not a scheme, add a scheme matching the page's scheme.
19892
+ if (defined(second.authority) && !defined(second.scheme)) {
19893
+ if (typeof document !== 'undefined' && defined(document.location) && defined(document.location.href)) {
19894
+ second.scheme = new Uri(document.location.href).scheme;
19895
+ } else {
19896
+ // Not in a browser? Use the first URL's scheme instead.
19897
+ second.scheme = first.scheme;
19898
+ }
19899
+ }
19900
+
19901
+ // If the second URL is absolute, use it for the scheme, authority, and path.
19902
+ var baseUri = first;
19903
+ if (second.isAbsolute()) {
19904
+ baseUri = second;
19905
+ }
19906
+
19907
+ var url = '';
19908
+ if (defined(baseUri.scheme)) {
19909
+ url += baseUri.scheme + ':';
19910
+ }
19911
+ if (defined(baseUri.authority)) {
19912
+ url += '//' + baseUri.authority;
19913
+
19914
+ if (baseUri.path !== '' && baseUri.path !== '/') {
19915
+ url = url.replace(/\/?$/, '/');
19916
+ baseUri.path = baseUri.path.replace(/^\/?/g, '');
19917
+ }
19918
+ }
19919
+
19920
+ // Combine the paths (only if second is relative).
19921
+ if (baseUri === first) {
19922
+ if (appendSlash) {
19923
+ url += first.path.replace(/\/?$/, '/') + second.path.replace(/^\/?/g, '');
19924
+ } else {
19925
+ url += first.path + second.path;
19926
+ }
19927
+ } else {
19928
+ url += second.path;
19929
+ }
19930
+
19931
+ // Combine the queries and fragments.
19932
+ var hasFirstQuery = defined(first.query);
19933
+ var hasSecondQuery = defined(second.query);
19934
+ if (hasFirstQuery && hasSecondQuery) {
19935
+ url += '?' + first.query + '&' + second.query;
19936
+ } else if (hasFirstQuery && !hasSecondQuery) {
19937
+ url += '?' + first.query;
19938
+ } else if (!hasFirstQuery && hasSecondQuery) {
19939
+ url += '?' + second.query;
19940
+ }
19941
+
19942
+ var hasSecondFragment = defined(second.fragment);
19943
+ if (defined(first.fragment) && !hasSecondFragment) {
19944
+ url += '#' + first.fragment;
19945
+ } else if (hasSecondFragment) {
19946
+ url += '#' + second.fragment;
19947
+ }
19948
+
19949
+ return url;
19950
+ }
19951
+
19952
+ return joinUrls;
19953
+ });
19954
+
18856
19955
  /*global define*/
18857
19956
  define('Core/buildModuleUrl',[
18858
19957
  '../ThirdParty/Uri',
18859
19958
  './defined',
18860
19959
  './DeveloperError',
18861
19960
  './getAbsoluteUri',
19961
+ './joinUrls',
18862
19962
  'require'
18863
19963
  ], function(
18864
19964
  Uri,
18865
19965
  defined,
18866
19966
  DeveloperError,
18867
19967
  getAbsoluteUri,
19968
+ joinUrls,
18868
19969
  require) {
18869
- "use strict";
19970
+ 'use strict';
18870
19971
  /*global CESIUM_BASE_URL*/
18871
19972
 
18872
19973
  var cesiumScriptRegex = /((?:.*\/)|^)cesium[\w-]*\.js(?:\W|$)/i;
@@ -18910,7 +20011,7 @@ define('Core/buildModuleUrl',[
18910
20011
  }
18911
20012
 
18912
20013
  function buildModuleUrlFromBaseUrl(moduleID) {
18913
- return new Uri(moduleID).resolve(getCesiumBaseUrl()).toString();
20014
+ return joinUrls(getCesiumBaseUrl(), moduleID);
18914
20015
  }
18915
20016
 
18916
20017
  var implementation;
@@ -18961,7 +20062,7 @@ define('Core/buildModuleUrl',[
18961
20062
 
18962
20063
  /*global define*/
18963
20064
  define('Core/Iau2006XysSample',[],function() {
18964
- "use strict";
20065
+ 'use strict';
18965
20066
 
18966
20067
  /**
18967
20068
  * An IAU 2006 XYS value sampled at a particular time.
@@ -19017,7 +20118,7 @@ define('Core/Iau2006XysData',[
19017
20118
  JulianDate,
19018
20119
  loadJson,
19019
20120
  TimeStandard) {
19020
- "use strict";
20121
+ 'use strict';
19021
20122
 
19022
20123
  /**
19023
20124
  * A set of IAU2006 XYS data that is used to evaluate the transformation between the International
@@ -19283,7 +20384,7 @@ define('Core/Quaternion',[
19283
20384
  freezeObject,
19284
20385
  CesiumMath,
19285
20386
  Matrix3) {
19286
- "use strict";
20387
+ 'use strict';
19287
20388
 
19288
20389
  /**
19289
20390
  * A set of 4-dimensional coordinates used to represent rotation in 3-dimensional space.
@@ -20365,6 +21466,7 @@ define('Core/Transforms',[
20365
21466
  './Cartesian2',
20366
21467
  './Cartesian3',
20367
21468
  './Cartesian4',
21469
+ './Cartographic',
20368
21470
  './defaultValue',
20369
21471
  './defined',
20370
21472
  './DeveloperError',
@@ -20384,6 +21486,7 @@ define('Core/Transforms',[
20384
21486
  Cartesian2,
20385
21487
  Cartesian3,
20386
21488
  Cartesian4,
21489
+ Cartographic,
20387
21490
  defaultValue,
20388
21491
  defined,
20389
21492
  DeveloperError,
@@ -20398,7 +21501,7 @@ define('Core/Transforms',[
20398
21501
  Matrix4,
20399
21502
  Quaternion,
20400
21503
  TimeConstants) {
20401
- "use strict";
21504
+ 'use strict';
20402
21505
 
20403
21506
  /**
20404
21507
  * Contains functions for transforming positions to various reference frames.
@@ -20734,6 +21837,38 @@ define('Core/Transforms',[
20734
21837
  return Matrix4.multiply(result, hprMatrix, result);
20735
21838
  };
20736
21839
 
21840
+ /**
21841
+ * Computes a 4x4 transformation matrix from a reference frame with axes computed from the heading-pitch-roll angles
21842
+ * centered at the provided origin to the provided ellipsoid's fixed reference frame. Heading is the rotation from the local north
21843
+ * direction where a positive angle is increasing eastward. Pitch is the rotation from the local east-north plane. Positive pitch angles
21844
+ * are above the plane. Negative pitch angles are below the plane. Roll is the first rotation applied about the local east axis.
21845
+ *
21846
+ * @param {Cartesian3} origin The center point of the local reference frame.
21847
+ * @param {Number} heading The heading angle in radians.
21848
+ * @param {Number} pitch The pitch angle in radians.
21849
+ * @param {Number} roll The roll angle in radians.
21850
+ * @param {Ellipsoid} [ellipsoid=Ellipsoid.WGS84] The ellipsoid whose fixed frame is used in the transformation.
21851
+ * @param {Matrix4} [result] The object onto which to store the result.
21852
+ * @returns {Matrix4} The modified result parameter or a new Matrix4 instance if none was provided.
21853
+ *
21854
+ * @example
21855
+ * // Get the transform from local heading-pitch-roll at cartographic (0.0, 0.0) to Earth's fixed frame.
21856
+ * var center = Cesium.Cartesian3.fromDegrees(0.0, 0.0);
21857
+ * var heading = -Cesium.Math.PI_OVER_TWO;
21858
+ * var pitch = Cesium.Math.PI_OVER_FOUR;
21859
+ * var roll = 0.0;
21860
+ * var transform = Cesium.Transforms.aircraftHeadingPitchRollToFixedFrame(center, heading, pitch, roll);
21861
+ *
21862
+ * @private
21863
+ */
21864
+ Transforms.aircraftHeadingPitchRollToFixedFrame = function(origin, heading, pitch, roll, ellipsoid, result) {
21865
+ // checks for required parameters happen in the called functions
21866
+ var hprQuaternion = Quaternion.fromHeadingPitchRoll(heading, pitch, roll, scratchHPRQuaternion);
21867
+ var hprMatrix = Matrix4.fromTranslationQuaternionRotationScale(Cartesian3.ZERO, hprQuaternion, scratchScale, scratchHPRMatrix4);
21868
+ result = Transforms.northEastDownToFixedFrame(origin, ellipsoid, result);
21869
+ return Matrix4.multiply(result, hprMatrix, result);
21870
+ };
21871
+
20737
21872
  var scratchENUMatrix4 = new Matrix4();
20738
21873
  var scratchHPRMatrix3 = new Matrix3();
20739
21874
 
@@ -20766,6 +21901,37 @@ define('Core/Transforms',[
20766
21901
  return Quaternion.fromRotationMatrix(rotation, result);
20767
21902
  };
20768
21903
 
21904
+ /**
21905
+ * Computes a quaternion from a reference frame with axes computed from the heading-pitch-roll angles
21906
+ * centered at the provided origin. Heading is the rotation from the local north
21907
+ * direction where a positive angle is increasing eastward. Pitch is the rotation from the local east-north plane. Positive pitch angles
21908
+ * are above the plane. Negative pitch angles are below the plane. Roll is the first rotation applied about the local east axis.
21909
+ *
21910
+ * @param {Cartesian3} origin The center point of the local reference frame.
21911
+ * @param {Number} heading The heading angle in radians.
21912
+ * @param {Number} pitch The pitch angle in radians.
21913
+ * @param {Number} roll The roll angle in radians.
21914
+ * @param {Ellipsoid} [ellipsoid=Ellipsoid.WGS84] The ellipsoid whose fixed frame is used in the transformation.
21915
+ * @param {Quaternion} [result] The object onto which to store the result.
21916
+ * @returns {Quaternion} The modified result parameter or a new Quaternion instance if none was provided.
21917
+ *
21918
+ * @example
21919
+ * // Get the quaternion from local heading-pitch-roll at cartographic (0.0, 0.0) to Earth's fixed frame.
21920
+ * var center = Cesium.Cartesian3.fromDegrees(0.0, 0.0);
21921
+ * var heading = -Cesium.Math.PI_OVER_TWO;
21922
+ * var pitch = Cesium.Math.PI_OVER_FOUR;
21923
+ * var roll = 0.0;
21924
+ * var quaternion = Cesium.Transforms.aircraftHeadingPitchRollQuaternion(center, heading, pitch, roll);
21925
+ *
21926
+ * @private
21927
+ */
21928
+ Transforms.aircraftHeadingPitchRollQuaternion = function(origin, heading, pitch, roll, ellipsoid, result) {
21929
+ // checks for required parameters happen in the called functions
21930
+ var transform = Transforms.aircraftHeadingPitchRollToFixedFrame(origin, heading, pitch, roll, ellipsoid, scratchENUMatrix4);
21931
+ var rotation = Matrix4.getRotation(transform, scratchHPRMatrix3);
21932
+ return Quaternion.fromRotationMatrix(rotation, result);
21933
+ };
21934
+
20769
21935
 
20770
21936
  var gmstConstant0 = 6 * 3600 + 41 * 60 + 50.54841;
20771
21937
  var gmstConstant1 = 8640184.812866;
@@ -21165,6 +22331,79 @@ define('Core/Transforms',[
21165
22331
  return result;
21166
22332
  };
21167
22333
 
22334
+ var scratchCartographic = new Cartographic();
22335
+ var scratchCartesian3Projection = new Cartesian3();
22336
+ var scratchCartesian3 = new Cartesian3();
22337
+ var scratchCartesian4Origin = new Cartesian4();
22338
+ var scratchCartesian4NewOrigin = new Cartesian4();
22339
+ var scratchCartesian4NewXAxis = new Cartesian4();
22340
+ var scratchCartesian4NewYAxis = new Cartesian4();
22341
+ var scratchCartesian4NewZAxis = new Cartesian4();
22342
+ var scratchFromENU = new Matrix4();
22343
+ var scratchToENU = new Matrix4();
22344
+
22345
+ /**
22346
+ * @private
22347
+ */
22348
+ Transforms.basisTo2D = function(projection, matrix, result) {
22349
+ if (!defined(projection)) {
22350
+ throw new DeveloperError('projection is required.');
22351
+ }
22352
+ if (!defined(matrix)) {
22353
+ throw new DeveloperError('matrix is required.');
22354
+ }
22355
+ if (!defined(result)) {
22356
+ throw new DeveloperError('result is required.');
22357
+ }
22358
+
22359
+ var ellipsoid = projection.ellipsoid;
22360
+
22361
+ var origin = Matrix4.getColumn(matrix, 3, scratchCartesian4Origin);
22362
+ var cartographic = ellipsoid.cartesianToCartographic(origin, scratchCartographic);
22363
+
22364
+ var fromENU = Transforms.eastNorthUpToFixedFrame(origin, ellipsoid, scratchFromENU);
22365
+ var toENU = Matrix4.inverseTransformation(fromENU, scratchToENU);
22366
+
22367
+ var projectedPosition = projection.project(cartographic, scratchCartesian3Projection);
22368
+ var newOrigin = scratchCartesian4NewOrigin;
22369
+ newOrigin.x = projectedPosition.z;
22370
+ newOrigin.y = projectedPosition.x;
22371
+ newOrigin.z = projectedPosition.y;
22372
+ newOrigin.w = 1.0;
22373
+
22374
+ var xAxis = Matrix4.getColumn(matrix, 0, scratchCartesian3);
22375
+ var xScale = Cartesian3.magnitude(xAxis);
22376
+ var newXAxis = Matrix4.multiplyByVector(toENU, xAxis, scratchCartesian4NewXAxis);
22377
+ Cartesian4.fromElements(newXAxis.z, newXAxis.x, newXAxis.y, 0.0, newXAxis);
22378
+
22379
+ var yAxis = Matrix4.getColumn(matrix, 1, scratchCartesian3);
22380
+ var yScale = Cartesian3.magnitude(yAxis);
22381
+ var newYAxis = Matrix4.multiplyByVector(toENU, yAxis, scratchCartesian4NewYAxis);
22382
+ Cartesian4.fromElements(newYAxis.z, newYAxis.x, newYAxis.y, 0.0, newYAxis);
22383
+
22384
+ var zAxis = Matrix4.getColumn(matrix, 2, scratchCartesian3);
22385
+ var zScale = Cartesian3.magnitude(zAxis);
22386
+
22387
+ var newZAxis = scratchCartesian4NewZAxis;
22388
+ Cartesian3.cross(newXAxis, newYAxis, newZAxis);
22389
+ Cartesian3.normalize(newZAxis, newZAxis);
22390
+ Cartesian3.cross(newYAxis, newZAxis, newXAxis);
22391
+ Cartesian3.normalize(newXAxis, newXAxis);
22392
+ Cartesian3.cross(newZAxis, newXAxis, newYAxis);
22393
+ Cartesian3.normalize(newYAxis, newYAxis);
22394
+
22395
+ Cartesian3.multiplyByScalar(newXAxis, xScale, newXAxis);
22396
+ Cartesian3.multiplyByScalar(newYAxis, yScale, newYAxis);
22397
+ Cartesian3.multiplyByScalar(newZAxis, zScale, newZAxis);
22398
+
22399
+ Matrix4.setColumn(result, 0, newXAxis, result);
22400
+ Matrix4.setColumn(result, 1, newYAxis, result);
22401
+ Matrix4.setColumn(result, 2, newZAxis, result);
22402
+ Matrix4.setColumn(result, 3, newOrigin, result);
22403
+
22404
+ return result;
22405
+ };
22406
+
21168
22407
  return Transforms;
21169
22408
  });
21170
22409
 
@@ -21201,7 +22440,7 @@ define('Core/EllipsoidTangentPlane',[
21201
22440
  Plane,
21202
22441
  Ray,
21203
22442
  Transforms) {
21204
- "use strict";
22443
+ 'use strict';
21205
22444
 
21206
22445
  var scratchCart4 = new Cartesian4();
21207
22446
  /**
@@ -21515,7 +22754,7 @@ define('Core/barycentricCoordinates',[
21515
22754
  Cartesian3,
21516
22755
  defined,
21517
22756
  DeveloperError) {
21518
- "use strict";
22757
+ 'use strict';
21519
22758
 
21520
22759
  var scratchCartesian1 = new Cartesian3();
21521
22760
  var scratchCartesian2 = new Cartesian3();
@@ -21594,7 +22833,7 @@ define('Core/pointInsideTriangle',[
21594
22833
  ], function(
21595
22834
  barycentricCoordinates,
21596
22835
  Cartesian3) {
21597
- "use strict";
22836
+ 'use strict';
21598
22837
 
21599
22838
  var coords = new Cartesian3();
21600
22839
 
@@ -21626,1688 +22865,219 @@ define('Core/pointInsideTriangle',[
21626
22865
  });
21627
22866
 
21628
22867
  /*global define*/
21629
- define('Core/EllipsoidGeodesic',[
21630
- './Cartesian3',
21631
- './Cartographic',
21632
- './defaultValue',
21633
- './defined',
21634
- './defineProperties',
21635
- './DeveloperError',
21636
- './Ellipsoid',
21637
- './Math'
22868
+ define('Core/Queue',[
22869
+ '../Core/defineProperties'
21638
22870
  ], function(
21639
- Cartesian3,
21640
- Cartographic,
21641
- defaultValue,
21642
- defined,
21643
- defineProperties,
21644
- DeveloperError,
21645
- Ellipsoid,
21646
- CesiumMath) {
21647
- "use strict";
21648
-
21649
- function setConstants(ellipsoidGeodesic) {
21650
- var uSquared = ellipsoidGeodesic._uSquared;
21651
- var a = ellipsoidGeodesic._ellipsoid.maximumRadius;
21652
- var b = ellipsoidGeodesic._ellipsoid.minimumRadius;
21653
- var f = (a - b) / a;
21654
-
21655
- var cosineHeading = Math.cos(ellipsoidGeodesic._startHeading);
21656
- var sineHeading = Math.sin(ellipsoidGeodesic._startHeading);
21657
-
21658
- var tanU = (1 - f) * Math.tan(ellipsoidGeodesic._start.latitude);
21659
-
21660
- var cosineU = 1.0 / Math.sqrt(1.0 + tanU * tanU);
21661
- var sineU = cosineU * tanU;
21662
-
21663
- var sigma = Math.atan2(tanU, cosineHeading);
21664
-
21665
- var sineAlpha = cosineU * sineHeading;
21666
- var sineSquaredAlpha = sineAlpha * sineAlpha;
21667
-
21668
- var cosineSquaredAlpha = 1.0 - sineSquaredAlpha;
21669
- var cosineAlpha = Math.sqrt(cosineSquaredAlpha);
21670
-
21671
- var u2Over4 = uSquared / 4.0;
21672
- var u4Over16 = u2Over4 * u2Over4;
21673
- var u6Over64 = u4Over16 * u2Over4;
21674
- var u8Over256 = u4Over16 * u4Over16;
21675
-
21676
- var a0 = (1.0 + u2Over4 - 3.0 * u4Over16 / 4.0 + 5.0 * u6Over64 / 4.0 - 175.0 * u8Over256 / 64.0);
21677
- var a1 = (1.0 - u2Over4 + 15.0 * u4Over16 / 8.0 - 35.0 * u6Over64 / 8.0);
21678
- var a2 = (1.0 - 3.0 * u2Over4 + 35.0 * u4Over16 / 4.0);
21679
- var a3 = (1.0 - 5.0 * u2Over4);
21680
-
21681
- var distanceRatio = a0 * sigma - a1 * Math.sin(2.0 * sigma) * u2Over4 / 2.0 - a2 * Math.sin(4.0 * sigma) * u4Over16 / 16.0 -
21682
- a3 * Math.sin(6.0 * sigma) * u6Over64 / 48.0 - Math.sin(8.0 * sigma) * 5.0 * u8Over256 / 512;
21683
-
21684
- var constants = ellipsoidGeodesic._constants;
21685
-
21686
- constants.a = a;
21687
- constants.b = b;
21688
- constants.f = f;
21689
- constants.cosineHeading = cosineHeading;
21690
- constants.sineHeading = sineHeading;
21691
- constants.tanU = tanU;
21692
- constants.cosineU = cosineU;
21693
- constants.sineU = sineU;
21694
- constants.sigma = sigma;
21695
- constants.sineAlpha = sineAlpha;
21696
- constants.sineSquaredAlpha = sineSquaredAlpha;
21697
- constants.cosineSquaredAlpha = cosineSquaredAlpha;
21698
- constants.cosineAlpha = cosineAlpha;
21699
- constants.u2Over4 = u2Over4;
21700
- constants.u4Over16 = u4Over16;
21701
- constants.u6Over64 = u6Over64;
21702
- constants.u8Over256 = u8Over256;
21703
- constants.a0 = a0;
21704
- constants.a1 = a1;
21705
- constants.a2 = a2;
21706
- constants.a3 = a3;
21707
- constants.distanceRatio = distanceRatio;
21708
- }
21709
-
21710
- function computeC(f, cosineSquaredAlpha) {
21711
- return f * cosineSquaredAlpha * (4.0 + f * (4.0 - 3.0 * cosineSquaredAlpha)) / 16.0;
21712
- }
21713
-
21714
- function computeDeltaLambda(f, sineAlpha, cosineSquaredAlpha, sigma, sineSigma, cosineSigma, cosineTwiceSigmaMidpoint) {
21715
- var C = computeC(f, cosineSquaredAlpha);
21716
-
21717
- return (1.0 - C) * f * sineAlpha * (sigma + C * sineSigma * (cosineTwiceSigmaMidpoint +
21718
- C * cosineSigma * (2.0 * cosineTwiceSigmaMidpoint * cosineTwiceSigmaMidpoint - 1.0)));
21719
- }
21720
-
21721
- function vincentyInverseFormula(ellipsoidGeodesic, major, minor, firstLongitude, firstLatitude, secondLongitude, secondLatitude) {
21722
- var eff = (major - minor) / major;
21723
- var l = secondLongitude - firstLongitude;
21724
-
21725
- var u1 = Math.atan((1 - eff) * Math.tan(firstLatitude));
21726
- var u2 = Math.atan((1 - eff) * Math.tan(secondLatitude));
21727
-
21728
- var cosineU1 = Math.cos(u1);
21729
- var sineU1 = Math.sin(u1);
21730
- var cosineU2 = Math.cos(u2);
21731
- var sineU2 = Math.sin(u2);
21732
-
21733
- var cc = cosineU1 * cosineU2;
21734
- var cs = cosineU1 * sineU2;
21735
- var ss = sineU1 * sineU2;
21736
- var sc = sineU1 * cosineU2;
21737
-
21738
- var lambda = l;
21739
- var lambdaDot = CesiumMath.TWO_PI;
21740
-
21741
- var cosineLambda = Math.cos(lambda);
21742
- var sineLambda = Math.sin(lambda);
21743
-
21744
- var sigma;
21745
- var cosineSigma;
21746
- var sineSigma;
21747
- var cosineSquaredAlpha;
21748
- var cosineTwiceSigmaMidpoint;
21749
-
21750
- do {
21751
- cosineLambda = Math.cos(lambda);
21752
- sineLambda = Math.sin(lambda);
21753
-
21754
- var temp = cs - sc * cosineLambda;
21755
- sineSigma = Math.sqrt(cosineU2 * cosineU2 * sineLambda * sineLambda + temp * temp);
21756
- cosineSigma = ss + cc * cosineLambda;
21757
-
21758
- sigma = Math.atan2(sineSigma, cosineSigma);
21759
-
21760
- var sineAlpha;
21761
-
21762
- if (sineSigma === 0.0) {
21763
- sineAlpha = 0.0;
21764
- cosineSquaredAlpha = 1.0;
21765
- } else {
21766
- sineAlpha = cc * sineLambda / sineSigma;
21767
- cosineSquaredAlpha = 1.0 - sineAlpha * sineAlpha;
21768
- }
21769
-
21770
- lambdaDot = lambda;
21771
-
21772
- cosineTwiceSigmaMidpoint = cosineSigma - 2.0 * ss / cosineSquaredAlpha;
21773
-
21774
- if (isNaN(cosineTwiceSigmaMidpoint)) {
21775
- cosineTwiceSigmaMidpoint = 0.0;
21776
- }
21777
-
21778
- lambda = l + computeDeltaLambda(eff, sineAlpha, cosineSquaredAlpha,
21779
- sigma, sineSigma, cosineSigma, cosineTwiceSigmaMidpoint);
21780
- } while (Math.abs(lambda - lambdaDot) > CesiumMath.EPSILON12);
21781
-
21782
- var uSquared = cosineSquaredAlpha * (major * major - minor * minor) / (minor * minor);
21783
- var A = 1.0 + uSquared * (4096.0 + uSquared * (uSquared * (320.0 - 175.0 * uSquared) - 768.0)) / 16384.0;
21784
- var B = uSquared * (256.0 + uSquared * (uSquared * (74.0 - 47.0 * uSquared) - 128.0)) / 1024.0;
21785
-
21786
- var cosineSquaredTwiceSigmaMidpoint = cosineTwiceSigmaMidpoint * cosineTwiceSigmaMidpoint;
21787
- var deltaSigma = B * sineSigma * (cosineTwiceSigmaMidpoint + B * (cosineSigma *
21788
- (2.0 * cosineSquaredTwiceSigmaMidpoint - 1.0) - B * cosineTwiceSigmaMidpoint *
21789
- (4.0 * sineSigma * sineSigma - 3.0) * (4.0 * cosineSquaredTwiceSigmaMidpoint - 3.0) / 6.0) / 4.0);
21790
-
21791
- var distance = minor * A * (sigma - deltaSigma);
21792
-
21793
- var startHeading = Math.atan2(cosineU2 * sineLambda, cs - sc * cosineLambda);
21794
- var endHeading = Math.atan2(cosineU1 * sineLambda, cs * cosineLambda - sc);
21795
-
21796
- ellipsoidGeodesic._distance = distance;
21797
- ellipsoidGeodesic._startHeading = startHeading;
21798
- ellipsoidGeodesic._endHeading = endHeading;
21799
- ellipsoidGeodesic._uSquared = uSquared;
21800
- }
21801
-
21802
- function computeProperties(ellipsoidGeodesic, start, end, ellipsoid) {
21803
- var firstCartesian = Cartesian3.normalize(ellipsoid.cartographicToCartesian(start, scratchCart2), scratchCart1);
21804
- var lastCartesian = Cartesian3.normalize(ellipsoid.cartographicToCartesian(end, scratchCart2), scratchCart2);
21805
-
21806
- if (Math.abs(Math.abs(Cartesian3.angleBetween(firstCartesian, lastCartesian)) - Math.PI) < 0.0125) {
21807
- throw new DeveloperError('geodesic position is not unique');
21808
- }
21809
-
21810
- vincentyInverseFormula(ellipsoidGeodesic, ellipsoid.maximumRadius, ellipsoid.minimumRadius,
21811
- start.longitude, start.latitude, end.longitude, end.latitude);
21812
-
21813
- ellipsoidGeodesic._start = Cartographic.clone(start, ellipsoidGeodesic._start);
21814
- ellipsoidGeodesic._end = Cartographic.clone(end, ellipsoidGeodesic._end);
21815
- ellipsoidGeodesic._start.height = 0;
21816
- ellipsoidGeodesic._end.height = 0;
21817
-
21818
- setConstants(ellipsoidGeodesic);
21819
- }
22871
+ defineProperties) {
22872
+ 'use strict';
21820
22873
 
21821
- var scratchCart1 = new Cartesian3();
21822
- var scratchCart2 = new Cartesian3();
21823
22874
  /**
21824
- * Initializes a geodesic on the ellipsoid connecting the two provided planetodetic points.
22875
+ * A queue that can enqueue items at the end, and dequeue items from the front.
21825
22876
  *
21826
- * @alias EllipsoidGeodesic
22877
+ * @alias Queue
21827
22878
  * @constructor
21828
- *
21829
- * @param {Cartographic} [start] The initial planetodetic point on the path.
21830
- * @param {Cartographic} [end] The final planetodetic point on the path.
21831
- * @param {Ellipsoid} [ellipsoid=Ellipsoid.WGS84] The ellipsoid on which the geodesic lies.
21832
22879
  */
21833
- function EllipsoidGeodesic(start, end, ellipsoid) {
21834
- var e = defaultValue(ellipsoid, Ellipsoid.WGS84);
21835
- this._ellipsoid = e;
21836
- this._start = new Cartographic();
21837
- this._end = new Cartographic();
21838
-
21839
- this._constants = {};
21840
- this._startHeading = undefined;
21841
- this._endHeading = undefined;
21842
- this._distance = undefined;
21843
- this._uSquared = undefined;
21844
-
21845
- if (defined(start) && defined(end)) {
21846
- computeProperties(this, start, end, e);
21847
- }
22880
+ function Queue() {
22881
+ this._array = [];
22882
+ this._offset = 0;
22883
+ this._length = 0;
21848
22884
  }
21849
22885
 
21850
- defineProperties(EllipsoidGeodesic.prototype, {
21851
- /**
21852
- * Gets the ellipsoid.
21853
- * @memberof EllipsoidGeodesic.prototype
21854
- * @type {Ellipsoid}
21855
- * @readonly
21856
- */
21857
- ellipsoid : {
21858
- get : function() {
21859
- return this._ellipsoid;
21860
- }
21861
- },
21862
-
22886
+ defineProperties(Queue.prototype, {
21863
22887
  /**
21864
- * Gets the surface distance between the start and end point
21865
- * @memberof EllipsoidGeodesic.prototype
22888
+ * The length of the queue.
22889
+ *
22890
+ * @memberof Queue.prototype
22891
+ *
21866
22892
  * @type {Number}
21867
22893
  * @readonly
21868
22894
  */
21869
- surfaceDistance : {
21870
- get : function() {
21871
- if (!defined(this._distance)) {
21872
- throw new DeveloperError('set end positions before getting surfaceDistance');
21873
- }
21874
-
21875
- return this._distance;
21876
- }
21877
- },
21878
-
21879
- /**
21880
- * Gets the initial planetodetic point on the path.
21881
- * @memberof EllipsoidGeodesic.prototype
21882
- * @type {Cartographic}
21883
- * @readonly
21884
- */
21885
- start : {
21886
- get : function() {
21887
- return this._start;
21888
- }
21889
- },
21890
-
21891
- /**
21892
- * Gets the final planetodetic point on the path.
21893
- * @memberof EllipsoidGeodesic.prototype
21894
- * @type {Cartographic}
21895
- * @readonly
21896
- */
21897
- end : {
21898
- get : function() {
21899
- return this._end;
21900
- }
21901
- },
21902
-
21903
- /**
21904
- * Gets the heading at the initial point.
21905
- * @memberof EllipsoidGeodesic.prototype
21906
- * @type {Number}
21907
- * @readonly
21908
- */
21909
- startHeading : {
21910
- get : function() {
21911
- if (!defined(this._distance)) {
21912
- throw new DeveloperError('set end positions before getting startHeading');
21913
- }
21914
-
21915
- return this._startHeading;
21916
- }
21917
- },
21918
-
21919
- /**
21920
- * Gets the heading at the final point.
21921
- * @memberof EllipsoidGeodesic.prototype
21922
- * @type {Number}
21923
- * @readonly
21924
- */
21925
- endHeading : {
22895
+ length : {
21926
22896
  get : function() {
21927
- if (!defined(this._distance)) {
21928
- throw new DeveloperError('set end positions before getting endHeading');
21929
- }
21930
-
21931
- return this._endHeading;
21932
- }
21933
- }
21934
- });
21935
-
21936
- /**
21937
- * Sets the start and end points of the geodesic
21938
- *
21939
- * @param {Cartographic} start The initial planetodetic point on the path.
21940
- * @param {Cartographic} end The final planetodetic point on the path.
21941
- */
21942
- EllipsoidGeodesic.prototype.setEndPoints = function(start, end) {
21943
- if (!defined(start)) {
21944
- throw new DeveloperError('start cartographic position is required');
21945
- }
21946
- if (!defined(end)) {
21947
- throw new DeveloperError('end cartgraphic position is required');
21948
- }
21949
-
21950
- computeProperties(this, start, end, this._ellipsoid);
21951
- };
21952
-
21953
- /**
21954
- * Provides the location of a point at the indicated portion along the geodesic.
21955
- *
21956
- * @param {Number} fraction The portion of the distance between the initial and final points.
21957
- * @returns {Cartographic} The location of the point along the geodesic.
21958
- */
21959
- EllipsoidGeodesic.prototype.interpolateUsingFraction = function(fraction, result) {
21960
- return this.interpolateUsingSurfaceDistance(this._distance * fraction, result);
21961
- };
21962
-
21963
- /**
21964
- * Provides the location of a point at the indicated distance along the geodesic.
21965
- *
21966
- * @param {Number} distance The distance from the inital point to the point of interest along the geodesic
21967
- * @returns {Cartographic} The location of the point along the geodesic.
21968
- *
21969
- * @exception {DeveloperError} start and end must be set before calling funciton interpolateUsingSurfaceDistance
21970
- */
21971
- EllipsoidGeodesic.prototype.interpolateUsingSurfaceDistance = function(distance, result) {
21972
- if (!defined(this._distance)) {
21973
- throw new DeveloperError('start and end must be set before calling funciton interpolateUsingSurfaceDistance');
21974
- }
21975
-
21976
- var constants = this._constants;
21977
-
21978
- var s = constants.distanceRatio + distance / constants.b;
21979
-
21980
- var cosine2S = Math.cos(2.0 * s);
21981
- var cosine4S = Math.cos(4.0 * s);
21982
- var cosine6S = Math.cos(6.0 * s);
21983
- var sine2S = Math.sin(2.0 * s);
21984
- var sine4S = Math.sin(4.0 * s);
21985
- var sine6S = Math.sin(6.0 * s);
21986
- var sine8S = Math.sin(8.0 * s);
21987
-
21988
- var s2 = s * s;
21989
- var s3 = s * s2;
21990
-
21991
- var u8Over256 = constants.u8Over256;
21992
- var u2Over4 = constants.u2Over4;
21993
- var u6Over64 = constants.u6Over64;
21994
- var u4Over16 = constants.u4Over16;
21995
- var sigma = 2.0 * s3 * u8Over256 * cosine2S / 3.0 +
21996
- s * (1.0 - u2Over4 + 7.0 * u4Over16 / 4.0 - 15.0 * u6Over64 / 4.0 + 579.0 * u8Over256 / 64.0 -
21997
- (u4Over16 - 15.0 * u6Over64 / 4.0 + 187.0 * u8Over256 / 16.0) * cosine2S -
21998
- (5.0 * u6Over64 / 4.0 - 115.0 * u8Over256 / 16.0) * cosine4S -
21999
- 29.0 * u8Over256 * cosine6S / 16.0) +
22000
- (u2Over4 / 2.0 - u4Over16 + 71.0 * u6Over64 / 32.0 - 85.0 * u8Over256 / 16.0) * sine2S +
22001
- (5.0 * u4Over16 / 16.0 - 5.0 * u6Over64 / 4.0 + 383.0 * u8Over256 / 96.0) * sine4S -
22002
- s2 * ((u6Over64 - 11.0 * u8Over256 / 2.0) * sine2S + 5.0 * u8Over256 * sine4S / 2.0) +
22003
- (29.0 * u6Over64 / 96.0 - 29.0 * u8Over256 / 16.0) * sine6S +
22004
- 539.0 * u8Over256 * sine8S / 1536.0;
22005
-
22006
- var theta = Math.asin(Math.sin(sigma) * constants.cosineAlpha);
22007
- var latitude = Math.atan(constants.a / constants.b * Math.tan(theta));
22008
-
22009
- // Redefine in terms of relative argument of latitude.
22010
- sigma = sigma - constants.sigma;
22011
-
22012
- var cosineTwiceSigmaMidpoint = Math.cos(2.0 * constants.sigma + sigma);
22013
-
22014
- var sineSigma = Math.sin(sigma);
22015
- var cosineSigma = Math.cos(sigma);
22016
-
22017
- var cc = constants.cosineU * cosineSigma;
22018
- var ss = constants.sineU * sineSigma;
22019
-
22020
- var lambda = Math.atan2(sineSigma * constants.sineHeading, cc - ss * constants.cosineHeading);
22021
-
22022
- var l = lambda - computeDeltaLambda(constants.f, constants.sineAlpha, constants.cosineSquaredAlpha,
22023
- sigma, sineSigma, cosineSigma, cosineTwiceSigmaMidpoint);
22024
-
22025
- if (defined(result)) {
22026
- result.longitude = this._start.longitude + l;
22027
- result.latitude = latitude;
22028
- result.height = 0.0;
22029
- return result;
22030
- }
22031
-
22032
- return new Cartographic(this._start.longitude + l, latitude, 0.0);
22033
- };
22034
-
22035
- return EllipsoidGeodesic;
22036
- });
22037
-
22038
- /*global define*/
22039
- define('Core/isArray',[
22040
- './defined'
22041
- ], function(
22042
- defined) {
22043
- "use strict";
22044
-
22045
- /**
22046
- * Tests an object to see if it is an array.
22047
- * @exports isArray
22048
- *
22049
- * @param {Object} value The value to test.
22050
- * @returns {Boolean} true if the value is an array, false otherwise.
22051
- */
22052
- var isArray = Array.isArray;
22053
- if (!defined(isArray)) {
22054
- isArray = function(value) {
22055
- return Object.prototype.toString.call(value) === '[object Array]';
22056
- };
22057
- }
22058
-
22059
- return isArray;
22060
- });
22061
- /*global define*/
22062
- define('Core/PolylinePipeline',[
22063
- './Cartesian3',
22064
- './Cartographic',
22065
- './defaultValue',
22066
- './defined',
22067
- './DeveloperError',
22068
- './Ellipsoid',
22069
- './EllipsoidGeodesic',
22070
- './IntersectionTests',
22071
- './isArray',
22072
- './Math',
22073
- './Matrix4',
22074
- './Plane'
22075
- ], function(
22076
- Cartesian3,
22077
- Cartographic,
22078
- defaultValue,
22079
- defined,
22080
- DeveloperError,
22081
- Ellipsoid,
22082
- EllipsoidGeodesic,
22083
- IntersectionTests,
22084
- isArray,
22085
- CesiumMath,
22086
- Matrix4,
22087
- Plane) {
22088
- "use strict";
22089
-
22090
- /**
22091
- * @private
22092
- */
22093
- var PolylinePipeline = {};
22094
-
22095
- PolylinePipeline.numberOfPoints = function(p0, p1, minDistance) {
22096
- var distance = Cartesian3.distance(p0, p1);
22097
- return Math.ceil(distance / minDistance);
22098
- };
22099
-
22100
- var cartoScratch = new Cartographic();
22101
- PolylinePipeline.extractHeights = function(positions, ellipsoid) {
22102
- var length = positions.length;
22103
- var heights = new Array(length);
22104
- for (var i = 0; i < length; i++) {
22105
- var p = positions[i];
22106
- heights[i] = ellipsoid.cartesianToCartographic(p, cartoScratch).height;
22107
- }
22108
- return heights;
22109
- };
22110
-
22111
- var wrapLongitudeInversMatrix = new Matrix4();
22112
- var wrapLongitudeOrigin = new Cartesian3();
22113
- var wrapLongitudeXZNormal = new Cartesian3();
22114
- var wrapLongitudeXZPlane = new Plane(Cartesian3.ZERO, 0.0);
22115
- var wrapLongitudeYZNormal = new Cartesian3();
22116
- var wrapLongitudeYZPlane = new Plane(Cartesian3.ZERO, 0.0);
22117
- var wrapLongitudeIntersection = new Cartesian3();
22118
- var wrapLongitudeOffset = new Cartesian3();
22119
-
22120
- var subdivideHeightsScratchArray = [];
22121
-
22122
- function subdivideHeights(numPoints, h0, h1) {
22123
- var heights = subdivideHeightsScratchArray;
22124
- heights.length = numPoints;
22125
-
22126
- var i;
22127
- if (h0 === h1) {
22128
- for (i = 0; i < numPoints; i++) {
22129
- heights[i] = h0;
22130
- }
22131
- return heights;
22132
- }
22133
-
22134
- var dHeight = h1 - h0;
22135
- var heightPerVertex = dHeight / numPoints;
22136
-
22137
- for (i = 0; i < numPoints; i++) {
22138
- var h = h0 + i*heightPerVertex;
22139
- heights[i] = h;
22140
- }
22141
-
22142
- return heights;
22143
- }
22144
-
22145
- var carto1 = new Cartographic();
22146
- var carto2 = new Cartographic();
22147
- var cartesian = new Cartesian3();
22148
- var scaleFirst = new Cartesian3();
22149
- var scaleLast = new Cartesian3();
22150
- var ellipsoidGeodesic = new EllipsoidGeodesic();
22151
-
22152
- //Returns subdivided line scaled to ellipsoid surface starting at p1 and ending at p2.
22153
- //Result includes p1, but not include p2. This function is called for a sequence of line segments,
22154
- //and this prevents duplication of end point.
22155
- function generateCartesianArc(p0, p1, minDistance, ellipsoid, h0, h1, array, offset) {
22156
- var first = ellipsoid.scaleToGeodeticSurface(p0, scaleFirst);
22157
- var last = ellipsoid.scaleToGeodeticSurface(p1, scaleLast);
22158
- var numPoints = PolylinePipeline.numberOfPoints(p0, p1, minDistance);
22159
- var start = ellipsoid.cartesianToCartographic(first, carto1);
22160
- var end = ellipsoid.cartesianToCartographic(last, carto2);
22161
- var heights = subdivideHeights(numPoints, h0, h1);
22162
-
22163
- ellipsoidGeodesic.setEndPoints(start, end);
22164
- var surfaceDistanceBetweenPoints = ellipsoidGeodesic.surfaceDistance / numPoints;
22165
-
22166
- var index = offset;
22167
- start.height = h0;
22168
- var cart = ellipsoid.cartographicToCartesian(start, cartesian);
22169
- Cartesian3.pack(cart, array, index);
22170
- index += 3;
22171
-
22172
- for (var i = 1; i < numPoints; i++) {
22173
- var carto = ellipsoidGeodesic.interpolateUsingSurfaceDistance(i * surfaceDistanceBetweenPoints, carto2);
22174
- carto.height = heights[i];
22175
- cart = ellipsoid.cartographicToCartesian(carto, cartesian);
22176
- Cartesian3.pack(cart, array, index);
22177
- index += 3;
22178
- }
22179
-
22180
- return index;
22181
- }
22182
-
22183
- /**
22184
- * Breaks a {@link Polyline} into segments such that it does not cross the &plusmn;180 degree meridian of an ellipsoid.
22185
- *
22186
- * @param {Cartesian3[]} positions The polyline's Cartesian positions.
22187
- * @param {Matrix4} [modelMatrix=Matrix4.IDENTITY] The polyline's model matrix. Assumed to be an affine
22188
- * transformation matrix, where the upper left 3x3 elements are a rotation matrix, and
22189
- * the upper three elements in the fourth column are the translation. The bottom row is assumed to be [0, 0, 0, 1].
22190
- * The matrix is not verified to be in the proper form.
22191
- * @returns {Object} An object with a <code>positions</code> property that is an array of positions and a
22192
- * <code>segments</code> property.
22193
- *
22194
- *
22195
- * @example
22196
- * var polylines = new Cesium.PolylineCollection();
22197
- * var polyline = polylines.add(...);
22198
- * var positions = polyline.positions;
22199
- * var modelMatrix = polylines.modelMatrix;
22200
- * var segments = Cesium.PolylinePipeline.wrapLongitude(positions, modelMatrix);
22201
- *
22202
- * @see PolygonPipeline.wrapLongitude
22203
- * @see Polyline
22204
- * @see PolylineCollection
22205
- */
22206
- PolylinePipeline.wrapLongitude = function(positions, modelMatrix) {
22207
- var cartesians = [];
22208
- var segments = [];
22209
-
22210
- if (defined(positions) && positions.length > 0) {
22211
- modelMatrix = defaultValue(modelMatrix, Matrix4.IDENTITY);
22212
- var inverseModelMatrix = Matrix4.inverseTransformation(modelMatrix, wrapLongitudeInversMatrix);
22213
-
22214
- var origin = Matrix4.multiplyByPoint(inverseModelMatrix, Cartesian3.ZERO, wrapLongitudeOrigin);
22215
- var xzNormal = Matrix4.multiplyByPointAsVector(inverseModelMatrix, Cartesian3.UNIT_Y, wrapLongitudeXZNormal);
22216
- var xzPlane = Plane.fromPointNormal(origin, xzNormal, wrapLongitudeXZPlane);
22217
- var yzNormal = Matrix4.multiplyByPointAsVector(inverseModelMatrix, Cartesian3.UNIT_X, wrapLongitudeYZNormal);
22218
- var yzPlane = Plane.fromPointNormal(origin, yzNormal, wrapLongitudeYZPlane);
22219
-
22220
- var count = 1;
22221
- cartesians.push(Cartesian3.clone(positions[0]));
22222
- var prev = cartesians[0];
22223
-
22224
- var length = positions.length;
22225
- for (var i = 1; i < length; ++i) {
22226
- var cur = positions[i];
22227
-
22228
- // intersects the IDL if either endpoint is on the negative side of the yz-plane
22229
- if (Plane.getPointDistance(yzPlane, prev) < 0.0 || Plane.getPointDistance(yzPlane, cur) < 0.0) {
22230
- // and intersects the xz-plane
22231
- var intersection = IntersectionTests.lineSegmentPlane(prev, cur, xzPlane, wrapLongitudeIntersection);
22232
- if (defined(intersection)) {
22233
- // move point on the xz-plane slightly away from the plane
22234
- var offset = Cartesian3.multiplyByScalar(xzNormal, 5.0e-9, wrapLongitudeOffset);
22235
- if (Plane.getPointDistance(xzPlane, prev) < 0.0) {
22236
- Cartesian3.negate(offset, offset);
22237
- }
22238
-
22239
- cartesians.push(Cartesian3.add(intersection, offset, new Cartesian3()));
22240
- segments.push(count + 1);
22241
-
22242
- Cartesian3.negate(offset, offset);
22243
- cartesians.push(Cartesian3.add(intersection, offset, new Cartesian3()));
22244
- count = 1;
22245
- }
22246
- }
22247
-
22248
- cartesians.push(Cartesian3.clone(positions[i]));
22249
- count++;
22250
-
22251
- prev = cur;
22252
- }
22253
-
22254
- segments.push(count);
22255
- }
22256
-
22257
- return {
22258
- positions : cartesians,
22259
- lengths : segments
22260
- };
22261
- };
22262
-
22263
- var removeDuplicatesEpsilon = CesiumMath.EPSILON10;
22264
-
22265
- /**
22266
- * Removes adjacent duplicate positions in an array of positions.
22267
- *
22268
- * @param {Cartesian3[]} positions The array of positions.
22269
- * @returns {Cartesian3[]|undefined} A new array of positions with no adjacent duplicate positions or the input array if no duplicates were found.
22270
- *
22271
- * @example
22272
- * // Returns [(1.0, 1.0, 1.0), (2.0, 2.0, 2.0)]
22273
- * var positions = [
22274
- * new Cesium.Cartesian3(1.0, 1.0, 1.0),
22275
- * new Cesium.Cartesian3(1.0, 1.0, 1.0),
22276
- * new Cesium.Cartesian3(2.0, 2.0, 2.0)];
22277
- * var nonDuplicatePositions = Cesium.PolylinePipeline.removeDuplicates(positions);
22278
- */
22279
- PolylinePipeline.removeDuplicates = function(positions) {
22280
- if (!defined(positions)) {
22281
- throw new DeveloperError('positions is required.');
22282
- }
22283
-
22284
- var length = positions.length;
22285
- if (length < 2) {
22286
- return positions;
22287
- }
22288
-
22289
- var i;
22290
- var v0;
22291
- var v1;
22292
-
22293
- for (i = 1; i < length; ++i) {
22294
- v0 = positions[i - 1];
22295
- v1 = positions[i];
22296
- if (Cartesian3.equalsEpsilon(v0, v1, removeDuplicatesEpsilon)) {
22297
- break;
22298
- }
22299
- }
22300
-
22301
- if (i === length) {
22302
- return positions;
22303
- }
22304
-
22305
- var cleanedPositions = positions.slice(0, i);
22306
- for (; i < length; ++i) {
22307
- // v0 is set by either the previous loop, or the previous clean point.
22308
- v1 = positions[i];
22309
- if (!Cartesian3.equalsEpsilon(v0, v1, removeDuplicatesEpsilon)) {
22310
- cleanedPositions.push(Cartesian3.clone(v1));
22311
- v0 = v1;
22312
- }
22313
- }
22314
-
22315
- return cleanedPositions;
22316
- };
22317
-
22318
- /**
22319
- * Subdivides polyline and raises all points to the specified height. Returns an array of numbers to represent the positions.
22320
- * @param {Cartesian3[]} positions The array of type {Cartesian3} representing positions.
22321
- * @param {Number|Number[]} [height=0.0] A number or array of numbers representing the heights of each position.
22322
- * @param {Number} [granularity = CesiumMath.RADIANS_PER_DEGREE] The distance, in radians, between each latitude and longitude. Determines the number of positions in the buffer.
22323
- * @param {Ellipsoid} [ellipsoid=Ellipsoid.WGS84] The ellipsoid on which the positions lie.
22324
- * @returns {Number[]} A new array of positions of type {Number} that have been subdivided and raised to the surface of the ellipsoid.
22325
- *
22326
- * @example
22327
- * var positions = Cesium.Cartesian3.fromDegreesArray([
22328
- * -105.0, 40.0,
22329
- * -100.0, 38.0,
22330
- * -105.0, 35.0,
22331
- * -100.0, 32.0
22332
- * ]);
22333
- * var surfacePositions = Cesium.PolylinePipeline.generateArc({
22334
- * positons: positions
22335
- * });
22336
- */
22337
- PolylinePipeline.generateArc = function(options) {
22338
- if (!defined(options)) {
22339
- options = {};
22340
- }
22341
- var positions = options.positions;
22342
- if (!defined(positions)) {
22343
- throw new DeveloperError('options.positions is required.');
22344
- }
22345
-
22346
- var length = positions.length;
22347
- var ellipsoid = defaultValue(options.ellipsoid, Ellipsoid.WGS84);
22348
- var height = defaultValue(options.height, 0);
22349
-
22350
- if (length < 1) {
22351
- return [];
22352
- } else if (length === 1) {
22353
- var p = ellipsoid.scaleToGeodeticSurface(positions[0], scaleFirst);
22354
- if (height !== 0) {
22355
- var n = ellipsoid.geodeticSurfaceNormal(p, cartesian);
22356
- Cartesian3.multiplyByScalar(n, height, n);
22357
- Cartesian3.add(p, n, p);
22358
- }
22359
-
22360
- return [p.x, p.y, p.z];
22361
- }
22362
-
22363
- var minDistance = options.minDistance;
22364
- if (!defined(minDistance)) {
22365
- var granularity = defaultValue(options.granularity, CesiumMath.RADIANS_PER_DEGREE);
22366
- minDistance = CesiumMath.chordLength(granularity, ellipsoid.maximumRadius);
22367
- }
22368
-
22369
- var numPoints = 0;
22370
- var i;
22371
-
22372
- for (i = 0; i < length -1; i++) {
22373
- numPoints += PolylinePipeline.numberOfPoints(positions[i], positions[i+1], minDistance);
22374
- }
22375
-
22376
- var arrayLength = (numPoints + 1) * 3;
22377
- var newPositions = new Array(arrayLength);
22378
- var offset = 0;
22379
- var hasHeightArray = isArray(height);
22380
-
22381
- for (i = 0; i < length - 1; i++) {
22382
- var p0 = positions[i];
22383
- var p1 = positions[i + 1];
22384
-
22385
- var h0 = hasHeightArray ? height[i] : height;
22386
- var h1 = hasHeightArray ? height[i + 1] : height;
22387
-
22388
- offset = generateCartesianArc(p0, p1, minDistance, ellipsoid, h0, h1, newPositions, offset);
22389
- }
22390
-
22391
- subdivideHeightsScratchArray.length = 0;
22392
-
22393
- var lastPoint = positions[length - 1];
22394
- var carto = ellipsoid.cartesianToCartographic(lastPoint, carto1);
22395
- carto.height = hasHeightArray ? height[length - 1] : height;
22396
- var cart = ellipsoid.cartographicToCartesian(carto, cartesian);
22397
- Cartesian3.pack(cart, newPositions, arrayLength - 3);
22398
-
22399
- return newPositions;
22400
- };
22401
-
22402
- /**
22403
- * Subdivides polyline and raises all points to the specified height. Returns an array of new {Cartesian3} positions.
22404
- * @param {Cartesian3[]} positions The array of type {Cartesian3} representing positions.
22405
- * @param {Number|Number[]} [height=0.0] A number or array of numbers representing the heights of each position.
22406
- * @param {Number} [granularity = CesiumMath.RADIANS_PER_DEGREE] The distance, in radians, between each latitude and longitude. Determines the number of positions in the buffer.
22407
- * @param {Ellipsoid} [ellipsoid=Ellipsoid.WGS84] The ellipsoid on which the positions lie.
22408
- * @returns {Cartesian3[]} A new array of cartesian3 positions that have been subdivided and raised to the surface of the ellipsoid.
22409
- *
22410
- * @example
22411
- * var positions = Cesium.Cartesian3.fromDegreesArray([
22412
- * -105.0, 40.0,
22413
- * -100.0, 38.0,
22414
- * -105.0, 35.0,
22415
- * -100.0, 32.0
22416
- * ]);
22417
- * var surfacePositions = Cesium.PolylinePipeline.generateCartesianArc({
22418
- * positons: positions
22419
- * });
22420
- */
22421
- PolylinePipeline.generateCartesianArc = function(options) {
22422
- var numberArray = PolylinePipeline.generateArc(options);
22423
- var size = numberArray.length/3;
22424
- var newPositions = new Array(size);
22425
- for (var i = 0; i < size; i++) {
22426
- newPositions[i] = Cartesian3.unpack(numberArray, i*3);
22427
- }
22428
- return newPositions;
22429
- };
22430
-
22431
- return PolylinePipeline;
22432
- });
22433
-
22434
- /*global define*/
22435
- define('Core/Queue',[
22436
- '../Core/defineProperties'
22437
- ], function(
22438
- defineProperties) {
22439
- "use strict";
22440
-
22441
- /**
22442
- * A queue that can enqueue items at the end, and dequeue items from the front.
22443
- *
22444
- * @alias Queue
22445
- * @constructor
22446
- */
22447
- function Queue() {
22448
- this._array = [];
22449
- this._offset = 0;
22450
- this._length = 0;
22451
- }
22452
-
22453
- defineProperties(Queue.prototype, {
22454
- /**
22455
- * The length of the queue.
22456
- *
22457
- * @memberof Queue.prototype
22458
- *
22459
- * @type {Number}
22460
- * @readonly
22461
- */
22462
- length : {
22463
- get : function() {
22464
- return this._length;
22465
- }
22466
- }
22467
- });
22468
-
22469
- /**
22470
- * Enqueues the specified item.
22471
- *
22472
- * @param {Object} item The item to enqueue.
22473
- */
22474
- Queue.prototype.enqueue = function(item) {
22475
- this._array.push(item);
22476
- this._length++;
22477
- };
22478
-
22479
- /**
22480
- * Dequeues an item. Returns undefined if the queue is empty.
22481
- *
22482
- * @returns {Object} The the dequeued item.
22483
- */
22484
- Queue.prototype.dequeue = function() {
22485
- if (this._length === 0) {
22486
- return undefined;
22487
- }
22488
-
22489
- var array = this._array;
22490
- var offset = this._offset;
22491
- var item = array[offset];
22492
- array[offset] = undefined;
22493
-
22494
- offset++;
22495
- if ((offset > 10) && (offset * 2 > array.length)) {
22496
- //compact array
22497
- this._array = array.slice(offset);
22498
- offset = 0;
22499
- }
22500
-
22501
- this._offset = offset;
22502
- this._length--;
22503
-
22504
- return item;
22505
- };
22506
-
22507
- /**
22508
- * Returns the item at the front of the queue. Returns undefined if the queue is empty.
22509
- *
22510
- * @returns {Object} The item at the front of the queue.
22511
- */
22512
- Queue.prototype.peek = function() {
22513
- if (this._length === 0) {
22514
- return undefined;
22515
- }
22516
-
22517
- return this._array[this._offset];
22518
- };
22519
-
22520
- /**
22521
- * Check whether this queue contains the specified item.
22522
- *
22523
- * @param {Object} item The item to search for.
22524
- */
22525
- Queue.prototype.contains = function(item) {
22526
- return this._array.indexOf(item) !== -1;
22527
- };
22528
-
22529
- /**
22530
- * Remove all items from the queue.
22531
- */
22532
- Queue.prototype.clear = function() {
22533
- this._array.length = this._offset = this._length = 0;
22534
- };
22535
-
22536
- /**
22537
- * Sort the items in the queue in-place.
22538
- *
22539
- * @param {Queue~Comparator} compareFunction A function that defines the sort order.
22540
- */
22541
- Queue.prototype.sort = function(compareFunction) {
22542
- if (this._offset > 0) {
22543
- //compact array
22544
- this._array = this._array.slice(this._offset);
22545
- this._offset = 0;
22546
- }
22547
-
22548
- this._array.sort(compareFunction);
22549
- };
22550
-
22551
- /**
22552
- * A function used to compare two items while sorting a queue.
22553
- * @callback Queue~Comparator
22554
- *
22555
- * @param {Object} a An item in the array.
22556
- * @param {Object} b An item in the array.
22557
- * @returns {Number} Returns a negative value if <code>a</code> is less than <code>b</code>,
22558
- * a positive value if <code>a</code> is greater than <code>b</code>, or
22559
- * 0 if <code>a</code> is equal to <code>b</code>.
22560
- *
22561
- * @example
22562
- * function compareNumbers(a, b) {
22563
- * return a - b;
22564
- * }
22565
- */
22566
-
22567
- return Queue;
22568
- });
22569
-
22570
- /*global define*/
22571
- define('Core/WindingOrder',[
22572
- '../Renderer/WebGLConstants',
22573
- './freezeObject'
22574
- ], function(
22575
- WebGLConstants,
22576
- freezeObject) {
22577
- "use strict";
22578
-
22579
- /**
22580
- * Winding order defines the order of vertices for a triangle to be considered front-facing.
22581
- *
22582
- * @exports WindingOrder
22583
- */
22584
- var WindingOrder = {
22585
- /**
22586
- * Vertices are in clockwise order.
22587
- *
22588
- * @type {Number}
22589
- * @constant
22590
- */
22591
- CLOCKWISE : WebGLConstants.CW,
22592
-
22593
- /**
22594
- * Vertices are in counter-clockwise order.
22595
- *
22596
- * @type {Number}
22597
- * @constant
22598
- */
22599
- COUNTER_CLOCKWISE : WebGLConstants.CCW,
22600
-
22601
- /**
22602
- * @private
22603
- */
22604
- validate : function(windingOrder) {
22605
- return windingOrder === WindingOrder.CLOCKWISE ||
22606
- windingOrder === WindingOrder.COUNTER_CLOCKWISE;
22607
- }
22608
- };
22609
-
22610
- return freezeObject(WindingOrder);
22611
- });
22612
- /*global define*/
22613
- define('Core/PolygonPipeline',[
22614
- './Cartesian2',
22615
- './Cartesian3',
22616
- './ComponentDatatype',
22617
- './defaultValue',
22618
- './defined',
22619
- './DeveloperError',
22620
- './Ellipsoid',
22621
- './EllipsoidTangentPlane',
22622
- './Geometry',
22623
- './GeometryAttribute',
22624
- './Math',
22625
- './pointInsideTriangle',
22626
- './PolylinePipeline',
22627
- './PrimitiveType',
22628
- './Queue',
22629
- './WindingOrder'
22630
- ], function(
22631
- Cartesian2,
22632
- Cartesian3,
22633
- ComponentDatatype,
22634
- defaultValue,
22635
- defined,
22636
- DeveloperError,
22637
- Ellipsoid,
22638
- EllipsoidTangentPlane,
22639
- Geometry,
22640
- GeometryAttribute,
22641
- CesiumMath,
22642
- pointInsideTriangle,
22643
- PolylinePipeline,
22644
- PrimitiveType,
22645
- Queue,
22646
- WindingOrder) {
22647
- "use strict";
22648
-
22649
- var uScratch = new Cartesian2();
22650
- var vScratch = new Cartesian2();
22651
- function isTipConvex(p0, p1, p2) {
22652
- var u = Cartesian2.subtract(p1, p0, uScratch);
22653
- var v = Cartesian2.subtract(p2, p1, vScratch);
22654
-
22655
- // Use the sign of the z component of the cross product
22656
- return ((u.x * v.y) - (u.y * v.x)) >= 0.0;
22657
- }
22658
-
22659
- /**
22660
- * Returns the index of the vertex with the maximum X value.
22661
- *
22662
- * @param {Cartesian2[]} positions An array of the Cartesian points defining the polygon's vertices.
22663
- * @returns {Number} The index of the positions with the maximum X value.
22664
- *
22665
- * @private
22666
- */
22667
- function getRightmostPositionIndex(positions) {
22668
- var maximumX = positions[0].x;
22669
- var rightmostPositionIndex = 0;
22670
- for ( var i = 0; i < positions.length; i++) {
22671
- if (positions[i].x > maximumX) {
22672
- maximumX = positions[i].x;
22673
- rightmostPositionIndex = i;
22674
- }
22675
- }
22676
- return rightmostPositionIndex;
22677
- }
22678
-
22679
- /**
22680
- * Returns the index of the ring that contains the rightmost vertex.
22681
- *
22682
- * @param {Cartesian2[]} rings An array of arrays of Cartesians. Each array contains the vertices defining a polygon.
22683
- * @returns {Number} The index of the ring containing the rightmost vertex.
22684
- *
22685
- * @private
22686
- */
22687
- function getRightmostRingIndex(rings) {
22688
- var rightmostX = rings[0][0].x;
22689
- var rightmostRingIndex = 0;
22690
- for ( var ring = 0; ring < rings.length; ring++) {
22691
- var maximumX = rings[ring][getRightmostPositionIndex(rings[ring])].x;
22692
- if (maximumX > rightmostX) {
22693
- rightmostX = maximumX;
22694
- rightmostRingIndex = ring;
22695
- }
22696
- }
22697
-
22698
- return rightmostRingIndex;
22699
- }
22700
-
22701
- /**
22702
- * Returns a list containing the reflex vertices for a given polygon.
22703
- *
22704
- * @param {Cartesian2[]} polygon An array of Cartesian elements defining the polygon.
22705
- * @returns {Cartesian2[]}
22706
- *
22707
- * @private
22708
- */
22709
- function getReflexVertices(polygon) {
22710
- var reflexVertices = [];
22711
- for ( var i = 0; i < polygon.length; i++) {
22712
- var p0 = polygon[((i - 1) + polygon.length) % polygon.length];
22713
- var p1 = polygon[i];
22714
- var p2 = polygon[(i + 1) % polygon.length];
22715
-
22716
- if (!isTipConvex(p0, p1, p2)) {
22717
- reflexVertices.push(p1);
22718
- }
22719
- }
22720
- return reflexVertices;
22721
- }
22722
-
22723
- /**
22724
- * Returns true if the given point is contained in the list of positions.
22725
- *
22726
- * @param {Cartesian2[]} positions A list of Cartesian elements defining a polygon.
22727
- * @param {Cartesian2} point The point to check.
22728
- * @returns {Number} The index of <code>point</code> in <code>positions</code> or -1 if it was not found.
22729
- *
22730
- * @private
22731
- */
22732
- function isVertex(positions, point) {
22733
- for ( var i = 0; i < positions.length; i++) {
22734
- if (Cartesian2.equals(point, positions[i])) {
22735
- return i;
22736
- }
22737
- }
22738
- return -1;
22739
- }
22740
-
22741
- /**
22742
- * Given a point inside a polygon, find the nearest point directly to the right that lies on one of the polygon's edges.
22743
- *
22744
- * @param {Cartesian2} point A point inside the polygon defined by <code>ring</code>.
22745
- * @param {Cartesian2[]} ring A list of Cartesian points defining a polygon.
22746
- * @param {Number[]} [edgeIndices] An array containing the indices two endpoints of the edge containing the intersection.
22747
- * @returns {Cartesian2} The intersection point.
22748
- *
22749
- * @private
22750
- */
22751
- var distScratch = new Cartesian2();
22752
- function intersectPointWithRing(point, ring, edgeIndices) {
22753
- edgeIndices = defaultValue(edgeIndices, []);
22754
-
22755
- var minDistance = Number.MAX_VALUE;
22756
- var rightmostVertexIndex = getRightmostPositionIndex(ring);
22757
- var intersection = new Cartesian2(ring[rightmostVertexIndex].x, point.y);
22758
- edgeIndices.push(rightmostVertexIndex);
22759
- edgeIndices.push((rightmostVertexIndex + 1) % ring.length);
22760
-
22761
- var boundaryMinX = ring[0].x;
22762
- var boundaryMaxX = boundaryMinX;
22763
- for ( var i = 1; i < ring.length; ++i) {
22764
- if (ring[i].x < boundaryMinX) {
22765
- boundaryMinX = ring[i].x;
22766
- } else if (ring[i].x > boundaryMaxX) {
22767
- boundaryMaxX = ring[i].x;
22768
- }
22769
- }
22770
- boundaryMaxX += (boundaryMaxX - boundaryMinX);
22771
- var point2 = new Cartesian3(boundaryMaxX, point.y, 0.0);
22772
-
22773
- // Find the nearest intersection.
22774
- for (i = 0; i < ring.length; i++) {
22775
- var v1 = ring[i];
22776
- var v2 = ring[(i + 1) % ring.length];
22777
-
22778
- if (((v1.x >= point.x) || (v2.x >= point.x)) && (((v1.y >= point.y) && (v2.y <= point.y)) || ((v1.y <= point.y) && (v2.y >= point.y)))) {
22779
- var temp = ((v2.y - v1.y) * (point2.x - point.x)) - ((v2.x - v1.x) * (point2.y - point.y));
22780
- if (temp !== 0.0) {
22781
- temp = 1.0 / temp;
22782
- var ua = (((v2.x - v1.x) * (point.y - v1.y)) - ((v2.y - v1.y) * (point.x - v1.x))) * temp;
22783
- var ub = (((point2.x - point.x) * (point.y - v1.y)) - ((point2.y - point.y) * (point.x - v1.x))) * temp;
22784
- if ((ua >= 0.0) && (ua <= 1.0) && (ub >= 0.0) && (ub <= 1.0)) {
22785
- var tempIntersection = new Cartesian2(point.x + ua * (point2.x - point.x), point.y + ua * (point2.y - point.y));
22786
- var dist = Cartesian2.subtract(tempIntersection, point, distScratch);
22787
- temp = Cartesian2.magnitudeSquared(dist);
22788
- if (temp < minDistance) {
22789
- intersection = tempIntersection;
22790
- minDistance = temp;
22791
- edgeIndices[0] = i;
22792
- edgeIndices[1] = (i + 1) % ring.length;
22793
- }
22794
- }
22795
- }
22796
- }
22797
- }
22798
-
22799
- return intersection;
22800
- }
22801
-
22802
- /**
22803
- * Given an outer ring and multiple inner rings, determine the point on the outer ring that is visible
22804
- * to the rightmost vertex of the rightmost inner ring.
22805
- *
22806
- * @param {Cartesian2[]} outerRing An array of Cartesian points defining the outer boundary of the polygon.
22807
- * @param {Cartesian2[]} innerRings An array of arrays of Cartesian points, where each array represents a hole in the polygon.
22808
- * @returns {Number} The index of the vertex in <code>outerRing</code> that is mutually visible to the rightmost vertex in <code>inenrRing</code>.
22809
- *
22810
- * @private
22811
- */
22812
- var v1Scratch = new Cartesian2(1.0, 0.0);
22813
- var v2Scratch = new Cartesian2();
22814
- function getMutuallyVisibleVertexIndex(outerRing, innerRings) {
22815
- var innerRingIndex = getRightmostRingIndex(innerRings);
22816
- var innerRing = innerRings[innerRingIndex];
22817
- var innerRingVertexIndex = getRightmostPositionIndex(innerRing);
22818
- var innerRingVertex = innerRing[innerRingVertexIndex];
22819
- var edgeIndices = [];
22820
- var intersection = intersectPointWithRing(innerRingVertex, outerRing, edgeIndices);
22821
-
22822
- var visibleVertex = isVertex(outerRing, intersection);
22823
- if (visibleVertex !== -1) {
22824
- return visibleVertex;
22825
- }
22826
-
22827
- // Set P to be the edge endpoint closest to the inner ring vertex
22828
- var d1 = Cartesian2.magnitudeSquared(Cartesian2.subtract(outerRing[edgeIndices[0]], innerRingVertex, v1Scratch));
22829
- var d2 = Cartesian2.magnitudeSquared(Cartesian2.subtract(outerRing[edgeIndices[1]], innerRingVertex, v1Scratch));
22830
- var p = (d1 < d2) ? outerRing[edgeIndices[0]] : outerRing[edgeIndices[1]];
22831
-
22832
- var reflexVertices = getReflexVertices(outerRing);
22833
- var reflexIndex = reflexVertices.indexOf(p);
22834
- if (reflexIndex !== -1) {
22835
- reflexVertices.splice(reflexIndex, 1); // Do not include p if it happens to be reflex.
22836
- }
22837
-
22838
- var pointsInside = [];
22839
- for ( var i = 0; i < reflexVertices.length; i++) {
22840
- var vertex = reflexVertices[i];
22841
- if (pointInsideTriangle(vertex, innerRingVertex, intersection, p)) {
22842
- pointsInside.push(vertex);
22843
- }
22844
- }
22845
-
22846
- // If all reflexive vertices are outside the triangle formed by points
22847
- // innerRingVertex, intersection and P, then P is the visible vertex.
22848
- // Otherwise, return the reflex vertex that minimizes the angle between <1,0> and <k, reflex>.
22849
- var minAngle = Number.MAX_VALUE;
22850
- if (pointsInside.length > 0) {
22851
- var v1 = Cartesian2.fromElements(1.0, 0.0, v1Scratch);
22852
- for (i = 0; i < pointsInside.length; i++) {
22853
- var v2 = Cartesian2.subtract(pointsInside[i], innerRingVertex, v2Scratch);
22854
- var denominator = Cartesian2.magnitude(v1) * Cartesian2.magnitudeSquared(v2);
22855
- if (denominator !== 0) {
22856
- var angle = Math.abs(CesiumMath.acosClamped(Cartesian2.dot(v1, v2) / denominator));
22857
- if (angle < minAngle) {
22858
- minAngle = angle;
22859
- p = pointsInside[i];
22860
- }
22861
- }
22862
- }
22863
- }
22864
-
22865
- return outerRing.indexOf(p);
22866
- }
22867
-
22868
- /**
22869
- * Given a polygon defined by an outer ring with one or more inner rings (holes), return a single list of points representing
22870
- * a polygon with the rightmost hole added to it. The added hole is removed from <code>innerRings</code>.
22871
- *
22872
- * @param {Cartesian2[]} outerRing An array of Cartesian points defining the outer boundary of the polygon.
22873
- * @param {Cartesian2[]} innerRings An array of arrays of Cartesian points, where each array represents a hole in the polygon.
22874
- * @returns {Cartesian2[]} A single list of Cartesian points defining the polygon, including the eliminated inner ring.
22875
- *
22876
- * @private
22877
- */
22878
- function eliminateHole(outerRing, innerRings, ellipsoid) {
22879
- // Check that the holes are defined in the winding order opposite that of the outer ring.
22880
- var windingOrder = PolygonPipeline.computeWindingOrder2D(outerRing);
22881
- for ( var i = 0; i < innerRings.length; i++) {
22882
- var ring = innerRings[i];
22883
-
22884
- // Ensure each hole's first and last points are the same.
22885
- if (!Cartesian3.equals(ring[0], ring[ring.length - 1])) {
22886
- ring.push(ring[0]);
22887
- }
22888
-
22889
- var innerWindingOrder = PolygonPipeline.computeWindingOrder2D(ring);
22890
- if (innerWindingOrder === windingOrder) {
22891
- ring.reverse();
22892
- }
22893
- }
22894
-
22895
- // Project points onto a tangent plane to find the mutually visible vertex.
22896
- var tangentPlane = EllipsoidTangentPlane.fromPoints(outerRing, ellipsoid);
22897
- var tangentOuterRing = tangentPlane.projectPointsOntoPlane(outerRing);
22898
- var tangentInnerRings = [];
22899
- for (i = 0; i < innerRings.length; i++) {
22900
- tangentInnerRings.push(tangentPlane.projectPointsOntoPlane(innerRings[i]));
22901
- }
22902
-
22903
- var visibleVertexIndex = getMutuallyVisibleVertexIndex(tangentOuterRing, tangentInnerRings);
22904
- var innerRingIndex = getRightmostRingIndex(tangentInnerRings);
22905
- var innerRingVertexIndex = getRightmostPositionIndex(tangentInnerRings[innerRingIndex]);
22906
-
22907
- var innerRing = innerRings[innerRingIndex];
22908
- var newPolygonVertices = [];
22909
-
22910
- for (i = 0; i < outerRing.length; i++) {
22911
- newPolygonVertices.push(outerRing[i]);
22912
- }
22913
-
22914
- var j;
22915
- var holeVerticesToAdd = [];
22916
-
22917
- // If the rightmost inner vertex is not the starting and ending point of the ring,
22918
- // then some other point is duplicated in the inner ring and should be skipped once.
22919
- if (innerRingVertexIndex !== 0) {
22920
- for (j = 0; j <= innerRing.length; j++) {
22921
- var index = (j + innerRingVertexIndex) % innerRing.length;
22922
- if (index !== 0) {
22923
- holeVerticesToAdd.push(innerRing[index]);
22924
- }
22925
- }
22926
- } else {
22927
- for (j = 0; j < innerRing.length; j++) {
22928
- holeVerticesToAdd.push(innerRing[(j + innerRingVertexIndex) % innerRing.length]);
22929
- }
22930
- }
22931
-
22932
- var lastVisibleVertexIndex = newPolygonVertices.lastIndexOf(outerRing[visibleVertexIndex]);
22933
-
22934
- holeVerticesToAdd.push(outerRing[lastVisibleVertexIndex]);
22935
-
22936
- var front = newPolygonVertices.slice(0, lastVisibleVertexIndex + 1);
22937
- var back = newPolygonVertices.slice(lastVisibleVertexIndex + 1);
22938
- newPolygonVertices = front.concat(holeVerticesToAdd, back);
22939
-
22940
- innerRings.splice(innerRingIndex, 1);
22941
-
22942
- return newPolygonVertices;
22943
- }
22944
-
22945
- function getRandomIndex(length) {
22946
- var random = CesiumMath.nextRandomNumber();
22947
- var i = Math.floor(random * length);
22948
- if (i === length) {
22949
- i--;
22950
- }
22951
- return i;
22952
- }
22953
-
22954
- function indexedEdgeCrossZ(p0Index, p1Index, vertexIndex, array) {
22955
- var p0 = array[p0Index].position;
22956
- var p1 = array[p1Index].position;
22957
- var v = array[vertexIndex].position;
22958
-
22959
- var vx = v.x;
22960
- var vy = v.y;
22961
-
22962
- // (p0 - v).cross(p1 - v).z
22963
- var leftX = p0.x - vx;
22964
- var leftY = p0.y - vy;
22965
- var rightX = p1.x - vx;
22966
- var rightY = p1.y - vy;
22967
-
22968
- return leftX * rightY - leftY * rightX;
22969
- }
22970
-
22971
- function crossZ(p0, p1) {
22972
- // p0.cross(p1).z
22973
- return p0.x * p1.y - p0.y * p1.x;
22974
- }
22975
-
22976
- /**
22977
- * Checks to make sure vertex is not superfluous.
22978
- *
22979
- * @param {Number} index Index of vertex.
22980
- * @param {Number} pArray Array of vertices.
22981
- *
22982
- * @exception {DeveloperError} Superfluous vertex found.
22983
- *
22984
- * @private
22985
- */
22986
- function validateVertex(index, pArray) {
22987
- var length = pArray.length;
22988
- var before = CesiumMath.mod(index - 1, length);
22989
- var after = CesiumMath.mod(index + 1, length);
22990
-
22991
- // check if adjacent edges are parallel
22992
- if (indexedEdgeCrossZ(before, after, index, pArray) === 0.0) {
22993
- return false;
22994
- }
22995
-
22996
- return true;
22997
- }
22998
-
22999
- /**
23000
- * Checks whether cut parallel to side is internal.
23001
- *
23002
- * e.g.
23003
- *
23004
- * 7_________6
23005
- * | |
23006
- * | 4 ______|
23007
- * | | 5
23008
- * | |______2 Is cut from 1 to 6 internal? No.
23009
- * | 3 |
23010
- * |_________|
23011
- * 0 1
23012
- *
23013
- * Note that this function simply checks whether the cut is longer or shorter.
23014
- *
23015
- * An important valid cut:
23016
- *
23017
- * Polygon:
23018
- *
23019
- * 0 ___2__4
23020
- * | /\ |
23021
- * | / \ | Is cut 0 to 2 or 2 to 4 internal? Yes.
23022
- * |/ \|
23023
- * 1 3
23024
- *
23025
- * This situation can occur and the only solution is a cut along a parallel
23026
- * side.
23027
- *
23028
- * This method is technically incomplete, however, for the following case:
23029
- *
23030
- * 7_________6
23031
- * | |
23032
- * | |______4
23033
- * | 5 | Now is 1 to 6 internal? Yes, but we'll never need it.
23034
- * | 2______|
23035
- * | | 5
23036
- * |_________|
23037
- * 0 1
23038
- *
23039
- * In this case, although the cut from 1 to 6 is valid, the side 1-2 is
23040
- * shorter and thus this cut will be called invalid. Assuming there are no
23041
- * superfluous vertices (a requirement for this method to work), however,
23042
- * we'll never need this cut because we can always find cut 2-5 as a substitute.
23043
- *
23044
- * @param {Cartesian2} side
23045
- * @param {Cartesian2} cut
23046
- * @returns {Boolean}
22897
+ return this._length;
22898
+ }
22899
+ }
22900
+ });
22901
+
22902
+ /**
22903
+ * Enqueues the specified item.
23047
22904
  *
23048
- * @private
22905
+ * @param {Object} item The item to enqueue.
23049
22906
  */
23050
- function isInternalToParallelSide(side, cut) {
23051
- return Cartesian2.magnitudeSquared(cut) < Cartesian2.magnitudeSquared(side);
23052
- }
23053
-
23054
- var INTERNAL = -1;
23055
- var EXTERNAL = -2;
22907
+ Queue.prototype.enqueue = function(item) {
22908
+ this._array.push(item);
22909
+ this._length++;
22910
+ };
23056
22911
 
23057
22912
  /**
23058
- * Determine whether the cut formed between the two vertices is internal
23059
- * to the angle formed by the sides connecting at the first vertex.
23060
- *
23061
- * @param {Number} a1i Index of first vertex.
23062
- * @param {Number} a2i Index of second vertex.
23063
- * @param {Array} pArray Array of <code>{ position, index }</code> objects representing the polygon.
23064
- * @returns {Number} If INTERNAL, the cut formed between the two vertices is internal to the angle at vertex 1.
23065
- * If EXTERNAL, then the cut formed between the two vertices is external to the angle at vertex 1. If the value
23066
- * is greater than or equal to zero, then the value is the index of an invalid vertex.
22913
+ * Dequeues an item. Returns undefined if the queue is empty.
23067
22914
  *
23068
- * @private
22915
+ * @returns {Object} The the dequeued item.
23069
22916
  */
23070
- var s1Scratch = new Cartesian3();
23071
- var s2Scratch = new Cartesian3();
23072
- var cutScratch = new Cartesian3();
23073
- function internalCut(a1i, a2i, pArray) {
23074
- // Make sure vertex is valid
23075
- if (!validateVertex(a1i, pArray)) {
23076
- return a1i;
22917
+ Queue.prototype.dequeue = function() {
22918
+ if (this._length === 0) {
22919
+ return undefined;
23077
22920
  }
23078
22921
 
23079
- // Get the nodes from the array
23080
- var a1Position = pArray[a1i].position;
23081
- var a2Position = pArray[a2i].position;
23082
- var length = pArray.length;
23083
-
23084
- // Define side and cut vectors
23085
- var before = CesiumMath.mod(a1i - 1, length);
23086
- if (!validateVertex(before, pArray)) {
23087
- return before;
23088
- }
22922
+ var array = this._array;
22923
+ var offset = this._offset;
22924
+ var item = array[offset];
22925
+ array[offset] = undefined;
23089
22926
 
23090
- var after = CesiumMath.mod(a1i + 1, length);
23091
- if (!validateVertex(after, pArray)) {
23092
- return after;
22927
+ offset++;
22928
+ if ((offset > 10) && (offset * 2 > array.length)) {
22929
+ //compact array
22930
+ this._array = array.slice(offset);
22931
+ offset = 0;
23093
22932
  }
23094
22933
 
23095
- var s1 = Cartesian2.subtract(pArray[before].position, a1Position, s1Scratch);
23096
- var s2 = Cartesian2.subtract(pArray[after].position, a1Position, s2Scratch);
23097
- var cut = Cartesian2.subtract(a2Position, a1Position, cutScratch);
23098
-
23099
- var leftEdgeCutZ = crossZ(s1, cut);
23100
- var rightEdgeCutZ = crossZ(s2, cut);
22934
+ this._offset = offset;
22935
+ this._length--;
23101
22936
 
23102
- if (leftEdgeCutZ === 0.0) { // cut is parallel to (a1i - 1, a1i) edge
23103
- return isInternalToParallelSide(s1, cut) ? INTERNAL : EXTERNAL;
23104
- } else if (rightEdgeCutZ === 0.0) { // cut is parallel to (a1i + 1, a1i) edge
23105
- return isInternalToParallelSide(s2, cut) ? INTERNAL : EXTERNAL;
23106
- } else {
23107
- var z = crossZ(s1, s2);
23108
- if (z < 0.0) { // angle at a1i is less than 180 degrees
23109
- return leftEdgeCutZ < 0.0 && rightEdgeCutZ > 0.0 ? INTERNAL : EXTERNAL; // Cut is in-between sides
23110
- } else if (z > 0.0) { // angle at a1i is greater than 180 degrees
23111
- return leftEdgeCutZ > 0.0 && rightEdgeCutZ < 0.0 ? EXTERNAL : INTERNAL; // Cut is in-between sides
23112
- }
23113
- }
23114
- }
22937
+ return item;
22938
+ };
23115
22939
 
23116
22940
  /**
23117
- * Determine whether number is between n1 and n2.
23118
- * Do not include number === n1 or number === n2.
23119
- * Do include n1 === n2 === number.
23120
- *
23121
- * @param {Number} number The number tested.
23122
- * @param {Number} n1 First bound.
23123
- * @param {Number} n2 Secound bound.
23124
- * @returns {Boolean} number is between n1 and n2.
22941
+ * Returns the item at the front of the queue. Returns undefined if the queue is empty.
23125
22942
  *
23126
- * @private
22943
+ * @returns {Object} The item at the front of the queue.
23127
22944
  */
23128
- function isBetween(number, n1, n2) {
23129
- return ((number > n1 || number > n2) && (number < n1 || number < n2)) || (n1 === n2 && n1 === number);
23130
- }
23131
-
23132
- var sqrEpsilon = CesiumMath.EPSILON14;
23133
- var eScratch = new Cartesian2();
23134
-
23135
- function linesIntersection(p0, d0, p1, d1) {
23136
- var e = Cartesian2.subtract(p1, p0, eScratch);
23137
- var cross = d0.x * d1.y - d0.y * d1.x;
23138
- var sqrCross = cross * cross;
23139
- var sqrLen0 = Cartesian2.magnitudeSquared(d0);
23140
- var sqrLen1 = Cartesian2.magnitudeSquared(d1);
23141
- if (sqrCross > sqrEpsilon * sqrLen0 * sqrLen1) {
23142
- // lines of the segments are not parallel
23143
- var s = (e.x * d1.y - e.y * d1.x) / cross;
23144
- return Cartesian2.add(p0, Cartesian2.multiplyByScalar(d0, s, eScratch), eScratch);
22945
+ Queue.prototype.peek = function() {
22946
+ if (this._length === 0) {
22947
+ return undefined;
23145
22948
  }
23146
22949
 
23147
- // lines of the segments are parallel (they cannot be the same line)
23148
- return undefined;
23149
- }
22950
+ return this._array[this._offset];
22951
+ };
23150
22952
 
23151
22953
  /**
23152
- * Determine whether this segment intersects any other polygon sides.
23153
- *
23154
- * @param {Cartesian2} a1 Position of first vertex.
23155
- * @param {Cartesian2} a2 Position of second vertex.
23156
- * @param {Array} pArray Array of <code>{ position, index }</code> objects representing polygon.
23157
- * @returns {Boolean} The segment between a1 and a2 intersect another polygon side.
22954
+ * Check whether this queue contains the specified item.
23158
22955
  *
23159
- * @private
22956
+ * @param {Object} item The item to search for.
23160
22957
  */
23161
- var aDirectionScratch = new Cartesian2();
23162
- var bDirectionScratch = new Cartesian2();
23163
-
23164
- function intersectsSide(a1, a2, pArray) {
23165
- var aDirection = Cartesian2.subtract(a2, a1, aDirectionScratch);
23166
-
23167
- var length = pArray.length;
23168
- for (var i = 0; i < length; i++) {
23169
- var b1 = pArray[i].position;
23170
- var b2 = pArray[CesiumMath.mod(i + 1, length)].position;
23171
-
23172
- // If there's a duplicate point, there's no intersection here.
23173
- if (Cartesian2.equals(a1, b1) || Cartesian2.equals(a2, b2) || Cartesian2.equals(a1, b2) || Cartesian2.equals(a2, b1)) {
23174
- continue;
23175
- }
23176
-
23177
- var bDirection = Cartesian2.subtract(b2, b1, bDirectionScratch);
23178
- var intersection = linesIntersection(a1, aDirection, b1, bDirection);
23179
- if (!defined(intersection)) {
23180
- continue;
23181
- }
23182
-
23183
- // If intersection is on an endpoint, count no intersection
23184
- if (Cartesian2.equals(intersection, a1) || Cartesian2.equals(intersection, a2) || Cartesian2.equals(intersection, b1) || Cartesian2.equals(intersection, b2)) {
23185
- continue;
23186
- }
23187
-
23188
- // Is intersection point between segments?
23189
- var intX = intersection.x;
23190
- var intY = intersection.y;
23191
- var intersects = isBetween(intX, a1.x, a2.x) && isBetween(intY, a1.y, a2.y) && isBetween(intX, b1.x, b2.x) && isBetween(intY, b1.y, b2.y);
23192
-
23193
- // If intersecting, the cut is not clean
23194
- if (intersects) {
23195
- return true;
23196
- }
23197
- }
23198
- return false;
23199
- }
22958
+ Queue.prototype.contains = function(item) {
22959
+ return this._array.indexOf(item) !== -1;
22960
+ };
23200
22961
 
23201
- var CLEAN_CUT = -1;
23202
- var INVALID_CUT = -2;
22962
+ /**
22963
+ * Remove all items from the queue.
22964
+ */
22965
+ Queue.prototype.clear = function() {
22966
+ this._array.length = this._offset = this._length = 0;
22967
+ };
23203
22968
 
23204
22969
  /**
23205
- * Determine whether a cut between two polygon vertices is clean.
23206
- *
23207
- * @param {Number} a1i Index of first vertex.
23208
- * @param {Number} a2i Index of second vertex.
23209
- * @param {Array} pArray Array of <code>{ position, index }</code> objects representing the polygon.
23210
- * @returns {Number} If CLEAN_CUT, a cut from the first vertex to the second is internal and does not cross any other sides.
23211
- * If INVALID_CUT, then the vertices were valid but a cut could not be made. If the value is greater than or equal to zero,
23212
- * then the value is the index of an invalid vertex.
22970
+ * Sort the items in the queue in-place.
23213
22971
  *
23214
- * @private
22972
+ * @param {Queue~Comparator} compareFunction A function that defines the sort order.
23215
22973
  */
23216
- function cleanCut(a1i, a2i, pArray) {
23217
- var internalCut12 = internalCut(a1i, a2i, pArray);
23218
- if (internalCut12 >= 0) {
23219
- return internalCut12;
23220
- }
23221
-
23222
- var internalCut21 = internalCut(a2i, a1i, pArray);
23223
- if (internalCut21 >= 0) {
23224
- return internalCut21;
23225
- }
23226
-
23227
- if (internalCut12 === INTERNAL && internalCut21 === INTERNAL &&
23228
- !intersectsSide(pArray[a1i].position, pArray[a2i].position, pArray) &&
23229
- !Cartesian2.equals(pArray[a1i].position, pArray[a2i].position)) {
23230
- return CLEAN_CUT;
22974
+ Queue.prototype.sort = function(compareFunction) {
22975
+ if (this._offset > 0) {
22976
+ //compact array
22977
+ this._array = this._array.slice(this._offset);
22978
+ this._offset = 0;
23231
22979
  }
23232
22980
 
23233
- return INVALID_CUT;
23234
- }
23235
-
23236
- function triangleInLine(pArray) {
23237
- // Get two sides. If they're parallel, so is the last.
23238
- return indexedEdgeCrossZ(1, 2, 0, pArray) === 0.0;
23239
- }
22981
+ this._array.sort(compareFunction);
22982
+ };
23240
22983
 
23241
22984
  /**
23242
- * This recursive algorithm takes a polygon, randomly selects two vertices
23243
- * which form a clean cut through the polygon, and divides the polygon
23244
- * then continues to "chop" the two resulting polygons.
23245
- *
23246
- * @param {Array} nodeArray Array of <code>{ position, index }</code> objects representing polygon
23247
- * @returns {Number[]} Index array representing triangles that fill the polygon
22985
+ * A function used to compare two items while sorting a queue.
22986
+ * @callback Queue~Comparator
23248
22987
  *
23249
- * @exception {DeveloperError} Invalid polygon: must have at least three vertices.
22988
+ * @param {Object} a An item in the array.
22989
+ * @param {Object} b An item in the array.
22990
+ * @returns {Number} Returns a negative value if <code>a</code> is less than <code>b</code>,
22991
+ * a positive value if <code>a</code> is greater than <code>b</code>, or
22992
+ * 0 if <code>a</code> is equal to <code>b</code>.
23250
22993
  *
23251
- * @private
22994
+ * @example
22995
+ * function compareNumbers(a, b) {
22996
+ * return a - b;
22997
+ * }
23252
22998
  */
23253
- function randomChop(nodeArray) {
23254
- // Determine & verify number of vertices
23255
- var numVertices = nodeArray.length;
23256
-
23257
- // Is it already a triangle?
23258
- if (numVertices === 3) {
23259
- // Only return triangle if it has area (not a line)
23260
- if (!triangleInLine(nodeArray)) {
23261
- return [nodeArray[0].index, nodeArray[1].index, nodeArray[2].index];
23262
- }
23263
22999
 
23264
- // If it's a line, we don't need it.
23265
- return [];
23266
- } else if (nodeArray.length < 3) {
23267
- throw new DeveloperError('Invalid polygon: must have at least three vertices.');
23268
- }
23269
-
23270
- // Search for clean cut
23271
- var tries = 0;
23272
- var maxTries = nodeArray.length * 10;
23273
-
23274
- var cutResult = INVALID_CUT;
23275
- var index1;
23276
- var index2;
23277
-
23278
- while (cutResult < CLEAN_CUT && tries++ < maxTries) {
23279
- // Generate random indices
23280
- index1 = getRandomIndex(nodeArray.length);
23281
- index2 = index1 + 1;
23282
- while (Math.abs(index1 - index2) < 2 || Math.abs(index1 - index2) > nodeArray.length - 2) {
23283
- index2 = getRandomIndex(nodeArray.length);
23284
- }
23000
+ return Queue;
23001
+ });
23285
23002
 
23286
- // Make sure index2 is bigger
23287
- if (index1 > index2) {
23288
- var index = index1;
23289
- index1 = index2;
23290
- index2 = index;
23291
- }
23003
+ /*global define*/
23004
+ define('Core/WindingOrder',[
23005
+ '../Renderer/WebGLConstants',
23006
+ './freezeObject'
23007
+ ], function(
23008
+ WebGLConstants,
23009
+ freezeObject) {
23010
+ 'use strict';
23292
23011
 
23293
- cutResult = cleanCut(index1, index2, nodeArray);
23294
- }
23012
+ /**
23013
+ * Winding order defines the order of vertices for a triangle to be considered front-facing.
23014
+ *
23015
+ * @exports WindingOrder
23016
+ */
23017
+ var WindingOrder = {
23018
+ /**
23019
+ * Vertices are in clockwise order.
23020
+ *
23021
+ * @type {Number}
23022
+ * @constant
23023
+ */
23024
+ CLOCKWISE : WebGLConstants.CW,
23295
23025
 
23296
- if (cutResult === CLEAN_CUT) {
23297
- // Divide polygon
23298
- var nodeArray2 = nodeArray.splice(index1, (index2 - index1 + 1), nodeArray[index1], nodeArray[index2]);
23026
+ /**
23027
+ * Vertices are in counter-clockwise order.
23028
+ *
23029
+ * @type {Number}
23030
+ * @constant
23031
+ */
23032
+ COUNTER_CLOCKWISE : WebGLConstants.CCW,
23299
23033
 
23300
- // Chop up resulting polygons
23301
- return randomChop(nodeArray).concat(randomChop(nodeArray2));
23302
- } else if (cutResult >= 0) {
23303
- // Eliminate superfluous vertex and start over
23304
- nodeArray.splice(cutResult, 1);
23305
- return randomChop(nodeArray);
23034
+ /**
23035
+ * @private
23036
+ */
23037
+ validate : function(windingOrder) {
23038
+ return windingOrder === WindingOrder.CLOCKWISE ||
23039
+ windingOrder === WindingOrder.COUNTER_CLOCKWISE;
23306
23040
  }
23041
+ };
23307
23042
 
23308
- // No clean cut could be found
23309
- return [];
23310
- }
23043
+ return freezeObject(WindingOrder);
23044
+ });
23045
+ /*global define*/
23046
+ define('Core/PolygonPipeline',[
23047
+ '../ThirdParty/earcut-2.1.1',
23048
+ './Cartesian2',
23049
+ './Cartesian3',
23050
+ './ComponentDatatype',
23051
+ './defaultValue',
23052
+ './defined',
23053
+ './DeveloperError',
23054
+ './Ellipsoid',
23055
+ './EllipsoidTangentPlane',
23056
+ './Geometry',
23057
+ './GeometryAttribute',
23058
+ './Math',
23059
+ './pointInsideTriangle',
23060
+ './PrimitiveType',
23061
+ './Queue',
23062
+ './WindingOrder'
23063
+ ], function(
23064
+ earcut,
23065
+ Cartesian2,
23066
+ Cartesian3,
23067
+ ComponentDatatype,
23068
+ defaultValue,
23069
+ defined,
23070
+ DeveloperError,
23071
+ Ellipsoid,
23072
+ EllipsoidTangentPlane,
23073
+ Geometry,
23074
+ GeometryAttribute,
23075
+ CesiumMath,
23076
+ pointInsideTriangle,
23077
+ PrimitiveType,
23078
+ Queue,
23079
+ WindingOrder) {
23080
+ 'use strict';
23311
23081
 
23312
23082
  var scaleToGeodeticHeightN = new Cartesian3();
23313
23083
  var scaleToGeodeticHeightP = new Cartesian3();
@@ -23317,24 +23087,6 @@ define('Core/PolygonPipeline',[
23317
23087
  */
23318
23088
  var PolygonPipeline = {};
23319
23089
 
23320
- /**
23321
- * Cleans up a simple polygon by removing duplicate adjacent positions and making
23322
- * the first position not equal the last position.
23323
- *
23324
- * @exception {DeveloperError} At least three positions are required.
23325
- */
23326
- PolygonPipeline.removeDuplicates = function(positions) {
23327
- if (!defined(positions)) {
23328
- throw new DeveloperError('positions is required.');
23329
- }
23330
-
23331
- var cleanedPositions = PolylinePipeline.removeDuplicates(positions);
23332
- if (Cartesian3.equals(cleanedPositions[0], cleanedPositions[cleanedPositions.length - 1])) {
23333
- return cleanedPositions.slice(1);
23334
- }
23335
- return cleanedPositions;
23336
- };
23337
-
23338
23090
  /**
23339
23091
  * @exception {DeveloperError} At least three positions are required.
23340
23092
  */
@@ -23372,31 +23124,17 @@ define('Core/PolygonPipeline',[
23372
23124
  /**
23373
23125
  * Triangulate a polygon.
23374
23126
  *
23375
- * @param {Cartesian2[]} positions - Cartesian2 array containing the vertices of the polygon
23376
- * @returns {Number[]} - Index array representing triangles that fill the polygon
23377
- *
23378
- * @exception {DeveloperError} At least three positions are required.
23127
+ * @param {Cartesian2[]} positions Cartesian2 array containing the vertices of the polygon
23128
+ * @param {Number[]} [holes] An array of the staring indices of the holes.
23129
+ * @returns {Number[]} Index array representing triangles that fill the polygon
23379
23130
  */
23380
- PolygonPipeline.triangulate = function(positions) {
23131
+ PolygonPipeline.triangulate = function(positions, holes) {
23381
23132
  if (!defined(positions)) {
23382
23133
  throw new DeveloperError('positions is required.');
23383
23134
  }
23384
- if (positions.length < 3) {
23385
- throw new DeveloperError('At least three positions are required.');
23386
- }
23387
23135
 
23388
- var length = positions.length;
23389
- // Keep track of indices for later
23390
- var nodeArray = [];
23391
- for ( var i = 0; i < length; ++i) {
23392
- nodeArray[i] = {
23393
- position : positions[i],
23394
- index : i
23395
- };
23396
- }
23397
-
23398
- // Recursive chop
23399
- return randomChop(nodeArray);
23136
+ var flattenedPositions = Cartesian2.packArray(positions);
23137
+ return earcut(flattenedPositions, holes, 2);
23400
23138
  };
23401
23139
 
23402
23140
  var subdivisionV0Scratch = new Cartesian3();
@@ -23555,13 +23293,13 @@ define('Core/PolygonPipeline',[
23555
23293
  /**
23556
23294
  * Scales each position of a geometry's position attribute to a height, in place.
23557
23295
  *
23558
- * @param {Geometry} geometry The geometry whose positions are to be scaled.
23559
- * @param {Number} [height=0.0] The desired height to add to the positions of the geometry.
23296
+ * @param {Number[]} positions The array of numbers representing the positions to be scaled
23297
+ * @param {Number} [height=0.0] The desired height to add to the positions
23560
23298
  * @param {Ellipsoid} [ellipsoid=Ellipsoid.WGS84] The ellipsoid on which the positions lie.
23561
23299
  * @param {Boolean} [scaleToSurface=true] <code>true</code> if the positions need to be scaled to the surface before the height is added.
23562
- * @returns {Geometry} The same geometry whose positions where scaled.
23300
+ * @returns {Number[]} The input array of positions, scaled to height
23563
23301
  */
23564
- PolygonPipeline.scaleToGeodeticHeight = function(geometry, height, ellipsoid, scaleToSurface) {
23302
+ PolygonPipeline.scaleToGeodeticHeight = function(positions, height, ellipsoid, scaleToSurface) {
23565
23303
  ellipsoid = defaultValue(ellipsoid, Ellipsoid.WGS84);
23566
23304
 
23567
23305
  var n = scaleToGeodeticHeightN;
@@ -23570,8 +23308,7 @@ define('Core/PolygonPipeline',[
23570
23308
  height = defaultValue(height, 0.0);
23571
23309
  scaleToSurface = defaultValue(scaleToSurface, true);
23572
23310
 
23573
- if (defined(geometry) && defined(geometry.attributes) && defined(geometry.attributes.position)) {
23574
- var positions = geometry.attributes.position.values;
23311
+ if (defined(positions)) {
23575
23312
  var length = positions.length;
23576
23313
 
23577
23314
  for ( var i = 0; i < length; i += 3) {
@@ -23594,51 +23331,7 @@ define('Core/PolygonPipeline',[
23594
23331
  }
23595
23332
  }
23596
23333
 
23597
- return geometry;
23598
- };
23599
-
23600
- /**
23601
- * Given a polygon defined by an outer ring with one or more inner rings (holes), return a single list of points representing
23602
- * a polygon defined by the outer ring with the inner holes removed.
23603
- *
23604
- * @param {Cartesian2[]} outerRing An array of Cartesian points defining the outer boundary of the polygon.
23605
- * @param {Cartesian2[]} innerRings An array of arrays of Cartesian points, where each array represents a hole in the polygon.
23606
- * @returns {Cartesian2[]} A single list of Cartesian points defining the polygon, including the eliminated inner ring.
23607
- *
23608
- * @exception {DeveloperError} <code>outerRing</code> must not be empty.
23609
- *
23610
- * @example
23611
- * // Simplifying a polygon with multiple holes.
23612
- * outerRing = Cesium.PolygonPipeline.eliminateHoles(outerRing, innerRings);
23613
- * polygon.positions = outerRing;
23614
- */
23615
- PolygonPipeline.eliminateHoles = function(outerRing, innerRings, ellipsoid) {
23616
- if (!defined(outerRing)) {
23617
- throw new DeveloperError('outerRing is required.');
23618
- }
23619
- if (outerRing.length === 0) {
23620
- throw new DeveloperError('outerRing must not be empty.');
23621
- }
23622
- if (!defined(innerRings)) {
23623
- throw new DeveloperError('innerRings is required.');
23624
- }
23625
-
23626
- ellipsoid = defaultValue(ellipsoid, Ellipsoid.WGS84);
23627
-
23628
- var innerRingsCopy = [];
23629
- for ( var i = 0; i < innerRings.length; i++) {
23630
- var innerRing = [];
23631
- for ( var j = 0; j < innerRings[i].length; j++) {
23632
- innerRing.push(Cartesian3.clone(innerRings[i][j]));
23633
- }
23634
- innerRingsCopy.push(innerRing);
23635
- }
23636
-
23637
- var newPolygonVertices = outerRing;
23638
- while (innerRingsCopy.length > 0) {
23639
- newPolygonVertices = eliminateHole(newPolygonVertices, innerRingsCopy, ellipsoid);
23640
- }
23641
- return newPolygonVertices;
23334
+ return positions;
23642
23335
  };
23643
23336
 
23644
23337
  return PolygonPipeline;
@@ -23649,15 +23342,17 @@ define('Core/Matrix2',[
23649
23342
  './Cartesian2',
23650
23343
  './defaultValue',
23651
23344
  './defined',
23345
+ './defineProperties',
23652
23346
  './DeveloperError',
23653
23347
  './freezeObject'
23654
23348
  ], function(
23655
23349
  Cartesian2,
23656
23350
  defaultValue,
23657
23351
  defined,
23352
+ defineProperties,
23658
23353
  DeveloperError,
23659
23354
  freezeObject) {
23660
- "use strict";
23355
+ 'use strict';
23661
23356
 
23662
23357
  /**
23663
23358
  * A 2x2 matrix, indexable as a column-major order array.
@@ -24502,6 +24197,20 @@ define('Core/Matrix2',[
24502
24197
  */
24503
24198
  Matrix2.COLUMN1ROW1 = 3;
24504
24199
 
24200
+ defineProperties(Matrix2.prototype, {
24201
+ /**
24202
+ * Gets the number of items in the collection.
24203
+ * @memberof Matrix2.prototype
24204
+ *
24205
+ * @type {Number}
24206
+ */
24207
+ length : {
24208
+ get : function() {
24209
+ return Matrix2.packedLength;
24210
+ }
24211
+ }
24212
+ });
24213
+
24505
24214
  /**
24506
24215
  * Duplicates the provided Matrix2 instance.
24507
24216
  *
@@ -24569,7 +24278,7 @@ define('Core/RectangleGeometryLibrary',[
24569
24278
  CesiumMath,
24570
24279
  Matrix2,
24571
24280
  Rectangle) {
24572
- "use strict";
24281
+ 'use strict';
24573
24282
 
24574
24283
  var cos = Math.cos;
24575
24284
  var sin = Math.sin;
@@ -24763,7 +24472,7 @@ define('Core/RectangleOutlineGeometry',[
24763
24472
  PrimitiveType,
24764
24473
  Rectangle,
24765
24474
  RectangleGeometryLibrary) {
24766
- "use strict";
24475
+ 'use strict';
24767
24476
 
24768
24477
  var bottomBoundingSphere = new BoundingSphere();
24769
24478
  var topBoundingSphere = new BoundingSphere();
@@ -24850,13 +24559,11 @@ define('Core/RectangleOutlineGeometry',[
24850
24559
  var height = options.height;
24851
24560
  var width = options.width;
24852
24561
 
24853
- geo = PolygonPipeline.scaleToGeodeticHeight(geo, maxHeight, ellipsoid, false);
24854
- var topPositions = geo.attributes.position.values;
24562
+ var topPositions = PolygonPipeline.scaleToGeodeticHeight(geo.attributes.position.values, maxHeight, ellipsoid, false);
24855
24563
  var length = topPositions.length;
24856
24564
  var positions = new Float64Array(length*2);
24857
24565
  positions.set(topPositions);
24858
- geo = PolygonPipeline.scaleToGeodeticHeight(geo, minHeight, ellipsoid);
24859
- var bottomPositions = geo.attributes.position.values;
24566
+ var bottomPositions = PolygonPipeline.scaleToGeodeticHeight(geo.attributes.position.values, minHeight, ellipsoid);
24860
24567
  positions.set(bottomPositions, length);
24861
24568
  geo.attributes.position.values = positions;
24862
24569
 
@@ -25043,7 +24750,7 @@ define('Core/RectangleOutlineGeometry',[
25043
24750
  * Computes the geometric representation of an outline of an rectangle, including its vertices, indices, and a bounding sphere.
25044
24751
  *
25045
24752
  * @param {RectangleOutlineGeometry} rectangleGeometry A description of the rectangle outline.
25046
- * @returns {Geometry} The computed vertices and indices.
24753
+ * @returns {Geometry|undefined} The computed vertices and indices.
25047
24754
  *
25048
24755
  * @exception {DeveloperError} Rotated rectangle is invalid.
25049
24756
  */
@@ -25059,6 +24766,11 @@ define('Core/RectangleOutlineGeometry',[
25059
24766
  var geometry;
25060
24767
  var boundingSphere;
25061
24768
  rectangle = rectangleGeometry._rectangle;
24769
+
24770
+ if ((CesiumMath.equalsEpsilon(rectangle.north, rectangle.south, CesiumMath.EPSILON10) ||
24771
+ (CesiumMath.equalsEpsilon(rectangle.east, rectangle.west, CesiumMath.EPSILON10)))) {
24772
+ return undefined;
24773
+ }
25062
24774
  if (defined(extrudedHeight)) {
25063
24775
  geometry = constructExtrudedRectangle(options);
25064
24776
  var topBS = BoundingSphere.fromRectangle3D(rectangle, ellipsoid, surfaceHeight, topBoundingSphere);
@@ -25066,7 +24778,7 @@ define('Core/RectangleOutlineGeometry',[
25066
24778
  boundingSphere = BoundingSphere.union(topBS, bottomBS);
25067
24779
  } else {
25068
24780
  geometry = constructRectangle(options);
25069
- geometry = PolygonPipeline.scaleToGeodeticHeight(geometry, surfaceHeight, ellipsoid, false);
24781
+ geometry.attributes.position.values = PolygonPipeline.scaleToGeodeticHeight(geometry.attributes.position.values, surfaceHeight, ellipsoid, false);
25070
24782
  boundingSphere = BoundingSphere.fromRectangle3D(rectangle, ellipsoid, surfaceHeight);
25071
24783
  }
25072
24784
 
@@ -25092,7 +24804,7 @@ define('Workers/createRectangleOutlineGeometry',[
25092
24804
  Ellipsoid,
25093
24805
  Rectangle,
25094
24806
  RectangleOutlineGeometry) {
25095
- "use strict";
24807
+ 'use strict';
25096
24808
 
25097
24809
  function createRectangleOutlineGeometry(rectangleGeometry, offset) {
25098
24810
  if (defined(offset)) {