diff --git a/docs/Classes.html b/docs/Classes.html index 65a648b..30ef59f 100644 --- a/docs/Classes.html +++ b/docs/Classes.html @@ -17,19 +17,19 @@
-

MapCache 0.9.0 Docs (100% documented)

-

View on GitHub

-

+

MapCache 0.10.0 Docs (100% documented)

+

GitHubView on GitHub

+
-

+
@@ -545,11 +545,10 @@

Declaration

- diff --git a/docs/Classes/CachedTileOverlay.html b/docs/Classes/CachedTileOverlay.html index a07da75..a3ae374 100644 --- a/docs/Classes/CachedTileOverlay.html +++ b/docs/Classes/CachedTileOverlay.html @@ -17,19 +17,19 @@
-

MapCache 0.9.0 Docs (100% documented)

-

View on GitHub

-

+

MapCache 0.10.0 Docs (100% documented)

+

GitHubView on GitHub

+
-

+
@@ -385,9 +385,9 @@

Declaration

  • - + - shouldZoom(at:) + shouldZoom(at:)
    @@ -413,9 +413,9 @@

    Declaration

  • - + - tilesInMapRect(rect:scale:) + tilesInMapRect(rect:scale:)
    @@ -473,11 +473,10 @@

    Parameters

    - diff --git a/docs/Classes/CachedTileOverlayRenderer.html b/docs/Classes/CachedTileOverlayRenderer.html index 77f8ea1..dd30bd2 100644 --- a/docs/Classes/CachedTileOverlayRenderer.html +++ b/docs/Classes/CachedTileOverlayRenderer.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -313,11 +313,10 @@

    Parameters

    - diff --git a/docs/Classes/DiskCache.html b/docs/Classes/DiskCache.html index 012195a..3b03369 100644 --- a/docs/Classes/DiskCache.html +++ b/docs/Classes/DiskCache.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -814,7 +814,7 @@

    Declaration

    -

    Private

    +

    Private

    @@ -953,11 +953,10 @@

    Parameters

    - diff --git a/docs/Classes/HashBase.html b/docs/Classes/HashBase.html index f2a3890..dfdb4eb 100644 --- a/docs/Classes/HashBase.html +++ b/docs/Classes/HashBase.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -327,11 +327,10 @@

    Declaration

    - diff --git a/docs/Classes/MD5.html b/docs/Classes/MD5.html index 8f2191d..2efa249 100644 --- a/docs/Classes/MD5.html +++ b/docs/Classes/MD5.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -328,11 +328,10 @@

    Declaration

    - diff --git a/docs/Classes/MapCache.html b/docs/Classes/MapCache.html index 932adc2..3e9c1ae 100644 --- a/docs/Classes/MapCache.html +++ b/docs/Classes/MapCache.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -649,11 +649,10 @@

    Parameters

    - diff --git a/docs/Classes/RegionDownloader.html b/docs/Classes/RegionDownloader.html index 5655f9e..67e7172 100644 --- a/docs/Classes/RegionDownloader.html +++ b/docs/Classes/RegionDownloader.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -896,11 +896,10 @@

    Declaration

    - diff --git a/docs/Classes/TileCoords.html b/docs/Classes/TileCoords.html index 8412d16..162d084 100644 --- a/docs/Classes/TileCoords.html +++ b/docs/Classes/TileCoords.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -1151,11 +1151,10 @@

    Declaration

    - diff --git a/docs/Classes/TileCoordsRegion.html b/docs/Classes/TileCoordsRegion.html index b76b6fd..f21839a 100644 --- a/docs/Classes/TileCoordsRegion.html +++ b/docs/Classes/TileCoordsRegion.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -524,11 +524,10 @@

    Declaration

    - diff --git a/docs/Enums.html b/docs/Enums.html index 600da3c..4efb950 100644 --- a/docs/Enums.html +++ b/docs/Enums.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -385,11 +385,10 @@

    Declaration

    - diff --git a/docs/Enums/LatitudeError.html b/docs/Enums/LatitudeError.html index 7487cae..a7a2f7f 100644 --- a/docs/Enums/LatitudeError.html +++ b/docs/Enums/LatitudeError.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -272,11 +272,10 @@

    Declaration

    - diff --git a/docs/Enums/LoadTileMode.html b/docs/Enums/LoadTileMode.html index 339af9e..10424e3 100644 --- a/docs/Enums/LoadTileMode.html +++ b/docs/Enums/LoadTileMode.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -337,11 +337,10 @@

    Declaration

    - diff --git a/docs/Enums/LongitudeError.html b/docs/Enums/LongitudeError.html index 3e2e491..e2b2c9a 100644 --- a/docs/Enums/LongitudeError.html +++ b/docs/Enums/LongitudeError.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -272,11 +272,10 @@

    Declaration

    - diff --git a/docs/Enums/TileError.html b/docs/Enums/TileError.html index 5d37e92..97a631d 100644 --- a/docs/Enums/TileError.html +++ b/docs/Enums/TileError.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -245,11 +245,10 @@

    Declaration

    - diff --git a/docs/Enums/TileRangeError.html b/docs/Enums/TileRangeError.html index 1c45b92..fec142f 100644 --- a/docs/Enums/TileRangeError.html +++ b/docs/Enums/TileRangeError.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -245,11 +245,10 @@

    Declaration

    - diff --git a/docs/Enums/ZoomError.html b/docs/Enums/ZoomError.html index 45a0558..8d30adb 100644 --- a/docs/Enums/ZoomError.html +++ b/docs/Enums/ZoomError.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -245,11 +245,10 @@

    Declaration

    - diff --git a/docs/Extensions.html b/docs/Extensions.html index 997ab10..d7a8ca6 100644 --- a/docs/Extensions.html +++ b/docs/Extensions.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -441,11 +441,10 @@

    Declaration

    - diff --git a/docs/Extensions/FileManager.html b/docs/Extensions/FileManager.html index 601b006..9dff910 100644 --- a/docs/Extensions/FileManager.html +++ b/docs/Extensions/FileManager.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -369,11 +369,10 @@

    Declaration

    - diff --git a/docs/Extensions/FileManager/allocatedDiskSizeForDirectory(at:).html b/docs/Extensions/FileManager/allocatedDiskSizeForDirectory(at:).html index 6d0eebd..5c1b2ed 100644 --- a/docs/Extensions/FileManager/allocatedDiskSizeForDirectory(at:).html +++ b/docs/Extensions/FileManager/allocatedDiskSizeForDirectory(at:).html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -256,11 +256,10 @@

    Declaration

    - diff --git a/docs/Extensions/FileManager/fileSizeForDirectory(at:).html b/docs/Extensions/FileManager/fileSizeForDirectory(at:).html index 3062917..f640e26 100644 --- a/docs/Extensions/FileManager/fileSizeForDirectory(at:).html +++ b/docs/Extensions/FileManager/fileSizeForDirectory(at:).html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -245,11 +245,10 @@

    Declaration

    - diff --git a/docs/Extensions/Int.html b/docs/Extensions/Int.html index 03c41a8..d9f17e4 100644 --- a/docs/Extensions/Int.html +++ b/docs/Extensions/Int.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -245,11 +245,10 @@

    Declaration

    - diff --git a/docs/Extensions/MKMapView.html b/docs/Extensions/MKMapView.html index 2de3f7a..30e4bcd 100644 --- a/docs/Extensions/MKMapView.html +++ b/docs/Extensions/MKMapView.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -221,9 +221,9 @@

    MKMapView

  • - - - useCache(_:) + + + useCache(_:canReplaceMapContent:)
    @@ -244,7 +244,7 @@

    Declaration

    Swift

    @discardableResult
    -public func useCache(_ cache: MapCacheProtocol) -> CachedTileOverlay
    +public func useCache(_ cache: MapCacheProtocol, canReplaceMapContent: Bool = true) -> CachedTileOverlay
    @@ -264,6 +264,18 @@

    Parameters

    + + + + canReplaceMapContent + + + +
    +

    Does the overlay replace the default map? It can be used to add a tile layer with centain level of transparency.

    +
    + + @@ -336,11 +348,10 @@

    Declaration

    - diff --git a/docs/Extensions/MKTileOverlayPath.html b/docs/Extensions/MKTileOverlayPath.html index 218e54a..7e28d23 100644 --- a/docs/Extensions/MKTileOverlayPath.html +++ b/docs/Extensions/MKTileOverlayPath.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -291,11 +291,10 @@

    Declaration

    - diff --git a/docs/Extensions/MKZoomScale.html b/docs/Extensions/MKZoomScale.html index f1d09f4..2039118 100644 --- a/docs/Extensions/MKZoomScale.html +++ b/docs/Extensions/MKZoomScale.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -216,9 +216,9 @@

    MKZoomScale

  • - + - toZoomLevel(tileSize:) + toZoomLevel(tileSize:)
    @@ -268,11 +268,10 @@

    Return Value

    - diff --git a/docs/Extensions/NSMutableData.html b/docs/Extensions/NSMutableData.html index 1e1add8..70f6558 100644 --- a/docs/Extensions/NSMutableData.html +++ b/docs/Extensions/NSMutableData.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -245,11 +245,10 @@

    Declaration

    - diff --git a/docs/Extensions/String.html b/docs/Extensions/String.html index c589cd6..fb431a2 100644 --- a/docs/Extensions/String.html +++ b/docs/Extensions/String.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -301,11 +301,10 @@

    Declaration

    - diff --git a/docs/Extensions/URL.html b/docs/Extensions/URL.html index 951c647..b114a00 100644 --- a/docs/Extensions/URL.html +++ b/docs/Extensions/URL.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -272,11 +272,10 @@

    Declaration

    - diff --git a/docs/Functions.html b/docs/Functions.html index 129b70d..bdf6562 100644 --- a/docs/Functions.html +++ b/docs/Functions.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -346,11 +346,10 @@

    Declaration

    - diff --git a/docs/Protocols.html b/docs/Protocols.html index a5a4d12..913f0e5 100644 --- a/docs/Protocols.html +++ b/docs/Protocols.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -263,7 +263,7 @@

    Declaration

    Swift

    @objc
    -public protocol RegionDownloaderDelegate : AnyObject
    +public protocol RegionDownloaderDelegate
    @@ -275,11 +275,10 @@

    Declaration

    - diff --git a/docs/Protocols/MapCacheProtocol.html b/docs/Protocols/MapCacheProtocol.html index 900b43e..b10a70c 100644 --- a/docs/Protocols/MapCacheProtocol.html +++ b/docs/Protocols/MapCacheProtocol.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -313,11 +313,10 @@

    Declaration

    - diff --git a/docs/Protocols/RegionDownloaderDelegate.html b/docs/Protocols/RegionDownloaderDelegate.html index 781bdc7..5f39a35 100644 --- a/docs/Protocols/RegionDownloaderDelegate.html +++ b/docs/Protocols/RegionDownloaderDelegate.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -204,7 +204,7 @@

    RegionDownloaderDelegate

    @objc
    -public protocol RegionDownloaderDelegate : AnyObject
    +public protocol RegionDownloaderDelegate
    @@ -276,11 +276,10 @@

    Declaration

    - diff --git a/docs/Structs.html b/docs/Structs.html index bad3474..10a2554 100644 --- a/docs/Structs.html +++ b/docs/Structs.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -475,11 +475,10 @@

    Declaration

    - diff --git a/docs/Structs/BytesSequence.html b/docs/Structs/BytesSequence.html index 632e270..61fbd9e 100644 --- a/docs/Structs/BytesSequence.html +++ b/docs/Structs/BytesSequence.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -301,11 +301,10 @@

    Declaration

    - diff --git a/docs/Structs/Log.html b/docs/Structs/Log.html index fd3f4f6..bbf273b 100644 --- a/docs/Structs/Log.html +++ b/docs/Structs/Log.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -476,11 +476,10 @@

    Parameters

    - diff --git a/docs/Structs/Log/Level.html b/docs/Structs/Log/Level.html index f4940af..60612ec 100644 --- a/docs/Structs/Log/Level.html +++ b/docs/Structs/Log/Level.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -272,11 +272,10 @@

    Declaration

    - diff --git a/docs/Structs/MapCacheConfig.html b/docs/Structs/MapCacheConfig.html index 2425196..972ebab 100644 --- a/docs/Structs/MapCacheConfig.html +++ b/docs/Structs/MapCacheConfig.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -664,11 +664,10 @@

    Declaration

    - diff --git a/docs/Structs/TileRange.html b/docs/Structs/TileRange.html index 0369233..2e84dab 100644 --- a/docs/Structs/TileRange.html +++ b/docs/Structs/TileRange.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -537,11 +537,10 @@

    Declaration

    - diff --git a/docs/Structs/TileRangeIterator.html b/docs/Structs/TileRangeIterator.html index 3db439f..1e69bae 100644 --- a/docs/Structs/TileRangeIterator.html +++ b/docs/Structs/TileRangeIterator.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -421,11 +421,10 @@

    Return Value

    - diff --git a/docs/Structs/ZoomRange.html b/docs/Structs/ZoomRange.html index cc84f5a..c192d12 100644 --- a/docs/Structs/ZoomRange.html +++ b/docs/Structs/ZoomRange.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -430,11 +430,10 @@

    Declaration

    - diff --git a/docs/Structs/ZoomRangeIterator.html b/docs/Structs/ZoomRangeIterator.html index 7b52816..b58228c 100644 --- a/docs/Structs/ZoomRangeIterator.html +++ b/docs/Structs/ZoomRangeIterator.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -331,11 +331,10 @@

    Declaration

    - diff --git a/docs/Structs/ZoomableTile.html b/docs/Structs/ZoomableTile.html index 661ff0e..9d63143 100644 --- a/docs/Structs/ZoomableTile.html +++ b/docs/Structs/ZoomableTile.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -310,11 +310,10 @@

    Declaration

    - diff --git a/docs/Typealiases.html b/docs/Typealiases.html index 3796e19..48296ff 100644 --- a/docs/Typealiases.html +++ b/docs/Typealiases.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -277,11 +277,10 @@

    Declaration

    - diff --git a/docs/css/highlight.css b/docs/css/highlight.css index d0db0e1..c170357 100644 --- a/docs/css/highlight.css +++ b/docs/css/highlight.css @@ -1,200 +1,202 @@ +/*! Jazzy - https://github.com/realm/jazzy + * Copyright Realm Inc. + * SPDX-License-Identifier: MIT + */ /* Credit to https://gist.github.com/wataru420/2048287 */ -.highlight { - /* Comment */ - /* Error */ - /* Keyword */ - /* Operator */ - /* Comment.Multiline */ - /* Comment.Preproc */ - /* Comment.Single */ - /* Comment.Special */ - /* Generic.Deleted */ - /* Generic.Deleted.Specific */ - /* Generic.Emph */ - /* Generic.Error */ - /* Generic.Heading */ - /* Generic.Inserted */ - /* Generic.Inserted.Specific */ - /* Generic.Output */ - /* Generic.Prompt */ - /* Generic.Strong */ - /* Generic.Subheading */ - /* Generic.Traceback */ - /* Keyword.Constant */ - /* Keyword.Declaration */ - /* Keyword.Pseudo */ - /* Keyword.Reserved */ - /* Keyword.Type */ - /* Literal.Number */ - /* Literal.String */ - /* Name.Attribute */ - /* Name.Builtin */ - /* Name.Class */ - /* Name.Constant */ - /* Name.Entity */ - /* Name.Exception */ - /* Name.Function */ - /* Name.Namespace */ - /* Name.Tag */ - /* Name.Variable */ - /* Operator.Word */ - /* Text.Whitespace */ - /* Literal.Number.Float */ - /* Literal.Number.Hex */ - /* Literal.Number.Integer */ - /* Literal.Number.Oct */ - /* Literal.String.Backtick */ - /* Literal.String.Char */ - /* Literal.String.Doc */ - /* Literal.String.Double */ - /* Literal.String.Escape */ - /* Literal.String.Heredoc */ - /* Literal.String.Interpol */ - /* Literal.String.Other */ - /* Literal.String.Regex */ - /* Literal.String.Single */ - /* Literal.String.Symbol */ - /* Name.Builtin.Pseudo */ - /* Name.Variable.Class */ - /* Name.Variable.Global */ - /* Name.Variable.Instance */ - /* Literal.Number.Integer.Long */ } - .highlight .c { - color: #999988; - font-style: italic; } - .highlight .err { - color: #a61717; - background-color: #e3d2d2; } - .highlight .k { - color: #000000; - font-weight: bold; } - .highlight .o { - color: #000000; - font-weight: bold; } - .highlight .cm { - color: #999988; - font-style: italic; } - .highlight .cp { - color: #999999; - font-weight: bold; } - .highlight .c1 { - color: #999988; - font-style: italic; } - .highlight .cs { - color: #999999; - font-weight: bold; - font-style: italic; } - .highlight .gd { - color: #000000; - background-color: #ffdddd; } - .highlight .gd .x { - color: #000000; - background-color: #ffaaaa; } - .highlight .ge { - color: #000000; - font-style: italic; } - .highlight .gr { - color: #aa0000; } - .highlight .gh { - color: #999999; } - .highlight .gi { - color: #000000; - background-color: #ddffdd; } - .highlight .gi .x { - color: #000000; - background-color: #aaffaa; } - .highlight .go { - color: #888888; } - .highlight .gp { - color: #555555; } - .highlight .gs { - font-weight: bold; } - .highlight .gu { - color: #aaaaaa; } - .highlight .gt { - color: #aa0000; } - .highlight .kc { - color: #000000; - font-weight: bold; } - .highlight .kd { - color: #000000; - font-weight: bold; } - .highlight .kp { - color: #000000; - font-weight: bold; } - .highlight .kr { - color: #000000; - font-weight: bold; } - .highlight .kt { - color: #445588; } - .highlight .m { - color: #009999; } - .highlight .s { - color: #d14; } - .highlight .na { - color: #008080; } - .highlight .nb { - color: #0086B3; } - .highlight .nc { - color: #445588; - font-weight: bold; } - .highlight .no { - color: #008080; } - .highlight .ni { - color: #800080; } - .highlight .ne { - color: #990000; - font-weight: bold; } - .highlight .nf { - color: #990000; } - .highlight .nn { - color: #555555; } - .highlight .nt { - color: #000080; } - .highlight .nv { - color: #008080; } - .highlight .ow { - color: #000000; - font-weight: bold; } - .highlight .w { - color: #bbbbbb; } - .highlight .mf { - color: #009999; } - .highlight .mh { - color: #009999; } - .highlight .mi { - color: #009999; } - .highlight .mo { - color: #009999; } - .highlight .sb { - color: #d14; } - .highlight .sc { - color: #d14; } - .highlight .sd { - color: #d14; } - .highlight .s2 { - color: #d14; } - .highlight .se { - color: #d14; } - .highlight .sh { - color: #d14; } - .highlight .si { - color: #d14; } - .highlight .sx { - color: #d14; } - .highlight .sr { - color: #009926; } - .highlight .s1 { - color: #d14; } - .highlight .ss { - color: #990073; } - .highlight .bp { - color: #999999; } - .highlight .vc { - color: #008080; } - .highlight .vg { - color: #008080; } - .highlight .vi { - color: #008080; } - .highlight .il { - color: #009999; } +.highlight .c { + color: #999988; + font-style: italic; } + +.highlight .err { + color: #a61717; + background-color: #e3d2d2; } + +.highlight .k { + color: #000000; + font-weight: bold; } + +.highlight .o { + color: #000000; + font-weight: bold; } + +.highlight .cm { + color: #999988; + font-style: italic; } + +.highlight .cp { + color: #999999; + font-weight: bold; } + +.highlight .c1 { + color: #999988; + font-style: italic; } + +.highlight .cs { + color: #999999; + font-weight: bold; + font-style: italic; } + +.highlight .gd { + color: #000000; + background-color: #ffdddd; } + +.highlight .gd .x { + color: #000000; + background-color: #ffaaaa; } + +.highlight .ge { + color: #000000; + font-style: italic; } + +.highlight .gr { + color: #aa0000; } + +.highlight .gh { + color: #999999; } + +.highlight .gi { + color: #000000; + background-color: #ddffdd; } + +.highlight .gi .x { + color: #000000; + background-color: #aaffaa; } + +.highlight .go { + color: #888888; } + +.highlight .gp { + color: #555555; } + +.highlight .gs { + font-weight: bold; } + +.highlight .gu { + color: #aaaaaa; } + +.highlight .gt { + color: #aa0000; } + +.highlight .kc { + color: #000000; + font-weight: bold; } + +.highlight .kd { + color: #000000; + font-weight: bold; } + +.highlight .kp { + color: #000000; + font-weight: bold; } + +.highlight .kr { + color: #000000; + font-weight: bold; } + +.highlight .kt { + color: #445588; } + +.highlight .m { + color: #009999; } + +.highlight .s { + color: #d14; } + +.highlight .na { + color: #008080; } + +.highlight .nb { + color: #0086B3; } + +.highlight .nc { + color: #445588; + font-weight: bold; } + +.highlight .no { + color: #008080; } + +.highlight .ni { + color: #800080; } + +.highlight .ne { + color: #990000; + font-weight: bold; } + +.highlight .nf { + color: #990000; } + +.highlight .nn { + color: #555555; } + +.highlight .nt { + color: #000080; } + +.highlight .nv { + color: #008080; } + +.highlight .ow { + color: #000000; + font-weight: bold; } + +.highlight .w { + color: #bbbbbb; } + +.highlight .mf { + color: #009999; } + +.highlight .mh { + color: #009999; } + +.highlight .mi { + color: #009999; } + +.highlight .mo { + color: #009999; } + +.highlight .sb { + color: #d14; } + +.highlight .sc { + color: #d14; } + +.highlight .sd { + color: #d14; } + +.highlight .s2 { + color: #d14; } + +.highlight .se { + color: #d14; } + +.highlight .sh { + color: #d14; } + +.highlight .si { + color: #d14; } + +.highlight .sx { + color: #d14; } + +.highlight .sr { + color: #009926; } + +.highlight .s1 { + color: #d14; } + +.highlight .ss { + color: #990073; } + +.highlight .bp { + color: #999999; } + +.highlight .vc { + color: #008080; } + +.highlight .vg { + color: #008080; } + +.highlight .vi { + color: #008080; } + +.highlight .il { + color: #009999; } diff --git a/docs/css/jazzy.css b/docs/css/jazzy.css index 5cdffe9..2e38713 100644 --- a/docs/css/jazzy.css +++ b/docs/css/jazzy.css @@ -1,3 +1,7 @@ +/*! Jazzy - https://github.com/realm/jazzy + * Copyright Realm Inc. + * SPDX-License-Identifier: MIT + */ html, body, div, span, h1, h3, h4, p, a, code, em, img, ul, li, table, tbody, tr, td { background: transparent; border: 0; @@ -79,6 +83,18 @@ blockquote { padding: 0 10px; border-left: 4px solid #ccc; } +hr { + height: 1px; + border: none; + background-color: #e2e2e2; } + +.footnote-ref { + display: inline-block; + scroll-margin-top: 70px; } + +.footnote-def { + scroll-margin-top: 70px; } + .content-wrapper { margin: 0 auto; width: 980px; } @@ -92,7 +108,7 @@ header { z-index: 3; } header img { padding-right: 6px; - vertical-align: -4px; + vertical-align: -3px; height: 16px; } header a { color: #fff; } diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Classes.html b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Classes.html index 65a648b..30ef59f 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Classes.html +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Classes.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -545,11 +545,10 @@

    Declaration

    - diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Classes/CachedTileOverlay.html b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Classes/CachedTileOverlay.html index a07da75..a3ae374 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Classes/CachedTileOverlay.html +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Classes/CachedTileOverlay.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -385,9 +385,9 @@

    Declaration

  • - + - shouldZoom(at:) + shouldZoom(at:)
    @@ -413,9 +413,9 @@

    Declaration

  • - + - tilesInMapRect(rect:scale:) + tilesInMapRect(rect:scale:)
    @@ -473,11 +473,10 @@

    Parameters

    - diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Classes/CachedTileOverlayRenderer.html b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Classes/CachedTileOverlayRenderer.html index 77f8ea1..dd30bd2 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Classes/CachedTileOverlayRenderer.html +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Classes/CachedTileOverlayRenderer.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -313,11 +313,10 @@

    Parameters

    - diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Classes/DiskCache.html b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Classes/DiskCache.html index 012195a..3b03369 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Classes/DiskCache.html +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Classes/DiskCache.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -814,7 +814,7 @@

    Declaration

    -

    Private

    +

    Private

    @@ -953,11 +953,10 @@

    Parameters

    - diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Classes/HashBase.html b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Classes/HashBase.html index f2a3890..dfdb4eb 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Classes/HashBase.html +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Classes/HashBase.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -327,11 +327,10 @@

    Declaration

    - diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Classes/MD5.html b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Classes/MD5.html index 8f2191d..2efa249 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Classes/MD5.html +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Classes/MD5.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -328,11 +328,10 @@

    Declaration

    - diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Classes/MapCache.html b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Classes/MapCache.html index 932adc2..3e9c1ae 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Classes/MapCache.html +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Classes/MapCache.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -649,11 +649,10 @@

    Parameters

    - diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Classes/RegionDownloader.html b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Classes/RegionDownloader.html index 5655f9e..67e7172 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Classes/RegionDownloader.html +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Classes/RegionDownloader.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -896,11 +896,10 @@

    Declaration

    - diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Classes/TileCoords.html b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Classes/TileCoords.html index 8412d16..162d084 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Classes/TileCoords.html +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Classes/TileCoords.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -1151,11 +1151,10 @@

    Declaration

    - diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Classes/TileCoordsRegion.html b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Classes/TileCoordsRegion.html index b76b6fd..f21839a 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Classes/TileCoordsRegion.html +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Classes/TileCoordsRegion.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -524,11 +524,10 @@

    Declaration

    - diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Enums.html b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Enums.html index 600da3c..4efb950 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Enums.html +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Enums.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -385,11 +385,10 @@

    Declaration

    - diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Enums/LatitudeError.html b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Enums/LatitudeError.html index 7487cae..a7a2f7f 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Enums/LatitudeError.html +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Enums/LatitudeError.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -272,11 +272,10 @@

    Declaration

    - diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Enums/LoadTileMode.html b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Enums/LoadTileMode.html index 339af9e..10424e3 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Enums/LoadTileMode.html +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Enums/LoadTileMode.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -337,11 +337,10 @@

    Declaration

    - diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Enums/LongitudeError.html b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Enums/LongitudeError.html index 3e2e491..e2b2c9a 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Enums/LongitudeError.html +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Enums/LongitudeError.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -272,11 +272,10 @@

    Declaration

    - diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Enums/TileError.html b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Enums/TileError.html index 5d37e92..97a631d 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Enums/TileError.html +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Enums/TileError.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -245,11 +245,10 @@

    Declaration

    - diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Enums/TileRangeError.html b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Enums/TileRangeError.html index 1c45b92..fec142f 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Enums/TileRangeError.html +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Enums/TileRangeError.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -245,11 +245,10 @@

    Declaration

    - diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Enums/ZoomError.html b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Enums/ZoomError.html index 45a0558..8d30adb 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Enums/ZoomError.html +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Enums/ZoomError.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -245,11 +245,10 @@

    Declaration

    - diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Extensions.html b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Extensions.html index 997ab10..d7a8ca6 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Extensions.html +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Extensions.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -441,11 +441,10 @@

    Declaration

    - diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Extensions/FileManager.html b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Extensions/FileManager.html index 601b006..9dff910 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Extensions/FileManager.html +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Extensions/FileManager.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -369,11 +369,10 @@

    Declaration

    - diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Extensions/FileManager/allocatedDiskSizeForDirectory(at:).html b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Extensions/FileManager/allocatedDiskSizeForDirectory(at:).html index 6d0eebd..5c1b2ed 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Extensions/FileManager/allocatedDiskSizeForDirectory(at:).html +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Extensions/FileManager/allocatedDiskSizeForDirectory(at:).html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -256,11 +256,10 @@

    Declaration

    - diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Extensions/FileManager/fileSizeForDirectory(at:).html b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Extensions/FileManager/fileSizeForDirectory(at:).html index 3062917..f640e26 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Extensions/FileManager/fileSizeForDirectory(at:).html +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Extensions/FileManager/fileSizeForDirectory(at:).html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -245,11 +245,10 @@

    Declaration

    - diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Extensions/Int.html b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Extensions/Int.html index 03c41a8..d9f17e4 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Extensions/Int.html +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Extensions/Int.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -245,11 +245,10 @@

    Declaration

    - diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Extensions/MKMapView.html b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Extensions/MKMapView.html index 2de3f7a..30e4bcd 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Extensions/MKMapView.html +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Extensions/MKMapView.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -221,9 +221,9 @@

    MKMapView

  • - - - useCache(_:) + + + useCache(_:canReplaceMapContent:)
    @@ -244,7 +244,7 @@

    Declaration

    Swift

    @discardableResult
    -public func useCache(_ cache: MapCacheProtocol) -> CachedTileOverlay
    +public func useCache(_ cache: MapCacheProtocol, canReplaceMapContent: Bool = true) -> CachedTileOverlay
    @@ -264,6 +264,18 @@

    Parameters

    + + + + canReplaceMapContent + + + +
    +

    Does the overlay replace the default map? It can be used to add a tile layer with centain level of transparency.

    +
    + + @@ -336,11 +348,10 @@

    Declaration

    - diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Extensions/MKTileOverlayPath.html b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Extensions/MKTileOverlayPath.html index 218e54a..7e28d23 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Extensions/MKTileOverlayPath.html +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Extensions/MKTileOverlayPath.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -291,11 +291,10 @@

    Declaration

    - diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Extensions/MKZoomScale.html b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Extensions/MKZoomScale.html index f1d09f4..2039118 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Extensions/MKZoomScale.html +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Extensions/MKZoomScale.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -216,9 +216,9 @@

    MKZoomScale

  • - + - toZoomLevel(tileSize:) + toZoomLevel(tileSize:)
    @@ -268,11 +268,10 @@

    Return Value

    - diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Extensions/NSMutableData.html b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Extensions/NSMutableData.html index 1e1add8..70f6558 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Extensions/NSMutableData.html +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Extensions/NSMutableData.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -245,11 +245,10 @@

    Declaration

    - diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Extensions/String.html b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Extensions/String.html index c589cd6..fb431a2 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Extensions/String.html +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Extensions/String.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -301,11 +301,10 @@

    Declaration

    - diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Extensions/URL.html b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Extensions/URL.html index 951c647..b114a00 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Extensions/URL.html +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Extensions/URL.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -272,11 +272,10 @@

    Declaration

    - diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Functions.html b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Functions.html index 129b70d..bdf6562 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Functions.html +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Functions.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -346,11 +346,10 @@

    Declaration

    - diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Protocols.html b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Protocols.html index a5a4d12..913f0e5 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Protocols.html +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Protocols.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -263,7 +263,7 @@

    Declaration

    Swift

    @objc
    -public protocol RegionDownloaderDelegate : AnyObject
    +public protocol RegionDownloaderDelegate
    @@ -275,11 +275,10 @@

    Declaration

    - diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Protocols/MapCacheProtocol.html b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Protocols/MapCacheProtocol.html index 900b43e..b10a70c 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Protocols/MapCacheProtocol.html +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Protocols/MapCacheProtocol.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -313,11 +313,10 @@

    Declaration

    - diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Protocols/RegionDownloaderDelegate.html b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Protocols/RegionDownloaderDelegate.html index 781bdc7..5f39a35 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Protocols/RegionDownloaderDelegate.html +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Protocols/RegionDownloaderDelegate.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -204,7 +204,7 @@

    RegionDownloaderDelegate

    @objc
    -public protocol RegionDownloaderDelegate : AnyObject
    +public protocol RegionDownloaderDelegate
    @@ -276,11 +276,10 @@

    Declaration

    - diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Structs.html b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Structs.html index bad3474..10a2554 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Structs.html +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Structs.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -475,11 +475,10 @@

    Declaration

    - diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Structs/BytesSequence.html b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Structs/BytesSequence.html index 632e270..61fbd9e 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Structs/BytesSequence.html +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Structs/BytesSequence.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -301,11 +301,10 @@

    Declaration

    - diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Structs/Log.html b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Structs/Log.html index fd3f4f6..bbf273b 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Structs/Log.html +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Structs/Log.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -476,11 +476,10 @@

    Parameters

    - diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Structs/Log/Level.html b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Structs/Log/Level.html index f4940af..60612ec 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Structs/Log/Level.html +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Structs/Log/Level.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -272,11 +272,10 @@

    Declaration

    - diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Structs/MapCacheConfig.html b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Structs/MapCacheConfig.html index 2425196..972ebab 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Structs/MapCacheConfig.html +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Structs/MapCacheConfig.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -664,11 +664,10 @@

    Declaration

    - diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Structs/TileRange.html b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Structs/TileRange.html index 0369233..2e84dab 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Structs/TileRange.html +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Structs/TileRange.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -537,11 +537,10 @@

    Declaration

    - diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Structs/TileRangeIterator.html b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Structs/TileRangeIterator.html index 3db439f..1e69bae 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Structs/TileRangeIterator.html +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Structs/TileRangeIterator.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -421,11 +421,10 @@

    Return Value

    - diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Structs/ZoomRange.html b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Structs/ZoomRange.html index cc84f5a..c192d12 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Structs/ZoomRange.html +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Structs/ZoomRange.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -430,11 +430,10 @@

    Declaration

    - diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Structs/ZoomRangeIterator.html b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Structs/ZoomRangeIterator.html index 7b52816..b58228c 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Structs/ZoomRangeIterator.html +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Structs/ZoomRangeIterator.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -331,11 +331,10 @@

    Declaration

    - diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Structs/ZoomableTile.html b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Structs/ZoomableTile.html index 661ff0e..9d63143 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Structs/ZoomableTile.html +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Structs/ZoomableTile.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -310,11 +310,10 @@

    Declaration

    - diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Typealiases.html b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Typealiases.html index 3796e19..48296ff 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/Typealiases.html +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/Typealiases.html @@ -17,19 +17,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -277,11 +277,10 @@

    Declaration

    - diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/css/highlight.css b/docs/docsets/MapCache.docset/Contents/Resources/Documents/css/highlight.css index d0db0e1..c170357 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/css/highlight.css +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/css/highlight.css @@ -1,200 +1,202 @@ +/*! Jazzy - https://github.com/realm/jazzy + * Copyright Realm Inc. + * SPDX-License-Identifier: MIT + */ /* Credit to https://gist.github.com/wataru420/2048287 */ -.highlight { - /* Comment */ - /* Error */ - /* Keyword */ - /* Operator */ - /* Comment.Multiline */ - /* Comment.Preproc */ - /* Comment.Single */ - /* Comment.Special */ - /* Generic.Deleted */ - /* Generic.Deleted.Specific */ - /* Generic.Emph */ - /* Generic.Error */ - /* Generic.Heading */ - /* Generic.Inserted */ - /* Generic.Inserted.Specific */ - /* Generic.Output */ - /* Generic.Prompt */ - /* Generic.Strong */ - /* Generic.Subheading */ - /* Generic.Traceback */ - /* Keyword.Constant */ - /* Keyword.Declaration */ - /* Keyword.Pseudo */ - /* Keyword.Reserved */ - /* Keyword.Type */ - /* Literal.Number */ - /* Literal.String */ - /* Name.Attribute */ - /* Name.Builtin */ - /* Name.Class */ - /* Name.Constant */ - /* Name.Entity */ - /* Name.Exception */ - /* Name.Function */ - /* Name.Namespace */ - /* Name.Tag */ - /* Name.Variable */ - /* Operator.Word */ - /* Text.Whitespace */ - /* Literal.Number.Float */ - /* Literal.Number.Hex */ - /* Literal.Number.Integer */ - /* Literal.Number.Oct */ - /* Literal.String.Backtick */ - /* Literal.String.Char */ - /* Literal.String.Doc */ - /* Literal.String.Double */ - /* Literal.String.Escape */ - /* Literal.String.Heredoc */ - /* Literal.String.Interpol */ - /* Literal.String.Other */ - /* Literal.String.Regex */ - /* Literal.String.Single */ - /* Literal.String.Symbol */ - /* Name.Builtin.Pseudo */ - /* Name.Variable.Class */ - /* Name.Variable.Global */ - /* Name.Variable.Instance */ - /* Literal.Number.Integer.Long */ } - .highlight .c { - color: #999988; - font-style: italic; } - .highlight .err { - color: #a61717; - background-color: #e3d2d2; } - .highlight .k { - color: #000000; - font-weight: bold; } - .highlight .o { - color: #000000; - font-weight: bold; } - .highlight .cm { - color: #999988; - font-style: italic; } - .highlight .cp { - color: #999999; - font-weight: bold; } - .highlight .c1 { - color: #999988; - font-style: italic; } - .highlight .cs { - color: #999999; - font-weight: bold; - font-style: italic; } - .highlight .gd { - color: #000000; - background-color: #ffdddd; } - .highlight .gd .x { - color: #000000; - background-color: #ffaaaa; } - .highlight .ge { - color: #000000; - font-style: italic; } - .highlight .gr { - color: #aa0000; } - .highlight .gh { - color: #999999; } - .highlight .gi { - color: #000000; - background-color: #ddffdd; } - .highlight .gi .x { - color: #000000; - background-color: #aaffaa; } - .highlight .go { - color: #888888; } - .highlight .gp { - color: #555555; } - .highlight .gs { - font-weight: bold; } - .highlight .gu { - color: #aaaaaa; } - .highlight .gt { - color: #aa0000; } - .highlight .kc { - color: #000000; - font-weight: bold; } - .highlight .kd { - color: #000000; - font-weight: bold; } - .highlight .kp { - color: #000000; - font-weight: bold; } - .highlight .kr { - color: #000000; - font-weight: bold; } - .highlight .kt { - color: #445588; } - .highlight .m { - color: #009999; } - .highlight .s { - color: #d14; } - .highlight .na { - color: #008080; } - .highlight .nb { - color: #0086B3; } - .highlight .nc { - color: #445588; - font-weight: bold; } - .highlight .no { - color: #008080; } - .highlight .ni { - color: #800080; } - .highlight .ne { - color: #990000; - font-weight: bold; } - .highlight .nf { - color: #990000; } - .highlight .nn { - color: #555555; } - .highlight .nt { - color: #000080; } - .highlight .nv { - color: #008080; } - .highlight .ow { - color: #000000; - font-weight: bold; } - .highlight .w { - color: #bbbbbb; } - .highlight .mf { - color: #009999; } - .highlight .mh { - color: #009999; } - .highlight .mi { - color: #009999; } - .highlight .mo { - color: #009999; } - .highlight .sb { - color: #d14; } - .highlight .sc { - color: #d14; } - .highlight .sd { - color: #d14; } - .highlight .s2 { - color: #d14; } - .highlight .se { - color: #d14; } - .highlight .sh { - color: #d14; } - .highlight .si { - color: #d14; } - .highlight .sx { - color: #d14; } - .highlight .sr { - color: #009926; } - .highlight .s1 { - color: #d14; } - .highlight .ss { - color: #990073; } - .highlight .bp { - color: #999999; } - .highlight .vc { - color: #008080; } - .highlight .vg { - color: #008080; } - .highlight .vi { - color: #008080; } - .highlight .il { - color: #009999; } +.highlight .c { + color: #999988; + font-style: italic; } + +.highlight .err { + color: #a61717; + background-color: #e3d2d2; } + +.highlight .k { + color: #000000; + font-weight: bold; } + +.highlight .o { + color: #000000; + font-weight: bold; } + +.highlight .cm { + color: #999988; + font-style: italic; } + +.highlight .cp { + color: #999999; + font-weight: bold; } + +.highlight .c1 { + color: #999988; + font-style: italic; } + +.highlight .cs { + color: #999999; + font-weight: bold; + font-style: italic; } + +.highlight .gd { + color: #000000; + background-color: #ffdddd; } + +.highlight .gd .x { + color: #000000; + background-color: #ffaaaa; } + +.highlight .ge { + color: #000000; + font-style: italic; } + +.highlight .gr { + color: #aa0000; } + +.highlight .gh { + color: #999999; } + +.highlight .gi { + color: #000000; + background-color: #ddffdd; } + +.highlight .gi .x { + color: #000000; + background-color: #aaffaa; } + +.highlight .go { + color: #888888; } + +.highlight .gp { + color: #555555; } + +.highlight .gs { + font-weight: bold; } + +.highlight .gu { + color: #aaaaaa; } + +.highlight .gt { + color: #aa0000; } + +.highlight .kc { + color: #000000; + font-weight: bold; } + +.highlight .kd { + color: #000000; + font-weight: bold; } + +.highlight .kp { + color: #000000; + font-weight: bold; } + +.highlight .kr { + color: #000000; + font-weight: bold; } + +.highlight .kt { + color: #445588; } + +.highlight .m { + color: #009999; } + +.highlight .s { + color: #d14; } + +.highlight .na { + color: #008080; } + +.highlight .nb { + color: #0086B3; } + +.highlight .nc { + color: #445588; + font-weight: bold; } + +.highlight .no { + color: #008080; } + +.highlight .ni { + color: #800080; } + +.highlight .ne { + color: #990000; + font-weight: bold; } + +.highlight .nf { + color: #990000; } + +.highlight .nn { + color: #555555; } + +.highlight .nt { + color: #000080; } + +.highlight .nv { + color: #008080; } + +.highlight .ow { + color: #000000; + font-weight: bold; } + +.highlight .w { + color: #bbbbbb; } + +.highlight .mf { + color: #009999; } + +.highlight .mh { + color: #009999; } + +.highlight .mi { + color: #009999; } + +.highlight .mo { + color: #009999; } + +.highlight .sb { + color: #d14; } + +.highlight .sc { + color: #d14; } + +.highlight .sd { + color: #d14; } + +.highlight .s2 { + color: #d14; } + +.highlight .se { + color: #d14; } + +.highlight .sh { + color: #d14; } + +.highlight .si { + color: #d14; } + +.highlight .sx { + color: #d14; } + +.highlight .sr { + color: #009926; } + +.highlight .s1 { + color: #d14; } + +.highlight .ss { + color: #990073; } + +.highlight .bp { + color: #999999; } + +.highlight .vc { + color: #008080; } + +.highlight .vg { + color: #008080; } + +.highlight .vi { + color: #008080; } + +.highlight .il { + color: #009999; } diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/css/jazzy.css b/docs/docsets/MapCache.docset/Contents/Resources/Documents/css/jazzy.css index 5cdffe9..2e38713 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/css/jazzy.css +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/css/jazzy.css @@ -1,3 +1,7 @@ +/*! Jazzy - https://github.com/realm/jazzy + * Copyright Realm Inc. + * SPDX-License-Identifier: MIT + */ html, body, div, span, h1, h3, h4, p, a, code, em, img, ul, li, table, tbody, tr, td { background: transparent; border: 0; @@ -79,6 +83,18 @@ blockquote { padding: 0 10px; border-left: 4px solid #ccc; } +hr { + height: 1px; + border: none; + background-color: #e2e2e2; } + +.footnote-ref { + display: inline-block; + scroll-margin-top: 70px; } + +.footnote-def { + scroll-margin-top: 70px; } + .content-wrapper { margin: 0 auto; width: 980px; } @@ -92,7 +108,7 @@ header { z-index: 3; } header img { padding-right: 6px; - vertical-align: -4px; + vertical-align: -3px; height: 16px; } header a { color: #fff; } diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/index.html b/docs/docsets/MapCache.docset/Contents/Resources/Documents/index.html index 8141d2e..d61ff91 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/index.html +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/index.html @@ -16,19 +16,19 @@
    -

    MapCache 0.9.0 Docs (100% documented)

    -

    View on GitHub

    -

    +

    MapCache 0.10.0 Docs (100% documented)

    +

    GitHubView on GitHub

    +
    -

    +
    @@ -233,17 +233,21 @@

    MapCache Swift

    Installation

    -

    MapCache is available through CocoaPods. To install -it, simply add the following line to your Podfile:

    -
    pod 'MapCache'
    +

    MapCache is available through CocoaPods. To install it, simply add the following line to your Podfile:

    +
    #Podfile
    +pod 'MapCache'
    +
    + +

    Then in the folder where you have the Podfile run the command

    +
    pod install
     

    How to use MapCache?

    -

    In the view controller where you have the MKMapView import MapCache

    +

    In the view controller where you have a MKMapView, import MapCache:

    import MapCache
     
    -

    Then within the ViewController add

    +

    Then, within the ViewController add:

    // ViewController.swift
     class ViewController: UIViewController {
       @IBOutlet weak var map: MKMapView!
    @@ -251,11 +255,11 @@ 

    How to use MapCache?

    override func viewDidLoad() { super.viewDidLoad() - ... + //... map.delegate = self - ... + //... // First setup the config of our cache. // The only thing we must provide is the url template of the tile server. @@ -270,11 +274,11 @@

    How to use MapCache?

    // cache map.useCache(mapCache) - ... + //... }
    -

    Finally, tell the map delegate to use mapCacheRenderer

    +

    Finally, tell the map delegate to use mapCacheRenderer:

    //ViewController.swift
     
     // Assuming that ViewController is the delegate of the map
    @@ -287,12 +291,12 @@ 

    How to use MapCache?

    -

    After setting up map cache browsed areas of the map will be kept on disk. If user browses again that area it will use the local version.

    +

    After setting up the map cache, browsed areas of the map will be kept on disk. If the user browses again, that area it will use the local version.

    -

    Note that in current version cache has not expiration date so if you need to get an updated version of the tiles you must call clear() which will wipe out the whole cache.

    +

    Note that in the current version, the cache does not support expiration dates, so if you need to get an updated version of the tiles you must call clear() which will wipe out the whole cache.

    mapCache.clear() {
    -  // do something after clear
    -  print("cache cleared!")
    +    // do something after clear
    +    print("cache cleared!")
     }
     
    @@ -302,10 +306,10 @@

    How to use MapCache?

    You can take a look at the Example/ folder to see a complete implementation.

    -

    A Reference documentation is also available.

    +

    Reference documentation is also available.

    MapCache configuration

    -

    Config map cache is pretty straight forward, typically you will need to set only urlTemplate and probably the subdomains.

    +

    Configurating the map cache is pretty straight forward. Typically, you will only need to set urlTemplate and, optionally, the subdomains.

    These are the options:

    var config = MapCacheConfig()
    @@ -350,25 +354,25 @@ 

    MapCache configuration

    -

    If you need to use MapCache in different controllers, to avoid issues just be sure to use the same values in the config.

    +

    If you need to use MapCache in different controllers, be sure to use the same values in the config to avoid issues.

    How does MapCache work behind the scenes

    -

    If you need to build on something top of MapCache read this. If not, you can ignore

    +

    If you need to build something on top of MapCache, read the following.

    -

    MapCache is a hack of MapKit, the map framework of Apple.

    +

    MapCache is a hack of MapKit, the map framework from Apple, used on their iOS, macOS, tvOS, and watchOS platforms.

    Understanding MapCache bootstrap

    -

    As explained in How to use MapCache? section, in order to bootstrap MapCache we have to call this method

    +

    As explained in How to use MapCache? section, in order to bootstrap MapCache, we have to call this method:

    map.useCache(mapCache)
     
    -

    Where map is an instance of MKMapView, the main class used to display a map in iOS. What MapCache does through the extension (MKMapView+MapCache) is to add a new method useCache that tells MKMapView to display in the map a new tile layer on top of the default layers. Because of this while the tiles are loaded you may see the names of the default Apple Maps.

    +

    Where map is an instance of MKMapView, the main class used to display a map with MapKit. What MapCache does through the MKMapView+MapCache extension is to add a new method useCache that tells MKMapView to display a new tile layer on top of the default layers. Because of this, while the tiles are loaded you may see the tiles of the default Apple Maps.

    This extension also adds a variable in the MKMapView to keep the cache config.

    -

    A layer in the map is called overlay in the MapKit terminology. MapCache uses tile based overlay. implemented in the class CachedTileOverlay which is a subclass of MKTileOverlay.

    +

    A layer in the map is called overlay in MapKit terminology. MapCache uses tile based overlay implemented in the class CachedTileOverlay, which is a subclass of MKTileOverlay.

    -

    Overlays, have associated renderers that are the actual classes that draw the content of an overlay in the screen. For example, there are rendererers for points, lines, polygons, and tiles. When MapView needs to display an overlay it calls the delegate with the overlay it is going to render and you need to provide the renderer to use. In order to do that, We added a method mapCacheRenderer that just returns the default MKTileOverlayRenderer when the class of the overlay passed as argument is of the type CachedTileOverlay. That is why we need to add this code on the application in the delegate of the map view (MKMapViewDelegate) :

    +

    Overlays have associated renderers that are the actual classes that draw the content of an overlay on the screen. For example, there are rendererers for points, lines, polygons, and tiles. When MapView needs to display an overlay, it calls the delegate with the overlay it is going to render and you need to provide the renderer to use. In order to do that, We added a mapCacheRenderer method that returns the default MKTileOverlayRenderer when the class of the overlay passed as the argument is of the type CachedTileOverlay. That is why we need to add this code on the application in the delegate of the map view (MKMapViewDelegate) :

    extension ViewController : MKMapViewDelegate {
         func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
             return mapView.mapCacheRenderer(forOverlay: overlay)
    @@ -377,35 +381,59 @@ 

    Understanding MapCache

    CachedTileOverlay and MapCacheProtocol

    -

    As mentioned earlier, CachedTileOverlay is tile based layer that is implemented as a subclass of MKTileOverlay. Basically, the only thing that it does is to override two methods of the parent class:

    +

    As mentioned earlier, CachedTileOverlay is a tile based layer that is implemented as a subclass of MKTileOverlay. Basically, the only thing that it does is to override two methods of the parent class:

    1. func url(forTilePath path: MKTileOverlayPath) -> URL. The goal of this method is to return the URL of the tile. We need to overwrite it to be able to use the tile server of our preference.

    2. func loadTile(at path: MKTileOverlayPath, result: @escaping (Data?, Error?) -> Void). This method is the one that returns the actual Tile.

    -

    If you take a look to the implementation of CachedTileOverlay you will notice that it only forwards the request a method with the same signature of a variable called mapCache which is an instance of a class that implements MapCacheProtocol

    -
    override public func url(forTilePath path: MKTileOverlayPath) -> URL {`
    -       return mapCache.url(forTilePath: path)
    -   }
    +

    If you take a look at the implementation of CachedTileOverlay, you will notice that it only forwards the request to the method with the same signature of a variable called mapCache which is an instance of a class that implements MapCacheProtocol

    +
    override public func url(forTilePath path: MKTileOverlayPath) -> URL {
    +    return mapCache.url(forTilePath: path)
    +}
     
    -

    The MapCacheProtocol definition is pretty simple, it just requires to have a config variable instance of a MapCacheConfig and an implementation of the two methods that are called from CachedTileOverlay

    -
    public protocol MapCacheProtocol {
    +

    The MapCacheProtocol definition is pretty simple, as it just requires to have a config variable instance of a MapCacheConfig and an implementation of the two methods that are called from CachedTileOverlay:

    +
    public protocol MapCacheProtocol {
    +
    +    var config: MapCacheConfig { get set }
     
    -    var config: MapCacheConfig { get set }
    +    func url(forTilePath path: MKTileOverlayPath) -> URL
     
    -    func url(forTilePath path: MKTileOverlayPath) -> URL
    +    func loadTile(at path: MKTileOverlayPath, result: @escaping (Data?, Error?) -> Void)
     
    -    func loadTile(at path: MKTileOverlayPath, result: @escaping (Data?, Error?) -> Void)
    +}
     
    -

    If you need to create a custom implementation of the cache, you just need to create a class that implements this protocol and initialize the cache using map.useCache(myCustomCacheImplementationInstance). The implementation provided by the library is on the class named as MapCache.

    +

    If you need to create a custom implementation of the cache, you need to create a class that implements this protocol and initialize the cache using map.useCache(myCustomCacheImplementationInstance). The implementation provided by the library is on the MapCache class.

    -

    Something that may be useful too is the DiskCache class.

    +

    Something that may also be useful is the DiskCache class.

    If you need further information you can take a look at

    Reference documentation of MapCache.

    +

    Development

    + +

    Clone the repo

    +
    git clone https://github.com/merlos/MapCache
    +
    + +

    With Xcode Open the file Example/MapCache.xcworkspace

    + +

    To check if the pod is ready to be released run the command in the root folder folder

    +
    pod lib lint MapCache.podspec
    +
    +

    Generate the documentation

    + +

    This project uses jazzy for generating the reference documentation)

    + +

    To install jazzt

    +
    gem install jazzy --verbose
    +
    + +

    In the root folder of the project run

    +
    jazzy
    +

    You may also like

      @@ -437,11 +465,10 @@

      License - MIT

      - diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/js/jazzy.js b/docs/docsets/MapCache.docset/Contents/Resources/Documents/js/jazzy.js index 1e55d6e..1984416 100755 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/js/jazzy.js +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/js/jazzy.js @@ -1,3 +1,7 @@ +// Jazzy - https://github.com/realm/jazzy +// Copyright Realm Inc. +// SPDX-License-Identifier: MIT + window.jazzy = {'docset': false} if (typeof window.dash != 'undefined') { document.documentElement.className += ' dash' diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/js/jazzy.search.js b/docs/docsets/MapCache.docset/Contents/Resources/Documents/js/jazzy.search.js index e3d1ab9..359cdbb 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/js/jazzy.search.js +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/js/jazzy.search.js @@ -1,3 +1,7 @@ +// Jazzy - https://github.com/realm/jazzy +// Copyright Realm Inc. +// SPDX-License-Identifier: MIT + $(function(){ var $typeahead = $('[data-typeahead]'); var $form = $typeahead.parents('form'); diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/js/jquery.min.js b/docs/docsets/MapCache.docset/Contents/Resources/Documents/js/jquery.min.js index b061403..2c69bc9 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/js/jquery.min.js +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/js/jquery.min.js @@ -1,2 +1,2 @@ -/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
      "],col:[2,"","
      "],tr:[2,"","
      "],td:[3,"","
      "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
      ",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&v(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!y||!y.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ve(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ye(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ve(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],y=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||y.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||y.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||y.push(".#.+[+~]"),e.querySelectorAll("\\\f"),y.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),y=y.length&&new RegExp(y.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),v=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&v(p,e)?-1:t==C||t.ownerDocument==p&&v(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!y||!y.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),v.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",v.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",v.option=!!ce.lastChild;var ge={thead:[1,"","
      "],col:[2,"","
      "],tr:[2,"","
      "],td:[3,"","
      "],_default:[0,"",""]};function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),v.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
      ",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return B(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=_e(v.pixelPosition,function(e,t){if(t)return t=Be(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return B(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 00){var c=e.utils.clone(r)||{};c.position=[a,l],c.index=s.length,s.push(new e.Token(i.slice(a,o),c))}a=o+1}}return s},e.tokenizer.separator=/[\s\-]+/,e.Pipeline=function(){this._stack=[]},e.Pipeline.registeredFunctions=Object.create(null),e.Pipeline.registerFunction=function(t,r){r in this.registeredFunctions&&e.utils.warn("Overwriting existing registered function: "+r),t.label=r,e.Pipeline.registeredFunctions[t.label]=t},e.Pipeline.warnIfFunctionNotRegistered=function(t){var r=t.label&&t.label in this.registeredFunctions;r||e.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",t)},e.Pipeline.load=function(t){var r=new e.Pipeline;return t.forEach(function(t){var i=e.Pipeline.registeredFunctions[t];if(!i)throw new Error("Cannot load unregistered function: "+t);r.add(i)}),r},e.Pipeline.prototype.add=function(){var t=Array.prototype.slice.call(arguments);t.forEach(function(t){e.Pipeline.warnIfFunctionNotRegistered(t),this._stack.push(t)},this)},e.Pipeline.prototype.after=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,r)},e.Pipeline.prototype.before=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");this._stack.splice(i,0,r)},e.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);t!=-1&&this._stack.splice(t,1)},e.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r1&&(se&&(r=n),s!=e);)i=r-t,n=t+Math.floor(i/2),s=this.elements[2*n];return s==e?2*n:s>e?2*n:sa?l+=2:o==a&&(t+=r[u+1]*i[l+1],u+=2,l+=2);return t},e.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},e.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t0){var o,a=s.str.charAt(0);a in s.node.edges?o=s.node.edges[a]:(o=new e.TokenSet,s.node.edges[a]=o),1==s.str.length&&(o["final"]=!0),n.push({node:o,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(0!=s.editsRemaining){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new e.TokenSet;s.node.edges["*"]=u}if(0==s.str.length&&(u["final"]=!0),n.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&n.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),1==s.str.length&&(s.node["final"]=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new e.TokenSet;s.node.edges["*"]=l}1==s.str.length&&(l["final"]=!0),n.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var c,h=s.str.charAt(0),d=s.str.charAt(1);d in s.node.edges?c=s.node.edges[d]:(c=new e.TokenSet,s.node.edges[d]=c),1==s.str.length&&(c["final"]=!0),n.push({node:c,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return i},e.TokenSet.fromString=function(t){for(var r=new e.TokenSet,i=r,n=0,s=t.length;n=e;t--){var r=this.uncheckedNodes[t],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r["char"]]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}},e.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},e.Index.prototype.search=function(t){return this.query(function(r){var i=new e.QueryParser(t,r);i.parse()})},e.Index.prototype.query=function(t){for(var r=new e.Query(this.fields),i=Object.create(null),n=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u1?this._b=1:this._b=e},e.Builder.prototype.k1=function(e){this._k1=e},e.Builder.prototype.add=function(t,r){var i=t[this._ref],n=Object.keys(this._fields);this._documents[i]=r||{},this.documentCount+=1;for(var s=0;s=this.length)return e.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},e.QueryLexer.prototype.width=function(){return this.pos-this.start},e.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},e.QueryLexer.prototype.backup=function(){this.pos-=1},e.QueryLexer.prototype.acceptDigitRun=function(){var t,r;do t=this.next(),r=t.charCodeAt(0);while(r>47&&r<58);t!=e.QueryLexer.EOS&&this.backup()},e.QueryLexer.prototype.more=function(){return this.pos1&&(t.backup(),t.emit(e.QueryLexer.TERM)),t.ignore(),t.more())return e.QueryLexer.lexText},e.QueryLexer.lexEditDistance=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.EDIT_DISTANCE),e.QueryLexer.lexText},e.QueryLexer.lexBoost=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.BOOST),e.QueryLexer.lexText},e.QueryLexer.lexEOS=function(t){t.width()>0&&t.emit(e.QueryLexer.TERM)},e.QueryLexer.termSeparator=e.tokenizer.separator,e.QueryLexer.lexText=function(t){for(;;){var r=t.next();if(r==e.QueryLexer.EOS)return e.QueryLexer.lexEOS;if(92!=r.charCodeAt(0)){if(":"==r)return e.QueryLexer.lexField;if("~"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexEditDistance;if("^"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexBoost;if("+"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if("-"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if(r.match(e.QueryLexer.termSeparator))return e.QueryLexer.lexTerm}else t.escapeCharacter()}},e.QueryParser=function(t,r){this.lexer=new e.QueryLexer(t),this.query=r,this.currentClause={},this.lexemeIdx=0},e.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var t=e.QueryParser.parseClause;t;)t=t(this);return this.query},e.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},e.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},e.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},e.QueryParser.parseClause=function(t){var r=t.peekLexeme();if(void 0!=r)switch(r.type){case e.QueryLexer.PRESENCE:return e.QueryParser.parsePresence;case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(i+=" with value '"+r.str+"'"),new e.QueryParseError(i,r.start,r.end)}},e.QueryParser.parsePresence=function(t){var r=t.consumeLexeme();if(void 0!=r){switch(r.str){case"-":t.currentClause.presence=e.Query.presence.PROHIBITED;break;case"+":t.currentClause.presence=e.Query.presence.REQUIRED;break;default:var i="unrecognised presence operator'"+r.str+"'";throw new e.QueryParseError(i,r.start,r.end)}var n=t.peekLexeme();if(void 0==n){var i="expecting term or field, found nothing";throw new e.QueryParseError(i,r.start,r.end)}switch(n.type){case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expecting term or field, found '"+n.type+"'";throw new e.QueryParseError(i,n.start,n.end)}}},e.QueryParser.parseField=function(t){var r=t.consumeLexeme();if(void 0!=r){if(t.query.allFields.indexOf(r.str)==-1){var i=t.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),n="unrecognised field '"+r.str+"', possible fields: "+i;throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.fields=[r.str];var s=t.peekLexeme();if(void 0==s){var n="expecting term, found nothing";throw new e.QueryParseError(n,r.start,r.end)}switch(s.type){case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var n="expecting term, found '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseTerm=function(t){var r=t.consumeLexeme();if(void 0!=r){t.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(t.currentClause.usePipeline=!1);var i=t.peekLexeme();if(void 0==i)return void t.nextClause();switch(i.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+i.type+"'";throw new e.QueryParseError(n,i.start,i.end)}}},e.QueryParser.parseEditDistance=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="edit distance must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.editDistance=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseBoost=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="boost must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.boost=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.lunr=t()}(this,function(){return e})}(); +!function(){var e=function(t){var r=new e.Builder;return r.pipeline.add(e.trimmer,e.stopWordFilter,e.stemmer),r.searchPipeline.add(e.stemmer),t.call(r,r),r.build()};e.version="2.3.9",e.utils={},e.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),e.utils.asString=function(e){return void 0===e||null===e?"":e.toString()},e.utils.clone=function(e){if(null===e||void 0===e)return e;for(var t=Object.create(null),r=Object.keys(e),i=0;i0){var c=e.utils.clone(r)||{};c.position=[a,l],c.index=s.length,s.push(new e.Token(i.slice(a,o),c))}a=o+1}}return s},e.tokenizer.separator=/[\s\-]+/,e.Pipeline=function(){this._stack=[]},e.Pipeline.registeredFunctions=Object.create(null),e.Pipeline.registerFunction=function(t,r){r in this.registeredFunctions&&e.utils.warn("Overwriting existing registered function: "+r),t.label=r,e.Pipeline.registeredFunctions[t.label]=t},e.Pipeline.warnIfFunctionNotRegistered=function(t){var r=t.label&&t.label in this.registeredFunctions;r||e.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",t)},e.Pipeline.load=function(t){var r=new e.Pipeline;return t.forEach(function(t){var i=e.Pipeline.registeredFunctions[t];if(!i)throw new Error("Cannot load unregistered function: "+t);r.add(i)}),r},e.Pipeline.prototype.add=function(){var t=Array.prototype.slice.call(arguments);t.forEach(function(t){e.Pipeline.warnIfFunctionNotRegistered(t),this._stack.push(t)},this)},e.Pipeline.prototype.after=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,r)},e.Pipeline.prototype.before=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");this._stack.splice(i,0,r)},e.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);t!=-1&&this._stack.splice(t,1)},e.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r1&&(se&&(r=n),s!=e);)i=r-t,n=t+Math.floor(i/2),s=this.elements[2*n];return s==e?2*n:s>e?2*n:sa?l+=2:o==a&&(t+=r[u+1]*i[l+1],u+=2,l+=2);return t},e.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},e.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t0){var o,a=s.str.charAt(0);a in s.node.edges?o=s.node.edges[a]:(o=new e.TokenSet,s.node.edges[a]=o),1==s.str.length&&(o["final"]=!0),n.push({node:o,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(0!=s.editsRemaining){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new e.TokenSet;s.node.edges["*"]=u}if(0==s.str.length&&(u["final"]=!0),n.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&n.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),1==s.str.length&&(s.node["final"]=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new e.TokenSet;s.node.edges["*"]=l}1==s.str.length&&(l["final"]=!0),n.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var c,h=s.str.charAt(0),d=s.str.charAt(1);d in s.node.edges?c=s.node.edges[d]:(c=new e.TokenSet,s.node.edges[d]=c),1==s.str.length&&(c["final"]=!0),n.push({node:c,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return i},e.TokenSet.fromString=function(t){for(var r=new e.TokenSet,i=r,n=0,s=t.length;n=e;t--){var r=this.uncheckedNodes[t],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r["char"]]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}},e.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},e.Index.prototype.search=function(t){return this.query(function(r){var i=new e.QueryParser(t,r);i.parse()})},e.Index.prototype.query=function(t){for(var r=new e.Query(this.fields),i=Object.create(null),n=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u1?this._b=1:this._b=e},e.Builder.prototype.k1=function(e){this._k1=e},e.Builder.prototype.add=function(t,r){var i=t[this._ref],n=Object.keys(this._fields);this._documents[i]=r||{},this.documentCount+=1;for(var s=0;s=this.length)return e.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},e.QueryLexer.prototype.width=function(){return this.pos-this.start},e.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},e.QueryLexer.prototype.backup=function(){this.pos-=1},e.QueryLexer.prototype.acceptDigitRun=function(){var t,r;do t=this.next(),r=t.charCodeAt(0);while(r>47&&r<58);t!=e.QueryLexer.EOS&&this.backup()},e.QueryLexer.prototype.more=function(){return this.pos1&&(t.backup(),t.emit(e.QueryLexer.TERM)),t.ignore(),t.more())return e.QueryLexer.lexText},e.QueryLexer.lexEditDistance=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.EDIT_DISTANCE),e.QueryLexer.lexText},e.QueryLexer.lexBoost=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.BOOST),e.QueryLexer.lexText},e.QueryLexer.lexEOS=function(t){t.width()>0&&t.emit(e.QueryLexer.TERM)},e.QueryLexer.termSeparator=e.tokenizer.separator,e.QueryLexer.lexText=function(t){for(;;){var r=t.next();if(r==e.QueryLexer.EOS)return e.QueryLexer.lexEOS;if(92!=r.charCodeAt(0)){if(":"==r)return e.QueryLexer.lexField;if("~"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexEditDistance;if("^"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexBoost;if("+"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if("-"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if(r.match(e.QueryLexer.termSeparator))return e.QueryLexer.lexTerm}else t.escapeCharacter()}},e.QueryParser=function(t,r){this.lexer=new e.QueryLexer(t),this.query=r,this.currentClause={},this.lexemeIdx=0},e.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var t=e.QueryParser.parseClause;t;)t=t(this);return this.query},e.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},e.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},e.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},e.QueryParser.parseClause=function(t){var r=t.peekLexeme();if(void 0!=r)switch(r.type){case e.QueryLexer.PRESENCE:return e.QueryParser.parsePresence;case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(i+=" with value '"+r.str+"'"),new e.QueryParseError(i,r.start,r.end)}},e.QueryParser.parsePresence=function(t){var r=t.consumeLexeme();if(void 0!=r){switch(r.str){case"-":t.currentClause.presence=e.Query.presence.PROHIBITED;break;case"+":t.currentClause.presence=e.Query.presence.REQUIRED;break;default:var i="unrecognised presence operator'"+r.str+"'";throw new e.QueryParseError(i,r.start,r.end)}var n=t.peekLexeme();if(void 0==n){var i="expecting term or field, found nothing";throw new e.QueryParseError(i,r.start,r.end)}switch(n.type){case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expecting term or field, found '"+n.type+"'";throw new e.QueryParseError(i,n.start,n.end)}}},e.QueryParser.parseField=function(t){var r=t.consumeLexeme();if(void 0!=r){if(t.query.allFields.indexOf(r.str)==-1){var i=t.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),n="unrecognised field '"+r.str+"', possible fields: "+i;throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.fields=[r.str];var s=t.peekLexeme();if(void 0==s){var n="expecting term, found nothing";throw new e.QueryParseError(n,r.start,r.end)}switch(s.type){case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var n="expecting term, found '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseTerm=function(t){var r=t.consumeLexeme();if(void 0!=r){t.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(t.currentClause.usePipeline=!1);var i=t.peekLexeme();if(void 0==i)return void t.nextClause();switch(i.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+i.type+"'";throw new e.QueryParseError(n,i.start,i.end)}}},e.QueryParser.parseEditDistance=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="edit distance must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.editDistance=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseBoost=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="boost must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.boost=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.lunr=t()}(this,function(){return e})}(); diff --git a/docs/docsets/MapCache.docset/Contents/Resources/Documents/search.json b/docs/docsets/MapCache.docset/Contents/Resources/Documents/search.json index fb687df..bc3b46a 100644 --- a/docs/docsets/MapCache.docset/Contents/Resources/Documents/search.json +++ b/docs/docsets/MapCache.docset/Contents/Resources/Documents/search.json @@ -1 +1 @@ -{"Typealiases.html#/s:8MapCache4Zooma":{"name":"Zoom","abstract":"

      An alias for UInt8. Used to indicate that the variable is holding a zoom value.

      "},"Typealiases.html#/s:8MapCache10TileNumbera":{"name":"TileNumber","abstract":"

      Tile number in a map.

      "},"Structs/ZoomableTile.html#/s:8MapCache12ZoomableTileV12maximumZPathSo17MKTileOverlayPathavp":{"name":"maximumZPath","abstract":"

      Path for the tile with maximumZ supported by the tile server set in the config.","parent_name":"ZoomableTile"},"Structs/ZoomableTile.html#/s:8MapCache12ZoomableTileV4rectSo9MKMapRectavp":{"name":"rect","abstract":"

      Rectangle area ocupied by this tile

      ","parent_name":"ZoomableTile"},"Structs/ZoomableTile.html#/s:8MapCache12ZoomableTileV8overZoomSivp":{"name":"overZoom","abstract":"

      Scale over the tile of the maximumZ path.","parent_name":"ZoomableTile"},"Structs/ZoomRangeIterator.html#/s:8MapCache17ZoomRangeIteratorV7counters5UInt8Vvp":{"name":"counter","abstract":"

      Keeps the counter of the iterator.

      ","parent_name":"ZoomRangeIterator"},"Structs/ZoomRangeIterator.html#/s:8MapCache17ZoomRangeIteratorV5rangeAA0cD0Vvp":{"name":"range","abstract":"

      The zoom range in question.

      ","parent_name":"ZoomRangeIterator"},"Structs/ZoomRangeIterator.html#/s:8MapCache17ZoomRangeIteratorVyAcA0cD0Vcfc":{"name":"init(_:)","abstract":"

      Receives the range to iterate.

      ","parent_name":"ZoomRangeIterator"},"Structs/ZoomRangeIterator.html#/s:8MapCache17ZoomRangeIteratorV4nexts5UInt8VSgyF":{"name":"next()","abstract":"

      Gets next zoom value.

      ","parent_name":"ZoomRangeIterator"},"Structs/ZoomRange.html#/s:8MapCache9ZoomRangeV3mins5UInt8Vvp":{"name":"min","abstract":"

      Minimum zoom in this range.

      ","parent_name":"ZoomRange"},"Structs/ZoomRange.html#/s:8MapCache9ZoomRangeV3maxs5UInt8Vvp":{"name":"max","abstract":"

      Maximum zoom in this range.

      ","parent_name":"ZoomRange"},"Structs/ZoomRange.html#/s:8MapCache9ZoomRangeV04diffC0s5UInt8Vvp":{"name":"diffZoom","abstract":"

      Difference between max zoom and min zoom.

      ","parent_name":"ZoomRange"},"Structs/ZoomRange.html#/s:8MapCache9ZoomRangeV5counts5UInt8Vvp":{"name":"count","abstract":"

      Number of zooms in this range

      ","parent_name":"ZoomRange"},"Structs/ZoomRange.html#/s:8MapCache9ZoomRangeVyACSgs5UInt8V_AFtcfc":{"name":"init(_:_:)","abstract":"

      Creates the range of zooms.

      ","parent_name":"ZoomRange"},"Structs/ZoomRange.html#/s:8MapCache9ZoomRangeV7toArraySays5UInt8VGyF":{"name":"toArray()","abstract":"

      Converts the zoom range in to an array.

      ","parent_name":"ZoomRange"},"Structs/ZoomRange.html#/s:8MapCache9ZoomRangeV12makeIteratorAA0cdF0VyF":{"name":"makeIterator()","abstract":"

      Returns the iterator for this range.","parent_name":"ZoomRange"},"Structs/TileRangeIterator.html#/s:8MapCache17TileRangeIteratorV5rangeAA0cD0Vvp":{"name":"range","abstract":"

      Range for the counter

      ","parent_name":"TileRangeIterator"},"Structs/TileRangeIterator.html#/s:8MapCache17TileRangeIteratorV7counters6UInt64Vvp":{"name":"counter","abstract":"

      Current counter value

      ","parent_name":"TileRangeIterator"},"Structs/TileRangeIterator.html#/s:8MapCache17TileRangeIteratorV10maxCounters6UInt64Vvp":{"name":"maxCounter","abstract":"

      Max value counter can take.

      ","parent_name":"TileRangeIterator"},"Structs/TileRangeIterator.html#/s:8MapCache17TileRangeIteratorV7columnss6UInt64Vvp":{"name":"columns","abstract":"

      Number of columns

      ","parent_name":"TileRangeIterator"},"Structs/TileRangeIterator.html#/s:8MapCache17TileRangeIteratorV4rowss6UInt64Vvp":{"name":"rows","abstract":"

      Number of rows

      ","parent_name":"TileRangeIterator"},"Structs/TileRangeIterator.html#/s:8MapCache17TileRangeIteratorVyAcA0cD0Vcfc":{"name":"init(_:)","abstract":"

      Initializer of the iterator.","parent_name":"TileRangeIterator"},"Structs/TileRangeIterator.html#/s:8MapCache17TileRangeIteratorV4nextAA0C6CoordsCSgyF":{"name":"next()","abstract":"

      The function that is required by the Iterator protocol.

      ","parent_name":"TileRangeIterator"},"Structs/TileRange.html#/s:8MapCache9TileRangeV4zooms5UInt8Vvp":{"name":"zoom","abstract":"

      Zoom level.

      ","parent_name":"TileRange"},"Structs/TileRange.html#/s:8MapCache9TileRangeV03minC1Xs6UInt64Vvp":{"name":"minTileX","abstract":"

      Min value of tile in X axis.

      ","parent_name":"TileRange"},"Structs/TileRange.html#/s:8MapCache9TileRangeV03maxC1Xs6UInt64Vvp":{"name":"maxTileX","abstract":"

      Max value of tile in X axis.

      ","parent_name":"TileRange"},"Structs/TileRange.html#/s:8MapCache9TileRangeV03minC1Ys6UInt64Vvp":{"name":"minTileY","abstract":"

      Min value of tile in Y axis.

      ","parent_name":"TileRange"},"Structs/TileRange.html#/s:8MapCache9TileRangeV03maxC1Ys6UInt64Vvp":{"name":"maxTileY","abstract":"

      Min value of tile in Y axis.

      ","parent_name":"TileRange"},"Structs/TileRange.html#/s:8MapCache9TileRangeV5diffXs6UInt64Vvp":{"name":"diffX","abstract":"

      Difference between maxTileX and minTileX

      ","parent_name":"TileRange"},"Structs/TileRange.html#/s:8MapCache9TileRangeV5diffYs6UInt64Vvp":{"name":"diffY","abstract":"

      Difference between maxTileY and minTileY

      ","parent_name":"TileRange"},"Structs/TileRange.html#/s:8MapCache9TileRangeV4rowss6UInt64Vvp":{"name":"rows","abstract":"

      Number of rows in the range.

      ","parent_name":"TileRange"},"Structs/TileRange.html#/s:8MapCache9TileRangeV7columnss6UInt64Vvp":{"name":"columns","abstract":"

      Number of columns in the range.

      ","parent_name":"TileRange"},"Structs/TileRange.html#/s:8MapCache9TileRangeV5counts6UInt64Vvp":{"name":"count","abstract":"

      Counts the number of tiles in the range (columns x rows).

      ","parent_name":"TileRange"},"Structs/TileRange.html#/s:8MapCache9TileRangeV12makeIteratorAA0cdF0VyF":{"name":"makeIterator()","abstract":"

      Sequence iterator.","parent_name":"TileRange"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV11urlTemplateSSvp":{"name":"urlTemplate","abstract":"

      Each time a tile is going to be retrieved from the server its x,y and z (zoom) values are plugged into this URL template.

      ","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV10subdomainsSaySSGvp":{"name":"subdomains","abstract":"

      Subdomains used on the urlTemplate

      ","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV8minimumZSivp":{"name":"minimumZ","abstract":"

      It must be smaller or equal than maximumZ

      ","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV8maximumZSivp":{"name":"maximumZ","abstract":"

      Maximum supported zoom by the tile server

      ","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV16overZoomMaximumZSbvp":{"name":"overZoomMaximumZ","abstract":"

      If set to true when zooming in beyond maximumZ the tiles at maximumZ will be upsampled and shown.","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV9cacheNameSSvp":{"name":"cacheName","abstract":"

      Name of the cache","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV8capacitys6UInt64Vvp":{"name":"capacity","abstract":"

      Cache capacity in bytes

      ","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV8tileSizeSo6CGSizeVvp":{"name":"tileSize","abstract":"

      Tile size of the tile. Default is 256x256

      ","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV12loadTileModeAA04LoadeF0Ovp":{"name":"loadTileMode","abstract":"

      Load tile mode.","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigVACycfc":{"name":"init()","abstract":"

      Constructor with all the default values.

      ","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV15withUrlTemplateACSS_tcfc":{"name":"init(withUrlTemplate:)","abstract":"

      Constructor that overwrites the urlTemplate`

      ","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV15randomSubdomainSSSgyF":{"name":"randomSubdomain()","abstract":"

      Selects one of the subdomains randomly.

      ","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV19subdomainRoundRobin33_DF0222806B55D79AD742F8F62B690241LLSivp":{"name":"subdomainRoundRobin","abstract":"

      Keeps track of the index of the last subdomain requested for round robin

      ","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV19roundRobinSubdomainSSSgyF":{"name":"roundRobinSubdomain()","abstract":"

      Round Robin algorithm","parent_name":"MapCacheConfig"},"Structs/Log/Level.html#/s:8MapCache3LogV5Level33_B0EB5F66C57FF526BB04701F7376DD27LLO5DebugyA2FmF":{"name":"Debug","abstract":"

      [Debug] For displaying messages useful during development.

      ","parent_name":"Level"},"Structs/Log/Level.html#/s:8MapCache3LogV5Level33_B0EB5F66C57FF526BB04701F7376DD27LLO5ErroryA2FmF":{"name":"Error","abstract":"

      [ERROR]For displaying messages of bad situations, very, very bad situations.

      ","parent_name":"Level"},"Structs/Log.html#/s:8MapCache3LogV3tag33_B0EB5F66C57FF526BB04701F7376DD27LLSSvpZ":{"name":"tag","abstract":"

      The tag [MapCache]

      ","parent_name":"Log"},"Structs/Log/Level.html":{"name":"Level","abstract":"

      Log Levels

      ","parent_name":"Log"},"Structs/Log.html#/s:8MapCache3LogV3log33_B0EB5F66C57FF526BB04701F7376DD27LLyyAC5LevelAELLO_SSyXKs5Error_pSgtFZ":{"name":"log(_:_:_:)","abstract":"

      The actual method that prints.

      ","parent_name":"Log"},"Structs/Log.html#/s:8MapCache3LogV5debug7message5errorySSyXK_s5Error_pSgtFZ":{"name":"debug(message:error:)","abstract":"

      For displaying messages. Useful during development of this package.

      ","parent_name":"Log"},"Structs/Log.html#/s:8MapCache3LogV5error7messageADySSyXK_s5Error_pSgtFZ":{"name":"error(message:error:)","abstract":"

      These messages are displayed independently of the debug mode.","parent_name":"Log"},"Structs/BytesSequence.html#/s:8MapCache13BytesSequenceV9chunkSizeSivp":{"name":"chunkSize","abstract":"

      Chunk size

      ","parent_name":"BytesSequence"},"Structs/BytesSequence.html#/s:8MapCache13BytesSequenceV4dataSays5UInt8VGvp":{"name":"data","abstract":"

      Data

      ","parent_name":"BytesSequence"},"Structs/BytesSequence.html#/s:8MapCache13BytesSequenceV12makeIterators03AnyF0Vys10ArraySliceVys5UInt8VGGyF":{"name":"makeIterator()","abstract":"

      makeIterator

      ","parent_name":"BytesSequence"},"Structs/BytesSequence.html":{"name":"BytesSequence","abstract":"

      Bytes sequence for the implementation of MD5"},"Structs/Log.html":{"name":"Log","abstract":"

      For logging messages on console.

      "},"Structs/MapCacheConfig.html":{"name":"MapCacheConfig","abstract":"

      Settings of your MapCache.

      "},"Structs/TileRange.html":{"name":"TileRange","abstract":"

      For a particular zoom level, defines a range of tiles."},"Structs/TileRangeIterator.html":{"name":"TileRangeIterator","abstract":"

      Iterator of a TileRange.

      "},"Structs/ZoomRange.html":{"name":"ZoomRange","abstract":"

      A range of zooms."},"Structs/ZoomRangeIterator.html":{"name":"ZoomRangeIterator","abstract":"

      Iterator that allows the use of ZoomRange in a for loop.

      "},"Structs/ZoomableTile.html":{"name":"ZoomableTile","abstract":"

      Specifies a single tile and area of the tile that should upscaled.

      "},"Protocols/RegionDownloaderDelegate.html#/c:@M@MapCache@objc(pl)RegionDownloaderDelegate(im)regionDownloader:didDownloadPercentage:":{"name":"regionDownloader(_:didDownloadPercentage:)","abstract":"

      Did download the percentage.

      ","parent_name":"RegionDownloaderDelegate"},"Protocols/RegionDownloaderDelegate.html#/c:@M@MapCache@objc(pl)RegionDownloaderDelegate(im)regionDownloader:didFinishDownload:":{"name":"regionDownloader(_:didFinishDownload:)","abstract":"

      Did Finish Download all tiles.

      ","parent_name":"RegionDownloaderDelegate"},"Protocols/MapCacheProtocol.html#/s:8MapCache0aB8ProtocolP6configAA0aB6ConfigVvp":{"name":"config","abstract":"

      An instance of MapCacheConfig

      ","parent_name":"MapCacheProtocol"},"Protocols/MapCacheProtocol.html#/s:8MapCache0aB8ProtocolP3url11forTilePath10Foundation3URLVSo013MKTileOverlayG0a_tF":{"name":"url(forTilePath:)","abstract":"

      The implementation shall convert a tile path into a URL object

      ","parent_name":"MapCacheProtocol"},"Protocols/MapCacheProtocol.html#/s:8MapCache0aB8ProtocolP8loadTile2at6resultySo17MKTileOverlayPatha_y10Foundation4DataVSg_s5Error_pSgtctF":{"name":"loadTile(at:result:)","abstract":"

      The implementation shall return either the tile as a Data object or an Error if the tile could not be retrieved.

      ","parent_name":"MapCacheProtocol"},"Protocols/MapCacheProtocol.html":{"name":"MapCacheProtocol","abstract":"

      This protocol shall be implemented by any cache used in MapCache.

      "},"Protocols/RegionDownloaderDelegate.html":{"name":"RegionDownloaderDelegate","abstract":"

      Delegate protocol of RegionDownloader."},"Functions.html#/s:8MapCache17isNoSuchFileError33_FC193A7AE40E49CC84DE49A3128B2975LLySbs0G0_pSgF":{"name":"isNoSuchFileError(_:)","abstract":"

      Error when there is not a file.

      "},"Functions.html#/s:8MapCache1loiySbSo8NSNumberC_ADtF":{"name":"<(_:_:)","abstract":"

      Overload of the the < operator

      "},"Functions.html#/s:8MapCache12arrayOfBytes5value6lengthSays5UInt8VGx_SiSgtlF":{"name":"arrayOfBytes(value:length:)","abstract":"

      array of bytes, little-endian representation

      "},"Functions.html#/s:8MapCache10rotateLeft1v1ns6UInt32VAF_AFtF":{"name":"rotateLeft(v:n:)","abstract":"

      Rotate left for MD5 implementation

      "},"Functions.html#/s:8MapCache18sliceToUInt32ArrayySays0E0VGs0F5SliceVys5UInt8VGF":{"name":"sliceToUInt32Array(_:)","abstract":"

      sliceToUInt32 for MD5 implementation

      "},"Extensions/MKZoomScale.html#/s:12CoreGraphics7CGFloatV8MapCacheE11toZoomLevel8tileSizeSiSo6CGSizeV_tF":{"name":"toZoomLevel(tileSize:)","abstract":"

      Converts from standard MapKit MKZoomScale to tile zoom level

      ","parent_name":"MKZoomScale"},"Extensions/MKTileOverlayPath.html#/s:So17MKTileOverlayPatha8MapCacheE10tileCoordsAbC04TileG0C_tcfc":{"name":"init(tileCoords:)","abstract":"

      Creates a MkTileOverlayPath from a MapCache TileCoords

      ","parent_name":"MKTileOverlayPath"},"Extensions/MKTileOverlayPath.html#/s:So17MKTileOverlayPatha8MapCacheE12toTileCoordsAC0gH0CSgyF":{"name":"toTileCoords()","abstract":"

      Returns the tile overlay path as a TileCoords object.

      ","parent_name":"MKTileOverlayPath"},"Extensions/MKMapView.html#/s:So9MKMapViewC8MapCacheE03useD0yAC17CachedTileOverlayCAC0cD8Protocol_pF":{"name":"useCache(_:)","abstract":"

      Will tell the map to use the cache passed as parameter for getting the tiles.

      ","parent_name":"MKMapView"},"Extensions/MKMapView.html#/s:So9MKMapViewC8MapCacheE03mapD8Renderer10forOverlaySo09MKOverlayF0CSo0I0_p_tF":{"name":"mapCacheRenderer(forOverlay:)","abstract":"

      Call this method within the MKMapView delegate function","parent_name":"MKMapView"},"Extensions/MKMapView.html#/s:So9MKMapViewC8MapCacheE9zoomLevelSivp":{"name":"zoomLevel","abstract":"

      TODO: Implement this correctly.","parent_name":"MKMapView"},"Extensions/URL.html#/s:10Foundation3URLV8MapCacheE28regularFileAllocatedDiskSizes6UInt64VyKF":{"name":"regularFileAllocatedDiskSize()","abstract":"

      Returns the allocated size in disk for a regular file in bytes.","parent_name":"URL"},"Extensions/URL.html#/s:10Foundation3URLV8MapCacheE15regularFileSizes6UInt64VyKF":{"name":"regularFileSize()","abstract":"

      Returns the allocated file a regular file in bytes.

      ","parent_name":"URL"},"Extensions/String.html#/s:SS8MapCacheE15escapedFilenameSSyF":{"name":"escapedFilename()","abstract":"

      Returns the escaped version of a filename.

      ","parent_name":"String"},"Extensions/String.html#/s:SS8MapCacheE5toMD5SSyF":{"name":"toMD5()","abstract":"

      Returns the md5 digest of this string.

      ","parent_name":"String"},"Extensions/String.html#/s:SS8MapCacheE11MD5FilenameSSyF":{"name":"MD5Filename()","abstract":"

      Returns the path for the filename whose name is hold in this string.

      ","parent_name":"String"},"Extensions/NSMutableData.html#/s:So13NSMutableDataC8MapCacheE11appendBytes07arrayOfF0ySays5UInt8VG_tF":{"name":"appendBytes(arrayOfBytes:)","abstract":"

      Convenient way to append bytes

      ","parent_name":"NSMutableData"},"Extensions/Int.html#/s:Si8MapCacheE5bytes10totalBytesSays5UInt8VGSi_tF":{"name":"bytes(totalBytes:)","abstract":"

      Array of bytes with optional padding (little-endian)

      ","parent_name":"Int"},"Extensions/FileManager/fileSizeForDirectory%28at%3A%29.html#/s:So13NSFileManagerC8MapCacheE20fileSizeForDirectory2ats6UInt64V10Foundation3URLV_tKF12errorHandlerL__0M0SbAJ_s5Error_ptF":{"name":"errorHandler(_:error:)","abstract":"

      Handler in case of error when calculating the filesize

      ","parent_name":"fileSizeForDirectory(at:)"},"Extensions/FileManager/allocatedDiskSizeForDirectory%28at%3A%29.html#/s:So13NSFileManagerC8MapCacheE29allocatedDiskSizeForDirectory2ats6UInt64V10Foundation3URLV_tKF12errorHandlerL__0N0SbAJ_s5Error_ptF":{"name":"errorHandler(_:error:)","abstract":"

      Error handler in case there is a problem when getting the information from the disk

      ","parent_name":"allocatedDiskSizeForDirectory(at:)"},"Extensions/FileManager.html#/s:So13NSFileManagerC8MapCacheE28enumerateContentsOfDirectory6atPath17orderedByProperty9ascending10usingBlockySS_SSSby10Foundation3URLV_SiSbztXEtF":{"name":"enumerateContentsOfDirectory(atPath:orderedByProperty:ascending:usingBlock:)","abstract":"

      Gets the list of files of this the directory.

      ","parent_name":"FileManager"},"Extensions/FileManager/allocatedDiskSizeForDirectory%28at%3A%29.html":{"name":"allocatedDiskSizeForDirectory(at:)","abstract":"

      Calculate the allocated size of a directory and all its contents on the volume.

      ","parent_name":"FileManager"},"Extensions/FileManager/fileSizeForDirectory%28at%3A%29.html":{"name":"fileSizeForDirectory(at:)","abstract":"

      Calculates the actual sum of file sizes

      ","parent_name":"FileManager"},"Extensions/FileManager.html":{"name":"FileManager","abstract":"

      Class for handling the operations with file folders.

      "},"Extensions/Int.html":{"name":"Int","abstract":"

      Extension for the implementation of MD5

      "},"Extensions/NSMutableData.html":{"name":"NSMutableData","abstract":"

      Extension for the implementation of MD5

      "},"Extensions/String.html":{"name":"String","abstract":"

      Extension that adds a few methods that are useful for the DiskCache.

      "},"Extensions/URL.html":{"name":"URL"},"Extensions/MKMapView.html":{"name":"MKMapView","abstract":"

      Extension that provides MKMapView support to use MapCache.

      "},"Extensions/MKTileOverlayPath.html":{"name":"MKTileOverlayPath","abstract":"

      Extension to ease MapCache stuff :)

      "},"Extensions/MKZoomScale.html":{"name":"MKZoomScale","abstract":"

      Extension for MapCache

      "},"Enums/TileRangeError.html#/s:8MapCache14TileRangeErrorO0cD8CreationyA2CmF":{"name":"TileRangeCreation","abstract":"

      Error to be thrown in case of an issue during creation.

      ","parent_name":"TileRangeError"},"Enums/TileError.html#/s:8MapCache9TileErrorO8overflowyA2CmF":{"name":"overflow","abstract":"

      Overflow in the tile

      ","parent_name":"TileError"},"Enums/LongitudeError.html#/s:8MapCache14LongitudeErrorO11overflowMinyA2CmF":{"name":"overflowMin","abstract":"

      Overflow if latitud is smaller than the minimum.

      ","parent_name":"LongitudeError"},"Enums/LongitudeError.html#/s:8MapCache14LongitudeErrorO11overflowMaxyA2CmF":{"name":"overflowMax","abstract":"

      Overflow if latitud is greater than the maximum.

      ","parent_name":"LongitudeError"},"Enums/LatitudeError.html#/s:8MapCache13LatitudeErrorO11overflowMinyA2CmF":{"name":"overflowMin","abstract":"

      Overflow if latitud is smaller than the minimum.

      ","parent_name":"LatitudeError"},"Enums/LatitudeError.html#/s:8MapCache13LatitudeErrorO11overflowMaxyA2CmF":{"name":"overflowMax","abstract":"

      Overflow if latitud is greater than the maximum.

      ","parent_name":"LatitudeError"},"Enums/ZoomError.html#/s:8MapCache9ZoomErrorO12largerThan19yA2CmF":{"name":"largerThan19","abstract":"

      Zoom largest value is 19.

      ","parent_name":"ZoomError"},"Enums/LoadTileMode.html#/s:8MapCache12LoadTileModeO15cacheThenServeryA2CmF":{"name":"cacheThenServer","abstract":"

      Default. If the tile exists in the cache, return it, otherwise, fetch it from server (and cache the result).

      ","parent_name":"LoadTileMode"},"Enums/LoadTileMode.html#/s:8MapCache12LoadTileModeO010serverThenB0yA2CmF":{"name":"serverThenCache","abstract":"

      Always return the tile from the server unless there is some problem with the network.","parent_name":"LoadTileMode"},"Enums/LoadTileMode.html#/s:8MapCache12LoadTileModeO9cacheOnlyyA2CmF":{"name":"cacheOnly","abstract":"

      Only return data from cache.","parent_name":"LoadTileMode"},"Enums/LoadTileMode.html#/s:8MapCache12LoadTileModeO10serverOnlyyA2CmF":{"name":"serverOnly","abstract":"

      Always return the tile from the server, as well as updating the cache.","parent_name":"LoadTileMode"},"Enums/LoadTileMode.html":{"name":"LoadTileMode","abstract":"

      Defines the strategies that can be used for retrieving the tiles from the cache"},"Enums/ZoomError.html":{"name":"ZoomError","abstract":"

      Errors for Zoom.

      "},"Enums/LatitudeError.html":{"name":"LatitudeError","abstract":"

      Errors for a latitude.

      "},"Enums/LongitudeError.html":{"name":"LongitudeError","abstract":"

      Errors for a longitude.

      "},"Enums/TileError.html":{"name":"TileError","abstract":"

      Errors for a tile

      "},"Enums/TileRangeError.html":{"name":"TileRangeError","abstract":"

      Errors for tile range

      "},"Classes/TileCoordsRegion.html#/s:8MapCache16TileCoordsRegionC7topLeftAA0cD0Cvp":{"name":"topLeft","abstract":"

      Top left tile/coordinate.

      ","parent_name":"TileCoordsRegion"},"Classes/TileCoordsRegion.html#/s:8MapCache16TileCoordsRegionC11bottomRightAA0cD0Cvp":{"name":"bottomRight","abstract":"

      Bottom right tile/coordinate.

      ","parent_name":"TileCoordsRegion"},"Classes/TileCoordsRegion.html#/s:8MapCache16TileCoordsRegionC9zoomRangeAA04ZoomG0Vvp":{"name":"zoomRange","abstract":"

      Zoom range for the region.

      ","parent_name":"TileCoordsRegion"},"Classes/TileCoordsRegion.html#/s:8MapCache16TileCoordsRegionC5counts6UInt64Vvp":{"name":"count","abstract":"

      Total number of tiles in this region for all zoom levels.

      ","parent_name":"TileCoordsRegion"},"Classes/TileCoordsRegion.html#/s:8MapCache16TileCoordsRegionC15topLeftLatitude0fG9Longitude011bottomRightH00jkI07minZoom03maxM0ACSgSd_S3ds5UInt8VALtcfc":{"name":"init(topLeftLatitude:topLeftLongitude:bottomRightLatitude:bottomRightLongitude:minZoom:maxZoom:)","abstract":"

      The region will be the area that holds the line from any top left point (P1) to any","parent_name":"TileCoordsRegion"},"Classes/TileCoordsRegion.html#/s:8MapCache16TileCoordsRegionC7topLeft11bottomRightACSgAA0cD0C_AHtcfc":{"name":"init(topLeft:bottomRight:)","abstract":"

      The region will be the area that holds the line from any top left point (P1) to any","parent_name":"TileCoordsRegion"},"Classes/TileCoordsRegion.html#/s:8MapCache16TileCoordsRegionC5count7forZooms6UInt64Vs5UInt8V_tF":{"name":"count(forZoom:)","abstract":"

      Counts for the zoom

      ","parent_name":"TileCoordsRegion"},"Classes/TileCoordsRegion.html#/s:8MapCache16TileCoordsRegionC10tileRanges7forZoomSayAA0C5RangeVGSgs5UInt8V_tF":{"name":"tileRanges(forZoom:)","abstract":"

      All the tile ranges for this particular zoom.","parent_name":"TileCoordsRegion"},"Classes/TileCoordsRegion.html#/s:8MapCache16TileCoordsRegionC10tileRangesSayAA0C5RangeVGSgyF":{"name":"tileRanges()","abstract":"

      Gets the tile ranges for all zooms.

      ","parent_name":"TileCoordsRegion"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC11maxLatitudeSdvpZ":{"name":"maxLatitude","abstract":"

      Max value of latitude that can be retrieved with tiles (-85.0511 degrees)

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC11minLatitudeSdvpZ":{"name":"minLatitude","abstract":"

      Min value of latitude that can be retrieved with tiles (-85.0511 degrees)

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC12maxLongitudeSdvpZ":{"name":"maxLongitude","abstract":"

      Max value of a longitude (<180.0).","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC12minLongitudeSdvpZ":{"name":"minLongitude","abstract":"

      Min value of a longitude (>=180.0)","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC7maxZooms5UInt8VvpZ":{"name":"maxZoom","abstract":"

      Max zoom supported in tile servers (19)

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC7minZooms5UInt8VvpZ":{"name":"minZoom","abstract":"

      Min zoom supported (0)

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC03maxC07forZooms6UInt64Vs5UInt8V_tFZ":{"name":"maxTile(forZoom:)","abstract":"

      Based on current zoom it indicates what is the max tile

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC8validate9longitudeySd_tKFZ":{"name":"validate(longitude:)","abstract":"

      Validates if longitude is between min and max allowed longitudes

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC8validate8latitudeySd_tKFZ":{"name":"validate(latitude:)","abstract":"

      Validates if a latitude is between min and max allowed latitudes.","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC8validate4zoomys5UInt8V_tKFZ":{"name":"validate(zoom:)","abstract":"

      Validate zoom is less or equal to the maxZoom","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC8validate4tile7forZoomys6UInt64V_s5UInt8VtKFZ":{"name":"validate(tile:forZoom:)","abstract":"

      Validates if the tile is within the range for the zoom","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC011longitudeToC1X0E04zooms6UInt64VSd_s5UInt8VtKFZ":{"name":"longitudeToTileX(longitude:zoom:)","abstract":"

      Returns the tile in the X axis for the longitude and zoom.","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC010latitudeToC1Y0E04zooms6UInt64VSd_s5UInt8VtKFZ":{"name":"latitudeToTileY(latitude:zoom:)","abstract":"

      Returns the tile in the Y axis for the latitude and zoom.","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC16tileXToLongitude0E1X4zoomSds6UInt64V_s5UInt8VtKFZ":{"name":"tileXToLongitude(tileX:zoom:)","abstract":"

      Returns the corresponding longitude in degrees for the tileX at zoom level

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC15tileYToLatitude0E1Y4zoomSds6UInt64V_s5UInt8VtKFZ":{"name":"tileYToLatitude(tileY:zoom:)","abstract":"

      Returns the corresponding latitude in degrees for the tileY at zoom level

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC5_zoom33_EA7126F1A3D16AFAE6DD45A5164BF908LLs5UInt8Vvp":{"name":"_zoom","abstract":"

      Holds the zoom level.","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC4zooms5UInt8Vvp":{"name":"zoom","abstract":"

      Zoom level. Read only. Use setZoom() to change it.

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC9_latitude33_EA7126F1A3D16AFAE6DD45A5164BF908LLSdvp":{"name":"_latitude","abstract":"

      Holds the actual latitude

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC8latitudeSdvp":{"name":"latitude","abstract":"

      Latitude for this tile. Use set() to change it.

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC10_longitude33_EA7126F1A3D16AFAE6DD45A5164BF908LLSdvp":{"name":"_longitude","abstract":"

      Holds the actual longitude

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC9longitudeSdvp":{"name":"longitude","abstract":"

      Longitude for this tile. Use set() to change it.

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC6_tileX33_EA7126F1A3D16AFAE6DD45A5164BF908LLs6UInt64Vvp":{"name":"_tileX","abstract":"

      Holds the actual tileX

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC5tileXs6UInt64Vvp":{"name":"tileX","abstract":"

      Tile in the X axis for current longitude and zoom. Use set() to change it.

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC6_tileY33_EA7126F1A3D16AFAE6DD45A5164BF908LLs6UInt64Vvp":{"name":"_tileY","abstract":"

      Holds the actual tileY

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC5tileYs6UInt64Vvp":{"name":"tileY","abstract":"

      Tile in the Y axis for current latitude and zoom. Use set() to change it.

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC3set4zoomys5UInt8V_tKF":{"name":"set(zoom:)","abstract":"

      Set zoom level.","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC3set5tileX0F1Yys6UInt64V_AHtKF":{"name":"set(tileX:tileY:)","abstract":"

      Set tile X and Y values.","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC3set8latitude9longitudeySd_SdtKF":{"name":"set(latitude:longitude:)","abstract":"

      Sets latitude and longitude.","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC5tileX0E1Y4zoomACSgs6UInt64V_AIs5UInt8Vtcfc":{"name":"init(tileX:tileY:zoom:)","abstract":"

      Init a TileCoords instance using tile and zoom info.","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC8latitude9longitude4zoomACSgSd_Sds5UInt8Vtcfc":{"name":"init(latitude:longitude:zoom:)","abstract":"

      Init a TileCoords instance using latitude, longitude and zoom info.","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC_4zoomACSgAC_s5UInt8Vtcfc":{"name":"init(_:zoom:)","abstract":"

      Creates a new Tile Coord with the same latitude and longitude","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC03maxC0s6UInt64VyF":{"name":"maxTile()","abstract":"

      Returns the maximum tile number for current set zoom.

      ","parent_name":"TileCoords"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC27defaultAverageTileSizeBytess6UInt64VvpZ":{"name":"defaultAverageTileSizeBytes","abstract":"

      Approximation of the average number of bytes of a tile (used with 256x256 tiles).

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC6regionAA010TileCoordsC0Cvp":{"name":"region","abstract":"

      Region that will be downloaded.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC03mapB0AA0aB8Protocol_pvp":{"name":"mapCache","abstract":"

      Cache that is going to be used for saving/loading the files.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC20totalTilesToDownloads6UInt64Vvp":{"name":"totalTilesToDownload","abstract":"

      Total number of tiles to be downloaded.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC22pendingTilesToDownloads6UInt64Vvp":{"name":"pendingTilesToDownload","abstract":"

      Number of tiles pending to be downloaded.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC16_downloadedBytes33_D06B6E21D1152A2FAE42E90A57D8E9B9LLs6UInt64Vvp":{"name":"_downloadedBytes","abstract":"

      The variable that actually keeps the count of the downloaded bytes.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC15downloadedBytess6UInt64Vvp":{"name":"downloadedBytes","abstract":"

      Total number of downloaded data bytes.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC20averageTileSizeBytess6UInt64Vvp":{"name":"averageTileSizeBytes","abstract":"

      Returns the average

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/c:@M@MapCache@objc(cs)RegionDownloader(py)downloadedTiles":{"name":"downloadedTiles","abstract":"

      Keeps the number of tiles already downloaded successfully or failed.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC24_successfulTileDownloads33_D06B6E21D1152A2FAE42E90A57D8E9B9LLs6UInt64Vvp":{"name":"_successfulTileDownloads","abstract":"

      Number of successfully downloaded tiles.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/c:@M@MapCache@objc(cs)RegionDownloader(py)successfulTileDownloads":{"name":"successfulTileDownloads","abstract":"

      Keeps the number of tiles already downloaded.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC20_failedTileDownloads33_D06B6E21D1152A2FAE42E90A57D8E9B9LLs6UInt64Vvp":{"name":"_failedTileDownloads","abstract":"

      Keeps the number of tiles failes to be downloaded.","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/c:@M@MapCache@objc(cs)RegionDownloader(py)failedTileDownloads":{"name":"failedTileDownloads","abstract":"

      Number of tiles to be downloaded

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC22nextPercentageToNotifySdvp":{"name":"nextPercentageToNotify","abstract":"

      Percentage to notify thought delegate.","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC33incrementInPercentageNotificationSdvp":{"name":"incrementInPercentageNotification","abstract":"

      The downloader will notify the delegate every time this.","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC22lastPercentageNotifiedSdvp":{"name":"lastPercentageNotified","abstract":"

      Last percentage notified to the deletage.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC20downloadedPercentageSdvp":{"name":"downloadedPercentage","abstract":"

      Percentage of tiles pending to download.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC8delegateAA0cD8Delegate_pSgvp":{"name":"delegate","abstract":"

      Delegate.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC15downloaderQueueSo17OS_dispatch_queueCvp":{"name":"downloaderQueue","abstract":"

      Queue to download the stuff.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC03forC003mapB0AcA010TileCoordsC0C_AA0aB8Protocol_ptcfc":{"name":"init(forRegion:mapCache:)","abstract":"

      Initializes the downloader with the region and the MapCache.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC13resetCountersyyF":{"name":"resetCounters()","abstract":"

      Resets downloader counters.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC5startyyF":{"name":"start()","abstract":"

      Starts download.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC08estimateC8ByteSizes6UInt64VyF":{"name":"estimateRegionByteSize()","abstract":"

      Returns an estimation of the total number of bytes the whole region may occupy.","parent_name":"RegionDownloader"},"Classes/MapCache.html#/s:8MapCacheAAC6configAA0aB6ConfigVvp":{"name":"config","abstract":"

      Cofiguration that will be used to set up the behavior of the MapCache instance

      ","parent_name":"MapCache"},"Classes/MapCache.html#/s:8MapCacheAAC04diskB0AA04DiskB0Cvp":{"name":"diskCache","abstract":"

      It manages the physical storage of the tile images in the device

      ","parent_name":"MapCache"},"Classes/MapCache.html#/s:8MapCacheAAC14operationQueueSo011NSOperationD0Cvp":{"name":"operationQueue","abstract":"

      Manages the queue of network requests for retrieving the tiles

      ","parent_name":"MapCache"},"Classes/MapCache.html#/s:8MapCacheAAC10withConfigAbA0abD0V_tcfc":{"name":"init(withConfig:)","abstract":"

      Constructor. It sets the config variable and initializes the diskCache with the name and capacity set in the config.

      ","parent_name":"MapCache"},"Classes/MapCache.html#/s:8MapCacheAAC3url11forTilePath10Foundation3URLVSo013MKTileOverlayF0a_tF":{"name":"url(forTilePath:)","abstract":"

      Returns the URL for a tile.

      ","parent_name":"MapCache"},"Classes/MapCache.html#/s:8MapCacheAAC8cacheKey7forPathSSSo013MKTileOverlayF0a_tF":{"name":"cacheKey(forPath:)","abstract":"

      For the path passed as argument it creates a unique key to be used in DiskCache.

      ","parent_name":"MapCache"},"Classes/MapCache.html#/s:8MapCacheAAC19fetchTileFromServer2at7failure7successySo17MKTileOverlayPatha_ys5Error_pSgcSgy10Foundation4DataVctF":{"name":"fetchTileFromServer(at:failure:success:)","abstract":"

      Fetches tile from server.","parent_name":"MapCache"},"Classes/MapCache.html#/s:8MapCacheAAC8loadTile2at6resultySo17MKTileOverlayPatha_y10Foundation4DataVSg_s5Error_pSgtctF":{"name":"loadTile(at:result:)","abstract":"

      Returns the tile to be displayed on the overlay.","parent_name":"MapCache"},"Classes/MapCache.html#/s:8MapCacheAAC8diskSizes6UInt64Vvp":{"name":"diskSize","abstract":"

      Currently size of the cache

      ","parent_name":"MapCache"},"Classes/MapCache.html#/s:8MapCacheAAC17calculateDiskSizes6UInt64VyF":{"name":"calculateDiskSize()","abstract":"

      Calculates the disk space allocated in dis for the cache

      ","parent_name":"MapCache"},"Classes/MapCache.html#/s:8MapCacheAAC5clear12completitionyyycSg_tF":{"name":"clear(completition:)","abstract":"

      Clears the cache.","parent_name":"MapCache"},"Classes/MD5.html#/s:8MapCache3MD5C1s33_FDBD59F52EA1EDEB4C781BB1327F97FELLSays6UInt32VGvp":{"name":"s","abstract":"

      specifies the per-round shift amounts

      ","parent_name":"MD5"},"Classes/MD5.html#/s:8MapCache3MD5C1k33_FDBD59F52EA1EDEB4C781BB1327F97FELLSays6UInt32VGvp":{"name":"k","abstract":"

      binary integer part of the sines of integers (Radians)

      ","parent_name":"MD5"},"Classes/MD5.html#/s:8MapCache3MD5C1h33_FDBD59F52EA1EDEB4C781BB1327F97FELLSays6UInt32VGvp":{"name":"h","abstract":"

      H

      ","parent_name":"MD5"},"Classes/MD5.html#/s:8MapCache3MD5C9calculateSays5UInt8VGyF":{"name":"calculate()","abstract":"

      Calculates the MD5 as an array of UInt8

      ","parent_name":"MD5"},"Classes/HashBase.html#/s:8MapCache8HashBaseC4sizeSivpZ":{"name":"size","parent_name":"HashBase"},"Classes/HashBase.html#/s:8MapCache8HashBaseC7messageSays5UInt8VGvp":{"name":"message","abstract":"

      Message to be converted into a MD5 string

      ","parent_name":"HashBase"},"Classes/HashBase.html#/s:8MapCache8HashBaseCyACSays5UInt8VGcfc":{"name":"init(_:)","abstract":"

      Constructor

      ","parent_name":"HashBase"},"Classes/HashBase.html#/s:8MapCache8HashBaseC7prepareySays5UInt8VGSiF":{"name":"prepare(_:)","abstract":"

      Common part for hash calculation. Prepare header data.

      ","parent_name":"HashBase"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C7baseURL10Foundation0E0VyFZ":{"name":"baseURL()","abstract":"

      Gets the root base folder to be used.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C9folderURL10Foundation0E0Vvp":{"name":"folderURL","abstract":"

      URL of the physical folder of the Cache in the file system.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C4pathSSvp":{"name":"path","abstract":"

      A shortcut for folderURL.path.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C8diskSizes6UInt64Vvp":{"name":"diskSize","abstract":"

      Sum of the allocated size in disk for the cache expressed in bytes.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C8fileSizes6UInt64VSgvp":{"name":"fileSize","abstract":"

      This is the sum of the data sizes of the files within the DiskCache

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C8capacitys6UInt64Vvp":{"name":"capacity","abstract":"

      Maximum allowed cache disk allocated size for this DiskCache","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C10cacheQueueSo17OS_dispatch_queueCvp":{"name":"cacheQueue","abstract":"

      Queue for making async operations.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C8withName8capacityACSS_s6UInt64Vtcfc":{"name":"init(withName:capacity:)","abstract":"

      Constructor

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C4path6forKeyS2S_tF":{"name":"path(forKey:)","abstract":"

      Get the path for key.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C7setData_6forKeyy10Foundation0E0V_SStF":{"name":"setData(_:forKey:)","abstract":"

      Sets the data for the key asyncronously.","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C11setDataSync_6forKeyy10Foundation0E0V_SStF":{"name":"setDataSync(_:forKey:)","abstract":"

      Sets the data for the key synchronously.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C13fetchDataSync6forKey7failure7successySS_ys5Error_pSgcSgy10Foundation0E0VctF":{"name":"fetchDataSync(forKey:failure:success:)","abstract":"

      Fetches the image data from storage synchronously.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C10removeData7withKeyySS_tF":{"name":"removeData(withKey:)","abstract":"

      Removes asynchronously the data from the diskcache for the key passed as argument.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C13removeAllDatayyyycSgF":{"name":"removeAllData(_:)","abstract":"

      Removes asynchronously all data from the cache.","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C06removeB0yyF":{"name":"removeCache()","abstract":"

      Removes the cache from the system.","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C16updateAccessDate_3keyy10Foundation4DataVSgyXA_SStF":{"name":"updateAccessDate(_:key:)","abstract":"

      Asynchronously updates the access date of a file.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C09calculateC4Sizes6UInt64VyF":{"name":"calculateDiskSize()","abstract":"

      Calculates the size used by all the files in the cache.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C15controlCapacity33_FC193A7AE40E49CC84DE49A3128B2975LLyyF":{"name":"controlCapacity()","abstract":"

      It checks if the capacity of the cache has been reached. If so, it removes the least recently used file (LRU).

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C06updateC10AccessDate33_FC193A7AE40E49CC84DE49A3128B2975LL6atPathSbSS_tF":{"name":"updateDiskAccessDate(atPath:)","abstract":"

      Updates the time a file was accessed for the last time.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C10removeFile33_FC193A7AE40E49CC84DE49A3128B2975LL6atPathySS_tF":{"name":"removeFile(atPath:)","abstract":"

      Removes a file syncrhonously.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C9substract33_FC193A7AE40E49CC84DE49A3128B2975LL8diskSizeys6UInt64V_tF":{"name":"substract(diskSize:)","abstract":"

      Substracts from the cachesize the disk size passed as parameter.","parent_name":"DiskCache"},"Classes/CachedTileOverlayRenderer.html#/c:@M@MapCache@objc(cs)CachedTileOverlayRenderer(im)canDrawMapRect:zoomScale:":{"name":"canDraw(_:zoomScale:)","abstract":"

      Indicates if the renderer is ready to draw. It´s always true

      ","parent_name":"CachedTileOverlayRenderer"},"Classes/CachedTileOverlayRenderer.html#/c:@M@MapCache@objc(cs)CachedTileOverlayRenderer(im)drawMapRect:zoomScale:inContext:":{"name":"draw(_:zoomScale:in:)","abstract":"

      Draws the tile in the map

      ","parent_name":"CachedTileOverlayRenderer"},"Classes/CachedTileOverlay.html#/s:8MapCache17CachedTileOverlayC03mapB0AA0aB8Protocol_pvp":{"name":"mapCache","abstract":"

      A class that implements the MapCacheProtocol

      ","parent_name":"CachedTileOverlay"},"Classes/CachedTileOverlay.html#/s:8MapCache17CachedTileOverlayC03useB0Sbvp":{"name":"useCache","abstract":"

      If true loadTile uses the implementation of the mapCache var. If false, uses the","parent_name":"CachedTileOverlay"},"Classes/CachedTileOverlay.html#/s:8MapCache17CachedTileOverlayC04withB0AcA0aB8Protocol_p_tcfc":{"name":"init(withCache:)","abstract":"

      Constructor.

      ","parent_name":"CachedTileOverlay"},"Classes/CachedTileOverlay.html#/c:@M@MapCache@objc(cs)CachedTileOverlay(im)URLForTilePath:":{"name":"url(forTilePath:)","abstract":"

      Generates the URL for the tile to be requested.","parent_name":"CachedTileOverlay"},"Classes/CachedTileOverlay.html#/c:@M@MapCache@objc(cs)CachedTileOverlay(im)loadTileAtPath:result:":{"name":"loadTile(at:result:)","abstract":"

      When invoked it will load the tile using the standard OS implementation (if useCacheis false)","parent_name":"CachedTileOverlay"},"Classes/CachedTileOverlay.html#/s:8MapCache17CachedTileOverlayC10shouldZoom2atSb12CoreGraphics7CGFloatV_tF":{"name":"shouldZoom(at:)","abstract":"

      Tells whether or not to upsample and show a lesser detailed z level","parent_name":"CachedTileOverlay"},"Classes/CachedTileOverlay.html#/s:8MapCache17CachedTileOverlayC07tilesInA4Rect4rect5scaleSayAA08ZoomableD0VGSo05MKMapH0a_12CoreGraphics7CGFloatVtF":{"name":"tilesInMapRect(rect:scale:)","abstract":"

      Given the maximum zoom level for the tileset (mapCache.config.maximumZ) it will return the tile, map rects, and additional scaling factor for upscaling tiles.

      ","parent_name":"CachedTileOverlay"},"Classes/CachedTileOverlay.html":{"name":"CachedTileOverlay","abstract":"

      Whenever a tile is requested by the MapView, it calls the MKTileOverlay.loadTile."},"Classes/CachedTileOverlayRenderer.html":{"name":"CachedTileOverlayRenderer","abstract":"

      A Tile overlay that supports to zoom beyond the maximumZ

      "},"Classes/DiskCache.html":{"name":"DiskCache","abstract":"

      A specialized cache for storing data in disk."},"Classes/HashBase.html":{"name":"HashBase","abstract":"

      HashBase"},"Classes/MD5.html":{"name":"MD5","abstract":"

      An actual implementation of the MD5"},"Classes/MapCache.html":{"name":"MapCache","abstract":"

      This is the main implementation of the MapCacheProtocol, the actual cache

      "},"Classes/RegionDownloader.html":{"name":"RegionDownloader","abstract":"

      Hey! I need to download this area of the map."},"Classes/TileCoords.html":{"name":"TileCoords","abstract":"

      Class to convert from Map Tiles to coordinates and from coordinates to tiles

      "},"Classes/TileCoordsRegion.html":{"name":"TileCoordsRegion","abstract":"

      3 dimensional square region in a tile map."},"Classes.html":{"name":"Classes","abstract":"

      The following classes are available globally.

      "},"Enums.html":{"name":"Enumerations","abstract":"

      The following enumerations are available globally.

      "},"Extensions.html":{"name":"Extensions","abstract":"

      The following extensions are available globally.

      "},"Functions.html":{"name":"Functions","abstract":"

      The following functions are available globally.

      "},"Protocols.html":{"name":"Protocols","abstract":"

      The following protocols are available globally.

      "},"Structs.html":{"name":"Structures","abstract":"

      The following structures are available globally.

      "},"Typealiases.html":{"name":"Type Aliases","abstract":"

      The following type aliases are available globally.

      "}} \ No newline at end of file +{"Typealiases.html#/s:8MapCache4Zooma":{"name":"Zoom","abstract":"

      An alias for UInt8. Used to indicate that the variable is holding a zoom value.

      "},"Typealiases.html#/s:8MapCache10TileNumbera":{"name":"TileNumber","abstract":"

      Tile number in a map.

      "},"Structs/ZoomableTile.html#/s:8MapCache12ZoomableTileV12maximumZPathSo17MKTileOverlayPathavp":{"name":"maximumZPath","abstract":"

      Path for the tile with maximumZ supported by the tile server set in the config.","parent_name":"ZoomableTile"},"Structs/ZoomableTile.html#/s:8MapCache12ZoomableTileV4rectSo9MKMapRectavp":{"name":"rect","abstract":"

      Rectangle area ocupied by this tile

      ","parent_name":"ZoomableTile"},"Structs/ZoomableTile.html#/s:8MapCache12ZoomableTileV8overZoomSivp":{"name":"overZoom","abstract":"

      Scale over the tile of the maximumZ path.","parent_name":"ZoomableTile"},"Structs/ZoomRangeIterator.html#/s:8MapCache17ZoomRangeIteratorV7counters5UInt8Vvp":{"name":"counter","abstract":"

      Keeps the counter of the iterator.

      ","parent_name":"ZoomRangeIterator"},"Structs/ZoomRangeIterator.html#/s:8MapCache17ZoomRangeIteratorV5rangeAA0cD0Vvp":{"name":"range","abstract":"

      The zoom range in question.

      ","parent_name":"ZoomRangeIterator"},"Structs/ZoomRangeIterator.html#/s:8MapCache17ZoomRangeIteratorVyAcA0cD0Vcfc":{"name":"init(_:)","abstract":"

      Receives the range to iterate.

      ","parent_name":"ZoomRangeIterator"},"Structs/ZoomRangeIterator.html#/s:8MapCache17ZoomRangeIteratorV4nexts5UInt8VSgyF":{"name":"next()","abstract":"

      Gets next zoom value.

      ","parent_name":"ZoomRangeIterator"},"Structs/ZoomRange.html#/s:8MapCache9ZoomRangeV3mins5UInt8Vvp":{"name":"min","abstract":"

      Minimum zoom in this range.

      ","parent_name":"ZoomRange"},"Structs/ZoomRange.html#/s:8MapCache9ZoomRangeV3maxs5UInt8Vvp":{"name":"max","abstract":"

      Maximum zoom in this range.

      ","parent_name":"ZoomRange"},"Structs/ZoomRange.html#/s:8MapCache9ZoomRangeV04diffC0s5UInt8Vvp":{"name":"diffZoom","abstract":"

      Difference between max zoom and min zoom.

      ","parent_name":"ZoomRange"},"Structs/ZoomRange.html#/s:8MapCache9ZoomRangeV5counts5UInt8Vvp":{"name":"count","abstract":"

      Number of zooms in this range

      ","parent_name":"ZoomRange"},"Structs/ZoomRange.html#/s:8MapCache9ZoomRangeVyACSgs5UInt8V_AFtcfc":{"name":"init(_:_:)","abstract":"

      Creates the range of zooms.

      ","parent_name":"ZoomRange"},"Structs/ZoomRange.html#/s:8MapCache9ZoomRangeV7toArraySays5UInt8VGyF":{"name":"toArray()","abstract":"

      Converts the zoom range in to an array.

      ","parent_name":"ZoomRange"},"Structs/ZoomRange.html#/s:8MapCache9ZoomRangeV12makeIteratorAA0cdF0VyF":{"name":"makeIterator()","abstract":"

      Returns the iterator for this range.","parent_name":"ZoomRange"},"Structs/TileRangeIterator.html#/s:8MapCache17TileRangeIteratorV5rangeAA0cD0Vvp":{"name":"range","abstract":"

      Range for the counter

      ","parent_name":"TileRangeIterator"},"Structs/TileRangeIterator.html#/s:8MapCache17TileRangeIteratorV7counters6UInt64Vvp":{"name":"counter","abstract":"

      Current counter value

      ","parent_name":"TileRangeIterator"},"Structs/TileRangeIterator.html#/s:8MapCache17TileRangeIteratorV10maxCounters6UInt64Vvp":{"name":"maxCounter","abstract":"

      Max value counter can take.

      ","parent_name":"TileRangeIterator"},"Structs/TileRangeIterator.html#/s:8MapCache17TileRangeIteratorV7columnss6UInt64Vvp":{"name":"columns","abstract":"

      Number of columns

      ","parent_name":"TileRangeIterator"},"Structs/TileRangeIterator.html#/s:8MapCache17TileRangeIteratorV4rowss6UInt64Vvp":{"name":"rows","abstract":"

      Number of rows

      ","parent_name":"TileRangeIterator"},"Structs/TileRangeIterator.html#/s:8MapCache17TileRangeIteratorVyAcA0cD0Vcfc":{"name":"init(_:)","abstract":"

      Initializer of the iterator.","parent_name":"TileRangeIterator"},"Structs/TileRangeIterator.html#/s:8MapCache17TileRangeIteratorV4nextAA0C6CoordsCSgyF":{"name":"next()","abstract":"

      The function that is required by the Iterator protocol.

      ","parent_name":"TileRangeIterator"},"Structs/TileRange.html#/s:8MapCache9TileRangeV4zooms5UInt8Vvp":{"name":"zoom","abstract":"

      Zoom level.

      ","parent_name":"TileRange"},"Structs/TileRange.html#/s:8MapCache9TileRangeV03minC1Xs6UInt64Vvp":{"name":"minTileX","abstract":"

      Min value of tile in X axis.

      ","parent_name":"TileRange"},"Structs/TileRange.html#/s:8MapCache9TileRangeV03maxC1Xs6UInt64Vvp":{"name":"maxTileX","abstract":"

      Max value of tile in X axis.

      ","parent_name":"TileRange"},"Structs/TileRange.html#/s:8MapCache9TileRangeV03minC1Ys6UInt64Vvp":{"name":"minTileY","abstract":"

      Min value of tile in Y axis.

      ","parent_name":"TileRange"},"Structs/TileRange.html#/s:8MapCache9TileRangeV03maxC1Ys6UInt64Vvp":{"name":"maxTileY","abstract":"

      Min value of tile in Y axis.

      ","parent_name":"TileRange"},"Structs/TileRange.html#/s:8MapCache9TileRangeV5diffXs6UInt64Vvp":{"name":"diffX","abstract":"

      Difference between maxTileX and minTileX

      ","parent_name":"TileRange"},"Structs/TileRange.html#/s:8MapCache9TileRangeV5diffYs6UInt64Vvp":{"name":"diffY","abstract":"

      Difference between maxTileY and minTileY

      ","parent_name":"TileRange"},"Structs/TileRange.html#/s:8MapCache9TileRangeV4rowss6UInt64Vvp":{"name":"rows","abstract":"

      Number of rows in the range.

      ","parent_name":"TileRange"},"Structs/TileRange.html#/s:8MapCache9TileRangeV7columnss6UInt64Vvp":{"name":"columns","abstract":"

      Number of columns in the range.

      ","parent_name":"TileRange"},"Structs/TileRange.html#/s:8MapCache9TileRangeV5counts6UInt64Vvp":{"name":"count","abstract":"

      Counts the number of tiles in the range (columns x rows).

      ","parent_name":"TileRange"},"Structs/TileRange.html#/s:8MapCache9TileRangeV12makeIteratorAA0cdF0VyF":{"name":"makeIterator()","abstract":"

      Sequence iterator.","parent_name":"TileRange"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV11urlTemplateSSvp":{"name":"urlTemplate","abstract":"

      Each time a tile is going to be retrieved from the server its x,y and z (zoom) values are plugged into this URL template.

      ","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV10subdomainsSaySSGvp":{"name":"subdomains","abstract":"

      Subdomains used on the urlTemplate

      ","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV8minimumZSivp":{"name":"minimumZ","abstract":"

      It must be smaller or equal than maximumZ

      ","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV8maximumZSivp":{"name":"maximumZ","abstract":"

      Maximum supported zoom by the tile server

      ","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV16overZoomMaximumZSbvp":{"name":"overZoomMaximumZ","abstract":"

      If set to true when zooming in beyond maximumZ the tiles at maximumZ will be upsampled and shown.","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV9cacheNameSSvp":{"name":"cacheName","abstract":"

      Name of the cache","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV8capacitys6UInt64Vvp":{"name":"capacity","abstract":"

      Cache capacity in bytes

      ","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV8tileSizeSo6CGSizeVvp":{"name":"tileSize","abstract":"

      Tile size of the tile. Default is 256x256

      ","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV12loadTileModeAA04LoadeF0Ovp":{"name":"loadTileMode","abstract":"

      Load tile mode.","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigVACycfc":{"name":"init()","abstract":"

      Constructor with all the default values.

      ","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV15withUrlTemplateACSS_tcfc":{"name":"init(withUrlTemplate:)","abstract":"

      Constructor that overwrites the urlTemplate`

      ","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV15randomSubdomainSSSgyF":{"name":"randomSubdomain()","abstract":"

      Selects one of the subdomains randomly.

      ","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV19subdomainRoundRobin33_DF0222806B55D79AD742F8F62B690241LLSivp":{"name":"subdomainRoundRobin","abstract":"

      Keeps track of the index of the last subdomain requested for round robin

      ","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV19roundRobinSubdomainSSSgyF":{"name":"roundRobinSubdomain()","abstract":"

      Round Robin algorithm","parent_name":"MapCacheConfig"},"Structs/Log/Level.html#/s:8MapCache3LogV5Level33_B0EB5F66C57FF526BB04701F7376DD27LLO5DebugyA2FmF":{"name":"Debug","abstract":"

      [Debug] For displaying messages useful during development.

      ","parent_name":"Level"},"Structs/Log/Level.html#/s:8MapCache3LogV5Level33_B0EB5F66C57FF526BB04701F7376DD27LLO5ErroryA2FmF":{"name":"Error","abstract":"

      [ERROR]For displaying messages of bad situations, very, very bad situations.

      ","parent_name":"Level"},"Structs/Log.html#/s:8MapCache3LogV3tag33_B0EB5F66C57FF526BB04701F7376DD27LLSSvpZ":{"name":"tag","abstract":"

      The tag [MapCache]

      ","parent_name":"Log"},"Structs/Log/Level.html":{"name":"Level","abstract":"

      Log Levels

      ","parent_name":"Log"},"Structs/Log.html#/s:8MapCache3LogV3log33_B0EB5F66C57FF526BB04701F7376DD27LLyyAC5LevelAELLO_SSyXKs5Error_pSgtFZ":{"name":"log(_:_:_:)","abstract":"

      The actual method that prints.

      ","parent_name":"Log"},"Structs/Log.html#/s:8MapCache3LogV5debug7message5errorySSyXK_s5Error_pSgtFZ":{"name":"debug(message:error:)","abstract":"

      For displaying messages. Useful during development of this package.

      ","parent_name":"Log"},"Structs/Log.html#/s:8MapCache3LogV5error7messageADySSyXK_s5Error_pSgtFZ":{"name":"error(message:error:)","abstract":"

      These messages are displayed independently of the debug mode.","parent_name":"Log"},"Structs/BytesSequence.html#/s:8MapCache13BytesSequenceV9chunkSizeSivp":{"name":"chunkSize","abstract":"

      Chunk size

      ","parent_name":"BytesSequence"},"Structs/BytesSequence.html#/s:8MapCache13BytesSequenceV4dataSays5UInt8VGvp":{"name":"data","abstract":"

      Data

      ","parent_name":"BytesSequence"},"Structs/BytesSequence.html#/s:8MapCache13BytesSequenceV12makeIterators03AnyF0Vys10ArraySliceVys5UInt8VGGyF":{"name":"makeIterator()","abstract":"

      makeIterator

      ","parent_name":"BytesSequence"},"Structs/BytesSequence.html":{"name":"BytesSequence","abstract":"

      Bytes sequence for the implementation of MD5"},"Structs/Log.html":{"name":"Log","abstract":"

      For logging messages on console.

      "},"Structs/MapCacheConfig.html":{"name":"MapCacheConfig","abstract":"

      Settings of your MapCache.

      "},"Structs/TileRange.html":{"name":"TileRange","abstract":"

      For a particular zoom level, defines a range of tiles."},"Structs/TileRangeIterator.html":{"name":"TileRangeIterator","abstract":"

      Iterator of a TileRange.

      "},"Structs/ZoomRange.html":{"name":"ZoomRange","abstract":"

      A range of zooms."},"Structs/ZoomRangeIterator.html":{"name":"ZoomRangeIterator","abstract":"

      Iterator that allows the use of ZoomRange in a for loop.

      "},"Structs/ZoomableTile.html":{"name":"ZoomableTile","abstract":"

      Specifies a single tile and area of the tile that should upscaled.

      "},"Protocols/RegionDownloaderDelegate.html#/c:@M@MapCache@objc(pl)RegionDownloaderDelegate(im)regionDownloader:didDownloadPercentage:":{"name":"regionDownloader(_:didDownloadPercentage:)","abstract":"

      Did download the percentage.

      ","parent_name":"RegionDownloaderDelegate"},"Protocols/RegionDownloaderDelegate.html#/c:@M@MapCache@objc(pl)RegionDownloaderDelegate(im)regionDownloader:didFinishDownload:":{"name":"regionDownloader(_:didFinishDownload:)","abstract":"

      Did Finish Download all tiles.

      ","parent_name":"RegionDownloaderDelegate"},"Protocols/MapCacheProtocol.html#/s:8MapCache0aB8ProtocolP6configAA0aB6ConfigVvp":{"name":"config","abstract":"

      An instance of MapCacheConfig

      ","parent_name":"MapCacheProtocol"},"Protocols/MapCacheProtocol.html#/s:8MapCache0aB8ProtocolP3url11forTilePath10Foundation3URLVSo013MKTileOverlayG0a_tF":{"name":"url(forTilePath:)","abstract":"

      The implementation shall convert a tile path into a URL object

      ","parent_name":"MapCacheProtocol"},"Protocols/MapCacheProtocol.html#/s:8MapCache0aB8ProtocolP8loadTile2at6resultySo17MKTileOverlayPatha_y10Foundation4DataVSg_s5Error_pSgtctF":{"name":"loadTile(at:result:)","abstract":"

      The implementation shall return either the tile as a Data object or an Error if the tile could not be retrieved.

      ","parent_name":"MapCacheProtocol"},"Protocols/MapCacheProtocol.html":{"name":"MapCacheProtocol","abstract":"

      This protocol shall be implemented by any cache used in MapCache.

      "},"Protocols/RegionDownloaderDelegate.html":{"name":"RegionDownloaderDelegate","abstract":"

      Delegate protocol of RegionDownloader."},"Functions.html#/s:8MapCache17isNoSuchFileError33_FC193A7AE40E49CC84DE49A3128B2975LLySbs0G0_pSgF":{"name":"isNoSuchFileError(_:)","abstract":"

      Error when there is not a file.

      "},"Functions.html#/s:8MapCache1loiySbSo8NSNumberC_ADtF":{"name":"<(_:_:)","abstract":"

      Overload of the the < operator

      "},"Functions.html#/s:8MapCache12arrayOfBytes5value6lengthSays5UInt8VGx_SiSgtlF":{"name":"arrayOfBytes(value:length:)","abstract":"

      array of bytes, little-endian representation

      "},"Functions.html#/s:8MapCache10rotateLeft1v1ns6UInt32VAF_AFtF":{"name":"rotateLeft(v:n:)","abstract":"

      Rotate left for MD5 implementation

      "},"Functions.html#/s:8MapCache18sliceToUInt32ArrayySays0E0VGs0F5SliceVys5UInt8VGF":{"name":"sliceToUInt32Array(_:)","abstract":"

      sliceToUInt32 for MD5 implementation

      "},"Extensions/MKZoomScale.html#/s:14CoreFoundation7CGFloatV8MapCacheE11toZoomLevel8tileSizeSiSo6CGSizeV_tF":{"name":"toZoomLevel(tileSize:)","abstract":"

      Converts from standard MapKit MKZoomScale to tile zoom level

      ","parent_name":"MKZoomScale"},"Extensions/MKTileOverlayPath.html#/s:So17MKTileOverlayPatha8MapCacheE10tileCoordsAbC04TileG0C_tcfc":{"name":"init(tileCoords:)","abstract":"

      Creates a MkTileOverlayPath from a MapCache TileCoords

      ","parent_name":"MKTileOverlayPath"},"Extensions/MKTileOverlayPath.html#/s:So17MKTileOverlayPatha8MapCacheE12toTileCoordsAC0gH0CSgyF":{"name":"toTileCoords()","abstract":"

      Returns the tile overlay path as a TileCoords object.

      ","parent_name":"MKTileOverlayPath"},"Extensions/MKMapView.html#/s:So9MKMapViewC8MapCacheE03useD0_010canReplaceC7ContentAC17CachedTileOverlayCAC0cD8Protocol_p_SbtF":{"name":"useCache(_:canReplaceMapContent:)","abstract":"

      Will tell the map to use the cache passed as parameter for getting the tiles.

      ","parent_name":"MKMapView"},"Extensions/MKMapView.html#/s:So9MKMapViewC8MapCacheE03mapD8Renderer10forOverlaySo09MKOverlayF0CSo0I0_p_tF":{"name":"mapCacheRenderer(forOverlay:)","abstract":"

      Call this method within the MKMapView delegate function","parent_name":"MKMapView"},"Extensions/MKMapView.html#/s:So9MKMapViewC8MapCacheE9zoomLevelSivp":{"name":"zoomLevel","abstract":"

      TODO: Implement this correctly.","parent_name":"MKMapView"},"Extensions/URL.html#/s:10Foundation3URLV8MapCacheE28regularFileAllocatedDiskSizes6UInt64VyKF":{"name":"regularFileAllocatedDiskSize()","abstract":"

      Returns the allocated size in disk for a regular file in bytes.","parent_name":"URL"},"Extensions/URL.html#/s:10Foundation3URLV8MapCacheE15regularFileSizes6UInt64VyKF":{"name":"regularFileSize()","abstract":"

      Returns the allocated file a regular file in bytes.

      ","parent_name":"URL"},"Extensions/String.html#/s:SS8MapCacheE15escapedFilenameSSyF":{"name":"escapedFilename()","abstract":"

      Returns the escaped version of a filename.

      ","parent_name":"String"},"Extensions/String.html#/s:SS8MapCacheE5toMD5SSyF":{"name":"toMD5()","abstract":"

      Returns the md5 digest of this string.

      ","parent_name":"String"},"Extensions/String.html#/s:SS8MapCacheE11MD5FilenameSSyF":{"name":"MD5Filename()","abstract":"

      Returns the path for the filename whose name is hold in this string.

      ","parent_name":"String"},"Extensions/NSMutableData.html#/s:So13NSMutableDataC8MapCacheE11appendBytes07arrayOfF0ySays5UInt8VG_tF":{"name":"appendBytes(arrayOfBytes:)","abstract":"

      Convenient way to append bytes

      ","parent_name":"NSMutableData"},"Extensions/Int.html#/s:Si8MapCacheE5bytes10totalBytesSays5UInt8VGSi_tF":{"name":"bytes(totalBytes:)","abstract":"

      Array of bytes with optional padding (little-endian)

      ","parent_name":"Int"},"Extensions/FileManager/fileSizeForDirectory%28at%3A%29.html#/s:So13NSFileManagerC8MapCacheE20fileSizeForDirectory2ats6UInt64V10Foundation3URLV_tKF12errorHandlerL__0M0SbAJ_s5Error_ptF":{"name":"errorHandler(_:error:)","abstract":"

      Handler in case of error when calculating the filesize

      ","parent_name":"fileSizeForDirectory(at:)"},"Extensions/FileManager/allocatedDiskSizeForDirectory%28at%3A%29.html#/s:So13NSFileManagerC8MapCacheE29allocatedDiskSizeForDirectory2ats6UInt64V10Foundation3URLV_tKF12errorHandlerL__0N0SbAJ_s5Error_ptF":{"name":"errorHandler(_:error:)","abstract":"

      Error handler in case there is a problem when getting the information from the disk

      ","parent_name":"allocatedDiskSizeForDirectory(at:)"},"Extensions/FileManager.html#/s:So13NSFileManagerC8MapCacheE28enumerateContentsOfDirectory6atPath17orderedByProperty9ascending10usingBlockySS_SSSby10Foundation3URLV_SiSbztXEtF":{"name":"enumerateContentsOfDirectory(atPath:orderedByProperty:ascending:usingBlock:)","abstract":"

      Gets the list of files of this the directory.

      ","parent_name":"FileManager"},"Extensions/FileManager/allocatedDiskSizeForDirectory%28at%3A%29.html":{"name":"allocatedDiskSizeForDirectory(at:)","abstract":"

      Calculate the allocated size of a directory and all its contents on the volume.

      ","parent_name":"FileManager"},"Extensions/FileManager/fileSizeForDirectory%28at%3A%29.html":{"name":"fileSizeForDirectory(at:)","abstract":"

      Calculates the actual sum of file sizes

      ","parent_name":"FileManager"},"Extensions/FileManager.html":{"name":"FileManager","abstract":"

      Class for handling the operations with file folders.

      "},"Extensions/Int.html":{"name":"Int","abstract":"

      Extension for the implementation of MD5

      "},"Extensions/NSMutableData.html":{"name":"NSMutableData","abstract":"

      Extension for the implementation of MD5

      "},"Extensions/String.html":{"name":"String","abstract":"

      Extension that adds a few methods that are useful for the DiskCache.

      "},"Extensions/URL.html":{"name":"URL"},"Extensions/MKMapView.html":{"name":"MKMapView","abstract":"

      Extension that provides MKMapView support to use MapCache.

      "},"Extensions/MKTileOverlayPath.html":{"name":"MKTileOverlayPath","abstract":"

      Extension to ease MapCache stuff :)

      "},"Extensions/MKZoomScale.html":{"name":"MKZoomScale","abstract":"

      Extension for MapCache

      "},"Enums/TileRangeError.html#/s:8MapCache14TileRangeErrorO0cD8CreationyA2CmF":{"name":"TileRangeCreation","abstract":"

      Error to be thrown in case of an issue during creation.

      ","parent_name":"TileRangeError"},"Enums/TileError.html#/s:8MapCache9TileErrorO8overflowyA2CmF":{"name":"overflow","abstract":"

      Overflow in the tile

      ","parent_name":"TileError"},"Enums/LongitudeError.html#/s:8MapCache14LongitudeErrorO11overflowMinyA2CmF":{"name":"overflowMin","abstract":"

      Overflow if latitud is smaller than the minimum.

      ","parent_name":"LongitudeError"},"Enums/LongitudeError.html#/s:8MapCache14LongitudeErrorO11overflowMaxyA2CmF":{"name":"overflowMax","abstract":"

      Overflow if latitud is greater than the maximum.

      ","parent_name":"LongitudeError"},"Enums/LatitudeError.html#/s:8MapCache13LatitudeErrorO11overflowMinyA2CmF":{"name":"overflowMin","abstract":"

      Overflow if latitud is smaller than the minimum.

      ","parent_name":"LatitudeError"},"Enums/LatitudeError.html#/s:8MapCache13LatitudeErrorO11overflowMaxyA2CmF":{"name":"overflowMax","abstract":"

      Overflow if latitud is greater than the maximum.

      ","parent_name":"LatitudeError"},"Enums/ZoomError.html#/s:8MapCache9ZoomErrorO12largerThan19yA2CmF":{"name":"largerThan19","abstract":"

      Zoom largest value is 19.

      ","parent_name":"ZoomError"},"Enums/LoadTileMode.html#/s:8MapCache12LoadTileModeO15cacheThenServeryA2CmF":{"name":"cacheThenServer","abstract":"

      Default. If the tile exists in the cache, return it, otherwise, fetch it from server (and cache the result).

      ","parent_name":"LoadTileMode"},"Enums/LoadTileMode.html#/s:8MapCache12LoadTileModeO010serverThenB0yA2CmF":{"name":"serverThenCache","abstract":"

      Always return the tile from the server unless there is some problem with the network.","parent_name":"LoadTileMode"},"Enums/LoadTileMode.html#/s:8MapCache12LoadTileModeO9cacheOnlyyA2CmF":{"name":"cacheOnly","abstract":"

      Only return data from cache.","parent_name":"LoadTileMode"},"Enums/LoadTileMode.html#/s:8MapCache12LoadTileModeO10serverOnlyyA2CmF":{"name":"serverOnly","abstract":"

      Always return the tile from the server, as well as updating the cache.","parent_name":"LoadTileMode"},"Enums/LoadTileMode.html":{"name":"LoadTileMode","abstract":"

      Defines the strategies that can be used for retrieving the tiles from the cache"},"Enums/ZoomError.html":{"name":"ZoomError","abstract":"

      Errors for Zoom.

      "},"Enums/LatitudeError.html":{"name":"LatitudeError","abstract":"

      Errors for a latitude.

      "},"Enums/LongitudeError.html":{"name":"LongitudeError","abstract":"

      Errors for a longitude.

      "},"Enums/TileError.html":{"name":"TileError","abstract":"

      Errors for a tile

      "},"Enums/TileRangeError.html":{"name":"TileRangeError","abstract":"

      Errors for tile range

      "},"Classes/TileCoordsRegion.html#/s:8MapCache16TileCoordsRegionC7topLeftAA0cD0Cvp":{"name":"topLeft","abstract":"

      Top left tile/coordinate.

      ","parent_name":"TileCoordsRegion"},"Classes/TileCoordsRegion.html#/s:8MapCache16TileCoordsRegionC11bottomRightAA0cD0Cvp":{"name":"bottomRight","abstract":"

      Bottom right tile/coordinate.

      ","parent_name":"TileCoordsRegion"},"Classes/TileCoordsRegion.html#/s:8MapCache16TileCoordsRegionC9zoomRangeAA04ZoomG0Vvp":{"name":"zoomRange","abstract":"

      Zoom range for the region.

      ","parent_name":"TileCoordsRegion"},"Classes/TileCoordsRegion.html#/s:8MapCache16TileCoordsRegionC5counts6UInt64Vvp":{"name":"count","abstract":"

      Total number of tiles in this region for all zoom levels.

      ","parent_name":"TileCoordsRegion"},"Classes/TileCoordsRegion.html#/s:8MapCache16TileCoordsRegionC15topLeftLatitude0fG9Longitude011bottomRightH00jkI07minZoom03maxM0ACSgSd_S3ds5UInt8VALtcfc":{"name":"init(topLeftLatitude:topLeftLongitude:bottomRightLatitude:bottomRightLongitude:minZoom:maxZoom:)","abstract":"

      The region will be the area that holds the line from any top left point (P1) to any","parent_name":"TileCoordsRegion"},"Classes/TileCoordsRegion.html#/s:8MapCache16TileCoordsRegionC7topLeft11bottomRightACSgAA0cD0C_AHtcfc":{"name":"init(topLeft:bottomRight:)","abstract":"

      The region will be the area that holds the line from any top left point (P1) to any","parent_name":"TileCoordsRegion"},"Classes/TileCoordsRegion.html#/s:8MapCache16TileCoordsRegionC5count7forZooms6UInt64Vs5UInt8V_tF":{"name":"count(forZoom:)","abstract":"

      Counts for the zoom

      ","parent_name":"TileCoordsRegion"},"Classes/TileCoordsRegion.html#/s:8MapCache16TileCoordsRegionC10tileRanges7forZoomSayAA0C5RangeVGSgs5UInt8V_tF":{"name":"tileRanges(forZoom:)","abstract":"

      All the tile ranges for this particular zoom.","parent_name":"TileCoordsRegion"},"Classes/TileCoordsRegion.html#/s:8MapCache16TileCoordsRegionC10tileRangesSayAA0C5RangeVGSgyF":{"name":"tileRanges()","abstract":"

      Gets the tile ranges for all zooms.

      ","parent_name":"TileCoordsRegion"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC11maxLatitudeSdvpZ":{"name":"maxLatitude","abstract":"

      Max value of latitude that can be retrieved with tiles (-85.0511 degrees)

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC11minLatitudeSdvpZ":{"name":"minLatitude","abstract":"

      Min value of latitude that can be retrieved with tiles (-85.0511 degrees)

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC12maxLongitudeSdvpZ":{"name":"maxLongitude","abstract":"

      Max value of a longitude (<180.0).","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC12minLongitudeSdvpZ":{"name":"minLongitude","abstract":"

      Min value of a longitude (>=180.0)","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC7maxZooms5UInt8VvpZ":{"name":"maxZoom","abstract":"

      Max zoom supported in tile servers (19)

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC7minZooms5UInt8VvpZ":{"name":"minZoom","abstract":"

      Min zoom supported (0)

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC03maxC07forZooms6UInt64Vs5UInt8V_tFZ":{"name":"maxTile(forZoom:)","abstract":"

      Based on current zoom it indicates what is the max tile

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC8validate9longitudeySd_tKFZ":{"name":"validate(longitude:)","abstract":"

      Validates if longitude is between min and max allowed longitudes

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC8validate8latitudeySd_tKFZ":{"name":"validate(latitude:)","abstract":"

      Validates if a latitude is between min and max allowed latitudes.","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC8validate4zoomys5UInt8V_tKFZ":{"name":"validate(zoom:)","abstract":"

      Validate zoom is less or equal to the maxZoom","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC8validate4tile7forZoomys6UInt64V_s5UInt8VtKFZ":{"name":"validate(tile:forZoom:)","abstract":"

      Validates if the tile is within the range for the zoom","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC011longitudeToC1X0E04zooms6UInt64VSd_s5UInt8VtKFZ":{"name":"longitudeToTileX(longitude:zoom:)","abstract":"

      Returns the tile in the X axis for the longitude and zoom.","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC010latitudeToC1Y0E04zooms6UInt64VSd_s5UInt8VtKFZ":{"name":"latitudeToTileY(latitude:zoom:)","abstract":"

      Returns the tile in the Y axis for the latitude and zoom.","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC16tileXToLongitude0E1X4zoomSds6UInt64V_s5UInt8VtKFZ":{"name":"tileXToLongitude(tileX:zoom:)","abstract":"

      Returns the corresponding longitude in degrees for the tileX at zoom level

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC15tileYToLatitude0E1Y4zoomSds6UInt64V_s5UInt8VtKFZ":{"name":"tileYToLatitude(tileY:zoom:)","abstract":"

      Returns the corresponding latitude in degrees for the tileY at zoom level

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC5_zoom33_EA7126F1A3D16AFAE6DD45A5164BF908LLs5UInt8Vvp":{"name":"_zoom","abstract":"

      Holds the zoom level.","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC4zooms5UInt8Vvp":{"name":"zoom","abstract":"

      Zoom level. Read only. Use setZoom() to change it.

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC9_latitude33_EA7126F1A3D16AFAE6DD45A5164BF908LLSdvp":{"name":"_latitude","abstract":"

      Holds the actual latitude

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC8latitudeSdvp":{"name":"latitude","abstract":"

      Latitude for this tile. Use set() to change it.

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC10_longitude33_EA7126F1A3D16AFAE6DD45A5164BF908LLSdvp":{"name":"_longitude","abstract":"

      Holds the actual longitude

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC9longitudeSdvp":{"name":"longitude","abstract":"

      Longitude for this tile. Use set() to change it.

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC6_tileX33_EA7126F1A3D16AFAE6DD45A5164BF908LLs6UInt64Vvp":{"name":"_tileX","abstract":"

      Holds the actual tileX

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC5tileXs6UInt64Vvp":{"name":"tileX","abstract":"

      Tile in the X axis for current longitude and zoom. Use set() to change it.

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC6_tileY33_EA7126F1A3D16AFAE6DD45A5164BF908LLs6UInt64Vvp":{"name":"_tileY","abstract":"

      Holds the actual tileY

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC5tileYs6UInt64Vvp":{"name":"tileY","abstract":"

      Tile in the Y axis for current latitude and zoom. Use set() to change it.

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC3set4zoomys5UInt8V_tKF":{"name":"set(zoom:)","abstract":"

      Set zoom level.","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC3set5tileX0F1Yys6UInt64V_AHtKF":{"name":"set(tileX:tileY:)","abstract":"

      Set tile X and Y values.","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC3set8latitude9longitudeySd_SdtKF":{"name":"set(latitude:longitude:)","abstract":"

      Sets latitude and longitude.","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC5tileX0E1Y4zoomACSgs6UInt64V_AIs5UInt8Vtcfc":{"name":"init(tileX:tileY:zoom:)","abstract":"

      Init a TileCoords instance using tile and zoom info.","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC8latitude9longitude4zoomACSgSd_Sds5UInt8Vtcfc":{"name":"init(latitude:longitude:zoom:)","abstract":"

      Init a TileCoords instance using latitude, longitude and zoom info.","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC_4zoomACSgAC_s5UInt8Vtcfc":{"name":"init(_:zoom:)","abstract":"

      Creates a new Tile Coord with the same latitude and longitude","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC03maxC0s6UInt64VyF":{"name":"maxTile()","abstract":"

      Returns the maximum tile number for current set zoom.

      ","parent_name":"TileCoords"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC27defaultAverageTileSizeBytess6UInt64VvpZ":{"name":"defaultAverageTileSizeBytes","abstract":"

      Approximation of the average number of bytes of a tile (used with 256x256 tiles).

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC6regionAA010TileCoordsC0Cvp":{"name":"region","abstract":"

      Region that will be downloaded.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC03mapB0AA0aB8Protocol_pvp":{"name":"mapCache","abstract":"

      Cache that is going to be used for saving/loading the files.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC20totalTilesToDownloads6UInt64Vvp":{"name":"totalTilesToDownload","abstract":"

      Total number of tiles to be downloaded.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC22pendingTilesToDownloads6UInt64Vvp":{"name":"pendingTilesToDownload","abstract":"

      Number of tiles pending to be downloaded.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC16_downloadedBytes33_D06B6E21D1152A2FAE42E90A57D8E9B9LLs6UInt64Vvp":{"name":"_downloadedBytes","abstract":"

      The variable that actually keeps the count of the downloaded bytes.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC15downloadedBytess6UInt64Vvp":{"name":"downloadedBytes","abstract":"

      Total number of downloaded data bytes.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC20averageTileSizeBytess6UInt64Vvp":{"name":"averageTileSizeBytes","abstract":"

      Returns the average

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/c:@M@MapCache@objc(cs)RegionDownloader(py)downloadedTiles":{"name":"downloadedTiles","abstract":"

      Keeps the number of tiles already downloaded successfully or failed.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC24_successfulTileDownloads33_D06B6E21D1152A2FAE42E90A57D8E9B9LLs6UInt64Vvp":{"name":"_successfulTileDownloads","abstract":"

      Number of successfully downloaded tiles.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/c:@M@MapCache@objc(cs)RegionDownloader(py)successfulTileDownloads":{"name":"successfulTileDownloads","abstract":"

      Keeps the number of tiles already downloaded.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC20_failedTileDownloads33_D06B6E21D1152A2FAE42E90A57D8E9B9LLs6UInt64Vvp":{"name":"_failedTileDownloads","abstract":"

      Keeps the number of tiles failes to be downloaded.","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/c:@M@MapCache@objc(cs)RegionDownloader(py)failedTileDownloads":{"name":"failedTileDownloads","abstract":"

      Number of tiles to be downloaded

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC22nextPercentageToNotifySdvp":{"name":"nextPercentageToNotify","abstract":"

      Percentage to notify thought delegate.","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC33incrementInPercentageNotificationSdvp":{"name":"incrementInPercentageNotification","abstract":"

      The downloader will notify the delegate every time this.","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC22lastPercentageNotifiedSdvp":{"name":"lastPercentageNotified","abstract":"

      Last percentage notified to the deletage.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC20downloadedPercentageSdvp":{"name":"downloadedPercentage","abstract":"

      Percentage of tiles pending to download.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC8delegateAA0cD8Delegate_pSgvp":{"name":"delegate","abstract":"

      Delegate.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC15downloaderQueueSo17OS_dispatch_queueCvp":{"name":"downloaderQueue","abstract":"

      Queue to download the stuff.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC03forC003mapB0AcA010TileCoordsC0C_AA0aB8Protocol_ptcfc":{"name":"init(forRegion:mapCache:)","abstract":"

      Initializes the downloader with the region and the MapCache.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC13resetCountersyyF":{"name":"resetCounters()","abstract":"

      Resets downloader counters.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC5startyyF":{"name":"start()","abstract":"

      Starts download.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC08estimateC8ByteSizes6UInt64VyF":{"name":"estimateRegionByteSize()","abstract":"

      Returns an estimation of the total number of bytes the whole region may occupy.","parent_name":"RegionDownloader"},"Classes/MapCache.html#/s:8MapCacheAAC6configAA0aB6ConfigVvp":{"name":"config","abstract":"

      Cofiguration that will be used to set up the behavior of the MapCache instance

      ","parent_name":"MapCache"},"Classes/MapCache.html#/s:8MapCacheAAC04diskB0AA04DiskB0Cvp":{"name":"diskCache","abstract":"

      It manages the physical storage of the tile images in the device

      ","parent_name":"MapCache"},"Classes/MapCache.html#/s:8MapCacheAAC14operationQueueSo011NSOperationD0Cvp":{"name":"operationQueue","abstract":"

      Manages the queue of network requests for retrieving the tiles

      ","parent_name":"MapCache"},"Classes/MapCache.html#/s:8MapCacheAAC10withConfigAbA0abD0V_tcfc":{"name":"init(withConfig:)","abstract":"

      Constructor. It sets the config variable and initializes the diskCache with the name and capacity set in the config.

      ","parent_name":"MapCache"},"Classes/MapCache.html#/s:8MapCacheAAC3url11forTilePath10Foundation3URLVSo013MKTileOverlayF0a_tF":{"name":"url(forTilePath:)","abstract":"

      Returns the URL for a tile.

      ","parent_name":"MapCache"},"Classes/MapCache.html#/s:8MapCacheAAC8cacheKey7forPathSSSo013MKTileOverlayF0a_tF":{"name":"cacheKey(forPath:)","abstract":"

      For the path passed as argument it creates a unique key to be used in DiskCache.

      ","parent_name":"MapCache"},"Classes/MapCache.html#/s:8MapCacheAAC19fetchTileFromServer2at7failure7successySo17MKTileOverlayPatha_ys5Error_pSgcSgy10Foundation4DataVctF":{"name":"fetchTileFromServer(at:failure:success:)","abstract":"

      Fetches tile from server.","parent_name":"MapCache"},"Classes/MapCache.html#/s:8MapCacheAAC8loadTile2at6resultySo17MKTileOverlayPatha_y10Foundation4DataVSg_s5Error_pSgtctF":{"name":"loadTile(at:result:)","abstract":"

      Returns the tile to be displayed on the overlay.","parent_name":"MapCache"},"Classes/MapCache.html#/s:8MapCacheAAC8diskSizes6UInt64Vvp":{"name":"diskSize","abstract":"

      Currently size of the cache

      ","parent_name":"MapCache"},"Classes/MapCache.html#/s:8MapCacheAAC17calculateDiskSizes6UInt64VyF":{"name":"calculateDiskSize()","abstract":"

      Calculates the disk space allocated in dis for the cache

      ","parent_name":"MapCache"},"Classes/MapCache.html#/s:8MapCacheAAC5clear12completitionyyycSg_tF":{"name":"clear(completition:)","abstract":"

      Clears the cache.","parent_name":"MapCache"},"Classes/MD5.html#/s:8MapCache3MD5C1s33_FDBD59F52EA1EDEB4C781BB1327F97FELLSays6UInt32VGvp":{"name":"s","abstract":"

      specifies the per-round shift amounts

      ","parent_name":"MD5"},"Classes/MD5.html#/s:8MapCache3MD5C1k33_FDBD59F52EA1EDEB4C781BB1327F97FELLSays6UInt32VGvp":{"name":"k","abstract":"

      binary integer part of the sines of integers (Radians)

      ","parent_name":"MD5"},"Classes/MD5.html#/s:8MapCache3MD5C1h33_FDBD59F52EA1EDEB4C781BB1327F97FELLSays6UInt32VGvp":{"name":"h","abstract":"

      H

      ","parent_name":"MD5"},"Classes/MD5.html#/s:8MapCache3MD5C9calculateSays5UInt8VGyF":{"name":"calculate()","abstract":"

      Calculates the MD5 as an array of UInt8

      ","parent_name":"MD5"},"Classes/HashBase.html#/s:8MapCache8HashBaseC4sizeSivpZ":{"name":"size","parent_name":"HashBase"},"Classes/HashBase.html#/s:8MapCache8HashBaseC7messageSays5UInt8VGvp":{"name":"message","abstract":"

      Message to be converted into a MD5 string

      ","parent_name":"HashBase"},"Classes/HashBase.html#/s:8MapCache8HashBaseCyACSays5UInt8VGcfc":{"name":"init(_:)","abstract":"

      Constructor

      ","parent_name":"HashBase"},"Classes/HashBase.html#/s:8MapCache8HashBaseC7prepareySays5UInt8VGSiF":{"name":"prepare(_:)","abstract":"

      Common part for hash calculation. Prepare header data.

      ","parent_name":"HashBase"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C7baseURL10Foundation0E0VyFZ":{"name":"baseURL()","abstract":"

      Gets the root base folder to be used.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C9folderURL10Foundation0E0Vvp":{"name":"folderURL","abstract":"

      URL of the physical folder of the Cache in the file system.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C4pathSSvp":{"name":"path","abstract":"

      A shortcut for folderURL.path.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C8diskSizes6UInt64Vvp":{"name":"diskSize","abstract":"

      Sum of the allocated size in disk for the cache expressed in bytes.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C8fileSizes6UInt64VSgvp":{"name":"fileSize","abstract":"

      This is the sum of the data sizes of the files within the DiskCache

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C8capacitys6UInt64Vvp":{"name":"capacity","abstract":"

      Maximum allowed cache disk allocated size for this DiskCache","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C10cacheQueueSo17OS_dispatch_queueCvp":{"name":"cacheQueue","abstract":"

      Queue for making async operations.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C8withName8capacityACSS_s6UInt64Vtcfc":{"name":"init(withName:capacity:)","abstract":"

      Constructor

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C4path6forKeyS2S_tF":{"name":"path(forKey:)","abstract":"

      Get the path for key.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C7setData_6forKeyy10Foundation0E0V_SStF":{"name":"setData(_:forKey:)","abstract":"

      Sets the data for the key asyncronously.","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C11setDataSync_6forKeyy10Foundation0E0V_SStF":{"name":"setDataSync(_:forKey:)","abstract":"

      Sets the data for the key synchronously.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C13fetchDataSync6forKey7failure7successySS_ys5Error_pSgcSgy10Foundation0E0VctF":{"name":"fetchDataSync(forKey:failure:success:)","abstract":"

      Fetches the image data from storage synchronously.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C10removeData7withKeyySS_tF":{"name":"removeData(withKey:)","abstract":"

      Removes asynchronously the data from the diskcache for the key passed as argument.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C13removeAllDatayyyycSgF":{"name":"removeAllData(_:)","abstract":"

      Removes asynchronously all data from the cache.","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C06removeB0yyF":{"name":"removeCache()","abstract":"

      Removes the cache from the system.","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C16updateAccessDate_3keyy10Foundation4DataVSgyXA_SStF":{"name":"updateAccessDate(_:key:)","abstract":"

      Asynchronously updates the access date of a file.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C09calculateC4Sizes6UInt64VyF":{"name":"calculateDiskSize()","abstract":"

      Calculates the size used by all the files in the cache.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C15controlCapacity33_FC193A7AE40E49CC84DE49A3128B2975LLyyF":{"name":"controlCapacity()","abstract":"

      It checks if the capacity of the cache has been reached. If so, it removes the least recently used file (LRU).

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C06updateC10AccessDate33_FC193A7AE40E49CC84DE49A3128B2975LL6atPathSbSS_tF":{"name":"updateDiskAccessDate(atPath:)","abstract":"

      Updates the time a file was accessed for the last time.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C10removeFile33_FC193A7AE40E49CC84DE49A3128B2975LL6atPathySS_tF":{"name":"removeFile(atPath:)","abstract":"

      Removes a file syncrhonously.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C9substract33_FC193A7AE40E49CC84DE49A3128B2975LL8diskSizeys6UInt64V_tF":{"name":"substract(diskSize:)","abstract":"

      Substracts from the cachesize the disk size passed as parameter.","parent_name":"DiskCache"},"Classes/CachedTileOverlayRenderer.html#/c:@M@MapCache@objc(cs)CachedTileOverlayRenderer(im)canDrawMapRect:zoomScale:":{"name":"canDraw(_:zoomScale:)","abstract":"

      Indicates if the renderer is ready to draw. It´s always true

      ","parent_name":"CachedTileOverlayRenderer"},"Classes/CachedTileOverlayRenderer.html#/c:@M@MapCache@objc(cs)CachedTileOverlayRenderer(im)drawMapRect:zoomScale:inContext:":{"name":"draw(_:zoomScale:in:)","abstract":"

      Draws the tile in the map

      ","parent_name":"CachedTileOverlayRenderer"},"Classes/CachedTileOverlay.html#/s:8MapCache17CachedTileOverlayC03mapB0AA0aB8Protocol_pvp":{"name":"mapCache","abstract":"

      A class that implements the MapCacheProtocol

      ","parent_name":"CachedTileOverlay"},"Classes/CachedTileOverlay.html#/s:8MapCache17CachedTileOverlayC03useB0Sbvp":{"name":"useCache","abstract":"

      If true loadTile uses the implementation of the mapCache var. If false, uses the","parent_name":"CachedTileOverlay"},"Classes/CachedTileOverlay.html#/s:8MapCache17CachedTileOverlayC04withB0AcA0aB8Protocol_p_tcfc":{"name":"init(withCache:)","abstract":"

      Constructor.

      ","parent_name":"CachedTileOverlay"},"Classes/CachedTileOverlay.html#/c:@M@MapCache@objc(cs)CachedTileOverlay(im)URLForTilePath:":{"name":"url(forTilePath:)","abstract":"

      Generates the URL for the tile to be requested.","parent_name":"CachedTileOverlay"},"Classes/CachedTileOverlay.html#/c:@M@MapCache@objc(cs)CachedTileOverlay(im)loadTileAtPath:result:":{"name":"loadTile(at:result:)","abstract":"

      When invoked it will load the tile using the standard OS implementation (if useCacheis false)","parent_name":"CachedTileOverlay"},"Classes/CachedTileOverlay.html#/s:8MapCache17CachedTileOverlayC10shouldZoom2atSb14CoreFoundation7CGFloatV_tF":{"name":"shouldZoom(at:)","abstract":"

      Tells whether or not to upsample and show a lesser detailed z level","parent_name":"CachedTileOverlay"},"Classes/CachedTileOverlay.html#/s:8MapCache17CachedTileOverlayC07tilesInA4Rect4rect5scaleSayAA08ZoomableD0VGSo05MKMapH0a_14CoreFoundation7CGFloatVtF":{"name":"tilesInMapRect(rect:scale:)","abstract":"

      Given the maximum zoom level for the tileset (mapCache.config.maximumZ) it will return the tile, map rects, and additional scaling factor for upscaling tiles.

      ","parent_name":"CachedTileOverlay"},"Classes/CachedTileOverlay.html":{"name":"CachedTileOverlay","abstract":"

      Whenever a tile is requested by the MapView, it calls the MKTileOverlay.loadTile."},"Classes/CachedTileOverlayRenderer.html":{"name":"CachedTileOverlayRenderer","abstract":"

      A Tile overlay that supports to zoom beyond the maximumZ

      "},"Classes/DiskCache.html":{"name":"DiskCache","abstract":"

      A specialized cache for storing data in disk."},"Classes/HashBase.html":{"name":"HashBase","abstract":"

      HashBase"},"Classes/MD5.html":{"name":"MD5","abstract":"

      An actual implementation of the MD5"},"Classes/MapCache.html":{"name":"MapCache","abstract":"

      This is the main implementation of the MapCacheProtocol, the actual cache

      "},"Classes/RegionDownloader.html":{"name":"RegionDownloader","abstract":"

      Hey! I need to download this area of the map."},"Classes/TileCoords.html":{"name":"TileCoords","abstract":"

      Class to convert from Map Tiles to coordinates and from coordinates to tiles

      "},"Classes/TileCoordsRegion.html":{"name":"TileCoordsRegion","abstract":"

      3 dimensional square region in a tile map."},"Classes.html":{"name":"Classes","abstract":"

      The following classes are available globally.

      "},"Enums.html":{"name":"Enumerations","abstract":"

      The following enumerations are available globally.

      "},"Extensions.html":{"name":"Extensions","abstract":"

      The following extensions are available globally.

      "},"Functions.html":{"name":"Functions","abstract":"

      The following functions are available globally.

      "},"Protocols.html":{"name":"Protocols","abstract":"

      The following protocols are available globally.

      "},"Structs.html":{"name":"Structures","abstract":"

      The following structures are available globally.

      "},"Typealiases.html":{"name":"Type Aliases","abstract":"

      The following type aliases are available globally.

      "}} \ No newline at end of file diff --git a/docs/docsets/MapCache.docset/Contents/Resources/docSet.dsidx b/docs/docsets/MapCache.docset/Contents/Resources/docSet.dsidx index 49b82ac..fdb261c 100644 Binary files a/docs/docsets/MapCache.docset/Contents/Resources/docSet.dsidx and b/docs/docsets/MapCache.docset/Contents/Resources/docSet.dsidx differ diff --git a/docs/docsets/MapCache.tgz b/docs/docsets/MapCache.tgz index 948ad2c..c8f6945 100644 Binary files a/docs/docsets/MapCache.tgz and b/docs/docsets/MapCache.tgz differ diff --git a/docs/index.html b/docs/index.html index 8141d2e..d61ff91 100644 --- a/docs/index.html +++ b/docs/index.html @@ -16,19 +16,19 @@
      -

      MapCache 0.9.0 Docs (100% documented)

      -

      View on GitHub

      -

      +

      MapCache 0.10.0 Docs (100% documented)

      +

      GitHubView on GitHub

      +
      -

      +
      @@ -233,17 +233,21 @@

      MapCache Swift

    Installation

    -

    MapCache is available through CocoaPods. To install -it, simply add the following line to your Podfile:

    -
    pod 'MapCache'
    +

    MapCache is available through CocoaPods. To install it, simply add the following line to your Podfile:

    +
    #Podfile
    +pod 'MapCache'
    +
    + +

    Then in the folder where you have the Podfile run the command

    +
    pod install
     

    How to use MapCache?

    -

    In the view controller where you have the MKMapView import MapCache

    +

    In the view controller where you have a MKMapView, import MapCache:

    import MapCache
     
    -

    Then within the ViewController add

    +

    Then, within the ViewController add:

    // ViewController.swift
     class ViewController: UIViewController {
       @IBOutlet weak var map: MKMapView!
    @@ -251,11 +255,11 @@ 

    How to use MapCache?

    override func viewDidLoad() { super.viewDidLoad() - ... + //... map.delegate = self - ... + //... // First setup the config of our cache. // The only thing we must provide is the url template of the tile server. @@ -270,11 +274,11 @@

    How to use MapCache?

    // cache map.useCache(mapCache) - ... + //... }
    -

    Finally, tell the map delegate to use mapCacheRenderer

    +

    Finally, tell the map delegate to use mapCacheRenderer:

    //ViewController.swift
     
     // Assuming that ViewController is the delegate of the map
    @@ -287,12 +291,12 @@ 

    How to use MapCache?

    -

    After setting up map cache browsed areas of the map will be kept on disk. If user browses again that area it will use the local version.

    +

    After setting up the map cache, browsed areas of the map will be kept on disk. If the user browses again, that area it will use the local version.

    -

    Note that in current version cache has not expiration date so if you need to get an updated version of the tiles you must call clear() which will wipe out the whole cache.

    +

    Note that in the current version, the cache does not support expiration dates, so if you need to get an updated version of the tiles you must call clear() which will wipe out the whole cache.

    mapCache.clear() {
    -  // do something after clear
    -  print("cache cleared!")
    +    // do something after clear
    +    print("cache cleared!")
     }
     
    @@ -302,10 +306,10 @@

    How to use MapCache?

    You can take a look at the Example/ folder to see a complete implementation.

    -

    A Reference documentation is also available.

    +

    Reference documentation is also available.

    MapCache configuration

    -

    Config map cache is pretty straight forward, typically you will need to set only urlTemplate and probably the subdomains.

    +

    Configurating the map cache is pretty straight forward. Typically, you will only need to set urlTemplate and, optionally, the subdomains.

    These are the options:

    var config = MapCacheConfig()
    @@ -350,25 +354,25 @@ 

    MapCache configuration

    -

    If you need to use MapCache in different controllers, to avoid issues just be sure to use the same values in the config.

    +

    If you need to use MapCache in different controllers, be sure to use the same values in the config to avoid issues.

    How does MapCache work behind the scenes

    -

    If you need to build on something top of MapCache read this. If not, you can ignore

    +

    If you need to build something on top of MapCache, read the following.

    -

    MapCache is a hack of MapKit, the map framework of Apple.

    +

    MapCache is a hack of MapKit, the map framework from Apple, used on their iOS, macOS, tvOS, and watchOS platforms.

    Understanding MapCache bootstrap

    -

    As explained in How to use MapCache? section, in order to bootstrap MapCache we have to call this method

    +

    As explained in How to use MapCache? section, in order to bootstrap MapCache, we have to call this method:

    map.useCache(mapCache)
     
    -

    Where map is an instance of MKMapView, the main class used to display a map in iOS. What MapCache does through the extension (MKMapView+MapCache) is to add a new method useCache that tells MKMapView to display in the map a new tile layer on top of the default layers. Because of this while the tiles are loaded you may see the names of the default Apple Maps.

    +

    Where map is an instance of MKMapView, the main class used to display a map with MapKit. What MapCache does through the MKMapView+MapCache extension is to add a new method useCache that tells MKMapView to display a new tile layer on top of the default layers. Because of this, while the tiles are loaded you may see the tiles of the default Apple Maps.

    This extension also adds a variable in the MKMapView to keep the cache config.

    -

    A layer in the map is called overlay in the MapKit terminology. MapCache uses tile based overlay. implemented in the class CachedTileOverlay which is a subclass of MKTileOverlay.

    +

    A layer in the map is called overlay in MapKit terminology. MapCache uses tile based overlay implemented in the class CachedTileOverlay, which is a subclass of MKTileOverlay.

    -

    Overlays, have associated renderers that are the actual classes that draw the content of an overlay in the screen. For example, there are rendererers for points, lines, polygons, and tiles. When MapView needs to display an overlay it calls the delegate with the overlay it is going to render and you need to provide the renderer to use. In order to do that, We added a method mapCacheRenderer that just returns the default MKTileOverlayRenderer when the class of the overlay passed as argument is of the type CachedTileOverlay. That is why we need to add this code on the application in the delegate of the map view (MKMapViewDelegate) :

    +

    Overlays have associated renderers that are the actual classes that draw the content of an overlay on the screen. For example, there are rendererers for points, lines, polygons, and tiles. When MapView needs to display an overlay, it calls the delegate with the overlay it is going to render and you need to provide the renderer to use. In order to do that, We added a mapCacheRenderer method that returns the default MKTileOverlayRenderer when the class of the overlay passed as the argument is of the type CachedTileOverlay. That is why we need to add this code on the application in the delegate of the map view (MKMapViewDelegate) :

    extension ViewController : MKMapViewDelegate {
         func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
             return mapView.mapCacheRenderer(forOverlay: overlay)
    @@ -377,35 +381,59 @@ 

    Understanding MapCache

    CachedTileOverlay and MapCacheProtocol

    -

    As mentioned earlier, CachedTileOverlay is tile based layer that is implemented as a subclass of MKTileOverlay. Basically, the only thing that it does is to override two methods of the parent class:

    +

    As mentioned earlier, CachedTileOverlay is a tile based layer that is implemented as a subclass of MKTileOverlay. Basically, the only thing that it does is to override two methods of the parent class:

    1. func url(forTilePath path: MKTileOverlayPath) -> URL. The goal of this method is to return the URL of the tile. We need to overwrite it to be able to use the tile server of our preference.

    2. func loadTile(at path: MKTileOverlayPath, result: @escaping (Data?, Error?) -> Void). This method is the one that returns the actual Tile.

    -

    If you take a look to the implementation of CachedTileOverlay you will notice that it only forwards the request a method with the same signature of a variable called mapCache which is an instance of a class that implements MapCacheProtocol

    -
    override public func url(forTilePath path: MKTileOverlayPath) -> URL {`
    -       return mapCache.url(forTilePath: path)
    -   }
    +

    If you take a look at the implementation of CachedTileOverlay, you will notice that it only forwards the request to the method with the same signature of a variable called mapCache which is an instance of a class that implements MapCacheProtocol

    +
    override public func url(forTilePath path: MKTileOverlayPath) -> URL {
    +    return mapCache.url(forTilePath: path)
    +}
     
    -

    The MapCacheProtocol definition is pretty simple, it just requires to have a config variable instance of a MapCacheConfig and an implementation of the two methods that are called from CachedTileOverlay

    -
    public protocol MapCacheProtocol {
    +

    The MapCacheProtocol definition is pretty simple, as it just requires to have a config variable instance of a MapCacheConfig and an implementation of the two methods that are called from CachedTileOverlay:

    +
    public protocol MapCacheProtocol {
    +
    +    var config: MapCacheConfig { get set }
     
    -    var config: MapCacheConfig { get set }
    +    func url(forTilePath path: MKTileOverlayPath) -> URL
     
    -    func url(forTilePath path: MKTileOverlayPath) -> URL
    +    func loadTile(at path: MKTileOverlayPath, result: @escaping (Data?, Error?) -> Void)
     
    -    func loadTile(at path: MKTileOverlayPath, result: @escaping (Data?, Error?) -> Void)
    +}
     
    -

    If you need to create a custom implementation of the cache, you just need to create a class that implements this protocol and initialize the cache using map.useCache(myCustomCacheImplementationInstance). The implementation provided by the library is on the class named as MapCache.

    +

    If you need to create a custom implementation of the cache, you need to create a class that implements this protocol and initialize the cache using map.useCache(myCustomCacheImplementationInstance). The implementation provided by the library is on the MapCache class.

    -

    Something that may be useful too is the DiskCache class.

    +

    Something that may also be useful is the DiskCache class.

    If you need further information you can take a look at

    Reference documentation of MapCache.

    +

    Development

    + +

    Clone the repo

    +
    git clone https://github.com/merlos/MapCache
    +
    + +

    With Xcode Open the file Example/MapCache.xcworkspace

    + +

    To check if the pod is ready to be released run the command in the root folder folder

    +
    pod lib lint MapCache.podspec
    +
    +

    Generate the documentation

    + +

    This project uses jazzy for generating the reference documentation)

    + +

    To install jazzt

    +
    gem install jazzy --verbose
    +
    + +

    In the root folder of the project run

    +
    jazzy
    +

    You may also like

      @@ -437,11 +465,10 @@

      License - MIT

      - diff --git a/docs/js/jazzy.js b/docs/js/jazzy.js index 1e55d6e..1984416 100755 --- a/docs/js/jazzy.js +++ b/docs/js/jazzy.js @@ -1,3 +1,7 @@ +// Jazzy - https://github.com/realm/jazzy +// Copyright Realm Inc. +// SPDX-License-Identifier: MIT + window.jazzy = {'docset': false} if (typeof window.dash != 'undefined') { document.documentElement.className += ' dash' diff --git a/docs/js/jazzy.search.js b/docs/js/jazzy.search.js index e3d1ab9..359cdbb 100644 --- a/docs/js/jazzy.search.js +++ b/docs/js/jazzy.search.js @@ -1,3 +1,7 @@ +// Jazzy - https://github.com/realm/jazzy +// Copyright Realm Inc. +// SPDX-License-Identifier: MIT + $(function(){ var $typeahead = $('[data-typeahead]'); var $form = $typeahead.parents('form'); diff --git a/docs/js/jquery.min.js b/docs/js/jquery.min.js index b061403..2c69bc9 100644 --- a/docs/js/jquery.min.js +++ b/docs/js/jquery.min.js @@ -1,2 +1,2 @@ -/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
      "],col:[2,"","
      "],tr:[2,"","
      "],td:[3,"","
      "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
      ",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&v(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!y||!y.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ve(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ye(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ve(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],y=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||y.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||y.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||y.push(".#.+[+~]"),e.querySelectorAll("\\\f"),y.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),y=y.length&&new RegExp(y.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),v=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&v(p,e)?-1:t==C||t.ownerDocument==p&&v(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!y||!y.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),v.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",v.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",v.option=!!ce.lastChild;var ge={thead:[1,"","
      "],col:[2,"","
      "],tr:[2,"","
      "],td:[3,"","
      "],_default:[0,"",""]};function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),v.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
      ",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return B(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=_e(v.pixelPosition,function(e,t){if(t)return t=Be(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return B(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 00){var c=e.utils.clone(r)||{};c.position=[a,l],c.index=s.length,s.push(new e.Token(i.slice(a,o),c))}a=o+1}}return s},e.tokenizer.separator=/[\s\-]+/,e.Pipeline=function(){this._stack=[]},e.Pipeline.registeredFunctions=Object.create(null),e.Pipeline.registerFunction=function(t,r){r in this.registeredFunctions&&e.utils.warn("Overwriting existing registered function: "+r),t.label=r,e.Pipeline.registeredFunctions[t.label]=t},e.Pipeline.warnIfFunctionNotRegistered=function(t){var r=t.label&&t.label in this.registeredFunctions;r||e.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",t)},e.Pipeline.load=function(t){var r=new e.Pipeline;return t.forEach(function(t){var i=e.Pipeline.registeredFunctions[t];if(!i)throw new Error("Cannot load unregistered function: "+t);r.add(i)}),r},e.Pipeline.prototype.add=function(){var t=Array.prototype.slice.call(arguments);t.forEach(function(t){e.Pipeline.warnIfFunctionNotRegistered(t),this._stack.push(t)},this)},e.Pipeline.prototype.after=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,r)},e.Pipeline.prototype.before=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");this._stack.splice(i,0,r)},e.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);t!=-1&&this._stack.splice(t,1)},e.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r1&&(se&&(r=n),s!=e);)i=r-t,n=t+Math.floor(i/2),s=this.elements[2*n];return s==e?2*n:s>e?2*n:sa?l+=2:o==a&&(t+=r[u+1]*i[l+1],u+=2,l+=2);return t},e.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},e.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t0){var o,a=s.str.charAt(0);a in s.node.edges?o=s.node.edges[a]:(o=new e.TokenSet,s.node.edges[a]=o),1==s.str.length&&(o["final"]=!0),n.push({node:o,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(0!=s.editsRemaining){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new e.TokenSet;s.node.edges["*"]=u}if(0==s.str.length&&(u["final"]=!0),n.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&n.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),1==s.str.length&&(s.node["final"]=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new e.TokenSet;s.node.edges["*"]=l}1==s.str.length&&(l["final"]=!0),n.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var c,h=s.str.charAt(0),d=s.str.charAt(1);d in s.node.edges?c=s.node.edges[d]:(c=new e.TokenSet,s.node.edges[d]=c),1==s.str.length&&(c["final"]=!0),n.push({node:c,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return i},e.TokenSet.fromString=function(t){for(var r=new e.TokenSet,i=r,n=0,s=t.length;n=e;t--){var r=this.uncheckedNodes[t],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r["char"]]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}},e.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},e.Index.prototype.search=function(t){return this.query(function(r){var i=new e.QueryParser(t,r);i.parse()})},e.Index.prototype.query=function(t){for(var r=new e.Query(this.fields),i=Object.create(null),n=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u1?this._b=1:this._b=e},e.Builder.prototype.k1=function(e){this._k1=e},e.Builder.prototype.add=function(t,r){var i=t[this._ref],n=Object.keys(this._fields);this._documents[i]=r||{},this.documentCount+=1;for(var s=0;s=this.length)return e.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},e.QueryLexer.prototype.width=function(){return this.pos-this.start},e.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},e.QueryLexer.prototype.backup=function(){this.pos-=1},e.QueryLexer.prototype.acceptDigitRun=function(){var t,r;do t=this.next(),r=t.charCodeAt(0);while(r>47&&r<58);t!=e.QueryLexer.EOS&&this.backup()},e.QueryLexer.prototype.more=function(){return this.pos1&&(t.backup(),t.emit(e.QueryLexer.TERM)),t.ignore(),t.more())return e.QueryLexer.lexText},e.QueryLexer.lexEditDistance=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.EDIT_DISTANCE),e.QueryLexer.lexText},e.QueryLexer.lexBoost=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.BOOST),e.QueryLexer.lexText},e.QueryLexer.lexEOS=function(t){t.width()>0&&t.emit(e.QueryLexer.TERM)},e.QueryLexer.termSeparator=e.tokenizer.separator,e.QueryLexer.lexText=function(t){for(;;){var r=t.next();if(r==e.QueryLexer.EOS)return e.QueryLexer.lexEOS;if(92!=r.charCodeAt(0)){if(":"==r)return e.QueryLexer.lexField;if("~"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexEditDistance;if("^"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexBoost;if("+"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if("-"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if(r.match(e.QueryLexer.termSeparator))return e.QueryLexer.lexTerm}else t.escapeCharacter()}},e.QueryParser=function(t,r){this.lexer=new e.QueryLexer(t),this.query=r,this.currentClause={},this.lexemeIdx=0},e.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var t=e.QueryParser.parseClause;t;)t=t(this);return this.query},e.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},e.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},e.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},e.QueryParser.parseClause=function(t){var r=t.peekLexeme();if(void 0!=r)switch(r.type){case e.QueryLexer.PRESENCE:return e.QueryParser.parsePresence;case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(i+=" with value '"+r.str+"'"),new e.QueryParseError(i,r.start,r.end)}},e.QueryParser.parsePresence=function(t){var r=t.consumeLexeme();if(void 0!=r){switch(r.str){case"-":t.currentClause.presence=e.Query.presence.PROHIBITED;break;case"+":t.currentClause.presence=e.Query.presence.REQUIRED;break;default:var i="unrecognised presence operator'"+r.str+"'";throw new e.QueryParseError(i,r.start,r.end)}var n=t.peekLexeme();if(void 0==n){var i="expecting term or field, found nothing";throw new e.QueryParseError(i,r.start,r.end)}switch(n.type){case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expecting term or field, found '"+n.type+"'";throw new e.QueryParseError(i,n.start,n.end)}}},e.QueryParser.parseField=function(t){var r=t.consumeLexeme();if(void 0!=r){if(t.query.allFields.indexOf(r.str)==-1){var i=t.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),n="unrecognised field '"+r.str+"', possible fields: "+i;throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.fields=[r.str];var s=t.peekLexeme();if(void 0==s){var n="expecting term, found nothing";throw new e.QueryParseError(n,r.start,r.end)}switch(s.type){case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var n="expecting term, found '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseTerm=function(t){var r=t.consumeLexeme();if(void 0!=r){t.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(t.currentClause.usePipeline=!1);var i=t.peekLexeme();if(void 0==i)return void t.nextClause();switch(i.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+i.type+"'";throw new e.QueryParseError(n,i.start,i.end)}}},e.QueryParser.parseEditDistance=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="edit distance must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.editDistance=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseBoost=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="boost must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.boost=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.lunr=t()}(this,function(){return e})}(); +!function(){var e=function(t){var r=new e.Builder;return r.pipeline.add(e.trimmer,e.stopWordFilter,e.stemmer),r.searchPipeline.add(e.stemmer),t.call(r,r),r.build()};e.version="2.3.9",e.utils={},e.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),e.utils.asString=function(e){return void 0===e||null===e?"":e.toString()},e.utils.clone=function(e){if(null===e||void 0===e)return e;for(var t=Object.create(null),r=Object.keys(e),i=0;i0){var c=e.utils.clone(r)||{};c.position=[a,l],c.index=s.length,s.push(new e.Token(i.slice(a,o),c))}a=o+1}}return s},e.tokenizer.separator=/[\s\-]+/,e.Pipeline=function(){this._stack=[]},e.Pipeline.registeredFunctions=Object.create(null),e.Pipeline.registerFunction=function(t,r){r in this.registeredFunctions&&e.utils.warn("Overwriting existing registered function: "+r),t.label=r,e.Pipeline.registeredFunctions[t.label]=t},e.Pipeline.warnIfFunctionNotRegistered=function(t){var r=t.label&&t.label in this.registeredFunctions;r||e.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",t)},e.Pipeline.load=function(t){var r=new e.Pipeline;return t.forEach(function(t){var i=e.Pipeline.registeredFunctions[t];if(!i)throw new Error("Cannot load unregistered function: "+t);r.add(i)}),r},e.Pipeline.prototype.add=function(){var t=Array.prototype.slice.call(arguments);t.forEach(function(t){e.Pipeline.warnIfFunctionNotRegistered(t),this._stack.push(t)},this)},e.Pipeline.prototype.after=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,r)},e.Pipeline.prototype.before=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");this._stack.splice(i,0,r)},e.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);t!=-1&&this._stack.splice(t,1)},e.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r1&&(se&&(r=n),s!=e);)i=r-t,n=t+Math.floor(i/2),s=this.elements[2*n];return s==e?2*n:s>e?2*n:sa?l+=2:o==a&&(t+=r[u+1]*i[l+1],u+=2,l+=2);return t},e.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},e.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t0){var o,a=s.str.charAt(0);a in s.node.edges?o=s.node.edges[a]:(o=new e.TokenSet,s.node.edges[a]=o),1==s.str.length&&(o["final"]=!0),n.push({node:o,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(0!=s.editsRemaining){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new e.TokenSet;s.node.edges["*"]=u}if(0==s.str.length&&(u["final"]=!0),n.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&n.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),1==s.str.length&&(s.node["final"]=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new e.TokenSet;s.node.edges["*"]=l}1==s.str.length&&(l["final"]=!0),n.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var c,h=s.str.charAt(0),d=s.str.charAt(1);d in s.node.edges?c=s.node.edges[d]:(c=new e.TokenSet,s.node.edges[d]=c),1==s.str.length&&(c["final"]=!0),n.push({node:c,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return i},e.TokenSet.fromString=function(t){for(var r=new e.TokenSet,i=r,n=0,s=t.length;n=e;t--){var r=this.uncheckedNodes[t],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r["char"]]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}},e.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},e.Index.prototype.search=function(t){return this.query(function(r){var i=new e.QueryParser(t,r);i.parse()})},e.Index.prototype.query=function(t){for(var r=new e.Query(this.fields),i=Object.create(null),n=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u1?this._b=1:this._b=e},e.Builder.prototype.k1=function(e){this._k1=e},e.Builder.prototype.add=function(t,r){var i=t[this._ref],n=Object.keys(this._fields);this._documents[i]=r||{},this.documentCount+=1;for(var s=0;s=this.length)return e.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},e.QueryLexer.prototype.width=function(){return this.pos-this.start},e.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},e.QueryLexer.prototype.backup=function(){this.pos-=1},e.QueryLexer.prototype.acceptDigitRun=function(){var t,r;do t=this.next(),r=t.charCodeAt(0);while(r>47&&r<58);t!=e.QueryLexer.EOS&&this.backup()},e.QueryLexer.prototype.more=function(){return this.pos1&&(t.backup(),t.emit(e.QueryLexer.TERM)),t.ignore(),t.more())return e.QueryLexer.lexText},e.QueryLexer.lexEditDistance=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.EDIT_DISTANCE),e.QueryLexer.lexText},e.QueryLexer.lexBoost=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.BOOST),e.QueryLexer.lexText},e.QueryLexer.lexEOS=function(t){t.width()>0&&t.emit(e.QueryLexer.TERM)},e.QueryLexer.termSeparator=e.tokenizer.separator,e.QueryLexer.lexText=function(t){for(;;){var r=t.next();if(r==e.QueryLexer.EOS)return e.QueryLexer.lexEOS;if(92!=r.charCodeAt(0)){if(":"==r)return e.QueryLexer.lexField;if("~"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexEditDistance;if("^"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexBoost;if("+"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if("-"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if(r.match(e.QueryLexer.termSeparator))return e.QueryLexer.lexTerm}else t.escapeCharacter()}},e.QueryParser=function(t,r){this.lexer=new e.QueryLexer(t),this.query=r,this.currentClause={},this.lexemeIdx=0},e.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var t=e.QueryParser.parseClause;t;)t=t(this);return this.query},e.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},e.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},e.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},e.QueryParser.parseClause=function(t){var r=t.peekLexeme();if(void 0!=r)switch(r.type){case e.QueryLexer.PRESENCE:return e.QueryParser.parsePresence;case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(i+=" with value '"+r.str+"'"),new e.QueryParseError(i,r.start,r.end)}},e.QueryParser.parsePresence=function(t){var r=t.consumeLexeme();if(void 0!=r){switch(r.str){case"-":t.currentClause.presence=e.Query.presence.PROHIBITED;break;case"+":t.currentClause.presence=e.Query.presence.REQUIRED;break;default:var i="unrecognised presence operator'"+r.str+"'";throw new e.QueryParseError(i,r.start,r.end)}var n=t.peekLexeme();if(void 0==n){var i="expecting term or field, found nothing";throw new e.QueryParseError(i,r.start,r.end)}switch(n.type){case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expecting term or field, found '"+n.type+"'";throw new e.QueryParseError(i,n.start,n.end)}}},e.QueryParser.parseField=function(t){var r=t.consumeLexeme();if(void 0!=r){if(t.query.allFields.indexOf(r.str)==-1){var i=t.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),n="unrecognised field '"+r.str+"', possible fields: "+i;throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.fields=[r.str];var s=t.peekLexeme();if(void 0==s){var n="expecting term, found nothing";throw new e.QueryParseError(n,r.start,r.end)}switch(s.type){case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var n="expecting term, found '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseTerm=function(t){var r=t.consumeLexeme();if(void 0!=r){t.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(t.currentClause.usePipeline=!1);var i=t.peekLexeme();if(void 0==i)return void t.nextClause();switch(i.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+i.type+"'";throw new e.QueryParseError(n,i.start,i.end)}}},e.QueryParser.parseEditDistance=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="edit distance must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.editDistance=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseBoost=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="boost must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.boost=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.lunr=t()}(this,function(){return e})}(); diff --git a/docs/search.json b/docs/search.json index fb687df..bc3b46a 100644 --- a/docs/search.json +++ b/docs/search.json @@ -1 +1 @@ -{"Typealiases.html#/s:8MapCache4Zooma":{"name":"Zoom","abstract":"

      An alias for UInt8. Used to indicate that the variable is holding a zoom value.

      "},"Typealiases.html#/s:8MapCache10TileNumbera":{"name":"TileNumber","abstract":"

      Tile number in a map.

      "},"Structs/ZoomableTile.html#/s:8MapCache12ZoomableTileV12maximumZPathSo17MKTileOverlayPathavp":{"name":"maximumZPath","abstract":"

      Path for the tile with maximumZ supported by the tile server set in the config.","parent_name":"ZoomableTile"},"Structs/ZoomableTile.html#/s:8MapCache12ZoomableTileV4rectSo9MKMapRectavp":{"name":"rect","abstract":"

      Rectangle area ocupied by this tile

      ","parent_name":"ZoomableTile"},"Structs/ZoomableTile.html#/s:8MapCache12ZoomableTileV8overZoomSivp":{"name":"overZoom","abstract":"

      Scale over the tile of the maximumZ path.","parent_name":"ZoomableTile"},"Structs/ZoomRangeIterator.html#/s:8MapCache17ZoomRangeIteratorV7counters5UInt8Vvp":{"name":"counter","abstract":"

      Keeps the counter of the iterator.

      ","parent_name":"ZoomRangeIterator"},"Structs/ZoomRangeIterator.html#/s:8MapCache17ZoomRangeIteratorV5rangeAA0cD0Vvp":{"name":"range","abstract":"

      The zoom range in question.

      ","parent_name":"ZoomRangeIterator"},"Structs/ZoomRangeIterator.html#/s:8MapCache17ZoomRangeIteratorVyAcA0cD0Vcfc":{"name":"init(_:)","abstract":"

      Receives the range to iterate.

      ","parent_name":"ZoomRangeIterator"},"Structs/ZoomRangeIterator.html#/s:8MapCache17ZoomRangeIteratorV4nexts5UInt8VSgyF":{"name":"next()","abstract":"

      Gets next zoom value.

      ","parent_name":"ZoomRangeIterator"},"Structs/ZoomRange.html#/s:8MapCache9ZoomRangeV3mins5UInt8Vvp":{"name":"min","abstract":"

      Minimum zoom in this range.

      ","parent_name":"ZoomRange"},"Structs/ZoomRange.html#/s:8MapCache9ZoomRangeV3maxs5UInt8Vvp":{"name":"max","abstract":"

      Maximum zoom in this range.

      ","parent_name":"ZoomRange"},"Structs/ZoomRange.html#/s:8MapCache9ZoomRangeV04diffC0s5UInt8Vvp":{"name":"diffZoom","abstract":"

      Difference between max zoom and min zoom.

      ","parent_name":"ZoomRange"},"Structs/ZoomRange.html#/s:8MapCache9ZoomRangeV5counts5UInt8Vvp":{"name":"count","abstract":"

      Number of zooms in this range

      ","parent_name":"ZoomRange"},"Structs/ZoomRange.html#/s:8MapCache9ZoomRangeVyACSgs5UInt8V_AFtcfc":{"name":"init(_:_:)","abstract":"

      Creates the range of zooms.

      ","parent_name":"ZoomRange"},"Structs/ZoomRange.html#/s:8MapCache9ZoomRangeV7toArraySays5UInt8VGyF":{"name":"toArray()","abstract":"

      Converts the zoom range in to an array.

      ","parent_name":"ZoomRange"},"Structs/ZoomRange.html#/s:8MapCache9ZoomRangeV12makeIteratorAA0cdF0VyF":{"name":"makeIterator()","abstract":"

      Returns the iterator for this range.","parent_name":"ZoomRange"},"Structs/TileRangeIterator.html#/s:8MapCache17TileRangeIteratorV5rangeAA0cD0Vvp":{"name":"range","abstract":"

      Range for the counter

      ","parent_name":"TileRangeIterator"},"Structs/TileRangeIterator.html#/s:8MapCache17TileRangeIteratorV7counters6UInt64Vvp":{"name":"counter","abstract":"

      Current counter value

      ","parent_name":"TileRangeIterator"},"Structs/TileRangeIterator.html#/s:8MapCache17TileRangeIteratorV10maxCounters6UInt64Vvp":{"name":"maxCounter","abstract":"

      Max value counter can take.

      ","parent_name":"TileRangeIterator"},"Structs/TileRangeIterator.html#/s:8MapCache17TileRangeIteratorV7columnss6UInt64Vvp":{"name":"columns","abstract":"

      Number of columns

      ","parent_name":"TileRangeIterator"},"Structs/TileRangeIterator.html#/s:8MapCache17TileRangeIteratorV4rowss6UInt64Vvp":{"name":"rows","abstract":"

      Number of rows

      ","parent_name":"TileRangeIterator"},"Structs/TileRangeIterator.html#/s:8MapCache17TileRangeIteratorVyAcA0cD0Vcfc":{"name":"init(_:)","abstract":"

      Initializer of the iterator.","parent_name":"TileRangeIterator"},"Structs/TileRangeIterator.html#/s:8MapCache17TileRangeIteratorV4nextAA0C6CoordsCSgyF":{"name":"next()","abstract":"

      The function that is required by the Iterator protocol.

      ","parent_name":"TileRangeIterator"},"Structs/TileRange.html#/s:8MapCache9TileRangeV4zooms5UInt8Vvp":{"name":"zoom","abstract":"

      Zoom level.

      ","parent_name":"TileRange"},"Structs/TileRange.html#/s:8MapCache9TileRangeV03minC1Xs6UInt64Vvp":{"name":"minTileX","abstract":"

      Min value of tile in X axis.

      ","parent_name":"TileRange"},"Structs/TileRange.html#/s:8MapCache9TileRangeV03maxC1Xs6UInt64Vvp":{"name":"maxTileX","abstract":"

      Max value of tile in X axis.

      ","parent_name":"TileRange"},"Structs/TileRange.html#/s:8MapCache9TileRangeV03minC1Ys6UInt64Vvp":{"name":"minTileY","abstract":"

      Min value of tile in Y axis.

      ","parent_name":"TileRange"},"Structs/TileRange.html#/s:8MapCache9TileRangeV03maxC1Ys6UInt64Vvp":{"name":"maxTileY","abstract":"

      Min value of tile in Y axis.

      ","parent_name":"TileRange"},"Structs/TileRange.html#/s:8MapCache9TileRangeV5diffXs6UInt64Vvp":{"name":"diffX","abstract":"

      Difference between maxTileX and minTileX

      ","parent_name":"TileRange"},"Structs/TileRange.html#/s:8MapCache9TileRangeV5diffYs6UInt64Vvp":{"name":"diffY","abstract":"

      Difference between maxTileY and minTileY

      ","parent_name":"TileRange"},"Structs/TileRange.html#/s:8MapCache9TileRangeV4rowss6UInt64Vvp":{"name":"rows","abstract":"

      Number of rows in the range.

      ","parent_name":"TileRange"},"Structs/TileRange.html#/s:8MapCache9TileRangeV7columnss6UInt64Vvp":{"name":"columns","abstract":"

      Number of columns in the range.

      ","parent_name":"TileRange"},"Structs/TileRange.html#/s:8MapCache9TileRangeV5counts6UInt64Vvp":{"name":"count","abstract":"

      Counts the number of tiles in the range (columns x rows).

      ","parent_name":"TileRange"},"Structs/TileRange.html#/s:8MapCache9TileRangeV12makeIteratorAA0cdF0VyF":{"name":"makeIterator()","abstract":"

      Sequence iterator.","parent_name":"TileRange"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV11urlTemplateSSvp":{"name":"urlTemplate","abstract":"

      Each time a tile is going to be retrieved from the server its x,y and z (zoom) values are plugged into this URL template.

      ","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV10subdomainsSaySSGvp":{"name":"subdomains","abstract":"

      Subdomains used on the urlTemplate

      ","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV8minimumZSivp":{"name":"minimumZ","abstract":"

      It must be smaller or equal than maximumZ

      ","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV8maximumZSivp":{"name":"maximumZ","abstract":"

      Maximum supported zoom by the tile server

      ","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV16overZoomMaximumZSbvp":{"name":"overZoomMaximumZ","abstract":"

      If set to true when zooming in beyond maximumZ the tiles at maximumZ will be upsampled and shown.","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV9cacheNameSSvp":{"name":"cacheName","abstract":"

      Name of the cache","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV8capacitys6UInt64Vvp":{"name":"capacity","abstract":"

      Cache capacity in bytes

      ","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV8tileSizeSo6CGSizeVvp":{"name":"tileSize","abstract":"

      Tile size of the tile. Default is 256x256

      ","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV12loadTileModeAA04LoadeF0Ovp":{"name":"loadTileMode","abstract":"

      Load tile mode.","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigVACycfc":{"name":"init()","abstract":"

      Constructor with all the default values.

      ","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV15withUrlTemplateACSS_tcfc":{"name":"init(withUrlTemplate:)","abstract":"

      Constructor that overwrites the urlTemplate`

      ","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV15randomSubdomainSSSgyF":{"name":"randomSubdomain()","abstract":"

      Selects one of the subdomains randomly.

      ","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV19subdomainRoundRobin33_DF0222806B55D79AD742F8F62B690241LLSivp":{"name":"subdomainRoundRobin","abstract":"

      Keeps track of the index of the last subdomain requested for round robin

      ","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV19roundRobinSubdomainSSSgyF":{"name":"roundRobinSubdomain()","abstract":"

      Round Robin algorithm","parent_name":"MapCacheConfig"},"Structs/Log/Level.html#/s:8MapCache3LogV5Level33_B0EB5F66C57FF526BB04701F7376DD27LLO5DebugyA2FmF":{"name":"Debug","abstract":"

      [Debug] For displaying messages useful during development.

      ","parent_name":"Level"},"Structs/Log/Level.html#/s:8MapCache3LogV5Level33_B0EB5F66C57FF526BB04701F7376DD27LLO5ErroryA2FmF":{"name":"Error","abstract":"

      [ERROR]For displaying messages of bad situations, very, very bad situations.

      ","parent_name":"Level"},"Structs/Log.html#/s:8MapCache3LogV3tag33_B0EB5F66C57FF526BB04701F7376DD27LLSSvpZ":{"name":"tag","abstract":"

      The tag [MapCache]

      ","parent_name":"Log"},"Structs/Log/Level.html":{"name":"Level","abstract":"

      Log Levels

      ","parent_name":"Log"},"Structs/Log.html#/s:8MapCache3LogV3log33_B0EB5F66C57FF526BB04701F7376DD27LLyyAC5LevelAELLO_SSyXKs5Error_pSgtFZ":{"name":"log(_:_:_:)","abstract":"

      The actual method that prints.

      ","parent_name":"Log"},"Structs/Log.html#/s:8MapCache3LogV5debug7message5errorySSyXK_s5Error_pSgtFZ":{"name":"debug(message:error:)","abstract":"

      For displaying messages. Useful during development of this package.

      ","parent_name":"Log"},"Structs/Log.html#/s:8MapCache3LogV5error7messageADySSyXK_s5Error_pSgtFZ":{"name":"error(message:error:)","abstract":"

      These messages are displayed independently of the debug mode.","parent_name":"Log"},"Structs/BytesSequence.html#/s:8MapCache13BytesSequenceV9chunkSizeSivp":{"name":"chunkSize","abstract":"

      Chunk size

      ","parent_name":"BytesSequence"},"Structs/BytesSequence.html#/s:8MapCache13BytesSequenceV4dataSays5UInt8VGvp":{"name":"data","abstract":"

      Data

      ","parent_name":"BytesSequence"},"Structs/BytesSequence.html#/s:8MapCache13BytesSequenceV12makeIterators03AnyF0Vys10ArraySliceVys5UInt8VGGyF":{"name":"makeIterator()","abstract":"

      makeIterator

      ","parent_name":"BytesSequence"},"Structs/BytesSequence.html":{"name":"BytesSequence","abstract":"

      Bytes sequence for the implementation of MD5"},"Structs/Log.html":{"name":"Log","abstract":"

      For logging messages on console.

      "},"Structs/MapCacheConfig.html":{"name":"MapCacheConfig","abstract":"

      Settings of your MapCache.

      "},"Structs/TileRange.html":{"name":"TileRange","abstract":"

      For a particular zoom level, defines a range of tiles."},"Structs/TileRangeIterator.html":{"name":"TileRangeIterator","abstract":"

      Iterator of a TileRange.

      "},"Structs/ZoomRange.html":{"name":"ZoomRange","abstract":"

      A range of zooms."},"Structs/ZoomRangeIterator.html":{"name":"ZoomRangeIterator","abstract":"

      Iterator that allows the use of ZoomRange in a for loop.

      "},"Structs/ZoomableTile.html":{"name":"ZoomableTile","abstract":"

      Specifies a single tile and area of the tile that should upscaled.

      "},"Protocols/RegionDownloaderDelegate.html#/c:@M@MapCache@objc(pl)RegionDownloaderDelegate(im)regionDownloader:didDownloadPercentage:":{"name":"regionDownloader(_:didDownloadPercentage:)","abstract":"

      Did download the percentage.

      ","parent_name":"RegionDownloaderDelegate"},"Protocols/RegionDownloaderDelegate.html#/c:@M@MapCache@objc(pl)RegionDownloaderDelegate(im)regionDownloader:didFinishDownload:":{"name":"regionDownloader(_:didFinishDownload:)","abstract":"

      Did Finish Download all tiles.

      ","parent_name":"RegionDownloaderDelegate"},"Protocols/MapCacheProtocol.html#/s:8MapCache0aB8ProtocolP6configAA0aB6ConfigVvp":{"name":"config","abstract":"

      An instance of MapCacheConfig

      ","parent_name":"MapCacheProtocol"},"Protocols/MapCacheProtocol.html#/s:8MapCache0aB8ProtocolP3url11forTilePath10Foundation3URLVSo013MKTileOverlayG0a_tF":{"name":"url(forTilePath:)","abstract":"

      The implementation shall convert a tile path into a URL object

      ","parent_name":"MapCacheProtocol"},"Protocols/MapCacheProtocol.html#/s:8MapCache0aB8ProtocolP8loadTile2at6resultySo17MKTileOverlayPatha_y10Foundation4DataVSg_s5Error_pSgtctF":{"name":"loadTile(at:result:)","abstract":"

      The implementation shall return either the tile as a Data object or an Error if the tile could not be retrieved.

      ","parent_name":"MapCacheProtocol"},"Protocols/MapCacheProtocol.html":{"name":"MapCacheProtocol","abstract":"

      This protocol shall be implemented by any cache used in MapCache.

      "},"Protocols/RegionDownloaderDelegate.html":{"name":"RegionDownloaderDelegate","abstract":"

      Delegate protocol of RegionDownloader."},"Functions.html#/s:8MapCache17isNoSuchFileError33_FC193A7AE40E49CC84DE49A3128B2975LLySbs0G0_pSgF":{"name":"isNoSuchFileError(_:)","abstract":"

      Error when there is not a file.

      "},"Functions.html#/s:8MapCache1loiySbSo8NSNumberC_ADtF":{"name":"<(_:_:)","abstract":"

      Overload of the the < operator

      "},"Functions.html#/s:8MapCache12arrayOfBytes5value6lengthSays5UInt8VGx_SiSgtlF":{"name":"arrayOfBytes(value:length:)","abstract":"

      array of bytes, little-endian representation

      "},"Functions.html#/s:8MapCache10rotateLeft1v1ns6UInt32VAF_AFtF":{"name":"rotateLeft(v:n:)","abstract":"

      Rotate left for MD5 implementation

      "},"Functions.html#/s:8MapCache18sliceToUInt32ArrayySays0E0VGs0F5SliceVys5UInt8VGF":{"name":"sliceToUInt32Array(_:)","abstract":"

      sliceToUInt32 for MD5 implementation

      "},"Extensions/MKZoomScale.html#/s:12CoreGraphics7CGFloatV8MapCacheE11toZoomLevel8tileSizeSiSo6CGSizeV_tF":{"name":"toZoomLevel(tileSize:)","abstract":"

      Converts from standard MapKit MKZoomScale to tile zoom level

      ","parent_name":"MKZoomScale"},"Extensions/MKTileOverlayPath.html#/s:So17MKTileOverlayPatha8MapCacheE10tileCoordsAbC04TileG0C_tcfc":{"name":"init(tileCoords:)","abstract":"

      Creates a MkTileOverlayPath from a MapCache TileCoords

      ","parent_name":"MKTileOverlayPath"},"Extensions/MKTileOverlayPath.html#/s:So17MKTileOverlayPatha8MapCacheE12toTileCoordsAC0gH0CSgyF":{"name":"toTileCoords()","abstract":"

      Returns the tile overlay path as a TileCoords object.

      ","parent_name":"MKTileOverlayPath"},"Extensions/MKMapView.html#/s:So9MKMapViewC8MapCacheE03useD0yAC17CachedTileOverlayCAC0cD8Protocol_pF":{"name":"useCache(_:)","abstract":"

      Will tell the map to use the cache passed as parameter for getting the tiles.

      ","parent_name":"MKMapView"},"Extensions/MKMapView.html#/s:So9MKMapViewC8MapCacheE03mapD8Renderer10forOverlaySo09MKOverlayF0CSo0I0_p_tF":{"name":"mapCacheRenderer(forOverlay:)","abstract":"

      Call this method within the MKMapView delegate function","parent_name":"MKMapView"},"Extensions/MKMapView.html#/s:So9MKMapViewC8MapCacheE9zoomLevelSivp":{"name":"zoomLevel","abstract":"

      TODO: Implement this correctly.","parent_name":"MKMapView"},"Extensions/URL.html#/s:10Foundation3URLV8MapCacheE28regularFileAllocatedDiskSizes6UInt64VyKF":{"name":"regularFileAllocatedDiskSize()","abstract":"

      Returns the allocated size in disk for a regular file in bytes.","parent_name":"URL"},"Extensions/URL.html#/s:10Foundation3URLV8MapCacheE15regularFileSizes6UInt64VyKF":{"name":"regularFileSize()","abstract":"

      Returns the allocated file a regular file in bytes.

      ","parent_name":"URL"},"Extensions/String.html#/s:SS8MapCacheE15escapedFilenameSSyF":{"name":"escapedFilename()","abstract":"

      Returns the escaped version of a filename.

      ","parent_name":"String"},"Extensions/String.html#/s:SS8MapCacheE5toMD5SSyF":{"name":"toMD5()","abstract":"

      Returns the md5 digest of this string.

      ","parent_name":"String"},"Extensions/String.html#/s:SS8MapCacheE11MD5FilenameSSyF":{"name":"MD5Filename()","abstract":"

      Returns the path for the filename whose name is hold in this string.

      ","parent_name":"String"},"Extensions/NSMutableData.html#/s:So13NSMutableDataC8MapCacheE11appendBytes07arrayOfF0ySays5UInt8VG_tF":{"name":"appendBytes(arrayOfBytes:)","abstract":"

      Convenient way to append bytes

      ","parent_name":"NSMutableData"},"Extensions/Int.html#/s:Si8MapCacheE5bytes10totalBytesSays5UInt8VGSi_tF":{"name":"bytes(totalBytes:)","abstract":"

      Array of bytes with optional padding (little-endian)

      ","parent_name":"Int"},"Extensions/FileManager/fileSizeForDirectory%28at%3A%29.html#/s:So13NSFileManagerC8MapCacheE20fileSizeForDirectory2ats6UInt64V10Foundation3URLV_tKF12errorHandlerL__0M0SbAJ_s5Error_ptF":{"name":"errorHandler(_:error:)","abstract":"

      Handler in case of error when calculating the filesize

      ","parent_name":"fileSizeForDirectory(at:)"},"Extensions/FileManager/allocatedDiskSizeForDirectory%28at%3A%29.html#/s:So13NSFileManagerC8MapCacheE29allocatedDiskSizeForDirectory2ats6UInt64V10Foundation3URLV_tKF12errorHandlerL__0N0SbAJ_s5Error_ptF":{"name":"errorHandler(_:error:)","abstract":"

      Error handler in case there is a problem when getting the information from the disk

      ","parent_name":"allocatedDiskSizeForDirectory(at:)"},"Extensions/FileManager.html#/s:So13NSFileManagerC8MapCacheE28enumerateContentsOfDirectory6atPath17orderedByProperty9ascending10usingBlockySS_SSSby10Foundation3URLV_SiSbztXEtF":{"name":"enumerateContentsOfDirectory(atPath:orderedByProperty:ascending:usingBlock:)","abstract":"

      Gets the list of files of this the directory.

      ","parent_name":"FileManager"},"Extensions/FileManager/allocatedDiskSizeForDirectory%28at%3A%29.html":{"name":"allocatedDiskSizeForDirectory(at:)","abstract":"

      Calculate the allocated size of a directory and all its contents on the volume.

      ","parent_name":"FileManager"},"Extensions/FileManager/fileSizeForDirectory%28at%3A%29.html":{"name":"fileSizeForDirectory(at:)","abstract":"

      Calculates the actual sum of file sizes

      ","parent_name":"FileManager"},"Extensions/FileManager.html":{"name":"FileManager","abstract":"

      Class for handling the operations with file folders.

      "},"Extensions/Int.html":{"name":"Int","abstract":"

      Extension for the implementation of MD5

      "},"Extensions/NSMutableData.html":{"name":"NSMutableData","abstract":"

      Extension for the implementation of MD5

      "},"Extensions/String.html":{"name":"String","abstract":"

      Extension that adds a few methods that are useful for the DiskCache.

      "},"Extensions/URL.html":{"name":"URL"},"Extensions/MKMapView.html":{"name":"MKMapView","abstract":"

      Extension that provides MKMapView support to use MapCache.

      "},"Extensions/MKTileOverlayPath.html":{"name":"MKTileOverlayPath","abstract":"

      Extension to ease MapCache stuff :)

      "},"Extensions/MKZoomScale.html":{"name":"MKZoomScale","abstract":"

      Extension for MapCache

      "},"Enums/TileRangeError.html#/s:8MapCache14TileRangeErrorO0cD8CreationyA2CmF":{"name":"TileRangeCreation","abstract":"

      Error to be thrown in case of an issue during creation.

      ","parent_name":"TileRangeError"},"Enums/TileError.html#/s:8MapCache9TileErrorO8overflowyA2CmF":{"name":"overflow","abstract":"

      Overflow in the tile

      ","parent_name":"TileError"},"Enums/LongitudeError.html#/s:8MapCache14LongitudeErrorO11overflowMinyA2CmF":{"name":"overflowMin","abstract":"

      Overflow if latitud is smaller than the minimum.

      ","parent_name":"LongitudeError"},"Enums/LongitudeError.html#/s:8MapCache14LongitudeErrorO11overflowMaxyA2CmF":{"name":"overflowMax","abstract":"

      Overflow if latitud is greater than the maximum.

      ","parent_name":"LongitudeError"},"Enums/LatitudeError.html#/s:8MapCache13LatitudeErrorO11overflowMinyA2CmF":{"name":"overflowMin","abstract":"

      Overflow if latitud is smaller than the minimum.

      ","parent_name":"LatitudeError"},"Enums/LatitudeError.html#/s:8MapCache13LatitudeErrorO11overflowMaxyA2CmF":{"name":"overflowMax","abstract":"

      Overflow if latitud is greater than the maximum.

      ","parent_name":"LatitudeError"},"Enums/ZoomError.html#/s:8MapCache9ZoomErrorO12largerThan19yA2CmF":{"name":"largerThan19","abstract":"

      Zoom largest value is 19.

      ","parent_name":"ZoomError"},"Enums/LoadTileMode.html#/s:8MapCache12LoadTileModeO15cacheThenServeryA2CmF":{"name":"cacheThenServer","abstract":"

      Default. If the tile exists in the cache, return it, otherwise, fetch it from server (and cache the result).

      ","parent_name":"LoadTileMode"},"Enums/LoadTileMode.html#/s:8MapCache12LoadTileModeO010serverThenB0yA2CmF":{"name":"serverThenCache","abstract":"

      Always return the tile from the server unless there is some problem with the network.","parent_name":"LoadTileMode"},"Enums/LoadTileMode.html#/s:8MapCache12LoadTileModeO9cacheOnlyyA2CmF":{"name":"cacheOnly","abstract":"

      Only return data from cache.","parent_name":"LoadTileMode"},"Enums/LoadTileMode.html#/s:8MapCache12LoadTileModeO10serverOnlyyA2CmF":{"name":"serverOnly","abstract":"

      Always return the tile from the server, as well as updating the cache.","parent_name":"LoadTileMode"},"Enums/LoadTileMode.html":{"name":"LoadTileMode","abstract":"

      Defines the strategies that can be used for retrieving the tiles from the cache"},"Enums/ZoomError.html":{"name":"ZoomError","abstract":"

      Errors for Zoom.

      "},"Enums/LatitudeError.html":{"name":"LatitudeError","abstract":"

      Errors for a latitude.

      "},"Enums/LongitudeError.html":{"name":"LongitudeError","abstract":"

      Errors for a longitude.

      "},"Enums/TileError.html":{"name":"TileError","abstract":"

      Errors for a tile

      "},"Enums/TileRangeError.html":{"name":"TileRangeError","abstract":"

      Errors for tile range

      "},"Classes/TileCoordsRegion.html#/s:8MapCache16TileCoordsRegionC7topLeftAA0cD0Cvp":{"name":"topLeft","abstract":"

      Top left tile/coordinate.

      ","parent_name":"TileCoordsRegion"},"Classes/TileCoordsRegion.html#/s:8MapCache16TileCoordsRegionC11bottomRightAA0cD0Cvp":{"name":"bottomRight","abstract":"

      Bottom right tile/coordinate.

      ","parent_name":"TileCoordsRegion"},"Classes/TileCoordsRegion.html#/s:8MapCache16TileCoordsRegionC9zoomRangeAA04ZoomG0Vvp":{"name":"zoomRange","abstract":"

      Zoom range for the region.

      ","parent_name":"TileCoordsRegion"},"Classes/TileCoordsRegion.html#/s:8MapCache16TileCoordsRegionC5counts6UInt64Vvp":{"name":"count","abstract":"

      Total number of tiles in this region for all zoom levels.

      ","parent_name":"TileCoordsRegion"},"Classes/TileCoordsRegion.html#/s:8MapCache16TileCoordsRegionC15topLeftLatitude0fG9Longitude011bottomRightH00jkI07minZoom03maxM0ACSgSd_S3ds5UInt8VALtcfc":{"name":"init(topLeftLatitude:topLeftLongitude:bottomRightLatitude:bottomRightLongitude:minZoom:maxZoom:)","abstract":"

      The region will be the area that holds the line from any top left point (P1) to any","parent_name":"TileCoordsRegion"},"Classes/TileCoordsRegion.html#/s:8MapCache16TileCoordsRegionC7topLeft11bottomRightACSgAA0cD0C_AHtcfc":{"name":"init(topLeft:bottomRight:)","abstract":"

      The region will be the area that holds the line from any top left point (P1) to any","parent_name":"TileCoordsRegion"},"Classes/TileCoordsRegion.html#/s:8MapCache16TileCoordsRegionC5count7forZooms6UInt64Vs5UInt8V_tF":{"name":"count(forZoom:)","abstract":"

      Counts for the zoom

      ","parent_name":"TileCoordsRegion"},"Classes/TileCoordsRegion.html#/s:8MapCache16TileCoordsRegionC10tileRanges7forZoomSayAA0C5RangeVGSgs5UInt8V_tF":{"name":"tileRanges(forZoom:)","abstract":"

      All the tile ranges for this particular zoom.","parent_name":"TileCoordsRegion"},"Classes/TileCoordsRegion.html#/s:8MapCache16TileCoordsRegionC10tileRangesSayAA0C5RangeVGSgyF":{"name":"tileRanges()","abstract":"

      Gets the tile ranges for all zooms.

      ","parent_name":"TileCoordsRegion"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC11maxLatitudeSdvpZ":{"name":"maxLatitude","abstract":"

      Max value of latitude that can be retrieved with tiles (-85.0511 degrees)

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC11minLatitudeSdvpZ":{"name":"minLatitude","abstract":"

      Min value of latitude that can be retrieved with tiles (-85.0511 degrees)

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC12maxLongitudeSdvpZ":{"name":"maxLongitude","abstract":"

      Max value of a longitude (<180.0).","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC12minLongitudeSdvpZ":{"name":"minLongitude","abstract":"

      Min value of a longitude (>=180.0)","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC7maxZooms5UInt8VvpZ":{"name":"maxZoom","abstract":"

      Max zoom supported in tile servers (19)

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC7minZooms5UInt8VvpZ":{"name":"minZoom","abstract":"

      Min zoom supported (0)

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC03maxC07forZooms6UInt64Vs5UInt8V_tFZ":{"name":"maxTile(forZoom:)","abstract":"

      Based on current zoom it indicates what is the max tile

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC8validate9longitudeySd_tKFZ":{"name":"validate(longitude:)","abstract":"

      Validates if longitude is between min and max allowed longitudes

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC8validate8latitudeySd_tKFZ":{"name":"validate(latitude:)","abstract":"

      Validates if a latitude is between min and max allowed latitudes.","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC8validate4zoomys5UInt8V_tKFZ":{"name":"validate(zoom:)","abstract":"

      Validate zoom is less or equal to the maxZoom","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC8validate4tile7forZoomys6UInt64V_s5UInt8VtKFZ":{"name":"validate(tile:forZoom:)","abstract":"

      Validates if the tile is within the range for the zoom","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC011longitudeToC1X0E04zooms6UInt64VSd_s5UInt8VtKFZ":{"name":"longitudeToTileX(longitude:zoom:)","abstract":"

      Returns the tile in the X axis for the longitude and zoom.","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC010latitudeToC1Y0E04zooms6UInt64VSd_s5UInt8VtKFZ":{"name":"latitudeToTileY(latitude:zoom:)","abstract":"

      Returns the tile in the Y axis for the latitude and zoom.","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC16tileXToLongitude0E1X4zoomSds6UInt64V_s5UInt8VtKFZ":{"name":"tileXToLongitude(tileX:zoom:)","abstract":"

      Returns the corresponding longitude in degrees for the tileX at zoom level

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC15tileYToLatitude0E1Y4zoomSds6UInt64V_s5UInt8VtKFZ":{"name":"tileYToLatitude(tileY:zoom:)","abstract":"

      Returns the corresponding latitude in degrees for the tileY at zoom level

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC5_zoom33_EA7126F1A3D16AFAE6DD45A5164BF908LLs5UInt8Vvp":{"name":"_zoom","abstract":"

      Holds the zoom level.","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC4zooms5UInt8Vvp":{"name":"zoom","abstract":"

      Zoom level. Read only. Use setZoom() to change it.

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC9_latitude33_EA7126F1A3D16AFAE6DD45A5164BF908LLSdvp":{"name":"_latitude","abstract":"

      Holds the actual latitude

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC8latitudeSdvp":{"name":"latitude","abstract":"

      Latitude for this tile. Use set() to change it.

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC10_longitude33_EA7126F1A3D16AFAE6DD45A5164BF908LLSdvp":{"name":"_longitude","abstract":"

      Holds the actual longitude

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC9longitudeSdvp":{"name":"longitude","abstract":"

      Longitude for this tile. Use set() to change it.

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC6_tileX33_EA7126F1A3D16AFAE6DD45A5164BF908LLs6UInt64Vvp":{"name":"_tileX","abstract":"

      Holds the actual tileX

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC5tileXs6UInt64Vvp":{"name":"tileX","abstract":"

      Tile in the X axis for current longitude and zoom. Use set() to change it.

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC6_tileY33_EA7126F1A3D16AFAE6DD45A5164BF908LLs6UInt64Vvp":{"name":"_tileY","abstract":"

      Holds the actual tileY

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC5tileYs6UInt64Vvp":{"name":"tileY","abstract":"

      Tile in the Y axis for current latitude and zoom. Use set() to change it.

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC3set4zoomys5UInt8V_tKF":{"name":"set(zoom:)","abstract":"

      Set zoom level.","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC3set5tileX0F1Yys6UInt64V_AHtKF":{"name":"set(tileX:tileY:)","abstract":"

      Set tile X and Y values.","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC3set8latitude9longitudeySd_SdtKF":{"name":"set(latitude:longitude:)","abstract":"

      Sets latitude and longitude.","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC5tileX0E1Y4zoomACSgs6UInt64V_AIs5UInt8Vtcfc":{"name":"init(tileX:tileY:zoom:)","abstract":"

      Init a TileCoords instance using tile and zoom info.","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC8latitude9longitude4zoomACSgSd_Sds5UInt8Vtcfc":{"name":"init(latitude:longitude:zoom:)","abstract":"

      Init a TileCoords instance using latitude, longitude and zoom info.","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC_4zoomACSgAC_s5UInt8Vtcfc":{"name":"init(_:zoom:)","abstract":"

      Creates a new Tile Coord with the same latitude and longitude","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC03maxC0s6UInt64VyF":{"name":"maxTile()","abstract":"

      Returns the maximum tile number for current set zoom.

      ","parent_name":"TileCoords"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC27defaultAverageTileSizeBytess6UInt64VvpZ":{"name":"defaultAverageTileSizeBytes","abstract":"

      Approximation of the average number of bytes of a tile (used with 256x256 tiles).

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC6regionAA010TileCoordsC0Cvp":{"name":"region","abstract":"

      Region that will be downloaded.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC03mapB0AA0aB8Protocol_pvp":{"name":"mapCache","abstract":"

      Cache that is going to be used for saving/loading the files.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC20totalTilesToDownloads6UInt64Vvp":{"name":"totalTilesToDownload","abstract":"

      Total number of tiles to be downloaded.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC22pendingTilesToDownloads6UInt64Vvp":{"name":"pendingTilesToDownload","abstract":"

      Number of tiles pending to be downloaded.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC16_downloadedBytes33_D06B6E21D1152A2FAE42E90A57D8E9B9LLs6UInt64Vvp":{"name":"_downloadedBytes","abstract":"

      The variable that actually keeps the count of the downloaded bytes.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC15downloadedBytess6UInt64Vvp":{"name":"downloadedBytes","abstract":"

      Total number of downloaded data bytes.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC20averageTileSizeBytess6UInt64Vvp":{"name":"averageTileSizeBytes","abstract":"

      Returns the average

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/c:@M@MapCache@objc(cs)RegionDownloader(py)downloadedTiles":{"name":"downloadedTiles","abstract":"

      Keeps the number of tiles already downloaded successfully or failed.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC24_successfulTileDownloads33_D06B6E21D1152A2FAE42E90A57D8E9B9LLs6UInt64Vvp":{"name":"_successfulTileDownloads","abstract":"

      Number of successfully downloaded tiles.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/c:@M@MapCache@objc(cs)RegionDownloader(py)successfulTileDownloads":{"name":"successfulTileDownloads","abstract":"

      Keeps the number of tiles already downloaded.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC20_failedTileDownloads33_D06B6E21D1152A2FAE42E90A57D8E9B9LLs6UInt64Vvp":{"name":"_failedTileDownloads","abstract":"

      Keeps the number of tiles failes to be downloaded.","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/c:@M@MapCache@objc(cs)RegionDownloader(py)failedTileDownloads":{"name":"failedTileDownloads","abstract":"

      Number of tiles to be downloaded

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC22nextPercentageToNotifySdvp":{"name":"nextPercentageToNotify","abstract":"

      Percentage to notify thought delegate.","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC33incrementInPercentageNotificationSdvp":{"name":"incrementInPercentageNotification","abstract":"

      The downloader will notify the delegate every time this.","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC22lastPercentageNotifiedSdvp":{"name":"lastPercentageNotified","abstract":"

      Last percentage notified to the deletage.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC20downloadedPercentageSdvp":{"name":"downloadedPercentage","abstract":"

      Percentage of tiles pending to download.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC8delegateAA0cD8Delegate_pSgvp":{"name":"delegate","abstract":"

      Delegate.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC15downloaderQueueSo17OS_dispatch_queueCvp":{"name":"downloaderQueue","abstract":"

      Queue to download the stuff.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC03forC003mapB0AcA010TileCoordsC0C_AA0aB8Protocol_ptcfc":{"name":"init(forRegion:mapCache:)","abstract":"

      Initializes the downloader with the region and the MapCache.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC13resetCountersyyF":{"name":"resetCounters()","abstract":"

      Resets downloader counters.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC5startyyF":{"name":"start()","abstract":"

      Starts download.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC08estimateC8ByteSizes6UInt64VyF":{"name":"estimateRegionByteSize()","abstract":"

      Returns an estimation of the total number of bytes the whole region may occupy.","parent_name":"RegionDownloader"},"Classes/MapCache.html#/s:8MapCacheAAC6configAA0aB6ConfigVvp":{"name":"config","abstract":"

      Cofiguration that will be used to set up the behavior of the MapCache instance

      ","parent_name":"MapCache"},"Classes/MapCache.html#/s:8MapCacheAAC04diskB0AA04DiskB0Cvp":{"name":"diskCache","abstract":"

      It manages the physical storage of the tile images in the device

      ","parent_name":"MapCache"},"Classes/MapCache.html#/s:8MapCacheAAC14operationQueueSo011NSOperationD0Cvp":{"name":"operationQueue","abstract":"

      Manages the queue of network requests for retrieving the tiles

      ","parent_name":"MapCache"},"Classes/MapCache.html#/s:8MapCacheAAC10withConfigAbA0abD0V_tcfc":{"name":"init(withConfig:)","abstract":"

      Constructor. It sets the config variable and initializes the diskCache with the name and capacity set in the config.

      ","parent_name":"MapCache"},"Classes/MapCache.html#/s:8MapCacheAAC3url11forTilePath10Foundation3URLVSo013MKTileOverlayF0a_tF":{"name":"url(forTilePath:)","abstract":"

      Returns the URL for a tile.

      ","parent_name":"MapCache"},"Classes/MapCache.html#/s:8MapCacheAAC8cacheKey7forPathSSSo013MKTileOverlayF0a_tF":{"name":"cacheKey(forPath:)","abstract":"

      For the path passed as argument it creates a unique key to be used in DiskCache.

      ","parent_name":"MapCache"},"Classes/MapCache.html#/s:8MapCacheAAC19fetchTileFromServer2at7failure7successySo17MKTileOverlayPatha_ys5Error_pSgcSgy10Foundation4DataVctF":{"name":"fetchTileFromServer(at:failure:success:)","abstract":"

      Fetches tile from server.","parent_name":"MapCache"},"Classes/MapCache.html#/s:8MapCacheAAC8loadTile2at6resultySo17MKTileOverlayPatha_y10Foundation4DataVSg_s5Error_pSgtctF":{"name":"loadTile(at:result:)","abstract":"

      Returns the tile to be displayed on the overlay.","parent_name":"MapCache"},"Classes/MapCache.html#/s:8MapCacheAAC8diskSizes6UInt64Vvp":{"name":"diskSize","abstract":"

      Currently size of the cache

      ","parent_name":"MapCache"},"Classes/MapCache.html#/s:8MapCacheAAC17calculateDiskSizes6UInt64VyF":{"name":"calculateDiskSize()","abstract":"

      Calculates the disk space allocated in dis for the cache

      ","parent_name":"MapCache"},"Classes/MapCache.html#/s:8MapCacheAAC5clear12completitionyyycSg_tF":{"name":"clear(completition:)","abstract":"

      Clears the cache.","parent_name":"MapCache"},"Classes/MD5.html#/s:8MapCache3MD5C1s33_FDBD59F52EA1EDEB4C781BB1327F97FELLSays6UInt32VGvp":{"name":"s","abstract":"

      specifies the per-round shift amounts

      ","parent_name":"MD5"},"Classes/MD5.html#/s:8MapCache3MD5C1k33_FDBD59F52EA1EDEB4C781BB1327F97FELLSays6UInt32VGvp":{"name":"k","abstract":"

      binary integer part of the sines of integers (Radians)

      ","parent_name":"MD5"},"Classes/MD5.html#/s:8MapCache3MD5C1h33_FDBD59F52EA1EDEB4C781BB1327F97FELLSays6UInt32VGvp":{"name":"h","abstract":"

      H

      ","parent_name":"MD5"},"Classes/MD5.html#/s:8MapCache3MD5C9calculateSays5UInt8VGyF":{"name":"calculate()","abstract":"

      Calculates the MD5 as an array of UInt8

      ","parent_name":"MD5"},"Classes/HashBase.html#/s:8MapCache8HashBaseC4sizeSivpZ":{"name":"size","parent_name":"HashBase"},"Classes/HashBase.html#/s:8MapCache8HashBaseC7messageSays5UInt8VGvp":{"name":"message","abstract":"

      Message to be converted into a MD5 string

      ","parent_name":"HashBase"},"Classes/HashBase.html#/s:8MapCache8HashBaseCyACSays5UInt8VGcfc":{"name":"init(_:)","abstract":"

      Constructor

      ","parent_name":"HashBase"},"Classes/HashBase.html#/s:8MapCache8HashBaseC7prepareySays5UInt8VGSiF":{"name":"prepare(_:)","abstract":"

      Common part for hash calculation. Prepare header data.

      ","parent_name":"HashBase"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C7baseURL10Foundation0E0VyFZ":{"name":"baseURL()","abstract":"

      Gets the root base folder to be used.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C9folderURL10Foundation0E0Vvp":{"name":"folderURL","abstract":"

      URL of the physical folder of the Cache in the file system.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C4pathSSvp":{"name":"path","abstract":"

      A shortcut for folderURL.path.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C8diskSizes6UInt64Vvp":{"name":"diskSize","abstract":"

      Sum of the allocated size in disk for the cache expressed in bytes.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C8fileSizes6UInt64VSgvp":{"name":"fileSize","abstract":"

      This is the sum of the data sizes of the files within the DiskCache

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C8capacitys6UInt64Vvp":{"name":"capacity","abstract":"

      Maximum allowed cache disk allocated size for this DiskCache","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C10cacheQueueSo17OS_dispatch_queueCvp":{"name":"cacheQueue","abstract":"

      Queue for making async operations.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C8withName8capacityACSS_s6UInt64Vtcfc":{"name":"init(withName:capacity:)","abstract":"

      Constructor

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C4path6forKeyS2S_tF":{"name":"path(forKey:)","abstract":"

      Get the path for key.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C7setData_6forKeyy10Foundation0E0V_SStF":{"name":"setData(_:forKey:)","abstract":"

      Sets the data for the key asyncronously.","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C11setDataSync_6forKeyy10Foundation0E0V_SStF":{"name":"setDataSync(_:forKey:)","abstract":"

      Sets the data for the key synchronously.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C13fetchDataSync6forKey7failure7successySS_ys5Error_pSgcSgy10Foundation0E0VctF":{"name":"fetchDataSync(forKey:failure:success:)","abstract":"

      Fetches the image data from storage synchronously.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C10removeData7withKeyySS_tF":{"name":"removeData(withKey:)","abstract":"

      Removes asynchronously the data from the diskcache for the key passed as argument.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C13removeAllDatayyyycSgF":{"name":"removeAllData(_:)","abstract":"

      Removes asynchronously all data from the cache.","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C06removeB0yyF":{"name":"removeCache()","abstract":"

      Removes the cache from the system.","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C16updateAccessDate_3keyy10Foundation4DataVSgyXA_SStF":{"name":"updateAccessDate(_:key:)","abstract":"

      Asynchronously updates the access date of a file.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C09calculateC4Sizes6UInt64VyF":{"name":"calculateDiskSize()","abstract":"

      Calculates the size used by all the files in the cache.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C15controlCapacity33_FC193A7AE40E49CC84DE49A3128B2975LLyyF":{"name":"controlCapacity()","abstract":"

      It checks if the capacity of the cache has been reached. If so, it removes the least recently used file (LRU).

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C06updateC10AccessDate33_FC193A7AE40E49CC84DE49A3128B2975LL6atPathSbSS_tF":{"name":"updateDiskAccessDate(atPath:)","abstract":"

      Updates the time a file was accessed for the last time.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C10removeFile33_FC193A7AE40E49CC84DE49A3128B2975LL6atPathySS_tF":{"name":"removeFile(atPath:)","abstract":"

      Removes a file syncrhonously.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C9substract33_FC193A7AE40E49CC84DE49A3128B2975LL8diskSizeys6UInt64V_tF":{"name":"substract(diskSize:)","abstract":"

      Substracts from the cachesize the disk size passed as parameter.","parent_name":"DiskCache"},"Classes/CachedTileOverlayRenderer.html#/c:@M@MapCache@objc(cs)CachedTileOverlayRenderer(im)canDrawMapRect:zoomScale:":{"name":"canDraw(_:zoomScale:)","abstract":"

      Indicates if the renderer is ready to draw. It´s always true

      ","parent_name":"CachedTileOverlayRenderer"},"Classes/CachedTileOverlayRenderer.html#/c:@M@MapCache@objc(cs)CachedTileOverlayRenderer(im)drawMapRect:zoomScale:inContext:":{"name":"draw(_:zoomScale:in:)","abstract":"

      Draws the tile in the map

      ","parent_name":"CachedTileOverlayRenderer"},"Classes/CachedTileOverlay.html#/s:8MapCache17CachedTileOverlayC03mapB0AA0aB8Protocol_pvp":{"name":"mapCache","abstract":"

      A class that implements the MapCacheProtocol

      ","parent_name":"CachedTileOverlay"},"Classes/CachedTileOverlay.html#/s:8MapCache17CachedTileOverlayC03useB0Sbvp":{"name":"useCache","abstract":"

      If true loadTile uses the implementation of the mapCache var. If false, uses the","parent_name":"CachedTileOverlay"},"Classes/CachedTileOverlay.html#/s:8MapCache17CachedTileOverlayC04withB0AcA0aB8Protocol_p_tcfc":{"name":"init(withCache:)","abstract":"

      Constructor.

      ","parent_name":"CachedTileOverlay"},"Classes/CachedTileOverlay.html#/c:@M@MapCache@objc(cs)CachedTileOverlay(im)URLForTilePath:":{"name":"url(forTilePath:)","abstract":"

      Generates the URL for the tile to be requested.","parent_name":"CachedTileOverlay"},"Classes/CachedTileOverlay.html#/c:@M@MapCache@objc(cs)CachedTileOverlay(im)loadTileAtPath:result:":{"name":"loadTile(at:result:)","abstract":"

      When invoked it will load the tile using the standard OS implementation (if useCacheis false)","parent_name":"CachedTileOverlay"},"Classes/CachedTileOverlay.html#/s:8MapCache17CachedTileOverlayC10shouldZoom2atSb12CoreGraphics7CGFloatV_tF":{"name":"shouldZoom(at:)","abstract":"

      Tells whether or not to upsample and show a lesser detailed z level","parent_name":"CachedTileOverlay"},"Classes/CachedTileOverlay.html#/s:8MapCache17CachedTileOverlayC07tilesInA4Rect4rect5scaleSayAA08ZoomableD0VGSo05MKMapH0a_12CoreGraphics7CGFloatVtF":{"name":"tilesInMapRect(rect:scale:)","abstract":"

      Given the maximum zoom level for the tileset (mapCache.config.maximumZ) it will return the tile, map rects, and additional scaling factor for upscaling tiles.

      ","parent_name":"CachedTileOverlay"},"Classes/CachedTileOverlay.html":{"name":"CachedTileOverlay","abstract":"

      Whenever a tile is requested by the MapView, it calls the MKTileOverlay.loadTile."},"Classes/CachedTileOverlayRenderer.html":{"name":"CachedTileOverlayRenderer","abstract":"

      A Tile overlay that supports to zoom beyond the maximumZ

      "},"Classes/DiskCache.html":{"name":"DiskCache","abstract":"

      A specialized cache for storing data in disk."},"Classes/HashBase.html":{"name":"HashBase","abstract":"

      HashBase"},"Classes/MD5.html":{"name":"MD5","abstract":"

      An actual implementation of the MD5"},"Classes/MapCache.html":{"name":"MapCache","abstract":"

      This is the main implementation of the MapCacheProtocol, the actual cache

      "},"Classes/RegionDownloader.html":{"name":"RegionDownloader","abstract":"

      Hey! I need to download this area of the map."},"Classes/TileCoords.html":{"name":"TileCoords","abstract":"

      Class to convert from Map Tiles to coordinates and from coordinates to tiles

      "},"Classes/TileCoordsRegion.html":{"name":"TileCoordsRegion","abstract":"

      3 dimensional square region in a tile map."},"Classes.html":{"name":"Classes","abstract":"

      The following classes are available globally.

      "},"Enums.html":{"name":"Enumerations","abstract":"

      The following enumerations are available globally.

      "},"Extensions.html":{"name":"Extensions","abstract":"

      The following extensions are available globally.

      "},"Functions.html":{"name":"Functions","abstract":"

      The following functions are available globally.

      "},"Protocols.html":{"name":"Protocols","abstract":"

      The following protocols are available globally.

      "},"Structs.html":{"name":"Structures","abstract":"

      The following structures are available globally.

      "},"Typealiases.html":{"name":"Type Aliases","abstract":"

      The following type aliases are available globally.

      "}} \ No newline at end of file +{"Typealiases.html#/s:8MapCache4Zooma":{"name":"Zoom","abstract":"

      An alias for UInt8. Used to indicate that the variable is holding a zoom value.

      "},"Typealiases.html#/s:8MapCache10TileNumbera":{"name":"TileNumber","abstract":"

      Tile number in a map.

      "},"Structs/ZoomableTile.html#/s:8MapCache12ZoomableTileV12maximumZPathSo17MKTileOverlayPathavp":{"name":"maximumZPath","abstract":"

      Path for the tile with maximumZ supported by the tile server set in the config.","parent_name":"ZoomableTile"},"Structs/ZoomableTile.html#/s:8MapCache12ZoomableTileV4rectSo9MKMapRectavp":{"name":"rect","abstract":"

      Rectangle area ocupied by this tile

      ","parent_name":"ZoomableTile"},"Structs/ZoomableTile.html#/s:8MapCache12ZoomableTileV8overZoomSivp":{"name":"overZoom","abstract":"

      Scale over the tile of the maximumZ path.","parent_name":"ZoomableTile"},"Structs/ZoomRangeIterator.html#/s:8MapCache17ZoomRangeIteratorV7counters5UInt8Vvp":{"name":"counter","abstract":"

      Keeps the counter of the iterator.

      ","parent_name":"ZoomRangeIterator"},"Structs/ZoomRangeIterator.html#/s:8MapCache17ZoomRangeIteratorV5rangeAA0cD0Vvp":{"name":"range","abstract":"

      The zoom range in question.

      ","parent_name":"ZoomRangeIterator"},"Structs/ZoomRangeIterator.html#/s:8MapCache17ZoomRangeIteratorVyAcA0cD0Vcfc":{"name":"init(_:)","abstract":"

      Receives the range to iterate.

      ","parent_name":"ZoomRangeIterator"},"Structs/ZoomRangeIterator.html#/s:8MapCache17ZoomRangeIteratorV4nexts5UInt8VSgyF":{"name":"next()","abstract":"

      Gets next zoom value.

      ","parent_name":"ZoomRangeIterator"},"Structs/ZoomRange.html#/s:8MapCache9ZoomRangeV3mins5UInt8Vvp":{"name":"min","abstract":"

      Minimum zoom in this range.

      ","parent_name":"ZoomRange"},"Structs/ZoomRange.html#/s:8MapCache9ZoomRangeV3maxs5UInt8Vvp":{"name":"max","abstract":"

      Maximum zoom in this range.

      ","parent_name":"ZoomRange"},"Structs/ZoomRange.html#/s:8MapCache9ZoomRangeV04diffC0s5UInt8Vvp":{"name":"diffZoom","abstract":"

      Difference between max zoom and min zoom.

      ","parent_name":"ZoomRange"},"Structs/ZoomRange.html#/s:8MapCache9ZoomRangeV5counts5UInt8Vvp":{"name":"count","abstract":"

      Number of zooms in this range

      ","parent_name":"ZoomRange"},"Structs/ZoomRange.html#/s:8MapCache9ZoomRangeVyACSgs5UInt8V_AFtcfc":{"name":"init(_:_:)","abstract":"

      Creates the range of zooms.

      ","parent_name":"ZoomRange"},"Structs/ZoomRange.html#/s:8MapCache9ZoomRangeV7toArraySays5UInt8VGyF":{"name":"toArray()","abstract":"

      Converts the zoom range in to an array.

      ","parent_name":"ZoomRange"},"Structs/ZoomRange.html#/s:8MapCache9ZoomRangeV12makeIteratorAA0cdF0VyF":{"name":"makeIterator()","abstract":"

      Returns the iterator for this range.","parent_name":"ZoomRange"},"Structs/TileRangeIterator.html#/s:8MapCache17TileRangeIteratorV5rangeAA0cD0Vvp":{"name":"range","abstract":"

      Range for the counter

      ","parent_name":"TileRangeIterator"},"Structs/TileRangeIterator.html#/s:8MapCache17TileRangeIteratorV7counters6UInt64Vvp":{"name":"counter","abstract":"

      Current counter value

      ","parent_name":"TileRangeIterator"},"Structs/TileRangeIterator.html#/s:8MapCache17TileRangeIteratorV10maxCounters6UInt64Vvp":{"name":"maxCounter","abstract":"

      Max value counter can take.

      ","parent_name":"TileRangeIterator"},"Structs/TileRangeIterator.html#/s:8MapCache17TileRangeIteratorV7columnss6UInt64Vvp":{"name":"columns","abstract":"

      Number of columns

      ","parent_name":"TileRangeIterator"},"Structs/TileRangeIterator.html#/s:8MapCache17TileRangeIteratorV4rowss6UInt64Vvp":{"name":"rows","abstract":"

      Number of rows

      ","parent_name":"TileRangeIterator"},"Structs/TileRangeIterator.html#/s:8MapCache17TileRangeIteratorVyAcA0cD0Vcfc":{"name":"init(_:)","abstract":"

      Initializer of the iterator.","parent_name":"TileRangeIterator"},"Structs/TileRangeIterator.html#/s:8MapCache17TileRangeIteratorV4nextAA0C6CoordsCSgyF":{"name":"next()","abstract":"

      The function that is required by the Iterator protocol.

      ","parent_name":"TileRangeIterator"},"Structs/TileRange.html#/s:8MapCache9TileRangeV4zooms5UInt8Vvp":{"name":"zoom","abstract":"

      Zoom level.

      ","parent_name":"TileRange"},"Structs/TileRange.html#/s:8MapCache9TileRangeV03minC1Xs6UInt64Vvp":{"name":"minTileX","abstract":"

      Min value of tile in X axis.

      ","parent_name":"TileRange"},"Structs/TileRange.html#/s:8MapCache9TileRangeV03maxC1Xs6UInt64Vvp":{"name":"maxTileX","abstract":"

      Max value of tile in X axis.

      ","parent_name":"TileRange"},"Structs/TileRange.html#/s:8MapCache9TileRangeV03minC1Ys6UInt64Vvp":{"name":"minTileY","abstract":"

      Min value of tile in Y axis.

      ","parent_name":"TileRange"},"Structs/TileRange.html#/s:8MapCache9TileRangeV03maxC1Ys6UInt64Vvp":{"name":"maxTileY","abstract":"

      Min value of tile in Y axis.

      ","parent_name":"TileRange"},"Structs/TileRange.html#/s:8MapCache9TileRangeV5diffXs6UInt64Vvp":{"name":"diffX","abstract":"

      Difference between maxTileX and minTileX

      ","parent_name":"TileRange"},"Structs/TileRange.html#/s:8MapCache9TileRangeV5diffYs6UInt64Vvp":{"name":"diffY","abstract":"

      Difference between maxTileY and minTileY

      ","parent_name":"TileRange"},"Structs/TileRange.html#/s:8MapCache9TileRangeV4rowss6UInt64Vvp":{"name":"rows","abstract":"

      Number of rows in the range.

      ","parent_name":"TileRange"},"Structs/TileRange.html#/s:8MapCache9TileRangeV7columnss6UInt64Vvp":{"name":"columns","abstract":"

      Number of columns in the range.

      ","parent_name":"TileRange"},"Structs/TileRange.html#/s:8MapCache9TileRangeV5counts6UInt64Vvp":{"name":"count","abstract":"

      Counts the number of tiles in the range (columns x rows).

      ","parent_name":"TileRange"},"Structs/TileRange.html#/s:8MapCache9TileRangeV12makeIteratorAA0cdF0VyF":{"name":"makeIterator()","abstract":"

      Sequence iterator.","parent_name":"TileRange"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV11urlTemplateSSvp":{"name":"urlTemplate","abstract":"

      Each time a tile is going to be retrieved from the server its x,y and z (zoom) values are plugged into this URL template.

      ","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV10subdomainsSaySSGvp":{"name":"subdomains","abstract":"

      Subdomains used on the urlTemplate

      ","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV8minimumZSivp":{"name":"minimumZ","abstract":"

      It must be smaller or equal than maximumZ

      ","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV8maximumZSivp":{"name":"maximumZ","abstract":"

      Maximum supported zoom by the tile server

      ","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV16overZoomMaximumZSbvp":{"name":"overZoomMaximumZ","abstract":"

      If set to true when zooming in beyond maximumZ the tiles at maximumZ will be upsampled and shown.","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV9cacheNameSSvp":{"name":"cacheName","abstract":"

      Name of the cache","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV8capacitys6UInt64Vvp":{"name":"capacity","abstract":"

      Cache capacity in bytes

      ","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV8tileSizeSo6CGSizeVvp":{"name":"tileSize","abstract":"

      Tile size of the tile. Default is 256x256

      ","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV12loadTileModeAA04LoadeF0Ovp":{"name":"loadTileMode","abstract":"

      Load tile mode.","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigVACycfc":{"name":"init()","abstract":"

      Constructor with all the default values.

      ","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV15withUrlTemplateACSS_tcfc":{"name":"init(withUrlTemplate:)","abstract":"

      Constructor that overwrites the urlTemplate`

      ","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV15randomSubdomainSSSgyF":{"name":"randomSubdomain()","abstract":"

      Selects one of the subdomains randomly.

      ","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV19subdomainRoundRobin33_DF0222806B55D79AD742F8F62B690241LLSivp":{"name":"subdomainRoundRobin","abstract":"

      Keeps track of the index of the last subdomain requested for round robin

      ","parent_name":"MapCacheConfig"},"Structs/MapCacheConfig.html#/s:8MapCache0aB6ConfigV19roundRobinSubdomainSSSgyF":{"name":"roundRobinSubdomain()","abstract":"

      Round Robin algorithm","parent_name":"MapCacheConfig"},"Structs/Log/Level.html#/s:8MapCache3LogV5Level33_B0EB5F66C57FF526BB04701F7376DD27LLO5DebugyA2FmF":{"name":"Debug","abstract":"

      [Debug] For displaying messages useful during development.

      ","parent_name":"Level"},"Structs/Log/Level.html#/s:8MapCache3LogV5Level33_B0EB5F66C57FF526BB04701F7376DD27LLO5ErroryA2FmF":{"name":"Error","abstract":"

      [ERROR]For displaying messages of bad situations, very, very bad situations.

      ","parent_name":"Level"},"Structs/Log.html#/s:8MapCache3LogV3tag33_B0EB5F66C57FF526BB04701F7376DD27LLSSvpZ":{"name":"tag","abstract":"

      The tag [MapCache]

      ","parent_name":"Log"},"Structs/Log/Level.html":{"name":"Level","abstract":"

      Log Levels

      ","parent_name":"Log"},"Structs/Log.html#/s:8MapCache3LogV3log33_B0EB5F66C57FF526BB04701F7376DD27LLyyAC5LevelAELLO_SSyXKs5Error_pSgtFZ":{"name":"log(_:_:_:)","abstract":"

      The actual method that prints.

      ","parent_name":"Log"},"Structs/Log.html#/s:8MapCache3LogV5debug7message5errorySSyXK_s5Error_pSgtFZ":{"name":"debug(message:error:)","abstract":"

      For displaying messages. Useful during development of this package.

      ","parent_name":"Log"},"Structs/Log.html#/s:8MapCache3LogV5error7messageADySSyXK_s5Error_pSgtFZ":{"name":"error(message:error:)","abstract":"

      These messages are displayed independently of the debug mode.","parent_name":"Log"},"Structs/BytesSequence.html#/s:8MapCache13BytesSequenceV9chunkSizeSivp":{"name":"chunkSize","abstract":"

      Chunk size

      ","parent_name":"BytesSequence"},"Structs/BytesSequence.html#/s:8MapCache13BytesSequenceV4dataSays5UInt8VGvp":{"name":"data","abstract":"

      Data

      ","parent_name":"BytesSequence"},"Structs/BytesSequence.html#/s:8MapCache13BytesSequenceV12makeIterators03AnyF0Vys10ArraySliceVys5UInt8VGGyF":{"name":"makeIterator()","abstract":"

      makeIterator

      ","parent_name":"BytesSequence"},"Structs/BytesSequence.html":{"name":"BytesSequence","abstract":"

      Bytes sequence for the implementation of MD5"},"Structs/Log.html":{"name":"Log","abstract":"

      For logging messages on console.

      "},"Structs/MapCacheConfig.html":{"name":"MapCacheConfig","abstract":"

      Settings of your MapCache.

      "},"Structs/TileRange.html":{"name":"TileRange","abstract":"

      For a particular zoom level, defines a range of tiles."},"Structs/TileRangeIterator.html":{"name":"TileRangeIterator","abstract":"

      Iterator of a TileRange.

      "},"Structs/ZoomRange.html":{"name":"ZoomRange","abstract":"

      A range of zooms."},"Structs/ZoomRangeIterator.html":{"name":"ZoomRangeIterator","abstract":"

      Iterator that allows the use of ZoomRange in a for loop.

      "},"Structs/ZoomableTile.html":{"name":"ZoomableTile","abstract":"

      Specifies a single tile and area of the tile that should upscaled.

      "},"Protocols/RegionDownloaderDelegate.html#/c:@M@MapCache@objc(pl)RegionDownloaderDelegate(im)regionDownloader:didDownloadPercentage:":{"name":"regionDownloader(_:didDownloadPercentage:)","abstract":"

      Did download the percentage.

      ","parent_name":"RegionDownloaderDelegate"},"Protocols/RegionDownloaderDelegate.html#/c:@M@MapCache@objc(pl)RegionDownloaderDelegate(im)regionDownloader:didFinishDownload:":{"name":"regionDownloader(_:didFinishDownload:)","abstract":"

      Did Finish Download all tiles.

      ","parent_name":"RegionDownloaderDelegate"},"Protocols/MapCacheProtocol.html#/s:8MapCache0aB8ProtocolP6configAA0aB6ConfigVvp":{"name":"config","abstract":"

      An instance of MapCacheConfig

      ","parent_name":"MapCacheProtocol"},"Protocols/MapCacheProtocol.html#/s:8MapCache0aB8ProtocolP3url11forTilePath10Foundation3URLVSo013MKTileOverlayG0a_tF":{"name":"url(forTilePath:)","abstract":"

      The implementation shall convert a tile path into a URL object

      ","parent_name":"MapCacheProtocol"},"Protocols/MapCacheProtocol.html#/s:8MapCache0aB8ProtocolP8loadTile2at6resultySo17MKTileOverlayPatha_y10Foundation4DataVSg_s5Error_pSgtctF":{"name":"loadTile(at:result:)","abstract":"

      The implementation shall return either the tile as a Data object or an Error if the tile could not be retrieved.

      ","parent_name":"MapCacheProtocol"},"Protocols/MapCacheProtocol.html":{"name":"MapCacheProtocol","abstract":"

      This protocol shall be implemented by any cache used in MapCache.

      "},"Protocols/RegionDownloaderDelegate.html":{"name":"RegionDownloaderDelegate","abstract":"

      Delegate protocol of RegionDownloader."},"Functions.html#/s:8MapCache17isNoSuchFileError33_FC193A7AE40E49CC84DE49A3128B2975LLySbs0G0_pSgF":{"name":"isNoSuchFileError(_:)","abstract":"

      Error when there is not a file.

      "},"Functions.html#/s:8MapCache1loiySbSo8NSNumberC_ADtF":{"name":"<(_:_:)","abstract":"

      Overload of the the < operator

      "},"Functions.html#/s:8MapCache12arrayOfBytes5value6lengthSays5UInt8VGx_SiSgtlF":{"name":"arrayOfBytes(value:length:)","abstract":"

      array of bytes, little-endian representation

      "},"Functions.html#/s:8MapCache10rotateLeft1v1ns6UInt32VAF_AFtF":{"name":"rotateLeft(v:n:)","abstract":"

      Rotate left for MD5 implementation

      "},"Functions.html#/s:8MapCache18sliceToUInt32ArrayySays0E0VGs0F5SliceVys5UInt8VGF":{"name":"sliceToUInt32Array(_:)","abstract":"

      sliceToUInt32 for MD5 implementation

      "},"Extensions/MKZoomScale.html#/s:14CoreFoundation7CGFloatV8MapCacheE11toZoomLevel8tileSizeSiSo6CGSizeV_tF":{"name":"toZoomLevel(tileSize:)","abstract":"

      Converts from standard MapKit MKZoomScale to tile zoom level

      ","parent_name":"MKZoomScale"},"Extensions/MKTileOverlayPath.html#/s:So17MKTileOverlayPatha8MapCacheE10tileCoordsAbC04TileG0C_tcfc":{"name":"init(tileCoords:)","abstract":"

      Creates a MkTileOverlayPath from a MapCache TileCoords

      ","parent_name":"MKTileOverlayPath"},"Extensions/MKTileOverlayPath.html#/s:So17MKTileOverlayPatha8MapCacheE12toTileCoordsAC0gH0CSgyF":{"name":"toTileCoords()","abstract":"

      Returns the tile overlay path as a TileCoords object.

      ","parent_name":"MKTileOverlayPath"},"Extensions/MKMapView.html#/s:So9MKMapViewC8MapCacheE03useD0_010canReplaceC7ContentAC17CachedTileOverlayCAC0cD8Protocol_p_SbtF":{"name":"useCache(_:canReplaceMapContent:)","abstract":"

      Will tell the map to use the cache passed as parameter for getting the tiles.

      ","parent_name":"MKMapView"},"Extensions/MKMapView.html#/s:So9MKMapViewC8MapCacheE03mapD8Renderer10forOverlaySo09MKOverlayF0CSo0I0_p_tF":{"name":"mapCacheRenderer(forOverlay:)","abstract":"

      Call this method within the MKMapView delegate function","parent_name":"MKMapView"},"Extensions/MKMapView.html#/s:So9MKMapViewC8MapCacheE9zoomLevelSivp":{"name":"zoomLevel","abstract":"

      TODO: Implement this correctly.","parent_name":"MKMapView"},"Extensions/URL.html#/s:10Foundation3URLV8MapCacheE28regularFileAllocatedDiskSizes6UInt64VyKF":{"name":"regularFileAllocatedDiskSize()","abstract":"

      Returns the allocated size in disk for a regular file in bytes.","parent_name":"URL"},"Extensions/URL.html#/s:10Foundation3URLV8MapCacheE15regularFileSizes6UInt64VyKF":{"name":"regularFileSize()","abstract":"

      Returns the allocated file a regular file in bytes.

      ","parent_name":"URL"},"Extensions/String.html#/s:SS8MapCacheE15escapedFilenameSSyF":{"name":"escapedFilename()","abstract":"

      Returns the escaped version of a filename.

      ","parent_name":"String"},"Extensions/String.html#/s:SS8MapCacheE5toMD5SSyF":{"name":"toMD5()","abstract":"

      Returns the md5 digest of this string.

      ","parent_name":"String"},"Extensions/String.html#/s:SS8MapCacheE11MD5FilenameSSyF":{"name":"MD5Filename()","abstract":"

      Returns the path for the filename whose name is hold in this string.

      ","parent_name":"String"},"Extensions/NSMutableData.html#/s:So13NSMutableDataC8MapCacheE11appendBytes07arrayOfF0ySays5UInt8VG_tF":{"name":"appendBytes(arrayOfBytes:)","abstract":"

      Convenient way to append bytes

      ","parent_name":"NSMutableData"},"Extensions/Int.html#/s:Si8MapCacheE5bytes10totalBytesSays5UInt8VGSi_tF":{"name":"bytes(totalBytes:)","abstract":"

      Array of bytes with optional padding (little-endian)

      ","parent_name":"Int"},"Extensions/FileManager/fileSizeForDirectory%28at%3A%29.html#/s:So13NSFileManagerC8MapCacheE20fileSizeForDirectory2ats6UInt64V10Foundation3URLV_tKF12errorHandlerL__0M0SbAJ_s5Error_ptF":{"name":"errorHandler(_:error:)","abstract":"

      Handler in case of error when calculating the filesize

      ","parent_name":"fileSizeForDirectory(at:)"},"Extensions/FileManager/allocatedDiskSizeForDirectory%28at%3A%29.html#/s:So13NSFileManagerC8MapCacheE29allocatedDiskSizeForDirectory2ats6UInt64V10Foundation3URLV_tKF12errorHandlerL__0N0SbAJ_s5Error_ptF":{"name":"errorHandler(_:error:)","abstract":"

      Error handler in case there is a problem when getting the information from the disk

      ","parent_name":"allocatedDiskSizeForDirectory(at:)"},"Extensions/FileManager.html#/s:So13NSFileManagerC8MapCacheE28enumerateContentsOfDirectory6atPath17orderedByProperty9ascending10usingBlockySS_SSSby10Foundation3URLV_SiSbztXEtF":{"name":"enumerateContentsOfDirectory(atPath:orderedByProperty:ascending:usingBlock:)","abstract":"

      Gets the list of files of this the directory.

      ","parent_name":"FileManager"},"Extensions/FileManager/allocatedDiskSizeForDirectory%28at%3A%29.html":{"name":"allocatedDiskSizeForDirectory(at:)","abstract":"

      Calculate the allocated size of a directory and all its contents on the volume.

      ","parent_name":"FileManager"},"Extensions/FileManager/fileSizeForDirectory%28at%3A%29.html":{"name":"fileSizeForDirectory(at:)","abstract":"

      Calculates the actual sum of file sizes

      ","parent_name":"FileManager"},"Extensions/FileManager.html":{"name":"FileManager","abstract":"

      Class for handling the operations with file folders.

      "},"Extensions/Int.html":{"name":"Int","abstract":"

      Extension for the implementation of MD5

      "},"Extensions/NSMutableData.html":{"name":"NSMutableData","abstract":"

      Extension for the implementation of MD5

      "},"Extensions/String.html":{"name":"String","abstract":"

      Extension that adds a few methods that are useful for the DiskCache.

      "},"Extensions/URL.html":{"name":"URL"},"Extensions/MKMapView.html":{"name":"MKMapView","abstract":"

      Extension that provides MKMapView support to use MapCache.

      "},"Extensions/MKTileOverlayPath.html":{"name":"MKTileOverlayPath","abstract":"

      Extension to ease MapCache stuff :)

      "},"Extensions/MKZoomScale.html":{"name":"MKZoomScale","abstract":"

      Extension for MapCache

      "},"Enums/TileRangeError.html#/s:8MapCache14TileRangeErrorO0cD8CreationyA2CmF":{"name":"TileRangeCreation","abstract":"

      Error to be thrown in case of an issue during creation.

      ","parent_name":"TileRangeError"},"Enums/TileError.html#/s:8MapCache9TileErrorO8overflowyA2CmF":{"name":"overflow","abstract":"

      Overflow in the tile

      ","parent_name":"TileError"},"Enums/LongitudeError.html#/s:8MapCache14LongitudeErrorO11overflowMinyA2CmF":{"name":"overflowMin","abstract":"

      Overflow if latitud is smaller than the minimum.

      ","parent_name":"LongitudeError"},"Enums/LongitudeError.html#/s:8MapCache14LongitudeErrorO11overflowMaxyA2CmF":{"name":"overflowMax","abstract":"

      Overflow if latitud is greater than the maximum.

      ","parent_name":"LongitudeError"},"Enums/LatitudeError.html#/s:8MapCache13LatitudeErrorO11overflowMinyA2CmF":{"name":"overflowMin","abstract":"

      Overflow if latitud is smaller than the minimum.

      ","parent_name":"LatitudeError"},"Enums/LatitudeError.html#/s:8MapCache13LatitudeErrorO11overflowMaxyA2CmF":{"name":"overflowMax","abstract":"

      Overflow if latitud is greater than the maximum.

      ","parent_name":"LatitudeError"},"Enums/ZoomError.html#/s:8MapCache9ZoomErrorO12largerThan19yA2CmF":{"name":"largerThan19","abstract":"

      Zoom largest value is 19.

      ","parent_name":"ZoomError"},"Enums/LoadTileMode.html#/s:8MapCache12LoadTileModeO15cacheThenServeryA2CmF":{"name":"cacheThenServer","abstract":"

      Default. If the tile exists in the cache, return it, otherwise, fetch it from server (and cache the result).

      ","parent_name":"LoadTileMode"},"Enums/LoadTileMode.html#/s:8MapCache12LoadTileModeO010serverThenB0yA2CmF":{"name":"serverThenCache","abstract":"

      Always return the tile from the server unless there is some problem with the network.","parent_name":"LoadTileMode"},"Enums/LoadTileMode.html#/s:8MapCache12LoadTileModeO9cacheOnlyyA2CmF":{"name":"cacheOnly","abstract":"

      Only return data from cache.","parent_name":"LoadTileMode"},"Enums/LoadTileMode.html#/s:8MapCache12LoadTileModeO10serverOnlyyA2CmF":{"name":"serverOnly","abstract":"

      Always return the tile from the server, as well as updating the cache.","parent_name":"LoadTileMode"},"Enums/LoadTileMode.html":{"name":"LoadTileMode","abstract":"

      Defines the strategies that can be used for retrieving the tiles from the cache"},"Enums/ZoomError.html":{"name":"ZoomError","abstract":"

      Errors for Zoom.

      "},"Enums/LatitudeError.html":{"name":"LatitudeError","abstract":"

      Errors for a latitude.

      "},"Enums/LongitudeError.html":{"name":"LongitudeError","abstract":"

      Errors for a longitude.

      "},"Enums/TileError.html":{"name":"TileError","abstract":"

      Errors for a tile

      "},"Enums/TileRangeError.html":{"name":"TileRangeError","abstract":"

      Errors for tile range

      "},"Classes/TileCoordsRegion.html#/s:8MapCache16TileCoordsRegionC7topLeftAA0cD0Cvp":{"name":"topLeft","abstract":"

      Top left tile/coordinate.

      ","parent_name":"TileCoordsRegion"},"Classes/TileCoordsRegion.html#/s:8MapCache16TileCoordsRegionC11bottomRightAA0cD0Cvp":{"name":"bottomRight","abstract":"

      Bottom right tile/coordinate.

      ","parent_name":"TileCoordsRegion"},"Classes/TileCoordsRegion.html#/s:8MapCache16TileCoordsRegionC9zoomRangeAA04ZoomG0Vvp":{"name":"zoomRange","abstract":"

      Zoom range for the region.

      ","parent_name":"TileCoordsRegion"},"Classes/TileCoordsRegion.html#/s:8MapCache16TileCoordsRegionC5counts6UInt64Vvp":{"name":"count","abstract":"

      Total number of tiles in this region for all zoom levels.

      ","parent_name":"TileCoordsRegion"},"Classes/TileCoordsRegion.html#/s:8MapCache16TileCoordsRegionC15topLeftLatitude0fG9Longitude011bottomRightH00jkI07minZoom03maxM0ACSgSd_S3ds5UInt8VALtcfc":{"name":"init(topLeftLatitude:topLeftLongitude:bottomRightLatitude:bottomRightLongitude:minZoom:maxZoom:)","abstract":"

      The region will be the area that holds the line from any top left point (P1) to any","parent_name":"TileCoordsRegion"},"Classes/TileCoordsRegion.html#/s:8MapCache16TileCoordsRegionC7topLeft11bottomRightACSgAA0cD0C_AHtcfc":{"name":"init(topLeft:bottomRight:)","abstract":"

      The region will be the area that holds the line from any top left point (P1) to any","parent_name":"TileCoordsRegion"},"Classes/TileCoordsRegion.html#/s:8MapCache16TileCoordsRegionC5count7forZooms6UInt64Vs5UInt8V_tF":{"name":"count(forZoom:)","abstract":"

      Counts for the zoom

      ","parent_name":"TileCoordsRegion"},"Classes/TileCoordsRegion.html#/s:8MapCache16TileCoordsRegionC10tileRanges7forZoomSayAA0C5RangeVGSgs5UInt8V_tF":{"name":"tileRanges(forZoom:)","abstract":"

      All the tile ranges for this particular zoom.","parent_name":"TileCoordsRegion"},"Classes/TileCoordsRegion.html#/s:8MapCache16TileCoordsRegionC10tileRangesSayAA0C5RangeVGSgyF":{"name":"tileRanges()","abstract":"

      Gets the tile ranges for all zooms.

      ","parent_name":"TileCoordsRegion"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC11maxLatitudeSdvpZ":{"name":"maxLatitude","abstract":"

      Max value of latitude that can be retrieved with tiles (-85.0511 degrees)

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC11minLatitudeSdvpZ":{"name":"minLatitude","abstract":"

      Min value of latitude that can be retrieved with tiles (-85.0511 degrees)

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC12maxLongitudeSdvpZ":{"name":"maxLongitude","abstract":"

      Max value of a longitude (<180.0).","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC12minLongitudeSdvpZ":{"name":"minLongitude","abstract":"

      Min value of a longitude (>=180.0)","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC7maxZooms5UInt8VvpZ":{"name":"maxZoom","abstract":"

      Max zoom supported in tile servers (19)

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC7minZooms5UInt8VvpZ":{"name":"minZoom","abstract":"

      Min zoom supported (0)

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC03maxC07forZooms6UInt64Vs5UInt8V_tFZ":{"name":"maxTile(forZoom:)","abstract":"

      Based on current zoom it indicates what is the max tile

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC8validate9longitudeySd_tKFZ":{"name":"validate(longitude:)","abstract":"

      Validates if longitude is between min and max allowed longitudes

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC8validate8latitudeySd_tKFZ":{"name":"validate(latitude:)","abstract":"

      Validates if a latitude is between min and max allowed latitudes.","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC8validate4zoomys5UInt8V_tKFZ":{"name":"validate(zoom:)","abstract":"

      Validate zoom is less or equal to the maxZoom","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC8validate4tile7forZoomys6UInt64V_s5UInt8VtKFZ":{"name":"validate(tile:forZoom:)","abstract":"

      Validates if the tile is within the range for the zoom","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC011longitudeToC1X0E04zooms6UInt64VSd_s5UInt8VtKFZ":{"name":"longitudeToTileX(longitude:zoom:)","abstract":"

      Returns the tile in the X axis for the longitude and zoom.","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC010latitudeToC1Y0E04zooms6UInt64VSd_s5UInt8VtKFZ":{"name":"latitudeToTileY(latitude:zoom:)","abstract":"

      Returns the tile in the Y axis for the latitude and zoom.","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC16tileXToLongitude0E1X4zoomSds6UInt64V_s5UInt8VtKFZ":{"name":"tileXToLongitude(tileX:zoom:)","abstract":"

      Returns the corresponding longitude in degrees for the tileX at zoom level

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC15tileYToLatitude0E1Y4zoomSds6UInt64V_s5UInt8VtKFZ":{"name":"tileYToLatitude(tileY:zoom:)","abstract":"

      Returns the corresponding latitude in degrees for the tileY at zoom level

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC5_zoom33_EA7126F1A3D16AFAE6DD45A5164BF908LLs5UInt8Vvp":{"name":"_zoom","abstract":"

      Holds the zoom level.","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC4zooms5UInt8Vvp":{"name":"zoom","abstract":"

      Zoom level. Read only. Use setZoom() to change it.

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC9_latitude33_EA7126F1A3D16AFAE6DD45A5164BF908LLSdvp":{"name":"_latitude","abstract":"

      Holds the actual latitude

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC8latitudeSdvp":{"name":"latitude","abstract":"

      Latitude for this tile. Use set() to change it.

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC10_longitude33_EA7126F1A3D16AFAE6DD45A5164BF908LLSdvp":{"name":"_longitude","abstract":"

      Holds the actual longitude

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC9longitudeSdvp":{"name":"longitude","abstract":"

      Longitude for this tile. Use set() to change it.

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC6_tileX33_EA7126F1A3D16AFAE6DD45A5164BF908LLs6UInt64Vvp":{"name":"_tileX","abstract":"

      Holds the actual tileX

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC5tileXs6UInt64Vvp":{"name":"tileX","abstract":"

      Tile in the X axis for current longitude and zoom. Use set() to change it.

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC6_tileY33_EA7126F1A3D16AFAE6DD45A5164BF908LLs6UInt64Vvp":{"name":"_tileY","abstract":"

      Holds the actual tileY

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC5tileYs6UInt64Vvp":{"name":"tileY","abstract":"

      Tile in the Y axis for current latitude and zoom. Use set() to change it.

      ","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC3set4zoomys5UInt8V_tKF":{"name":"set(zoom:)","abstract":"

      Set zoom level.","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC3set5tileX0F1Yys6UInt64V_AHtKF":{"name":"set(tileX:tileY:)","abstract":"

      Set tile X and Y values.","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC3set8latitude9longitudeySd_SdtKF":{"name":"set(latitude:longitude:)","abstract":"

      Sets latitude and longitude.","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC5tileX0E1Y4zoomACSgs6UInt64V_AIs5UInt8Vtcfc":{"name":"init(tileX:tileY:zoom:)","abstract":"

      Init a TileCoords instance using tile and zoom info.","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC8latitude9longitude4zoomACSgSd_Sds5UInt8Vtcfc":{"name":"init(latitude:longitude:zoom:)","abstract":"

      Init a TileCoords instance using latitude, longitude and zoom info.","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC_4zoomACSgAC_s5UInt8Vtcfc":{"name":"init(_:zoom:)","abstract":"

      Creates a new Tile Coord with the same latitude and longitude","parent_name":"TileCoords"},"Classes/TileCoords.html#/s:8MapCache10TileCoordsC03maxC0s6UInt64VyF":{"name":"maxTile()","abstract":"

      Returns the maximum tile number for current set zoom.

      ","parent_name":"TileCoords"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC27defaultAverageTileSizeBytess6UInt64VvpZ":{"name":"defaultAverageTileSizeBytes","abstract":"

      Approximation of the average number of bytes of a tile (used with 256x256 tiles).

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC6regionAA010TileCoordsC0Cvp":{"name":"region","abstract":"

      Region that will be downloaded.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC03mapB0AA0aB8Protocol_pvp":{"name":"mapCache","abstract":"

      Cache that is going to be used for saving/loading the files.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC20totalTilesToDownloads6UInt64Vvp":{"name":"totalTilesToDownload","abstract":"

      Total number of tiles to be downloaded.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC22pendingTilesToDownloads6UInt64Vvp":{"name":"pendingTilesToDownload","abstract":"

      Number of tiles pending to be downloaded.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC16_downloadedBytes33_D06B6E21D1152A2FAE42E90A57D8E9B9LLs6UInt64Vvp":{"name":"_downloadedBytes","abstract":"

      The variable that actually keeps the count of the downloaded bytes.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC15downloadedBytess6UInt64Vvp":{"name":"downloadedBytes","abstract":"

      Total number of downloaded data bytes.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC20averageTileSizeBytess6UInt64Vvp":{"name":"averageTileSizeBytes","abstract":"

      Returns the average

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/c:@M@MapCache@objc(cs)RegionDownloader(py)downloadedTiles":{"name":"downloadedTiles","abstract":"

      Keeps the number of tiles already downloaded successfully or failed.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC24_successfulTileDownloads33_D06B6E21D1152A2FAE42E90A57D8E9B9LLs6UInt64Vvp":{"name":"_successfulTileDownloads","abstract":"

      Number of successfully downloaded tiles.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/c:@M@MapCache@objc(cs)RegionDownloader(py)successfulTileDownloads":{"name":"successfulTileDownloads","abstract":"

      Keeps the number of tiles already downloaded.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC20_failedTileDownloads33_D06B6E21D1152A2FAE42E90A57D8E9B9LLs6UInt64Vvp":{"name":"_failedTileDownloads","abstract":"

      Keeps the number of tiles failes to be downloaded.","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/c:@M@MapCache@objc(cs)RegionDownloader(py)failedTileDownloads":{"name":"failedTileDownloads","abstract":"

      Number of tiles to be downloaded

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC22nextPercentageToNotifySdvp":{"name":"nextPercentageToNotify","abstract":"

      Percentage to notify thought delegate.","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC33incrementInPercentageNotificationSdvp":{"name":"incrementInPercentageNotification","abstract":"

      The downloader will notify the delegate every time this.","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC22lastPercentageNotifiedSdvp":{"name":"lastPercentageNotified","abstract":"

      Last percentage notified to the deletage.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC20downloadedPercentageSdvp":{"name":"downloadedPercentage","abstract":"

      Percentage of tiles pending to download.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC8delegateAA0cD8Delegate_pSgvp":{"name":"delegate","abstract":"

      Delegate.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC15downloaderQueueSo17OS_dispatch_queueCvp":{"name":"downloaderQueue","abstract":"

      Queue to download the stuff.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC03forC003mapB0AcA010TileCoordsC0C_AA0aB8Protocol_ptcfc":{"name":"init(forRegion:mapCache:)","abstract":"

      Initializes the downloader with the region and the MapCache.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC13resetCountersyyF":{"name":"resetCounters()","abstract":"

      Resets downloader counters.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC5startyyF":{"name":"start()","abstract":"

      Starts download.

      ","parent_name":"RegionDownloader"},"Classes/RegionDownloader.html#/s:8MapCache16RegionDownloaderC08estimateC8ByteSizes6UInt64VyF":{"name":"estimateRegionByteSize()","abstract":"

      Returns an estimation of the total number of bytes the whole region may occupy.","parent_name":"RegionDownloader"},"Classes/MapCache.html#/s:8MapCacheAAC6configAA0aB6ConfigVvp":{"name":"config","abstract":"

      Cofiguration that will be used to set up the behavior of the MapCache instance

      ","parent_name":"MapCache"},"Classes/MapCache.html#/s:8MapCacheAAC04diskB0AA04DiskB0Cvp":{"name":"diskCache","abstract":"

      It manages the physical storage of the tile images in the device

      ","parent_name":"MapCache"},"Classes/MapCache.html#/s:8MapCacheAAC14operationQueueSo011NSOperationD0Cvp":{"name":"operationQueue","abstract":"

      Manages the queue of network requests for retrieving the tiles

      ","parent_name":"MapCache"},"Classes/MapCache.html#/s:8MapCacheAAC10withConfigAbA0abD0V_tcfc":{"name":"init(withConfig:)","abstract":"

      Constructor. It sets the config variable and initializes the diskCache with the name and capacity set in the config.

      ","parent_name":"MapCache"},"Classes/MapCache.html#/s:8MapCacheAAC3url11forTilePath10Foundation3URLVSo013MKTileOverlayF0a_tF":{"name":"url(forTilePath:)","abstract":"

      Returns the URL for a tile.

      ","parent_name":"MapCache"},"Classes/MapCache.html#/s:8MapCacheAAC8cacheKey7forPathSSSo013MKTileOverlayF0a_tF":{"name":"cacheKey(forPath:)","abstract":"

      For the path passed as argument it creates a unique key to be used in DiskCache.

      ","parent_name":"MapCache"},"Classes/MapCache.html#/s:8MapCacheAAC19fetchTileFromServer2at7failure7successySo17MKTileOverlayPatha_ys5Error_pSgcSgy10Foundation4DataVctF":{"name":"fetchTileFromServer(at:failure:success:)","abstract":"

      Fetches tile from server.","parent_name":"MapCache"},"Classes/MapCache.html#/s:8MapCacheAAC8loadTile2at6resultySo17MKTileOverlayPatha_y10Foundation4DataVSg_s5Error_pSgtctF":{"name":"loadTile(at:result:)","abstract":"

      Returns the tile to be displayed on the overlay.","parent_name":"MapCache"},"Classes/MapCache.html#/s:8MapCacheAAC8diskSizes6UInt64Vvp":{"name":"diskSize","abstract":"

      Currently size of the cache

      ","parent_name":"MapCache"},"Classes/MapCache.html#/s:8MapCacheAAC17calculateDiskSizes6UInt64VyF":{"name":"calculateDiskSize()","abstract":"

      Calculates the disk space allocated in dis for the cache

      ","parent_name":"MapCache"},"Classes/MapCache.html#/s:8MapCacheAAC5clear12completitionyyycSg_tF":{"name":"clear(completition:)","abstract":"

      Clears the cache.","parent_name":"MapCache"},"Classes/MD5.html#/s:8MapCache3MD5C1s33_FDBD59F52EA1EDEB4C781BB1327F97FELLSays6UInt32VGvp":{"name":"s","abstract":"

      specifies the per-round shift amounts

      ","parent_name":"MD5"},"Classes/MD5.html#/s:8MapCache3MD5C1k33_FDBD59F52EA1EDEB4C781BB1327F97FELLSays6UInt32VGvp":{"name":"k","abstract":"

      binary integer part of the sines of integers (Radians)

      ","parent_name":"MD5"},"Classes/MD5.html#/s:8MapCache3MD5C1h33_FDBD59F52EA1EDEB4C781BB1327F97FELLSays6UInt32VGvp":{"name":"h","abstract":"

      H

      ","parent_name":"MD5"},"Classes/MD5.html#/s:8MapCache3MD5C9calculateSays5UInt8VGyF":{"name":"calculate()","abstract":"

      Calculates the MD5 as an array of UInt8

      ","parent_name":"MD5"},"Classes/HashBase.html#/s:8MapCache8HashBaseC4sizeSivpZ":{"name":"size","parent_name":"HashBase"},"Classes/HashBase.html#/s:8MapCache8HashBaseC7messageSays5UInt8VGvp":{"name":"message","abstract":"

      Message to be converted into a MD5 string

      ","parent_name":"HashBase"},"Classes/HashBase.html#/s:8MapCache8HashBaseCyACSays5UInt8VGcfc":{"name":"init(_:)","abstract":"

      Constructor

      ","parent_name":"HashBase"},"Classes/HashBase.html#/s:8MapCache8HashBaseC7prepareySays5UInt8VGSiF":{"name":"prepare(_:)","abstract":"

      Common part for hash calculation. Prepare header data.

      ","parent_name":"HashBase"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C7baseURL10Foundation0E0VyFZ":{"name":"baseURL()","abstract":"

      Gets the root base folder to be used.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C9folderURL10Foundation0E0Vvp":{"name":"folderURL","abstract":"

      URL of the physical folder of the Cache in the file system.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C4pathSSvp":{"name":"path","abstract":"

      A shortcut for folderURL.path.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C8diskSizes6UInt64Vvp":{"name":"diskSize","abstract":"

      Sum of the allocated size in disk for the cache expressed in bytes.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C8fileSizes6UInt64VSgvp":{"name":"fileSize","abstract":"

      This is the sum of the data sizes of the files within the DiskCache

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C8capacitys6UInt64Vvp":{"name":"capacity","abstract":"

      Maximum allowed cache disk allocated size for this DiskCache","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C10cacheQueueSo17OS_dispatch_queueCvp":{"name":"cacheQueue","abstract":"

      Queue for making async operations.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C8withName8capacityACSS_s6UInt64Vtcfc":{"name":"init(withName:capacity:)","abstract":"

      Constructor

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C4path6forKeyS2S_tF":{"name":"path(forKey:)","abstract":"

      Get the path for key.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C7setData_6forKeyy10Foundation0E0V_SStF":{"name":"setData(_:forKey:)","abstract":"

      Sets the data for the key asyncronously.","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C11setDataSync_6forKeyy10Foundation0E0V_SStF":{"name":"setDataSync(_:forKey:)","abstract":"

      Sets the data for the key synchronously.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C13fetchDataSync6forKey7failure7successySS_ys5Error_pSgcSgy10Foundation0E0VctF":{"name":"fetchDataSync(forKey:failure:success:)","abstract":"

      Fetches the image data from storage synchronously.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C10removeData7withKeyySS_tF":{"name":"removeData(withKey:)","abstract":"

      Removes asynchronously the data from the diskcache for the key passed as argument.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C13removeAllDatayyyycSgF":{"name":"removeAllData(_:)","abstract":"

      Removes asynchronously all data from the cache.","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C06removeB0yyF":{"name":"removeCache()","abstract":"

      Removes the cache from the system.","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C16updateAccessDate_3keyy10Foundation4DataVSgyXA_SStF":{"name":"updateAccessDate(_:key:)","abstract":"

      Asynchronously updates the access date of a file.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C09calculateC4Sizes6UInt64VyF":{"name":"calculateDiskSize()","abstract":"

      Calculates the size used by all the files in the cache.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C15controlCapacity33_FC193A7AE40E49CC84DE49A3128B2975LLyyF":{"name":"controlCapacity()","abstract":"

      It checks if the capacity of the cache has been reached. If so, it removes the least recently used file (LRU).

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C06updateC10AccessDate33_FC193A7AE40E49CC84DE49A3128B2975LL6atPathSbSS_tF":{"name":"updateDiskAccessDate(atPath:)","abstract":"

      Updates the time a file was accessed for the last time.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C10removeFile33_FC193A7AE40E49CC84DE49A3128B2975LL6atPathySS_tF":{"name":"removeFile(atPath:)","abstract":"

      Removes a file syncrhonously.

      ","parent_name":"DiskCache"},"Classes/DiskCache.html#/s:8MapCache04DiskB0C9substract33_FC193A7AE40E49CC84DE49A3128B2975LL8diskSizeys6UInt64V_tF":{"name":"substract(diskSize:)","abstract":"

      Substracts from the cachesize the disk size passed as parameter.","parent_name":"DiskCache"},"Classes/CachedTileOverlayRenderer.html#/c:@M@MapCache@objc(cs)CachedTileOverlayRenderer(im)canDrawMapRect:zoomScale:":{"name":"canDraw(_:zoomScale:)","abstract":"

      Indicates if the renderer is ready to draw. It´s always true

      ","parent_name":"CachedTileOverlayRenderer"},"Classes/CachedTileOverlayRenderer.html#/c:@M@MapCache@objc(cs)CachedTileOverlayRenderer(im)drawMapRect:zoomScale:inContext:":{"name":"draw(_:zoomScale:in:)","abstract":"

      Draws the tile in the map

      ","parent_name":"CachedTileOverlayRenderer"},"Classes/CachedTileOverlay.html#/s:8MapCache17CachedTileOverlayC03mapB0AA0aB8Protocol_pvp":{"name":"mapCache","abstract":"

      A class that implements the MapCacheProtocol

      ","parent_name":"CachedTileOverlay"},"Classes/CachedTileOverlay.html#/s:8MapCache17CachedTileOverlayC03useB0Sbvp":{"name":"useCache","abstract":"

      If true loadTile uses the implementation of the mapCache var. If false, uses the","parent_name":"CachedTileOverlay"},"Classes/CachedTileOverlay.html#/s:8MapCache17CachedTileOverlayC04withB0AcA0aB8Protocol_p_tcfc":{"name":"init(withCache:)","abstract":"

      Constructor.

      ","parent_name":"CachedTileOverlay"},"Classes/CachedTileOverlay.html#/c:@M@MapCache@objc(cs)CachedTileOverlay(im)URLForTilePath:":{"name":"url(forTilePath:)","abstract":"

      Generates the URL for the tile to be requested.","parent_name":"CachedTileOverlay"},"Classes/CachedTileOverlay.html#/c:@M@MapCache@objc(cs)CachedTileOverlay(im)loadTileAtPath:result:":{"name":"loadTile(at:result:)","abstract":"

      When invoked it will load the tile using the standard OS implementation (if useCacheis false)","parent_name":"CachedTileOverlay"},"Classes/CachedTileOverlay.html#/s:8MapCache17CachedTileOverlayC10shouldZoom2atSb14CoreFoundation7CGFloatV_tF":{"name":"shouldZoom(at:)","abstract":"

      Tells whether or not to upsample and show a lesser detailed z level","parent_name":"CachedTileOverlay"},"Classes/CachedTileOverlay.html#/s:8MapCache17CachedTileOverlayC07tilesInA4Rect4rect5scaleSayAA08ZoomableD0VGSo05MKMapH0a_14CoreFoundation7CGFloatVtF":{"name":"tilesInMapRect(rect:scale:)","abstract":"

      Given the maximum zoom level for the tileset (mapCache.config.maximumZ) it will return the tile, map rects, and additional scaling factor for upscaling tiles.

      ","parent_name":"CachedTileOverlay"},"Classes/CachedTileOverlay.html":{"name":"CachedTileOverlay","abstract":"

      Whenever a tile is requested by the MapView, it calls the MKTileOverlay.loadTile."},"Classes/CachedTileOverlayRenderer.html":{"name":"CachedTileOverlayRenderer","abstract":"

      A Tile overlay that supports to zoom beyond the maximumZ

      "},"Classes/DiskCache.html":{"name":"DiskCache","abstract":"

      A specialized cache for storing data in disk."},"Classes/HashBase.html":{"name":"HashBase","abstract":"

      HashBase"},"Classes/MD5.html":{"name":"MD5","abstract":"

      An actual implementation of the MD5"},"Classes/MapCache.html":{"name":"MapCache","abstract":"

      This is the main implementation of the MapCacheProtocol, the actual cache

      "},"Classes/RegionDownloader.html":{"name":"RegionDownloader","abstract":"

      Hey! I need to download this area of the map."},"Classes/TileCoords.html":{"name":"TileCoords","abstract":"

      Class to convert from Map Tiles to coordinates and from coordinates to tiles

      "},"Classes/TileCoordsRegion.html":{"name":"TileCoordsRegion","abstract":"

      3 dimensional square region in a tile map."},"Classes.html":{"name":"Classes","abstract":"

      The following classes are available globally.

      "},"Enums.html":{"name":"Enumerations","abstract":"

      The following enumerations are available globally.

      "},"Extensions.html":{"name":"Extensions","abstract":"

      The following extensions are available globally.

      "},"Functions.html":{"name":"Functions","abstract":"

      The following functions are available globally.

      "},"Protocols.html":{"name":"Protocols","abstract":"

      The following protocols are available globally.

      "},"Structs.html":{"name":"Structures","abstract":"

      The following structures are available globally.

      "},"Typealiases.html":{"name":"Type Aliases","abstract":"

      The following type aliases are available globally.

      "}} \ No newline at end of file diff --git a/docs/undocumented.json b/docs/undocumented.json index d715266..810612b 100644 --- a/docs/undocumented.json +++ b/docs/undocumented.json @@ -2,5 +2,5 @@ "warnings": [ ], - "source_directory": "/Users/merlos/Projects/MapCacher/sources/MapCache" + "source_directory": "/Users/merlos/projects/OpenGPXTracker/MapCache" } \ No newline at end of file