Commit 9c4d93f3 authored by gap95's avatar gap95
Browse files

Merge branch '20-ride-history-2' of...

Merge branch '20-ride-history-2' of https://gitlab.rz.hft-stuttgart.de/92khra1mst/hft_awado_app into 20-ride-history-2
parents 242c61f0 64bf15a2
......@@ -37,9 +37,15 @@
},
{
"input": "src/global.scss"
}
},
"src/assets/js/mapsjs-ui.css"
],
"scripts": []
"scripts": [
"./src/assets/js/mapsjs-core.js",
"./src/assets/js/mapsjs-mapevents.js",
"./src/assets/js/mapsjs-service.js",
"./src/assets/js/mapsjs-ui.js"
]
},
"configurations": {
"production": {
......
<?xml version='1.0' encoding='utf-8'?>
<widget id="io.ionic.starter" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>MyApp</name>
<name>AWADO</name>
<description>An awesome Ionic/Cordova app.</description>
<author email="hi@ionicframework.com" href="http://ionicframework.com/">Ionic Framework Team</author>
<content src="index.html" />
......
import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import { Router, LoadChildrenCallback } from '@angular/router';
import { Observable } from 'rxjs';
import { HttpClient } from '@angular/common/http';
import { RestService } from '../../rest.service';
import { UserService } from 'src/app/services/user.service';
import { LocationService } from 'src/app/services/location.service';
import { LoadingService } from 'src/app/services/loading.service';
@Component({
selector: 'app-login',
......@@ -15,12 +17,15 @@ import { UserService } from 'src/app/services/user.service';
export class LoginPage implements OnInit {
username = "";
password = "";
//username = "";
//password = "";
correctCredentials = false;
loginApi: Observable<any>;
constructor(private router: Router, public httpClient: HttpClient, public restService: RestService,public userService: UserService) {
constructor(private router: Router,
public httpClient: HttpClient,
public restService: RestService,
public userService: UserService,
public locationService: LocationService,
public loadingService: LoadingService) {
}
......@@ -37,6 +42,7 @@ export class LoginPage implements OnInit {
"email": this.username,
"password": this.password
});
this.loadingService.showLoader();
this.loginApi
.subscribe((data) => {
//console.log('my data: ', data);
......@@ -44,9 +50,11 @@ export class LoginPage implements OnInit {
this.restService.isLoginPage = false;
this.userService.setUsername(this.username);
this.router.navigateByUrl('/home');
this.loadingService.hideLoader();
}, (error) => {
console.log(JSON.stringify(error));
this.correctCredentials = true;
this.loadingService.hideLoader();
});
}
register() {
......
<div #mapElement style="width: 100%; height: 100%" id="mapContainer" *ngIf="!is3DChecked"></div>
<ion-fab class="get-position" vertical="bottom" horizontal="end" (click)="getCurrentPosition()" slot="fixed">
<ion-fab-button>
<ion-icon name="locate"></ion-icon>
</ion-fab-button>
</ion-fab>
\ No newline at end of file
<ion-fab class="get-position" vertical="bottom" horizontal="end" (click)="getCurrentPosition()" slot="fixed">
<ion-fab-button>
<ion-icon name="locate"></ion-icon>
</ion-fab-button>
</ion-fab>
\ No newline at end of file
......@@ -104,7 +104,7 @@ export class HereMapComponent implements OnInit {
// needed if child gets re-created (eg on some model changes)
// note that subsequent subscriptions on the same subject will fail
// so the parent has to re-create parentSubject on changes
this.startRideSubject.unsubscribe();
//this.startRideSubject.unsubscribe();
}
onSuccess(result) {
......
......@@ -19,7 +19,13 @@
</ion-item>
</div-->
<!--div #mapElement style="width: 100%; height: 100%" id="mapContainer"></div-->
<app-here-map [startRideSubject]="startRideSubject" [gotReservedBikeSubject]="gotReservedBikeSubject"></app-here-map>
<!--app-here-map [startRideSubject]="startRideSubject" [gotReservedBikeSubject]="gotReservedBikeSubject"></app-here-map-->
<div #mapElement style="width: 100%; height: 100%" id="mapContainer" *ngIf="!is3DChecked"></div>
<ion-fab class="get-position" vertical="bottom" horizontal="end" (click)="getCurrentPosition()" slot="fixed">
<ion-fab-button>
<ion-icon name="locate"></ion-icon>
</ion-fab-button>
</ion-fab>
</ion-content>
<ion-footer>
<div class="bike-details-container">
......
import { Component, OnInit, ViewChild, ElementRef } from '@angular/core';
import { Component, OnInit, ViewChild, ElementRef, Input } from '@angular/core';
import { Geolocation } from '@ionic-native/geolocation/ngx';
import { RestService } from '../rest.service';
......@@ -8,6 +8,8 @@ import { Storage } from '@ionic/storage';
import { ToastService } from '../services/toast.service';
import { Router } from '@angular/router';
import { MapDataService } from '../services/map-data.service';
import { LocationService } from '../services/location.service';
import { LoadingService } from '../services/loading.service';
declare var H: any;
@Component({
......@@ -33,16 +35,71 @@ export class HirebikePage implements OnInit {
gotReservedBikeSubject: Subject<any> = new Subject();
maneuverList: any = [];
@ViewChild("mapElement", { static: false })
public mapElement: ElementRef;
private map: any;
private ui: any;
private defaultLayers: any;
private locationsGroup: any;
private currentUserPosition = { lat: 48.783480, lng: 9.180319 };
private bikePosition = { lat: 48.783480, lng: 9.180319 };
private destinationPosition = { lat: 48.783480, lng: 9.180319 };
public currentLocationMarker: any;
public destinationMarker: any;
public rideStarted = false;
constructor(private geolocation: Geolocation,
public restService: RestService,
public httpClient: HttpClient,
private storage: Storage,
private toastService: ToastService,
private router: Router,
private mapDataService: MapDataService) {
private mapDataService: MapDataService,
public locationService: LocationService,
public loadingService: LoadingService) {
this.platform = new H.service.Platform({
'apikey': 'tiVTgBnPbgV1spie5U2MSy-obhD9r2sGiOCbBzFY2_k'
});
}
ngOnInit() {
}
ngAfterViewInit() {
window.addEventListener('resize', () => this.map.getViewPort().resize());
}
ionViewWillEnter() {
this.currentUserPosition.lat = this.locationService.currentUserPosition.lat;
this.currentUserPosition.lng = this.locationService.currentUserPosition.lng;
this.initializeMap();
//get user location
if (this.currentLocationMarker) {
this.currentLocationMarker.setGeometry({ lat: this.currentUserPosition.lat, lng: this.currentUserPosition.lng })
} else {
this.showUserLocationOnMap(this.currentUserPosition.lat, this.currentUserPosition.lng);
}
this.locationService.liveLocationSubject.subscribe((position) => {
console.log('got location inside home subscription');
this.currentUserPosition.lat = position.lat;
this.currentUserPosition.lng = position.lng;
if (this.currentLocationMarker) {
this.currentLocationMarker.setGeometry({ lat: this.currentUserPosition.lat, lng: this.currentUserPosition.lng })
} else {
this.showUserLocationOnMap(this.currentUserPosition.lat, this.currentUserPosition.lng);
}
});
this.getReservedBike();
this.mapDataService.mapDataSubject.subscribe(receiveddata => {
console.log('data received ');
console.log(receiveddata);
......@@ -58,14 +115,34 @@ export class HirebikePage implements OnInit {
}
this.wayPointsInfo = waypointLabels.join(' - ');
});
}
ngOnInit() {
this.getReservedBike();
}
this.gotReservedBikeSubject.subscribe(bikeDetails => {
console.log('Got Bike in map');
console.log(bikeDetails);
this.bikePosition.lat = bikeDetails.lat;
this.bikePosition.lng = bikeDetails.lon;
var img = ['../../../assets/images/100_percent.png', '../../../assets/images/75_percent.png', '../../../assets/images/50_percent.png', '../../../assets/images/25_percent.png', '../../../assets/images/0_percent.png'];
if (bikeDetails.batteryPercentage < 100 && bikeDetails.batteryPercentage >= 75) {
this.addMarker(Number(bikeDetails.lat), Number(bikeDetails.lon), img[0]);
}
else if (bikeDetails.batteryPercentage < 75 && bikeDetails.batteryPercentage >= 50) {
this.addMarker(Number(bikeDetails.lat), Number(bikeDetails.lon), img[1]);
}
else if (bikeDetails.batteryPercentage < 50 && bikeDetails.batteryPercentage >= 25) {
this.addMarker(Number(bikeDetails.lat), Number(bikeDetails.lon), img[2]);
} else if (bikeDetails.batteryPercentage < 25 && bikeDetails.batteryPercentage >= 0) {
this.addMarker(Number(bikeDetails.lat), Number(bikeDetails.lon), img[3]);
}
ngAfterViewInit() {
this.setZoomLevelToPointersGroup();
});
this.startRideSubject.subscribe(event => {
console.log('start ride');
//remove event listener
this.rideStarted = true;
this.calculateRoute();
});
}
showRouteInfoPanel(route) {
......@@ -76,17 +153,6 @@ export class HirebikePage implements OnInit {
// Get the next maneuver.
let maneuver = route.leg[i].maneuver[j];
maneuverList.push(maneuver);
// var li = document.createElement('li'),
// spanArrow = document.createElement('span'),
// spanInstruction = document.createElement('span');
// spanArrow.className = 'arrow ' + maneuver.action;
// spanInstruction.innerHTML = maneuver.instruction;
// li.appendChild(spanArrow);
// li.appendChild(spanInstruction);
// nodeOL.appendChild(li);
}
}
......@@ -94,6 +160,7 @@ export class HirebikePage implements OnInit {
}
getReservedBike() {
this.loadingService.showLoader();
this.storage.get('token').then((token) => {
const headers = new HttpHeaders().set("Authorization", "Bearer " + token);
//call reserved bike api
......@@ -115,9 +182,16 @@ export class HirebikePage implements OnInit {
//pass reserved bike subject here map
this.gotReservedBikeSubject.next(resp.data);
}, (reservedBikeError) => console.log(reservedBikeError));
this.loadingService.hideLoader();
}, (reservedBikeError) => {
console.log(reservedBikeError);
this.loadingService.hideLoader();
});
}
}, (bikeDetailsError) => console.log(bikeDetailsError));
}, (bikeDetailsError) => {
console.log(bikeDetailsError);
this.loadingService.hideLoader();
});
});
}
......@@ -128,11 +202,13 @@ export class HirebikePage implements OnInit {
let bikeApi = this.httpClient.get(url, { headers });
bikeApi.subscribe((resp) => {
console.log('my data: ', resp);
this.loadingService.hideLoader();
this.toastService.showToast("Trip Started");
this.isBikeHired = true;
}, (error) => {
console.log(error)
this.toastService.showToast("This is ongoing Trip")
console.log(error);
this.loadingService.hideLoader();
this.toastService.showToast("This is ongoing Trip");
});
});
......@@ -144,19 +220,307 @@ export class HirebikePage implements OnInit {
}
CancelTrip() {
this.loadingService.showLoader();
this.storage.get('token').then((token) => {
let url = 'http://193.196.52.237:8081/rent' + '?bikeId=' + this.bikeDetails.id;
const headers = new HttpHeaders().set("Authorization", "Bearer " + token);
let bikeApi = this.httpClient.delete(url, { headers });
bikeApi.subscribe((resp) => {
console.log('my data: ', resp);
this.loadingService.hideLoader();
this.toastService.showToast("Trip Ended!");
}, (error) => {
console.log(error)
console.log(error);
this.loadingService.hideLoader();
this.toastService.showToast("No Ongong Trip to End")
});
});
}
ngOnDestroy() {
// needed if child gets re-created (eg on some model changes)
// note that subsequent subscriptions on the same subject will fail
// so the parent has to re-create parentSubject on changes
//this.startRideSubject.unsubscribe();
}
onSuccess(result) {
var route = result.response.route[0];
/*
* The styling of the route response on the map is entirely under the developer's control.
* A representitive styling can be found the full JS + HTML code of this example
* in the functions below:
*/
this.addRouteShapeToMap(route);
this.addManueversToMap(route);
this.mapDataService.mapDataSubject.next(route);
//addWaypointsToPanel(route.waypoint);
//addManueversToPanel(route);
//addSummaryToPanel(route.summary);
}
/**
* This function will be called if a communication error occurs during the JSON-P request
* @param {Object} error The error message received.
*/
onError(error) {
alert('Can\'t reach the remote server');
}
bubble;
/**
* Opens/Closes a infobubble
* @param {H.geo.Point} position The location on the map.
* @param {String} text The contents of the infobubble.
*/
openBubble(position, text) {
if (!this.bubble) {
this.bubble = new H.ui.InfoBubble(
position,
// The FO property holds the province name.
{ content: text });
this.ui.addBubble(this.bubble);
} else {
this.bubble.setPosition(position);
this.bubble.setContent(text);
this.bubble.open();
}
}
/**
* Creates a H.map.Polyline from the shape of the route and adds it to the map.
* @param {Object} route A route as received from the H.service.RoutingService
*/
addRouteShapeToMap(route) {
var lineString = new H.geo.LineString(),
routeShape = route.shape,
polyline;
routeShape.forEach(function (point) {
var parts = point.split(',');
lineString.pushLatLngAlt(parts[0], parts[1]);
});
polyline = new H.map.Polyline(lineString, {
style: {
lineWidth: 4,
strokeColor: 'rgba(0, 128, 255, 0.7)'
}
});
// Add the polyline to the map
this.map.addObject(polyline);
// And zoom to its bounding rectangle
this.map.getViewModel().setLookAtData({
bounds: polyline.getBoundingBox()
});
}
/**
* Creates a series of H.map.Marker points from the route and adds them to the map.
* @param {Object} route A route as received from the H.service.RoutingService
*/
addManueversToMap(route) {
var svgMarkup = '<svg width="18" height="18" ' +
'xmlns="http://www.w3.org/2000/svg">' +
'<circle cx="8" cy="8" r="8" ' +
'fill="#1b468d" stroke="white" stroke-width="1" />' +
'</svg>',
dotIcon = new H.map.Icon(svgMarkup, { anchor: { x: 8, y: 8 } }),
group = new H.map.Group()
var group = new H.map.Group();
// Add a marker for each maneuver
for (let i = 0; i < route.leg.length; i += 1) {
for (let j = 0; j < route.leg[i].maneuver.length; j += 1) {
// Get the next maneuver.
var maneuver = route.leg[i].maneuver[j];
// Add a marker to the maneuvers group
var marker = new H.map.Marker({
lat: maneuver.position.latitude,
lng: maneuver.position.longitude
},
{ icon: dotIcon });
marker.instruction = maneuver.instruction;
group.addObject(marker);
}
}
group.addEventListener('tap', (evt) => {
this.map.setCenter(evt.target.getGeometry());
this.openBubble(
evt.target.getGeometry(), evt.target.instruction);
}, false);
// Add the maneuvers group to the map
this.map.addObject(group);
}
calculateRoute() {
var waypoint0 = this.bikePosition.lat + ',' + this.bikePosition.lng;
var waypoint1 = this.destinationPosition.lat + ',' + this.destinationPosition.lng;
var router = this.platform.getRoutingService(),
routeRequestParams = {
mode: 'fastest;bicycle',
representation: 'display',
routeattributes: 'waypoints,summary,shape,legs',
maneuverattributes: 'direction,action',
waypoint0: waypoint0, // Brandenburg Gate
waypoint1: waypoint1 // Friedrichstraße Railway Station
};
router.calculateRoute(
routeRequestParams,
this.onSuccess.bind(this),
this.onError.bind(this)
);
}
initializeMap() {
// Obtain the default map types from the platform object
this.defaultLayers = this.platform.createDefaultLayers();
this.map = new H.Map(
this.mapElement.nativeElement,
this.defaultLayers.raster.normal.map,
{
center: { lat: this.locationService.preiousUserPosition.lat, lng: this.locationService.preiousUserPosition.lng },
zoom: 17,
pixelRatio: window.devicePixelRatio || 1
}
);
var behavior = new H.mapevents.Behavior(new H.mapevents.MapEvents(this.map));
this.ui = H.ui.UI.createDefault(this.map, this.defaultLayers);
this.ui.removeControl("mapsettings");
// create custom map settings (icons on map)
var customMapSettings = new H.ui.MapSettingsControl({
baseLayers: [
{
label: "3D", layer: this.defaultLayers.vector.normal.map
}, {
label: "Normal", layer: this.defaultLayers.raster.normal.map
}, {
label: "Satellite", layer: this.defaultLayers.raster.satellite.map
}, {
label: "Terrain", layer: this.defaultLayers.raster.terrain.map
}
],
layers: [
{
label: "layer.traffic", layer: this.defaultLayers.vector.normal.traffic
},
{
label: "layer.incidents", layer: this.defaultLayers.vector.normal.trafficincidents
}
]
});
this.ui.addControl("custom-mapsettings", customMapSettings);
var mapSettings = this.ui.getControl('custom-mapsettings');
var zoom = this.ui.getControl('zoom');
mapSettings.setAlignment('top-right');
zoom.setAlignment('right-top');
this.map.getViewPort().setPadding(30, 30, 30, 30);
// Listen for base layer change event (eg. from satellite to 3D)
this.map.addEventListener('baselayerchange', (evt) => {
let mapConfig = this.map.getBaseLayer().getProvider().getStyleInternal().getConfig();
if (mapConfig === null || (mapConfig && mapConfig.sources && mapConfig.sources.omv)) {
this.map.getViewModel().setLookAtData({ tilt: 60 });
} else {
this.map.getViewModel().setLookAtData({ tilt: 0 });
}
});
// listen for map click event
this.map.addEventListener('tap', this.mapClickedEvent.bind(this));
if(!this.locationsGroup) {
this.locationsGroup = new H.map.Group();
}
this.map.addObject(this.locationsGroup);
}
mapClickedEvent(event) {
if(this.rideStarted) {
return;
}
//console.log(event.type, event.currentPointer.type);
var coord = this.map.screenToGeo(event.currentPointer.viewportX,
event.currentPointer.viewportY);
console.log(coord.lat + ', ' + coord.lng);
this.destinationPosition = { lat: coord.lat, lng: coord.lng };
if (this.destinationMarker) {
this.destinationMarker.setGeometry({ lat: coord.lat, lng: coord.lng })
} else {
let icon = new H.map.Icon('../../../assets/images/current_location.png');
// Create a marker using the previously instantiated icon:
this.destinationMarker = new H.map.Marker({ lat: coord.lat, lng: coord.lng }, { icon: icon });
// Add the marker to the map:
if(!this.locationsGroup) {
this.locationsGroup = new H.map.Group();
}
this.locationsGroup.addObjects([this.destinationMarker]);
this.setZoomLevelToPointersGroup();
}
}
//TODO change this logic
getCurrentPosition() {
if (!this.currentLocationMarker) {
this.showUserLocationOnMap(this.currentUserPosition.lat, this.currentUserPosition.lng);
}
this.map.setZoom(17);
this.map.setCenter({ lat: this.currentUserPosition.lat, lng: this.currentUserPosition.lng });
}
setZoomLevelToPointersGroup() {
this.map.getViewModel().setLookAtData({
bounds: this.locationsGroup.getBoundingBox()
});
}
showUserLocationOnMap(lat, lng) {
let svgMarkup = '<svg width="24" height="24" ' +
'xmlns="http://www.w3.org/2000/svg">' +
'<circle cx="10" cy="10" r="10" ' +
'fill="#007cff" stroke="white" stroke-width="2" />' +
'</svg>';
let icon = new H.map.Icon(svgMarkup);
//let icon = new H.map.Icon('../../../assets/images/current_location.png');
// Create a marker using the previously instantiated icon:
this.currentLocationMarker = new H.map.Marker({ lat: lat, lng: lng }, { icon: icon });
// Add the marker to the map:
if(!this.locationsGroup) {
this.locationsGroup = new H.map.Group();
}
this.locationsGroup.addObjects([this.currentLocationMarker]);
this.setZoomLevelToPointersGroup();
//this.map.addObject(marker);
//this.map.setCenter({ lat: lat, lng: lng });
}
addMarker(lat, lng, img) {
var icon = new H.map.Icon(img);
// Create a marker using the previously instantiated icon:
var marker = new H.map.Marker({ lat: lat, lng: lng }, { icon: icon });
// Add the marker to the map:
//this.map.addObject(marker);
if(!this.locationsGroup) {
this.locationsGroup = new H.map.Group();
}
this.locationsGroup.addObjects([marker]);
}
enable3DMaps() {
this.map.setBaseLayer(this.defaultLayers.vector.normal.map);
}
reverseGeocode(platform, lat, lng) {
var prox = lat + ',' + lng + ',56';
var geocoder = platform.getGeocodingService(),
......@@ -168,14 +532,11 @@ export class HirebikePage implements OnInit {
};
geocoder.reverseGeocode(parameters, result => {
console.log(result);
var streets = result.Response.View[0].Result[0].Location.Address.Street;
var houseNumber = result.Response.View[0].Result[0].Location.Address.HouseNumber;
var zipcode = result.Response.View[0].Result[0].Location.Address.PostalCode;
this.address = streets;
return streets + houseNumber + zipcode;
}, (error) => {
alert(error);
});
......
import { Component, OnInit, ViewChild, ElementRef } from '@angular/core';
import { Component, OnInit, ViewChild, ElementRef, OnDestroy } from '@angular/core';
import { Geolocation } from '@ionic-native/geolocation/ngx';
import { RestService } from '../rest.service';
import { Observable } from 'rxjs';
......@@ -6,6 +6,8 @@ import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Storage } from '@ionic/storage';
import { ToastService } from '../services/toast.service';
import { Router } from '@angular/router';
import { LocationService } from '../services/location.service';
import { LoadingService } from '../services/loading.service';
declare var H: any;
......@@ -15,12 +17,12 @@ declare var H: any;
styleUrls: ['home.page.scss'],
})
export class HomePage implements OnInit {
export class HomePage implements OnInit, OnDestroy {
private platform: any;
private map: any;
private defaultLayers: any;
private locationsGroup: any;
private currentUserPosition = {lat: 48.783480, lng: 9.180319};
private currentUserPosition = { lat: 48.783480, lng: 9.180319 };
bikes = [];
bikeApi: Observable<any>;
......@@ -39,35 +41,43 @@ export class HomePage implements OnInit {
public restService: RestService,
public httpClient: HttpClient,
private storage: Storage,
private toastService: ToastService) {
private toastService: ToastService,
public locationService: LocationService,
public loadingService: LoadingService) {
this.platform = new H.service.Platform({
'apikey': 'tiVTgBnPbgV1spie5U2MSy-obhD9r2sGiOCbBzFY2_k'
});
let watch = this.geolocation.watchPosition({ enableHighAccuracy: true, maximumAge: 10000 });
watch.subscribe((position) => {
console.log(position.coords.latitude);
console.log(position.coords.longitude);
this.currentUserPosition.lat = position.coords.latitude;
this.currentUserPosition.lng = position.coords.longitude;
this.currentLocationMarker.setGeometry( {lat:position.coords.latitude, lng:position.coords.longitude})
}, (errorObj) => {
console.log(errorObj.code + ": " + errorObj.message);
});
}
ngOnInit() {
}
ngAfterViewInit() {
this.initializeMap();
window.addEventListener('resize', () => this.map.getViewPort().resize());
setTimeout(() => {
window.dispatchEvent(new Event('resize'));
},100);
this.getUserLocation();
}
ionViewWillEnter() {
this.currentUserPosition.lat = this.locationService.currentUserPosition.lat;
this.currentUserPosition.lng = this.locationService.currentUserPosition.lng;
this.initializeMap();
if (this.currentLocationMarker) {
this.currentLocationMarker.setGeometry({ lat: this.currentUserPosition.lat, lng: this.currentUserPosition.lng })
} else {
this.showUserLocationOnMap(this.currentUserPosition.lat, this.currentUserPosition.lng);
}
this.getBikesList();
this.locationService.liveLocationSubject.subscribe((position) => {
console.log('got location inside home subscription');
this.currentUserPosition.lat = position.lat;
this.currentUserPosition.lng = position.lng;
if (this.currentLocationMarker) {
this.currentLocationMarker.setGeometry({ lat: this.currentUserPosition.lat, lng: this.currentUserPosition.lng })
} else {
this.showUserLocationOnMap(this.currentUserPosition.lat, this.currentUserPosition.lng);
}
});
}
initializeMap() {
......@@ -77,6 +87,7 @@ export class HomePage implements OnInit {
this.mapElement.nativeElement,
this.defaultLayers.raster.normal.map,
{
center: { lat: this.locationService.preiousUserPosition.lat, lng: this.locationService.preiousUserPosition.lng },
zoom: 17,
pixelRatio: window.devicePixelRatio || 1
}
......@@ -126,7 +137,7 @@ export class HomePage implements OnInit {
});
// listen for map click event
this.map.addEventListener('tap', (event) =>{
this.map.addEventListener('tap', (event) => {
console.log(event.type, event.currentPointer.type);
});
......@@ -134,34 +145,22 @@ export class HomePage implements OnInit {
}
getBikesList() {
this.geolocation.getCurrentPosition({
maximumAge: 1000, timeout: 4000,
enableHighAccuracy: true
}).then((resp) => {
let lat = resp.coords.latitude;
let lng = resp.coords.longitude;
this.currentUserPosition.lat = resp.coords.latitude;
this.currentUserPosition.lng = resp.coords.longitude;
this.storage.get('token').then((token) => {
let url = 'http://193.196.52.237:8081/bikes' + '?lat=' + lat + '&lng=' + lng;
const headers = new HttpHeaders().set("Authorization", "Bearer " + token);
this.bikeApi = this.httpClient.get(url, { headers });
this.bikeApi.subscribe((resp) => {
console.log("bikes response", resp);
this.bikes = resp;
for (let i = 0; i < this.bikes.length; i++) {
this.bikes[i].distance = this.bikes[i].distance.toFixed(2);;
this.reverseGeocode(this.platform, this.bikes[i].lat, this.bikes[i].lon, i);
}
this.showBikesOnMap();
}, (error) => console.log(error));
});
}, er => {
//alert('Can not retrieve location');
}).catch((error) => {
//alert('Error getting location - ' + JSON.stringify(error));
this.loadingService.showLoader();
this.storage.get('token').then((token) => {
let url = 'http://193.196.52.237:8081/bikes' + '?lat=' + this.currentUserPosition.lat + '&lng=' + this.currentUserPosition.lng;
const headers = new HttpHeaders().set("Authorization", "Bearer " + token);
this.bikeApi = this.httpClient.get(url, { headers });
this.bikeApi.subscribe((resp) => {
console.log("bikes response", resp);
this.bikes = resp;
for (let i = 0; i < this.bikes.length; i++) {
this.bikes[i].distance = this.bikes[i].distance.toFixed(2);;
this.reverseGeocode(this.platform, this.bikes[i].lat, this.bikes[i].lon, i);
}
this.showBikesOnMap();
this.loadingService.hideLoader();
}, (error) => {console.log(error)
this.loadingService.hideLoader();});
});
}
......@@ -181,7 +180,7 @@ export class HomePage implements OnInit {
}
}
this.map.addObject(this.locationsGroup);
//this.map.addObject(this.locationsGroup);
this.setZoomLevelToPointersGroup();
}
......@@ -197,39 +196,19 @@ export class HomePage implements OnInit {
});
}
getUserLocation() {
this.geolocation.getCurrentPosition(
{
maximumAge: 1000, timeout: 4000,
enableHighAccuracy: true
}
).then((resp) => {
let lat = resp.coords.latitude;
let lng = resp.coords.longitude;
this.currentUserPosition.lat = resp.coords.latitude;
this.currentUserPosition.lng = resp.coords.longitude;
this.showUserLocationOnMap(lat, lng);
}, er => {
//alert('Can not retrieve Location')
this.showUserLocationOnMap(this.currentUserPosition.lat, this.currentUserPosition.lng);
}).catch((error) => {
this.showUserLocationOnMap(this.currentUserPosition.lat, this.currentUserPosition.lng);
//alert('Error getting location - ' + JSON.stringify(error))
});
}
showUserLocationOnMap(lat, lng) {
let svgMarkup = '<svg width="24" height="24" ' +
'xmlns="http://www.w3.org/2000/svg">' +
'<circle cx="10" cy="10" r="10" ' +
'xmlns="http://www.w3.org/2000/svg">' +
'<circle cx="10" cy="10" r="10" ' +
'fill="#007cff" stroke="white" stroke-width="2" />' +
'</svg>';
'</svg>';
let icon = new H.map.Icon(svgMarkup);
//let icon = new H.map.Icon('../../../assets/images/current_location.png');
// Create a marker using the previously instantiated icon:
this.currentLocationMarker = new H.map.Marker({ lat: lat, lng: lng }, { icon: icon });
// Add the marker to the map:
this.locationsGroup.addObjects([this.currentLocationMarker]);
this.map.addObject(this.locationsGroup);
this.setZoomLevelToPointersGroup();
//this.map.addObject(marker);
......@@ -281,6 +260,7 @@ export class HomePage implements OnInit {
reserveBike() {
//this.selectedBike=bikeS;
this.loadingService.showLoader();
this.storage.get('token').then((token) => {
let url = 'http://193.196.52.237:8081/reservation' + '?bikeId=' + this.selectedBike.id;
const headers = new HttpHeaders().set("Authorization", "Bearer " + token);
......@@ -290,11 +270,17 @@ export class HomePage implements OnInit {
this.isBikeReserved = true;
this.toastService.showToast("Reservation Successful!");
this.router.navigateByUrl('/myreservation');
this.loadingService.hideLoader();
}, (error) => {
console.log(error)
this.toastService.showToast("Only one bike may be reserved or rented at a time")
console.log(error);
this.loadingService.hideLoader();
this.toastService.showToast("Only one bike may be reserved or rented at a time");
});
});
}
ngOnDestroy(){
//this.locationService.liveLocationSubject.unsubscribe();
}
}
......@@ -10,16 +10,21 @@
</ion-header>
<ion-content>
<ion-card *ngIf="noReservation">
<ion-card *ngIf="!isBikeReserved">
<ion-card-content>
No reservation found
</ion-card-content>
</ion-card>
<div #mapElement style="width: 100%; height: 100%" id="mapContainer" *ngIf="!noReservation"></div>
<div #mapElement style="width: 100%; height: 100%" id="mapContainer" *ngIf="isBikeReserved"></div>
<ion-fab class="get-position" vertical="bottom" horizontal="end" (click)="getCurrentPosition()" slot="fixed">
<ion-fab-button>
<ion-icon name="locate"></ion-icon>
</ion-fab-button>
</ion-fab>
</ion-content>
<ion-footer>
<div class="bike-details-container" *ngIf="!noReservation">
<div class="bike-details-container" *ngIf="isBikeReserved">
<div class="inner">
<div class="button-container">
<ion-grid>
......
......@@ -7,6 +7,8 @@ import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Storage } from '@ionic/storage';
import { ToastService } from '../services/toast.service';
import { Router } from '@angular/router';
import { LocationService } from '../services/location.service';
import { LoadingService } from '../services/loading.service';
declare var H: any;
......@@ -20,14 +22,18 @@ export class MyreservationPage implements OnInit {
private map: any;
// Get an instance of the routing service:
private mapRouter: any;
private ui: any;
private defaultLayers: any;
reservedBike: any = {};
bikeDetails: any = {};
isBikeHired = false;
address="sample";
noReservation = true;
address = "sample";
isBikeReserved = true;
private currentLocation = { lat: 0, lng: 0 };
private currentUserPosition = { lat: 48.783480, lng: 9.180319 };
public currentLocationMarker: any;
// Create the parameters for the routing request:
private routingParameters = {
......@@ -50,7 +56,9 @@ export class MyreservationPage implements OnInit {
public httpClient: HttpClient,
private storage: Storage,
private toastService: ToastService,
private router: Router) {
private router: Router,
public locationService: LocationService,
public loadingService: LoadingService) {
this.platform = new H.service.Platform({
'apikey': 'tiVTgBnPbgV1spie5U2MSy-obhD9r2sGiOCbBzFY2_k'
});
......@@ -58,14 +66,72 @@ export class MyreservationPage implements OnInit {
}
ngOnInit() {
this.getReservedBike();
}
ngAfterViewInit() {
}
ionViewWillEnter() {
this.currentUserPosition.lat = this.locationService.currentUserPosition.lat;
this.currentUserPosition.lng = this.locationService.currentUserPosition.lng;
this.loadmap();
if (this.currentLocationMarker) {
this.currentLocationMarker.setGeometry({ lat: this.currentUserPosition.lat, lng: this.currentUserPosition.lng })
} else {
this.showUserLocationOnMap(this.currentUserPosition.lat, this.currentUserPosition.lng);
}
this.getReservedBike();
this.locationService.liveLocationSubject.subscribe((position) => {
console.log('got location inside home subscription');
this.currentUserPosition.lat = position.lat;
this.currentUserPosition.lng = position.lng;
if (this.currentLocationMarker) {
this.currentLocationMarker.setGeometry({ lat: this.currentUserPosition.lat, lng: this.currentUserPosition.lng })
} else {
this.showUserLocationOnMap(this.currentUserPosition.lat, this.currentUserPosition.lng);
}
});
}
showUserLocationOnMap(lat, lng) {
let svgMarkup = '<svg width="24" height="24" ' +
'xmlns="http://www.w3.org/2000/svg">' +
'<circle cx="10" cy="10" r="10" ' +
'fill="#007cff" stroke="white" stroke-width="2" />' +
'</svg>';
let icon = new H.map.Icon(svgMarkup);
//let icon = new H.map.Icon('../../../assets/images/current_location.png');
// Create a marker using the previously instantiated icon:
this.currentLocationMarker = new H.map.Marker({ lat: lat, lng: lng }, { icon: icon });
// Add the marker to the map:
this.map.addObject(this.currentLocationMarker);
this.map.setCenter({ lat: lat, lng: lng });
}
addBikeOnMap() {
var img = ['../../../assets/images/100_percent.png', '../../../assets/images/75_percent.png', '../../../assets/images/50_percent.png', '../../../assets/images/25_percent.png', '../../../assets/images/0_percent.png'];
if (this.bikeDetails.batteryPercentage < 100 && this.bikeDetails.batteryPercentage >= 75) {
this.addMarker(Number(this.bikeDetails.lat), Number(this.bikeDetails.lon), img[0]);
}
else if (this.bikeDetails.batteryPercentage < 75 && this.bikeDetails.batteryPercentage >= 50) {
this.addMarker(Number(this.bikeDetails.lat), Number(this.bikeDetails.lon), img[1]);
}
else if (this.bikeDetails.batteryPercentage < 50 && this.bikeDetails.batteryPercentage >= 25) {
this.addMarker(Number(this.bikeDetails.lat), Number(this.bikeDetails.lon), img[2]);
} else if (this.bikeDetails.batteryPercentage < 25 && this.bikeDetails.batteryPercentage >= 0) {
this.addMarker(Number(this.bikeDetails.lat), Number(this.bikeDetails.lon), img[3]);
}
}
getReservedBike() {
this.loadingService.showLoader();
this.storage.get('token').then((token) => {
const headers = new HttpHeaders().set("Authorization", "Bearer " + token);
//call reserved bike api
......@@ -81,18 +147,32 @@ export class MyreservationPage implements OnInit {
let bikeDetailsApi = this.httpClient.get(bikeDetailsUrl, { headers });
bikeDetailsApi.subscribe((resp: any) => {
console.log('Bike Details', resp);
this.loadingService.hideLoader();
this.bikeDetails = resp.data;
this.reverseGeocode(this.platform, this.bikeDetails.lat, this.bikeDetails.lon);
this.noReservation = false;
// display map
setTimeout(() => {
this.loadmap();
}, 1000);
window.addEventListener('resize', () => this.map.getViewPort().resize());
}, (reservedBikeError) => console.log(reservedBikeError));
this.isBikeReserved = true;
this.addBikeOnMap();
// set routing params
this.routingParameters.waypoint1 = 'geo!' + this.bikeDetails.lat + ',' + this.bikeDetails.lon;
this.routingParameters.waypoint0 = 'geo!' + this.currentUserPosition.lat + ',' + this.currentUserPosition.lng;
// show route on map
this.mapRouter.calculateRoute(this.routingParameters, this.onResult.bind(this),
(error) => {
console.log(error.message);
});
}, (reservedBikeError) => {
this.loadingService.hideLoader();
console.log(reservedBikeError);
this.isBikeReserved = false;
});
}
}, (bikeDetailsError) => console.log(bikeDetailsError));
}, (bikeDetailsError) => {
this.loadingService.hideLoader();
console.log(bikeDetailsError)
this.isBikeReserved = false;
});
});
}
......@@ -110,88 +190,58 @@ export class MyreservationPage implements OnInit {
}
loadmap() {
var defaultLayers = this.platform.createDefaultLayers();
this.defaultLayers = this.platform.createDefaultLayers();
this.map = new H.Map(
this.mapElement.nativeElement,
defaultLayers.raster.normal.map,
this.defaultLayers.raster.normal.map,
{
center: { lat: this.locationService.preiousUserPosition.lat, lng: this.locationService.preiousUserPosition.lng },
zoom: 17,
pixelRatio: window.devicePixelRatio || 1
}
);
var behavior = new H.mapevents.Behavior(new H.mapevents.MapEvents(this.map));
var ui = H.ui.UI.createDefault(this.map, defaultLayers);
ui.removeControl("mapsettings");
this.ui = H.ui.UI.createDefault(this.map, this.defaultLayers);
this.ui.removeControl("mapsettings");
// create custom one
var ms = new H.ui.MapSettingsControl({
var customMapSettings = new H.ui.MapSettingsControl({
baseLayers: [{
label: "3D", layer: defaultLayers.vector.normal.map
label: "3D", layer: this.defaultLayers.vector.normal.map
}, {
label: "Normal", layer: defaultLayers.raster.normal.map
label: "Normal", layer: this.defaultLayers.raster.normal.map
}, {
label: "Satellite", layer: defaultLayers.raster.satellite.map
label: "Satellite", layer: this.defaultLayers.raster.satellite.map
}, {
label: "Terrain", layer: defaultLayers.raster.terrain.map
label: "Terrain", layer: this.defaultLayers.raster.terrain.map
}
],
layers: [{
label: "layer.traffic", layer: defaultLayers.vector.normal.traffic
label: "layer.traffic", layer: this.defaultLayers.vector.normal.traffic
},
{
label: "layer.incidents", layer: defaultLayers.vector.normal.trafficincidents
label: "layer.incidents", layer: this.defaultLayers.vector.normal.trafficincidents
}
]
});
ui.addControl("customized", ms);
var mapSettings = ui.getControl('customized');
var zoom = ui.getControl('zoom');
this.ui.addControl("custom-mapsettings", customMapSettings);
var mapSettings = this.ui.getControl('custom-mapsettings');
var zoom = this.ui.getControl('zoom');
mapSettings.setAlignment('top-right');
zoom.setAlignment('left-top');
zoom.setAlignment('right-top');
//get user location
this.getLocation(this.map);
this.map.getViewPort().setPadding(30, 30, 30, 30);
var img = ['../../../assets/images/100_percent.png', '../../../assets/images/75_percent.png', '../../../assets/images/50_percent.png', '../../../assets/images/25_percent.png', '../../../assets/images/0_percent.png'];
if (this.bikeDetails.batteryPercentage < 100 && this.bikeDetails.batteryPercentage >= 75) {
this.addMarker(Number(this.bikeDetails.lat), Number(this.bikeDetails.lon), img[0]);
}
else if (this.bikeDetails.batteryPercentage < 75 && this.bikeDetails.batteryPercentage >= 50) {
this.addMarker(Number(this.bikeDetails.lat), Number(this.bikeDetails.lon), img[1]);
}
else if (this.bikeDetails.batteryPercentage < 50 && this.bikeDetails.batteryPercentage >= 25) {
this.addMarker(Number(this.bikeDetails.lat), Number(this.bikeDetails.lon), img[2]);
} else if (this.bikeDetails.batteryPercentage < 25 && this.bikeDetails.batteryPercentage >= 0) {
this.addMarker(Number(this.bikeDetails.lat), Number(this.bikeDetails.lon), img[3]);
}
this.map.getViewPort().setPadding(30, 30, 30, 30);
}
getLocation(map) {
this.geolocation.getCurrentPosition(
{
maximumAge: 1000, timeout: 5000,
enableHighAccuracy: true
}
).then((resp) => {
let lat = resp.coords.latitude
let lng = resp.coords.longitude
this.currentLocation.lat = resp.coords.latitude;
this.currentLocation.lng = resp.coords.longitude;
this.moveMapToGiven(map, lat, lng);
// set routing params
this.routingParameters.waypoint1 = 'geo!' + this.bikeDetails.lat + ',' + this.bikeDetails.lon;
this.routingParameters.waypoint0 = 'geo!' + this.currentLocation.lat + ',' + this.currentLocation.lng;
// show route on map
this.mapRouter.calculateRoute(this.routingParameters, this.onResult.bind(this),
(error) => {
alert(error.message);
});
}, er => {
console.log('Can not retrieve Location');
}).catch((error) => {
console.log('Error getting location - ' + JSON.stringify(error));
});
//TODO change this logic
getCurrentPosition() {
if (!this.currentLocationMarker) {
this.showUserLocationOnMap(this.currentUserPosition.lat, this.currentUserPosition.lng);
}
this.map.setZoom(17);
this.map.setCenter({ lat: this.currentUserPosition.lat, lng: this.currentUserPosition.lng });
}
moveMapToGiven(map, lat, lng) {
......@@ -225,9 +275,9 @@ export class MyreservationPage implements OnInit {
var streets = result.Response.View[0].Result[0].Location.Address.Street;
var houseNumber = result.Response.View[0].Result[0].Location.Address.HouseNumber;
var zipcode = result.Response.View[0].Result[0].Location.Address.PostalCode;
this.address = streets;
}, (error) => {
alert(error);
......
import { TestBed } from '@angular/core/testing';
import { LoadingService } from './loading.service';
describe('LoadingService', () => {
beforeEach(() => TestBed.configureTestingModule({}));
it('should be created', () => {
const service: LoadingService = TestBed.get(LoadingService);
expect(service).toBeTruthy();
});
});
import { Injectable } from '@angular/core';
import { LoadingController } from '@ionic/angular';
@Injectable({
providedIn: 'root'
})
export class LoadingService {
loaderToShow: any;
constructor(
public loadingController: LoadingController
) {
}
showLoader(message = 'loading...') {
this.loaderToShow = this.loadingController.create({
message: message
}).then((res) => {
res.present();
res.onDidDismiss().then((dis) => {
console.log('Loading dismissed!');
});
});
}
hideLoader() {
this.loadingController.dismiss();
}
}
import { TestBed } from '@angular/core/testing';
import { LocationService } from './location.service';
describe('LocationService', () => {
beforeEach(() => TestBed.configureTestingModule({}));
it('should be created', () => {
const service: LocationService = TestBed.get(LocationService);
expect(service).toBeTruthy();
});
});
import { Injectable } from '@angular/core';
import { Geolocation } from '@ionic-native/geolocation/ngx';
import { Subject } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class LocationService {
public preiousUserPosition = { lat: 48.783480, lng: 9.180319 };
public currentUserPosition = { lat: 48.783480, lng: 9.180319 };
liveLocationSubject = new Subject<any>(); //Decalring new RxJs Subject
constructor(private geolocation: Geolocation) {
let watch = this.geolocation.watchPosition({ enableHighAccuracy: true, maximumAge: 10000 });
watch.subscribe((position) => {
console.log('IN WATCHER')
console.log('lat'+ position.coords.latitude);
console.log('lng'+ position.coords.longitude);
this.currentUserPosition.lat = position.coords.latitude;
this.currentUserPosition.lng = position.coords.longitude;
this.preiousUserPosition.lat = position.coords.latitude;
this.preiousUserPosition.lng = position.coords.longitude;
this.getUserLiveLocation(this.currentUserPosition);
}, (errorObj) => {
console.log('error getting live location, setting to previous location');
this.getUserLiveLocation(this.preiousUserPosition);
});
}
getUserLocation(): Promise<any> {
return new Promise((resolve, reject) => {
this.geolocation.getCurrentPosition().then((resp) => {
let lat = resp.coords.latitude;
let lng = resp.coords.longitude;
this.currentUserPosition.lat = resp.coords.latitude;
this.currentUserPosition.lng = resp.coords.longitude;
this.preiousUserPosition.lat = resp.coords.latitude;
this.preiousUserPosition.lng = resp.coords.longitude;
resolve(this.currentUserPosition);
}, er => {
console.log('error getting location setting to previous location');
resolve(this.preiousUserPosition);
}).catch((error) => {
console.log('error getting location setting to previous location');
resolve(this.preiousUserPosition);
});
});
}
getUserLiveLocation(location) {
this.liveLocationSubject.next(location);
}
}
This source diff could not be displayed because it is too large. You can view the blob instead.
/**
* The code below uses open source software. Please visit the URL below for an overview of the licenses:
* http://js.api.here.com/v3/3.1.8.1/HERE_NOTICE
*/
H.util.eval("function lq(a){var b=a.ownerDocument;b=b.documentElement||b.body.parentNode||b.body;try{var c=a.getBoundingClientRect()}catch(d){c={top:0,right:0,bottom:0,left:0,height:0,width:0}}return{x:c.left+(\"number\"===typeof window.pageXOffset?window.pageXOffset:b.scrollLeft),y:c.top+(\"number\"===typeof window.pageYOffset?window.pageYOffset:b.scrollTop)}}var mq=/Edge\\/\\d+/.test(navigator.appVersion),nq=/(A|a)ndroid/.test(navigator.appVersion),oq=Function(\"return this\")();function pq(a,b,c,d,e,f,g){pq.l.constructor.call(this,a);this.pointers=b;this.changedPointers=c;this.targetPointers=d;this.currentPointer=e;this.originalEvent=g;this.target=f}w(pq,Ec);u(\"H.mapevents.Event\",pq);function qq(a,b,c,d,e,f){if(isNaN(a))throw Error(\"x needs to be a number\");if(isNaN(b))throw Error(\"y needs to be a number\");if(isNaN(c))throw Error(\"pointer must have an id\");this.viewportX=a;this.viewportY=b;this.target=null;this.id=c;this.type=d;this.dragTarget=null;this.a=this.button=Lb(e)?e:-1;this.buttons=Lb(f)?f:0}u(\"H.mapevents.Pointer\",qq);\nfunction rq(a,b,c){if(isNaN(b))throw Error(\"x needs to be a number\");if(isNaN(c))throw Error(\"y needs to be a number\");a.viewportX=b;a.viewportY=c}qq.prototype.tm=function(){return this.a};qq.prototype.getLastChangedButton=qq.prototype.tm;function sq(a,b){a.a=b;a.buttons|=qq.prototype.b[+b]||0}function tq(a,b){a.a=b;a.buttons&=~(qq.prototype.b[+b]||0)}qq.prototype.b=[1,4,2];var uq={NONE:-1,LEFT:0,MIDDLE:1,RIGHT:2};qq.Button=uq;function vq(a){this.a=a instanceof Array?a.slice(0):[]}n=vq.prototype;n.clear=function(){this.a.splice(0,this.a.length)};n.length=function(){return this.a.length};n.indexOf=function(a){for(var b=this.a.length;b--;)if(this.a[b].id===a)return b;return-1};function wq(a,b){b=a.indexOf(b);return-1!==b?a.a[b]:null}n.remove=function(a){a=this.indexOf(a);return-1!==a?this.a.splice(a,1)[0]:null};function xq(a,b){for(var c=a.a.length,d=[];c--;)a.a[c].type!==b&&d.push(a.a[c]);a.a=d}\nfunction yq(a,b){for(var c=a.a.length;c--;)if(a.a[c].dragTarget===b)return!0;return!1}n.push=function(a){if(a instanceof qq)return this.a.push(a);throw Error(\"list needs a pointer\");};n.ab=function(){return this.a};n.clone=function(){return new vq(this.a)};function zq(a,b,c){c=c||{};if(!(a instanceof S))throw Error(\"events: map instance required\");if(!(b instanceof Array))throw Error(\"events: map array required\");Ac.call(this);this.Og=c.Og||300;this.gj=c.gj||50;this.Yk=c.Yk||50;this.Zk=c.Zk||500;this.Bh=c.Bh||900;this.Uj=c.Uj||50;this.map=a;this.u=this.map.Ba;this.i=this.u.element;this.D=b;this.a=new vq;this.b=new vq;this.g={};this.c=null;this.o=!0;this.W={};this.m={};this.j=null;this.ue=A(this.ue,this);this.B={pointerdown:this.Hl,pointermove:this.Il,\npointerup:this.Jl,pointercancel:this.Gl};Aq(this)}w(zq,Ac);function Aq(a,b){var c,d=a.D.length;for(c=0;c<d;c++){var e=a.D[c];var f=e.listener;\"function\"===typeof f&&(b?(e.target||a.i).removeEventListener(e.Sa,f):(e.target||a.i).addEventListener(e.Sa,f))}}function Bq(a,b,c){var d;if(\"function\"===typeof a.B[b]){\"pointermove\"!==b&&(a.o=!0);var e=0;for(d=a.b.length();e<d;e++){var f=a.b.a[e];a.i.contains(c.target)?Cq(a,f,a.mj.bind(a,c,b,f)):a.mj(c,b,f,null)}}a.b.clear()}n=zq.prototype;\nn.mj=function(a,b,c,d){Dq(c.id,this.W);this.B[b].call(this,c,d,a)};function Cq(a,b,c){if(a.c===b)c(b.target);else{var d=a.u;var e=b.viewportX;b=b.viewportY;if(0>e||0>b||e>=d.width||b>=d.height)c(z);else{var f=a.map;f.Qd(e,b,function(a){c(a||f)})}}}\nn.Jl=function(a,b,c){a.target=b;Eq(this,a,c);Fq(this,b,\"pointerup\",c,a);\"mouse\"!==a.type&&Fq(this,b,\"pointerleave\",c,a);b=this.g[a.id];var d={x:a.viewportX,y:a.viewportY},e=c.timeStamp,f=a.target,g=this.j;b&&b.target===f&&b.Gg.bb(d)<this.Yk&&e-b.Di<this.Zk?(Fq(this,f,\"tap\",c,a),g&&g.target===f&&e-g.Di<this.Og?g.Gg.bb({x:a.viewportX,y:a.viewportY})<this.gj&&(Fq(this,f,\"dbltap\",c,a),this.j=null):this.j={target:f,Gg:new H(a.viewportX,a.viewportY),Di:c.timeStamp}):this.j=null;this.g={};Dq(a.id,this.m)};\nfunction Eq(a,b,c){b===a.c&&(Fq(a,b.dragTarget,\"dragend\",c,b),a.c=null,Dq(b.id,a.W));b.dragTarget=null}n.ue=function(a,b){var c=this;Fq(this,a.dragTarget,\"drag\",b,a);Dq(a.id,this.W);this.W[a.id]=setTimeout(function(){c.ue(a,b)},150)};function Dq(a,b){b[a]&&(clearTimeout(b[a]),delete b[a])}\nfunction Gq(a,b,c){var d=b.target,e=new H(b.viewportX,b.viewportY),f=b.id;Dq(f,a.m);a.m[f]=setTimeout(function(){d&&d===b.target&&e.bb({x:b.viewportX,y:b.viewportY})<a.Uj&&(Fq(a,d,\"longpress\",c,b),delete a.g[b.id])},a.Bh)}\nn.Il=function(a,b,c){var d=a.dragTarget,e=a.id;var f=a.target;a.target=b;f!==b&&(Fq(this,f,\"pointerleave\",c,a),Fq(this,b,\"pointerenter\",c,a));d?this.c?this.ue(a,c):this.o?this.o=!1:(this.c=a,Fq(this,d,\"dragstart\",c,a),this.ue(a,c),delete this.g[e],this.o=!0):(!this.c||this.c&&this.c.dragTarget!==b&&this.c.dragTarget!==this.map)&&Fq(this,b,\"pointermove\",c,a)};\nn.Hl=function(a,b,c){var d=!(/^(?:mouse|pen)$/.test(a.type)&&0!==c.button);if(b){a.target=b;this.g[a.id]={Gg:new H(a.viewportX,a.viewportY),target:a.target,Di:c.timeStamp};\"mouse\"!==a.type&&Fq(this,b,\"pointerenter\",c,a);var e=Fq(this,b,\"pointerdown\",c,a);!this.c&&d&&(b.draggable&&!yq(this.a,b)?a.dragTarget=b:!this.map.draggable||e.defaultPrevented||yq(this.a,this.map)||(a.dragTarget=this.map));Gq(this,a,c)}};\nn.Gl=function(a,b,c){a.target=null;b?(Fq(this,b,\"pointerleave\",c,a),Fq(this,b,\"pointercancel\",c,a)):Fq(this,this.map,\"pointercancel\",c,a);Eq(this,a,c);this.g={};Dq(a.id,this.m)};function Fq(a,b,c,d,e){if(b&&\"function\"===typeof b.dispatchEvent){var f=pq;var g=a.a.ab(),h=a.b.ab();a=a.a;var k,l=a.a.length,m=[];for(k=0;k<l;k++)a.a[k].target===b&&m.push(a.a[k]);f=new f(c,g,h,m,e,b,d);e.button=/^(?:longpress|(?:dbl)?tap|pointer(?:down|up))$/.test(c)?e.a:uq.NONE;b.dispatchEvent(f)}return f}\nn.s=function(){Aq(this,!0);this.a.clear();this.b.clear();var a=this.W,b;for(b in a)Dq(b,a);a=this.m;for(var c in a)Dq(c,a);this.c=this.g=this.j=this.map=this.b=this.a=this.D=this.O=null;Ac.prototype.s.call(this)};function Hq(a){this.f=A(this.f,this);zq.call(this,a,[{Sa:\"touchstart\",listener:this.f},{Sa:\"touchmove\",listener:this.f},{Sa:\"touchend\",listener:this.f},{Sa:\"touchcancel\",listener:this.f}]);this.G={touchstart:\"pointerdown\",touchmove:\"pointermove\",touchend:\"pointerup\",touchcancel:\"pointercancel\"};this.v=(a=(a=a.m)?a.J():null)?Array.prototype.slice.call(a.querySelectorAll(\"a\"),0):[]}w(Hq,zq);\nHq.prototype.f=function(a){var b=a.touches,c=this.a.length(),d;if(\"touchstart\"===a.type&&c>=b.length){c=this.a.clone();for(d=b.length;d--;)c.remove(b[d].identifier);for(d=c.length();d--;)this.a.remove(c.a[d].id);this.b=c;Bq(this,\"pointercancel\",a);this.b.clear()}if(this.G[a.type]){b=lq(this.u.element);c=a.type;d=a.changedTouches;var e=d.length,f;this.b.clear();for(f=0;f<e;f++){var g=d[f];var h=wq(this.a,g.identifier);var k=g.pageX-b.x;var l=g.pageY-b.y;if(h)if(\"touchmove\"===c){g=Math.abs(h.viewportX-\nk);var m=Math.abs(h.viewportY-l);if(1<g||1<m||1===g&&1===m)rq(h,k,l),this.b.push(h)}else\"touchend\"===c&&(this.a.remove(h.id),this.b.push(h),tq(h,uq.LEFT));else h=new qq(k,l,g.identifier,\"touch\",uq.LEFT,1),this.a.push(h),this.b.push(h)}Bq(this,this.G[a.type],a);-1===this.v.indexOf(a.target)&&a.preventDefault()}};Hq.prototype.s=function(){this.v=null;zq.prototype.s.call(this)};function Iq(a){var b=Jq(this);(window.PointerEvent||window.MSPointerEvent)&&b.push({Sa:\"MSHoldVisual\",listener:\"prevent\"});zq.call(this,a,b)}w(Iq,zq);function Jq(a){var b=!!window.PointerEvent,c,d,e=[];a.f=A(a.f,a);\"MSPointerDown MSPointerMove MSPointerUp MSPointerCancel MSPointerOut MSPointerOver\".split(\" \").forEach(function(f){c=f.toLowerCase().replace(/ms/g,\"\");d=b?c:f;e.push({Sa:d,listener:a.f,target:\"MSPointerUp\"===f||\"MSPointerMove\"===f?window:null})});return e}var Kq={2:\"touch\",3:\"pen\",4:\"mouse\"};\nIq.prototype.f=function(a){var b=window.PointerEvent?a.type:a.type.toLowerCase().replace(/ms/g,\"\"),c=lq(this.i),d=wq(this.a,a.pointerId),e=a.pageX-c.x;c=a.pageY-c.y;var f=Kq[a.pointerType]||a.pointerType;mq&&\"rtl\"===y.getComputedStyle(this.u.element).direction&&(e-=(y.devicePixelRatio-1)*this.u.width);if(!(d||b in{pointerup:1,pointerout:1,pointercancel:1}||\"touch\"===f&&\"pointerdown\"!==b)){d={x:e,y:c};var g=a.pointerType;\"number\"===typeof g&&(g=Kq[g]);d=new qq(d.x,d.y,a.pointerId,g,a.button,a.buttons);\nthis.a.push(d)}d&&(b in{pointerup:1,pointercancel:1}?(\"touch\"===f&&this.a.remove(d.id),tq(d,a.button)):\"pointerdown\"===b&&(\"touch\"===a.pointerType&&(xq(this.a,\"mouse\"),xq(this.a,\"pen\")),sq(d,a.button)),this.b.push(d),\"pointermove\"!==b?(rq(d,e,c),Bq(this,\"pointerout\"===b||\"pointerover\"===b?\"pointermove\":b,a)):d.viewportX===e&&d.viewportY===c||a.target===document.documentElement||(rq(d,e,c),Bq(this,b,a)));this.b.clear()};function Lq(a,b,c,d){Lq.l.constructor.call(this,\"contextmenu\");this.items=[];this.viewportX=a;this.viewportY=b;this.target=c;this.originalEvent=d}w(Lq,Ec);u(\"H.mapevents.ContextMenuEvent\",Lq);function Mq(a){this.nh=A(this.nh,this);this.ph=A(this.ph,this);this.oh=A(this.oh,this);this.v=!1;this.f=-1;this.G=0;Mq.l.constructor.call(this,a,[{Sa:\"contextmenu\",listener:this.nh},{target:a,Sa:\"longpress\",listener:this.ph},{target:a,Sa:\"dbltap\",listener:this.oh}])}w(Mq,zq);n=Mq.prototype;n.ph=function(a){var b=a.currentPointer;\"touch\"===b.type&&1===a.pointers.length&&Nq(this,b.viewportX,b.viewportY,a.originalEvent,a.target)};n.oh=function(a){\"touch\"===a.currentPointer.type&&(this.G=Date.now())};\nn.nh=function(a){var b=this;-1===this.f?this.f=setTimeout(function(){var c=lq(b.i),d=a.pageX-c.x;c=a.pageY-c.y;b.f=-1;Nq(b,d,c,a)},this.Og):(clearInterval(this.f),this.f=-1);a.preventDefault()};function Nq(a,b,c,d,e){var f=a.map,g=Date.now()-a.G;e?!a.v&&g>a.Bh&&(a.v=!0,e.dispatchEvent(new Lq(b,c,e,d)),pe(f.J(),a.Ki,a.lj,!1,a)):f.Qd(b,c,a.vn.bind(a,b,c,d))}n.vn=function(a,b,c,d){d=d&&r(d.dispatchEvent)?d:this.map;Nq(this,a,b,c,d)};n.Ki=[\"mousedown\",\"touchstart\",\"pointerdown\",\"wheel\"];\nn.lj=function(){this.v&&(this.v=!1,this.map.dispatchEvent(new Ec(\"contextmenuclose\",this.map)))};n.s=function(){var a=this.map.J();clearInterval(this.f);a&&we(a,this.Ki,this.lj,!1,this);zq.prototype.s.call(this)};function Oq(a,b,c,d,e){Oq.l.constructor.call(this,\"wheel\");this.delta=a;this.viewportX=b;this.viewportY=c;this.target=d;this.originalEvent=e}w(Oq,Ec);u(\"H.mapevents.WheelEvent\",Oq);function Pq(a){var b=\"onwheel\"in document;this.P=b;this.G=(b?\"d\":\"wheelD\")+\"elta\";this.f=A(this.f,this);Pq.l.constructor.call(this,a,[{Sa:(b?\"\":\"mouse\")+\"wheel\",listener:this.f}]);this.v=this.map.Ba}w(Pq,zq);\nPq.prototype.f=function(a){if(!a.fl){var b=lq(this.i);var c=a.pageX-b.x;b=a.pageY-b.y;var d=this.G,e=a[d+(d+\"Y\"in a?\"Y\":\"\")],f;mq&&\"rtl\"===y.getComputedStyle(this.v.element).direction&&(c-=(y.devicePixelRatio-1)*this.v.width);if(e){var g=Math.abs;var h=g(e);e=(!(f=a[d+\"X\"])||3<=h/g(f))&&(!(f=a[d+\"Z\"])||3<=h/g(f))?((0<e)-(0>e))*(this.P?1:-1):0}c=new Oq(e,c,b,null,a);c.delta&&(a.stopImmediatePropagation(),a.preventDefault(),this.map.Qd(c.viewportX,c.viewportY,this.L.bind(this,c)))}};\nPq.prototype.L=function(a,b){var c=a.target=b||this.map,d,e;setTimeout(function(){c.dispatchEvent(a);a.f||(d=a.originalEvent,e=new y.WheelEvent(\"wheel\",d),e.fl=1,d.target.dispatchEvent(e))},0)};function Qq(a){var b=window;this.f=A(this.f,this);zq.call(this,a,[{Sa:\"mousedown\",listener:this.f},{Sa:\"mousemove\",listener:this.f,target:b},{Sa:\"mouseup\",listener:this.f,target:b},{Sa:\"mouseover\",listener:this.f},{Sa:\"mouseout\",listener:this.f},{Sa:\"dragstart\",listener:this.v}])}w(Qq,zq);\nQq.prototype.f=function(a){var b=a.type,c=lq(this.i);c={x:a.pageX-c.x,y:a.pageY-c.y};var d;(d=this.a.a[0])||(d=new qq(c.x,c.y,1,\"mouse\"),this.a.push(d));this.b.push(d);rq(d,c.x,c.y);/^mouse(?:move|over|out)$/.test(b)?Bq(this,\"pointermove\",a):(/^mouse(down|up)$/.test(b)&&(c=a.which-1,\"up\"===oq.RegExp.$1?tq(d,c):sq(d,c)),Bq(this,b.replace(\"mouse\",\"pointer\"),a));this.b.clear()};Qq.prototype.v=function(a){a.preventDefault()};function Rq(a){var b=a.Ba.element.style;if(-1!==Sq.indexOf(a))throw Error(\"InvalidArgument: map is already in use\");this.a=a;Sq.push(a);b.msTouchAction=b.touchAction=\"none\";nq||!window.PointerEvent&&!window.MSPointerEvent?(this.c=new Hq(this.a),this.b=new Qq(this.a)):this.c=new Iq(this.a);this.g=new Pq(this.a);this.f=new Mq(this.a);this.a.xb(this.F,this);Ac.call(this)}w(Rq,Ac);u(\"H.mapevents.MapEvents\",Rq);Rq.prototype.c=null;Rq.prototype.b=null;Rq.prototype.g=null;Rq.prototype.f=null;\nvar Sq=[];Yb(Sq);Rq.prototype.F=function(){this.a=null;this.c.F();this.g.F();this.f.F();this.b&&this.b.F();Sq.splice(Sq.indexOf(this.a),1);Ac.prototype.F.call(this)};Rq.prototype.dispose=Rq.prototype.F;Rq.prototype.Vl=function(){return this.a};Rq.prototype.getAttachedMap=Rq.prototype.Vl;function Tq(a,b){var c;if(-1!==Uq.indexOf(a))throw new D(Tq,0,\"events are already used\");b=b||{};Ac.call(this);this.a=c=a.a;this.j=a;Uq.push(a);c.draggable=!0;this.i=b.kinetics||{duration:600,Jd:Ll};this.m=b.modifierKey||\"Alt\";this.enable(b.enabled);this.c=c.Ba;this.f=this.c.element;this.g=0;c.addEventListener(\"dragstart\",this.Lh,!1,this);c.addEventListener(\"drag\",this.$j,!1,this);c.addEventListener(\"dragend\",this.Kh,!1,this);c.addEventListener(\"wheel\",this.pk,!1,this);c.addEventListener(\"dbltap\",\nthis.jk,!1,this);c.addEventListener(\"pointermove\",this.ak,!1,this);oe(this.f,\"contextmenu\",this.Zj,!1,this);a.xb(this.F,this)}w(Tq,Ac);u(\"H.mapevents.Behavior\",Tq);var Uq=[];Yb(Uq);Tq.prototype.b=0;var Vq={Ri:1,Ti:2,Ao:4,to:8,uo:16,bc:32,pc:64};Tq.DRAGGING=1;Tq.WHEELZOOM=4;Tq.DBLTAPZOOM=8;Tq.FRACTIONALZOOM=16;Tq.Feature={PANNING:1,PINCH_ZOOM:2,WHEEL_ZOOM:4,DBL_TAP_ZOOM:8,FRACTIONAL_ZOOM:16,HEADING:64,TILT:32};\nfunction Wq(a,b){if(a!==+a||a%1||0>a||2147483647<a)throw new D(b,0,\"integer in range [0...0x7FFFFFFF] required\");}Tq.prototype.disable=function(a){var b=this.b;a!==B?(Wq(a,this.disable),b^=b&a):b=0;this.c.endInteraction(!0);this.b=b;this.a.draggable=0<(b&1)};Tq.prototype.disable=Tq.prototype.disable;Tq.prototype.enable=function(a){var b=this.b;a!==B?(Wq(a,this.enable),b|=a&127):b=127;this.b=b;this.a.draggable=0<(b&1)};Tq.prototype.enable=Tq.prototype.enable;\nTq.prototype.isEnabled=function(a){Wq(a,this.isEnabled);return a===(this.b&a)};Tq.prototype.isEnabled=Tq.prototype.isEnabled;\nfunction Xq(a,b,c){var d=\"touch\"===b.currentPointer.type,e=0,f;if(f=!d){f=a.m;var g,h=b.originalEvent;h.getModifierState?g=h.getModifierState(f):g=!!h[f.replace(/^Control$/,\"ctrl\").toLowerCase()+\"Key\"];f=g}f?e|=Vq.bc|Vq.pc:(e|=Vq.Ri,d&&(b=b.pointers,2===b.length&&(e|=Vq.Ti|Vq.pc,c?55>Nc(b[0].viewportY-b[1].viewportY)&&(e|=Vq.bc):a.uh&Tk.TILT&&(e|=Vq.bc))));e&=a.b;return(e&Vq.bc?Tk.TILT:0)|(e&Vq.pc?Tk.HEADING:0)|(e&Vq.Ti?Tk.ZOOM:0)|(e&Vq.Ri?Tk.COORD:0)}\nfunction Yq(a){var b=a.pointers;a=b[0];b=b[1];a=[a.viewportX,a.viewportY];b&&a.push(b.viewportX,b.viewportY);return a}n=Tq.prototype;n.uh=0;n.Lh=function(a){var b=Xq(this,a,!0);if(this.uh=b){var c=this.c;a=Yq(a);c.startInteraction(b,this.i);c.interaction.apply(c,a);if(this.b&4&&!(this.b&16)&&(b=a[0],c=a[1],this.g)){a=this.a.qb();var d=(0>this.g?Mc:Lc)(a);a!==d&&(this.g=0,Zq(this,a,d,b,c))}}};\nn.$j=function(a){var b=Xq(this,a,!1);if(b!==this.uh)\"pointerout\"!==a.originalEvent.type&&\"pointerover\"!==a.originalEvent.type&&(this.Kh(a),this.Lh(a));else if(b){b=this.c;var c=Yq(a);b.interaction.apply(b,c);a.originalEvent.preventDefault()}};n.Kh=function(a){Xq(this,a,!1)&&this.c.endInteraction(!this.i)};\nfunction Zq(a,b,c,d,e){a=a.a.b;if(isNaN(+b))throw Error(\"start zoom needs to be a number\");if(isNaN(+c))throw Error(\"to zoom needs to be a number\");0!==+c-+b&&(a.startControl(null,d,e),a.control(0,0,6,0,0,0),a.endControl(!0,function(a){a.zoom=c}))}n.pk=function(a){if(!a.defaultPrevented&&this.b&4){var b=a.delta;var c=this.a.qb();var d=this.a;var e=d.vc().type;d=this.b&16?c-b:(0>-b?Mc:Lc)(c)-b;if(e===Km.P2D||e===Km.WEBGL)Zq(this,c,d,a.viewportX,a.viewportY),this.g=b;a.preventDefault()}};n.ak=function(){};\nn.jk=function(a){var b=a.currentPointer,c=this.a.qb(),d=a.currentPointer.type,e=this.a.vc().type;(e===Km.P2D||e===Km.WEBGL)&&this.b&8&&(a=\"mouse\"===d?0===a.originalEvent.button?-1:1:0<a.pointers.length?1:-1,a=this.b&16?c-a:(0>-a?Mc:Lc)(c)-a,Zq(this,c,a,b.viewportX,b.viewportY))};n.Zj=function(a){return this.b&8?(a.preventDefault(),!1):!0};\nn.F=function(){var a=this.a;a&&(a.draggable=!1,a.removeEventListener(\"dragstart\",this.Lh,!1,this),a.removeEventListener(\"drag\",this.$j,!1,this),a.removeEventListener(\"dragend\",this.Kh,!1,this),a.removeEventListener(\"wheel\",this.pk,!1,this),a.removeEventListener(\"dbltap\",this.jk,!1,this),a.removeEventListener(\"pointermove\",this.ak,!1,this),this.a=null);this.f&&(this.f.style.msTouchAction=\"\",we(this.f,\"contextmenu\",this.Zj,!1,this),this.f=null);this.i=this.c=null;Uq.splice(Uq.indexOf(this.j),1);Ac.prototype.F.call(this)};\nTq.prototype.dispose=Tq.prototype.F;u(\"H.mapevents.buildInfo\",function(){return qf(\"mapsjs-mapevents\",\"1.8.1\",\"3dcce55\")});\n");
\ No newline at end of file
/**
* The code below uses open source software. Please visit the URL below for an overview of the licenses:
* http://js.api.here.com/v3/3.1.8.1/HERE_NOTICE
*/
H.util.eval("Q.prototype.v=ca(2,function(a){var b=this.getCache(),c=this;if(a!==z){C(a,Uj,Q.prototype.v,0);var d=a}else d=Ik;d!==b&&b.ha(function(a,b,g){return c.hd(a)?(d.add(a,b,g),!0):!1});this.P=d});function un(a,b){a.f=b;a.C!==gj.INIT&&pj(a)}function vn(a,b){Pa.apply(null,arguments);return a}\nvar wn={normal:[{minLevel:10,maxLevel:20,label:\"IGN Guatemala\",alt:\"Aprobado por el INSTITUTO GEOGRAFICO NACIONAL Resolucion del IGN No 186-2011\",boxes:[[16.5943,-91.4256,17.8168,-89.0225],[14.9642,-89.0225,16.1868,-88.2215],[14.1492,-90.6245,16.5943,-89.0225],[13.7417,-91.8261,14.1492,-89.8235],[14.1492,-92.2266,16.1868,-90.6245],[16.473,-90.6686,16.5943,-90.6245],[14.0259,-89.8235,14.1492,-89.6796]]},{minLevel:9,maxLevel:20,label:\"INEGI\",alt:\"Fuente: INEGI (Instituto Nacional de Estadistica y Geografia)\",\nboxes:[[32,-117.1817,32.7325,-113.1649],[28,-101,29.4004,-99.9666],[26,-99,26.4261,-97.5566],[15.5643,-97.9326,16,-95.2581],[14.4031,-94.2111,16,-91],[16,-91,16.9491,-90.3434],[17.406,-91,18,-88.7349],[28,-119,32,-103],[26,-117,28,-99],[28,-103,30,-101],[24,-113,26,-97],[22,-111,24,-97],[18,-107,22,-95],[20,-90.6669,22,-86.6669],[18,-95,20,-87],[16,-103,18,-91],[18,-115,20,-109]]},{minLevel:9,maxLevel:20,label:\"Swisstopo\",alt:\"Topografische Grundlage: copyright Bundesamt fur Landestopographie\",boxes:[[46.4166,\n7.3171,47.6087,9.5821],[45.8206,6.8641,47.41,7.3171],[46.218,5.9581,46.6153,6.4111],[46.4166,6.4111,47.0127,6.8641],[46.0193,7.3171,46.4166,8.2231],[46.218,8.2231,46.4166,9.1291],[46.6153,9.5821,47.0127,10.4882],[46.0193,8.6761,46.218,9.1291],[46.4166,9.5821,46.6153,10.0351],[47.6087,8.2231,47.8074,8.6761],[47.41,6.928,47.5272,7.3171],[47.0127,6.6305,47.1914,6.8641],[46.6153,6.1662,46.7577,6.4111],[46.1195,5.9453,46.218,6.3156],[46.1024,6.762,46.4166,6.8641],[45.8846,7.3171,46.0193,8.0455],[47.6087,\n8.6761,47.8074,9.4309],[47.2863,9.5821,47.5004,9.6893],[47.0127,9.5821,47.0721,9.9106],[46.0972,8.5106,46.218,8.6761],[45.7831,8.754,46.0193,9.1167],[46.118,9.1291,46.4166,9.3037],[46.5237,10.237,46.6153,10.4882],[46.2703,9.4435,46.4166,9.8658],[46.3513,9.8639,46.4166,10.0351],[46.414,10.0351,46.6153,10.174],[46.3367,10.0312,46.4166,10.1725],[46.2654,9.9778,46.3547,10.0368],[46.2473,10.0312,46.3547,10.182],[46.2131,10.0449,46.2643,10.182]]},{minLevel:11,maxLevel:20,label:\"IGN\",alt:\"copyright IGN 2009 - BD TOPO\",\nboxes:[[-21.474,55.1479,-20.7728,55.9393]]},{minLevel:9,maxLevel:20,label:\"2014 THTC\",alt:\"copyright 2014 Iran Maps provided by THTC\",boxes:[[26.1964,46.2203,38.4489,57.1922],[25.7783,47.3792,32.0891,56.2187],[25.7433,53.8979,37.602,61.7923],[24.9003,57.143,26.1964,61.8081],[37.3605,54.2859,38.2982,59.0624],[32.9552,45.2424,35.8416,47.3873],[38.1617,46.5449,39.195,48.012],[39.0244,46.9254,39.791,48.3969],[38.8972,47.5269,39.2823,48.3741],[35.3974,46.0286,38.8972,48.8454],[38.8953,48.012,39.0229,48.3415],\n[32.9515,46.0457,33.1362,46.2203],[35.8416,44.4164,38.8818,47.5346],[38.2632,44.2983,39.0496,46.5449],[38.4003,44.0023,39.8596,45.453],[35.7409,44.1806,38.2632,46.0286],[25.7433,60.8544,29.9265,61.9791],[26.4634,61.8391,28.6155,62.9147],[26.2013,61.8221,26.5448,62.3152],[25.7411,61.7923,26.2083,61.8881],[25.7411,61.8081,25.9431,61.9006],[26.5239,62.3114,26.5998,62.6364],[26.8134,62.8691,27.2641,63.296],[27.0181,63.1942,27.2641,63.3436],[26.6245,62.9016,26.8405,63.2208],[29.8177,60.4678,31.5665,60.9671],\n[29.9265,60.8423,31.5665,61.9599],[33.8976,59.0624,37.602,61.1473],[31.4968,59.9152,34.0374,60.8423],[31.5665,60.4947,34.0374,60.966],[34.1048,60.5115,36.6543,61.5751]]},{minLevel:6,maxLevel:20,label:\"Navteq\",alt:\"Navteq\",boxes:[[30.7754,78.5576,36.7754,79.5576],[40.7754,120.5576,42.7754,128.5576],[41.7754,128.5576,42.7754,131.5576],[39.7754,120.5576,40.7754,126.5576],[38.7754,120.5576,39.7754,124.5576],[36.7754,121.5576,37.7754,123.5576],[35.7754,120.5576,38.7754,121.5576],[21.7754,98.5576,22.7754,\n104.5576],[20.7754,99.5576,21.7754,102.5576],[23.7754,97.5576,28.7754,98.5576],[35.7754,75.5576,36.7754,78.5576],[40.7754,76.5576,41.7754,79.5576],[29.7754,120.5576,32.7754,122.5576],[29.7754,122.5576,31.7754,123.5576],[29.7754,79.5576,42.7754,120.5576],[22.7754,98.5576,29.7754,117.5576],[42.7754,79.5576,45.7754,94.5576],[42.7754,115.5576,49.7754,131.5576],[49.7754,119.5576,52.7754,127.5576],[42.7754,111.5576,45.7754,115.5576],[45.7754,82.5576,47.7754,91.5576],[42.7754,94.5576,44.7754,96.5576],[36.7754,\n73.5576,40.7754,79.5576],[28.7754,82.5576,29.7754,98.5576],[20.7754,106.5576,22.7754,113.5576],[18.7754,108.5576,20.7754,111.5576],[17.7754,108.5576,18.7754,110.5576],[26.7754,117.5576,27.7754,121.5576],[25.7754,117.5576,26.7754,120.5576],[24.7754,117.5576,25.7754,119.5576],[23.7754,117.5576,24.7754,118.5576],[21.7754,113.5576,22.7754,116.5576],[27.7754,117.5576,29.7754,122.5576],[27.7754,84.5576,28.7754,93.5576],[49.7754,127.5576,50.7754,128.5576],[27.6769,91.7865,27.7754,92.1101],[28.6334,93.5576,\n28.7754,94.0161],[28.2004,96.2409,28.7754,97.5576],[27.2614,88.7706,27.7754,89.2653],[32.2241,78.3965,32.6363,78.5576],[35.4169,77.1449,35.7754,78.5576],[41.7754,79.2585,41.8535,79.5576],[45.7754,82.363,46.2212,82.5576],[47.7754,85.4858,48.7754,90.1507],[48.7754,86.6922,49.2494,88.1056],[52.7754,119.9835,53.5719,126.1939],[24.5027,118.5576,24.7754,118.8161],[25.1912,119.5576,25.7754,119.912],[32.7754,120.5576,33.5701,120.8986],[42.7754,110.3934,44.782,111.5576],[47.9285,115.4373,48.223,115.5576],\n[49.7754,118.4027,50.9802,119.5576],[44.8404,131.5576,48.4334,134.8631]]},{minLevel:6,maxLevel:20,label:\"Navteq\",alt:\"Navteq\",boxes:[[29.0724,45.6538,34.0557,47.9928],[29.9029,47.193,31.4399,48.5938],[34.0557,40.2408,35.7256,46.4809],[35.7168,42.7138,37.3779,46.4809],[35.7168,41.2402,37.3779,42.7138],[29.0724,40.2408,34.0557,45.6538],[29.8076,38.7937,34.0739,43.8802]]},{minLevel:11,maxLevel:20,label:\"IGN\",alt:\"copyright IGN 2009 - BD TOPO\",boxes:[[15.6985,-61.9309,16.5953,-61.0013]]},{minLevel:10,\nmaxLevel:20,label:\"EuroGeographics\",alt:\"copyright EuroGeographics\",boxes:[[45.452,13.7142,46.8284,16.3044],[45.5557,14.5931,46.1463,15.7955],[45.3439,14.6924,45.7418,15.4262],[46.3859,15.9891,46.8915,16.6217],[45.4543,14.0533,45.7004,14.6924],[45.5366,13.3628,46.523,13.9372],[45.4125,13.657,45.6003,13.9833],[45.5239,14.6795,45.5557,14.7057],[45.4418,13.5675,45.5366,13.6734],[45.5318,13.5988,45.5394,13.638],[46.8276,15.9827,46.8786,16.2706]]},{minLevel:11,maxLevel:20,label:\"EuroGeographics\",alt:\"copyright EuroGeographics\",\nboxes:[[46.853,26.511,48.6163,29.3448],[46.4187,28.0753,47.9267,29.31],[45.4102,28.0701,46.4249,28.5878],[45.4154,28.0081,46.1325,28.4224],[45.7302,28.2568,47.4471,29.2353],[45.7302,28.5878,46.2901,29.0637],[46.3002,29.2029,46.5592,30.2333],[46.7892,29.2282,47.4471,29.9684],[46.5465,29.2256,46.8365,30.0376]]},{minLevel:9,maxLevel:20,label:\"Nepal\",alt:\"Copyright Survey Department, Government of Nepal\",boxes:[[26.2669,85.571,28.4465,88.2408],[26.4858,83.0964,29.4459,85.7994],[27.3853,81.0976,30.1502,\n83.8816],[28.2854,79.7937,30.6642,82.254],[30.1502,81.3961,30.4719,82.254],[27.4329,81.6782,27.9426,82.8798]]},{minLevel:9,maxLevel:20,label:\"IGN\",alt:\"copyright IGN 2009 - BD TOPO\",boxes:[[14.3135,-61.2546,14.968,-60.7258]]},{minLevel:9,maxLevel:20,label:\"EuroGeographics\",alt:\"copyright EuroGeographics\",boxes:[[54.9394,20.8924,56.5027,23.423],[53.8579,22.579,56.5027,24.9113],[53.8757,22.4807,55.1024,24.5276],[54.263,22.6378,54.6908,23.1253],[53.8579,24.5937,56.4848,26.8994],[54.0863,25.2612,54.5213,\n25.9464]]},{minLevel:10,maxLevel:20,label:\"EuroGeographics\",alt:\"copyright EuroGeographics\",boxes:[[42.1231,14.4853,44.8976,18.6541],[42.5705,15.6655,43.3251,17.0432],[44.1837,13.3057,45.5704,15.8226],[44.8976,13.8789,46.5835,18.1295],[44.9955,16.185,45.149,16.4761],[44.8126,16.5981,45.7845,19.5169],[45.4199,18.1216,45.9726,19.1392]]},{minLevel:9,maxLevel:20,label:\"IgeoE\",alt:\"IgeoE - Portugal\",boxes:[[30.1318,-15.883,30.1622,-15.8445],[32.2747,-17.3686,33.1907,-15.9142],[36.5482,-32.0392,40.4124,\n-23.6635],[36.9392,-9.0081,38.4418,-7.2449],[37.9667,-7.2522,38.3853,-6.8808],[38.4418,-8.926,39.5144,-6.7321],[38.1864,-9.5593,39.5271,-8.895],[39.4801,-9.1848,42.1722,-7.8729],[39.4153,-8.4431,41.9675,-7.2126],[41.7211,-7.2357,42.0048,-6.505],[41.2304,-7.31,41.7633,-6.5183],[40.9842,-7.3532,41.2705,-6.5519],[40.1168,-7.4841,40.9984,-6.7565],[39.654,-7.552,40.2572,-6.7565],[39.3941,-7.5899,39.6663,-6.985],[41.2304,-6.5519,41.7009,-6.1811]]},{minLevel:9,maxLevel:20,label:\"OGL\",alt:\"Open Government Licence v.1.0.\",\nboxes:[[53.8371,-8.1821,59.6771,-1.2194],[50.3331,-1.2194,55.0051,1.7646],[50.3331,-5.1981,53.8371,-1.2194],[49.1651,-7.9476,50.3331,-1.9796],[59.6771,-2.2141,60.8451,-.2247],[51.5011,-5.3731,52.6691,-5.1981]]},{minLevel:10,maxLevel:20,label:\"IGN\",alt:\"copyright IGN 2009 - BD TOPO\",boxes:[[3.993,-54.5201,5.2588,-54.299],[2.6665,-52.5112,3.5742,-52.0258],[2.1062,-54.6066,3.5684,-54.001],[3.5684,-54.299,5.7509,-51.6174],[2.1134,-54.001,3.5684,-52.5112]]},{minLevel:10,maxLevel:20,label:\"EuroGeographics\",\nalt:\"copyright EuroGeographics\",boxes:[[34.3756,32.2293,35.5938,33.7589],[34.8444,33.6276,35.276,34.1041],[35.1525,33.5454,35.734,34.6339]]},{minLevel:6,maxLevel:20,label:\"PSMA\",alt:\"Copyright. Based on data provided under license from PSMA Australia Limited. Product incorporates data which is 2014 Telstra Corporation Limited, GM Holden Limited, Intelematics Australia Pty Ltd, HERE International LLC, Sentinel Content Pty Limited and Continental Pty Ltd\",boxes:[[-13.1672,95.8626,-11.1672,97.8626],\n[-11.5539,104.6728,-9.5539,106.6728],[-32.5901,158.0863,-30.5901,160.0863],[-30.0761,167.0381,-28.0761,169.0381],[-32,113,-20,151],[-38,135,-32,151],[-20,123,-14,147],[-20,121,-16,123],[-14,129,-10,137],[-14,141,-8,145],[-36,115,-32,127],[-44,141,-38,149],[-34,127,-32,135],[-34,151,-24,155]]},{minLevel:9,maxLevel:20,label:\"Lantmateriet\",alt:\"Based upon electronic data National Land Survey Sweden.\",boxes:[[56.8124,17.7151,58.4792,19.8137],[62.5323,15.7813,69.3138,25.2754],[60.9048,13.083,68.0183,18.3797],\n[58.0209,11.5126,64.3169,17.4803],[58.0209,17.3803,62.5323,19.7075],[55.2659,10.7702,62.8658,17.3803],[55.2659,13.7838,58.0209,17.466],[55.1529,12.368,56.6521,13.7838]]},{minLevel:9,maxLevel:20,label:\"BEV\",alt:\"copyright Bundesamt fur Eich- und Vermessungswesen\",boxes:[[46.639,10.6752,46.9033,11.0567],[47.6962,13.3457,48.7534,17.1607],[46.9033,9.5307,47.6962,16.7792],[46.639,12.2012,46.9033,16.0162],[46.3748,13.3457,46.639,14.8717],[48.7534,14.8717,49.0177,16.0162],[47.6962,12.9642,48.2248,13.3457],\n[48.2248,12.9642,48.3571,13.3457],[47.8668,12.7411,48.2248,12.9642],[47.6962,12.8955,47.8109,12.9642],[48.7534,16.3752,48.8317,16.725],[46.8266,16.0162,46.9033,16.1893],[46.5375,12.6822,46.639,13.3457],[46.8219,9.9561,46.9033,10.2682],[46.8181,10.4415,46.9033,10.6752],[46.7953,11.0567,46.9033,11.1249]]},{minLevel:9,maxLevel:20,label:\"Sri Lanka\",alt:\"This product incorporates original source digital data obtained from the Survey Department of Sri Lanka. 2009 Survey Department of Sri Lanka The data has been used with the permission of the Survey Department of Sri Lanka\",\nboxes:[[5.8461,79.5067,9.9652,82.0121]]},{minLevel:9,maxLevel:20,label:\"CNIG\",alt:\"Informacion geografica propiedad del CNIG\",boxes:[[27.4138,-18.299,29.4228,-13.2707],[35.2569,-2.9815,35.3232,-2.9161],[39.3438,-7.6437,39.7836,-7.2643],[27.4138,-18.299,29.4228,-13.2707],[41.6479,-9.7829,43.8119,-6.3517],[38.415,-6.734,43.7683,3.4915],[37.312,-6.8623,39.398,.229],[35.6142,-7.022,37.9317,-1.2109],[36.8976,-7.5399,41.6961,-6.5372],[38.2202,3.0662,40.2854,5.1739],[35.8628,-5.387,35.9199,-5.2772]]},{minLevel:10,\nmaxLevel:20,label:\"EuroGeographics\",alt:\"copyright EuroGeographics\",boxes:[[57.9301,23.439,59.7909,27.465],[57.8968,21.7448,59.3645,23.458],[57.44,25.5161,58.0205,27.8981],[57.754,23.1887,57.8411,23.2957],[57.8526,24.295,57.9554,24.7904],[58.0107,27.4528,58.7552,27.6501],[58.7436,27.4413,59.4859,28.2525]]},{minLevel:10,maxLevel:20,label:\"Navteq\",alt:\"Navteq\",boxes:[[10.6629,-85.8099,12.9543,-83.3936],[11.0412,-87.1376,14.6525,-83.1509],[14.2095,-82.9224,14.5307,-82.6012],[12.3118,-87.842,14.2011,\n-84.9162],[13.6161,-85.8103,15.1814,-83.0464],[14.1788,-85.457,14.8768,-83.8745]]},{minLevel:10,maxLevel:20,label:\"SOI\",alt:\"Survey of Israel data source\",boxes:[[29.3724,34.2346,31.5477,35.4573],[30.9701,34.4766,33.1256,35.6655],[32.6825,35.0912,33.113,35.7566],[32.7247,35.3798,33.1257,35.9089],[32.9351,35.5239,33.3538,35.9089]]},{minLevel:9,maxLevel:20,label:\"EuroGeographics\",alt:\"copyright EuroGeographics\",boxes:[[49.0148,14.0753,55.0681,20.2333],[51.6271,18.2346,55.0681,24.1071],[49.1699,19.3708,\n52.6479,23.8452],[48.9384,21.8835,49.9277,22.9603],[49.5714,22.2773,51.4811,23.7502],[51.0366,23.1726,52.2145,23.736],[50.8016,23.3995,51.5813,24.1714],[50.3495,23.3995,51.0366,24.1571],[50.3804,23.794,50.6141,24.1242],[52.7337,14.0896,53.0647,14.3477]]},{minLevel:10,maxLevel:20,label:\"Jordan\",alt:\"Royal Jordanian Geographic Centre\",boxes:[[31.3679,36.8242,33.3996,39.3159],[29.2293,35.2899,31.3679,38.0203],[29.2293,34.9258,30.889,35.9751],[30.889,35.2899,32.3179,37.3047],[31.8515,35.4964,32.7823,\n36.8242]]},{minLevel:9,maxLevel:20,label:\"Statkart\",alt:\"Copyright 2000; Norwegian Mapping Authority\",boxes:[[56.444,2.9492,63.9455,12.064],[61.0315,6.1059,70.9952,18.0586],[59.2422,9.9664,63.2018,13.0634],[67.8075,16.8944,71.3965,25.1741],[68.4773,24.6595,71.3952,26.3932],[69.6571,25.9972,71.4071,28.8856],[68.8789,27.8446,71.4071,32.1402],[63.9575,13.0203,65.6822,14.7214],[66.1997,15.2505,67.3135,16.3893]]},{minLevel:6,maxLevel:20,label:\"Canada\",alt:\"This data includes information taken with permission from Canadian authorities, including Her Majesty, Queens Printer for Ontario, Canada Post, GeoBase, Department of Natural Resources Canada. All rights reserved\",\nboxes:[[70,-125.9042,78,-77],[78,-101,82,-69],[82,-91,84,-61],[80,-69,82,-61],[46.3831,-57.0167,49.9905,-50.981],[52,-135,56,-129],[78,-115,80,-101],[46,-87.5736,48.0357,-57],[44,-85.0026,46.0536,-59],[70,-77,74,-67],[56,-63,68,-61],[41.9986,-83,44.0238,-77.4271],[62,-141,70,-63],[56,-135,58,-87],[58,-141,62,-91],[56,-81,62,-63],[48,-129,56,-57],[50,-57,54,-55]]},{minLevel:11,maxLevel:20,label:\"IGN\",alt:\"copyright IGN France 2009 BD TOPO\",boxes:[[41.3454,8.4823,43.1241,9.6779],[46.512,-5.2986,48.9033,\n-2.1006],[42.5367,-2.1077,46.512,2.1618],[45.8812,-2.1077,48.9033,6.7118],[42.2486,.3773,46.1891,6.8232],[42.8343,4.3116,45.2796,7.678],[48.7889,-2.0366,51.1937,2.7484],[48.6676,2.4444,51.1937,8.2326],[47.2548,6.3526,48.6954,7.5496],[46.5513,6.1405,47.3535,7.0066],[45.8114,5.9584,46.5615,6.9032],[45.7944,6.8518,46.1046,7.1168],[43.9532,7.4449,44.1819,7.7612],[44.856,6.2593,45.8136,7.2498],[47.3484,7.1095,48.6757,7.891],[44.5968,6.6907,45.0132,7.1016]]},{minLevel:9,maxLevel:20,label:\"Deutschland\",\nalt:\"Die Grundlagendaten wurden mit Genehmigung der zustandigen Behorden entnommen\",boxes:[[54.2771,13.2064,55.0556,14.1232],[47.2702,7.705,55.0556,13.2064],[50.3844,13.2064,54.2771,15.0401],[48.8273,5.8712,51.9414,7.705],[51.9414,6.7881,53.8624,7.705],[48.0487,13.2064,49.6058,13.9895]]},{minLevel:9,maxLevel:20,label:\"EuroGeographics\",alt:\"copyright EuroGeographics\",boxes:[[55.3689,24.1704,58.1269,28.4487],[56.1948,23.095,57.2653,24.2779],[56.3085,21.6724,57.8204,23.3336],[55.9347,20.7407,57.7144,\n21.825]]},{minLevel:9,maxLevel:20,label:\"IGM\",alt:\"INSTITUTO GEOGRAFICO MILITAR DEL ECUADOR AUTORIZACION No IGM-2011-01- PCO-01 DEL 25 DE ENERO DE 2011\",boxes:[[-4.6863,-80.539,1.1441,-78.4796],[-2.095,-78.4796,.4963,-75.5964],[-2.7428,-81.3628,-.7994,-80.9509],[-2.7428,-80.9509,1.1441,-80.539],[-1.4472,-75.5964,.1724,-75.1846],[-5.0102,-79.7153,-4.6863,-78.8915],[1.1441,-79.3034,1.468,-78.4796],[.4963,-78.4796,.8202,-77.244],[.8202,-78.4796,1.1441,-78.0677],[-3.7146,-78.4796,-2.095,-78.0677],[-2.7428,\n-78.0677,-2.095,-76.4202],[-3.0667,-78.0677,-2.7428,-77.244],[-2.4189,-76.4202,-2.095,-76.0083]]},{minLevel:9,maxLevel:20,label:\"ITA\",alt:\"La Banca Dati Italiana e stata prodotta usando quale riferimento anche cartografia numerica ed al tratto prodotta e fornita dalla Regione Toscana\",boxes:[[38.1821,6.8824,47.2069,14.1446],[35.3758,11.8034,40.0397,19.4309],[39.2141,13.5406,43.0524,16.4857],[39.6269,16.0831,42.3234,18.8269],[36.6566,11.8869,36.8801,12.1816],[44.1083,6.613,45.2558,7.2468],[45.6248,\n6.8008,45.8575,6.9794],[46.7941,10.3931,47.0561,11.6257],[45.5627,12.8285,46.6783,13.986],[42.6396,13.3581,43.6743,14.0461]]},{minLevel:10,maxLevel:20,label:\"Navteq\",alt:\"Navteq\",boxes:[[-26.8359,30.8723,-25.6938,32.1739],[-27.0738,30.7201,-26.2624,31.5422],[-27.3832,30.9615,-26.5576,32.0286],[-27.3403,31.4364,-26.7719,32.0286],[-26.8455,32.0275,-26.7719,32.1475]]},{minLevel:10,maxLevel:20,label:\"Geomatics\",alt:\"Copyright Geomatics Ltd.\",boxes:[[34.8037,20.3974,41.0512,26.5331],[38.9687,19.3748,40.3571,\n20.3974],[36.1209,29.5552,36.1723,29.6034],[38.9765,26.5331,39.1817,26.6201],[41.0512,21.9014,41.174,22.4426],[38.1449,20.332,38.3325,20.3984],[35.1058,26.5331,37.9255,28.2956],[41.0512,22.4426,41.3788,22.8625],[41.0512,22.8393,41.637,24.4931],[41.0512,24.4883,41.8654,26.5489],[41.2829,26.538,41.6486,26.6501]]},{minLevel:9,maxLevel:20,label:\"Cenacarta\",alt:\"Certain Data for Mozambique provided by Cenacarta 2014 by Cenacarta\",boxes:[[-15.9653,33.6194,-10.3973,41.2432],[-16.3417,30.7148,-14.095,34.9419],\n[-18.8084,34.9389,-15.0611,41.2432],[-17.1457,38.6588,-15.8415,40.2757],[-22.989,31.1878,-18.8084,36.5975],[-26.8763,31.1878,-22.4084,35.7659],[-24.9908,34.2964,-23.3847,35.6707],[-18.8203,31.8425,-15.6508,36.5975],[-16.0985,30.1219,-13.9704,33.7148]]},{minLevel:9,maxLevel:20,label:\"EuroGeographics\",alt:\"copyright EuroGeographics\",boxes:[[47.7796,23.7808,52.3053,30.3909],[50.5207,23.4548,51.7557,24.437],[47.7796,23.6071,50.6001,25.5225],[47.9128,22.4364,50.5207,23.983],[47.706,24.7422,47.8394,25.2039],\n[48.3302,22.1323,49.0508,22.5012],[47.9209,22.1347,48.5886,23.2256],[47.9979,23.04,48.0552,23.1187],[47.9624,23.1767,48.133,23.5211],[44.9794,29.0356,47.908,30.3873],[44.9794,28.141,46.824,29.5592],[44.0324,29.5592,46.3547,37.3686],[45.855,30.3873,51.8685,37.3686],[51.7797,30.5067,52.4699,34.3366],[51.6941,34.3051,51.9267,34.4588],[46.3547,34.8806,50.8793,38.6386],[47.4754,38.4346,50.1112,40.3587],[50.7773,34.666,51.2858,35.5437]]}]};function T(a,b,c,d,e,f){if(a&&b)this.vi(a),this.li(b),this.ta(c),this.Rk(e),this.Hk(f),this.Sk(d);else throw Error('Parameters \"scheme\" and \"host\" must be specified');}u(\"H.service.Url\",T);\nfunction xn(a,b){var c=y.document,d,e=c&&c.createElement(\"a\"),f=\"\";if(c){if(b){var g=(d=c.getElementsByTagName(\"base\")[0])&&d.href;var h=c.head;var k=d||h.appendChild(c.createElement(\"base\"));k.href=b}e.href=a;f=e.href;b&&(d?d.href=g:h.removeChild(k))}else/[\\w]+:\\/\\//.test(a)&&(f=a);g=/(?:(\\w+):\\/\\/)?(?:([^:]+):([^@/]*)@)?([^/:]+)?(?:[:]{1}([0-9]+))?(\\/[^?#]*)?(\\?[^#]+)?(#.*)?/.exec(f);a=g[1];k=g[4];b=g[5];h=g[6];c=g[7];d=g[8];!g[2]&&k&&/@/.test(k)&&(k=k.split(\"@\")[1]);g=k;h=h&&0<h.length?h.substr(1):\n\"\";k={};if(c)for(e=/([?&]?([^=&+]+))(=([^&]+))?/g;f=e.exec(c);)k[decodeURIComponent(f[2])]=f[4]?decodeURIComponent(f[4]):void 0;return new T(a,g,h,k,isNaN(+b)?void 0:+b,d&&0<d.length?d.substr(1):\"\")}T.parse=xn;var yn=0;T.prototype.clone=function(){yn++;var a={},b;for(b in this.Da)a[b]=this.Da[b];return new T(this.o,this.c,this.b,a,this.f,this.a)};T.prototype.clone=T.prototype.clone;\nT.prototype.vi=function(a){if(!a||\"string\"!==typeof a)throw Error('The \"scheme\" parameter must be a non-empty string.');this.o=a;return this};T.prototype.setScheme=T.prototype.vi;T.prototype.Um=function(){return this.o};T.prototype.getScheme=T.prototype.Um;T.prototype.li=function(a){if(!a||\"string\"!==typeof a||\"-\"===a.charAt(0)||\".\"===a.charAt(0)||\".\"===a.charAt(a.length-1))throw Error('The \"host\" parameter is not a valid host name.');this.c=a;return this};T.prototype.setHost=T.prototype.li;\nT.prototype.pm=function(){return this.c};T.prototype.getHost=T.prototype.pm;T.prototype.ta=function(a){this.b=a||void 0;return this};T.prototype.setPath=T.prototype.ta;T.prototype.Hm=function(){return this.b};T.prototype.getPath=T.prototype.Hm;T.prototype.Sk=function(a){if(a)if(\"object\"==typeof a)this.Da=a;else throw Error('Parameter \"params\" must be an object.');else this.Da={};return this};T.prototype.setQuery=T.prototype.Sk;T.prototype.Ij=function(){return!zn(this)};T.prototype.hasQuery=T.prototype.Ij;\nT.prototype.Pm=function(){return this.Da};T.prototype.getQuery=T.prototype.Pm;T.prototype.Rk=function(a){if(a&&isNaN(parseInt(a,10)))throw Error('Parameter \"port\" must be a number or undefined');this.f=+a||void 0;return this};T.prototype.setPort=T.prototype.Rk;T.prototype.Lm=function(){return this.f};T.prototype.getPort=T.prototype.Lm;T.prototype.Hk=function(a){this.a=a||void 0;return this};T.prototype.setAnchor=T.prototype.Hk;T.prototype.ld=function(){return this.a};T.prototype.getAnchor=T.prototype.ld;\nT.prototype.K=function(a){if(\"object\"!==typeof a)throw Error('Parameter \"other\" must be an object.');var b=this.Da,c;for(c in a)a.hasOwnProperty(c)&&\"function\"!==typeof a[c]&&(b[c]=a[c]);return this};T.prototype.mergeQuery=T.prototype.K;T.prototype.ua=function(a){if(!a||\"string\"!==typeof a)throw Error('Parameter \"subDomain\" must be a non-empty string');\".\"===a.substr(a.length-1)&&(a=a.substr(0,a.length-1));return this.li(a+\".\"+this.c)};T.prototype.addSubDomain=T.prototype.ua;\nT.prototype.Y=function(a){if(!a||\"string\"!==typeof a)throw Error('Parameter \"subPath\" must be a non-empty string');return this.ta((this.b?this.b+\"/\":\"\")+a)};T.prototype.addSubPath=T.prototype.Y;T.prototype.toString=function(){return[this.o+\"://\",this.c,this.f?\":\"+this.f:\"\",this.b||!zn(this)||this.a?\"/\":\"\",this.b?encodeURI(this.b):\"\",An(this),this.a?\"#\"+encodeURIComponent(this.a):\"\"].join(\"\")};T.prototype.toString=T.prototype.toString;\nfunction An(a){var b=[],c,d=a.Da;for(c in d)if(d.hasOwnProperty(c)&&\"function\"!==typeof d[c]){var e=a.Da[c];b.push(encodeURIComponent(c)+(void 0===e?\"\":\"=\"+encodeURIComponent(e)))}return 0<b.length?\"?\"+b.join(\"&\"):\"\"}function zn(a){var b,c=0;for(b in a.Da)if(a.Da.hasOwnProperty(b)&&\"function\"!==typeof a.Da[b]&&(c++,0<c))break;return!c};function U(a){a=vn({},this.ra,a);var b=a.apikey,c=a.baseUrl;if(c=b?c?0:\"baseUrl\":\"apikey\")throw new D(U,0,'\"'+c+'\" must be specified');this.Kk(a.baseUrl);this.a=b;this.b.K({apikey:b});this.c=La(a.servicesConfig||{})}u(\"H.service.Platform\",U);U.prototype.ra={apikey:null,baseUrl:new T(\"https\",\"hereapi.com\")};U.prototype.Kk=function(a){this.b=a.clone();this.b.K({xnlp:\"CL_JSMv3.\"+sn().version});this.a=a=this.a;this.b.K({apikey:a})};U.prototype.setBaseUrl=U.prototype.Kk;U.prototype.Kd=function(){return this.b};\nU.prototype.getBaseUrl=U.prototype.Kd;U.prototype.ob=function(a,b){try{return a.rb=!0,new a(vn({platformBaseUrl:this.Kd()},this.c[a.CONFIG_KEY]||{},b||{}))}finally{delete a.rb}};U.prototype.createService=U.prototype.ob;var Bn=Function(\"return this\")();Jb(\"monospace serif\");function Cn(){}Cn.prototype.pop=function(a){this[a]||(this[a]=[]);return this[a].pop()||Bn.document.createElement(\"canvas\")};Cn.prototype.push=function(a,b){this[b]||(this[b]=[]);this[b].push(a)};var Dn=new Cn;u(\"H.service.util.eval\",function(a){return eval(a)});function En(a){var b=y.H.getScriptPath();return b=b?xn(b).Y(\"styles\"):a.clone().ua(\"js\").Y(\"v3/3.1.8.1/styles\")};function Fn(a,b,c){c=c||{};var d=+c.min,e=+c.max;c.tileSize=c.tileSize||512;c.min=d?ld(d,1,17):1;c.min+=Sj(c.tileSize,1);c.max=e?ld(e,1,17):17;Fn.l.constructor.call(this,c);C(a,Gn,Fn,0);C(b,fj,Fn,1);this.a=a;this.G=new Uj(256);un(b,\"OMV\");this.yd(b,!0);this.D=A(this.reload,this,!1);a.addEventListener(\"versionupdate\",this.D)}w(Fn,Q);u(\"H.service.omv.Provider\",Fn);Fn.prototype.Ob=function(){return this.G};Fn.prototype.getCache=Fn.prototype.Ob;\nFn.prototype.Pa=function(a,b,c,d,e){return this.a.ib(a,b,c,d,e)};Fn.prototype.requestInternal=Fn.prototype.Pa;Fn.prototype.fd=function(a){un(a,\"OMV\");this.yd(a)};Fn.prototype.setStyle=Fn.prototype.fd;Fn.prototype.Ia=function(){return Fn.l.Eb.apply(this)};Fn.prototype.getStyle=Fn.prototype.Ia;\nFn.prototype.Eb=function(){var a=Fn.l.Eb.apply(this),b;this.B&&(a.getState()===gj.READY?(b=a.Ef())&&b.global&&(this.o&&(b.global.ux_language=this.o),this.b&&(b.global.ux_language_fallback=this.b),a=new fj(b,a.Kd())):a.load());return a};function Hn(a,b,c){var d=a.Eb().getState()===gj.READY,e=ra(b),f=ra(c);e&&(a.o=b);f&&(a.b=c);if(e||f)a.B=!0,d&&a.f()}Fn.prototype.s=function(){Fn.l.s.call(this);this.a.removeEventListener(\"versionupdate\",this.D)};\nFn.prototype.la=function(a,b){return In(this.a.la(),\"normal\",b,a)};Fn.prototype.getCopyrights=Fn.prototype.la;function Gn(a){var b=vn({},this.ra,a||{}),c=b.mapVersion;G.call(this);if(!Gn.rb)throw new nc(Gn);if(!b.baseUrl&&!b.platformBaseUrl)throw new D(Gn,0,'either \"baseUrl\" or \"platformBaseUrl\" must be specified');this.Zh=b.platformBaseUrl;this.A=(b.baseUrl?b.baseUrl:b.platformBaseUrl).clone();if(Ub(c)&&0<=c)this.Ne=c;else if(c!==B)throw new D(Gn,0,\"Invalid map version\");this.wa(b.baseUrl?a||{}:b)}w(Gn,G);u(\"H.service.omv.Service\",Gn);Gn.prototype.ra={};Gn.CONFIG_KEY=\"omv\";Gn.prototype.zm=function(){return this.Ne};\nGn.prototype.getMapVersion=Gn.prototype.zm;Gn.prototype.wa=function(a){a.subDomain&&this.A.ua(a.subDomain);a.path&&this.A.ta(a.path);Lb(this.Ne)||Jn(this)};function Jn(a){(new cf(\"application/json\",a.A.clone().ta(\"v2/vectortiles/info\").toString())).then(function(a){this.Ne=a.mapVersion;this.dispatchEvent(\"versionupdate\")}.bind(a),function(){})}Gn.prototype.Ja=function(){return this.A};Gn.prototype.te=function(a,b){return new Dk(new Fn(this,a,b),{max:22})};Gn.prototype.createLayer=Gn.prototype.te;\nGn.prototype.ib=function(a,b,c,d,e){a=this.A.clone().Y(c+\"/\"+a+\"/\"+b+\"/omv\");Lb(this.Ne)&&a.K({mv:this.Ne});a=new cf(\"arraybuffer\",a.toString(),rd);a.then(function(a){a.arrayBuffer().then(d,e)},e);return a};Gn.prototype.mh=function(a){return En(this.Zh).Y(\"omv/\"+a+\".yaml\")};U.prototype.zj=function(a){return this.ob(Gn,vn({subDomain:\"vector\",path:\"v2/vectortiles/base/mc\"},a||{}))};U.prototype.getOMVService=U.prototype.zj;Gn.prototype.ye=function(){this.Uc=new Kn;this.Ei(wn)};\nGn.prototype.Ei=function(a){Ln(this.Uc,a);this.dispatchEvent(\"copyrightupdate\")};Gn.prototype.la=function(){this.Uc||this.ye();return this.Uc};Gn.prototype.getCopyrights=Gn.prototype.la;function Kn(){this.a={}}function Ln(a,b){for(var c in b)if(b.hasOwnProperty(c)){var d,e=b[c],f=a.a[c]||(a.a[c]=[]),g=e.length;for(d=0;d<g;d++)f.push(new Mn(e[d]))}}function In(a,b,c,d){var e=(a=a.a[b])?a.length:0,f=[];for(b=0;b<e;b++)a[b].Vd(c,d)&&f.push(a[b]);return f}\nfunction Mn(a){var b,c=a.boxes;this.label=a.label;this.min=a.minLevel;this.max=a.maxLevel;this.b=[];if(c&&(b=c.length)){var d=c[0];var e=new J(d[0],d[1],d[2],d[3]);this.b.push(e);this.a=new J(d[0],d[1],d[2],d[3]);for(a=1;a<b;a++)d=c[a],e=new J(d[0],d[1],d[2],d[3]),this.b.push(e),this.a.jc(e,!1,this.a)}}Mn.prototype.Vd=function(a,b){if(a>=this.min&&a<=this.max)if((a=this.b.length)&&this.a){if(this.a.Vd(b))for(;a--;)if(this.b[a].Vd(b))return!0}else return!0;return!1};function Nn(a,b,c,d,e,f,g){var h=this;g=g||{};f=f?f:{};var k=a.Ja().clone().Y(b+\"/\"+a.zc()+\"/\"+c).K(f),l=a.jh();this.G=a;this.X=k;Kj.call(this,{tileSize:d,max:512===d?19:20,min:512===d?2:0,getURL:function(a,b,c){var f=h.X.clone();l&&f.ua(l[(c+b+a)%l.length]);f.Y(c+\"/\"+a+\"/\"+b+\"/\"+d+\"/\"+e);return f.toString()},crossOrigin:g.crossOrigin,uri:k.toString().replace(/_/g,\"\")+d});this.qc=b;this.o=c;this.Da=f;this.Ya=c.split(\".\")[0];this.b=A(this.b,this);this.getCopyrights=this.la;this.ca=zc();a.addEventListener(\"versionupdate\",\nthis.b)}w(Nn,Kj);Nn.prototype.MAX_STORE_TIME=2592E6;Nn.prototype.s=function(){Kj.prototype.s.call(this);this.G.removeEventListener(\"versionupdate\",this.b)};Nn.prototype.la=function(a,b){return In(this.G.la(),this.Ya,b,a)};Nn.prototype.b=function(){var a=this.G;this.X=a.Ja().clone().Y(this.qc+\"/\"+a.zc()+\"/\"+this.o).K(this.Da);this.reload(!1)};Nn.prototype.pe=function(){return this.ca};Nn.prototype.canStore=Nn.prototype.pe;Nn.prototype.Sd=function(){return this.pe()?yc():Q.prototype.Sd.call(this)};\nNn.prototype.getStorage=Nn.prototype.Sd;function On(a){var b=vn({},this.ra,a||{});if(!On.rb)throw new nc(On);if(!b.baseUrl&&!b.platformBaseUrl)throw new D(On,0,'either \"baseUrl\" or \"platformBaseUrl\" must be specified');G.call(this);this.A=(b.baseUrl?b.baseUrl:b.platformBaseUrl).clone();this.wa(b.baseUrl?a||{}:b);this.Zb=b.shards;(this.Qa=b.ignoreTypes?null:b.type)&&this.A.ua(this.Qa);this.$b=b.version;this.Uc=new Kn;this.ci={};this.yf=0;\"newest\"===this.$b&&this.Vg()}w(On,G);u(\"H.service.MapTileService\",On);\nOn.prototype.ra={subDomain:\"maps.ls\",path:\"maptile/2.1\",type:\"base\",version:\"newest\",shards:[\"1\",\"2\",\"3\",\"4\"]};On.CONFIG_KEY=\"maptile\";n=On.prototype;n.wa=function(a){a.subDomain&&this.A.ua(a.subDomain);a.path&&this.A.ta(a.path)};n.ia=function(a,b,c){return(new cf(\"application/json\",a,rd)).then(b,function(b){c(Error(\"[\"+b.statusText+\"] \"+a+\" request failed\"))})};function Pn(a,b){for(var c={},d=a[b+\"s\"][b],e=d.length;e--;)c[d[e].id]=d[e];a[b+\"s\"]=c}n.Ja=function(){return this.A};n.jh=function(){return this.Zb};\nn.Cj=function(){return this.Qa};On.prototype.getType=On.prototype.Cj;On.prototype.zc=function(){return this.$b};On.prototype.getVersion=On.prototype.zc;On.prototype.xi=function(a){this.$b=a};On.prototype.la=function(){this.yf||(this.$b&&\"newest\"!==this.$b||\"traffic\"===this.Qa)&&this.ye();return this.Uc};On.prototype.getCopyrights=On.prototype.la;n=On.prototype;\nn.Fi=function(a){a=a.response;var b;Pn(a,\"map\");Pn(a,\"scheme\");Pn(a,\"tiletype\");Pn(a,\"format\");Pn(a,\"resolution\");Pn(a,\"language\");if(\"newest\"===this.$b&&\"traffic\"!==this.Qa)for(b in a.maps)a.maps[b].hash&&a.maps[b].newest&&(this.xi(a.maps[b].hash),this.dispatchEvent(\"versionupdate\"));this.sh=a;this.dispatchEvent(\"infoupdate\")};n.Ei=function(a){Ln(this.Uc,a);this.dispatchEvent(\"copyrightupdate\")};\nn.Vg=function(){var a=this;var b=this.A.clone().Y(\"info\").K({output:\"json\"});this.Zb&&b.ua(this.Zb[0]);this.ia(b,function(b){a.Fi(b)},function(a){throw a;})};n.ye=function(){var a=this;var b=this.A.clone().Y(\"copyright\").Y(a.zc()).K({output:\"json\"});this.Zb&&b.ua(this.Zb[0]);this.yf=1;this.ia(b,function(b){a.yf=2;a.Ei(b)},function(b){a.yf=-1;throw b;})};n.eh=function(){return this.sh};On.prototype.getInfo=On.prototype.eh;\nOn.prototype.ve=function(a,b,c,d,e,f){var g=this.Ja().clone().Y(a+\"/\"+this.zc()+\"/\"+b+\"/\"+c+\"/\"+d).K(e?e:{}).toString();var h=0,k,l=g.length;if(0!==l)for(k=0;k<l;k++){var m=g.charCodeAt(k);h=(h<<5)-h+m;h|=0}g=h;h=this.ci[g];h||(h=new Nn(this,a,b,c,d,e,f),this.ci[g]=h);return h};On.prototype.createTileProvider=On.prototype.ve;On.prototype.sc=function(a,b,c,d,e,f,g,h){a=this.ve(a,b,c,d,e,h);return new Dk(a,{opacity:f,dark:!!g})};On.prototype.createTileLayer=On.prototype.sc;\nU.prototype.hh=function(a){return this.ob(On,a)};U.prototype.getMapTileService=U.prototype.hh;U.prototype.Mg=function(a,b,c,d,e,f){var g=this.hh(),h=this.hh({type:\"aerial\"}),k=this.Bj(),l=this.zj(),m={},p={crossOrigin:\"anonymous\"};wa(a)&&(f=a,\"crossOrigin\"in f&&(p.crossOrigin=f.crossOrigin),a=f.tileSize,b=f.ppi,c=f.lg,d=f.lg2,e=f.style,f=f.pois);var q=a||512;if(0>[72,250,320,500].indexOf(+b)){if(b!==B)throw new D(this.Mg,1,b);}else m.ppi=+b;c&&(m.lg=c);d&&(m.lg2=d);e&&(m.style=e);f&&(m.pois=f);a=function(a,b,c,d,e){return a.sc(b,c,q,d,m,1,e,p)};l=l.te(new fj(l.mh(\"normal.day\").toString()));\nHn(l.za(),m.lg,m.lg2);b=k.dj();k=k.ej(m.lg?{lg:m.lg,i18n:!0}:void 0);return{vector:{normal:{map:l,traffic:b,trafficincidents:k}},raster:{normal:{xbase:a(g,\"xbasetile\",\"normal.day\",\"png8\",!1),xbasenight:a(g,\"xbasetile\",\"normal.night\",\"png8\",!0),base:a(g,\"basetile\",\"normal.day\",\"png8\",!1),basenight:a(g,\"basetile\",\"normal.night\",\"png8\",!0),map:a(g,\"maptile\",\"normal.day\",\"png8\",!1),mapnight:a(g,\"maptile\",\"normal.night\",\"png8\",!0),trafficincidents:k,transit:a(g,\"maptile\",\"normal.day.transit\",\"png8\",!1),\nlabels:a(g,\"labeltile\",\"normal.day\",\"png\",!1)},satellite:{xbase:a(h,\"xbasetile\",\"hybrid.day\",\"jpg\",!0),base:a(h,\"basetile\",\"hybrid.day\",\"jpg\",!0),map:a(h,\"maptile\",\"hybrid.day\",\"jpg\",!0),labels:a(h,\"labeltile\",\"hybrid.day\",\"png\",!0)},terrain:{xbase:a(h,\"xbasetile\",\"terrain.day\",\"jpg\",!1),base:a(h,\"basetile\",\"terrain.day\",\"jpg\",!1),map:a(h,\"maptile\",\"terrain.day\",\"jpg\",!1),labels:a(h,\"labeltile\",\"terrain.day\",\"png\",!1)}}}};U.prototype.createDefaultLayers=U.prototype.Mg;function Qn(a){var b=vn({},this.ra,a||{});if(!Qn.rb)throw new nc(Qn);if(!b.baseUrl&&!b.platformBaseUrl)throw new D(Qn,0,'either \"baseUrl\" or \"platformBaseUrl\" must be specified');this.A=(b.baseUrl?b.baseUrl:b.platformBaseUrl).clone();this.wa(b.baseUrl?a||{}:b)}u(\"H.service.RoutingService\",Qn);Qn.prototype.ra={subDomain:\"route.ls\",path:\"routing/7.2\"};Qn.CONFIG_KEY=\"routing\";Qn.prototype.wa=function(a){a.subDomain&&this.A.ua(a.subDomain);a.path&&this.A.ta(a.path)};Qn.prototype.Ja=function(){return this.A};\nQn.prototype.ia=function(a,b,c){return(new cf(\"application/json\",a,rd)).then(b,function(b){b.json().then(function(b){c(Error(\"[\"+b.details+\"] \"+a+\" request failed\"))},function(){c(Error(\"[\"+b.statusText+\"] \"+a+\" request failed\"))})})};Qn.prototype.rf=function(a,b,c){a=this.A.clone().Y(\"calculateroute.json\").K(a);this.ia(a,b,c)};Qn.prototype.calculateRoute=Qn.prototype.rf;Qn.prototype.Al=function(a,b,c){a=this.A.clone().ua(\"isoline\").Y(\"calculateisoline.json\").K(a);this.ia(a,b,c)};\nQn.prototype.calculateIsoline=Qn.prototype.Al;U.prototype.Sm=function(a){return this.ob(Qn,a)};U.prototype.getRoutingService=U.prototype.Sm;function Rn(a){var b=vn({},this.ra,a||{});if(!Rn.rb)throw new nc(Rn);if(!b.baseUrl&&!b.platformBaseUrl)throw new D(Rn,0,'either \"baseUrl\" or \"platformBaseUrl\" must be specified');this.A=(b.baseUrl?b.baseUrl:b.platformBaseUrl).clone();this.wa(b.baseUrl?a||{}:b);this.Fk=b.reverseSubDomain}u(\"H.service.GeocodingService\",Rn);Rn.prototype.ra={subDomain:\"geocoder.ls\",reverseSubDomain:\"reverse\",path:\"6.2\"};Rn.CONFIG_KEY=\"geocoding\";\nRn.prototype.wa=function(a){a.subDomain&&this.A.ua(a.subDomain);a.path&&this.A.ta(a.path)};Rn.prototype.Ja=function(){return this.A};Rn.prototype.ia=function(a,b,c){return(new cf(\"application/json\",a,rd)).then(b,function(b){b.json().then(function(b){c(Error(\"[\"+b.Details+\"] \"+a+\" request failed\"))},function(){c(Error(\"[\"+b.statusText+\"] \"+a+\" request failed\"))})})};Rn.prototype.Ql=function(a,b,c){a=this.A.clone().Y(\"geocode.json\").K(a);return this.ia(a,b,c)};Rn.prototype.geocode=Rn.prototype.Ql;\nRn.prototype.Yn=function(a,b,c){a=this.A.clone().Y(\"reversegeocode.json\").K(a);this.Fk&&a.ua(this.Fk);return this.ia(a,b,c)};Rn.prototype.reverseGeocode=Rn.prototype.Yn;Rn.prototype.search=function(a,b,c){a=this.A.clone().Y(\"search.json\").K(a);return this.ia(a,b,c)};Rn.prototype.search=Rn.prototype.search;U.prototype.lm=function(a){return this.ob(Rn,a)};U.prototype.getGeocodingService=U.prototype.lm;function Sn(a){var b=vn({},this.ra,a||{});if(!Sn.rb)throw new nc(Sn);if(!b.baseUrl&&!b.platformBaseUrl)throw new D(Sn,0,'either \"baseUrl\" or \"platformBaseUrl\" must be specified');this.A=(b.baseUrl?b.baseUrl:b.platformBaseUrl).clone();this.wa(b.baseUrl?a||{}:b)}u(\"H.service.PlacesService\",Sn);Sn.prototype.ra={subDomain:\"places.ls\",path:\"places/v1\"};Sn.CONFIG_KEY=\"places\";Sn.prototype.wa=function(a){a.subDomain&&this.A.ua(a.subDomain);a.path&&this.A.ta(a.path)};Sn.prototype.Ja=function(){return this.A};\nSn.EntryPoint={SEARCH:\"discover/search\",SUGGEST:\"suggest\",EXPLORE:\"discover/explore\",AROUND:\"discover/around\",HERE:\"discover/here\",CATEGORIES:\"categories/places\"};Sn.prototype.ia=function(a,b,c){return(new cf(\"application/json\",a,rd)).then(b,function(b){b.json().then(function(b){c(Error(\"[\"+b.message+\"] \"+a+\" request failed\"))},function(){c(Error(\"[\"+b.statusText+\"] \"+a+\" request failed\"))})})};Sn.prototype.request=function(a,b,c,d){a=this.A.clone().Y(a).K(b||{});return this.ia(a,c,d)};\nSn.prototype.request=Sn.prototype.request;Sn.prototype.search=function(a,b,c){return this.request(\"discover/search\",a,b,c)};Sn.prototype.search=Sn.prototype.search;Sn.prototype.jo=function(a,b,c){return this.request(\"suggest\",a,b,c)};Sn.prototype.suggest=Sn.prototype.jo;Sn.prototype.Ll=function(a,b,c){return this.request(\"discover/explore\",a,b,c)};Sn.prototype.explore=Sn.prototype.Ll;Sn.prototype.yl=function(a,b,c){return this.request(\"discover/around\",a,b,c)};Sn.prototype.around=Sn.prototype.yl;\nSn.prototype.gn=function(a,b,c){return this.request(\"discover/here\",a,b,c)};Sn.prototype.here=Sn.prototype.gn;Sn.prototype.Dl=function(a,b,c){return this.request(\"categories/places\",a,b,c)};Sn.prototype.categories=Sn.prototype.Dl;Sn.prototype.Nl=function(a,b,c,d){a=xn(a).K(d||{});return this.ia(a,b,c)};Sn.prototype.follow=Sn.prototype.Nl;U.prototype.Im=function(a){return this.ob(Sn,a)};U.prototype.getPlacesService=U.prototype.Im;function Tn(){this.a={}}Tn.prototype.Ab=function(a,b){var c=a+b,d;if(d=this.a[c])return d;a=Un.MARKER.replace(\"{{icon}}\",Vn[a]||Vn.OTHER);a=a.replace(\"{{color}}\",Wn[b]||Wn.BLOCKING);b={size:{w:26,h:33},anchor:{x:13,y:30},hitArea:new vh(wh.POLYGON,Xn.MARKER)};return this.a[c]=d=new Si(a,b)};\nvar Un={MARKER:'<svg width=\"26\" height=\"33\" enable-background=\"new 0 0 26 33\" viewBox=\"0 0 26 33\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"m26 33h-26v-33h26z\" fill=\"#8c8c8c\" opacity=\"0\"/><path d=\"m17 29.566c0 1.116-1.791 2.022-4 2.022s-4-.906-4-2.022c0-1.118 1.791-2.026 4-2.026s4 .908 4 2.026\" fill=\"#878787\" opacity=\".6\"/><path d=\"m1.795 17.971c-1.562-1.555-1.574-3.828-.028-5.655l8.343-10.021c.769-.895 1.795-1.384 2.894-1.384 1.117 0 2.197.521 2.889 1.394l8.338 10.014c1.588 1.854 1.578 4.022-.029 5.65l-11.202 11.202z\" fill=\"{{color}}\"/>{{icon}}</svg>'},Vn=\n{CONGESTION:'<path style=\"fill:#FFFFFF;\" d=\"M12.966,1.177c0.965,0,1.894,0.442,2.496,1.204l8.378,10.258c1.362,1.592,1.482,3.477,0,4.979L12.994,28.464L2.143,17.618c-1.381-1.375-1.38-3.348,0-4.979l8.314-10.258C11.174,1.547,12.085,1.177,12.966,1.177 M12.967,0.177L12.967,0.177c-1.247,0-2.408,0.551-3.269,1.552l-8.332,10.28c-1.711,2.022-1.688,4.567,0.07,6.317l10.85,10.845l0.707,0.707l0.707-0.707l10.847-10.846c1.784-1.807,1.803-4.292,0.053-6.337L16.237,1.748C15.462,0.769,14.236,0.177,12.967,0.177L12.967,0.177z M16.645,10.405l-2.025-2.22c-0.48-0.51-1.15-0.8-1.84-0.8H9.53c-0.69,0-1.36,0.29-1.84,0.8l-1.94,2.22c-0.39,0.63-0.59,1.35-0.59,2.09v1.64c0,0.69,0.56,1.25,1.25,1.25h1.44l0.255-0.539c0.204-0.431,0.456-0.837,0.753-1.21l0.962-1.211l0.83-0.9c0.32-0.35,0.72-0.63,1.15-0.82H8.23c-0.28,0-0.55-0.07-0.79-0.22l-0.28-0.17l1.27-1.45c0.28-0.31,0.68-0.48,1.1-0.48h3.25c0.42,0,0.82,0.17,1.1,0.48l1.354,1.54H16.645z M18.31,12.205c-0.35-0.37-0.81-0.63-1.3-0.74c-0.18-0.04-0.36-0.06-0.54-0.06h-3.24c-0.7,0-1.37,0.29-1.84,0.8l-1.13,1.22l-0.82,1c-0.38,0.63-0.59,1.35-0.59,2.09v1.64c0,0.69,0.56,1.25,1.25,1.25h1.75v-1h5.99v1h1.75c0.69,0,1.25-0.56,1.25-1.25v-1.64c0-0.74-0.2-1.46-0.59-2.09L18.31,12.205z M12.1,17.105h-1c-0.138,0-0.25-0.112-0.25-0.25v-1c0-0.138,0.112-0.25,0.25-0.25h1c0.138,0,0.25,0.112,0.25,0.25v1C12.35,16.993,12.238,17.105,12.1,17.105z M18.59,17.105h-1c-0.138,0-0.25-0.112-0.25-0.25v-1c0-0.138,0.112-0.25,0.25-0.25h1c0.138,0,0.25,0.112,0.25,0.25v1C18.84,16.993,18.728,17.105,18.59,17.105z M18.56,14.505c-0.24,0.15-0.51,0.22-0.79,0.22h-5.85c-0.28,0-0.55-0.07-0.78-0.22l-0.29-0.17l1.27-1.45c0.15-0.16,0.33-0.28,0.53-0.37c0.18-0.07,0.38-0.11,0.58-0.11h3.24c0.24,0,0.48,0.06,0.68,0.16c0.16,0.08,0.3,0.19,0.42,0.32l1.27,1.45L18.56,14.505z M8.42,13.03h-1c-0.138,0-0.25-0.112-0.25-0.25v-1c0-0.138,0.112-0.25,0.25-0.25h1c0.138,0,0.25,0.112,0.25,0.25v1C8.67,12.918,8.559,13.03,8.42,13.03z\"/>',\nROADWORKS:'<path d=\"m13.004 1.411c.964 0 1.894.441 2.496 1.204l8.346 10.023c1.363 1.592 1.482 3.477 0 4.979l-10.846 10.847-10.852-10.846c-1.381-1.375-1.379-3.348 0-4.979l8.346-10.023c.717-.835 1.628-1.205 2.51-1.205m0-1c-1.248 0-2.408.551-3.268 1.552l-8.356 10.035c-1.718 2.033-1.695 4.578.064 6.328l10.85 10.845.706.707.707-.707 10.846-10.846c1.784-1.808 1.803-4.293.053-6.337l-8.337-10.012c-.769-.973-1.996-1.565-3.265-1.565zm-.575 15.264c.018-.332-.13-.651-.394-.851l-2.945-2.235-.21.36c-.22.39-.41.78-.58 1.19l-.677 2.129-1.364 3.051h1.314l2.109-4.672 1.317 1.212.138 3.46h1.092zm6.16-1.327c-.401-.54-1.209-.539-1.609.001l-1.17 1.58-2.29-1.74-.139-4.054c-.011-.276-.134-.535-.342-.716l-.7-.61c-.185-.161-.422-.25-.667-.25h-1.885c-.335 0-.648.168-.833.447l-1.144 1.723 7.58 5.76-1.86 2.51c-.098.132-.004.32.161.32h6.648l1.142-1.077zm-8.79-2.989-.876-.665.841-1.018.965.043zm1.63 1.24.969-1.781.118 2.61zm2.76-5.79c-.64 0-1.16.52-1.16 1.16 0 .65.52 1.17 1.16 1.17s1.16-.52 1.16-1.17c0-.64-.52-1.16-1.16-1.16z\" fill=\"#fff\"/>',\nACCIDENT:'<path style=\"fill:#FFFFFF;\" d=\"M12.998,1.091c0.964,0,1.894,0.442,2.496,1.204l8.346,10.344c1.363,1.592,1.482,3.477,0,4.979L12.994,28.465L2.143,17.618c-1.381-1.375-1.379-3.348,0-4.979l8.346-10.344C11.205,1.462,12.115,1.091,12.998,1.091 M12.998,0.091L12.998,0.091c-1.248,0-2.408,0.551-3.269,1.552L1.364,12.011c-1.708,2.021-1.685,4.566,0.073,6.316l10.85,10.845l0.707,0.707l0.707-0.707l10.846-10.846c1.784-1.808,1.803-4.293,0.053-6.337l-8.327-10.32C15.494,0.684,14.268,0.091,12.998,0.091L12.998,0.091z M7.83,18.982l-3.309-1.855l0.945,1.855H7.83z M16.111,19h3.942l1.596-2L16.111,19z M10.512,20.064l1.021-1.021l1.632,0.076c0.329,0.018,0.651-0.022,0.963-0.123c0.626-0.206,1.122-0.76,1.288-1.44l0.264-1.089l2.066-0.93c0.373-0.17,0.673-0.42,0.861-0.731c0.275-0.449,0.405-0.97,0.369-1.498L18.9,11.676l1.021-1.021l-0.724-0.724l-0.427,0.427l-0.121-0.364c-0.201-0.603-0.54-1.151-0.989-1.6l-1.159-1.159c-0.5-0.5-1.31-0.5-1.809,0l-1.267,1.267l0.724,0.724l-5.066,5.066l-0.724-0.724l-1.267,1.267c-0.5,0.5-0.5,1.31,0,1.809l1.159,1.159c0.449,0.449,0.997,0.788,1.6,0.989l0.364,0.121l-0.427,0.427L10.512,20.064z M14.901,10.349l0.732-0.732c0.098-0.098,0.256-0.098,0.354,0l0.732,0.732c0.098,0.098,0.098,0.256,0,0.354l-0.732,0.732c-0.098,0.098-0.256,0.098-0.354,0l-0.732-0.732C14.803,10.604,14.803,10.446,14.901,10.349z M9.472,15.777l0.732-0.732c0.098-0.098,0.256-0.098,0.354,0l0.732,0.732c0.098,0.098,0.098,0.256,0,0.354l-0.732,0.732c-0.098,0.098-0.256,0.098-0.354,0L9.472,16.13C9.375,16.033,9.375,15.874,9.472,15.777z M11.391,17.615c0.069-0.271,0.206-0.518,0.405-0.717l4.961-4.961c0.195-0.195,0.445-0.337,0.717-0.405l0.344-0.083l0.137,1.925c0.022,0.318-0.058,0.63-0.221,0.901c-0.101,0.166-0.279,0.271-0.409,0.329L14.8,15.74l-0.38,1.574c-0.083,0.344-0.318,0.615-0.612,0.713c-0.188,0.058-0.38,0.083-0.579,0.072l-1.925-0.138L11.391,17.615z\"/>',\nOTHER:'<path style=\"fill:#FFFFFF;\" d=\"M13.004,1.411c0.964,0,1.894,0.441,2.496,1.204l8.346,10.023c1.363,1.592,1.482,3.477,0,4.979L13,28.465L2.148,17.618c-1.381-1.375-1.379-3.348,0-4.979l8.346-10.023C11.211,1.781,12.122,1.411,13.004,1.411 M13.004,0.411L13.004,0.411c-1.248,0-2.408,0.551-3.268,1.552L1.38,11.998c-1.718,2.033-1.694,4.579,0.064,6.328l10.85,10.845L13,29.878l0.707-0.707l10.846-10.846c1.784-1.808,1.803-4.293,0.053-6.337L16.269,1.976C15.5,1.003,14.273,0.411,13.004,0.411L13.004,0.411z M14.716,20.139c0,0.947-0.758,1.724-1.724,1.724c-0.947,0-1.704-0.777-1.704-1.724c0-0.928,0.757-1.704,1.704-1.704C13.958,18.435,14.716,19.211,14.716,20.139z M14.204,16.33H11.78l-0.537-8.533h3.5L14.204,16.33z\"/>'},\nWn={BLOCKING:\"#323232\",VERYHIGH:\"#d5232f\",HIGH:\"#ffa100\"},Xn={MARKER:[24.1,17.8,14.2,28.42,16.8,29.4,12.8,31.4,8.79,29.4,11.23,28.42,1.7,17.8,1.7,12.1,10,1.9,12.9,.498,15.8,1.9,24.1,12.1,24.1,17.8]};function Yn(a,b,c){c=c?c:{};c.criticality||(c.criticality=\"major,critical\");C(a,Zn,Yn,0);Rm.call(this,{max:20,min:8,requestData:A(this.$,this)});this.b=new Tn;this.D=a;this.Da=c;this.reload=A(this.reload,this);this.o=setInterval(this.reload,b||18E4)}w(Yn,Rm);u(\"H.service.traffic.incidents.Provider\",Yn);Yn.prototype.a={minor:\"HIGH\",\"low impact\":\"HIGH\",major:\"VERYHIGH\",critical:\"BLOCKING\"};\nYn.prototype.$=function(a,b,c,d,e){var f=this,g=this.a,h=this.b;return this.D.requestIncidentsByTile(a,b,c,function(a){var b=[];a=a.TRAFFIC_ITEMS;var c;if(a)for(a=a.TRAFFIC_ITEM,c=a.length;c--;){var e=a[c];var k=e.TRAFFIC_ITEM_TYPE_DESC;switch(k){case \"ACCIDENT\":case \"CONGESTION\":var t=k;break;case \"CONSTRUCTION\":t=\"ROADWORKS\";break;default:t=\"OTHER\"}t=h.Ab(t,g[e.CRITICALITY.DESCRIPTION]);k=e.LOCATION.GEOLOC.ORIGIN;k=new Om({lat:k.LATITUDE,lng:k.LONGITUDE},{provider:f,icon:t});k.setData(e);b.push(k)}d(b)},\ne,this.Da)};Yn.prototype.F=function(){Rm.prototype.F.call(this);clearInterval(this.o)};function $n(a){function b(b){d.contains(e)&&d.removeChild(e);l&&clearTimeout(l);delete $n.a[f];b&&a.pj&&a.pj.call(k,b)}if(!a.url||!a.Ig)throw Error('Parameter \"options\" must specify at least a URL and a callback.');if(\"function\"!==typeof a.Ig)throw Error(\"Parameters options.callback must be a function\");var c=a.Do||document;var d=c.getElementsByTagName(\"head\")[0];var e=c.createElement(\"script\");c=a.url instanceof T?a.url:xn(a.url,a.Co);var f=$n.b++;var g=a.Bl||\"callback\";var h=a.Ig;var k={};var l=\nnull;k.id=f;k.cancel=function(){b(\"cancelled\")};0!==a.timeout&&(l=y.setTimeout(function(){b(\"timeout\")},a.timeout||3E4));$n.a[f]=function(a){b();h.call(k,a)};e.type=\"text/javascript\";e.src=c.toString()+(c.Ij()?\"&\":\"?\")+g+\"=\"+(a.Eo?\"H.service.jsonp.handleResponse(\"+f+\")\":encodeURI(\"H.service.jsonp.handleResponse(\"+f+\")\"));d.appendChild(e);return k}u(\"H.service.jsonp\",$n);$n.en=function(a){return(a=$n.a[a])?a:function(){}};$n.handleResponse=$n.en;$n.b=0;$n.a={};function Zn(a){var b=vn({},this.ra,a||{});if(!Zn.rb)throw new nc(Zn);if(!b.baseUrl&&!b.platformBaseUrl)throw new D(Zn,0,'either \"baseUrl\" or \"platformBaseUrl\" must be specified');this.A=(b.baseUrl?b.baseUrl:b.platformBaseUrl).clone();this.Zh=b.platformBaseUrl;this.wa(b.baseUrl?a||{}:b);this.Cl=b.callbackKey}u(\"H.service.traffic.Service\",Zn);Zn.prototype.ra={subDomain:\"traffic.ls\",path:\"traffic/6.1\",callbackKey:\"jsoncallback\"};Zn.CONFIG_KEY=\"traffic\";\nZn.prototype.wa=function(a){a.subDomain&&this.A.ua(a.subDomain);a.path&&this.A.ta(a.path)};Zn.prototype.Ja=function(){return this.A};Zn.prototype.dj=function(a){return new Dk(new ao(this,void 0,a),{max:22})};Zn.prototype.createFlowLayer=Zn.prototype.dj;Zn.prototype.ej=function(a){return new Sm(new Yn(this,void 0,a))};Zn.prototype.createIncidentsLayer=Zn.prototype.ej;function bo(a,b,c,d){return $n({url:b,Ig:c,pj:function(a){d(Error(\"[\"+a+\"] \"+b+\" request failed\"))},Bl:a.Cl})}\nZn.prototype.Wn=function(a,b,c){a=this.A.clone().Y(\"incidents.json\").K(a);return bo(this,a,b,c)};Zn.prototype.requestIncidents=Zn.prototype.Wn;Zn.prototype.Vn=function(a,b,c,d,e,f){a=this.A.clone().Y([\"flow/json\",c,a,b].join(\"/\")).K(f||{});return bo(this,a,d,e)};Zn.prototype.requestFlowByTile=Zn.prototype.Vn;Zn.prototype.Xn=function(a,b,c,d,e,f){a=this.A.clone().Y([\"incidents/json\",c,a,b].join(\"/\")).K(f||{});return bo(this,a,d,e)};Zn.prototype.requestIncidentsByTile=Zn.prototype.Xn;\nZn.prototype.mh=function(){return En(this.Zh).Y(\"traffic/flow.yaml\")};U.prototype.Bj=function(a){return this.ob(Zn,a)};U.prototype.getTrafficService=U.prototype.Bj;var co=\"A21 A22 F01 F02 F08 F04 F05 F07 F03 F06 A2F F13 A25 A2C F12 D1B F1B A27 E12 A3A A24 A3D A3F F1F F25 F2C E32 A33 F29 D26 D36 F26 D0F F0F F2B E0C D3A A45 D23 D11 F2E F19 F14 F39 A4A A4B A5C D38 F2A F1A D0A F1C A48 D25 D1D F32 A46 A3E D24 E1C E32 A5F D2E D22 D0A\".split(\" \");function eo(a,b){var c={};this.a=a;Pa(c,b||c);zj.call(this,c);this.bg={};a=this.Pb(yg.SPATIAL);a.update(a.a+1,vg.ADD)}w(eo,zj);u(\"H.service.remote.ObjectProvider\",eo);eo.prototype.F=function(){zj.prototype.F.call(this)};var fo=[];eo.prototype.Ic=function(){return fo};eo.prototype.requestMarkers=eo.prototype.Ic;eo.prototype.Hc=function(){return fo};eo.prototype.requestDomMarkers=eo.prototype.Hc;eo.prototype.ud=function(){return fo};eo.prototype.requestOverlays=eo.prototype.ud;\neo.prototype.Ub=Re;eo.prototype.providesMarkers=eo.prototype.Ub;eo.prototype.Tb=Re;eo.prototype.providesDomMarkers=eo.prototype.Tb;eo.prototype.Gc=Re;eo.prototype.providesSpatials=eo.prototype.Gc;eo.prototype.eg=function(){return fo};eo.prototype.requestSpatials=eo.prototype.eg;function go(a){return a.Ac(!0)}eo.prototype.fg=function(a,b){a=ho(this,a,io);b&&(a=a.filter(go));return a};eo.prototype.requestSpatialsByTile=eo.prototype.fg;\nfunction ho(a,b,c){var d=b.j&&b.j[c],e;!d&&(e=b.m)&&(delete b.m,(b.j=a=a.a.parse(a,b,e))&&(d=a[c]));return d||fo}eo.prototype.T=function(a){var b=a.eb();if(this.bg[b])throw new nc(this.T,\"Remote object \"+b+\" already added\");return this.bg[b]=a};eo.prototype.La=function(a){delete this.bg[a.eb()]};var io=\"spatials\";function ao(a,b,c){ao.l.constructor.call(this,{min:jo,max:ko});C(a,Zn,ao,0);this.b=a;this.Da=c||lo;this.Da.responseattributes=\"sh,fc\";this.a=setInterval(A(this.reload,this),b||18E4);this.yd(new fj(a.mh().toString()),!0)}w(ao,Q);u(\"H.service.traffic.flow.Provider\",ao);ao.prototype.Ia=function(){return this.Eb()};ao.prototype.getStyle=ao.prototype.Ia;ao.prototype.fd=function(a){un(a,\"GeoJSONTileSource\");this.yd(a)};ao.prototype.setStyle=ao.prototype.fd;var lo={locationreferences:\"tmc,shp\"};\nao.prototype.s=function(){ao.l.s.call(this);clearInterval(this.a)};ao.prototype.Pa=function(a,b,c,d,e){return this.b.requestFlowByTile(a,b,c,function(a){a.type&&-1!==a.type.indexOf(\"Error\")?e(a.Details):d(a)},e,this.Da)};ao.prototype.requestInternal=ao.prototype.Pa;\nao.prototype.jd=function(a,b,c,d,e){var f,g,h,k,l={type:\"FeatureCollection\",features:[]},m;var p=d.RWS.length;for(f=0;f<p;f++){var q=d.RWS[f];var t=q.RW;var v=t.length;var x=-1!==co.indexOf(q.EXTENDED_COUNTRY_CODE+q.EBU_COUNTRY_CODE);for(q=0;q<v;q++){var E=t[q].FIS;var O=E.length;for(E=0;E<O;E++){var Y=t[q].FIS[E].FI;var Ga=Y.length;for(g=0;g<Ga;g++){var pa=Y[g];var Ma=[];var ja=pa.CF[0];var Wb=!!ja.SSS;var ob={type:\"Feature\",properties:ja,geometry:{type:\"MultiLineString\",coordinates:Ma}};ob.properties.LHT=\nx;pa.SHP.length&&(ob.properties.FC=pa.SHP[0].FC);Wb&&(m=[]);for(ja=0;ja<pa.SHP.length;ja++){var Uc=pa.SHP[ja].value;var ci=Uc.length;for(h=0;h<ci;h++){var ye=Wb?m:void 0,Eb=new rn(Uc[h].trim()),di=mo,ei=no,Kf=[],Ed={};for(Eb.f();-1!==(k=Eb.a());)k===di?(Ed.lat=+String.fromCharCode.apply(ao,Eb.b()),Eb.next(),Eb.f()):k===ei?(Ed.lng=+String.fromCharCode.apply(ao,Eb.b()),Kf.push([Ed.lng,Ed.lat]),ye&&ye.push(Jf(Ed)),Ed=[],Eb.next(),Eb.f()):Eb.next();Ed.lng=+String.fromCharCode.apply(ao,Eb.b());Kf.push([Ed.lng,\nEd.lat]);ye&&ye.push(Jf(Ed));k=Kf;Ma.push(k)}}l.features.push(ob)}}}}return ao.l.jd.call(this,a,b,c,l,e)};ao.prototype.createTileInternal=ao.prototype.jd;var ko=21,jo=10,no=32,mo=44;function oo(){}u(\"H.service.extension.dataView.ITable\",oo);oo.prototype.Pd=function(){};oo.prototype.getMeta=oo.prototype.Pd;oo.prototype.Rd=function(){};oo.prototype.getRowCount=oo.prototype.Rd;oo.prototype.yc=function(){};oo.prototype.getRow=oo.prototype.yc;oo.prototype.Ta=function(){};oo.prototype.getColumnNames=oo.prototype.Ta;oo.prototype.Ce=function(){};oo.prototype.getColumn=oo.prototype.Ce;oo.prototype.va=function(){};oo.prototype.getCell=oo.prototype.va;oo.prototype.concat=function(){};\noo.prototype.concat=oo.prototype.concat;function po(){}u(\"H.service.extension.dataView.IRow\",po);po.prototype.Ta=function(){};po.prototype.getColumnNames=po.prototype.Ta;po.prototype.va=function(){};po.prototype.getCell=po.prototype.va;po.prototype.nd=function(){};po.prototype.getTable=po.prototype.nd;function qo(a,b){this.a=a;this.b=b}u(\"H.service.extension.dataView.ObjRow\",qo);qo.prototype.Ta=function(){return this.a.Ta()};qo.prototype.getColumnNames=qo.prototype.Ta;qo.prototype.va=function(a){return this.a.va(this.b,a)};qo.prototype.getCell=qo.prototype.va;qo.prototype.nd=function(){return this.a};qo.prototype.getTable=qo.prototype.nd;function ro(){}u(\"H.service.extension.dataView.IColumn\",ro);ro.prototype.va=function(){};ro.prototype.getCell=ro.prototype.va;function so(a,b){this.b=a;this.a=b}u(\"H.service.extension.dataView.ObjColumn\",so);so.prototype.va=function(a){return this.b.va(a,this.a)};so.prototype.getCell=so.prototype.va;function to(a,b,c){var d;b=b||(a&&a.length?Object.keys(a[0]):B);this.Hb=a;if(b)for(this.Fd=b,this.Jg=a=Fb(),d=b.length;d--;)a[b[d]]=!0;c!==B&&(this.Ph=c)}u(\"H.service.extension.dataView.ObjTable\",to);n=to.prototype;n.Ph=B;n.Hb=B;n.Fd=B;n.Jg=B;n.Pd=function(){return this.Ph};to.prototype.getMeta=to.prototype.Pd;to.prototype.Rd=function(){return this.Hb?this.Hb.length:0};to.prototype.getRowCount=to.prototype.Rd;to.prototype.yc=function(a){var b=this.Hb;return b&&b[a]?new qo(this,a):B};\nto.prototype.getRow=to.prototype.yc;to.prototype.Ta=function(){return this.Fd||Te};to.prototype.getColumnNames=to.prototype.Ta;to.prototype.Ce=function(a){return this.Jg[a]?new so(this,a):B};to.prototype.getColumn=to.prototype.Ce;to.prototype.va=function(a,b){var c=this.Hb;return(a=c&&this.Jg[b]&&c[a])&&a[b]};to.prototype.getCell=to.prototype.va;\nto.prototype.concat=function(){var a=arguments.length,b,c=this.Fd,d=\"\"+this.Fd,e=(this.Hb||[]).slice();for(b=0;b<a;b++){var f=arguments[b];if(!(f instanceof to))throw new D(this.concat,b);if(f.Hb){if(c&&\"\"+f.Fd!==d)throw new D(this.concat,b,\"Incompatible columns!\");e=e.concat(f.Hb)}}return new to(e,this.Fd,this.Ph)};to.prototype.concat=to.prototype.concat;function uo(a,b){a.Hb?a.Hb.push(b):a.Hb=[b];return a.Hb.length-1};function vo(a){var b=wo;if(!a||!ra(Me(a.layerId,a.layer))||!Tb(a.level)||Lb(a.rowFilter)&&!r(a.rowFilter)||Lb(a.rowFilterContext)&&!wa(a.rowFilterContext))throw new D(b,1,Lb(\"invalid layer config\")?\"invalid layer config\":a);};function xo(a,b,c,d){d=d||yo;this.Xe={};d.provider=a;this.invalidate=vc;xo.l.constructor.call(this,b,d);delete this.invalidate;c&&(this.b=c);this.Aa(vg.ADD)}w(xo,Kg);u(\"H.service.remote.Spatial\",xo);var yo={};xo.prototype.eb=function(){return this.b||Kg.prototype.eb.call(this)};xo.prototype.getId=xo.prototype.eb;xo.prototype.hg=Function();xo.prototype.retain=xo.prototype.hg;xo.prototype.release=Function();xo.prototype.release=xo.prototype.release;function zo(a,b){this.a=a;b&&(this.b=b)}\nvar Ao=new zo([]);xo.prototype.Nd=function(a){return(this.Xe[a.key]||Ao).a};xo.prototype.getGeometriesForTile=xo.prototype.Nd;xo.prototype.gh=function(a){return(this.Xe[a.key]||Ao).b};xo.prototype.getLabels=xo.prototype.gh;function Bo(a,b,c){a.Xe[b.key]=new zo(c,void 0)};function Co(a,b,c,d,e,f){Do(Co,1,b,c);Do(Co,2,d,e);(this.f=a.length)?(this.o=a,this.W=b,this.j=c,this.b=0,this.c=A(this.c,this),this.u=d,this.m=e,this.a=Fb(),Pa(this.a,Eo,f||{}),this.g={},y.setTimeout(this.c,0)):b(Te,!0)}var Eo={duration:100,Sl:\"geometry\",Rl:\"WKT\",Zn:\"searchAttributes\",hj:B};\nCo.prototype.c=function(){var a=[];var b=!1;for(var c=Oj(),d;this.b<this.f;){var e=this.o[this.b];b=e.attributes;d=e.layerId||this.a.hj;e.distance&&(b[this.a.Zn]={nearest:new I(e.nearestLat,e.nearestLon),distance:e.distance});if(e=e[this.a.Sl]){try{var f=Wm(new rn(e))}catch(g){this.j(new y.Error(g.message));b=!0;break}b[this.a.Rl]=f}(e=this.g[d])||(e=this.g[d]=this.u({layerId:d,columnNames:Object.keys(b)}));b=this.m(e,b);a.push(b);this.b++;if((b=this.b===this.f)||Oj()-c>=this.a.duration){this.W(a,\nb);break}}b?this.g=z:this.i=y.setTimeout(this.c,0)};Co.prototype.cancel=function(){y.clearTimeout(this.i);this.b<this.f&&this.j(new y.Error(\"parsing canceled\"))};Co.prototype.cancel=Co.prototype.cancel;function Do(a,b,c,d){if(!r(c))throw new D(a,b,\"has invalid type\");if(!r(d))throw new D(a,b+1,\"has invalid type\");};function Fo(a,b,c){var d=8===a;this.b=b;this.c=c||vc;(this.a=4===a||d)?this.j=d:this.g=1===a;this.f=this.a?\"$HProjGeometry\":\"geometry\"}\nFo.prototype.parse=function(a,b,c){var d,e,f={},g=[],h,k;var l=0;for(h=c.length;l<h;l++){var m=c[l];var p=m.Rows;if(m=p.length){var q=Object.keys(p[0]).filter(function(a){return\"geometry\"!==a&&\"$HProjGeometry\"!==a});q=new to(p,q);for(k=0;k<m;k++){var t=p[k];if(e=t[this.f]){if(delete t[this.f],t=q.yc(k))try{this.a?d=Go(this,a,b,t,e):d=Ho(this,a,t,e.path),d.ba(a),g.push(d)}catch(v){this.c(v.message)}}else this.c(\"Layer must contain geometries\")}}}f[this.a?\"spatials\":this.g?\"markers\":\"domMarkers\"]=\ng;return f};function Go(a,b,c,d,e){var f=[],g=e.paths,h=g.length,k=0,l=a.b&&a.b(d);for(a=new xo(b,a.j,B,{style:l||a.i,data:d});k!==h;)f.push(Io(g[k++]));Bo(a,c,[new $g(f,e.interiorsIndex,e.outlinesIndex)]);return a}function Ho(a,b,c,d){d=new I(d[0],d[1]);var e=a.b&&a.b(c);a.g?(a={icon:e,data:c,provider:b},a=new Om(d,a)):(a={icon:e,data:c,provider:b},a=new Ah(d,a));return a}function Io(a){for(var b=0,c=a.length,d=[];b<c;)d.push(new H(a[b++],a[b++]));return d};function Jo(a){a=a||{};var b=a.tileCacheSize||1024,c=a.resultType,d=a.styleCallback;Lb(a.min)||(a.min=12);Jo.l.constructor.call(this,a);if(-1===Ko.indexOf(c))throw new D(Jo,2,\"invalid resultType\");this.a=c;if(d&&!r(d))throw new D(Jo,2,\"invalid style callback\");this.jb=d;this.ca=a.pixelRatio||Fe();this.b=A(this.b,this);this.v(new Uj(b,A(this.cc,this)));this.createTileInternal=4===c||8===c?A(this.X,this):A(this.$,this)}w(Jo,Q);u(\"H.service.extension.TileProvider\",Jo);Jo.prototype.o=!1;\nJo.prototype.m=function(){return Jo.l.m.call(this)|64};Jo.prototype.ib=function(a,b,c,d){return this.o?Jo.l.ib.call(this,a,b,c,d):B};Jo.prototype.requestTile=Jo.prototype.ib;Jo.prototype.b=function(a){this.dispatchEvent(new Gc(\"error\",ra(a)?a:a+\"\",this))};Jo.prototype.Ub=function(){return 1===this.a};Jo.prototype.providesMarkers=Jo.prototype.Ub;Jo.prototype.Tb=function(){return 2===this.a};Jo.prototype.providesDomMarkers=Jo.prototype.Tb;Jo.prototype.Gc=function(){return 4===this.a||8===this.a};\nJo.prototype.providesSpatials=Jo.prototype.Gc;function Lo(a){var b=a.Ya;b||(a.B||(a.B=a.D(a.a,a.jb,a.b)),b=a.Ya=new eo(a.B),b.ba(a),b.addEventListener(a.i.Fa,A(a.qc,a)),b.jb=!0);return b}Jo.prototype.$=function(a,b,c,d){var e=this.getTileKey(a,b,c);e=this.Ob().get(e);var f=2==this.a,g=[],h=Lo(this);e?e.valid=!0:(a=e=new kk(a,b,c,z),delete a.j,a.m=d);d=f?ho(h,e,\"domMarkers\"):ho(h,e,\"markers\");for(b=d.length;b--;)a=d[b],a.Gi=e,(f||1===a.Ab().getState())&&g.push(a);e.data=g;return e};\nJo.prototype.qc=function(a){if(a=a.target.Gi)a.valid=!1};Jo.prototype.co=function(a){this.G=!!a};Jo.prototype.setTileCanvasRendering=Jo.prototype.co;Jo.prototype.G=!0;Jo.prototype.X=function(a,b,c,d){var e=Lo(this),f=this.getTileKey(a,b,c),g=this.tileSize,h=this.Ob().get(f);h||(a=h=new ok(f,a,b,c,g,this.ca,c,e),delete a.j,a.m=d);this.G?(d=Dn.pop(g),h.V(d)||Dn.push(d,g)):uk(h);return h};\nJo.prototype.cc=function(a,b){var c;if(4===this.a||8===this.a){a=b.Cb();for(c=a.length;c--;)delete a[c].Xe[b.key];b.data&&(Dn.push(b.$f(),this.tileSize),b.ag())}else for(a=b.data,c=a.length;c--;)delete a[c].Gi};Jo.prototype.s=function(){Jo.l.s.call(this);Lo(this).F()};var Mo={MARKER:1,DOM_MARKER:2,POLYLINE:4,POLYGON:8};Jo.ResultType=Mo;var Ko=[1,2,4,8];function wo(a,b,c){var d=this,e=b&&b.rowFilter,f=c.resultType;wo.l.constructor.call(this,c);C(a,No,wo,0);vo(b);e?(c=La(b),c.rowFilter=e.toString()):c=La(b);delete c.layer;c.layerId=Me(b.layerId,b.layer);(new yf).a(\"pde\",\"H.service.extension.worker.processor\");a=a.Ja().clone().Y(Oo+\".\"+Po).K({meta:1});(new Bf(\"pde\",{message:[this.uid,0,{tileSize:this.tileSize,projected:!0,onlyOutline:4===f,serverUrl:a.toString(),layerConfigs:[c]}]})).then(function(){d.o=!0;sj(d)},this.b)}w(wo,Jo);\nu(\"H.service.extension.platformData.TileProvider\",wo);wo.prototype.D=function(a,b,c){a=new Fo(a,b,c);a.i=Qo;return a};var Qo=new Cg({strokeColor:\"transparent\",fillColor:\"transparent\",lineWidth:0,lineJoin:\"round\",lineCap:\"round\"});\nwo.prototype.Pa=function(a,b,c,d,e){var f=this,g=this.getTileKey(a,b,c),h;g=this.Ob().get(g);var k={cancel:vc},l=!0,m=this.a;g&&(4===m||8===m?g.Xd()||(d(Dn.pop(this.tileSize),null),l=!1):(d(z),l=!1));if(l){var p=Bn.setTimeout(function(){h=new Bf(\"pde\",{message:[f.uid,1,[a,b,c]]});h.then(d,e)},500);k.cancel=function(){h?h.cancel():Bn.clearTimeout(p)}}return k};wo.prototype.requestInternal=wo.prototype.Pa;wo.prototype.s=function(){wo.l.s.call(this);new Bf(\"pde\",{message:[this.uid,3]})};\nwo.ResultType=Mo;function Ro(a){this.a=a}Ro.prototype.cancel=function(){for(var a=this.a,b=a.length;b--;)a[b].cancel();a.length=0};function No(a){var b=vn({},this.ra,a||{});if(!No.rb)throw new nc(No);if(!b.baseUrl&&!b.platformBaseUrl)throw new D(No,0,'either \"baseUrl\" or \"platformBaseUrl\" must be specified');this.A=(b.baseUrl?b.baseUrl:b.platformBaseUrl).clone();this.wa(b.baseUrl?a||{}:b)}u(\"H.service.extension.platformData.Service\",No);No.prototype.ra={subDomain:\"s.fleet.ls\",path:\"1\"};No.CONFIG_KEY=\"platformData\";No.prototype.wa=function(a){a.subDomain&&this.A.ua(a.subDomain);a.path&&this.A.ta(a.path)};\nNo.prototype.Ja=function(){return this.A};No.prototype.request=function(a,b,c,d,e){var f=\"text/plain\";if(!a)throw new D(this.request,0,a);if(!b)throw new D(this.request,1,b);if(!d)throw new D(this.request,3,d);if(!e)throw new D(this.request,4,e);var g=this.A.clone().Y(a+\".\"+b).K(c);b===So.JSON&&(f=\"application/json\");a=new cf(f,g,rd);a.then(d,function(a){a.json().then(function(a){e(Error(\"[\"+a.message+\"] \"+g+\" request failed\"))},function(){e(Error(\"[\"+a.statusText+\"] \"+g+\" request failed\"))})});return a};\nNo.prototype.request=No.prototype.request;var Oo=\"tiles\";No.EntryPoint={DOC_ATTRIBUTES:\"doc/attributes\",DOC_LAYER:\"doc/layer\",DOC_LAYERS:\"doc/layers\",DOC_MAPS:\"doc/maps\",DOC_INDEXES:\"doc/indexes\",SEARCH_BBOX:\"search/bbox\",SEARCH_CORRIDOR:\"search/corridor\",SEARCH_PROXIMITY:\"search/proximity\",SEARCH_QUADKEY:\"search/quadkey\",SERVICE_CONFIGURATION:\"serviceconfiguration\",STATIC:\"static\",TILE:\"tile\",TILES:Oo,FILE:\"file\",INDEX:\"index\"};var Po=\"json\",So={TXT:\"txt\",JSON:Po,HTML:\"html\",BIN:\"bin\"};\nNo.EntryPointType=So;No.prototype.sc=function(a,b){var c=b&&b.resultType;a=new wo(this,a,b);var d;1==c||2===c?d=new Sm(a):d=new Dk(a);return d};No.prototype.createTileLayer=No.prototype.sc;No.prototype.wd=function(a,b,c,d){var e=[],f,g=b.layer_id||b.layer_ids;a=this.request(a,Po,b,function(a){f=new Co(a.geometries,c,d,function(a){return new to([],a.columnNames,a)},function(a,b){return a.yc(uo(a,b))},{hj:g});e.push(f)},function(a){d(new y.Error(a))});e.push(a);return new Ro(e)};\nfunction To(a,b,c){if(!Qb(a))throw new D(c,0,\"has invalid type\");if(!Qb(b))throw new D(c,1,\"has invalid type\");if(a.length!==b.length||!a.length)throw new D(c,1,\"specify one key attribute for each given layer id in the same order\");}\nNo.prototype.Jc=function(a,b,c,d,e,f){function g(a,b){b&&h--;d(a,!h)}var h,k=[];To(a,b,this.Jc);Do(this.Jc,3,d,e);C(c,J,this.Jc,2);c={bbox:c.oa+\",\"+c.aa+\";\"+c.ka+\",\"+c.ea};f&&Pa(c,f);a=c.layer_id?[c.layer_id]:a;f=0;for(h=a.length;f<h;f++)c.layer_id=a[f],c.key_attribute=b[f],k.push(this.wd(\"search/bbox\",c,g,e));return new Ro(k)};No.prototype.searchByBoundingBox=No.prototype.Jc;\nNo.prototype.Wb=function(a,b,c,d,e,f,g){To(a,b,this.Wb);C(c,I,this.Wb,2,\"has invalid type\");if(!Tb(d))throw new D(this.Wb,3,\"has invalid type\");Do(this.Wb,4,e,f);a={layer_ids:a.join(\",\"),key_attributes:b.join(\",\"),proximity:c.lat+\",\"+c.lng+\",\"+d};g&&Pa(a,g);return this.wd(\"search/proximity\",a,e,f)};No.prototype.searchByProximity=No.prototype.Wb;\nNo.prototype.Vb=function(a,b,c,d,e,f,g){var h=\"\";To(a,b,this.Vb);if(!ra(c)&&!C(c,K))throw new D(this.Vb,1,\"has invalid type\");if(!Tb(d))throw new D(this.Vb,2,\"has invalid type\");Do(this.Vb,4,e,f);a={layer_ids:a.join(\",\"),key_attributes:b.join(\",\"),radius:d};if(ra(c))a.route_id=c;else{d=c.qa;c=0;for(b=d.length;c<b;c+=3)h+=d[c]+\",\"+d[c+1],c<b-3&&(h+=\";\");a.corridor=h}g&&Pa(a,g);return this.wd(\"search/corridor\",a,e,f)};No.prototype.searchByCorridor=No.prototype.Vb;\nU.prototype.Jm=function(a){return this.ob(No,a)};U.prototype.getPlatformDataService=U.prototype.Jm;function Uo(a){var b=vn({},this.ra,a||{});if(!Uo.rb)throw new nc(Uo);if(!b.baseUrl&&!b.platformBaseUrl)throw new D(Uo,0,'either \"baseUrl\" or \"platformBaseUrl\" must be specified');this.A=(b.baseUrl?b.baseUrl:b.platformBaseUrl).clone();this.wa(b.baseUrl?a||{}:b)}u(\"H.service.extension.geofencing.Service\",Uo);Uo.prototype.ra={subDomain:\"gfe\",path:\"2\"};Uo.CONFIG_KEY=\"geofencing\";Uo.prototype.wa=function(a){a.subDomain&&this.A.ua(a.subDomain);a.path&&this.A.ta(a.path)};Uo.prototype.Ja=function(){return this.A};\nUo.prototype.request=function(a,b,c,d){if(!a)throw new D(this.request,0,a);if(!r(c))throw new TypeError(\"onResult must be a function\");if(!r(d))throw new TypeError(\"onError must be a function\");var e=this.A.clone().Y(a+\".json\").K(b);a=new cf(\"application/json\",e,rd);a.then(c,function(a){a.json().then(function(a){d(Error(\"[\"+(a.message||a.response_code)+\"] \"+e+\" request failed\"))},function(){d(Error(\"[\"+a.statusText+\"] \"+e+\" request failed\"))})});return a};Uo.prototype.request=Uo.prototype.request;\nUo.EntryPoint={SEARCH_PROXIMITY:\"search/proximity\"};U.prototype.mm=function(a){return this.ob(Uo,a)};U.prototype.getGeofencingService=U.prototype.mm;u(\"H.service.extension.customLocation.Permission\",{READ:\"read\",WRITE:\"write\",EXPORT:\"export\"});u(\"H.service.extension.customLocation.Storage\",{READONLY:\"readonly\",UPDATABLE:\"updatable\"});function Vo(a){var b=Wo;if(!a||!ra(a.layerId)||Lb(a.rowFilter)&&!r(a.rowFilter)||Lb(a.rowFilterContext)&&!wa(a.rowFilterContext))throw new D(b,1,Lb(\"invalid layer config\")?\"invalid layer config\":a);}function Xo(a){return ra(a)&&/^[A-Z][A-Z0-9_]*$/.test(a)}function Yo(a){for(var b=a&&a.length,c=2<=b&&\"WKT\"===a[--b]&&\"GEOMETRY_ID\"===a[--b];c&&b--;)c=Xo(a[b]);return c}\nfunction Zo(a,b){var c=\"\",d,e,f=[];if(!b){var g={};f=[];if(a.geometries)for(e=0;e<a.geometries.length;e++)b=a.geometries[e],g[b.layerId]||(g[b.layerId]=[]),g[b.layerId].push(b);for(d in g)f.push({layerId:d,geometries:g[d]});for(d=0;d<f.length;d++)c+=Zo(f[d],f[d].layerId)}else if(a.geometries&&a.geometries.length)for(e=Object.keys(a.geometries[0].attributes),c=c+(\"Meta:\\t\"+b+\"\\n\")+e.join(\"\\t\"),c+=\"\\tWKT\\n\",d=0;d<a.geometries.length;d++){var h=a.geometries[d].attributes;g=a.geometries[d].geometry;for(b=\n0;b<e.length;b++)f.push(h[e[b]]);c+=f.join(\"\\t\");c+=\"\\t\"+g+\"\\n\";f=[]}return c};function Wo(a,b,c){var d=this,e=b&&b.rowFilter,f;Wo.l.constructor.call(this,c);C(a,V,Wo,0);var g=c.resultType;Vo(b);if(e){var h=La(b);h.rowFilter=e.toString()}else h=b;(new yf).a(\"cle\",\"H.service.extension.worker.processor\");var k=b.layerId;a.request($o,ap,{detail_level:\"all\",layer_id:k},function(b){b=b.layers;var c;for(c=0;c<b.length;c++)if(b[c].layerId===k){h.level=b[c].level;break}f=a.Ja().clone().Y(bp+\".\"+ap).K({meta:1});(new Bf(\"cle\",{message:[d.uid,0,{tileSize:d.tileSize,projected:!0,onlyOutline:4===\ng,serverUrl:f.toString(),layerConfigs:[h],batchTiles:!1}]})).then(function(){d.o=!0;sj(d)},d.b)},function(a){d.b(a.message)})}w(Wo,Jo);u(\"H.service.extension.customLocation.TileProvider\",Wo);Wo.prototype.D=function(a,b,c){return new Fo(a,b,c)};\nWo.prototype.Pa=function(a,b,c,d,e){var f=this,g=this.getTileKey(a,b,c),h;g=this.Ob().get(g);var k={cancel:vc},l=!0,m=this.a;g&&(4===m||8===m?g.Xd()||(d(Dn.pop(this.tileSize),null),l=!1):(d(z),l=!1));if(l){var p=Bn.setTimeout(function(){h=new Bf(\"cle\",{message:[f.uid,1,[a,b,c]]});h.then(d,e)},500);k.cancel=function(){h?h.cancel():Bn.clearTimeout(p)}}return k};Wo.prototype.requestInternal=Wo.prototype.Pa;Wo.prototype.s=function(){Wo.l.s.call(this);new Bf(\"cle\",{message:[this.uid,3]})};function cp(){if(dp)throw new nc(cp);}u(\"H.service.extension.customLocation.Table\",cp);var dp=!0;function ep(a,b){var c;dp=!1;var d=new cp;dp=!0;d.c=Ib(y.JSON.parse(y.JSON.stringify(a)));a=a.columnNames;var e=Fb();for(c=a.length;c--;)e[a[c]]=c;d.f=e;d.b=a.length;if(b){if(b.length%a.length)throw new D(ep,1,\"Invalid number of cells\");}else b=[];d.a=b;return d}cp.prototype.Pd=function(){return this.c};cp.prototype.getMeta=cp.prototype.Pd;cp.prototype.Rd=function(){return this.a.length/this.b};\ncp.prototype.getRowCount=cp.prototype.Rd;cp.prototype.yc=function(a){return a<this.a.length/this.b?new fp(this,a):B};cp.prototype.getRow=cp.prototype.yc;cp.prototype.Tm=function(){var a=this.a.length/this.b,b,c=new y.Array(a);for(b=0;b<a;b++)c[b]=new fp(this,b);return c};cp.prototype.getRows=cp.prototype.Tm;cp.prototype.Cg=function(a){var b=this.b,c=this.a,d=c.length/this.b;if(!a||a.length%b)throw new D(this.Cg,0,\"Invalid number of cells\");this.a=c.concat(a);return d};cp.prototype.addCells=cp.prototype.Cg;\ncp.prototype.vl=function(){for(var a=this.b,b=this.a,c=this.a.length/this.b;a--;)b.push(z);return this.yc(c)};cp.prototype.addRow=cp.prototype.vl;cp.prototype.Ta=function(){return this.c.columnNames};cp.prototype.getColumnNames=cp.prototype.Ta;cp.prototype.Ce=function(a){return this.f[a]===B?B:new gp(this,a)};cp.prototype.getColumn=cp.prototype.Ce;cp.prototype.va=function(a,b){return this.a[a*this.b+this.f[b]]};cp.prototype.getCell=cp.prototype.va;\ncp.prototype.Kc=function(a,b,c){b=this.f[b];if(a>=this.a.length/this.b)throw new D(this.Kc,0,\"Row index out of bounds\");if(b===B)throw new D(this.Kc,0,\"Column unknown\");this.a[a*this.b+b]=c};cp.prototype.setCell=cp.prototype.Kc;\ncp.prototype.concat=function(a){var b=arguments.length,c,d=\"\"+this.Ta(),e=this.a?this.a.slice():[];for(c=0;c<b;c++){var f=arguments[c];if(!(f instanceof cp))throw new D(this.concat,c);if(\"\"+f.Ta()!==d)throw new D(this.concat,c,\"Incompatible columns!\");f.a&&(e=e.concat(f.a))}return ep(this.c,e)};cp.prototype.concat=cp.prototype.concat;var hp=/(\\n|\\t|\\r|\")/;\ncp.prototype.Ci=function(a,b){var c,d=this.b,e=this.Ta(),f=[],g=[],h=this.a,k=-1;for(c=0;c<d;c++)if(!a||a.test(e[c]))\"WKT\"===e[c]&&(k=f.length),f.push(c);if(!(a=f.length))throw new D(this.Ci,1,\"No columns filtered\");ip(this,g,e,0,d,f,a,k);if(b){var l=b.length;for(c=0;c<l;c++)g.push(\"\\n\"),e=b[c],ip(this,g,h,e,d,f,a,k)}else for(l=this.Rd(),e=0;e<l;e++)g.push(\"\\n\"),ip(this,g,h,e,d,f,a,k);return g.join(\"\")};\nfunction ip(a,b,c,d,e,f,g,h){var k;for(k=0;k<g;k++){k&&b.push(\"\\t\");var l=c[d*e+f[k]];if(k!==h){if(l!==z){l=String(l);if(hp.test(l))throw new D(a.Ci,0,'Invalid character (\\\\n, \\\\r, \\\\t, or \") in row '+d+\" column \"+a.c.columnNames[f[k]]);b.push(l)}}else b.push(l)}}function gp(a,b){this.b=a;this.a=b}cp.Column=gp;gp.prototype.va=function(a){return this.b.va(a,this.a)};gp.prototype.getCell=gp.prototype.va;gp.prototype.Kc=function(a,b){this.b.Kc(a,this.a,b)};gp.prototype.setCell=gp.prototype.Kc;\nfunction fp(a,b){this.a=a;this.Mh=b}cp.Row=fp;fp.prototype.Ta=function(){return this.a.Ta()};fp.prototype.getColumnNames=fp.prototype.Ta;fp.prototype.va=function(a){return this.a.va(this.Mh,a)};fp.prototype.getCell=fp.prototype.va;fp.prototype.Kc=function(a,b){this.a.Kc(this.Mh,a,b)};fp.prototype.setCell=fp.prototype.Kc;fp.prototype.nd=function(){return this.a};fp.prototype.getTable=fp.prototype.nd;function jp(a){if(a===B)a=\"\\t\";else if(!/^[^\"\\r\\n]$/.test(a))throw new D(jp,0);this.b=String(a).charCodeAt(0);this.Nh=A(this.Nh,this);this.C=kp}var kp=0;n=jp.prototype;n.getState=function(){return this.C};function lp(a,b,c){var d=a.C;if(d!==b)throw 1===d&&(a.C=kp),new nc(c,\"Requires state: \"+[\"READY\",\"PARSE\",\"PAUSE\"][b]+\" but found \"+[\"READY\",\"PARSE\",\"PAUSE\"][d]);}n.abort=function(){lp(this,2,jp.prototype.abort);this.C=kp};\nn.Nh=function(a){this.C=kp;throw new D(jp.prototype.parse,0,\"Malformed DSV at row \"+this.a.o+\" column \"+this.a.g+\": \"+a);};function mp(a,b){var c=[];a.parse(b,function(a,b,f){1>a&&(c[b]=f);return 0<a});a.C=kp;return c}n.parse=function(a,b,c){lp(this,kp,jp.prototype.parse);a=a.trim();this.a=new np(a,this.b,this.Nh);this.c=b;this.ik=c||Se;this.C=2;this.resume()};n.ik=Se;\nn.resume=function(){var a=this.a,b=[];lp(this,2,jp.prototype.resume);this.C=1;do{if(!a.u){this.C=kp;break}if(e>a.g){if(void 0!==c&&c!==e){this.a.c(\"The number of columns must be the same for all rows\");return}var c=e}var d=a.o;var e=a.g;var f=a.j;var g=this.ik(d,e,a);if(a.j>f)for(;-1!==a.next(););else{for(;-1!==(f=a.next());)b.push(f);g=String.fromCharCode.apply(z,b);b.length=0}op(a);this.c(d,e,g)&&(this.C=a.u?2:kp)}while(1===this.C);2!=this.C&&void 0!==c&&0<e&&c!==e&&this.a.c(\"The number of columns must be the same for all rows\")};\nfunction np(a,b,c){this.i=new rn(a);this.Xa=b;this.u=!0;this.j=this.o=this.g=0;op(this);this.c=c;this.m=[];this.W=!1}np.prototype.j=0;var pp={wg:10,Li:13,yg:34,je:-1};function op(a){var b=a.i.a();a.v=!1;(a.D=34===b)&&a.i.next()}function qp(a,b){var c=a.i;a.v=!0;switch(b){case a.Xa:a.g++;break;case pp.Li:c.next(),c.a()!==pp.wg&&a.c(\"CR without LF\");case pp.wg:a.g=0;a.o++;break;case pp.je:a.u=!1;break;default:a.c(\"End of field expected\")}c.next();return pp.je}\nnp.prototype.a=function(){if(this.v)var a=pp.je;else{var b=this.i;a=b.a();if(this.D)switch(a){case pp.yg:b.next();a=b.a();a!==pp.yg&&(a=qp(this,a));break;case pp.je:this.c(\"Closing quotation mark expected\")}else switch(a){case pp.yg:this.c(\"Unexpected quotation mark\");case this.Xa:case pp.Li:case pp.wg:case pp.je:a=qp(this,a)}}return a};np.prototype.f=function(){this.W=!0;this.m=[]};np.prototype.b=function(){var a=this.m.slice();this.W=!1;this.m=[];return a};\nnp.prototype.next=function(){var a=this.a();-1!==a&&this.i.next();this.W&&this.m.push(a);this.j++;return a};function rp(a,b,c,d){d=d||{};if(!b)throw new D(rp,1,\"has to be a function\");if(!c)throw new D(rp,2,\"has to be a function\");this.c=b;this.g=c;this.a=[];this.i=d.duration||sp;this.b=A(this.b,this);this.f={};a=a.split(\"Meta:\\t\").slice(1);for(b=0;b<a.length;b++){d=a[b].split(\"\\n\");c=d[0].split(\"\\t\")[0];d=d.slice(1).join(\"\\n\");this.Id[c]=new jp;this.rh[c]=mp(this.Id[c],d);var e={layerId:c,columnNames:this.rh[c]};this.Ah.push(c);this.f[c]=ep(e);this.Nc[c]=Oj();tp(this,d,c);this.b(c)}}var sp=100;n=rp.prototype;\nn.rh={};n.Ah=[];n.Id={};n.Nc={};n.Bi={};function tp(a,b,c){var d=[],e=a.rh[c].length-1,f=a.f[c];try{a.Id[c].parse(b,function(b,h,k){var g=!1;0<b&&(d[h]=k,h===e&&(a.a.push(f.yc(f.Cg(d))),Oj()-a.Nc[c]>a.i&&(g=!0)));return g},function(a,b,c){if(0<a&&b===e)return Wm(c)})}catch(g){a.g(g)}}n.cancel=function(){for(var a in this.Bi)y.clearTimeout(this.Bi[a])};rp.prototype.cancel=rp.prototype.cancel;\nrp.prototype.b=function(a){var b=this,c,d;this.Bi[a]=y.setTimeout(function(){if(2===b.Id[a].getState())b.Nc[a]=Oj(),b.c(b.a,!1),b.a=[],b.Id[a].resume(),b.b(a);else{c=!0;for(d=0;d<b.Ah.length;d++)if(b.Id[b.Ah[d]].getState()!==kp){c=!1;break}c&&(0<b.a.length&&b.c(b.a,!0),b.a=[])}},0)};function V(a){var b=vn({},this.ra,a||{});if(!V.rb)throw new nc(V);if(!b.baseUrl&&!b.platformBaseUrl)throw new D(V,0,'either \"baseUrl\" or \"platformBaseUrl\" must be specified');this.A=(b.baseUrl?b.baseUrl:b.platformBaseUrl).clone();this.wa(b.baseUrl?a||{}:b)}u(\"H.service.extension.customLocation.Service\",V);V.prototype.ra={subDomain:\"fleet.ls\",path:\"2\"};V.CONFIG_KEY=\"customLocation\";V.prototype.wa=function(a){a.subDomain&&this.A.ua(a.subDomain);a.path&&this.A.ta(a.path)};V.prototype.Ja=function(){return this.A};\nV.prototype.sc=function(a,b){var c=b&&b.resultType;a=new Wo(this,a,b);var d;1===c||2===c?d=new Sm(a):d=new Dk(a);return d};V.prototype.createTileLayer=V.prototype.sc;\nfunction up(a,b,c,d){var e;a=a===vp?\"changes\":\"file\";var f=b[a],g=ra(f),h=!g&&C(f,Blob);if(!g&&!h)throw new D(d,0,\"Invalid \"+a+\" parameter\");if(wp)h?e=f:e=$e(f,\"text/plain\"),d=new y.FormData,d.append(a,e,e.name||a+\".wkt\"),c.method=\"POST\",c.data=d,delete b[a];else if(h)throw new D(d,0,\"Sending Blob data is not supported by the browser\");}var wp=y.FormData&&!!y.FormData.prototype.append;\nV.prototype.request=function(a,b,c,d,e){var f=\"text/plain\",g=xp;g=a===g.LAYERS_UPLOAD||a===g.LAYERS_MODIFY||a===g.LAYERS_IMPORT;var h=c,k={data:B,method:\"GET\"};if(!a)throw new D(this.request,0,a);if(!b)throw new D(this.request,1,b);Do(this.request,3,d,e);g&&(C(c,Object,this.request,2,\"Invalid request parameters\"),h=La(c),up(a,h,k,this.request));var l=this.A.clone().Y(a+\".\"+b).K(h);b===yp.JSON&&(f=\"application/json\");a=new cf(f,l,rd,k);a.then(function(a){var b=a.issues;b&&a.error_id&&a.response_code?\ne(Error(b[0].message)):d(a)},function(a){\"error\"===a.type||404===a.status?e(Error(a.statusText||\"Unable to load data\")):a.json().then(function(a){e(Error(\"[\"+a.message+\"] \"+l+\" request failed\"))},function(){e(Error(\"[\"+a.statusText+\"] \"+l+\" request failed\"))})});return a};V.prototype.request=V.prototype.request;\nvar $o=\"layers/list\",vp=\"layers/modify\",bp=\"tiled/tile\",xp={LAYERS_DELETE:\"layers/delete\",LAYERS_GRANT:\"layers/access/grant\",LAYERS_LIST:$o,LAYERS_MODIFY:vp,LAYERS_UPLOAD:\"layers/upload\",LAYERS_IMPORT:\"layers/import\",SEARCH_ALL:\"search/all\",SEARCH_BBOX:\"search/bbox\",SEARCH_CORRIDOR:\"search/corridor\",SEARCH_PROXIMITY:\"search/proximity\",SEARCH_QUADKEY:\"search/quadkey\",SEARCH_TILE:bp};V.EntryPoint=xp;var ap=\"json\",yp={TXT:\"txt\",JSON:ap};V.EntryPointType=yp;\nV.prototype.Bb=function(a,b,c){var d=this;return this.request(\"search/all\",\"txt\",{filter:'WKT==\"\"',layer_id:a},function(e){var f=e.replace(/[\\r\\n]+$/g,\"\").split(\"\\t\");d.request($o,ap,{layer_id:a,detail_level:\"all\"},function(a){a=a.layers[0];a.columnNames=f;b(ep(a))},c)},c)};V.prototype.getLayer=V.prototype.Bb;\nV.prototype.Gj=function(a,b,c,d){function e(){return++g<f?h.request(\"layers/access/grant\",ap,{layer_id:a,granted_app_id:b[g].grantedAppId,permissions:b[g].permissions.join(\",\")},e,d):h.Bb(a,c,d)}var f=b&&b.length,g=-1,h=this;return e()};V.prototype.grantAccess=V.prototype.Gj;V.prototype.ij=function(a,b,c){return this.request(\"layers/delete\",ap,{layer_ids:a},b,c)};V.prototype.deleteLayer=V.prototype.ij;\nV.prototype.te=function(a,b,c){function d(){setTimeout(function(){k.Bb(g,function(a){setTimeout(e.bind(null,a),m)},function(){64E3>l?(l+=m,d()):c(y.Error(\"Timeout\"))})},m);m*=2}function e(d){var e=JSON.stringify(d.Ta()),f=a.grants;if(e!==JSON.stringify(h)){var l=\"Results into different column names on the backend: \"+e;setTimeout(function(){k.ij(g,function(){c(y.Error(l))},function(a){c(y.Error(l+\". \"+a.message))})},m)}else f&&f.length?k.Gj(g,f,b,c):b(d)}var f,g,h,k=this,l=0,m=1E3;var p=!a||!Xo(g=\na.layerId)&&(f=\"layerId\")||!Yo(h=a.columnNames)&&(f=\"columnNames\")?0:r(b)?r(c)?-1:2:1;if(0<=p)throw new D(k.te,p,f||arguments[p]);return k.Bb(g,function(){c(y.Error(\"Layer exists already\"))},function(){var b={layer_id:g,file:h.join(\"\\t\")},e=a.level,f=a.storage;e!==B&&(b.level=e);f!==B&&(b.storage=f);k.request(\"layers/upload\",ap,b,d,c)})};V.prototype.createLayer=V.prototype.te;\nV.prototype.wd=function(a,b,c,d){var e=[],f;a=this.request(a,ap,b,function(a){a.geometries.length?(a=Zo(a,b.layer_id),f=new rp(a,c,d),e.push(f)):c(Te,!0)},d);e.push(a);return new Ro(e)};V.prototype.Wb=function(a,b,c,d,e,f){if(!Qb(a))throw new D(this.Wb,0,\"has invalid type\");C(b,I,this.Wb,1,\"has invalid type\");if(!Tb(c))throw new D(this.Wb,2,\"has invalid type\");Do(this.Wb,3,d,e);a={layer_ids:a.join(\",\"),proximity:b.lat+\",\"+b.lng+\",\"+c};f&&Pa(a,f);return this.wd(\"search/proximity\",a,d,e)};\nV.prototype.searchByProximity=V.prototype.Wb;V.prototype.Vb=function(a,b,c,d,e,f){var g=\"\";if(!Qb(a))throw new D(this.Vb,0,\"has invalid type\");if(!ra(b)&&!C(b,K))throw new D(this.Vb,1,\"has invalid type\");if(!Tb(c))throw new D(this.Vb,2,\"has invalid type\");Do(this.Vb,3,d,e);a={layer_ids:a.join(\",\"),radius:c};if(ra(b))a.route_id=b;else{var h=b.qa;b=0;for(c=h.length;b<c;b+=3)g+=h[b]+\",\"+h[b+1],b<c-3&&(g+=\",\");a.corridor=g}f&&Pa(a,f);return this.wd(\"search/corridor\",a,d,e)};\nV.prototype.searchByCorridor=V.prototype.Vb;V.prototype.Jc=function(a,b,c,d,e){function f(a,b){b&&h--;c(a,!h)}var g=[],h;if(!Qb(a))throw new D(this.Jc,0,\"has invalid type\");C(b,J,this.Jc,1,\"has invalid type\");Do(this.Jc,2,c,d);b={bbox:b.oa+\",\"+b.aa+\";\"+b.ka+\",\"+b.ea};e&&Pa(b,e);a=b.layer_id?[b.layer_id]:a;e=0;for(h=a.length;e<h;e++)b.layer_id=a[e],g.push(this.wd(\"search/bbox\",b,f,d));return new Ro(g)};V.prototype.searchByBoundingBox=V.prototype.Jc;\nV.prototype.hi=function(a,b,c,d){var e,f=[];if(!ra(a))throw new D(this.hi,0,\"has invalid type\");Do(this.hi,1,b,c);var g={layer_id:a};d&&Pa(g,d);d=this.request(\"search/all\",ap,g,function(d){d.geometries.length?(d=Zo(d,a),e=new rp(d,b,c),f.push(e)):b(Te,!0)},c);f.push(d);return new Ro(f)};V.prototype.searchAll=V.prototype.hi;var zp={\"delete\":/^GEOMETRY_ID$/,append:/^(?!GEOMETRY_ID$)/};\nfunction Ap(a,b,c,d,e,f){function g(){v++;d(this,v===q)}function h(a){v++;e(a,this,v===q)}var k=\"append\"!==b,l,m={},p=Fb(),q=0,t=[],v=0;if(!Qb(c))throw new D(f,0,c);Do(f,1,d,e);for(l=c.length;l--;){var x=c[l];if(C(x,fp)){var E=x.nd().Pd().layerId;var O=x.va(\"GEOMETRY_ID\");if(k){if(O===z||\"\"===String(O))var Y='GEOMETRY_ID must not be null or \"\"';m[O=E+\"_\"+O]&&(Y=\"same GEOMETRY_ID for multiple rows\");m[O]=x}else O!==z&&\"\"!==String(O)&&(Y='GEOMETRY_ID must be null or \"\"')}else Y=\"Invalid type\";if(Y)throw new D(f,\n0,\"- Invalid row at index \"+l+\", \"+Y);O=p[E];O||(O=p[E]=[],q++);O.push(x)}for(E in p){O=p[E];c=[];for(l=O.length;l--;)c.push(O[l].Mh);t.push(a.request(vp,ap,{layer_id:E,action:b,changes:O[0].nd().Ci(zp[b]||null,c)},A(g,O),A(h,O)))}return new Ro(t)}V.prototype.$i=function(a,b,c){return Ap(this,\"append\",a,b,c,this.$i)};V.prototype.appendRows=V.prototype.$i;V.prototype.dl=function(a,b,c){return Ap(this,\"update\",a,b,c,this.dl)};V.prototype.updateRows=V.prototype.dl;\nV.prototype.jj=function(a,b,c){return Ap(this,\"delete\",a,b,c,this.jj)};V.prototype.deleteRows=V.prototype.jj;U.prototype.dm=function(a){return this.ob(V,a)};U.prototype.getCustomLocationService=U.prototype.dm;function Bp(a){var b=vn({},this.ra,a||{});if(!Bp.rb)throw new nc(Bp);if(!b.baseUrl&&!b.platformBaseUrl)throw new D(Bp,0,'either \"baseUrl\" or \"platformBaseUrl\" must be specified');this.A=(b.baseUrl?b.baseUrl:b.platformBaseUrl).clone();this.wa(b.baseUrl?a||{}:b)}u(\"H.service.extension.customRoute.Service\",Bp);Bp.prototype.ra={subDomain:\"cre\",path:\"2\"};Bp.CONFIG_KEY=\"customRoute\";Bp.prototype.wa=function(a){a.subDomain&&this.A.ua(a.subDomain);a.path&&this.A.ta(a.path)};Bp.prototype.Ja=function(){return this.A};\nBp.prototype.ia=function(a,b,c){return(new cf(\"application/json\",a,rd)).then(b,function(b){b.json().then(function(b){c(Error(\"[\"+b.details+\"] \"+a+\" request failed\"))},function(){c(Error(\"[\"+b.statusText+\"] \"+a+\" request failed\"))})})};Bp.prototype.rf=function(a,b,c){Do(this.rf,1,b,c);a=this.A.clone().Y(\"calculateroute.json\").K(a);this.ia(a,b,c)};Bp.prototype.calculateRoute=Bp.prototype.rf;U.prototype.em=function(a){return this.ob(Bp,a)};U.prototype.getCustomRoutingService=U.prototype.em;function Cp(a){if(!Cp.rb)throw new nc(Cp);if(!a.token)throw new D(Cp,0,'\"token\" must be specified');Cp.l.constructor.call(this);this.a=a.token;this.A=new T(\"https\",\"xyz.api.here.com\",B,{xnlp:a.platformBaseUrl.Da.xnlp});this.c={};this.b={}}w(Cp,G);u(\"H.service.xyz.Service\",Cp);Cp.prototype.ih=function(a,b,c){Ob(a,\"String\",this.ih,0,'\"projectId\" must be a string');Dp(this.ih,1,b,c);a=new cf(\"application/json\",this.A.clone().ta(\"project-api/projects/\"+a).toString());a.then(b,Ep.bind(this,c));return a};\nCp.prototype.getProject=Cp.prototype.ih;Cp.prototype.Aj=function(a,b,c){Dp(this.Aj,0,a,b);var d=this.A.clone().ta(\"hub/spaces\").K({access_token:this.a});c&&d.K(c);c=new cf(\"application/json\",d.toString());c.then(a,Ep.bind(this,b));return c};Cp.prototype.getSpaces=Cp.prototype.Aj;\nCp.prototype.If=function(a,b,c){Ob(a,\"String\",this.If,0,'\"spaceId\" must be a string');Dp(this.If,1,b,c);a=this.A.clone().ta(\"hub/spaces/\"+a).K({access_token:this.a});a=new cf(\"application/json\",a.toString());a.then(b,Ep.bind(this,c));return a};Cp.prototype.getSpace=Cp.prototype.If;\nCp.prototype.kh=function(a,b,c){Ob(a,\"String\",this.kh,0,'\"spaceId\" must be a string');Dp(this.kh,1,b,c);a=this.A.clone().ta(\"hub/spaces/\"+a+\"/statistics\").K({access_token:this.a});a=new cf(\"application/json\",a.toString());a.then(b,Ep.bind(this,c));return a};Cp.prototype.getStatistics=Cp.prototype.kh;\nfunction Fp(a,b,c,d,e,f,g,h){b=a.A.clone().ta(\"hub/spaces/\"+e+\"/tile/web/\"+d+\"_\"+b+\"_\"+c+\".mvtf\").K({access_token:a.a,clip:!0,clientId:\"viewer\"});h&&b.K(h);h=new cf(\"arraybuffer\",b.toString());h.then(function(a){return a.arrayBuffer()}).then(f,Ep.bind(a,g));return h}\nCp.prototype.search=function(a,b,c,d){Ob(a,\"String\",this.search,0,'\"spaceId\" must be a string');Dp(this.search,1,b,c);a=this.A.clone().ta(\"hub/spaces/\"+a+\"/search\").K({access_token:this.a});d&&a.K(d);d=new cf(\"application/json\",a.toString());d.then(b,Ep.bind(this,c));return d};Cp.prototype.search=Cp.prototype.search;\nCp.prototype.Ge=function(a,b,c,d){Ob(a,\"String\",this.Ge,0,'\"spaceId\" must be a string');if(!wa(b))throw new D(this.Ge,1,'\"params\" must be an object');Dp(this.Ge,2,c,d);a=this.A.clone().ta(\"hub/spaces/\"+a+\"/features\").K({access_token:this.a});a.K(b);b=new cf(\"application/json\",a.toString());b.then(c,Ep.bind(this,d));return b};Cp.prototype.getFeaturesById=Cp.prototype.Ge;\nCp.prototype.bh=function(a,b,c,d){Ob(a,\"String\",this.bh,0,'\"spaceId\" must be a string');if(!wa(b))throw new D(this.Ge,1,'\"params\" must be an object');Dp(this.bh,2,c,d);a=this.A.clone().ta(\"hub/spaces/\"+a+\"/bbox\").K({access_token:this.a});a.K(b);b=new cf(\"application/json\",a.toString());b.then(c,Ep.bind(this,d));return b};Cp.prototype.getFeaturesByBoundingBox=Cp.prototype.bh;Cp.prototype.la=function(a){var b=this.c[a];if(b)return b;this.b[a]||this.ye(a);return null};\nCp.prototype.ye=function(a){var b=this;this.b[a]=Gp;this.If(a,function(c){b.b[a]=Hp;b.c[a]=c.copyright;b.dispatchEvent(\"copyrightupdate\")}.bind(this),function(c){b.b[a]=Ip;throw c;}.bind(this))};Cp.CONFIG_KEY=\"xyz\";var Gp=1,Hp=2,Ip=-1;function Dp(a,b,c,d){if(!r(c))throw new D(a,b,'\"onResult\" must be a function');if(!r(d))throw new D(a,b+1,'\"onError\" must be a function');}function Ep(a,b){b.text().then(function(b){a(Error(b))})}U.prototype.cn=function(a){return this.ob(Cp,a)};\nU.prototype.getXYZService=U.prototype.cn;function Jp(a,b,c){Jp.l.constructor.call(this,c?{min:c.min,max:c.max}:void 0);C(a,Cp,Jp,0);if(!ra(b))throw new D(Jp,1,'\"spaceId\" must be a string');this.b=a;this.a=b;this.o={};c&&[\"limit\",\"simplificationLevel\",\"tags\"].forEach(function(a){a in c&&(this.o[a]=c[a])},this);this.yd(new fj({sources:{xyz:{type:\"MVT\"}},layers:{xyz:{data:{source:\"xyz\",layer:this.a},points:{filter:{$geometry:\"point\"},draw:{points:{collide:!1,order:200,color:\"#92CF48\",size:[[10,\"8px\"],[14,\"12px\"],[18,\"16px\"]]}}},polygons:{filter:{$geometry:\"polygon\"},\ndraw:{polygons:{order:201,color:\"#E39E3C\"},lines:{order:202,color:\"#755DA5\",width:\"1px\"}}},lines:{filter:{$geometry:\"line\"},draw:{lines:{order:203,color:\"#000000\",width:\"2px\",join:\"round\",cap:\"round\"}}}}}}))}w(Jp,Q);u(\"H.service.xyz.Provider\",Jp);Jp.prototype.Pa=function(a,b,c,d,e){return Fp(this.b,a,b,c,this.a,d,e,this.o)};Jp.prototype.requestInternal=Jp.prototype.Pa;Jp.prototype.la=function(){return this.b.la(this.a)};Jp.prototype.getCopyrights=Jp.prototype.la;Jp.prototype.Ia=function(){return this.Eb()};\nJp.prototype.getStyle=Jp.prototype.Ia;Jp.prototype.fd=function(a){un(a,\"MVT\");this.yd(a)};Jp.prototype.setStyle=Jp.prototype.fd;u(\"H.service.buildInfo\",function(){return qf(\"mapsjs-service\",\"1.8.1\",\"dc2b8a4\")});\n");
\ No newline at end of file
/*
* Explanation why the layout looks so complicated:
* The UI container needs a position (absolute or relative) to prevent z-index issues (DomMarker on top of UI)
* Therefore it has these additional styles:
* position: absolute;
* width: 100%;
* height: 100%;
* To prevent that the UI container captures all events the container is displaced by
* left: 100%;
* To neutralize the displacement for the UI elements within the UI container the following adjustments are needed:
* - InfoBubble (.H_ib): left: -100%;
* - left anchor (.H_l_left): margin-left: -100%;
* - center anchor (.H_l_center): left: -50%; (was left: 50%)
* - right anchor (.H_l_right): right: 100%; (was right: 0)
* margin-left: -100%;
*/
.H_ui {
font-size: 10px;
font-family: "Lucida Grande", Arial, Helvetica, sans-serif;
-moz-user-select: none;
-khtml-user-select: none;
-webkit-user-select: none;
-o-user-select: none;
-ms-user-select: none;
/* position ui on top of imprint to make both clickable */
z-index: 2;
position: absolute;
width: 100%;
height: 100%;
left: 100%;
}
.H_ui * {
/* normalize in case some other normalization CSS likes things differently */
box-sizing: content-box;
-moz-box-sizing: content-box;
}
.H_noevs {
pointer-events: none;
}
/*
* Layout
*/
.H_l_left {
position: absolute;
left: 16px;
margin-left: -100%;
}
.H_l_center {
position: absolute;
left: -50%;
}
.H_l_right {
position: absolute;
right: calc(100% + 16px);
margin-left: -100%;
}
.H_l_top {
top: 16px;
}
.H_l_middle {
top: 50%;
}
.H_l_bottom {
bottom: 16px;
}
/* Fix MAPSJS-579 for modern browsers */
[class^=H_l_] {
pointer-events: none;
}
.H_ctl {
/* hack for IE9-10, auto doesn't work for them */
pointer-events: visiblePainted;
pointer-events: auto;
}
.H_l_horizontal .H_ctl {
float: left;
}
.H_l_anchor {
clear: both;
float: right;
}
.H_l_vertical .H_ctl {
clear: both;
}
.H_l_right .H_l_vertical .H_ctl {
float: right;
}
.H_l_right.H_l_middle.H_l_vertical .H_ctl{
float: right;
}
/**
* Element styles
*/
.H_ctl {
margin: .8em;
position: relative;
-ms-touch-action: none;
}
.H_btn {
cursor: pointer;
}
.H_grp .H_btn,
.H_rdo_buttons .H_btn {
box-shadow: none;
}
.H_grp .H_btn.H_active,
.H_rdo_buttons .H_btn.H_active {
background: none;
}
.H_btn {
box-shadow: 0em 0 0.4em 0 rgba(15, 22, 33, 0.6);
border-radius: 0.5em;
width: 4em;
height: 4em;
background: #fff;
}
.H_disabled,
.H_disabled:hover {
cursor: default;
}
.H_rdo_title {
font-size: 14px;
height: 40px;
line-height: 40px;
background-color: #575B63;
color: #fff;
padding-left: 16px;
padding-right: 16px;
border-radius: 5px 5px 0 0;
margin-bottom: 8px;
cursor: default;
}
.H_rdo ul {
list-style: none;
margin: 0 auto;
padding: 0;
}
/**
* Base Elements
*/
.H_ctl.H_grp {
background: #fff;
box-shadow: 0em 0 0.4em 0 rgba(15, 22, 33, 0.6);
border-radius: 0.5em;
}
/* Button divider */
.H_zoom .H_el {
position: relative;
}
.H_l_vertical .H_zoom .H_el:last-child::after,
.H_l_horizontal .H_zoom .H_el:last-child::after {
content: none;
}
.H_l_vertical .H_zoom .H_el {
margin-bottom: 0.1em;
}
.H_l_vertical .H_zoom .H_el:last-child {
margin-bottom: 0;
}
.H_l_vertical .H_zoom .H_el::after {
content: "";
position: absolute;
width: 2.6em;
height: 0.1em;
bottom: -0.1em;
left: 0.7em;
background: rgba(15, 22, 33, 0.1);
}
.H_l_horizontal .H_zoom .H_el {
margin-right: 0.1em;
}
.H_l_horizontal .H_zoom .H_el:last-child {
margin-right: 0;
}
.H_l_horizontal .H_zoom .H_el::after {
content: "";
position: absolute;
width: 0.1em;
height: 2.6em;
top: 0.7em;
right: -0.1em;
background: rgba(15, 22, 33, 0.1);
}
/* End: Button divider */
.H_l_horizontal .H_grp .H_btn,
.H_l_vertical .H_ctl {
float: left;
}
/** Menu panel */
.H_overlay {
font-size: 14px;
color: rgba(15, 22, 33, 0.6);
box-shadow: 0px 0 4px 0 rgba(15, 22, 33, 0.6);
border-radius: 5px;
position: absolute;
min-width: 200px;
background: #fff;
display: none;
z-index: 100;
padding-bottom: 4px;
}
.H_overlay .H_separator {
content: "";
position: relative;
display: block;
margin: 8px 16px 8px 16px;
height: 1px;
background: rgba(15, 22, 33, 0.1);
}
.H_overlay .H_btn,
.H_overlay .H_rdo li {
width: 184px;
height: 24px;
line-height: 24px;
padding: 8px 16px;
}
.H_overlay .H_btn{
border-radius: 0px;
}
.H_overlay .H_btn:hover,
.H_overlay .H_rdo li:hover {
color: rgba(15, 22, 33, 0.8);
}
.H_overlay .H_btn.H_disabled,
.H_overlay .H_rdo.H_disabled li,
.H_overlay .H_btn.H_disabled:hover,
.H_overlay .H_rdo.H_disabled li:hover {
color: rgba(15, 22, 33, 0.2);
}
.H_overlay .H_btn.H_active,
.H_overlay .H_rdo.H_active li,
.H_overlay .H_btn.H_active:hover,
.H_overlay .H_rdo.H_active li:hover {
color: #0F1621;
}
.H_overlay>*:last-child {
clear: both;
}
.H_overlay>.H_btn {
white-space: nowrap;
}
.H_overlay.H_open {
display: block;
}
.H_overlay::before, .H_overlay::after {
content: " ";
width: 0;
height: 0;
border-style: solid;
position: absolute;
}
.H_overlay.H_left::before {
border-width: 10px 10px 10px 0;
border-color: transparent rgba(15, 22, 33, 0.2) transparent transparent;
left: -12px;
}
.H_overlay.H_left::after {
border-width: 10px 10px 10px 0;
border-color: transparent #fff transparent transparent;
left: -10px;
}
.H_overlay.H_top.H_left::after {
border-color: transparent #575B63 transparent transparent;
}
.H_overlay.H_right::before {
border-width: 10px 0 10px 10px;
border-color: transparent transparent transparent rgba(15, 22, 33, 0.2);
left: calc(100% + 1px);
}
.H_overlay.H_right::after {
border-width: 10px 0 10px 10px;
border-color: transparent transparent transparent #fff;
left: 100%;
}
.H_overlay.H_top.H_right::after {
border-color: transparent transparent transparent #575B63;
}
.H_overlay.H_top::before,
.H_overlay.H_top::after {
top: 10px;
}
.H_overlay.H_bottom::before,
.H_overlay.H_bottom::after {
bottom: 10px;
}
.H_overlay.H_middle::before,
.H_overlay.H_middle::after {
top: 50%;
margin-top: -10px;
}
.H_overlay.H_top.H_center::before {
border-width: 0 10px 10px 10px;
border-color: transparent transparent rgba(15, 22, 33, 0.2) transparent;
top: -11px;
left: 50%;
margin-left: -10px;
}
.H_overlay.H_top.H_center::after {
border-width: 0 10px 10px 10px;
border-color: transparent transparent #575B63 transparent;
top: -10px;
left: 50%;
margin-left: -10px;
}
.H_overlay.H_bottom.H_center::before {
border-width: 10px 10px 0 10px;
border-color: rgba(15, 22, 33, 0.2) transparent transparent transparent;
bottom: -11px;
left: 50%;
margin-left: -10px;
}
.H_overlay.H_bottom.H_center::after {
border-width: 10px 10px 0 10px;
border-color: #fff transparent transparent transparent;
bottom: -10px;
left: 50%;
margin-left: -10px;
}
/** InfoBubble */
.H_ib {
position: absolute;
left: .91em;
left: -100%;
}
.H_ib_tail {
position: absolute;
width: 20px;
height: 10px;
margin: -10px -10px;
}
.H_ib_tail::before{
bottom: -1px;
border-width: 10px;
position: absolute;
display: block;
content: "";
border-color: transparent;
border-style: solid;
right: 0px;
}
.H_ib_tail::after{
bottom: 0;
position: absolute;
display: block;
content: "";
border-color: white;
border-style: solid;
border-width: 10px;
}
.H_ib.H_ib_top .H_ib_tail::after {
border-width: 10px 10px 0px 10px;
border-color: white transparent;
}
.H_ib.H_ib_top .H_ib_tail::before {
border-top-color: rgba(15, 22, 33, 0.2);
border-bottom-width: 0px;
}
.H_ib_notail .H_ib_tail {
display: none;
}
.H_ib_body {
background: white;
position: absolute;
bottom: .5em;
padding: 0;
right: 0px;
border-radius: 5px;
margin-right: -3em;
box-shadow: 0px 0 4px 0 rgba(15, 22, 33, 0.6);
margin-bottom: 0.5em;
}
.H_ib_close {
font-size: .6em;
position: absolute;
right: 12px;
width: 12px;
height: 12px;
cursor: pointer;
top: 12px;
z-index: 1;
background: none;
box-shadow: none;
}
.H_ib_close svg.H_icon {
top: 0;
transform: none;
width: auto;
height: auto;
}
.H_ib_noclose .H_ib_close {
display: none;
}
.H_ib_noclose .H_ib_body {
padding: 0 0 0 0;
}
.H_ib_content {
min-width: 6em;
font: 14px "Lucida Grande", Arial, Helvetica, sans-serif;
line-height: 24px;
margin: 16px 28px 20px 16px;
color: rgba(15,22,33,.8);
user-select: text;
-moz-user-select: text;
-khtml-user-select: text;
-webkit-user-select: text;
-o-user-select: text;
-ms-user-select: text;
}
/*################################################## SLIDER ########################################################*/
.H_l_horizontal .H_zoom_slider {
min-width: 262px;
}
.H_slider {
cursor: pointer;
}
.H_l_horizontal.H_slider {
float: left;
height: 4em;
width: auto;
padding: 0 1em;
}
.H_slider .H_slider_track {
width: 0.4em;
height: 100%;
}
.H_l_horizontal.H_slider .H_slider_track {
height: 0.4em;
width: 100%;
}
.H_l_horizontal.H_slider .H_slider_cont {
height: 100%;
}
.H_l_horizontal.H_slider .H_slider_knob_cont {
margin-top: -0.4em;
}
.H_slider {
background-color: #fff;
padding: 1em 0em;
width: 4em;
}
.H_slider .H_slider_cont {
position: relative;
}
.H_slider .H_slider_knob_cont,
.H_slider .H_slider_knob_halo {
width: 1.8em;
height: 1.8em;
margin-left: 0em;
border-radius:9em;
}
.H_slider .H_slider_knob {
width: 1.2em;
height: 1.2em;
background-color: white;
border-radius:9em;
-webkit-transform: translate(-50%,-50%);
-ms-transform: translate(-50%,-50%);
transform: translate(-50%,-50%);
top: 50%;
left: 50%;
box-shadow: 0em 0 0.5em 0 rgba(15, 22, 33, 0.6);
position: absolute;
}
.H_slider:hover .H_slider_knob {
box-shadow: 0em 0 0.5em 0 rgba(15, 22, 33, 0.8);
}
.H_slider.H_disabled .H_slider_knob {
box-shadow: 0em 0 0.5em 0 rgba(15, 22, 33, 0.2);
}
.H_slider.H_slider_active .H_slider_knob {
box-shadow: 0em 0 0.5em 0 rgba(15, 22, 33, 1);
}
.H_slider:hover .H_slider_track {
background-color: rgba(15, 22, 33, 0.8);
}
.H_disabled .H_slider_track {
background-color: rgba(15, 22, 33, 0.2);
}
.H_slider:hover .H_slider_track_active {
background-color: rgba(0, 182, 178, 0.8);
}
.H_disabled .H_slider_track_active {
background-color: rgba(0, 182, 178, 0.2);
}
.H_slider.H_slider_active .H_slider_track {
background-color: rgba(15, 22, 33, 1.0);
}
.H_slider.H_slider_active .H_slider_track_active {
background-color: rgba(0, 182, 178, 1.0);
}
.H_slider .H_slider_track,
.H_slider .H_slider_knob_cont{
position:relative;
top: 50%;
left: 50%;
-webkit-transform: translate(-50%,-50%);
-ms-transform: translate(-50%,-50%);
transform: translate(-50%,-50%);
}
.H_slider .H_slider_track {
background-color: rgba(15, 22, 33, 0.6);
overflow: hidden;
}
.H_slider .H_slider_track_active {
background-color: #00B6B2;
position: absolute;
transform: translate(-50%,0%);
}
.H_slider.H_disabled .H_slider_track {
background-color: rgba(15, 22, 33, 0.2);
}
.H_slider.H_disabled .H_slider_track_active {
background-color: #bae2e3;
}
.H_slider.H_l_horizontal .H_slider_track_active {
transform: translate(-200%, -50%);
}
.H_slider.H_disabled {
cursor: default;
}
/*############################################### CONTEXT MENU #####################################################*/
.H_context_menu {
font-size: 14px;
min-width: 158px;
max-width: 40%;
box-shadow: 0em 0 0.4em 0 rgba(15, 22, 33, 0.6);
position: absolute;
left: -100%;
top: 0;
color: rgba(15, 22, 33, 0.6);
background-color: #fff;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
-o-border-radius: 5px;
border-radius: 5px;
padding: 16px 16px 4px 16px;
-moz-user-select: initial;
-khtml-user-select: initial;
-webkit-user-select: initial;
-o-user-select: initial;
-ms-user-select: initial;
z-index: 200;
}
.H_context_menu_closed {
display: none;
}
.H_context_menu_item {
text-overflow: ellipsis;
overflow: hidden;
line-height: 24px;
margin-bottom: 16px;
outline: none;
}
.H_context_menu_item.clickable:hover {
color: rgba(15, 22, 33, 0.8);
cursor: pointer;
}
.H_context_menu_item.disabled:hover,
.H_context_menu_item.disabled {
background: transparent !important;
color: rgba(15, 22, 33, 0.2);
cursor: default !important;
-moz-user-select: none;
-khtml-user-select: none;
-webkit-user-select: none;
-o-user-select: none;
-ms-user-select: none;
}
.H_context_menu_item_separator {
height: 0;
border-top: 1px solid rgba(15, 22, 33, 0.1);
padding-bottom: 16px;
line-height: 0;
font-size: 0;
}
/*################################################# SCALE BAR ######################################################*/
.H_scalebar {
margin-top: 36px;
box-shadow: none;
display: flex;
align-items: center;
text-shadow:
-1px -1px 0 rgba(255, 255, 255, 0.7),
1px -1px 0 rgba(255, 255, 255, 0.7),
-1px 1px 0 rgba(255, 255, 255, 0.7),
1px 1px 0 rgba(255, 255, 255, 0.7);
}
/*################################### DISTANCE MEASUREMENT AND TRAFFIC INCIDENTS ####################################*/
.H_tib_content {
width: 25em;
position: relative;
margin: -16px -28px -20px -16px;
}
.H_tib .H_tib_desc { padding: 0px 16px 20px 16px }
.H_tib .H_tib_time {color: rgba(15,22,33,.4);margin-top: 0.8em;}
.H_tib_right { float:right; }
.H_tib .H_btn > svg.H_icon {
fill: rgba(255,255,255, .6);
}
.H_tib .H_btn:hover > svg.H_icon {
fill: white;
}
.H_dm_label {
font: 12px "Lucida Grande", Arial, Helvetica, sans-serif;
color: black;
text-shadow: 1px 1px .5px #FFF, 1px -1px .5px #FFF, -1px 1px .5px #FFF, -1px -1px .5px #FFF;
white-space: nowrap;
margin-left: 12px;
margin-top: -7px;
/* This will not work on IE9, but it is accepted! */
pointer-events: none;
}
/*################################################### ICON #########################################################*/
svg.H_icon {
display: block;
position: relative;
top: 50%;
transform: translateY(-50%);
margin:auto;
width: 24px;
height: 24px;
fill: rgba(15, 22, 33, 0.6);
}
svg.H_icon .H_icon_stroke {
stroke: rgba(15, 22, 33, 0.6);
fill: none;
}
.H_btn:hover > svg.H_icon {
fill: rgba(15, 22, 33, 0.8);
}
.H_btn:hover > svg.H_icon .H_icon_stroke {
stroke: rgba(15, 22, 33, 0.8);
}
.H_btn.H_active {
background-color: #CFD0D3;
}
.H_rdo .H_btn.H_active {
background: none;
}
.H_active > svg.H_icon,
.H_active:hover > svg.H_icon {
fill: #0F1621 !important;
}
.H_active > svg.H_icon .H_icon_stroke,
.H_active:hover > svg.H_icon .H_icon_stroke {
stroke: #0F1621;
}
.H_disabled svg.H_icon,
.H_disabled:hover svg.H_icon {
fill: rgba(15, 22, 33, 0.2);
cursor: default;
}
.H_disabled svg.H_icon .H_icon_stroke,
.H_disabled:hover svg.H_icon .H_icon_stroke {
stroke: rgba(15, 22, 33, 0.2);
}
/*############################################### OVERVIEW MAP #####################################################*/
.H_overview {
transition: width 0.2s,height 0.2s,margin-top 0.2s, padding 0.2s;
width: 0em;
height: 0em;
overflow: hidden;
cursor: default;
position: absolute;
margin: auto;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
box-shadow: 0em 0 0.4em 0 rgba(15, 22, 33, 0.6);
}
.H_l_vertical .H_overview_active {
margin: auto 5px;
}
.H_l_horizontal .H_overview_active {
margin: 5px auto;
}
.H_l_center .H_overview {
left: -9999px;
right: -9999px;
}
.H_l_middle .H_overview {
top: -9999px;
bottom: -9999px;
}
.H_l_right .H_overview {
right: 100%;
}
.H_l_left .H_overview {
left: 100%;
}
.H_l_bottom .H_overview {
bottom: 0;
}
.H_l_center.H_l_bottom .H_overview {
bottom: 100%;
}
.H_l_top .H_overview {
top: 0;
}
.H_l_center.H_l_top .H_overview {
top: 100%;
}
.H_overview .H_overview_map {
background-color: rgba(256,256,256,0.6);
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
box-shadow: 0em 0 0.4em 0 rgba(15, 22, 33, 0.6);
}
.H_overview_map .H_ui {
display: none;
}
.H_zoom_lasso {
position: absolute;
display: none;
box-shadow: 0em 0 0.4em 0 rgba(15, 22, 33, 0.6);
z-index: 100000;
background-color: rgba(15, 22, 33, 0.2);
}
/**
* The code below uses open source software. Please visit the URL below for an overview of the licenses:
* http://js.api.here.com/v3/3.1.8.1/HERE_NOTICE
*/
H.util.eval("var Ys={};function Zs(a){var b=a.ownerDocument,c=b.documentElement;b=b.defaultView;var d=a.getBoundingClientRect();a=d.left;d=d.top;isNaN(b.pageXOffset)?(a+=c.scrollLeft,d+=c.scrollTop):(a+=b.pageXOffset,d+=b.pageYOffset);return new H(a,d)}function $s(a,b,c){b=Tb(b)?b+\"px\":b;c=Tb(c)?c+\"px\":c;a.style[jf(\"transform\")]=\"translate(\"+b+\",\"+c+\")\"}\nvar at={TOP_LEFT:\"top-left\",TOP_CENTER:\"top-center\",TOP_RIGHT:\"top-right\",LEFT_TOP:\"left-top\",LEFT_MIDDLE:\"left-middle\",LEFT_BOTTOM:\"left-bottom\",RIGHT_TOP:\"right-top\",RIGHT_MIDDLE:\"right-middle\",RIGHT_BOTTOM:\"right-bottom\",BOTTOM_LEFT:\"bottom-left\",BOTTOM_CENTER:\"bottom-center\",BOTTOM_RIGHT:\"bottom-right\"};u(\"H.ui.LayoutAlignment\",at);function bt(a,b){var c={},d={};c[\"top-left\"]=ct(b,\"div\",[dt,et].join(\" \"));c[\"top-center\"]=ct(b,\"div\",[dt,ft,gt,et].join(\" \"));c[\"top-right\"]=ct(b,\"div\",[dt,et].join(\" \"));c[\"left-top\"]=ct(b,\"div\",[dt,ht].join(\" \"));c[\"left-middle\"]=ct(b,\"div\",[dt,it,jt,ht].join(\" \"));c[\"left-bottom\"]=ct(b,\"div\",[dt,ht].join(\" \"));c[\"right-top\"]=ct(b,\"div\",[dt,ht].join(\" \"));c[\"right-middle\"]=ct(b,\"div\",[dt,kt,jt,ht].join(\" \"));c[\"right-bottom\"]=ct(b,\"div\",[dt,ht].join(\" \"));c[\"bottom-left\"]=ct(b,\"div\",[dt,et].join(\" \"));\nc[\"bottom-center\"]=ct(b,\"div\",[dt,lt,gt,et].join(\" \"));c[\"bottom-right\"]=ct(b,\"div\",[dt,et].join(\" \"));d[\"top-left\"]=ct(b,\"div\",[ft,it].join(\" \"));d[\"top-right\"]=ct(b,\"div\",[ft,kt].join(\" \"));d[\"bottom-left\"]=ct(b,\"div\",[lt,it].join(\" \"));d[\"bottom-right\"]=ct(b,\"div\",[lt,kt].join(\" \"));mt(d[\"top-left\"],c[\"top-left\"],c[\"left-top\"]);mt(d[\"top-right\"],c[\"top-right\"],c[\"right-top\"]);mt(d[\"bottom-left\"],c[\"left-bottom\"],c[\"bottom-left\"]);mt(d[\"bottom-right\"],c[\"right-bottom\"],c[\"bottom-right\"]);mt(a,d[\"top-left\"],\nd[\"top-right\"],d[\"bottom-left\"],d[\"bottom-right\"],c[\"top-center\"],c[\"left-middle\"],c[\"right-middle\"],c[\"bottom-center\"]);this.a=c}var ft=\"H_l_top\",lt=\"H_l_bottom\",it=\"H_l_left\",kt=\"H_l_right\",gt=\"H_l_center\",jt=\"H_l_middle\",et=\"H_l_horizontal\",ht=\"H_l_vertical\",dt=\"H_l_anchor\";bt.prototype.update=function(){var a=this.a;nt(a[\"top-center\"],!0);nt(a[\"bottom-center\"],!0);nt(a[\"left-middle\"],!1);nt(a[\"right-middle\"],!1)};\nfunction nt(a,b){b?(b=a.offsetWidth,a.style.marginLeft=-Math.round(.5*b)+\"px\"):(b=a.offsetHeight,a.style.marginTop=-Math.round(.5*b)+\"px\")}bt.prototype.put=function(a,b){a=a?a.J():null;var c=b?this.a[b]:null;a&&c&&(a.parentElement&&a.parentElement.removeChild(a),c.insertBefore(a,/(bottom|right)$/.test(b)||/(center|middle)/.test(b)&&c.childNodes.length%2?c.firstChild:null));this.update()};var ot={IMPERIAL:\"imperial\",METRIC:\"metric\"};u(\"H.ui.UnitSystem\",ot);function pt(){this.a=this.kj()}pt.prototype.kj=function(){var a=Function(\"return this;\")(),b=a.navigator,c=[];b&&(b.msPointerEnabled?c.push(qt):b.pointerEnabled&&c.push(rt));1>c.length&&(\"TouchEvent\"in a&&c.push(st),c.push(tt));return c};pt.prototype.detectEventSets=pt.prototype.kj;pt.prototype.addEventListener=function(a,b,c,d){for(var e=this.a,f,g=e.length,h=!1;g--;)if(f=e[g][b])h=!0,a.addEventListener(f,c,d||!1);h||a.addEventListener(b,c,d||!1)};\npt.prototype.removeEventListener=function(a,b,c,d){for(var e=this.a,f,g=e.length,h=!1;g--;)if(f=e[g][b])h=!0,a.removeEventListener(f,c,d||!1);h||a.removeEventListener(b,c,d||!1)};\nvar rt={start:\"pointerdown\",end:\"pointerup\",move:\"pointermove\",cancel:\"pointercancel\",over:\"pointerover\",out:\"pointerout\",hover:\"pointerhover\"},qt={start:\"MSPointerDown\",end:\"MSPointerUp\",move:\"MSPointerMove\",cancel:\"MSPointerCancel\",over:\"MSPointerOver\",out:\"MSPointerOut\",hover:\"MSPointerHover\"},st={start:\"touchstart\",end:\"touchend\",move:\"touchmove\",cancel:\"touchcancel\"},tt={start:\"mousedown\",end:\"mouseup\",move:\"mousemove\",over:\"mouseover\",out:\"mouseout\",hover:\"mousehover\"};function ct(a,b,c,d){a=a.createElement(b);c&&(a.className=c);d&&(a.innerHTML=d);return a}function mt(a,b){for(var c=1,d=arguments.length;c<d;c++)a.appendChild(arguments[c])}var ut=new pt;function vt(a,b,c){ut.addEventListener(a,b,c,void 0)}function wt(a,b,c){ut.removeEventListener(a,b,c,void 0)};var xt=[];u(\"H.ui.i18n.defaultLocales\",xt);var yt={},zt=[];function At(a,b){yt[a]=b;-1===xt.indexOf(a)&&xt.push(a);zt.length?Bt(a,b):zt=Object.keys(b)}function Bt(a,b){for(var c=zt,d=c.length,e;d--;)if(e=c[d],!b[e])throw Error(\"'\"+e+\"' key missing in translation map for \"+a);};At(\"nl-NL\",{\"layers.normal\":\"Kaartweergave\",\"layers.satellite\":\"Satelliet\",\"layers.terrain\":\"Terrein\",\"layer.transit\":\"Openbaar vervoer\",\"layer.traffic\":\"Verkeerssituatie\",\"layer.incidents\":\"Toon verkeersincidenten\",\"layers.choose\":\"Weergave kiezen\",minimap:\"Minimap\",\"scale.switchToImperial\":\"Overgaan naar mijlen\",\"scale.switchToMetric\":\"Wijzigen naar km\",\"scale.km\":\"km\",\"scale.m\":\"m\",\"scale.mi\":\"mi\",\"scale.ft\":\"ft\",\"zoom.out\":\"Uitzoomen\",\"zoom.in\":\"Inzoomen\",\"zoom.rectangle\":\"Zoom rectangle\",\"traffic.MASS_TRANSIT\":\"Openbaar vervoer\",\n\"traffic.MISCELLANEOUS\":\"Diversen\",\"traffic.ACCIDENT\":\"Ongeval\",\"traffic.OTHER_NEWS\":\"Meer informatie\",\"traffic.PLANNED_EVENT\":\"Geplande afzetting\",\"traffic.ROAD_HAZARD\":\"Gevaar op de weg\",\"traffic.WEATHER\":\"Weer\",\"traffic.CONGESTION\":\"Verkeersopstopping\",\"traffic.CONSTRUCTION\":\"Wegwerkzaamheden\",\"traffic.DISABLED_VEHICLE\":\"Voertuig met pech\",\"traffic.from\":\"Begintijd:\",\"traffic.until\":\"Geschatte eindtijd:\",\"distance.measurement\":\"Measure distance\"});At(\"pt-PT\",{\"layers.normal\":\"Vista do mapa\",\"layers.satellite\":\"Sat\\u00e9lite\",\"layers.terrain\":\"Terreno\",\"layer.transit\":\"Transportes p\\u00fablicos\",\"layer.traffic\":\"Condi\\u00e7\\u00f5es de tr\\u00e2nsito\",\"layer.incidents\":\"Mostrar incidentes de tr\\u00e2nsito\",\"layers.choose\":\"Escolher vista\",minimap:\"Minimap\",\"scale.switchToImperial\":\"Mudar para milhas\",\"scale.switchToMetric\":\"Mudar para km\",\"scale.km\":\"km\",\"scale.m\":\"m\",\"scale.mi\":\"mi\",\"scale.ft\":\"ft\",\"zoom.out\":\"Diminuir\",\"zoom.in\":\"Aumentar\",\n\"zoom.rectangle\":\"Zoom rectangle\",\"traffic.MASS_TRANSIT\":\"Transportes p\\u00fablicos\",\"traffic.MISCELLANEOUS\":\"Diversos\",\"traffic.ACCIDENT\":\"Acidente\",\"traffic.OTHER_NEWS\":\"Outras not\\u00edcias\",\"traffic.PLANNED_EVENT\":\"Evento planeado\",\"traffic.ROAD_HAZARD\":\"Perigo na estrada\",\"traffic.WEATHER\":\"Meteorologia\",\"traffic.CONGESTION\":\"Congestionamento\",\"traffic.CONSTRUCTION\":\"Constru\\u00e7\\u00e3o\",\"traffic.DISABLED_VEHICLE\":\"Ve\\u00edculo avariado\",\"traffic.from\":\"Hora de in\\u00edcio:\",\"traffic.until\":\"Hora de fim prevista:\",\n\"distance.measurement\":\"Measure distance\"});At(\"ru-RU\",{\"layers.normal\":\"\\u0420\\u0435\\u0436\\u0438\\u043c \\u043a\\u0430\\u0440\\u0442\\u044b\",\"layers.satellite\":\"\\u0421\\u043f\\u0443\\u0442\\u043d\\u0438\\u043a\\u043e\\u0432\\u0430\\u044f\",\"layers.terrain\":\"\\u041c\\u0435\\u0441\\u0442\\u043d\\u043e\\u0441\\u0442\\u044c\",\"layer.transit\":\"\\u041e\\u0431\\u0449\\u0435\\u0441\\u0442\\u0432\\u0435\\u043d\\u043d\\u044b\\u0439 \\u0442\\u0440\\u0430\\u043d\\u0441\\u043f\\u043e\\u0440\\u0442\",\"layer.traffic\":\"\\u0414\\u043e\\u0440\\u043e\\u0436\\u043d\\u044b\\u0435 \\u0443\\u0441\\u043b\\u043e\\u0432\\u0438\\u044f\",\n\"layer.incidents\":\"\\u041f\\u043e\\u043a\\u0430\\u0437\\u0430\\u0442\\u044c \\u0434\\u043e\\u0440\\u043e\\u0436\\u043d\\u044b\\u0435 \\u0441\\u043e\\u0431\\u044b\\u0442\\u0438\\u044f\",\"layers.choose\":\"\\u0412\\u044b\\u0431\\u0435\\u0440\\u0438\\u0442\\u0435 \\u0432\\u0438\\u0434\",minimap:\"Minimap\",\"scale.switchToImperial\":\"\\u0418\\u0441\\u043f\\u043e\\u043b\\u044c\\u0437\\u043e\\u0432\\u0430\\u0442\\u044c \\u043c\\u0438\\u043b\\u0438\",\"scale.switchToMetric\":\"\\u0418\\u0441\\u043f\\u043e\\u043b\\u044c\\u0437\\u043e\\u0432\\u0430\\u0442\\u044c \\u043a\\u0438\\u043b\\u043e\\u043c\\u0435\\u0442\\u0440\\u044b\",\n\"scale.km\":\"\\u043a\\u043c\",\"scale.m\":\"\\u043c\",\"scale.mi\":\"\\u043c\\u0438\\u043b\\u044c\",\"scale.ft\":\"\\u0444\\u0443\\u0442\",\"zoom.out\":\"\\u041e\\u0442\\u0434\\u0430\\u043b\\u0438\\u0442\\u044c\",\"zoom.in\":\"\\u041f\\u0440\\u0438\\u0431\\u043b\\u0438\\u0437\\u0438\\u0442\\u044c\",\"zoom.rectangle\":\"Zoom rectangle\",\"traffic.MASS_TRANSIT\":\"\\u041e\\u0431\\u0449\\u0435\\u0441\\u0442\\u0432\\u0435\\u043d\\u043d\\u044b\\u0439 \\u0442\\u0440\\u0430\\u043d\\u0441\\u043f\\u043e\\u0440\\u0442\",\"traffic.MISCELLANEOUS\":\"\\u041f\\u0440\\u043e\\u0447\\u0435\\u0435 \\u0414\\u0422\\u041f\",\n\"traffic.ACCIDENT\":\"\\u0414\\u0422\\u041f\",\"traffic.OTHER_NEWS\":\"\\u0414\\u0440\\u0443\\u0433\\u0438\\u0435 \\u043d\\u043e\\u0432\\u043e\\u0441\\u0442\\u0438\",\"traffic.PLANNED_EVENT\":\"\\u041f\\u043b\\u0430\\u043d\\u043e\\u0432\\u043e\\u0435 \\u043c\\u0435\\u0440\\u043e\\u043f\\u0440\\u0438\\u044f\\u0442\\u0438\\u0435\",\"traffic.ROAD_HAZARD\":\"\\u0414\\u043e\\u0440\\u043e\\u0436\\u043d\\u0430\\u044f \\u043e\\u043f\\u0430\\u0441\\u043d\\u043e\\u0441\\u0442\\u044c\",\"traffic.WEATHER\":\"\\u041f\\u043e\\u0433\\u043e\\u0434\\u0430\",\"traffic.CONGESTION\":\"\\u041f\\u0440\\u043e\\u0431\\u043a\\u0430\",\n\"traffic.CONSTRUCTION\":\"\\u0420\\u0435\\u043c\\u043e\\u043d\\u0442\",\"traffic.DISABLED_VEHICLE\":\"\\u041d\\u0435\\u0438\\u0441\\u043f\\u0440\\u0430\\u0432\\u043d\\u044b\\u0439 \\u0430\\u0432\\u0442\\u043e\\u043c\\u043e\\u0431\\u0438\\u043b\\u044c\",\"traffic.from\":\"\\u0412\\u0440\\u0435\\u043c\\u044f \\u043d\\u0430\\u0447\\u0430\\u043b\\u0430:\",\"traffic.until\":\"\\u041e\\u0436\\u0438\\u0434\\u0430\\u0435\\u043c\\u043e\\u0435 \\u0432\\u0440\\u0435\\u043c\\u044f \\u043e\\u043a\\u043e\\u043d\\u0447\\u0430\\u043d\\u0438\\u044f:\",\"distance.measurement\":\"\\u0418\\u0437\\u043c\\u0435\\u0440\\u0438\\u0442\\u044c \\u0440\\u0430\\u0441\\u0441\\u0442\\u043e\\u044f\\u043d\\u0438\\u0435\"});At(\"fi-FI\",{\"layers.normal\":\"Karttan\\u00e4kym\\u00e4\",\"layers.satellite\":\"Satelliitti\",\"layers.terrain\":\"Maasto\",\"layer.transit\":\"Julkinen liikenne\",\"layer.traffic\":\"Liikenneolosuhteet\",\"layer.incidents\":\"N\\u00e4yt\\u00e4 liikennetapahtumat\",\"layers.choose\":\"Valitse n\\u00e4kym\\u00e4\",minimap:\"Minimap\",\"scale.switchToImperial\":\"Vaihda maileihin\",\"scale.switchToMetric\":\"Vaihda kilometreihin\",\"scale.km\":\"km\",\"scale.m\":\"m\",\"scale.mi\":\"mi\",\"scale.ft\":\"ft\",\"zoom.out\":\"Loitonna\",\"zoom.in\":\"L\\u00e4henn\\u00e4\",\n\"zoom.rectangle\":\"Zoom rectangle\",\"traffic.MASS_TRANSIT\":\"Julkinen liikenne\",\"traffic.MISCELLANEOUS\":\"Erittelem\\u00e4t\\u00f6n syy\",\"traffic.ACCIDENT\":\"Onnettomuus\",\"traffic.OTHER_NEWS\":\"Muu tapahtuma\",\"traffic.PLANNED_EVENT\":\"Suunniteltu tapahtuma\",\"traffic.ROAD_HAZARD\":\"Vaara tiell\\u00e4\",\"traffic.WEATHER\":\"S\\u00e4\\u00e4\",\"traffic.CONGESTION\":\"Ruuhka\",\"traffic.CONSTRUCTION\":\"Rakennusty\\u00f6\",\"traffic.DISABLED_VEHICLE\":\"Pys\\u00e4htynyt ajoneuvo\",\"traffic.from\":\"Alkamisaika:\",\"traffic.until\":\"Arvioitu p\\u00e4\\u00e4ttymisaika:\",\n\"distance.measurement\":\"Measure distance\"});At(\"pt-BR\",{\"layers.normal\":\"Exibi\\u00e7\\u00e3o do mapa\",\"layers.satellite\":\"Sat\\u00e9lite\",\"layers.terrain\":\"Terreno\",\"layer.transit\":\"Transporte p\\u00fablico\",\"layer.traffic\":\"Condi\\u00e7\\u00f5es do tr\\u00e2nsito\",\"layer.incidents\":\"Mostrar incidentes no tr\\u00e2nsito\",\"layers.choose\":\"Escolher exibi\\u00e7\\u00e3o\",minimap:\"Minimap\",\"scale.switchToImperial\":\"Mudar para milhas\",\"scale.switchToMetric\":\"Mudar para km\",\"scale.km\":\"km\",\"scale.m\":\"m\",\"scale.mi\":\"milhas\",\"scale.ft\":\"p\\u00e9s\",\"zoom.out\":\"Menos zoom\",\n\"zoom.in\":\"Mais zoom\",\"zoom.rectangle\":\"Zoom rectangle\",\"traffic.MASS_TRANSIT\":\"Transporte p\\u00fablico\",\"traffic.MISCELLANEOUS\":\"Miscel\\u00e2nea\",\"traffic.ACCIDENT\":\"Acidente\",\"traffic.OTHER_NEWS\":\"Outras not\\u00edcias\",\"traffic.PLANNED_EVENT\":\"Evento planejado\",\"traffic.ROAD_HAZARD\":\"Risco na estrada\",\"traffic.WEATHER\":\"Clima\",\"traffic.CONGESTION\":\"Congestionamento\",\"traffic.CONSTRUCTION\":\"Constru\\u00e7\\u00e3o\",\"traffic.DISABLED_VEHICLE\":\"Ve\\u00edculo incapacitado\",\"traffic.from\":\"Hora de in\\u00edcio:\",\n\"traffic.until\":\"Tempo final estimado:\",\"distance.measurement\":\"Measure distance\"});At(\"zh-CN\",{\"layers.normal\":\"\\u5730\\u56fe\\u89c6\\u56fe\",\"layers.satellite\":\"\\u536b\\u661f\",\"layers.terrain\":\"\\u5730\\u5f62\",\"layer.transit\":\"\\u516c\\u5171\\u4ea4\\u901a\",\"layer.traffic\":\"\\u4ea4\\u901a\\u60c5\\u51b5\",\"layer.incidents\":\"\\u663e\\u793a\\u4ea4\\u901a\\u4e8b\\u4ef6\",\"layers.choose\":\"\\u9009\\u62e9\\u89c6\\u56fe\",minimap:\"Minimap\",\"scale.switchToImperial\":\"\\u5207\\u6362\\u4e3a\\u300c\\u82f1\\u91cc\\u300d\",\"scale.switchToMetric\":\"\\u5207\\u6362\\u4e3a\\u300c\\u516c\\u91cc\\u300d\",\"scale.km\":\"\\u516c\\u91cc\",\"scale.m\":\"\\u7c73\",\n\"scale.mi\":\"\\u82f1\\u91cc\",\"scale.ft\":\"\\u82f1\\u5c3a\",\"zoom.out\":\"\\u7f29\\u5c0f\",\"zoom.in\":\"\\u653e\\u5927\",\"zoom.rectangle\":\"Zoom rectangle\",\"traffic.MASS_TRANSIT\":\"\\u516c\\u5171\\u4ea4\\u901a\",\"traffic.MISCELLANEOUS\":\"\\u7efc\\u5408\\u4e8b\\u4ef6\",\"traffic.ACCIDENT\":\"\\u4ea4\\u901a\\u610f\\u5916\",\"traffic.OTHER_NEWS\":\"\\u5176\\u4ed6\\u65b0\\u95fb\",\"traffic.PLANNED_EVENT\":\"\\u9884\\u5b9a\\u4e8b\\u4ef6\",\"traffic.ROAD_HAZARD\":\"\\u9053\\u8def\\u5371\\u9669\",\"traffic.WEATHER\":\"\\u5929\\u6c14\",\"traffic.CONGESTION\":\"\\u5835\\u585e\",\n\"traffic.CONSTRUCTION\":\"\\u65bd\\u5de5\",\"traffic.DISABLED_VEHICLE\":\"\\u8f66\\u8f86\\u629b\\u951a\",\"traffic.from\":\"\\u5f00\\u59cb\\u65f6\\u95f4\\uff1a\",\"traffic.until\":\"\\u9884\\u8ba1\\u7ed3\\u675f\\u65f6\\u95f4\\uff1a\",\"distance.measurement\":\"Measure distance\"});At(\"es-ES\",{\"layers.normal\":\"Mapa\",\"layers.satellite\":\"Sat\\u00e9lite\",\"layers.terrain\":\"Terreno\",\"layer.transit\":\"Transporte p\\u00fablico\",\"layer.traffic\":\"Estado del tr\\u00e1fico\",\"layer.incidents\":\"Mostrar incidentes de tr\\u00e1fico\",\"layers.choose\":\"Elija una vista\",minimap:\"Minimap\",\"scale.switchToImperial\":\"Cambiar a millas\",\"scale.switchToMetric\":\"Cambiar a km\",\"scale.km\":\"km\",\"scale.m\":\"m\",\"scale.mi\":\"mi\",\"scale.ft\":\"ft\",\"zoom.out\":\"Alejar\",\"zoom.in\":\"Acercar\",\"zoom.rectangle\":\"Zoom rectangle\",\n\"traffic.MASS_TRANSIT\":\"Transporte p\\u00fablico\",\"traffic.MISCELLANEOUS\":\"Varios\",\"traffic.ACCIDENT\":\"Accidente\",\"traffic.OTHER_NEWS\":\"M\\u00e1s noticias\",\"traffic.PLANNED_EVENT\":\"Acto programado\",\"traffic.ROAD_HAZARD\":\"Riesgo en carretera\",\"traffic.WEATHER\":\"Tiempo\",\"traffic.CONGESTION\":\"Atasco\",\"traffic.CONSTRUCTION\":\"Construcci\\u00f3n\",\"traffic.DISABLED_VEHICLE\":\"Veh\\u00edculo averiado\",\"traffic.from\":\"Inicio:\",\"traffic.until\":\"Finalizaci\\u00f3n estimada:\",\"distance.measurement\":\"Measure distance\"});At(\"fr-FR\",{\"layers.normal\":\"Carte\",\"layers.satellite\":\"Satellite\",\"layers.terrain\":\"Terrain\",\"layer.transit\":\"Transports publics\",\"layer.traffic\":\"Conditions de circulation\",\"layer.incidents\":\"Afficher les incidents de circulation\",\"layers.choose\":\"Choisir la vue\",minimap:\"Minimap\",\"scale.switchToImperial\":\"Passer en miles\",\"scale.switchToMetric\":\"Passer en km\",\"scale.km\":\"km\",\"scale.m\":\"m\",\"scale.mi\":\"mi\",\"scale.ft\":\"ft\",\"zoom.out\":\"Zoom arri\\u00e8re\",\"zoom.in\":\"Zoom avant\",\"zoom.rectangle\":\"Zoom rectangle\",\n\"traffic.MASS_TRANSIT\":\"Transports publics\",\"traffic.MISCELLANEOUS\":\"Divers\",\"traffic.ACCIDENT\":\"Accident\",\"traffic.OTHER_NEWS\":\"Autre\",\"traffic.PLANNED_EVENT\":\"\\u00c9v\\u00e9nement pr\\u00e9vu\",\"traffic.ROAD_HAZARD\":\"Danger routier\",\"traffic.WEATHER\":\"M\\u00e9t\\u00e9o\",\"traffic.CONGESTION\":\"Embouteillage\",\"traffic.CONSTRUCTION\":\"Travaux\",\"traffic.DISABLED_VEHICLE\":\"V\\u00e9hicule en panne\",\"traffic.from\":\"Date ou heure de d\\u00e9but:\",\"traffic.until\":\"Date et heure de fin estim\\u00e9es:\",\"distance.measurement\":\"Measure distance\"});At(\"pl-PL\",{\"layers.normal\":\"Widok mapy\",\"layers.satellite\":\"Satelita\",\"layers.terrain\":\"Teren\",\"layer.transit\":\"Transport publiczny\",\"layer.traffic\":\"Warunki drogowe\",\"layer.incidents\":\"Poka\\u017c zdarzenia drogowe\",\"layers.choose\":\"Wybierz widok\",minimap:\"Minimap\",\"scale.switchToImperial\":\"Zmie\\u0144 na mile\",\"scale.switchToMetric\":\"Zmie\\u0144 na km\",\"scale.km\":\"km\",\"scale.m\":\"m\",\"scale.mi\":\"mi\",\"scale.ft\":\"ft\",\"zoom.out\":\"Oddal\",\"zoom.in\":\"Przybli\\u017c\",\"zoom.rectangle\":\"Zoom rectangle\",\"traffic.MASS_TRANSIT\":\"Transport publiczny\",\n\"traffic.MISCELLANEOUS\":\"Inne zdarzenie\",\"traffic.ACCIDENT\":\"Wypadek\",\"traffic.OTHER_NEWS\":\"Inne wiadomo\\u015bci\",\"traffic.PLANNED_EVENT\":\"Zdarzenie planowane\",\"traffic.ROAD_HAZARD\":\"Niebezpiecze\\u0144stwo na drodze\",\"traffic.WEATHER\":\"Pogoda\",\"traffic.CONGESTION\":\"Korek\",\"traffic.CONSTRUCTION\":\"Budowa\",\"traffic.DISABLED_VEHICLE\":\"Uszkodzony pojazd\",\"traffic.from\":\"Data rozpocz\\u0119cia:\",\"traffic.until\":\"Przybli\\u017cona data zako\\u0144czenia:\",\"distance.measurement\":\"Measure distance\"});At(\"de-DE\",{\"layers.normal\":\"Kartenansicht\",\"layers.satellite\":\"Satellit\",\"layers.terrain\":\"Gel\\u00e4nde\",\"layer.transit\":\"\\u00d6ffentliche Verkehrsmittel\",\"layer.traffic\":\"Verkehrslage\",\"layer.incidents\":\"Verkehrsst\\u00f6rungen anzeigen\",\"layers.choose\":\"Ansicht ausw\\u00e4hlen\",minimap:\"Minimap\",\"scale.switchToImperial\":\"Umrechnung in Meilen\",\"scale.switchToMetric\":\"Umrechnung in Kilometer\",\"scale.km\":\"km\",\"scale.m\":\"m\",\"scale.mi\":\"mi\",\"scale.ft\":\"ft\",\"zoom.out\":\"Verkleinern\",\"zoom.in\":\"Vergr\\u00f6\\u00dfern\",\n\"zoom.rectangle\":\"Zoom rectangle\",\"traffic.MASS_TRANSIT\":\"\\u00d6ffentliche Verkehrsmittel\",\"traffic.MISCELLANEOUS\":\"Diverse\",\"traffic.ACCIDENT\":\"Unfall\",\"traffic.OTHER_NEWS\":\"Anderes Ereignis\",\"traffic.PLANNED_EVENT\":\"Geplantes Ereignis\",\"traffic.ROAD_HAZARD\":\"Verkehrshindernis\",\"traffic.WEATHER\":\"Wetter\",\"traffic.CONGESTION\":\"Verkehrsstau\",\"traffic.CONSTRUCTION\":\"Baustelle\",\"traffic.DISABLED_VEHICLE\":\"Liegengebliebenes Fahrzeug\",\"traffic.from\":\"Beginn:\",\"traffic.until\":\"Voraussichtliches Ende:\",\n\"distance.measurement\":\"Measure distance\"});At(\"tr-TR\",{\"layers.normal\":\"Harita g\\u00f6r\\u00fcn\\u00fcm\\u00fc\",\"layers.satellite\":\"Uydu\",\"layers.terrain\":\"Arazi\",\"layer.transit\":\"Toplu ula\\u015f\\u0131m\",\"layer.traffic\":\"Trafik durumlar\\u0131\",\"layer.incidents\":\"Trafik olaylar\\u0131n\\u0131 g\\u00f6ster\",\"layers.choose\":\"G\\u00f6r\\u00fcn\\u00fcm se\\u00e7\",minimap:\"Minimap\",\"scale.switchToImperial\":\"Mile d\\u00f6n\\u00fc\\u015ft\\u00fcr\",\"scale.switchToMetric\":\"Kilometreye d\\u00f6n\\u00fc\\u015ft\\u00fcr\",\"scale.km\":\"km\",\"scale.m\":\"m\",\"scale.mi\":\"mil\",\"scale.ft\":\"ft\",\n\"zoom.out\":\"Uzakla\\u015ft\\u0131r\",\"zoom.in\":\"Yak\\u0131nla\\u015ft\\u0131r\",\"zoom.rectangle\":\"Zoom rectangle\",\"traffic.MASS_TRANSIT\":\"Toplu ula\\u015f\\u0131m\",\"traffic.MISCELLANEOUS\":\"\\u00c7e\\u015fitli\",\"traffic.ACCIDENT\":\"Kaza\",\"traffic.OTHER_NEWS\":\"Di\\u011fer haberler\",\"traffic.PLANNED_EVENT\":\"Planl\\u0131 etkinlik\",\"traffic.ROAD_HAZARD\":\"Yol tehlikesi\",\"traffic.WEATHER\":\"Hava durumu\",\"traffic.CONGESTION\":\"Yo\\u011funluk\",\"traffic.CONSTRUCTION\":\"Yol \\u00e7al\\u0131\\u015fmas\\u0131\",\"traffic.DISABLED_VEHICLE\":\"Ara\\u00e7 ar\\u0131zas\\u0131\",\n\"traffic.from\":\"Ba\\u015flang\\u0131\\u00e7 zaman\\u0131:\",\"traffic.until\":\"Tahmini biti\\u015f zaman\\u0131:\",\"distance.measurement\":\"Measure distance\"});At(\"it-IT\",{\"layers.normal\":\"Vista mappa\",\"layers.satellite\":\"Satellite\",\"layers.terrain\":\"Terreno\",\"layer.transit\":\"Mezzi pubblici\",\"layer.traffic\":\"Condizioni del traffico\",\"layer.incidents\":\"Mostra incidenti stradali\",\"layers.choose\":\"Scegli vista\",minimap:\"Minimap\",\"scale.switchToImperial\":\"Passa a miglia\",\"scale.switchToMetric\":\"Passa a km\",\"scale.km\":\"km\",\"scale.m\":\"m\",\"scale.mi\":\"mi\",\"scale.ft\":\"ft\",\"zoom.out\":\"Zoom indietro\",\"zoom.in\":\"Zoom avanti\",\"zoom.rectangle\":\"Zoom rectangle\",\"traffic.MASS_TRANSIT\":\"Mezzi pubblici\",\n\"traffic.MISCELLANEOUS\":\"Varie\",\"traffic.ACCIDENT\":\"Incidente\",\"traffic.OTHER_NEWS\":\"Altre notizie\",\"traffic.PLANNED_EVENT\":\"Evento pianificato\",\"traffic.ROAD_HAZARD\":\"Strada dissestata\",\"traffic.WEATHER\":\"Maltempo\",\"traffic.CONGESTION\":\"Ingorgo\",\"traffic.CONSTRUCTION\":\"Lavori in corso\",\"traffic.DISABLED_VEHICLE\":\"Veicolo in panne\",\"traffic.from\":\"Ora di inizio:\",\"traffic.until\":\"Ora di fine stimata:\",\"distance.measurement\":\"Measure distance\"});At(\"en-US\",{\"layers.normal\":\"Map view\",\"layers.satellite\":\"Satellite\",\"layers.terrain\":\"Terrain\",\"layer.transit\":\"Public transport\",\"layer.traffic\":\"Traffic conditions\",\"layer.incidents\":\"Show traffic incidents\",\"layers.choose\":\"Choose view\",minimap:\"Minimap\",\"scale.switchToImperial\":\"Change to miles\",\"scale.switchToMetric\":\"Change to km\",\"scale.km\":\"km\",\"scale.m\":\"m\",\"scale.mi\":\"mi\",\"scale.ft\":\"ft\",\"zoom.out\":\"Zoom out\",\"zoom.in\":\"Zoom in\",\"zoom.rectangle\":\"Zoom rectangle\",\"traffic.MASS_TRANSIT\":\"Public transport\",\n\"traffic.MISCELLANEOUS\":\"Miscellaneous\",\"traffic.ACCIDENT\":\"Accident\",\"traffic.OTHER_NEWS\":\"Other news\",\"traffic.PLANNED_EVENT\":\"Planned event\",\"traffic.ROAD_HAZARD\":\"Road hazard\",\"traffic.WEATHER\":\"Weather\",\"traffic.CONGESTION\":\"Congestion\",\"traffic.CONSTRUCTION\":\"Construction\",\"traffic.DISABLED_VEHICLE\":\"Disabled vehicle\",\"traffic.from\":\"Start time:\",\"traffic.until\":\"Estimated end time:\",\"distance.measurement\":\"Measure distance\"});function Ct(a,b){if(!ra(a))throw new TypeError(\"string locale code required\");if(wa(b))Bt(a,b);else{if(-1===xt.indexOf(a))throw Error(\"Default locale '\"+a+\"' does nto exist.\");b=yt[a]}this.a=b||{};this.b=a}u(\"H.ui.i18n.Localization\",Ct);Ct.prototype.ym=function(){return this.b};Ct.prototype.getLocale=Ct.prototype.ym;Ct.prototype.sm=function(){return Object.keys(this.a)};Ct.prototype.getKeys=Ct.prototype.sm;Ct.prototype.qh=function(a){return!(!this.a||!this.a[a])};Ct.prototype.hasKey=Ct.prototype.qh;\nCt.prototype.translate=function(a){var b=this.a[a];if(!ra(b))throw Error(\"Translation missing for key '\"+a+\"'.\");return b};Ct.prototype.translate=Ct.prototype.translate;function X(a,b){G.call(this);this.Qa=a||\"div\";this.i=b?b.split(\" \"):[];this.i.push(\"H_el\");this.Ca(!1)}w(X,G);u(\"H.ui.base.Element\",X);X.prototype.V=function(a){if(!a)throw Error(\"Wrong document object\");this.O=ct(a,this.Qa,this.i.join(\" \"));this.renderInternal(this.O,a);this.Ca(this.Dc(),!0);Dt(this,this.X);this.wb(this.g);return this.O};X.prototype.$=function(){};X.prototype.G=function(){};X.prototype.S=function(){};X.prototype.renderInternal=X.prototype.S;X.prototype.Dc=function(){return this.u};\nX.prototype.isDisabled=X.prototype.Dc;X.prototype.Ca=function(a,b){if(a!==this.u||b)(this.u=a)?this.Oa(\"H_disabled\"):this.mb(\"H_disabled\");return this};X.prototype.setDisabled=X.prototype.Ca;X.prototype.D=null;X.prototype.getData=function(){return this.D};X.prototype.getData=X.prototype.getData;X.prototype.setData=function(a){this.D=a};X.prototype.setData=X.prototype.setData;function Dt(a,b){var c=a.J();a.X=b;c&&(b?c.setAttribute(\"title\",b):c.removeAttribute(\"title\"))}X.prototype.O=null;\nX.prototype.J=function(){return this.O};X.prototype.getElement=X.prototype.J;X.prototype.g=!0;X.prototype.wb=function(a){var b=this.J();this.g=a;b&&(b.style.display=a?\"\":\"none\")};X.prototype.setVisibility=X.prototype.wb;X.prototype.Ac=function(){return this.g};X.prototype.getVisibility=X.prototype.Ac;X.prototype.Oa=function(a){var b=this.J();0>this.i.indexOf(a)&&this.i.push(a);b&&(b.className=this.i.join(\" \"));return this};X.prototype.addClass=X.prototype.Oa;\nX.prototype.mb=function(a){a=this.i.indexOf(a);var b=this.J();-1<a&&this.i.splice(a,1);b&&(b.className=this.i.join(\" \"));return this};X.prototype.removeClass=X.prototype.mb;function Et(a){(a=a.J())&&a.parentNode&&a.parentNode.removeChild(a)}X.prototype.s=function(){X.l.s.call(this);Et(this);this.X=this.D=this.O=null};function Ft(a,b,c){X.call(this,a,b);this.b=c?[].concat(c):[]}w(Ft,X);u(\"H.ui.base.Container\",Ft);Ft.prototype.Ca=function(a,b){var c=this.b?this.b.length:0;for(X.prototype.Ca.call(this,a,b);c--;)this.b[c].Ca(a,b);return this};Ft.prototype.setDisabled=Ft.prototype.Ca;Ft.prototype.Na=function(a){var b=this.J();this.b.push(a);b&&(a.V(b.ownerDocument),b.appendChild(a.J()));return this};Ft.prototype.addChild=Ft.prototype.Na;Ft.prototype.$g=function(){return[].concat(this.b)};\nFt.prototype.getChildren=Ft.prototype.$g;Ft.prototype.removeChild=function(a){var b=this.b.indexOf(a),c=this.J();0<=b&&(this.b.splice(b,1),c&&c.removeChild(a.J()))};Ft.prototype.removeChild=Ft.prototype.removeChild;Ft.prototype.ha=function(){var a=this.J();a&&this.b.forEach(function(b){a.removeChild(b.J())});this.b=[]};Ft.prototype.S=function(a,b){for(var c=0,d=this.b.length;c<d;c++)a.appendChild(this.b[c].V(b))};Ft.prototype.renderInternal=Ft.prototype.S;\nFt.prototype.s=function(){this.ha();this.b.forEach(this.ja,this);X.prototype.s.call(this)};Ft.prototype.ja=function(a){a.F()};function Gt(a){C(a,Ce,Gt,1);X.call(this,\"div\",\"H_context_menu_item\");this.b=a;this.c=A(this.c,this);this.a=A(this.a,this);this.b.addEventListener(\"update\",this.a)}w(Gt,X);u(\"H.ui.context.Item\",Gt);Gt.prototype.c=function(a){var b=this.b,c=b.callback;c&&!b.isDisabled()&&(this.dispatchEvent(\"click\"),c(a))};Gt.prototype.S=function(){var a=this,b=this.J();oe(b,\"click\",this.c);b.addEventListener(\"keyup\",function(b){13==b.keyCode&&a.c(b)});this.a()};Gt.prototype.renderInternal=Gt.prototype.S;\nGt.prototype.a=function(){var a=this.J(),b=this.b;b.callback?(this.Oa(\"clickable\"),a.setAttribute(\"tabindex\",\"0\")):(this.mb(\"clickable\"),a.removeAttribute(\"tabindex\"));b.isDisabled()?this.Oa(\"disabled\"):this.mb(\"disabled\");b=b.getLabel();Ht.textContent=b;a.innerHTML=Ht.innerHTML.split(\"\\n\").join(\"<br/>\")};Gt.prototype.s=function(){X.prototype.s.call(this);this.b.removeEventListener(\"update\",this.a)};var It=new X(\"div\",\"H_context_menu_item_separator\");function Jt(a){C(a,Array,Jt,1);Ft.call(this,\"div\",\"H_context_menu\");this.c=a;this.a=null}w(Jt,Ft);u(\"H.ui.context.Menu\",Jt);Jt.prototype.S=function(){Ft.prototype.S.apply(this,arguments);this.c.forEach(function(a){a===De?a=It:(a=new Gt(a),a.addEventListener(\"click\",this.f.bind(this)));this.Na(a)},this);oe(this.J(),[\"mousedown\",\"touchstart\",\"pointerdown\",\"wheel\"],function(a){a.stopPropagation()})};Jt.prototype.renderInternal=Jt.prototype.S;\nJt.prototype.setPosition=function(a,b){if(this.a){var c=this.J();var d=c.offsetWidth;var e=c.offsetHeight;var f=this.a;var g=f.Ba.width;f=f.Ba.height;a+d>g&&a>g/2&&(a-=d);b+e>f&&b>f/2&&(b-=e);$s(c,a,b)}};Jt.prototype.setPosition=Jt.prototype.setPosition;Jt.prototype.f=function(){this.a&&this.a.dispatchEvent(new Ec(\"contextmenuclose\",this.a))};Jt.prototype.Ma=function(a){this.a=a};Jt.prototype.setMap=Jt.prototype.Ma;function Kt(a,b){b=b||{};var c=this;X.call(this,\"div\",\"H_ib H_ib_top\");this.B=A(function(a){c.Dc()||(c.close(),a.preventDefault())},this);this.update=A(this.update,this);this.f=A(this.f,this);this.setPosition(a);this.df(b.content);b.onStateChange&&this.addEventListener(\"statechange\",b.onStateChange);this.R(Lt.OPEN)}w(Kt,X);u(\"H.ui.InfoBubble\",Kt);Kt.prototype.a=null;Kt.prototype.ya=function(){return this.b};Kt.prototype.setPosition=function(a){this.b=Jf(a);this.update()};\nKt.prototype.setPosition=Kt.prototype.setPosition;Kt.prototype.Ma=function(a){this.a=a};\nKt.prototype.S=function(a,b){this.o=ct(b,\"div\",\"H_ib_body\");this.tailEl_=ct(b,\"div\",\"H_ib_tail\");this.j=ct(b,\"div\",\"H_ib_close H_btn\",Mt);this.c=ct(b,\"div\",\"H_ib_content\",\"&nbsp;\");this.o.appendChild(this.j);this.o.appendChild(this.c);vt(this.j,\"start\",this.B);this.a.b.addEventListener(\"sync\",this.update);this.a.Ba.addEventListener(\"sync\",this.update);this.a.addEventListener(\"enginechange\",this.f);a.appendChild(this.o);a.appendChild(this.tailEl_);this.df(this.m)};\nKt.prototype.renderInternal=Kt.prototype.S;Kt.prototype.f=function(){this.v||(this.v=setTimeout(this.update,0))};Kt.prototype.update=function(){var a=this.J(),b=this.a,c,d=\"none\";this.v=0;if(b&&a&&this.getState()===Lt.OPEN){if(c=b.Ga(this.b)){var e=c.x;c=c.y;b=b.Ba.width;if(e>=-b||e<=2*b||c>=-b||c<=2*b)d=\"\",Nt?(a.style.left=e-b+\"px\",a.style.top=c+\"px\"):$s(a,e,c)}a.style.display=d;\"\"===d&&(a.style.visibility=\"visible\")}};var Lt={OPEN:\"open\",CLOSED:\"closed\"};Kt.State=Lt;Kt.prototype.C=Lt.OPEN;\nKt.prototype.getState=function(){return this.C};Kt.prototype.getState=Kt.prototype.getState;Kt.prototype.R=function(a){a!==this.C&&(this.C=a,this.dispatchEvent(\"statechange\"));if(a=this.J())this.C===Lt.OPEN?(a.style.display=\"block\",a.style.visibility=\"hidden\",this.f()):a.style.display=\"none\"};Kt.prototype.setState=Kt.prototype.R;Kt.prototype.close=function(){this.R(Lt.CLOSED)};Kt.prototype.close=Kt.prototype.close;Kt.prototype.open=function(){this.R(Lt.OPEN)};Kt.prototype.open=Kt.prototype.open;\nKt.prototype.am=function(){return this.c||null};Kt.prototype.getContentElement=Kt.prototype.am;\nKt.prototype.df=function(a){if(a)if(\"string\"===typeof a||\"number\"===typeof a.nodeType&&\"string\"===typeof a.nodeName)this.m=a;else throw Error(\"InfoBubble content must be a string or HTML node.\");else this.m=void 0;this.J()&&(this.m?(this.c.innerHTML=\"\",\"string\"===typeof this.m?this.c.innerHTML=a:\"number\"===typeof a.nodeType&&\"string\"===typeof a.nodeName&&this.c.appendChild(a)):this.c.innerHTML=\"&nbsp;\",this.f())};Kt.prototype.setContent=Kt.prototype.df;\nKt.prototype.s=function(){this.close();this.df(null);this.j&&wt(this.j,\"end\",this.B);this.a&&(this.a.b.removeEventListener(\"sync\",this.update),this.a.Ba.removeEventListener(\"sync\",this.update));X.prototype.s.call(this)};var Mt='<svg version=\"1.1\" class=\"H_icon\" viewBox=\"0 0 12 12\"><path d=\"m8.12 6 3.66-3.66c.29-.29.29-.76 0-1.05l-1.06-1.06c-.29-.29-.76-.29-1.05 0l-3.66 3.66-3.66-3.66c-.29-.29-.76-.29-1.05 0l-1.06 1.06c-.29.29-.3.76 0 1.05l3.66 3.66-3.66 3.66c-.29.29-.29.76 0 1.05l1.06 1.06c.29.29.76.29 1.05 0l3.66-3.66 3.66 3.66c.29.29.76.29 1.05 0l1.06-1.06c.29-.29.3-.76 0-1.05z\"></path></svg>';function Ot(a){this.c=a;this.a=this.b=null;this.i=0;this.g=22;this.f=A(this.f,this);a=this.c.wc();a.addEventListener(\"mapviewchange\",this.u,!1,this);a=a.a;a.addEventListener(\"add\",this.j,!1,this);a.addEventListener(\"remove\",this.m,!1,this)}function Pt(a,b){a.b&&b&&a.b===b.za()||(a.b&&a.b.removeEventListener(\"tap\",a.f),b?(a.b=b.za(),a.b.addEventListener(\"tap\",a.f),a.i=a.b.min,a.g=a.b.max):(a.b=null,a.i=0,a.g=22))}\nOt.prototype.u=function(a){var b=a.newValue.zoom;this.a&&a.modifiers&a.ZOOM&&(b<this.i||b>this.g)&&this.a.close()};Ot.prototype.j=function(a){a=a.added;Qt(a)&&Pt(this,a)};Ot.prototype.m=function(a){Qt(a.removed)&&(this.a&&this.a.close(),Pt(this,null))};function Qt(a){return window.H.service&&a.za()instanceof window.H.service.traffic.incidents.Provider}\nOt.prototype.f=function(a){var b;if(a.target&&(b=a.target.getData())&&0===a.currentPointer.button){this.a||(this.a=new Kt(a.target.pa()),this.a.Oa(\"H_tib\"),this.c.Wi(this.a));this.a.setPosition(a.target.pa());var c=b.TRAFFIC_ITEM_TYPE_DESC.replace(\" \",\"_\");this.c.xa().qh(\"traffic.\"+c)&&(c=this.c.xa().translate(\"traffic.\"+c));this.a.df('<div class=\"H_tib_content\"><div class=\"H_rdo_title\">{{title}}</div><div class=\"H_tib_desc\"><span>{{desc}}</span><div class=\"H_tib_time\"><span class=\"H_tib_left\">{{traffic.from}}</span><span class=\"H_tib_right\">{{from}}</span><br/><span class=\"H_tib_left\">{{traffic.until}}</span><span class=\"H_tib_right\">{{until}}</span></div></div>'.replace(\"{{title}}\",\nc).replace(\"{{desc}}\",b.TRAFFIC_ITEM_DESCRIPTION[0].value).replace(\"{{traffic.from}}\",this.c.xa().translate(\"traffic.from\")).replace(\"{{traffic.until}}\",this.c.xa().translate(\"traffic.until\")).replace(\"{{from}}\",b.START_TIME).replace(\"{{until}}\",b.END_TIME));this.a.open()}a.stopPropagation()};function Rt(a,b){var c=a.J(),d=this;G.call(this);this.a=a;this.i=c.ownerDocument;this.f={};this.c=[];new Ot(this);this.O=ct(this.i,\"div\",\"H_ui\");this.B=A(function(a){this.u.put(a.target,a.target.Sc)},this);this.addEventListener(\"alignmentchange\",this.B);this.G=A(function(){this.cl()},this);this.addEventListener(\"toggleunitsystem\",this.G);this.O.addEventListener(\"contextmenu\",this.v,!1);this.O.addEventListener(\"MSHoldVisual\",this.v,!1);this.a.addEventListener(\"contextmenu\",this.D,!1,this);this.a.addEventListener(\"contextmenuclose\",\nthis.o,!1,this);this.a.xb(this.F.bind(this));this.b=null;this.m=-1;this.u=new bt(this.O,this.i);this.g=ot.METRIC;St(this,\"en-US\");b&&Tt(this,b);c.appendChild(this.O);y.setTimeout(function(){d.u.update()},1)}w(Rt,G);u(\"H.ui.UI\",Rt);Rt.prototype.v=function(a){for(var b=a.target;b&&!/\\bH_ib_content\\b/.test(b.className);)b=b.parentNode;b||a.preventDefault()};Rt.prototype.J=function(){return this.O};Rt.prototype.getElement=Rt.prototype.J;Rt.prototype.wc=function(){return this.a};\nRt.prototype.getMap=Rt.prototype.wc;Rt.prototype.Zm=function(){return this.g};Rt.prototype.getUnitSystem=Rt.prototype.Zm;Rt.prototype.mg=function(a){var b=this.f,c;if(a!==this.g)for(c in this.g=a,b)if(b[c]instanceof Z)b[c].onUnitSystemChange(this.g)};Rt.prototype.setUnitSystem=Rt.prototype.mg;\nfunction St(a,b){if(ra(b))var c=b;else if(b instanceof Ct){c=b.b;var d=b}else throw Error(\"The locale parameter must be a string or a H.ui.i18n.Localization object.\");if(c)if(d)a.j=d;else if(0<=xt.indexOf(c))a.j=new Ct(c);else throw Error(\"Locale [\"+c+\"] is not supported.\");else throw Error(\"No locale was defined.\");}Rt.prototype.xa=function(){return this.j};Rt.prototype.cl=function(){this.g===ot.METRIC?this.mg(ot.IMPERIAL):this.mg(ot.METRIC)};Rt.prototype.toggleUnitSystem=Rt.prototype.cl;\nRt.prototype.Wi=function(a){var b=this.c.length,c=this.O;if(0>this.c.indexOf(a)){a.ba(this);a.Ma(this.a);var d=a.V(this.i);b=0<b?this.c[b-1].J().nextSibling:this.O.firstChild;c.insertBefore(d,b);this.c.push(a)}};Rt.prototype.addBubble=Rt.prototype.Wi;\nRt.prototype.D=function(a){var b=a.items;this.b&&this.o();clearTimeout(this.m);this.m=y.setTimeout(function(){b.length&&(this.b=new Jt(b),this.O.insertBefore(this.b.V(this.i),this.O.firstChild),this.b.ba(this),this.b.Ma(this.a),this.b.setPosition(a.viewportX,a.viewportY))}.bind(this),0)};Rt.prototype.o=function(){this.b&&(this.b.F(),this.b=null)};Rt.prototype.Qn=function(a){var b=this.c.indexOf(a);-1<b&&(a.ba(null),a.Ma(null),this.c.splice(b,1),this.O.removeChild(a.J()))};\nRt.prototype.removeBubble=Rt.prototype.Qn;Rt.prototype.Yl=function(){return this.c};Rt.prototype.getBubbles=Rt.prototype.Yl;Rt.prototype.Cd=function(a,b){if(this.De(a))throw Error(\"A control with name [\"+a+\"] is already registered.\");b.ba(this);b.Ma(this.a);b.$a=this.j;b.V(this.i);b.onUnitSystemChange(this.g);this.f[a]=b};Rt.prototype.addControl=Rt.prototype.Cd;\nRt.prototype.Sn=function(a){var b=this.De(a);if(b)b.G(),b.ba(null),b.Ma(null),Et(b),delete this.f[a];else throw Error(\"Control [\"+a+\"] not found in this UI's controls.\");return b};Rt.prototype.removeControl=Rt.prototype.Sn;Rt.prototype.De=function(a){return this.f[a]};Rt.prototype.getControl=Rt.prototype.De;\nRt.prototype.s=function(){for(var a in this.f)Ys.hasOwnProperty.call(this.f,a)&&this.f[a].F();this.c.forEach(function(a){a.F()});(a=this.O.parentNode)&&a.removeChild(this.O);G.prototype.s.call(this);this.O=null};\nfunction Tt(a,b){var c,d;b.unitSystem&&a.mg(b.unitSystem);(d=b.locale)&&St(a,d);(c=b.zoom)&&a.Cd(\"zoom\",new Ut(wa(c)?c:null));(c=b.zoomrectangle)&&a.Cd(\"zoomrectangle\",new Vt(wa(c)?c:null));(c=b.mapsettings)&&a.Cd(\"mapsettings\",new Wt(wa(c)?c:null));(c=b.scalebar)&&a.Cd(\"scalebar\",new Xt(wa(c)?c:null));(c=b.distancemeasurement)&&a.Cd(\"distancemeasurement\",new Yt(wa(c)?c:null))}\nRt.prototype.capture=function(a,b,c,d){var e=this.De(\"scalebar\"),f=a.getContext(\"2d\"),g=a.width,h=a.height,k=this.a.m,l=5+(k?k.J().childNodes[1].offsetHeight:0);e&&e.Ac()?e.capture(b,function(d){f.drawImage(d,g-d.width-5*b,h-d.height-l*b);c(a)},d):c(a)};Rt.prototype.capture=Rt.prototype.capture;\nRt.createDefault=function(a,b,c){var d=a.vc().type;c=new Rt(a,{unitSystem:ot.METRIC,zoom:{alignment:\"right-bottom\"},mapsettings:Zt(d,b,a.g),scalebar:{alignment:\"bottom-right\"},locale:c||\"en-US\"});if(d===$k.P2D){var e=c.De(\"mapsettings\");var f=function(){if(e.wc()){var c=Zt(d,b,a.g);$t(e,c.baseLayers,c.layers)}};a.addEventListener(a.u.mf,f);c.xb(function(){a.removeEventListener(a.u.mf,f)});e.xb(function(){a.removeEventListener(a.u.mf,f)})}return c};\nfunction Zt(a,b,c){var d=b.raster;b=b.vector.normal;var e;if(a===$k.P2D){a=[{label:\"layers.normal\",layer:d.normal.map},{label:\"layers.satellite\",layer:d.satellite.map},{label:\"layers.terrain\",layer:d.terrain.map}];if(c)for(e in d)if(d[e].map===c){var f=e;break}c=[{label:\"layer.incidents\",layer:d.normal.trafficincidents},{label:\"layer.transit\",layer:f&&d[f].transit}]}else a=[{label:\"layers.normal\",layer:b.map},{label:\"layers.satellite\",layer:d.satellite.map}],c=[{label:\"layer.traffic\",layer:b.traffic},\n{label:\"layer.incidents\",layer:b.trafficincidents}];return{alignment:\"bottom-right\",baseLayers:a,layers:c}};function au(a){a=a||{};X.call(this,\"div\",\"H_btn\");this.Mc(a.label||\" \");Dt(this,a.tooltip||\"\");this.setData(a.data);this.Ca(!!a.disabled);this.R(bu.UP,!0);a.onStateChange&&this.addEventListener(\"statechange\",a.onStateChange);this.c=A(this.c,this);this.b=A(this.b,this)}w(au,X);u(\"H.ui.base.Button\",au);au.prototype.Ca=function(a,b){a&&this.mb(\"H_active\");return au.l.Ca.call(this,a,b)};\nau.prototype.S=function(a){vt(a,\"start\",this.c);vt(a,\"end\",this.b);vt(a,\"out\",this.b);this.Mc(this.He(),!0)};au.prototype.renderInternal=au.prototype.S;au.prototype.getState=function(){return this.C};au.prototype.getState=au.prototype.getState;au.prototype.R=function(a,b){a!==this.C&&(this.C=a,a===bu.DOWN?this.Oa(\"H_active\"):this.mb(\"H_active\"),b||this.dispatchEvent(\"statechange\"));return this};au.prototype.setState=au.prototype.R;au.prototype.He=function(){return this.a};\nau.prototype.getLabel=au.prototype.He;au.prototype.Mc=function(a,b){if(b||a!==this.a)if(this.a=a,b=this.J())b.innerHTML=a;return this};au.prototype.setLabel=au.prototype.Mc;au.prototype.c=function(a){this.Dc()||this.R(bu.DOWN);a.preventDefault()};au.prototype.b=function(a){this.Dc()||this.R(bu.UP);a.preventDefault()};au.prototype.s=function(){var a=this.J();a&&(wt(a,\"start\",this.c),wt(a,\"end\",this.b),wt(a,\"out\",this.b));X.prototype.s.call(this)};var bu={UP:\"up\",DOWN:\"down\"};au.State=bu;function cu(a){a=a||{};var b;this.c=!!a.vertical;this.ja=a.length||\"16em\";this.a=Tb(b=a.min)?b:0;this.m=Jc(this.a,Tb(b=a.max)?b:100);this.ca=F(b=a.step)?1:b;this.o=du(this,Tb(b=a.value)?b:(this.a+this.m)/2);this.Vf=A(this.Vf,this);this.Qf=A(this.Qf,this);this.Xf=A(this.Xf,this);this.Wf=A(this.Wf,this);this.b=a.pointerArea;X.call(this,\"div\",\"H_slider\"+(this.c?\"\":\" H_l_horizontal\"))}w(cu,X);u(\"H.ui.base.Slider\",cu);\ncu.prototype.ng=function(a,b){var c=this.c,d=c?\"top\":\"left\";if(!this.f||b)a=ld(a,this.a,this.m),this.j&&(b=100*(a-this.a)/(this.m-this.a),c=(c?-1:1)*b,this.j.style[d]=c+\"%\",this.$a.style[d]=100+c+\"%\"),this.o=du(this,a);return this.o};cu.prototype.setValue=cu.prototype.ng;cu.prototype.$m=function(){return this.o};cu.prototype.getValue=cu.prototype.$m;function eu(a){a.v||(vt(a.J(),\"start\",a.Vf),vt(a.b,\"move\",a.Qf),vt(a.b,\"end\",a.Xf),vt(a.b,\"out\",a.Wf),a.v=!0)}\nfunction fu(a){a.v&&(wt(a.J(),\"start\",a.Vf),wt(a.b,\"move\",a.Qf),wt(a.b,\"end\",a.Xf),wt(a.b,\"out\",a.Wf),a.v=!1)}function du(a,b){var c=a.ca;b=ld(b,a.a,a.m);return c?a.a+Kc((b-a.a)/c)*c:b}function gu(a,b){var c=a.P,d=a.c;a.B||(a.B=c[\"offset\"+(d?\"Height\":\"Width\")]);b-=Zs(c)[d?\"y\":\"x\"];0>b&&(b=0);b=(a.m-a.a)*b/a.B;b=du(a,d?a.m-b:a.a+b);a.o!==b&&(a.ng(b,!0),a.dispatchEvent(new wg(a.fk.Ad,b,a.o)))}function hu(a,b){return(b.touches?b.targetTouches[0]:b)[\"page\"+(a.c?\"Y\":\"X\")]}\nfunction iu(a){var b=!1,c=a.type;-1!==c.indexOf(\"pointer\")||-1!==c.indexOf(\"touch\")?b=!0:C(a,MouseEvent)&&(b=1===a.which||1===a.buttons);return b}function ju(a){var b=a.touches;return b&&1===b.length||C(a,MouseEvent)}n=cu.prototype;\nn.Vf=function(a){var b=this.c;if(iu(a)&&ju(a)){var c=hu(this,a);var d=a.target;d===this.j||d.parentElement===this.j?(this.L=c-Zs(this.j)[b?\"y\":\"x\"]-this.j.offsetWidth/2,this.J().className=\"H_slider H_slider_active\"+(this.c?\"\":\" H_l_horizontal\"),this.f=!0):gu(this,c);a.preventDefault()}};n.Xf=function(){this.f&&(this.J().className=\"H_slider \"+(this.c?\"\":\" H_l_horizontal\"),this.f=!1)};n.Wf=function(a){this.f&&a.target===this.b&&(this.f=!1)};\nn.Qf=function(a){this.f&&ju(a)&&(iu(a)?(gu(this,hu(this,a)-this.L),a.preventDefault()):this.f=!1)};n.fk={Ad:\"change\"};\nn.S=function(a,b){var c=ct(b,\"div\",\"H_slider_cont\"),d=ct(b,\"div\",\"H_slider_knob_cont\"),e=ct(b,\"div\",\"H_slider_knob\"),f=ct(b,\"div\",\"H_slider_knob_halo\"),g=ct(b,\"div\",\"H_slider_track\");b=ct(b,\"div\",\"H_slider_track H_slider_track_active\");a.appendChild(c);c.appendChild(g);g.appendChild(b);c.appendChild(d);d.appendChild(e);d.appendChild(f);this.P=g;this.$a=b;this.j=d;this.b||(this.b=a.ownerDocument.body);c.style[this.c?\"height\":\"width\"]=this.ja;this.ng(this.o);eu(this)};\ncu.prototype.renderInternal=cu.prototype.S;cu.prototype.s=function(){fu(this)};cu.prototype.Ca=function(a){a?fu(this):this.P&&eu(this);return X.prototype.Ca.call(this,a)};cu.prototype.setDisabled=cu.prototype.Ca;var ku={\"in\":'<svg version=\"1.1\" class=\"H_icon\" xmlns=\"http://www.w3.org/2000/svg\" x=\"0px\" y=\"0px\"viewBox=\"0 0 24 24\" enable-background=\"new 0 0 24 24\" xml:space=\"preserve\"><g><path d=\"m5 10.6h5.6v-5.6h2.8v5.6h5.6v2.8h-5.6v5.6h-2.8v-5.6h-5.6v-2.8z\"></path></g></svg>',out:'<svg version=\"1.1\" class=\"H_icon\" xmlns=\"http://www.w3.org/2000/svg\" x=\"0px\" y=\"0px\"viewBox=\"0 0 24 24\" enable-background=\"new 0 0 24 24\" xml:space=\"preserve\"><path d=\"m5 10.6h14v2.8h-14z\"/></svg>'};function Z(){Ft.call(this,\"div\",\"H_ctl\");this.map=null;this.Sc=\"top-left\"}w(Z,Ft);u(\"H.ui.Control\",Z);Z.prototype.Ma=function(a){this.map=a};Z.prototype.V=function(a){return Ft.prototype.V.call(this,a)};Z.prototype.S=function(a,b){Ft.prototype.renderInternal.call(this,a,b);this.Xb(this.Sc)};Z.prototype.renderInternal=Z.prototype.S;Z.prototype.Re=function(){};Z.prototype.onUnitSystemChange=Z.prototype.Re;Z.prototype.wc=function(){return this.map};Z.prototype.getMap=Z.prototype.wc;\nZ.prototype.xa=function(){return this.$a};Z.prototype.getLocalization=Z.prototype.xa;Z.prototype.Tl=function(){return this.Sc};Z.prototype.getAlignment=Z.prototype.Tl;Z.prototype.Xb=function(a){\"string\"===typeof a&&at[a.replace(\"-\",\"_\").toUpperCase()]===a&&(this.Sc=a,this.dispatchEvent(\"alignmentchange\"));return this};Z.prototype.setAlignment=Z.prototype.Xb;function Ut(a){a=a||{};var b=a.slider;Z.call(this);this.o=A(this.o,this);this.v=A(this.v,this);this.a=A(this.a,this);b&&(this.B=A(this.B,this),this.P=b,this.jb=a.sliderSnaps,this.Oa(\"H_zoom_slider\"));this.f=new au({label:ku[\"in\"],onStateChange:this.o});this.j=new au({label:ku.out,onStateChange:this.o});this.Oa(\"H_zoom\");this.Oa(\"H_grp\");this.ca=!1!==a.fractionalZoom;this.setZoomSpeed(a.zoomSpeed||4);this.Xb(a.alignment||\"right-middle\")}w(Ut,Z);u(\"H.ui.ZoomControl\",Ut);\nUt.prototype.dn=function(){return this.L};Ut.prototype.getZoomSpeed=Ut.prototype.dn;Ut.prototype.fo=function(a){this.L=a};Ut.prototype.setZoomSpeed=Ut.prototype.fo;Ut.prototype.Ma=function(a){this.map!==a&&(this.map&&this.map.removeEventListener(\"mapviewchange\",this.v),lu(this));Z.prototype.Ma.apply(this,arguments);this.map&&(this.a(),a.addEventListener(\"mapviewchange\",this.v),a.addEventListener(\"baselayerchange\",this.a))};Ut.prototype.setMap=Ut.prototype.Ma;\nUt.prototype.s=function(){Z.prototype.s.apply(this,arguments);this.map.removeEventListener(\"baselayerchange\",this.a);lu(this)};Ut.prototype.S=function(a,b){Z.prototype.renderInternal.call(this,a,b);Dt(this.f,this.xa().translate(\"zoom.in\"));Dt(this.j,this.xa().translate(\"zoom.out\"))};Ut.prototype.renderInternal=Ut.prototype.S;Ut.prototype.Xb=function(a){var b=this.Sc;Z.prototype.Xb.call(this,a);b!==a&&this.a();return this};Ut.prototype.setAlignment=Ut.prototype.Xb;\nUt.prototype.v=function(a){a=a.target.qb();var b=this.map,c=b.fb()-1;b=b.g||b.vc().getCapabilities().lookAt.zoom;this.P&&this.c.ng(a);this.f.Ca(!1);this.j.Ca(!1);a+c>=b.max&&this.f.Ca(!0);a<=b.min&&this.j.Ca(!0)};function lu(a){a.removeChild(a.c);a.c=null;a.m&&(a.m.removeEventListener(\"minchange\",a.a),a.m.removeEventListener(\"maxchange\",a.a),a.m=null)}\nUt.prototype.o=function(a){a=a.target;var b=a===this.f?1:-1,c=0<b?Math.ceil:Math.floor,d=this.map,e,f=this;d&&(\"down\"===a.getState()?(d.b.startControl(),d.b.control(0,0,b*this.L,0,0,0)):d.b.endControl(!0,function(a){e=f.ca?a.zoom:c(a.zoom);a.zoom=e}))};Ut.prototype.B=function(a){this.map&&this.map.gf(a.newValue)};\nUt.prototype.a=function(){var a=this.Sc,b=this.wc();if(/^top/g.test(a)||/^bottom/g.test(a)){var c=this.j;a=this.f;var d=!1}else c=this.f,a=this.j,d=!0;this.removeChild(c);this.removeChild(a);this.Na(c);if(this.P&&b){lu(this);b=d;var e=(d=(c=this.map)&&c.g)||c.vc().getCapabilities().lookAt.zoom;if(this.m=d)d.addEventListener(\"minchange\",this.a),d.addEventListener(\"maxchange\",this.a);this.c=new cu({step:this.jb?1:0,vertical:b,min:e.min,max:e.max,value:c.qb(),pointerArea:c.J()});this.c.addEventListener(this.c.fk.Ad,\nthis.B);this.Na(this.c)}this.Na(a)};var mu={btn:'<svg class=\"H_icon\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\"><g fill-rule=\"evenodd\"><g transform=\"translate(3 2)\"><path d=\"m18 13v7h-18v-7h2v5h2v-2h2v2h2v-3h2v3h2v-2h2v2h2v-5z\"></path><path d=\"m2.3.3c.7 0 1.3.1 1.8.4s.9.6 1.1 1 .4.9.4 1.4c0 .5-.1 1-.3 1.4s-.57 1-1 1.6-1.3 1.3-2.3 2.2h3.9l-.2 1.7h-6.16v-1.6c1.1-1.1 2-2 2.5-2.6s.9-1 1-1.4.3-.8.3-1.2c0-.4-.1-.7-.3-.9s-.5-.3-.9-.3c-.3 0-.6 0-.9.2s-.5.4-.8.7l-1.3-1c.4-.5.9-.9 1.4-1.2s1.2-.4 1.8-.4zm14.4 9.7h-2.3l-.2-3.8c 0-.9-.1-1.7-.1-2.4 0-.5 0-1 0-1.5l-1.5 6.7h-2.2l-1.6-6.7c.1.8.1 1.6.1 2.3 0 .5 0 1.1 0 1.7l-.2 3.8h-2.2l.7-9.7h2.9l1.5 6.6 1.4-6.6h2.9z\"></path></g></g></svg>',\npoint:'<svg height=\"22\" viewBox=\"0 0 12 12\" width=\"22\" xmlns=\"http://www.w3.org/2000/svg\"><g fill=\"none\" fill-rule=\"evenodd\"><path d=\"m6 12c3.3 0 6-2.7 6-6s-2.7-6-6-6-6 2.7-6 6 2.7 6 6 6z\" fill=\"#fff\"></path><path d=\"m6 10c2.2 0 4-1.8 4-4s-1.8-4-4-4-4 1.8-4 4 1.8 4 4 4z\" fill=\"#2ed5c9\" stroke=\"#272c36\" stroke-width=\"2\"></path></g></svg>'};function nu(a){au.call(this,a);this.j=function(a){a.preventDefault()};this.f=A(function(a){this.Dc()||this.toggleState();a.preventDefault()},this)}w(nu,au);u(\"H.ui.base.PushButton\",nu);nu.prototype.S=function(a){vt(a,\"start\",this.f);vt(a,\"end\",this.j);this.Mc(this.He(),!0)};nu.prototype.renderInternal=nu.prototype.S;nu.prototype.no=function(){var a=bu.DOWN;this.R(this.getState()===a?bu.UP:a);return this};nu.prototype.toggleState=nu.prototype.no;\nnu.prototype.s=function(){var a=this.J();a&&wt(a,\"start\",this.f);au.prototype.s.call(this)};var Nt,ou=navigator.userAgent,pu=-1<ou.indexOf(\"Android\")&&-1<ou.indexOf(\"Mozilla/5.0\")&&-1<ou.indexOf(\"AppleWebKit\"),qu=/AppleWebKit\\/([\\d.]+)/,ru=null===qu.exec(ou)?null:parseFloat(qu.exec(ou)[1]);Nt=pu&&null!==ru&&537>ru;var su=Function(\"return this\")(),Ht=document.createElement(\"T\");function tu(a,b,c){Ah.call(this,a,{icon:uu,visibility:c});vu(this,b)}w(tu,Ah);function vu(a,b){a.sn=b;a.O&&(a.O.textContent=b)}var uu=new rh(ct(su.document,\"span\",\"H_dm_label\"),{onAttach:function(a,b,c){c.O=a;vu(c,c.sn)},onDetach:function(a,b,c){delete c.O}});function wu(a,b){G.call(this);this.b=a;this.a=new tu(this.B,\"\");b.push(this.a);this.hc=new P({objects:b,data:this});this.f=this.f.bind(this)}w(wu,G);wu.prototype.ad=!1;wu.prototype.B={lat:0,lng:0};wu.prototype.Mc=function(a,b){vu(this.a,a);this.a.fa(b)};wu.prototype.f=function(){this.a.wb(this.g)};function xu(a,b){b&&(a.nextSibling=b,b.previousSibling=a)};function yu(a,b,c,d){var e=new K,f=[];xu(a,this);xu(this,b);e.sd(a.ya());e.sd(b.ya());this.c=new Wg(e,{style:c.Zd});this.m=new Wg(e,{style:{strokeColor:\"transparent\",lineWidth:Math.min(100,this.c.Ia().lineWidth+2*(d||5))}});c.c&&(this.j=new Wg(e,{style:c.c}),f.push(this.j));f.push(this.c,this.m);wu.call(this,c,f);this.o=this.u=-1;a=this.hc;a.addEventListener(\"pointermove\",this.D,!0,this);a.addEventListener(\"pointerleave\",this.v,!0,this)}w(yu,wu);yu.prototype.Fe=function(){var a=this.c.pa();return a.we(0).bb(a.we(1))};\nfunction zu(a,b,c){var d=a.c.pa();d.jf(3*c,3,[b.lat,b.lng,0]);a.j&&a.j.fa(d);a.m.fa(d);a.c.fa(d)}yu.prototype.D=function(a){var b=a.currentPointer;a=this.previousSibling.ya();var c=this.nextSibling.ya(),d=this.b.f,e=b.viewportX;b=b.viewportY;if(this.u!==e||this.o!==b)this.u=e,this.o=b,d.fa(this.b.g(a,c,{x:e,y:b})),d.wb(!0)};yu.prototype.v=function(){this.b.f.wb()};yu.prototype.ii=function(){this.Mc(this.b.a(this.Fe()),this.c.I().lb())};function Au(a,b,c){c=b.b(c||0);this.c=new Om(a,{icon:c,zIndex:0});this.c.draggable=!0;wu.call(this,b,[this.c]);a=this.hc;a.addEventListener(\"dragstart\",this.Bn,!0,this);a.addEventListener(\"drag\",this.Cn,!0,this);a.addEventListener(\"dragend\",this.An,!0,this)}w(Au,wu);n=Au.prototype;n.oj=0;n.Oh={Ad:\"change\"};n.Fe=function(){return this.oj};n.ya=function(){return this.c.pa()};\nfunction Bu(a){var b=0;a.nextSibling&&a.previousSibling&&(a.nextSibling.ad||a.previousSibling.ad?a.nextSibling.ad&&!a.previousSibling.ad&&(b=2):b=1);b=a.b.b(b);a.c.ed(b)}n.Cn=function(a){var b=a.currentPointer;a=b.viewportX;b=b.viewportY;if(this.m!==a||this.u!==b)this.m=a,this.u=b,this.c.fa(this.b.map.Wa(a-this.j.x,b-this.j.y)),this.dispatchEvent(new Ec(this.Oh.Ad,this))};\nn.Bn=function(a){var b=a.currentPointer,c=b.viewportX;b=b.viewportY;var d=this.b.map.Ga(this.ya());this.c.ff(1);this.j={x:c-d.x,y:b-d.y};a.stopPropagation()};n.An=function(){this.c.ff(0)};n.ii=function(a){this.oj=a;this.Mc(this.b.a(a),this.ya())};function Cu(a,b){this.c=b;this.b=a;this.a={previousSibling:null,nextSibling:null,ad:!0};Du(this,this.a);this.Uf=A(this.Uf,this)}u(\"H.ui.distanceMeasurement.Model\",Cu);n=Cu.prototype;n.Nf=function(){return this.a.nextSibling===this.a};function Eu(a,b){a=a.a;for(var c=a.nextSibling;c!==a;){var d=c,e=c.previousSibling===a?!1:b;(d.g=e)?d.f():(d.i&&y.clearTimeout(d.i),d.i=y.setTimeout(d.f,100));c=c.nextSibling}}\nfunction Fu(a,b){var c=b||a.a.nextSibling,d=0,e=0;if(b&&!Gu(a,b))throw new D(a.We,0,b);c instanceof Au?d=c.Fe():c instanceof yu&&(d=c.previousSibling.Fe());for(b=c;b&&b!==a.a;b=b.nextSibling,e++)b.ii(d),1===e%2&&(d+=b.Fe())}n.oe=function(a){var b=this.a.previousSibling,c=this.Nf();a=new Au(a,this.c,c?0:2);this.b.T(a.hc);xu(a,this.a);a.addEventListener(a.Oh.Ad,this.Uf);c?Du(this,a):(Hu(this,b,a),Bu(b),Fu(this,b));return a};\nn.insertBefore=function(a,b){var c;var d=1;if(b){if(!Gu(this,b))throw new D(this.insertBefore,1,b);if(c=b.previousSibling.ad)d=0;a=new Au(a,this.c,d);a.addEventListener(a.Oh.Ad,this.Uf);this.b.T(a.hc);c?(c=this.a.nextSibling,Hu(this,a,c),Du(this,a),b=a,Bu(c)):(c=b.previousSibling,b=c.previousSibling,d=c.nextSibling,this.b.La(c.hc),Hu(this,b,a),Hu(this,a,d));Fu(this,b)}else a=this.oe(a);return a};n.ha=function(){Du(this,this.a);this.b.ha()};\nn.We=function(a){var b=this.a,c=a.previousSibling,d=a.nextSibling;if(!Gu(this,a))throw new D(this.We,0,a);this.b.La(a.hc);if(c===b){var e=d;e!==b?(a=e.nextSibling,Du(this,a),a.ii(0),Bu(a),Fu(this,a)):Du(this,this.a)}else d===b?(e=c,a=e.previousSibling,xu(a,b),Bu(a)):c&&d&&(Hu(this,c.previousSibling,d.nextSibling),this.b.td([d.hc,c.hc]),Fu(this,c.previousSibling));e&&e!==b&&this.b.La(e.hc)};function Gu(a,b){for(var c=a.a.nextSibling,d=!1;c!==a.a;){if(c===b){d=!0;break}c=c.nextSibling}return d}\nfunction Hu(a,b,c){b=new yu(b,c,a.c);a.b.T(b.hc)}function Du(a,b){a.a.nextSibling=b;b.previousSibling=a.a}n.Uf=function(a){a=a.target;var b=a.previousSibling,c=a.nextSibling,d=a.ya();if(!c.ad){zu(c,d,!1);var e=a}b.ad||(zu(b,d,!0),e=b.previousSibling);Fu(this,e)};function Yt(a){a=a||{};var b,c=a.lineStyle;Z.call(this);this.v=new nu({label:mu.btn,onStateChange:A(this.yn,this)});this.Na(this.v);if(b=a.distanceFormatter)this.nj=b;c&&(this.Sj=c,this.qk=B);this.Xb(a.alignment||\"right-bottom\");this.m={};this.m[0]=a.startIcon;this.m[2]=a.endIcon;this.m[1]=a.stopoverIcon;this.m[3]=a.splitIcon}w(Yt,Z);u(\"H.ui.DistanceMeasurement\",Yt);n=Yt.prototype;n.Sj={strokeColor:\"rgb(39,44,54)\",lineWidth:5};n.qk={strokeColor:\"white\",lineWidth:7};\nfunction Iu(a){var b=a.map,c,d={};a.f||(a.j=new M,a.c=new Lk(a.j,{pixelRatio:a.map.fb()}),a.B=c=a.j.gc(),a.B.Uk(!0),c.addEventListener(\"dragstart\",a.wn,!0,a),c.addEventListener(\"dragend\",a.hf,!0,a),c.addEventListener(\"pointerenter\",a.hf,!0,a),c.addEventListener(\"pointerleave\",a.xn,!0,a),c.addEventListener(\"tap\",a.Kn,!0,a),a.o=Ju(a),d.a=A(a.nj,a),d.b=A(a.bk,a),d.g=A(a.yj,a),d.map=a.map,d.f=a.o,d.Zd=a.Sj,d.c=a.qk,a.a=new Cu(a.B,d),a.f=!0);a.o&&a.B.T(a.o);b.addEventListener(\"tap\",a.mk,!0,a);b.a.add(a.c)}\nfunction Ku(a){var b=a.map;a.f&&(b.removeEventListener(\"tap\",a.mk,!0,a),b.cg(a.c),a.a.ha())}function Ju(a){function b(){var a=c.Db();a={anchor:c.ld().clone().scale(f).floor(),size:new uh(Lc(a.w*f),Lc(a.h*f)),hitArea:d};return new Si(c.Xc(),a)}var c=a.bk(3),d=new vh(wh.NONE,[]),e,f=c===a.P?.5:1;if(1===c.getState())var g=b();else g=new Si(\"<svg/>\",{hitArea:d}),c.addEventListener(\"statechange\",function(){1===c.getState()&&e.ed(b())});return e=new Om(a.map.lb(),{visibility:!1,icon:g})}\nn.nj=function(a){var b=\"m\",c=0;\"metric\"===this.L?1E3<=a&&(a/=1E3,b=\"km\",c=1):(a/=.3048,b=\"ft\",5280<=a&&(a/=5280,b=\"mi\",c=1));return a.toFixed(c)+\" \"+this.xa().translate(\"scale.\"+b)};n.yj=function(a,b,c){a=this.map.Ga(a);b=this.map.Ga(b);c=(new H(c.x,c.y)).xj(a,b);return this.map.Wa(c.x,c.y)};\nn.S=function(a,b){var c=22*(this.map.vc().type===Km.WEBGL?1:this.map.fb()),d=c/2;Z.prototype.renderInternal.call(this,a,b);this.L=ot.METRIC;this.P=new Si(mu.point,{anchor:{x:d,y:d},size:{w:c,h:c},hitArea:new vh(wh.CIRCLE,[d,d,d])});Dt(this.v,this.xa().translate(\"distance.measurement\"))};Yt.prototype.renderInternal=Yt.prototype.S;n=Yt.prototype;n.bk=function(a){return this.m[a]||this.P};n.hf=function(){Eu(this.a,!0)};n.wn=function(){Eu(this.a)};n.xn=function(a){\"touch\"!==a.currentPointer.type&&Eu(this.a)};\nn.Kn=function(a){var b=a.currentPointer;var c=a.target.Va;var d;c&&(c=c.getData())instanceof wu&&(d=c);c=d;a=a.originalEvent;a=a.metaKey||a.altKey;c&&(a&&c instanceof Au?this.a.We(c):c instanceof yu&&(a=c.previousSibling.ya(),d=c.nextSibling.ya(),b={x:b.viewportX,y:b.viewportY},this.a.insertBefore(this.yj(a,d,b),c.nextSibling),this.o.wb()),this.hf())};\nn.mk=function(a){var b=a.currentPointer;a=a.target;a!==this.map&&a.getProvider&&a.getProvider()===this.j||(this.a.oe(this.map.Wa(b.viewportX,b.viewportY)),this.o.wb(),this.hf())};n.yn=function(a){\"down\"===a.target.getState()?Iu(this):Ku(this)};n.Re=function(a){this.L=a;this.f&&(Fu(this.a),this.hf())};Yt.prototype.onUnitSystemChange=Yt.prototype.Re;Yt.prototype.s=function(){Ku(this);this.f&&(this.j.F(),this.c.F());Yt.l.s.call(this)};\nYt.prototype.Ma=function(a){a?this.v.getState()===bu.DOWN&&(this.map=a,Iu(this)):(Ku(this),this.f=!1);Z.prototype.Ma.apply(this,arguments)};Yt.prototype.setMap=Yt.prototype.Ma;function Lu(){this.C=Mu.CLOSED;Ft.call(this,\"div\",\"H_overlay\")}w(Lu,Ft);u(\"H.ui.base.OverlayPanel\",Lu);Lu.prototype.R=function(a,b){if(a!==this.C||b)this.C=a,a===Mu.OPEN?this.Oa(\"H_open\"):this.mb(\"H_open\");return this};Lu.prototype.setState=Lu.prototype.R;Lu.prototype.getState=function(){return this.C};Lu.prototype.getState=Lu.prototype.getState;\nLu.prototype.uk=function(a){var b=a.Sc;a=a.J();var c=this.J(),d=c.style;this.mb(\"H_top\");this.mb(\"H_middle\");this.mb(\"H_bottom\");this.mb(\"H_left\");this.mb(\"H_center\");this.mb(\"H_right\");d.bottom=d.top=d.left=d.right=d.margin=\"\";if(/top/g.test(b)){this.Oa(\"H_top\");d.top=\"0\";d.margin=\"0 12px\";var e=-1}else/bottom/g.test(b)?(this.Oa(\"H_bottom\"),d.bottom=\"0\",d.margin=\"0 12px\",e=1):(this.Oa(\"H_middle\"),d.top=\"50%\",d.margin=\"0 12px\",d.marginTop=-Math.round(.5*\nc.offsetHeight)+\"px\",e=0);/left/g.test(b)?(this.Oa(\"H_left\"),d.left=a.offsetWidth+\"px\",d.marginLeft=\"12px\"):/right/g.test(b)?(this.Oa(\"H_right\"),d.right=a.offsetWidth+\"px\",d.marginRight=\"12px\"):(this.Oa(\"H_center\"),d.left=\"50%\",0>e?(d.top=a.offsetHeight+\"px\",d.marginTop=\"12px\"):0<e&&(d.bottom=a.offsetHeight+\"px\",d.marginBottom=\"12px\"),d.marginLeft=-Math.round(.5*c.offsetWidth)+\"px\",a.appendChild(c))};Lu.prototype.pointToControl=Lu.prototype.uk;var Mu={OPEN:\"open\",CLOSED:\"closed\"};\nLu.State=Mu;function Nu(a){a=a||{};Ft.call(this,\"div\",\"H_rdo\");this.f=new X(\"div\",\"H_rdo_title\");this.a=new Ft(\"div\",\"H_rdo_buttons\");this.Na(this.f);this.Na(this.a);this.j=A(function(a){a.target.getState()===bu.DOWN?(this.Gk(a.target,!0),this.dispatchEvent(Ou)):a.target.R(bu.DOWN,!0)},this);this.addEventListener(\"statechange\",this.j);this.wi(a.title||\"\");a.onActiveButtonChange&&this.addEventListener(Ou,a.onActiveButtonChange);a.buttonsOptions&&a.buttonsOptions.forEach(function(a){this.Bg(new nu(a))},\nthis)}w(Nu,Ft);u(\"H.ui.base.RadioGroup\",Nu);var Ou=\"activebuttonchange\";Nu.prototype.S=function(a,b){Ft.prototype.renderInternal.call(this,a,b);this.wi(this.c,!0)};Nu.prototype.renderInternal=Nu.prototype.S;Nu.prototype.ha=function(){this.a.ha()};Nu.prototype.wi=function(a,b){if(a!==this.c||b)this.c=a,this.f.J()&&(this.f.J().innerHTML=this.c);return this};Nu.prototype.setTitle=Nu.prototype.wi;Nu.prototype.Wm=function(){return this.c};Nu.prototype.getTitle=Nu.prototype.Wm;\nNu.prototype.Bg=function(a){if(!(a instanceof nu))throw Error(\"PushButton expected\");a.ba(this);this.a.Na(a);return this};Nu.prototype.addButton=Nu.prototype.Bg;Nu.prototype.Rn=function(a){this.a.removeChild(a);a.ba(null);return this};Nu.prototype.removeButton=Nu.prototype.Rn;Nu.prototype.Cf=function(){return this.a.$g()};Nu.prototype.getButtons=Nu.prototype.Cf;Nu.prototype.Gk=function(a,b){for(var c=this.Cf(),d=c.length;d--;)c[d].R(c[d]===a?bu.DOWN:bu.UP,b)};Nu.prototype.setActiveButton=Nu.prototype.Gk;\nNu.prototype.s=function(){this.removeEventListener(\"statechange\",this.j);this.ha();Ft.prototype.s.call(this)};function Wt(a){a=a||{};Z.call(this);this.c=new Lu;new Nu;this.a=this.a.bind(this);this.o=this.o.bind(this);this.Xb(a.alignment||\"bottom-right\");$t(this,a.baseLayers,a.layers)}w(Wt,Z);u(\"H.ui.MapSettingsControl\",Wt);function $t(a,b,c){var d=a.wc();a.f&&a.f.forEach(function(a){var b=a.layer;a=b&&c.find(function(a){return a.layer===b});b&&!a&&d.cg(b)});a.m=Qb(b)?b:[];a.f=Qb(c)?c:[];a.j&&(a.j.ha(),a.v.ha(),Pu(a))}\nWt.prototype.$=function(){var a=this.wc();a&&(a.addEventListener(\"tap\",this.o),a=a.a,a.addEventListener(\"add\",this.a),a.addEventListener(\"remove\",this.a),a.addEventListener(\"set\",this.a))};Wt.prototype.G=function(){var a=this.wc();a&&(a.removeEventListener(\"tap\",this.o),a=a.a,a.removeEventListener(\"add\",this.a),a.removeEventListener(\"remove\",this.a),a.removeEventListener(\"set\",this.a))};\nWt.prototype.S=function(a,b){var c=this.xa().translate(\"layers.choose\");Z.prototype.renderInternal.call(this,a,b);this.$();this.B=new nu({tooltip:c,label:'<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"H_icon\" viewBox=\"0 0 24 24\"><path fill-rule=\"evenodd\" d=\"M6.7,14.6 L4.5,16 L12,20.6 L19.5,16 L17.3,14.6 L19.1,13.5 L23,16 L12,23 L1,16 L4.9,13.5 L6.7,14.6 Z M12,2 L23,9 L12,16 L1,9 L12,2 Z\"></path></svg>',onStateChange:A(function(a){a.target.getState()===bu.DOWN?(this.c.R(Mu.OPEN),this.c.uk(this)):\nthis.c.R(Mu.CLOSED)},this)});this.j=new Nu({title:c,onActiveButtonChange:function(){a:{var a=this.j.Cf();for(var b=a.length;b--;)if(a[b].getState()===bu.DOWN){a=a[b];break a}a=null}a=a.getData();this.map.xd(this.m[a].layer)}.bind(this)});this.v=new Ft(\"div\",\"H_grp\");this.P=new X(\"div\",\"H_separator\");this.Na(this.B);this.Na(this.c);this.c.Na(this.j);this.c.Na(this.P);this.c.Na(this.v);Pu(this)};Wt.prototype.renderInternal=Wt.prototype.S;\nfunction Pu(a){var b=a.xa();a.m.forEach(function(a,d){this.j.Bg(new nu({label:Qu(b,a.label),data:d,disabled:!a.layer}))},a);a.f.forEach(function(a,d){this.v.Na(new nu({label:Qu(b,a.label),onStateChange:this.L.bind(this,a.layer),data:d,disabled:!a.layer}))},a);a.P.wb(!(!a.f.length||!a.m.length));y.setTimeout(function(){this.map&&(this.a(),this.B.Ca(!(this.m&&this.m.length||this.f&&this.f.length)))}.bind(a))}\nWt.prototype.a=function(){var a=this.map.g,b=this.map.a;this.m.forEach(function(b,d){this.j.Cf()[d].R(bu[b.layer===a?\"DOWN\":\"UP\"],!0)},this);this.f.forEach(function(a,d){d=this.v.$g()[d];a.layer?d.R(bu[-1!==b.indexOf(a.layer)?\"DOWN\":\"UP\"],!0):d.Ca(!0)},this)};Wt.prototype.L=function(a,b){b.target.getState()===bu.DOWN?this.map.Yi(a):this.map.cg(a)};function Qu(a,b){return/^layers?/.test(b)&&a.qh(b)?a.translate(b):b}Wt.prototype.o=function(){this.B.R(bu.UP)};\nWt.prototype.s=function(){Wt.l.s.call(this);this.G()};function Vt(a){a=a||{};Z.call(this);this.c=new nu({label:'<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"H_icon\" viewBox=\"0 0 24 24\"><g transform=\"translate(1 3)\"><path fill-rule=\"nonzero\" d=\"M5,0 L5,2 L2,2 L2,16 L5,16 L5,18 L2,18 C0.9,18 0,17 0,15.75 L0,2.25 C0,1 0.9,0 2,0 L5,0 Z M17,0 L20,0 C21.1,0 22,1 22,2.25 L22,15.75 C22,17 21.1,18 20,18 L17,18 L17,16 L20,16 L20,2 L17,2 L17,0 Z\"></path><rect width=\"10\" height=\"2\" x=\"6\" y=\"8\"></rect><rect width=\"2\" height=\"10\" x=\"10\" y=\"4\"></rect></g></svg>',\nonStateChange:A(this.zn,this)});this.Na(this.c);this.Xb(a.alignment||\"right-bottom\")}w(Vt,Z);u(\"H.ui.ZoomRectangle\",Vt);n=Vt.prototype;\nn.zn=function(a){var b=this.map,c=b.Ba.element;a.target.getState()===bu.DOWN?(b.addEventListener(\"dragstart\",this.dk,!0,this),b.addEventListener(\"drag\",this.ek,!0,this),b.addEventListener(\"dragend\",this.ck,!0,this),a=c.ownerDocument.createElement(\"div\"),a.className=\"H_zoom_lasso\",c.appendChild(a),this.a=a):(b.removeEventListener(\"dragstart\",this.dk,!0,this),b.removeEventListener(\"drag\",this.ek,!0,this),b.removeEventListener(\"dragend\",this.ck,!0,this),c.removeChild(this.a))};\nn.dk=function(a){var b=this.a.style,c=a.currentPointer,d=c.viewportX;c=c.viewportY;a.target===this.map&&(a.stopPropagation(),b.width=\"0px\",b.height=\"0px\",b.top=c+\"px\",b.left=d+\"px\",b.display=\"block\",this.j=c,this.f=d)};n.ek=function(a){var b=a.currentPointer,c=b.viewportX,d=b.viewportY;b=this.f;var e=this.j,f=this.a.style;a.target===this.map&&(a.stopPropagation(),a=c-b,c=d-e,f.left=b+(0>a?a:0)+\"px\",f.top=e+(0>c?c:0)+\"px\",f.width=Math.abs(a)+\"px\",f.height=Math.abs(c)+\"px\")};\nn.ck=function(a){var b=this.map,c=a.currentPointer;a.target===this.map&&(a.stopPropagation(),this.a.style.display=\"none\",b.b.Yb({bounds:Qf([b.Wa(this.f,this.j),b.Wa(c.viewportX,c.viewportY)])},!0))};n.S=function(a,b){Z.prototype.renderInternal.call(this,a,b);Dt(this.c,this.xa().translate(\"zoom.rectangle\"))};Vt.prototype.renderInternal=Vt.prototype.S;function Ru(a,b){b=b||{};if(!(a&&a instanceof Dk))throw Error(\"Base layer is mandatory for overview UI element\");Z.call(this);this.c=new nu({label:'<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" class=\"H_icon\"><g fill-rule=\"evenodd\" transform=\"translate(2 2)\"><rect width=\"9\" height=\"9\" x=\"10\" y=\"10\"/><rect class=\"H_icon_stroke\" width=\"18\" height=\"18\" x=\"1\" y=\"1\" fill=\"none\" stroke=\"#000\" stroke-width=\"2\" rx=\"2\"/></g></svg>',onStateChange:A(this.f,this)});this.Na(this.c);this.a=\nnew Su(a,b.zoomDelta,b.scaleX,b.scaleY);this.Xb(b.alignment||\"right-bottom\");this.Na(this.a)}w(Ru,Z);u(\"H.ui.Overview\",Ru);Ru.prototype.xd=function(a){this.a.xd(a);return this};Ru.prototype.setBaseLayer=Ru.prototype.xd;Ru.prototype.f=function(a){a.target.getState()===bu.DOWN?(a=this.a,Tu(a,!0),a.Ai(),a.Oa(\"H_overview_active\"),a.a.addEventListener(\"mapviewchange\",a.Ai,!1,a)):Uu(this.a)};\nRu.prototype.S=function(a,b){Z.prototype.renderInternal.call(this,a,b);this.c.J().style[\"float\"]=this.Sc.match(\"right\")?\"right\":\"left\";this.a.Ma(this.map);Dt(this.c,this.xa().translate(\"minimap\"))};Ru.prototype.renderInternal=Ru.prototype.S;Ru.prototype.s=function(){this.a.F();X.prototype.s.call(this)};function Su(a,b,c,d){this.m=a;\"number\"===typeof b&&(this.el=b);\"number\"===typeof c&&(this.rk=c);\"number\"===typeof d&&(this.sk=d);Ft.call(this,\"div\",\"H_overview\")}w(Su,Z);Su.prototype.xd=function(a){this.c.xd(a)};\nSu.prototype.S=function(a,b){b=ct(b,\"div\",\"H_overview_map\");mt(a,b);this.f=b};Su.prototype.renderInternal=Su.prototype.S;n=Su.prototype;n.el=3;n.rk=5;n.sk=5;n.Ma=function(a){this.a=a;this.c=new S(this.f,this.m,{pixelRatio:this.a.fb(),engineType:this.a.vc().type});this.c.m.J().style.display=\"none\";this.o=this.c.b;this.j=this.a.b};function Uu(a){!a.Bd&&Tu(a);a.mb(\"H_overview_active\");a.a.removeEventListener(\"mapviewchange\",a.Ai,!1,a)}\nn.Ai=function(a){a&&a.modifiers&a.SIZE&&Tu(this,!0);a=this.j.pb();a.zoom=a.zoom-this.el;this.o.Yb(a)};function Tu(a,b){var c=a.a.Ba.element,d=a.J().style,e=c.offsetWidth/a.rk/10;c=c.offsetHeight/a.sk/10;var f=a.f.style;b?(d.width=e+\"em\",d.height=c+\"em\",f.width=e+\"em\",f.height=c+\"em\"):d.width=d.height=\"0em\";a.c.Ba.resize()}n.s=function(){Su.l.s.call(this);Uu(this);this.c.F();this.c=this.o=this.j=this.a=this.m=this.f=null};function Xt(a){a=a||{};Z.call(this);this.Oa(\"H_scalebar\");this.Xb(a.alignment||\"right-bottom\");this.B=150;this.update=A(this.update,this);this.m=this.c=this.a=this.j=null}w(Xt,Z);u(\"H.ui.ScaleBar\",Xt);\nXt.prototype.S=function(a,b){Z.prototype.renderInternal.call(this,a,b);a.innerHTML='<svg height=\"12\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"><polyline style=\"fill:none; stroke:white; stroke-width:4\" points=\"2,2 2,10 98,10 98,2\"/><polyline style=\"fill:none; stroke:black; stroke-width:2\" points=\"2,2 2,10 98,10 98,2\"/></svg><div style=\"padding: 0 0 0 10px\"></div>';a.style.direction=\"ltr\";this.j=a.firstChild;b=this.j.childNodes;this.a=b[0];this.c=b[1];this.m=a.lastChild;this.o=ot.METRIC;this.v=\nA(function(a){this.Dc()||(this.dispatchEvent(\"toggleunitsystem\"),a.preventDefault())},this);this.f=A(function(a){a.preventDefault()},this);vt(a,\"start\",this.f);vt(a,\"end\",this.v);Dt(this,this.xa().translate(\"scale.switchToImperial\"));this.update()};Xt.prototype.renderInternal=Xt.prototype.S;Xt.prototype.Ma=function(a){this.map&&this.map.removeEventListener(\"mapviewchange\",this.update);a&&a.addEventListener(\"mapviewchange\",this.update);Z.prototype.Ma.apply(this,arguments)};Xt.prototype.setMap=Xt.prototype.Ma;\nXt.prototype.capture=function(a,b,c){var d=this.J();var e=d.ownerDocument,f=e.createElement(\"canvas\"),g=f.getContext(\"2d\"),h=e.createElementNS(\"http://www.w3.org/2000/svg\",\"svg\"),k=e.createElementNS(\"http://www.w3.org/2000/svg\",\"foreignObject\"),l=We(d,e,!1);e=parseFloat(d.offsetWidth)+1;var m=parseFloat(d.offsetHeight),p=e*a;a*=m;f.width=p;f.height=a;h.setAttribute(\"xmlns\",\"http://www.w3.org/2000/svg\");h.setAttribute(\"width\",p);h.setAttribute(\"height\",a);h.setAttribute(\"viewBox\",\"0 0 \"+e+\" \"+m);k.setAttribute(\"width\",\n\"100%\");k.setAttribute(\"height\",\"100%\");h.appendChild(k);l.setAttribute(\"width\",\"100%\");l.setAttribute(\"height\",\"100%\");l.setAttribute(\"xmlns\",\"http://www.w3.org/1999/xhtml\");var q=window.getComputedStyle(d);\"box-shadow display align-items font font-family font-size height text-shadow direction\".split(\" \").forEach(function(a){l.style.setProperty(a,q.getPropertyValue(a))});k.appendChild(l);d=Ne(h.outerHTML);(new cf(\"image\",d)).then(function(a){g.drawImage(a,0,0);b(f)},c)};Xt.prototype.capture=Xt.prototype.capture;\nXt.prototype.Re=function(a){this.o=a;Dt(this,\"imperial\"===a?this.xa().translate(\"scale.switchToMetric\"):this.xa().translate(\"scale.switchToImperial\"));this.update()};Xt.prototype.onUnitSystemChange=Xt.prototype.Re;\nXt.prototype.update=function(){if(this.J()){var a=this.B;var b=0;var c=this.map;var d;if(c){var e=Math.round(.5*c.Ba.width);var f=Math.round(.5*c.Ba.height);if(d=c.Wa(e,f))b=Jf(d),c=Jf(c.Wa(e+1,f)),b=100*b.bb(c)}if(c=b)this.o===ot.IMPERIAL?c<Vu?(f=c/Wu,e=this.xa().translate(\"scale.ft\")):(f=c/Vu,e=this.xa().translate(\"scale.mi\")):1E3>c?(f=c,e=this.xa().translate(\"scale.m\")):(f=c/1E3,e=this.xa().translate(\"scale.km\")),c=Math.pow(10,Math.floor(Math.log(f)/Math.LN10)),f=c/f*100,f<a/5?(c*=5,f*=5):f<a/\n2?(c*=2,f*=2):f>a&&(c/=2,f/=2),f=Math.round(f),this.j.setAttribute(\"width\",f),this.m.textContent=c+\" \"+e,this.a.points.getItem(2).x=this.c.points.getItem(2).x=this.a.points.getItem(3).x=this.c.points.getItem(3).x=f-2}};var Vu=1609.344,Wu=.3048006;u(\"H.ui.buildInfo\",function(){return qf(\"mapsjs-ui\",\"1.8.1\",\"e2f2d80\")});\n");
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment