summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2016-08-02 19:46:58 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2016-08-02 19:46:58 +0200
commit077ceaed429ac0d51691e47a24305d721a971fb0 (patch)
tree2aab86b727d898cd5b4ca614d9c8b1f853785508
parent677b3393ea466ed9ddc9c0911aa7f0b37b2f574d (diff)
downloadChimère-077ceaed429ac0d51691e47a24305d721a971fb0.tar.bz2
Chimère-077ceaed429ac0d51691e47a24305d721a971fb0.zip
New version of ol3 v3.17.1
-rw-r--r--chimere/static/ol3/ol-debug.js17791
-rw-r--r--chimere/static/ol3/ol.js1981
2 files changed, 3537 insertions, 16235 deletions
diff --git a/chimere/static/ol3/ol-debug.js b/chimere/static/ol3/ol-debug.js
index 91f7ae3..d875197 100644
--- a/chimere/static/ol3/ol-debug.js
+++ b/chimere/static/ol3/ol-debug.js
@@ -1,6 +1,6 @@
// OpenLayers 3. See http://openlayers.org/
// License: https://raw.githubusercontent.com/openlayers/ol3/master/LICENSE.md
-// Version: v3.16.0
+// Version: v3.17.1
(function (root, factory) {
if (typeof exports === "object") {
@@ -240,7 +240,7 @@ goog.define('goog.TRUSTED_SITE', true);
*
* This define can be used to trigger alternate implementations compatible with
* running in EcmaScript Strict mode or warn about unavailable functionality.
- * @see https://goo.gl/g5EoHI
+ * @see https://goo.gl/PudQ4y
*
*/
goog.define('goog.STRICT_MODE_COMPATIBLE', false);
@@ -600,7 +600,7 @@ goog.addDependency = function(relPath, provides, requires, opt_loadFlags) {
}
for (var i = 0; provide = provides[i]; i++) {
deps.nameToPath[provide] = path;
- deps.pathIsModule[path] = opt_loadFlags['module'] == 'goog';
+ deps.loadFlags[path] = opt_loadFlags;
}
for (var j = 0; require = requires[j]; j++) {
if (!(path in deps.requires)) {
@@ -820,13 +820,32 @@ goog.loadedModules_ = {};
goog.DEPENDENCIES_ENABLED = !COMPILED && goog.ENABLE_DEBUG_LOADER;
+/**
+ * @define {string} How to decide whether to transpile. Valid values
+ * are 'always', 'never', and 'detect'. The default ('detect') is to
+ * use feature detection to determine which language levels need
+ * transpilation.
+ */
+// NOTE(user): we could expand this to accept a language level to bypass
+// detection: e.g. goog.TRANSPILE == 'es5' would transpile ES6 files but
+// would leave ES3 and ES5 files alone.
+goog.define('goog.TRANSPILE', 'detect');
+
+
+/**
+ * @define {string} Path to the transpiler. Executing the script at this
+ * path (relative to base.js) should define a function $jscomp.transpile.
+ */
+goog.define('goog.TRANSPILER', 'transpile.js');
+
+
if (goog.DEPENDENCIES_ENABLED) {
/**
* This object is used to keep track of dependencies and other data that is
* used for loading scripts.
* @private
* @type {{
- * pathIsModule: !Object<string, boolean>,
+ * loadFlags: !Object<string, !Object<string, string>>,
* nameToPath: !Object<string, string>,
* requires: !Object<string, !Object<string, boolean>>,
* visited: !Object<string, boolean>,
@@ -835,7 +854,7 @@ if (goog.DEPENDENCIES_ENABLED) {
* }}
*/
goog.dependencies_ = {
- pathIsModule: {}, // 1 to 1
+ loadFlags: {}, // 1 to 1
nameToPath: {}, // 1 to 1
@@ -907,24 +926,30 @@ if (goog.DEPENDENCIES_ENABLED) {
};
- /** @const @private {boolean} */
+ /**
+ * Whether the browser is IE9 or earlier, which needs special handling
+ * for deferred modules.
+ * @const @private {boolean}
+ */
goog.IS_OLD_IE_ =
!!(!goog.global.atob && goog.global.document && goog.global.document.all);
/**
- * Given a URL initiate retrieval and execution of the module.
+ * Given a URL initiate retrieval and execution of a script that needs
+ * pre-processing.
* @param {string} src Script source URL.
+ * @param {boolean} isModule Whether this is a goog.module.
+ * @param {boolean} needsTranspile Whether this source needs transpilation.
* @private
*/
- goog.importModule_ = function(src) {
+ goog.importProcessedScript_ = function(src, isModule, needsTranspile) {
// In an attempt to keep browsers from timing out loading scripts using
// synchronous XHRs, put each load in its own script block.
- var bootstrap = 'goog.retrieveAndExecModule_("' + src + '");';
+ var bootstrap = 'goog.retrieveAndExec_("' + src + '", ' + isModule + ', ' +
+ needsTranspile + ');';
- if (goog.importScript_('', bootstrap)) {
- goog.dependencies_.written[src] = true;
- }
+ goog.importScript_('', bootstrap);
};
@@ -1018,7 +1043,9 @@ if (goog.DEPENDENCIES_ENABLED) {
*/
goog.isDeferredModule_ = function(name) {
var path = goog.getPathFromDeps_(name);
- if (path && goog.dependencies_.pathIsModule[path]) {
+ var loadFlags = path && goog.dependencies_.loadFlags[path] || {};
+ if (path && (loadFlags['module'] == 'goog' ||
+ goog.needsTranspile_(loadFlags['lang']))) {
var abspath = goog.basePath + path;
return (abspath) in goog.dependencies_.deferred;
}
@@ -1082,69 +1109,7 @@ if (goog.DEPENDENCIES_ENABLED) {
// Because this executes synchronously, we don't need to do any additional
// bookkeeping. When "goog.loadModule" the namespace will be marked as
// having been provided which is sufficient.
- goog.retrieveAndExecModule_(url);
- };
-
-
- /**
- * @param {function(?):?|string} moduleDef The module definition.
- */
- goog.loadModule = function(moduleDef) {
- // NOTE: we allow function definitions to be either in the from
- // of a string to eval (which keeps the original source intact) or
- // in a eval forbidden environment (CSP) we allow a function definition
- // which in its body must call {@code goog.module}, and return the exports
- // of the module.
- var previousState = goog.moduleLoaderState_;
- try {
- goog.moduleLoaderState_ = {
- moduleName: undefined,
- declareLegacyNamespace: false
- };
- var exports;
- if (goog.isFunction(moduleDef)) {
- exports = moduleDef.call(goog.global, {});
- } else if (goog.isString(moduleDef)) {
- exports = goog.loadModuleFromSource_.call(goog.global, moduleDef);
- } else {
- throw Error('Invalid module definition');
- }
-
- var moduleName = goog.moduleLoaderState_.moduleName;
- if (!goog.isString(moduleName) || !moduleName) {
- throw Error('Invalid module name \"' + moduleName + '\"');
- }
-
- // Don't seal legacy namespaces as they may be uses as a parent of
- // another namespace
- if (goog.moduleLoaderState_.declareLegacyNamespace) {
- goog.constructNamespace_(moduleName, exports);
- } else if (goog.SEAL_MODULE_EXPORTS && Object.seal) {
- Object.seal(exports);
- }
-
- goog.loadedModules_[moduleName] = exports;
- } finally {
- goog.moduleLoaderState_ = previousState;
- }
- };
-
-
- /**
- * @private @const {function(string):?}
- *
- * The new type inference warns because this function has no formal
- * parameters, but its jsdoc says that it takes one argument.
- * (The argument is used via arguments[0], but NTI does not detect this.)
- * @suppress {newCheckTypes}
- */
- goog.loadModuleFromSource_ = function() {
- // NOTE: we avoid declaring parameters or local variables here to avoid
- // masking globals or leaking values into the module definition.
- 'use strict';
- var exports = {};
- eval(arguments[0]);
- return exports;
+ goog.retrieveAndExec_(url, true, false);
};
@@ -1227,10 +1192,8 @@ if (goog.DEPENDENCIES_ENABLED) {
}
}
- var isOldIE = goog.IS_OLD_IE_;
-
if (opt_sourceText === undefined) {
- if (!isOldIE) {
+ if (!goog.IS_OLD_IE_) {
if (goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING) {
goog.appendScriptSrcNode_(src);
} else {
@@ -1256,6 +1219,66 @@ if (goog.DEPENDENCIES_ENABLED) {
};
+ /**
+ * Determines whether the given language needs to be transpiled.
+ * @param {string} lang
+ * @return {boolean}
+ * @private
+ */
+ goog.needsTranspile_ = function(lang) {
+ if (goog.TRANSPILE == 'always') {
+ return true;
+ } else if (goog.TRANSPILE == 'never') {
+ return false;
+ } else if (!goog.transpiledLanguages_) {
+ goog.transpiledLanguages_ = {'es5': true, 'es6': true, 'es6-impl': true};
+ /** @preserveTry */
+ try {
+ // Perform some quick conformance checks, to distinguish
+ // between browsers that support es5, es6-impl, or es6.
+
+ // Identify ES3-only browsers by their incorrect treatment of commas.
+ goog.transpiledLanguages_['es5'] = eval('[1,].length!=1');
+
+ // As browsers mature, features will be moved from the full test
+ // into the impl test. This must happen before the corresponding
+ // features are changed in the Closure Compiler's FeatureSet object.
+
+ // Test 1: es6-impl [FF49, Edge 13, Chrome 49]
+ // (a) let/const keyword, (b) class expressions, (c) Map object,
+ // (d) iterable arguments, (e) spread operator
+ var es6implTest =
+ 'let a={};const X=class{constructor(){}x(z){return new Map([' +
+ '...arguments]).get(z[0])==3}};return new X().x([a,3])';
+
+ // Test 2: es6 [FF50 (?), Edge 14 (?), Chrome 50]
+ // (a) default params (specifically shadowing locals),
+ // (b) destructuring, (c) block-scoped functions,
+ // (d) for-of (const), (e) new.target/Reflect.construct
+ var es6fullTest =
+ 'class X{constructor(){if(new.target!=String)throw 1;this.x=42}}' +
+ 'let q=Reflect.construct(X,[],String);if(q.x!=42||!(q instanceof ' +
+ 'String))throw 1;for(const a of[2,3]){if(a==2)continue;function ' +
+ 'f(z={a}){let a=0;return z.a}{function f(){return 0;}}return f()' +
+ '==3}';
+
+ if (eval('(()=>{"use strict";' + es6implTest + '})()')) {
+ goog.transpiledLanguages_['es6-impl'] = false;
+ }
+ if (eval('(()=>{"use strict";' + es6fullTest + '})()')) {
+ goog.transpiledLanguages_['es6'] = false;
+ }
+ } catch (err) {
+ }
+ }
+ return !!goog.transpiledLanguages_[lang];
+ };
+
+
+ /** @private {?Object<string, boolean>} */
+ goog.transpiledLanguages_ = null;
+
+
/** @private {number} */
goog.lastNonModuleScriptIndex_ = 0;
@@ -1341,10 +1364,14 @@ if (goog.DEPENDENCIES_ENABLED) {
for (var i = 0; i < scripts.length; i++) {
var path = scripts[i];
if (path) {
- if (!deps.pathIsModule[path]) {
- goog.importScript_(goog.basePath + path);
+ var loadFlags = deps.loadFlags[path] || {};
+ var needsTranspile = goog.needsTranspile_(loadFlags['lang']);
+ if (loadFlags['module'] == 'goog' || needsTranspile) {
+ goog.importProcessedScript_(
+ goog.basePath + path, loadFlags['module'] == 'goog',
+ needsTranspile);
} else {
- goog.importModule_(goog.basePath + path);
+ goog.importScript_(goog.basePath + path);
}
} else {
goog.moduleLoaderState_ = moduleState;
@@ -1382,6 +1409,68 @@ if (goog.DEPENDENCIES_ENABLED) {
/**
+ * @param {function(?):?|string} moduleDef The module definition.
+ */
+goog.loadModule = function(moduleDef) {
+ // NOTE: we allow function definitions to be either in the from
+ // of a string to eval (which keeps the original source intact) or
+ // in a eval forbidden environment (CSP) we allow a function definition
+ // which in its body must call {@code goog.module}, and return the exports
+ // of the module.
+ var previousState = goog.moduleLoaderState_;
+ try {
+ goog.moduleLoaderState_ = {
+ moduleName: undefined,
+ declareLegacyNamespace: false
+ };
+ var exports;
+ if (goog.isFunction(moduleDef)) {
+ exports = moduleDef.call(undefined, {});
+ } else if (goog.isString(moduleDef)) {
+ exports = goog.loadModuleFromSource_.call(undefined, moduleDef);
+ } else {
+ throw Error('Invalid module definition');
+ }
+
+ var moduleName = goog.moduleLoaderState_.moduleName;
+ if (!goog.isString(moduleName) || !moduleName) {
+ throw Error('Invalid module name \"' + moduleName + '\"');
+ }
+
+ // Don't seal legacy namespaces as they may be uses as a parent of
+ // another namespace
+ if (goog.moduleLoaderState_.declareLegacyNamespace) {
+ goog.constructNamespace_(moduleName, exports);
+ } else if (goog.SEAL_MODULE_EXPORTS && Object.seal) {
+ Object.seal(exports);
+ }
+
+ goog.loadedModules_[moduleName] = exports;
+ } finally {
+ goog.moduleLoaderState_ = previousState;
+ }
+};
+
+
+/**
+ * @private @const {function(string):?}
+ *
+ * The new type inference warns because this function has no formal
+ * parameters, but its jsdoc says that it takes one argument.
+ * (The argument is used via arguments[0], but NTI does not detect this.)
+ * @suppress {newCheckTypes}
+ */
+goog.loadModuleFromSource_ = function() {
+ // NOTE: we avoid declaring parameters or local variables here to avoid
+ // masking globals or leaking values into the module definition.
+ 'use strict';
+ var exports = {};
+ eval(arguments[0]);
+ return exports;
+};
+
+
+/**
* Normalize a file path by removing redundant ".." and extraneous "." file
* path components.
* @param {string} path
@@ -1409,28 +1498,39 @@ goog.normalizePath_ = function(path) {
/**
* Loads file by synchronous XHR. Should not be used in production environments.
* @param {string} src Source URL.
- * @return {string} File contents.
+ * @return {?string} File contents, or null if load failed.
* @private
*/
goog.loadFileSync_ = function(src) {
if (goog.global.CLOSURE_LOAD_FILE_SYNC) {
return goog.global.CLOSURE_LOAD_FILE_SYNC(src);
} else {
- /** @type {XMLHttpRequest} */
- var xhr = new goog.global['XMLHttpRequest']();
- xhr.open('get', src, false);
- xhr.send();
- return xhr.responseText;
+ try {
+ /** @type {XMLHttpRequest} */
+ var xhr = new goog.global['XMLHttpRequest']();
+ xhr.open('get', src, false);
+ xhr.send();
+ // NOTE: Successful http: requests have a status of 200, but successful
+ // file: requests may have a status of zero. Any other status, or a
+ // thrown exception (particularly in case of file: requests) indicates
+ // some sort of error, which we treat as a missing or unavailable file.
+ return xhr.status == 0 || xhr.status == 200 ? xhr.responseText : null;
+ } catch (err) {
+ // No need to rethrow or log, since errors should show up on their own.
+ return null;
+ }
}
};
/**
- * Retrieve and execute a module.
+ * Retrieve and execute a script that needs some sort of wrapping.
* @param {string} src Script source URL.
+ * @param {boolean} isModule Whether to load as a module.
+ * @param {boolean} needsTranspile Whether to transpile down to ES3.
* @private
*/
-goog.retrieveAndExecModule_ = function(src) {
+goog.retrieveAndExec_ = function(src, isModule, needsTranspile) {
if (!COMPILED) {
// The full but non-canonicalized URL for later use.
var originalPath = src;
@@ -1442,23 +1542,74 @@ goog.retrieveAndExecModule_ = function(src) {
goog.global.CLOSURE_IMPORT_SCRIPT || goog.writeScriptTag_;
var scriptText = goog.loadFileSync_(src);
+ if (scriptText == null) {
+ throw new Error('Load of "' + src + '" failed');
+ }
- if (scriptText != null) {
- var execModuleScript = goog.wrapModule_(src, scriptText);
- var isOldIE = goog.IS_OLD_IE_;
- if (isOldIE) {
- goog.dependencies_.deferred[originalPath] = execModuleScript;
- goog.queuedModules_.push(originalPath);
- } else {
- importScript(src, execModuleScript);
- }
+ if (needsTranspile) {
+ scriptText = goog.transpile_.call(goog.global, scriptText, src);
+ }
+
+ if (isModule) {
+ scriptText = goog.wrapModule_(src, scriptText);
} else {
- throw new Error('load of ' + src + 'failed');
+ scriptText += '\n//# sourceURL=' + src;
+ }
+ var isOldIE = goog.IS_OLD_IE_;
+ if (isOldIE) {
+ goog.dependencies_.deferred[originalPath] = scriptText;
+ goog.queuedModules_.push(originalPath);
+ } else {
+ importScript(src, scriptText);
}
}
};
+/**
+ * Lazily retrieves the transpiler and applies it to the source.
+ * @param {string} code JS code.
+ * @param {string} path Path to the code.
+ * @return {string} The transpiled code.
+ * @private
+ */
+goog.transpile_ = function(code, path) {
+ var jscomp = goog.global['$jscomp'];
+ if (!jscomp) {
+ goog.global['$jscomp'] = jscomp = {};
+ }
+ var transpile = jscomp.transpile;
+ if (!transpile) {
+ var transpilerPath = goog.basePath + goog.TRANSPILER;
+ var transpilerCode = goog.loadFileSync_(transpilerPath);
+ if (transpilerCode) {
+ // This must be executed synchronously, since by the time we know we
+ // need it, we're about to load and write the ES6 code synchronously,
+ // so a normal script-tag load will be too slow.
+ eval(transpilerCode + '\n//# sourceURL=' + transpilerPath);
+ // Note: transpile.js reassigns goog.global['$jscomp'] so pull it again.
+ jscomp = goog.global['$jscomp'];
+ transpile = jscomp.transpile;
+ }
+ }
+ if (!transpile) {
+ // The transpiler is an optional component. If it's not available then
+ // replace it with a pass-through function that simply logs.
+ var suffix = ' requires transpilation but no transpiler was found.';
+ transpile = jscomp.transpile = function(code, path) {
+ // TODO(user): figure out some way to get this error to show up
+ // in test results, noting that the failure may occur in many
+ // different ways, including in loadModule() before the test
+ // runner even comes up.
+ goog.logToConsole_(path + suffix);
+ return code;
+ };
+ }
+ // Note: any transpilation errors/warnings will be logged to the console.
+ return transpile(code, path);
+};
+
+
//==============================================================================
// Language Enhancements
//==============================================================================
@@ -2464,8 +2615,11 @@ goog.defineClass.ClassDescriptor;
/**
- * @define {boolean} Whether the instances returned by
- * goog.defineClass should be sealed when possible.
+ * @define {boolean} Whether the instances returned by goog.defineClass should
+ * be sealed when possible.
+ *
+ * When sealing is disabled the constructor function will not be wrapped by
+ * goog.defineClass, making it incompatible with ES6 class methods.
*/
goog.define('goog.defineClass.SEAL_CLASS_INSTANCES', goog.DEBUG);
@@ -2481,30 +2635,46 @@ goog.define('goog.defineClass.SEAL_CLASS_INSTANCES', goog.DEBUG);
* @private
*/
goog.defineClass.createSealingConstructor_ = function(ctr, superClass) {
- if (goog.defineClass.SEAL_CLASS_INSTANCES &&
- Object.seal instanceof Function) {
- // Don't seal subclasses of unsealable-tagged legacy classes.
- if (superClass && superClass.prototype &&
- superClass.prototype[goog.UNSEALABLE_CONSTRUCTOR_PROPERTY_]) {
- return ctr;
- }
- /**
- * @this {Object}
- * @return {?}
- */
- var wrappedCtr = function() {
- // Don't seal an instance of a subclass when it calls the constructor of
- // its super class as there is most likely still setup to do.
- var instance = ctr.apply(this, arguments) || this;
- instance[goog.UID_PROPERTY_] = instance[goog.UID_PROPERTY_];
- if (this.constructor === wrappedCtr) {
- Object.seal(instance);
- }
- return instance;
- };
- return wrappedCtr;
+ if (!goog.defineClass.SEAL_CLASS_INSTANCES) {
+ // Do now wrap the constructor when sealing is disabled. Angular code
+ // depends on this for injection to work properly.
+ return ctr;
}
- return ctr;
+
+ // Compute whether the constructor is sealable at definition time, rather
+ // than when the instance is being constructed.
+ var superclassSealable = !goog.defineClass.isUnsealable_(superClass);
+
+ /**
+ * @this {Object}
+ * @return {?}
+ */
+ var wrappedCtr = function() {
+ // Don't seal an instance of a subclass when it calls the constructor of
+ // its super class as there is most likely still setup to do.
+ var instance = ctr.apply(this, arguments) || this;
+ instance[goog.UID_PROPERTY_] = instance[goog.UID_PROPERTY_];
+
+ if (this.constructor === wrappedCtr && superclassSealable &&
+ Object.seal instanceof Function) {
+ Object.seal(instance);
+ }
+ return instance;
+ };
+
+ return wrappedCtr;
+};
+
+
+/**
+ * @param {Function} ctr The constructor to test.
+ * @returns {boolean} Whether the constructor has been tagged as unsealable
+ * using goog.tagUnsealableClass.
+ * @private
+ */
+goog.defineClass.isUnsealable_ = function(ctr) {
+ return ctr && ctr.prototype &&
+ ctr.prototype[goog.UNSEALABLE_CONSTRUCTOR_PROPERTY_];
};
@@ -2553,7 +2723,7 @@ goog.defineClass.applyProperties_ = function(target, source) {
/**
* Sealing classes breaks the older idiom of assigning properties on the
- * prototype rather than in the constructor. As such, goog.defineClass
+ * prototype rather than in the constructor. As such, goog.defineClass
* must not seal subclasses of these old-style classes until they are fixed.
* Until then, this marks a class as "broken", instructing defineClass
* not to seal subclasses.
@@ -2835,9 +3005,10 @@ ol.WEBGL_EXTENSIONS; // value is set in `ol.has`
* @function
* @api
*/
-ol.inherits =
- goog.inherits;
-// note that the newline above is necessary to satisfy the linter
+ol.inherits = function(childCtor, parentCtor) {
+ childCtor.prototype = Object.create(parentCtor.prototype);
+ childCtor.prototype.constructor = childCtor;
+};
/**
@@ -4761,7 +4932,7 @@ goog.asserts.assert = function(condition, opt_message, var_args) {
* switch(type) {
* case FOO: doSomething(); break;
* case BAR: doSomethingElse(); break;
- * default: goog.assert.fail('Unrecognized type: ' + type);
+ * default: goog.asserts.fail('Unrecognized type: ' + type);
* // We have only 2 types - "default:" section is unreachable code.
* }
* </pre>
@@ -5308,757 +5479,11 @@ ol.object.isEmpty = function(object) {
return !property;
};
-/**
- * File for all typedefs used by the compiler, and referenced by JSDoc.
- *
- * These look like vars (or var properties), but in fact are simply identifiers
- * for the Closure compiler. Originally they were included in the appropriate
- * namespace file, but with the move away from Closure namespaces and towards
- * self-contained standard modules are now all in this file.
- * Unlike the other type definitions - enums and constructor functions - they
- * are not code and so are not imported or exported. They are only referred to
- * in type-defining comments used by the Closure compiler, and so should not
- * appear in module code.
- *
- * When the code is converted to ES6 modules, the namespace structure will
- * disappear, and these typedefs will have to be renamed accordingly, but the
- * namespace structure is maintained for the present for backwards compatibility.
- *
- * In principle, typedefs should not have a `goog.provide` nor should files which
- * refer to a typedef in comments need a `goog.require`. However, goog.provides
- * are needed for 2 cases, both to prevent compiler errors/warnings:
- * - the 1st two for specific errors
- * - each sub-namespace needs at least one so the namespace is created when not
- * used in the code, as when application code is compiled with the library.
- */
-goog.provide('ol.Extent');
-goog.provide('ol.events.EventTargetLike');
-
-goog.provide('ol.interaction.DragBoxEndConditionType');
-goog.provide('ol.proj.ProjectionLike');
-goog.provide('ol.raster.Operation');
-goog.provide('ol.style.AtlasBlock');
-
-
-/**
- * @typedef {string|Array.<string>|ol.Attribution|Array.<ol.Attribution>}
- * @api
- */
-ol.AttributionLike;
-
-
-/**
- * @typedef {{fillStyle: ol.ColorLike}}
- */
-ol.CanvasFillState;
-
-
-/**
- * A function returning the canvas element (`{HTMLCanvasElement}`)
- * used by the source as an image. The arguments passed to the function are:
- * {@link ol.Extent} the image extent, `{number}` the image resolution,
- * `{number}` the device pixel ratio, {@link ol.Size} the image size, and
- * {@link ol.proj.Projection} the image projection. The canvas returned by
- * this function is cached by the source. The this keyword inside the function
- * references the {@link ol.source.ImageCanvas}.
- *
- * @typedef {function(this:ol.source.ImageCanvas, ol.Extent, number,
- * number, ol.Size, ol.proj.Projection): HTMLCanvasElement}
- * @api
- */
-ol.CanvasFunctionType;
-
-
-/**
- * @typedef {{lineCap: string,
- * lineDash: Array.<number>,
- * lineJoin: string,
- * lineWidth: number,
- * miterLimit: number,
- * strokeStyle: string}}
- */
-ol.CanvasStrokeState;
-
-
-/**
- * @typedef {{font: string,
- * textAlign: string,
- * textBaseline: string}}
- */
-ol.CanvasTextState;
-
-
-/**
- * @typedef {function((ol.Coordinate|undefined)): (ol.Coordinate|undefined)}
- */
-ol.CenterConstraintType;
-
-
-/**
- * A color represented as a short array [red, green, blue, alpha].
- * red, green, and blue should be integers in the range 0..255 inclusive.
- * alpha should be a float in the range 0..1 inclusive. If no alpha value is
- * given then `1` will be used.
- * @typedef {Array.<number>}
- * @api
- */
-ol.Color;
-
-
-/**
- * A type accepted by CanvasRenderingContext2D.fillStyle.
- * Represents a color, pattern, or gradient.
- *
- * @typedef {string|CanvasPattern|CanvasGradient}
- * @api
- */
-ol.ColorLike;
-
-
-/**
- * An array of numbers representing an xy coordinate. Example: `[16, 48]`.
- * @typedef {Array.<number>} ol.Coordinate
- * @api stable
- */
-ol.Coordinate;
-
-
-/**
- * A function that takes a {@link ol.Coordinate} and transforms it into a
- * `{string}`.
- *
- * @typedef {function((ol.Coordinate|undefined)): string}
- * @api stable
- */
-ol.CoordinateFormatType;
-
-
-/**
- * An array of numbers representing an extent: `[minx, miny, maxx, maxy]`.
- * @typedef {Array.<number>}
- * @api stable
- */
-ol.Extent;
-
-
-/**
- * {@link ol.source.Vector} sources use a function of this type to load
- * features.
- *
- * This function takes an {@link ol.Extent} representing the area to be loaded,
- * a `{number}` representing the resolution (map units per pixel) and an
- * {@link ol.proj.Projection} for the projection as arguments. `this` within
- * the function is bound to the {@link ol.source.Vector} it's called from.
- *
- * The function is responsible for loading the features and adding them to the
- * source.
- * @api
- * @typedef {function(this:ol.source.Vector, ol.Extent, number,
- * ol.proj.Projection)}
- */
-ol.FeatureLoader;
-
-
-/**
- * A function that returns an array of {@link ol.style.Style styles} given a
- * resolution. The `this` keyword inside the function references the
- * {@link ol.Feature} to be styled.
- *
- * @typedef {function(this: ol.Feature, number):
- * (ol.style.Style|Array.<ol.style.Style>)}
- * @api stable
- */
-ol.FeatureStyleFunction;
-
-
-/**
- * {@link ol.source.Vector} sources use a function of this type to get the url
- * to load features from.
- *
- * This function takes an {@link ol.Extent} representing the area to be loaded,
- * a `{number}` representing the resolution (map units per pixel) and an
- * {@link ol.proj.Projection} for the projection as arguments and returns a
- * `{string}` representing the URL.
- * @api
- * @typedef {function(ol.Extent, number, ol.proj.Projection) : string}
- */
-ol.FeatureUrlFunction;
-
-
-/**
- * A function that is called to trigger asynchronous canvas drawing. It is
- * called with a "done" callback that should be called when drawing is done.
- * If any error occurs during drawing, the "done" callback should be called with
- * that error.
- *
- * @typedef {function(function(Error))}
- */
-ol.ImageCanvasLoader;
-
-
-/**
- * A function that takes an {@link ol.Image} for the image and a `{string}` for
- * the src as arguments. It is supposed to make it so the underlying image
- * {@link ol.Image#getImage} is assigned the content specified by the src. If
- * not specified, the default is
- *
- * function(image, src) {
- * image.getImage().src = src;
- * }
- *
- * Providing a custom `imageLoadFunction` can be useful to load images with
- * post requests or - in general - through XHR requests, where the src of the
- * image element would be set to a data URI when the content is loaded.
- *
- * @typedef {function(ol.Image, string)}
- * @api
- */
-ol.ImageLoadFunctionType;
-
-
-/**
- * @typedef {{x: number, xunits: (ol.style.IconAnchorUnits|undefined),
- * y: number, yunits: (ol.style.IconAnchorUnits|undefined)}}
- */
-ol.KMLVec2_;
-
-
-/**
- * @typedef {{flatCoordinates: Array.<number>,
- * whens: Array.<number>}}
- */
-ol.KMLGxTrackObject_;
-
-
-/**
- * @typedef {{layer: ol.layer.Layer,
- * opacity: number,
- * sourceState: ol.source.State,
- * visible: boolean,
- * managed: boolean,
- * extent: (ol.Extent|undefined),
- * zIndex: number,
- * maxResolution: number,
- * minResolution: number}}
- */
-ol.LayerState;
-
-
-/**
- * One of `all`, `bbox`, `tile`.
- *
- * @typedef {function(ol.Extent, number): Array.<ol.Extent>}
- * @api
- */
-ol.LoadingStrategy;
-
-
-/**
- * @typedef {{key_: string,
- * newer: ol.LRUCacheEntry,
- * older: ol.LRUCacheEntry,
- * value_: *}}
- */
-ol.LRUCacheEntry;
-
-
-/**
- * @typedef {{controls: ol.Collection.<ol.control.Control>,
- * interactions: ol.Collection.<ol.interaction.Interaction>,
- * keyboardEventTarget: (Element|Document),
- * logos: (Object.<string, (string|Element)>),
- * overlays: ol.Collection.<ol.Overlay>,
- * rendererConstructor:
- * function(new: ol.renderer.Map, Element, ol.Map),
- * values: Object.<string, *>}}
- */
-ol.MapOptionsInternal;
-
-
-/**
- * An array with two elements, representing a pixel. The first element is the
- * x-coordinate, the second the y-coordinate of the pixel.
- * @typedef {Array.<number>}
- * @api stable
- */
-ol.Pixel;
-
-
-/**
- * @typedef {function(ol.Map, ?olx.FrameState): boolean}
- */
-ol.PostRenderFunction;
-
-
-/**
- * Function to perform manipulations before rendering. This function is called
- * with the {@link ol.Map} as first and an optional {@link olx.FrameState} as
- * second argument. Return `true` to keep this function for the next frame,
- * `false` to remove it.
- * @typedef {function(ol.Map, ?olx.FrameState): boolean}
- * @api
- */
-ol.PreRenderFunction;
-
-
-/**
- * @typedef {function(ol.Extent, number, number) : ol.ImageBase}
- */
-ol.ReprojImageFunctionType;
-
-
-/**
- * @typedef {function(number, number, number, number) : ol.Tile}
- */
-ol.ReprojTileFunctionType;
-
-
-/**
- * Single triangle; consists of 3 source points and 3 target points.
- *
- * @typedef {{source: Array.<ol.Coordinate>,
- * target: Array.<ol.Coordinate>}}
- */
-ol.ReprojTriangle;
-
-
-/**
- * @typedef {function((number|undefined), number, number): (number|undefined)}
- */
-ol.ResolutionConstraintType;
-
-
-/**
- * @typedef {function((number|undefined), number): (number|undefined)}
- */
-ol.RotationConstraintType;
-
-
-/**
- * An array of numbers representing a size: `[width, height]`.
- * @typedef {Array.<number>}
- * @api stable
- */
-ol.Size;
-
-
-/**
- * @typedef {{attributions: (ol.AttributionLike|undefined),
- * extent: (null|ol.Extent|undefined),
- * logo: (string|olx.LogoOptions|undefined),
- * projection: ol.proj.ProjectionLike,
- * resolutions: (Array.<number>|undefined),
- * state: (ol.source.State|undefined)}}
- */
-ol.SourceImageOptions;
-
-
-/**
- * @typedef {{revision: number,
- * resolution: number,
- * extent: ol.Extent}}
- */
-ol.SourceRasterRenderedState;
-
-
-/**
- * @typedef {{attributions: (ol.AttributionLike|undefined),
- * logo: (string|olx.LogoOptions|undefined),
- * projection: ol.proj.ProjectionLike,
- * state: (ol.source.State|undefined),
- * wrapX: (boolean|undefined)}}
- */
-ol.SourceSourceOptions;
-
-
-/**
- * @typedef {{attributions: (ol.AttributionLike|undefined),
- * cacheSize: (number|undefined),
- * extent: (ol.Extent|undefined),
- * logo: (string|olx.LogoOptions|undefined),
- * opaque: (boolean|undefined),
- * tilePixelRatio: (number|undefined),
- * projection: ol.proj.ProjectionLike,
- * state: (ol.source.State|undefined),
- * tileGrid: (ol.tilegrid.TileGrid|undefined),
- * wrapX: (boolean|undefined)}}
- */
-ol.SourceTileOptions;
-
-
-/**
- * @typedef {{attributions: (ol.AttributionLike|undefined),
- * cacheSize: (number|undefined),
- * extent: (ol.Extent|undefined),
- * logo: (string|olx.LogoOptions|undefined),
- * opaque: (boolean|undefined),
- * projection: ol.proj.ProjectionLike,
- * state: (ol.source.State|undefined),
- * tileGrid: (ol.tilegrid.TileGrid|undefined),
- * tileLoadFunction: ol.TileLoadFunctionType,
- * tilePixelRatio: (number|undefined),
- * tileUrlFunction: (ol.TileUrlFunctionType|undefined),
- * url: (string|undefined),
- * urls: (Array.<string>|undefined),
- * wrapX: (boolean|undefined)}}
- */
-ol.SourceUrlTileOptions;
-
-
-/**
- * An array of three numbers representing the location of a tile in a tile
- * grid. The order is `z`, `x`, and `y`. `z` is the zoom level.
- * @typedef {Array.<number>} ol.TileCoord
- * @api
- */
-ol.TileCoord;
-
-
-/**
- * A function that takes an {@link ol.Tile} for the tile and a `{string}` for
- * the url as arguments.
- *
- * @typedef {function(ol.Tile, string)}
- * @api
- */
-ol.TileLoadFunctionType;
-
-
-/**
- * @typedef {function(ol.Tile, string, ol.Coordinate, number): number}
- */
-ol.TilePriorityFunction;
-
-
-/**
- * @typedef {{
- * dirty: boolean,
- * renderedRenderOrder: (null|function(ol.Feature, ol.Feature):number),
- * renderedTileRevision: number,
- * renderedRevision: number,
- * replayGroup: ol.render.IReplayGroup,
- * skippedFeatures: Array.<string>}}
- */
-ol.TileReplayState;
-
-
-/**
- * {@link ol.source.Tile} sources use a function of this type to get the url
- * that provides a tile for a given tile coordinate.
- *
- * This function takes an {@link ol.TileCoord} for the tile coordinate, a
- * `{number}` representing the pixel ratio and an {@link ol.proj.Projection} for
- * the projection as arguments and returns a `{string}` representing the tile
- * URL, or undefined if no tile should be requested for the passed tile
- * coordinate.
- *
- * @typedef {function(ol.TileCoord, number,
- * ol.proj.Projection): (string|undefined)}
- * @api
- */
-ol.TileUrlFunctionType;
-
-
-/**
- * A transform function accepts an array of input coordinate values, an optional
- * output array, and an optional dimension (default should be 2). The function
- * transforms the input coordinate values, populates the output array, and
- * returns the output array.
- *
- * @typedef {function(Array.<number>, Array.<number>=, number=): Array.<number>}
- * @api stable
- */
-ol.TransformFunction;
-
-
-/**
- * @typedef {{buf: ol.webgl.Buffer,
- * buffer: WebGLBuffer}}
- */
-ol.WebglBufferCacheEntry;
-
-
-/**
- * @typedef {{magFilter: number, minFilter: number, texture: WebGLTexture}}
- */
-ol.WebglTextureCacheEntry;
-
-
-/**
- * Number of features; bounds/extent.
- * @typedef {{numberOfFeatures: number,
- * bounds: ol.Extent}}
- * @api stable
- */
-ol.WFSFeatureCollectionMetadata;
-
-
-/**
- * Total deleted; total inserted; total updated; array of insert ids.
- * @typedef {{totalDeleted: number,
- * totalInserted: number,
- * totalUpdated: number,
- * insertIds: Array.<string>}}
- * @api stable
- */
-ol.WFSTransactionResponse;
-
-
-/**
- * @typedef {{type: number, value: (number|string|undefined), position: number}}
- */
-ol.WKTToken;
-
-
-/**
- * When using {@link ol.xml.makeChildAppender} or
- * {@link ol.xml.makeSimpleNodeFactory}, the top `objectStack` item needs to
- * have this structure.
- * @typedef {{node:Node}}
- */
-ol.XmlNodeStackItem;
-
-
-/**
- * @typedef {function(Node, Array.<*>)}
- */
-ol.XmlParser;
-
-
-/**
- * @typedef {function(Node, *, Array.<*>)}
- */
-ol.XmlSerializer;
-
-
-/**
- * A function that takes an {@link ol.MapBrowserEvent} and returns a
- * `{boolean}`. If the condition is met, true should be returned.
- *
- * @typedef {function(ol.MapBrowserEvent): boolean}
- * @api stable
- */
-ol.events.ConditionType;
-
-
-/**
- * @typedef {EventTarget|ol.events.EventTarget|
- * {addEventListener: function(string, Function, boolean=),
- * removeEventListener: function(string, Function, boolean=),
- * dispatchEvent: function(string)}}
- */
-ol.events.EventTargetLike;
-
-
-/**
- * Key to use with {@link ol.Observable#unByKey}.
- *
- * @typedef {{bindTo: (Object|undefined),
- * boundListener: (ol.events.ListenerFunctionType|undefined),
- * callOnce: boolean,
- * deleteIndex: (number|undefined),
- * listener: ol.events.ListenerFunctionType,
- * target: (EventTarget|ol.events.EventTarget),
- * type: string}}
- * @api
- */
-ol.events.Key;
-
-
-/**
- * Listener function. This function is called with an event object as argument.
- * When the function returns `false`, event propagation will stop.
- *
- * @typedef {function(ol.events.Event)|function(ol.events.Event): boolean}
- * @api
- */
-ol.events.ListenerFunctionType;
-
-
-/**
- * A function that takes a {@link ol.MapBrowserEvent} and two
- * {@link ol.Pixel}s and returns a `{boolean}`. If the condition is met,
- * true should be returned.
- * @typedef {function(ol.MapBrowserEvent, ol.Pixel, ol.Pixel):boolean}
- * @api
- */
-ol.interaction.DragBoxEndConditionType;
-
-
-/**
- * Function that takes coordinates and an optional existing geometry as
- * arguments, and returns a geometry. The optional existing geometry is the
- * geometry that is returned when the function is called without a second
- * argument.
- * @typedef {function(!(ol.Coordinate|Array.<ol.Coordinate>|
- * Array.<Array.<ol.Coordinate>>), ol.geom.SimpleGeometry=):
- * ol.geom.SimpleGeometry}
- * @api
- */
-ol.interaction.DrawGeometryFunctionType;
-
-
-/**
- * @typedef {{depth: (Array.<number>|undefined),
- * feature: ol.Feature,
- * geometry: ol.geom.SimpleGeometry,
- * index: (number|undefined),
- * segment: Array.<ol.Extent>}}
- */
-ol.interaction.SegmentDataType;
-
-
-/**
- * A function that takes an {@link ol.Feature} or {@link ol.render.Feature} and
- * an {@link ol.layer.Layer} and returns `true` if the feature may be selected
- * or `false` otherwise.
- * @typedef {function((ol.Feature|ol.render.Feature), ol.layer.Layer):
- * boolean}
- * @api
- */
-ol.interaction.SelectFilterFunction;
-
-
-/**
- * @typedef {{
- * snapped: {boolean},
- * vertex: (ol.Coordinate|null),
- * vertexPixel: (ol.Pixel|null)
- * }}
- */
-ol.interaction.SnapResultType;
-
-
-/**
- * @typedef {{
- * feature: ol.Feature,
- * segment: Array.<ol.Coordinate>
- * }}
- */
-ol.interaction.SnapSegmentDataType;
-
-
-/**
- * A projection as {@link ol.proj.Projection}, SRS identifier string or
- * undefined.
- * @typedef {ol.proj.Projection|string|undefined} ol.proj.ProjectionLike
- * @api stable
- */
-ol.proj.ProjectionLike;
-
-
-/**
- * A function that takes an array of input data, performs some operation, and
- * returns an array of ouput data. For `'pixel'` type operations, functions
- * will be called with an array of {@link ol.raster.Pixel} data and should
- * return an array of the same. For `'image'` type operations, functions will
- * be called with an array of {@link ImageData
- * https://developer.mozilla.org/en-US/docs/Web/API/ImageData} and should return
- * an array of the same. The operations are called with a second "data"
- * argument, which can be used for storage. The data object is accessible
- * from raster events, where it can be initialized in "beforeoperations" and
- * accessed again in "afteroperations".
- *
- * @typedef {function((Array.<ol.raster.Pixel>|Array.<ImageData>), Object):
- * (Array.<ol.raster.Pixel>|Array.<ImageData>)}
- * @api
- */
-ol.raster.Operation;
-
-
-/**
- * An array of numbers representing pixel values.
- * @typedef {Array.<number>} ol.raster.Pixel
- * @api
- */
-ol.raster.Pixel;
-
-
-/**
- * @typedef {{x: number, y: number, width: number, height: number}}
- */
-ol.style.AtlasBlock;
-
-
-/**
- * Provides information for an image inside an atlas.
- * `offsetX` and `offsetY` are the position of the image inside
- * the atlas image `image`.
- * @typedef {{offsetX: number, offsetY: number, image: HTMLCanvasElement}}
- */
-ol.style.AtlasInfo;
-
-
-/**
- * Provides information for an image inside an atlas manager.
- * `offsetX` and `offsetY` is the position of the image inside
- * the atlas image `image` and the position of the hit-detection image
- * inside the hit-detection atlas image `hitImage`.
- * @typedef {{offsetX: number, offsetY: number, image: HTMLCanvasElement,
- * hitImage: HTMLCanvasElement}}
- */
-ol.style.AtlasManagerInfo;
-
-
-/**
- * @typedef {{strokeStyle: (string|undefined), strokeWidth: number,
- * size: number, lineDash: Array.<number>}}
- */
-ol.style.CircleRenderOptions;
-
-
-/**
- * @typedef {{opacity: number,
- * rotateWithView: boolean,
- * rotation: number,
- * scale: number,
- * snapToPixel: boolean}}
- */
-ol.style.ImageOptions;
-
-
-/**
- * A function that takes an {@link ol.Feature} as argument and returns an
- * {@link ol.geom.Geometry} that will be rendered and styled for the feature.
- *
- * @typedef {function((ol.Feature|ol.render.Feature)):
- * (ol.geom.Geometry|ol.render.Feature|undefined)}
- * @api
- */
-ol.style.GeometryFunction;
-
-
-/**
- * @typedef {{
- * strokeStyle: (string|undefined),
- * strokeWidth: number,
- * size: number,
- * lineCap: string,
- * lineDash: Array.<number>,
- * lineJoin: string,
- * miterLimit: number
- * }}
- */
-ol.style.RegularShapeRenderOptions;
-
-
-/**
- * A function that takes an {@link ol.Feature} and a `{number}` representing
- * the view's resolution. The function should return a {@link ol.style.Style}
- * or an array of them. This way e.g. a vector layer can be styled.
- *
- * @typedef {function((ol.Feature|ol.render.Feature), number):
- * (ol.style.Style|Array.<ol.style.Style>)}
- * @api
- */
-ol.style.StyleFunction;
-
goog.provide('ol.events');
goog.provide('ol.events.EventType');
goog.provide('ol.events.KeyCode');
goog.require('ol.object');
-goog.require('ol.events.EventTargetLike');
/**
@@ -6118,8 +5543,8 @@ ol.events.LISTENER_MAP_PROP_ = 'olm_' + ((Math.random() * 1e4) | 0);
/**
- * @param {ol.events.Key} listenerObj Listener object.
- * @return {ol.events.ListenerFunctionType} Bound listener.
+ * @param {ol.EventsKey} listenerObj Listener object.
+ * @return {ol.EventsListenerFunctionType} Bound listener.
*/
ol.events.bindListener_ = function(listenerObj) {
var boundListener = function(evt) {
@@ -6129,22 +5554,22 @@ ol.events.bindListener_ = function(listenerObj) {
ol.events.unlistenByKey(listenerObj);
}
return listener.call(bindTo, evt);
- }
+ };
listenerObj.boundListener = boundListener;
return boundListener;
};
/**
- * Finds the matching {@link ol.events.Key} in the given listener
+ * Finds the matching {@link ol.EventsKey} in the given listener
* array.
*
- * @param {!Array<!ol.events.Key>} listeners Array of listeners.
+ * @param {!Array<!ol.EventsKey>} listeners Array of listeners.
* @param {!Function} listener The listener function.
* @param {Object=} opt_this The `this` value inside the listener.
* @param {boolean=} opt_setDeleteIndex Set the deleteIndex on the matching
* listener, for {@link ol.events.unlistenByKey}.
- * @return {ol.events.Key|undefined} The matching listener object.
+ * @return {ol.EventsKey|undefined} The matching listener object.
* @private
*/
ol.events.findListener_ = function(listeners, listener, opt_this,
@@ -6165,9 +5590,9 @@ ol.events.findListener_ = function(listeners, listener, opt_this,
/**
- * @param {ol.events.EventTargetLike} target Target.
+ * @param {ol.EventTargetLike} target Target.
* @param {string} type Type.
- * @return {Array.<ol.events.Key>|undefined} Listeners.
+ * @return {Array.<ol.EventsKey>|undefined} Listeners.
*/
ol.events.getListeners = function(target, type) {
var listenerMap = target[ol.events.LISTENER_MAP_PROP_];
@@ -6178,8 +5603,8 @@ ol.events.getListeners = function(target, type) {
/**
* Get the lookup of listeners. If one does not exist on the target, it is
* created.
- * @param {ol.events.EventTargetLike} target Target.
- * @return {!Object.<string, Array.<ol.events.Key>>} Map of
+ * @param {ol.EventTargetLike} target Target.
+ * @return {!Object.<string, Array.<ol.EventsKey>>} Map of
* listeners by event type.
* @private
*/
@@ -6196,7 +5621,7 @@ ol.events.getListenerMap_ = function(target) {
* Clean up all listener objects of the given type. All properties on the
* listener objects will be removed, and if no listeners remain in the listener
* map, it will be removed from the target.
- * @param {ol.events.EventTargetLike} target Target.
+ * @param {ol.EventTargetLike} target Target.
* @param {string} type Type.
* @private
*/
@@ -6205,7 +5630,7 @@ ol.events.removeListeners_ = function(target, type) {
if (listeners) {
for (var i = 0, ii = listeners.length; i < ii; ++i) {
target.removeEventListener(type, listeners[i].boundListener);
- ol.object.clear(listeners[i])
+ ol.object.clear(listeners[i]);
}
listeners.length = 0;
var listenerMap = target[ol.events.LISTENER_MAP_PROP_];
@@ -6226,13 +5651,13 @@ ol.events.removeListeners_ = function(target, type) {
* This function efficiently binds a `listener` to a `this` object, and returns
* a key for use with {@link ol.events.unlistenByKey}.
*
- * @param {ol.events.EventTargetLike} target Event target.
+ * @param {ol.EventTargetLike} target Event target.
* @param {string} type Event type.
- * @param {ol.events.ListenerFunctionType} listener Listener.
+ * @param {ol.EventsListenerFunctionType} listener Listener.
* @param {Object=} opt_this Object referenced by the `this` keyword in the
* listener. Default is the `target`.
* @param {boolean=} opt_once If true, add the listener as one-off listener.
- * @return {ol.events.Key} Unique key for the listener.
+ * @return {ol.EventsKey} Unique key for the listener.
*/
ol.events.listen = function(target, type, listener, opt_this, opt_once) {
var listenerMap = ol.events.getListenerMap_(target);
@@ -6248,7 +5673,7 @@ ol.events.listen = function(target, type, listener, opt_this, opt_once) {
listenerObj.callOnce = false;
}
} else {
- listenerObj = /** @type {ol.events.Key} */ ({
+ listenerObj = /** @type {ol.EventsKey} */ ({
bindTo: opt_this,
callOnce: !!opt_once,
listener: listener,
@@ -6276,12 +5701,12 @@ ol.events.listen = function(target, type, listener, opt_this, opt_once) {
* function, the self-unregistering listener will be turned into a permanent
* listener.
*
- * @param {ol.events.EventTargetLike} target Event target.
+ * @param {ol.EventTargetLike} target Event target.
* @param {string} type Event type.
- * @param {ol.events.ListenerFunctionType} listener Listener.
+ * @param {ol.EventsListenerFunctionType} listener Listener.
* @param {Object=} opt_this Object referenced by the `this` keyword in the
* listener. Default is the `target`.
- * @return {ol.events.Key} Key for unlistenByKey.
+ * @return {ol.EventsKey} Key for unlistenByKey.
*/
ol.events.listenOnce = function(target, type, listener, opt_this) {
return ol.events.listen(target, type, listener, opt_this, true);
@@ -6295,9 +5720,9 @@ ol.events.listenOnce = function(target, type, listener, opt_this) {
* To return a listener, this function needs to be called with the exact same
* arguments that were used for a previous {@link ol.events.listen} call.
*
- * @param {ol.events.EventTargetLike} target Event target.
+ * @param {ol.EventTargetLike} target Event target.
* @param {string} type Event type.
- * @param {ol.events.ListenerFunctionType} listener Listener.
+ * @param {ol.EventsListenerFunctionType} listener Listener.
* @param {Object=} opt_this Object referenced by the `this` keyword in the
* listener. Default is the `target`.
*/
@@ -6320,7 +5745,7 @@ ol.events.unlisten = function(target, type, listener, opt_this) {
* The argument passed to this function is the key returned from
* {@link ol.events.listen} or {@link ol.events.listenOnce}.
*
- * @param {ol.events.Key} key The key.
+ * @param {ol.EventsKey} key The key.
*/
ol.events.unlistenByKey = function(key) {
if (key && key.target) {
@@ -6344,7 +5769,7 @@ ol.events.unlistenByKey = function(key) {
* Unregisters all event listeners on an event target. Inspired by
* {@link https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html}
*
- * @param {ol.events.EventTargetLike} target Target.
+ * @param {ol.EventTargetLike} target Target.
*/
ol.events.unlistenAll = function(target) {
var listenerMap = ol.events.getListenerMap_(target);
@@ -6467,6 +5892,7 @@ goog.require('ol.Disposable');
goog.require('ol.events');
goog.require('ol.events.Event');
+
/**
* @classdesc
* A simplified implementation of the W3C DOM Level 2 EventTarget interface.
@@ -6487,7 +5913,7 @@ goog.require('ol.events.Event');
*/
ol.events.EventTarget = function() {
- goog.base(this);
+ ol.Disposable.call(this);
/**
* @private
@@ -6503,17 +5929,17 @@ ol.events.EventTarget = function() {
/**
* @private
- * @type {!Object.<string, Array.<ol.events.ListenerFunctionType>>}
+ * @type {!Object.<string, Array.<ol.EventsListenerFunctionType>>}
*/
this.listeners_ = {};
};
-goog.inherits(ol.events.EventTarget, ol.Disposable);
+ol.inherits(ol.events.EventTarget, ol.Disposable);
/**
* @param {string} type Type.
- * @param {ol.events.ListenerFunctionType} listener Listener.
+ * @param {ol.EventsListenerFunctionType} listener Listener.
*/
ol.events.EventTarget.prototype.addEventListener = function(type, listener) {
var listeners = this.listeners_[type];
@@ -6578,7 +6004,7 @@ ol.events.EventTarget.prototype.disposeInternal = function() {
* order that they will be called in.
*
* @param {string} type Type.
- * @return {Array.<ol.events.ListenerFunctionType>} Listeners.
+ * @return {Array.<ol.EventsListenerFunctionType>} Listeners.
*/
ol.events.EventTarget.prototype.getListeners = function(type) {
return this.listeners_[type];
@@ -6599,7 +6025,7 @@ ol.events.EventTarget.prototype.hasListener = function(opt_type) {
/**
* @param {string} type Type.
- * @param {ol.events.ListenerFunctionType} listener Listener.
+ * @param {ol.EventsListenerFunctionType} listener Listener.
*/
ol.events.EventTarget.prototype.removeEventListener = function(type, listener) {
var listeners = this.listeners_[type];
@@ -6642,7 +6068,7 @@ goog.require('ol.events.EventType');
*/
ol.Observable = function() {
- goog.base(this);
+ ol.events.EventTarget.call(this);
/**
* @private
@@ -6651,12 +6077,12 @@ ol.Observable = function() {
this.revision_ = 0;
};
-goog.inherits(ol.Observable, ol.events.EventTarget);
+ol.inherits(ol.Observable, ol.events.EventTarget);
/**
* Removes an event listener using the key returned by `on()` or `once()`.
- * @param {ol.events.Key|Array.<ol.events.Key>} key The key returned by `on()`
+ * @param {ol.EventsKey|Array.<ol.EventsKey>} key The key returned by `on()`
* or `once()` (or an array of keys).
* @api stable
*/
@@ -6666,7 +6092,7 @@ ol.Observable.unByKey = function(key) {
ol.events.unlistenByKey(key[i]);
}
} else {
- ol.events.unlistenByKey(/** @type {ol.events.Key} */ (key));
+ ol.events.unlistenByKey(/** @type {ol.EventsKey} */ (key));
}
};
@@ -6718,7 +6144,7 @@ ol.Observable.prototype.getRevision = function() {
* @param {string|Array.<string>} type The event type or array of event types.
* @param {function(?): ?} listener The listener function.
* @param {Object=} opt_this The object to use as `this` in `listener`.
- * @return {ol.events.Key|Array.<ol.events.Key>} Unique key for the listener. If
+ * @return {ol.EventsKey|Array.<ol.EventsKey>} Unique key for the listener. If
* called with an array of event types as the first argument, the return
* will be an array of keys.
* @api stable
@@ -6743,7 +6169,7 @@ ol.Observable.prototype.on = function(type, listener, opt_this) {
* @param {string|Array.<string>} type The event type or array of event types.
* @param {function(?): ?} listener The listener function.
* @param {Object=} opt_this The object to use as `this` in `listener`.
- * @return {ol.events.Key|Array.<ol.events.Key>} Unique key for the listener. If
+ * @return {ol.EventsKey|Array.<ol.EventsKey>} Unique key for the listener. If
* called with an array of event types as the first argument, the return
* will be an array of keys.
* @api stable
@@ -6787,7 +6213,7 @@ ol.Observable.prototype.un = function(type, listener, opt_this) {
* Removes an event listener using the key returned by `on()` or `once()`.
* Note that using the {@link ol.Observable.unByKey} static function is to
* be preferred.
- * @param {ol.events.Key|Array.<ol.events.Key>} key The key returned by `on()`
+ * @param {ol.EventsKey|Array.<ol.EventsKey>} key The key returned by `on()`
* or `once()` (or an array of keys).
* @function
* @api stable
@@ -6829,7 +6255,7 @@ ol.ObjectEventType = {
* @constructor
*/
ol.ObjectEvent = function(type, key, oldValue) {
- goog.base(this, type);
+ ol.events.Event.call(this, type);
/**
* The name of the property whose value is changing.
@@ -6847,7 +6273,7 @@ ol.ObjectEvent = function(type, key, oldValue) {
this.oldValue = oldValue;
};
-goog.inherits(ol.ObjectEvent, ol.events.Event);
+ol.inherits(ol.ObjectEvent, ol.events.Event);
/**
@@ -6896,7 +6322,7 @@ goog.inherits(ol.ObjectEvent, ol.events.Event);
* @api
*/
ol.Object = function(opt_values) {
- goog.base(this);
+ ol.Observable.call(this);
// Call goog.getUid to ensure that the order of objects' ids is the same as
// the order in which they were created. This also helps to ensure that
@@ -6914,7 +6340,7 @@ ol.Object = function(opt_values) {
this.setProperties(opt_values);
}
};
-goog.inherits(ol.Object, ol.Observable);
+ol.inherits(ol.Object, ol.Observable);
/**
@@ -7072,7 +6498,7 @@ ol.array.binarySearch = function(haystack, needle, opt_comparator) {
/* Key not found. */
return found ? low : ~low;
-}
+};
/**
* @param {Array.<number>} arr Array.
@@ -7224,11 +6650,11 @@ ol.array.flatten = function(arr) {
ol.array.extend = function(arr, data) {
var i;
var extension = goog.isArrayLike(data) ? data : [data];
- var length = extension.length
+ var length = extension.length;
for (i = 0; i < length; i++) {
arr[arr.length] = extension[i];
}
-}
+};
/**
@@ -7244,7 +6670,7 @@ ol.array.remove = function(arr, obj) {
arr.splice(i, 1);
}
return found;
-}
+};
/**
@@ -7264,7 +6690,7 @@ ol.array.find = function(arr, func) {
}
}
return null;
-}
+};
/**
@@ -7283,7 +6709,7 @@ ol.array.equals = function(arr1, arr2) {
}
}
return true;
-}
+};
/**
@@ -7303,7 +6729,7 @@ ol.array.stableSort = function(arr, compareFnc) {
for (i = 0; i < arr.length; i++) {
arr[i] = tmp[i].value;
}
-}
+};
/**
@@ -7318,7 +6744,7 @@ ol.array.findIndex = function(arr, func) {
return !func(el, idx, arr);
});
return found ? index : -1;
-}
+};
/**
@@ -7336,7 +6762,7 @@ ol.array.isSorted = function(arr, opt_func, opt_strict) {
var res = compare(arr[index - 1], currentVal);
return !(res > 0 || opt_strict && res === 0);
});
-}
+};
goog.provide('ol.ResolutionConstraint');
@@ -8894,7 +8320,6 @@ goog.require('ol.sphere.NORMAL');
* Projection units: `'degrees'`, `'ft'`, `'m'`, `'pixels'`, `'tile-pixels'` or
* `'us-ft'`.
* @enum {string}
- * @api stable
*/
ol.proj.Units = {
DEGREES: 'degrees',
@@ -8925,7 +8350,7 @@ ol.proj.METERS_PER_UNIT[ol.proj.Units.USFEET] = 1200 / 3937;
* Projection definition class. One of these is created for each projection
* supported in the application and stored in the {@link ol.proj} namespace.
* You can use these in applications, but this is not required, as API params
- * and options use {@link ol.proj.ProjectionLike} which means the simple string
+ * and options use {@link ol.ProjectionLike} which means the simple string
* code will suffice.
*
* You can use {@link ol.proj.get} to retrieve the object for a particular
@@ -9424,8 +8849,8 @@ ol.proj.addTransform = function(source, destination, transformFn) {
* converts these into the functions used internally which also handle
* extents and coordinate arrays.
*
- * @param {ol.proj.ProjectionLike} source Source projection.
- * @param {ol.proj.ProjectionLike} destination Destination projection.
+ * @param {ol.ProjectionLike} source Source projection.
+ * @param {ol.ProjectionLike} destination Destination projection.
* @param {function(ol.Coordinate): ol.Coordinate} forward The forward transform
* function (that is, from the source projection to the destination
* projection) that takes a {@link ol.Coordinate} as argument and returns
@@ -9509,7 +8934,7 @@ ol.proj.removeTransform = function(source, destination) {
* Transforms a coordinate from longitude/latitude to a different projection.
* @param {ol.Coordinate} coordinate Coordinate as longitude and latitude, i.e.
* an array with longitude as 1st and latitude as 2nd element.
- * @param {ol.proj.ProjectionLike=} opt_projection Target projection. The
+ * @param {ol.ProjectionLike=} opt_projection Target projection. The
* default is Web Mercator, i.e. 'EPSG:3857'.
* @return {ol.Coordinate} Coordinate projected to the target projection.
* @api stable
@@ -9523,7 +8948,7 @@ ol.proj.fromLonLat = function(coordinate, opt_projection) {
/**
* Transforms a coordinate to longitude/latitude.
* @param {ol.Coordinate} coordinate Projected coordinate.
- * @param {ol.proj.ProjectionLike=} opt_projection Projection of the coordinate.
+ * @param {ol.ProjectionLike=} opt_projection Projection of the coordinate.
* The default is Web Mercator, i.e. 'EPSG:3857'.
* @return {ol.Coordinate} Coordinate as longitude and latitude, i.e. an array
* with longitude as 1st and latitude as 2nd element.
@@ -9538,7 +8963,7 @@ ol.proj.toLonLat = function(coordinate, opt_projection) {
/**
* Fetches a Projection object for the code specified.
*
- * @param {ol.proj.ProjectionLike} projectionLike Either a code string which is
+ * @param {ol.ProjectionLike} projectionLike Either a code string which is
* a combination of authority and identifier such as "EPSG:4326", or an
* existing projection object, or undefined.
* @return {ol.proj.Projection} Projection object, or null if not in list.
@@ -9596,8 +9021,8 @@ ol.proj.equivalent = function(projection1, projection2) {
* function to convert a coordinates array from the source projection to the
* destination projection.
*
- * @param {ol.proj.ProjectionLike} source Source.
- * @param {ol.proj.ProjectionLike} destination Destination.
+ * @param {ol.ProjectionLike} source Source.
+ * @param {ol.ProjectionLike} destination Destination.
* @return {ol.TransformFunction} Transform function.
* @api stable
*/
@@ -9683,8 +9108,8 @@ ol.proj.cloneTransform = function(input, opt_output, opt_dimension) {
* geometry transforms.
*
* @param {ol.Coordinate} coordinate Coordinate.
- * @param {ol.proj.ProjectionLike} source Source projection-like.
- * @param {ol.proj.ProjectionLike} destination Destination projection-like.
+ * @param {ol.ProjectionLike} source Source projection-like.
+ * @param {ol.ProjectionLike} destination Destination projection-like.
* @return {ol.Coordinate} Coordinate.
* @api stable
*/
@@ -9699,8 +9124,8 @@ ol.proj.transform = function(coordinate, source, destination) {
* returns a new extent (and does not modify the original).
*
* @param {ol.Extent} extent The extent to transform.
- * @param {ol.proj.ProjectionLike} source Source projection-like.
- * @param {ol.proj.ProjectionLike} destination Destination projection-like.
+ * @param {ol.ProjectionLike} source Source projection-like.
+ * @param {ol.ProjectionLike} destination Destination projection-like.
* @return {ol.Extent} The transformed extent.
* @api stable
*/
@@ -9741,7 +9166,6 @@ goog.require('ol.proj.Units');
* `'Polygon'`, `'MultiPoint'`, `'MultiLineString'`, `'MultiPolygon'`,
* `'GeometryCollection'`, `'Circle'`.
* @enum {string}
- * @api stable
*/
ol.geom.GeometryType = {
POINT: 'Point',
@@ -9761,7 +9185,6 @@ ol.geom.GeometryType = {
* or measure ('M') coordinate is available. Supported values are `'XY'`,
* `'XYZ'`, `'XYM'`, `'XYZM'`.
* @enum {string}
- * @api stable
*/
ol.geom.GeometryLayout = {
XY: 'XY',
@@ -9786,7 +9209,7 @@ ol.geom.GeometryLayout = {
*/
ol.geom.Geometry = function() {
- goog.base(this);
+ ol.Object.call(this);
/**
* @private
@@ -9819,7 +9242,7 @@ ol.geom.Geometry = function() {
this.simplifiedGeometryRevision = 0;
};
-goog.inherits(ol.geom.Geometry, ol.Object);
+ol.inherits(ol.geom.Geometry, ol.Object);
/**
@@ -9979,9 +9402,9 @@ ol.geom.Geometry.prototype.translate = goog.abstractMethod;
* If you do not want the geometry modified in place, first `clone()` it and
* then use this function on the clone.
*
- * @param {ol.proj.ProjectionLike} source The current projection. Can be a
+ * @param {ol.ProjectionLike} source The current projection. Can be a
* string identifier or a {@link ol.proj.Projection} object.
- * @param {ol.proj.ProjectionLike} destination The desired projection. Can be a
+ * @param {ol.ProjectionLike} destination The desired projection. Can be a
* string identifier or a {@link ol.proj.Projection} object.
* @return {ol.geom.Geometry} This geometry. Note that original geometry is
* modified in place.
@@ -11851,7 +11274,7 @@ goog.vec.Mat4.getDiagonal = function(mat, vec, opt_diagonal) {
/**
* Sets the specified column with the supplied values.
*
- * @param {goog.vec.Mat4.AnyType} mat The matrix to recieve the values.
+ * @param {goog.vec.Mat4.AnyType} mat The matrix to receive the values.
* @param {number} column The column index to set the values on.
* @param {number} v0 The value for row 0.
* @param {number} v1 The value for row 1.
@@ -12613,7 +12036,7 @@ goog.vec.Mat4.makeFrustum = function(mat, left, right, bottom, top, near, far) {
/**
- * Makse the given 4x4 matrix perspective projection matrix given a
+ * Makes the given 4x4 matrix perspective projection matrix given a
* field of view and aspect ratio.
*
* @param {goog.vec.Mat4.AnyType} mat The matrix.
@@ -13217,7 +12640,7 @@ goog.require('ol.object');
*/
ol.geom.SimpleGeometry = function() {
- goog.base(this);
+ ol.geom.Geometry.call(this);
/**
* @protected
@@ -13238,7 +12661,7 @@ ol.geom.SimpleGeometry = function() {
this.flatCoordinates = null;
};
-goog.inherits(ol.geom.SimpleGeometry, ol.geom.Geometry);
+ol.inherits(ol.geom.SimpleGeometry, ol.geom.Geometry);
/**
@@ -14412,7 +13835,7 @@ goog.require('ol.geom.flat.simplify');
*/
ol.geom.LinearRing = function(coordinates, opt_layout) {
- goog.base(this);
+ ol.geom.SimpleGeometry.call(this);
/**
* @private
@@ -14429,7 +13852,7 @@ ol.geom.LinearRing = function(coordinates, opt_layout) {
this.setCoordinates(coordinates, opt_layout);
};
-goog.inherits(ol.geom.LinearRing, ol.geom.SimpleGeometry);
+ol.inherits(ol.geom.LinearRing, ol.geom.SimpleGeometry);
/**
@@ -14560,10 +13983,10 @@ goog.require('ol.math');
* @api stable
*/
ol.geom.Point = function(coordinates, opt_layout) {
- goog.base(this);
+ ol.geom.SimpleGeometry.call(this);
this.setCoordinates(coordinates, opt_layout);
};
-goog.inherits(ol.geom.Point, ol.geom.SimpleGeometry);
+ol.inherits(ol.geom.Point, ol.geom.SimpleGeometry);
/**
@@ -15258,7 +14681,7 @@ goog.require('ol.math');
*/
ol.geom.Polygon = function(coordinates, opt_layout) {
- goog.base(this);
+ ol.geom.SimpleGeometry.call(this);
/**
* @type {Array.<number>}
@@ -15305,7 +14728,7 @@ ol.geom.Polygon = function(coordinates, opt_layout) {
this.setCoordinates(coordinates, opt_layout);
};
-goog.inherits(ol.geom.Polygon, ol.geom.SimpleGeometry);
+ol.inherits(ol.geom.Polygon, ol.geom.SimpleGeometry);
/**
@@ -15797,7 +15220,7 @@ ol.ViewHint = {
* @api stable
*/
ol.View = function(opt_options) {
- goog.base(this);
+ ol.Object.call(this);
var options = opt_options || {};
/**
@@ -15868,7 +15291,7 @@ ol.View = function(opt_options) {
options.rotation !== undefined ? options.rotation : 0;
this.setProperties(properties);
};
-goog.inherits(ol.View, ol.Object);
+ol.inherits(ol.View, ol.Object);
/**
@@ -15999,6 +15422,26 @@ ol.View.prototype.calculateExtent = function(size) {
/**
+ * Get the maximum resolution of the view.
+ * @return {number} The maximum resolution of the view.
+ * @api
+ */
+ol.View.prototype.getMaxResolution = function() {
+ return this.maxResolution_;
+};
+
+
+/**
+ * Get the minimum resolution of the view.
+ * @return {number} The minimum resolution of the view.
+ * @api
+ */
+ol.View.prototype.getMinResolution = function() {
+ return this.minResolution_;
+};
+
+
+/**
* Get the view projection.
* @return {ol.proj.Projection} The projection of the view.
* @api stable
@@ -17034,7 +16477,7 @@ ol.CollectionEventType = {
*/
ol.CollectionEvent = function(type, opt_element, opt_target) {
- goog.base(this, type, opt_target);
+ ol.events.Event.call(this, type, opt_target);
/**
* The element that is added to or removed from the collection.
@@ -17044,7 +16487,7 @@ ol.CollectionEvent = function(type, opt_element, opt_target) {
this.element = opt_element;
};
-goog.inherits(ol.CollectionEvent, ol.events.Event);
+ol.inherits(ol.CollectionEvent, ol.events.Event);
/**
@@ -17072,7 +16515,7 @@ ol.CollectionProperty = {
*/
ol.Collection = function(opt_array) {
- goog.base(this);
+ ol.Object.call(this);
/**
* @private
@@ -17083,7 +16526,7 @@ ol.Collection = function(opt_array) {
this.updateLength_();
};
-goog.inherits(ol.Collection, ol.Object);
+ol.inherits(ol.Collection, ol.Object);
/**
@@ -18550,7 +17993,7 @@ goog.array.binarySearch_ = function(
* <code>goog.array.defaultCompare</code>, which compares the elements using
* the built in < and > operators. This will produce the expected behavior
* for homogeneous arrays of String(s) and Number(s), unlike the native sort,
- * but will give unpredictable results for heterogenous lists of strings and
+ * but will give unpredictable results for heterogeneous lists of strings and
* numbers with different numbers of digits.
*
* This sort is not guaranteed to be stable.
@@ -19092,6 +18535,26 @@ goog.array.copyByIndex = function(arr, index_arr) {
return result;
};
+
+/**
+ * Maps each element of the input array into zero or more elements of the output
+ * array.
+ *
+ * @param {!IArrayLike<VALUE>|string} arr Array or array like object
+ * over which to iterate.
+ * @param {function(this:THIS, VALUE, number, ?): !Array<RESULT>} f The function
+ * to call for every element. This function takes 3 arguments (the element,
+ * the index and the array) and should return an array. The result will be
+ * used to extend a new array.
+ * @param {THIS=} opt_obj The object to be used as the value of 'this' within f.
+ * @return {!Array<RESULT>} a new array with the concatenation of all arrays
+ * returned from f.
+ * @template THIS, VALUE, RESULT
+ */
+goog.array.concatMap = function(arr, f, opt_obj) {
+ return goog.array.concat.apply([], goog.array.map(arr, f, opt_obj));
+};
+
// Copyright 2006 The Closure Library Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
@@ -20747,6 +20210,32 @@ goog.provide('goog.object');
/**
+ * Whether two values are not observably distinguishable. This
+ * correctly detects that 0 is not the same as -0 and two NaNs are
+ * practically equivalent.
+ *
+ * The implementation is as suggested by harmony:egal proposal.
+ *
+ * @param {*} v The first value to compare.
+ * @param {*} v2 The second value to compare.
+ * @return {boolean} Whether two values are not observably distinguishable.
+ * @see http://wiki.ecmascript.org/doku.php?id=harmony:egal
+ */
+goog.object.is = function(v, v2) {
+ if (v === v2) {
+ // 0 === -0, but they are not identical.
+ // We need the cast because the compiler requires that v2 is a
+ // number (although 1/v2 works with non-number). We cast to ? to
+ // stop the compiler from type-checking this statement.
+ return v !== 0 || 1 / v === 1 / /** @type {?} */ (v2);
+ }
+
+ // NaN is non-reflexive: NaN !== NaN, although they are identical.
+ return v !== v && v2 !== v2;
+};
+
+
+/**
* Calls a function for each element in an object/map/hash.
*
* @param {Object<K,V>} obj The object over which to iterate.
@@ -20869,9 +20358,6 @@ goog.object.every = function(obj, f, opt_obj) {
* @return {number} The number of key-value pairs in the object map.
*/
goog.object.getCount = function(obj) {
- // JS1.5 has __count__ but it has been deprecated so it raises a warning...
- // in other words do not use. Also __count__ only includes the fields on the
- // actual object and not in the prototype chain.
var rv = 0;
for (var key in obj) {
rv++;
@@ -21210,7 +20696,7 @@ goog.object.equals = function(a, b) {
/**
- * Does a flat clone of the object.
+ * Returns a shallow clone of the object.
*
* @param {Object<K,V>} obj Object to clone.
* @return {!Object<K,V>} Clone of the input object.
@@ -21444,12 +20930,13 @@ goog.require('goog.string');
/**
- * @return {boolean} Whether the user's browser is Opera.
+ * @return {boolean} Whether the user's browser is Opera. Note: Chromium
+ * based Opera (Opera 15+) is detected as Chrome to avoid unnecessary
+ * special casing.
* @private
*/
goog.labs.userAgent.browser.matchOpera_ = function() {
- return goog.labs.userAgent.util.matchUserAgent('Opera') ||
- goog.labs.userAgent.util.matchUserAgent('OPR');
+ return goog.labs.userAgent.util.matchUserAgent('Opera');
};
@@ -21529,7 +21016,6 @@ goog.labs.userAgent.browser.matchIosWebview_ = function() {
goog.labs.userAgent.browser.matchChrome_ = function() {
return (goog.labs.userAgent.util.matchUserAgent('Chrome') ||
goog.labs.userAgent.util.matchUserAgent('CriOS')) &&
- !goog.labs.userAgent.browser.matchOpera_() &&
!goog.labs.userAgent.browser.matchEdge_();
};
@@ -21661,7 +21147,7 @@ goog.labs.userAgent.browser.getVersion = function() {
if (goog.labs.userAgent.browser.isOpera()) {
// Opera 10 has Version/10.0 but Opera/9.8, so look for "Version" first.
// Opera uses 'OPR' for more recent UAs.
- return lookUpValueWithKeys(['Version', 'Opera', 'OPR']);
+ return lookUpValueWithKeys(['Version', 'Opera']);
}
// Check Edge before Chrome since it has Chrome in the string.
@@ -22333,13 +21819,20 @@ goog.define('goog.userAgent.ASSUME_IPAD', false);
/**
+ * @define {boolean} Whether the user agent is running on an iPod.
+ */
+goog.define('goog.userAgent.ASSUME_IPOD', false);
+
+
+/**
* @type {boolean}
* @private
*/
goog.userAgent.PLATFORM_KNOWN_ = goog.userAgent.ASSUME_MAC ||
goog.userAgent.ASSUME_WINDOWS || goog.userAgent.ASSUME_LINUX ||
goog.userAgent.ASSUME_X11 || goog.userAgent.ASSUME_ANDROID ||
- goog.userAgent.ASSUME_IPHONE || goog.userAgent.ASSUME_IPAD;
+ goog.userAgent.ASSUME_IPHONE || goog.userAgent.ASSUME_IPAD ||
+ goog.userAgent.ASSUME_IPOD;
/**
@@ -22435,6 +21928,15 @@ goog.userAgent.IPAD = goog.userAgent.PLATFORM_KNOWN_ ?
/**
+ * Whether the user agent is running on an iPod.
+ * @type {boolean}
+ */
+goog.userAgent.IPOD = goog.userAgent.PLATFORM_KNOWN_ ?
+ goog.userAgent.ASSUME_IPOD :
+ goog.labs.userAgent.platform.isIpod();
+
+
+/**
* @return {string} The string that describes the version number of the user
* agent.
* @private
@@ -22617,11059 +22119,248 @@ goog.userAgent.DOCUMENT_MODE = (function() {
5);
})();
-// Copyright 2010 The Closure Library Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS-IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-/**
- * @fileoverview Browser capability checks for the dom package.
- *
- */
-
-
-goog.provide('goog.dom.BrowserFeature');
-
-goog.require('goog.userAgent');
-
-
-/**
- * Enum of browser capabilities.
- * @enum {boolean}
- */
-goog.dom.BrowserFeature = {
- /**
- * Whether attributes 'name' and 'type' can be added to an element after it's
- * created. False in Internet Explorer prior to version 9.
- */
- CAN_ADD_NAME_OR_TYPE_ATTRIBUTES:
- !goog.userAgent.IE || goog.userAgent.isDocumentModeOrHigher(9),
-
- /**
- * Whether we can use element.children to access an element's Element
- * children. Available since Gecko 1.9.1, IE 9. (IE<9 also includes comment
- * nodes in the collection.)
- */
- CAN_USE_CHILDREN_ATTRIBUTE: !goog.userAgent.GECKO && !goog.userAgent.IE ||
- goog.userAgent.IE && goog.userAgent.isDocumentModeOrHigher(9) ||
- goog.userAgent.GECKO && goog.userAgent.isVersionOrHigher('1.9.1'),
-
- /**
- * Opera, Safari 3, and Internet Explorer 9 all support innerText but they
- * include text nodes in script and style tags. Not document-mode-dependent.
- */
- CAN_USE_INNER_TEXT:
- (goog.userAgent.IE && !goog.userAgent.isVersionOrHigher('9')),
-
- /**
- * MSIE, Opera, and Safari>=4 support element.parentElement to access an
- * element's parent if it is an Element.
- */
- CAN_USE_PARENT_ELEMENT_PROPERTY:
- goog.userAgent.IE || goog.userAgent.OPERA || goog.userAgent.WEBKIT,
-
- /**
- * Whether NoScope elements need a scoped element written before them in
- * innerHTML.
- * MSDN: http://msdn.microsoft.com/en-us/library/ms533897(VS.85).aspx#1
- */
- INNER_HTML_NEEDS_SCOPED_ELEMENT: goog.userAgent.IE,
-
- /**
- * Whether we use legacy IE range API.
- */
- LEGACY_IE_RANGES:
- goog.userAgent.IE && !goog.userAgent.isDocumentModeOrHigher(9)
-};
-
-// Copyright 2007 The Closure Library Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS-IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-/**
- * @fileoverview Defines the goog.dom.TagName enum. This enumerates
- * all HTML tag names specified in either the the W3C HTML 4.01 index of
- * elements or the HTML5 draft specification.
- *
- * References:
- * http://www.w3.org/TR/html401/index/elements.html
- * http://dev.w3.org/html5/spec/section-index.html
- *
- */
-goog.provide('goog.dom.TagName');
-
-
-/**
- * Enum of all html tag names specified by the W3C HTML4.01 and HTML5
- * specifications.
- * @enum {string}
- */
-goog.dom.TagName = {
- A: 'A',
- ABBR: 'ABBR',
- ACRONYM: 'ACRONYM',
- ADDRESS: 'ADDRESS',
- APPLET: 'APPLET',
- AREA: 'AREA',
- ARTICLE: 'ARTICLE',
- ASIDE: 'ASIDE',
- AUDIO: 'AUDIO',
- B: 'B',
- BASE: 'BASE',
- BASEFONT: 'BASEFONT',
- BDI: 'BDI',
- BDO: 'BDO',
- BIG: 'BIG',
- BLOCKQUOTE: 'BLOCKQUOTE',
- BODY: 'BODY',
- BR: 'BR',
- BUTTON: 'BUTTON',
- CANVAS: 'CANVAS',
- CAPTION: 'CAPTION',
- CENTER: 'CENTER',
- CITE: 'CITE',
- CODE: 'CODE',
- COL: 'COL',
- COLGROUP: 'COLGROUP',
- COMMAND: 'COMMAND',
- DATA: 'DATA',
- DATALIST: 'DATALIST',
- DD: 'DD',
- DEL: 'DEL',
- DETAILS: 'DETAILS',
- DFN: 'DFN',
- DIALOG: 'DIALOG',
- DIR: 'DIR',
- DIV: 'DIV',
- DL: 'DL',
- DT: 'DT',
- EM: 'EM',
- EMBED: 'EMBED',
- FIELDSET: 'FIELDSET',
- FIGCAPTION: 'FIGCAPTION',
- FIGURE: 'FIGURE',
- FONT: 'FONT',
- FOOTER: 'FOOTER',
- FORM: 'FORM',
- FRAME: 'FRAME',
- FRAMESET: 'FRAMESET',
- H1: 'H1',
- H2: 'H2',
- H3: 'H3',
- H4: 'H4',
- H5: 'H5',
- H6: 'H6',
- HEAD: 'HEAD',
- HEADER: 'HEADER',
- HGROUP: 'HGROUP',
- HR: 'HR',
- HTML: 'HTML',
- I: 'I',
- IFRAME: 'IFRAME',
- IMG: 'IMG',
- INPUT: 'INPUT',
- INS: 'INS',
- ISINDEX: 'ISINDEX',
- KBD: 'KBD',
- KEYGEN: 'KEYGEN',
- LABEL: 'LABEL',
- LEGEND: 'LEGEND',
- LI: 'LI',
- LINK: 'LINK',
- MAP: 'MAP',
- MARK: 'MARK',
- MATH: 'MATH',
- MENU: 'MENU',
- META: 'META',
- METER: 'METER',
- NAV: 'NAV',
- NOFRAMES: 'NOFRAMES',
- NOSCRIPT: 'NOSCRIPT',
- OBJECT: 'OBJECT',
- OL: 'OL',
- OPTGROUP: 'OPTGROUP',
- OPTION: 'OPTION',
- OUTPUT: 'OUTPUT',
- P: 'P',
- PARAM: 'PARAM',
- PRE: 'PRE',
- PROGRESS: 'PROGRESS',
- Q: 'Q',
- RP: 'RP',
- RT: 'RT',
- RUBY: 'RUBY',
- S: 'S',
- SAMP: 'SAMP',
- SCRIPT: 'SCRIPT',
- SECTION: 'SECTION',
- SELECT: 'SELECT',
- SMALL: 'SMALL',
- SOURCE: 'SOURCE',
- SPAN: 'SPAN',
- STRIKE: 'STRIKE',
- STRONG: 'STRONG',
- STYLE: 'STYLE',
- SUB: 'SUB',
- SUMMARY: 'SUMMARY',
- SUP: 'SUP',
- SVG: 'SVG',
- TABLE: 'TABLE',
- TBODY: 'TBODY',
- TD: 'TD',
- TEMPLATE: 'TEMPLATE',
- TEXTAREA: 'TEXTAREA',
- TFOOT: 'TFOOT',
- TH: 'TH',
- THEAD: 'THEAD',
- TIME: 'TIME',
- TITLE: 'TITLE',
- TR: 'TR',
- TRACK: 'TRACK',
- TT: 'TT',
- U: 'U',
- UL: 'UL',
- VAR: 'VAR',
- VIDEO: 'VIDEO',
- WBR: 'WBR'
-};
-
-// Copyright 2014 The Closure Library Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS-IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-/**
- * @fileoverview Utilities for HTML element tag names.
- */
-goog.provide('goog.dom.tags');
-
-goog.require('goog.object');
-
-
-/**
- * The void elements specified by
- * http://www.w3.org/TR/html-markup/syntax.html#void-elements.
- * @const @private {!Object<string, boolean>}
- */
-goog.dom.tags.VOID_TAGS_ = goog.object.createSet(
- 'area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input',
- 'keygen', 'link', 'meta', 'param', 'source', 'track', 'wbr');
-
-
-/**
- * Checks whether the tag is void (with no contents allowed and no legal end
- * tag), for example 'br'.
- * @param {string} tagName The tag name in lower case.
- * @return {boolean}
- */
-goog.dom.tags.isVoidTag = function(tagName) {
- return goog.dom.tags.VOID_TAGS_[tagName] === true;
-};
-
-// Copyright 2013 The Closure Library Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS-IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-goog.provide('goog.string.TypedString');
-
-
-
-/**
- * Wrapper for strings that conform to a data type or language.
- *
- * Implementations of this interface are wrappers for strings, and typically
- * associate a type contract with the wrapped string. Concrete implementations
- * of this interface may choose to implement additional run-time type checking,
- * see for example {@code goog.html.SafeHtml}. If available, client code that
- * needs to ensure type membership of an object should use the type's function
- * to assert type membership, such as {@code goog.html.SafeHtml.unwrap}.
- * @interface
- */
-goog.string.TypedString = function() {};
-
-
-/**
- * Interface marker of the TypedString interface.
- *
- * This property can be used to determine at runtime whether or not an object
- * implements this interface. All implementations of this interface set this
- * property to {@code true}.
- * @type {boolean}
- */
-goog.string.TypedString.prototype.implementsGoogStringTypedString;
-
-
-/**
- * Retrieves this wrapped string's value.
- * @return {!string} The wrapped string's value.
- */
-goog.string.TypedString.prototype.getTypedStringValue;
-
-// Copyright 2013 The Closure Library Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS-IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-goog.provide('goog.string.Const');
-
-goog.require('goog.asserts');
-goog.require('goog.string.TypedString');
-
-
-
-/**
- * Wrapper for compile-time-constant strings.
- *
- * Const is a wrapper for strings that can only be created from program
- * constants (i.e., string literals). This property relies on a custom Closure
- * compiler check that {@code goog.string.Const.from} is only invoked on
- * compile-time-constant expressions.
- *
- * Const is useful in APIs whose correct and secure use requires that certain
- * arguments are not attacker controlled: Compile-time constants are inherently
- * under the control of the application and not under control of external
- * attackers, and hence are safe to use in such contexts.
- *
- * Instances of this type must be created via its factory method
- * {@code goog.string.Const.from} and not by invoking its constructor. The
- * constructor intentionally takes no parameters and the type is immutable;
- * hence only a default instance corresponding to the empty string can be
- * obtained via constructor invocation.
- *
- * @see goog.string.Const#from
- * @constructor
- * @final
- * @struct
- * @implements {goog.string.TypedString}
- */
-goog.string.Const = function() {
- /**
- * The wrapped value of this Const object. The field has a purposely ugly
- * name to make (non-compiled) code that attempts to directly access this
- * field stand out.
- * @private {string}
- */
- this.stringConstValueWithSecurityContract__googStringSecurityPrivate_ = '';
-
- /**
- * A type marker used to implement additional run-time type checking.
- * @see goog.string.Const#unwrap
- * @const
- * @private
- */
- this.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_ =
- goog.string.Const.TYPE_MARKER_;
-};
-
-
-/**
- * @override
- * @const
- */
-goog.string.Const.prototype.implementsGoogStringTypedString = true;
-
-
-/**
- * Returns this Const's value a string.
- *
- * IMPORTANT: In code where it is security-relevant that an object's type is
- * indeed {@code goog.string.Const}, use {@code goog.string.Const.unwrap}
- * instead of this method.
- *
- * @see goog.string.Const#unwrap
- * @override
- */
-goog.string.Const.prototype.getTypedStringValue = function() {
- return this.stringConstValueWithSecurityContract__googStringSecurityPrivate_;
-};
-
-
-/**
- * Returns a debug-string representation of this value.
- *
- * To obtain the actual string value wrapped inside an object of this type,
- * use {@code goog.string.Const.unwrap}.
- *
- * @see goog.string.Const#unwrap
- * @override
- */
-goog.string.Const.prototype.toString = function() {
- return 'Const{' +
- this.stringConstValueWithSecurityContract__googStringSecurityPrivate_ +
- '}';
-};
-
-
-/**
- * Performs a runtime check that the provided object is indeed an instance
- * of {@code goog.string.Const}, and returns its value.
- * @param {!goog.string.Const} stringConst The object to extract from.
- * @return {string} The Const object's contained string, unless the run-time
- * type check fails. In that case, {@code unwrap} returns an innocuous
- * string, or, if assertions are enabled, throws
- * {@code goog.asserts.AssertionError}.
- */
-goog.string.Const.unwrap = function(stringConst) {
- // Perform additional run-time type-checking to ensure that stringConst is
- // indeed an instance of the expected type. This provides some additional
- // protection against security bugs due to application code that disables type
- // checks.
- if (stringConst instanceof goog.string.Const &&
- stringConst.constructor === goog.string.Const &&
- stringConst.STRING_CONST_TYPE_MARKER__GOOG_STRING_SECURITY_PRIVATE_ ===
- goog.string.Const.TYPE_MARKER_) {
- return stringConst
- .stringConstValueWithSecurityContract__googStringSecurityPrivate_;
- } else {
- goog.asserts.fail(
- 'expected object of type Const, got \'' + stringConst + '\'');
- return 'type_error:Const';
- }
-};
-
-
-/**
- * Creates a Const object from a compile-time constant string.
- *
- * It is illegal to invoke this function on an expression whose
- * compile-time-contant value cannot be determined by the Closure compiler.
- *
- * Correct invocations include,
- * <pre>
- * var s = goog.string.Const.from('hello');
- * var t = goog.string.Const.from('hello' + 'world');
- * </pre>
- *
- * In contrast, the following are illegal:
- * <pre>
- * var s = goog.string.Const.from(getHello());
- * var t = goog.string.Const.from('hello' + world);
- * </pre>
- *
- * TODO(xtof): Compile-time checks that this function is only called
- * with compile-time constant expressions.
- *
- * @param {string} s A constant string from which to create a Const.
- * @return {!goog.string.Const} A Const object initialized to stringConst.
- */
-goog.string.Const.from = function(s) {
- return goog.string.Const.create__googStringSecurityPrivate_(s);
-};
-
-
-/**
- * Type marker for the Const type, used to implement additional run-time
- * type checking.
- * @const {!Object}
- * @private
- */
-goog.string.Const.TYPE_MARKER_ = {};
-
-
-/**
- * Utility method to create Const instances.
- * @param {string} s The string to initialize the Const object with.
- * @return {!goog.string.Const} The initialized Const object.
- * @private
- */
-goog.string.Const.create__googStringSecurityPrivate_ = function(s) {
- var stringConst = new goog.string.Const();
- stringConst.stringConstValueWithSecurityContract__googStringSecurityPrivate_ =
- s;
- return stringConst;
-};
-
-// Copyright 2014 The Closure Library Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS-IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-/**
- * @fileoverview The SafeStyle type and its builders.
- *
- * TODO(xtof): Link to document stating type contract.
- */
-
-goog.provide('goog.html.SafeStyle');
-
-goog.require('goog.array');
-goog.require('goog.asserts');
-goog.require('goog.string');
-goog.require('goog.string.Const');
-goog.require('goog.string.TypedString');
-
-
-
-/**
- * A string-like object which represents a sequence of CSS declarations
- * ({@code propertyName1: propertyvalue1; propertyName2: propertyValue2; ...})
- * and that carries the security type contract that its value, as a string,
- * will not cause untrusted script execution (XSS) when evaluated as CSS in a
- * browser.
- *
- * Instances of this type must be created via the factory methods
- * ({@code goog.html.SafeStyle.create} or
- * {@code goog.html.SafeStyle.fromConstant}) and not by invoking its
- * constructor. The constructor intentionally takes no parameters and the type
- * is immutable; hence only a default instance corresponding to the empty string
- * can be obtained via constructor invocation.
- *
- * A SafeStyle's string representation ({@link #getTypedStringValue()}) can
- * safely:
- * <ul>
- * <li>Be interpolated as the entire content of a *quoted* HTML style
- * attribute, or before already existing properties. The SafeStyle string
- * *must be HTML-attribute-escaped* (where " and ' are escaped) before
- * interpolation.
- * <li>Be interpolated as the entire content of a {}-wrapped block within a
- * stylesheet, or before already existing properties. The SafeStyle string
- * should not be escaped before interpolation. SafeStyle's contract also
- * guarantees that the string will not be able to introduce new properties
- * or elide existing ones.
- * <li>Be assigned to the style property of a DOM node. The SafeStyle string
- * should not be escaped before being assigned to the property.
- * </ul>
- *
- * A SafeStyle may never contain literal angle brackets. Otherwise, it could
- * be unsafe to place a SafeStyle into a &lt;style&gt; tag (where it can't
- * be HTML escaped). For example, if the SafeStyle containing
- * "{@code font: 'foo &lt;style/&gt;&lt;script&gt;evil&lt;/script&gt;'}" were
- * interpolated within a &lt;style&gt; tag, this would then break out of the
- * style context into HTML.
- *
- * A SafeStyle may contain literal single or double quotes, and as such the
- * entire style string must be escaped when used in a style attribute (if
- * this were not the case, the string could contain a matching quote that
- * would escape from the style attribute).
- *
- * Values of this type must be composable, i.e. for any two values
- * {@code style1} and {@code style2} of this type,
- * {@code goog.html.SafeStyle.unwrap(style1) +
- * goog.html.SafeStyle.unwrap(style2)} must itself be a value that satisfies
- * the SafeStyle type constraint. This requirement implies that for any value
- * {@code style} of this type, {@code goog.html.SafeStyle.unwrap(style)} must
- * not end in a "property value" or "property name" context. For example,
- * a value of {@code background:url("} or {@code font-} would not satisfy the
- * SafeStyle contract. This is because concatenating such strings with a
- * second value that itself does not contain unsafe CSS can result in an
- * overall string that does. For example, if {@code javascript:evil())"} is
- * appended to {@code background:url("}, the resulting string may result in
- * the execution of a malicious script.
- *
- * TODO(user): Consider whether we should implement UTF-8 interchange
- * validity checks and blacklisting of newlines (including Unicode ones) and
- * other whitespace characters (\t, \f). Document here if so and also update
- * SafeStyle.fromConstant().
- *
- * The following example values comply with this type's contract:
- * <ul>
- * <li><pre>width: 1em;</pre>
- * <li><pre>height:1em;</pre>
- * <li><pre>width: 1em;height: 1em;</pre>
- * <li><pre>background:url('http://url');</pre>
- * </ul>
- * In addition, the empty string is safe for use in a CSS attribute.
- *
- * The following example values do NOT comply with this type's contract:
- * <ul>
- * <li><pre>background: red</pre> (missing a trailing semi-colon)
- * <li><pre>background:</pre> (missing a value and a trailing semi-colon)
- * <li><pre>1em</pre> (missing an attribute name, which provides context for
- * the value)
- * </ul>
- *
- * @see goog.html.SafeStyle#create
- * @see goog.html.SafeStyle#fromConstant
- * @see http://www.w3.org/TR/css3-syntax/
- * @constructor
- * @final
- * @struct
- * @implements {goog.string.TypedString}
- */
-goog.html.SafeStyle = function() {
- /**
- * The contained value of this SafeStyle. The field has a purposely
- * ugly name to make (non-compiled) code that attempts to directly access this
- * field stand out.
- * @private {string}
- */
- this.privateDoNotAccessOrElseSafeStyleWrappedValue_ = '';
-
- /**
- * A type marker used to implement additional run-time type checking.
- * @see goog.html.SafeStyle#unwrap
- * @const
- * @private
- */
- this.SAFE_STYLE_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ =
- goog.html.SafeStyle.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_;
-};
-
-
-/**
- * @override
- * @const
- */
-goog.html.SafeStyle.prototype.implementsGoogStringTypedString = true;
-
-
-/**
- * Type marker for the SafeStyle type, used to implement additional
- * run-time type checking.
- * @const {!Object}
- * @private
- */
-goog.html.SafeStyle.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = {};
-
-
-/**
- * Creates a SafeStyle object from a compile-time constant string.
- *
- * {@code style} should be in the format
- * {@code name: value; [name: value; ...]} and must not have any < or >
- * characters in it. This is so that SafeStyle's contract is preserved,
- * allowing the SafeStyle to correctly be interpreted as a sequence of CSS
- * declarations and without affecting the syntactic structure of any
- * surrounding CSS and HTML.
- *
- * This method performs basic sanity checks on the format of {@code style}
- * but does not constrain the format of {@code name} and {@code value}, except
- * for disallowing tag characters.
- *
- * @param {!goog.string.Const} style A compile-time-constant string from which
- * to create a SafeStyle.
- * @return {!goog.html.SafeStyle} A SafeStyle object initialized to
- * {@code style}.
- */
-goog.html.SafeStyle.fromConstant = function(style) {
- var styleString = goog.string.Const.unwrap(style);
- if (styleString.length === 0) {
- return goog.html.SafeStyle.EMPTY;
- }
- goog.html.SafeStyle.checkStyle_(styleString);
- goog.asserts.assert(
- goog.string.endsWith(styleString, ';'),
- 'Last character of style string is not \';\': ' + styleString);
- goog.asserts.assert(
- goog.string.contains(styleString, ':'),
- 'Style string must contain at least one \':\', to ' +
- 'specify a "name: value" pair: ' + styleString);
- return goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(
- styleString);
-};
-
-
-/**
- * Checks if the style definition is valid.
- * @param {string} style
- * @private
- */
-goog.html.SafeStyle.checkStyle_ = function(style) {
- goog.asserts.assert(
- !/[<>]/.test(style), 'Forbidden characters in style string: ' + style);
-};
-
-
-/**
- * Returns this SafeStyle's value as a string.
- *
- * IMPORTANT: In code where it is security relevant that an object's type is
- * indeed {@code SafeStyle}, use {@code goog.html.SafeStyle.unwrap} instead of
- * this method. If in doubt, assume that it's security relevant. In particular,
- * note that goog.html functions which return a goog.html type do not guarantee
- * the returned instance is of the right type. For example:
- *
- * <pre>
- * var fakeSafeHtml = new String('fake');
- * fakeSafeHtml.__proto__ = goog.html.SafeHtml.prototype;
- * var newSafeHtml = goog.html.SafeHtml.htmlEscape(fakeSafeHtml);
- * // newSafeHtml is just an alias for fakeSafeHtml, it's passed through by
- * // goog.html.SafeHtml.htmlEscape() as fakeSafeHtml
- * // instanceof goog.html.SafeHtml.
- * </pre>
- *
- * @see goog.html.SafeStyle#unwrap
- * @override
- */
-goog.html.SafeStyle.prototype.getTypedStringValue = function() {
- return this.privateDoNotAccessOrElseSafeStyleWrappedValue_;
-};
-
-
-if (goog.DEBUG) {
- /**
- * Returns a debug string-representation of this value.
- *
- * To obtain the actual string value wrapped in a SafeStyle, use
- * {@code goog.html.SafeStyle.unwrap}.
- *
- * @see goog.html.SafeStyle#unwrap
- * @override
- */
- goog.html.SafeStyle.prototype.toString = function() {
- return 'SafeStyle{' + this.privateDoNotAccessOrElseSafeStyleWrappedValue_ +
- '}';
- };
-}
-
-
-/**
- * Performs a runtime check that the provided object is indeed a
- * SafeStyle object, and returns its value.
- *
- * @param {!goog.html.SafeStyle} safeStyle The object to extract from.
- * @return {string} The safeStyle object's contained string, unless
- * the run-time type check fails. In that case, {@code unwrap} returns an
- * innocuous string, or, if assertions are enabled, throws
- * {@code goog.asserts.AssertionError}.
- */
-goog.html.SafeStyle.unwrap = function(safeStyle) {
- // Perform additional Run-time type-checking to ensure that
- // safeStyle is indeed an instance of the expected type. This
- // provides some additional protection against security bugs due to
- // application code that disables type checks.
- // Specifically, the following checks are performed:
- // 1. The object is an instance of the expected type.
- // 2. The object is not an instance of a subclass.
- // 3. The object carries a type marker for the expected type. "Faking" an
- // object requires a reference to the type marker, which has names intended
- // to stand out in code reviews.
- if (safeStyle instanceof goog.html.SafeStyle &&
- safeStyle.constructor === goog.html.SafeStyle &&
- safeStyle.SAFE_STYLE_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ ===
- goog.html.SafeStyle.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_) {
- return safeStyle.privateDoNotAccessOrElseSafeStyleWrappedValue_;
- } else {
- goog.asserts.fail('expected object of type SafeStyle, got \'' +
- safeStyle + '\' of type ' + goog.typeOf(safeStyle));
- return 'type_error:SafeStyle';
- }
-};
-
-
-/**
- * Package-internal utility method to create SafeStyle instances.
- *
- * @param {string} style The string to initialize the SafeStyle object with.
- * @return {!goog.html.SafeStyle} The initialized SafeStyle object.
- * @package
- */
-goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse = function(
- style) {
- return new goog.html.SafeStyle().initSecurityPrivateDoNotAccessOrElse_(style);
-};
-
-
-/**
- * Called from createSafeStyleSecurityPrivateDoNotAccessOrElse(). This
- * method exists only so that the compiler can dead code eliminate static
- * fields (like EMPTY) when they're not accessed.
- * @param {string} style
- * @return {!goog.html.SafeStyle}
- * @private
- */
-goog.html.SafeStyle.prototype.initSecurityPrivateDoNotAccessOrElse_ = function(
- style) {
- this.privateDoNotAccessOrElseSafeStyleWrappedValue_ = style;
- return this;
-};
-
-
-/**
- * A SafeStyle instance corresponding to the empty string.
- * @const {!goog.html.SafeStyle}
- */
-goog.html.SafeStyle.EMPTY =
- goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse('');
-
-
-/**
- * The innocuous string generated by goog.html.SafeUrl.create when passed
- * an unsafe value.
- * @const {string}
- */
-goog.html.SafeStyle.INNOCUOUS_STRING = 'zClosurez';
-
-
-/**
- * Mapping of property names to their values.
- * @typedef {!Object<string, goog.string.Const|string>}
- */
-goog.html.SafeStyle.PropertyMap;
-
-
-/**
- * Creates a new SafeStyle object from the properties specified in the map.
- * @param {goog.html.SafeStyle.PropertyMap} map Mapping of property names to
- * their values, for example {'margin': '1px'}. Names must consist of
- * [-_a-zA-Z0-9]. Values might be strings consisting of
- * [-,.'"%_!# a-zA-Z0-9], where " and ' must be properly balanced.
- * Other values must be wrapped in goog.string.Const. Null value causes
- * skipping the property.
- * @return {!goog.html.SafeStyle}
- * @throws {Error} If invalid name is provided.
- * @throws {goog.asserts.AssertionError} If invalid value is provided. With
- * disabled assertions, invalid value is replaced by
- * goog.html.SafeStyle.INNOCUOUS_STRING.
- */
-goog.html.SafeStyle.create = function(map) {
- var style = '';
- for (var name in map) {
- if (!/^[-_a-zA-Z0-9]+$/.test(name)) {
- throw Error('Name allows only [-_a-zA-Z0-9], got: ' + name);
- }
- var value = map[name];
- if (value == null) {
- continue;
- }
- if (value instanceof goog.string.Const) {
- value = goog.string.Const.unwrap(value);
- // These characters can be used to change context and we don't want that
- // even with const values.
- goog.asserts.assert(!/[{;}]/.test(value), 'Value does not allow [{;}].');
- } else if (!goog.html.SafeStyle.VALUE_RE_.test(value)) {
- goog.asserts.fail(
- 'String value allows only [-,."\'%_!# a-zA-Z0-9], rgb() and ' +
- 'rgba(), got: ' + value);
- value = goog.html.SafeStyle.INNOCUOUS_STRING;
- } else if (!goog.html.SafeStyle.hasBalancedQuotes_(value)) {
- goog.asserts.fail('String value requires balanced quotes, got: ' + value);
- value = goog.html.SafeStyle.INNOCUOUS_STRING;
- }
- style += name + ':' + value + ';';
- }
- if (!style) {
- return goog.html.SafeStyle.EMPTY;
- }
- goog.html.SafeStyle.checkStyle_(style);
- return goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(
- style);
-};
-
-
-/**
- * Checks that quotes (" and ') are properly balanced inside a string. Assumes
- * that neither escape (\) nor any other character that could result in
- * breaking out of a string parsing context are allowed;
- * see http://www.w3.org/TR/css3-syntax/#string-token-diagram.
- * @param {string} value Untrusted CSS property value.
- * @return {boolean} True if property value is safe with respect to quote
- * balancedness.
- * @private
- */
-goog.html.SafeStyle.hasBalancedQuotes_ = function(value) {
- var outsideSingle = true;
- var outsideDouble = true;
- for (var i = 0; i < value.length; i++) {
- var c = value.charAt(i);
- if (c == "'" && outsideDouble) {
- outsideSingle = !outsideSingle;
- } else if (c == '"' && outsideSingle) {
- outsideDouble = !outsideDouble;
- }
- }
- return outsideSingle && outsideDouble;
-};
-
-
-// Keep in sync with the error string in create().
-/**
- * Regular expression for safe values.
- *
- * Quotes (" and ') are allowed, but a check must be done elsewhere to ensure
- * they're balanced.
- *
- * ',' allows multiple values to be assigned to the same property
- * (e.g. background-attachment or font-family) and hence could allow
- * multiple values to get injected, but that should pose no risk of XSS.
- *
- * The rgb() and rgba() expression checks only for XSS safety, not for CSS
- * validity.
- * @const {!RegExp}
- * @private
- */
-goog.html.SafeStyle.VALUE_RE_ =
- /^([-,."'%_!# a-zA-Z0-9]+|(?:rgb|hsl)a?\([0-9.%, ]+\))$/;
-
-
-/**
- * Creates a new SafeStyle object by concatenating the values.
- * @param {...(!goog.html.SafeStyle|!Array<!goog.html.SafeStyle>)} var_args
- * SafeStyles to concatenate.
- * @return {!goog.html.SafeStyle}
- */
-goog.html.SafeStyle.concat = function(var_args) {
- var style = '';
-
- /**
- * @param {!goog.html.SafeStyle|!Array<!goog.html.SafeStyle>} argument
- */
- var addArgument = function(argument) {
- if (goog.isArray(argument)) {
- goog.array.forEach(argument, addArgument);
- } else {
- style += goog.html.SafeStyle.unwrap(argument);
- }
- };
-
- goog.array.forEach(arguments, addArgument);
- if (!style) {
- return goog.html.SafeStyle.EMPTY;
- }
- return goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(
- style);
-};
-
-// Copyright 2014 The Closure Library Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS-IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-/**
- * @fileoverview The SafeStyleSheet type and its builders.
- *
- * TODO(xtof): Link to document stating type contract.
- */
-
-goog.provide('goog.html.SafeStyleSheet');
-
-goog.require('goog.array');
-goog.require('goog.asserts');
-goog.require('goog.string');
-goog.require('goog.string.Const');
-goog.require('goog.string.TypedString');
-
-
-
-/**
- * A string-like object which represents a CSS style sheet and that carries the
- * security type contract that its value, as a string, will not cause untrusted
- * script execution (XSS) when evaluated as CSS in a browser.
- *
- * Instances of this type must be created via the factory method
- * {@code goog.html.SafeStyleSheet.fromConstant} and not by invoking its
- * constructor. The constructor intentionally takes no parameters and the type
- * is immutable; hence only a default instance corresponding to the empty string
- * can be obtained via constructor invocation.
- *
- * A SafeStyleSheet's string representation can safely be interpolated as the
- * content of a style element within HTML. The SafeStyleSheet string should
- * not be escaped before interpolation.
- *
- * Values of this type must be composable, i.e. for any two values
- * {@code styleSheet1} and {@code styleSheet2} of this type,
- * {@code goog.html.SafeStyleSheet.unwrap(styleSheet1) +
- * goog.html.SafeStyleSheet.unwrap(styleSheet2)} must itself be a value that
- * satisfies the SafeStyleSheet type constraint. This requirement implies that
- * for any value {@code styleSheet} of this type,
- * {@code goog.html.SafeStyleSheet.unwrap(styleSheet1)} must end in
- * "beginning of rule" context.
-
- * A SafeStyleSheet can be constructed via security-reviewed unchecked
- * conversions. In this case producers of SafeStyleSheet must ensure themselves
- * that the SafeStyleSheet does not contain unsafe script. Note in particular
- * that {@code &lt;} is dangerous, even when inside CSS strings, and so should
- * always be forbidden or CSS-escaped in user controlled input. For example, if
- * {@code &lt;/style&gt;&lt;script&gt;evil&lt;/script&gt;"} were interpolated
- * inside a CSS string, it would break out of the context of the original
- * style element and {@code evil} would execute. Also note that within an HTML
- * style (raw text) element, HTML character references, such as
- * {@code &amp;lt;}, are not allowed. See
- *
- http://www.w3.org/TR/html5/scripting-1.html#restrictions-for-contents-of-script-elements
- * (similar considerations apply to the style element).
- *
- * @see goog.html.SafeStyleSheet#fromConstant
- * @constructor
- * @final
- * @struct
- * @implements {goog.string.TypedString}
- */
-goog.html.SafeStyleSheet = function() {
- /**
- * The contained value of this SafeStyleSheet. The field has a purposely
- * ugly name to make (non-compiled) code that attempts to directly access this
- * field stand out.
- * @private {string}
- */
- this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_ = '';
-
- /**
- * A type marker used to implement additional run-time type checking.
- * @see goog.html.SafeStyleSheet#unwrap
- * @const
- * @private
- */
- this.SAFE_STYLE_SHEET_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ =
- goog.html.SafeStyleSheet.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_;
-};
-
-
-/**
- * @override
- * @const
- */
-goog.html.SafeStyleSheet.prototype.implementsGoogStringTypedString = true;
-
-
-/**
- * Type marker for the SafeStyleSheet type, used to implement additional
- * run-time type checking.
- * @const {!Object}
- * @private
- */
-goog.html.SafeStyleSheet.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = {};
-
-
-/**
- * Creates a new SafeStyleSheet object by concatenating values.
- * @param {...(!goog.html.SafeStyleSheet|!Array<!goog.html.SafeStyleSheet>)}
- * var_args Values to concatenate.
- * @return {!goog.html.SafeStyleSheet}
- */
-goog.html.SafeStyleSheet.concat = function(var_args) {
- var result = '';
-
- /**
- * @param {!goog.html.SafeStyleSheet|!Array<!goog.html.SafeStyleSheet>}
- * argument
- */
- var addArgument = function(argument) {
- if (goog.isArray(argument)) {
- goog.array.forEach(argument, addArgument);
- } else {
- result += goog.html.SafeStyleSheet.unwrap(argument);
- }
- };
-
- goog.array.forEach(arguments, addArgument);
- return goog.html.SafeStyleSheet
- .createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(result);
-};
-
-
-/**
- * Creates a SafeStyleSheet object from a compile-time constant string.
- *
- * {@code styleSheet} must not have any &lt; characters in it, so that
- * the syntactic structure of the surrounding HTML is not affected.
- *
- * @param {!goog.string.Const} styleSheet A compile-time-constant string from
- * which to create a SafeStyleSheet.
- * @return {!goog.html.SafeStyleSheet} A SafeStyleSheet object initialized to
- * {@code styleSheet}.
- */
-goog.html.SafeStyleSheet.fromConstant = function(styleSheet) {
- var styleSheetString = goog.string.Const.unwrap(styleSheet);
- if (styleSheetString.length === 0) {
- return goog.html.SafeStyleSheet.EMPTY;
- }
- // > is a valid character in CSS selectors and there's no strict need to
- // block it if we already block <.
- goog.asserts.assert(
- !goog.string.contains(styleSheetString, '<'),
- "Forbidden '<' character in style sheet string: " + styleSheetString);
- return goog.html.SafeStyleSheet
- .createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(styleSheetString);
-};
-
-
-/**
- * Returns this SafeStyleSheet's value as a string.
- *
- * IMPORTANT: In code where it is security relevant that an object's type is
- * indeed {@code SafeStyleSheet}, use {@code goog.html.SafeStyleSheet.unwrap}
- * instead of this method. If in doubt, assume that it's security relevant. In
- * particular, note that goog.html functions which return a goog.html type do
- * not guarantee the returned instance is of the right type. For example:
- *
- * <pre>
- * var fakeSafeHtml = new String('fake');
- * fakeSafeHtml.__proto__ = goog.html.SafeHtml.prototype;
- * var newSafeHtml = goog.html.SafeHtml.htmlEscape(fakeSafeHtml);
- * // newSafeHtml is just an alias for fakeSafeHtml, it's passed through by
- * // goog.html.SafeHtml.htmlEscape() as fakeSafeHtml
- * // instanceof goog.html.SafeHtml.
- * </pre>
- *
- * @see goog.html.SafeStyleSheet#unwrap
- * @override
- */
-goog.html.SafeStyleSheet.prototype.getTypedStringValue = function() {
- return this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_;
-};
-
-
-if (goog.DEBUG) {
- /**
- * Returns a debug string-representation of this value.
- *
- * To obtain the actual string value wrapped in a SafeStyleSheet, use
- * {@code goog.html.SafeStyleSheet.unwrap}.
- *
- * @see goog.html.SafeStyleSheet#unwrap
- * @override
- */
- goog.html.SafeStyleSheet.prototype.toString = function() {
- return 'SafeStyleSheet{' +
- this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_ + '}';
- };
-}
-
-
-/**
- * Performs a runtime check that the provided object is indeed a
- * SafeStyleSheet object, and returns its value.
- *
- * @param {!goog.html.SafeStyleSheet} safeStyleSheet The object to extract from.
- * @return {string} The safeStyleSheet object's contained string, unless
- * the run-time type check fails. In that case, {@code unwrap} returns an
- * innocuous string, or, if assertions are enabled, throws
- * {@code goog.asserts.AssertionError}.
- */
-goog.html.SafeStyleSheet.unwrap = function(safeStyleSheet) {
- // Perform additional Run-time type-checking to ensure that
- // safeStyleSheet is indeed an instance of the expected type. This
- // provides some additional protection against security bugs due to
- // application code that disables type checks.
- // Specifically, the following checks are performed:
- // 1. The object is an instance of the expected type.
- // 2. The object is not an instance of a subclass.
- // 3. The object carries a type marker for the expected type. "Faking" an
- // object requires a reference to the type marker, which has names intended
- // to stand out in code reviews.
- if (safeStyleSheet instanceof goog.html.SafeStyleSheet &&
- safeStyleSheet.constructor === goog.html.SafeStyleSheet &&
- safeStyleSheet
- .SAFE_STYLE_SHEET_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ ===
- goog.html.SafeStyleSheet.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_) {
- return safeStyleSheet.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_;
- } else {
- goog.asserts.fail('expected object of type SafeStyleSheet, got \'' +
- safeStyleSheet + '\' of type ' + goog.typeOf(safeStyleSheet));
- return 'type_error:SafeStyleSheet';
- }
-};
-
-
-/**
- * Package-internal utility method to create SafeStyleSheet instances.
- *
- * @param {string} styleSheet The string to initialize the SafeStyleSheet
- * object with.
- * @return {!goog.html.SafeStyleSheet} The initialized SafeStyleSheet object.
- * @package
- */
-goog.html.SafeStyleSheet.createSafeStyleSheetSecurityPrivateDoNotAccessOrElse =
- function(styleSheet) {
- return new goog.html.SafeStyleSheet().initSecurityPrivateDoNotAccessOrElse_(
- styleSheet);
-};
-
-
-/**
- * Called from createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(). This
- * method exists only so that the compiler can dead code eliminate static
- * fields (like EMPTY) when they're not accessed.
- * @param {string} styleSheet
- * @return {!goog.html.SafeStyleSheet}
- * @private
- */
-goog.html.SafeStyleSheet.prototype.initSecurityPrivateDoNotAccessOrElse_ =
- function(styleSheet) {
- this.privateDoNotAccessOrElseSafeStyleSheetWrappedValue_ = styleSheet;
- return this;
-};
-
-
-/**
- * A SafeStyleSheet instance corresponding to the empty string.
- * @const {!goog.html.SafeStyleSheet}
- */
-goog.html.SafeStyleSheet.EMPTY =
- goog.html.SafeStyleSheet
- .createSafeStyleSheetSecurityPrivateDoNotAccessOrElse('');
-
-// Copyright 2015 The Closure Library Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS-IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-/**
- * @fileoverview Wrapper for URL and its createObjectUrl and revokeObjectUrl
- * methods that are part of the HTML5 File API.
- */
-
-goog.provide('goog.fs.url');
-
-
-/**
- * Creates a blob URL for a blob object.
- * Throws an error if the browser does not support Object Urls.
- *
- * @param {!Blob} blob The object for which to create the URL.
- * @return {string} The URL for the object.
- */
-goog.fs.url.createObjectUrl = function(blob) {
- return goog.fs.url.getUrlObject_().createObjectURL(blob);
-};
-
-
-/**
- * Revokes a URL created by {@link goog.fs.url.createObjectUrl}.
- * Throws an error if the browser does not support Object Urls.
- *
- * @param {string} url The URL to revoke.
- */
-goog.fs.url.revokeObjectUrl = function(url) {
- goog.fs.url.getUrlObject_().revokeObjectURL(url);
-};
-
-
-/**
- * @typedef {{createObjectURL: (function(!Blob): string),
- * revokeObjectURL: function(string): void}}
- */
-goog.fs.url.UrlObject_;
-
-
-/**
- * Get the object that has the createObjectURL and revokeObjectURL functions for
- * this browser.
- *
- * @return {goog.fs.url.UrlObject_} The object for this browser.
- * @private
- */
-goog.fs.url.getUrlObject_ = function() {
- var urlObject = goog.fs.url.findUrlObject_();
- if (urlObject != null) {
- return urlObject;
- } else {
- throw Error('This browser doesn\'t seem to support blob URLs');
- }
-};
-
-
-/**
- * Finds the object that has the createObjectURL and revokeObjectURL functions
- * for this browser.
- *
- * @return {?goog.fs.url.UrlObject_} The object for this browser or null if the
- * browser does not support Object Urls.
- * @suppress {unnecessaryCasts} Depending on how the code is compiled, casting
- * goog.global to UrlObject_ may result in unnecessary cast warning.
- * However, the cast cannot be removed because with different set of
- * compiler flags, the cast is indeed necessary. As such, silencing it.
- * @private
- */
-goog.fs.url.findUrlObject_ = function() {
- // This is what the spec says to do
- // http://dev.w3.org/2006/webapi/FileAPI/#dfn-createObjectURL
- if (goog.isDef(goog.global.URL) &&
- goog.isDef(goog.global.URL.createObjectURL)) {
- return /** @type {goog.fs.url.UrlObject_} */ (goog.global.URL);
- // This is what Chrome does (as of 10.0.648.6 dev)
- } else if (
- goog.isDef(goog.global.webkitURL) &&
- goog.isDef(goog.global.webkitURL.createObjectURL)) {
- return /** @type {goog.fs.url.UrlObject_} */ (goog.global.webkitURL);
- // This is what the spec used to say to do
- } else if (goog.isDef(goog.global.createObjectURL)) {
- return /** @type {goog.fs.url.UrlObject_} */ (goog.global);
- } else {
- return null;
- }
-};
-
-
-/**
- * Checks whether this browser supports Object Urls. If not, calls to
- * createObjectUrl and revokeObjectUrl will result in an error.
- *
- * @return {boolean} True if this browser supports Object Urls.
- */
-goog.fs.url.browserSupportsObjectUrls = function() {
- return goog.fs.url.findUrlObject_() != null;
-};
-
-// Copyright 2007 The Closure Library Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS-IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-/**
- * @fileoverview Utility functions for supporting Bidi issues.
- */
-
-
-/**
- * Namespace for bidi supporting functions.
- */
-goog.provide('goog.i18n.bidi');
-goog.provide('goog.i18n.bidi.Dir');
-goog.provide('goog.i18n.bidi.DirectionalString');
-goog.provide('goog.i18n.bidi.Format');
-
-
-/**
- * @define {boolean} FORCE_RTL forces the {@link goog.i18n.bidi.IS_RTL} constant
- * to say that the current locale is a RTL locale. This should only be used
- * if you want to override the default behavior for deciding whether the
- * current locale is RTL or not.
- *
- * {@see goog.i18n.bidi.IS_RTL}
- */
-goog.define('goog.i18n.bidi.FORCE_RTL', false);
-
-
-/**
- * Constant that defines whether or not the current locale is a RTL locale.
- * If {@link goog.i18n.bidi.FORCE_RTL} is not true, this constant will default
- * to check that {@link goog.LOCALE} is one of a few major RTL locales.
- *
- * <p>This is designed to be a maximally efficient compile-time constant. For
- * example, for the default goog.LOCALE, compiling
- * "if (goog.i18n.bidi.IS_RTL) alert('rtl') else {}" should produce no code. It
- * is this design consideration that limits the implementation to only
- * supporting a few major RTL locales, as opposed to the broader repertoire of
- * something like goog.i18n.bidi.isRtlLanguage.
- *
- * <p>Since this constant refers to the directionality of the locale, it is up
- * to the caller to determine if this constant should also be used for the
- * direction of the UI.
- *
- * {@see goog.LOCALE}
- *
- * @type {boolean}
- *
- * TODO(user): write a test that checks that this is a compile-time constant.
- */
-goog.i18n.bidi.IS_RTL = goog.i18n.bidi.FORCE_RTL ||
- ((goog.LOCALE.substring(0, 2).toLowerCase() == 'ar' ||
- goog.LOCALE.substring(0, 2).toLowerCase() == 'fa' ||
- goog.LOCALE.substring(0, 2).toLowerCase() == 'he' ||
- goog.LOCALE.substring(0, 2).toLowerCase() == 'iw' ||
- goog.LOCALE.substring(0, 2).toLowerCase() == 'ps' ||
- goog.LOCALE.substring(0, 2).toLowerCase() == 'sd' ||
- goog.LOCALE.substring(0, 2).toLowerCase() == 'ug' ||
- goog.LOCALE.substring(0, 2).toLowerCase() == 'ur' ||
- goog.LOCALE.substring(0, 2).toLowerCase() == 'yi') &&
- (goog.LOCALE.length == 2 || goog.LOCALE.substring(2, 3) == '-' ||
- goog.LOCALE.substring(2, 3) == '_')) ||
- (goog.LOCALE.length >= 3 &&
- goog.LOCALE.substring(0, 3).toLowerCase() == 'ckb' &&
- (goog.LOCALE.length == 3 || goog.LOCALE.substring(3, 4) == '-' ||
- goog.LOCALE.substring(3, 4) == '_'));
-
-
-/**
- * Unicode formatting characters and directionality string constants.
- * @enum {string}
- */
-goog.i18n.bidi.Format = {
- /** Unicode "Left-To-Right Embedding" (LRE) character. */
- LRE: '\u202A',
- /** Unicode "Right-To-Left Embedding" (RLE) character. */
- RLE: '\u202B',
- /** Unicode "Pop Directional Formatting" (PDF) character. */
- PDF: '\u202C',
- /** Unicode "Left-To-Right Mark" (LRM) character. */
- LRM: '\u200E',
- /** Unicode "Right-To-Left Mark" (RLM) character. */
- RLM: '\u200F'
-};
-
-
-/**
- * Directionality enum.
- * @enum {number}
- */
-goog.i18n.bidi.Dir = {
- /**
- * Left-to-right.
- */
- LTR: 1,
-
- /**
- * Right-to-left.
- */
- RTL: -1,
-
- /**
- * Neither left-to-right nor right-to-left.
- */
- NEUTRAL: 0
-};
-
-
-/**
- * 'right' string constant.
- * @type {string}
- */
-goog.i18n.bidi.RIGHT = 'right';
-
-
-/**
- * 'left' string constant.
- * @type {string}
- */
-goog.i18n.bidi.LEFT = 'left';
-
-
-/**
- * 'left' if locale is RTL, 'right' if not.
- * @type {string}
- */
-goog.i18n.bidi.I18N_RIGHT =
- goog.i18n.bidi.IS_RTL ? goog.i18n.bidi.LEFT : goog.i18n.bidi.RIGHT;
-
-
-/**
- * 'right' if locale is RTL, 'left' if not.
- * @type {string}
- */
-goog.i18n.bidi.I18N_LEFT =
- goog.i18n.bidi.IS_RTL ? goog.i18n.bidi.RIGHT : goog.i18n.bidi.LEFT;
-
-
-/**
- * Convert a directionality given in various formats to a goog.i18n.bidi.Dir
- * constant. Useful for interaction with different standards of directionality
- * representation.
- *
- * @param {goog.i18n.bidi.Dir|number|boolean|null} givenDir Directionality given
- * in one of the following formats:
- * 1. A goog.i18n.bidi.Dir constant.
- * 2. A number (positive = LTR, negative = RTL, 0 = neutral).
- * 3. A boolean (true = RTL, false = LTR).
- * 4. A null for unknown directionality.
- * @param {boolean=} opt_noNeutral Whether a givenDir of zero or
- * goog.i18n.bidi.Dir.NEUTRAL should be treated as null, i.e. unknown, in
- * order to preserve legacy behavior.
- * @return {?goog.i18n.bidi.Dir} A goog.i18n.bidi.Dir constant matching the
- * given directionality. If given null, returns null (i.e. unknown).
- */
-goog.i18n.bidi.toDir = function(givenDir, opt_noNeutral) {
- if (typeof givenDir == 'number') {
- // This includes the non-null goog.i18n.bidi.Dir case.
- return givenDir > 0 ? goog.i18n.bidi.Dir.LTR : givenDir < 0 ?
- goog.i18n.bidi.Dir.RTL :
- opt_noNeutral ? null : goog.i18n.bidi.Dir.NEUTRAL;
- } else if (givenDir == null) {
- return null;
- } else {
- // Must be typeof givenDir == 'boolean'.
- return givenDir ? goog.i18n.bidi.Dir.RTL : goog.i18n.bidi.Dir.LTR;
- }
-};
-
-
-/**
- * A practical pattern to identify strong LTR characters. This pattern is not
- * theoretically correct according to the Unicode standard. It is simplified for
- * performance and small code size.
- * @type {string}
- * @private
- */
-goog.i18n.bidi.ltrChars_ =
- 'A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02B8\u0300-\u0590\u0800-\u1FFF' +
- '\u200E\u2C00-\uFB1C\uFE00-\uFE6F\uFEFD-\uFFFF';
-
-
-/**
- * A practical pattern to identify strong RTL character. This pattern is not
- * theoretically correct according to the Unicode standard. It is simplified
- * for performance and small code size.
- * @type {string}
- * @private
- */
-goog.i18n.bidi.rtlChars_ =
- '\u0591-\u06EF\u06FA-\u07FF\u200F\uFB1D-\uFDFF\uFE70-\uFEFC';
-
-
-/**
- * Simplified regular expression for an HTML tag (opening or closing) or an HTML
- * escape. We might want to skip over such expressions when estimating the text
- * directionality.
- * @type {RegExp}
- * @private
- */
-goog.i18n.bidi.htmlSkipReg_ = /<[^>]*>|&[^;]+;/g;
-
-
-/**
- * Returns the input text with spaces instead of HTML tags or HTML escapes, if
- * opt_isStripNeeded is true. Else returns the input as is.
- * Useful for text directionality estimation.
- * Note: the function should not be used in other contexts; it is not 100%
- * correct, but rather a good-enough implementation for directionality
- * estimation purposes.
- * @param {string} str The given string.
- * @param {boolean=} opt_isStripNeeded Whether to perform the stripping.
- * Default: false (to retain consistency with calling functions).
- * @return {string} The given string cleaned of HTML tags / escapes.
- * @private
- */
-goog.i18n.bidi.stripHtmlIfNeeded_ = function(str, opt_isStripNeeded) {
- return opt_isStripNeeded ? str.replace(goog.i18n.bidi.htmlSkipReg_, '') : str;
-};
-
-
-/**
- * Regular expression to check for RTL characters.
- * @type {RegExp}
- * @private
- */
-goog.i18n.bidi.rtlCharReg_ = new RegExp('[' + goog.i18n.bidi.rtlChars_ + ']');
-
-
-/**
- * Regular expression to check for LTR characters.
- * @type {RegExp}
- * @private
- */
-goog.i18n.bidi.ltrCharReg_ = new RegExp('[' + goog.i18n.bidi.ltrChars_ + ']');
-
-
-/**
- * Test whether the given string has any RTL characters in it.
- * @param {string} str The given string that need to be tested.
- * @param {boolean=} opt_isHtml Whether str is HTML / HTML-escaped.
- * Default: false.
- * @return {boolean} Whether the string contains RTL characters.
- */
-goog.i18n.bidi.hasAnyRtl = function(str, opt_isHtml) {
- return goog.i18n.bidi.rtlCharReg_.test(
- goog.i18n.bidi.stripHtmlIfNeeded_(str, opt_isHtml));
-};
-
-
-/**
- * Test whether the given string has any RTL characters in it.
- * @param {string} str The given string that need to be tested.
- * @return {boolean} Whether the string contains RTL characters.
- * @deprecated Use hasAnyRtl.
- */
-goog.i18n.bidi.hasRtlChar = goog.i18n.bidi.hasAnyRtl;
-
-
-/**
- * Test whether the given string has any LTR characters in it.
- * @param {string} str The given string that need to be tested.
- * @param {boolean=} opt_isHtml Whether str is HTML / HTML-escaped.
- * Default: false.
- * @return {boolean} Whether the string contains LTR characters.
- */
-goog.i18n.bidi.hasAnyLtr = function(str, opt_isHtml) {
- return goog.i18n.bidi.ltrCharReg_.test(
- goog.i18n.bidi.stripHtmlIfNeeded_(str, opt_isHtml));
-};
-
-
-/**
- * Regular expression pattern to check if the first character in the string
- * is LTR.
- * @type {RegExp}
- * @private
- */
-goog.i18n.bidi.ltrRe_ = new RegExp('^[' + goog.i18n.bidi.ltrChars_ + ']');
-
-
-/**
- * Regular expression pattern to check if the first character in the string
- * is RTL.
- * @type {RegExp}
- * @private
- */
-goog.i18n.bidi.rtlRe_ = new RegExp('^[' + goog.i18n.bidi.rtlChars_ + ']');
-
-
-/**
- * Check if the first character in the string is RTL or not.
- * @param {string} str The given string that need to be tested.
- * @return {boolean} Whether the first character in str is an RTL char.
- */
-goog.i18n.bidi.isRtlChar = function(str) {
- return goog.i18n.bidi.rtlRe_.test(str);
-};
-
-
-/**
- * Check if the first character in the string is LTR or not.
- * @param {string} str The given string that need to be tested.
- * @return {boolean} Whether the first character in str is an LTR char.
- */
-goog.i18n.bidi.isLtrChar = function(str) {
- return goog.i18n.bidi.ltrRe_.test(str);
-};
-
-
-/**
- * Check if the first character in the string is neutral or not.
- * @param {string} str The given string that need to be tested.
- * @return {boolean} Whether the first character in str is a neutral char.
- */
-goog.i18n.bidi.isNeutralChar = function(str) {
- return !goog.i18n.bidi.isLtrChar(str) && !goog.i18n.bidi.isRtlChar(str);
-};
-
-
-/**
- * Regular expressions to check if a piece of text is of LTR directionality
- * on first character with strong directionality.
- * @type {RegExp}
- * @private
- */
-goog.i18n.bidi.ltrDirCheckRe_ = new RegExp(
- '^[^' + goog.i18n.bidi.rtlChars_ + ']*[' + goog.i18n.bidi.ltrChars_ + ']');
-
-
-/**
- * Regular expressions to check if a piece of text is of RTL directionality
- * on first character with strong directionality.
- * @type {RegExp}
- * @private
- */
-goog.i18n.bidi.rtlDirCheckRe_ = new RegExp(
- '^[^' + goog.i18n.bidi.ltrChars_ + ']*[' + goog.i18n.bidi.rtlChars_ + ']');
-
-
-/**
- * Check whether the first strongly directional character (if any) is RTL.
- * @param {string} str String being checked.
- * @param {boolean=} opt_isHtml Whether str is HTML / HTML-escaped.
- * Default: false.
- * @return {boolean} Whether RTL directionality is detected using the first
- * strongly-directional character method.
- */
-goog.i18n.bidi.startsWithRtl = function(str, opt_isHtml) {
- return goog.i18n.bidi.rtlDirCheckRe_.test(
- goog.i18n.bidi.stripHtmlIfNeeded_(str, opt_isHtml));
-};
-
-
-/**
- * Check whether the first strongly directional character (if any) is RTL.
- * @param {string} str String being checked.
- * @param {boolean=} opt_isHtml Whether str is HTML / HTML-escaped.
- * Default: false.
- * @return {boolean} Whether RTL directionality is detected using the first
- * strongly-directional character method.
- * @deprecated Use startsWithRtl.
- */
-goog.i18n.bidi.isRtlText = goog.i18n.bidi.startsWithRtl;
-
-
-/**
- * Check whether the first strongly directional character (if any) is LTR.
- * @param {string} str String being checked.
- * @param {boolean=} opt_isHtml Whether str is HTML / HTML-escaped.
- * Default: false.
- * @return {boolean} Whether LTR directionality is detected using the first
- * strongly-directional character method.
- */
-goog.i18n.bidi.startsWithLtr = function(str, opt_isHtml) {
- return goog.i18n.bidi.ltrDirCheckRe_.test(
- goog.i18n.bidi.stripHtmlIfNeeded_(str, opt_isHtml));
-};
-
-
-/**
- * Check whether the first strongly directional character (if any) is LTR.
- * @param {string} str String being checked.
- * @param {boolean=} opt_isHtml Whether str is HTML / HTML-escaped.
- * Default: false.
- * @return {boolean} Whether LTR directionality is detected using the first
- * strongly-directional character method.
- * @deprecated Use startsWithLtr.
- */
-goog.i18n.bidi.isLtrText = goog.i18n.bidi.startsWithLtr;
-
-
-/**
- * Regular expression to check if a string looks like something that must
- * always be LTR even in RTL text, e.g. a URL. When estimating the
- * directionality of text containing these, we treat these as weakly LTR,
- * like numbers.
- * @type {RegExp}
- * @private
- */
-goog.i18n.bidi.isRequiredLtrRe_ = /^http:\/\/.*/;
-
-
-/**
- * Check whether the input string either contains no strongly directional
- * characters or looks like a url.
- * @param {string} str String being checked.
- * @param {boolean=} opt_isHtml Whether str is HTML / HTML-escaped.
- * Default: false.
- * @return {boolean} Whether neutral directionality is detected.
- */
-goog.i18n.bidi.isNeutralText = function(str, opt_isHtml) {
- str = goog.i18n.bidi.stripHtmlIfNeeded_(str, opt_isHtml);
- return goog.i18n.bidi.isRequiredLtrRe_.test(str) ||
- !goog.i18n.bidi.hasAnyLtr(str) && !goog.i18n.bidi.hasAnyRtl(str);
-};
-
-
-/**
- * Regular expressions to check if the last strongly-directional character in a
- * piece of text is LTR.
- * @type {RegExp}
- * @private
- */
-goog.i18n.bidi.ltrExitDirCheckRe_ = new RegExp(
- '[' + goog.i18n.bidi.ltrChars_ + '][^' + goog.i18n.bidi.rtlChars_ + ']*$');
-
-
-/**
- * Regular expressions to check if the last strongly-directional character in a
- * piece of text is RTL.
- * @type {RegExp}
- * @private
- */
-goog.i18n.bidi.rtlExitDirCheckRe_ = new RegExp(
- '[' + goog.i18n.bidi.rtlChars_ + '][^' + goog.i18n.bidi.ltrChars_ + ']*$');
-
-
-/**
- * Check if the exit directionality a piece of text is LTR, i.e. if the last
- * strongly-directional character in the string is LTR.
- * @param {string} str String being checked.
- * @param {boolean=} opt_isHtml Whether str is HTML / HTML-escaped.
- * Default: false.
- * @return {boolean} Whether LTR exit directionality was detected.
- */
-goog.i18n.bidi.endsWithLtr = function(str, opt_isHtml) {
- return goog.i18n.bidi.ltrExitDirCheckRe_.test(
- goog.i18n.bidi.stripHtmlIfNeeded_(str, opt_isHtml));
-};
-
-
-/**
- * Check if the exit directionality a piece of text is LTR, i.e. if the last
- * strongly-directional character in the string is LTR.
- * @param {string} str String being checked.
- * @param {boolean=} opt_isHtml Whether str is HTML / HTML-escaped.
- * Default: false.
- * @return {boolean} Whether LTR exit directionality was detected.
- * @deprecated Use endsWithLtr.
- */
-goog.i18n.bidi.isLtrExitText = goog.i18n.bidi.endsWithLtr;
-
-
-/**
- * Check if the exit directionality a piece of text is RTL, i.e. if the last
- * strongly-directional character in the string is RTL.
- * @param {string} str String being checked.
- * @param {boolean=} opt_isHtml Whether str is HTML / HTML-escaped.
- * Default: false.
- * @return {boolean} Whether RTL exit directionality was detected.
- */
-goog.i18n.bidi.endsWithRtl = function(str, opt_isHtml) {
- return goog.i18n.bidi.rtlExitDirCheckRe_.test(
- goog.i18n.bidi.stripHtmlIfNeeded_(str, opt_isHtml));
-};
-
-
-/**
- * Check if the exit directionality a piece of text is RTL, i.e. if the last
- * strongly-directional character in the string is RTL.
- * @param {string} str String being checked.
- * @param {boolean=} opt_isHtml Whether str is HTML / HTML-escaped.
- * Default: false.
- * @return {boolean} Whether RTL exit directionality was detected.
- * @deprecated Use endsWithRtl.
- */
-goog.i18n.bidi.isRtlExitText = goog.i18n.bidi.endsWithRtl;
-
-
-/**
- * A regular expression for matching right-to-left language codes.
- * See {@link #isRtlLanguage} for the design.
- * @type {RegExp}
- * @private
- */
-goog.i18n.bidi.rtlLocalesRe_ = new RegExp(
- '^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|' +
- '.*[-_](Arab|Hebr|Thaa|Nkoo|Tfng))' +
- '(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)',
- 'i');
-
-
-/**
- * Check if a BCP 47 / III language code indicates an RTL language, i.e. either:
- * - a language code explicitly specifying one of the right-to-left scripts,
- * e.g. "az-Arab", or<p>
- * - a language code specifying one of the languages normally written in a
- * right-to-left script, e.g. "fa" (Farsi), except ones explicitly specifying
- * Latin or Cyrillic script (which are the usual LTR alternatives).<p>
- * The list of right-to-left scripts appears in the 100-199 range in
- * http://www.unicode.org/iso15924/iso15924-num.html, of which Arabic and
- * Hebrew are by far the most widely used. We also recognize Thaana, N'Ko, and
- * Tifinagh, which also have significant modern usage. The rest (Syriac,
- * Samaritan, Mandaic, etc.) seem to have extremely limited or no modern usage
- * and are not recognized to save on code size.
- * The languages usually written in a right-to-left script are taken as those
- * with Suppress-Script: Hebr|Arab|Thaa|Nkoo|Tfng in
- * http://www.iana.org/assignments/language-subtag-registry,
- * as well as Central (or Sorani) Kurdish (ckb), Sindhi (sd) and Uyghur (ug).
- * Other subtags of the language code, e.g. regions like EG (Egypt), are
- * ignored.
- * @param {string} lang BCP 47 (a.k.a III) language code.
- * @return {boolean} Whether the language code is an RTL language.
- */
-goog.i18n.bidi.isRtlLanguage = function(lang) {
- return goog.i18n.bidi.rtlLocalesRe_.test(lang);
-};
-
-
-/**
- * Regular expression for bracket guard replacement in text.
- * @type {RegExp}
- * @private
- */
-goog.i18n.bidi.bracketGuardTextRe_ =
- /(\(.*?\)+)|(\[.*?\]+)|(\{.*?\}+)|(<.*?>+)/g;
-
-
-/**
- * Apply bracket guard using LRM and RLM. This is to address the problem of
- * messy bracket display frequently happens in RTL layout.
- * This function works for plain text, not for HTML. In HTML, the opening
- * bracket might be in a different context than the closing bracket (such as
- * an attribute value).
- * @param {string} s The string that need to be processed.
- * @param {boolean=} opt_isRtlContext specifies default direction (usually
- * direction of the UI).
- * @return {string} The processed string, with all bracket guarded.
- */
-goog.i18n.bidi.guardBracketInText = function(s, opt_isRtlContext) {
- var useRtl = opt_isRtlContext === undefined ? goog.i18n.bidi.hasAnyRtl(s) :
- opt_isRtlContext;
- var mark = useRtl ? goog.i18n.bidi.Format.RLM : goog.i18n.bidi.Format.LRM;
- return s.replace(goog.i18n.bidi.bracketGuardTextRe_, mark + '$&' + mark);
-};
-
-
-/**
- * Enforce the html snippet in RTL directionality regardless overall context.
- * If the html piece was enclosed by tag, dir will be applied to existing
- * tag, otherwise a span tag will be added as wrapper. For this reason, if
- * html snippet start with with tag, this tag must enclose the whole piece. If
- * the tag already has a dir specified, this new one will override existing
- * one in behavior (tested on FF and IE).
- * @param {string} html The string that need to be processed.
- * @return {string} The processed string, with directionality enforced to RTL.
- */
-goog.i18n.bidi.enforceRtlInHtml = function(html) {
- if (html.charAt(0) == '<') {
- return html.replace(/<\w+/, '$& dir=rtl');
- }
- // '\n' is important for FF so that it won't incorrectly merge span groups
- return '\n<span dir=rtl>' + html + '</span>';
-};
-
-
-/**
- * Enforce RTL on both end of the given text piece using unicode BiDi formatting
- * characters RLE and PDF.
- * @param {string} text The piece of text that need to be wrapped.
- * @return {string} The wrapped string after process.
- */
-goog.i18n.bidi.enforceRtlInText = function(text) {
- return goog.i18n.bidi.Format.RLE + text + goog.i18n.bidi.Format.PDF;
-};
-
-
-/**
- * Enforce the html snippet in RTL directionality regardless overall context.
- * If the html piece was enclosed by tag, dir will be applied to existing
- * tag, otherwise a span tag will be added as wrapper. For this reason, if
- * html snippet start with with tag, this tag must enclose the whole piece. If
- * the tag already has a dir specified, this new one will override existing
- * one in behavior (tested on FF and IE).
- * @param {string} html The string that need to be processed.
- * @return {string} The processed string, with directionality enforced to RTL.
- */
-goog.i18n.bidi.enforceLtrInHtml = function(html) {
- if (html.charAt(0) == '<') {
- return html.replace(/<\w+/, '$& dir=ltr');
- }
- // '\n' is important for FF so that it won't incorrectly merge span groups
- return '\n<span dir=ltr>' + html + '</span>';
-};
-
-
-/**
- * Enforce LTR on both end of the given text piece using unicode BiDi formatting
- * characters LRE and PDF.
- * @param {string} text The piece of text that need to be wrapped.
- * @return {string} The wrapped string after process.
- */
-goog.i18n.bidi.enforceLtrInText = function(text) {
- return goog.i18n.bidi.Format.LRE + text + goog.i18n.bidi.Format.PDF;
-};
-
-
-/**
- * Regular expression to find dimensions such as "padding: .3 0.4ex 5px 6;"
- * @type {RegExp}
- * @private
- */
-goog.i18n.bidi.dimensionsRe_ =
- /:\s*([.\d][.\w]*)\s+([.\d][.\w]*)\s+([.\d][.\w]*)\s+([.\d][.\w]*)/g;
-
-
-/**
- * Regular expression for left.
- * @type {RegExp}
- * @private
- */
-goog.i18n.bidi.leftRe_ = /left/gi;
-
-
-/**
- * Regular expression for right.
- * @type {RegExp}
- * @private
- */
-goog.i18n.bidi.rightRe_ = /right/gi;
-
-
-/**
- * Placeholder regular expression for swapping.
- * @type {RegExp}
- * @private
- */
-goog.i18n.bidi.tempRe_ = /%%%%/g;
-
-
-/**
- * Swap location parameters and 'left'/'right' in CSS specification. The
- * processed string will be suited for RTL layout. Though this function can
- * cover most cases, there are always exceptions. It is suggested to put
- * those exceptions in separate group of CSS string.
- * @param {string} cssStr CSS spefication string.
- * @return {string} Processed CSS specification string.
- */
-goog.i18n.bidi.mirrorCSS = function(cssStr) {
- return cssStr
- .
- // reverse dimensions
- replace(goog.i18n.bidi.dimensionsRe_, ':$1 $4 $3 $2')
- .replace(goog.i18n.bidi.leftRe_, '%%%%')
- . // swap left and right
- replace(goog.i18n.bidi.rightRe_, goog.i18n.bidi.LEFT)
- .replace(goog.i18n.bidi.tempRe_, goog.i18n.bidi.RIGHT);
-};
-
-
-/**
- * Regular expression for hebrew double quote substitution, finding quote
- * directly after hebrew characters.
- * @type {RegExp}
- * @private
- */
-goog.i18n.bidi.doubleQuoteSubstituteRe_ = /([\u0591-\u05f2])"/g;
-
-
-/**
- * Regular expression for hebrew single quote substitution, finding quote
- * directly after hebrew characters.
- * @type {RegExp}
- * @private
- */
-goog.i18n.bidi.singleQuoteSubstituteRe_ = /([\u0591-\u05f2])'/g;
-
-
-/**
- * Replace the double and single quote directly after a Hebrew character with
- * GERESH and GERSHAYIM. In such case, most likely that's user intention.
- * @param {string} str String that need to be processed.
- * @return {string} Processed string with double/single quote replaced.
- */
-goog.i18n.bidi.normalizeHebrewQuote = function(str) {
- return str.replace(goog.i18n.bidi.doubleQuoteSubstituteRe_, '$1\u05f4')
- .replace(goog.i18n.bidi.singleQuoteSubstituteRe_, '$1\u05f3');
-};
-
-
-/**
- * Regular expression to split a string into "words" for directionality
- * estimation based on relative word counts.
- * @type {RegExp}
- * @private
- */
-goog.i18n.bidi.wordSeparatorRe_ = /\s+/;
-
-
-/**
- * Regular expression to check if a string contains any numerals. Used to
- * differentiate between completely neutral strings and those containing
- * numbers, which are weakly LTR.
- *
- * Native Arabic digits (\u0660 - \u0669) are not included because although they
- * do flow left-to-right inside a number, this is the case even if the overall
- * directionality is RTL, and a mathematical expression using these digits is
- * supposed to flow right-to-left overall, including unary plus and minus
- * appearing to the right of a number, and this does depend on the overall
- * directionality being RTL. The digits used in Farsi (\u06F0 - \u06F9), on the
- * other hand, are included, since Farsi math (including unary plus and minus)
- * does flow left-to-right.
- *
- * @type {RegExp}
- * @private
- */
-goog.i18n.bidi.hasNumeralsRe_ = /[\d\u06f0-\u06f9]/;
-
-
-/**
- * This constant controls threshold of RTL directionality.
- * @type {number}
- * @private
- */
-goog.i18n.bidi.rtlDetectionThreshold_ = 0.40;
-
-
-/**
- * Estimates the directionality of a string based on relative word counts.
- * If the number of RTL words is above a certain percentage of the total number
- * of strongly directional words, returns RTL.
- * Otherwise, if any words are strongly or weakly LTR, returns LTR.
- * Otherwise, returns UNKNOWN, which is used to mean "neutral".
- * Numbers are counted as weakly LTR.
- * @param {string} str The string to be checked.
- * @param {boolean=} opt_isHtml Whether str is HTML / HTML-escaped.
- * Default: false.
- * @return {goog.i18n.bidi.Dir} Estimated overall directionality of {@code str}.
- */
-goog.i18n.bidi.estimateDirection = function(str, opt_isHtml) {
- var rtlCount = 0;
- var totalCount = 0;
- var hasWeaklyLtr = false;
- var tokens = goog.i18n.bidi.stripHtmlIfNeeded_(str, opt_isHtml)
- .split(goog.i18n.bidi.wordSeparatorRe_);
- for (var i = 0; i < tokens.length; i++) {
- var token = tokens[i];
- if (goog.i18n.bidi.startsWithRtl(token)) {
- rtlCount++;
- totalCount++;
- } else if (goog.i18n.bidi.isRequiredLtrRe_.test(token)) {
- hasWeaklyLtr = true;
- } else if (goog.i18n.bidi.hasAnyLtr(token)) {
- totalCount++;
- } else if (goog.i18n.bidi.hasNumeralsRe_.test(token)) {
- hasWeaklyLtr = true;
- }
- }
-
- return totalCount == 0 ?
- (hasWeaklyLtr ? goog.i18n.bidi.Dir.LTR : goog.i18n.bidi.Dir.NEUTRAL) :
- (rtlCount / totalCount > goog.i18n.bidi.rtlDetectionThreshold_ ?
- goog.i18n.bidi.Dir.RTL :
- goog.i18n.bidi.Dir.LTR);
-};
-
-
-/**
- * Check the directionality of a piece of text, return true if the piece of
- * text should be laid out in RTL direction.
- * @param {string} str The piece of text that need to be detected.
- * @param {boolean=} opt_isHtml Whether str is HTML / HTML-escaped.
- * Default: false.
- * @return {boolean} Whether this piece of text should be laid out in RTL.
- */
-goog.i18n.bidi.detectRtlDirectionality = function(str, opt_isHtml) {
- return goog.i18n.bidi.estimateDirection(str, opt_isHtml) ==
- goog.i18n.bidi.Dir.RTL;
-};
-
-
-/**
- * Sets text input element's directionality and text alignment based on a
- * given directionality. Does nothing if the given directionality is unknown or
- * neutral.
- * @param {Element} element Input field element to set directionality to.
- * @param {goog.i18n.bidi.Dir|number|boolean|null} dir Desired directionality,
- * given in one of the following formats:
- * 1. A goog.i18n.bidi.Dir constant.
- * 2. A number (positive = LRT, negative = RTL, 0 = neutral).
- * 3. A boolean (true = RTL, false = LTR).
- * 4. A null for unknown directionality.
- */
-goog.i18n.bidi.setElementDirAndAlign = function(element, dir) {
- if (element) {
- dir = goog.i18n.bidi.toDir(dir);
- if (dir) {
- element.style.textAlign = dir == goog.i18n.bidi.Dir.RTL ?
- goog.i18n.bidi.RIGHT :
- goog.i18n.bidi.LEFT;
- element.dir = dir == goog.i18n.bidi.Dir.RTL ? 'rtl' : 'ltr';
- }
- }
-};
-
-
-/**
- * Sets element dir based on estimated directionality of the given text.
- * @param {!Element} element
- * @param {string} text
- */
-goog.i18n.bidi.setElementDirByTextDirectionality = function(element, text) {
- switch (goog.i18n.bidi.estimateDirection(text)) {
- case (goog.i18n.bidi.Dir.LTR):
- element.dir = 'ltr';
- break;
- case (goog.i18n.bidi.Dir.RTL):
- element.dir = 'rtl';
- break;
- default:
- // Default for no direction, inherit from document.
- element.removeAttribute('dir');
- }
-};
-
-
-
-/**
- * Strings that have an (optional) known direction.
- *
- * Implementations of this interface are string-like objects that carry an
- * attached direction, if known.
- * @interface
- */
-goog.i18n.bidi.DirectionalString = function() {};
-
-
-/**
- * Interface marker of the DirectionalString interface.
- *
- * This property can be used to determine at runtime whether or not an object
- * implements this interface. All implementations of this interface set this
- * property to {@code true}.
- * @type {boolean}
- */
-goog.i18n.bidi.DirectionalString.prototype
- .implementsGoogI18nBidiDirectionalString;
-
-
-/**
- * Retrieves this object's known direction (if any).
- * @return {?goog.i18n.bidi.Dir} The known direction. Null if unknown.
- */
-goog.i18n.bidi.DirectionalString.prototype.getDirection;
-
-// Copyright 2013 The Closure Library Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS-IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-/**
- * @fileoverview The SafeUrl type and its builders.
- *
- * TODO(xtof): Link to document stating type contract.
- */
-
-goog.provide('goog.html.SafeUrl');
-
-goog.require('goog.asserts');
-goog.require('goog.fs.url');
-goog.require('goog.i18n.bidi.Dir');
-goog.require('goog.i18n.bidi.DirectionalString');
-goog.require('goog.string');
-goog.require('goog.string.Const');
-goog.require('goog.string.TypedString');
-
-
-
-/**
- * A string that is safe to use in URL context in DOM APIs and HTML documents.
- *
- * A SafeUrl is a string-like object that carries the security type contract
- * that its value as a string will not cause untrusted script execution
- * when evaluated as a hyperlink URL in a browser.
- *
- * Values of this type are guaranteed to be safe to use in URL/hyperlink
- * contexts, such as, assignment to URL-valued DOM properties, or
- * interpolation into a HTML template in URL context (e.g., inside a href
- * attribute), in the sense that the use will not result in a
- * Cross-Site-Scripting vulnerability.
- *
- * Note that, as documented in {@code goog.html.SafeUrl.unwrap}, this type's
- * contract does not guarantee that instances are safe to interpolate into HTML
- * without appropriate escaping.
- *
- * Note also that this type's contract does not imply any guarantees regarding
- * the resource the URL refers to. In particular, SafeUrls are <b>not</b>
- * safe to use in a context where the referred-to resource is interpreted as
- * trusted code, e.g., as the src of a script tag.
- *
- * Instances of this type must be created via the factory methods
- * ({@code goog.html.SafeUrl.fromConstant}, {@code goog.html.SafeUrl.sanitize}),
- * etc and not by invoking its constructor. The constructor intentionally
- * takes no parameters and the type is immutable; hence only a default instance
- * corresponding to the empty string can be obtained via constructor invocation.
- *
- * @see goog.html.SafeUrl#fromConstant
- * @see goog.html.SafeUrl#from
- * @see goog.html.SafeUrl#sanitize
- * @constructor
- * @final
- * @struct
- * @implements {goog.i18n.bidi.DirectionalString}
- * @implements {goog.string.TypedString}
- */
-goog.html.SafeUrl = function() {
- /**
- * The contained value of this SafeUrl. The field has a purposely ugly
- * name to make (non-compiled) code that attempts to directly access this
- * field stand out.
- * @private {string}
- */
- this.privateDoNotAccessOrElseSafeHtmlWrappedValue_ = '';
-
- /**
- * A type marker used to implement additional run-time type checking.
- * @see goog.html.SafeUrl#unwrap
- * @const
- * @private
- */
- this.SAFE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ =
- goog.html.SafeUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_;
-};
-
-
-/**
- * The innocuous string generated by goog.html.SafeUrl.sanitize when passed
- * an unsafe URL.
- *
- * about:invalid is registered in
- * http://www.w3.org/TR/css3-values/#about-invalid.
- * http://tools.ietf.org/html/rfc6694#section-2.2.1 permits about URLs to
- * contain a fragment, which is not to be considered when determining if an
- * about URL is well-known.
- *
- * Using about:invalid seems preferable to using a fixed data URL, since
- * browsers might choose to not report CSP violations on it, as legitimate
- * CSS function calls to attr() can result in this URL being produced. It is
- * also a standard URL which matches exactly the semantics we need:
- * "The about:invalid URI references a non-existent document with a generic
- * error condition. It can be used when a URI is necessary, but the default
- * value shouldn't be resolveable as any type of document".
- *
- * @const {string}
- */
-goog.html.SafeUrl.INNOCUOUS_STRING = 'about:invalid#zClosurez';
-
-
-/**
- * @override
- * @const
- */
-goog.html.SafeUrl.prototype.implementsGoogStringTypedString = true;
-
-
-/**
- * Returns this SafeUrl's value a string.
- *
- * IMPORTANT: In code where it is security relevant that an object's type is
- * indeed {@code SafeUrl}, use {@code goog.html.SafeUrl.unwrap} instead of this
- * method. If in doubt, assume that it's security relevant. In particular, note
- * that goog.html functions which return a goog.html type do not guarantee that
- * the returned instance is of the right type. For example:
- *
- * <pre>
- * var fakeSafeHtml = new String('fake');
- * fakeSafeHtml.__proto__ = goog.html.SafeHtml.prototype;
- * var newSafeHtml = goog.html.SafeHtml.htmlEscape(fakeSafeHtml);
- * // newSafeHtml is just an alias for fakeSafeHtml, it's passed through by
- * // goog.html.SafeHtml.htmlEscape() as fakeSafeHtml instanceof
- * // goog.html.SafeHtml.
- * </pre>
- *
- * IMPORTANT: The guarantees of the SafeUrl type contract only extend to the
- * behavior of browsers when interpreting URLs. Values of SafeUrl objects MUST
- * be appropriately escaped before embedding in a HTML document. Note that the
- * required escaping is context-sensitive (e.g. a different escaping is
- * required for embedding a URL in a style property within a style
- * attribute, as opposed to embedding in a href attribute).
- *
- * @see goog.html.SafeUrl#unwrap
- * @override
- */
-goog.html.SafeUrl.prototype.getTypedStringValue = function() {
- return this.privateDoNotAccessOrElseSafeHtmlWrappedValue_;
-};
-
-
-/**
- * @override
- * @const
- */
-goog.html.SafeUrl.prototype.implementsGoogI18nBidiDirectionalString = true;
-
-
-/**
- * Returns this URLs directionality, which is always {@code LTR}.
- * @override
- */
-goog.html.SafeUrl.prototype.getDirection = function() {
- return goog.i18n.bidi.Dir.LTR;
-};
-
-
-if (goog.DEBUG) {
- /**
- * Returns a debug string-representation of this value.
- *
- * To obtain the actual string value wrapped in a SafeUrl, use
- * {@code goog.html.SafeUrl.unwrap}.
- *
- * @see goog.html.SafeUrl#unwrap
- * @override
- */
- goog.html.SafeUrl.prototype.toString = function() {
- return 'SafeUrl{' + this.privateDoNotAccessOrElseSafeHtmlWrappedValue_ +
- '}';
- };
-}
-
-
-/**
- * Performs a runtime check that the provided object is indeed a SafeUrl
- * object, and returns its value.
- *
- * IMPORTANT: The guarantees of the SafeUrl type contract only extend to the
- * behavior of browsers when interpreting URLs. Values of SafeUrl objects MUST
- * be appropriately escaped before embedding in a HTML document. Note that the
- * required escaping is context-sensitive (e.g. a different escaping is
- * required for embedding a URL in a style property within a style
- * attribute, as opposed to embedding in a href attribute).
- *
- * @param {!goog.html.SafeUrl} safeUrl The object to extract from.
- * @return {string} The SafeUrl object's contained string, unless the run-time
- * type check fails. In that case, {@code unwrap} returns an innocuous
- * string, or, if assertions are enabled, throws
- * {@code goog.asserts.AssertionError}.
- */
-goog.html.SafeUrl.unwrap = function(safeUrl) {
- // Perform additional Run-time type-checking to ensure that safeUrl is indeed
- // an instance of the expected type. This provides some additional protection
- // against security bugs due to application code that disables type checks.
- // Specifically, the following checks are performed:
- // 1. The object is an instance of the expected type.
- // 2. The object is not an instance of a subclass.
- // 3. The object carries a type marker for the expected type. "Faking" an
- // object requires a reference to the type marker, which has names intended
- // to stand out in code reviews.
- if (safeUrl instanceof goog.html.SafeUrl &&
- safeUrl.constructor === goog.html.SafeUrl &&
- safeUrl.SAFE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ ===
- goog.html.SafeUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_) {
- return safeUrl.privateDoNotAccessOrElseSafeHtmlWrappedValue_;
- } else {
- goog.asserts.fail('expected object of type SafeUrl, got \'' +
- safeUrl + '\' of type ' + goog.typeOf(safeUrl));
- return 'type_error:SafeUrl';
- }
-};
-
-
-/**
- * Creates a SafeUrl object from a compile-time constant string.
- *
- * Compile-time constant strings are inherently program-controlled and hence
- * trusted.
- *
- * @param {!goog.string.Const} url A compile-time-constant string from which to
- * create a SafeUrl.
- * @return {!goog.html.SafeUrl} A SafeUrl object initialized to {@code url}.
- */
-goog.html.SafeUrl.fromConstant = function(url) {
- return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(
- goog.string.Const.unwrap(url));
-};
-
-
-/**
- * A pattern that matches Blob or data types that can have SafeUrls created
- * from URL.createObjectURL(blob) or via a data: URI. Only matches image and
- * video types, currently.
- * @const
- * @private
- */
-goog.html.SAFE_MIME_TYPE_PATTERN_ =
- /^(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm))$/i;
-
-
-/**
- * Creates a SafeUrl wrapping a blob URL for the given {@code blob}.
- *
- * The blob URL is created with {@code URL.createObjectURL}. If the MIME type
- * for {@code blob} is not of a known safe image or video MIME type, then the
- * SafeUrl will wrap {@link #INNOCUOUS_STRING}.
- *
- * @see http://www.w3.org/TR/FileAPI/#url
- * @param {!Blob} blob
- * @return {!goog.html.SafeUrl} The blob URL, or an innocuous string wrapped
- * as a SafeUrl.
- */
-goog.html.SafeUrl.fromBlob = function(blob) {
- var url = goog.html.SAFE_MIME_TYPE_PATTERN_.test(blob.type) ?
- goog.fs.url.createObjectUrl(blob) :
- goog.html.SafeUrl.INNOCUOUS_STRING;
- return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(url);
-};
-
-
-/**
- * Matches a base-64 data URL, with the first match group being the MIME type.
- * @const
- * @private
- */
-goog.html.DATA_URL_PATTERN_ = /^data:([^;,]*);base64,[a-z0-9+\/]+=*$/i;
-
-
-/**
- * Creates a SafeUrl wrapping a data: URL, after validating it matches a
- * known-safe image or video MIME type.
- *
- * @param {string} dataUrl A valid base64 data URL with one of the whitelisted
- * image or video MIME types.
- * @return {!goog.html.SafeUrl} A matching safe URL, or {@link INNOCUOUS_STRING}
- * wrapped as a SafeUrl if it does not pass.
- */
-goog.html.SafeUrl.fromDataUrl = function(dataUrl) {
- // There's a slight risk here that a browser sniffs the content type if it
- // doesn't know the MIME type and executes HTML within the data: URL. For this
- // to cause XSS it would also have to execute the HTML in the same origin
- // of the page with the link. It seems unlikely that both of these will
- // happen, particularly in not really old IEs.
- var match = dataUrl.match(goog.html.DATA_URL_PATTERN_);
- var valid = match && goog.html.SAFE_MIME_TYPE_PATTERN_.test(match[1]);
- return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(
- valid ? dataUrl : goog.html.SafeUrl.INNOCUOUS_STRING);
-};
-
-
-/**
- * Creates a SafeUrl wrapping a tel: URL.
- *
- * @param {string} telUrl A tel URL.
- * @return {!goog.html.SafeUrl} A matching safe URL, or {@link INNOCUOUS_STRING}
- * wrapped as a SafeUrl if it does not pass.
- */
-goog.html.SafeUrl.fromTelUrl = function(telUrl) {
- // There's a risk that a tel: URL could immediately place a call once
- // clicked, without requiring user confirmation. For that reason it is
- // handled in this separate function.
- if (!goog.string.caseInsensitiveStartsWith(telUrl, 'tel:')) {
- telUrl = goog.html.SafeUrl.INNOCUOUS_STRING;
- }
- return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(
- telUrl);
-};
-
-
-/**
- * A pattern that recognizes a commonly useful subset of URLs that satisfy
- * the SafeUrl contract.
- *
- * This regular expression matches a subset of URLs that will not cause script
- * execution if used in URL context within a HTML document. Specifically, this
- * regular expression matches if (comment from here on and regex copied from
- * Soy's EscapingConventions):
- * (1) Either a protocol in a whitelist (http, https, mailto or ftp).
- * (2) or no protocol. A protocol must be followed by a colon. The below
- * allows that by allowing colons only after one of the characters [/?#].
- * A colon after a hash (#) must be in the fragment.
- * Otherwise, a colon after a (?) must be in a query.
- * Otherwise, a colon after a single solidus (/) must be in a path.
- * Otherwise, a colon after a double solidus (//) must be in the authority
- * (before port).
- *
- * The pattern disallows &, used in HTML entity declarations before
- * one of the characters in [/?#]. This disallows HTML entities used in the
- * protocol name, which should never happen, e.g. "h&#116;tp" for "http".
- * It also disallows HTML entities in the first path part of a relative path,
- * e.g. "foo&lt;bar/baz". Our existing escaping functions should not produce
- * that. More importantly, it disallows masking of a colon,
- * e.g. "javascript&#58;...".
- *
- * @private
- * @const {!RegExp}
- */
-goog.html.SAFE_URL_PATTERN_ =
- /^(?:(?:https?|mailto|ftp):|[^&:/?#]*(?:[/?#]|$))/i;
-
-
-/**
- * Creates a SafeUrl object from {@code url}. If {@code url} is a
- * goog.html.SafeUrl then it is simply returned. Otherwise the input string is
- * validated to match a pattern of commonly used safe URLs.
- *
- * {@code url} may be a URL with the http, https, mailto or ftp scheme,
- * or a relative URL (i.e., a URL without a scheme; specifically, a
- * scheme-relative, absolute-path-relative, or path-relative URL).
- *
- * @see http://url.spec.whatwg.org/#concept-relative-url
- * @param {string|!goog.string.TypedString} url The URL to validate.
- * @return {!goog.html.SafeUrl} The validated URL, wrapped as a SafeUrl.
- */
-goog.html.SafeUrl.sanitize = function(url) {
- if (url instanceof goog.html.SafeUrl) {
- return url;
- } else if (url.implementsGoogStringTypedString) {
- url = url.getTypedStringValue();
- } else {
- url = String(url);
- }
- if (!goog.html.SAFE_URL_PATTERN_.test(url)) {
- url = goog.html.SafeUrl.INNOCUOUS_STRING;
- }
- return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(url);
-};
-
-
-/**
- * Type marker for the SafeUrl type, used to implement additional run-time
- * type checking.
- * @const {!Object}
- * @private
- */
-goog.html.SafeUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = {};
-
-
-/**
- * Package-internal utility method to create SafeUrl instances.
- *
- * @param {string} url The string to initialize the SafeUrl object with.
- * @return {!goog.html.SafeUrl} The initialized SafeUrl object.
- * @package
- */
-goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse = function(
- url) {
- var safeUrl = new goog.html.SafeUrl();
- safeUrl.privateDoNotAccessOrElseSafeHtmlWrappedValue_ = url;
- return safeUrl;
-};
-
-
-/**
- * A SafeUrl corresponding to the special about:blank url.
- * @const {!goog.html.SafeUrl}
- */
-goog.html.SafeUrl.ABOUT_BLANK =
- goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(
- 'about:blank');
-
-// Copyright 2013 The Closure Library Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS-IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-/**
- * @fileoverview The TrustedResourceUrl type and its builders.
- *
- * TODO(xtof): Link to document stating type contract.
- */
-
-goog.provide('goog.html.TrustedResourceUrl');
-
-goog.require('goog.asserts');
-goog.require('goog.i18n.bidi.Dir');
-goog.require('goog.i18n.bidi.DirectionalString');
-goog.require('goog.string.Const');
-goog.require('goog.string.TypedString');
-
-
-
-/**
- * A URL which is under application control and from which script, CSS, and
- * other resources that represent executable code, can be fetched.
- *
- * Given that the URL can only be constructed from strings under application
- * control and is used to load resources, bugs resulting in a malformed URL
- * should not have a security impact and are likely to be easily detectable
- * during testing. Given the wide number of non-RFC compliant URLs in use,
- * stricter validation could prevent some applications from being able to use
- * this type.
- *
- * Instances of this type must be created via the factory method,
- * ({@code goog.html.TrustedResourceUrl.fromConstant}), and not by invoking its
- * constructor. The constructor intentionally takes no parameters and the type
- * is immutable; hence only a default instance corresponding to the empty
- * string can be obtained via constructor invocation.
- *
- * @see goog.html.TrustedResourceUrl#fromConstant
- * @constructor
- * @final
- * @struct
- * @implements {goog.i18n.bidi.DirectionalString}
- * @implements {goog.string.TypedString}
- */
-goog.html.TrustedResourceUrl = function() {
- /**
- * The contained value of this TrustedResourceUrl. The field has a purposely
- * ugly name to make (non-compiled) code that attempts to directly access this
- * field stand out.
- * @private {string}
- */
- this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_ = '';
-
- /**
- * A type marker used to implement additional run-time type checking.
- * @see goog.html.TrustedResourceUrl#unwrap
- * @const
- * @private
- */
- this.TRUSTED_RESOURCE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ =
- goog.html.TrustedResourceUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_;
-};
-
-
-/**
- * @override
- * @const
- */
-goog.html.TrustedResourceUrl.prototype.implementsGoogStringTypedString = true;
-
-
-/**
- * Returns this TrustedResourceUrl's value as a string.
- *
- * IMPORTANT: In code where it is security relevant that an object's type is
- * indeed {@code TrustedResourceUrl}, use
- * {@code goog.html.TrustedResourceUrl.unwrap} instead of this method. If in
- * doubt, assume that it's security relevant. In particular, note that
- * goog.html functions which return a goog.html type do not guarantee that
- * the returned instance is of the right type. For example:
- *
- * <pre>
- * var fakeSafeHtml = new String('fake');
- * fakeSafeHtml.__proto__ = goog.html.SafeHtml.prototype;
- * var newSafeHtml = goog.html.SafeHtml.htmlEscape(fakeSafeHtml);
- * // newSafeHtml is just an alias for fakeSafeHtml, it's passed through by
- * // goog.html.SafeHtml.htmlEscape() as fakeSafeHtml instanceof
- * // goog.html.SafeHtml.
- * </pre>
- *
- * @see goog.html.TrustedResourceUrl#unwrap
- * @override
- */
-goog.html.TrustedResourceUrl.prototype.getTypedStringValue = function() {
- return this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_;
-};
-
-
-/**
- * @override
- * @const
- */
-goog.html.TrustedResourceUrl.prototype.implementsGoogI18nBidiDirectionalString =
- true;
-
-
-/**
- * Returns this URLs directionality, which is always {@code LTR}.
- * @override
- */
-goog.html.TrustedResourceUrl.prototype.getDirection = function() {
- return goog.i18n.bidi.Dir.LTR;
-};
-
-
-if (goog.DEBUG) {
- /**
- * Returns a debug string-representation of this value.
- *
- * To obtain the actual string value wrapped in a TrustedResourceUrl, use
- * {@code goog.html.TrustedResourceUrl.unwrap}.
- *
- * @see goog.html.TrustedResourceUrl#unwrap
- * @override
- */
- goog.html.TrustedResourceUrl.prototype.toString = function() {
- return 'TrustedResourceUrl{' +
- this.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_ + '}';
- };
-}
-
-
-/**
- * Performs a runtime check that the provided object is indeed a
- * TrustedResourceUrl object, and returns its value.
- *
- * @param {!goog.html.TrustedResourceUrl} trustedResourceUrl The object to
- * extract from.
- * @return {string} The trustedResourceUrl object's contained string, unless
- * the run-time type check fails. In that case, {@code unwrap} returns an
- * innocuous string, or, if assertions are enabled, throws
- * {@code goog.asserts.AssertionError}.
- */
-goog.html.TrustedResourceUrl.unwrap = function(trustedResourceUrl) {
- // Perform additional Run-time type-checking to ensure that
- // trustedResourceUrl is indeed an instance of the expected type. This
- // provides some additional protection against security bugs due to
- // application code that disables type checks.
- // Specifically, the following checks are performed:
- // 1. The object is an instance of the expected type.
- // 2. The object is not an instance of a subclass.
- // 3. The object carries a type marker for the expected type. "Faking" an
- // object requires a reference to the type marker, which has names intended
- // to stand out in code reviews.
- if (trustedResourceUrl instanceof goog.html.TrustedResourceUrl &&
- trustedResourceUrl.constructor === goog.html.TrustedResourceUrl &&
- trustedResourceUrl
- .TRUSTED_RESOURCE_URL_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ ===
- goog.html.TrustedResourceUrl
- .TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_) {
- return trustedResourceUrl
- .privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_;
- } else {
- goog.asserts.fail('expected object of type TrustedResourceUrl, got \'' +
- trustedResourceUrl + '\' of type ' + goog.typeOf(trustedResourceUrl));
- return 'type_error:TrustedResourceUrl';
- }
-};
-
-
-/**
- * Creates a TrustedResourceUrl object from a compile-time constant string.
- *
- * Compile-time constant strings are inherently program-controlled and hence
- * trusted.
- *
- * @param {!goog.string.Const} url A compile-time-constant string from which to
- * create a TrustedResourceUrl.
- * @return {!goog.html.TrustedResourceUrl} A TrustedResourceUrl object
- * initialized to {@code url}.
- */
-goog.html.TrustedResourceUrl.fromConstant = function(url) {
- return goog.html.TrustedResourceUrl
- .createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(
- goog.string.Const.unwrap(url));
-};
-
-
-/**
- * Creates a TrustedResourceUrl object from a compile-time constant strings.
- *
- * Compile-time constant strings are inherently program-controlled and hence
- * trusted.
- *
- * @param {!Array<!goog.string.Const>} parts Compile-time-constant strings from
- * which to create a TrustedResourceUrl.
- * @return {!goog.html.TrustedResourceUrl} A TrustedResourceUrl object
- * initialized to concatenation of {@code parts}.
- */
-goog.html.TrustedResourceUrl.fromConstants = function(parts) {
- var unwrapped = '';
- for (var i = 0; i < parts.length; i++) {
- unwrapped += goog.string.Const.unwrap(parts[i]);
- }
- return goog.html.TrustedResourceUrl
- .createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(unwrapped);
-};
-
-
-/**
- * Type marker for the TrustedResourceUrl type, used to implement additional
- * run-time type checking.
- * @const {!Object}
- * @private
- */
-goog.html.TrustedResourceUrl.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = {};
-
-
-/**
- * Package-internal utility method to create TrustedResourceUrl instances.
- *
- * @param {string} url The string to initialize the TrustedResourceUrl object
- * with.
- * @return {!goog.html.TrustedResourceUrl} The initialized TrustedResourceUrl
- * object.
- * @package
- */
-goog.html.TrustedResourceUrl
- .createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse = function(url) {
- var trustedResourceUrl = new goog.html.TrustedResourceUrl();
- trustedResourceUrl.privateDoNotAccessOrElseTrustedResourceUrlWrappedValue_ =
- url;
- return trustedResourceUrl;
-};
-
-// Copyright 2013 The Closure Library Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS-IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-/**
- * @fileoverview The SafeHtml type and its builders.
- *
- * TODO(xtof): Link to document stating type contract.
- */
-
-goog.provide('goog.html.SafeHtml');
+goog.provide('ol.dom');
-goog.require('goog.array');
goog.require('goog.asserts');
-goog.require('goog.dom.TagName');
-goog.require('goog.dom.tags');
-goog.require('goog.html.SafeStyle');
-goog.require('goog.html.SafeStyleSheet');
-goog.require('goog.html.SafeUrl');
-goog.require('goog.html.TrustedResourceUrl');
-goog.require('goog.i18n.bidi.Dir');
-goog.require('goog.i18n.bidi.DirectionalString');
-goog.require('goog.labs.userAgent.browser');
-goog.require('goog.object');
-goog.require('goog.string');
-goog.require('goog.string.Const');
-goog.require('goog.string.TypedString');
-
-
-
-/**
- * A string that is safe to use in HTML context in DOM APIs and HTML documents.
- *
- * A SafeHtml is a string-like object that carries the security type contract
- * that its value as a string will not cause untrusted script execution when
- * evaluated as HTML in a browser.
- *
- * Values of this type are guaranteed to be safe to use in HTML contexts,
- * such as, assignment to the innerHTML DOM property, or interpolation into
- * a HTML template in HTML PC_DATA context, in the sense that the use will not
- * result in a Cross-Site-Scripting vulnerability.
- *
- * Instances of this type must be created via the factory methods
- * ({@code goog.html.SafeHtml.create}, {@code goog.html.SafeHtml.htmlEscape}),
- * etc and not by invoking its constructor. The constructor intentionally
- * takes no parameters and the type is immutable; hence only a default instance
- * corresponding to the empty string can be obtained via constructor invocation.
- *
- * @see goog.html.SafeHtml#create
- * @see goog.html.SafeHtml#htmlEscape
- * @constructor
- * @final
- * @struct
- * @implements {goog.i18n.bidi.DirectionalString}
- * @implements {goog.string.TypedString}
- */
-goog.html.SafeHtml = function() {
- /**
- * The contained value of this SafeHtml. The field has a purposely ugly
- * name to make (non-compiled) code that attempts to directly access this
- * field stand out.
- * @private {string}
- */
- this.privateDoNotAccessOrElseSafeHtmlWrappedValue_ = '';
-
- /**
- * A type marker used to implement additional run-time type checking.
- * @see goog.html.SafeHtml#unwrap
- * @const
- * @private
- */
- this.SAFE_HTML_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ =
- goog.html.SafeHtml.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_;
-
- /**
- * This SafeHtml's directionality, or null if unknown.
- * @private {?goog.i18n.bidi.Dir}
- */
- this.dir_ = null;
-};
-
-
-/**
- * @override
- * @const
- */
-goog.html.SafeHtml.prototype.implementsGoogI18nBidiDirectionalString = true;
-
-
-/** @override */
-goog.html.SafeHtml.prototype.getDirection = function() {
- return this.dir_;
-};
-
-
-/**
- * @override
- * @const
- */
-goog.html.SafeHtml.prototype.implementsGoogStringTypedString = true;
-
-
-/**
- * Returns this SafeHtml's value as string.
- *
- * IMPORTANT: In code where it is security relevant that an object's type is
- * indeed {@code SafeHtml}, use {@code goog.html.SafeHtml.unwrap} instead of
- * this method. If in doubt, assume that it's security relevant. In particular,
- * note that goog.html functions which return a goog.html type do not guarantee
- * that the returned instance is of the right type. For example:
- *
- * <pre>
- * var fakeSafeHtml = new String('fake');
- * fakeSafeHtml.__proto__ = goog.html.SafeHtml.prototype;
- * var newSafeHtml = goog.html.SafeHtml.htmlEscape(fakeSafeHtml);
- * // newSafeHtml is just an alias for fakeSafeHtml, it's passed through by
- * // goog.html.SafeHtml.htmlEscape() as fakeSafeHtml
- * // instanceof goog.html.SafeHtml.
- * </pre>
- *
- * @see goog.html.SafeHtml#unwrap
- * @override
- */
-goog.html.SafeHtml.prototype.getTypedStringValue = function() {
- return this.privateDoNotAccessOrElseSafeHtmlWrappedValue_;
-};
-
-
-if (goog.DEBUG) {
- /**
- * Returns a debug string-representation of this value.
- *
- * To obtain the actual string value wrapped in a SafeHtml, use
- * {@code goog.html.SafeHtml.unwrap}.
- *
- * @see goog.html.SafeHtml#unwrap
- * @override
- */
- goog.html.SafeHtml.prototype.toString = function() {
- return 'SafeHtml{' + this.privateDoNotAccessOrElseSafeHtmlWrappedValue_ +
- '}';
- };
-}
-
-
-/**
- * Performs a runtime check that the provided object is indeed a SafeHtml
- * object, and returns its value.
- * @param {!goog.html.SafeHtml} safeHtml The object to extract from.
- * @return {string} The SafeHtml object's contained string, unless the run-time
- * type check fails. In that case, {@code unwrap} returns an innocuous
- * string, or, if assertions are enabled, throws
- * {@code goog.asserts.AssertionError}.
- */
-goog.html.SafeHtml.unwrap = function(safeHtml) {
- // Perform additional run-time type-checking to ensure that safeHtml is indeed
- // an instance of the expected type. This provides some additional protection
- // against security bugs due to application code that disables type checks.
- // Specifically, the following checks are performed:
- // 1. The object is an instance of the expected type.
- // 2. The object is not an instance of a subclass.
- // 3. The object carries a type marker for the expected type. "Faking" an
- // object requires a reference to the type marker, which has names intended
- // to stand out in code reviews.
- if (safeHtml instanceof goog.html.SafeHtml &&
- safeHtml.constructor === goog.html.SafeHtml &&
- safeHtml.SAFE_HTML_TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ ===
- goog.html.SafeHtml.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_) {
- return safeHtml.privateDoNotAccessOrElseSafeHtmlWrappedValue_;
- } else {
- goog.asserts.fail('expected object of type SafeHtml, got \'' +
- safeHtml + '\' of type ' + goog.typeOf(safeHtml));
- return 'type_error:SafeHtml';
- }
-};
-
-
-/**
- * Shorthand for union of types that can sensibly be converted to strings
- * or might already be SafeHtml (as SafeHtml is a goog.string.TypedString).
- * @private
- * @typedef {string|number|boolean|!goog.string.TypedString|
- * !goog.i18n.bidi.DirectionalString}
- */
-goog.html.SafeHtml.TextOrHtml_;
-
-
-/**
- * Returns HTML-escaped text as a SafeHtml object.
- *
- * If text is of a type that implements
- * {@code goog.i18n.bidi.DirectionalString}, the directionality of the new
- * {@code SafeHtml} object is set to {@code text}'s directionality, if known.
- * Otherwise, the directionality of the resulting SafeHtml is unknown (i.e.,
- * {@code null}).
- *
- * @param {!goog.html.SafeHtml.TextOrHtml_} textOrHtml The text to escape. If
- * the parameter is of type SafeHtml it is returned directly (no escaping
- * is done).
- * @return {!goog.html.SafeHtml} The escaped text, wrapped as a SafeHtml.
- */
-goog.html.SafeHtml.htmlEscape = function(textOrHtml) {
- if (textOrHtml instanceof goog.html.SafeHtml) {
- return textOrHtml;
- }
- var dir = null;
- if (textOrHtml.implementsGoogI18nBidiDirectionalString) {
- dir = textOrHtml.getDirection();
- }
- var textAsString;
- if (textOrHtml.implementsGoogStringTypedString) {
- textAsString = textOrHtml.getTypedStringValue();
- } else {
- textAsString = String(textOrHtml);
- }
- return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(
- goog.string.htmlEscape(textAsString), dir);
-};
-
-
-/**
- * Returns HTML-escaped text as a SafeHtml object, with newlines changed to
- * &lt;br&gt;.
- * @param {!goog.html.SafeHtml.TextOrHtml_} textOrHtml The text to escape. If
- * the parameter is of type SafeHtml it is returned directly (no escaping
- * is done).
- * @return {!goog.html.SafeHtml} The escaped text, wrapped as a SafeHtml.
- */
-goog.html.SafeHtml.htmlEscapePreservingNewlines = function(textOrHtml) {
- if (textOrHtml instanceof goog.html.SafeHtml) {
- return textOrHtml;
- }
- var html = goog.html.SafeHtml.htmlEscape(textOrHtml);
- return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(
- goog.string.newLineToBr(goog.html.SafeHtml.unwrap(html)),
- html.getDirection());
-};
+goog.require('goog.userAgent');
+goog.require('goog.vec.Mat4');
+goog.require('ol');
/**
- * Returns HTML-escaped text as a SafeHtml object, with newlines changed to
- * &lt;br&gt; and escaping whitespace to preserve spatial formatting. Character
- * entity #160 is used to make it safer for XML.
- * @param {!goog.html.SafeHtml.TextOrHtml_} textOrHtml The text to escape. If
- * the parameter is of type SafeHtml it is returned directly (no escaping
- * is done).
- * @return {!goog.html.SafeHtml} The escaped text, wrapped as a SafeHtml.
+ * Create an html canvas element and returns its 2d context.
+ * @param {number=} opt_width Canvas width.
+ * @param {number=} opt_height Canvas height.
+ * @return {CanvasRenderingContext2D} The context.
*/
-goog.html.SafeHtml.htmlEscapePreservingNewlinesAndSpaces = function(
- textOrHtml) {
- if (textOrHtml instanceof goog.html.SafeHtml) {
- return textOrHtml;
+ol.dom.createCanvasContext2D = function(opt_width, opt_height) {
+ var canvas = document.createElement('CANVAS');
+ if (opt_width) {
+ canvas.width = opt_width;
}
- var html = goog.html.SafeHtml.htmlEscape(textOrHtml);
- return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(
- goog.string.whitespaceEscape(goog.html.SafeHtml.unwrap(html)),
- html.getDirection());
-};
-
-
-/**
- * Coerces an arbitrary object into a SafeHtml object.
- *
- * If {@code textOrHtml} is already of type {@code goog.html.SafeHtml}, the same
- * object is returned. Otherwise, {@code textOrHtml} is coerced to string, and
- * HTML-escaped. If {@code textOrHtml} is of a type that implements
- * {@code goog.i18n.bidi.DirectionalString}, its directionality, if known, is
- * preserved.
- *
- * @param {!goog.html.SafeHtml.TextOrHtml_} textOrHtml The text or SafeHtml to
- * coerce.
- * @return {!goog.html.SafeHtml} The resulting SafeHtml object.
- * @deprecated Use goog.html.SafeHtml.htmlEscape.
- */
-goog.html.SafeHtml.from = goog.html.SafeHtml.htmlEscape;
-
-
-/**
- * @const
- * @private
- */
-goog.html.SafeHtml.VALID_NAMES_IN_TAG_ = /^[a-zA-Z0-9-]+$/;
-
-
-/**
- * Set of attributes containing URL as defined at
- * http://www.w3.org/TR/html5/index.html#attributes-1.
- * @private @const {!Object<string,boolean>}
- */
-goog.html.SafeHtml.URL_ATTRIBUTES_ = goog.object.createSet(
- 'action', 'cite', 'data', 'formaction', 'href', 'manifest', 'poster',
- 'src');
-
-
-/**
- * Tags which are unsupported via create(). They might be supported via a
- * tag-specific create method. These are tags which might require a
- * TrustedResourceUrl in one of their attributes or a restricted type for
- * their content.
- * @private @const {!Object<string,boolean>}
- */
-goog.html.SafeHtml.NOT_ALLOWED_TAG_NAMES_ = goog.object.createSet(
- goog.dom.TagName.APPLET, goog.dom.TagName.BASE, goog.dom.TagName.EMBED,
- goog.dom.TagName.IFRAME, goog.dom.TagName.LINK, goog.dom.TagName.MATH,
- goog.dom.TagName.META, goog.dom.TagName.OBJECT, goog.dom.TagName.SCRIPT,
- goog.dom.TagName.STYLE, goog.dom.TagName.SVG, goog.dom.TagName.TEMPLATE);
-
-
-/**
- * @typedef {string|number|goog.string.TypedString|
- * goog.html.SafeStyle.PropertyMap}
- */
-goog.html.SafeHtml.AttributeValue;
-
-
-/**
- * Creates a SafeHtml content consisting of a tag with optional attributes and
- * optional content.
- *
- * For convenience tag names and attribute names are accepted as regular
- * strings, instead of goog.string.Const. Nevertheless, you should not pass
- * user-controlled values to these parameters. Note that these parameters are
- * syntactically validated at runtime, and invalid values will result in
- * an exception.
- *
- * Example usage:
- *
- * goog.html.SafeHtml.create('br');
- * goog.html.SafeHtml.create('div', {'class': 'a'});
- * goog.html.SafeHtml.create('p', {}, 'a');
- * goog.html.SafeHtml.create('p', {}, goog.html.SafeHtml.create('br'));
- *
- * goog.html.SafeHtml.create('span', {
- * 'style': {'margin': '0'}
- * });
- *
- * To guarantee SafeHtml's type contract is upheld there are restrictions on
- * attribute values and tag names.
- *
- * - For attributes which contain script code (on*), a goog.string.Const is
- * required.
- * - For attributes which contain style (style), a goog.html.SafeStyle or a
- * goog.html.SafeStyle.PropertyMap is required.
- * - For attributes which are interpreted as URLs (e.g. src, href) a
- * goog.html.SafeUrl, goog.string.Const or string is required. If a string
- * is passed, it will be sanitized with SafeUrl.sanitize().
- * - For tags which can load code or set security relevant page metadata,
- * more specific goog.html.SafeHtml.create*() functions must be used. Tags
- * which are not supported by this function are applet, base, embed, iframe,
- * link, math, object, script, style, svg, and template.
- *
- * @param {string} tagName The name of the tag. Only tag names consisting of
- * [a-zA-Z0-9-] are allowed. Tag names documented above are disallowed.
- * @param {!Object<string, ?goog.html.SafeHtml.AttributeValue>=} opt_attributes
- * Mapping from attribute names to their values. Only attribute names
- * consisting of [a-zA-Z0-9-] are allowed. Value of null or undefined causes
- * the attribute to be omitted.
- * @param {!goog.html.SafeHtml.TextOrHtml_|
- * !Array<!goog.html.SafeHtml.TextOrHtml_>=} opt_content Content to
- * HTML-escape and put inside the tag. This must be empty for void tags
- * like <br>. Array elements are concatenated.
- * @return {!goog.html.SafeHtml} The SafeHtml content with the tag.
- * @throws {Error} If invalid tag name, attribute name, or attribute value is
- * provided.
- * @throws {goog.asserts.AssertionError} If content for void tag is provided.
- */
-goog.html.SafeHtml.create = function(tagName, opt_attributes, opt_content) {
- goog.html.SafeHtml.verifyTagName(tagName);
- return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(
- tagName, opt_attributes, opt_content);
-};
-
-
-/**
- * Verifies if the tag name is valid and if it doesn't change the context.
- * E.g. STRONG is fine but SCRIPT throws because it changes context. See
- * goog.html.SafeHtml.create for an explanation of allowed tags.
- * @param {string} tagName
- * @throws {Error} If invalid tag name is provided.
- * @package
- */
-goog.html.SafeHtml.verifyTagName = function(tagName) {
- if (!goog.html.SafeHtml.VALID_NAMES_IN_TAG_.test(tagName)) {
- throw Error('Invalid tag name <' + tagName + '>.');
- }
- if (tagName.toUpperCase() in goog.html.SafeHtml.NOT_ALLOWED_TAG_NAMES_) {
- throw Error('Tag name <' + tagName + '> is not allowed for SafeHtml.');
- }
-};
-
-
-/**
- * Creates a SafeHtml representing an iframe tag.
- *
- * This by default restricts the iframe as much as possible by setting the
- * sandbox attribute to the empty string. If the iframe requires less
- * restrictions, set the sandbox attribute as tight as possible, but do not rely
- * on the sandbox as a security feature because it is not supported by older
- * browsers. If a sandbox is essential to security (e.g. for third-party
- * frames), use createSandboxIframe which checks for browser support.
- *
- * @see https://developer.mozilla.org/en/docs/Web/HTML/Element/iframe#attr-sandbox
- *
- * @param {goog.html.TrustedResourceUrl=} opt_src The value of the src
- * attribute. If null or undefined src will not be set.
- * @param {goog.html.SafeHtml=} opt_srcdoc The value of the srcdoc attribute.
- * If null or undefined srcdoc will not be set.
- * @param {!Object<string, ?goog.html.SafeHtml.AttributeValue>=} opt_attributes
- * Mapping from attribute names to their values. Only attribute names
- * consisting of [a-zA-Z0-9-] are allowed. Value of null or undefined causes
- * the attribute to be omitted.
- * @param {!goog.html.SafeHtml.TextOrHtml_|
- * !Array<!goog.html.SafeHtml.TextOrHtml_>=} opt_content Content to
- * HTML-escape and put inside the tag. Array elements are concatenated.
- * @return {!goog.html.SafeHtml} The SafeHtml content with the tag.
- * @throws {Error} If invalid tag name, attribute name, or attribute value is
- * provided. If opt_attributes contains the src or srcdoc attributes.
- */
-goog.html.SafeHtml.createIframe = function(
- opt_src, opt_srcdoc, opt_attributes, opt_content) {
- if (opt_src) {
- // Check whether this is really TrustedResourceUrl.
- goog.html.TrustedResourceUrl.unwrap(opt_src);
- }
-
- var fixedAttributes = {};
- fixedAttributes['src'] = opt_src || null;
- fixedAttributes['srcdoc'] =
- opt_srcdoc && goog.html.SafeHtml.unwrap(opt_srcdoc);
- var defaultAttributes = {'sandbox': ''};
- var attributes = goog.html.SafeHtml.combineAttributes(
- fixedAttributes, defaultAttributes, opt_attributes);
- return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(
- 'iframe', attributes, opt_content);
-};
-
-
-/**
- * Creates a SafeHtml representing a sandboxed iframe tag.
- *
- * The sandbox attribute is enforced in its most restrictive mode, an empty
- * string. Consequently, the security requirements for the src and srcdoc
- * attributes are relaxed compared to SafeHtml.createIframe. This function
- * will throw on browsers that do not support the sandbox attribute, as
- * determined by SafeHtml.canUseSandboxIframe.
- *
- * The SafeHtml returned by this function can trigger downloads with no
- * user interaction on Chrome (though only a few, further attempts are blocked).
- * Firefox and IE will block all downloads from the sandbox.
- *
- * @see https://developer.mozilla.org/en/docs/Web/HTML/Element/iframe#attr-sandbox
- * @see https://lists.w3.org/Archives/Public/public-whatwg-archive/2013Feb/0112.html
- *
- * @param {string|!goog.html.SafeUrl=} opt_src The value of the src
- * attribute. If null or undefined src will not be set.
- * @param {string=} opt_srcdoc The value of the srcdoc attribute.
- * If null or undefined srcdoc will not be set. Will not be sanitized.
- * @param {!Object<string, ?goog.html.SafeHtml.AttributeValue>=} opt_attributes
- * Mapping from attribute names to their values. Only attribute names
- * consisting of [a-zA-Z0-9-] are allowed. Value of null or undefined causes
- * the attribute to be omitted.
- * @param {!goog.html.SafeHtml.TextOrHtml_|
- * !Array<!goog.html.SafeHtml.TextOrHtml_>=} opt_content Content to
- * HTML-escape and put inside the tag. Array elements are concatenated.
- * @return {!goog.html.SafeHtml} The SafeHtml content with the tag.
- * @throws {Error} If invalid tag name, attribute name, or attribute value is
- * provided. If opt_attributes contains the src, srcdoc or sandbox
- * attributes. If browser does not support the sandbox attribute on iframe.
- */
-goog.html.SafeHtml.createSandboxIframe = function(
- opt_src, opt_srcdoc, opt_attributes, opt_content) {
- if (!goog.html.SafeHtml.canUseSandboxIframe()) {
- throw new Error('The browser does not support sandboxed iframes.');
- }
-
- var fixedAttributes = {};
- if (opt_src) {
- // Note that sanitize is a no-op on SafeUrl.
- fixedAttributes['src'] =
- goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitize(opt_src));
- } else {
- fixedAttributes['src'] = null;
+ if (opt_height) {
+ canvas.height = opt_height;
}
- fixedAttributes['srcdoc'] = opt_srcdoc || null;
- fixedAttributes['sandbox'] = '';
- var attributes =
- goog.html.SafeHtml.combineAttributes(fixedAttributes, {}, opt_attributes);
- return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(
- 'iframe', attributes, opt_content);
+ return canvas.getContext('2d');
};
/**
- * Checks if the user agent supports sandboxed iframes.
+ * Detect 2d transform.
+ * Adapted from http://stackoverflow.com/q/5661671/130442
+ * http://caniuse.com/#feat=transforms2d
* @return {boolean}
*/
-goog.html.SafeHtml.canUseSandboxIframe = function() {
- return goog.global['HTMLIFrameElement'] &&
- ('sandbox' in goog.global['HTMLIFrameElement'].prototype);
-};
-
-
-/**
- * Creates a SafeHtml representing a script tag with the src attribute.
- * @param {!goog.html.TrustedResourceUrl} src The value of the src
- * attribute.
- * @param {!Object<string, ?goog.html.SafeHtml.AttributeValue>=}
- * opt_attributes
- * Mapping from attribute names to their values. Only attribute names
- * consisting of [a-zA-Z0-9-] are allowed. Value of null or undefined
- * causes the attribute to be omitted.
- * @return {!goog.html.SafeHtml} The SafeHtml content with the tag.
- * @throws {Error} If invalid attribute name or value is provided. If
- * opt_attributes contains the src attribute.
- */
-goog.html.SafeHtml.createScriptSrc = function(src, opt_attributes) {
- // Check whether this is really TrustedResourceUrl.
- goog.html.TrustedResourceUrl.unwrap(src);
-
- var fixedAttributes = {'src': src};
- var defaultAttributes = {};
- var attributes = goog.html.SafeHtml.combineAttributes(
- fixedAttributes, defaultAttributes, opt_attributes);
- return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(
- 'script', attributes);
-};
-
-
-/**
- * Creates a SafeHtml representing a style tag. The type attribute is set
- * to "text/css".
- * @param {!goog.html.SafeStyleSheet|!Array<!goog.html.SafeStyleSheet>}
- * styleSheet Content to put inside the tag. Array elements are
- * concatenated.
- * @param {!Object<string, ?goog.html.SafeHtml.AttributeValue>=} opt_attributes
- * Mapping from attribute names to their values. Only attribute names
- * consisting of [a-zA-Z0-9-] are allowed. Value of null or undefined causes
- * the attribute to be omitted.
- * @return {!goog.html.SafeHtml} The SafeHtml content with the tag.
- * @throws {Error} If invalid attribute name or attribute value is provided. If
- * opt_attributes contains the type attribute.
- */
-goog.html.SafeHtml.createStyle = function(styleSheet, opt_attributes) {
- var fixedAttributes = {'type': 'text/css'};
- var defaultAttributes = {};
- var attributes = goog.html.SafeHtml.combineAttributes(
- fixedAttributes, defaultAttributes, opt_attributes);
-
- var content = '';
- styleSheet = goog.array.concat(styleSheet);
- for (var i = 0; i < styleSheet.length; i++) {
- content += goog.html.SafeStyleSheet.unwrap(styleSheet[i]);
- }
- // Convert to SafeHtml so that it's not HTML-escaped. This is safe because
- // as part of its contract, SafeStyleSheet should have no dangerous '<'.
- var htmlContent =
- goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(
- content, goog.i18n.bidi.Dir.NEUTRAL);
- return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(
- 'style', attributes, htmlContent);
-};
-
-
-/**
- * Creates a SafeHtml representing a meta refresh tag.
- * @param {!goog.html.SafeUrl|string} url Where to redirect. If a string is
- * passed, it will be sanitized with SafeUrl.sanitize().
- * @param {number=} opt_secs Number of seconds until the page should be
- * reloaded. Will be set to 0 if unspecified.
- * @return {!goog.html.SafeHtml} The SafeHtml content with the tag.
- */
-goog.html.SafeHtml.createMetaRefresh = function(url, opt_secs) {
-
- // Note that sanitize is a no-op on SafeUrl.
- var unwrappedUrl = goog.html.SafeUrl.unwrap(goog.html.SafeUrl.sanitize(url));
-
- if (goog.labs.userAgent.browser.isIE() ||
- goog.labs.userAgent.browser.isEdge()) {
- // IE/EDGE can't parse the content attribute if the url contains a
- // semicolon. We can fix this by adding quotes around the url, but then we
- // can't parse quotes in the URL correctly. Also, it seems that IE/EDGE
- // did not unescape semicolons in these URLs at some point in the past. We
- // take a best-effort approach.
- //
- // If the URL has semicolons (which may happen in some cases, see
- // http://www.w3.org/TR/1999/REC-html401-19991224/appendix/notes.html#h-B.2
- // for instance), wrap it in single quotes to protect the semicolons.
- // If the URL has semicolons and single quotes, url-encode the single quotes
- // as well.
- //
- // This is imperfect. Notice that both ' and ; are reserved characters in
- // URIs, so this could do the wrong thing, but at least it will do the wrong
- // thing in only rare cases.
- if (goog.string.contains(unwrappedUrl, ';')) {
- unwrappedUrl = "'" + unwrappedUrl.replace(/'/g, '%27') + "'";
- }
- }
- var attributes = {
- 'http-equiv': 'refresh',
- 'content': (opt_secs || 0) + '; url=' + unwrappedUrl
- };
-
- // This function will handle the HTML escaping for attributes.
- return goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse(
- 'meta', attributes);
-};
-
-
-/**
- * @param {string} tagName The tag name.
- * @param {string} name The attribute name.
- * @param {!goog.html.SafeHtml.AttributeValue} value The attribute value.
- * @return {string} A "name=value" string.
- * @throws {Error} If attribute value is unsafe for the given tag and attribute.
- * @private
- */
-goog.html.SafeHtml.getAttrNameAndValue_ = function(tagName, name, value) {
- // If it's goog.string.Const, allow any valid attribute name.
- if (value instanceof goog.string.Const) {
- value = goog.string.Const.unwrap(value);
- } else if (name.toLowerCase() == 'style') {
- value = goog.html.SafeHtml.getStyleValue_(value);
- } else if (/^on/i.test(name)) {
- // TODO(jakubvrana): Disallow more attributes with a special meaning.
- throw Error(
- 'Attribute "' + name + '" requires goog.string.Const value, "' + value +
- '" given.');
- // URL attributes handled differently accroding to tag.
- } else if (name.toLowerCase() in goog.html.SafeHtml.URL_ATTRIBUTES_) {
- if (value instanceof goog.html.TrustedResourceUrl) {
- value = goog.html.TrustedResourceUrl.unwrap(value);
- } else if (value instanceof goog.html.SafeUrl) {
- value = goog.html.SafeUrl.unwrap(value);
- } else if (goog.isString(value)) {
- value = goog.html.SafeUrl.sanitize(value).getTypedStringValue();
- } else {
- throw Error(
- 'Attribute "' + name + '" on tag "' + tagName +
- '" requires goog.html.SafeUrl, goog.string.Const, or string,' +
- ' value "' + value + '" given.');
- }
- }
-
- // Accept SafeUrl, TrustedResourceUrl, etc. for attributes which only require
- // HTML-escaping.
- if (value.implementsGoogStringTypedString) {
- // Ok to call getTypedStringValue() since there's no reliance on the type
- // contract for security here.
- value = value.getTypedStringValue();
- }
-
- goog.asserts.assert(
- goog.isString(value) || goog.isNumber(value),
- 'String or number value expected, got ' + (typeof value) +
- ' with value: ' + value);
- return name + '="' + goog.string.htmlEscape(String(value)) + '"';
-};
-
-
-/**
- * Gets value allowed in "style" attribute.
- * @param {!goog.html.SafeHtml.AttributeValue} value It could be SafeStyle or a
- * map which will be passed to goog.html.SafeStyle.create.
- * @return {string} Unwrapped value.
- * @throws {Error} If string value is given.
- * @private
- */
-goog.html.SafeHtml.getStyleValue_ = function(value) {
- if (!goog.isObject(value)) {
- throw Error(
- 'The "style" attribute requires goog.html.SafeStyle or map ' +
- 'of style properties, ' + (typeof value) + ' given: ' + value);
- }
- if (!(value instanceof goog.html.SafeStyle)) {
- // Process the property bag into a style object.
- value = goog.html.SafeStyle.create(value);
- }
- return goog.html.SafeStyle.unwrap(value);
-};
-
-
-/**
- * Creates a SafeHtml content with known directionality consisting of a tag with
- * optional attributes and optional content.
- * @param {!goog.i18n.bidi.Dir} dir Directionality.
- * @param {string} tagName
- * @param {!Object<string, ?goog.html.SafeHtml.AttributeValue>=} opt_attributes
- * @param {!goog.html.SafeHtml.TextOrHtml_|
- * !Array<!goog.html.SafeHtml.TextOrHtml_>=} opt_content
- * @return {!goog.html.SafeHtml} The SafeHtml content with the tag.
- */
-goog.html.SafeHtml.createWithDir = function(
- dir, tagName, opt_attributes, opt_content) {
- var html = goog.html.SafeHtml.create(tagName, opt_attributes, opt_content);
- html.dir_ = dir;
- return html;
-};
-
-
-/**
- * Creates a new SafeHtml object by concatenating values.
- * @param {...(!goog.html.SafeHtml.TextOrHtml_|
- * !Array<!goog.html.SafeHtml.TextOrHtml_>)} var_args Values to concatenate.
- * @return {!goog.html.SafeHtml}
- */
-goog.html.SafeHtml.concat = function(var_args) {
- var dir = goog.i18n.bidi.Dir.NEUTRAL;
- var content = '';
-
- /**
- * @param {!goog.html.SafeHtml.TextOrHtml_|
- * !Array<!goog.html.SafeHtml.TextOrHtml_>} argument
- */
- var addArgument = function(argument) {
- if (goog.isArray(argument)) {
- goog.array.forEach(argument, addArgument);
- } else {
- var html = goog.html.SafeHtml.htmlEscape(argument);
- content += goog.html.SafeHtml.unwrap(html);
- var htmlDir = html.getDirection();
- if (dir == goog.i18n.bidi.Dir.NEUTRAL) {
- dir = htmlDir;
- } else if (htmlDir != goog.i18n.bidi.Dir.NEUTRAL && dir != htmlDir) {
- dir = null;
- }
- }
- };
-
- goog.array.forEach(arguments, addArgument);
- return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(
- content, dir);
-};
-
-
-/**
- * Creates a new SafeHtml object with known directionality by concatenating the
- * values.
- * @param {!goog.i18n.bidi.Dir} dir Directionality.
- * @param {...(!goog.html.SafeHtml.TextOrHtml_|
- * !Array<!goog.html.SafeHtml.TextOrHtml_>)} var_args Elements of array
- * arguments would be processed recursively.
- * @return {!goog.html.SafeHtml}
- */
-goog.html.SafeHtml.concatWithDir = function(dir, var_args) {
- var html = goog.html.SafeHtml.concat(goog.array.slice(arguments, 1));
- html.dir_ = dir;
- return html;
-};
-
-
-/**
- * Type marker for the SafeHtml type, used to implement additional run-time
- * type checking.
- * @const {!Object}
- * @private
- */
-goog.html.SafeHtml.TYPE_MARKER_GOOG_HTML_SECURITY_PRIVATE_ = {};
-
-
-/**
- * Package-internal utility method to create SafeHtml instances.
- *
- * @param {string} html The string to initialize the SafeHtml object with.
- * @param {?goog.i18n.bidi.Dir} dir The directionality of the SafeHtml to be
- * constructed, or null if unknown.
- * @return {!goog.html.SafeHtml} The initialized SafeHtml object.
- * @package
- */
-goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse = function(
- html, dir) {
- return new goog.html.SafeHtml().initSecurityPrivateDoNotAccessOrElse_(
- html, dir);
-};
-
-
-/**
- * Called from createSafeHtmlSecurityPrivateDoNotAccessOrElse(). This
- * method exists only so that the compiler can dead code eliminate static
- * fields (like EMPTY) when they're not accessed.
- * @param {string} html
- * @param {?goog.i18n.bidi.Dir} dir
- * @return {!goog.html.SafeHtml}
- * @private
- */
-goog.html.SafeHtml.prototype.initSecurityPrivateDoNotAccessOrElse_ = function(
- html, dir) {
- this.privateDoNotAccessOrElseSafeHtmlWrappedValue_ = html;
- this.dir_ = dir;
- return this;
-};
-
-
-/**
- * Like create() but does not restrict which tags can be constructed.
- *
- * @param {string} tagName Tag name. Set or validated by caller.
- * @param {!Object<string, ?goog.html.SafeHtml.AttributeValue>=} opt_attributes
- * @param {(!goog.html.SafeHtml.TextOrHtml_|
- * !Array<!goog.html.SafeHtml.TextOrHtml_>)=} opt_content
- * @return {!goog.html.SafeHtml}
- * @throws {Error} If invalid or unsafe attribute name or value is provided.
- * @throws {goog.asserts.AssertionError} If content for void tag is provided.
- * @package
- */
-goog.html.SafeHtml.createSafeHtmlTagSecurityPrivateDoNotAccessOrElse = function(
- tagName, opt_attributes, opt_content) {
- var dir = null;
- var result = '<' + tagName;
- result += goog.html.SafeHtml.stringifyAttributes(tagName, opt_attributes);
-
- var content = opt_content;
- if (!goog.isDefAndNotNull(content)) {
- content = [];
- } else if (!goog.isArray(content)) {
- content = [content];
- }
-
- if (goog.dom.tags.isVoidTag(tagName.toLowerCase())) {
- goog.asserts.assert(
- !content.length, 'Void tag <' + tagName + '> does not allow content.');
- result += '>';
- } else {
- var html = goog.html.SafeHtml.concat(content);
- result += '>' + goog.html.SafeHtml.unwrap(html) + '</' + tagName + '>';
- dir = html.getDirection();
- }
-
- var dirAttribute = opt_attributes && opt_attributes['dir'];
- if (dirAttribute) {
- if (/^(ltr|rtl|auto)$/i.test(dirAttribute)) {
- // If the tag has the "dir" attribute specified then its direction is
- // neutral because it can be safely used in any context.
- dir = goog.i18n.bidi.Dir.NEUTRAL;
- } else {
- dir = null;
- }
- }
-
- return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(
- result, dir);
-};
-
+ol.dom.canUseCssTransform = (function() {
+ var canUseCssTransform;
+ return function() {
+ if (canUseCssTransform === undefined) {
+ goog.asserts.assert(document.body,
+ 'document.body should not be null');
+ goog.asserts.assert(ol.global.getComputedStyle,
+ 'getComputedStyle is required (unsupported browser?)');
-/**
- * Creates a string with attributes to insert after tagName.
- * @param {string} tagName
- * @param {!Object<string, ?goog.html.SafeHtml.AttributeValue>=} opt_attributes
- * @return {string} Returns an empty string if there are no attributes, returns
- * a string starting with a space otherwise.
- * @throws {Error} If attribute value is unsafe for the given tag and attribute.
- * @package
- */
-goog.html.SafeHtml.stringifyAttributes = function(tagName, opt_attributes) {
- var result = '';
- if (opt_attributes) {
- for (var name in opt_attributes) {
- if (!goog.html.SafeHtml.VALID_NAMES_IN_TAG_.test(name)) {
- throw Error('Invalid attribute name "' + name + '".');
- }
- var value = opt_attributes[name];
- if (!goog.isDefAndNotNull(value)) {
- continue;
+ var el = document.createElement('P'),
+ has2d,
+ transforms = {
+ 'webkitTransform': '-webkit-transform',
+ 'OTransform': '-o-transform',
+ 'msTransform': '-ms-transform',
+ 'MozTransform': '-moz-transform',
+ 'transform': 'transform'
+ };
+ document.body.appendChild(el);
+ for (var t in transforms) {
+ if (t in el.style) {
+ el.style[t] = 'translate(1px,1px)';
+ has2d = ol.global.getComputedStyle(el).getPropertyValue(
+ transforms[t]);
+ }
}
- result +=
- ' ' + goog.html.SafeHtml.getAttrNameAndValue_(tagName, name, value);
- }
- }
- return result;
-}
-
-
-/**
- * @param {!Object<string, string>} fixedAttributes
- * @param {!Object<string, string>} defaultAttributes
- * @param {!Object<string, ?goog.html.SafeHtml.AttributeValue>=} opt_attributes
- * Optional attributes passed to create*().
- * @return {!Object<string, ?goog.html.SafeHtml.AttributeValue>}
- * @throws {Error} If opt_attributes contains an attribute with the same name
- * as an attribute in fixedAttributes.
- * @package
- */
-goog.html.SafeHtml.combineAttributes = function(
- fixedAttributes, defaultAttributes, opt_attributes) {
- var combinedAttributes = {};
- var name;
-
- for (name in fixedAttributes) {
- goog.asserts.assert(name.toLowerCase() == name, 'Must be lower case');
- combinedAttributes[name] = fixedAttributes[name];
- }
- for (name in defaultAttributes) {
- goog.asserts.assert(name.toLowerCase() == name, 'Must be lower case');
- combinedAttributes[name] = defaultAttributes[name];
- }
+ document.body.removeChild(el);
- for (name in opt_attributes) {
- var nameLower = name.toLowerCase();
- if (nameLower in fixedAttributes) {
- throw Error(
- 'Cannot override "' + nameLower + '" attribute, got "' + name +
- '" with value "' + opt_attributes[name] + '"');
- }
- if (nameLower in defaultAttributes) {
- delete combinedAttributes[nameLower];
+ canUseCssTransform = (has2d && has2d !== 'none');
}
- combinedAttributes[name] = opt_attributes[name];
- }
-
- return combinedAttributes;
-};
-
-
-/**
- * A SafeHtml instance corresponding to the HTML doctype: "<!DOCTYPE html>".
- * @const {!goog.html.SafeHtml}
- */
-goog.html.SafeHtml.DOCTYPE_HTML =
- goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(
- '<!DOCTYPE html>', goog.i18n.bidi.Dir.NEUTRAL);
-
-
-/**
- * A SafeHtml instance corresponding to the empty string.
- * @const {!goog.html.SafeHtml}
- */
-goog.html.SafeHtml.EMPTY =
- goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(
- '', goog.i18n.bidi.Dir.NEUTRAL);
-
-
-/**
- * A SafeHtml instance corresponding to the <br> tag.
- * @const {!goog.html.SafeHtml}
- */
-goog.html.SafeHtml.BR =
- goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(
- '<br>', goog.i18n.bidi.Dir.NEUTRAL);
-
-// Copyright 2013 The Closure Library Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS-IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-/**
- * @fileoverview Type-safe wrappers for unsafe DOM APIs.
- *
- * This file provides type-safe wrappers for DOM APIs that can result in
- * cross-site scripting (XSS) vulnerabilities, if the API is supplied with
- * untrusted (attacker-controlled) input. Instead of plain strings, the type
- * safe wrappers consume values of types from the goog.html package whose
- * contract promises that values are safe to use in the corresponding context.
- *
- * Hence, a program that exclusively uses the wrappers in this file (i.e., whose
- * only reference to security-sensitive raw DOM APIs are in this file) is
- * guaranteed to be free of XSS due to incorrect use of such DOM APIs (modulo
- * correctness of code that produces values of the respective goog.html types,
- * and absent code that violates type safety).
- *
- * For example, assigning to an element's .innerHTML property a string that is
- * derived (even partially) from untrusted input typically results in an XSS
- * vulnerability. The type-safe wrapper goog.html.setInnerHtml consumes a value
- * of type goog.html.SafeHtml, whose contract states that using its values in a
- * HTML context will not result in XSS. Hence a program that is free of direct
- * assignments to any element's innerHTML property (with the exception of the
- * assignment to .innerHTML in this file) is guaranteed to be free of XSS due to
- * assignment of untrusted strings to the innerHTML property.
- */
-
-goog.provide('goog.dom.safe');
-goog.provide('goog.dom.safe.InsertAdjacentHtmlPosition');
-
-goog.require('goog.asserts');
-goog.require('goog.html.SafeHtml');
-goog.require('goog.html.SafeUrl');
-goog.require('goog.html.TrustedResourceUrl');
-goog.require('goog.string');
-goog.require('goog.string.Const');
-
-
-/** @enum {string} */
-goog.dom.safe.InsertAdjacentHtmlPosition = {
- AFTERBEGIN: 'afterbegin',
- AFTEREND: 'afterend',
- BEFOREBEGIN: 'beforebegin',
- BEFOREEND: 'beforeend'
-};
-
-
-/**
- * Inserts known-safe HTML into a Node, at the specified position.
- * @param {!Node} node The node on which to call insertAdjacentHTML.
- * @param {!goog.dom.safe.InsertAdjacentHtmlPosition} position Position where
- * to insert the HTML.
- * @param {!goog.html.SafeHtml} html The known-safe HTML to insert.
- */
-goog.dom.safe.insertAdjacentHtml = function(node, position, html) {
- node.insertAdjacentHTML(position, goog.html.SafeHtml.unwrap(html));
-};
-
-
-/**
- * Assigns known-safe HTML to an element's innerHTML property.
- * @param {!Element} elem The element whose innerHTML is to be assigned to.
- * @param {!goog.html.SafeHtml} html The known-safe HTML to assign.
- */
-goog.dom.safe.setInnerHtml = function(elem, html) {
- elem.innerHTML = goog.html.SafeHtml.unwrap(html);
-};
-
-
-/**
- * Assigns known-safe HTML to an element's outerHTML property.
- * @param {!Element} elem The element whose outerHTML is to be assigned to.
- * @param {!goog.html.SafeHtml} html The known-safe HTML to assign.
- */
-goog.dom.safe.setOuterHtml = function(elem, html) {
- elem.outerHTML = goog.html.SafeHtml.unwrap(html);
-};
-
-
-/**
- * Writes known-safe HTML to a document.
- * @param {!Document} doc The document to be written to.
- * @param {!goog.html.SafeHtml} html The known-safe HTML to assign.
- */
-goog.dom.safe.documentWrite = function(doc, html) {
- doc.write(goog.html.SafeHtml.unwrap(html));
-};
-
-
-/**
- * Safely assigns a URL to an anchor element's href property.
- *
- * If url is of type goog.html.SafeUrl, its value is unwrapped and assigned to
- * anchor's href property. If url is of type string however, it is first
- * sanitized using goog.html.SafeUrl.sanitize.
- *
- * Example usage:
- * goog.dom.safe.setAnchorHref(anchorEl, url);
- * which is a safe alternative to
- * anchorEl.href = url;
- * The latter can result in XSS vulnerabilities if url is a
- * user-/attacker-controlled value.
- *
- * @param {!HTMLAnchorElement} anchor The anchor element whose href property
- * is to be assigned to.
- * @param {string|!goog.html.SafeUrl} url The URL to assign.
- * @see goog.html.SafeUrl#sanitize
- */
-goog.dom.safe.setAnchorHref = function(anchor, url) {
- /** @type {!goog.html.SafeUrl} */
- var safeUrl;
- if (url instanceof goog.html.SafeUrl) {
- safeUrl = url;
- } else {
- safeUrl = goog.html.SafeUrl.sanitize(url);
- }
- anchor.href = goog.html.SafeUrl.unwrap(safeUrl);
-};
-
-
-/**
- * Safely assigns a URL to an image element's src property.
- *
- * If url is of type goog.html.SafeUrl, its value is unwrapped and assigned to
- * image's src property. If url is of type string however, it is first
- * sanitized using goog.html.SafeUrl.sanitize.
- *
- * @param {!HTMLImageElement} imageElement The image element whose src property
- * is to be assigned to.
- * @param {string|!goog.html.SafeUrl} url The URL to assign.
- * @see goog.html.SafeUrl#sanitize
- */
-goog.dom.safe.setImageSrc = function(imageElement, url) {
- /** @type {!goog.html.SafeUrl} */
- var safeUrl;
- if (url instanceof goog.html.SafeUrl) {
- safeUrl = url;
- } else {
- safeUrl = goog.html.SafeUrl.sanitize(url);
- }
- imageElement.src = goog.html.SafeUrl.unwrap(safeUrl);
-};
-
-
-/**
- * Safely assigns a URL to an embed element's src property.
- *
- * Example usage:
- * goog.dom.safe.setEmbedSrc(embedEl, url);
- * which is a safe alternative to
- * embedEl.src = url;
- * The latter can result in loading untrusted code unless it is ensured that
- * the URL refers to a trustworthy resource.
- *
- * @param {!HTMLEmbedElement} embed The embed element whose src property
- * is to be assigned to.
- * @param {!goog.html.TrustedResourceUrl} url The URL to assign.
- */
-goog.dom.safe.setEmbedSrc = function(embed, url) {
- embed.src = goog.html.TrustedResourceUrl.unwrap(url);
-};
-
-
-/**
- * Safely assigns a URL to a frame element's src property.
- *
- * Example usage:
- * goog.dom.safe.setFrameSrc(frameEl, url);
- * which is a safe alternative to
- * frameEl.src = url;
- * The latter can result in loading untrusted code unless it is ensured that
- * the URL refers to a trustworthy resource.
- *
- * @param {!HTMLFrameElement} frame The frame element whose src property
- * is to be assigned to.
- * @param {!goog.html.TrustedResourceUrl} url The URL to assign.
- */
-goog.dom.safe.setFrameSrc = function(frame, url) {
- frame.src = goog.html.TrustedResourceUrl.unwrap(url);
-};
-
-
-/**
- * Safely assigns a URL to an iframe element's src property.
- *
- * Example usage:
- * goog.dom.safe.setIframeSrc(iframeEl, url);
- * which is a safe alternative to
- * iframeEl.src = url;
- * The latter can result in loading untrusted code unless it is ensured that
- * the URL refers to a trustworthy resource.
- *
- * @param {!HTMLIFrameElement} iframe The iframe element whose src property
- * is to be assigned to.
- * @param {!goog.html.TrustedResourceUrl} url The URL to assign.
- */
-goog.dom.safe.setIframeSrc = function(iframe, url) {
- iframe.src = goog.html.TrustedResourceUrl.unwrap(url);
-};
-
-
-/**
- * Safely sets a link element's href and rel properties. Whether or not
- * the URL assigned to href has to be a goog.html.TrustedResourceUrl
- * depends on the value of the rel property. If rel contains "stylesheet"
- * then a TrustedResourceUrl is required.
- *
- * Example usage:
- * goog.dom.safe.setLinkHrefAndRel(linkEl, url, 'stylesheet');
- * which is a safe alternative to
- * linkEl.rel = 'stylesheet';
- * linkEl.href = url;
- * The latter can result in loading untrusted code unless it is ensured that
- * the URL refers to a trustworthy resource.
- *
- * @param {!HTMLLinkElement} link The link element whose href property
- * is to be assigned to.
- * @param {string|!goog.html.SafeUrl|!goog.html.TrustedResourceUrl} url The URL
- * to assign to the href property. Must be a TrustedResourceUrl if the
- * value assigned to rel contains "stylesheet". A string value is
- * sanitized with goog.html.SafeUrl.sanitize.
- * @param {string} rel The value to assign to the rel property.
- * @throws {Error} if rel contains "stylesheet" and url is not a
- * TrustedResourceUrl
- * @see goog.html.SafeUrl#sanitize
- */
-goog.dom.safe.setLinkHrefAndRel = function(link, url, rel) {
- link.rel = rel;
- if (goog.string.caseInsensitiveContains(rel, 'stylesheet')) {
- goog.asserts.assert(
- url instanceof goog.html.TrustedResourceUrl,
- 'URL must be TrustedResourceUrl because "rel" contains "stylesheet"');
- link.href = goog.html.TrustedResourceUrl.unwrap(url);
- } else if (url instanceof goog.html.TrustedResourceUrl) {
- link.href = goog.html.TrustedResourceUrl.unwrap(url);
- } else if (url instanceof goog.html.SafeUrl) {
- link.href = goog.html.SafeUrl.unwrap(url);
- } else { // string
- // SafeUrl.sanitize must return legitimate SafeUrl when passed a string.
- link.href = goog.html.SafeUrl.sanitize(url).getTypedStringValue();
- }
-};
-
-
-/**
- * Safely assigns a URL to an object element's data property.
- *
- * Example usage:
- * goog.dom.safe.setObjectData(objectEl, url);
- * which is a safe alternative to
- * objectEl.data = url;
- * The latter can result in loading untrusted code unless setit is ensured that
- * the URL refers to a trustworthy resource.
- *
- * @param {!HTMLObjectElement} object The object element whose data property
- * is to be assigned to.
- * @param {!goog.html.TrustedResourceUrl} url The URL to assign.
- */
-goog.dom.safe.setObjectData = function(object, url) {
- object.data = goog.html.TrustedResourceUrl.unwrap(url);
-};
-
-
-/**
- * Safely assigns a URL to an iframe element's src property.
- *
- * Example usage:
- * goog.dom.safe.setScriptSrc(scriptEl, url);
- * which is a safe alternative to
- * scriptEl.src = url;
- * The latter can result in loading untrusted code unless it is ensured that
- * the URL refers to a trustworthy resource.
- *
- * @param {!HTMLScriptElement} script The script element whose src property
- * is to be assigned to.
- * @param {!goog.html.TrustedResourceUrl} url The URL to assign.
- */
-goog.dom.safe.setScriptSrc = function(script, url) {
- script.src = goog.html.TrustedResourceUrl.unwrap(url);
-};
-
-
-/**
- * Safely assigns a URL to a Location object's href property.
- *
- * If url is of type goog.html.SafeUrl, its value is unwrapped and assigned to
- * loc's href property. If url is of type string however, it is first sanitized
- * using goog.html.SafeUrl.sanitize.
- *
- * Example usage:
- * goog.dom.safe.setLocationHref(document.location, redirectUrl);
- * which is a safe alternative to
- * document.location.href = redirectUrl;
- * The latter can result in XSS vulnerabilities if redirectUrl is a
- * user-/attacker-controlled value.
- *
- * @param {!Location} loc The Location object whose href property is to be
- * assigned to.
- * @param {string|!goog.html.SafeUrl} url The URL to assign.
- * @see goog.html.SafeUrl#sanitize
- */
-goog.dom.safe.setLocationHref = function(loc, url) {
- /** @type {!goog.html.SafeUrl} */
- var safeUrl;
- if (url instanceof goog.html.SafeUrl) {
- safeUrl = url;
- } else {
- safeUrl = goog.html.SafeUrl.sanitize(url);
- }
- loc.href = goog.html.SafeUrl.unwrap(safeUrl);
-};
-
-
-/**
- * Safely opens a URL in a new window (via window.open).
- *
- * If url is of type goog.html.SafeUrl, its value is unwrapped and passed in to
- * window.open. If url is of type string however, it is first sanitized
- * using goog.html.SafeUrl.sanitize.
- *
- * Note that this function does not prevent leakages via the referer that is
- * sent by window.open. It is advised to only use this to open 1st party URLs.
- *
- * Example usage:
- * goog.dom.safe.openInWindow(url);
- * which is a safe alternative to
- * window.open(url);
- * The latter can result in XSS vulnerabilities if redirectUrl is a
- * user-/attacker-controlled value.
- *
- * @param {string|!goog.html.SafeUrl} url The URL to open.
- * @param {Window=} opt_openerWin Window of which to call the .open() method.
- * Defaults to the global window.
- * @param {!goog.string.Const=} opt_name Name of the window to open in. Can be
- * _top, etc as allowed by window.open().
- * @param {string=} opt_specs Comma-separated list of specifications, same as
- * in window.open().
- * @param {boolean=} opt_replace Whether to replace the current entry in browser
- * history, same as in window.open().
- * @return {Window} Window the url was opened in.
- */
-goog.dom.safe.openInWindow = function(
- url, opt_openerWin, opt_name, opt_specs, opt_replace) {
- /** @type {!goog.html.SafeUrl} */
- var safeUrl;
- if (url instanceof goog.html.SafeUrl) {
- safeUrl = url;
- } else {
- safeUrl = goog.html.SafeUrl.sanitize(url);
- }
- var win = opt_openerWin || window;
- return win.open(
- goog.html.SafeUrl.unwrap(safeUrl),
- // If opt_name is undefined, simply passing that in to open() causes IE to
- // reuse the current window instead of opening a new one. Thus we pass ''
- // in instead, which according to spec opens a new window. See
- // https://html.spec.whatwg.org/multipage/browsers.html#dom-open .
- opt_name ? goog.string.Const.unwrap(opt_name) : '', opt_specs,
- opt_replace);
-};
-
-// Copyright 2013 The Closure Library Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS-IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-/**
- * @fileoverview Transitional utilities to unsafely trust random strings as
- * goog.html types. Intended for temporary use when upgrading a library that
- * used to accept plain strings to use safe types, but where it's not
- * practical to transitively update callers.
- *
- * IMPORTANT: No new code should use the conversion functions in this file,
- * they are intended for refactoring old code to use goog.html types. New code
- * should construct goog.html types via their APIs, template systems or
- * sanitizers. If that’s not possible it should use
- * goog.html.uncheckedconversions and undergo security review.
-
- *
- * The semantics of the conversions in goog.html.legacyconversions are very
- * different from the ones provided by goog.html.uncheckedconversions. The
- * latter are for use in code where it has been established through manual
- * security review that the value produced by a piece of code will always
- * satisfy the SafeHtml contract (e.g., the output of a secure HTML sanitizer).
- * In uses of goog.html.legacyconversions, this guarantee is not given -- the
- * value in question originates in unreviewed legacy code and there is no
- * guarantee that it satisfies the SafeHtml contract.
- *
- * There are only three valid uses of legacyconversions:
- *
- * 1. Introducing a goog.html version of a function which currently consumes
- * string and passes that string to a DOM API which can execute script - and
- * hence cause XSS - like innerHTML. For example, Dialog might expose a
- * setContent method which takes a string and sets the innerHTML property of
- * an element with it. In this case a setSafeHtmlContent function could be
- * added, consuming goog.html.SafeHtml instead of string, and using
- * goog.dom.safe.setInnerHtml instead of directly setting innerHTML.
- * setContent could then internally use legacyconversions to create a SafeHtml
- * from string and pass the SafeHtml to setSafeHtmlContent. In this scenario
- * remember to document the use of legacyconversions in the modified setContent
- * and consider deprecating it as well.
- *
- * 2. Automated refactoring of application code which handles HTML as string
- * but needs to call a function which only takes goog.html types. For example,
- * in the Dialog scenario from (1) an alternative option would be to refactor
- * setContent to accept goog.html.SafeHtml instead of string and then refactor
- * all current callers to use legacyconversions to pass SafeHtml. This is
- * generally preferable to (1) because it keeps the library clean of
- * legacyconversions, and makes code sites in application code that are
- * potentially vulnerable to XSS more apparent.
- *
- * 3. Old code which needs to call APIs which consume goog.html types and for
- * which it is prohibitively expensive to refactor to use goog.html types.
- * Generally, this is code where safety from XSS is either hopeless or
- * unimportant.
- *
- * @visibility {//closure/goog/html:approved_for_legacy_conversion}
- * @visibility {//closure/goog/bin/sizetests:__pkg__}
- */
-
-
-goog.provide('goog.html.legacyconversions');
-
-goog.require('goog.html.SafeHtml');
-goog.require('goog.html.SafeStyle');
-goog.require('goog.html.SafeStyleSheet');
-goog.require('goog.html.SafeUrl');
-goog.require('goog.html.TrustedResourceUrl');
-
-
-/**
- * Performs an "unchecked conversion" from string to SafeHtml for legacy API
- * purposes.
- *
- * Please read fileoverview documentation before using.
- *
- * @param {string} html A string to be converted to SafeHtml.
- * @return {!goog.html.SafeHtml} The value of html, wrapped in a SafeHtml
- * object.
- */
-goog.html.legacyconversions.safeHtmlFromString = function(html) {
- goog.html.legacyconversions.reportCallback_();
- return goog.html.SafeHtml.createSafeHtmlSecurityPrivateDoNotAccessOrElse(
- html, null /* dir */);
-};
-
-
-/**
- * Performs an "unchecked conversion" from string to SafeStyle for legacy API
- * purposes.
- *
- * Please read fileoverview documentation before using.
- *
- * @param {string} style A string to be converted to SafeStyle.
- * @return {!goog.html.SafeStyle} The value of style, wrapped in a SafeStyle
- * object.
- */
-goog.html.legacyconversions.safeStyleFromString = function(style) {
- goog.html.legacyconversions.reportCallback_();
- return goog.html.SafeStyle.createSafeStyleSecurityPrivateDoNotAccessOrElse(
- style);
-};
-
-
-/**
- * Performs an "unchecked conversion" from string to SafeStyleSheet for legacy
- * API purposes.
- *
- * Please read fileoverview documentation before using.
- *
- * @param {string} styleSheet A string to be converted to SafeStyleSheet.
- * @return {!goog.html.SafeStyleSheet} The value of style sheet, wrapped in
- * a SafeStyleSheet object.
- */
-goog.html.legacyconversions.safeStyleSheetFromString = function(styleSheet) {
- goog.html.legacyconversions.reportCallback_();
- return goog.html.SafeStyleSheet
- .createSafeStyleSheetSecurityPrivateDoNotAccessOrElse(styleSheet);
-};
-
-
-/**
- * Performs an "unchecked conversion" from string to SafeUrl for legacy API
- * purposes.
- *
- * Please read fileoverview documentation before using.
- *
- * @param {string} url A string to be converted to SafeUrl.
- * @return {!goog.html.SafeUrl} The value of url, wrapped in a SafeUrl
- * object.
- */
-goog.html.legacyconversions.safeUrlFromString = function(url) {
- goog.html.legacyconversions.reportCallback_();
- return goog.html.SafeUrl.createSafeUrlSecurityPrivateDoNotAccessOrElse(url);
-};
-
-
-/**
- * Performs an "unchecked conversion" from string to TrustedResourceUrl for
- * legacy API purposes.
- *
- * Please read fileoverview documentation before using.
- *
- * @param {string} url A string to be converted to TrustedResourceUrl.
- * @return {!goog.html.TrustedResourceUrl} The value of url, wrapped in a
- * TrustedResourceUrl object.
- */
-goog.html.legacyconversions.trustedResourceUrlFromString = function(url) {
- goog.html.legacyconversions.reportCallback_();
- return goog.html.TrustedResourceUrl
- .createTrustedResourceUrlSecurityPrivateDoNotAccessOrElse(url);
-};
-
-/**
- * @private {function(): undefined}
- */
-goog.html.legacyconversions.reportCallback_ = goog.nullFunction;
-
-
-/**
- * Sets a function that will be called every time a legacy conversion is
- * performed. The function is called with no parameters but it can use
- * goog.debug.getStacktrace to get a stacktrace.
- *
- * @param {function(): undefined} callback Error callback as defined above.
- */
-goog.html.legacyconversions.setReportCallback = function(callback) {
- goog.html.legacyconversions.reportCallback_ = callback;
-};
-
-// Copyright 2006 The Closure Library Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS-IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-/**
- * @fileoverview A utility class for representing two-dimensional positions.
- */
-
-
-goog.provide('goog.math.Coordinate');
-
-goog.require('goog.math');
-
-
-
-/**
- * Class for representing coordinates and positions.
- * @param {number=} opt_x Left, defaults to 0.
- * @param {number=} opt_y Top, defaults to 0.
- * @struct
- * @constructor
- */
-goog.math.Coordinate = function(opt_x, opt_y) {
- /**
- * X-value
- * @type {number}
- */
- this.x = goog.isDef(opt_x) ? opt_x : 0;
-
- /**
- * Y-value
- * @type {number}
- */
- this.y = goog.isDef(opt_y) ? opt_y : 0;
-};
-
-
-/**
- * Returns a new copy of the coordinate.
- * @return {!goog.math.Coordinate} A clone of this coordinate.
- */
-goog.math.Coordinate.prototype.clone = function() {
- return new goog.math.Coordinate(this.x, this.y);
-};
-
-
-if (goog.DEBUG) {
- /**
- * Returns a nice string representing the coordinate.
- * @return {string} In the form (50, 73).
- * @override
- */
- goog.math.Coordinate.prototype.toString = function() {
- return '(' + this.x + ', ' + this.y + ')';
+ return canUseCssTransform;
};
-}
-
-
-/**
- * Compares coordinates for equality.
- * @param {goog.math.Coordinate} a A Coordinate.
- * @param {goog.math.Coordinate} b A Coordinate.
- * @return {boolean} True iff the coordinates are equal, or if both are null.
- */
-goog.math.Coordinate.equals = function(a, b) {
- if (a == b) {
- return true;
- }
- if (!a || !b) {
- return false;
- }
- return a.x == b.x && a.y == b.y;
-};
-
-
-/**
- * Returns the distance between two coordinates.
- * @param {!goog.math.Coordinate} a A Coordinate.
- * @param {!goog.math.Coordinate} b A Coordinate.
- * @return {number} The distance between {@code a} and {@code b}.
- */
-goog.math.Coordinate.distance = function(a, b) {
- var dx = a.x - b.x;
- var dy = a.y - b.y;
- return Math.sqrt(dx * dx + dy * dy);
-};
-
-
-/**
- * Returns the magnitude of a coordinate.
- * @param {!goog.math.Coordinate} a A Coordinate.
- * @return {number} The distance between the origin and {@code a}.
- */
-goog.math.Coordinate.magnitude = function(a) {
- return Math.sqrt(a.x * a.x + a.y * a.y);
-};
-
-
-/**
- * Returns the angle from the origin to a coordinate.
- * @param {!goog.math.Coordinate} a A Coordinate.
- * @return {number} The angle, in degrees, clockwise from the positive X
- * axis to {@code a}.
- */
-goog.math.Coordinate.azimuth = function(a) {
- return goog.math.angle(0, 0, a.x, a.y);
-};
-
-
-/**
- * Returns the squared distance between two coordinates. Squared distances can
- * be used for comparisons when the actual value is not required.
- *
- * Performance note: eliminating the square root is an optimization often used
- * in lower-level languages, but the speed difference is not nearly as
- * pronounced in JavaScript (only a few percent.)
- *
- * @param {!goog.math.Coordinate} a A Coordinate.
- * @param {!goog.math.Coordinate} b A Coordinate.
- * @return {number} The squared distance between {@code a} and {@code b}.
- */
-goog.math.Coordinate.squaredDistance = function(a, b) {
- var dx = a.x - b.x;
- var dy = a.y - b.y;
- return dx * dx + dy * dy;
-};
-
-
-/**
- * Returns the difference between two coordinates as a new
- * goog.math.Coordinate.
- * @param {!goog.math.Coordinate} a A Coordinate.
- * @param {!goog.math.Coordinate} b A Coordinate.
- * @return {!goog.math.Coordinate} A Coordinate representing the difference
- * between {@code a} and {@code b}.
- */
-goog.math.Coordinate.difference = function(a, b) {
- return new goog.math.Coordinate(a.x - b.x, a.y - b.y);
-};
-
-
-/**
- * Returns the sum of two coordinates as a new goog.math.Coordinate.
- * @param {!goog.math.Coordinate} a A Coordinate.
- * @param {!goog.math.Coordinate} b A Coordinate.
- * @return {!goog.math.Coordinate} A Coordinate representing the sum of the two
- * coordinates.
- */
-goog.math.Coordinate.sum = function(a, b) {
- return new goog.math.Coordinate(a.x + b.x, a.y + b.y);
-};
-
-
-/**
- * Rounds the x and y fields to the next larger integer values.
- * @return {!goog.math.Coordinate} This coordinate with ceil'd fields.
- */
-goog.math.Coordinate.prototype.ceil = function() {
- this.x = Math.ceil(this.x);
- this.y = Math.ceil(this.y);
- return this;
-};
-
-
-/**
- * Rounds the x and y fields to the next smaller integer values.
- * @return {!goog.math.Coordinate} This coordinate with floored fields.
- */
-goog.math.Coordinate.prototype.floor = function() {
- this.x = Math.floor(this.x);
- this.y = Math.floor(this.y);
- return this;
-};
+}());
/**
- * Rounds the x and y fields to the nearest integer values.
- * @return {!goog.math.Coordinate} This coordinate with rounded fields.
+ * Detect 3d transform.
+ * Adapted from http://stackoverflow.com/q/5661671/130442
+ * http://caniuse.com/#feat=transforms3d
+ * @return {boolean}
*/
-goog.math.Coordinate.prototype.round = function() {
- this.x = Math.round(this.x);
- this.y = Math.round(this.y);
- return this;
-};
+ol.dom.canUseCssTransform3D = (function() {
+ var canUseCssTransform3D;
+ return function() {
+ if (canUseCssTransform3D === undefined) {
+ goog.asserts.assert(document.body,
+ 'document.body should not be null');
+ goog.asserts.assert(ol.global.getComputedStyle,
+ 'getComputedStyle is required (unsupported browser?)');
+ var el = document.createElement('P'),
+ has3d,
+ transforms = {
+ 'webkitTransform': '-webkit-transform',
+ 'OTransform': '-o-transform',
+ 'msTransform': '-ms-transform',
+ 'MozTransform': '-moz-transform',
+ 'transform': 'transform'
+ };
+ document.body.appendChild(el);
+ for (var t in transforms) {
+ if (t in el.style) {
+ el.style[t] = 'translate3d(1px,1px,1px)';
+ has3d = ol.global.getComputedStyle(el).getPropertyValue(
+ transforms[t]);
+ }
+ }
+ document.body.removeChild(el);
-/**
- * Translates this box by the given offsets. If a {@code goog.math.Coordinate}
- * is given, then the x and y values are translated by the coordinate's x and y.
- * Otherwise, x and y are translated by {@code tx} and {@code opt_ty}
- * respectively.
- * @param {number|goog.math.Coordinate} tx The value to translate x by or the
- * the coordinate to translate this coordinate by.
- * @param {number=} opt_ty The value to translate y by.
- * @return {!goog.math.Coordinate} This coordinate after translating.
- */
-goog.math.Coordinate.prototype.translate = function(tx, opt_ty) {
- if (tx instanceof goog.math.Coordinate) {
- this.x += tx.x;
- this.y += tx.y;
- } else {
- this.x += Number(tx);
- if (goog.isNumber(opt_ty)) {
- this.y += opt_ty;
+ canUseCssTransform3D = (has3d && has3d !== 'none');
}
- }
- return this;
-};
-
-
-/**
- * Scales this coordinate by the given scale factors. The x and y values are
- * scaled by {@code sx} and {@code opt_sy} respectively. If {@code opt_sy}
- * is not given, then {@code sx} is used for both x and y.
- * @param {number} sx The scale factor to use for the x dimension.
- * @param {number=} opt_sy The scale factor to use for the y dimension.
- * @return {!goog.math.Coordinate} This coordinate after scaling.
- */
-goog.math.Coordinate.prototype.scale = function(sx, opt_sy) {
- var sy = goog.isNumber(opt_sy) ? opt_sy : sx;
- this.x *= sx;
- this.y *= sy;
- return this;
-};
-
-
-/**
- * Rotates this coordinate clockwise about the origin (or, optionally, the given
- * center) by the given angle, in radians.
- * @param {number} radians The angle by which to rotate this coordinate
- * clockwise about the given center, in radians.
- * @param {!goog.math.Coordinate=} opt_center The center of rotation. Defaults
- * to (0, 0) if not given.
- */
-goog.math.Coordinate.prototype.rotateRadians = function(radians, opt_center) {
- var center = opt_center || new goog.math.Coordinate(0, 0);
-
- var x = this.x;
- var y = this.y;
- var cos = Math.cos(radians);
- var sin = Math.sin(radians);
-
- this.x = (x - center.x) * cos - (y - center.y) * sin + center.x;
- this.y = (x - center.x) * sin + (y - center.y) * cos + center.y;
-};
-
-
-/**
- * Rotates this coordinate clockwise about the origin (or, optionally, the given
- * center) by the given angle, in degrees.
- * @param {number} degrees The angle by which to rotate this coordinate
- * clockwise about the given center, in degrees.
- * @param {!goog.math.Coordinate=} opt_center The center of rotation. Defaults
- * to (0, 0) if not given.
- */
-goog.math.Coordinate.prototype.rotateDegrees = function(degrees, opt_center) {
- this.rotateRadians(goog.math.toRadians(degrees), opt_center);
-};
-
-// Copyright 2007 The Closure Library Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS-IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-/**
- * @fileoverview A utility class for representing two-dimensional sizes.
- * @author brenneman@google.com (Shawn Brenneman)
- */
-
-
-goog.provide('goog.math.Size');
-
-
-
-/**
- * Class for representing sizes consisting of a width and height. Undefined
- * width and height support is deprecated and results in compiler warning.
- * @param {number} width Width.
- * @param {number} height Height.
- * @struct
- * @constructor
- */
-goog.math.Size = function(width, height) {
- /**
- * Width
- * @type {number}
- */
- this.width = width;
-
- /**
- * Height
- * @type {number}
- */
- this.height = height;
-};
-
-
-/**
- * Compares sizes for equality.
- * @param {goog.math.Size} a A Size.
- * @param {goog.math.Size} b A Size.
- * @return {boolean} True iff the sizes have equal widths and equal
- * heights, or if both are null.
- */
-goog.math.Size.equals = function(a, b) {
- if (a == b) {
- return true;
- }
- if (!a || !b) {
- return false;
- }
- return a.width == b.width && a.height == b.height;
-};
-
-
-/**
- * @return {!goog.math.Size} A new copy of the Size.
- */
-goog.math.Size.prototype.clone = function() {
- return new goog.math.Size(this.width, this.height);
-};
-
-
-if (goog.DEBUG) {
- /**
- * Returns a nice string representing size.
- * @return {string} In the form (50 x 73).
- * @override
- */
- goog.math.Size.prototype.toString = function() {
- return '(' + this.width + ' x ' + this.height + ')';
+ return canUseCssTransform3D;
};
-}
-
-
-/**
- * @return {number} The longer of the two dimensions in the size.
- */
-goog.math.Size.prototype.getLongest = function() {
- return Math.max(this.width, this.height);
-};
-
-
-/**
- * @return {number} The shorter of the two dimensions in the size.
- */
-goog.math.Size.prototype.getShortest = function() {
- return Math.min(this.width, this.height);
-};
-
-
-/**
- * @return {number} The area of the size (width * height).
- */
-goog.math.Size.prototype.area = function() {
- return this.width * this.height;
-};
-
-
-/**
- * @return {number} The perimeter of the size (width + height) * 2.
- */
-goog.math.Size.prototype.perimeter = function() {
- return (this.width + this.height) * 2;
-};
-
-
-/**
- * @return {number} The ratio of the size's width to its height.
- */
-goog.math.Size.prototype.aspectRatio = function() {
- return this.width / this.height;
-};
-
-
-/**
- * @return {boolean} True if the size has zero area, false if both dimensions
- * are non-zero numbers.
- */
-goog.math.Size.prototype.isEmpty = function() {
- return !this.area();
-};
-
-
-/**
- * Clamps the width and height parameters upward to integer values.
- * @return {!goog.math.Size} This size with ceil'd components.
- */
-goog.math.Size.prototype.ceil = function() {
- this.width = Math.ceil(this.width);
- this.height = Math.ceil(this.height);
- return this;
-};
-
-
-/**
- * @param {!goog.math.Size} target The target size.
- * @return {boolean} True if this Size is the same size or smaller than the
- * target size in both dimensions.
- */
-goog.math.Size.prototype.fitsInside = function(target) {
- return this.width <= target.width && this.height <= target.height;
-};
-
-
-/**
- * Clamps the width and height parameters downward to integer values.
- * @return {!goog.math.Size} This size with floored components.
- */
-goog.math.Size.prototype.floor = function() {
- this.width = Math.floor(this.width);
- this.height = Math.floor(this.height);
- return this;
-};
-
-
-/**
- * Rounds the width and height parameters to integer values.
- * @return {!goog.math.Size} This size with rounded components.
- */
-goog.math.Size.prototype.round = function() {
- this.width = Math.round(this.width);
- this.height = Math.round(this.height);
- return this;
-};
-
-
-/**
- * Scales this size by the given scale factors. The width and height are scaled
- * by {@code sx} and {@code opt_sy} respectively. If {@code opt_sy} is not
- * given, then {@code sx} is used for both the width and height.
- * @param {number} sx The scale factor to use for the width.
- * @param {number=} opt_sy The scale factor to use for the height.
- * @return {!goog.math.Size} This Size object after scaling.
- */
-goog.math.Size.prototype.scale = function(sx, opt_sy) {
- var sy = goog.isNumber(opt_sy) ? opt_sy : sx;
- this.width *= sx;
- this.height *= sy;
- return this;
-};
-
-
-/**
- * Uniformly scales the size to perfectly cover the dimensions of a given size.
- * If the size is already larger than the target, it will be scaled down to the
- * minimum size at which it still covers the entire target. The original aspect
- * ratio will be preserved.
- *
- * This function assumes that both Sizes contain strictly positive dimensions.
- * @param {!goog.math.Size} target The target size.
- * @return {!goog.math.Size} This Size object, after optional scaling.
- */
-goog.math.Size.prototype.scaleToCover = function(target) {
- var s = this.aspectRatio() <= target.aspectRatio() ?
- target.width / this.width :
- target.height / this.height;
-
- return this.scale(s);
-};
-
-
-/**
- * Uniformly scales the size to fit inside the dimensions of a given size. The
- * original aspect ratio will be preserved.
- *
- * This function assumes that both Sizes contain strictly positive dimensions.
- * @param {!goog.math.Size} target The target size.
- * @return {!goog.math.Size} This Size object, after optional scaling.
- */
-goog.math.Size.prototype.scaleToFit = function(target) {
- var s = this.aspectRatio() > target.aspectRatio() ?
- target.width / this.width :
- target.height / this.height;
-
- return this.scale(s);
-};
-
-// Copyright 2006 The Closure Library Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS-IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-/**
- * @fileoverview Utilities for manipulating the browser's Document Object Model
- * Inspiration taken *heavily* from mochikit (http://mochikit.com/).
- *
- * You can use {@link goog.dom.DomHelper} to create new dom helpers that refer
- * to a different document object. This is useful if you are working with
- * frames or multiple windows.
- *
- * @author arv@google.com (Erik Arvidsson)
- */
-
-
-// TODO(arv): Rename/refactor getTextContent and getRawTextContent. The problem
-// is that getTextContent should mimic the DOM3 textContent. We should add a
-// getInnerText (or getText) which tries to return the visible text, innerText.
-
-
-goog.provide('goog.dom');
-goog.provide('goog.dom.Appendable');
-goog.provide('goog.dom.DomHelper');
-
-goog.require('goog.array');
-goog.require('goog.asserts');
-goog.require('goog.dom.BrowserFeature');
-goog.require('goog.dom.NodeType');
-goog.require('goog.dom.TagName');
-goog.require('goog.dom.safe');
-goog.require('goog.html.SafeHtml');
-goog.require('goog.html.legacyconversions');
-goog.require('goog.math.Coordinate');
-goog.require('goog.math.Size');
-goog.require('goog.object');
-goog.require('goog.string');
-goog.require('goog.string.Unicode');
-goog.require('goog.userAgent');
-
-
-/**
- * @define {boolean} Whether we know at compile time that the browser is in
- * quirks mode.
- */
-goog.define('goog.dom.ASSUME_QUIRKS_MODE', false);
-
-
-/**
- * @define {boolean} Whether we know at compile time that the browser is in
- * standards compliance mode.
- */
-goog.define('goog.dom.ASSUME_STANDARDS_MODE', false);
-
-
-/**
- * Whether we know the compatibility mode at compile time.
- * @type {boolean}
- * @private
- */
-goog.dom.COMPAT_MODE_KNOWN_ =
- goog.dom.ASSUME_QUIRKS_MODE || goog.dom.ASSUME_STANDARDS_MODE;
-
-
-/**
- * Gets the DomHelper object for the document where the element resides.
- * @param {(Node|Window)=} opt_element If present, gets the DomHelper for this
- * element.
- * @return {!goog.dom.DomHelper} The DomHelper.
- */
-goog.dom.getDomHelper = function(opt_element) {
- return opt_element ?
- new goog.dom.DomHelper(goog.dom.getOwnerDocument(opt_element)) :
- (goog.dom.defaultDomHelper_ ||
- (goog.dom.defaultDomHelper_ = new goog.dom.DomHelper()));
-};
-
-
-/**
- * Cached default DOM helper.
- * @type {!goog.dom.DomHelper|undefined}
- * @private
- */
-goog.dom.defaultDomHelper_;
-
-
-/**
- * Gets the document object being used by the dom library.
- * @return {!Document} Document object.
- */
-goog.dom.getDocument = function() {
- return document;
-};
-
-
-/**
- * Gets an element from the current document by element id.
- *
- * If an Element is passed in, it is returned.
- *
- * @param {string|Element} element Element ID or a DOM node.
- * @return {Element} The element with the given ID, or the node passed in.
- */
-goog.dom.getElement = function(element) {
- return goog.dom.getElementHelper_(document, element);
-};
-
-
-/**
- * Gets an element by id from the given document (if present).
- * If an element is given, it is returned.
- * @param {!Document} doc
- * @param {string|Element} element Element ID or a DOM node.
- * @return {Element} The resulting element.
- * @private
- */
-goog.dom.getElementHelper_ = function(doc, element) {
- return goog.isString(element) ? doc.getElementById(element) : element;
-};
-
-
-/**
- * Gets an element by id, asserting that the element is found.
- *
- * This is used when an element is expected to exist, and should fail with
- * an assertion error if it does not (if assertions are enabled).
- *
- * @param {string} id Element ID.
- * @return {!Element} The element with the given ID, if it exists.
- */
-goog.dom.getRequiredElement = function(id) {
- return goog.dom.getRequiredElementHelper_(document, id);
-};
-
-
-/**
- * Helper function for getRequiredElementHelper functions, both static and
- * on DomHelper. Asserts the element with the given id exists.
- * @param {!Document} doc
- * @param {string} id
- * @return {!Element} The element with the given ID, if it exists.
- * @private
- */
-goog.dom.getRequiredElementHelper_ = function(doc, id) {
- // To prevent users passing in Elements as is permitted in getElement().
- goog.asserts.assertString(id);
- var element = goog.dom.getElementHelper_(doc, id);
- element =
- goog.asserts.assertElement(element, 'No element found with id: ' + id);
- return element;
-};
-
-
-/**
- * Alias for getElement.
- * @param {string|Element} element Element ID or a DOM node.
- * @return {Element} The element with the given ID, or the node passed in.
- * @deprecated Use {@link goog.dom.getElement} instead.
- */
-goog.dom.$ = goog.dom.getElement;
-
-
-/**
- * Looks up elements by both tag and class name, using browser native functions
- * ({@code querySelectorAll}, {@code getElementsByTagName} or
- * {@code getElementsByClassName}) where possible. This function
- * is a useful, if limited, way of collecting a list of DOM elements
- * with certain characteristics. {@code goog.dom.query} offers a
- * more powerful and general solution which allows matching on CSS3
- * selector expressions, but at increased cost in code size. If all you
- * need is particular tags belonging to a single class, this function
- * is fast and sleek.
- *
- * Note that tag names are case sensitive in the SVG namespace, and this
- * function converts opt_tag to uppercase for comparisons. For queries in the
- * SVG namespace you should use querySelector or querySelectorAll instead.
- * https://bugzilla.mozilla.org/show_bug.cgi?id=963870
- * https://bugs.webkit.org/show_bug.cgi?id=83438
- *
- * @see {goog.dom.query}
- *
- * @param {?string=} opt_tag Element tag name.
- * @param {?string=} opt_class Optional class name.
- * @param {(Document|Element)=} opt_el Optional element to look in.
- * @return {!IArrayLike<!Element>} Array-like list of elements (only a length
- * property and numerical indices are guaranteed to exist).
- */
-goog.dom.getElementsByTagNameAndClass = function(opt_tag, opt_class, opt_el) {
- return goog.dom.getElementsByTagNameAndClass_(
- document, opt_tag, opt_class, opt_el);
-};
+}());
/**
- * Returns a static, array-like list of the elements with the provided
- * className.
- * @see {goog.dom.query}
- * @param {string} className the name of the class to look for.
- * @param {(Document|Element)=} opt_el Optional element to look in.
- * @return {!IArrayLike<!Element>} The items found with the class name provided.
+ * @param {Element} element Element.
+ * @param {string} value Value.
*/
-goog.dom.getElementsByClass = function(className, opt_el) {
- var parent = opt_el || document;
- if (goog.dom.canUseQuerySelector_(parent)) {
- return parent.querySelectorAll('.' + className);
- }
- return goog.dom.getElementsByTagNameAndClass_(
- document, '*', className, opt_el);
-};
-
+ol.dom.setTransform = function(element, value) {
+ var style = element.style;
+ style.WebkitTransform = value;
+ style.MozTransform = value;
+ style.OTransform = value;
+ style.msTransform = value;
+ style.transform = value;
-/**
- * Returns the first element with the provided className.
- * @see {goog.dom.query}
- * @param {string} className the name of the class to look for.
- * @param {Element|Document=} opt_el Optional element to look in.
- * @return {Element} The first item with the class name provided.
- */
-goog.dom.getElementByClass = function(className, opt_el) {
- var parent = opt_el || document;
- var retVal = null;
- if (parent.getElementsByClassName) {
- retVal = parent.getElementsByClassName(className)[0];
- } else if (goog.dom.canUseQuerySelector_(parent)) {
- retVal = parent.querySelector('.' + className);
- } else {
- retVal = goog.dom.getElementsByTagNameAndClass_(
- document, '*', className, opt_el)[0];
+ // IE 9+ seems to assume transform-origin: 100% 100%; for some unknown reason
+ if (goog.userAgent.IE && goog.userAgent.isVersionOrHigher('9.0')) {
+ element.style.transformOrigin = '0 0';
}
- return retVal || null;
-};
-
-
-/**
- * Ensures an element with the given className exists, and then returns the
- * first element with the provided className.
- * @see {goog.dom.query}
- * @param {string} className the name of the class to look for.
- * @param {!Element|!Document=} opt_root Optional element or document to look
- * in.
- * @return {!Element} The first item with the class name provided.
- * @throws {goog.asserts.AssertionError} Thrown if no element is found.
- */
-goog.dom.getRequiredElementByClass = function(className, opt_root) {
- var retValue = goog.dom.getElementByClass(className, opt_root);
- return goog.asserts.assert(
- retValue, 'No element found with className: ' + className);
-};
-
-
-/**
- * Prefer the standardized (http://www.w3.org/TR/selectors-api/), native and
- * fast W3C Selectors API.
- * @param {!(Element|Document)} parent The parent document object.
- * @return {boolean} whether or not we can use parent.querySelector* APIs.
- * @private
- */
-goog.dom.canUseQuerySelector_ = function(parent) {
- return !!(parent.querySelectorAll && parent.querySelector);
};
/**
- * Helper for {@code getElementsByTagNameAndClass}.
- * @param {!Document} doc The document to get the elements in.
- * @param {?string=} opt_tag Element tag name.
- * @param {?string=} opt_class Optional class name.
- * @param {(Document|Element)=} opt_el Optional element to look in.
- * @return {!IArrayLike<!Element>} Array-like list of elements (only a length
- * property and numerical indices are guaranteed to exist).
- * @private
+ * @param {!Element} element Element.
+ * @param {goog.vec.Mat4.Number} transform Matrix.
+ * @param {number=} opt_precision Precision.
*/
-goog.dom.getElementsByTagNameAndClass_ = function(
- doc, opt_tag, opt_class, opt_el) {
- var parent = opt_el || doc;
- var tagName = (opt_tag && opt_tag != '*') ? opt_tag.toUpperCase() : '';
-
- if (goog.dom.canUseQuerySelector_(parent) && (tagName || opt_class)) {
- var query = tagName + (opt_class ? '.' + opt_class : '');
- return parent.querySelectorAll(query);
- }
-
- // Use the native getElementsByClassName if available, under the assumption
- // that even when the tag name is specified, there will be fewer elements to
- // filter through when going by class than by tag name
- if (opt_class && parent.getElementsByClassName) {
- var els = parent.getElementsByClassName(opt_class);
-
- if (tagName) {
- var arrayLike = {};
- var len = 0;
-
- // Filter for specific tags if requested.
- for (var i = 0, el; el = els[i]; i++) {
- if (tagName == el.nodeName) {
- arrayLike[len++] = el;
- }
- }
- arrayLike.length = len;
-
- return /** @type {!IArrayLike<!Element>} */ (arrayLike);
- } else {
- return els;
- }
- }
-
- var els = parent.getElementsByTagName(tagName || '*');
+ol.dom.transformElement2D = function(element, transform, opt_precision) {
+ // using matrix() causes gaps in Chrome and Firefox on Mac OS X, so prefer
+ // matrix3d()
+ var i;
+ if (ol.dom.canUseCssTransform3D()) {
+ var value3D;
- if (opt_class) {
- var arrayLike = {};
- var len = 0;
- for (var i = 0, el; el = els[i]; i++) {
- var className = el.className;
- // Check if className has a split function since SVG className does not.
- if (typeof className.split == 'function' &&
- goog.array.contains(className.split(/\s+/), opt_class)) {
- arrayLike[len++] = el;
+ if (opt_precision !== undefined) {
+ /** @type {Array.<string>} */
+ var strings3D = new Array(16);
+ for (i = 0; i < 16; ++i) {
+ strings3D[i] = transform[i].toFixed(opt_precision);
}
- }
- arrayLike.length = len;
- return /** @type {!IArrayLike<!Element>} */ (arrayLike);
- } else {
- return els;
- }
-};
-
-
-/**
- * Alias for {@code getElementsByTagNameAndClass}.
- * @param {?string=} opt_tag Element tag name.
- * @param {?string=} opt_class Optional class name.
- * @param {Element=} opt_el Optional element to look in.
- * @return {!IArrayLike<!Element>} Array-like list of elements (only a length
- * property and numerical indices are guaranteed to exist).
- * @deprecated Use {@link goog.dom.getElementsByTagNameAndClass} instead.
- */
-goog.dom.$$ = goog.dom.getElementsByTagNameAndClass;
-
-
-/**
- * Sets multiple properties on a node.
- * @param {Element} element DOM node to set properties on.
- * @param {Object} properties Hash of property:value pairs.
- */
-goog.dom.setProperties = function(element, properties) {
- goog.object.forEach(properties, function(val, key) {
- if (key == 'style') {
- element.style.cssText = val;
- } else if (key == 'class') {
- element.className = val;
- } else if (key == 'for') {
- element.htmlFor = val;
- } else if (goog.dom.DIRECT_ATTRIBUTE_MAP_.hasOwnProperty(key)) {
- element.setAttribute(goog.dom.DIRECT_ATTRIBUTE_MAP_[key], val);
- } else if (
- goog.string.startsWith(key, 'aria-') ||
- goog.string.startsWith(key, 'data-')) {
- element.setAttribute(key, val);
+ value3D = strings3D.join(',');
} else {
- element[key] = val;
- }
- });
-};
-
-
-/**
- * Map of attributes that should be set using
- * element.setAttribute(key, val) instead of element[key] = val. Used
- * by goog.dom.setProperties.
- *
- * @private {!Object<string, string>}
- * @const
- */
-goog.dom.DIRECT_ATTRIBUTE_MAP_ = {
- 'cellpadding': 'cellPadding',
- 'cellspacing': 'cellSpacing',
- 'colspan': 'colSpan',
- 'frameborder': 'frameBorder',
- 'height': 'height',
- 'maxlength': 'maxLength',
- 'nonce': 'nonce',
- 'role': 'role',
- 'rowspan': 'rowSpan',
- 'type': 'type',
- 'usemap': 'useMap',
- 'valign': 'vAlign',
- 'width': 'width'
-};
-
-
-/**
- * Gets the dimensions of the viewport.
- *
- * Gecko Standards mode:
- * docEl.clientWidth Width of viewport excluding scrollbar.
- * win.innerWidth Width of viewport including scrollbar.
- * body.clientWidth Width of body element.
- *
- * docEl.clientHeight Height of viewport excluding scrollbar.
- * win.innerHeight Height of viewport including scrollbar.
- * body.clientHeight Height of document.
- *
- * Gecko Backwards compatible mode:
- * docEl.clientWidth Width of viewport excluding scrollbar.
- * win.innerWidth Width of viewport including scrollbar.
- * body.clientWidth Width of viewport excluding scrollbar.
- *
- * docEl.clientHeight Height of document.
- * win.innerHeight Height of viewport including scrollbar.
- * body.clientHeight Height of viewport excluding scrollbar.
- *
- * IE6/7 Standards mode:
- * docEl.clientWidth Width of viewport excluding scrollbar.
- * win.innerWidth Undefined.
- * body.clientWidth Width of body element.
- *
- * docEl.clientHeight Height of viewport excluding scrollbar.
- * win.innerHeight Undefined.
- * body.clientHeight Height of document element.
- *
- * IE5 + IE6/7 Backwards compatible mode:
- * docEl.clientWidth 0.
- * win.innerWidth Undefined.
- * body.clientWidth Width of viewport excluding scrollbar.
- *
- * docEl.clientHeight 0.
- * win.innerHeight Undefined.
- * body.clientHeight Height of viewport excluding scrollbar.
- *
- * Opera 9 Standards and backwards compatible mode:
- * docEl.clientWidth Width of viewport excluding scrollbar.
- * win.innerWidth Width of viewport including scrollbar.
- * body.clientWidth Width of viewport excluding scrollbar.
- *
- * docEl.clientHeight Height of document.
- * win.innerHeight Height of viewport including scrollbar.
- * body.clientHeight Height of viewport excluding scrollbar.
- *
- * WebKit:
- * Safari 2
- * docEl.clientHeight Same as scrollHeight.
- * docEl.clientWidth Same as innerWidth.
- * win.innerWidth Width of viewport excluding scrollbar.
- * win.innerHeight Height of the viewport including scrollbar.
- * frame.innerHeight Height of the viewport exluding scrollbar.
- *
- * Safari 3 (tested in 522)
- *
- * docEl.clientWidth Width of viewport excluding scrollbar.
- * docEl.clientHeight Height of viewport excluding scrollbar in strict mode.
- * body.clientHeight Height of viewport excluding scrollbar in quirks mode.
- *
- * @param {Window=} opt_window Optional window element to test.
- * @return {!goog.math.Size} Object with values 'width' and 'height'.
- */
-goog.dom.getViewportSize = function(opt_window) {
- // TODO(arv): This should not take an argument
- return goog.dom.getViewportSize_(opt_window || window);
-};
-
-
-/**
- * Helper for {@code getViewportSize}.
- * @param {Window} win The window to get the view port size for.
- * @return {!goog.math.Size} Object with values 'width' and 'height'.
- * @private
- */
-goog.dom.getViewportSize_ = function(win) {
- var doc = win.document;
- var el = goog.dom.isCss1CompatMode_(doc) ? doc.documentElement : doc.body;
- return new goog.math.Size(el.clientWidth, el.clientHeight);
-};
-
-
-/**
- * Calculates the height of the document.
- *
- * @return {number} The height of the current document.
- */
-goog.dom.getDocumentHeight = function() {
- return goog.dom.getDocumentHeight_(window);
-};
-
-/**
- * Calculates the height of the document of the given window.
- *
- * @param {!Window} win The window whose document height to retrieve.
- * @return {number} The height of the document of the given window.
- */
-goog.dom.getDocumentHeightForWindow = function(win) {
- return goog.dom.getDocumentHeight_(win);
-};
-
-/**
- * Calculates the height of the document of the given window.
- *
- * Function code copied from the opensocial gadget api:
- * gadgets.window.adjustHeight(opt_height)
- *
- * @private
- * @param {!Window} win The window whose document height to retrieve.
- * @return {number} The height of the document of the given window.
- */
-goog.dom.getDocumentHeight_ = function(win) {
- // NOTE(eae): This method will return the window size rather than the document
- // size in webkit quirks mode.
- var doc = win.document;
- var height = 0;
-
- if (doc) {
- // Calculating inner content height is hard and different between
- // browsers rendering in Strict vs. Quirks mode. We use a combination of
- // three properties within document.body and document.documentElement:
- // - scrollHeight
- // - offsetHeight
- // - clientHeight
- // These values differ significantly between browsers and rendering modes.
- // But there are patterns. It just takes a lot of time and persistence
- // to figure out.
-
- var body = doc.body;
- var docEl = /** @type {!HTMLElement} */ (doc.documentElement);
- if (!(docEl && body)) {
- return 0;
+ value3D = transform.join(',');
}
-
- // Get the height of the viewport
- var vh = goog.dom.getViewportSize_(win).height;
- if (goog.dom.isCss1CompatMode_(doc) && docEl.scrollHeight) {
- // In Strict mode:
- // The inner content height is contained in either:
- // document.documentElement.scrollHeight
- // document.documentElement.offsetHeight
- // Based on studying the values output by different browsers,
- // use the value that's NOT equal to the viewport height found above.
- height =
- docEl.scrollHeight != vh ? docEl.scrollHeight : docEl.offsetHeight;
- } else {
- // In Quirks mode:
- // documentElement.clientHeight is equal to documentElement.offsetHeight
- // except in IE. In most browsers, document.documentElement can be used
- // to calculate the inner content height.
- // However, in other browsers (e.g. IE), document.body must be used
- // instead. How do we know which one to use?
- // If document.documentElement.clientHeight does NOT equal
- // document.documentElement.offsetHeight, then use document.body.
- var sh = docEl.scrollHeight;
- var oh = docEl.offsetHeight;
- if (docEl.clientHeight != oh) {
- sh = body.scrollHeight;
- oh = body.offsetHeight;
- }
-
- // Detect whether the inner content height is bigger or smaller
- // than the bounding box (viewport). If bigger, take the larger
- // value. If smaller, take the smaller value.
- if (sh > vh) {
- // Content is larger
- height = sh > oh ? sh : oh;
- } else {
- // Content is smaller
- height = sh < oh ? sh : oh;
+ ol.dom.setTransform(element, 'matrix3d(' + value3D + ')');
+ } else if (ol.dom.canUseCssTransform()) {
+ /** @type {Array.<number>} */
+ var transform2D = [
+ goog.vec.Mat4.getElement(transform, 0, 0),
+ goog.vec.Mat4.getElement(transform, 1, 0),
+ goog.vec.Mat4.getElement(transform, 0, 1),
+ goog.vec.Mat4.getElement(transform, 1, 1),
+ goog.vec.Mat4.getElement(transform, 0, 3),
+ goog.vec.Mat4.getElement(transform, 1, 3)
+ ];
+ var value2D;
+ if (opt_precision !== undefined) {
+ /** @type {Array.<string>} */
+ var strings2D = new Array(6);
+ for (i = 0; i < 6; ++i) {
+ strings2D[i] = transform2D[i].toFixed(opt_precision);
}
- }
- }
-
- return height;
-};
-
-
-/**
- * Gets the page scroll distance as a coordinate object.
- *
- * @param {Window=} opt_window Optional window element to test.
- * @return {!goog.math.Coordinate} Object with values 'x' and 'y'.
- * @deprecated Use {@link goog.dom.getDocumentScroll} instead.
- */
-goog.dom.getPageScroll = function(opt_window) {
- var win = opt_window || goog.global || window;
- return goog.dom.getDomHelper(win.document).getDocumentScroll();
-};
-
-
-/**
- * Gets the document scroll distance as a coordinate object.
- *
- * @return {!goog.math.Coordinate} Object with values 'x' and 'y'.
- */
-goog.dom.getDocumentScroll = function() {
- return goog.dom.getDocumentScroll_(document);
-};
-
-
-/**
- * Helper for {@code getDocumentScroll}.
- *
- * @param {!Document} doc The document to get the scroll for.
- * @return {!goog.math.Coordinate} Object with values 'x' and 'y'.
- * @private
- */
-goog.dom.getDocumentScroll_ = function(doc) {
- var el = goog.dom.getDocumentScrollElement_(doc);
- var win = goog.dom.getWindow_(doc);
- if (goog.userAgent.IE && goog.userAgent.isVersionOrHigher('10') &&
- win.pageYOffset != el.scrollTop) {
- // The keyboard on IE10 touch devices shifts the page using the pageYOffset
- // without modifying scrollTop. For this case, we want the body scroll
- // offsets.
- return new goog.math.Coordinate(el.scrollLeft, el.scrollTop);
- }
- return new goog.math.Coordinate(
- win.pageXOffset || el.scrollLeft, win.pageYOffset || el.scrollTop);
-};
-
-
-/**
- * Gets the document scroll element.
- * @return {!Element} Scrolling element.
- */
-goog.dom.getDocumentScrollElement = function() {
- return goog.dom.getDocumentScrollElement_(document);
-};
-
-
-/**
- * Helper for {@code getDocumentScrollElement}.
- * @param {!Document} doc The document to get the scroll element for.
- * @return {!Element} Scrolling element.
- * @private
- */
-goog.dom.getDocumentScrollElement_ = function(doc) {
- // Old WebKit needs body.scrollLeft in both quirks mode and strict mode. We
- // also default to the documentElement if the document does not have a body
- // (e.g. a SVG document).
- // Uses http://dev.w3.org/csswg/cssom-view/#dom-document-scrollingelement to
- // avoid trying to guess about browser behavior from the UA string.
- if (doc.scrollingElement) {
- return doc.scrollingElement;
- }
- if (!goog.userAgent.WEBKIT && goog.dom.isCss1CompatMode_(doc)) {
- return doc.documentElement;
- }
- return doc.body || doc.documentElement;
-};
-
-
-/**
- * Gets the window object associated with the given document.
- *
- * @param {Document=} opt_doc Document object to get window for.
- * @return {!Window} The window associated with the given document.
- */
-goog.dom.getWindow = function(opt_doc) {
- // TODO(arv): This should not take an argument.
- return opt_doc ? goog.dom.getWindow_(opt_doc) : window;
-};
-
-
-/**
- * Helper for {@code getWindow}.
- *
- * @param {!Document} doc Document object to get window for.
- * @return {!Window} The window associated with the given document.
- * @private
- */
-goog.dom.getWindow_ = function(doc) {
- return doc.parentWindow || doc.defaultView;
-};
-
-
-/**
- * Returns a dom node with a set of attributes. This function accepts varargs
- * for subsequent nodes to be added. Subsequent nodes will be added to the
- * first node as childNodes.
- *
- * So:
- * <code>createDom('div', null, createDom('p'), createDom('p'));</code>
- * would return a div with two child paragraphs
- *
- * @param {string} tagName Tag to create.
- * @param {(Object|Array<string>|string)=} opt_attributes If object, then a map
- * of name-value pairs for attributes. If a string, then this is the
- * className of the new element. If an array, the elements will be joined
- * together as the className of the new element.
- * @param {...(Object|string|Array|NodeList)} var_args Further DOM nodes or
- * strings for text nodes. If one of the var_args is an array or NodeList,
- * its elements will be added as childNodes instead.
- * @return {!Element} Reference to a DOM node.
- */
-goog.dom.createDom = function(tagName, opt_attributes, var_args) {
- return goog.dom.createDom_(document, arguments);
-};
-
-
-/**
- * Helper for {@code createDom}.
- * @param {!Document} doc The document to create the DOM in.
- * @param {!Arguments} args Argument object passed from the callers. See
- * {@code goog.dom.createDom} for details.
- * @return {!Element} Reference to a DOM node.
- * @private
- */
-goog.dom.createDom_ = function(doc, args) {
- var tagName = args[0];
- var attributes = args[1];
-
- // Internet Explorer is dumb:
- // name: https://msdn.microsoft.com/en-us/library/ms534184(v=vs.85).aspx
- // type: https://msdn.microsoft.com/en-us/library/ms534700(v=vs.85).aspx
- // Also does not allow setting of 'type' attribute on 'input' or 'button'.
- if (!goog.dom.BrowserFeature.CAN_ADD_NAME_OR_TYPE_ATTRIBUTES && attributes &&
- (attributes.name || attributes.type)) {
- var tagNameArr = ['<', tagName];
- if (attributes.name) {
- tagNameArr.push(' name="', goog.string.htmlEscape(attributes.name), '"');
- }
- if (attributes.type) {
- tagNameArr.push(' type="', goog.string.htmlEscape(attributes.type), '"');
-
- // Clone attributes map to remove 'type' without mutating the input.
- var clone = {};
- goog.object.extend(clone, attributes);
-
- // JSCompiler can't see how goog.object.extend added this property,
- // because it was essentially added by reflection.
- // So it needs to be quoted.
- delete clone['type'];
-
- attributes = clone;
- }
- tagNameArr.push('>');
- tagName = tagNameArr.join('');
- }
-
- var element = doc.createElement(tagName);
-
- if (attributes) {
- if (goog.isString(attributes)) {
- element.className = attributes;
- } else if (goog.isArray(attributes)) {
- element.className = attributes.join(' ');
- } else {
- goog.dom.setProperties(element, attributes);
- }
- }
-
- if (args.length > 2) {
- goog.dom.append_(doc, element, args, 2);
- }
-
- return element;
-};
-
-
-/**
- * Appends a node with text or other nodes.
- * @param {!Document} doc The document to create new nodes in.
- * @param {!Node} parent The node to append nodes to.
- * @param {!Arguments} args The values to add. See {@code goog.dom.append}.
- * @param {number} startIndex The index of the array to start from.
- * @private
- */
-goog.dom.append_ = function(doc, parent, args, startIndex) {
- function childHandler(child) {
- // TODO(user): More coercion, ala MochiKit?
- if (child) {
- parent.appendChild(
- goog.isString(child) ? doc.createTextNode(child) : child);
- }
- }
-
- for (var i = startIndex; i < args.length; i++) {
- var arg = args[i];
- // TODO(attila): Fix isArrayLike to return false for a text node.
- if (goog.isArrayLike(arg) && !goog.dom.isNodeLike(arg)) {
- // If the argument is a node list, not a real array, use a clone,
- // because forEach can't be used to mutate a NodeList.
- goog.array.forEach(
- goog.dom.isNodeList(arg) ? goog.array.toArray(arg) : arg,
- childHandler);
+ value2D = strings2D.join(',');
} else {
- childHandler(arg);
- }
- }
-};
-
-
-/**
- * Alias for {@code createDom}.
- * @param {string} tagName Tag to create.
- * @param {(string|Object)=} opt_attributes If object, then a map of name-value
- * pairs for attributes. If a string, then this is the className of the new
- * element.
- * @param {...(Object|string|Array|NodeList)} var_args Further DOM nodes or
- * strings for text nodes. If one of the var_args is an array, its
- * children will be added as childNodes instead.
- * @return {!Element} Reference to a DOM node.
- * @deprecated Use {@link goog.dom.createDom} instead.
- */
-goog.dom.$dom = goog.dom.createDom;
-
-
-/**
- * Creates a new element.
- * @param {string} name Tag name.
- * @return {!Element} The new element.
- */
-goog.dom.createElement = function(name) {
- return document.createElement(name);
-};
-
-
-/**
- * Creates a new text node.
- * @param {number|string} content Content.
- * @return {!Text} The new text node.
- */
-goog.dom.createTextNode = function(content) {
- return document.createTextNode(String(content));
-};
-
-
-/**
- * Create a table.
- * @param {number} rows The number of rows in the table. Must be >= 1.
- * @param {number} columns The number of columns in the table. Must be >= 1.
- * @param {boolean=} opt_fillWithNbsp If true, fills table entries with
- * {@code goog.string.Unicode.NBSP} characters.
- * @return {!Element} The created table.
- */
-goog.dom.createTable = function(rows, columns, opt_fillWithNbsp) {
- // TODO(user): Return HTMLTableElement, also in prototype function.
- // Callers need to be updated to e.g. not assign numbers to table.cellSpacing.
- return goog.dom.createTable_(document, rows, columns, !!opt_fillWithNbsp);
-};
-
-
-/**
- * Create a table.
- * @param {!Document} doc Document object to use to create the table.
- * @param {number} rows The number of rows in the table. Must be >= 1.
- * @param {number} columns The number of columns in the table. Must be >= 1.
- * @param {boolean} fillWithNbsp If true, fills table entries with
- * {@code goog.string.Unicode.NBSP} characters.
- * @return {!HTMLTableElement} The created table.
- * @private
- */
-goog.dom.createTable_ = function(doc, rows, columns, fillWithNbsp) {
- var table = /** @type {!HTMLTableElement} */
- (doc.createElement(goog.dom.TagName.TABLE));
- var tbody = table.appendChild(doc.createElement(goog.dom.TagName.TBODY));
- for (var i = 0; i < rows; i++) {
- var tr = doc.createElement(goog.dom.TagName.TR);
- for (var j = 0; j < columns; j++) {
- var td = doc.createElement(goog.dom.TagName.TD);
- // IE <= 9 will create a text node if we set text content to the empty
- // string, so we avoid doing it unless necessary. This ensures that the
- // same DOM tree is returned on all browsers.
- if (fillWithNbsp) {
- goog.dom.setTextContent(td, goog.string.Unicode.NBSP);
- }
- tr.appendChild(td);
+ value2D = transform2D.join(',');
}
- tbody.appendChild(tr);
- }
- return table;
-};
-
-
-/**
- * Converts HTML markup into a node.
- * @param {!goog.html.SafeHtml} html The HTML markup to convert.
- * @return {!Node} The resulting node.
- */
-goog.dom.safeHtmlToNode = function(html) {
- return goog.dom.safeHtmlToNode_(document, html);
-};
-
-
-/**
- * Helper for {@code safeHtmlToNode}.
- * @param {!Document} doc The document.
- * @param {!goog.html.SafeHtml} html The HTML markup to convert.
- * @return {!Node} The resulting node.
- * @private
- */
-goog.dom.safeHtmlToNode_ = function(doc, html) {
- var tempDiv = doc.createElement(goog.dom.TagName.DIV);
- if (goog.dom.BrowserFeature.INNER_HTML_NEEDS_SCOPED_ELEMENT) {
- goog.dom.safe.setInnerHtml(
- tempDiv, goog.html.SafeHtml.concat(goog.html.SafeHtml.BR, html));
- tempDiv.removeChild(tempDiv.firstChild);
- } else {
- goog.dom.safe.setInnerHtml(tempDiv, html);
- }
- return goog.dom.childrenToNode_(doc, tempDiv);
-};
-
-
-/**
- * Converts an HTML string into a document fragment. The string must be
- * sanitized in order to avoid cross-site scripting. For example
- * {@code goog.dom.htmlToDocumentFragment('&lt;img src=x onerror=alert(0)&gt;')}
- * triggers an alert in all browsers, even if the returned document fragment
- * is thrown away immediately.
- *
- * NOTE: This method doesn't work if your htmlString contains elements that
- * can't be contained in a <div>. For example, <tr>.
- *
- * @param {string} htmlString The HTML string to convert.
- * @return {!Node} The resulting document fragment.
- * @deprecated Use {@link goog.dom.safeHtmlToNode} instead.
- */
-goog.dom.htmlToDocumentFragment = function(htmlString) {
- return goog.dom.safeHtmlToNode_(document,
- // For now, we are blindly trusting that the HTML is safe.
- goog.html.legacyconversions.safeHtmlFromString(htmlString));
-};
-
-
-/**
- * Helper for {@code safeHtmlToNode_}.
- * @param {!Document} doc The document.
- * @param {!Node} tempDiv The input node.
- * @return {!Node} The resulting node.
- * @private
- */
-goog.dom.childrenToNode_ = function(doc, tempDiv) {
- if (tempDiv.childNodes.length == 1) {
- return tempDiv.removeChild(tempDiv.firstChild);
+ ol.dom.setTransform(element, 'matrix(' + value2D + ')');
} else {
- var fragment = doc.createDocumentFragment();
- while (tempDiv.firstChild) {
- fragment.appendChild(tempDiv.firstChild);
- }
- return fragment;
- }
-};
-
-
-/**
- * Returns true if the browser is in "CSS1-compatible" (standards-compliant)
- * mode, false otherwise.
- * @return {boolean} True if in CSS1-compatible mode.
- */
-goog.dom.isCss1CompatMode = function() {
- return goog.dom.isCss1CompatMode_(document);
-};
-
-
-/**
- * Returns true if the browser is in "CSS1-compatible" (standards-compliant)
- * mode, false otherwise.
- * @param {!Document} doc The document to check.
- * @return {boolean} True if in CSS1-compatible mode.
- * @private
- */
-goog.dom.isCss1CompatMode_ = function(doc) {
- if (goog.dom.COMPAT_MODE_KNOWN_) {
- return goog.dom.ASSUME_STANDARDS_MODE;
- }
-
- return doc.compatMode == 'CSS1Compat';
-};
-
-
-/**
- * Determines if the given node can contain children, intended to be used for
- * HTML generation.
- *
- * IE natively supports node.canHaveChildren but has inconsistent behavior.
- * Prior to IE8 the base tag allows children and in IE9 all nodes return true
- * for canHaveChildren.
- *
- * In practice all non-IE browsers allow you to add children to any node, but
- * the behavior is inconsistent:
- *
- * <pre>
- * var a = document.createElement(goog.dom.TagName.BR);
- * a.appendChild(document.createTextNode('foo'));
- * a.appendChild(document.createTextNode('bar'));
- * console.log(a.childNodes.length); // 2
- * console.log(a.innerHTML); // Chrome: "", IE9: "foobar", FF3.5: "foobar"
- * </pre>
- *
- * For more information, see:
- * http://dev.w3.org/html5/markup/syntax.html#syntax-elements
- *
- * TODO(user): Rename shouldAllowChildren() ?
- *
- * @param {Node} node The node to check.
- * @return {boolean} Whether the node can contain children.
- */
-goog.dom.canHaveChildren = function(node) {
- if (node.nodeType != goog.dom.NodeType.ELEMENT) {
- return false;
- }
- switch (/** @type {!Element} */ (node).tagName) {
- case goog.dom.TagName.APPLET:
- case goog.dom.TagName.AREA:
- case goog.dom.TagName.BASE:
- case goog.dom.TagName.BR:
- case goog.dom.TagName.COL:
- case goog.dom.TagName.COMMAND:
- case goog.dom.TagName.EMBED:
- case goog.dom.TagName.FRAME:
- case goog.dom.TagName.HR:
- case goog.dom.TagName.IMG:
- case goog.dom.TagName.INPUT:
- case goog.dom.TagName.IFRAME:
- case goog.dom.TagName.ISINDEX:
- case goog.dom.TagName.KEYGEN:
- case goog.dom.TagName.LINK:
- case goog.dom.TagName.NOFRAMES:
- case goog.dom.TagName.NOSCRIPT:
- case goog.dom.TagName.META:
- case goog.dom.TagName.OBJECT:
- case goog.dom.TagName.PARAM:
- case goog.dom.TagName.SCRIPT:
- case goog.dom.TagName.SOURCE:
- case goog.dom.TagName.STYLE:
- case goog.dom.TagName.TRACK:
- case goog.dom.TagName.WBR:
- return false;
- }
- return true;
-};
-
-
-/**
- * Appends a child to a node.
- * @param {Node} parent Parent.
- * @param {Node} child Child.
- */
-goog.dom.appendChild = function(parent, child) {
- parent.appendChild(child);
-};
-
-
-/**
- * Appends a node with text or other nodes.
- * @param {!Node} parent The node to append nodes to.
- * @param {...goog.dom.Appendable} var_args The things to append to the node.
- * If this is a Node it is appended as is.
- * If this is a string then a text node is appended.
- * If this is an array like object then fields 0 to length - 1 are appended.
- */
-goog.dom.append = function(parent, var_args) {
- goog.dom.append_(goog.dom.getOwnerDocument(parent), parent, arguments, 1);
-};
-
+ element.style.left =
+ Math.round(goog.vec.Mat4.getElement(transform, 0, 3)) + 'px';
+ element.style.top =
+ Math.round(goog.vec.Mat4.getElement(transform, 1, 3)) + 'px';
-/**
- * Removes all the child nodes on a DOM node.
- * @param {Node} node Node to remove children from.
- */
-goog.dom.removeChildren = function(node) {
- // Note: Iterations over live collections can be slow, this is the fastest
- // we could find. The double parenthesis are used to prevent JsCompiler and
- // strict warnings.
- var child;
- while ((child = node.firstChild)) {
- node.removeChild(child);
+ // TODO: Add scaling here. This isn't quite as simple as multiplying
+ // width/height, because that only changes the container size, not the
+ // content size.
}
};
/**
- * Inserts a new node before an existing reference node (i.e. as the previous
- * sibling). If the reference node has no parent, then does nothing.
- * @param {Node} newNode Node to insert.
- * @param {Node} refNode Reference node to insert before.
+ * Get the current computed width for the given element including margin,
+ * padding and border.
+ * Equivalent to jQuery's `$(el).outerWidth(true)`.
+ * @param {!Element} element Element.
+ * @return {number} The width.
*/
-goog.dom.insertSiblingBefore = function(newNode, refNode) {
- if (refNode.parentNode) {
- refNode.parentNode.insertBefore(newNode, refNode);
- }
-};
-
+ol.dom.outerWidth = function(element) {
+ var width = element.offsetWidth;
+ var style = element.currentStyle || ol.global.getComputedStyle(element);
+ width += parseInt(style.marginLeft, 10) + parseInt(style.marginRight, 10);
-/**
- * Inserts a new node after an existing reference node (i.e. as the next
- * sibling). If the reference node has no parent, then does nothing.
- * @param {Node} newNode Node to insert.
- * @param {Node} refNode Reference node to insert after.
- */
-goog.dom.insertSiblingAfter = function(newNode, refNode) {
- if (refNode.parentNode) {
- refNode.parentNode.insertBefore(newNode, refNode.nextSibling);
- }
+ return width;
};
/**
- * Insert a child at a given index. If index is larger than the number of child
- * nodes that the parent currently has, the node is inserted as the last child
- * node.
- * @param {Element} parent The element into which to insert the child.
- * @param {Node} child The element to insert.
- * @param {number} index The index at which to insert the new child node. Must
- * not be negative.
+ * Get the current computed height for the given element including margin,
+ * padding and border.
+ * Equivalent to jQuery's `$(el).outerHeight(true)`.
+ * @param {!Element} element Element.
+ * @return {number} The height.
*/
-goog.dom.insertChildAt = function(parent, child, index) {
- // Note that if the second argument is null, insertBefore
- // will append the child at the end of the list of children.
- parent.insertBefore(child, parent.childNodes[index] || null);
-};
-
+ol.dom.outerHeight = function(element) {
+ var height = element.offsetHeight;
+ var style = element.currentStyle || ol.global.getComputedStyle(element);
+ height += parseInt(style.marginTop, 10) + parseInt(style.marginBottom, 10);
-/**
- * Removes a node from its parent.
- * @param {Node} node The node to remove.
- * @return {Node} The node removed if removed; else, null.
- */
-goog.dom.removeNode = function(node) {
- return node && node.parentNode ? node.parentNode.removeChild(node) : null;
+ return height;
};
-
/**
- * Replaces a node in the DOM tree. Will do nothing if {@code oldNode} has no
- * parent.
- * @param {Node} newNode Node to insert.
- * @param {Node} oldNode Node to replace.
+ * @param {Node} newNode Node to replace old node
+ * @param {Node} oldNode The node to be replaced
*/
-goog.dom.replaceNode = function(newNode, oldNode) {
+ol.dom.replaceNode = function(newNode, oldNode) {
var parent = oldNode.parentNode;
if (parent) {
parent.replaceChild(newNode, oldNode);
}
};
-
-/**
- * Flattens an element. That is, removes it and replace it with its children.
- * Does nothing if the element is not in the document.
- * @param {Element} element The element to flatten.
- * @return {Element|undefined} The original element, detached from the document
- * tree, sans children; or undefined, if the element was not in the document
- * to begin with.
- */
-goog.dom.flattenElement = function(element) {
- var child, parent = element.parentNode;
- if (parent && parent.nodeType != goog.dom.NodeType.DOCUMENT_FRAGMENT) {
- // Use IE DOM method (supported by Opera too) if available
- if (element.removeNode) {
- return /** @type {Element} */ (element.removeNode(false));
- } else {
- // Move all children of the original node up one level.
- while ((child = element.firstChild)) {
- parent.insertBefore(child, element);
- }
-
- // Detach the original element.
- return /** @type {Element} */ (goog.dom.removeNode(element));
- }
- }
-};
-
-
-/**
- * Returns an array containing just the element children of the given element.
- * @param {Element} element The element whose element children we want.
- * @return {!(Array<!Element>|NodeList<!Element>)} An array or array-like list
- * of just the element children of the given element.
- */
-goog.dom.getChildren = function(element) {
- // We check if the children attribute is supported for child elements
- // since IE8 misuses the attribute by also including comments.
- if (goog.dom.BrowserFeature.CAN_USE_CHILDREN_ATTRIBUTE &&
- element.children != undefined) {
- return element.children;
- }
- // Fall back to manually filtering the element's child nodes.
- return goog.array.filter(element.childNodes, function(node) {
- return node.nodeType == goog.dom.NodeType.ELEMENT;
- });
-};
-
-
-/**
- * Returns the first child node that is an element.
- * @param {Node} node The node to get the first child element of.
- * @return {Element} The first child node of {@code node} that is an element.
- */
-goog.dom.getFirstElementChild = function(node) {
- if (goog.isDef(node.firstElementChild)) {
- return /** @type {!Element} */ (node).firstElementChild;
- }
- return goog.dom.getNextElementNode_(node.firstChild, true);
-};
-
-
-/**
- * Returns the last child node that is an element.
- * @param {Node} node The node to get the last child element of.
- * @return {Element} The last child node of {@code node} that is an element.
- */
-goog.dom.getLastElementChild = function(node) {
- if (goog.isDef(node.lastElementChild)) {
- return /** @type {!Element} */ (node).lastElementChild;
- }
- return goog.dom.getNextElementNode_(node.lastChild, false);
-};
-
-
-/**
- * Returns the first next sibling that is an element.
- * @param {Node} node The node to get the next sibling element of.
- * @return {Element} The next sibling of {@code node} that is an element.
- */
-goog.dom.getNextElementSibling = function(node) {
- if (goog.isDef(node.nextElementSibling)) {
- return /** @type {!Element} */ (node).nextElementSibling;
- }
- return goog.dom.getNextElementNode_(node.nextSibling, true);
-};
-
-
-/**
- * Returns the first previous sibling that is an element.
- * @param {Node} node The node to get the previous sibling element of.
- * @return {Element} The first previous sibling of {@code node} that is
- * an element.
- */
-goog.dom.getPreviousElementSibling = function(node) {
- if (goog.isDef(node.previousElementSibling)) {
- return /** @type {!Element} */ (node).previousElementSibling;
- }
- return goog.dom.getNextElementNode_(node.previousSibling, false);
-};
-
-
-/**
- * Returns the first node that is an element in the specified direction,
- * starting with {@code node}.
- * @param {Node} node The node to get the next element from.
- * @param {boolean} forward Whether to look forwards or backwards.
- * @return {Element} The first element.
- * @private
- */
-goog.dom.getNextElementNode_ = function(node, forward) {
- while (node && node.nodeType != goog.dom.NodeType.ELEMENT) {
- node = forward ? node.nextSibling : node.previousSibling;
- }
-
- return /** @type {Element} */ (node);
-};
-
-
-/**
- * Returns the next node in source order from the given node.
- * @param {Node} node The node.
- * @return {Node} The next node in the DOM tree, or null if this was the last
- * node.
- */
-goog.dom.getNextNode = function(node) {
- if (!node) {
- return null;
- }
-
- if (node.firstChild) {
- return node.firstChild;
- }
-
- while (node && !node.nextSibling) {
- node = node.parentNode;
- }
-
- return node ? node.nextSibling : null;
-};
-
-
-/**
- * Returns the previous node in source order from the given node.
- * @param {Node} node The node.
- * @return {Node} The previous node in the DOM tree, or null if this was the
- * first node.
- */
-goog.dom.getPreviousNode = function(node) {
- if (!node) {
- return null;
- }
-
- if (!node.previousSibling) {
- return node.parentNode;
- }
-
- node = node.previousSibling;
- while (node && node.lastChild) {
- node = node.lastChild;
- }
-
- return node;
-};
-
-
-/**
- * Whether the object looks like a DOM node.
- * @param {?} obj The object being tested for node likeness.
- * @return {boolean} Whether the object looks like a DOM node.
- */
-goog.dom.isNodeLike = function(obj) {
- return goog.isObject(obj) && obj.nodeType > 0;
-};
-
-
-/**
- * Whether the object looks like an Element.
- * @param {?} obj The object being tested for Element likeness.
- * @return {boolean} Whether the object looks like an Element.
- */
-goog.dom.isElement = function(obj) {
- return goog.isObject(obj) && obj.nodeType == goog.dom.NodeType.ELEMENT;
-};
-
-
-/**
- * Returns true if the specified value is a Window object. This includes the
- * global window for HTML pages, and iframe windows.
- * @param {?} obj Variable to test.
- * @return {boolean} Whether the variable is a window.
- */
-goog.dom.isWindow = function(obj) {
- return goog.isObject(obj) && obj['window'] == obj;
-};
-
-
-/**
- * Returns an element's parent, if it's an Element.
- * @param {Element} element The DOM element.
- * @return {Element} The parent, or null if not an Element.
- */
-goog.dom.getParentElement = function(element) {
- var parent;
- if (goog.dom.BrowserFeature.CAN_USE_PARENT_ELEMENT_PROPERTY) {
- var isIe9 = goog.userAgent.IE && goog.userAgent.isVersionOrHigher('9') &&
- !goog.userAgent.isVersionOrHigher('10');
- // SVG elements in IE9 can't use the parentElement property.
- // goog.global['SVGElement'] is not defined in IE9 quirks mode.
- if (!(isIe9 && goog.global['SVGElement'] &&
- element instanceof goog.global['SVGElement'])) {
- parent = element.parentElement;
- if (parent) {
- return parent;
- }
- }
- }
- parent = element.parentNode;
- return goog.dom.isElement(parent) ? /** @type {!Element} */ (parent) : null;
-};
-
-
-/**
- * Whether a node contains another node.
- * @param {?Node} parent The node that should contain the other node.
- * @param {?Node} descendant The node to test presence of.
- * @return {boolean} Whether the parent node contains the descendent node.
- */
-goog.dom.contains = function(parent, descendant) {
- if (!parent || !descendant) {
- return false;
- }
- // We use browser specific methods for this if available since it is faster
- // that way.
-
- // IE DOM
- if (parent.contains && descendant.nodeType == goog.dom.NodeType.ELEMENT) {
- return parent == descendant || parent.contains(descendant);
- }
-
- // W3C DOM Level 3
- if (typeof parent.compareDocumentPosition != 'undefined') {
- return parent == descendant ||
- Boolean(parent.compareDocumentPosition(descendant) & 16);
- }
-
- // W3C DOM Level 1
- while (descendant && parent != descendant) {
- descendant = descendant.parentNode;
- }
- return descendant == parent;
-};
-
-
-/**
- * Compares the document order of two nodes, returning 0 if they are the same
- * node, a negative number if node1 is before node2, and a positive number if
- * node2 is before node1. Note that we compare the order the tags appear in the
- * document so in the tree <b><i>text</i></b> the B node is considered to be
- * before the I node.
- *
- * @param {Node} node1 The first node to compare.
- * @param {Node} node2 The second node to compare.
- * @return {number} 0 if the nodes are the same node, a negative number if node1
- * is before node2, and a positive number if node2 is before node1.
- */
-goog.dom.compareNodeOrder = function(node1, node2) {
- // Fall out quickly for equality.
- if (node1 == node2) {
- return 0;
- }
-
- // Use compareDocumentPosition where available
- if (node1.compareDocumentPosition) {
- // 4 is the bitmask for FOLLOWS.
- return node1.compareDocumentPosition(node2) & 2 ? 1 : -1;
- }
-
- // Special case for document nodes on IE 7 and 8.
- if (goog.userAgent.IE && !goog.userAgent.isDocumentModeOrHigher(9)) {
- if (node1.nodeType == goog.dom.NodeType.DOCUMENT) {
- return -1;
- }
- if (node2.nodeType == goog.dom.NodeType.DOCUMENT) {
- return 1;
- }
- }
-
- // Process in IE using sourceIndex - we check to see if the first node has
- // a source index or if its parent has one.
- if ('sourceIndex' in node1 ||
- (node1.parentNode && 'sourceIndex' in node1.parentNode)) {
- var isElement1 = node1.nodeType == goog.dom.NodeType.ELEMENT;
- var isElement2 = node2.nodeType == goog.dom.NodeType.ELEMENT;
-
- if (isElement1 && isElement2) {
- return node1.sourceIndex - node2.sourceIndex;
- } else {
- var parent1 = node1.parentNode;
- var parent2 = node2.parentNode;
-
- if (parent1 == parent2) {
- return goog.dom.compareSiblingOrder_(node1, node2);
- }
-
- if (!isElement1 && goog.dom.contains(parent1, node2)) {
- return -1 * goog.dom.compareParentsDescendantNodeIe_(node1, node2);
- }
-
-
- if (!isElement2 && goog.dom.contains(parent2, node1)) {
- return goog.dom.compareParentsDescendantNodeIe_(node2, node1);
- }
-
- return (isElement1 ? node1.sourceIndex : parent1.sourceIndex) -
- (isElement2 ? node2.sourceIndex : parent2.sourceIndex);
- }
- }
-
- // For Safari, we compare ranges.
- var doc = goog.dom.getOwnerDocument(node1);
-
- var range1, range2;
- range1 = doc.createRange();
- range1.selectNode(node1);
- range1.collapse(true);
-
- range2 = doc.createRange();
- range2.selectNode(node2);
- range2.collapse(true);
-
- return range1.compareBoundaryPoints(
- goog.global['Range'].START_TO_END, range2);
-};
-
-
-/**
- * Utility function to compare the position of two nodes, when
- * {@code textNode}'s parent is an ancestor of {@code node}. If this entry
- * condition is not met, this function will attempt to reference a null object.
- * @param {!Node} textNode The textNode to compare.
- * @param {Node} node The node to compare.
- * @return {number} -1 if node is before textNode, +1 otherwise.
- * @private
- */
-goog.dom.compareParentsDescendantNodeIe_ = function(textNode, node) {
- var parent = textNode.parentNode;
- if (parent == node) {
- // If textNode is a child of node, then node comes first.
- return -1;
- }
- var sibling = node;
- while (sibling.parentNode != parent) {
- sibling = sibling.parentNode;
- }
- return goog.dom.compareSiblingOrder_(sibling, textNode);
-};
-
-
-/**
- * Utility function to compare the position of two nodes known to be non-equal
- * siblings.
- * @param {Node} node1 The first node to compare.
- * @param {!Node} node2 The second node to compare.
- * @return {number} -1 if node1 is before node2, +1 otherwise.
- * @private
- */
-goog.dom.compareSiblingOrder_ = function(node1, node2) {
- var s = node2;
- while ((s = s.previousSibling)) {
- if (s == node1) {
- // We just found node1 before node2.
- return -1;
- }
- }
-
- // Since we didn't find it, node1 must be after node2.
- return 1;
-};
-
-
-/**
- * Find the deepest common ancestor of the given nodes.
- * @param {...Node} var_args The nodes to find a common ancestor of.
- * @return {Node} The common ancestor of the nodes, or null if there is none.
- * null will only be returned if two or more of the nodes are from different
- * documents.
- */
-goog.dom.findCommonAncestor = function(var_args) {
- var i, count = arguments.length;
- if (!count) {
- return null;
- } else if (count == 1) {
- return arguments[0];
- }
-
- var paths = [];
- var minLength = Infinity;
- for (i = 0; i < count; i++) {
- // Compute the list of ancestors.
- var ancestors = [];
- var node = arguments[i];
- while (node) {
- ancestors.unshift(node);
- node = node.parentNode;
- }
-
- // Save the list for comparison.
- paths.push(ancestors);
- minLength = Math.min(minLength, ancestors.length);
- }
- var output = null;
- for (i = 0; i < minLength; i++) {
- var first = paths[0][i];
- for (var j = 1; j < count; j++) {
- if (first != paths[j][i]) {
- return output;
- }
- }
- output = first;
- }
- return output;
-};
-
-
-/**
- * Returns the owner document for a node.
- * @param {Node|Window} node The node to get the document for.
- * @return {!Document} The document owning the node.
- */
-goog.dom.getOwnerDocument = function(node) {
- // TODO(nnaze): Update param signature to be non-nullable.
- goog.asserts.assert(node, 'Node cannot be null or undefined.');
- return /** @type {!Document} */ (
- node.nodeType == goog.dom.NodeType.DOCUMENT ? node : node.ownerDocument ||
- node.document);
-};
-
-
-/**
- * Cross-browser function for getting the document element of a frame or iframe.
- * @param {Element} frame Frame element.
- * @return {!Document} The frame content document.
- */
-goog.dom.getFrameContentDocument = function(frame) {
- return frame.contentDocument ||
- /** @type {!HTMLFrameElement} */ (frame).contentWindow.document;
-};
-
-
-/**
- * Cross-browser function for getting the window of a frame or iframe.
- * @param {Element} frame Frame element.
- * @return {Window} The window associated with the given frame, or null if none
- * exists.
- */
-goog.dom.getFrameContentWindow = function(frame) {
- try {
- return frame.contentWindow ||
- (frame.contentDocument ? goog.dom.getWindow(frame.contentDocument) :
- null);
- } catch (e) {
- // NOTE(user): In IE8, checking the contentWindow or contentDocument
- // properties will throw a "Unspecified Error" exception if the iframe is
- // not inserted in the DOM. If we get this we can be sure that no window
- // exists, so return null.
- }
- return null;
-};
-
-
-/**
- * Sets the text content of a node, with cross-browser support.
- * @param {Node} node The node to change the text content of.
- * @param {string|number} text The value that should replace the node's content.
- */
-goog.dom.setTextContent = function(node, text) {
- goog.asserts.assert(
- node != null,
- 'goog.dom.setTextContent expects a non-null value for node');
-
- if ('textContent' in node) {
- node.textContent = text;
- } else if (node.nodeType == goog.dom.NodeType.TEXT) {
- node.data = text;
- } else if (
- node.firstChild && node.firstChild.nodeType == goog.dom.NodeType.TEXT) {
- // If the first child is a text node we just change its data and remove the
- // rest of the children.
- while (node.lastChild != node.firstChild) {
- node.removeChild(node.lastChild);
- }
- node.firstChild.data = text;
- } else {
- goog.dom.removeChildren(node);
- var doc = goog.dom.getOwnerDocument(node);
- node.appendChild(doc.createTextNode(String(text)));
- }
-};
-
-
-/**
- * Gets the outerHTML of a node, which islike innerHTML, except that it
- * actually contains the HTML of the node itself.
- * @param {Element} element The element to get the HTML of.
- * @return {string} The outerHTML of the given element.
- */
-goog.dom.getOuterHtml = function(element) {
- goog.asserts.assert(
- element !== null,
- 'goog.dom.getOuterHtml expects a non-null value for element');
- // IE, Opera and WebKit all have outerHTML.
- if ('outerHTML' in element) {
- return element.outerHTML;
- } else {
- var doc = goog.dom.getOwnerDocument(element);
- var div = doc.createElement(goog.dom.TagName.DIV);
- div.appendChild(element.cloneNode(true));
- return div.innerHTML;
- }
-};
-
-
-/**
- * Finds the first descendant node that matches the filter function, using
- * a depth first search. This function offers the most general purpose way
- * of finding a matching element. You may also wish to consider
- * {@code goog.dom.query} which can express many matching criteria using
- * CSS selector expressions. These expressions often result in a more
- * compact representation of the desired result.
- * @see goog.dom.query
- *
- * @param {Node} root The root of the tree to search.
- * @param {function(Node) : boolean} p The filter function.
- * @return {Node|undefined} The found node or undefined if none is found.
- */
-goog.dom.findNode = function(root, p) {
- var rv = [];
- var found = goog.dom.findNodes_(root, p, rv, true);
- return found ? rv[0] : undefined;
-};
-
-
-/**
- * Finds all the descendant nodes that match the filter function, using a
- * a depth first search. This function offers the most general-purpose way
- * of finding a set of matching elements. You may also wish to consider
- * {@code goog.dom.query} which can express many matching criteria using
- * CSS selector expressions. These expressions often result in a more
- * compact representation of the desired result.
-
- * @param {Node} root The root of the tree to search.
- * @param {function(Node) : boolean} p The filter function.
- * @return {!Array<!Node>} The found nodes or an empty array if none are found.
- */
-goog.dom.findNodes = function(root, p) {
- var rv = [];
- goog.dom.findNodes_(root, p, rv, false);
- return rv;
-};
-
-
-/**
- * Finds the first or all the descendant nodes that match the filter function,
- * using a depth first search.
- * @param {Node} root The root of the tree to search.
- * @param {function(Node) : boolean} p The filter function.
- * @param {!Array<!Node>} rv The found nodes are added to this array.
- * @param {boolean} findOne If true we exit after the first found node.
- * @return {boolean} Whether the search is complete or not. True in case findOne
- * is true and the node is found. False otherwise.
- * @private
- */
-goog.dom.findNodes_ = function(root, p, rv, findOne) {
- if (root != null) {
- var child = root.firstChild;
- while (child) {
- if (p(child)) {
- rv.push(child);
- if (findOne) {
- return true;
- }
- }
- if (goog.dom.findNodes_(child, p, rv, findOne)) {
- return true;
- }
- child = child.nextSibling;
- }
- }
- return false;
-};
-
-
-/**
- * Map of tags whose content to ignore when calculating text length.
- * @private {!Object<string, number>}
- * @const
- */
-goog.dom.TAGS_TO_IGNORE_ = {
- 'SCRIPT': 1,
- 'STYLE': 1,
- 'HEAD': 1,
- 'IFRAME': 1,
- 'OBJECT': 1
-};
-
-
-/**
- * Map of tags which have predefined values with regard to whitespace.
- * @private {!Object<string, string>}
- * @const
- */
-goog.dom.PREDEFINED_TAG_VALUES_ = {
- 'IMG': ' ',
- 'BR': '\n'
-};
-
-
-/**
- * Returns true if the element has a tab index that allows it to receive
- * keyboard focus (tabIndex >= 0), false otherwise. Note that some elements
- * natively support keyboard focus, even if they have no tab index.
- * @param {!Element} element Element to check.
- * @return {boolean} Whether the element has a tab index that allows keyboard
- * focus.
- */
-goog.dom.isFocusableTabIndex = function(element) {
- return goog.dom.hasSpecifiedTabIndex_(element) &&
- goog.dom.isTabIndexFocusable_(element);
-};
-
-
-/**
- * Enables or disables keyboard focus support on the element via its tab index.
- * Only elements for which {@link goog.dom.isFocusableTabIndex} returns true
- * (or elements that natively support keyboard focus, like form elements) can
- * receive keyboard focus. See http://go/tabindex for more info.
- * @param {Element} element Element whose tab index is to be changed.
- * @param {boolean} enable Whether to set or remove a tab index on the element
- * that supports keyboard focus.
- */
-goog.dom.setFocusableTabIndex = function(element, enable) {
- if (enable) {
- element.tabIndex = 0;
- } else {
- // Set tabIndex to -1 first, then remove it. This is a workaround for
- // Safari (confirmed in version 4 on Windows). When removing the attribute
- // without setting it to -1 first, the element remains keyboard focusable
- // despite not having a tabIndex attribute anymore.
- element.tabIndex = -1;
- element.removeAttribute('tabIndex'); // Must be camelCase!
- }
-};
-
-
-/**
- * Returns true if the element can be focused, i.e. it has a tab index that
- * allows it to receive keyboard focus (tabIndex >= 0), or it is an element
- * that natively supports keyboard focus.
- * @param {!Element} element Element to check.
- * @return {boolean} Whether the element allows keyboard focus.
- */
-goog.dom.isFocusable = function(element) {
- var focusable;
- // Some elements can have unspecified tab index and still receive focus.
- if (goog.dom.nativelySupportsFocus_(element)) {
- // Make sure the element is not disabled ...
- focusable = !element.disabled &&
- // ... and if a tab index is specified, it allows focus.
- (!goog.dom.hasSpecifiedTabIndex_(element) ||
- goog.dom.isTabIndexFocusable_(element));
- } else {
- focusable = goog.dom.isFocusableTabIndex(element);
- }
-
- // IE requires elements to be visible in order to focus them.
- return focusable && goog.userAgent.IE ?
- goog.dom.hasNonZeroBoundingRect_(/** @type {!HTMLElement} */ (element)) :
- focusable;
-};
-
-
-/**
- * Returns true if the element has a specified tab index.
- * @param {!Element} element Element to check.
- * @return {boolean} Whether the element has a specified tab index.
- * @private
- */
-goog.dom.hasSpecifiedTabIndex_ = function(element) {
- // IE returns 0 for an unset tabIndex, so we must use getAttributeNode(),
- // which returns an object with a 'specified' property if tabIndex is
- // specified. This works on other browsers, too.
- var attrNode = element.getAttributeNode('tabindex'); // Must be lowercase!
- return goog.isDefAndNotNull(attrNode) && attrNode.specified;
-};
-
-
-/**
- * Returns true if the element's tab index allows the element to be focused.
- * @param {!Element} element Element to check.
- * @return {boolean} Whether the element's tab index allows focus.
- * @private
- */
-goog.dom.isTabIndexFocusable_ = function(element) {
- var index = /** @type {!HTMLElement} */ (element).tabIndex;
- // NOTE: IE9 puts tabIndex in 16-bit int, e.g. -2 is 65534.
- return goog.isNumber(index) && index >= 0 && index < 32768;
-};
-
-
-/**
- * Returns true if the element is focusable even when tabIndex is not set.
- * @param {!Element} element Element to check.
- * @return {boolean} Whether the element natively supports focus.
- * @private
- */
-goog.dom.nativelySupportsFocus_ = function(element) {
- return element.tagName == goog.dom.TagName.A ||
- element.tagName == goog.dom.TagName.INPUT ||
- element.tagName == goog.dom.TagName.TEXTAREA ||
- element.tagName == goog.dom.TagName.SELECT ||
- element.tagName == goog.dom.TagName.BUTTON;
-};
-
-
-/**
- * Returns true if the element has a bounding rectangle that would be visible
- * (i.e. its width and height are greater than zero).
- * @param {!HTMLElement} element Element to check.
- * @return {boolean} Whether the element has a non-zero bounding rectangle.
- * @private
- */
-goog.dom.hasNonZeroBoundingRect_ = function(element) {
- var rect;
- if (!goog.isFunction(element['getBoundingClientRect']) ||
- // In IE, getBoundingClientRect throws on detached nodes.
- (goog.userAgent.IE && element.parentElement == null)) {
- rect = {'height': element.offsetHeight, 'width': element.offsetWidth};
- } else {
- rect = element.getBoundingClientRect();
- }
- return goog.isDefAndNotNull(rect) && rect.height > 0 && rect.width > 0;
-};
-
-
-/**
- * Returns the text content of the current node, without markup and invisible
- * symbols. New lines are stripped and whitespace is collapsed,
- * such that each character would be visible.
- *
- * In browsers that support it, innerText is used. Other browsers attempt to
- * simulate it via node traversal. Line breaks are canonicalized in IE.
- *
- * @param {Node} node The node from which we are getting content.
- * @return {string} The text content.
- */
-goog.dom.getTextContent = function(node) {
- var textContent;
- // Note(arv): IE9, Opera, and Safari 3 support innerText but they include
- // text nodes in script tags. So we revert to use a user agent test here.
- if (goog.dom.BrowserFeature.CAN_USE_INNER_TEXT && node !== null &&
- ('innerText' in node)) {
- textContent = goog.string.canonicalizeNewlines(node.innerText);
- // Unfortunately .innerText() returns text with &shy; symbols
- // We need to filter it out and then remove duplicate whitespaces
- } else {
- var buf = [];
- goog.dom.getTextContent_(node, buf, true);
- textContent = buf.join('');
- }
-
- // Strip &shy; entities. goog.format.insertWordBreaks inserts them in Opera.
- textContent = textContent.replace(/ \xAD /g, ' ').replace(/\xAD/g, '');
- // Strip &#8203; entities. goog.format.insertWordBreaks inserts them in IE8.
- textContent = textContent.replace(/\u200B/g, '');
-
- // Skip this replacement on old browsers with working innerText, which
- // automatically turns &nbsp; into ' ' and / +/ into ' ' when reading
- // innerText.
- if (!goog.dom.BrowserFeature.CAN_USE_INNER_TEXT) {
- textContent = textContent.replace(/ +/g, ' ');
- }
- if (textContent != ' ') {
- textContent = textContent.replace(/^\s*/, '');
- }
-
- return textContent;
-};
-
-
-/**
- * Returns the text content of the current node, without markup.
- *
- * Unlike {@code getTextContent} this method does not collapse whitespaces
- * or normalize lines breaks.
- *
- * @param {Node} node The node from which we are getting content.
- * @return {string} The raw text content.
- */
-goog.dom.getRawTextContent = function(node) {
- var buf = [];
- goog.dom.getTextContent_(node, buf, false);
-
- return buf.join('');
-};
-
-
-/**
- * Recursive support function for text content retrieval.
- *
- * @param {Node} node The node from which we are getting content.
- * @param {Array<string>} buf string buffer.
- * @param {boolean} normalizeWhitespace Whether to normalize whitespace.
- * @private
- */
-goog.dom.getTextContent_ = function(node, buf, normalizeWhitespace) {
- if (node.nodeName in goog.dom.TAGS_TO_IGNORE_) {
- // ignore certain tags
- } else if (node.nodeType == goog.dom.NodeType.TEXT) {
- if (normalizeWhitespace) {
- buf.push(String(node.nodeValue).replace(/(\r\n|\r|\n)/g, ''));
- } else {
- buf.push(node.nodeValue);
- }
- } else if (node.nodeName in goog.dom.PREDEFINED_TAG_VALUES_) {
- buf.push(goog.dom.PREDEFINED_TAG_VALUES_[node.nodeName]);
- } else {
- var child = node.firstChild;
- while (child) {
- goog.dom.getTextContent_(child, buf, normalizeWhitespace);
- child = child.nextSibling;
- }
- }
-};
-
-
-/**
- * Returns the text length of the text contained in a node, without markup. This
- * is equivalent to the selection length if the node was selected, or the number
- * of cursor movements to traverse the node. Images & BRs take one space. New
- * lines are ignored.
- *
- * @param {Node} node The node whose text content length is being calculated.
- * @return {number} The length of {@code node}'s text content.
- */
-goog.dom.getNodeTextLength = function(node) {
- return goog.dom.getTextContent(node).length;
-};
-
-
-/**
- * Returns the text offset of a node relative to one of its ancestors. The text
- * length is the same as the length calculated by goog.dom.getNodeTextLength.
- *
- * @param {Node} node The node whose offset is being calculated.
- * @param {Node=} opt_offsetParent The node relative to which the offset will
- * be calculated. Defaults to the node's owner document's body.
- * @return {number} The text offset.
- */
-goog.dom.getNodeTextOffset = function(node, opt_offsetParent) {
- var root = opt_offsetParent || goog.dom.getOwnerDocument(node).body;
- var buf = [];
- while (node && node != root) {
- var cur = node;
- while ((cur = cur.previousSibling)) {
- buf.unshift(goog.dom.getTextContent(cur));
- }
- node = node.parentNode;
- }
- // Trim left to deal with FF cases when there might be line breaks and empty
- // nodes at the front of the text
- return goog.string.trimLeft(buf.join('')).replace(/ +/g, ' ').length;
-};
-
-
-/**
- * Returns the node at a given offset in a parent node. If an object is
- * provided for the optional third parameter, the node and the remainder of the
- * offset will stored as properties of this object.
- * @param {Node} parent The parent node.
- * @param {number} offset The offset into the parent node.
- * @param {Object=} opt_result Object to be used to store the return value. The
- * return value will be stored in the form {node: Node, remainder: number}
- * if this object is provided.
- * @return {Node} The node at the given offset.
- */
-goog.dom.getNodeAtOffset = function(parent, offset, opt_result) {
- var stack = [parent], pos = 0, cur = null;
- while (stack.length > 0 && pos < offset) {
- cur = stack.pop();
- if (cur.nodeName in goog.dom.TAGS_TO_IGNORE_) {
- // ignore certain tags
- } else if (cur.nodeType == goog.dom.NodeType.TEXT) {
- var text = cur.nodeValue.replace(/(\r\n|\r|\n)/g, '').replace(/ +/g, ' ');
- pos += text.length;
- } else if (cur.nodeName in goog.dom.PREDEFINED_TAG_VALUES_) {
- pos += goog.dom.PREDEFINED_TAG_VALUES_[cur.nodeName].length;
- } else {
- for (var i = cur.childNodes.length - 1; i >= 0; i--) {
- stack.push(cur.childNodes[i]);
- }
- }
- }
- if (goog.isObject(opt_result)) {
- opt_result.remainder = cur ? cur.nodeValue.length + offset - pos - 1 : 0;
- opt_result.node = cur;
- }
-
- return cur;
-};
-
-
-/**
- * Returns true if the object is a {@code NodeList}. To qualify as a NodeList,
- * the object must have a numeric length property and an item function (which
- * has type 'string' on IE for some reason).
- * @param {Object} val Object to test.
- * @return {boolean} Whether the object is a NodeList.
- */
-goog.dom.isNodeList = function(val) {
- // TODO(attila): Now the isNodeList is part of goog.dom we can use
- // goog.userAgent to make this simpler.
- // A NodeList must have a length property of type 'number' on all platforms.
- if (val && typeof val.length == 'number') {
- // A NodeList is an object everywhere except Safari, where it's a function.
- if (goog.isObject(val)) {
- // A NodeList must have an item function (on non-IE platforms) or an item
- // property of type 'string' (on IE).
- return typeof val.item == 'function' || typeof val.item == 'string';
- } else if (goog.isFunction(val)) {
- // On Safari, a NodeList is a function with an item property that is also
- // a function.
- return typeof val.item == 'function';
- }
- }
-
- // Not a NodeList.
- return false;
-};
-
-
-/**
- * Walks up the DOM hierarchy returning the first ancestor that has the passed
- * tag name and/or class name. If the passed element matches the specified
- * criteria, the element itself is returned.
- * @param {Node} element The DOM node to start with.
- * @param {?(goog.dom.TagName|string)=} opt_tag The tag name to match (or
- * null/undefined to match only based on class name).
- * @param {?string=} opt_class The class name to match (or null/undefined to
- * match only based on tag name).
- * @param {number=} opt_maxSearchSteps Maximum number of levels to search up the
- * dom.
- * @return {Element} The first ancestor that matches the passed criteria, or
- * null if no match is found.
- */
-goog.dom.getAncestorByTagNameAndClass = function(
- element, opt_tag, opt_class, opt_maxSearchSteps) {
- if (!opt_tag && !opt_class) {
- return null;
- }
- var tagName = opt_tag ? opt_tag.toUpperCase() : null;
- return /** @type {Element} */ (goog.dom.getAncestor(element, function(node) {
- return (!tagName || node.nodeName == tagName) &&
- (!opt_class ||
- goog.isString(node.className) &&
- goog.array.contains(node.className.split(/\s+/), opt_class));
- }, true, opt_maxSearchSteps));
-};
-
-
-/**
- * Walks up the DOM hierarchy returning the first ancestor that has the passed
- * class name. If the passed element matches the specified criteria, the
- * element itself is returned.
- * @param {Node} element The DOM node to start with.
- * @param {string} className The class name to match.
- * @param {number=} opt_maxSearchSteps Maximum number of levels to search up the
- * dom.
- * @return {Element} The first ancestor that matches the passed criteria, or
- * null if none match.
- */
-goog.dom.getAncestorByClass = function(element, className, opt_maxSearchSteps) {
- return goog.dom.getAncestorByTagNameAndClass(
- element, null, className, opt_maxSearchSteps);
-};
-
-
-/**
- * Walks up the DOM hierarchy returning the first ancestor that passes the
- * matcher function.
- * @param {Node} element The DOM node to start with.
- * @param {function(Node) : boolean} matcher A function that returns true if the
- * passed node matches the desired criteria.
- * @param {boolean=} opt_includeNode If true, the node itself is included in
- * the search (the first call to the matcher will pass startElement as
- * the node to test).
- * @param {number=} opt_maxSearchSteps Maximum number of levels to search up the
- * dom.
- * @return {Node} DOM node that matched the matcher, or null if there was
- * no match.
- */
-goog.dom.getAncestor = function(
- element, matcher, opt_includeNode, opt_maxSearchSteps) {
- if (!opt_includeNode) {
- element = element.parentNode;
- }
- var steps = 0;
- while (element &&
- (opt_maxSearchSteps == null || steps <= opt_maxSearchSteps)) {
- goog.asserts.assert(element.name != 'parentNode');
- if (matcher(element)) {
- return element;
- }
- element = element.parentNode;
- steps++;
- }
- // Reached the root of the DOM without a match
- return null;
-};
-
-
-/**
- * Determines the active element in the given document.
- * @param {Document} doc The document to look in.
- * @return {Element} The active element.
- */
-goog.dom.getActiveElement = function(doc) {
- try {
- return doc && doc.activeElement;
- } catch (e) {
- // NOTE(nicksantos): Sometimes, evaluating document.activeElement in IE
- // throws an exception. I'm not 100% sure why, but I suspect it chokes
- // on document.activeElement if the activeElement has been recently
- // removed from the DOM by a JS operation.
- //
- // We assume that an exception here simply means
- // "there is no active element."
- }
-
- return null;
-};
-
-
-/**
- * Gives the current devicePixelRatio.
- *
- * By default, this is the value of window.devicePixelRatio (which should be
- * preferred if present).
- *
- * If window.devicePixelRatio is not present, the ratio is calculated with
- * window.matchMedia, if present. Otherwise, gives 1.0.
- *
- * Some browsers (including Chrome) consider the browser zoom level in the pixel
- * ratio, so the value may change across multiple calls.
- *
- * @return {number} The number of actual pixels per virtual pixel.
- */
-goog.dom.getPixelRatio = function() {
- var win = goog.dom.getWindow();
- if (goog.isDef(win.devicePixelRatio)) {
- return win.devicePixelRatio;
- } else if (win.matchMedia) {
- return goog.dom.matchesPixelRatio_(.75) ||
- goog.dom.matchesPixelRatio_(1.5) || goog.dom.matchesPixelRatio_(2) ||
- goog.dom.matchesPixelRatio_(3) || 1;
- }
- return 1;
-};
-
-
-/**
- * Calculates a mediaQuery to check if the current device supports the
- * given actual to virtual pixel ratio.
- * @param {number} pixelRatio The ratio of actual pixels to virtual pixels.
- * @return {number} pixelRatio if applicable, otherwise 0.
- * @private
- */
-goog.dom.matchesPixelRatio_ = function(pixelRatio) {
- var win = goog.dom.getWindow();
- var query =
- ('(-webkit-min-device-pixel-ratio: ' + pixelRatio + '),' +
- '(min--moz-device-pixel-ratio: ' + pixelRatio + '),' +
- '(min-resolution: ' + pixelRatio + 'dppx)');
- return win.matchMedia(query).matches ? pixelRatio : 0;
-};
-
-
-
-/**
- * Create an instance of a DOM helper with a new document object.
- * @param {Document=} opt_document Document object to associate with this
- * DOM helper.
- * @constructor
- */
-goog.dom.DomHelper = function(opt_document) {
- /**
- * Reference to the document object to use
- * @type {!Document}
- * @private
- */
- this.document_ = opt_document || goog.global.document || document;
-};
-
-
-/**
- * Gets the dom helper object for the document where the element resides.
- * @param {Node=} opt_node If present, gets the DomHelper for this node.
- * @return {!goog.dom.DomHelper} The DomHelper.
- */
-goog.dom.DomHelper.prototype.getDomHelper = goog.dom.getDomHelper;
-
-
-/**
- * Sets the document object.
- * @param {!Document} document Document object.
- */
-goog.dom.DomHelper.prototype.setDocument = function(document) {
- this.document_ = document;
-};
-
-
-/**
- * Gets the document object being used by the dom library.
- * @return {!Document} Document object.
- */
-goog.dom.DomHelper.prototype.getDocument = function() {
- return this.document_;
-};
-
-
-/**
- * Alias for {@code getElementById}. If a DOM node is passed in then we just
- * return that.
- * @param {string|Element} element Element ID or a DOM node.
- * @return {Element} The element with the given ID, or the node passed in.
- */
-goog.dom.DomHelper.prototype.getElement = function(element) {
- return goog.dom.getElementHelper_(this.document_, element);
-};
-
-
-/**
- * Gets an element by id, asserting that the element is found.
- *
- * This is used when an element is expected to exist, and should fail with
- * an assertion error if it does not (if assertions are enabled).
- *
- * @param {string} id Element ID.
- * @return {!Element} The element with the given ID, if it exists.
- */
-goog.dom.DomHelper.prototype.getRequiredElement = function(id) {
- return goog.dom.getRequiredElementHelper_(this.document_, id);
-};
-
-
/**
- * Alias for {@code getElement}.
- * @param {string|Element} element Element ID or a DOM node.
- * @return {Element} The element with the given ID, or the node passed in.
- * @deprecated Use {@link goog.dom.DomHelper.prototype.getElement} instead.
- */
-goog.dom.DomHelper.prototype.$ = goog.dom.DomHelper.prototype.getElement;
-
-
-/**
- * Looks up elements by both tag and class name, using browser native functions
- * ({@code querySelectorAll}, {@code getElementsByTagName} or
- * {@code getElementsByClassName}) where possible. The returned array is a live
- * NodeList or a static list depending on the code path taken.
- *
- * @see goog.dom.query
- *
- * @param {?string=} opt_tag Element tag name or * for all tags.
- * @param {?string=} opt_class Optional class name.
- * @param {(Document|Element)=} opt_el Optional element to look in.
- * @return {!IArrayLike<!Element>} Array-like list of elements (only a length
- * property and numerical indices are guaranteed to exist).
- */
-goog.dom.DomHelper.prototype.getElementsByTagNameAndClass = function(
- opt_tag, opt_class, opt_el) {
- return goog.dom.getElementsByTagNameAndClass_(
- this.document_, opt_tag, opt_class, opt_el);
-};
-
-
-/**
- * Returns an array of all the elements with the provided className.
- * @see {goog.dom.query}
- * @param {string} className the name of the class to look for.
- * @param {Element|Document=} opt_el Optional element to look in.
- * @return {!IArrayLike<!Element>} The items found with the class name provided.
- */
-goog.dom.DomHelper.prototype.getElementsByClass = function(className, opt_el) {
- var doc = opt_el || this.document_;
- return goog.dom.getElementsByClass(className, doc);
-};
-
-
-/**
- * Returns the first element we find matching the provided class name.
- * @see {goog.dom.query}
- * @param {string} className the name of the class to look for.
- * @param {(Element|Document)=} opt_el Optional element to look in.
- * @return {Element} The first item found with the class name provided.
- */
-goog.dom.DomHelper.prototype.getElementByClass = function(className, opt_el) {
- var doc = opt_el || this.document_;
- return goog.dom.getElementByClass(className, doc);
-};
-
-
-/**
- * Ensures an element with the given className exists, and then returns the
- * first element with the provided className.
- * @see {goog.dom.query}
- * @param {string} className the name of the class to look for.
- * @param {(!Element|!Document)=} opt_root Optional element or document to look
- * in.
- * @return {!Element} The first item found with the class name provided.
- * @throws {goog.asserts.AssertionError} Thrown if no element is found.
- */
-goog.dom.DomHelper.prototype.getRequiredElementByClass = function(
- className, opt_root) {
- var root = opt_root || this.document_;
- return goog.dom.getRequiredElementByClass(className, root);
-};
-
-
-/**
- * Alias for {@code getElementsByTagNameAndClass}.
- * @deprecated Use DomHelper getElementsByTagNameAndClass.
- * @see goog.dom.query
- *
- * @param {?string=} opt_tag Element tag name.
- * @param {?string=} opt_class Optional class name.
- * @param {Element=} opt_el Optional element to look in.
- * @return {!IArrayLike<!Element>} Array-like list of elements (only a length
- * property and numerical indices are guaranteed to exist).
- */
-goog.dom.DomHelper.prototype.$$ =
- goog.dom.DomHelper.prototype.getElementsByTagNameAndClass;
-
-
-/**
- * Sets a number of properties on a node.
- * @param {Element} element DOM node to set properties on.
- * @param {Object} properties Hash of property:value pairs.
- */
-goog.dom.DomHelper.prototype.setProperties = goog.dom.setProperties;
-
-
-/**
- * Gets the dimensions of the viewport.
- * @param {Window=} opt_window Optional window element to test. Defaults to
- * the window of the Dom Helper.
- * @return {!goog.math.Size} Object with values 'width' and 'height'.
- */
-goog.dom.DomHelper.prototype.getViewportSize = function(opt_window) {
- // TODO(arv): This should not take an argument. That breaks the rule of a
- // a DomHelper representing a single frame/window/document.
- return goog.dom.getViewportSize(opt_window || this.getWindow());
-};
-
-
-/**
- * Calculates the height of the document.
- *
- * @return {number} The height of the document.
- */
-goog.dom.DomHelper.prototype.getDocumentHeight = function() {
- return goog.dom.getDocumentHeight_(this.getWindow());
-};
-
-
-/**
- * Typedef for use with goog.dom.createDom and goog.dom.append.
- * @typedef {Object|string|Array|NodeList}
- */
-goog.dom.Appendable;
-
-
-/**
- * Returns a dom node with a set of attributes. This function accepts varargs
- * for subsequent nodes to be added. Subsequent nodes will be added to the
- * first node as childNodes.
- *
- * So:
- * <code>createDom('div', null, createDom('p'), createDom('p'));</code>
- * would return a div with two child paragraphs
- *
- * An easy way to move all child nodes of an existing element to a new parent
- * element is:
- * <code>createDom('div', null, oldElement.childNodes);</code>
- * which will remove all child nodes from the old element and add them as
- * child nodes of the new DIV.
- *
- * @param {string} tagName Tag to create.
- * @param {Object|string=} opt_attributes If object, then a map of name-value
- * pairs for attributes. If a string, then this is the className of the new
- * element.
- * @param {...goog.dom.Appendable} var_args Further DOM nodes or
- * strings for text nodes. If one of the var_args is an array or
- * NodeList, its elements will be added as childNodes instead.
- * @return {!Element} Reference to a DOM node.
- */
-goog.dom.DomHelper.prototype.createDom = function(
- tagName, opt_attributes, var_args) {
- return goog.dom.createDom_(this.document_, arguments);
-};
-
-
-/**
- * Alias for {@code createDom}.
- * @param {string} tagName Tag to create.
- * @param {(Object|string)=} opt_attributes If object, then a map of name-value
- * pairs for attributes. If a string, then this is the className of the new
- * element.
- * @param {...goog.dom.Appendable} var_args Further DOM nodes or strings for
- * text nodes. If one of the var_args is an array, its children will be
- * added as childNodes instead.
- * @return {!Element} Reference to a DOM node.
- * @deprecated Use {@link goog.dom.DomHelper.prototype.createDom} instead.
- */
-goog.dom.DomHelper.prototype.$dom = goog.dom.DomHelper.prototype.createDom;
-
-
-/**
- * Creates a new element.
- * @param {string} name Tag name.
- * @return {!Element} The new element.
- */
-goog.dom.DomHelper.prototype.createElement = function(name) {
- return this.document_.createElement(name);
-};
-
-
-/**
- * Creates a new text node.
- * @param {number|string} content Content.
- * @return {!Text} The new text node.
- */
-goog.dom.DomHelper.prototype.createTextNode = function(content) {
- return this.document_.createTextNode(String(content));
-};
-
-
-/**
- * Create a table.
- * @param {number} rows The number of rows in the table. Must be >= 1.
- * @param {number} columns The number of columns in the table. Must be >= 1.
- * @param {boolean=} opt_fillWithNbsp If true, fills table entries with
- * {@code goog.string.Unicode.NBSP} characters.
- * @return {!HTMLElement} The created table.
- */
-goog.dom.DomHelper.prototype.createTable = function(
- rows, columns, opt_fillWithNbsp) {
- return goog.dom.createTable_(
- this.document_, rows, columns, !!opt_fillWithNbsp);
-};
-
-
-/**
- * Converts an HTML into a node or a document fragment. A single Node is used if
- * {@code html} only generates a single node. If {@code html} generates multiple
- * nodes then these are put inside a {@code DocumentFragment}.
- * @param {!goog.html.SafeHtml} html The HTML markup to convert.
- * @return {!Node} The resulting node.
- */
-goog.dom.DomHelper.prototype.safeHtmlToNode = function(html) {
- return goog.dom.safeHtmlToNode_(this.document_, html);
-};
-
-
-/**
- * Converts an HTML string into a node or a document fragment. A single Node
- * is used if the {@code htmlString} only generates a single node. If the
- * {@code htmlString} generates multiple nodes then these are put inside a
- * {@code DocumentFragment}.
- *
- * @param {string} htmlString The HTML string to convert.
- * @return {!Node} The resulting node.
- * @deprecated Use {@link goog.dom.DomHelper.prototype.safeHtmlToNode} instead.
- */
-goog.dom.DomHelper.prototype.htmlToDocumentFragment = function(htmlString) {
- return goog.dom.safeHtmlToNode_(this.document_,
- goog.html.legacyconversions.safeHtmlFromString(htmlString));
-};
-
-
-/**
- * Returns true if the browser is in "CSS1-compatible" (standards-compliant)
- * mode, false otherwise.
- * @return {boolean} True if in CSS1-compatible mode.
- */
-goog.dom.DomHelper.prototype.isCss1CompatMode = function() {
- return goog.dom.isCss1CompatMode_(this.document_);
-};
-
-
-/**
- * Gets the window object associated with the document.
- * @return {!Window} The window associated with the given document.
- */
-goog.dom.DomHelper.prototype.getWindow = function() {
- return goog.dom.getWindow_(this.document_);
-};
-
-
-/**
- * Gets the document scroll element.
- * @return {!Element} Scrolling element.
- */
-goog.dom.DomHelper.prototype.getDocumentScrollElement = function() {
- return goog.dom.getDocumentScrollElement_(this.document_);
-};
-
-
-/**
- * Gets the document scroll distance as a coordinate object.
- * @return {!goog.math.Coordinate} Object with properties 'x' and 'y'.
- */
-goog.dom.DomHelper.prototype.getDocumentScroll = function() {
- return goog.dom.getDocumentScroll_(this.document_);
-};
-
-
-/**
- * Determines the active element in the given document.
- * @param {Document=} opt_doc The document to look in.
- * @return {Element} The active element.
- */
-goog.dom.DomHelper.prototype.getActiveElement = function(opt_doc) {
- return goog.dom.getActiveElement(opt_doc || this.document_);
-};
-
-
-/**
- * Appends a child to a node.
- * @param {Node} parent Parent.
- * @param {Node} child Child.
- */
-goog.dom.DomHelper.prototype.appendChild = goog.dom.appendChild;
-
-
-/**
- * Appends a node with text or other nodes.
- * @param {!Node} parent The node to append nodes to.
- * @param {...goog.dom.Appendable} var_args The things to append to the node.
- * If this is a Node it is appended as is.
- * If this is a string then a text node is appended.
- * If this is an array like object then fields 0 to length - 1 are appended.
- */
-goog.dom.DomHelper.prototype.append = goog.dom.append;
-
-
-/**
- * Determines if the given node can contain children, intended to be used for
- * HTML generation.
- *
- * @param {Node} node The node to check.
- * @return {boolean} Whether the node can contain children.
- */
-goog.dom.DomHelper.prototype.canHaveChildren = goog.dom.canHaveChildren;
-
-
-/**
- * Removes all the child nodes on a DOM node.
- * @param {Node} node Node to remove children from.
- */
-goog.dom.DomHelper.prototype.removeChildren = goog.dom.removeChildren;
-
-
-/**
- * Inserts a new node before an existing reference node (i.e., as the previous
- * sibling). If the reference node has no parent, then does nothing.
- * @param {Node} newNode Node to insert.
- * @param {Node} refNode Reference node to insert before.
- */
-goog.dom.DomHelper.prototype.insertSiblingBefore = goog.dom.insertSiblingBefore;
-
-
-/**
- * Inserts a new node after an existing reference node (i.e., as the next
- * sibling). If the reference node has no parent, then does nothing.
- * @param {Node} newNode Node to insert.
- * @param {Node} refNode Reference node to insert after.
- */
-goog.dom.DomHelper.prototype.insertSiblingAfter = goog.dom.insertSiblingAfter;
-
-
-/**
- * Insert a child at a given index. If index is larger than the number of child
- * nodes that the parent currently has, the node is inserted as the last child
- * node.
- * @param {Element} parent The element into which to insert the child.
- * @param {Node} child The element to insert.
- * @param {number} index The index at which to insert the new child node. Must
- * not be negative.
- */
-goog.dom.DomHelper.prototype.insertChildAt = goog.dom.insertChildAt;
-
-
-/**
- * Removes a node from its parent.
* @param {Node} node The node to remove.
- * @return {Node} The node removed if removed; else, null.
- */
-goog.dom.DomHelper.prototype.removeNode = goog.dom.removeNode;
-
-
-/**
- * Replaces a node in the DOM tree. Will do nothing if {@code oldNode} has no
- * parent.
- * @param {Node} newNode Node to insert.
- * @param {Node} oldNode Node to replace.
- */
-goog.dom.DomHelper.prototype.replaceNode = goog.dom.replaceNode;
-
-
-/**
- * Flattens an element. That is, removes it and replace it with its children.
- * @param {Element} element The element to flatten.
- * @return {Element|undefined} The original element, detached from the document
- * tree, sans children, or undefined if the element was already not in the
- * document.
- */
-goog.dom.DomHelper.prototype.flattenElement = goog.dom.flattenElement;
-
-
-/**
- * Returns an array containing just the element children of the given element.
- * @param {Element} element The element whose element children we want.
- * @return {!(Array<!Element>|NodeList<!Element>)} An array or array-like list
- * of just the element children of the given element.
- */
-goog.dom.DomHelper.prototype.getChildren = goog.dom.getChildren;
-
-
-/**
- * Returns the first child node that is an element.
- * @param {Node} node The node to get the first child element of.
- * @return {Element} The first child node of {@code node} that is an element.
- */
-goog.dom.DomHelper.prototype.getFirstElementChild =
- goog.dom.getFirstElementChild;
-
-
-/**
- * Returns the last child node that is an element.
- * @param {Node} node The node to get the last child element of.
- * @return {Element} The last child node of {@code node} that is an element.
- */
-goog.dom.DomHelper.prototype.getLastElementChild = goog.dom.getLastElementChild;
-
-
-/**
- * Returns the first next sibling that is an element.
- * @param {Node} node The node to get the next sibling element of.
- * @return {Element} The next sibling of {@code node} that is an element.
- */
-goog.dom.DomHelper.prototype.getNextElementSibling =
- goog.dom.getNextElementSibling;
-
-
-/**
- * Returns the first previous sibling that is an element.
- * @param {Node} node The node to get the previous sibling element of.
- * @return {Element} The first previous sibling of {@code node} that is
- * an element.
- */
-goog.dom.DomHelper.prototype.getPreviousElementSibling =
- goog.dom.getPreviousElementSibling;
-
-
-/**
- * Returns the next node in source order from the given node.
- * @param {Node} node The node.
- * @return {Node} The next node in the DOM tree, or null if this was the last
- * node.
- */
-goog.dom.DomHelper.prototype.getNextNode = goog.dom.getNextNode;
-
-
-/**
- * Returns the previous node in source order from the given node.
- * @param {Node} node The node.
- * @return {Node} The previous node in the DOM tree, or null if this was the
- * first node.
- */
-goog.dom.DomHelper.prototype.getPreviousNode = goog.dom.getPreviousNode;
-
-
-/**
- * Whether the object looks like a DOM node.
- * @param {?} obj The object being tested for node likeness.
- * @return {boolean} Whether the object looks like a DOM node.
- */
-goog.dom.DomHelper.prototype.isNodeLike = goog.dom.isNodeLike;
-
-
-/**
- * Whether the object looks like an Element.
- * @param {?} obj The object being tested for Element likeness.
- * @return {boolean} Whether the object looks like an Element.
- */
-goog.dom.DomHelper.prototype.isElement = goog.dom.isElement;
-
-
-/**
- * Returns true if the specified value is a Window object. This includes the
- * global window for HTML pages, and iframe windows.
- * @param {?} obj Variable to test.
- * @return {boolean} Whether the variable is a window.
- */
-goog.dom.DomHelper.prototype.isWindow = goog.dom.isWindow;
-
-
-/**
- * Returns an element's parent, if it's an Element.
- * @param {Element} element The DOM element.
- * @return {Element} The parent, or null if not an Element.
- */
-goog.dom.DomHelper.prototype.getParentElement = goog.dom.getParentElement;
-
-
-/**
- * Whether a node contains another node.
- * @param {Node} parent The node that should contain the other node.
- * @param {Node} descendant The node to test presence of.
- * @return {boolean} Whether the parent node contains the descendent node.
- */
-goog.dom.DomHelper.prototype.contains = goog.dom.contains;
-
-
-/**
- * Compares the document order of two nodes, returning 0 if they are the same
- * node, a negative number if node1 is before node2, and a positive number if
- * node2 is before node1. Note that we compare the order the tags appear in the
- * document so in the tree <b><i>text</i></b> the B node is considered to be
- * before the I node.
- *
- * @param {Node} node1 The first node to compare.
- * @param {Node} node2 The second node to compare.
- * @return {number} 0 if the nodes are the same node, a negative number if node1
- * is before node2, and a positive number if node2 is before node1.
- */
-goog.dom.DomHelper.prototype.compareNodeOrder = goog.dom.compareNodeOrder;
-
-
-/**
- * Find the deepest common ancestor of the given nodes.
- * @param {...Node} var_args The nodes to find a common ancestor of.
- * @return {Node} The common ancestor of the nodes, or null if there is none.
- * null will only be returned if two or more of the nodes are from different
- * documents.
- */
-goog.dom.DomHelper.prototype.findCommonAncestor = goog.dom.findCommonAncestor;
-
-
-/**
- * Returns the owner document for a node.
- * @param {Node} node The node to get the document for.
- * @return {!Document} The document owning the node.
- */
-goog.dom.DomHelper.prototype.getOwnerDocument = goog.dom.getOwnerDocument;
-
-
-/**
- * Cross browser function for getting the document element of an iframe.
- * @param {Element} iframe Iframe element.
- * @return {!Document} The frame content document.
- */
-goog.dom.DomHelper.prototype.getFrameContentDocument =
- goog.dom.getFrameContentDocument;
-
-
-/**
- * Cross browser function for getting the window of a frame or iframe.
- * @param {Element} frame Frame element.
- * @return {Window} The window associated with the given frame.
- */
-goog.dom.DomHelper.prototype.getFrameContentWindow =
- goog.dom.getFrameContentWindow;
-
-
-/**
- * Sets the text content of a node, with cross-browser support.
- * @param {Node} node The node to change the text content of.
- * @param {string|number} text The value that should replace the node's content.
- */
-goog.dom.DomHelper.prototype.setTextContent = goog.dom.setTextContent;
-
-
-/**
- * Gets the outerHTML of a node, which islike innerHTML, except that it
- * actually contains the HTML of the node itself.
- * @param {Element} element The element to get the HTML of.
- * @return {string} The outerHTML of the given element.
- */
-goog.dom.DomHelper.prototype.getOuterHtml = goog.dom.getOuterHtml;
-
-
-/**
- * Finds the first descendant node that matches the filter function. This does
- * a depth first search.
- * @param {Node} root The root of the tree to search.
- * @param {function(Node) : boolean} p The filter function.
- * @return {Node|undefined} The found node or undefined if none is found.
- */
-goog.dom.DomHelper.prototype.findNode = goog.dom.findNode;
-
-
-/**
- * Finds all the descendant nodes that matches the filter function. This does a
- * depth first search.
- * @param {Node} root The root of the tree to search.
- * @param {function(Node) : boolean} p The filter function.
- * @return {Array<Node>} The found nodes or an empty array if none are found.
- */
-goog.dom.DomHelper.prototype.findNodes = goog.dom.findNodes;
-
-
-/**
- * Returns true if the element has a tab index that allows it to receive
- * keyboard focus (tabIndex >= 0), false otherwise. Note that some elements
- * natively support keyboard focus, even if they have no tab index.
- * @param {!Element} element Element to check.
- * @return {boolean} Whether the element has a tab index that allows keyboard
- * focus.
- */
-goog.dom.DomHelper.prototype.isFocusableTabIndex = goog.dom.isFocusableTabIndex;
-
-
-/**
- * Enables or disables keyboard focus support on the element via its tab index.
- * Only elements for which {@link goog.dom.isFocusableTabIndex} returns true
- * (or elements that natively support keyboard focus, like form elements) can
- * receive keyboard focus. See http://go/tabindex for more info.
- * @param {Element} element Element whose tab index is to be changed.
- * @param {boolean} enable Whether to set or remove a tab index on the element
- * that supports keyboard focus.
- */
-goog.dom.DomHelper.prototype.setFocusableTabIndex =
- goog.dom.setFocusableTabIndex;
-
-
-/**
- * Returns true if the element can be focused, i.e. it has a tab index that
- * allows it to receive keyboard focus (tabIndex >= 0), or it is an element
- * that natively supports keyboard focus.
- * @param {!Element} element Element to check.
- * @return {boolean} Whether the element allows keyboard focus.
- */
-goog.dom.DomHelper.prototype.isFocusable = goog.dom.isFocusable;
-
-
-/**
- * Returns the text contents of the current node, without markup. New lines are
- * stripped and whitespace is collapsed, such that each character would be
- * visible.
- *
- * In browsers that support it, innerText is used. Other browsers attempt to
- * simulate it via node traversal. Line breaks are canonicalized in IE.
- *
- * @param {Node} node The node from which we are getting content.
- * @return {string} The text content.
- */
-goog.dom.DomHelper.prototype.getTextContent = goog.dom.getTextContent;
-
-
-/**
- * Returns the text length of the text contained in a node, without markup. This
- * is equivalent to the selection length if the node was selected, or the number
- * of cursor movements to traverse the node. Images & BRs take one space. New
- * lines are ignored.
- *
- * @param {Node} node The node whose text content length is being calculated.
- * @return {number} The length of {@code node}'s text content.
- */
-goog.dom.DomHelper.prototype.getNodeTextLength = goog.dom.getNodeTextLength;
-
-
-/**
- * Returns the text offset of a node relative to one of its ancestors. The text
- * length is the same as the length calculated by
- * {@code goog.dom.getNodeTextLength}.
- *
- * @param {Node} node The node whose offset is being calculated.
- * @param {Node=} opt_offsetParent Defaults to the node's owner document's body.
- * @return {number} The text offset.
- */
-goog.dom.DomHelper.prototype.getNodeTextOffset = goog.dom.getNodeTextOffset;
-
-
-/**
- * Returns the node at a given offset in a parent node. If an object is
- * provided for the optional third parameter, the node and the remainder of the
- * offset will stored as properties of this object.
- * @param {Node} parent The parent node.
- * @param {number} offset The offset into the parent node.
- * @param {Object=} opt_result Object to be used to store the return value. The
- * return value will be stored in the form {node: Node, remainder: number}
- * if this object is provided.
- * @return {Node} The node at the given offset.
- */
-goog.dom.DomHelper.prototype.getNodeAtOffset = goog.dom.getNodeAtOffset;
-
-
-/**
- * Returns true if the object is a {@code NodeList}. To qualify as a NodeList,
- * the object must have a numeric length property and an item function (which
- * has type 'string' on IE for some reason).
- * @param {Object} val Object to test.
- * @return {boolean} Whether the object is a NodeList.
- */
-goog.dom.DomHelper.prototype.isNodeList = goog.dom.isNodeList;
-
-
-/**
- * Walks up the DOM hierarchy returning the first ancestor that has the passed
- * tag name and/or class name. If the passed element matches the specified
- * criteria, the element itself is returned.
- * @param {Node} element The DOM node to start with.
- * @param {?(goog.dom.TagName|string)=} opt_tag The tag name to match (or
- * null/undefined to match only based on class name).
- * @param {?string=} opt_class The class name to match (or null/undefined to
- * match only based on tag name).
- * @param {number=} opt_maxSearchSteps Maximum number of levels to search up the
- * dom.
- * @return {Element} The first ancestor that matches the passed criteria, or
- * null if no match is found.
- */
-goog.dom.DomHelper.prototype.getAncestorByTagNameAndClass =
- goog.dom.getAncestorByTagNameAndClass;
-
-
-/**
- * Walks up the DOM hierarchy returning the first ancestor that has the passed
- * class name. If the passed element matches the specified criteria, the
- * element itself is returned.
- * @param {Node} element The DOM node to start with.
- * @param {string} class The class name to match.
- * @param {number=} opt_maxSearchSteps Maximum number of levels to search up the
- * dom.
- * @return {Element} The first ancestor that matches the passed criteria, or
- * null if none match.
- */
-goog.dom.DomHelper.prototype.getAncestorByClass = goog.dom.getAncestorByClass;
-
-
-/**
- * Walks up the DOM hierarchy returning the first ancestor that passes the
- * matcher function.
- * @param {Node} element The DOM node to start with.
- * @param {function(Node) : boolean} matcher A function that returns true if the
- * passed node matches the desired criteria.
- * @param {boolean=} opt_includeNode If true, the node itself is included in
- * the search (the first call to the matcher will pass startElement as
- * the node to test).
- * @param {number=} opt_maxSearchSteps Maximum number of levels to search up the
- * dom.
- * @return {Node} DOM node that matched the matcher, or null if there was
- * no match.
- */
-goog.dom.DomHelper.prototype.getAncestor = goog.dom.getAncestor;
-
-// Copyright 2012 The Closure Library Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS-IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-/**
- * @fileoverview Vendor prefix getters.
- */
-
-goog.provide('goog.dom.vendor');
-
-goog.require('goog.string');
-goog.require('goog.userAgent');
-
-
-/**
- * Returns the JS vendor prefix used in CSS properties. Different vendors
- * use different methods of changing the case of the property names.
- *
- * @return {?string} The JS vendor prefix or null if there is none.
- */
-goog.dom.vendor.getVendorJsPrefix = function() {
- if (goog.userAgent.WEBKIT) {
- return 'Webkit';
- } else if (goog.userAgent.GECKO) {
- return 'Moz';
- } else if (goog.userAgent.IE) {
- return 'ms';
- } else if (goog.userAgent.OPERA) {
- return 'O';
- }
-
- return null;
-};
-
-
-/**
- * Returns the vendor prefix used in CSS properties.
- *
- * @return {?string} The vendor prefix or null if there is none.
- */
-goog.dom.vendor.getVendorPrefix = function() {
- if (goog.userAgent.WEBKIT) {
- return '-webkit';
- } else if (goog.userAgent.GECKO) {
- return '-moz';
- } else if (goog.userAgent.IE) {
- return '-ms';
- } else if (goog.userAgent.OPERA) {
- return '-o';
- }
-
- return null;
-};
-
-
-/**
- * @param {string} propertyName A property name.
- * @param {!Object=} opt_object If provided, we verify if the property exists in
- * the object.
- * @return {?string} A vendor prefixed property name, or null if it does not
- * exist.
- */
-goog.dom.vendor.getPrefixedPropertyName = function(propertyName, opt_object) {
- // We first check for a non-prefixed property, if available.
- if (opt_object && propertyName in opt_object) {
- return propertyName;
- }
- var prefix = goog.dom.vendor.getVendorJsPrefix();
- if (prefix) {
- prefix = prefix.toLowerCase();
- var prefixedPropertyName = prefix + goog.string.toTitleCase(propertyName);
- return (!goog.isDef(opt_object) || prefixedPropertyName in opt_object) ?
- prefixedPropertyName :
- null;
- }
- return null;
-};
-
-
-/**
- * @param {string} eventType An event type.
- * @return {string} A lower-cased vendor prefixed event type.
- */
-goog.dom.vendor.getPrefixedEventType = function(eventType) {
- var prefix = goog.dom.vendor.getVendorJsPrefix() || '';
- return (prefix + eventType).toLowerCase();
-};
-
-// Copyright 2006 The Closure Library Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS-IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-/**
- * @fileoverview A utility class for representing a numeric box.
- */
-
-
-goog.provide('goog.math.Box');
-
-goog.require('goog.asserts');
-goog.require('goog.math.Coordinate');
-
-
-
-/**
- * Class for representing a box. A box is specified as a top, right, bottom,
- * and left. A box is useful for representing margins and padding.
- *
- * This class assumes 'screen coordinates': larger Y coordinates are further
- * from the top of the screen.
- *
- * @param {number} top Top.
- * @param {number} right Right.
- * @param {number} bottom Bottom.
- * @param {number} left Left.
- * @struct
- * @constructor
- */
-goog.math.Box = function(top, right, bottom, left) {
- /**
- * Top
- * @type {number}
- */
- this.top = top;
-
- /**
- * Right
- * @type {number}
- */
- this.right = right;
-
- /**
- * Bottom
- * @type {number}
- */
- this.bottom = bottom;
-
- /**
- * Left
- * @type {number}
- */
- this.left = left;
-};
-
-
-/**
- * Creates a Box by bounding a collection of goog.math.Coordinate objects
- * @param {...goog.math.Coordinate} var_args Coordinates to be included inside
- * the box.
- * @return {!goog.math.Box} A Box containing all the specified Coordinates.
- */
-goog.math.Box.boundingBox = function(var_args) {
- var box = new goog.math.Box(
- arguments[0].y, arguments[0].x, arguments[0].y, arguments[0].x);
- for (var i = 1; i < arguments.length; i++) {
- box.expandToIncludeCoordinate(arguments[i]);
- }
- return box;
-};
-
-
-/**
- * @return {number} width The width of this Box.
- */
-goog.math.Box.prototype.getWidth = function() {
- return this.right - this.left;
-};
-
-
-/**
- * @return {number} height The height of this Box.
- */
-goog.math.Box.prototype.getHeight = function() {
- return this.bottom - this.top;
-};
-
-
-/**
- * Creates a copy of the box with the same dimensions.
- * @return {!goog.math.Box} A clone of this Box.
- */
-goog.math.Box.prototype.clone = function() {
- return new goog.math.Box(this.top, this.right, this.bottom, this.left);
-};
-
-
-if (goog.DEBUG) {
- /**
- * Returns a nice string representing the box.
- * @return {string} In the form (50t, 73r, 24b, 13l).
- * @override
- */
- goog.math.Box.prototype.toString = function() {
- return '(' + this.top + 't, ' + this.right + 'r, ' + this.bottom + 'b, ' +
- this.left + 'l)';
- };
-}
-
-
-/**
- * Returns whether the box contains a coordinate or another box.
- *
- * @param {goog.math.Coordinate|goog.math.Box} other A Coordinate or a Box.
- * @return {boolean} Whether the box contains the coordinate or other box.
- */
-goog.math.Box.prototype.contains = function(other) {
- return goog.math.Box.contains(this, other);
-};
-
-
-/**
- * Expands box with the given margins.
- *
- * @param {number|goog.math.Box} top Top margin or box with all margins.
- * @param {number=} opt_right Right margin.
- * @param {number=} opt_bottom Bottom margin.
- * @param {number=} opt_left Left margin.
- * @return {!goog.math.Box} A reference to this Box.
- */
-goog.math.Box.prototype.expand = function(
- top, opt_right, opt_bottom, opt_left) {
- if (goog.isObject(top)) {
- this.top -= top.top;
- this.right += top.right;
- this.bottom += top.bottom;
- this.left -= top.left;
- } else {
- this.top -= /** @type {number} */ (top);
- this.right += Number(opt_right);
- this.bottom += Number(opt_bottom);
- this.left -= Number(opt_left);
- }
-
- return this;
-};
-
-
-/**
- * Expand this box to include another box.
- * NOTE(user): This is used in code that needs to be very fast, please don't
- * add functionality to this function at the expense of speed (variable
- * arguments, accepting multiple argument types, etc).
- * @param {goog.math.Box} box The box to include in this one.
- */
-goog.math.Box.prototype.expandToInclude = function(box) {
- this.left = Math.min(this.left, box.left);
- this.top = Math.min(this.top, box.top);
- this.right = Math.max(this.right, box.right);
- this.bottom = Math.max(this.bottom, box.bottom);
-};
-
-
-/**
- * Expand this box to include the coordinate.
- * @param {!goog.math.Coordinate} coord The coordinate to be included
- * inside the box.
- */
-goog.math.Box.prototype.expandToIncludeCoordinate = function(coord) {
- this.top = Math.min(this.top, coord.y);
- this.right = Math.max(this.right, coord.x);
- this.bottom = Math.max(this.bottom, coord.y);
- this.left = Math.min(this.left, coord.x);
-};
-
-
-/**
- * Compares boxes for equality.
- * @param {goog.math.Box} a A Box.
- * @param {goog.math.Box} b A Box.
- * @return {boolean} True iff the boxes are equal, or if both are null.
- */
-goog.math.Box.equals = function(a, b) {
- if (a == b) {
- return true;
- }
- if (!a || !b) {
- return false;
- }
- return a.top == b.top && a.right == b.right && a.bottom == b.bottom &&
- a.left == b.left;
-};
-
-
-/**
- * Returns whether a box contains a coordinate or another box.
- *
- * @param {goog.math.Box} box A Box.
- * @param {goog.math.Coordinate|goog.math.Box} other A Coordinate or a Box.
- * @return {boolean} Whether the box contains the coordinate or other box.
- */
-goog.math.Box.contains = function(box, other) {
- if (!box || !other) {
- return false;
- }
-
- if (other instanceof goog.math.Box) {
- return other.left >= box.left && other.right <= box.right &&
- other.top >= box.top && other.bottom <= box.bottom;
- }
-
- // other is a Coordinate.
- return other.x >= box.left && other.x <= box.right && other.y >= box.top &&
- other.y <= box.bottom;
-};
-
-
-/**
- * Returns the relative x position of a coordinate compared to a box. Returns
- * zero if the coordinate is inside the box.
- *
- * @param {goog.math.Box} box A Box.
- * @param {goog.math.Coordinate} coord A Coordinate.
- * @return {number} The x position of {@code coord} relative to the nearest
- * side of {@code box}, or zero if {@code coord} is inside {@code box}.
- */
-goog.math.Box.relativePositionX = function(box, coord) {
- if (coord.x < box.left) {
- return coord.x - box.left;
- } else if (coord.x > box.right) {
- return coord.x - box.right;
- }
- return 0;
-};
-
-
-/**
- * Returns the relative y position of a coordinate compared to a box. Returns
- * zero if the coordinate is inside the box.
- *
- * @param {goog.math.Box} box A Box.
- * @param {goog.math.Coordinate} coord A Coordinate.
- * @return {number} The y position of {@code coord} relative to the nearest
- * side of {@code box}, or zero if {@code coord} is inside {@code box}.
- */
-goog.math.Box.relativePositionY = function(box, coord) {
- if (coord.y < box.top) {
- return coord.y - box.top;
- } else if (coord.y > box.bottom) {
- return coord.y - box.bottom;
- }
- return 0;
-};
-
-
-/**
- * Returns the distance between a coordinate and the nearest corner/side of a
- * box. Returns zero if the coordinate is inside the box.
- *
- * @param {goog.math.Box} box A Box.
- * @param {goog.math.Coordinate} coord A Coordinate.
- * @return {number} The distance between {@code coord} and the nearest
- * corner/side of {@code box}, or zero if {@code coord} is inside
- * {@code box}.
- */
-goog.math.Box.distance = function(box, coord) {
- var x = goog.math.Box.relativePositionX(box, coord);
- var y = goog.math.Box.relativePositionY(box, coord);
- return Math.sqrt(x * x + y * y);
-};
-
-
-/**
- * Returns whether two boxes intersect.
- *
- * @param {goog.math.Box} a A Box.
- * @param {goog.math.Box} b A second Box.
- * @return {boolean} Whether the boxes intersect.
- */
-goog.math.Box.intersects = function(a, b) {
- return (
- a.left <= b.right && b.left <= a.right && a.top <= b.bottom &&
- b.top <= a.bottom);
-};
-
-
-/**
- * Returns whether two boxes would intersect with additional padding.
- *
- * @param {goog.math.Box} a A Box.
- * @param {goog.math.Box} b A second Box.
- * @param {number} padding The additional padding.
- * @return {boolean} Whether the boxes intersect.
- */
-goog.math.Box.intersectsWithPadding = function(a, b, padding) {
- return (
- a.left <= b.right + padding && b.left <= a.right + padding &&
- a.top <= b.bottom + padding && b.top <= a.bottom + padding);
-};
-
-
-/**
- * Rounds the fields to the next larger integer values.
- *
- * @return {!goog.math.Box} This box with ceil'd fields.
- */
-goog.math.Box.prototype.ceil = function() {
- this.top = Math.ceil(this.top);
- this.right = Math.ceil(this.right);
- this.bottom = Math.ceil(this.bottom);
- this.left = Math.ceil(this.left);
- return this;
-};
-
-
-/**
- * Rounds the fields to the next smaller integer values.
- *
- * @return {!goog.math.Box} This box with floored fields.
- */
-goog.math.Box.prototype.floor = function() {
- this.top = Math.floor(this.top);
- this.right = Math.floor(this.right);
- this.bottom = Math.floor(this.bottom);
- this.left = Math.floor(this.left);
- return this;
-};
-
-
-/**
- * Rounds the fields to nearest integer values.
- *
- * @return {!goog.math.Box} This box with rounded fields.
- */
-goog.math.Box.prototype.round = function() {
- this.top = Math.round(this.top);
- this.right = Math.round(this.right);
- this.bottom = Math.round(this.bottom);
- this.left = Math.round(this.left);
- return this;
-};
-
-
-/**
- * Translates this box by the given offsets. If a {@code goog.math.Coordinate}
- * is given, then the left and right values are translated by the coordinate's
- * x value and the top and bottom values are translated by the coordinate's y
- * value. Otherwise, {@code tx} and {@code opt_ty} are used to translate the x
- * and y dimension values.
- *
- * @param {number|goog.math.Coordinate} tx The value to translate the x
- * dimension values by or the the coordinate to translate this box by.
- * @param {number=} opt_ty The value to translate y dimension values by.
- * @return {!goog.math.Box} This box after translating.
- */
-goog.math.Box.prototype.translate = function(tx, opt_ty) {
- if (tx instanceof goog.math.Coordinate) {
- this.left += tx.x;
- this.right += tx.x;
- this.top += tx.y;
- this.bottom += tx.y;
- } else {
- goog.asserts.assertNumber(tx);
- this.left += tx;
- this.right += tx;
- if (goog.isNumber(opt_ty)) {
- this.top += opt_ty;
- this.bottom += opt_ty;
- }
- }
- return this;
-};
-
-
-/**
- * Scales this coordinate by the given scale factors. The x and y dimension
- * values are scaled by {@code sx} and {@code opt_sy} respectively.
- * If {@code opt_sy} is not given, then {@code sx} is used for both x and y.
- *
- * @param {number} sx The scale factor to use for the x dimension.
- * @param {number=} opt_sy The scale factor to use for the y dimension.
- * @return {!goog.math.Box} This box after scaling.
- */
-goog.math.Box.prototype.scale = function(sx, opt_sy) {
- var sy = goog.isNumber(opt_sy) ? opt_sy : sx;
- this.left *= sx;
- this.right *= sx;
- this.top *= sy;
- this.bottom *= sy;
- return this;
-};
-
-// Copyright 2006 The Closure Library Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS-IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-/**
- * @fileoverview A utility class for representing rectangles.
- */
-
-goog.provide('goog.math.Rect');
-
-goog.require('goog.asserts');
-goog.require('goog.math.Box');
-goog.require('goog.math.Coordinate');
-goog.require('goog.math.Size');
-
-
-
-/**
- * Class for representing rectangular regions.
- * @param {number} x Left.
- * @param {number} y Top.
- * @param {number} w Width.
- * @param {number} h Height.
- * @struct
- * @constructor
- */
-goog.math.Rect = function(x, y, w, h) {
- /** @type {number} */
- this.left = x;
-
- /** @type {number} */
- this.top = y;
-
- /** @type {number} */
- this.width = w;
-
- /** @type {number} */
- this.height = h;
-};
-
-
-/**
- * @return {!goog.math.Rect} A new copy of this Rectangle.
- */
-goog.math.Rect.prototype.clone = function() {
- return new goog.math.Rect(this.left, this.top, this.width, this.height);
-};
-
-
-/**
- * Returns a new Box object with the same position and dimensions as this
- * rectangle.
- * @return {!goog.math.Box} A new Box representation of this Rectangle.
- */
-goog.math.Rect.prototype.toBox = function() {
- var right = this.left + this.width;
- var bottom = this.top + this.height;
- return new goog.math.Box(this.top, right, bottom, this.left);
-};
-
-
-/**
- * Creates a new Rect object with the position and size given.
- * @param {!goog.math.Coordinate} position The top-left coordinate of the Rect
- * @param {!goog.math.Size} size The size of the Rect
- * @return {!goog.math.Rect} A new Rect initialized with the given position and
- * size.
- */
-goog.math.Rect.createFromPositionAndSize = function(position, size) {
- return new goog.math.Rect(position.x, position.y, size.width, size.height);
-};
-
-
-/**
- * Creates a new Rect object with the same position and dimensions as a given
- * Box. Note that this is only the inverse of toBox if left/top are defined.
- * @param {goog.math.Box} box A box.
- * @return {!goog.math.Rect} A new Rect initialized with the box's position
- * and size.
- */
-goog.math.Rect.createFromBox = function(box) {
- return new goog.math.Rect(
- box.left, box.top, box.right - box.left, box.bottom - box.top);
-};
-
-
-if (goog.DEBUG) {
- /**
- * Returns a nice string representing size and dimensions of rectangle.
- * @return {string} In the form (50, 73 - 75w x 25h).
- * @override
- */
- goog.math.Rect.prototype.toString = function() {
- return '(' + this.left + ', ' + this.top + ' - ' + this.width + 'w x ' +
- this.height + 'h)';
- };
-}
-
-
-/**
- * Compares rectangles for equality.
- * @param {goog.math.Rect} a A Rectangle.
- * @param {goog.math.Rect} b A Rectangle.
- * @return {boolean} True iff the rectangles have the same left, top, width,
- * and height, or if both are null.
- */
-goog.math.Rect.equals = function(a, b) {
- if (a == b) {
- return true;
- }
- if (!a || !b) {
- return false;
- }
- return a.left == b.left && a.width == b.width && a.top == b.top &&
- a.height == b.height;
-};
-
-
-/**
- * Computes the intersection of this rectangle and the rectangle parameter. If
- * there is no intersection, returns false and leaves this rectangle as is.
- * @param {goog.math.Rect} rect A Rectangle.
- * @return {boolean} True iff this rectangle intersects with the parameter.
- */
-goog.math.Rect.prototype.intersection = function(rect) {
- var x0 = Math.max(this.left, rect.left);
- var x1 = Math.min(this.left + this.width, rect.left + rect.width);
-
- if (x0 <= x1) {
- var y0 = Math.max(this.top, rect.top);
- var y1 = Math.min(this.top + this.height, rect.top + rect.height);
-
- if (y0 <= y1) {
- this.left = x0;
- this.top = y0;
- this.width = x1 - x0;
- this.height = y1 - y0;
-
- return true;
- }
- }
- return false;
-};
-
-
-/**
- * Returns the intersection of two rectangles. Two rectangles intersect if they
- * touch at all, for example, two zero width and height rectangles would
- * intersect if they had the same top and left.
- * @param {goog.math.Rect} a A Rectangle.
- * @param {goog.math.Rect} b A Rectangle.
- * @return {goog.math.Rect} A new intersection rect (even if width and height
- * are 0), or null if there is no intersection.
- */
-goog.math.Rect.intersection = function(a, b) {
- // There is no nice way to do intersection via a clone, because any such
- // clone might be unnecessary if this function returns null. So, we duplicate
- // code from above.
-
- var x0 = Math.max(a.left, b.left);
- var x1 = Math.min(a.left + a.width, b.left + b.width);
-
- if (x0 <= x1) {
- var y0 = Math.max(a.top, b.top);
- var y1 = Math.min(a.top + a.height, b.top + b.height);
-
- if (y0 <= y1) {
- return new goog.math.Rect(x0, y0, x1 - x0, y1 - y0);
- }
- }
- return null;
-};
-
-
-/**
- * Returns whether two rectangles intersect. Two rectangles intersect if they
- * touch at all, for example, two zero width and height rectangles would
- * intersect if they had the same top and left.
- * @param {goog.math.Rect} a A Rectangle.
- * @param {goog.math.Rect} b A Rectangle.
- * @return {boolean} Whether a and b intersect.
- */
-goog.math.Rect.intersects = function(a, b) {
- return (
- a.left <= b.left + b.width && b.left <= a.left + a.width &&
- a.top <= b.top + b.height && b.top <= a.top + a.height);
-};
-
-
-/**
- * Returns whether a rectangle intersects this rectangle.
- * @param {goog.math.Rect} rect A rectangle.
- * @return {boolean} Whether rect intersects this rectangle.
- */
-goog.math.Rect.prototype.intersects = function(rect) {
- return goog.math.Rect.intersects(this, rect);
-};
-
-
-/**
- * Computes the difference regions between two rectangles. The return value is
- * an array of 0 to 4 rectangles defining the remaining regions of the first
- * rectangle after the second has been subtracted.
- * @param {goog.math.Rect} a A Rectangle.
- * @param {goog.math.Rect} b A Rectangle.
- * @return {!Array<!goog.math.Rect>} An array with 0 to 4 rectangles which
- * together define the difference area of rectangle a minus rectangle b.
- */
-goog.math.Rect.difference = function(a, b) {
- var intersection = goog.math.Rect.intersection(a, b);
- if (!intersection || !intersection.height || !intersection.width) {
- return [a.clone()];
- }
-
- var result = [];
-
- var top = a.top;
- var height = a.height;
-
- var ar = a.left + a.width;
- var ab = a.top + a.height;
-
- var br = b.left + b.width;
- var bb = b.top + b.height;
-
- // Subtract off any area on top where A extends past B
- if (b.top > a.top) {
- result.push(new goog.math.Rect(a.left, a.top, a.width, b.top - a.top));
- top = b.top;
- // If we're moving the top down, we also need to subtract the height diff.
- height -= b.top - a.top;
- }
- // Subtract off any area on bottom where A extends past B
- if (bb < ab) {
- result.push(new goog.math.Rect(a.left, bb, a.width, ab - bb));
- height = bb - top;
- }
- // Subtract any area on left where A extends past B
- if (b.left > a.left) {
- result.push(new goog.math.Rect(a.left, top, b.left - a.left, height));
- }
- // Subtract any area on right where A extends past B
- if (br < ar) {
- result.push(new goog.math.Rect(br, top, ar - br, height));
- }
-
- return result;
-};
-
-
-/**
- * Computes the difference regions between this rectangle and {@code rect}. The
- * return value is an array of 0 to 4 rectangles defining the remaining regions
- * of this rectangle after the other has been subtracted.
- * @param {goog.math.Rect} rect A Rectangle.
- * @return {!Array<!goog.math.Rect>} An array with 0 to 4 rectangles which
- * together define the difference area of rectangle a minus rectangle b.
- */
-goog.math.Rect.prototype.difference = function(rect) {
- return goog.math.Rect.difference(this, rect);
-};
-
-
-/**
- * Expand this rectangle to also include the area of the given rectangle.
- * @param {goog.math.Rect} rect The other rectangle.
- */
-goog.math.Rect.prototype.boundingRect = function(rect) {
- // We compute right and bottom before we change left and top below.
- var right = Math.max(this.left + this.width, rect.left + rect.width);
- var bottom = Math.max(this.top + this.height, rect.top + rect.height);
-
- this.left = Math.min(this.left, rect.left);
- this.top = Math.min(this.top, rect.top);
-
- this.width = right - this.left;
- this.height = bottom - this.top;
-};
-
-
-/**
- * Returns a new rectangle which completely contains both input rectangles.
- * @param {goog.math.Rect} a A rectangle.
- * @param {goog.math.Rect} b A rectangle.
- * @return {goog.math.Rect} A new bounding rect, or null if either rect is
- * null.
- */
-goog.math.Rect.boundingRect = function(a, b) {
- if (!a || !b) {
- return null;
- }
-
- var clone = a.clone();
- clone.boundingRect(b);
-
- return clone;
-};
-
-
-/**
- * Tests whether this rectangle entirely contains another rectangle or
- * coordinate.
- *
- * @param {goog.math.Rect|goog.math.Coordinate} another The rectangle or
- * coordinate to test for containment.
- * @return {boolean} Whether this rectangle contains given rectangle or
- * coordinate.
- */
-goog.math.Rect.prototype.contains = function(another) {
- if (another instanceof goog.math.Rect) {
- return this.left <= another.left &&
- this.left + this.width >= another.left + another.width &&
- this.top <= another.top &&
- this.top + this.height >= another.top + another.height;
- } else { // (another instanceof goog.math.Coordinate)
- return another.x >= this.left && another.x <= this.left + this.width &&
- another.y >= this.top && another.y <= this.top + this.height;
- }
-};
-
-
-/**
- * @param {!goog.math.Coordinate} point A coordinate.
- * @return {number} The squared distance between the point and the closest
- * point inside the rectangle. Returns 0 if the point is inside the
- * rectangle.
- */
-goog.math.Rect.prototype.squaredDistance = function(point) {
- var dx = point.x < this.left ?
- this.left - point.x :
- Math.max(point.x - (this.left + this.width), 0);
- var dy = point.y < this.top ? this.top - point.y :
- Math.max(point.y - (this.top + this.height), 0);
- return dx * dx + dy * dy;
-};
-
-
-/**
- * @param {!goog.math.Coordinate} point A coordinate.
- * @return {number} The distance between the point and the closest point
- * inside the rectangle. Returns 0 if the point is inside the rectangle.
- */
-goog.math.Rect.prototype.distance = function(point) {
- return Math.sqrt(this.squaredDistance(point));
-};
-
-
-/**
- * @return {!goog.math.Size} The size of this rectangle.
- */
-goog.math.Rect.prototype.getSize = function() {
- return new goog.math.Size(this.width, this.height);
-};
-
-
-/**
- * @return {!goog.math.Coordinate} A new coordinate for the top-left corner of
- * the rectangle.
- */
-goog.math.Rect.prototype.getTopLeft = function() {
- return new goog.math.Coordinate(this.left, this.top);
-};
-
-
-/**
- * @return {!goog.math.Coordinate} A new coordinate for the center of the
- * rectangle.
- */
-goog.math.Rect.prototype.getCenter = function() {
- return new goog.math.Coordinate(
- this.left + this.width / 2, this.top + this.height / 2);
-};
-
-
-/**
- * @return {!goog.math.Coordinate} A new coordinate for the bottom-right corner
- * of the rectangle.
- */
-goog.math.Rect.prototype.getBottomRight = function() {
- return new goog.math.Coordinate(
- this.left + this.width, this.top + this.height);
-};
-
-
-/**
- * Rounds the fields to the next larger integer values.
- * @return {!goog.math.Rect} This rectangle with ceil'd fields.
- */
-goog.math.Rect.prototype.ceil = function() {
- this.left = Math.ceil(this.left);
- this.top = Math.ceil(this.top);
- this.width = Math.ceil(this.width);
- this.height = Math.ceil(this.height);
- return this;
-};
-
-
-/**
- * Rounds the fields to the next smaller integer values.
- * @return {!goog.math.Rect} This rectangle with floored fields.
- */
-goog.math.Rect.prototype.floor = function() {
- this.left = Math.floor(this.left);
- this.top = Math.floor(this.top);
- this.width = Math.floor(this.width);
- this.height = Math.floor(this.height);
- return this;
-};
-
-
-/**
- * Rounds the fields to nearest integer values.
- * @return {!goog.math.Rect} This rectangle with rounded fields.
- */
-goog.math.Rect.prototype.round = function() {
- this.left = Math.round(this.left);
- this.top = Math.round(this.top);
- this.width = Math.round(this.width);
- this.height = Math.round(this.height);
- return this;
-};
-
-
-/**
- * Translates this rectangle by the given offsets. If a
- * {@code goog.math.Coordinate} is given, then the left and top values are
- * translated by the coordinate's x and y values. Otherwise, top and left are
- * translated by {@code tx} and {@code opt_ty} respectively.
- * @param {number|goog.math.Coordinate} tx The value to translate left by or the
- * the coordinate to translate this rect by.
- * @param {number=} opt_ty The value to translate top by.
- * @return {!goog.math.Rect} This rectangle after translating.
- */
-goog.math.Rect.prototype.translate = function(tx, opt_ty) {
- if (tx instanceof goog.math.Coordinate) {
- this.left += tx.x;
- this.top += tx.y;
- } else {
- this.left += goog.asserts.assertNumber(tx);
- if (goog.isNumber(opt_ty)) {
- this.top += opt_ty;
- }
- }
- return this;
-};
-
-
-/**
- * Scales this rectangle by the given scale factors. The left and width values
- * are scaled by {@code sx} and the top and height values are scaled by
- * {@code opt_sy}. If {@code opt_sy} is not given, then all fields are scaled
- * by {@code sx}.
- * @param {number} sx The scale factor to use for the x dimension.
- * @param {number=} opt_sy The scale factor to use for the y dimension.
- * @return {!goog.math.Rect} This rectangle after scaling.
- */
-goog.math.Rect.prototype.scale = function(sx, opt_sy) {
- var sy = goog.isNumber(opt_sy) ? opt_sy : sx;
- this.left *= sx;
- this.width *= sx;
- this.top *= sy;
- this.height *= sy;
- return this;
-};
-
-// Copyright 2009 The Closure Library Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS-IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-/**
- * @fileoverview Useful compiler idioms.
- *
- * @author johnlenz@google.com (John Lenz)
- */
-
-goog.provide('goog.reflect');
-
-
-/**
- * Syntax for object literal casts.
- * @see http://go/jscompiler-renaming
- * @see https://goo.gl/CRs09P
- *
- * Use this if you have an object literal whose keys need to have the same names
- * as the properties of some class even after they are renamed by the compiler.
- *
- * @param {!Function} type Type to cast to.
- * @param {Object} object Object literal to cast.
- * @return {Object} The object literal.
- */
-goog.reflect.object = function(type, object) {
- return object;
-};
-
-
-/**
- * To assert to the compiler that an operation is needed when it would
- * otherwise be stripped. For example:
- * <code>
- * // Force a layout
- * goog.reflect.sinkValue(dialog.offsetHeight);
- * </code>
- * @param {T} x
- * @return {T}
- * @template T
- */
-goog.reflect.sinkValue = function(x) {
- goog.reflect.sinkValue[' '](x);
- return x;
-};
-
-
-/**
- * The compiler should optimize this function away iff no one ever uses
- * goog.reflect.sinkValue.
- */
-goog.reflect.sinkValue[' '] = goog.nullFunction;
-
-
-/**
- * Check if a property can be accessed without throwing an exception.
- * @param {Object} obj The owner of the property.
- * @param {string} prop The property name.
- * @return {boolean} Whether the property is accessible. Will also return true
- * if obj is null.
- */
-goog.reflect.canAccessProperty = function(obj, prop) {
- /** @preserveTry */
- try {
- goog.reflect.sinkValue(obj[prop]);
- return true;
- } catch (e) {
- }
- return false;
-};
-
-
-/**
- * Retrieves a value from a cache given a key. The compiler provides special
- * consideration for this call such that it is generally considered side-effect
- * free. However, if the {@code opt_keyFn} or {@code valueFn} have side-effects
- * then the entire call is considered to have side-effects.
- *
- * Conventionally storing the value on the cache would be considered a
- * side-effect and preclude unused calls from being pruned, ie. even if
- * the value was never used, it would still always be stored in the cache.
- *
- * Providing a side-effect free {@code valueFn} and {@code opt_keyFn}
- * allows unused calls to {@code goog.cache} to be pruned.
- *
- * @param {!Object<K, V>} cacheObj The object that contains the cached values.
- * @param {?} key The key to lookup in the cache. If it is not string or number
- * then a {@code opt_keyFn} should be provided. The key is also used as the
- * parameter to the {@code valueFn}.
- * @param {!function(?):V} valueFn The value provider to use to calculate the
- * value to store in the cache. This function should be side-effect free
- * to take advantage of the optimization.
- * @param {function(?):K=} opt_keyFn The key provider to determine the cache
- * map key. This should be used if the given key is not a string or number.
- * If not provided then the given key is used. This function should be
- * side-effect free to take advantage of the optimization.
- * @return {V} The cached or calculated value.
- * @template K
- * @template V
- */
-goog.reflect.cache = function(cacheObj, key, valueFn, opt_keyFn) {
- var storedKey = opt_keyFn ? opt_keyFn(key) : key;
-
- if (storedKey in cacheObj) {
- return cacheObj[storedKey];
- }
-
- return (cacheObj[storedKey] = valueFn(key));
-};
-
-// Copyright 2006 The Closure Library Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS-IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-/**
- * @fileoverview Utilities for element styles.
- *
- * @author arv@google.com (Erik Arvidsson)
- * @author eae@google.com (Emil A Eklund)
- * @see ../demos/inline_block_quirks.html
- * @see ../demos/inline_block_standards.html
- * @see ../demos/style_viewport.html
- */
-
-goog.provide('goog.style');
-
-
-goog.require('goog.array');
-goog.require('goog.asserts');
-goog.require('goog.dom');
-goog.require('goog.dom.NodeType');
-goog.require('goog.dom.TagName');
-goog.require('goog.dom.vendor');
-goog.require('goog.html.SafeStyleSheet');
-goog.require('goog.html.legacyconversions');
-goog.require('goog.math.Box');
-goog.require('goog.math.Coordinate');
-goog.require('goog.math.Rect');
-goog.require('goog.math.Size');
-goog.require('goog.object');
-goog.require('goog.reflect');
-goog.require('goog.string');
-goog.require('goog.userAgent');
-
-goog.forwardDeclare('goog.events.BrowserEvent');
-goog.forwardDeclare('goog.events.Event');
-
-
-/**
- * Sets a style value on an element.
- *
- * This function is not indended to patch issues in the browser's style
- * handling, but to allow easy programmatic access to setting dash-separated
- * style properties. An example is setting a batch of properties from a data
- * object without overwriting old styles. When possible, use native APIs:
- * elem.style.propertyKey = 'value' or (if obliterating old styles is fine)
- * elem.style.cssText = 'property1: value1; property2: value2'.
- *
- * @param {Element} element The element to change.
- * @param {string|Object} style If a string, a style name. If an object, a hash
- * of style names to style values.
- * @param {string|number|boolean=} opt_value If style was a string, then this
- * should be the value.
- */
-goog.style.setStyle = function(element, style, opt_value) {
- if (goog.isString(style)) {
- goog.style.setStyle_(element, opt_value, style);
- } else {
- for (var key in style) {
- goog.style.setStyle_(element, style[key], key);
- }
- }
-};
-
-
-/**
- * Sets a style value on an element, with parameters swapped to work with
- * {@code goog.object.forEach()}. Prepends a vendor-specific prefix when
- * necessary.
- * @param {Element} element The element to change.
- * @param {string|number|boolean|undefined} value Style value.
- * @param {string} style Style name.
- * @private
- */
-goog.style.setStyle_ = function(element, value, style) {
- var propertyName = goog.style.getVendorJsStyleName_(element, style);
-
- if (propertyName) {
- element.style[propertyName] = value;
- }
-};
-
-
-/**
- * Style name cache that stores previous property name lookups.
- *
- * This is used by setStyle to speed up property lookups, entries look like:
- * { StyleName: ActualPropertyName }
- *
- * @private {!Object<string, string>}
- */
-goog.style.styleNameCache_ = {};
-
-
-/**
- * Returns the style property name in camel-case. If it does not exist and a
- * vendor-specific version of the property does exist, then return the vendor-
- * specific property name instead.
- * @param {Element} element The element to change.
- * @param {string} style Style name.
- * @return {string} Vendor-specific style.
- * @private
- */
-goog.style.getVendorJsStyleName_ = function(element, style) {
- var propertyName = goog.style.styleNameCache_[style];
- if (!propertyName) {
- var camelStyle = goog.string.toCamelCase(style);
- propertyName = camelStyle;
-
- if (element.style[camelStyle] === undefined) {
- var prefixedStyle = goog.dom.vendor.getVendorJsPrefix() +
- goog.string.toTitleCase(camelStyle);
-
- if (element.style[prefixedStyle] !== undefined) {
- propertyName = prefixedStyle;
- }
- }
- goog.style.styleNameCache_[style] = propertyName;
- }
-
- return propertyName;
-};
-
-
-/**
- * Returns the style property name in CSS notation. If it does not exist and a
- * vendor-specific version of the property does exist, then return the vendor-
- * specific property name instead.
- * @param {Element} element The element to change.
- * @param {string} style Style name.
- * @return {string} Vendor-specific style.
- * @private
+ * @returns {Node} The node that was removed or null.
*/
-goog.style.getVendorStyleName_ = function(element, style) {
- var camelStyle = goog.string.toCamelCase(style);
-
- if (element.style[camelStyle] === undefined) {
- var prefixedStyle = goog.dom.vendor.getVendorJsPrefix() +
- goog.string.toTitleCase(camelStyle);
-
- if (element.style[prefixedStyle] !== undefined) {
- return goog.dom.vendor.getVendorPrefix() + '-' + style;
- }
- }
-
- return style;
-};
-
-
-/**
- * Retrieves an explicitly-set style value of a node. This returns '' if there
- * isn't a style attribute on the element or if this style property has not been
- * explicitly set in script.
- *
- * @param {Element} element Element to get style of.
- * @param {string} property Property to get, css-style (if you have a camel-case
- * property, use element.style[style]).
- * @return {string} Style value.
- */
-goog.style.getStyle = function(element, property) {
- // element.style is '' for well-known properties which are unset.
- // For for browser specific styles as 'filter' is undefined
- // so we need to return '' explicitly to make it consistent across
- // browsers.
- var styleValue = element.style[goog.string.toCamelCase(property)];
-
- // Using typeof here because of a bug in Safari 5.1, where this value
- // was undefined, but === undefined returned false.
- if (typeof(styleValue) !== 'undefined') {
- return styleValue;
- }
-
- return element.style[goog.style.getVendorJsStyleName_(element, property)] ||
- '';
-};
-
-
-/**
- * Retrieves a computed style value of a node. It returns empty string if the
- * value cannot be computed (which will be the case in Internet Explorer) or
- * "none" if the property requested is an SVG one and it has not been
- * explicitly set (firefox and webkit).
- *
- * @param {Element} element Element to get style of.
- * @param {string} property Property to get (camel-case).
- * @return {string} Style value.
- */
-goog.style.getComputedStyle = function(element, property) {
- var doc = goog.dom.getOwnerDocument(element);
- if (doc.defaultView && doc.defaultView.getComputedStyle) {
- var styles = doc.defaultView.getComputedStyle(element, null);
- if (styles) {
- // element.style[..] is undefined for browser specific styles
- // as 'filter'.
- return styles[property] || styles.getPropertyValue(property) || '';
- }
- }
-
- return '';
-};
-
-
-/**
- * Gets the cascaded style value of a node, or null if the value cannot be
- * computed (only Internet Explorer can do this).
- *
- * @param {Element} element Element to get style of.
- * @param {string} style Property to get (camel-case).
- * @return {string} Style value.
- */
-goog.style.getCascadedStyle = function(element, style) {
- // TODO(nicksantos): This should be documented to return null. #fixTypes
- return element.currentStyle ? element.currentStyle[style] : null;
-};
-
-
-/**
- * Cross-browser pseudo get computed style. It returns the computed style where
- * available. If not available it tries the cascaded style value (IE
- * currentStyle) and in worst case the inline style value. It shouldn't be
- * called directly, see http://wiki/Main/ComputedStyleVsCascadedStyle for
- * discussion.
- *
- * @param {Element} element Element to get style of.
- * @param {string} style Property to get (must be camelCase, not css-style.).
- * @return {string} Style value.
- * @private
- */
-goog.style.getStyle_ = function(element, style) {
- return goog.style.getComputedStyle(element, style) ||
- goog.style.getCascadedStyle(element, style) ||
- (element.style && element.style[style]);
-};
-
-
-/**
- * Retrieves the computed value of the box-sizing CSS attribute.
- * Browser support: http://caniuse.com/css3-boxsizing.
- * @param {!Element} element The element whose box-sizing to get.
- * @return {?string} 'content-box', 'border-box' or 'padding-box'. null if
- * box-sizing is not supported (IE7 and below).
- */
-goog.style.getComputedBoxSizing = function(element) {
- return goog.style.getStyle_(element, 'boxSizing') ||
- goog.style.getStyle_(element, 'MozBoxSizing') ||
- goog.style.getStyle_(element, 'WebkitBoxSizing') || null;
-};
-
-
-/**
- * Retrieves the computed value of the position CSS attribute.
- * @param {Element} element The element to get the position of.
- * @return {string} Position value.
- */
-goog.style.getComputedPosition = function(element) {
- return goog.style.getStyle_(element, 'position');
-};
-
-
-/**
- * Retrieves the computed background color string for a given element. The
- * string returned is suitable for assigning to another element's
- * background-color, but is not guaranteed to be in any particular string
- * format. Accessing the color in a numeric form may not be possible in all
- * browsers or with all input.
- *
- * If the background color for the element is defined as a hexadecimal value,
- * the resulting string can be parsed by goog.color.parse in all supported
- * browsers.
- *
- * Whether named colors like "red" or "lightblue" get translated into a
- * format which can be parsed is browser dependent. Calling this function on
- * transparent elements will return "transparent" in most browsers or
- * "rgba(0, 0, 0, 0)" in WebKit.
- * @param {Element} element The element to get the background color of.
- * @return {string} The computed string value of the background color.
- */
-goog.style.getBackgroundColor = function(element) {
- return goog.style.getStyle_(element, 'backgroundColor');
-};
-
-
-/**
- * Retrieves the computed value of the overflow-x CSS attribute.
- * @param {Element} element The element to get the overflow-x of.
- * @return {string} The computed string value of the overflow-x attribute.
- */
-goog.style.getComputedOverflowX = function(element) {
- return goog.style.getStyle_(element, 'overflowX');
-};
-
-
-/**
- * Retrieves the computed value of the overflow-y CSS attribute.
- * @param {Element} element The element to get the overflow-y of.
- * @return {string} The computed string value of the overflow-y attribute.
- */
-goog.style.getComputedOverflowY = function(element) {
- return goog.style.getStyle_(element, 'overflowY');
-};
-
-
-/**
- * Retrieves the computed value of the z-index CSS attribute.
- * @param {Element} element The element to get the z-index of.
- * @return {string|number} The computed value of the z-index attribute.
- */
-goog.style.getComputedZIndex = function(element) {
- return goog.style.getStyle_(element, 'zIndex');
-};
-
-
-/**
- * Retrieves the computed value of the text-align CSS attribute.
- * @param {Element} element The element to get the text-align of.
- * @return {string} The computed string value of the text-align attribute.
- */
-goog.style.getComputedTextAlign = function(element) {
- return goog.style.getStyle_(element, 'textAlign');
-};
-
-
-/**
- * Retrieves the computed value of the cursor CSS attribute.
- * @param {Element} element The element to get the cursor of.
- * @return {string} The computed string value of the cursor attribute.
- */
-goog.style.getComputedCursor = function(element) {
- return goog.style.getStyle_(element, 'cursor');
-};
-
-
-/**
- * Retrieves the computed value of the CSS transform attribute.
- * @param {Element} element The element to get the transform of.
- * @return {string} The computed string representation of the transform matrix.
- */
-goog.style.getComputedTransform = function(element) {
- var property = goog.style.getVendorStyleName_(element, 'transform');
- return goog.style.getStyle_(element, property) ||
- goog.style.getStyle_(element, 'transform');
-};
-
-
-/**
- * Sets the top/left values of an element. If no unit is specified in the
- * argument then it will add px. The second argument is required if the first
- * argument is a string or number and is ignored if the first argument
- * is a coordinate.
- * @param {Element} el Element to move.
- * @param {string|number|goog.math.Coordinate} arg1 Left position or coordinate.
- * @param {string|number=} opt_arg2 Top position.
- */
-goog.style.setPosition = function(el, arg1, opt_arg2) {
- var x, y;
-
- if (arg1 instanceof goog.math.Coordinate) {
- x = arg1.x;
- y = arg1.y;
- } else {
- x = arg1;
- y = opt_arg2;
- }
-
- el.style.left = goog.style.getPixelStyleValue_(
- /** @type {number|string} */ (x), false);
- el.style.top = goog.style.getPixelStyleValue_(
- /** @type {number|string} */ (y), false);
-};
-
-
-/**
- * Gets the offsetLeft and offsetTop properties of an element and returns them
- * in a Coordinate object
- * @param {Element} element Element.
- * @return {!goog.math.Coordinate} The position.
- */
-goog.style.getPosition = function(element) {
- return new goog.math.Coordinate(
- /** @type {!HTMLElement} */ (element).offsetLeft,
- /** @type {!HTMLElement} */ (element).offsetTop);
-};
-
-
-/**
- * Returns the viewport element for a particular document
- * @param {Node=} opt_node DOM node (Document is OK) to get the viewport element
- * of.
- * @return {Element} document.documentElement or document.body.
- */
-goog.style.getClientViewportElement = function(opt_node) {
- var doc;
- if (opt_node) {
- doc = goog.dom.getOwnerDocument(opt_node);
- } else {
- doc = goog.dom.getDocument();
- }
-
- // In old IE versions the document.body represented the viewport
- if (goog.userAgent.IE && !goog.userAgent.isDocumentModeOrHigher(9) &&
- !goog.dom.getDomHelper(doc).isCss1CompatMode()) {
- return doc.body;
- }
- return doc.documentElement;
-};
-
-
-/**
- * Calculates the viewport coordinates relative to the page/document
- * containing the node. The viewport may be the browser viewport for
- * non-iframe document, or the iframe container for iframe'd document.
- * @param {!Document} doc The document to use as the reference point.
- * @return {!goog.math.Coordinate} The page offset of the viewport.
- */
-goog.style.getViewportPageOffset = function(doc) {
- var body = doc.body;
- var documentElement = doc.documentElement;
- var scrollLeft = body.scrollLeft || documentElement.scrollLeft;
- var scrollTop = body.scrollTop || documentElement.scrollTop;
- return new goog.math.Coordinate(scrollLeft, scrollTop);
-};
-
-
-/**
- * Gets the client rectangle of the DOM element.
- *
- * getBoundingClientRect is part of a new CSS object model draft (with a
- * long-time presence in IE), replacing the error-prone parent offset
- * computation and the now-deprecated Gecko getBoxObjectFor.
- *
- * This utility patches common browser bugs in getBoundingClientRect. It
- * will fail if getBoundingClientRect is unsupported.
- *
- * If the element is not in the DOM, the result is undefined, and an error may
- * be thrown depending on user agent.
- *
- * @param {!Element} el The element whose bounding rectangle is being queried.
- * @return {Object} A native bounding rectangle with numerical left, top,
- * right, and bottom. Reported by Firefox to be of object type ClientRect.
- * @private
- */
-goog.style.getBoundingClientRect_ = function(el) {
- var rect;
- try {
- rect = el.getBoundingClientRect();
- } catch (e) {
- // In IE < 9, calling getBoundingClientRect on an orphan element raises an
- // "Unspecified Error". All other browsers return zeros.
- return {'left': 0, 'top': 0, 'right': 0, 'bottom': 0};
- }
-
- // Patch the result in IE only, so that this function can be inlined if
- // compiled for non-IE.
- if (goog.userAgent.IE && el.ownerDocument.body) {
- // In IE, most of the time, 2 extra pixels are added to the top and left
- // due to the implicit 2-pixel inset border. In IE6/7 quirks mode and
- // IE6 standards mode, this border can be overridden by setting the
- // document element's border to zero -- thus, we cannot rely on the
- // offset always being 2 pixels.
-
- // In quirks mode, the offset can be determined by querying the body's
- // clientLeft/clientTop, but in standards mode, it is found by querying
- // the document element's clientLeft/clientTop. Since we already called
- // getBoundingClientRect we have already forced a reflow, so it is not
- // too expensive just to query them all.
-
- // See: http://msdn.microsoft.com/en-us/library/ms536433(VS.85).aspx
- var doc = el.ownerDocument;
- rect.left -= doc.documentElement.clientLeft + doc.body.clientLeft;
- rect.top -= doc.documentElement.clientTop + doc.body.clientTop;
- }
- return rect;
-};
-
-
-/**
- * Returns the first parent that could affect the position of a given element.
- * @param {Element} element The element to get the offset parent for.
- * @return {Element} The first offset parent or null if one cannot be found.
- */
-goog.style.getOffsetParent = function(element) {
- // element.offsetParent does the right thing in IE7 and below. In other
- // browsers it only includes elements with position absolute, relative or
- // fixed, not elements with overflow set to auto or scroll.
- if (goog.userAgent.IE && !goog.userAgent.isDocumentModeOrHigher(8)) {
- goog.asserts.assert(element && 'offsetParent' in element);
- return element.offsetParent;
- }
-
- var doc = goog.dom.getOwnerDocument(element);
- var positionStyle = goog.style.getStyle_(element, 'position');
- var skipStatic = positionStyle == 'fixed' || positionStyle == 'absolute';
- for (var parent = element.parentNode; parent && parent != doc;
- parent = parent.parentNode) {
- // Skip shadowDOM roots.
- if (parent.nodeType == goog.dom.NodeType.DOCUMENT_FRAGMENT && parent.host) {
- parent = parent.host;
- }
- positionStyle =
- goog.style.getStyle_(/** @type {!Element} */ (parent), 'position');
- skipStatic = skipStatic && positionStyle == 'static' &&
- parent != doc.documentElement && parent != doc.body;
- if (!skipStatic &&
- (parent.scrollWidth > parent.clientWidth ||
- parent.scrollHeight > parent.clientHeight ||
- positionStyle == 'fixed' || positionStyle == 'absolute' ||
- positionStyle == 'relative')) {
- return /** @type {!Element} */ (parent);
- }
- }
- return null;
-};
-
-
-/**
- * Calculates and returns the visible rectangle for a given element. Returns a
- * box describing the visible portion of the nearest scrollable offset ancestor.
- * Coordinates are given relative to the document.
- *
- * @param {Element} element Element to get the visible rect for.
- * @return {goog.math.Box} Bounding elementBox describing the visible rect or
- * null if scrollable ancestor isn't inside the visible viewport.
- */
-goog.style.getVisibleRectForElement = function(element) {
- var visibleRect = new goog.math.Box(0, Infinity, Infinity, 0);
- var dom = goog.dom.getDomHelper(element);
- var body = dom.getDocument().body;
- var documentElement = dom.getDocument().documentElement;
- var scrollEl = dom.getDocumentScrollElement();
-
- // Determine the size of the visible rect by climbing the dom accounting for
- // all scrollable containers.
- for (var el = element; el = goog.style.getOffsetParent(el);) {
- // clientWidth is zero for inline block elements in IE.
- // on WEBKIT, body element can have clientHeight = 0 and scrollHeight > 0
- if ((!goog.userAgent.IE || el.clientWidth != 0) &&
- (!goog.userAgent.WEBKIT || el.clientHeight != 0 || el != body) &&
- // body may have overflow set on it, yet we still get the entire
- // viewport. In some browsers, el.offsetParent may be
- // document.documentElement, so check for that too.
- (el != body && el != documentElement &&
- goog.style.getStyle_(el, 'overflow') != 'visible')) {
- var pos = goog.style.getPageOffset(el);
- var client = goog.style.getClientLeftTop(el);
- pos.x += client.x;
- pos.y += client.y;
-
- visibleRect.top = Math.max(visibleRect.top, pos.y);
- visibleRect.right = Math.min(visibleRect.right, pos.x + el.clientWidth);
- visibleRect.bottom =
- Math.min(visibleRect.bottom, pos.y + el.clientHeight);
- visibleRect.left = Math.max(visibleRect.left, pos.x);
- }
- }
-
- // Clip by window's viewport.
- var scrollX = scrollEl.scrollLeft, scrollY = scrollEl.scrollTop;
- visibleRect.left = Math.max(visibleRect.left, scrollX);
- visibleRect.top = Math.max(visibleRect.top, scrollY);
- var winSize = dom.getViewportSize();
- visibleRect.right = Math.min(visibleRect.right, scrollX + winSize.width);
- visibleRect.bottom = Math.min(visibleRect.bottom, scrollY + winSize.height);
- return visibleRect.top >= 0 && visibleRect.left >= 0 &&
- visibleRect.bottom > visibleRect.top &&
- visibleRect.right > visibleRect.left ?
- visibleRect :
- null;
-};
-
-
-/**
- * Calculate the scroll position of {@code container} with the minimum amount so
- * that the content and the borders of the given {@code element} become visible.
- * If the element is bigger than the container, its top left corner will be
- * aligned as close to the container's top left corner as possible.
- *
- * @param {Element} element The element to make visible.
- * @param {Element=} opt_container The container to scroll. If not set, then the
- * document scroll element will be used.
- * @param {boolean=} opt_center Whether to center the element in the container.
- * Defaults to false.
- * @return {!goog.math.Coordinate} The new scroll position of the container,
- * in form of goog.math.Coordinate(scrollLeft, scrollTop).
- */
-goog.style.getContainerOffsetToScrollInto = function(
- element, opt_container, opt_center) {
- var container = opt_container || goog.dom.getDocumentScrollElement();
- // Absolute position of the element's border's top left corner.
- var elementPos = goog.style.getPageOffset(element);
- // Absolute position of the container's border's top left corner.
- var containerPos = goog.style.getPageOffset(container);
- var containerBorder = goog.style.getBorderBox(container);
- if (container == goog.dom.getDocumentScrollElement()) {
- // The element position is calculated based on the page offset, and the
- // document scroll element holds the scroll position within the page. We can
- // use the scroll position to calculate the relative position from the
- // element.
- var relX = elementPos.x - container.scrollLeft;
- var relY = elementPos.y - container.scrollTop;
- if (goog.userAgent.IE && !goog.userAgent.isDocumentModeOrHigher(10)) {
- // In older versions of IE getPageOffset(element) does not include the
- // container border so it has to be added to accomodate.
- relX += containerBorder.left;
- relY += containerBorder.top;
- }
- } else {
- // Relative pos. of the element's border box to the container's content box.
- var relX = elementPos.x - containerPos.x - containerBorder.left;
- var relY = elementPos.y - containerPos.y - containerBorder.top;
- }
- // How much the element can move in the container, i.e. the difference between
- // the element's bottom-right-most and top-left-most position where it's
- // fully visible.
- var spaceX = container.clientWidth -
- /** @type {HTMLElement} */ (element).offsetWidth;
- var spaceY = container.clientHeight -
- /** @type {HTMLElement} */ (element).offsetHeight;
-
- var scrollLeft = container.scrollLeft;
- var scrollTop = container.scrollTop;
- if (opt_center) {
- // All browsers round non-integer scroll positions down.
- scrollLeft += relX - spaceX / 2;
- scrollTop += relY - spaceY / 2;
- } else {
- // This formula was designed to give the correct scroll values in the
- // following cases:
- // - element is higher than container (spaceY < 0) => scroll down by relY
- // - element is not higher that container (spaceY >= 0):
- // - it is above container (relY < 0) => scroll up by abs(relY)
- // - it is below container (relY > spaceY) => scroll down by relY - spaceY
- // - it is in the container => don't scroll
- scrollLeft += Math.min(relX, Math.max(relX - spaceX, 0));
- scrollTop += Math.min(relY, Math.max(relY - spaceY, 0));
- }
- return new goog.math.Coordinate(scrollLeft, scrollTop);
-};
-
-
-/**
- * Changes the scroll position of {@code container} with the minimum amount so
- * that the content and the borders of the given {@code element} become visible.
- * If the element is bigger than the container, its top left corner will be
- * aligned as close to the container's top left corner as possible.
- *
- * @param {Element} element The element to make visible.
- * @param {Element=} opt_container The container to scroll. If not set, then the
- * document scroll element will be used.
- * @param {boolean=} opt_center Whether to center the element in the container.
- * Defaults to false.
- */
-goog.style.scrollIntoContainerView = function(
- element, opt_container, opt_center) {
- var container = opt_container || goog.dom.getDocumentScrollElement();
- var offset =
- goog.style.getContainerOffsetToScrollInto(element, container, opt_center);
- container.scrollLeft = offset.x;
- container.scrollTop = offset.y;
-};
-
-
-/**
- * Returns clientLeft (width of the left border and, if the directionality is
- * right to left, the vertical scrollbar) and clientTop as a coordinate object.
- *
- * @param {Element} el Element to get clientLeft for.
- * @return {!goog.math.Coordinate} Client left and top.
- */
-goog.style.getClientLeftTop = function(el) {
- return new goog.math.Coordinate(el.clientLeft, el.clientTop);
-};
-
-
-/**
- * Returns a Coordinate object relative to the top-left of the HTML document.
- * Implemented as a single function to save having to do two recursive loops in
- * opera and safari just to get both coordinates. If you just want one value do
- * use goog.style.getPageOffsetLeft() and goog.style.getPageOffsetTop(), but
- * note if you call both those methods the tree will be analysed twice.
- *
- * @param {Element} el Element to get the page offset for.
- * @return {!goog.math.Coordinate} The page offset.
- */
-goog.style.getPageOffset = function(el) {
- var doc = goog.dom.getOwnerDocument(el);
- // TODO(gboyer): Update the jsdoc in a way that doesn't break the universe.
- goog.asserts.assertObject(el, 'Parameter is required');
-
- // NOTE(arv): If element is hidden (display none or disconnected or any the
- // ancestors are hidden) we get (0,0) by default but we still do the
- // accumulation of scroll position.
-
- // TODO(arv): Should we check if the node is disconnected and in that case
- // return (0,0)?
-
- var pos = new goog.math.Coordinate(0, 0);
- var viewportElement = goog.style.getClientViewportElement(doc);
- if (el == viewportElement) {
- // viewport is always at 0,0 as that defined the coordinate system for this
- // function - this avoids special case checks in the code below
- return pos;
- }
-
- var box = goog.style.getBoundingClientRect_(el);
- // Must add the scroll coordinates in to get the absolute page offset
- // of element since getBoundingClientRect returns relative coordinates to
- // the viewport.
- var scrollCoord = goog.dom.getDomHelper(doc).getDocumentScroll();
- pos.x = box.left + scrollCoord.x;
- pos.y = box.top + scrollCoord.y;
-
- return pos;
-};
-
-
-/**
- * Returns the left coordinate of an element relative to the HTML document
- * @param {Element} el Elements.
- * @return {number} The left coordinate.
- */
-goog.style.getPageOffsetLeft = function(el) {
- return goog.style.getPageOffset(el).x;
-};
-
-
-/**
- * Returns the top coordinate of an element relative to the HTML document
- * @param {Element} el Elements.
- * @return {number} The top coordinate.
- */
-goog.style.getPageOffsetTop = function(el) {
- return goog.style.getPageOffset(el).y;
-};
-
-
-/**
- * Returns a Coordinate object relative to the top-left of an HTML document
- * in an ancestor frame of this element. Used for measuring the position of
- * an element inside a frame relative to a containing frame.
- *
- * @param {Element} el Element to get the page offset for.
- * @param {Window} relativeWin The window to measure relative to. If relativeWin
- * is not in the ancestor frame chain of the element, we measure relative to
- * the top-most window.
- * @return {!goog.math.Coordinate} The page offset.
- */
-goog.style.getFramedPageOffset = function(el, relativeWin) {
- var position = new goog.math.Coordinate(0, 0);
-
- // Iterate up the ancestor frame chain, keeping track of the current window
- // and the current element in that window.
- var currentWin = goog.dom.getWindow(goog.dom.getOwnerDocument(el));
-
- // MS Edge throws when accessing "parent" if el's containing iframe has been
- // deleted.
- if (!goog.reflect.canAccessProperty(currentWin, 'parent')) {
- return position;
- }
-
- var currentEl = el;
- do {
- // if we're at the top window, we want to get the page offset.
- // if we're at an inner frame, we only want to get the window position
- // so that we can determine the actual page offset in the context of
- // the outer window.
- var offset = currentWin == relativeWin ?
- goog.style.getPageOffset(currentEl) :
- goog.style.getClientPositionForElement_(goog.asserts.assert(currentEl));
-
- position.x += offset.x;
- position.y += offset.y;
- } while (currentWin && currentWin != relativeWin &&
- currentWin != currentWin.parent &&
- (currentEl = currentWin.frameElement) &&
- (currentWin = currentWin.parent));
-
- return position;
-};
-
-
-/**
- * Translates the specified rect relative to origBase page, for newBase page.
- * If origBase and newBase are the same, this function does nothing.
- *
- * @param {goog.math.Rect} rect The source rectangle relative to origBase page,
- * and it will have the translated result.
- * @param {goog.dom.DomHelper} origBase The DomHelper for the input rectangle.
- * @param {goog.dom.DomHelper} newBase The DomHelper for the resultant
- * coordinate. This must be a DOM for an ancestor frame of origBase
- * or the same as origBase.
- */
-goog.style.translateRectForAnotherFrame = function(rect, origBase, newBase) {
- if (origBase.getDocument() != newBase.getDocument()) {
- var body = origBase.getDocument().body;
- var pos = goog.style.getFramedPageOffset(body, newBase.getWindow());
-
- // Adjust Body's margin.
- pos = goog.math.Coordinate.difference(pos, goog.style.getPageOffset(body));
-
- if (goog.userAgent.IE && !goog.userAgent.isDocumentModeOrHigher(9) &&
- !origBase.isCss1CompatMode()) {
- pos = goog.math.Coordinate.difference(pos, origBase.getDocumentScroll());
- }
-
- rect.left += pos.x;
- rect.top += pos.y;
- }
-};
-
-
-/**
- * Returns the position of an element relative to another element in the
- * document. A relative to B
- * @param {Element|Event|goog.events.Event} a Element or mouse event whose
- * position we're calculating.
- * @param {Element|Event|goog.events.Event} b Element or mouse event position
- * is relative to.
- * @return {!goog.math.Coordinate} The relative position.
- */
-goog.style.getRelativePosition = function(a, b) {
- var ap = goog.style.getClientPosition(a);
- var bp = goog.style.getClientPosition(b);
- return new goog.math.Coordinate(ap.x - bp.x, ap.y - bp.y);
-};
-
-
-/**
- * Returns the position of the event or the element's border box relative to
- * the client viewport.
- * @param {!Element} el Element whose position to get.
- * @return {!goog.math.Coordinate} The position.
- * @private
- */
-goog.style.getClientPositionForElement_ = function(el) {
- var box = goog.style.getBoundingClientRect_(el);
- return new goog.math.Coordinate(box.left, box.top);
-};
-
-
-/**
- * Returns the position of the event or the element's border box relative to
- * the client viewport. If an event is passed, and if this event is a "touch"
- * event, then the position of the first changedTouches will be returned.
- * @param {Element|Event|goog.events.Event} el Element or a mouse / touch event.
- * @return {!goog.math.Coordinate} The position.
- */
-goog.style.getClientPosition = function(el) {
- goog.asserts.assert(el);
- if (el.nodeType == goog.dom.NodeType.ELEMENT) {
- return goog.style.getClientPositionForElement_(
- /** @type {!Element} */ (el));
- } else {
- var targetEvent = el.changedTouches ? el.changedTouches[0] : el;
- return new goog.math.Coordinate(targetEvent.clientX, targetEvent.clientY);
- }
-};
-
-
-/**
- * Moves an element to the given coordinates relative to the client viewport.
- * @param {Element} el Absolutely positioned element to set page offset for.
- * It must be in the document.
- * @param {number|goog.math.Coordinate} x Left position of the element's margin
- * box or a coordinate object.
- * @param {number=} opt_y Top position of the element's margin box.
- */
-goog.style.setPageOffset = function(el, x, opt_y) {
- // Get current pageoffset
- var cur = goog.style.getPageOffset(el);
-
- if (x instanceof goog.math.Coordinate) {
- opt_y = x.y;
- x = x.x;
- }
-
- // NOTE(arv): We cannot allow strings for x and y. We could but that would
- // require us to manually transform between different units
-
- // Work out deltas
- var dx = goog.asserts.assertNumber(x) - cur.x;
- var dy = Number(opt_y) - cur.y;
-
- // Set position to current left/top + delta
- goog.style.setPosition(
- el, /** @type {!HTMLElement} */ (el).offsetLeft + dx,
- /** @type {!HTMLElement} */ (el).offsetTop + dy);
-};
-
-
-/**
- * Sets the width/height values of an element. If an argument is numeric,
- * or a goog.math.Size is passed, it is assumed to be pixels and will add
- * 'px' after converting it to an integer in string form. (This just sets the
- * CSS width and height properties so it might set content-box or border-box
- * size depending on the box model the browser is using.)
- *
- * @param {Element} element Element to set the size of.
- * @param {string|number|goog.math.Size} w Width of the element, or a
- * size object.
- * @param {string|number=} opt_h Height of the element. Required if w is not a
- * size object.
- */
-goog.style.setSize = function(element, w, opt_h) {
- var h;
- if (w instanceof goog.math.Size) {
- h = w.height;
- w = w.width;
- } else {
- if (opt_h == undefined) {
- throw Error('missing height argument');
- }
- h = opt_h;
- }
-
- goog.style.setWidth(element, /** @type {string|number} */ (w));
- goog.style.setHeight(element, h);
-};
-
-
-/**
- * Helper function to create a string to be set into a pixel-value style
- * property of an element. Can round to the nearest integer value.
- *
- * @param {string|number} value The style value to be used. If a number,
- * 'px' will be appended, otherwise the value will be applied directly.
- * @param {boolean} round Whether to round the nearest integer (if property
- * is a number).
- * @return {string} The string value for the property.
- * @private
- */
-goog.style.getPixelStyleValue_ = function(value, round) {
- if (typeof value == 'number') {
- value = (round ? Math.round(value) : value) + 'px';
- }
-
- return value;
-};
-
-
-/**
- * Set the height of an element. Sets the element's style property.
- * @param {Element} element Element to set the height of.
- * @param {string|number} height The height value to set. If a number, 'px'
- * will be appended, otherwise the value will be applied directly.
- */
-goog.style.setHeight = function(element, height) {
- element.style.height = goog.style.getPixelStyleValue_(height, true);
-};
-
-
-/**
- * Set the width of an element. Sets the element's style property.
- * @param {Element} element Element to set the width of.
- * @param {string|number} width The width value to set. If a number, 'px'
- * will be appended, otherwise the value will be applied directly.
- */
-goog.style.setWidth = function(element, width) {
- element.style.width = goog.style.getPixelStyleValue_(width, true);
-};
-
-
-/**
- * Gets the height and width of an element, even if its display is none.
- *
- * Specifically, this returns the height and width of the border box,
- * irrespective of the box model in effect.
- *
- * Note that this function does not take CSS transforms into account. Please see
- * {@code goog.style.getTransformedSize}.
- * @param {Element} element Element to get size of.
- * @return {!goog.math.Size} Object with width/height properties.
- */
-goog.style.getSize = function(element) {
- return goog.style.evaluateWithTemporaryDisplay_(
- goog.style.getSizeWithDisplay_, /** @type {!Element} */ (element));
-};
-
-
-/**
- * Call {@code fn} on {@code element} such that {@code element}'s dimensions are
- * accurate when it's passed to {@code fn}.
- * @param {function(!Element): T} fn Function to call with {@code element} as
- * an argument after temporarily changing {@code element}'s display such
- * that its dimensions are accurate.
- * @param {!Element} element Element (which may have display none) to use as
- * argument to {@code fn}.
- * @return {T} Value returned by calling {@code fn} with {@code element}.
- * @template T
- * @private
- */
-goog.style.evaluateWithTemporaryDisplay_ = function(fn, element) {
- if (goog.style.getStyle_(element, 'display') != 'none') {
- return fn(element);
- }
-
- var style = element.style;
- var originalDisplay = style.display;
- var originalVisibility = style.visibility;
- var originalPosition = style.position;
-
- style.visibility = 'hidden';
- style.position = 'absolute';
- style.display = 'inline';
-
- var retVal = fn(element);
-
- style.display = originalDisplay;
- style.position = originalPosition;
- style.visibility = originalVisibility;
-
- return retVal;
-};
-
-
-/**
- * Gets the height and width of an element when the display is not none.
- * @param {Element} element Element to get size of.
- * @return {!goog.math.Size} Object with width/height properties.
- * @private
- */
-goog.style.getSizeWithDisplay_ = function(element) {
- var offsetWidth = /** @type {!HTMLElement} */ (element).offsetWidth;
- var offsetHeight = /** @type {!HTMLElement} */ (element).offsetHeight;
- var webkitOffsetsZero =
- goog.userAgent.WEBKIT && !offsetWidth && !offsetHeight;
- if ((!goog.isDef(offsetWidth) || webkitOffsetsZero) &&
- element.getBoundingClientRect) {
- // Fall back to calling getBoundingClientRect when offsetWidth or
- // offsetHeight are not defined, or when they are zero in WebKit browsers.
- // This makes sure that we return for the correct size for SVG elements, but
- // will still return 0 on Webkit prior to 534.8, see
- // http://trac.webkit.org/changeset/67252.
- var clientRect = goog.style.getBoundingClientRect_(element);
- return new goog.math.Size(
- clientRect.right - clientRect.left, clientRect.bottom - clientRect.top);
- }
- return new goog.math.Size(offsetWidth, offsetHeight);
-};
-
-
-/**
- * Gets the height and width of an element, post transform, even if its display
- * is none.
- *
- * This is like {@code goog.style.getSize}, except:
- * <ol>
- * <li>Takes webkitTransforms such as rotate and scale into account.
- * <li>Will return null if {@code element} doesn't respond to
- * {@code getBoundingClientRect}.
- * <li>Currently doesn't make sense on non-WebKit browsers which don't support
- * webkitTransforms.
- * </ol>
- * @param {!Element} element Element to get size of.
- * @return {goog.math.Size} Object with width/height properties.
- */
-goog.style.getTransformedSize = function(element) {
- if (!element.getBoundingClientRect) {
- return null;
- }
-
- var clientRect = goog.style.evaluateWithTemporaryDisplay_(
- goog.style.getBoundingClientRect_, element);
- return new goog.math.Size(
- clientRect.right - clientRect.left, clientRect.bottom - clientRect.top);
-};
-
-
-/**
- * Returns a bounding rectangle for a given element in page space.
- * @param {Element} element Element to get bounds of. Must not be display none.
- * @return {!goog.math.Rect} Bounding rectangle for the element.
- */
-goog.style.getBounds = function(element) {
- var o = goog.style.getPageOffset(element);
- var s = goog.style.getSize(element);
- return new goog.math.Rect(o.x, o.y, s.width, s.height);
-};
-
-
-/**
- * Converts a CSS selector in the form style-property to styleProperty.
- * @param {*} selector CSS Selector.
- * @return {string} Camel case selector.
- * @deprecated Use goog.string.toCamelCase instead.
- */
-goog.style.toCamelCase = function(selector) {
- return goog.string.toCamelCase(String(selector));
-};
-
-
-/**
- * Converts a CSS selector in the form styleProperty to style-property.
- * @param {string} selector Camel case selector.
- * @return {string} Selector cased.
- * @deprecated Use goog.string.toSelectorCase instead.
- */
-goog.style.toSelectorCase = function(selector) {
- return goog.string.toSelectorCase(selector);
-};
-
-
-/**
- * Gets the opacity of a node (x-browser). This gets the inline style opacity
- * of the node, and does not take into account the cascaded or the computed
- * style for this node.
- * @param {Element} el Element whose opacity has to be found.
- * @return {number|string} Opacity between 0 and 1 or an empty string {@code ''}
- * if the opacity is not set.
- */
-goog.style.getOpacity = function(el) {
- goog.asserts.assert(el);
- var style = el.style;
- var result = '';
- if ('opacity' in style) {
- result = style.opacity;
- } else if ('MozOpacity' in style) {
- result = style.MozOpacity;
- } else if ('filter' in style) {
- var match = style.filter.match(/alpha\(opacity=([\d.]+)\)/);
- if (match) {
- result = String(match[1] / 100);
- }
- }
- return result == '' ? result : Number(result);
-};
-
-
-/**
- * Sets the opacity of a node (x-browser).
- * @param {Element} el Elements whose opacity has to be set.
- * @param {number|string} alpha Opacity between 0 and 1 or an empty string
- * {@code ''} to clear the opacity.
- */
-goog.style.setOpacity = function(el, alpha) {
- goog.asserts.assert(el);
- var style = el.style;
- if ('opacity' in style) {
- style.opacity = alpha;
- } else if ('MozOpacity' in style) {
- style.MozOpacity = alpha;
- } else if ('filter' in style) {
- // TODO(arv): Overwriting the filter might have undesired side effects.
- if (alpha === '') {
- style.filter = '';
- } else {
- style.filter = 'alpha(opacity=' + (Number(alpha) * 100) + ')';
- }
- }
-};
-
-
-/**
- * Sets the background of an element to a transparent image in a browser-
- * independent manner.
- *
- * This function does not support repeating backgrounds or alternate background
- * positions to match the behavior of Internet Explorer. It also does not
- * support sizingMethods other than crop since they cannot be replicated in
- * browsers other than Internet Explorer.
- *
- * @param {Element} el The element to set background on.
- * @param {string} src The image source URL.
- */
-goog.style.setTransparentBackgroundImage = function(el, src) {
- var style = el.style;
- // It is safe to use the style.filter in IE only. In Safari 'filter' is in
- // style object but access to style.filter causes it to throw an exception.
- // Note: IE8 supports images with an alpha channel.
- if (goog.userAgent.IE && !goog.userAgent.isVersionOrHigher('8')) {
- // See TODO in setOpacity.
- style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(' +
- 'src="' + src + '", sizingMethod="crop")';
- } else {
- // Set style properties individually instead of using background shorthand
- // to prevent overwriting a pre-existing background color.
- style.backgroundImage = 'url(' + src + ')';
- style.backgroundPosition = 'top left';
- style.backgroundRepeat = 'no-repeat';
- }
-};
-
-
-/**
- * Clears the background image of an element in a browser independent manner.
- * @param {Element} el The element to clear background image for.
- */
-goog.style.clearTransparentBackgroundImage = function(el) {
- var style = el.style;
- if ('filter' in style) {
- // See TODO in setOpacity.
- style.filter = '';
- } else {
- // Set style properties individually instead of using background shorthand
- // to prevent overwriting a pre-existing background color.
- style.backgroundImage = 'none';
- }
-};
-
-
-/**
- * Shows or hides an element from the page. Hiding the element is done by
- * setting the display property to "none", removing the element from the
- * rendering hierarchy so it takes up no space. To show the element, the default
- * inherited display property is restored (defined either in stylesheets or by
- * the browser's default style rules.)
- *
- * Caveat 1: if the inherited display property for the element is set to "none"
- * by the stylesheets, that is the property that will be restored by a call to
- * showElement(), effectively toggling the display between "none" and "none".
- *
- * Caveat 2: if the element display style is set inline (by setting either
- * element.style.display or a style attribute in the HTML), a call to
- * showElement will clear that setting and defer to the inherited style in the
- * stylesheet.
- * @param {Element} el Element to show or hide.
- * @param {*} display True to render the element in its default style,
- * false to disable rendering the element.
- * @deprecated Use goog.style.setElementShown instead.
- */
-goog.style.showElement = function(el, display) {
- goog.style.setElementShown(el, display);
-};
-
-
-/**
- * Shows or hides an element from the page. Hiding the element is done by
- * setting the display property to "none", removing the element from the
- * rendering hierarchy so it takes up no space. To show the element, the default
- * inherited display property is restored (defined either in stylesheets or by
- * the browser's default style rules).
- *
- * Caveat 1: if the inherited display property for the element is set to "none"
- * by the stylesheets, that is the property that will be restored by a call to
- * setElementShown(), effectively toggling the display between "none" and
- * "none".
- *
- * Caveat 2: if the element display style is set inline (by setting either
- * element.style.display or a style attribute in the HTML), a call to
- * setElementShown will clear that setting and defer to the inherited style in
- * the stylesheet.
- * @param {Element} el Element to show or hide.
- * @param {*} isShown True to render the element in its default style,
- * false to disable rendering the element.
- */
-goog.style.setElementShown = function(el, isShown) {
- el.style.display = isShown ? '' : 'none';
-};
-
-
-/**
- * Test whether the given element has been shown or hidden via a call to
- * {@link #setElementShown}.
- *
- * Note this is strictly a companion method for a call
- * to {@link #setElementShown} and the same caveats apply; in particular, this
- * method does not guarantee that the return value will be consistent with
- * whether or not the element is actually visible.
- *
- * @param {Element} el The element to test.
- * @return {boolean} Whether the element has been shown.
- * @see #setElementShown
- */
-goog.style.isElementShown = function(el) {
- return el.style.display != 'none';
-};
-
-
-/**
- * Installs the styles string into the window that contains opt_node. If
- * opt_node is null, the main window is used.
- * @param {string} stylesString The style string to install.
- * @param {Node=} opt_node Node whose parent document should have the
- * styles installed.
- * @return {!Element|!StyleSheet} The style element created.
- * @deprecated Use {@link #installSafeStyleSheet} instead.
- */
-goog.style.installStyles = function(stylesString, opt_node) {
- return goog.style.installSafeStyleSheet(
- goog.html.legacyconversions.safeStyleSheetFromString(stylesString),
- opt_node);
-};
-
-
-/**
- * Installs the style sheet into the window that contains opt_node. If
- * opt_node is null, the main window is used.
- * @param {!goog.html.SafeStyleSheet} safeStyleSheet The style sheet to install.
- * @param {?Node=} opt_node Node whose parent document should have the
- * styles installed.
- * @return {!Element|!StyleSheet} The style element created.
- */
-goog.style.installSafeStyleSheet = function(safeStyleSheet, opt_node) {
- var dh = goog.dom.getDomHelper(opt_node);
- var styleSheet = null;
-
- // IE < 11 requires createStyleSheet. Note that doc.createStyleSheet will be
- // undefined as of IE 11.
- var doc = dh.getDocument();
- if (goog.userAgent.IE && doc.createStyleSheet) {
- styleSheet = doc.createStyleSheet();
- goog.style.setSafeStyleSheet(styleSheet, safeStyleSheet);
- } else {
- var head = dh.getElementsByTagNameAndClass(goog.dom.TagName.HEAD)[0];
-
- // In opera documents are not guaranteed to have a head element, thus we
- // have to make sure one exists before using it.
- if (!head) {
- var body = dh.getElementsByTagNameAndClass(goog.dom.TagName.BODY)[0];
- head = dh.createDom(goog.dom.TagName.HEAD);
- body.parentNode.insertBefore(head, body);
- }
- styleSheet = dh.createDom(goog.dom.TagName.STYLE);
- // NOTE(user): Setting styles after the style element has been appended
- // to the head results in a nasty Webkit bug in certain scenarios. Please
- // refer to https://bugs.webkit.org/show_bug.cgi?id=26307 for additional
- // details.
- goog.style.setSafeStyleSheet(styleSheet, safeStyleSheet);
- dh.appendChild(head, styleSheet);
- }
- return styleSheet;
-};
-
-
-/**
- * Removes the styles added by {@link #installStyles}.
- * @param {Element|StyleSheet} styleSheet The value returned by
- * {@link #installStyles}.
- */
-goog.style.uninstallStyles = function(styleSheet) {
- var node = styleSheet.ownerNode || styleSheet.owningElement ||
- /** @type {Element} */ (styleSheet);
- goog.dom.removeNode(node);
-};
-
-
-/**
- * Sets the content of a style element. The style element can be any valid
- * style element. This element will have its content completely replaced by
- * the stylesString.
- * @param {Element|StyleSheet} element A stylesheet element as returned by
- * installStyles.
- * @param {string} stylesString The new content of the stylesheet.
- * @deprecated Use {@link #setSafeStyleSheet} instead.
- */
-goog.style.setStyles = function(element, stylesString) {
- goog.style.setSafeStyleSheet(/** @type {!Element|!StyleSheet} */ (element),
- goog.html.legacyconversions.safeStyleSheetFromString(stylesString));
-};
-
-
-/**
- * Sets the content of a style element. The style element can be any valid
- * style element. This element will have its content completely replaced by
- * the safeStyleSheet.
- * @param {!Element|!StyleSheet} element A stylesheet element as returned by
- * installStyles.
- * @param {!goog.html.SafeStyleSheet} safeStyleSheet The new content of the
- * stylesheet.
- */
-goog.style.setSafeStyleSheet = function(element, safeStyleSheet) {
- var stylesString = goog.html.SafeStyleSheet.unwrap(safeStyleSheet);
- if (goog.userAgent.IE && goog.isDef(element.cssText)) {
- // Adding the selectors individually caused the browser to hang if the
- // selector was invalid or there were CSS comments. Setting the cssText of
- // the style node works fine and ignores CSS that IE doesn't understand.
- // However IE >= 11 doesn't support cssText any more, so we make sure that
- // cssText is a defined property and otherwise fall back to setTextContent.
- element.cssText = stylesString;
- } else {
- // NOTE: We could also set textContent directly here.
- goog.dom.setTextContent(/** @type {!Element} */ (element), stylesString);
- }
-};
-
-
-/**
- * Sets 'white-space: pre-wrap' for a node (x-browser).
- *
- * There are as many ways of specifying pre-wrap as there are browsers.
- *
- * CSS3/IE8: white-space: pre-wrap;
- * Mozilla: white-space: -moz-pre-wrap;
- * Opera: white-space: -o-pre-wrap;
- * IE6/7: white-space: pre; word-wrap: break-word;
- *
- * @param {Element} el Element to enable pre-wrap for.
- */
-goog.style.setPreWrap = function(el) {
- var style = el.style;
- if (goog.userAgent.IE && !goog.userAgent.isVersionOrHigher('8')) {
- style.whiteSpace = 'pre';
- style.wordWrap = 'break-word';
- } else if (goog.userAgent.GECKO) {
- style.whiteSpace = '-moz-pre-wrap';
- } else {
- style.whiteSpace = 'pre-wrap';
- }
-};
-
-
-/**
- * Sets 'display: inline-block' for an element (cross-browser).
- * @param {Element} el Element to which the inline-block display style is to be
- * applied.
- * @see ../demos/inline_block_quirks.html
- * @see ../demos/inline_block_standards.html
- */
-goog.style.setInlineBlock = function(el) {
- var style = el.style;
- // Without position:relative, weirdness ensues. Just accept it and move on.
- style.position = 'relative';
-
- if (goog.userAgent.IE && !goog.userAgent.isVersionOrHigher('8')) {
- // IE8 supports inline-block so fall through to the else
- // Zoom:1 forces hasLayout, display:inline gives inline behavior.
- style.zoom = '1';
- style.display = 'inline';
- } else {
- // Opera, Webkit, and Safari seem to do OK with the standard inline-block
- // style.
- style.display = 'inline-block';
- }
-};
-
-
-/**
- * Returns true if the element is using right to left (rtl) direction.
- * @param {Element} el The element to test.
- * @return {boolean} True for right to left, false for left to right.
- */
-goog.style.isRightToLeft = function(el) {
- return 'rtl' == goog.style.getStyle_(el, 'direction');
-};
-
-
-/**
- * The CSS style property corresponding to an element being
- * unselectable on the current browser platform (null if none).
- * Opera and IE instead use a DOM attribute 'unselectable'. MS Edge uses
- * the Webkit prefix.
- * @type {?string}
- * @private
- */
-goog.style.unselectableStyle_ = goog.userAgent.GECKO ?
- 'MozUserSelect' :
- goog.userAgent.WEBKIT || goog.userAgent.EDGE ? 'WebkitUserSelect' : null;
-
-
-/**
- * Returns true if the element is set to be unselectable, false otherwise.
- * Note that on some platforms (e.g. Mozilla), even if an element isn't set
- * to be unselectable, it will behave as such if any of its ancestors is
- * unselectable.
- * @param {Element} el Element to check.
- * @return {boolean} Whether the element is set to be unselectable.
- */
-goog.style.isUnselectable = function(el) {
- if (goog.style.unselectableStyle_) {
- return el.style[goog.style.unselectableStyle_].toLowerCase() == 'none';
- } else if (goog.userAgent.IE || goog.userAgent.OPERA) {
- return el.getAttribute('unselectable') == 'on';
- }
- return false;
-};
-
-
-/**
- * Makes the element and its descendants selectable or unselectable. Note
- * that on some platforms (e.g. Mozilla), even if an element isn't set to
- * be unselectable, it will behave as such if any of its ancestors is
- * unselectable.
- * @param {Element} el The element to alter.
- * @param {boolean} unselectable Whether the element and its descendants
- * should be made unselectable.
- * @param {boolean=} opt_noRecurse Whether to only alter the element's own
- * selectable state, and leave its descendants alone; defaults to false.
- */
-goog.style.setUnselectable = function(el, unselectable, opt_noRecurse) {
- // TODO(attila): Do we need all of TR_DomUtil.makeUnselectable() in Closure?
- var descendants = !opt_noRecurse ? el.getElementsByTagName('*') : null;
- var name = goog.style.unselectableStyle_;
- if (name) {
- // Add/remove the appropriate CSS style to/from the element and its
- // descendants.
- var value = unselectable ? 'none' : '';
- // MathML elements do not have a style property. Verify before setting.
- if (el.style) {
- el.style[name] = value;
- }
- if (descendants) {
- for (var i = 0, descendant; descendant = descendants[i]; i++) {
- if (descendant.style) {
- descendant.style[name] = value;
- }
- }
- }
- } else if (goog.userAgent.IE || goog.userAgent.OPERA) {
- // Toggle the 'unselectable' attribute on the element and its descendants.
- var value = unselectable ? 'on' : '';
- el.setAttribute('unselectable', value);
- if (descendants) {
- for (var i = 0, descendant; descendant = descendants[i]; i++) {
- descendant.setAttribute('unselectable', value);
- }
- }
- }
-};
-
-
-/**
- * Gets the border box size for an element.
- * @param {Element} element The element to get the size for.
- * @return {!goog.math.Size} The border box size.
- */
-goog.style.getBorderBoxSize = function(element) {
- return new goog.math.Size(
- /** @type {!HTMLElement} */ (element).offsetWidth,
- /** @type {!HTMLElement} */ (element).offsetHeight);
-};
-
-
-/**
- * Sets the border box size of an element. This is potentially expensive in IE
- * if the document is CSS1Compat mode
- * @param {Element} element The element to set the size on.
- * @param {goog.math.Size} size The new size.
- */
-goog.style.setBorderBoxSize = function(element, size) {
- var doc = goog.dom.getOwnerDocument(element);
- var isCss1CompatMode = goog.dom.getDomHelper(doc).isCss1CompatMode();
-
- if (goog.userAgent.IE && !goog.userAgent.isVersionOrHigher('10') &&
- (!isCss1CompatMode || !goog.userAgent.isVersionOrHigher('8'))) {
- var style = element.style;
- if (isCss1CompatMode) {
- var paddingBox = goog.style.getPaddingBox(element);
- var borderBox = goog.style.getBorderBox(element);
- style.pixelWidth = size.width - borderBox.left - paddingBox.left -
- paddingBox.right - borderBox.right;
- style.pixelHeight = size.height - borderBox.top - paddingBox.top -
- paddingBox.bottom - borderBox.bottom;
- } else {
- style.pixelWidth = size.width;
- style.pixelHeight = size.height;
- }
- } else {
- goog.style.setBoxSizingSize_(element, size, 'border-box');
- }
-};
-
-
-/**
- * Gets the content box size for an element. This is potentially expensive in
- * all browsers.
- * @param {Element} element The element to get the size for.
- * @return {!goog.math.Size} The content box size.
- */
-goog.style.getContentBoxSize = function(element) {
- var doc = goog.dom.getOwnerDocument(element);
- var ieCurrentStyle = goog.userAgent.IE && element.currentStyle;
- if (ieCurrentStyle && goog.dom.getDomHelper(doc).isCss1CompatMode() &&
- ieCurrentStyle.width != 'auto' && ieCurrentStyle.height != 'auto' &&
- !ieCurrentStyle.boxSizing) {
- // If IE in CSS1Compat mode than just use the width and height.
- // If we have a boxSizing then fall back on measuring the borders etc.
- var width = goog.style.getIePixelValue_(
- element, ieCurrentStyle.width, 'width', 'pixelWidth');
- var height = goog.style.getIePixelValue_(
- element, ieCurrentStyle.height, 'height', 'pixelHeight');
- return new goog.math.Size(width, height);
- } else {
- var borderBoxSize = goog.style.getBorderBoxSize(element);
- var paddingBox = goog.style.getPaddingBox(element);
- var borderBox = goog.style.getBorderBox(element);
- return new goog.math.Size(
- borderBoxSize.width - borderBox.left - paddingBox.left -
- paddingBox.right - borderBox.right,
- borderBoxSize.height - borderBox.top - paddingBox.top -
- paddingBox.bottom - borderBox.bottom);
- }
-};
-
-
-/**
- * Sets the content box size of an element. This is potentially expensive in IE
- * if the document is BackCompat mode.
- * @param {Element} element The element to set the size on.
- * @param {goog.math.Size} size The new size.
- */
-goog.style.setContentBoxSize = function(element, size) {
- var doc = goog.dom.getOwnerDocument(element);
- var isCss1CompatMode = goog.dom.getDomHelper(doc).isCss1CompatMode();
- if (goog.userAgent.IE && !goog.userAgent.isVersionOrHigher('10') &&
- (!isCss1CompatMode || !goog.userAgent.isVersionOrHigher('8'))) {
- var style = element.style;
- if (isCss1CompatMode) {
- style.pixelWidth = size.width;
- style.pixelHeight = size.height;
- } else {
- var paddingBox = goog.style.getPaddingBox(element);
- var borderBox = goog.style.getBorderBox(element);
- style.pixelWidth = size.width + borderBox.left + paddingBox.left +
- paddingBox.right + borderBox.right;
- style.pixelHeight = size.height + borderBox.top + paddingBox.top +
- paddingBox.bottom + borderBox.bottom;
- }
- } else {
- goog.style.setBoxSizingSize_(element, size, 'content-box');
- }
-};
-
-
-/**
- * Helper function that sets the box sizing as well as the width and height
- * @param {Element} element The element to set the size on.
- * @param {goog.math.Size} size The new size to set.
- * @param {string} boxSizing The box-sizing value.
- * @private
- */
-goog.style.setBoxSizingSize_ = function(element, size, boxSizing) {
- var style = element.style;
- if (goog.userAgent.GECKO) {
- style.MozBoxSizing = boxSizing;
- } else if (goog.userAgent.WEBKIT) {
- style.WebkitBoxSizing = boxSizing;
- } else {
- // Includes IE8 and Opera 9.50+
- style.boxSizing = boxSizing;
- }
-
- // Setting this to a negative value will throw an exception on IE
- // (and doesn't do anything different than setting it to 0).
- style.width = Math.max(size.width, 0) + 'px';
- style.height = Math.max(size.height, 0) + 'px';
-};
-
-
-/**
- * IE specific function that converts a non pixel unit to pixels.
- * @param {Element} element The element to convert the value for.
- * @param {string} value The current value as a string. The value must not be
- * ''.
- * @param {string} name The CSS property name to use for the converstion. This
- * should be 'left', 'top', 'width' or 'height'.
- * @param {string} pixelName The CSS pixel property name to use to get the
- * value in pixels.
- * @return {number} The value in pixels.
- * @private
- */
-goog.style.getIePixelValue_ = function(element, value, name, pixelName) {
- // Try if we already have a pixel value. IE does not do half pixels so we
- // only check if it matches a number followed by 'px'.
- if (/^\d+px?$/.test(value)) {
- return parseInt(value, 10);
- } else {
- var oldStyleValue = element.style[name];
- var oldRuntimeValue = element.runtimeStyle[name];
- // set runtime style to prevent changes
- element.runtimeStyle[name] = element.currentStyle[name];
- element.style[name] = value;
- var pixelValue = element.style[pixelName];
- // restore
- element.style[name] = oldStyleValue;
- element.runtimeStyle[name] = oldRuntimeValue;
- return pixelValue;
- }
-};
-
-
-/**
- * Helper function for getting the pixel padding or margin for IE.
- * @param {Element} element The element to get the padding for.
- * @param {string} propName The property name.
- * @return {number} The pixel padding.
- * @private
- */
-goog.style.getIePixelDistance_ = function(element, propName) {
- var value = goog.style.getCascadedStyle(element, propName);
- return value ?
- goog.style.getIePixelValue_(element, value, 'left', 'pixelLeft') :
- 0;
-};
-
-
-/**
- * Gets the computed paddings or margins (on all sides) in pixels.
- * @param {Element} element The element to get the padding for.
- * @param {string} stylePrefix Pass 'padding' to retrieve the padding box,
- * or 'margin' to retrieve the margin box.
- * @return {!goog.math.Box} The computed paddings or margins.
- * @private
- */
-goog.style.getBox_ = function(element, stylePrefix) {
- if (goog.userAgent.IE) {
- var left = goog.style.getIePixelDistance_(element, stylePrefix + 'Left');
- var right = goog.style.getIePixelDistance_(element, stylePrefix + 'Right');
- var top = goog.style.getIePixelDistance_(element, stylePrefix + 'Top');
- var bottom =
- goog.style.getIePixelDistance_(element, stylePrefix + 'Bottom');
- return new goog.math.Box(top, right, bottom, left);
- } else {
- // On non-IE browsers, getComputedStyle is always non-null.
- var left = goog.style.getComputedStyle(element, stylePrefix + 'Left');
- var right = goog.style.getComputedStyle(element, stylePrefix + 'Right');
- var top = goog.style.getComputedStyle(element, stylePrefix + 'Top');
- var bottom = goog.style.getComputedStyle(element, stylePrefix + 'Bottom');
-
- // NOTE(arv): Gecko can return floating point numbers for the computed
- // style values.
- return new goog.math.Box(
- parseFloat(top), parseFloat(right), parseFloat(bottom),
- parseFloat(left));
- }
-};
-
-
-/**
- * Gets the computed paddings (on all sides) in pixels.
- * @param {Element} element The element to get the padding for.
- * @return {!goog.math.Box} The computed paddings.
- */
-goog.style.getPaddingBox = function(element) {
- return goog.style.getBox_(element, 'padding');
-};
-
-
-/**
- * Gets the computed margins (on all sides) in pixels.
- * @param {Element} element The element to get the margins for.
- * @return {!goog.math.Box} The computed margins.
- */
-goog.style.getMarginBox = function(element) {
- return goog.style.getBox_(element, 'margin');
-};
-
-
-/**
- * A map used to map the border width keywords to a pixel width.
- * @type {!Object}
- * @private
- */
-goog.style.ieBorderWidthKeywords_ = {
- 'thin': 2,
- 'medium': 4,
- 'thick': 6
-};
-
-
-/**
- * Helper function for IE to get the pixel border.
- * @param {Element} element The element to get the pixel border for.
- * @param {string} prop The part of the property name.
- * @return {number} The value in pixels.
- * @private
- */
-goog.style.getIePixelBorder_ = function(element, prop) {
- if (goog.style.getCascadedStyle(element, prop + 'Style') == 'none') {
- return 0;
- }
- var width = goog.style.getCascadedStyle(element, prop + 'Width');
- if (width in goog.style.ieBorderWidthKeywords_) {
- return goog.style.ieBorderWidthKeywords_[width];
- }
- return goog.style.getIePixelValue_(element, width, 'left', 'pixelLeft');
-};
-
-
-/**
- * Gets the computed border widths (on all sides) in pixels
- * @param {Element} element The element to get the border widths for.
- * @return {!goog.math.Box} The computed border widths.
- */
-goog.style.getBorderBox = function(element) {
- if (goog.userAgent.IE && !goog.userAgent.isDocumentModeOrHigher(9)) {
- var left = goog.style.getIePixelBorder_(element, 'borderLeft');
- var right = goog.style.getIePixelBorder_(element, 'borderRight');
- var top = goog.style.getIePixelBorder_(element, 'borderTop');
- var bottom = goog.style.getIePixelBorder_(element, 'borderBottom');
- return new goog.math.Box(top, right, bottom, left);
- } else {
- // On non-IE browsers, getComputedStyle is always non-null.
- var left = goog.style.getComputedStyle(element, 'borderLeftWidth');
- var right = goog.style.getComputedStyle(element, 'borderRightWidth');
- var top = goog.style.getComputedStyle(element, 'borderTopWidth');
- var bottom = goog.style.getComputedStyle(element, 'borderBottomWidth');
-
- return new goog.math.Box(
- parseFloat(top), parseFloat(right), parseFloat(bottom),
- parseFloat(left));
- }
-};
-
-
-/**
- * Returns the font face applied to a given node. Opera and IE should return
- * the font actually displayed. Firefox returns the author's most-preferred
- * font (whether the browser is capable of displaying it or not.)
- * @param {Element} el The element whose font family is returned.
- * @return {string} The font family applied to el.
- */
-goog.style.getFontFamily = function(el) {
- var doc = goog.dom.getOwnerDocument(el);
- var font = '';
- // The moveToElementText method from the TextRange only works if the element
- // is attached to the owner document.
- if (doc.body.createTextRange && goog.dom.contains(doc, el)) {
- var range = doc.body.createTextRange();
- range.moveToElementText(el);
- /** @preserveTry */
- try {
- font = range.queryCommandValue('FontName');
- } catch (e) {
- // This is a workaround for a awkward exception.
- // On some IE, there is an exception coming from it.
- // The error description from this exception is:
- // This window has already been registered as a drop target
- // This is bogus description, likely due to a bug in ie.
- font = '';
- }
- }
- if (!font) {
- // Note if for some reason IE can't derive FontName with a TextRange, we
- // fallback to using currentStyle
- font = goog.style.getStyle_(el, 'fontFamily');
- }
-
- // Firefox returns the applied font-family string (author's list of
- // preferred fonts.) We want to return the most-preferred font, in lieu of
- // the *actually* applied font.
- var fontsArray = font.split(',');
- if (fontsArray.length > 1) font = fontsArray[0];
-
- // Sanitize for x-browser consistency:
- // Strip quotes because browsers aren't consistent with how they're
- // applied; Opera always encloses, Firefox sometimes, and IE never.
- return goog.string.stripQuotes(font, '"\'');
-};
-
-
-/**
- * Regular expression used for getLengthUnits.
- * @type {RegExp}
- * @private
- */
-goog.style.lengthUnitRegex_ = /[^\d]+$/;
-
-
-/**
- * Returns the units used for a CSS length measurement.
- * @param {string} value A CSS length quantity.
- * @return {?string} The units of measurement.
- */
-goog.style.getLengthUnits = function(value) {
- var units = value.match(goog.style.lengthUnitRegex_);
- return units && units[0] || null;
-};
-
-
-/**
- * Map of absolute CSS length units
- * @type {!Object}
- * @private
- */
-goog.style.ABSOLUTE_CSS_LENGTH_UNITS_ = {
- 'cm': 1,
- 'in': 1,
- 'mm': 1,
- 'pc': 1,
- 'pt': 1
-};
-
-
-/**
- * Map of relative CSS length units that can be accurately converted to px
- * font-size values using getIePixelValue_. Only units that are defined in
- * relation to a font size are convertible (%, small, etc. are not).
- * @type {!Object}
- * @private
- */
-goog.style.CONVERTIBLE_RELATIVE_CSS_UNITS_ = {
- 'em': 1,
- 'ex': 1
-};
-
-
-/**
- * Returns the font size, in pixels, of text in an element.
- * @param {Element} el The element whose font size is returned.
- * @return {number} The font size (in pixels).
- */
-goog.style.getFontSize = function(el) {
- var fontSize = goog.style.getStyle_(el, 'fontSize');
- var sizeUnits = goog.style.getLengthUnits(fontSize);
- if (fontSize && 'px' == sizeUnits) {
- // NOTE(user): This could be parseFloat instead, but IE doesn't return
- // decimal fractions in getStyle_ and Firefox reports the fractions, but
- // ignores them when rendering. Interestingly enough, when we force the
- // issue and size something to e.g., 50% of 25px, the browsers round in
- // opposite directions with Firefox reporting 12px and IE 13px. I punt.
- return parseInt(fontSize, 10);
- }
-
- // In IE, we can convert absolute length units to a px value using
- // goog.style.getIePixelValue_. Units defined in relation to a font size
- // (em, ex) are applied relative to the element's parentNode and can also
- // be converted.
- if (goog.userAgent.IE) {
- if (String(sizeUnits) in goog.style.ABSOLUTE_CSS_LENGTH_UNITS_) {
- return goog.style.getIePixelValue_(el, fontSize, 'left', 'pixelLeft');
- } else if (
- el.parentNode && el.parentNode.nodeType == goog.dom.NodeType.ELEMENT &&
- String(sizeUnits) in goog.style.CONVERTIBLE_RELATIVE_CSS_UNITS_) {
- // Check the parent size - if it is the same it means the relative size
- // value is inherited and we therefore don't want to count it twice. If
- // it is different, this element either has explicit style or has a CSS
- // rule applying to it.
- var parentElement = /** @type {!Element} */ (el.parentNode);
- var parentSize = goog.style.getStyle_(parentElement, 'fontSize');
- return goog.style.getIePixelValue_(
- parentElement, fontSize == parentSize ? '1em' : fontSize, 'left',
- 'pixelLeft');
- }
- }
-
- // Sometimes we can't cleanly find the font size (some units relative to a
- // node's parent's font size are difficult: %, smaller et al), so we create
- // an invisible, absolutely-positioned span sized to be the height of an 'M'
- // rendered in its parent's (i.e., our target element's) font size. This is
- // the definition of CSS's font size attribute.
- var sizeElement = goog.dom.createDom(goog.dom.TagName.SPAN, {
- 'style': 'visibility:hidden;position:absolute;' +
- 'line-height:0;padding:0;margin:0;border:0;height:1em;'
- });
- goog.dom.appendChild(el, sizeElement);
- fontSize = sizeElement.offsetHeight;
- goog.dom.removeNode(sizeElement);
-
- return fontSize;
-};
-
-
-/**
- * Parses a style attribute value. Converts CSS property names to camel case.
- * @param {string} value The style attribute value.
- * @return {!Object} Map of CSS properties to string values.
- */
-goog.style.parseStyleAttribute = function(value) {
- var result = {};
- goog.array.forEach(value.split(/\s*;\s*/), function(pair) {
- var keyValue = pair.match(/\s*([\w-]+)\s*\:(.+)/);
- if (keyValue) {
- var styleName = keyValue[1];
- var styleValue = goog.string.trim(keyValue[2]);
- result[goog.string.toCamelCase(styleName.toLowerCase())] = styleValue;
- }
- });
- return result;
-};
-
-
-/**
- * Reverse of parseStyleAttribute; that is, takes a style object and returns the
- * corresponding attribute value. Converts camel case property names to proper
- * CSS selector names.
- * @param {Object} obj Map of CSS properties to values.
- * @return {string} The style attribute value.
- */
-goog.style.toStyleAttribute = function(obj) {
- var buffer = [];
- goog.object.forEach(obj, function(value, key) {
- buffer.push(goog.string.toSelectorCase(key), ':', value, ';');
- });
- return buffer.join('');
-};
-
-
-/**
- * Sets CSS float property on an element.
- * @param {Element} el The element to set float property on.
- * @param {string} value The value of float CSS property to set on this element.
- */
-goog.style.setFloat = function(el, value) {
- el.style[goog.userAgent.IE ? 'styleFloat' : 'cssFloat'] = value;
-};
-
-
-/**
- * Gets value of explicitly-set float CSS property on an element.
- * @param {Element} el The element to get float property of.
- * @return {string} The value of explicitly-set float CSS property on this
- * element.
- */
-goog.style.getFloat = function(el) {
- return el.style[goog.userAgent.IE ? 'styleFloat' : 'cssFloat'] || '';
-};
-
-
-/**
- * Returns the scroll bar width (represents the width of both horizontal
- * and vertical scroll).
- *
- * @param {string=} opt_className An optional class name (or names) to apply
- * to the invisible div created to measure the scrollbar. This is necessary
- * if some scrollbars are styled differently than others.
- * @return {number} The scroll bar width in px.
- */
-goog.style.getScrollbarWidth = function(opt_className) {
- // Add two hidden divs. The child div is larger than the parent and
- // forces scrollbars to appear on it.
- // Using overflow:scroll does not work consistently with scrollbars that
- // are styled with ::-webkit-scrollbar.
- var outerDiv = goog.dom.createElement(goog.dom.TagName.DIV);
- if (opt_className) {
- outerDiv.className = opt_className;
- }
- outerDiv.style.cssText = 'overflow:auto;' +
- 'position:absolute;top:0;width:100px;height:100px';
- var innerDiv = goog.dom.createElement(goog.dom.TagName.DIV);
- goog.style.setSize(innerDiv, '200px', '200px');
- outerDiv.appendChild(innerDiv);
- goog.dom.appendChild(goog.dom.getDocument().body, outerDiv);
- var width = outerDiv.offsetWidth - outerDiv.clientWidth;
- goog.dom.removeNode(outerDiv);
- return width;
+ol.dom.removeNode = function(node) {
+ return node && node.parentNode ? node.parentNode.removeChild(node) : null;
};
-
-/**
- * Regular expression to extract x and y translation components from a CSS
- * transform Matrix representation.
- *
- * @type {!RegExp}
- * @const
- * @private
- */
-goog.style.MATRIX_TRANSLATION_REGEX_ = new RegExp(
- 'matrix\\([0-9\\.\\-]+, [0-9\\.\\-]+, ' +
- '[0-9\\.\\-]+, [0-9\\.\\-]+, ' +
- '([0-9\\.\\-]+)p?x?, ([0-9\\.\\-]+)p?x?\\)');
-
-
/**
- * Returns the x,y translation component of any CSS transforms applied to the
- * element, in pixels.
- *
- * @param {!Element} element The element to get the translation of.
- * @return {!goog.math.Coordinate} The CSS translation of the element in px.
+ * @param {Node} node The node to remove the children from.
*/
-goog.style.getCssTranslation = function(element) {
- var transform = goog.style.getComputedTransform(element);
- if (!transform) {
- return new goog.math.Coordinate(0, 0);
+ol.dom.removeChildren = function(node) {
+ while (node.lastChild) {
+ node.removeChild(node.lastChild);
}
- var matches = transform.match(goog.style.MATRIX_TRANSLATION_REGEX_);
- if (!matches) {
- return new goog.math.Coordinate(0, 0);
- }
- return new goog.math.Coordinate(
- parseFloat(matches[1]), parseFloat(matches[2]));
};
goog.provide('ol.MapEvent');
@@ -33714,7 +22405,7 @@ ol.MapEventType = {
*/
ol.MapEvent = function(type, map, opt_frameState) {
- goog.base(this, type);
+ ol.events.Event.call(this, type);
/**
* The map where the event occurred.
@@ -33731,15 +22422,15 @@ ol.MapEvent = function(type, map, opt_frameState) {
this.frameState = opt_frameState !== undefined ? opt_frameState : null;
};
-goog.inherits(ol.MapEvent, ol.events.Event);
+ol.inherits(ol.MapEvent, ol.events.Event);
goog.provide('ol.control.Control');
-goog.require('goog.dom');
goog.require('ol.events');
goog.require('ol');
goog.require('ol.MapEventType');
goog.require('ol.Object');
+goog.require('ol.dom');
/**
@@ -33773,7 +22464,7 @@ goog.require('ol.Object');
*/
ol.control.Control = function(options) {
- goog.base(this);
+ ol.Object.call(this);
/**
* @protected
@@ -33795,7 +22486,7 @@ ol.control.Control = function(options) {
/**
* @protected
- * @type {!Array.<ol.events.Key>}
+ * @type {!Array.<ol.EventsKey>}
*/
this.listenerKeys = [];
@@ -33809,15 +22500,15 @@ ol.control.Control = function(options) {
}
};
-goog.inherits(ol.control.Control, ol.Object);
+ol.inherits(ol.control.Control, ol.Object);
/**
* @inheritDoc
*/
ol.control.Control.prototype.disposeInternal = function() {
- goog.dom.removeNode(this.element);
- goog.base(this, 'disposeInternal');
+ ol.dom.removeNode(this.element);
+ ol.Object.prototype.disposeInternal.call(this);
};
@@ -33840,7 +22531,7 @@ ol.control.Control.prototype.getMap = function() {
*/
ol.control.Control.prototype.setMap = function(map) {
if (this.map_) {
- goog.dom.removeNode(this.element);
+ ol.dom.removeNode(this.element);
}
for (var i = 0, ii = this.listenerKeys.length; i < ii; ++i) {
ol.events.unlistenByKey(this.listenerKeys[i]);
@@ -33870,7 +22561,9 @@ ol.control.Control.prototype.setMap = function(map) {
* @api
*/
ol.control.Control.prototype.setTarget = function(target) {
- this.target_ = goog.dom.getElement(target);
+ this.target_ = typeof target === 'string' ?
+ document.getElementById(target) :
+ target;
};
goog.provide('ol.css');
@@ -34046,7 +22739,7 @@ ol.structs.LRUCache.prototype.get = function(key) {
if (entry === this.newest_) {
return entry.value_;
} else if (entry === this.oldest_) {
- this.oldest_ = this.oldest_.newer;
+ this.oldest_ = /** @type {ol.LRUCacheEntry} */ (this.oldest_.newer);
this.oldest_.older = null;
} else {
entry.newer.older = entry.older;
@@ -34129,7 +22822,7 @@ ol.structs.LRUCache.prototype.pop = function() {
if (entry.newer) {
entry.newer.older = null;
}
- this.oldest_ = entry.newer;
+ this.oldest_ = /** @type {ol.LRUCacheEntry} */ (entry.newer);
if (!this.oldest_) {
this.newest_ = null;
}
@@ -34157,12 +22850,12 @@ ol.structs.LRUCache.prototype.set = function(key, value) {
'key is not a standard property of objects (e.g. "__proto__")');
goog.asserts.assert(!(key in this.entries_),
'key is not used already');
- var entry = {
+ var entry = /** @type {ol.LRUCacheEntry} */ ({
key_: key,
newer: null,
older: this.newest_,
value_: value
- };
+ });
if (!this.newest_) {
this.oldest_ = entry;
} else {
@@ -34331,7 +23024,7 @@ goog.require('ol.tilecoord');
*/
ol.TileCache = function(opt_highWaterMark) {
- goog.base(this);
+ ol.structs.LRUCache.call(this);
/**
* @private
@@ -34340,7 +23033,7 @@ ol.TileCache = function(opt_highWaterMark) {
this.highWaterMark_ = opt_highWaterMark !== undefined ? opt_highWaterMark : 2048;
};
-goog.inherits(ol.TileCache, ol.structs.LRUCache);
+ol.inherits(ol.TileCache, ol.structs.LRUCache);
/**
@@ -34417,7 +23110,7 @@ ol.TileState = {
*/
ol.Tile = function(tileCoord, state) {
- goog.base(this);
+ ol.events.EventTarget.call(this);
/**
* @type {ol.TileCoord}
@@ -34447,7 +23140,7 @@ ol.Tile = function(tileCoord, state) {
this.key = '';
};
-goog.inherits(ol.Tile, ol.events.EventTarget);
+ol.inherits(ol.Tile, ol.events.EventTarget);
/**
@@ -34494,7 +23187,10 @@ ol.Tile.prototype.getState = function() {
/**
- * FIXME empty description for jsdoc
+ * Load the image or retry if loading previously failed.
+ * Loading is taken care of by the tile queue, and calling this method is
+ * only needed for preloading or for reloading in case of an error.
+ * @api
*/
ol.Tile.prototype.load = goog.abstractMethod;
@@ -34595,7 +23291,6 @@ goog.require('ol.proj');
/**
* State of the source, one of 'undefined', 'loading', 'ready' or 'error'.
* @enum {string}
- * @api
*/
ol.source.State = {
UNDEFINED: 'undefined',
@@ -34620,7 +23315,7 @@ ol.source.State = {
*/
ol.source.Source = function(options) {
- goog.base(this);
+ ol.Object.call(this);
/**
* @private
@@ -34654,7 +23349,7 @@ ol.source.Source = function(options) {
this.wrapX_ = options.wrapX !== undefined ? options.wrapX : false;
};
-goog.inherits(ol.source.Source, ol.Object);
+ol.inherits(ol.source.Source, ol.Object);
/**
* Turns various ways of defining an attribution to an array of `ol.Attributions`.
@@ -34685,7 +23380,7 @@ ol.source.Source.toAttributionsArray_ = function(attributionLike) {
} else {
return null;
}
-}
+};
/**
@@ -34949,6 +23644,24 @@ ol.tilegrid.TileGrid.tmpTileCoord_ = [0, 0, 0];
/**
+ * Call a function with each tile coordinate for a given extent and zoom level.
+ *
+ * @param {ol.Extent} extent Extent.
+ * @param {number} zoom Zoom level.
+ * @param {function(ol.TileCoord)} callback Function called with each tile coordinate.
+ * @api
+ */
+ol.tilegrid.TileGrid.prototype.forEachTileCoord = function(extent, zoom, callback) {
+ var tileRange = this.getTileRangeForExtentAndZ(extent, zoom);
+ for (var i = tileRange.minX, ii = tileRange.maxX; i <= ii; ++i) {
+ for (var j = tileRange.minY, jj = tileRange.maxY; j <= jj; ++j) {
+ callback([zoom, i, j]);
+ }
+ }
+};
+
+
+/**
* @param {ol.TileCoord} tileCoord Tile coordinate.
* @param {function(this: T, number, ol.TileRange): boolean} callback Callback.
* @param {T=} opt_this The object to use as `this` in `callback`.
@@ -35272,6 +23985,7 @@ ol.tilegrid.TileGrid.prototype.getFullTileRange = function(z) {
* If 1, the nearest lower resolution will be used. If -1, the nearest
* higher resolution will be used. Default is 0.
* @return {number} Z.
+ * @api
*/
ol.tilegrid.TileGrid.prototype.getZForResolution = function(
resolution, opt_direction) {
@@ -35387,7 +24101,7 @@ ol.tilegrid.resolutionsFromExtent = function(extent, opt_maxZoom, opt_tileSize)
/**
- * @param {ol.proj.ProjectionLike} projection Projection.
+ * @param {ol.ProjectionLike} projection Projection.
* @param {number=} opt_maxZoom Maximum zoom level (default is
* ol.DEFAULT_MAX_ZOOM).
* @param {ol.Size=} opt_tileSize Tile size (default uses ol.DEFAULT_TILE_SIZE).
@@ -35405,7 +24119,7 @@ ol.tilegrid.createForProjection = function(projection, opt_maxZoom, opt_tileSize
/**
* Generate a tile grid extent from a projection. If the projection has an
* extent, it is used. If not, a global extent is assumed.
- * @param {ol.proj.ProjectionLike} projection Projection.
+ * @param {ol.ProjectionLike} projection Projection.
* @return {ol.Extent} Extent.
*/
ol.tilegrid.extentFromProjection = function(projection) {
@@ -35448,7 +24162,7 @@ goog.require('ol.tilegrid.TileGrid');
*/
ol.source.Tile = function(options) {
- goog.base(this, {
+ ol.source.Source.call(this, {
attributions: options.attributions,
extent: options.extent,
logo: options.logo,
@@ -35495,7 +24209,7 @@ ol.source.Tile = function(options) {
this.key_ = '';
};
-goog.inherits(ol.source.Tile, ol.source.Source);
+ol.inherits(ol.source.Tile, ol.source.Source);
/**
@@ -35743,7 +24457,7 @@ ol.source.Tile.prototype.useTile = ol.nullFunction;
*/
ol.source.TileEvent = function(type, tile) {
- goog.base(this, type);
+ ol.events.Event.call(this, type);
/**
* The tile related to the event.
@@ -35753,7 +24467,7 @@ ol.source.TileEvent = function(type, tile) {
this.tile = tile;
};
-goog.inherits(ol.source.TileEvent, ol.events.Event);
+ol.inherits(ol.source.TileEvent, ol.events.Event);
/**
@@ -35789,9 +24503,8 @@ ol.source.TileEventType = {
goog.provide('ol.control.Attribution');
goog.require('goog.asserts');
-goog.require('goog.dom');
-goog.require('goog.style');
goog.require('ol');
+goog.require('ol.dom');
goog.require('ol.Attribution');
goog.require('ol.control.Control');
goog.require('ol.css');
@@ -35830,7 +24543,7 @@ ol.control.Attribution = function(opt_options) {
this.logoLi_ = document.createElement('LI');
this.ulElement_.appendChild(this.logoLi_);
- goog.style.setElementShown(this.logoLi_, false);
+ this.logoLi_.style.display = 'none';
/**
* @private
@@ -35855,30 +24568,37 @@ ol.control.Attribution = function(opt_options) {
var collapseLabel = options.collapseLabel !== undefined ? options.collapseLabel : '\u00BB';
- /**
- * @private
- * @type {Node}
- */
- this.collapseLabel_ = typeof collapseLabel === 'string' ?
- goog.dom.createDom('SPAN', {}, collapseLabel) :
- collapseLabel;
+ if (typeof collapseLabel === 'string') {
+ /**
+ * @private
+ * @type {Node}
+ */
+ this.collapseLabel_ = document.createElement('span');
+ this.collapseLabel_.textContent = collapseLabel;
+ } else {
+ this.collapseLabel_ = collapseLabel;
+ }
var label = options.label !== undefined ? options.label : 'i';
- /**
- * @private
- * @type {Node}
- */
- this.label_ = typeof label === 'string' ?
- goog.dom.createDom('SPAN', {}, label) :
- label;
+ if (typeof label === 'string') {
+ /**
+ * @private
+ * @type {Node}
+ */
+ this.label_ = document.createElement('span');
+ this.label_.textContent = label;
+ } else {
+ this.label_ = label;
+ }
+
var activeLabel = (this.collapsible_ && !this.collapsed_) ?
this.collapseLabel_ : this.label_;
- var button = goog.dom.createDom('BUTTON', {
- 'type': 'button',
- 'title': tipLabel
- }, activeLabel);
+ var button = document.createElement('button');
+ button.setAttribute('type', 'button');
+ button.title = tipLabel;
+ button.appendChild(activeLabel);
ol.events.listen(button, ol.events.EventType.CLICK, this.handleClick_, this);
@@ -35886,12 +24606,14 @@ ol.control.Attribution = function(opt_options) {
ol.css.CLASS_CONTROL +
(this.collapsed_ && this.collapsible_ ? ' ol-collapsed' : '') +
(this.collapsible_ ? '' : ' ol-uncollapsible');
- var element = goog.dom.createDom('DIV',
- cssClasses, this.ulElement_, button);
+ var element = document.createElement('div');
+ element.className = cssClasses;
+ element.appendChild(this.ulElement_);
+ element.appendChild(button);
var render = options.render ? options.render : ol.control.Attribution.render;
- goog.base(this, {
+ ol.control.Control.call(this, {
element: element,
render: render,
target: options.target
@@ -35922,7 +24644,7 @@ ol.control.Attribution = function(opt_options) {
this.logoElements_ = {};
};
-goog.inherits(ol.control.Attribution, ol.control.Control);
+ol.inherits(ol.control.Attribution, ol.control.Control);
/**
@@ -36000,7 +24722,7 @@ ol.control.Attribution.prototype.updateElement_ = function(frameState) {
if (!frameState) {
if (this.renderedVisible_) {
- goog.style.setElementShown(this.element, false);
+ this.element.style.display = 'none';
this.renderedVisible_ = false;
}
return;
@@ -36016,20 +24738,18 @@ ol.control.Attribution.prototype.updateElement_ = function(frameState) {
for (attributionKey in this.attributionElements_) {
if (attributionKey in visibleAttributions) {
if (!this.attributionElementRenderedVisible_[attributionKey]) {
- goog.style.setElementShown(
- this.attributionElements_[attributionKey], true);
+ this.attributionElements_[attributionKey].style.display = '';
this.attributionElementRenderedVisible_[attributionKey] = true;
}
delete visibleAttributions[attributionKey];
} else if (attributionKey in hiddenAttributions) {
if (this.attributionElementRenderedVisible_[attributionKey]) {
- goog.style.setElementShown(
- this.attributionElements_[attributionKey], false);
+ this.attributionElements_[attributionKey].style.display = 'none';
delete this.attributionElementRenderedVisible_[attributionKey];
}
delete hiddenAttributions[attributionKey];
} else {
- goog.dom.removeNode(this.attributionElements_[attributionKey]);
+ ol.dom.removeNode(this.attributionElements_[attributionKey]);
delete this.attributionElements_[attributionKey];
delete this.attributionElementRenderedVisible_[attributionKey];
}
@@ -36046,7 +24766,7 @@ ol.control.Attribution.prototype.updateElement_ = function(frameState) {
attributionElement = document.createElement('LI');
attributionElement.innerHTML =
hiddenAttributions[attributionKey].getHTML();
- goog.style.setElementShown(attributionElement, false);
+ attributionElement.style.display = 'none';
this.ulElement_.appendChild(attributionElement);
this.attributionElements_[attributionKey] = attributionElement;
}
@@ -36055,7 +24775,7 @@ ol.control.Attribution.prototype.updateElement_ = function(frameState) {
!ol.object.isEmpty(this.attributionElementRenderedVisible_) ||
!ol.object.isEmpty(frameState.logos);
if (this.renderedVisible_ != renderVisible) {
- goog.style.setElementShown(this.element, renderVisible);
+ this.element.style.display = renderVisible ? '' : 'none';
this.renderedVisible_ = renderVisible;
}
if (renderVisible &&
@@ -36082,7 +24802,7 @@ ol.control.Attribution.prototype.insertLogos_ = function(frameState) {
for (logo in logoElements) {
if (!(logo in logos)) {
- goog.dom.removeNode(logoElements[logo]);
+ ol.dom.removeNode(logoElements[logo]);
delete logoElements[logo];
}
}
@@ -36100,9 +24820,8 @@ ol.control.Attribution.prototype.insertLogos_ = function(frameState) {
if (logoValue === '') {
logoElement = image;
} else {
- logoElement = goog.dom.createDom('A', {
- 'href': logoValue
- });
+ logoElement = document.createElement('a');
+ logoElement.href = logoValue;
logoElement.appendChild(image);
}
this.logoLi_.appendChild(logoElement);
@@ -36110,7 +24829,7 @@ ol.control.Attribution.prototype.insertLogos_ = function(frameState) {
}
}
- goog.style.setElementShown(this.logoLi_, !ol.object.isEmpty(logos));
+ this.logoLi_.style.display = !ol.object.isEmpty(logos) ? '' : 'none';
};
@@ -36131,9 +24850,9 @@ ol.control.Attribution.prototype.handleClick_ = function(event) {
ol.control.Attribution.prototype.handleToggle_ = function() {
this.element.classList.toggle('ol-collapsed');
if (this.collapsed_) {
- goog.dom.replaceNode(this.collapseLabel_, this.label_);
+ ol.dom.replaceNode(this.collapseLabel_, this.label_);
} else {
- goog.dom.replaceNode(this.label_, this.collapseLabel_);
+ ol.dom.replaceNode(this.label_, this.collapseLabel_);
}
this.collapsed_ = !this.collapsed_;
};
@@ -36193,7 +24912,6 @@ ol.control.Attribution.prototype.getCollapsed = function() {
goog.provide('ol.control.Rotate');
-goog.require('goog.dom');
goog.require('ol.events');
goog.require('ol.events.EventType');
goog.require('ol');
@@ -36229,8 +24947,9 @@ ol.control.Rotate = function(opt_options) {
this.label_ = null;
if (typeof label === 'string') {
- this.label_ = goog.dom.createDom('SPAN',
- 'ol-compass', label);
+ this.label_ = document.createElement('span');
+ this.label_.className = 'ol-compass';
+ this.label_.textContent = label;
} else {
this.label_ = label;
this.label_.classList.add('ol-compass');
@@ -36238,24 +24957,26 @@ ol.control.Rotate = function(opt_options) {
var tipLabel = options.tipLabel ? options.tipLabel : 'Reset rotation';
- var button = goog.dom.createDom('BUTTON', {
- 'class': className + '-reset',
- 'type' : 'button',
- 'title': tipLabel
- }, this.label_);
+ var button = document.createElement('button');
+ button.className = className + '-reset';
+ button.setAttribute('type', 'button');
+ button.title = tipLabel;
+ button.appendChild(this.label_);
ol.events.listen(button, ol.events.EventType.CLICK,
ol.control.Rotate.prototype.handleClick_, this);
var cssClasses = className + ' ' + ol.css.CLASS_UNSELECTABLE + ' ' +
ol.css.CLASS_CONTROL;
- var element = goog.dom.createDom('DIV', cssClasses, button);
+ var element = document.createElement('div');
+ element.className = cssClasses;
+ element.appendChild(button);
var render = options.render ? options.render : ol.control.Rotate.render;
this.callResetNorth_ = options.resetNorth ? options.resetNorth : undefined;
- goog.base(this, {
+ ol.control.Control.call(this, {
element: element,
render: render,
target: options.target
@@ -36284,7 +25005,7 @@ ol.control.Rotate = function(opt_options) {
}
};
-goog.inherits(ol.control.Rotate, ol.control.Control);
+ol.inherits(ol.control.Rotate, ol.control.Control);
/**
@@ -36364,7 +25085,6 @@ ol.control.Rotate.render = function(mapEvent) {
goog.provide('ol.control.Zoom');
-goog.require('goog.dom');
goog.require('ol.events');
goog.require('ol.events.EventType');
goog.require('ol.animation');
@@ -36400,29 +25120,36 @@ ol.control.Zoom = function(opt_options) {
var zoomOutTipLabel = options.zoomOutTipLabel !== undefined ?
options.zoomOutTipLabel : 'Zoom out';
- var inElement = goog.dom.createDom('BUTTON', {
- 'class': className + '-in',
- 'type' : 'button',
- 'title': zoomInTipLabel
- }, zoomInLabel);
+ var inElement = document.createElement('button');
+ inElement.className = className + '-in';
+ inElement.setAttribute('type', 'button');
+ inElement.title = zoomInTipLabel;
+ inElement.appendChild(
+ typeof zoomInLabel === 'string' ? document.createTextNode(zoomInLabel) : zoomInLabel
+ );
ol.events.listen(inElement, ol.events.EventType.CLICK,
ol.control.Zoom.prototype.handleClick_.bind(this, delta));
- var outElement = goog.dom.createDom('BUTTON', {
- 'class': className + '-out',
- 'type' : 'button',
- 'title': zoomOutTipLabel
- }, zoomOutLabel);
+ var outElement = document.createElement('button');
+ outElement.className = className + '-out';
+ outElement.setAttribute('type', 'button');
+ outElement.title = zoomOutTipLabel;
+ outElement.appendChild(
+ typeof zoomOutLabel === 'string' ? document.createTextNode(zoomOutLabel) : zoomOutLabel
+ );
ol.events.listen(outElement, ol.events.EventType.CLICK,
ol.control.Zoom.prototype.handleClick_.bind(this, -delta));
var cssClasses = className + ' ' + ol.css.CLASS_UNSELECTABLE + ' ' +
ol.css.CLASS_CONTROL;
- var element = goog.dom.createDom('DIV', cssClasses, inElement, outElement);
+ var element = document.createElement('div');
+ element.className = cssClasses;
+ element.appendChild(inElement);
+ element.appendChild(outElement);
- goog.base(this, {
+ ol.control.Control.call(this, {
element: element,
target: options.target
});
@@ -36434,7 +25161,7 @@ ol.control.Zoom = function(opt_options) {
this.duration_ = options.duration !== undefined ? options.duration : 250;
};
-goog.inherits(ol.control.Zoom, ol.control.Control);
+ol.inherits(ol.control.Zoom, ol.control.Control);
/**
@@ -36521,182 +25248,14 @@ ol.control.defaults = function(opt_options) {
};
-// Copyright 2012 The Closure Library Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS-IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-/**
- * @fileoverview Functions for managing full screen status of the DOM.
- *
- */
-
-goog.provide('goog.dom.fullscreen');
-goog.provide('goog.dom.fullscreen.EventType');
-
-goog.require('goog.dom');
-goog.require('goog.userAgent');
-
-
-/**
- * Event types for full screen.
- * @enum {string}
- */
-goog.dom.fullscreen.EventType = {
- /** Dispatched by the Document when the fullscreen status changes. */
- CHANGE: (function() {
- if (goog.userAgent.WEBKIT) {
- return 'webkitfullscreenchange';
- }
- if (goog.userAgent.GECKO) {
- return 'mozfullscreenchange';
- }
- if (goog.userAgent.IE) {
- return 'MSFullscreenChange';
- }
- // Opera 12-14, and W3C standard (Draft):
- // https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html
- return 'fullscreenchange';
- })()
-};
-
-
-/**
- * Determines if full screen is supported.
- * @param {!goog.dom.DomHelper=} opt_domHelper The DomHelper for the DOM being
- * queried. If not provided, use the current DOM.
- * @return {boolean} True iff full screen is supported.
- */
-goog.dom.fullscreen.isSupported = function(opt_domHelper) {
- var doc = goog.dom.fullscreen.getDocument_(opt_domHelper);
- var body = doc.body;
- return !!(
- body.webkitRequestFullscreen ||
- (body.mozRequestFullScreen && doc.mozFullScreenEnabled) ||
- (body.msRequestFullscreen && doc.msFullscreenEnabled) ||
- (body.requestFullscreen && doc.fullscreenEnabled));
-};
-
-
-/**
- * Requests putting the element in full screen.
- * @param {!Element} element The element to put full screen.
- */
-goog.dom.fullscreen.requestFullScreen = function(element) {
- if (element.webkitRequestFullscreen) {
- element.webkitRequestFullscreen();
- } else if (element.mozRequestFullScreen) {
- element.mozRequestFullScreen();
- } else if (element.msRequestFullscreen) {
- element.msRequestFullscreen();
- } else if (element.requestFullscreen) {
- element.requestFullscreen();
- }
-};
-
-
-/**
- * Requests putting the element in full screen with full keyboard access.
- * @param {!Element} element The element to put full screen.
- */
-goog.dom.fullscreen.requestFullScreenWithKeys = function(element) {
- if (element.mozRequestFullScreenWithKeys) {
- element.mozRequestFullScreenWithKeys();
- } else if (element.webkitRequestFullscreen) {
- element.webkitRequestFullscreen();
- } else {
- goog.dom.fullscreen.requestFullScreen(element);
- }
-};
-
-
-/**
- * Exits full screen.
- * @param {!goog.dom.DomHelper=} opt_domHelper The DomHelper for the DOM being
- * queried. If not provided, use the current DOM.
- */
-goog.dom.fullscreen.exitFullScreen = function(opt_domHelper) {
- var doc = goog.dom.fullscreen.getDocument_(opt_domHelper);
- if (doc.webkitCancelFullScreen) {
- doc.webkitCancelFullScreen();
- } else if (doc.mozCancelFullScreen) {
- doc.mozCancelFullScreen();
- } else if (doc.msExitFullscreen) {
- doc.msExitFullscreen();
- } else if (doc.exitFullscreen) {
- doc.exitFullscreen();
- }
-};
-
-
-/**
- * Determines if the document is full screen.
- * @param {!goog.dom.DomHelper=} opt_domHelper The DomHelper for the DOM being
- * queried. If not provided, use the current DOM.
- * @return {boolean} Whether the document is full screen.
- */
-goog.dom.fullscreen.isFullScreen = function(opt_domHelper) {
- var doc = goog.dom.fullscreen.getDocument_(opt_domHelper);
- // IE 11 doesn't have similar boolean property, so check whether
- // document.msFullscreenElement is null instead.
- return !!(
- doc.webkitIsFullScreen || doc.mozFullScreen || doc.msFullscreenElement ||
- doc.fullscreenElement);
-};
-
-
-/**
- * Get the root element in full screen mode.
- * @param {!goog.dom.DomHelper=} opt_domHelper The DomHelper for the DOM being
- * queried. If not provided, use the current DOM.
- * @return {?Element} The root element in full screen mode.
- */
-goog.dom.fullscreen.getFullScreenElement = function(opt_domHelper) {
- var doc = goog.dom.fullscreen.getDocument_(opt_domHelper);
- var element_list = [
- doc.webkitFullscreenElement, doc.mozFullScreenElement,
- doc.msFullscreenElement, doc.fullscreenElement
- ];
- for (var i = 0; i < element_list.length; i++) {
- if (element_list[i] != null) {
- return element_list[i];
- }
- }
- return null;
-};
-
-
-/**
- * Gets the document object of the dom.
- * @param {!goog.dom.DomHelper=} opt_domHelper The DomHelper for the DOM being
- * queried. If not provided, use the current DOM.
- * @return {!Document} The dom document.
- * @private
- */
-goog.dom.fullscreen.getDocument_ = function(opt_domHelper) {
- return opt_domHelper ? opt_domHelper.getDocument() :
- goog.dom.getDomHelper().getDocument();
-};
-
goog.provide('ol.control.FullScreen');
goog.require('goog.asserts');
-goog.require('goog.dom');
-goog.require('goog.dom.fullscreen');
-goog.require('goog.dom.fullscreen.EventType');
goog.require('ol.events');
goog.require('ol.events.EventType');
goog.require('ol');
goog.require('ol.control.Control');
+goog.require('ol.dom');
goog.require('ol.css');
@@ -36747,21 +25306,23 @@ ol.control.FullScreen = function(opt_options) {
document.createTextNode(labelActive) : labelActive;
var tipLabel = options.tipLabel ? options.tipLabel : 'Toggle full-screen';
- var button = goog.dom.createDom('BUTTON', {
- 'class': this.cssClassName_ + '-' + goog.dom.fullscreen.isFullScreen(),
- 'type': 'button',
- 'title': tipLabel
- }, this.labelNode_);
+ var button = document.createElement('button');
+ button.className = this.cssClassName_ + '-' + ol.control.FullScreen.isFullScreen();
+ button.setAttribute('type', 'button');
+ button.title = tipLabel;
+ button.appendChild(this.labelNode_);
ol.events.listen(button, ol.events.EventType.CLICK,
this.handleClick_, this);
var cssClasses = this.cssClassName_ + ' ' + ol.css.CLASS_UNSELECTABLE +
' ' + ol.css.CLASS_CONTROL + ' ' +
- (!goog.dom.fullscreen.isSupported() ? ol.css.CLASS_UNSUPPORTED : '');
- var element = goog.dom.createDom('DIV', cssClasses, button);
+ (!ol.control.FullScreen.isFullScreenSupported() ? ol.css.CLASS_UNSUPPORTED : '');
+ var element = document.createElement('div');
+ element.className = cssClasses;
+ element.appendChild(button);
- goog.base(this, {
+ ol.control.Control.call(this, {
element: element,
target: options.target
});
@@ -36779,7 +25340,7 @@ ol.control.FullScreen = function(opt_options) {
this.source_ = options.source;
};
-goog.inherits(ol.control.FullScreen, ol.control.Control);
+ol.inherits(ol.control.FullScreen, ol.control.Control);
/**
@@ -36796,23 +25357,30 @@ ol.control.FullScreen.prototype.handleClick_ = function(event) {
* @private
*/
ol.control.FullScreen.prototype.handleFullScreen_ = function() {
- if (!goog.dom.fullscreen.isSupported()) {
+ if (!ol.control.FullScreen.isFullScreenSupported()) {
return;
}
var map = this.getMap();
if (!map) {
return;
}
- if (goog.dom.fullscreen.isFullScreen()) {
- goog.dom.fullscreen.exitFullScreen();
+ if (ol.control.FullScreen.isFullScreen()) {
+ ol.control.FullScreen.exitFullScreen();
} else {
- var element = this.source_ ?
- goog.dom.getElement(this.source_) : map.getTargetElement();
+ var element;
+ if (this.source_) {
+ element = typeof this.source_ === 'string' ?
+ document.getElementById(this.source_) :
+ this.source_;
+ } else {
+ element = map.getTargetElement();
+ }
goog.asserts.assert(element, 'element should be defined');
if (this.keys_) {
- goog.dom.fullscreen.requestFullScreenWithKeys(element);
+ ol.control.FullScreen.requestFullScreenWithKeys(element);
+
} else {
- goog.dom.fullscreen.requestFullScreen(element);
+ ol.control.FullScreen.requestFullScreen(element);
}
}
};
@@ -36824,12 +25392,12 @@ ol.control.FullScreen.prototype.handleFullScreen_ = function() {
ol.control.FullScreen.prototype.handleFullScreenChange_ = function() {
var button = this.element.firstElementChild;
var map = this.getMap();
- if (goog.dom.fullscreen.isFullScreen()) {
+ if (ol.control.FullScreen.isFullScreen()) {
button.className = this.cssClassName_ + '-true';
- goog.dom.replaceNode(this.labelActiveNode_, this.labelNode_);
+ ol.dom.replaceNode(this.labelActiveNode_, this.labelNode_);
} else {
button.className = this.cssClassName_ + '-false';
- goog.dom.replaceNode(this.labelNode_, this.labelActiveNode_);
+ ol.dom.replaceNode(this.labelNode_, this.labelActiveNode_);
}
if (map) {
map.updateSize();
@@ -36842,15 +25410,106 @@ ol.control.FullScreen.prototype.handleFullScreenChange_ = function() {
* @api stable
*/
ol.control.FullScreen.prototype.setMap = function(map) {
- goog.base(this, 'setMap', map);
+ ol.control.Control.prototype.setMap.call(this, map);
if (map) {
- this.listenerKeys.push(
- ol.events.listen(ol.global.document, goog.dom.fullscreen.EventType.CHANGE,
- this.handleFullScreenChange_, this)
+ this.listenerKeys.push(ol.events.listen(ol.global.document,
+ ol.control.FullScreen.getChangeType_(),
+ this.handleFullScreenChange_, this)
);
}
};
+/**
+ * @return {boolean} Fullscreen is supported by the current platform.
+ */
+ol.control.FullScreen.isFullScreenSupported = function() {
+ var body = document.body;
+ return !!(
+ body.webkitRequestFullscreen ||
+ (body.mozRequestFullScreen && document.mozFullScreenEnabled) ||
+ (body.msRequestFullscreen && document.msFullscreenEnabled) ||
+ (body.requestFullscreen && document.fullscreenEnabled)
+ );
+};
+
+/**
+ * @return {boolean} Element is currently in fullscreen.
+ */
+ol.control.FullScreen.isFullScreen = function() {
+ return !!(
+ document.webkitIsFullScreen || document.mozFullScreen ||
+ document.msFullscreenElement || document.fullscreenElement
+ );
+};
+
+/**
+ * Request to fullscreen an element.
+ * @param {Node} element Element to request fullscreen
+ */
+ol.control.FullScreen.requestFullScreen = function(element) {
+ if (element.requestFullscreen) {
+ element.requestFullscreen();
+ } else if (element.msRequestFullscreen) {
+ element.msRequestFullscreen();
+ } else if (element.mozRequestFullScreen) {
+ element.mozRequestFullScreen();
+ } else if (element.webkitRequestFullscreen) {
+ element.webkitRequestFullscreen();
+ }
+};
+
+/**
+ * Request to fullscreen an element with keyboard input.
+ * @param {Node} element Element to request fullscreen
+ */
+ol.control.FullScreen.requestFullScreenWithKeys = function(element) {
+ if (element.mozRequestFullScreenWithKeys) {
+ element.mozRequestFullScreenWithKeys();
+ } else if (element.webkitRequestFullscreen) {
+ element.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);
+ } else {
+ ol.control.FullScreen.requestFullScreen(element);
+ }
+};
+
+/**
+ * Exit fullscreen.
+ */
+ol.control.FullScreen.exitFullScreen = function() {
+ if (document.exitFullscreen) {
+ document.exitFullscreen();
+ } else if (document.msExitFullscreen) {
+ document.msExitFullscreen();
+ } else if (document.mozCancelFullScreen) {
+ document.mozCancelFullScreen();
+ } else if (document.webkitExitFullscreen) {
+ document.webkitExitFullscreen();
+ }
+};
+
+/**
+ * @return {string} Change type.
+ * @private
+ */
+ol.control.FullScreen.getChangeType_ = (function() {
+ var changeType;
+ return function() {
+ if (!changeType) {
+ var body = document.body;
+ if (body.webkitRequestFullscreen) {
+ changeType = 'webkitfullscreenchange';
+ } else if (body.mozRequestFullScreen) {
+ changeType = 'mozfullscreenchange';
+ } else if (body.msRequestFullscreen) {
+ changeType = 'MSFullscreenChange';
+ } else if (body.requestFullscreen) {
+ changeType = 'fullscreenchange';
+ }
+ }
+ return changeType;
+ };
+})();
+
// FIXME should listen on appropriate pane, once it is defined
goog.provide('ol.control.MousePosition');
@@ -36890,12 +25549,12 @@ ol.control.MousePosition = function(opt_options) {
var options = opt_options ? opt_options : {};
var element = document.createElement('DIV');
- element.className = options.className !== undefined ? options.className : 'ol-mouse-position'
+ element.className = options.className !== undefined ? options.className : 'ol-mouse-position';
var render = options.render ?
options.render : ol.control.MousePosition.render;
- goog.base(this, {
+ ol.control.Control.call(this, {
element: element,
render: render,
target: options.target
@@ -36943,7 +25602,7 @@ ol.control.MousePosition = function(opt_options) {
this.lastMouseMovePixel_ = null;
};
-goog.inherits(ol.control.MousePosition, ol.control.Control);
+ol.inherits(ol.control.MousePosition, ol.control.Control);
/**
@@ -37027,7 +25686,7 @@ ol.control.MousePosition.prototype.handleMouseOut = function(event) {
* @api stable
*/
ol.control.MousePosition.prototype.setMap = function(map) {
- goog.base(this, 'setMap', map);
+ ol.control.Control.prototype.setMap.call(this, map);
if (map) {
var viewport = map.getViewport();
this.listenerKeys.push(
@@ -37258,6 +25917,167 @@ goog.debug.entryPointRegistry.unmonitorAllIfPossible = function(monitor) {
monitors.length--;
};
+// Copyright 2007 The Closure Library Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS-IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+/**
+ * @fileoverview Defines the goog.dom.TagName enum. This enumerates
+ * all HTML tag names specified in either the the W3C HTML 4.01 index of
+ * elements or the HTML5 draft specification.
+ *
+ * References:
+ * http://www.w3.org/TR/html401/index/elements.html
+ * http://dev.w3.org/html5/spec/section-index.html
+ *
+ */
+goog.provide('goog.dom.TagName');
+
+
+/**
+ * Enum of all html tag names specified by the W3C HTML4.01 and HTML5
+ * specifications.
+ * @enum {string}
+ */
+goog.dom.TagName = {
+ A: 'A',
+ ABBR: 'ABBR',
+ ACRONYM: 'ACRONYM',
+ ADDRESS: 'ADDRESS',
+ APPLET: 'APPLET',
+ AREA: 'AREA',
+ ARTICLE: 'ARTICLE',
+ ASIDE: 'ASIDE',
+ AUDIO: 'AUDIO',
+ B: 'B',
+ BASE: 'BASE',
+ BASEFONT: 'BASEFONT',
+ BDI: 'BDI',
+ BDO: 'BDO',
+ BIG: 'BIG',
+ BLOCKQUOTE: 'BLOCKQUOTE',
+ BODY: 'BODY',
+ BR: 'BR',
+ BUTTON: 'BUTTON',
+ CANVAS: 'CANVAS',
+ CAPTION: 'CAPTION',
+ CENTER: 'CENTER',
+ CITE: 'CITE',
+ CODE: 'CODE',
+ COL: 'COL',
+ COLGROUP: 'COLGROUP',
+ COMMAND: 'COMMAND',
+ DATA: 'DATA',
+ DATALIST: 'DATALIST',
+ DD: 'DD',
+ DEL: 'DEL',
+ DETAILS: 'DETAILS',
+ DFN: 'DFN',
+ DIALOG: 'DIALOG',
+ DIR: 'DIR',
+ DIV: 'DIV',
+ DL: 'DL',
+ DT: 'DT',
+ EM: 'EM',
+ EMBED: 'EMBED',
+ FIELDSET: 'FIELDSET',
+ FIGCAPTION: 'FIGCAPTION',
+ FIGURE: 'FIGURE',
+ FONT: 'FONT',
+ FOOTER: 'FOOTER',
+ FORM: 'FORM',
+ FRAME: 'FRAME',
+ FRAMESET: 'FRAMESET',
+ H1: 'H1',
+ H2: 'H2',
+ H3: 'H3',
+ H4: 'H4',
+ H5: 'H5',
+ H6: 'H6',
+ HEAD: 'HEAD',
+ HEADER: 'HEADER',
+ HGROUP: 'HGROUP',
+ HR: 'HR',
+ HTML: 'HTML',
+ I: 'I',
+ IFRAME: 'IFRAME',
+ IMG: 'IMG',
+ INPUT: 'INPUT',
+ INS: 'INS',
+ ISINDEX: 'ISINDEX',
+ KBD: 'KBD',
+ KEYGEN: 'KEYGEN',
+ LABEL: 'LABEL',
+ LEGEND: 'LEGEND',
+ LI: 'LI',
+ LINK: 'LINK',
+ MAP: 'MAP',
+ MARK: 'MARK',
+ MATH: 'MATH',
+ MENU: 'MENU',
+ META: 'META',
+ METER: 'METER',
+ NAV: 'NAV',
+ NOFRAMES: 'NOFRAMES',
+ NOSCRIPT: 'NOSCRIPT',
+ OBJECT: 'OBJECT',
+ OL: 'OL',
+ OPTGROUP: 'OPTGROUP',
+ OPTION: 'OPTION',
+ OUTPUT: 'OUTPUT',
+ P: 'P',
+ PARAM: 'PARAM',
+ PRE: 'PRE',
+ PROGRESS: 'PROGRESS',
+ Q: 'Q',
+ RP: 'RP',
+ RT: 'RT',
+ RUBY: 'RUBY',
+ S: 'S',
+ SAMP: 'SAMP',
+ SCRIPT: 'SCRIPT',
+ SECTION: 'SECTION',
+ SELECT: 'SELECT',
+ SMALL: 'SMALL',
+ SOURCE: 'SOURCE',
+ SPAN: 'SPAN',
+ STRIKE: 'STRIKE',
+ STRONG: 'STRONG',
+ STYLE: 'STYLE',
+ SUB: 'SUB',
+ SUMMARY: 'SUMMARY',
+ SUP: 'SUP',
+ SVG: 'SVG',
+ TABLE: 'TABLE',
+ TBODY: 'TBODY',
+ TD: 'TD',
+ TEMPLATE: 'TEMPLATE',
+ TEXTAREA: 'TEXTAREA',
+ TFOOT: 'TFOOT',
+ TH: 'TH',
+ THEAD: 'THEAD',
+ TIME: 'TIME',
+ TITLE: 'TITLE',
+ TR: 'TR',
+ TRACK: 'TRACK',
+ TT: 'TT',
+ U: 'U',
+ UL: 'UL',
+ VAR: 'VAR',
+ VIDEO: 'VIDEO',
+ WBR: 'WBR'
+};
+
// Copyright 2008 The Closure Library Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
@@ -37344,7 +26164,7 @@ goog.functions.error = function(message) {
* @return {!Function} The error-throwing function.
*/
goog.functions.fail = function(err) {
- return function() { throw err; }
+ return function() { throw err; };
};
@@ -37413,7 +26233,7 @@ goog.functions.withReturnValue = function(f, retValue) {
/**
- * Creates a function that returns whether its arguement equals the given value.
+ * Creates a function that returns whether its argument equals the given value.
*
* Example:
* var key = goog.object.findKey(obj, goog.functions.equalTo('needle'));
@@ -37603,7 +26423,7 @@ goog.functions.cacheReturnValue = function(fn) {
}
return value;
- }
+ };
};
@@ -38029,7 +26849,7 @@ goog.require('ol.events.Event');
* initial event properties.
*/
ol.pointer.PointerEvent = function(type, originalEvent, opt_eventDict) {
- goog.base(this, type);
+ ol.events.Event.call(this, type);
/**
* @const
@@ -38172,7 +26992,7 @@ ol.pointer.PointerEvent = function(type, originalEvent, opt_eventDict) {
};
}
};
-goog.inherits(ol.pointer.PointerEvent, ol.events.Event);
+ol.inherits(ol.pointer.PointerEvent, ol.events.Event);
/**
@@ -38255,222 +27075,6 @@ ol.pointer.PointerEvent.HAS_BUTTONS = false;
}
})();
-goog.provide('ol.dom');
-
-goog.require('goog.asserts');
-goog.require('goog.userAgent');
-goog.require('goog.vec.Mat4');
-goog.require('ol');
-
-
-/**
- * Create an html canvas element and returns its 2d context.
- * @param {number=} opt_width Canvas width.
- * @param {number=} opt_height Canvas height.
- * @return {CanvasRenderingContext2D} The context.
- */
-ol.dom.createCanvasContext2D = function(opt_width, opt_height) {
- var canvas = document.createElement('CANVAS');
- if (opt_width) {
- canvas.width = opt_width;
- }
- if (opt_height) {
- canvas.height = opt_height;
- }
- return canvas.getContext('2d');
-};
-
-
-/**
- * Detect 2d transform.
- * Adapted from http://stackoverflow.com/q/5661671/130442
- * http://caniuse.com/#feat=transforms2d
- * @return {boolean}
- */
-ol.dom.canUseCssTransform = (function() {
- var canUseCssTransform;
- return function() {
- if (canUseCssTransform === undefined) {
- goog.asserts.assert(document.body,
- 'document.body should not be null');
- goog.asserts.assert(ol.global.getComputedStyle,
- 'getComputedStyle is required (unsupported browser?)');
-
- var el = document.createElement('P'),
- has2d,
- transforms = {
- 'webkitTransform': '-webkit-transform',
- 'OTransform': '-o-transform',
- 'msTransform': '-ms-transform',
- 'MozTransform': '-moz-transform',
- 'transform': 'transform'
- };
- document.body.appendChild(el);
- for (var t in transforms) {
- if (t in el.style) {
- el.style[t] = 'translate(1px,1px)';
- has2d = ol.global.getComputedStyle(el).getPropertyValue(
- transforms[t]);
- }
- }
- document.body.removeChild(el);
-
- canUseCssTransform = (has2d && has2d !== 'none');
- }
- return canUseCssTransform;
- };
-}());
-
-
-/**
- * Detect 3d transform.
- * Adapted from http://stackoverflow.com/q/5661671/130442
- * http://caniuse.com/#feat=transforms3d
- * @return {boolean}
- */
-ol.dom.canUseCssTransform3D = (function() {
- var canUseCssTransform3D;
- return function() {
- if (canUseCssTransform3D === undefined) {
- goog.asserts.assert(document.body,
- 'document.body should not be null');
- goog.asserts.assert(ol.global.getComputedStyle,
- 'getComputedStyle is required (unsupported browser?)');
-
- var el = document.createElement('P'),
- has3d,
- transforms = {
- 'webkitTransform': '-webkit-transform',
- 'OTransform': '-o-transform',
- 'msTransform': '-ms-transform',
- 'MozTransform': '-moz-transform',
- 'transform': 'transform'
- };
- document.body.appendChild(el);
- for (var t in transforms) {
- if (t in el.style) {
- el.style[t] = 'translate3d(1px,1px,1px)';
- has3d = ol.global.getComputedStyle(el).getPropertyValue(
- transforms[t]);
- }
- }
- document.body.removeChild(el);
-
- canUseCssTransform3D = (has3d && has3d !== 'none');
- }
- return canUseCssTransform3D;
- };
-}());
-
-
-/**
- * @param {Element} element Element.
- * @param {string} value Value.
- */
-ol.dom.setTransform = function(element, value) {
- var style = element.style;
- style.WebkitTransform = value;
- style.MozTransform = value;
- style.OTransform = value;
- style.msTransform = value;
- style.transform = value;
-
- // IE 9+ seems to assume transform-origin: 100% 100%; for some unknown reason
- if (goog.userAgent.IE && goog.userAgent.isVersionOrHigher('9.0')) {
- element.style.transformOrigin = '0 0';
- }
-};
-
-
-/**
- * @param {!Element} element Element.
- * @param {goog.vec.Mat4.Number} transform Matrix.
- * @param {number=} opt_precision Precision.
- */
-ol.dom.transformElement2D = function(element, transform, opt_precision) {
- // using matrix() causes gaps in Chrome and Firefox on Mac OS X, so prefer
- // matrix3d()
- var i;
- if (ol.dom.canUseCssTransform3D()) {
- var value3D;
-
- if (opt_precision !== undefined) {
- /** @type {Array.<string>} */
- var strings3D = new Array(16);
- for (i = 0; i < 16; ++i) {
- strings3D[i] = transform[i].toFixed(opt_precision);
- }
- value3D = strings3D.join(',');
- } else {
- value3D = transform.join(',');
- }
- ol.dom.setTransform(element, 'matrix3d(' + value3D + ')');
- } else if (ol.dom.canUseCssTransform()) {
- /** @type {Array.<number>} */
- var transform2D = [
- goog.vec.Mat4.getElement(transform, 0, 0),
- goog.vec.Mat4.getElement(transform, 1, 0),
- goog.vec.Mat4.getElement(transform, 0, 1),
- goog.vec.Mat4.getElement(transform, 1, 1),
- goog.vec.Mat4.getElement(transform, 0, 3),
- goog.vec.Mat4.getElement(transform, 1, 3)
- ];
- var value2D;
- if (opt_precision !== undefined) {
- /** @type {Array.<string>} */
- var strings2D = new Array(6);
- for (i = 0; i < 6; ++i) {
- strings2D[i] = transform2D[i].toFixed(opt_precision);
- }
- value2D = strings2D.join(',');
- } else {
- value2D = transform2D.join(',');
- }
- ol.dom.setTransform(element, 'matrix(' + value2D + ')');
- } else {
- element.style.left =
- Math.round(goog.vec.Mat4.getElement(transform, 0, 3)) + 'px';
- element.style.top =
- Math.round(goog.vec.Mat4.getElement(transform, 1, 3)) + 'px';
-
- // TODO: Add scaling here. This isn't quite as simple as multiplying
- // width/height, because that only changes the container size, not the
- // content size.
- }
-};
-
-
-/**
- * Get the current computed width for the given element including margin,
- * padding and border.
- * Equivalent to jQuery's `$(el).outerWidth(true)`.
- * @param {!Element} element Element.
- * @return {number} The width.
- */
-ol.dom.outerWidth = function(element) {
- var width = element.offsetWidth;
- var style = element.currentStyle || ol.global.getComputedStyle(element);
- width += parseInt(style.marginLeft, 10) + parseInt(style.marginRight, 10);
-
- return width;
-};
-
-
-/**
- * Get the current computed height for the given element including margin,
- * padding and border.
- * Equivalent to jQuery's `$(el).outerHeight(true)`.
- * @param {!Element} element Element.
- * @return {number} The height.
- */
-ol.dom.outerHeight = function(element) {
- var height = element.offsetHeight;
- var style = element.currentStyle || ol.global.getComputedStyle(element);
- height += parseInt(style.marginTop, 10) + parseInt(style.marginBottom, 10);
-
- return height;
-};
-
goog.provide('ol.webgl');
goog.provide('ol.webgl.WebGLContextEventType');
@@ -38785,7 +27389,7 @@ ol.pointer.MouseSource = function(dispatcher) {
'mouseover': this.mouseover,
'mouseout': this.mouseout
};
- goog.base(this, dispatcher, mapping);
+ ol.pointer.EventSource.call(this, dispatcher, mapping);
/**
* @const
@@ -38799,7 +27403,7 @@ ol.pointer.MouseSource = function(dispatcher) {
*/
this.lastTouches = [];
};
-goog.inherits(ol.pointer.MouseSource, ol.pointer.EventSource);
+ol.inherits(ol.pointer.MouseSource, ol.pointer.EventSource);
/**
@@ -39036,7 +27640,7 @@ ol.pointer.MsSource = function(dispatcher) {
'MSGotPointerCapture': this.msGotPointerCapture,
'MSLostPointerCapture': this.msLostPointerCapture
};
- goog.base(this, dispatcher, mapping);
+ ol.pointer.EventSource.call(this, dispatcher, mapping);
/**
* @const
@@ -39056,7 +27660,7 @@ ol.pointer.MsSource = function(dispatcher) {
'mouse'
];
};
-goog.inherits(ol.pointer.MsSource, ol.pointer.EventSource);
+ol.inherits(ol.pointer.MsSource, ol.pointer.EventSource);
/**
@@ -39230,9 +27834,9 @@ ol.pointer.NativeSource = function(dispatcher) {
'gotpointercapture': this.gotPointerCapture,
'lostpointercapture': this.lostPointerCapture
};
- goog.base(this, dispatcher, mapping);
+ ol.pointer.EventSource.call(this, dispatcher, mapping);
};
-goog.inherits(ol.pointer.NativeSource, ol.pointer.EventSource);
+ol.inherits(ol.pointer.NativeSource, ol.pointer.EventSource);
/**
@@ -39365,7 +27969,7 @@ ol.pointer.TouchSource = function(dispatcher, mouseSource) {
'touchend': this.touchend,
'touchcancel': this.touchcancel
};
- goog.base(this, dispatcher, mapping);
+ ol.pointer.EventSource.call(this, dispatcher, mapping);
/**
* @const
@@ -39397,7 +28001,7 @@ ol.pointer.TouchSource = function(dispatcher, mouseSource) {
*/
this.resetId_ = undefined;
};
-goog.inherits(ol.pointer.TouchSource, ol.pointer.EventSource);
+ol.inherits(ol.pointer.TouchSource, ol.pointer.EventSource);
/**
@@ -39795,7 +28399,6 @@ ol.pointer.TouchSource.prototype.dedupSynthMouse_ = function(inEvent) {
goog.provide('ol.pointer.PointerEventHandler');
-goog.require('goog.dom');
goog.require('ol.events');
goog.require('ol.events.EventTarget');
@@ -39813,7 +28416,7 @@ goog.require('ol.pointer.TouchSource');
* @param {Element|HTMLDocument} element Viewport element.
*/
ol.pointer.PointerEventHandler = function(element) {
- goog.base(this);
+ ol.events.EventTarget.call(this);
/**
* @const
@@ -39842,7 +28445,7 @@ ol.pointer.PointerEventHandler = function(element) {
this.registerSources();
};
-goog.inherits(ol.pointer.PointerEventHandler, ol.events.EventTarget);
+ol.inherits(ol.pointer.PointerEventHandler, ol.events.EventTarget);
/**
@@ -40099,10 +28702,10 @@ ol.pointer.PointerEventHandler.prototype.enterOver = function(data, event) {
* contains the other element.
*/
ol.pointer.PointerEventHandler.prototype.contains_ = function(container, contained) {
- if (!contained) {
+ if (!container || !contained) {
return false;
}
- return goog.dom.contains(container, contained);
+ return container.contains(contained);
};
@@ -40163,7 +28766,7 @@ ol.pointer.PointerEventHandler.prototype.wrapMouseEvent = function(eventType, ev
*/
ol.pointer.PointerEventHandler.prototype.disposeInternal = function() {
this.unregister_();
- goog.base(this, 'disposeInternal');
+ ol.events.EventTarget.prototype.disposeInternal.call(this);
};
@@ -40254,7 +28857,7 @@ goog.require('ol.pointer.PointerEventHandler');
ol.MapBrowserEvent = function(type, map, browserEvent, opt_dragging,
opt_frameState) {
- goog.base(this, type, map, opt_frameState);
+ ol.MapEvent.call(this, type, map, opt_frameState);
/**
* The original browser event.
@@ -40288,7 +28891,7 @@ ol.MapBrowserEvent = function(type, map, browserEvent, opt_dragging,
this.dragging = opt_dragging !== undefined ? opt_dragging : false;
};
-goog.inherits(ol.MapBrowserEvent, ol.MapEvent);
+ol.inherits(ol.MapBrowserEvent, ol.MapEvent);
/**
@@ -40298,7 +28901,7 @@ goog.inherits(ol.MapBrowserEvent, ol.MapEvent);
* @api stable
*/
ol.MapBrowserEvent.prototype.preventDefault = function() {
- goog.base(this, 'preventDefault');
+ ol.MapEvent.prototype.preventDefault.call(this);
this.originalEvent.preventDefault();
};
@@ -40310,7 +28913,7 @@ ol.MapBrowserEvent.prototype.preventDefault = function() {
* @api stable
*/
ol.MapBrowserEvent.prototype.stopPropagation = function() {
- goog.base(this, 'stopPropagation');
+ ol.MapEvent.prototype.stopPropagation.call(this);
this.originalEvent.stopPropagation();
};
@@ -40327,7 +28930,7 @@ ol.MapBrowserEvent.prototype.stopPropagation = function() {
ol.MapBrowserPointerEvent = function(type, map, pointerEvent, opt_dragging,
opt_frameState) {
- goog.base(this, type, map, pointerEvent.originalEvent, opt_dragging,
+ ol.MapBrowserEvent.call(this, type, map, pointerEvent.originalEvent, opt_dragging,
opt_frameState);
/**
@@ -40337,7 +28940,7 @@ ol.MapBrowserPointerEvent = function(type, map, pointerEvent, opt_dragging,
this.pointerEvent = pointerEvent;
};
-goog.inherits(ol.MapBrowserPointerEvent, ol.MapBrowserEvent);
+ol.inherits(ol.MapBrowserPointerEvent, ol.MapBrowserEvent);
/**
@@ -40347,7 +28950,7 @@ goog.inherits(ol.MapBrowserPointerEvent, ol.MapBrowserEvent);
*/
ol.MapBrowserEventHandler = function(map) {
- goog.base(this);
+ ol.events.EventTarget.call(this);
/**
* This is the element that we will listen to the real events on.
@@ -40369,7 +28972,7 @@ ol.MapBrowserEventHandler = function(map) {
this.dragging_ = false;
/**
- * @type {!Array.<ol.events.Key>}
+ * @type {!Array.<ol.EventsKey>}
* @private
*/
this.dragListenerKeys_ = [];
@@ -40415,7 +29018,7 @@ ol.MapBrowserEventHandler = function(map) {
this.documentPointerEventHandler_ = null;
/**
- * @type {?ol.events.Key}
+ * @type {?ol.EventsKey}
* @private
*/
this.pointerdownListenerKey_ = ol.events.listen(this.pointerEventHandler_,
@@ -40423,7 +29026,7 @@ ol.MapBrowserEventHandler = function(map) {
this.handlePointerDown_, this);
/**
- * @type {?ol.events.Key}
+ * @type {?ol.EventsKey}
* @private
*/
this.relayedListenerKey_ = ol.events.listen(this.pointerEventHandler_,
@@ -40431,7 +29034,7 @@ ol.MapBrowserEventHandler = function(map) {
this.relayEvent_, this);
};
-goog.inherits(ol.MapBrowserEventHandler, ol.events.EventTarget);
+ol.inherits(ol.MapBrowserEventHandler, ol.events.EventTarget);
/**
@@ -40645,7 +29248,7 @@ ol.MapBrowserEventHandler.prototype.disposeInternal = function() {
this.pointerEventHandler_.dispose();
this.pointerEventHandler_ = null;
}
- goog.base(this, 'disposeInternal');
+ ol.events.EventTarget.prototype.disposeInternal.call(this);
};
@@ -40740,7 +29343,7 @@ ol.layer.LayerProperty = {
*/
ol.layer.Base = function(options) {
- goog.base(this);
+ ol.Object.call(this);
/**
* @type {Object.<string, *>}
@@ -40759,7 +29362,7 @@ ol.layer.Base = function(options) {
this.setProperties(properties);
};
-goog.inherits(ol.layer.Base, ol.Object);
+ol.inherits(ol.layer.Base, ol.Object);
/**
@@ -41118,7 +29721,7 @@ ol.render.Event = function(
type, opt_target, opt_vectorContext, opt_frameState, opt_context,
opt_glContext) {
- goog.base(this, type, opt_target);
+ ol.events.Event.call(this, type, opt_target);
/**
* For canvas, this is an instance of {@link ol.render.canvas.Immediate}.
@@ -41151,7 +29754,7 @@ ol.render.Event = function(
this.glContext = opt_glContext;
};
-goog.inherits(ol.render.Event, ol.events.Event);
+ol.inherits(ol.render.Event, ol.events.Event);
goog.provide('ol.layer.Layer');
@@ -41192,23 +29795,23 @@ ol.layer.Layer = function(options) {
var baseOptions = ol.object.assign({}, options);
delete baseOptions.source;
- goog.base(this, /** @type {olx.layer.BaseOptions} */ (baseOptions));
+ ol.layer.Base.call(this, /** @type {olx.layer.BaseOptions} */ (baseOptions));
/**
* @private
- * @type {?ol.events.Key}
+ * @type {?ol.EventsKey}
*/
this.mapPrecomposeKey_ = null;
/**
* @private
- * @type {?ol.events.Key}
+ * @type {?ol.EventsKey}
*/
this.mapRenderKey_ = null;
/**
* @private
- * @type {?ol.events.Key}
+ * @type {?ol.EventsKey}
*/
this.sourceChangeKey_ = null;
@@ -41223,7 +29826,7 @@ ol.layer.Layer = function(options) {
var source = options.source ? options.source : null;
this.setSource(source);
};
-goog.inherits(ol.layer.Layer, ol.layer.Base);
+ol.inherits(ol.layer.Layer, ol.layer.Base);
/**
@@ -41387,7 +29990,7 @@ ol.ImageState = {
*/
ol.ImageBase = function(extent, resolution, pixelRatio, state, attributions) {
- goog.base(this);
+ ol.events.EventTarget.call(this);
/**
* @private
@@ -41420,7 +30023,7 @@ ol.ImageBase = function(extent, resolution, pixelRatio, state, attributions) {
this.state = state;
};
-goog.inherits(ol.ImageBase, ol.events.EventTarget);
+ol.inherits(ol.ImageBase, ol.events.EventTarget);
/**
@@ -41601,7 +30204,7 @@ goog.require('ol.vec.Mat4');
*/
ol.renderer.Layer = function(layer) {
- goog.base(this);
+ ol.Observable.call(this);
/**
* @private
@@ -41611,7 +30214,7 @@ ol.renderer.Layer = function(layer) {
};
-goog.inherits(ol.renderer.Layer, ol.Observable);
+ol.inherits(ol.renderer.Layer, ol.Observable);
/**
@@ -41929,7 +30532,7 @@ ol.style.ImageState = {
* {@link ol.style.RegularShape}.
*
* @constructor
- * @param {ol.style.ImageOptions} options Options.
+ * @param {ol.StyleImageOptions} options Options.
* @api
*/
ol.style.Image = function(options) {
@@ -42132,7 +30735,7 @@ ol.style.Image.prototype.setSnapToPixel = function(snapToPixel) {
/**
* @param {function(this: T, ol.events.Event)} listener Listener function.
* @param {T} thisArg Value to use as `this` when executing `listener`.
- * @return {ol.events.Key|undefined} Listener key.
+ * @return {ol.EventsKey|undefined} Listener key.
* @template T
*/
ol.style.Image.prototype.listenImageChange = goog.abstractMethod;
@@ -42169,7 +30772,6 @@ goog.require('ol.style.ImageState');
/**
* Icon anchor units. One of 'fraction', 'pixels'.
* @enum {string}
- * @api
*/
ol.style.IconAnchorUnits = {
FRACTION: 'fraction',
@@ -42180,7 +30782,6 @@ ol.style.IconAnchorUnits = {
/**
* Icon origin. One of 'bottom-left', 'bottom-right', 'top-left', 'top-right'.
* @enum {string}
- * @api
*/
ol.style.IconOrigin = {
BOTTOM_LEFT: 'bottom-left',
@@ -42340,7 +30941,7 @@ ol.style.Icon = function(opt_options) {
var snapToPixel = options.snapToPixel !== undefined ?
options.snapToPixel : true;
- goog.base(this, {
+ ol.style.Image.call(this, {
opacity: opacity,
rotation: rotation,
scale: scale,
@@ -42349,7 +30950,7 @@ ol.style.Icon = function(opt_options) {
});
};
-goog.inherits(ol.style.Icon, ol.style.Image);
+ol.inherits(ol.style.Icon, ol.style.Image);
/**
@@ -42535,7 +31136,7 @@ ol.style.Icon.prototype.unlistenImageChange = function(listener, thisArg) {
ol.style.IconImage_ = function(image, src, size, crossOrigin, imageState,
color) {
- goog.base(this);
+ ol.events.EventTarget.call(this);
/**
* @private
@@ -42569,7 +31170,7 @@ ol.style.IconImage_ = function(image, src, size, crossOrigin, imageState,
/**
* @private
- * @type {Array.<ol.events.Key>}
+ * @type {Array.<ol.EventsKey>}
*/
this.imageListenerKeys_ = null;
@@ -42601,7 +31202,7 @@ ol.style.IconImage_ = function(image, src, size, crossOrigin, imageState,
}
};
-goog.inherits(ol.style.IconImage_, ol.events.EventTarget);
+ol.inherits(ol.style.IconImage_, ol.events.EventTarget);
/**
@@ -42911,7 +31512,6 @@ goog.require('ol.vec.Mat4');
/**
* Available renderers: `'canvas'`, `'dom'` or `'webgl'`.
* @enum {string}
- * @api stable
*/
ol.RendererType = {
CANVAS: 'canvas',
@@ -42929,7 +31529,7 @@ ol.RendererType = {
*/
ol.renderer.Map = function(container, map) {
- goog.base(this);
+ ol.Disposable.call(this);
/**
@@ -42946,12 +31546,12 @@ ol.renderer.Map = function(container, map) {
/**
* @private
- * @type {Object.<string, ol.events.Key>}
+ * @type {Object.<string, ol.EventsKey>}
*/
this.layerRendererListeners_ = {};
};
-goog.inherits(ol.renderer.Map, ol.Disposable);
+ol.inherits(ol.renderer.Map, ol.Disposable);
/**
@@ -43595,7 +32195,7 @@ goog.require('ol.structs.PriorityQueue');
*/
ol.TileQueue = function(tilePriorityFunction, tileChangeCallback) {
- goog.base(
+ ol.structs.PriorityQueue.call(
this,
/**
* @param {Array} element Element.
@@ -43631,14 +32231,14 @@ ol.TileQueue = function(tilePriorityFunction, tileChangeCallback) {
this.tilesLoadingKeys_ = {};
};
-goog.inherits(ol.TileQueue, ol.structs.PriorityQueue);
+ol.inherits(ol.TileQueue, ol.structs.PriorityQueue);
/**
* @inheritDoc
*/
ol.TileQueue.prototype.enqueue = function(element) {
- var added = goog.base(this, 'enqueue', element);
+ var added = ol.structs.PriorityQueue.prototype.enqueue.call(this, element);
if (added) {
var tile = element[0];
ol.events.listen(tile, ol.events.EventType.CHANGE,
@@ -43895,7 +32495,7 @@ ol.interaction.InteractionProperty = {
*/
ol.interaction.Interaction = function(options) {
- goog.base(this);
+ ol.Object.call(this);
/**
* @private
@@ -43911,7 +32511,7 @@ ol.interaction.Interaction = function(options) {
this.handleEvent = options.handleEvent;
};
-goog.inherits(ol.interaction.Interaction, ol.Object);
+ol.inherits(ol.interaction.Interaction, ol.Object);
/**
@@ -44125,7 +32725,7 @@ ol.interaction.DoubleClickZoom = function(opt_options) {
*/
this.delta_ = options.delta ? options.delta : 1;
- goog.base(this, {
+ ol.interaction.Interaction.call(this, {
handleEvent: ol.interaction.DoubleClickZoom.handleEvent
});
@@ -44136,7 +32736,7 @@ ol.interaction.DoubleClickZoom = function(opt_options) {
this.duration_ = options.duration !== undefined ? options.duration : 250;
};
-goog.inherits(ol.interaction.DoubleClickZoom, ol.interaction.Interaction);
+ol.inherits(ol.interaction.DoubleClickZoom, ol.interaction.Interaction);
/**
@@ -44368,12 +32968,14 @@ ol.events.condition.targetNotEditable = function(mapBrowserEvent) {
/**
* Return `true` if the event originates from a mouse device.
*
- * @param {ol.MapBrowserPointerEvent} mapBrowserEvent Map browser event.
+ * @param {ol.MapBrowserEvent} mapBrowserEvent Map browser event.
* @return {boolean} True if the event originates from a mouse device.
* @api stable
*/
ol.events.condition.mouseOnly = function(mapBrowserEvent) {
// see http://www.w3.org/TR/pointerevents/#widl-PointerEvent-pointerType
+ goog.asserts.assertInstanceof(mapBrowserEvent, ol.MapBrowserPointerEvent,
+ 'Requires an ol.MapBrowserPointerEvent to work.');
return mapBrowserEvent.pointerEvent.pointerType == 'mouse';
};
@@ -44423,7 +33025,7 @@ ol.interaction.Pointer = function(opt_options) {
var handleEvent = options.handleEvent ?
options.handleEvent : ol.interaction.Pointer.handleEvent;
- goog.base(this, {
+ ol.interaction.Interaction.call(this, {
handleEvent: handleEvent
});
@@ -44474,7 +33076,7 @@ ol.interaction.Pointer = function(opt_options) {
this.targetPointers = [];
};
-goog.inherits(ol.interaction.Pointer, ol.interaction.Interaction);
+ol.inherits(ol.interaction.Pointer, ol.interaction.Interaction);
/**
@@ -44634,7 +33236,7 @@ goog.require('ol.interaction.Pointer');
*/
ol.interaction.DragPan = function(opt_options) {
- goog.base(this, {
+ ol.interaction.Pointer.call(this, {
handleDownEvent: ol.interaction.DragPan.handleDownEvent_,
handleDragEvent: ol.interaction.DragPan.handleDragEvent_,
handleUpEvent: ol.interaction.DragPan.handleUpEvent_
@@ -44661,7 +33263,7 @@ ol.interaction.DragPan = function(opt_options) {
/**
* @private
- * @type {ol.events.ConditionType}
+ * @type {ol.EventsConditionType}
*/
this.condition_ = options.condition ?
options.condition : ol.events.condition.noModifierKeys;
@@ -44673,7 +33275,7 @@ ol.interaction.DragPan = function(opt_options) {
this.noKinetic_ = false;
};
-goog.inherits(ol.interaction.DragPan, ol.interaction.Pointer);
+ol.inherits(ol.interaction.DragPan, ol.interaction.Pointer);
/**
@@ -44807,7 +33409,7 @@ ol.interaction.DragRotate = function(opt_options) {
var options = opt_options ? opt_options : {};
- goog.base(this, {
+ ol.interaction.Pointer.call(this, {
handleDownEvent: ol.interaction.DragRotate.handleDownEvent_,
handleDragEvent: ol.interaction.DragRotate.handleDragEvent_,
handleUpEvent: ol.interaction.DragRotate.handleUpEvent_
@@ -44815,7 +33417,7 @@ ol.interaction.DragRotate = function(opt_options) {
/**
* @private
- * @type {ol.events.ConditionType}
+ * @type {ol.EventsConditionType}
*/
this.condition_ = options.condition ?
options.condition : ol.events.condition.altShiftKeysOnly;
@@ -44832,7 +33434,7 @@ ol.interaction.DragRotate = function(opt_options) {
*/
this.duration_ = options.duration !== undefined ? options.duration : 250;
};
-goog.inherits(ol.interaction.DragRotate, ol.interaction.Pointer);
+ol.inherits(ol.interaction.DragRotate, ol.interaction.Pointer);
/**
@@ -44961,7 +33563,7 @@ ol.render.Box = function(className) {
this.endPixel_ = null;
};
-goog.inherits(ol.render.Box, ol.Disposable);
+ol.inherits(ol.render.Box, ol.Disposable);
/**
@@ -45112,7 +33714,7 @@ ol.DragBoxEventType = {
* @implements {oli.DragBoxEvent}
*/
ol.DragBoxEvent = function(type, coordinate, mapBrowserEvent) {
- goog.base(this, type);
+ ol.events.Event.call(this, type);
/**
* The coordinate of the drag event.
@@ -45130,7 +33732,7 @@ ol.DragBoxEvent = function(type, coordinate, mapBrowserEvent) {
this.mapBrowserEvent = mapBrowserEvent;
};
-goog.inherits(ol.DragBoxEvent, ol.events.Event);
+ol.inherits(ol.DragBoxEvent, ol.events.Event);
/**
@@ -45152,7 +33754,7 @@ goog.inherits(ol.DragBoxEvent, ol.events.Event);
*/
ol.interaction.DragBox = function(opt_options) {
- goog.base(this, {
+ ol.interaction.Pointer.call(this, {
handleDownEvent: ol.interaction.DragBox.handleDownEvent_,
handleDragEvent: ol.interaction.DragBox.handleDragEvent_,
handleUpEvent: ol.interaction.DragBox.handleUpEvent_
@@ -45174,19 +33776,19 @@ ol.interaction.DragBox = function(opt_options) {
/**
* @private
- * @type {ol.events.ConditionType}
+ * @type {ol.EventsConditionType}
*/
this.condition_ = options.condition ?
options.condition : ol.events.condition.always;
/**
* @private
- * @type {ol.interaction.DragBoxEndConditionType}
+ * @type {ol.DragBoxEndConditionType}
*/
this.boxEndCondition_ = options.boxEndCondition ?
options.boxEndCondition : ol.interaction.DragBox.defaultBoxEndCondition;
};
-goog.inherits(ol.interaction.DragBox, ol.interaction.Pointer);
+ol.inherits(ol.interaction.DragBox, ol.interaction.Pointer);
/**
@@ -45332,13 +33934,13 @@ ol.interaction.DragZoom = function(opt_options) {
*/
this.out_ = options.out !== undefined ? options.out : false;
- goog.base(this, {
+ ol.interaction.DragBox.call(this, {
condition: condition,
className: options.className || 'ol-dragzoom'
});
};
-goog.inherits(ol.interaction.DragZoom, ol.interaction.DragBox);
+ol.inherits(ol.interaction.DragZoom, ol.interaction.DragBox);
/**
@@ -45420,7 +34022,7 @@ goog.require('ol.interaction.Interaction');
*/
ol.interaction.KeyboardPan = function(opt_options) {
- goog.base(this, {
+ ol.interaction.Interaction.call(this, {
handleEvent: ol.interaction.KeyboardPan.handleEvent
});
@@ -45434,14 +34036,14 @@ ol.interaction.KeyboardPan = function(opt_options) {
this.defaultCondition_ = function(mapBrowserEvent) {
return ol.events.condition.noModifierKeys(mapBrowserEvent) &&
ol.events.condition.targetNotEditable(mapBrowserEvent);
- }
+ };
/**
* @private
- * @type {ol.events.ConditionType}
+ * @type {ol.EventsConditionType}
*/
this.condition_ = options.condition !== undefined ?
- options.condition : this.defaultCondition_
+ options.condition : this.defaultCondition_;
/**
* @private
@@ -45457,7 +34059,7 @@ ol.interaction.KeyboardPan = function(opt_options) {
options.pixelDelta : 128;
};
-goog.inherits(ol.interaction.KeyboardPan, ol.interaction.Interaction);
+ol.inherits(ol.interaction.KeyboardPan, ol.interaction.Interaction);
/**
* Handles the {@link ol.MapBrowserEvent map browser event} if it was a
@@ -45529,7 +34131,7 @@ goog.require('ol.interaction.Interaction');
*/
ol.interaction.KeyboardZoom = function(opt_options) {
- goog.base(this, {
+ ol.interaction.Interaction.call(this, {
handleEvent: ol.interaction.KeyboardZoom.handleEvent
});
@@ -45537,7 +34139,7 @@ ol.interaction.KeyboardZoom = function(opt_options) {
/**
* @private
- * @type {ol.events.ConditionType}
+ * @type {ol.EventsConditionType}
*/
this.condition_ = options.condition ? options.condition :
ol.events.condition.targetNotEditable;
@@ -45555,7 +34157,7 @@ ol.interaction.KeyboardZoom = function(opt_options) {
this.duration_ = options.duration !== undefined ? options.duration : 100;
};
-goog.inherits(ol.interaction.KeyboardZoom, ol.interaction.Interaction);
+ol.inherits(ol.interaction.KeyboardZoom, ol.interaction.Interaction);
/**
@@ -45609,7 +34211,7 @@ goog.require('ol.math');
*/
ol.interaction.MouseWheelZoom = function(opt_options) {
- goog.base(this, {
+ ol.interaction.Interaction.call(this, {
handleEvent: ol.interaction.MouseWheelZoom.handleEvent
});
@@ -45652,7 +34254,7 @@ ol.interaction.MouseWheelZoom = function(opt_options) {
this.timeoutId_ = undefined;
};
-goog.inherits(ol.interaction.MouseWheelZoom, ol.interaction.Interaction);
+ol.inherits(ol.interaction.MouseWheelZoom, ol.interaction.Interaction);
/**
@@ -45771,7 +34373,7 @@ goog.require('ol.interaction.Pointer');
*/
ol.interaction.PinchRotate = function(opt_options) {
- goog.base(this, {
+ ol.interaction.Pointer.call(this, {
handleDownEvent: ol.interaction.PinchRotate.handleDownEvent_,
handleDragEvent: ol.interaction.PinchRotate.handleDragEvent_,
handleUpEvent: ol.interaction.PinchRotate.handleUpEvent_
@@ -45816,7 +34418,7 @@ ol.interaction.PinchRotate = function(opt_options) {
this.duration_ = options.duration !== undefined ? options.duration : 250;
};
-goog.inherits(ol.interaction.PinchRotate, ol.interaction.Pointer);
+ol.inherits(ol.interaction.PinchRotate, ol.interaction.Pointer);
/**
@@ -45944,7 +34546,7 @@ goog.require('ol.interaction.Pointer');
*/
ol.interaction.PinchZoom = function(opt_options) {
- goog.base(this, {
+ ol.interaction.Pointer.call(this, {
handleDownEvent: ol.interaction.PinchZoom.handleDownEvent_,
handleDragEvent: ol.interaction.PinchZoom.handleDragEvent_,
handleUpEvent: ol.interaction.PinchZoom.handleUpEvent_
@@ -45977,7 +34579,7 @@ ol.interaction.PinchZoom = function(opt_options) {
this.lastScaleDelta_ = 1;
};
-goog.inherits(ol.interaction.PinchZoom, ol.interaction.Pointer);
+ol.inherits(ol.interaction.PinchZoom, ol.interaction.Pointer);
/**
@@ -46233,17 +34835,17 @@ ol.layer.Group = function(opt_options) {
var layers = options.layers;
- goog.base(this, baseOptions);
+ ol.layer.Base.call(this, baseOptions);
/**
* @private
- * @type {Array.<ol.events.Key>}
+ * @type {Array.<ol.EventsKey>}
*/
this.layersListenerKeys_ = [];
/**
* @private
- * @type {Object.<string, Array.<ol.events.Key>>}
+ * @type {Object.<string, Array.<ol.EventsKey>>}
*/
this.listenerKeys_ = {};
@@ -46266,7 +34868,7 @@ ol.layer.Group = function(opt_options) {
this.setLayers(layers);
};
-goog.inherits(ol.layer.Group, ol.layer.Base);
+ol.inherits(ol.layer.Group, ol.layer.Base);
/**
@@ -46449,7 +35051,7 @@ goog.require('ol.proj.Units');
* @private
*/
ol.proj.EPSG3857_ = function(code) {
- goog.base(this, {
+ ol.proj.Projection.call(this, {
code: code,
units: ol.proj.Units.METERS,
extent: ol.proj.EPSG3857.EXTENT,
@@ -46457,7 +35059,7 @@ ol.proj.EPSG3857_ = function(code) {
worldExtent: ol.proj.EPSG3857.WORLD_EXTENT
});
};
-goog.inherits(ol.proj.EPSG3857_, ol.proj.Projection);
+ol.inherits(ol.proj.EPSG3857_, ol.proj.Projection);
/**
@@ -46622,7 +35224,7 @@ goog.require('ol.sphere.WGS84');
* @private
*/
ol.proj.EPSG4326_ = function(code, opt_axisOrientation) {
- goog.base(this, {
+ ol.proj.Projection.call(this, {
code: code,
units: ol.proj.Units.DEGREES,
extent: ol.proj.EPSG4326.EXTENT,
@@ -46632,7 +35234,7 @@ ol.proj.EPSG4326_ = function(code, opt_axisOrientation) {
worldExtent: ol.proj.EPSG4326.EXTENT
});
};
-goog.inherits(ol.proj.EPSG4326_, ol.proj.Projection);
+ol.inherits(ol.proj.EPSG4326_, ol.proj.Projection);
/**
@@ -46722,9 +35324,9 @@ goog.require('ol.layer.Layer');
*/
ol.layer.Image = function(opt_options) {
var options = opt_options ? opt_options : {};
- goog.base(this, /** @type {olx.layer.LayerOptions} */ (options));
+ ol.layer.Layer.call(this, /** @type {olx.layer.LayerOptions} */ (options));
};
-goog.inherits(ol.layer.Image, ol.layer.Layer);
+ol.inherits(ol.layer.Image, ol.layer.Layer);
/**
@@ -46772,13 +35374,13 @@ ol.layer.Tile = function(opt_options) {
delete baseOptions.preload;
delete baseOptions.useInterimTilesOnError;
- goog.base(this, /** @type {olx.layer.LayerOptions} */ (baseOptions));
+ ol.layer.Layer.call(this, /** @type {olx.layer.LayerOptions} */ (baseOptions));
this.setPreload(options.preload !== undefined ? options.preload : 0);
this.setUseInterimTilesOnError(options.useInterimTilesOnError !== undefined ?
options.useInterimTilesOnError : true);
};
-goog.inherits(ol.layer.Tile, ol.layer.Layer);
+ol.inherits(ol.layer.Tile, ol.layer.Layer);
/**
@@ -48026,7 +36628,7 @@ ol.style.Circle = function(opt_options) {
var snapToPixel = options.snapToPixel !== undefined ?
options.snapToPixel : true;
- goog.base(this, {
+ ol.style.Image.call(this, {
opacity: 1,
rotateWithView: false,
rotation: 0,
@@ -48035,7 +36637,7 @@ ol.style.Circle = function(opt_options) {
});
};
-goog.inherits(ol.style.Circle, ol.style.Image);
+ol.inherits(ol.style.Circle, ol.style.Image);
/**
@@ -48178,7 +36780,7 @@ ol.style.Circle.prototype.render_ = function(atlasManager) {
var size = 2 * (this.radius_ + strokeWidth) + 1;
- /** @type {ol.style.CircleRenderOptions} */
+ /** @type {ol.CircleRenderOptions} */
var renderOptions = {
strokeStyle: strokeStyle,
strokeWidth: strokeWidth,
@@ -48239,7 +36841,7 @@ ol.style.Circle.prototype.render_ = function(atlasManager) {
/**
* @private
- * @param {ol.style.CircleRenderOptions} renderOptions Render options.
+ * @param {ol.CircleRenderOptions} renderOptions Render options.
* @param {CanvasRenderingContext2D} context The rendering context.
* @param {number} x The origin for the symbol (x).
* @param {number} y The origin for the symbol (y).
@@ -48274,7 +36876,7 @@ ol.style.Circle.prototype.draw_ = function(renderOptions, context, x, y) {
/**
* @private
- * @param {ol.style.CircleRenderOptions} renderOptions Render options.
+ * @param {ol.CircleRenderOptions} renderOptions Render options.
*/
ol.style.Circle.prototype.createHitDetectionCanvas_ = function(renderOptions) {
this.hitDetectionImageSize_ = [renderOptions.size, renderOptions.size];
@@ -48294,7 +36896,7 @@ ol.style.Circle.prototype.createHitDetectionCanvas_ = function(renderOptions) {
/**
* @private
- * @param {ol.style.CircleRenderOptions} renderOptions Render options.
+ * @param {ol.CircleRenderOptions} renderOptions Render options.
* @param {CanvasRenderingContext2D} context The context.
* @param {number} x The origin for the symbol (x).
* @param {number} y The origin for the symbol (y).
@@ -48377,13 +36979,13 @@ ol.style.Style = function(opt_options) {
/**
* @private
- * @type {string|ol.geom.Geometry|ol.style.GeometryFunction}
+ * @type {string|ol.geom.Geometry|ol.StyleGeometryFunction}
*/
this.geometry_ = null;
/**
* @private
- * @type {!ol.style.GeometryFunction}
+ * @type {!ol.StyleGeometryFunction}
*/
this.geometryFunction_ = ol.style.defaultGeometryFunction;
@@ -48426,7 +37028,7 @@ ol.style.Style = function(opt_options) {
/**
* Get the geometry to be rendered.
- * @return {string|ol.geom.Geometry|ol.style.GeometryFunction}
+ * @return {string|ol.geom.Geometry|ol.StyleGeometryFunction}
* Feature property or geometry or function that returns the geometry that will
* be rendered with this style.
* @api
@@ -48438,7 +37040,7 @@ ol.style.Style.prototype.getGeometry = function() {
/**
* Get the function used to generate a geometry for rendering.
- * @return {!ol.style.GeometryFunction} Function that is called with a feature
+ * @return {!ol.StyleGeometryFunction} Function that is called with a feature
* and returns the geometry to render instead of the feature's geometry.
* @api
*/
@@ -48500,13 +37102,13 @@ ol.style.Style.prototype.getZIndex = function() {
/**
* Set a geometry that is rendered instead of the feature's geometry.
*
- * @param {string|ol.geom.Geometry|ol.style.GeometryFunction} geometry
+ * @param {string|ol.geom.Geometry|ol.StyleGeometryFunction} geometry
* Feature property or geometry or function returning a geometry to render
* for this style.
* @api
*/
ol.style.Style.prototype.setGeometry = function(geometry) {
- if (goog.isFunction(geometry)) {
+ if (typeof geometry === 'function') {
this.geometryFunction_ = geometry;
} else if (typeof geometry === 'string') {
this.geometryFunction_ = function(feature) {
@@ -48545,14 +37147,14 @@ ol.style.Style.prototype.setZIndex = function(zIndex) {
* Convert the provided object into a style function. Functions passed through
* unchanged. Arrays of ol.style.Style or single style objects wrapped in a
* new style function.
- * @param {ol.style.StyleFunction|Array.<ol.style.Style>|ol.style.Style} obj
+ * @param {ol.StyleFunction|Array.<ol.style.Style>|ol.style.Style} obj
* A style function, a single style, or an array of styles.
- * @return {ol.style.StyleFunction} A style function.
+ * @return {ol.StyleFunction} A style function.
*/
ol.style.createStyleFunction = function(obj) {
var styleFunction;
- if (goog.isFunction(obj)) {
+ if (typeof obj === 'function') {
styleFunction = obj;
} else {
/**
@@ -48735,7 +37337,7 @@ ol.layer.Vector = function(opt_options) {
goog.asserts.assert(
options.renderOrder === undefined || !options.renderOrder ||
- goog.isFunction(options.renderOrder),
+ typeof options.renderOrder === 'function',
'renderOrder must be a comparator function');
var baseOptions = ol.object.assign({}, options);
@@ -48744,7 +37346,7 @@ ol.layer.Vector = function(opt_options) {
delete baseOptions.renderBuffer;
delete baseOptions.updateWhileAnimating;
delete baseOptions.updateWhileInteracting;
- goog.base(this, /** @type {olx.layer.LayerOptions} */ (baseOptions));
+ ol.layer.Layer.call(this, /** @type {olx.layer.LayerOptions} */ (baseOptions));
/**
* @type {number}
@@ -48755,14 +37357,14 @@ ol.layer.Vector = function(opt_options) {
/**
* User provided style.
- * @type {ol.style.Style|Array.<ol.style.Style>|ol.style.StyleFunction}
+ * @type {ol.style.Style|Array.<ol.style.Style>|ol.StyleFunction}
* @private
*/
this.style_ = null;
/**
* Style function for use within the library.
- * @type {ol.style.StyleFunction|undefined}
+ * @type {ol.StyleFunction|undefined}
* @private
*/
this.styleFunction_ = undefined;
@@ -48784,7 +37386,7 @@ ol.layer.Vector = function(opt_options) {
options.updateWhileInteracting : false;
};
-goog.inherits(ol.layer.Vector, ol.layer.Layer);
+ol.inherits(ol.layer.Vector, ol.layer.Layer);
/**
@@ -48817,7 +37419,7 @@ ol.layer.Vector.prototype.getSource;
/**
* Get the style for features. This returns whatever was passed to the `style`
* option at construction or to the `setStyle` method.
- * @return {ol.style.Style|Array.<ol.style.Style>|ol.style.StyleFunction}
+ * @return {ol.style.Style|Array.<ol.style.Style>|ol.StyleFunction}
* Layer style.
* @api stable
*/
@@ -48828,7 +37430,7 @@ ol.layer.Vector.prototype.getStyle = function() {
/**
* Get the style function.
- * @return {ol.style.StyleFunction|undefined} Layer style function.
+ * @return {ol.StyleFunction|undefined} Layer style function.
* @api stable
*/
ol.layer.Vector.prototype.getStyleFunction = function() {
@@ -48861,7 +37463,7 @@ ol.layer.Vector.prototype.getUpdateWhileInteracting = function() {
ol.layer.Vector.prototype.setRenderOrder = function(renderOrder) {
goog.asserts.assert(
renderOrder === undefined || !renderOrder ||
- goog.isFunction(renderOrder),
+ typeof renderOrder === 'function',
'renderOrder must be a comparator function');
this.set(ol.layer.VectorProperty.RENDER_ORDER, renderOrder);
};
@@ -48874,7 +37476,7 @@ ol.layer.Vector.prototype.setRenderOrder = function(renderOrder) {
* it is `null` the layer has no style (a `null` style), so only features
* that have their own styles will be rendered in the layer. See
* {@link ol.style} for information on the default style.
- * @param {ol.style.Style|Array.<ol.style.Style>|ol.style.StyleFunction|null|undefined}
+ * @param {ol.style.Style|Array.<ol.style.Style>|ol.StyleFunction|null|undefined}
* style Layer style.
* @api stable
*/
@@ -48940,7 +37542,7 @@ ol.layer.VectorTile = function(opt_options) {
delete baseOptions.preload;
delete baseOptions.useInterimTilesOnError;
- goog.base(this, /** @type {olx.layer.VectorOptions} */ (baseOptions));
+ ol.layer.Vector.call(this, /** @type {olx.layer.VectorOptions} */ (baseOptions));
this.setPreload(options.preload ? options.preload : 0);
this.setUseInterimTilesOnError(options.useInterimTilesOnError ?
@@ -48959,7 +37561,7 @@ ol.layer.VectorTile = function(opt_options) {
this.renderMode_ = options.renderMode || ol.layer.VectorTileRenderType.HYBRID;
};
-goog.inherits(ol.layer.VectorTile, ol.layer.Vector);
+ol.inherits(ol.layer.VectorTile, ol.layer.Vector);
/**
@@ -49054,7 +37656,7 @@ goog.require('ol.vec.Mat4');
* @struct
*/
ol.render.canvas.Immediate = function(context, pixelRatio, extent, transform, viewRotation) {
- goog.base(this);
+ ol.render.VectorContext.call(this);
/**
* @private
@@ -49249,7 +37851,7 @@ ol.render.canvas.Immediate = function(context, pixelRatio, extent, transform, vi
this.tmpLocalTransform_ = goog.vec.Mat4.createNumber();
};
-goog.inherits(ol.render.canvas.Immediate, ol.render.VectorContext);
+ol.inherits(ol.render.canvas.Immediate, ol.render.VectorContext);
/**
@@ -49991,7 +38593,7 @@ goog.require('ol.vec.Mat4');
*/
ol.renderer.canvas.Layer = function(layer) {
- goog.base(this, layer);
+ ol.renderer.Layer.call(this, layer);
/**
* @private
@@ -50000,7 +38602,7 @@ ol.renderer.canvas.Layer = function(layer) {
this.transform_ = goog.vec.Mat4.createNumber();
};
-goog.inherits(ol.renderer.canvas.Layer, ol.renderer.Layer);
+ol.inherits(ol.renderer.canvas.Layer, ol.renderer.Layer);
/**
@@ -50307,7 +38909,7 @@ ol.render.canvas.Instruction = {
* @struct
*/
ol.render.canvas.Replay = function(tolerance, maxExtent, resolution) {
- goog.base(this);
+ ol.render.VectorContext.call(this);
/**
* @protected
@@ -50395,7 +38997,7 @@ ol.render.canvas.Replay = function(tolerance, maxExtent, resolution) {
*/
this.tmpLocalTransformInv_ = goog.vec.Mat4.createNumber();
};
-goog.inherits(ol.render.canvas.Replay, ol.render.VectorContext);
+ol.inherits(ol.render.canvas.Replay, ol.render.VectorContext);
/**
@@ -50739,7 +39341,7 @@ ol.render.canvas.Replay.prototype.replay_ = function(
y = pixelCoordinates[d + 1];
roundX = (x + 0.5) | 0;
roundY = (y + 0.5) | 0;
- if (roundX !== prevX || roundY !== prevY) {
+ if (d == dd - 2 || roundX !== prevX || roundY !== prevY) {
context.lineTo(x, y);
prevX = roundX;
prevY = roundY;
@@ -50928,7 +39530,7 @@ ol.render.canvas.Replay.prototype.getBufferedMaxExtent = function() {
* @struct
*/
ol.render.canvas.ImageReplay = function(tolerance, maxExtent, resolution) {
- goog.base(this, tolerance, maxExtent, resolution);
+ ol.render.canvas.Replay.call(this, tolerance, maxExtent, resolution);
/**
* @private
@@ -51009,7 +39611,7 @@ ol.render.canvas.ImageReplay = function(tolerance, maxExtent, resolution) {
this.width_ = undefined;
};
-goog.inherits(ol.render.canvas.ImageReplay, ol.render.canvas.Replay);
+ol.inherits(ol.render.canvas.ImageReplay, ol.render.canvas.Replay);
/**
@@ -51195,7 +39797,7 @@ ol.render.canvas.ImageReplay.prototype.setImageStyle = function(imageStyle) {
*/
ol.render.canvas.LineStringReplay = function(tolerance, maxExtent, resolution) {
- goog.base(this, tolerance, maxExtent, resolution);
+ ol.render.canvas.Replay.call(this, tolerance, maxExtent, resolution);
/**
* @private
@@ -51230,7 +39832,7 @@ ol.render.canvas.LineStringReplay = function(tolerance, maxExtent, resolution) {
};
};
-goog.inherits(ol.render.canvas.LineStringReplay, ol.render.canvas.Replay);
+ol.inherits(ol.render.canvas.LineStringReplay, ol.render.canvas.Replay);
/**
@@ -51429,7 +40031,7 @@ ol.render.canvas.LineStringReplay.prototype.setFillStrokeStyle = function(fillSt
*/
ol.render.canvas.PolygonReplay = function(tolerance, maxExtent, resolution) {
- goog.base(this, tolerance, maxExtent, resolution);
+ ol.render.canvas.Replay.call(this, tolerance, maxExtent, resolution);
/**
* @private
@@ -51466,7 +40068,7 @@ ol.render.canvas.PolygonReplay = function(tolerance, maxExtent, resolution) {
};
};
-goog.inherits(ol.render.canvas.PolygonReplay, ol.render.canvas.Replay);
+ol.inherits(ol.render.canvas.PolygonReplay, ol.render.canvas.Replay);
/**
@@ -51784,7 +40386,7 @@ ol.render.canvas.PolygonReplay.prototype.setFillStrokeStyles_ = function() {
*/
ol.render.canvas.TextReplay = function(tolerance, maxExtent, resolution) {
- goog.base(this, tolerance, maxExtent, resolution);
+ ol.render.canvas.Replay.call(this, tolerance, maxExtent, resolution);
/**
* @private
@@ -51853,7 +40455,7 @@ ol.render.canvas.TextReplay = function(tolerance, maxExtent, resolution) {
this.textState_ = null;
};
-goog.inherits(ol.render.canvas.TextReplay, ol.render.canvas.Replay);
+ol.inherits(ol.render.canvas.TextReplay, ol.render.canvas.Replay);
/**
@@ -52870,7 +41472,7 @@ ol.ImageCanvas = function(extent, resolution, pixelRatio, attributions,
var state = opt_loader !== undefined ?
ol.ImageState.IDLE : ol.ImageState.LOADED;
- goog.base(this, extent, resolution, pixelRatio, state, attributions);
+ ol.ImageBase.call(this, extent, resolution, pixelRatio, state, attributions);
/**
* @private
@@ -52885,7 +41487,7 @@ ol.ImageCanvas = function(extent, resolution, pixelRatio, attributions,
this.error_ = null;
};
-goog.inherits(ol.ImageCanvas, ol.ImageBase);
+ol.inherits(ol.ImageCanvas, ol.ImageBase);
/**
@@ -52962,7 +41564,7 @@ ol.reproj.browserAntialiasesClip_ = (function(winNav, winChrome) {
isOpera == false && // Not Opera
isIEedge == false // Not Edge
);
-})(goog.global.navigator, goog.global.chrome)
+})(ol.global.navigator, ol.global.chrome);
/**
@@ -53632,7 +42234,7 @@ ol.reproj.Image = function(sourceProj, targetProj,
/**
* @private
- * @type {?ol.events.Key}
+ * @type {?ol.EventsKey}
*/
this.sourceListenerKey_ = null;
@@ -53645,10 +42247,10 @@ ol.reproj.Image = function(sourceProj, targetProj,
attributions = this.sourceImage_.getAttributions();
}
- goog.base(this, targetExtent, targetResolution, this.sourcePixelRatio_,
+ ol.ImageBase.call(this, targetExtent, targetResolution, this.sourcePixelRatio_,
state, attributions);
};
-goog.inherits(ol.reproj.Image, ol.ImageBase);
+ol.inherits(ol.reproj.Image, ol.ImageBase);
/**
@@ -53658,7 +42260,7 @@ ol.reproj.Image.prototype.disposeInternal = function() {
if (this.state == ol.ImageState.LOADING) {
this.unlistenSource_();
}
- goog.base(this, 'disposeInternal');
+ ol.ImageBase.prototype.disposeInternal.call(this);
};
@@ -53764,7 +42366,7 @@ goog.require('ol.source.Source');
*/
ol.source.Image = function(options) {
- goog.base(this, {
+ ol.source.Source.call(this, {
attributions: options.attributions,
extent: options.extent,
logo: options.logo,
@@ -53799,7 +42401,7 @@ ol.source.Image = function(options) {
this.reprojectedRevision_ = 0;
};
-goog.inherits(ol.source.Image, ol.source.Source);
+ol.inherits(ol.source.Image, ol.source.Source);
/**
@@ -53932,7 +42534,7 @@ ol.source.Image.defaultImageLoadFunction = function(image, src) {
*/
ol.source.ImageEvent = function(type, image) {
- goog.base(this, type);
+ ol.events.Event.call(this, type);
/**
* The image related to the event.
@@ -53942,7 +42544,7 @@ ol.source.ImageEvent = function(type, image) {
this.image = image;
};
-goog.inherits(ol.source.ImageEvent, ol.events.Event);
+ol.inherits(ol.source.ImageEvent, ol.events.Event);
/**
@@ -53991,7 +42593,7 @@ goog.require('ol.source.Image');
*/
ol.source.ImageCanvas = function(options) {
- goog.base(this, {
+ ol.source.Image.call(this, {
attributions: options.attributions,
logo: options.logo,
projection: options.projection,
@@ -54025,7 +42627,7 @@ ol.source.ImageCanvas = function(options) {
options.ratio : 1.5;
};
-goog.inherits(ol.source.ImageCanvas, ol.source.Image);
+ol.inherits(ol.source.ImageCanvas, ol.source.Image);
/**
@@ -54119,7 +42721,7 @@ goog.require('ol.style.Style');
*/
ol.Feature = function(opt_geometryOrProperties) {
- goog.base(this);
+ ol.Object.call(this);
/**
* @private
@@ -54149,7 +42751,7 @@ ol.Feature = function(opt_geometryOrProperties) {
/**
* @private
- * @type {?ol.events.Key}
+ * @type {?ol.EventsKey}
*/
this.geometryChangeKey_ = null;
@@ -54171,7 +42773,7 @@ ol.Feature = function(opt_geometryOrProperties) {
}
}
};
-goog.inherits(ol.Feature, ol.Object);
+ol.inherits(ol.Feature, ol.Object);
/**
@@ -54357,7 +42959,7 @@ ol.Feature.prototype.setGeometryName = function(name) {
ol.Feature.createStyleFunction = function(obj) {
var styleFunction;
- if (goog.isFunction(obj)) {
+ if (typeof obj === 'function') {
styleFunction = obj;
} else {
/**
@@ -54397,7 +42999,7 @@ goog.require('ol.proj.Projection');
*/
ol.VectorTile = function(tileCoord, state, src, format, tileLoadFunction) {
- goog.base(this, tileCoord, state);
+ ol.Tile.call(this, tileCoord, state);
/**
* @private
@@ -54456,7 +43058,7 @@ ol.VectorTile = function(tileCoord, state, src, format, tileLoadFunction) {
this.url_ = src;
};
-goog.inherits(ol.VectorTile, ol.Tile);
+ol.inherits(ol.VectorTile, ol.Tile);
/**
@@ -54584,7 +43186,6 @@ ol.format.FormatType = {
goog.provide('ol.xml');
goog.require('goog.asserts');
-goog.require('goog.dom.NodeType');
goog.require('ol.array');
@@ -54631,10 +43232,9 @@ ol.xml.getAllTextContent = function(node, normalizeWhitespace) {
* @return {Array.<string>} Accumulator.
*/
ol.xml.getAllTextContent_ = function(node, normalizeWhitespace, accumulator) {
- if (node.nodeType == goog.dom.NodeType.CDATA_SECTION ||
- node.nodeType == goog.dom.NodeType.TEXT) {
+ if (node.nodeType == Node.CDATA_SECTION_NODE ||
+ node.nodeType == Node.TEXT_NODE) {
if (normalizeWhitespace) {
- // FIXME understand why goog.dom.getTextContent_ uses String here
accumulator.push(String(node.nodeValue).replace(/(\r\n|\r|\n)/g, ''));
} else {
accumulator.push(node.nodeValue);
@@ -55148,7 +43748,7 @@ ol.featureloader.loadFeaturesXhr = function(url, format, success, failure) {
function(extent, resolution, projection) {
var xhr = new XMLHttpRequest();
xhr.open('GET',
- goog.isFunction(url) ? url(extent, resolution, projection) : url,
+ typeof url === 'function' ? url(extent, resolution, projection) : url,
true);
if (format.getType() == ol.format.FormatType.ARRAY_BUFFER) {
xhr.responseType = 'arraybuffer';
@@ -55311,15 +43911,13 @@ var define;
* @fileoverview
* @suppress {accessControls, ambiguousFunctionDecl, checkDebuggerStatement, checkRegExp, checkTypes, checkVars, const, constantProperty, deprecated, duplicate, es5Strict, fileoverviewTags, missingProperties, nonStandardJsDocs, strictModuleDepCheck, suspiciousCode, undefinedNames, undefinedVars, unknownDefines, uselessCode, visibility}
*/
-/*
- (c) 2015, Vladimir Agafonkin
- RBush, a JavaScript library for high-performance 2D spatial indexing of points and rectangles.
- https://github.com/mourner/rbush
-*/
-
-(function () {
+(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.rbush = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){
'use strict';
+module.exports = rbush;
+
+var quickselect = _dereq_('quickselect');
+
function rbush(maxEntries, format) {
if (!(this instanceof rbush)) return new rbush(maxEntries, format);
@@ -55346,7 +43944,7 @@ rbush.prototype = {
result = [],
toBBox = this.toBBox;
- if (!intersects(bbox, node.bbox)) return result;
+ if (!intersects(bbox, node)) return result;
var nodesToSearch = [],
i, len, child, childBBox;
@@ -55355,7 +43953,7 @@ rbush.prototype = {
for (i = 0, len = node.children.length; i < len; i++) {
child = node.children[i];
- childBBox = node.leaf ? toBBox(child) : child.bbox;
+ childBBox = node.leaf ? toBBox(child) : child;
if (intersects(bbox, childBBox)) {
if (node.leaf) result.push(child);
@@ -55374,7 +43972,7 @@ rbush.prototype = {
var node = this.data,
toBBox = this.toBBox;
- if (!intersects(bbox, node.bbox)) return false;
+ if (!intersects(bbox, node)) return false;
var nodesToSearch = [],
i, len, child, childBBox;
@@ -55383,7 +43981,7 @@ rbush.prototype = {
for (i = 0, len = node.children.length; i < len; i++) {
child = node.children[i];
- childBBox = node.leaf ? toBBox(child) : child.bbox;
+ childBBox = node.leaf ? toBBox(child) : child;
if (intersects(bbox, childBBox)) {
if (node.leaf || contains(bbox, childBBox)) return true;
@@ -55438,16 +44036,11 @@ rbush.prototype = {
},
clear: function () {
- this.data = {
- children: [],
- height: 1,
- bbox: empty(),
- leaf: true
- };
+ this.data = createNode([]);
return this;
},
- remove: function (item) {
+ remove: function (item, equalsFn) {
if (!item) return this;
var node = this.data,
@@ -55467,7 +44060,7 @@ rbush.prototype = {
}
if (node.leaf) { // check current node
- index = node.children.indexOf(item);
+ index = findItem(item, node.children, equalsFn);
if (index !== -1) {
// item found, remove the item and condense tree upwards
@@ -55478,7 +44071,7 @@ rbush.prototype = {
}
}
- if (!goingUp && !node.leaf && contains(node.bbox, bbox)) { // go down
+ if (!goingUp && !node.leaf && contains(node, bbox)) { // go down
path.push(node);
indexes.push(i);
i = 0;
@@ -55498,8 +44091,8 @@ rbush.prototype = {
toBBox: function (item) { return item; },
- compareMinX: function (a, b) { return a[0] - b[0]; },
- compareMinY: function (a, b) { return a[1] - b[1]; },
+ compareMinX: compareNodeMinX,
+ compareMinY: compareNodeMinY,
toJSON: function () { return this.data; },
@@ -55527,12 +44120,7 @@ rbush.prototype = {
if (N <= M) {
// reached leaf level; return leaf
- node = {
- children: items.slice(left, right + 1),
- height: 1,
- bbox: null,
- leaf: true
- };
+ node = createNode(items.slice(left, right + 1));
calcBBox(node, this.toBBox);
return node;
}
@@ -55545,12 +44133,9 @@ rbush.prototype = {
M = Math.ceil(N / Math.pow(M, height - 1));
}
- node = {
- children: [],
- height: height,
- bbox: null,
- leaf: false
- };
+ node = createNode([]);
+ node.leaf = false;
+ node.height = height;
// split the items into M mostly square tiles
@@ -55593,8 +44178,8 @@ rbush.prototype = {
for (i = 0, len = node.children.length; i < len; i++) {
child = node.children[i];
- area = bboxArea(child.bbox);
- enlargement = enlargedArea(bbox, child.bbox) - area;
+ area = bboxArea(child);
+ enlargement = enlargedArea(bbox, child) - area;
// choose entry with the least area enlargement
if (enlargement < minEnlargement) {
@@ -55620,7 +44205,7 @@ rbush.prototype = {
_insert: function (item, level, isNode) {
var toBBox = this.toBBox,
- bbox = isNode ? item.bbox : toBBox(item),
+ bbox = isNode ? item : toBBox(item),
insertPath = [];
// find the best node for accommodating the item, saving all nodes along the path too
@@ -55628,7 +44213,7 @@ rbush.prototype = {
// put the item into the node
node.children.push(item);
- extend(node.bbox, bbox);
+ extend(node, bbox);
// split on node overflow; propagate upwards if necessary
while (level >= 0) {
@@ -55653,14 +44238,9 @@ rbush.prototype = {
var splitIndex = this._chooseSplitIndex(node, m, M);
- var newNode = {
- children: node.children.splice(splitIndex, node.children.length - splitIndex),
- height: node.height,
- bbox: null,
- leaf: false
- };
-
- if (node.leaf) newNode.leaf = true;
+ var newNode = createNode(node.children.splice(splitIndex, node.children.length - splitIndex));
+ newNode.height = node.height;
+ newNode.leaf = node.leaf;
calcBBox(node, this.toBBox);
calcBBox(newNode, this.toBBox);
@@ -55671,12 +44251,9 @@ rbush.prototype = {
_splitRoot: function (node, newNode) {
// split root node
- this.data = {
- children: [node, newNode],
- height: node.height + 1,
- bbox: null,
- leaf: false
- };
+ this.data = createNode([node, newNode]);
+ this.data.height = node.height + 1;
+ this.data.leaf = false;
calcBBox(this.data, this.toBBox);
},
@@ -55738,13 +44315,13 @@ rbush.prototype = {
for (i = m; i < M - m; i++) {
child = node.children[i];
- extend(leftBBox, node.leaf ? toBBox(child) : child.bbox);
+ extend(leftBBox, node.leaf ? toBBox(child) : child);
margin += bboxMargin(leftBBox);
}
for (i = M - m - 1; i >= m; i--) {
child = node.children[i];
- extend(rightBBox, node.leaf ? toBBox(child) : child.bbox);
+ extend(rightBBox, node.leaf ? toBBox(child) : child);
margin += bboxMargin(rightBBox);
}
@@ -55754,7 +44331,7 @@ rbush.prototype = {
_adjustParentBBoxes: function (bbox, path, level) {
// adjust bboxes along the given tree path
for (var i = level; i >= 0; i--) {
- extend(path[i].bbox, bbox);
+ extend(path[i], bbox);
}
},
@@ -55784,71 +44361,97 @@ rbush.prototype = {
this.compareMinX = new Function('a', 'b', compareArr.join(format[0]));
this.compareMinY = new Function('a', 'b', compareArr.join(format[1]));
- this.toBBox = new Function('a', 'return [a' + format.join(', a') + '];');
+ this.toBBox = new Function('a',
+ 'return {minX: a' + format[0] +
+ ', minY: a' + format[1] +
+ ', maxX: a' + format[2] +
+ ', maxY: a' + format[3] + '};');
}
};
+function findItem(item, items, equalsFn) {
+ if (!equalsFn) return items.indexOf(item);
+
+ for (var i = 0; i < items.length; i++) {
+ if (equalsFn(item, items[i])) return i;
+ }
+ return -1;
+}
// calculate node's bbox from bboxes of its children
function calcBBox(node, toBBox) {
- node.bbox = distBBox(node, 0, node.children.length, toBBox);
+ distBBox(node, 0, node.children.length, toBBox, node);
}
// min bounding rectangle of node children from k to p-1
-function distBBox(node, k, p, toBBox) {
- var bbox = empty();
+function distBBox(node, k, p, toBBox, destNode) {
+ if (!destNode) destNode = createNode(null);
+ destNode.minX = Infinity;
+ destNode.minY = Infinity;
+ destNode.maxX = -Infinity;
+ destNode.maxY = -Infinity;
for (var i = k, child; i < p; i++) {
child = node.children[i];
- extend(bbox, node.leaf ? toBBox(child) : child.bbox);
+ extend(destNode, node.leaf ? toBBox(child) : child);
}
- return bbox;
+ return destNode;
}
-function empty() { return [Infinity, Infinity, -Infinity, -Infinity]; }
-
function extend(a, b) {
- a[0] = Math.min(a[0], b[0]);
- a[1] = Math.min(a[1], b[1]);
- a[2] = Math.max(a[2], b[2]);
- a[3] = Math.max(a[3], b[3]);
+ a.minX = Math.min(a.minX, b.minX);
+ a.minY = Math.min(a.minY, b.minY);
+ a.maxX = Math.max(a.maxX, b.maxX);
+ a.maxY = Math.max(a.maxY, b.maxY);
return a;
}
-function compareNodeMinX(a, b) { return a.bbox[0] - b.bbox[0]; }
-function compareNodeMinY(a, b) { return a.bbox[1] - b.bbox[1]; }
+function compareNodeMinX(a, b) { return a.minX - b.minX; }
+function compareNodeMinY(a, b) { return a.minY - b.minY; }
-function bboxArea(a) { return (a[2] - a[0]) * (a[3] - a[1]); }
-function bboxMargin(a) { return (a[2] - a[0]) + (a[3] - a[1]); }
+function bboxArea(a) { return (a.maxX - a.minX) * (a.maxY - a.minY); }
+function bboxMargin(a) { return (a.maxX - a.minX) + (a.maxY - a.minY); }
function enlargedArea(a, b) {
- return (Math.max(b[2], a[2]) - Math.min(b[0], a[0])) *
- (Math.max(b[3], a[3]) - Math.min(b[1], a[1]));
+ return (Math.max(b.maxX, a.maxX) - Math.min(b.minX, a.minX)) *
+ (Math.max(b.maxY, a.maxY) - Math.min(b.minY, a.minY));
}
function intersectionArea(a, b) {
- var minX = Math.max(a[0], b[0]),
- minY = Math.max(a[1], b[1]),
- maxX = Math.min(a[2], b[2]),
- maxY = Math.min(a[3], b[3]);
+ var minX = Math.max(a.minX, b.minX),
+ minY = Math.max(a.minY, b.minY),
+ maxX = Math.min(a.maxX, b.maxX),
+ maxY = Math.min(a.maxY, b.maxY);
return Math.max(0, maxX - minX) *
Math.max(0, maxY - minY);
}
function contains(a, b) {
- return a[0] <= b[0] &&
- a[1] <= b[1] &&
- b[2] <= a[2] &&
- b[3] <= a[3];
+ return a.minX <= b.minX &&
+ a.minY <= b.minY &&
+ b.maxX <= a.maxX &&
+ b.maxY <= a.maxY;
}
function intersects(a, b) {
- return b[0] <= a[2] &&
- b[1] <= a[3] &&
- b[2] >= a[0] &&
- b[3] >= a[1];
+ return b.minX <= a.maxX &&
+ b.minY <= a.maxY &&
+ b.maxX >= a.minX &&
+ b.maxY >= a.minY;
+}
+
+function createNode(children) {
+ return {
+ children: children,
+ height: 1,
+ leaf: true,
+ minX: Infinity,
+ minY: Infinity,
+ maxX: -Infinity,
+ maxY: -Infinity
+ };
}
// sort an array so that items come in groups of n unsorted items, with groups sorted between each other;
@@ -55865,32 +44468,41 @@ function multiSelect(arr, left, right, n, compare) {
if (right - left <= n) continue;
mid = left + Math.ceil((right - left) / n / 2) * n;
- select(arr, left, right, mid, compare);
+ quickselect(arr, mid, left, right, compare);
stack.push(left, mid, mid, right);
}
}
+},{"quickselect":2}],2:[function(_dereq_,module,exports){
+'use strict';
+
+module.exports = partialSort;
+
// Floyd-Rivest selection algorithm:
-// sort an array between left and right (inclusive) so that the smallest k elements come first (unordered)
-function select(arr, left, right, k, compare) {
- var n, i, z, s, sd, newLeft, newRight, t, j;
+// Rearrange items so that all items in the [left, k] range are smaller than all items in (k, right];
+// The k-th element will have the (k - left + 1)th smallest value in [left, right]
+
+function partialSort(arr, k, left, right, compare) {
+ left = left || 0;
+ right = right || (arr.length - 1);
+ compare = compare || defaultCompare;
while (right > left) {
if (right - left > 600) {
- n = right - left + 1;
- i = k - left + 1;
- z = Math.log(n);
- s = 0.5 * Math.exp(2 * z / 3);
- sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (i - n / 2 < 0 ? -1 : 1);
- newLeft = Math.max(left, Math.floor(k - i * s / n + sd));
- newRight = Math.min(right, Math.floor(k + (n - i) * s / n + sd));
- select(arr, newLeft, newRight, k, compare);
+ var n = right - left + 1;
+ var m = k - left + 1;
+ var z = Math.log(n);
+ var s = 0.5 * Math.exp(2 * z / 3);
+ var sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);
+ var newLeft = Math.max(left, Math.floor(k - m * s / n + sd));
+ var newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));
+ partialSort(arr, k, newLeft, newRight, compare);
}
- t = arr[k];
- i = left;
- j = right;
+ var t = arr[k];
+ var i = left;
+ var j = right;
swap(arr, left, k);
if (compare(arr[right], t) > 0) swap(arr, left, right);
@@ -55920,15 +44532,12 @@ function swap(arr, i, j) {
arr[j] = tmp;
}
+function defaultCompare(a, b) {
+ return a < b ? -1 : a > b ? 1 : 0;
+}
-// export as AMD/CommonJS module or global variable
-if (typeof define === 'function' && define.amd) define('rbush', function () { return rbush; });
-else if (typeof module !== 'undefined') module.exports = rbush;
-else if (typeof self !== 'undefined') self.rbush = rbush;
-else window.rbush = rbush;
-
-})();
-
+},{}]},{},[1])(1)
+});
ol.ext.rbush = module.exports;
})();
@@ -55960,7 +44569,7 @@ ol.structs.RBush = function(opt_maxEntries) {
* A mapping between the objects added to this rbush wrapper
* and the objects that are actually added to the internal rbush.
* @private
- * @type {Object.<number, Object>}
+ * @type {Object.<number, ol.RBushEntry>}
*/
this.items_ = {};
@@ -55983,13 +44592,15 @@ ol.structs.RBush.prototype.insert = function(extent, value) {
if (goog.DEBUG && this.readers_) {
throw new Error('Can not insert value while reading');
}
- var item = [
- extent[0],
- extent[1],
- extent[2],
- extent[3],
- value
- ];
+ /** @type {ol.RBushEntry} */
+ var item = {
+ minX: extent[0],
+ minY: extent[1],
+ maxX: extent[2],
+ maxY: extent[3],
+ value: value
+ };
+
this.rbush_.insert(item);
// remember the object that was added to the internal rbush
goog.asserts.assert(!(goog.getUid(value) in this.items_),
@@ -56016,13 +44627,14 @@ ol.structs.RBush.prototype.load = function(extents, values) {
var extent = extents[i];
var value = values[i];
- var item = [
- extent[0],
- extent[1],
- extent[2],
- extent[3],
- value
- ];
+ /** @type {ol.RBushEntry} */
+ var item = {
+ minX: extent[0],
+ minY: extent[1],
+ maxX: extent[2],
+ maxY: extent[3],
+ value: value
+ };
items[i] = item;
goog.asserts.assert(!(goog.getUid(value) in this.items_),
'uid (%s) of value (%s) already exists', goog.getUid(value), value);
@@ -56064,7 +44676,8 @@ ol.structs.RBush.prototype.update = function(extent, value) {
'uid (%s) of value (%s) does not exist', uid, value);
var item = this.items_[uid];
- if (!ol.extent.equals(item.slice(0, 4), extent)) {
+ var bbox = [item.minX, item.minY, item.maxX, item.maxY];
+ if (!ol.extent.equals(bbox, extent)) {
if (goog.DEBUG && this.readers_) {
throw new Error('Can not update extent while reading');
}
@@ -56081,7 +44694,7 @@ ol.structs.RBush.prototype.update = function(extent, value) {
ol.structs.RBush.prototype.getAll = function() {
var items = this.rbush_.all();
return items.map(function(item) {
- return item[4];
+ return item.value;
});
};
@@ -56092,9 +44705,16 @@ ol.structs.RBush.prototype.getAll = function() {
* @return {Array.<T>} All in extent.
*/
ol.structs.RBush.prototype.getInExtent = function(extent) {
- var items = this.rbush_.search(extent);
+ /** @type {ol.RBushEntry} */
+ var bbox = {
+ minX: extent[0],
+ minY: extent[1],
+ maxX: extent[2],
+ maxY: extent[3]
+ };
+ var items = this.rbush_.search(bbox);
return items.map(function(item) {
- return item[4];
+ return item.value;
});
};
@@ -56187,7 +44807,8 @@ ol.structs.RBush.prototype.clear = function() {
*/
ol.structs.RBush.prototype.getExtent = function(opt_extent) {
// FIXME add getExtent() to rbush
- return this.rbush_.data.bbox;
+ var data = this.rbush_.data;
+ return [data.minX, data.minY, data.maxX, data.maxY];
};
// FIXME bulk feature upload - suppress events
@@ -56268,7 +44889,7 @@ ol.source.Vector = function(opt_options) {
var options = opt_options || {};
- goog.base(this, {
+ ol.source.Source.call(this, {
attributions: options.attributions,
logo: options.logo,
projection: undefined,
@@ -56347,7 +44968,7 @@ ol.source.Vector = function(opt_options) {
/**
* @private
- * @type {Object.<string, Array.<ol.events.Key>>}
+ * @type {Object.<string, Array.<ol.EventsKey>>}
*/
this.featureChangeKeys_ = {};
@@ -56375,7 +44996,7 @@ ol.source.Vector = function(opt_options) {
}
};
-goog.inherits(ol.source.Vector, ol.source.Source);
+ol.inherits(ol.source.Vector, ol.source.Source);
/**
@@ -57080,7 +45701,7 @@ ol.source.Vector.prototype.removeFromIdIndex_ = function(feature) {
*/
ol.source.VectorEvent = function(type, opt_feature) {
- goog.base(this, type);
+ ol.events.Event.call(this, type);
/**
* The feature being added or removed.
@@ -57090,7 +45711,7 @@ ol.source.VectorEvent = function(type, opt_feature) {
this.feature = opt_feature;
};
-goog.inherits(ol.source.VectorEvent, ol.events.Event);
+ol.inherits(ol.source.VectorEvent, ol.events.Event);
goog.provide('ol.source.ImageVector');
@@ -57157,7 +45778,7 @@ ol.source.ImageVector = function(options) {
*/
this.replayGroup_ = null;
- goog.base(this, {
+ ol.source.ImageCanvas.call(this, {
attributions: options.attributions,
canvasFunction: this.canvasFunctionInternal_.bind(this),
logo: options.logo,
@@ -57169,14 +45790,14 @@ ol.source.ImageVector = function(options) {
/**
* User provided style.
- * @type {ol.style.Style|Array.<ol.style.Style>|ol.style.StyleFunction}
+ * @type {ol.style.Style|Array.<ol.style.Style>|ol.StyleFunction}
* @private
*/
this.style_ = null;
/**
* Style function for use within the library.
- * @type {ol.style.StyleFunction|undefined}
+ * @type {ol.StyleFunction|undefined}
* @private
*/
this.styleFunction_ = undefined;
@@ -57187,7 +45808,7 @@ ol.source.ImageVector = function(options) {
this.handleSourceChange_, this);
};
-goog.inherits(ol.source.ImageVector, ol.source.ImageCanvas);
+ol.inherits(ol.source.ImageVector, ol.source.ImageCanvas);
/**
@@ -57282,7 +45903,7 @@ ol.source.ImageVector.prototype.getSource = function() {
/**
* Get the style for features. This returns whatever was passed to the `style`
* option at construction or to the `setStyle` method.
- * @return {ol.style.Style|Array.<ol.style.Style>|ol.style.StyleFunction}
+ * @return {ol.style.Style|Array.<ol.style.Style>|ol.StyleFunction}
* Layer style.
* @api stable
*/
@@ -57293,7 +45914,7 @@ ol.source.ImageVector.prototype.getStyle = function() {
/**
* Get the style function.
- * @return {ol.style.StyleFunction|undefined} Layer style function.
+ * @return {ol.StyleFunction|undefined} Layer style function.
* @api stable
*/
ol.source.ImageVector.prototype.getStyleFunction = function() {
@@ -57378,7 +45999,7 @@ ol.source.ImageVector.prototype.renderFeature_ = function(feature, resolution, p
* it is `null` the layer has no style (a `null` style), so only features
* that have their own styles will be rendered in the layer. See
* {@link ol.style} for information on the default style.
- * @param {ol.style.Style|Array.<ol.style.Style>|ol.style.StyleFunction|undefined}
+ * @param {ol.style.Style|Array.<ol.style.Style>|ol.StyleFunction|undefined}
* style Layer style.
* @api stable
*/
@@ -57412,7 +46033,7 @@ goog.require('ol.vec.Mat4');
*/
ol.renderer.canvas.ImageLayer = function(imageLayer) {
- goog.base(this, imageLayer);
+ ol.renderer.canvas.Layer.call(this, imageLayer);
/**
* @private
@@ -57439,7 +46060,7 @@ ol.renderer.canvas.ImageLayer = function(imageLayer) {
this.hitCanvasContext_ = null;
};
-goog.inherits(ol.renderer.canvas.ImageLayer, ol.renderer.canvas.Layer);
+ol.inherits(ol.renderer.canvas.ImageLayer, ol.renderer.canvas.Layer);
/**
@@ -57621,7 +46242,7 @@ goog.require('ol.vec.Mat4');
*/
ol.renderer.canvas.TileLayer = function(tileLayer) {
- goog.base(this, tileLayer);
+ ol.renderer.canvas.Layer.call(this, tileLayer);
/**
* @protected
@@ -57660,7 +46281,7 @@ ol.renderer.canvas.TileLayer = function(tileLayer) {
this.zDirection = 0;
};
-goog.inherits(ol.renderer.canvas.TileLayer, ol.renderer.canvas.Layer);
+ol.inherits(ol.renderer.canvas.TileLayer, ol.renderer.canvas.Layer);
/**
@@ -57857,7 +46478,7 @@ ol.renderer.canvas.TileLayer.prototype.renderTileImages = function(context, fram
drawOffsetX = (drawSize - width) / 2 / drawScale;
drawOffsetY = (drawSize - height) / 2 / drawScale;
pixelScale *= drawScale;
- offsetX = Math.round(drawScale * (offsetX + drawOffsetX))
+ offsetX = Math.round(drawScale * (offsetX + drawOffsetX));
offsetY = Math.round(drawScale * (offsetY + drawOffsetY));
}
// for performance reasons, context.save / context.restore is not used
@@ -57874,6 +46495,41 @@ ol.renderer.canvas.TileLayer.prototype.renderTileImages = function(context, fram
tilesToDraw.reverse();
pixelExtents = [];
}
+
+ var extent = layerState.extent;
+ var clipped = extent !== undefined;
+ if (clipped) {
+ goog.asserts.assert(extent !== undefined,
+ 'layerState extent is defined');
+ var topLeft = ol.extent.getTopLeft(extent);
+ var topRight = ol.extent.getTopRight(extent);
+ var bottomRight = ol.extent.getBottomRight(extent);
+ var bottomLeft = ol.extent.getBottomLeft(extent);
+
+ ol.vec.Mat4.multVec2(frameState.coordinateToPixelMatrix,
+ topLeft, topLeft);
+ ol.vec.Mat4.multVec2(frameState.coordinateToPixelMatrix,
+ topRight, topRight);
+ ol.vec.Mat4.multVec2(frameState.coordinateToPixelMatrix,
+ bottomRight, bottomRight);
+ ol.vec.Mat4.multVec2(frameState.coordinateToPixelMatrix,
+ bottomLeft, bottomLeft);
+
+ var ox = drawOffsetX || 0;
+ var oy = drawOffsetY || 0;
+ renderContext.save();
+ var cx = (renderContext.canvas.width * pixelRatio) / 2;
+ var cy = (renderContext.canvas.height * pixelRatio) / 2;
+ ol.render.canvas.rotateAtOffset(renderContext, -rotation, cx, cy);
+ renderContext.beginPath();
+ renderContext.moveTo(topLeft[0] * pixelRatio + ox, topLeft[1] * pixelRatio + oy);
+ renderContext.lineTo(topRight[0] * pixelRatio + ox, topRight[1] * pixelRatio + oy);
+ renderContext.lineTo(bottomRight[0] * pixelRatio + ox, bottomRight[1] * pixelRatio + oy);
+ renderContext.lineTo(bottomLeft[0] * pixelRatio + ox, bottomLeft[1] * pixelRatio + oy);
+ renderContext.clip();
+ ol.render.canvas.rotateAtOffset(renderContext, rotation, cx, cy);
+ }
+
for (var i = 0, ii = tilesToDraw.length; i < ii; ++i) {
var tile = tilesToDraw[i];
var tileCoord = tile.getTileCoord();
@@ -57922,6 +46578,10 @@ ol.renderer.canvas.TileLayer.prototype.renderTileImages = function(context, fram
}
}
+ if (clipped) {
+ renderContext.restore();
+ }
+
if (hasRenderListeners) {
var dX = drawOffsetX - offsetX / drawScale + offsetX;
var dY = drawOffsetY - offsetY / drawScale + offsetY;
@@ -57967,7 +46627,7 @@ goog.require('ol.source.Vector');
*/
ol.renderer.canvas.VectorLayer = function(vectorLayer) {
- goog.base(this, vectorLayer);
+ ol.renderer.canvas.Layer.call(this, vectorLayer);
/**
* @private
@@ -58012,7 +46672,7 @@ ol.renderer.canvas.VectorLayer = function(vectorLayer) {
this.context_ = ol.dom.createCanvasContext2D();
};
-goog.inherits(ol.renderer.canvas.VectorLayer, ol.renderer.canvas.Layer);
+ol.inherits(ol.renderer.canvas.VectorLayer, ol.renderer.canvas.Layer);
/**
@@ -58433,7 +47093,7 @@ goog.require('ol.source.TileEvent');
*/
ol.source.UrlTile = function(options) {
- goog.base(this, {
+ ol.source.Tile.call(this, {
attributions: options.attributions,
cacheSize: options.cacheSize,
extent: options.extent,
@@ -58476,7 +47136,7 @@ ol.source.UrlTile = function(options) {
}
};
-goog.inherits(ol.source.UrlTile, ol.source.Tile);
+ol.inherits(ol.source.UrlTile, ol.source.Tile);
/**
@@ -58637,7 +47297,7 @@ goog.require('ol.source.UrlTile');
*/
ol.source.VectorTile = function(options) {
- goog.base(this, {
+ ol.source.UrlTile.call(this, {
attributions: options.attributions,
cacheSize: options.cacheSize !== undefined ? options.cacheSize : 128,
extent: options.extent,
@@ -58669,7 +47329,7 @@ ol.source.VectorTile = function(options) {
this.tileClass = options.tileClass ? options.tileClass : ol.VectorTile;
};
-goog.inherits(ol.source.VectorTile, ol.source.UrlTile);
+ol.inherits(ol.source.VectorTile, ol.source.UrlTile);
/**
@@ -58765,7 +47425,7 @@ ol.renderer.canvas.VECTOR_REPLAYS = {
*/
ol.renderer.canvas.VectorTileLayer = function(layer) {
- goog.base(this, layer);
+ ol.renderer.canvas.TileLayer.call(this, layer);
/**
* @private
@@ -58784,7 +47444,7 @@ ol.renderer.canvas.VectorTileLayer = function(layer) {
layer.getRenderMode() == ol.layer.VectorTileRenderType.VECTOR ? 1 : 0;
};
-goog.inherits(ol.renderer.canvas.VectorTileLayer, ol.renderer.canvas.TileLayer);
+ol.inherits(ol.renderer.canvas.VectorTileLayer, ol.renderer.canvas.TileLayer);
/**
@@ -59060,7 +47720,7 @@ ol.renderer.canvas.VectorTileLayer.prototype.handleStyleImageChange_ = function(
* @inheritDoc
*/
ol.renderer.canvas.VectorTileLayer.prototype.prepareFrame = function(frameState, layerState) {
- var prepared = goog.base(this, 'prepareFrame', frameState, layerState);
+ var prepared = ol.renderer.canvas.TileLayer.prototype.prepareFrame.call(this, frameState, layerState);
if (prepared) {
var skippedFeatures = Object.keys(frameState.skippedFeatureUids_ || {});
for (var i = 0, ii = this.renderedTiles.length; i < ii; ++i) {
@@ -59163,15 +47823,13 @@ ol.renderer.canvas.VectorTileLayer.prototype.renderTileImage_ = function(
replayState.replayGroup.replay(tileContext, pixelRatio,
tileTransform, 0, frameState.skippedFeatureUids || {}, replays);
}
-}
+};
// FIXME offset panning
goog.provide('ol.renderer.canvas.Map');
goog.require('goog.asserts');
-goog.require('goog.dom');
-goog.require('goog.style');
goog.require('goog.vec.Mat4');
goog.require('ol');
goog.require('ol.RendererType');
@@ -59205,7 +47863,7 @@ goog.require('ol.vec.Mat4');
*/
ol.renderer.canvas.Map = function(container, map) {
- goog.base(this, container, map);
+ ol.renderer.Map.call(this, container, map);
/**
* @private
@@ -59222,7 +47880,7 @@ ol.renderer.canvas.Map = function(container, map) {
this.canvas_.style.width = '100%';
this.canvas_.style.height = '100%';
this.canvas_.className = ol.css.CLASS_UNSELECTABLE;
- goog.dom.insertChildAt(container, this.canvas_, 0);
+ container.insertBefore(this.canvas_, container.childNodes[0] || null);
/**
* @private
@@ -59237,7 +47895,7 @@ ol.renderer.canvas.Map = function(container, map) {
this.transform_ = goog.vec.Mat4.createNumber();
};
-goog.inherits(ol.renderer.canvas.Map, ol.renderer.Map);
+ol.inherits(ol.renderer.canvas.Map, ol.renderer.Map);
/**
@@ -59316,7 +47974,7 @@ ol.renderer.canvas.Map.prototype.renderFrame = function(frameState) {
if (!frameState) {
if (this.renderedVisible_) {
- goog.style.setElementShown(this.canvas_, false);
+ this.canvas_.style.display = 'none';
this.renderedVisible_ = false;
}
return;
@@ -59367,7 +48025,7 @@ ol.renderer.canvas.Map.prototype.renderFrame = function(frameState) {
ol.render.EventType.POSTCOMPOSE, frameState);
if (!this.renderedVisible_) {
- goog.style.setElementShown(this.canvas_, true);
+ this.canvas_.style.display = '';
this.renderedVisible_ = true;
}
@@ -59390,7 +48048,7 @@ goog.require('ol.renderer.Layer');
*/
ol.renderer.dom.Layer = function(layer, target) {
- goog.base(this, layer);
+ ol.renderer.Layer.call(this, layer);
/**
* @type {!Element}
@@ -59399,7 +48057,7 @@ ol.renderer.dom.Layer = function(layer, target) {
this.target = target;
};
-goog.inherits(ol.renderer.dom.Layer, ol.renderer.Layer);
+ol.inherits(ol.renderer.dom.Layer, ol.renderer.Layer);
/**
@@ -59433,7 +48091,6 @@ ol.renderer.dom.Layer.prototype.prepareFrame = goog.abstractMethod;
goog.provide('ol.renderer.dom.ImageLayer');
goog.require('goog.asserts');
-goog.require('goog.dom');
goog.require('goog.vec.Mat4');
goog.require('ol.ImageBase');
goog.require('ol.ViewHint');
@@ -59454,7 +48111,7 @@ ol.renderer.dom.ImageLayer = function(imageLayer) {
var target = document.createElement('DIV');
target.style.position = 'absolute';
- goog.base(this, imageLayer, target);
+ ol.renderer.dom.Layer.call(this, imageLayer, target);
/**
* The last rendered image.
@@ -59470,7 +48127,7 @@ ol.renderer.dom.ImageLayer = function(imageLayer) {
this.transform_ = goog.vec.Mat4.createNumberIdentity();
};
-goog.inherits(ol.renderer.dom.ImageLayer, ol.renderer.dom.Layer);
+ol.inherits(ol.renderer.dom.ImageLayer, ol.renderer.dom.Layer);
/**
@@ -59498,7 +48155,7 @@ ol.renderer.dom.ImageLayer.prototype.forEachFeatureAtCoordinate = function(coord
* @inheritDoc
*/
ol.renderer.dom.ImageLayer.prototype.clearFrame = function() {
- goog.dom.removeChildren(this.target);
+ ol.dom.removeChildren(this.target);
this.image_ = null;
};
@@ -59565,7 +48222,7 @@ ol.renderer.dom.ImageLayer.prototype.prepareFrame = function(frameState, layerSt
// overriding the max-width style.
imageElement.style.maxWidth = 'none';
imageElement.style.position = 'absolute';
- goog.dom.removeChildren(this.target);
+ ol.dom.removeChildren(this.target);
this.target.appendChild(imageElement);
this.image_ = image;
}
@@ -59595,8 +48252,6 @@ ol.renderer.dom.ImageLayer.prototype.setTransform_ = function(transform) {
goog.provide('ol.renderer.dom.TileLayer');
goog.require('goog.asserts');
-goog.require('goog.dom');
-goog.require('goog.style');
goog.require('goog.vec.Mat4');
goog.require('ol');
goog.require('ol.TileRange');
@@ -59622,7 +48277,7 @@ ol.renderer.dom.TileLayer = function(tileLayer) {
var target = document.createElement('DIV');
target.style.position = 'absolute';
- goog.base(this, tileLayer, target);
+ ol.renderer.dom.Layer.call(this, tileLayer, target);
/**
* @private
@@ -59649,14 +48304,14 @@ ol.renderer.dom.TileLayer = function(tileLayer) {
this.tileLayerZs_ = {};
};
-goog.inherits(ol.renderer.dom.TileLayer, ol.renderer.dom.Layer);
+ol.inherits(ol.renderer.dom.TileLayer, ol.renderer.dom.Layer);
/**
* @inheritDoc
*/
ol.renderer.dom.TileLayer.prototype.clearFrame = function() {
- goog.dom.removeChildren(this.target);
+ ol.dom.removeChildren(this.target);
this.renderedRevision_ = 0;
};
@@ -59668,7 +48323,7 @@ ol.renderer.dom.TileLayer.prototype.prepareFrame = function(frameState, layerSta
if (!layerState.visible) {
if (this.renderedVisible_) {
- goog.style.setElementShown(this.target, false);
+ this.target.style.display = 'none';
this.renderedVisible_ = false;
}
return true;
@@ -59756,7 +48411,7 @@ ol.renderer.dom.TileLayer.prototype.prepareFrame = function(frameState, layerSta
if (this.renderedRevision_ != tileSource.getRevision()) {
for (tileLayerZKey in this.tileLayerZs_) {
tileLayerZ = this.tileLayerZs_[+tileLayerZKey];
- goog.dom.removeNode(tileLayerZ.target);
+ ol.dom.removeNode(tileLayerZ.target);
}
this.tileLayerZs_ = {};
this.renderedRevision_ = tileSource.getRevision();
@@ -59798,7 +48453,7 @@ ol.renderer.dom.TileLayer.prototype.prepareFrame = function(frameState, layerSta
tileLayerZKey = tileLayerZKeys[i];
tileLayerZ = this.tileLayerZs_[tileLayerZKey];
if (!(tileLayerZKey in tilesToDrawByZ)) {
- goog.dom.removeNode(tileLayerZ.target);
+ ol.dom.removeNode(tileLayerZ.target);
delete this.tileLayerZs_[tileLayerZKey];
continue;
}
@@ -59815,13 +48470,14 @@ ol.renderer.dom.TileLayer.prototype.prepareFrame = function(frameState, layerSta
if (tileLayerZKey in newTileLayerZKeys) {
for (j = tileLayerZKey - 1; j >= 0; --j) {
if (j in this.tileLayerZs_) {
- goog.dom.insertSiblingAfter(
- tileLayerZ.target, this.tileLayerZs_[j].target);
+ if (this.tileLayerZs_[j].target.parentNode) {
+ this.tileLayerZs_[j].target.parentNode.insertBefore(tileLayerZ.target, this.tileLayerZs_[j].target.nextSibling);
+ }
break;
}
}
if (j < 0) {
- goog.dom.insertChildAt(this.target, tileLayerZ.target, 0);
+ this.target.insertBefore(tileLayerZ.target, this.target.childNodes[0] || null);
}
} else {
if (!frameState.viewHints[ol.ViewHint.ANIMATING] &&
@@ -59837,7 +48493,7 @@ ol.renderer.dom.TileLayer.prototype.prepareFrame = function(frameState, layerSta
}
if (layerState.visible && !this.renderedVisible_) {
- goog.style.setElementShown(this.target, true);
+ this.target.style.display = '';
this.renderedVisible_ = true;
}
@@ -60022,7 +48678,7 @@ ol.renderer.dom.TileLayerZ_.prototype.removeTilesOutsideExtent = function(extent
for (i = 0, ii = tilesToRemove.length; i < ii; ++i) {
tile = tilesToRemove[i];
tileCoordKey = tile.tileCoord.toString();
- goog.dom.removeNode(tile.getImage(this));
+ ol.dom.removeNode(tile.getImage(this));
delete this.tiles_[tileCoordKey];
}
};
@@ -60076,7 +48732,7 @@ ol.renderer.dom.VectorLayer = function(vectorLayer) {
target.style.maxWidth = 'none';
target.style.position = 'absolute';
- goog.base(this, vectorLayer, target);
+ ol.renderer.dom.Layer.call(this, vectorLayer, target);
/**
* @private
@@ -60127,7 +48783,7 @@ ol.renderer.dom.VectorLayer = function(vectorLayer) {
this.elementTransform_ = goog.vec.Mat4.createNumber();
};
-goog.inherits(ol.renderer.dom.VectorLayer, ol.renderer.dom.Layer);
+ol.inherits(ol.renderer.dom.VectorLayer, ol.renderer.dom.Layer);
/**
@@ -60397,11 +49053,9 @@ ol.renderer.dom.VectorLayer.prototype.renderFeature = function(feature, resoluti
goog.provide('ol.renderer.dom.Map');
goog.require('goog.asserts');
-goog.require('goog.dom');
goog.require('ol.events');
goog.require('ol.events.Event');
goog.require('ol.events.EventType');
-goog.require('goog.style');
goog.require('goog.vec.Mat4');
goog.require('ol');
goog.require('ol.RendererType');
@@ -60432,7 +49086,7 @@ goog.require('ol.vec.Mat4');
*/
ol.renderer.dom.Map = function(container, map) {
- goog.base(this, container, map);
+ ol.renderer.Map.call(this, container, map);
/**
* @private
@@ -60444,7 +49098,7 @@ ol.renderer.dom.Map = function(container, map) {
canvas.style.width = '100%';
canvas.style.height = '100%';
canvas.className = ol.css.CLASS_UNSELECTABLE;
- goog.dom.insertChildAt(container, canvas, 0);
+ container.insertBefore(canvas, container.childNodes[0] || null);
/**
* @private
@@ -60467,7 +49121,7 @@ ol.renderer.dom.Map = function(container, map) {
ol.events.listen(this.layersPane_, ol.events.EventType.TOUCHSTART,
ol.events.Event.preventDefault);
- goog.dom.insertChildAt(container, this.layersPane_, 0);
+ container.insertBefore(this.layersPane_, container.childNodes[0] || null);
/**
* @private
@@ -60476,15 +49130,15 @@ ol.renderer.dom.Map = function(container, map) {
this.renderedVisible_ = true;
};
-goog.inherits(ol.renderer.dom.Map, ol.renderer.Map);
+ol.inherits(ol.renderer.dom.Map, ol.renderer.Map);
/**
* @inheritDoc
*/
ol.renderer.dom.Map.prototype.disposeInternal = function() {
- goog.dom.removeNode(this.layersPane_);
- goog.base(this, 'disposeInternal');
+ ol.dom.removeNode(this.layersPane_);
+ ol.renderer.Map.prototype.disposeInternal.call(this);
};
@@ -60553,7 +49207,7 @@ ol.renderer.dom.Map.prototype.renderFrame = function(frameState) {
if (!frameState) {
if (this.renderedVisible_) {
- goog.style.setElementShown(this.layersPane_, false);
+ this.layersPane_.style.display = 'none';
this.renderedVisible_ = false;
}
return;
@@ -60582,7 +49236,7 @@ ol.renderer.dom.Map.prototype.renderFrame = function(frameState) {
this.getLayerRenderer(layer));
goog.asserts.assertInstanceof(layerRenderer, ol.renderer.dom.Layer,
'renderer is an instance of ol.renderer.dom.Layer');
- goog.dom.insertChildAt(this.layersPane_, layerRenderer.getTarget(), i);
+ this.layersPane_.insertBefore(layerRenderer.getTarget(), this.layersPane_.childNodes[i] || null);
if (ol.layer.Layer.visibleAtResolution(layerState, viewResolution) &&
layerState.sourceState == ol.source.State.READY) {
if (layerRenderer.prepareFrame(frameState, layerState)) {
@@ -60600,12 +49254,12 @@ ol.renderer.dom.Map.prototype.renderFrame = function(frameState) {
layerRenderer = this.getLayerRendererByKey(layerKey);
goog.asserts.assertInstanceof(layerRenderer, ol.renderer.dom.Layer,
'renderer is an instance of ol.renderer.dom.Layer');
- goog.dom.removeNode(layerRenderer.getTarget());
+ ol.dom.removeNode(layerRenderer.getTarget());
}
}
if (!this.renderedVisible_) {
- goog.style.setElementShown(this.layersPane_, true);
+ this.layersPane_.style.display = '';
this.renderedVisible_ = true;
}
@@ -62864,9 +51518,9 @@ ol.webgl.Shader.prototype.isAnimated = ol.functions.FALSE;
* @struct
*/
ol.webgl.shader.Fragment = function(source) {
- goog.base(this, source);
+ ol.webgl.Shader.call(this, source);
};
-goog.inherits(ol.webgl.shader.Fragment, ol.webgl.Shader);
+ol.inherits(ol.webgl.shader.Fragment, ol.webgl.Shader);
/**
@@ -62884,9 +51538,9 @@ ol.webgl.shader.Fragment.prototype.getType = function() {
* @struct
*/
ol.webgl.shader.Vertex = function(source) {
- goog.base(this, source);
+ ol.webgl.Shader.call(this, source);
};
-goog.inherits(ol.webgl.shader.Vertex, ol.webgl.Shader);
+ol.inherits(ol.webgl.shader.Vertex, ol.webgl.Shader);
/**
@@ -62911,9 +51565,9 @@ goog.require('ol.webgl.shader');
* @struct
*/
ol.render.webgl.imagereplay.shader.DefaultFragment = function() {
- goog.base(this, ol.render.webgl.imagereplay.shader.DefaultFragment.SOURCE);
+ ol.webgl.shader.Fragment.call(this, ol.render.webgl.imagereplay.shader.DefaultFragment.SOURCE);
};
-goog.inherits(ol.render.webgl.imagereplay.shader.DefaultFragment, ol.webgl.shader.Fragment);
+ol.inherits(ol.render.webgl.imagereplay.shader.DefaultFragment, ol.webgl.shader.Fragment);
goog.addSingletonGetter(ol.render.webgl.imagereplay.shader.DefaultFragment);
@@ -62946,9 +51600,9 @@ ol.render.webgl.imagereplay.shader.DefaultFragment.SOURCE = goog.DEBUG ?
* @struct
*/
ol.render.webgl.imagereplay.shader.DefaultVertex = function() {
- goog.base(this, ol.render.webgl.imagereplay.shader.DefaultVertex.SOURCE);
+ ol.webgl.shader.Vertex.call(this, ol.render.webgl.imagereplay.shader.DefaultVertex.SOURCE);
};
-goog.inherits(ol.render.webgl.imagereplay.shader.DefaultVertex, ol.webgl.shader.Vertex);
+ol.inherits(ol.render.webgl.imagereplay.shader.DefaultVertex, ol.webgl.shader.Vertex);
goog.addSingletonGetter(ol.render.webgl.imagereplay.shader.DefaultVertex);
@@ -63195,7 +51849,7 @@ ol.webgl.Context = function(canvas, gl) {
this.handleWebGLContextRestored, this);
};
-goog.inherits(ol.webgl.Context, ol.Disposable);
+ol.inherits(ol.webgl.Context, ol.Disposable);
/**
@@ -63516,7 +52170,7 @@ goog.require('ol.webgl.Context');
* @struct
*/
ol.render.webgl.ImageReplay = function(tolerance, maxExtent) {
- goog.base(this);
+ ol.render.VectorContext.call(this);
/**
* @type {number|undefined}
@@ -63698,7 +52352,7 @@ ol.render.webgl.ImageReplay = function(tolerance, maxExtent) {
*/
this.width_ = undefined;
};
-goog.inherits(ol.render.webgl.ImageReplay, ol.render.VectorContext);
+ol.inherits(ol.render.webgl.ImageReplay, ol.render.VectorContext);
/**
@@ -64690,7 +53344,7 @@ goog.require('ol.render.webgl.ReplayGroup');
* @struct
*/
ol.render.webgl.Immediate = function(context, center, resolution, rotation, size, extent, pixelRatio) {
- goog.base(this);
+ ol.render.VectorContext.call(this);
/**
* @private
@@ -64734,7 +53388,7 @@ ol.render.webgl.Immediate = function(context, center, resolution, rotation, size
this.imageStyle_ = null;
};
-goog.inherits(ol.render.webgl.Immediate, ol.render.VectorContext);
+ol.inherits(ol.render.webgl.Immediate, ol.render.VectorContext);
/**
@@ -64869,9 +53523,9 @@ goog.require('ol.webgl.shader');
* @struct
*/
ol.renderer.webgl.map.shader.DefaultFragment = function() {
- goog.base(this, ol.renderer.webgl.map.shader.DefaultFragment.SOURCE);
+ ol.webgl.shader.Fragment.call(this, ol.renderer.webgl.map.shader.DefaultFragment.SOURCE);
};
-goog.inherits(ol.renderer.webgl.map.shader.DefaultFragment, ol.webgl.shader.Fragment);
+ol.inherits(ol.renderer.webgl.map.shader.DefaultFragment, ol.webgl.shader.Fragment);
goog.addSingletonGetter(ol.renderer.webgl.map.shader.DefaultFragment);
@@ -64904,9 +53558,9 @@ ol.renderer.webgl.map.shader.DefaultFragment.SOURCE = goog.DEBUG ?
* @struct
*/
ol.renderer.webgl.map.shader.DefaultVertex = function() {
- goog.base(this, ol.renderer.webgl.map.shader.DefaultVertex.SOURCE);
+ ol.webgl.shader.Vertex.call(this, ol.renderer.webgl.map.shader.DefaultVertex.SOURCE);
};
-goog.inherits(ol.renderer.webgl.map.shader.DefaultVertex, ol.webgl.shader.Vertex);
+ol.inherits(ol.renderer.webgl.map.shader.DefaultVertex, ol.webgl.shader.Vertex);
goog.addSingletonGetter(ol.renderer.webgl.map.shader.DefaultVertex);
@@ -65003,7 +53657,7 @@ goog.require('ol.webgl.Context');
*/
ol.renderer.webgl.Layer = function(mapRenderer, layer) {
- goog.base(this, layer);
+ ol.renderer.Layer.call(this, layer);
/**
* @protected
@@ -65059,7 +53713,7 @@ ol.renderer.webgl.Layer = function(mapRenderer, layer) {
this.defaultLocations_ = null;
};
-goog.inherits(ol.renderer.webgl.Layer, ol.renderer.Layer);
+ol.inherits(ol.renderer.webgl.Layer, ol.renderer.Layer);
/**
@@ -65255,7 +53909,7 @@ goog.require('ol.webgl.Context');
*/
ol.renderer.webgl.ImageLayer = function(mapRenderer, imageLayer) {
- goog.base(this, mapRenderer, imageLayer);
+ ol.renderer.webgl.Layer.call(this, mapRenderer, imageLayer);
/**
* The last rendered image.
@@ -65277,7 +53931,7 @@ ol.renderer.webgl.ImageLayer = function(mapRenderer, imageLayer) {
this.hitTransformationMatrix_ = null;
};
-goog.inherits(ol.renderer.webgl.ImageLayer, ol.renderer.webgl.Layer);
+ol.inherits(ol.renderer.webgl.ImageLayer, ol.renderer.webgl.Layer);
/**
@@ -65570,9 +54224,9 @@ goog.require('ol.webgl.shader');
* @struct
*/
ol.renderer.webgl.tilelayer.shader.Fragment = function() {
- goog.base(this, ol.renderer.webgl.tilelayer.shader.Fragment.SOURCE);
+ ol.webgl.shader.Fragment.call(this, ol.renderer.webgl.tilelayer.shader.Fragment.SOURCE);
};
-goog.inherits(ol.renderer.webgl.tilelayer.shader.Fragment, ol.webgl.shader.Fragment);
+ol.inherits(ol.renderer.webgl.tilelayer.shader.Fragment, ol.webgl.shader.Fragment);
goog.addSingletonGetter(ol.renderer.webgl.tilelayer.shader.Fragment);
@@ -65605,9 +54259,9 @@ ol.renderer.webgl.tilelayer.shader.Fragment.SOURCE = goog.DEBUG ?
* @struct
*/
ol.renderer.webgl.tilelayer.shader.Vertex = function() {
- goog.base(this, ol.renderer.webgl.tilelayer.shader.Vertex.SOURCE);
+ ol.webgl.shader.Vertex.call(this, ol.renderer.webgl.tilelayer.shader.Vertex.SOURCE);
};
-goog.inherits(ol.renderer.webgl.tilelayer.shader.Vertex, ol.webgl.shader.Vertex);
+ol.inherits(ol.renderer.webgl.tilelayer.shader.Vertex, ol.webgl.shader.Vertex);
goog.addSingletonGetter(ol.renderer.webgl.tilelayer.shader.Vertex);
@@ -65699,7 +54353,7 @@ goog.require('ol.webgl.Buffer');
*/
ol.renderer.webgl.TileLayer = function(mapRenderer, tileLayer) {
- goog.base(this, mapRenderer, tileLayer);
+ ol.renderer.webgl.Layer.call(this, mapRenderer, tileLayer);
/**
* @private
@@ -65756,7 +54410,7 @@ ol.renderer.webgl.TileLayer = function(mapRenderer, tileLayer) {
this.tmpSize_ = [0, 0];
};
-goog.inherits(ol.renderer.webgl.TileLayer, ol.renderer.webgl.Layer);
+ol.inherits(ol.renderer.webgl.TileLayer, ol.renderer.webgl.Layer);
/**
@@ -65765,7 +54419,7 @@ goog.inherits(ol.renderer.webgl.TileLayer, ol.renderer.webgl.Layer);
ol.renderer.webgl.TileLayer.prototype.disposeInternal = function() {
var context = this.mapRenderer.getContext();
context.deleteBuffer(this.renderArrayBuffer_);
- goog.base(this, 'disposeInternal');
+ ol.renderer.webgl.Layer.prototype.disposeInternal.call(this);
};
@@ -65809,7 +54463,7 @@ ol.renderer.webgl.TileLayer.prototype.createLoadedTileFinder = function(source,
* @inheritDoc
*/
ol.renderer.webgl.TileLayer.prototype.handleWebGLContextLost = function() {
- goog.base(this, 'handleWebGLContextLost');
+ ol.renderer.webgl.Layer.prototype.handleWebGLContextLost.call(this);
this.locations_ = null;
};
@@ -66101,7 +54755,7 @@ goog.require('ol.vec.Mat4');
*/
ol.renderer.webgl.VectorLayer = function(mapRenderer, vectorLayer) {
- goog.base(this, mapRenderer, vectorLayer);
+ ol.renderer.webgl.Layer.call(this, mapRenderer, vectorLayer);
/**
* @private
@@ -66147,7 +54801,7 @@ ol.renderer.webgl.VectorLayer = function(mapRenderer, vectorLayer) {
this.layerState_ = null;
};
-goog.inherits(ol.renderer.webgl.VectorLayer, ol.renderer.webgl.Layer);
+ol.inherits(ol.renderer.webgl.VectorLayer, ol.renderer.webgl.Layer);
/**
@@ -66177,7 +54831,7 @@ ol.renderer.webgl.VectorLayer.prototype.disposeInternal = function() {
replayGroup.getDeleteResourcesFunction(context)();
this.replayGroup_ = null;
}
- goog.base(this, 'disposeInternal');
+ ol.renderer.webgl.Layer.prototype.disposeInternal.call(this);
};
@@ -66401,8 +55055,6 @@ ol.renderer.webgl.VectorLayer.prototype.renderFeature = function(feature, resolu
goog.provide('ol.renderer.webgl.Map');
goog.require('goog.asserts');
-goog.require('goog.dom');
-goog.require('goog.style');
goog.require('goog.webgl');
goog.require('ol');
goog.require('ol.RendererType');
@@ -66439,7 +55091,7 @@ goog.require('ol.webgl.WebGLContextEventType');
*/
ol.renderer.webgl.Map = function(container, map) {
- goog.base(this, container, map);
+ ol.renderer.Map.call(this, container, map);
/**
* @private
@@ -66450,7 +55102,7 @@ ol.renderer.webgl.Map = function(container, map) {
this.canvas_.style.width = '100%';
this.canvas_.style.height = '100%';
this.canvas_.className = ol.css.CLASS_UNSELECTABLE;
- goog.dom.insertChildAt(container, this.canvas_, 0);
+ container.insertBefore(this.canvas_, container.childNodes[0] || null);
/**
* @private
@@ -66569,7 +55221,7 @@ ol.renderer.webgl.Map = function(container, map) {
this.initializeGL_();
};
-goog.inherits(ol.renderer.webgl.Map, ol.renderer.Map);
+ol.inherits(ol.renderer.webgl.Map, ol.renderer.Map);
/**
@@ -66594,7 +55246,7 @@ ol.renderer.webgl.Map.prototype.bindTileTexture = function(tile, tileSize, tileG
}
if (textureCacheEntry.minFilter != minFilter) {
gl.texParameteri(
- goog.webgl.TEXTURE_2D, goog.webgl.TEXTURE_MAG_FILTER, minFilter);
+ goog.webgl.TEXTURE_2D, goog.webgl.TEXTURE_MIN_FILTER, minFilter);
textureCacheEntry.minFilter = minFilter;
}
} else {
@@ -66702,7 +55354,7 @@ ol.renderer.webgl.Map.prototype.disposeInternal = function() {
});
}
this.context_.dispose();
- goog.base(this, 'disposeInternal');
+ ol.renderer.Map.prototype.disposeInternal.call(this);
};
@@ -66828,7 +55480,7 @@ ol.renderer.webgl.Map.prototype.renderFrame = function(frameState) {
if (!frameState) {
if (this.renderedVisible_) {
- goog.style.setElementShown(this.canvas_, false);
+ this.canvas_.style.display = 'none';
this.renderedVisible_ = false;
}
return false;
@@ -66884,7 +55536,7 @@ ol.renderer.webgl.Map.prototype.renderFrame = function(frameState) {
}
if (!this.renderedVisible_) {
- goog.style.setElementShown(this.canvas_, true);
+ this.canvas_.style.display = '';
this.renderedVisible_ = true;
}
@@ -67015,8 +55667,6 @@ goog.provide('ol.MapProperty');
goog.require('goog.asserts');
goog.require('goog.async.nextTick');
-goog.require('goog.dom');
-goog.require('goog.style');
goog.require('goog.vec.Mat4');
goog.require('ol.Collection');
goog.require('ol.CollectionEventType');
@@ -67034,6 +55684,7 @@ goog.require('ol.View');
goog.require('ol.ViewHint');
goog.require('ol.array');
goog.require('ol.control');
+goog.require('ol.dom');
goog.require('ol.events');
goog.require('ol.events.Event');
goog.require('ol.events.EventType');
@@ -67124,14 +55775,14 @@ ol.MapProperty = {
* }),
* layers: [
* new ol.layer.Tile({
- * source: new ol.source.MapQuest({layer: 'osm'})
+ * source: new ol.source.OSM()
* })
* ],
* target: 'map'
* });
*
* The above snippet creates a map using a {@link ol.layer.Tile} to display
- * {@link ol.source.MapQuest} OSM data and render it to a DOM element with the
+ * {@link ol.source.OSM} OSM data and render it to a DOM element with the
* id `map`.
*
* The constructor places a viewport container (with CSS class name
@@ -67163,7 +55814,7 @@ ol.MapProperty = {
*/
ol.Map = function(options) {
- goog.base(this);
+ ol.Object.call(this);
var optionsInternal = ol.Map.createOptionsInternal(options);
@@ -67243,13 +55894,13 @@ ol.Map = function(options) {
/**
* @private
- * @type {?ol.events.Key}
+ * @type {?ol.EventsKey}
*/
this.viewPropertyListenerKey_ = null;
/**
* @private
- * @type {Array.<ol.events.Key>}
+ * @type {Array.<ol.EventsKey>}
*/
this.layerGroupPropertyListenerKeys_ = null;
@@ -67315,7 +55966,7 @@ ol.Map = function(options) {
/**
* @private
- * @type {Array.<ol.events.Key>}
+ * @type {Array.<ol.EventsKey>}
*/
this.keyHandlerKeys_ = null;
@@ -67481,7 +56132,7 @@ ol.Map = function(options) {
}, this);
};
-goog.inherits(ol.Map, ol.Object);
+ol.inherits(ol.Map, ol.Object);
/**
@@ -67591,7 +56242,7 @@ ol.Map.prototype.disposeInternal = function() {
this.animationDelayKey_ = undefined;
}
this.setTarget(null);
- goog.base(this, 'disposeInternal');
+ ol.Object.prototype.disposeInternal.call(this);
};
@@ -67751,7 +56402,13 @@ ol.Map.prototype.getTarget = function() {
*/
ol.Map.prototype.getTargetElement = function() {
var target = this.getTarget();
- return target !== undefined ? goog.dom.getElement(target) : null;
+ if (target !== undefined) {
+ return typeof target === 'string' ?
+ document.getElementById(target) :
+ target;
+ } else {
+ return null;
+ }
};
@@ -68079,7 +56736,7 @@ ol.Map.prototype.handleTargetChanged_ = function() {
}
if (!targetElement) {
- goog.dom.removeNode(this.viewport_);
+ ol.dom.removeNode(this.viewport_);
if (this.handleResize_ !== undefined) {
ol.global.removeEventListener(ol.events.EventType.RESIZE,
this.handleResize_, false);
@@ -68434,8 +57091,19 @@ ol.Map.prototype.updateSize = function() {
if (!targetElement) {
this.setSize(undefined);
} else {
- var size = goog.style.getContentBoxSize(targetElement);
- this.setSize([size.width, size.height]);
+ var computedStyle = ol.global.getComputedStyle(targetElement);
+ this.setSize([
+ targetElement.offsetWidth -
+ parseFloat(computedStyle['borderLeftWidth']) -
+ parseFloat(computedStyle['paddingLeft']) -
+ parseFloat(computedStyle['paddingRight']) -
+ parseFloat(computedStyle['borderRightWidth']),
+ targetElement.offsetHeight -
+ parseFloat(computedStyle['borderTopWidth']) -
+ parseFloat(computedStyle['paddingTop']) -
+ parseFloat(computedStyle['paddingBottom']) -
+ parseFloat(computedStyle['borderBottomWidth'])
+ ]);
}
};
@@ -68461,8 +57129,6 @@ ol.Map.createOptionsInternal = function(options) {
*/
var keyboardEventTarget = null;
if (options.keyboardEventTarget !== undefined) {
- // cannot use goog.dom.getElement because its argument cannot be
- // of type Document
keyboardEventTarget = typeof options.keyboardEventTarget === 'string' ?
document.getElementById(options.keyboardEventTarget) :
options.keyboardEventTarget;
@@ -68598,12 +57264,9 @@ ol.proj.common.add();
goog.provide('ol.Overlay');
goog.provide('ol.OverlayPositioning');
-goog.provide('ol.OverlayProperty');
goog.require('goog.asserts');
-goog.require('goog.dom');
goog.require('ol.events');
-goog.require('goog.style');
goog.require('ol.Map');
goog.require('ol.MapEventType');
goog.require('ol.Object');
@@ -68629,7 +57292,6 @@ ol.OverlayProperty = {
* `'center-left'`, `'center-center'`, `'center-right'`, `'top-left'`,
* `'top-center'`, `'top-right'`
* @enum {string}
- * @api stable
*/
ol.OverlayPositioning = {
BOTTOM_LEFT: 'bottom-left',
@@ -68667,7 +57329,7 @@ ol.OverlayPositioning = {
*/
ol.Overlay = function(options) {
- goog.base(this);
+ ol.Object.call(this);
/**
* @private
@@ -68734,7 +57396,7 @@ ol.Overlay = function(options) {
/**
* @private
- * @type {?ol.events.Key}
+ * @type {?ol.EventsKey}
*/
this.mapPostrenderListenerKey_ = null;
@@ -68773,7 +57435,7 @@ ol.Overlay = function(options) {
}
};
-goog.inherits(ol.Overlay, ol.Object);
+ol.inherits(ol.Overlay, ol.Object);
/**
@@ -68852,7 +57514,7 @@ ol.Overlay.prototype.getPositioning = function() {
* @protected
*/
ol.Overlay.prototype.handleElementChanged = function() {
- goog.dom.removeChildren(this.element_);
+ ol.dom.removeChildren(this.element_);
var element = this.getElement();
if (element) {
this.element_.appendChild(element);
@@ -68865,7 +57527,7 @@ ol.Overlay.prototype.handleElementChanged = function() {
*/
ol.Overlay.prototype.handleMapChanged = function() {
if (this.mapPostrenderListenerKey_) {
- goog.dom.removeNode(this.element_);
+ ol.dom.removeNode(this.element_);
ol.events.unlistenByKey(this.mapPostrenderListenerKey_);
this.mapPostrenderListenerKey_ = null;
}
@@ -68877,7 +57539,7 @@ ol.Overlay.prototype.handleMapChanged = function() {
var container = this.stopEvent_ ?
map.getOverlayContainerStopEvent() : map.getOverlayContainer();
if (this.insertFirst_) {
- goog.dom.insertChildAt(container, this.element_, 0);
+ container.insertBefore(this.element_, container.childNodes[0] || null);
} else {
container.appendChild(this.element_);
}
@@ -69039,12 +57701,14 @@ ol.Overlay.prototype.getRect_ = function(element, size) {
goog.asserts.assert(element, 'element should be defined');
goog.asserts.assert(size !== undefined, 'size should be defined');
- var offset = goog.style.getPageOffset(element);
+ var box = element.getBoundingClientRect();
+ var offsetX = box.left + ol.global.pageXOffset;
+ var offsetY = box.top + ol.global.pageYOffset;
return [
- offset.x,
- offset.y,
- offset.x + size[0],
- offset.y + size[1]
+ offsetX,
+ offsetY,
+ offsetX + size[0],
+ offsetY + size[1]
];
};
@@ -69068,7 +57732,7 @@ ol.Overlay.prototype.setPositioning = function(positioning) {
*/
ol.Overlay.prototype.setVisible = function(visible) {
if (this.rendered_.visible !== visible) {
- goog.style.setElementShown(this.element_, visible);
+ this.element_.style.display = visible ? '' : 'none';
this.rendered_.visible = visible;
}
};
@@ -69127,7 +57791,7 @@ ol.Overlay.prototype.updateRenderedPosition = function(pixel, mapSize) {
if (positioning == ol.OverlayPositioning.BOTTOM_CENTER ||
positioning == ol.OverlayPositioning.CENTER_CENTER ||
positioning == ol.OverlayPositioning.TOP_CENTER) {
- offsetX -= goog.style.getSize(this.element_).width / 2;
+ offsetX -= this.element_.offsetWidth / 2;
}
var left = Math.round(pixel[0] + offsetX) + 'px';
if (this.rendered_.left_ != left) {
@@ -69151,7 +57815,7 @@ ol.Overlay.prototype.updateRenderedPosition = function(pixel, mapSize) {
if (positioning == ol.OverlayPositioning.CENTER_LEFT ||
positioning == ol.OverlayPositioning.CENTER_CENTER ||
positioning == ol.OverlayPositioning.CENTER_RIGHT) {
- offsetY -= goog.style.getSize(this.element_).height / 2;
+ offsetY -= this.element_.offsetHeight / 2;
}
var top = Math.round(pixel[1] + offsetY) + 'px';
if (this.rendered_.top_ != top) {
@@ -69165,7 +57829,6 @@ ol.Overlay.prototype.updateRenderedPosition = function(pixel, mapSize) {
goog.provide('ol.control.OverviewMap');
goog.require('goog.asserts');
-goog.require('goog.dom');
goog.require('ol.events');
goog.require('ol.events.EventType');
goog.require('ol');
@@ -69181,6 +57844,7 @@ goog.require('ol.ViewProperty');
goog.require('ol.control.Control');
goog.require('ol.coordinate');
goog.require('ol.css');
+goog.require('ol.dom');
goog.require('ol.extent');
@@ -69219,30 +57883,37 @@ ol.control.OverviewMap = function(opt_options) {
var collapseLabel = options.collapseLabel !== undefined ? options.collapseLabel : '\u00AB';
- /**
- * @private
- * @type {Node}
- */
- this.collapseLabel_ = typeof collapseLabel === 'string' ?
- goog.dom.createDom('SPAN', {}, collapseLabel) :
- collapseLabel;
+ if (typeof collapseLabel === 'string') {
+ /**
+ * @private
+ * @type {Node}
+ */
+ this.collapseLabel_ = document.createElement('span');
+ this.collapseLabel_.textContent = collapseLabel;
+ } else {
+ this.collapseLabel_ = collapseLabel;
+ }
var label = options.label !== undefined ? options.label : '\u00BB';
- /**
- * @private
- * @type {Node}
- */
- this.label_ = typeof label === 'string' ?
- goog.dom.createDom('SPAN', {}, label) :
- label;
+
+ if (typeof label === 'string') {
+ /**
+ * @private
+ * @type {Node}
+ */
+ this.label_ = document.createElement('span');
+ this.label_.textContent = label;
+ } else {
+ this.label_ = label;
+ }
var activeLabel = (this.collapsible_ && !this.collapsed_) ?
this.collapseLabel_ : this.label_;
- var button = goog.dom.createDom('BUTTON', {
- 'type': 'button',
- 'title': tipLabel
- }, activeLabel);
+ var button = document.createElement('button');
+ button.setAttribute('type', 'button');
+ button.title = tipLabel;
+ button.appendChild(activeLabel);
ol.events.listen(button, ol.events.EventType.CLICK,
this.handleClick_, this);
@@ -69291,18 +57962,20 @@ ol.control.OverviewMap = function(opt_options) {
ol.css.CLASS_CONTROL +
(this.collapsed_ && this.collapsible_ ? ' ol-collapsed' : '') +
(this.collapsible_ ? '' : ' ol-uncollapsible');
- var element = goog.dom.createDom('DIV',
- cssClasses, ovmapDiv, button);
+ var element = document.createElement('div');
+ element.className = cssClasses;
+ element.appendChild(ovmapDiv);
+ element.appendChild(button);
var render = options.render ? options.render : ol.control.OverviewMap.render;
- goog.base(this, {
+ ol.control.Control.call(this, {
element: element,
render: render,
target: options.target
});
};
-goog.inherits(ol.control.OverviewMap, ol.control.Control);
+ol.inherits(ol.control.OverviewMap, ol.control.Control);
/**
@@ -69320,7 +57993,7 @@ ol.control.OverviewMap.prototype.setMap = function(map) {
this.unbindView_(oldView);
}
}
- goog.base(this, 'setMap', map);
+ ol.control.Control.prototype.setMap.call(this, map);
if (map) {
this.listenerKeys.push(ol.events.listen(
@@ -69609,9 +58282,9 @@ ol.control.OverviewMap.prototype.handleClick_ = function(event) {
ol.control.OverviewMap.prototype.handleToggle_ = function() {
this.element.classList.toggle('ol-collapsed');
if (this.collapsed_) {
- goog.dom.replaceNode(this.collapseLabel_, this.label_);
+ ol.dom.replaceNode(this.collapseLabel_, this.label_);
} else {
- goog.dom.replaceNode(this.label_, this.collapseLabel_);
+ ol.dom.replaceNode(this.label_, this.collapseLabel_);
}
this.collapsed_ = !this.collapsed_;
@@ -69692,12 +58365,9 @@ ol.control.OverviewMap.prototype.getOverviewMap = function() {
};
goog.provide('ol.control.ScaleLine');
-goog.provide('ol.control.ScaleLineProperty');
-goog.provide('ol.control.ScaleLineUnits');
goog.require('goog.asserts');
goog.require('ol.events');
-goog.require('goog.style');
goog.require('ol');
goog.require('ol.Object');
goog.require('ol.control.Control');
@@ -69718,7 +58388,6 @@ ol.control.ScaleLineProperty = {
* Units for the scale line. Supported values are `'degrees'`, `'imperial'`,
* `'nautical'`, `'metric'`, `'us'`.
* @enum {string}
- * @api stable
*/
ol.control.ScaleLineUnits = {
DEGREES: 'degrees',
@@ -69796,7 +58465,7 @@ ol.control.ScaleLine = function(opt_options) {
var render = options.render ? options.render : ol.control.ScaleLine.render;
- goog.base(this, {
+ ol.control.Control.call(this, {
element: this.element_,
render: render,
target: options.target
@@ -69810,7 +58479,7 @@ ol.control.ScaleLine = function(opt_options) {
ol.control.ScaleLineUnits.METRIC);
};
-goog.inherits(ol.control.ScaleLine, ol.control.Control);
+ol.inherits(ol.control.ScaleLine, ol.control.Control);
/**
@@ -69877,7 +58546,7 @@ ol.control.ScaleLine.prototype.updateElement_ = function() {
if (!viewState) {
if (this.renderedVisible_) {
- goog.style.setElementShown(this.element_, false);
+ this.element_.style.display = 'none';
this.renderedVisible_ = false;
}
return;
@@ -69952,7 +58621,7 @@ ol.control.ScaleLine.prototype.updateElement_ = function() {
Math.pow(10, Math.floor(i / 3));
width = Math.round(count / pointResolution);
if (isNaN(width)) {
- goog.style.setElementShown(this.element_, false);
+ this.element_.style.display = 'none';
this.renderedVisible_ = false;
return;
} else if (width >= this.minWidth_) {
@@ -69973,7 +58642,7 @@ ol.control.ScaleLine.prototype.updateElement_ = function() {
}
if (!this.renderedVisible_) {
- goog.style.setElementShown(this.element_, true);
+ this.element_.style.display = '';
this.renderedVisible_ = true;
}
@@ -69984,8 +58653,6 @@ ol.control.ScaleLine.prototype.updateElement_ = function() {
goog.provide('ol.control.ZoomSlider');
goog.require('goog.asserts');
-goog.require('goog.dom');
-goog.require('goog.style');
goog.require('ol.events');
goog.require('ol.events.Event');
goog.require('ol.events.EventType');
@@ -70039,7 +58706,7 @@ ol.control.ZoomSlider = function(opt_options) {
this.dragging_;
/**
- * @type {!Array.<ol.events.Key>}
+ * @type {!Array.<ol.EventsKey>}
* @private
*/
this.dragListenerKeys_ = [];
@@ -70090,14 +58757,12 @@ ol.control.ZoomSlider = function(opt_options) {
this.duration_ = options.duration !== undefined ? options.duration : 200;
var className = options.className !== undefined ? options.className : 'ol-zoomslider';
- var thumbElement = goog.dom.createDom('BUTTON', {
- 'type': 'button',
- 'class': className + '-thumb ' + ol.css.CLASS_UNSELECTABLE
- });
- var containerElement = goog.dom.createDom('DIV',
- [className, ol.css.CLASS_UNSELECTABLE, ol.css.CLASS_CONTROL],
- thumbElement);
-
+ var thumbElement = document.createElement('button');
+ thumbElement.setAttribute('type', 'button');
+ thumbElement.className = className + '-thumb ' + ol.css.CLASS_UNSELECTABLE;
+ var containerElement = document.createElement('div');
+ containerElement.className = className + ' ' + ol.css.CLASS_UNSELECTABLE + ' ' + ol.css.CLASS_CONTROL;
+ containerElement.appendChild(thumbElement);
/**
* @type {ol.pointer.PointerEventHandler}
* @private
@@ -70118,12 +58783,12 @@ ol.control.ZoomSlider = function(opt_options) {
var render = options.render ? options.render : ol.control.ZoomSlider.render;
- goog.base(this, {
+ ol.control.Control.call(this, {
element: containerElement,
render: render
});
};
-goog.inherits(ol.control.ZoomSlider, ol.control.Control);
+ol.inherits(ol.control.ZoomSlider, ol.control.Control);
/**
@@ -70131,7 +58796,7 @@ goog.inherits(ol.control.ZoomSlider, ol.control.Control);
*/
ol.control.ZoomSlider.prototype.disposeInternal = function() {
this.dragger_.dispose();
- goog.base(this, 'disposeInternal');
+ ol.control.Control.prototype.disposeInternal.call(this);
};
@@ -70150,7 +58815,7 @@ ol.control.ZoomSlider.direction = {
* @inheritDoc
*/
ol.control.ZoomSlider.prototype.setMap = function(map) {
- goog.base(this, 'setMap', map);
+ ol.control.Control.prototype.setMap.call(this, map);
if (map) {
map.render();
}
@@ -70166,15 +58831,18 @@ ol.control.ZoomSlider.prototype.setMap = function(map) {
*/
ol.control.ZoomSlider.prototype.initSlider_ = function() {
var container = this.element;
- var containerSize = goog.style.getSize(container);
+ var containerSize = {
+ width: container.offsetWidth, height: container.offsetHeight
+ };
var thumb = container.firstElementChild;
- var thumbMargins = goog.style.getMarginBox(thumb);
- var thumbBorderBoxSize = goog.style.getBorderBoxSize(thumb);
- var thumbWidth = thumbBorderBoxSize.width +
- thumbMargins.right + thumbMargins.left;
- var thumbHeight = thumbBorderBoxSize.height +
- thumbMargins.top + thumbMargins.bottom;
+ var computedStyle = ol.global.getComputedStyle(thumb);
+ var thumbWidth = thumb.offsetWidth +
+ parseFloat(computedStyle['marginRight']) +
+ parseFloat(computedStyle['marginLeft']);
+ var thumbHeight = thumb.offsetHeight +
+ parseFloat(computedStyle['marginTop']) +
+ parseFloat(computedStyle['marginBottom']);
this.thumbSize_ = [thumbWidth, thumbHeight];
if (containerSize.width > containerSize.height) {
@@ -70382,7 +59050,6 @@ ol.control.ZoomSlider.prototype.getPositionForResolution_ = function(res) {
goog.provide('ol.control.ZoomToExtent');
goog.require('goog.asserts');
-goog.require('goog.dom');
goog.require('ol.events');
goog.require('ol.events.EventType');
goog.require('ol.control.Control');
@@ -70414,24 +59081,28 @@ ol.control.ZoomToExtent = function(opt_options) {
var label = options.label !== undefined ? options.label : 'E';
var tipLabel = options.tipLabel !== undefined ?
options.tipLabel : 'Fit to extent';
- var button = goog.dom.createDom('BUTTON', {
- 'type': 'button',
- 'title': tipLabel
- }, label);
+ var button = document.createElement('button');
+ button.setAttribute('type', 'button');
+ button.title = tipLabel;
+ button.appendChild(
+ typeof label === 'string' ? document.createTextNode(label) : label
+ );
ol.events.listen(button, ol.events.EventType.CLICK,
this.handleClick_, this);
var cssClasses = className + ' ' + ol.css.CLASS_UNSELECTABLE + ' ' +
ol.css.CLASS_CONTROL;
- var element = goog.dom.createDom('DIV', cssClasses, button);
+ var element = document.createElement('div');
+ element.className = cssClasses;
+ element.appendChild(button);
- goog.base(this, {
+ ol.control.Control.call(this, {
element: element,
target: options.target
});
};
-goog.inherits(ol.control.ZoomToExtent, ol.control.Control);
+ol.inherits(ol.control.ZoomToExtent, ol.control.Control);
/**
@@ -70457,7 +59128,6 @@ ol.control.ZoomToExtent.prototype.handleZoomToExtent_ = function() {
};
goog.provide('ol.DeviceOrientation');
-goog.provide('ol.DeviceOrientationProperty');
goog.require('ol.events');
goog.require('ol');
@@ -70535,13 +59205,13 @@ ol.DeviceOrientationProperty = {
*/
ol.DeviceOrientation = function(opt_options) {
- goog.base(this);
+ ol.Object.call(this);
var options = opt_options ? opt_options : {};
/**
* @private
- * @type {?ol.events.Key}
+ * @type {?ol.EventsKey}
*/
this.listenerKey_ = null;
@@ -70552,7 +59222,7 @@ ol.DeviceOrientation = function(opt_options) {
this.setTracking(options.tracking !== undefined ? options.tracking : false);
};
-goog.inherits(ol.DeviceOrientation, ol.Object);
+ol.inherits(ol.DeviceOrientation, ol.Object);
/**
@@ -70560,7 +59230,7 @@ goog.inherits(ol.DeviceOrientation, ol.Object);
*/
ol.DeviceOrientation.prototype.disposeInternal = function() {
this.setTracking(false);
- goog.base(this, 'disposeInternal');
+ ol.Object.prototype.disposeInternal.call(this);
};
@@ -70916,9 +59586,9 @@ goog.require('ol.format.FormatType');
* @extends {ol.format.Feature}
*/
ol.format.JSONFeature = function() {
- goog.base(this);
+ ol.format.Feature.call(this);
};
-goog.inherits(ol.format.JSONFeature, ol.format.Feature);
+ol.inherits(ol.format.JSONFeature, ol.format.Feature);
/**
@@ -71330,7 +60000,7 @@ goog.require('ol.geom.flat.simplify');
*/
ol.geom.LineString = function(coordinates, opt_layout) {
- goog.base(this);
+ ol.geom.SimpleGeometry.call(this);
/**
* @private
@@ -71359,7 +60029,7 @@ ol.geom.LineString = function(coordinates, opt_layout) {
this.setCoordinates(coordinates, opt_layout);
};
-goog.inherits(ol.geom.LineString, ol.geom.SimpleGeometry);
+ol.inherits(ol.geom.LineString, ol.geom.SimpleGeometry);
/**
@@ -71600,7 +60270,7 @@ goog.require('ol.geom.flat.simplify');
*/
ol.geom.MultiLineString = function(coordinates, opt_layout) {
- goog.base(this);
+ ol.geom.SimpleGeometry.call(this);
/**
* @type {Array.<number>}
@@ -71623,7 +60293,7 @@ ol.geom.MultiLineString = function(coordinates, opt_layout) {
this.setCoordinates(coordinates, opt_layout);
};
-goog.inherits(ol.geom.MultiLineString, ol.geom.SimpleGeometry);
+ol.inherits(ol.geom.MultiLineString, ol.geom.SimpleGeometry);
/**
@@ -71922,10 +60592,10 @@ goog.require('ol.math');
* @api stable
*/
ol.geom.MultiPoint = function(coordinates, opt_layout) {
- goog.base(this);
+ ol.geom.SimpleGeometry.call(this);
this.setCoordinates(coordinates, opt_layout);
};
-goog.inherits(ol.geom.MultiPoint, ol.geom.SimpleGeometry);
+ol.inherits(ol.geom.MultiPoint, ol.geom.SimpleGeometry);
/**
@@ -72155,7 +60825,7 @@ goog.require('ol.geom.flat.simplify');
*/
ol.geom.MultiPolygon = function(coordinates, opt_layout) {
- goog.base(this);
+ ol.geom.SimpleGeometry.call(this);
/**
* @type {Array.<Array.<number>>}
@@ -72202,7 +60872,7 @@ ol.geom.MultiPolygon = function(coordinates, opt_layout) {
this.setCoordinates(coordinates, opt_layout);
};
-goog.inherits(ol.geom.MultiPolygon, ol.geom.SimpleGeometry);
+ol.inherits(ol.geom.MultiPolygon, ol.geom.SimpleGeometry);
/**
@@ -72591,7 +61261,7 @@ ol.format.EsriJSON = function(opt_options) {
var options = opt_options ? opt_options : {};
- goog.base(this);
+ ol.format.JSONFeature.call(this);
/**
* Name of the geometry attribute for features.
@@ -72601,7 +61271,7 @@ ol.format.EsriJSON = function(opt_options) {
this.geometryName_ = options.geometryName;
};
-goog.inherits(ol.format.EsriJSON, ol.format.JSONFeature);
+ol.inherits(ol.format.EsriJSON, ol.format.JSONFeature);
/**
@@ -73277,7 +61947,7 @@ goog.require('ol.object');
*/
ol.geom.GeometryCollection = function(opt_geometries) {
- goog.base(this);
+ ol.geom.Geometry.call(this);
/**
* @private
@@ -73287,7 +61957,7 @@ ol.geom.GeometryCollection = function(opt_geometries) {
this.listenGeometriesChange_();
};
-goog.inherits(ol.geom.GeometryCollection, ol.geom.Geometry);
+ol.inherits(ol.geom.GeometryCollection, ol.geom.Geometry);
/**
@@ -73559,7 +62229,7 @@ ol.geom.GeometryCollection.prototype.translate = function(deltaX, deltaY) {
*/
ol.geom.GeometryCollection.prototype.disposeInternal = function() {
this.unlistenGeometriesChange_();
- goog.base(this, 'disposeInternal');
+ ol.geom.Geometry.prototype.disposeInternal.call(this);
};
// TODO: serialize dataProjection as crs member when writing
@@ -73595,7 +62265,7 @@ ol.format.GeoJSON = function(opt_options) {
var options = opt_options ? opt_options : {};
- goog.base(this);
+ ol.format.JSONFeature.call(this);
/**
* @inheritDoc
@@ -73613,7 +62283,7 @@ ol.format.GeoJSON = function(opt_options) {
this.geometryName_ = options.geometryName;
};
-goog.inherits(ol.format.GeoJSON, ol.format.JSONFeature);
+ol.inherits(ol.format.GeoJSON, ol.format.JSONFeature);
/**
@@ -74178,7 +62848,6 @@ ol.format.GeoJSON.prototype.writeGeometryObject = function(geometry,
goog.provide('ol.format.XMLFeature');
goog.require('goog.asserts');
-goog.require('goog.dom.NodeType');
goog.require('ol.array');
goog.require('ol.format.Feature');
goog.require('ol.format.FormatType');
@@ -74203,9 +62872,9 @@ ol.format.XMLFeature = function() {
*/
this.xmlSerializer_ = new XMLSerializer();
- goog.base(this);
+ ol.format.Feature.call(this);
};
-goog.inherits(ol.format.XMLFeature, ol.format.Feature);
+ol.inherits(ol.format.XMLFeature, ol.format.Feature);
/**
@@ -74290,7 +62959,7 @@ ol.format.XMLFeature.prototype.readFeaturesFromDocument = function(
var features = [];
var n;
for (n = doc.firstChild; n; n = n.nextSibling) {
- if (n.nodeType == goog.dom.NodeType.ELEMENT) {
+ if (n.nodeType == Node.ELEMENT_NODE) {
ol.array.extend(features, this.readFeaturesFromNode(n, opt_options));
}
}
@@ -74387,7 +63056,7 @@ ol.format.XMLFeature.prototype.readProjectionFromNode = function(node) {
*/
ol.format.XMLFeature.prototype.writeFeature = function(feature, opt_options) {
var node = this.writeFeatureNode(feature, opt_options);
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
return this.xmlSerializer_.serializeToString(node);
};
@@ -74407,7 +63076,7 @@ ol.format.XMLFeature.prototype.writeFeatureNode = goog.abstractMethod;
*/
ol.format.XMLFeature.prototype.writeFeatures = function(features, opt_options) {
var node = this.writeFeaturesNode(features, opt_options);
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
return this.xmlSerializer_.serializeToString(node);
};
@@ -74426,7 +63095,7 @@ ol.format.XMLFeature.prototype.writeFeaturesNode = goog.abstractMethod;
*/
ol.format.XMLFeature.prototype.writeGeometry = function(geometry, opt_options) {
var node = this.writeGeometryNode(geometry, opt_options);
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
return this.xmlSerializer_.serializeToString(node);
};
@@ -74445,7 +63114,6 @@ ol.format.XMLFeature.prototype.writeGeometryNode = goog.abstractMethod;
goog.provide('ol.format.GMLBase');
goog.require('goog.asserts');
-goog.require('goog.dom.NodeType');
goog.require('ol.array');
goog.require('ol.Feature');
goog.require('ol.format.Feature');
@@ -74517,9 +63185,9 @@ ol.format.GMLBase = function(opt_options) {
ol.format.GMLBase.prototype.readFeaturesInternal)
};
- goog.base(this);
+ ol.format.XMLFeature.call(this);
};
-goog.inherits(ol.format.GMLBase, ol.format.XMLFeature);
+ol.inherits(ol.format.GMLBase, ol.format.XMLFeature);
/**
@@ -74550,7 +63218,7 @@ ol.format.GMLBase.ONLY_WHITESPACE_RE_ = /^[\s\xa0]*$/;
* @return {Array.<ol.Feature> | undefined} Features.
*/
ol.format.GMLBase.prototype.readFeaturesInternal = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
var localName = node.localName;
var features = null;
@@ -74704,7 +63372,7 @@ ol.format.GMLBase.prototype.readFeatureElement = function(node, objectStack) {
* @return {ol.geom.Point|undefined} Point.
*/
ol.format.GMLBase.prototype.readPoint = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'Point', 'localName should be Point');
var flatCoordinates =
@@ -74725,7 +63393,7 @@ ol.format.GMLBase.prototype.readPoint = function(node, objectStack) {
* @return {ol.geom.MultiPoint|undefined} MultiPoint.
*/
ol.format.GMLBase.prototype.readMultiPoint = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'MultiPoint',
'localName should be MultiPoint');
@@ -74746,7 +63414,7 @@ ol.format.GMLBase.prototype.readMultiPoint = function(node, objectStack) {
* @return {ol.geom.MultiLineString|undefined} MultiLineString.
*/
ol.format.GMLBase.prototype.readMultiLineString = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'MultiLineString',
'localName should be MultiLineString');
@@ -74769,7 +63437,7 @@ ol.format.GMLBase.prototype.readMultiLineString = function(node, objectStack) {
* @return {ol.geom.MultiPolygon|undefined} MultiPolygon.
*/
ol.format.GMLBase.prototype.readMultiPolygon = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'MultiPolygon',
'localName should be MultiPolygon');
@@ -74792,7 +63460,7 @@ ol.format.GMLBase.prototype.readMultiPolygon = function(node, objectStack) {
* @private
*/
ol.format.GMLBase.prototype.pointMemberParser_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'pointMember' ||
node.localName == 'pointMembers',
@@ -74808,7 +63476,7 @@ ol.format.GMLBase.prototype.pointMemberParser_ = function(node, objectStack) {
* @private
*/
ol.format.GMLBase.prototype.lineStringMemberParser_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'lineStringMember' ||
node.localName == 'lineStringMembers',
@@ -74824,7 +63492,7 @@ ol.format.GMLBase.prototype.lineStringMemberParser_ = function(node, objectStack
* @private
*/
ol.format.GMLBase.prototype.polygonMemberParser_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'polygonMember' ||
node.localName == 'polygonMembers',
@@ -74840,7 +63508,7 @@ ol.format.GMLBase.prototype.polygonMemberParser_ = function(node, objectStack) {
* @return {ol.geom.LineString|undefined} LineString.
*/
ol.format.GMLBase.prototype.readLineString = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'LineString',
'localName should be LineString');
@@ -74863,7 +63531,7 @@ ol.format.GMLBase.prototype.readLineString = function(node, objectStack) {
* @return {Array.<number>|undefined} LinearRing flat coordinates.
*/
ol.format.GMLBase.prototype.readFlatLinearRing_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'LinearRing',
'localName should be LinearRing');
@@ -74884,7 +63552,7 @@ ol.format.GMLBase.prototype.readFlatLinearRing_ = function(node, objectStack) {
* @return {ol.geom.LinearRing|undefined} LinearRing.
*/
ol.format.GMLBase.prototype.readLinearRing = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'LinearRing',
'localName should be LinearRing');
@@ -74906,7 +63574,7 @@ ol.format.GMLBase.prototype.readLinearRing = function(node, objectStack) {
* @return {ol.geom.Polygon|undefined} Polygon.
*/
ol.format.GMLBase.prototype.readPolygon = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'Polygon',
'localName should be Polygon');
@@ -74938,7 +63606,7 @@ ol.format.GMLBase.prototype.readPolygon = function(node, objectStack) {
* @return {Array.<number>} Flat coordinates.
*/
ol.format.GMLBase.prototype.readFlatCoordinatesFromNode_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
return ol.xml.pushParseAndPop(null,
this.GEOMETRY_FLAT_COORDINATES_PARSERS_, node,
@@ -75276,7 +63944,6 @@ ol.format.XSD.writeStringTextNode = function(node, string) {
goog.provide('ol.format.GML2');
goog.require('goog.asserts');
-goog.require('goog.dom.NodeType');
goog.require('ol.extent');
goog.require('ol.format.GMLBase');
goog.require('ol.format.XSD');
@@ -75298,7 +63965,7 @@ ol.format.GML2 = function(opt_options) {
var options = /** @type {olx.format.GMLOptions} */
(opt_options ? opt_options : {});
- goog.base(this, options);
+ ol.format.GMLBase.call(this, options);
this.FEATURE_COLLECTION_PARSERS[ol.format.GMLBase.GMLNS][
'featureMember'] =
@@ -75311,7 +63978,7 @@ ol.format.GML2 = function(opt_options) {
options.schemaLocation : ol.format.GML2.schemaLocation_;
};
-goog.inherits(ol.format.GML2, ol.format.GMLBase);
+ol.inherits(ol.format.GML2, ol.format.GMLBase);
/**
@@ -75331,7 +63998,7 @@ ol.format.GML2.schemaLocation_ = ol.format.GMLBase.GMLNS +
*/
ol.format.GML2.prototype.readFlatCoordinates_ = function(node, objectStack) {
var s = ol.xml.getAllTextContent(node, false).replace(/^\s*|\s*$/g, '');
- var context = objectStack[0];
+ var context = /** @type {ol.XmlNodeStackItem} */ (objectStack[0]);
goog.asserts.assert(goog.isObject(context), 'context should be an Object');
var containerSrs = context['srsName'];
var containerDimension = node.parentNode.getAttribute('srsDimension');
@@ -75377,7 +64044,7 @@ ol.format.GML2.prototype.readFlatCoordinates_ = function(node, objectStack) {
* @return {ol.Extent|undefined} Envelope.
*/
ol.format.GML2.prototype.readBox_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'Box', 'localName should be Box');
/** @type {Array.<number>} */
@@ -75395,7 +64062,7 @@ ol.format.GML2.prototype.readBox_ = function(node, objectStack) {
* @private
*/
ol.format.GML2.prototype.innerBoundaryIsParser_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'innerBoundaryIs',
'localName should be innerBoundaryIs');
@@ -75420,7 +64087,7 @@ ol.format.GML2.prototype.innerBoundaryIsParser_ = function(node, objectStack) {
* @private
*/
ol.format.GML2.prototype.outerBoundaryIsParser_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'outerBoundaryIs',
'localName should be outerBoundaryIs');
@@ -75505,7 +64172,6 @@ goog.provide('ol.format.GML');
goog.provide('ol.format.GML3');
goog.require('goog.asserts');
-goog.require('goog.dom.NodeType');
goog.require('ol');
goog.require('ol.array');
goog.require('ol.Feature');
@@ -75542,7 +64208,7 @@ ol.format.GML3 = function(opt_options) {
var options = /** @type {olx.format.GMLOptions} */
(opt_options ? opt_options : {});
- goog.base(this, options);
+ ol.format.GMLBase.call(this, options);
/**
* @private
@@ -75577,7 +64243,7 @@ ol.format.GML3 = function(opt_options) {
options.schemaLocation : ol.format.GML3.schemaLocation_;
};
-goog.inherits(ol.format.GML3, ol.format.GMLBase);
+ol.inherits(ol.format.GML3, ol.format.GMLBase);
/**
@@ -75597,7 +64263,7 @@ ol.format.GML3.schemaLocation_ = ol.format.GMLBase.GMLNS +
* @return {ol.geom.MultiLineString|undefined} MultiLineString.
*/
ol.format.GML3.prototype.readMultiCurve_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'MultiCurve',
'localName should be MultiCurve');
@@ -75621,7 +64287,7 @@ ol.format.GML3.prototype.readMultiCurve_ = function(node, objectStack) {
* @return {ol.geom.MultiPolygon|undefined} MultiPolygon.
*/
ol.format.GML3.prototype.readMultiSurface_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'MultiSurface',
'localName should be MultiSurface');
@@ -75644,7 +64310,7 @@ ol.format.GML3.prototype.readMultiSurface_ = function(node, objectStack) {
* @private
*/
ol.format.GML3.prototype.curveMemberParser_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'curveMember' ||
node.localName == 'curveMembers',
@@ -75659,7 +64325,7 @@ ol.format.GML3.prototype.curveMemberParser_ = function(node, objectStack) {
* @private
*/
ol.format.GML3.prototype.surfaceMemberParser_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'surfaceMember' ||
node.localName == 'surfaceMembers',
@@ -75676,7 +64342,7 @@ ol.format.GML3.prototype.surfaceMemberParser_ = function(node, objectStack) {
* @return {Array.<(Array.<number>)>|undefined} flat coordinates.
*/
ol.format.GML3.prototype.readPatch_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'patches',
'localName should be patches');
@@ -75692,7 +64358,7 @@ ol.format.GML3.prototype.readPatch_ = function(node, objectStack) {
* @return {Array.<number>|undefined} flat coordinates.
*/
ol.format.GML3.prototype.readSegment_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'segments',
'localName should be segments');
@@ -75708,7 +64374,7 @@ ol.format.GML3.prototype.readSegment_ = function(node, objectStack) {
* @return {Array.<(Array.<number>)>|undefined} flat coordinates.
*/
ol.format.GML3.prototype.readPolygonPatch_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'npde.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'PolygonPatch',
'localName should be PolygonPatch');
@@ -75724,7 +64390,7 @@ ol.format.GML3.prototype.readPolygonPatch_ = function(node, objectStack) {
* @return {Array.<number>|undefined} flat coordinates.
*/
ol.format.GML3.prototype.readLineStringSegment_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'LineStringSegment',
'localName should be LineStringSegment');
@@ -75740,7 +64406,7 @@ ol.format.GML3.prototype.readLineStringSegment_ = function(node, objectStack) {
* @private
*/
ol.format.GML3.prototype.interiorParser_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'interior',
'localName should be interior');
@@ -75765,7 +64431,7 @@ ol.format.GML3.prototype.interiorParser_ = function(node, objectStack) {
* @private
*/
ol.format.GML3.prototype.exteriorParser_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'exterior',
'localName should be exterior');
@@ -75791,7 +64457,7 @@ ol.format.GML3.prototype.exteriorParser_ = function(node, objectStack) {
* @return {ol.geom.Polygon|undefined} Polygon.
*/
ol.format.GML3.prototype.readSurface_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'Surface',
'localName should be Surface');
@@ -75823,7 +64489,7 @@ ol.format.GML3.prototype.readSurface_ = function(node, objectStack) {
* @return {ol.geom.LineString|undefined} LineString.
*/
ol.format.GML3.prototype.readCurve_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'Curve', 'localName should be Curve');
/** @type {Array.<number>} */
@@ -75846,7 +64512,7 @@ ol.format.GML3.prototype.readCurve_ = function(node, objectStack) {
* @return {ol.Extent|undefined} Envelope.
*/
ol.format.GML3.prototype.readEnvelope_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'Envelope',
'localName should be Envelope');
@@ -76863,7 +65529,6 @@ ol.format.GML.prototype.writeFeaturesNode;
goog.provide('ol.format.GPX');
goog.require('goog.asserts');
-goog.require('goog.dom.NodeType');
goog.require('ol.Feature');
goog.require('ol.array');
goog.require('ol.format.Feature');
@@ -76890,7 +65555,7 @@ ol.format.GPX = function(opt_options) {
var options = opt_options ? opt_options : {};
- goog.base(this);
+ ol.format.XMLFeature.call(this);
/**
* @inheritDoc
@@ -76903,7 +65568,7 @@ ol.format.GPX = function(opt_options) {
*/
this.readExtensions_ = options.readExtensions;
};
-goog.inherits(ol.format.GPX, ol.format.XMLFeature);
+ol.inherits(ol.format.GPX, ol.format.XMLFeature);
/**
@@ -76919,6 +65584,15 @@ ol.format.GPX.NAMESPACE_URIS_ = [
/**
+ * @const
+ * @type {string}
+ * @private
+ */
+ol.format.GPX.SCHEMA_LOCATION_ = 'http://www.topografix.com/GPX/1/1 ' +
+ 'http://www.topografix.com/GPX/1/1/gpx.xsd';
+
+
+/**
* @param {Array.<number>} flatCoordinates Flat coordinates.
* @param {Node} node Node.
* @param {Object} values Values.
@@ -76926,7 +65600,7 @@ ol.format.GPX.NAMESPACE_URIS_ = [
* @return {Array.<number>} Flat coordinates.
*/
ol.format.GPX.appendCoordinate_ = function(flatCoordinates, node, values) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
flatCoordinates.push(
parseFloat(node.getAttribute('lon')),
@@ -76953,7 +65627,7 @@ ol.format.GPX.appendCoordinate_ = function(flatCoordinates, node, values) {
* @private
*/
ol.format.GPX.parseLink_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'link', 'localName should be link');
var values = /** @type {Object} */ (objectStack[objectStack.length - 1]);
@@ -76971,7 +65645,7 @@ ol.format.GPX.parseLink_ = function(node, objectStack) {
* @private
*/
ol.format.GPX.parseExtensions_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'extensions',
'localName should be extensions');
@@ -76986,7 +65660,7 @@ ol.format.GPX.parseExtensions_ = function(node, objectStack) {
* @private
*/
ol.format.GPX.parseRtePt_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'rtept', 'localName should be rtept');
var values = ol.xml.pushParseAndPop(
@@ -77006,7 +65680,7 @@ ol.format.GPX.parseRtePt_ = function(node, objectStack) {
* @private
*/
ol.format.GPX.parseTrkPt_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'trkpt', 'localName should be trkpt');
var values = ol.xml.pushParseAndPop(
@@ -77026,7 +65700,7 @@ ol.format.GPX.parseTrkPt_ = function(node, objectStack) {
* @private
*/
ol.format.GPX.parseTrkSeg_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'trkseg',
'localName should be trkseg');
@@ -77046,7 +65720,7 @@ ol.format.GPX.parseTrkSeg_ = function(node, objectStack) {
* @return {ol.Feature|undefined} Track.
*/
ol.format.GPX.readRte_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'rte', 'localName should be rte');
var options = /** @type {olx.format.ReadOptions} */ (objectStack[0]);
@@ -77075,7 +65749,7 @@ ol.format.GPX.readRte_ = function(node, objectStack) {
* @return {ol.Feature|undefined} Track.
*/
ol.format.GPX.readTrk_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'trk', 'localName should be trk');
var options = /** @type {olx.format.ReadOptions} */ (objectStack[0]);
@@ -77108,7 +65782,7 @@ ol.format.GPX.readTrk_ = function(node, objectStack) {
* @return {ol.Feature|undefined} Waypoint.
*/
ol.format.GPX.readWpt_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'wpt', 'localName should be wpt');
var options = /** @type {olx.format.ReadOptions} */ (objectStack[0]);
@@ -77294,6 +65968,8 @@ ol.format.GPX.prototype.handleReadExtensions_ = function(features) {
/**
* Read the first feature from a GPX source.
+ * Routes (`<rte>`) are converted into LineString geometries, and tracks (`<trk>`)
+ * into MultiLineString. Any properties on route and track waypoints are ignored.
*
* @function
* @param {Document|Node|Object|string} source Source.
@@ -77308,7 +65984,7 @@ ol.format.GPX.prototype.readFeature;
* @inheritDoc
*/
ol.format.GPX.prototype.readFeatureFromNode = function(node, opt_options) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
if (!ol.array.includes(ol.format.GPX.NAMESPACE_URIS_, node.namespaceURI)) {
return null;
@@ -77328,6 +66004,8 @@ ol.format.GPX.prototype.readFeatureFromNode = function(node, opt_options) {
/**
* Read all features from a GPX source.
+ * Routes (`<rte>`) are converted into LineString geometries, and tracks (`<trk>`)
+ * into MultiLineString. Any properties on route and track waypoints are ignored.
*
* @function
* @param {Document|Node|Object|string} source Source.
@@ -77342,7 +66020,7 @@ ol.format.GPX.prototype.readFeatures;
* @inheritDoc
*/
ol.format.GPX.prototype.readFeaturesFromNode = function(node, opt_options) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
if (!ol.array.includes(ol.format.GPX.NAMESPACE_URIS_, node.namespaceURI)) {
return [];
@@ -77431,7 +66109,9 @@ ol.format.GPX.writeWptType_ = function(node, coordinate, objectStack) {
default:
// pass
}
- var orderedKeys = ol.format.GPX.WPT_TYPE_SEQUENCE_[namespaceURI];
+ var orderedKeys = (node.nodeName == 'rtept') ?
+ ol.format.GPX.RTEPT_TYPE_SEQUENCE_[namespaceURI] :
+ ol.format.GPX.WPT_TYPE_SEQUENCE_[namespaceURI];
var values = ol.xml.makeSequence(properties, orderedKeys);
ol.xml.pushSerializeAndPop(/** @type {ol.XmlNodeStackItem} */
({node: node, 'properties': properties}),
@@ -77590,6 +66270,17 @@ ol.format.GPX.RTE_SERIALIZERS_ = ol.xml.makeStructureNS(
* @type {Object.<string, Array.<string>>}
* @private
*/
+ol.format.GPX.RTEPT_TYPE_SEQUENCE_ = ol.xml.makeStructureNS(
+ ol.format.GPX.NAMESPACE_URIS_, [
+ 'ele', 'time'
+ ]);
+
+
+/**
+ * @const
+ * @type {Object.<string, Array.<string>>}
+ * @private
+ */
ol.format.GPX.TRK_SEQUENCE_ = ol.xml.makeStructureNS(
ol.format.GPX.NAMESPACE_URIS_, [
'name', 'cmt', 'desc', 'src', 'link', 'number', 'type', 'trkseg'
@@ -77756,6 +66447,13 @@ ol.format.GPX.prototype.writeFeaturesNode = function(features, opt_options) {
opt_options = this.adaptOptions(opt_options);
//FIXME Serialize metadata
var gpx = ol.xml.createElementNS('http://www.topografix.com/GPX/1/1', 'gpx');
+ var xmlnsUri = 'http://www.w3.org/2000/xmlns/';
+ var xmlSchemaInstanceUri = 'http://www.w3.org/2001/XMLSchema-instance';
+ ol.xml.setAttributeNS(gpx, xmlnsUri, 'xmlns:xsi', xmlSchemaInstanceUri);
+ ol.xml.setAttributeNS(gpx, xmlSchemaInstanceUri, 'xsi:schemaLocation',
+ ol.format.GPX.SCHEMA_LOCATION_);
+ gpx.setAttribute('version', '1.1');
+ gpx.setAttribute('creator', 'OpenLayers 3');
ol.xml.pushSerializeAndPop(/** @type {ol.XmlNodeStackItem} */
({node: gpx}), ol.format.GPX.GPX_SERIALIZERS_,
@@ -77780,9 +66478,9 @@ goog.require('ol.format.FormatType');
* @extends {ol.format.Feature}
*/
ol.format.TextFeature = function() {
- goog.base(this);
+ ol.format.Feature.call(this);
};
-goog.inherits(ol.format.TextFeature, ol.format.Feature);
+ol.inherits(ol.format.TextFeature, ol.format.Feature);
/**
@@ -77933,7 +66631,6 @@ ol.format.TextFeature.prototype.writeGeometry = function(
ol.format.TextFeature.prototype.writeGeometryText = goog.abstractMethod;
goog.provide('ol.format.IGC');
-goog.provide('ol.format.IGCZ');
goog.require('goog.asserts');
goog.require('ol.Feature');
@@ -77947,7 +66644,6 @@ goog.require('ol.proj');
/**
* IGC altitude/z. One of 'barometric', 'gps', 'none'.
* @enum {string}
- * @api
*/
ol.format.IGCZ = {
BAROMETRIC: 'barometric',
@@ -77969,7 +66665,7 @@ ol.format.IGC = function(opt_options) {
var options = opt_options ? opt_options : {};
- goog.base(this);
+ ol.format.TextFeature.call(this);
/**
* @inheritDoc
@@ -77984,7 +66680,7 @@ ol.format.IGC = function(opt_options) {
options.altitudeMode : ol.format.IGCZ.NONE;
};
-goog.inherits(ol.format.IGC, ol.format.TextFeature);
+ol.inherits(ol.format.IGC, ol.format.TextFeature);
/**
@@ -78062,6 +66758,7 @@ ol.format.IGC.prototype.readFeatureFromText = function(text, opt_options) {
var year = 2000;
var month = 0;
var day = 1;
+ var lastDateTime = -1;
var i, ii;
for (i = 0, ii = lines.length; i < ii; ++i) {
var line = lines[i];
@@ -78094,7 +66791,12 @@ ol.format.IGC.prototype.readFeatureFromText = function(text, opt_options) {
flatCoordinates.push(z);
}
var dateTime = Date.UTC(year, month, day, hour, minute, second);
+ // Detect UTC midnight wrap around.
+ if (dateTime < lastDateTime) {
+ dateTime = Date.UTC(year, month, day + 1, hour, minute, second);
+ }
flatCoordinates.push(dateTime / 1000);
+ lastDateTime = dateTime;
}
} else if (line.charAt(0) == 'H') {
m = ol.format.IGC.HFDTE_RECORD_RE_.exec(line);
@@ -80026,7 +68728,7 @@ goog.structs.Map.prototype.remove = function(key) {
this.count_--;
this.version_++;
- // clean up the keys array if the threshhold is hit
+ // clean up the keys array if the threshold is hit
if (this.keys_.length > 2 * this.count_) {
this.cleanupKeysArray_();
}
@@ -81475,7 +70177,7 @@ goog.Uri = function(opt_uri, opt_ignoreCase) {
this.ignoreCase_ = !!opt_ignoreCase;
// Set the parts -- decoding as we do so.
- // COMPATABILITY NOTE - In IE, unmatched fields may be empty strings,
+ // COMPATIBILITY NOTE - In IE, unmatched fields may be empty strings,
// whereas in other browsers they will be undefined.
this.setScheme(m[goog.uri.utils.ComponentIndex.SCHEME] || '', true);
this.setUserInfo(m[goog.uri.utils.ComponentIndex.USER_INFO] || '', true);
@@ -83165,7 +71867,6 @@ goog.provide('ol.format.KML');
goog.require('goog.Uri');
goog.require('goog.asserts');
-goog.require('goog.dom.NodeType');
goog.require('goog.object');
goog.require('ol');
goog.require('ol.Feature');
@@ -83212,7 +71913,7 @@ ol.format.KML = function(opt_options) {
var options = opt_options ? opt_options : {};
- goog.base(this);
+ ol.format.XMLFeature.call(this);
/**
* @inheritDoc
@@ -83254,7 +71955,7 @@ ol.format.KML = function(opt_options) {
options.showPointNames : true;
};
-goog.inherits(ol.format.KML, ol.format.XMLFeature);
+ol.inherits(ol.format.KML, ol.format.XMLFeature);
/**
@@ -83719,7 +72420,7 @@ ol.format.KML.readStyleMapValue_ = function(node, objectStack) {
* @private
*/
ol.format.KML.IconStyleParser_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be an ELEMENT');
goog.asserts.assert(node.localName == 'IconStyle',
'localName should be IconStyle');
@@ -83820,7 +72521,7 @@ ol.format.KML.IconStyleParser_ = function(node, objectStack) {
* @private
*/
ol.format.KML.LabelStyleParser_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'LabelStyle',
'localName should be LabelStyle');
@@ -83851,7 +72552,7 @@ ol.format.KML.LabelStyleParser_ = function(node, objectStack) {
* @private
*/
ol.format.KML.LineStyleParser_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'LineStyle',
'localName should be LineStyle');
@@ -83883,7 +72584,7 @@ ol.format.KML.LineStyleParser_ = function(node, objectStack) {
* @private
*/
ol.format.KML.PolyStyleParser_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'PolyStyle',
'localName should be PolyStyle');
@@ -83920,7 +72621,7 @@ ol.format.KML.PolyStyleParser_ = function(node, objectStack) {
* @return {Array.<number>} LinearRing flat coordinates.
*/
ol.format.KML.readFlatLinearRing_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'LinearRing',
'localName should be LinearRing');
@@ -83935,7 +72636,7 @@ ol.format.KML.readFlatLinearRing_ = function(node, objectStack) {
* @private
*/
ol.format.KML.gxCoordParser_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(ol.array.includes(
ol.format.KML.GX_NAMESPACE_URIS_, node.namespaceURI),
@@ -83968,7 +72669,7 @@ ol.format.KML.gxCoordParser_ = function(node, objectStack) {
* @return {ol.geom.MultiLineString|undefined} MultiLineString.
*/
ol.format.KML.readGxMultiTrack_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(ol.array.includes(
ol.format.KML.GX_NAMESPACE_URIS_, node.namespaceURI),
@@ -83993,7 +72694,7 @@ ol.format.KML.readGxMultiTrack_ = function(node, objectStack) {
* @return {ol.geom.LineString|undefined} LineString.
*/
ol.format.KML.readGxTrack_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(ol.array.includes(
ol.format.KML.GX_NAMESPACE_URIS_, node.namespaceURI),
@@ -84030,7 +72731,7 @@ ol.format.KML.readGxTrack_ = function(node, objectStack) {
* @return {Object} Icon object.
*/
ol.format.KML.readIcon_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'Icon', 'localName should be Icon');
var iconObject = ol.xml.pushParseAndPop(
@@ -84050,7 +72751,7 @@ ol.format.KML.readIcon_ = function(node, objectStack) {
* @return {Array.<number>} Flat coordinates.
*/
ol.format.KML.readFlatCoordinatesFromNode_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
return ol.xml.pushParseAndPop(null,
ol.format.KML.GEOMETRY_FLAT_COORDINATES_PARSERS_, node, objectStack);
@@ -84064,7 +72765,7 @@ ol.format.KML.readFlatCoordinatesFromNode_ = function(node, objectStack) {
* @return {ol.geom.LineString|undefined} LineString.
*/
ol.format.KML.readLineString_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'LineString',
'localName should be LineString');
@@ -84091,7 +72792,7 @@ ol.format.KML.readLineString_ = function(node, objectStack) {
* @return {ol.geom.Polygon|undefined} Polygon.
*/
ol.format.KML.readLinearRing_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'LinearRing',
'localName should be LinearRing');
@@ -84119,7 +72820,7 @@ ol.format.KML.readLinearRing_ = function(node, objectStack) {
* @return {ol.geom.Geometry} Geometry.
*/
ol.format.KML.readMultiGeometry_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'MultiGeometry',
'localName should be MultiGeometry');
@@ -84191,7 +72892,7 @@ ol.format.KML.readMultiGeometry_ = function(node, objectStack) {
* @return {ol.geom.Point|undefined} Point.
*/
ol.format.KML.readPoint_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'Point', 'localName should be Point');
var properties = ol.xml.pushParseAndPop({},
@@ -84219,7 +72920,7 @@ ol.format.KML.readPoint_ = function(node, objectStack) {
* @return {ol.geom.Polygon|undefined} Polygon.
*/
ol.format.KML.readPolygon_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'Polygon',
'localName should be Polygon');
@@ -84254,7 +72955,7 @@ ol.format.KML.readPolygon_ = function(node, objectStack) {
* @return {Array.<ol.style.Style>} Style.
*/
ol.format.KML.readStyle_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'Style', 'localName should be Style');
var styleObject = ol.xml.pushParseAndPop(
@@ -84330,7 +73031,7 @@ ol.format.KML.setCommonGeometryProperties_ = function(multiGeometry,
* @private
*/
ol.format.KML.DataParser_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'Data', 'localName should be Data');
var name = node.getAttribute('name');
@@ -84354,7 +73055,7 @@ ol.format.KML.DataParser_ = function(node, objectStack) {
* @private
*/
ol.format.KML.ExtendedDataParser_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'ExtendedData',
'localName should be ExtendedData');
@@ -84368,7 +73069,7 @@ ol.format.KML.ExtendedDataParser_ = function(node, objectStack) {
* @private
*/
ol.format.KML.PairDataParser_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'Pair', 'localName should be Pair');
var pairObject = ol.xml.pushParseAndPop(
@@ -84399,7 +73100,7 @@ ol.format.KML.PairDataParser_ = function(node, objectStack) {
* @private
*/
ol.format.KML.PlacemarkStyleMapParser_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'StyleMap',
'localName should be StyleMap');
@@ -84426,7 +73127,7 @@ ol.format.KML.PlacemarkStyleMapParser_ = function(node, objectStack) {
* @private
*/
ol.format.KML.SchemaDataParser_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'SchemaData',
'localName should be SchemaData');
@@ -84440,7 +73141,7 @@ ol.format.KML.SchemaDataParser_ = function(node, objectStack) {
* @private
*/
ol.format.KML.SimpleDataParser_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'SimpleData',
'localName should be SimpleData');
@@ -84460,7 +73161,7 @@ ol.format.KML.SimpleDataParser_ = function(node, objectStack) {
* @private
*/
ol.format.KML.innerBoundaryIsParser_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'innerBoundaryIs',
'localName should be innerBoundaryIs');
@@ -84485,7 +73186,7 @@ ol.format.KML.innerBoundaryIsParser_ = function(node, objectStack) {
* @private
*/
ol.format.KML.outerBoundaryIsParser_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'outerBoundaryIs',
'localName should be outerBoundaryIs');
@@ -84510,7 +73211,7 @@ ol.format.KML.outerBoundaryIsParser_ = function(node, objectStack) {
* @private
*/
ol.format.KML.LinkParser_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'Link', 'localName should be Link');
ol.xml.parseNode(ol.format.KML.LINK_PARSERS_, node, objectStack);
@@ -84523,7 +73224,7 @@ ol.format.KML.LinkParser_ = function(node, objectStack) {
* @private
*/
ol.format.KML.whenParser_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'when', 'localName should be when');
var gxTrackObject = /** @type {ol.KMLGxTrackObject_} */
@@ -84886,7 +73587,7 @@ ol.format.KML.prototype.getExtensions = function() {
* @return {Array.<ol.Feature>|undefined} Features.
*/
ol.format.KML.prototype.readDocumentOrFolder_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
var localName = node.localName;
goog.asserts.assert(localName == 'Document' || localName == 'Folder',
@@ -84917,7 +73618,7 @@ ol.format.KML.prototype.readDocumentOrFolder_ = function(node, objectStack) {
* @return {ol.Feature|undefined} Feature.
*/
ol.format.KML.prototype.readPlacemark_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'Placemark',
'localName should be Placemark');
@@ -84964,7 +73665,7 @@ ol.format.KML.prototype.readPlacemark_ = function(node, objectStack) {
* @private
*/
ol.format.KML.prototype.readSharedStyle_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'Style', 'localName should be Style');
var id = node.getAttribute('id');
@@ -84989,7 +73690,7 @@ ol.format.KML.prototype.readSharedStyle_ = function(node, objectStack) {
* @private
*/
ol.format.KML.prototype.readSharedStyleMap_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'StyleMap',
'localName should be StyleMap');
@@ -85029,7 +73730,7 @@ ol.format.KML.prototype.readFeature;
* @inheritDoc
*/
ol.format.KML.prototype.readFeatureFromNode = function(node, opt_options) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
if (!ol.array.includes(ol.format.KML.NAMESPACE_URIS_, node.namespaceURI)) {
return null;
@@ -85064,7 +73765,7 @@ ol.format.KML.prototype.readFeatures;
* @inheritDoc
*/
ol.format.KML.prototype.readFeaturesFromNode = function(node, opt_options) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
if (!ol.array.includes(ol.format.KML.NAMESPACE_URIS_, node.namespaceURI)) {
return [];
@@ -85132,7 +73833,7 @@ ol.format.KML.prototype.readName = function(source) {
ol.format.KML.prototype.readNameFromDocument = function(doc) {
var n;
for (n = doc.firstChild; n; n = n.nextSibling) {
- if (n.nodeType == goog.dom.NodeType.ELEMENT) {
+ if (n.nodeType == Node.ELEMENT_NODE) {
var name = this.readNameFromNode(n);
if (name) {
return name;
@@ -85204,7 +73905,7 @@ ol.format.KML.prototype.readNetworkLinks = function(source) {
ol.format.KML.prototype.readNetworkLinksFromDocument = function(doc) {
var n, networkLinks = [];
for (n = doc.firstChild; n; n = n.nextSibling) {
- if (n.nodeType == goog.dom.NodeType.ELEMENT) {
+ if (n.nodeType == Node.ELEMENT_NODE) {
ol.array.extend(networkLinks, this.readNetworkLinksFromNode(n));
}
}
@@ -86167,92 +74868,6 @@ var define;
* @suppress {accessControls, ambiguousFunctionDecl, checkDebuggerStatement, checkRegExp, checkTypes, checkVars, const, constantProperty, deprecated, duplicate, es5Strict, fileoverviewTags, missingProperties, nonStandardJsDocs, strictModuleDepCheck, suspiciousCode, undefinedNames, undefinedVars, unknownDefines, uselessCode, visibility}
*/
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.pbf = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){
-exports.read = function (buffer, offset, isLE, mLen, nBytes) {
- var e, m
- var eLen = nBytes * 8 - mLen - 1
- var eMax = (1 << eLen) - 1
- var eBias = eMax >> 1
- var nBits = -7
- var i = isLE ? (nBytes - 1) : 0
- var d = isLE ? -1 : 1
- var s = buffer[offset + i]
-
- i += d
-
- e = s & ((1 << (-nBits)) - 1)
- s >>= (-nBits)
- nBits += eLen
- for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
-
- m = e & ((1 << (-nBits)) - 1)
- e >>= (-nBits)
- nBits += mLen
- for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
-
- if (e === 0) {
- e = 1 - eBias
- } else if (e === eMax) {
- return m ? NaN : ((s ? -1 : 1) * Infinity)
- } else {
- m = m + Math.pow(2, mLen)
- e = e - eBias
- }
- return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
-}
-
-exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
- var e, m, c
- var eLen = nBytes * 8 - mLen - 1
- var eMax = (1 << eLen) - 1
- var eBias = eMax >> 1
- var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
- var i = isLE ? 0 : (nBytes - 1)
- var d = isLE ? 1 : -1
- var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
-
- value = Math.abs(value)
-
- if (isNaN(value) || value === Infinity) {
- m = isNaN(value) ? 1 : 0
- e = eMax
- } else {
- e = Math.floor(Math.log(value) / Math.LN2)
- if (value * (c = Math.pow(2, -e)) < 1) {
- e--
- c *= 2
- }
- if (e + eBias >= 1) {
- value += rt / c
- } else {
- value += rt * Math.pow(2, 1 - eBias)
- }
- if (value * c >= 2) {
- e++
- c /= 2
- }
-
- if (e + eBias >= eMax) {
- m = 0
- e = eMax
- } else if (e + eBias >= 1) {
- m = (value * c - 1) * Math.pow(2, mLen)
- e = e + eBias
- } else {
- m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
- e = 0
- }
- }
-
- for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
-
- e = (e << mLen) | m
- eLen += mLen
- for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
-
- buffer[offset + i - d] |= s * 128
-}
-
-},{}],2:[function(_dereq_,module,exports){
'use strict';
// lightweight Buffer shim for pbf browser build
@@ -86413,7 +75028,7 @@ function encodeString(str) {
return bytes;
}
-},{"ieee754":1}],3:[function(_dereq_,module,exports){
+},{"ieee754":3}],2:[function(_dereq_,module,exports){
(function (global){
'use strict';
@@ -86503,23 +75118,14 @@ Pbf.prototype = {
readVarint: function() {
var buf = this.buf,
- val, b, b0, b1, b2, b3;
+ val, b;
- b0 = buf[this.pos++]; if (b0 < 0x80) return b0; b0 = b0 & 0x7f;
- b1 = buf[this.pos++]; if (b1 < 0x80) return b0 | b1 << 7; b1 = (b1 & 0x7f) << 7;
- b2 = buf[this.pos++]; if (b2 < 0x80) return b0 | b1 | b2 << 14; b2 = (b2 & 0x7f) << 14;
- b3 = buf[this.pos++]; if (b3 < 0x80) return b0 | b1 | b2 | b3 << 21;
+ b = buf[this.pos++]; val = b & 0x7f; if (b < 0x80) return val;
+ b = buf[this.pos++]; val |= (b & 0x7f) << 7; if (b < 0x80) return val;
+ b = buf[this.pos++]; val |= (b & 0x7f) << 14; if (b < 0x80) return val;
+ b = buf[this.pos++]; val |= (b & 0x7f) << 21; if (b < 0x80) return val;
- val = b0 | b1 | b2 | (b3 & 0x7f) << 21;
-
- b = buf[this.pos++]; val += (b & 0x7f) * 0x10000000; if (b < 0x80) return val;
- b = buf[this.pos++]; val += (b & 0x7f) * 0x800000000; if (b < 0x80) return val;
- b = buf[this.pos++]; val += (b & 0x7f) * 0x40000000000; if (b < 0x80) return val;
- b = buf[this.pos++]; val += (b & 0x7f) * 0x2000000000000; if (b < 0x80) return val;
- b = buf[this.pos++]; val += (b & 0x7f) * 0x100000000000000; if (b < 0x80) return val;
- b = buf[this.pos++]; val += (b & 0x7f) * 0x8000000000000000; if (b < 0x80) return val;
-
- throw new Error('Expected varint not more than 10 bytes');
+ return readVarintRemainder(val, this);
},
readVarint64: function() {
@@ -86675,39 +75281,17 @@ Pbf.prototype = {
writeVarint: function(val) {
val = +val;
- if (val <= 0x7f) {
- this.realloc(1);
- this.buf[this.pos++] = val;
-
- } else if (val <= 0x3fff) {
- this.realloc(2);
- this.buf[this.pos++] = ((val >>> 0) & 0x7f) | 0x80;
- this.buf[this.pos++] = ((val >>> 7) & 0x7f);
-
- } else if (val <= 0x1fffff) {
- this.realloc(3);
- this.buf[this.pos++] = ((val >>> 0) & 0x7f) | 0x80;
- this.buf[this.pos++] = ((val >>> 7) & 0x7f) | 0x80;
- this.buf[this.pos++] = ((val >>> 14) & 0x7f);
+ if (val > 0xfffffff) {
+ writeBigVarint(val, this);
+ return;
+ }
- } else if (val <= 0xfffffff) {
- this.realloc(4);
- this.buf[this.pos++] = ((val >>> 0) & 0x7f) | 0x80;
- this.buf[this.pos++] = ((val >>> 7) & 0x7f) | 0x80;
- this.buf[this.pos++] = ((val >>> 14) & 0x7f) | 0x80;
- this.buf[this.pos++] = ((val >>> 21) & 0x7f);
+ this.realloc(4);
- } else {
- var pos = this.pos;
- while (val >= 0x80) {
- this.realloc(1);
- this.buf[this.pos++] = (val & 0xff) | 0x80;
- val /= 0x80;
- }
- this.realloc(1);
- this.buf[this.pos++] = val | 0;
- if (this.pos - pos > 10) throw new Error('Given varint doesn\'t fit into 10 bytes');
- }
+ this.buf[this.pos++] = val & 0x7f | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;
+ this.buf[this.pos++] = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;
+ this.buf[this.pos++] = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;
+ this.buf[this.pos++] = (val >>> 7) & 0x7f;
},
writeSVarint: function(val) {
@@ -86754,17 +75338,7 @@ Pbf.prototype = {
fn(obj, this);
var len = this.pos - startPos;
- var varintLen =
- len <= 0x7f ? 1 :
- len <= 0x3fff ? 2 :
- len <= 0x1fffff ? 3 :
- len <= 0xfffffff ? 4 : Math.ceil(Math.log(len) / (Math.LN2 * 7));
-
- // if 1 byte isn't enough for encoding message length, shift the data to the right
- if (varintLen > 1) {
- this.realloc(varintLen - 1);
- for (var i = this.pos - 1; i >= startPos; i--) this.buf[i + varintLen - 1] = this.buf[i];
- }
+ if (len >= 0x80) reallocForRawMessage(startPos, len, this);
// finally, write the message length in the reserved place and restore the position
this.pos = startPos - 1;
@@ -86832,6 +75406,43 @@ Pbf.prototype = {
}
};
+function readVarintRemainder(val, pbf) {
+ var buf = pbf.buf, b;
+
+ b = buf[pbf.pos++]; val += (b & 0x7f) * 0x10000000; if (b < 0x80) return val;
+ b = buf[pbf.pos++]; val += (b & 0x7f) * 0x800000000; if (b < 0x80) return val;
+ b = buf[pbf.pos++]; val += (b & 0x7f) * 0x40000000000; if (b < 0x80) return val;
+ b = buf[pbf.pos++]; val += (b & 0x7f) * 0x2000000000000; if (b < 0x80) return val;
+ b = buf[pbf.pos++]; val += (b & 0x7f) * 0x100000000000000; if (b < 0x80) return val;
+ b = buf[pbf.pos++]; val += (b & 0x7f) * 0x8000000000000000; if (b < 0x80) return val;
+
+ throw new Error('Expected varint not more than 10 bytes');
+}
+
+function writeBigVarint(val, pbf) {
+ pbf.realloc(10);
+
+ var maxPos = pbf.pos + 10;
+
+ while (val >= 1) {
+ if (pbf.pos >= maxPos) throw new Error('Given varint doesn\'t fit into 10 bytes');
+ var b = val & 0xff;
+ pbf.buf[pbf.pos++] = b | (val >= 0x80 ? 0x80 : 0);
+ val /= 0x80;
+ }
+}
+
+function reallocForRawMessage(startPos, len, pbf) {
+ var extraLen =
+ len <= 0x3fff ? 1 :
+ len <= 0x1fffff ? 2 :
+ len <= 0xfffffff ? 3 : Math.ceil(Math.log(len) / (Math.LN2 * 7));
+
+ // if 1 byte isn't enough for encoding message length, shift the data to the right
+ pbf.realloc(extraLen);
+ for (var i = pbf.pos - 1; i >= startPos; i--) pbf.buf[i + extraLen] = pbf.buf[i];
+}
+
function writePackedVarint(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeVarint(arr[i]); }
function writePackedSVarint(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSVarint(arr[i]); }
function writePackedFloat(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFloat(arr[i]); }
@@ -86843,7 +75454,93 @@ function writePackedFixed64(arr, pbf) { for (var i = 0; i < arr.length; i++) pb
function writePackedSFixed64(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSFixed64(arr[i]); }
}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
-},{"./buffer":2}]},{},[3])(3)
+},{"./buffer":1}],3:[function(_dereq_,module,exports){
+exports.read = function (buffer, offset, isLE, mLen, nBytes) {
+ var e, m
+ var eLen = nBytes * 8 - mLen - 1
+ var eMax = (1 << eLen) - 1
+ var eBias = eMax >> 1
+ var nBits = -7
+ var i = isLE ? (nBytes - 1) : 0
+ var d = isLE ? -1 : 1
+ var s = buffer[offset + i]
+
+ i += d
+
+ e = s & ((1 << (-nBits)) - 1)
+ s >>= (-nBits)
+ nBits += eLen
+ for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
+
+ m = e & ((1 << (-nBits)) - 1)
+ e >>= (-nBits)
+ nBits += mLen
+ for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
+
+ if (e === 0) {
+ e = 1 - eBias
+ } else if (e === eMax) {
+ return m ? NaN : ((s ? -1 : 1) * Infinity)
+ } else {
+ m = m + Math.pow(2, mLen)
+ e = e - eBias
+ }
+ return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
+}
+
+exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
+ var e, m, c
+ var eLen = nBytes * 8 - mLen - 1
+ var eMax = (1 << eLen) - 1
+ var eBias = eMax >> 1
+ var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
+ var i = isLE ? 0 : (nBytes - 1)
+ var d = isLE ? 1 : -1
+ var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
+
+ value = Math.abs(value)
+
+ if (isNaN(value) || value === Infinity) {
+ m = isNaN(value) ? 1 : 0
+ e = eMax
+ } else {
+ e = Math.floor(Math.log(value) / Math.LN2)
+ if (value * (c = Math.pow(2, -e)) < 1) {
+ e--
+ c *= 2
+ }
+ if (e + eBias >= 1) {
+ value += rt / c
+ } else {
+ value += rt * Math.pow(2, 1 - eBias)
+ }
+ if (value * c >= 2) {
+ e++
+ c /= 2
+ }
+
+ if (e + eBias >= eMax) {
+ m = 0
+ e = eMax
+ } else if (e + eBias >= 1) {
+ m = (value * c - 1) * Math.pow(2, mLen)
+ e = e + eBias
+ } else {
+ m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
+ e = 0
+ }
+ }
+
+ for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
+
+ e = (e << mLen) | m
+ eLen += mLen
+ for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
+
+ buffer[offset + i - d] |= s * 128
+}
+
+},{}]},{},[2])(2)
});
ol.ext.pbf = module.exports;
})();
@@ -86860,144 +75557,11 @@ var define;
* @suppress {accessControls, ambiguousFunctionDecl, checkDebuggerStatement, checkRegExp, checkTypes, checkVars, const, constantProperty, deprecated, duplicate, es5Strict, fileoverviewTags, missingProperties, nonStandardJsDocs, strictModuleDepCheck, suspiciousCode, undefinedNames, undefinedVars, unknownDefines, uselessCode, visibility}
*/
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.vectortile = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){
-'use strict';
-
-module.exports = Point;
-
-function Point(x, y) {
- this.x = x;
- this.y = y;
-}
-
-Point.prototype = {
- clone: function() { return new Point(this.x, this.y); },
-
- add: function(p) { return this.clone()._add(p); },
- sub: function(p) { return this.clone()._sub(p); },
- mult: function(k) { return this.clone()._mult(k); },
- div: function(k) { return this.clone()._div(k); },
- rotate: function(a) { return this.clone()._rotate(a); },
- matMult: function(m) { return this.clone()._matMult(m); },
- unit: function() { return this.clone()._unit(); },
- perp: function() { return this.clone()._perp(); },
- round: function() { return this.clone()._round(); },
-
- mag: function() {
- return Math.sqrt(this.x * this.x + this.y * this.y);
- },
-
- equals: function(p) {
- return this.x === p.x &&
- this.y === p.y;
- },
-
- dist: function(p) {
- return Math.sqrt(this.distSqr(p));
- },
-
- distSqr: function(p) {
- var dx = p.x - this.x,
- dy = p.y - this.y;
- return dx * dx + dy * dy;
- },
-
- angle: function() {
- return Math.atan2(this.y, this.x);
- },
-
- angleTo: function(b) {
- return Math.atan2(this.y - b.y, this.x - b.x);
- },
-
- angleWith: function(b) {
- return this.angleWithSep(b.x, b.y);
- },
-
- // Find the angle of the two vectors, solving the formula for the cross product a x b = |a||b|sin(θ) for θ.
- angleWithSep: function(x, y) {
- return Math.atan2(
- this.x * y - this.y * x,
- this.x * x + this.y * y);
- },
-
- _matMult: function(m) {
- var x = m[0] * this.x + m[1] * this.y,
- y = m[2] * this.x + m[3] * this.y;
- this.x = x;
- this.y = y;
- return this;
- },
-
- _add: function(p) {
- this.x += p.x;
- this.y += p.y;
- return this;
- },
-
- _sub: function(p) {
- this.x -= p.x;
- this.y -= p.y;
- return this;
- },
-
- _mult: function(k) {
- this.x *= k;
- this.y *= k;
- return this;
- },
-
- _div: function(k) {
- this.x /= k;
- this.y /= k;
- return this;
- },
-
- _unit: function() {
- this._div(this.mag());
- return this;
- },
-
- _perp: function() {
- var y = this.y;
- this.y = this.x;
- this.x = -y;
- return this;
- },
-
- _rotate: function(angle) {
- var cos = Math.cos(angle),
- sin = Math.sin(angle),
- x = cos * this.x - sin * this.y,
- y = sin * this.x + cos * this.y;
- this.x = x;
- this.y = y;
- return this;
- },
-
- _round: function() {
- this.x = Math.round(this.x);
- this.y = Math.round(this.y);
- return this;
- }
-};
-
-// constructs Point from an array if necessary
-Point.convert = function (a) {
- if (a instanceof Point) {
- return a;
- }
- if (Array.isArray(a)) {
- return new Point(a[0], a[1]);
- }
- return a;
-};
-
-},{}],2:[function(_dereq_,module,exports){
module.exports.VectorTile = _dereq_('./lib/vectortile.js');
module.exports.VectorTileFeature = _dereq_('./lib/vectortilefeature.js');
module.exports.VectorTileLayer = _dereq_('./lib/vectortilelayer.js');
-},{"./lib/vectortile.js":3,"./lib/vectortilefeature.js":4,"./lib/vectortilelayer.js":5}],3:[function(_dereq_,module,exports){
+},{"./lib/vectortile.js":2,"./lib/vectortilefeature.js":3,"./lib/vectortilelayer.js":4}],2:[function(_dereq_,module,exports){
'use strict';
var VectorTileLayer = _dereq_('./vectortilelayer');
@@ -87016,7 +75580,7 @@ function readTile(tag, layers, pbf) {
}
-},{"./vectortilelayer":5}],4:[function(_dereq_,module,exports){
+},{"./vectortilelayer":4}],3:[function(_dereq_,module,exports){
'use strict';
var Point = _dereq_('point-geometry');
@@ -87251,7 +75815,7 @@ function signedArea(ring) {
return sum;
}
-},{"point-geometry":1}],5:[function(_dereq_,module,exports){
+},{"point-geometry":5}],4:[function(_dereq_,module,exports){
'use strict';
var VectorTileFeature = _dereq_('./vectortilefeature.js');
@@ -87314,7 +75878,140 @@ VectorTileLayer.prototype.feature = function(i) {
return new VectorTileFeature(this._pbf, end, this.extent, this._keys, this._values);
};
-},{"./vectortilefeature.js":4}]},{},[2])(2)
+},{"./vectortilefeature.js":3}],5:[function(_dereq_,module,exports){
+'use strict';
+
+module.exports = Point;
+
+function Point(x, y) {
+ this.x = x;
+ this.y = y;
+}
+
+Point.prototype = {
+ clone: function() { return new Point(this.x, this.y); },
+
+ add: function(p) { return this.clone()._add(p); },
+ sub: function(p) { return this.clone()._sub(p); },
+ mult: function(k) { return this.clone()._mult(k); },
+ div: function(k) { return this.clone()._div(k); },
+ rotate: function(a) { return this.clone()._rotate(a); },
+ matMult: function(m) { return this.clone()._matMult(m); },
+ unit: function() { return this.clone()._unit(); },
+ perp: function() { return this.clone()._perp(); },
+ round: function() { return this.clone()._round(); },
+
+ mag: function() {
+ return Math.sqrt(this.x * this.x + this.y * this.y);
+ },
+
+ equals: function(p) {
+ return this.x === p.x &&
+ this.y === p.y;
+ },
+
+ dist: function(p) {
+ return Math.sqrt(this.distSqr(p));
+ },
+
+ distSqr: function(p) {
+ var dx = p.x - this.x,
+ dy = p.y - this.y;
+ return dx * dx + dy * dy;
+ },
+
+ angle: function() {
+ return Math.atan2(this.y, this.x);
+ },
+
+ angleTo: function(b) {
+ return Math.atan2(this.y - b.y, this.x - b.x);
+ },
+
+ angleWith: function(b) {
+ return this.angleWithSep(b.x, b.y);
+ },
+
+ // Find the angle of the two vectors, solving the formula for the cross product a x b = |a||b|sin(θ) for θ.
+ angleWithSep: function(x, y) {
+ return Math.atan2(
+ this.x * y - this.y * x,
+ this.x * x + this.y * y);
+ },
+
+ _matMult: function(m) {
+ var x = m[0] * this.x + m[1] * this.y,
+ y = m[2] * this.x + m[3] * this.y;
+ this.x = x;
+ this.y = y;
+ return this;
+ },
+
+ _add: function(p) {
+ this.x += p.x;
+ this.y += p.y;
+ return this;
+ },
+
+ _sub: function(p) {
+ this.x -= p.x;
+ this.y -= p.y;
+ return this;
+ },
+
+ _mult: function(k) {
+ this.x *= k;
+ this.y *= k;
+ return this;
+ },
+
+ _div: function(k) {
+ this.x /= k;
+ this.y /= k;
+ return this;
+ },
+
+ _unit: function() {
+ this._div(this.mag());
+ return this;
+ },
+
+ _perp: function() {
+ var y = this.y;
+ this.y = this.x;
+ this.x = -y;
+ return this;
+ },
+
+ _rotate: function(angle) {
+ var cos = Math.cos(angle),
+ sin = Math.sin(angle),
+ x = cos * this.x - sin * this.y,
+ y = sin * this.x + cos * this.y;
+ this.x = x;
+ this.y = y;
+ return this;
+ },
+
+ _round: function() {
+ this.x = Math.round(this.x);
+ this.y = Math.round(this.y);
+ return this;
+ }
+};
+
+// constructs Point from an array if necessary
+Point.convert = function (a) {
+ if (a instanceof Point) {
+ return a;
+ }
+ if (Array.isArray(a)) {
+ return new Point(a[0], a[1]);
+ }
+ return a;
+};
+
+},{}]},{},[1])(1)
});
ol.ext.vectortile = module.exports;
})();
@@ -87354,7 +76051,7 @@ goog.require('ol.render.Feature');
*/
ol.format.MVT = function(opt_options) {
- goog.base(this);
+ ol.format.Feature.call(this);
var options = opt_options ? opt_options : {};
@@ -87395,7 +76092,7 @@ ol.format.MVT = function(opt_options) {
this.layers_ = options.layers ? options.layers : null;
};
-goog.inherits(ol.format.MVT, ol.format.Feature);
+ol.inherits(ol.format.MVT, ol.format.Feature);
/**
@@ -87600,9 +76297,6 @@ goog.provide('ol.format.ogc.filter.IsNull');
goog.provide('ol.format.ogc.filter.IsBetween');
goog.provide('ol.format.ogc.filter.IsLike');
-goog.require('ol.Extent');
-goog.require('ol.Object');
-
/**
* Create a logical `<And>` operator between two filter conditions.
@@ -87796,20 +76490,17 @@ ol.format.ogc.filter.like = function(propertyName, pattern,
*
* @constructor
* @param {!string} tagName The XML tag name for this filter.
- * @extends {ol.Object}
+ * @struct
* @api
*/
ol.format.ogc.filter.Filter = function(tagName) {
- goog.base(this);
-
/**
* @private
* @type {!string}
*/
this.tagName_ = tagName;
};
-goog.inherits(ol.format.ogc.filter.Filter, ol.Object);
/**
* The XML tag name for a filter.
@@ -87833,9 +76524,9 @@ ol.format.ogc.filter.Filter.prototype.getTagName = function() {
* @extends {ol.format.ogc.filter.Filter}
*/
ol.format.ogc.filter.Logical = function(tagName) {
- goog.base(this, tagName);
+ ol.format.ogc.filter.Filter.call(this, tagName);
};
-goog.inherits(ol.format.ogc.filter.Logical, ol.format.ogc.filter.Filter);
+ol.inherits(ol.format.ogc.filter.Logical, ol.format.ogc.filter.Filter);
/**
@@ -87851,7 +76542,7 @@ goog.inherits(ol.format.ogc.filter.Logical, ol.format.ogc.filter.Filter);
*/
ol.format.ogc.filter.LogicalBinary = function(tagName, conditionA, conditionB) {
- goog.base(this, tagName);
+ ol.format.ogc.filter.Logical.call(this, tagName);
/**
* @public
@@ -87866,7 +76557,7 @@ ol.format.ogc.filter.LogicalBinary = function(tagName, conditionA, conditionB) {
this.conditionB = conditionB;
};
-goog.inherits(ol.format.ogc.filter.LogicalBinary, ol.format.ogc.filter.Logical);
+ol.inherits(ol.format.ogc.filter.LogicalBinary, ol.format.ogc.filter.Logical);
/**
@@ -87880,9 +76571,9 @@ goog.inherits(ol.format.ogc.filter.LogicalBinary, ol.format.ogc.filter.Logical);
* @api
*/
ol.format.ogc.filter.And = function(conditionA, conditionB) {
- goog.base(this, 'And', conditionA, conditionB);
+ ol.format.ogc.filter.LogicalBinary.call(this, 'And', conditionA, conditionB);
};
-goog.inherits(ol.format.ogc.filter.And, ol.format.ogc.filter.LogicalBinary);
+ol.inherits(ol.format.ogc.filter.And, ol.format.ogc.filter.LogicalBinary);
/**
@@ -87896,9 +76587,9 @@ goog.inherits(ol.format.ogc.filter.And, ol.format.ogc.filter.LogicalBinary);
* @api
*/
ol.format.ogc.filter.Or = function(conditionA, conditionB) {
- goog.base(this, 'Or', conditionA, conditionB);
+ ol.format.ogc.filter.LogicalBinary.call(this, 'Or', conditionA, conditionB);
};
-goog.inherits(ol.format.ogc.filter.Or, ol.format.ogc.filter.LogicalBinary);
+ol.inherits(ol.format.ogc.filter.Or, ol.format.ogc.filter.LogicalBinary);
/**
@@ -87912,7 +76603,7 @@ goog.inherits(ol.format.ogc.filter.Or, ol.format.ogc.filter.LogicalBinary);
*/
ol.format.ogc.filter.Not = function(condition) {
- goog.base(this, 'Not');
+ ol.format.ogc.filter.Logical.call(this, 'Not');
/**
* @public
@@ -87920,7 +76611,7 @@ ol.format.ogc.filter.Not = function(condition) {
*/
this.condition = condition;
};
-goog.inherits(ol.format.ogc.filter.Not, ol.format.ogc.filter.Logical);
+ol.inherits(ol.format.ogc.filter.Not, ol.format.ogc.filter.Logical);
// Spatial filters
@@ -87941,7 +76632,7 @@ goog.inherits(ol.format.ogc.filter.Not, ol.format.ogc.filter.Logical);
*/
ol.format.ogc.filter.Bbox = function(geometryName, extent, opt_srsName) {
- goog.base(this, 'BBOX');
+ ol.format.ogc.filter.Filter.call(this, 'BBOX');
/**
* @public
@@ -87951,7 +76642,7 @@ ol.format.ogc.filter.Bbox = function(geometryName, extent, opt_srsName) {
/**
* @public
- * @type {!ol.Extent}
+ * @type {ol.Extent}
*/
this.extent = extent;
@@ -87961,7 +76652,7 @@ ol.format.ogc.filter.Bbox = function(geometryName, extent, opt_srsName) {
*/
this.srsName = opt_srsName;
};
-goog.inherits(ol.format.ogc.filter.Bbox, ol.format.ogc.filter.Filter);
+ol.inherits(ol.format.ogc.filter.Bbox, ol.format.ogc.filter.Filter);
// Property comparison filters
@@ -87980,7 +76671,7 @@ goog.inherits(ol.format.ogc.filter.Bbox, ol.format.ogc.filter.Filter);
*/
ol.format.ogc.filter.Comparison = function(tagName, propertyName) {
- goog.base(this, tagName);
+ ol.format.ogc.filter.Filter.call(this, tagName);
/**
* @public
@@ -87988,7 +76679,7 @@ ol.format.ogc.filter.Comparison = function(tagName, propertyName) {
*/
this.propertyName = propertyName;
};
-goog.inherits(ol.format.ogc.filter.Comparison, ol.format.ogc.filter.Filter);
+ol.inherits(ol.format.ogc.filter.Comparison, ol.format.ogc.filter.Filter);
/**
@@ -88007,7 +76698,7 @@ goog.inherits(ol.format.ogc.filter.Comparison, ol.format.ogc.filter.Filter);
ol.format.ogc.filter.ComparisonBinary = function(
tagName, propertyName, expression, opt_matchCase) {
- goog.base(this, tagName, propertyName);
+ ol.format.ogc.filter.Comparison.call(this, tagName, propertyName);
/**
* @public
@@ -88021,7 +76712,7 @@ ol.format.ogc.filter.ComparisonBinary = function(
*/
this.matchCase = opt_matchCase;
};
-goog.inherits(ol.format.ogc.filter.ComparisonBinary, ol.format.ogc.filter.Comparison);
+ol.inherits(ol.format.ogc.filter.ComparisonBinary, ol.format.ogc.filter.Comparison);
/**
@@ -88036,9 +76727,9 @@ goog.inherits(ol.format.ogc.filter.ComparisonBinary, ol.format.ogc.filter.Compar
* @api
*/
ol.format.ogc.filter.EqualTo = function(propertyName, expression, opt_matchCase) {
- goog.base(this, 'PropertyIsEqualTo', propertyName, expression, opt_matchCase);
+ ol.format.ogc.filter.ComparisonBinary.call(this, 'PropertyIsEqualTo', propertyName, expression, opt_matchCase);
};
-goog.inherits(ol.format.ogc.filter.EqualTo, ol.format.ogc.filter.ComparisonBinary);
+ol.inherits(ol.format.ogc.filter.EqualTo, ol.format.ogc.filter.ComparisonBinary);
/**
@@ -88053,9 +76744,9 @@ goog.inherits(ol.format.ogc.filter.EqualTo, ol.format.ogc.filter.ComparisonBinar
* @api
*/
ol.format.ogc.filter.NotEqualTo = function(propertyName, expression, opt_matchCase) {
- goog.base(this, 'PropertyIsNotEqualTo', propertyName, expression, opt_matchCase);
+ ol.format.ogc.filter.ComparisonBinary.call(this, 'PropertyIsNotEqualTo', propertyName, expression, opt_matchCase);
};
-goog.inherits(ol.format.ogc.filter.NotEqualTo, ol.format.ogc.filter.ComparisonBinary);
+ol.inherits(ol.format.ogc.filter.NotEqualTo, ol.format.ogc.filter.ComparisonBinary);
/**
@@ -88069,9 +76760,9 @@ goog.inherits(ol.format.ogc.filter.NotEqualTo, ol.format.ogc.filter.ComparisonBi
* @api
*/
ol.format.ogc.filter.LessThan = function(propertyName, expression) {
- goog.base(this, 'PropertyIsLessThan', propertyName, expression);
+ ol.format.ogc.filter.ComparisonBinary.call(this, 'PropertyIsLessThan', propertyName, expression);
};
-goog.inherits(ol.format.ogc.filter.LessThan, ol.format.ogc.filter.ComparisonBinary);
+ol.inherits(ol.format.ogc.filter.LessThan, ol.format.ogc.filter.ComparisonBinary);
/**
@@ -88085,9 +76776,9 @@ goog.inherits(ol.format.ogc.filter.LessThan, ol.format.ogc.filter.ComparisonBina
* @api
*/
ol.format.ogc.filter.LessThanOrEqualTo = function(propertyName, expression) {
- goog.base(this, 'PropertyIsLessThanOrEqualTo', propertyName, expression);
+ ol.format.ogc.filter.ComparisonBinary.call(this, 'PropertyIsLessThanOrEqualTo', propertyName, expression);
};
-goog.inherits(ol.format.ogc.filter.LessThanOrEqualTo, ol.format.ogc.filter.ComparisonBinary);
+ol.inherits(ol.format.ogc.filter.LessThanOrEqualTo, ol.format.ogc.filter.ComparisonBinary);
/**
@@ -88101,9 +76792,9 @@ goog.inherits(ol.format.ogc.filter.LessThanOrEqualTo, ol.format.ogc.filter.Compa
* @api
*/
ol.format.ogc.filter.GreaterThan = function(propertyName, expression) {
- goog.base(this, 'PropertyIsGreaterThan', propertyName, expression);
+ ol.format.ogc.filter.ComparisonBinary.call(this, 'PropertyIsGreaterThan', propertyName, expression);
};
-goog.inherits(ol.format.ogc.filter.GreaterThan, ol.format.ogc.filter.ComparisonBinary);
+ol.inherits(ol.format.ogc.filter.GreaterThan, ol.format.ogc.filter.ComparisonBinary);
/**
@@ -88117,9 +76808,9 @@ goog.inherits(ol.format.ogc.filter.GreaterThan, ol.format.ogc.filter.ComparisonB
* @api
*/
ol.format.ogc.filter.GreaterThanOrEqualTo = function(propertyName, expression) {
- goog.base(this, 'PropertyIsGreaterThanOrEqualTo', propertyName, expression);
+ ol.format.ogc.filter.ComparisonBinary.call(this, 'PropertyIsGreaterThanOrEqualTo', propertyName, expression);
};
-goog.inherits(ol.format.ogc.filter.GreaterThanOrEqualTo, ol.format.ogc.filter.ComparisonBinary);
+ol.inherits(ol.format.ogc.filter.GreaterThanOrEqualTo, ol.format.ogc.filter.ComparisonBinary);
/**
@@ -88132,9 +76823,9 @@ goog.inherits(ol.format.ogc.filter.GreaterThanOrEqualTo, ol.format.ogc.filter.Co
* @api
*/
ol.format.ogc.filter.IsNull = function(propertyName) {
- goog.base(this, 'PropertyIsNull', propertyName);
+ ol.format.ogc.filter.Comparison.call(this, 'PropertyIsNull', propertyName);
};
-goog.inherits(ol.format.ogc.filter.IsNull, ol.format.ogc.filter.Comparison);
+ol.inherits(ol.format.ogc.filter.IsNull, ol.format.ogc.filter.Comparison);
/**
@@ -88149,7 +76840,7 @@ goog.inherits(ol.format.ogc.filter.IsNull, ol.format.ogc.filter.Comparison);
* @api
*/
ol.format.ogc.filter.IsBetween = function(propertyName, lowerBoundary, upperBoundary) {
- goog.base(this, 'PropertyIsBetween', propertyName);
+ ol.format.ogc.filter.Comparison.call(this, 'PropertyIsBetween', propertyName);
/**
* @public
@@ -88163,7 +76854,7 @@ ol.format.ogc.filter.IsBetween = function(propertyName, lowerBoundary, upperBoun
*/
this.upperBoundary = upperBoundary;
};
-goog.inherits(ol.format.ogc.filter.IsBetween, ol.format.ogc.filter.Comparison);
+ol.inherits(ol.format.ogc.filter.IsBetween, ol.format.ogc.filter.Comparison);
/**
@@ -88185,7 +76876,7 @@ goog.inherits(ol.format.ogc.filter.IsBetween, ol.format.ogc.filter.Comparison);
*/
ol.format.ogc.filter.IsLike = function(propertyName, pattern,
opt_wildCard, opt_singleChar, opt_escapeChar, opt_matchCase) {
- goog.base(this, 'PropertyIsLike', propertyName);
+ ol.format.ogc.filter.Comparison.call(this, 'PropertyIsLike', propertyName);
/**
* @public
@@ -88217,13 +76908,12 @@ ol.format.ogc.filter.IsLike = function(propertyName, pattern,
*/
this.matchCase = opt_matchCase;
};
-goog.inherits(ol.format.ogc.filter.IsLike, ol.format.ogc.filter.Comparison);
+ol.inherits(ol.format.ogc.filter.IsLike, ol.format.ogc.filter.Comparison);
// FIXME add typedef for stack state objects
goog.provide('ol.format.OSMXML');
goog.require('goog.asserts');
-goog.require('goog.dom.NodeType');
goog.require('ol.array');
goog.require('ol.Feature');
goog.require('ol.format.Feature');
@@ -88247,14 +76937,14 @@ goog.require('ol.xml');
* @api stable
*/
ol.format.OSMXML = function() {
- goog.base(this);
+ ol.format.XMLFeature.call(this);
/**
* @inheritDoc
*/
this.defaultDataProjection = ol.proj.get('EPSG:4326');
};
-goog.inherits(ol.format.OSMXML, ol.format.XMLFeature);
+ol.inherits(ol.format.OSMXML, ol.format.XMLFeature);
/**
@@ -88279,7 +76969,7 @@ ol.format.OSMXML.prototype.getExtensions = function() {
* @private
*/
ol.format.OSMXML.readNode_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'node', 'localName should be node');
var options = /** @type {olx.format.ReadOptions} */ (objectStack[0]);
@@ -88312,7 +77002,7 @@ ol.format.OSMXML.readNode_ = function(node, objectStack) {
* @private
*/
ol.format.OSMXML.readWay_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'way', 'localName should be way');
var options = /** @type {olx.format.ReadOptions} */ (objectStack[0]);
@@ -88352,7 +77042,7 @@ ol.format.OSMXML.readWay_ = function(node, objectStack) {
* @private
*/
ol.format.OSMXML.readNd_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'nd', 'localName should be nd');
var values = /** @type {Object} */ (objectStack[objectStack.length - 1]);
@@ -88366,7 +77056,7 @@ ol.format.OSMXML.readNd_ = function(node, objectStack) {
* @private
*/
ol.format.OSMXML.readTag_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'tag', 'localName should be tag');
var values = /** @type {Object} */ (objectStack[objectStack.length - 1]);
@@ -88435,7 +77125,7 @@ ol.format.OSMXML.prototype.readFeatures;
* @inheritDoc
*/
ol.format.OSMXML.prototype.readFeaturesFromNode = function(node, opt_options) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
var options = this.getReadOptions(node, opt_options);
if (node.localName == 'osm') {
@@ -88531,7 +77221,6 @@ ol.format.XML.prototype.readFromNode = goog.abstractMethod;
goog.provide('ol.format.OWS');
goog.require('goog.asserts');
-goog.require('goog.dom.NodeType');
goog.require('ol.format.XLink');
goog.require('ol.format.XML');
goog.require('ol.format.XSD');
@@ -88543,9 +77232,9 @@ goog.require('ol.xml');
* @extends {ol.format.XML}
*/
ol.format.OWS = function() {
- goog.base(this);
+ ol.format.XML.call(this);
};
-goog.inherits(ol.format.OWS, ol.format.XML);
+ol.inherits(ol.format.OWS, ol.format.XML);
/**
@@ -88553,10 +77242,10 @@ goog.inherits(ol.format.OWS, ol.format.XML);
* @return {Object} OWS object.
*/
ol.format.OWS.prototype.readFromDocument = function(doc) {
- goog.asserts.assert(doc.nodeType == goog.dom.NodeType.DOCUMENT,
+ goog.asserts.assert(doc.nodeType == Node.DOCUMENT_NODE,
'doc.nodeType should be DOCUMENT');
for (var n = doc.firstChild; n; n = n.nextSibling) {
- if (n.nodeType == goog.dom.NodeType.ELEMENT) {
+ if (n.nodeType == Node.ELEMENT_NODE) {
return this.readFromNode(n);
}
}
@@ -88569,7 +77258,7 @@ ol.format.OWS.prototype.readFromDocument = function(doc) {
* @return {Object} OWS object.
*/
ol.format.OWS.prototype.readFromNode = function(node) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
var owsObject = ol.xml.pushParseAndPop({},
ol.format.OWS.PARSERS_, node, []);
@@ -88584,7 +77273,7 @@ ol.format.OWS.prototype.readFromNode = function(node) {
* @return {Object|undefined} The address.
*/
ol.format.OWS.readAddress_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'Address',
'localName should be Address');
@@ -88600,7 +77289,7 @@ ol.format.OWS.readAddress_ = function(node, objectStack) {
* @return {Object|undefined} The values.
*/
ol.format.OWS.readAllowedValues_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'AllowedValues',
'localName should be AllowedValues');
@@ -88616,7 +77305,7 @@ ol.format.OWS.readAllowedValues_ = function(node, objectStack) {
* @return {Object|undefined} The constraint.
*/
ol.format.OWS.readConstraint_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'Constraint',
'localName should be Constraint');
@@ -88637,7 +77326,7 @@ ol.format.OWS.readConstraint_ = function(node, objectStack) {
* @return {Object|undefined} The contact info.
*/
ol.format.OWS.readContactInfo_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'ContactInfo',
'localName should be ContactInfo');
@@ -88653,7 +77342,7 @@ ol.format.OWS.readContactInfo_ = function(node, objectStack) {
* @return {Object|undefined} The DCP.
*/
ol.format.OWS.readDcp_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'DCP', 'localName should be DCP');
return ol.xml.pushParseAndPop({},
@@ -88668,7 +77357,7 @@ ol.format.OWS.readDcp_ = function(node, objectStack) {
* @return {Object|undefined} The GET object.
*/
ol.format.OWS.readGet_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'Get', 'localName should be Get');
var href = ol.format.XLink.readHref(node);
@@ -88687,7 +77376,7 @@ ol.format.OWS.readGet_ = function(node, objectStack) {
* @return {Object|undefined} The HTTP object.
*/
ol.format.OWS.readHttp_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'HTTP', 'localName should be HTTP');
return ol.xml.pushParseAndPop({}, ol.format.OWS.HTTP_PARSERS_,
@@ -88702,7 +77391,7 @@ ol.format.OWS.readHttp_ = function(node, objectStack) {
* @return {Object|undefined} The operation.
*/
ol.format.OWS.readOperation_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'Operation',
'localName should be Operation');
@@ -88728,7 +77417,7 @@ ol.format.OWS.readOperation_ = function(node, objectStack) {
*/
ol.format.OWS.readOperationsMetadata_ = function(node,
objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'OperationsMetadata',
'localName should be OperationsMetadata');
@@ -88745,7 +77434,7 @@ ol.format.OWS.readOperationsMetadata_ = function(node,
* @return {Object|undefined} The phone.
*/
ol.format.OWS.readPhone_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'Phone', 'localName should be Phone');
return ol.xml.pushParseAndPop({},
@@ -88761,7 +77450,7 @@ ol.format.OWS.readPhone_ = function(node, objectStack) {
*/
ol.format.OWS.readServiceIdentification_ = function(node,
objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'ServiceIdentification',
'localName should be ServiceIdentification');
@@ -88778,7 +77467,7 @@ ol.format.OWS.readServiceIdentification_ = function(node,
* @return {Object|undefined} The service contact.
*/
ol.format.OWS.readServiceContact_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'ServiceContact',
'localName should be ServiceContact');
@@ -88795,7 +77484,7 @@ ol.format.OWS.readServiceContact_ = function(node, objectStack) {
* @return {Object|undefined} The service provider.
*/
ol.format.OWS.readServiceProvider_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'ServiceProvider',
'localName should be ServiceProvider');
@@ -88812,7 +77501,7 @@ ol.format.OWS.readServiceProvider_ = function(node, objectStack) {
* @return {string|undefined} The value.
*/
ol.format.OWS.readValue_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'Value', 'localName should be Value');
return ol.format.XSD.readString(node);
@@ -89081,7 +77770,7 @@ ol.format.Polyline = function(opt_options) {
var options = opt_options ? opt_options : {};
- goog.base(this);
+ ol.format.TextFeature.call(this);
/**
* @inheritDoc
@@ -89101,7 +77790,7 @@ ol.format.Polyline = function(opt_options) {
this.geometryLayout_ = options.geometryLayout ?
options.geometryLayout : ol.geom.GeometryLayout.XY;
};
-goog.inherits(ol.format.Polyline, ol.format.TextFeature);
+ol.inherits(ol.format.Polyline, ol.format.TextFeature);
/**
@@ -89483,7 +78172,7 @@ ol.format.TopoJSON = function(opt_options) {
var options = opt_options ? opt_options : {};
- goog.base(this);
+ ol.format.JSONFeature.call(this);
/**
* @inheritDoc
@@ -89493,7 +78182,7 @@ ol.format.TopoJSON = function(opt_options) {
options.defaultDataProjection : 'EPSG:4326');
};
-goog.inherits(ol.format.TopoJSON, ol.format.JSONFeature);
+ol.inherits(ol.format.TopoJSON, ol.format.JSONFeature);
/**
@@ -89865,7 +78554,6 @@ ol.format.TopoJSON.GEOMETRY_READERS_ = {
goog.provide('ol.format.WFS');
goog.require('goog.asserts');
-goog.require('goog.dom.NodeType');
goog.require('ol');
goog.require('ol.format.GML3');
goog.require('ol.format.GMLBase');
@@ -89927,9 +78615,9 @@ ol.format.WFS = function(opt_options) {
this.schemaLocation_ = options.schemaLocation ?
options.schemaLocation : ol.format.WFS.SCHEMA_LOCATION;
- goog.base(this);
+ ol.format.XMLFeature.call(this);
};
-goog.inherits(ol.format.WFS, ol.format.XMLFeature);
+ol.inherits(ol.format.WFS, ol.format.XMLFeature);
/**
@@ -89970,10 +78658,10 @@ ol.format.WFS.prototype.readFeatures;
* @inheritDoc
*/
ol.format.WFS.prototype.readFeaturesFromNode = function(node, opt_options) {
- var context = {
+ var context = /** @type {ol.XmlNodeStackItem} */ ({
'featureType': this.featureType_,
'featureNS': this.featureNS_
- };
+ });
ol.object.assign(context, this.getReadOptions(node,
opt_options ? opt_options : {}));
var objectStack = [context];
@@ -90044,10 +78732,10 @@ ol.format.WFS.prototype.readFeatureCollectionMetadata = function(source) {
* FeatureCollection metadata.
*/
ol.format.WFS.prototype.readFeatureCollectionMetadataFromDocument = function(doc) {
- goog.asserts.assert(doc.nodeType == goog.dom.NodeType.DOCUMENT,
+ goog.asserts.assert(doc.nodeType == Node.DOCUMENT_NODE,
'doc.nodeType should be DOCUMENT');
for (var n = doc.firstChild; n; n = n.nextSibling) {
- if (n.nodeType == goog.dom.NodeType.ELEMENT) {
+ if (n.nodeType == Node.ELEMENT_NODE) {
return this.readFeatureCollectionMetadataFromNode(n);
}
}
@@ -90074,7 +78762,7 @@ ol.format.WFS.FEATURE_COLLECTION_PARSERS_ = {
* FeatureCollection metadata.
*/
ol.format.WFS.prototype.readFeatureCollectionMetadataFromNode = function(node) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'FeatureCollection',
'localName should be FeatureCollection');
@@ -90185,10 +78873,10 @@ ol.format.WFS.TRANSACTION_RESPONSE_PARSERS_ = {
* @return {ol.WFSTransactionResponse|undefined} Transaction response.
*/
ol.format.WFS.prototype.readTransactionResponseFromDocument = function(doc) {
- goog.asserts.assert(doc.nodeType == goog.dom.NodeType.DOCUMENT,
+ goog.asserts.assert(doc.nodeType == Node.DOCUMENT_NODE,
'doc.nodeType should be DOCUMENT');
for (var n = doc.firstChild; n; n = n.nextSibling) {
- if (n.nodeType == goog.dom.NodeType.ELEMENT) {
+ if (n.nodeType == Node.ELEMENT_NODE) {
return this.readTransactionResponseFromNode(n);
}
}
@@ -90201,7 +78889,7 @@ ol.format.WFS.prototype.readTransactionResponseFromDocument = function(doc) {
* @return {ol.WFSTransactionResponse|undefined} Transaction response.
*/
ol.format.WFS.prototype.readTransactionResponseFromNode = function(node) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'TransactionResponse',
'localName should be TransactionResponse');
@@ -90307,11 +78995,11 @@ ol.format.WFS.writeUpdate_ = function(node, feature, objectStack) {
values.push({name: keys[i], value: value});
}
}
- ol.xml.pushSerializeAndPop({node: node, srsName:
- context['srsName']},
- ol.format.WFS.TRANSACTION_SERIALIZERS_,
- ol.xml.makeSimpleNodeFactory('Property'), values,
- objectStack);
+ ol.xml.pushSerializeAndPop(/** @type {ol.XmlNodeStackItem} */ (
+ {node: node, 'srsName': context['srsName']}),
+ ol.format.WFS.TRANSACTION_SERIALIZERS_,
+ ol.xml.makeSimpleNodeFactory('Property'), values,
+ objectStack);
ol.format.WFS.writeOgcFidFilter_(node, fid, objectStack);
}
};
@@ -90397,7 +79085,7 @@ ol.format.WFS.writeQuery_ = function(node, featureType, objectStack) {
ol.xml.setAttributeNS(node, ol.format.WFS.XMLNS, 'xmlns:' + featurePrefix,
featureNS);
}
- var item = ol.object.assign({}, context);
+ var item = /** @type {ol.XmlNodeStackItem} */ (ol.object.assign({}, context));
item.node = node;
ol.xml.pushSerializeAndPop(item,
ol.format.WFS.QUERY_SERIALIZERS_,
@@ -90419,6 +79107,7 @@ ol.format.WFS.writeQuery_ = function(node, featureType, objectStack) {
* @private
*/
ol.format.WFS.writeFilterCondition_ = function(node, filter, objectStack) {
+ /** @type {ol.XmlNodeStackItem} */
var item = {node: node};
ol.xml.pushSerializeAndPop(item,
ol.format.WFS.GETFEATURE_SERIALIZERS_,
@@ -90439,7 +79128,7 @@ ol.format.WFS.writeBboxFilter_ = function(node, filter, objectStack) {
var context = objectStack[objectStack.length - 1];
goog.asserts.assert(goog.isObject(context), 'context should be an Object');
- context.srsName = filter.srsName;
+ context['srsName'] = filter.srsName;
ol.format.WFS.writeOgcPropertyName_(node, filter.geometryName);
ol.format.GML3.prototype.writeGeometryElement(node, filter.extent, objectStack);
@@ -90455,6 +79144,7 @@ ol.format.WFS.writeBboxFilter_ = function(node, filter, objectStack) {
ol.format.WFS.writeLogicalFilter_ = function(node, filter, objectStack) {
goog.asserts.assertInstanceof(filter, ol.format.ogc.filter.LogicalBinary,
'must be logical filter');
+ /** @type {ol.XmlNodeStackItem} */
var item = {node: node};
var conditionA = filter.conditionA;
ol.xml.pushSerializeAndPop(item,
@@ -90478,6 +79168,7 @@ ol.format.WFS.writeLogicalFilter_ = function(node, filter, objectStack) {
ol.format.WFS.writeNotFilter_ = function(node, filter, objectStack) {
goog.asserts.assertInstanceof(filter, ol.format.ogc.filter.Not,
'must be Not filter');
+ /** @type {ol.XmlNodeStackItem} */
var item = {node: node};
var condition = filter.condition;
ol.xml.pushSerializeAndPop(item,
@@ -90620,7 +79311,7 @@ ol.format.WFS.GETFEATURE_SERIALIZERS_ = {
ol.format.WFS.writeGetFeature_ = function(node, featureTypes, objectStack) {
var context = objectStack[objectStack.length - 1];
goog.asserts.assert(goog.isObject(context), 'context should be an Object');
- var item = ol.object.assign({}, context);
+ var item = /** @type {ol.XmlNodeStackItem} */ (ol.object.assign({}, context));
item.node = node;
ol.xml.pushSerializeAndPop(item,
ol.format.WFS.GETFEATURE_SERIALIZERS_,
@@ -90677,14 +79368,15 @@ ol.format.WFS.prototype.writeGetFeature = function(options) {
}
ol.xml.setAttributeNS(node, 'http://www.w3.org/2001/XMLSchema-instance',
'xsi:schemaLocation', this.schemaLocation_);
+ /** @type {ol.XmlNodeStackItem} */
var context = {
node: node,
- srsName: options.srsName,
- featureNS: options.featureNS ? options.featureNS : this.featureNS_,
- featurePrefix: options.featurePrefix,
- geometryName: options.geometryName,
- filter: filter,
- propertyNames: options.propertyNames ? options.propertyNames : []
+ 'srsName': options.srsName,
+ 'featureNS': options.featureNS ? options.featureNS : this.featureNS_,
+ 'featurePrefix': options.featurePrefix,
+ 'geometryName': options.geometryName,
+ 'filter': filter,
+ 'propertyNames': options.propertyNames ? options.propertyNames : []
};
goog.asserts.assert(Array.isArray(options.featureTypes),
'options.featureTypes should be an array');
@@ -90710,7 +79402,9 @@ ol.format.WFS.prototype.writeTransaction = function(inserts, updates, deletes,
'Transaction');
node.setAttribute('service', 'WFS');
node.setAttribute('version', '1.1.0');
- var baseObj, obj;
+ var baseObj;
+ /** @type {ol.XmlNodeStackItem} */
+ var obj;
if (options) {
baseObj = options.gmlOptions ? options.gmlOptions : {};
if (options.handle) {
@@ -90720,8 +79414,9 @@ ol.format.WFS.prototype.writeTransaction = function(inserts, updates, deletes,
ol.xml.setAttributeNS(node, 'http://www.w3.org/2001/XMLSchema-instance',
'xsi:schemaLocation', this.schemaLocation_);
if (inserts) {
- obj = {node: node, featureNS: options.featureNS,
- featureType: options.featureType, featurePrefix: options.featurePrefix};
+ obj = {node: node, 'featureNS': options.featureNS,
+ 'featureType': options.featureType, 'featurePrefix': options.featurePrefix,
+ 'srsName': options.srsName};
ol.object.assign(obj, baseObj);
ol.xml.pushSerializeAndPop(obj,
ol.format.WFS.TRANSACTION_SERIALIZERS_,
@@ -90729,8 +79424,9 @@ ol.format.WFS.prototype.writeTransaction = function(inserts, updates, deletes,
objectStack);
}
if (updates) {
- obj = {node: node, featureNS: options.featureNS,
- featureType: options.featureType, featurePrefix: options.featurePrefix};
+ obj = {node: node, 'featureNS': options.featureNS,
+ 'featureType': options.featureType, 'featurePrefix': options.featurePrefix,
+ 'srsName': options.srsName};
ol.object.assign(obj, baseObj);
ol.xml.pushSerializeAndPop(obj,
ol.format.WFS.TRANSACTION_SERIALIZERS_,
@@ -90738,15 +79434,17 @@ ol.format.WFS.prototype.writeTransaction = function(inserts, updates, deletes,
objectStack);
}
if (deletes) {
- ol.xml.pushSerializeAndPop({node: node, featureNS: options.featureNS,
- featureType: options.featureType, featurePrefix: options.featurePrefix},
+ ol.xml.pushSerializeAndPop({node: node, 'featureNS': options.featureNS,
+ 'featureType': options.featureType, 'featurePrefix': options.featurePrefix,
+ 'srsName': options.srsName},
ol.format.WFS.TRANSACTION_SERIALIZERS_,
ol.xml.makeSimpleNodeFactory('Delete'), deletes,
objectStack);
}
if (options.nativeElements) {
- ol.xml.pushSerializeAndPop({node: node, featureNS: options.featureNS,
- featureType: options.featureType, featurePrefix: options.featurePrefix},
+ ol.xml.pushSerializeAndPop({node: node, 'featureNS': options.featureNS,
+ 'featureType': options.featureType, 'featurePrefix': options.featurePrefix,
+ 'srsName': options.srsName},
ol.format.WFS.TRANSACTION_SERIALIZERS_,
ol.xml.makeSimpleNodeFactory('Native'), options.nativeElements,
objectStack);
@@ -90770,10 +79468,10 @@ ol.format.WFS.prototype.readProjection;
* @inheritDoc
*/
ol.format.WFS.prototype.readProjectionFromDocument = function(doc) {
- goog.asserts.assert(doc.nodeType == goog.dom.NodeType.DOCUMENT,
+ goog.asserts.assert(doc.nodeType == Node.DOCUMENT_NODE,
'doc.nodeType should be a DOCUMENT');
for (var n = doc.firstChild; n; n = n.nextSibling) {
- if (n.nodeType == goog.dom.NodeType.ELEMENT) {
+ if (n.nodeType == Node.ELEMENT_NODE) {
return this.readProjectionFromNode(n);
}
}
@@ -90785,7 +79483,7 @@ ol.format.WFS.prototype.readProjectionFromDocument = function(doc) {
* @inheritDoc
*/
ol.format.WFS.prototype.readProjectionFromNode = function(node) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'FeatureCollection',
'localName should be FeatureCollection');
@@ -90839,7 +79537,7 @@ ol.format.WKT = function(opt_options) {
var options = opt_options ? opt_options : {};
- goog.base(this);
+ ol.format.TextFeature.call(this);
/**
* Split GeometryCollection into multiple features.
@@ -90850,7 +79548,7 @@ ol.format.WKT = function(opt_options) {
options.splitCollection : false;
};
-goog.inherits(ol.format.WKT, ol.format.TextFeature);
+ol.inherits(ol.format.WKT, ol.format.TextFeature);
/**
@@ -91670,7 +80368,6 @@ ol.format.WKT.Parser.GeometryParser_ = {
goog.provide('ol.format.WMSCapabilities');
goog.require('goog.asserts');
-goog.require('goog.dom.NodeType');
goog.require('ol');
goog.require('ol.format.XLink');
goog.require('ol.format.XML');
@@ -91688,14 +80385,14 @@ goog.require('ol.xml');
*/
ol.format.WMSCapabilities = function() {
- goog.base(this);
+ ol.format.XML.call(this);
/**
* @type {string|undefined}
*/
this.version = undefined;
};
-goog.inherits(ol.format.WMSCapabilities, ol.format.XML);
+ol.inherits(ol.format.WMSCapabilities, ol.format.XML);
/**
@@ -91714,10 +80411,10 @@ ol.format.WMSCapabilities.prototype.read;
* @return {Object} WMS Capability object.
*/
ol.format.WMSCapabilities.prototype.readFromDocument = function(doc) {
- goog.asserts.assert(doc.nodeType == goog.dom.NodeType.DOCUMENT,
+ goog.asserts.assert(doc.nodeType == Node.DOCUMENT_NODE,
'doc.nodeType should be DOCUMENT');
for (var n = doc.firstChild; n; n = n.nextSibling) {
- if (n.nodeType == goog.dom.NodeType.ELEMENT) {
+ if (n.nodeType == Node.ELEMENT_NODE) {
return this.readFromNode(n);
}
}
@@ -91730,7 +80427,7 @@ ol.format.WMSCapabilities.prototype.readFromDocument = function(doc) {
* @return {Object} WMS Capability object.
*/
ol.format.WMSCapabilities.prototype.readFromNode = function(node) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'WMS_Capabilities' ||
node.localName == 'WMT_MS_Capabilities',
@@ -91751,7 +80448,7 @@ ol.format.WMSCapabilities.prototype.readFromNode = function(node) {
* @return {Object|undefined} Attribution object.
*/
ol.format.WMSCapabilities.readAttribution_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'Attribution',
'localName should be Attribution');
@@ -91767,7 +80464,7 @@ ol.format.WMSCapabilities.readAttribution_ = function(node, objectStack) {
* @return {Object} Bounding box object.
*/
ol.format.WMSCapabilities.readBoundingBox_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'BoundingBox',
'localName should be BoundingBox');
@@ -91799,7 +80496,7 @@ ol.format.WMSCapabilities.readBoundingBox_ = function(node, objectStack) {
* @return {ol.Extent|undefined} Bounding box object.
*/
ol.format.WMSCapabilities.readEXGeographicBoundingBox_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'EX_GeographicBoundingBox',
'localName should be EX_GeographicBoundingBox');
@@ -91836,7 +80533,7 @@ ol.format.WMSCapabilities.readEXGeographicBoundingBox_ = function(node, objectSt
* @return {Object|undefined} Capability object.
*/
ol.format.WMSCapabilities.readCapability_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'Capability',
'localName should be Capability');
@@ -91852,7 +80549,7 @@ ol.format.WMSCapabilities.readCapability_ = function(node, objectStack) {
* @return {Object|undefined} Service object.
*/
ol.format.WMSCapabilities.readService_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'Service',
'localName should be Service');
@@ -91868,7 +80565,7 @@ ol.format.WMSCapabilities.readService_ = function(node, objectStack) {
* @return {Object|undefined} Contact information object.
*/
ol.format.WMSCapabilities.readContactInformation_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType shpuld be ELEMENT');
goog.asserts.assert(node.localName == 'ContactInformation',
'localName should be ContactInformation');
@@ -91885,7 +80582,7 @@ ol.format.WMSCapabilities.readContactInformation_ = function(node, objectStack)
* @return {Object|undefined} Contact person object.
*/
ol.format.WMSCapabilities.readContactPersonPrimary_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'ContactPersonPrimary',
'localName should be ContactPersonPrimary');
@@ -91902,7 +80599,7 @@ ol.format.WMSCapabilities.readContactPersonPrimary_ = function(node, objectStack
* @return {Object|undefined} Contact address object.
*/
ol.format.WMSCapabilities.readContactAddress_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'ContactAddress',
'localName should be ContactAddress');
@@ -91919,7 +80616,7 @@ ol.format.WMSCapabilities.readContactAddress_ = function(node, objectStack) {
* @return {Array.<string>|undefined} Format array.
*/
ol.format.WMSCapabilities.readException_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'Exception',
'localName should be Exception');
@@ -91935,7 +80632,7 @@ ol.format.WMSCapabilities.readException_ = function(node, objectStack) {
* @return {Object|undefined} Layer object.
*/
ol.format.WMSCapabilities.readCapabilityLayer_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'Layer', 'localName should be Layer');
return ol.xml.pushParseAndPop(
@@ -91950,7 +80647,7 @@ ol.format.WMSCapabilities.readCapabilityLayer_ = function(node, objectStack) {
* @return {Object|undefined} Layer object.
*/
ol.format.WMSCapabilities.readLayer_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'Layer', 'localName should be Layer');
var parentLayerObject = /** @type {Object.<string,*>} */
@@ -92032,7 +80729,7 @@ ol.format.WMSCapabilities.readLayer_ = function(node, objectStack) {
* @return {Object} Dimension object.
*/
ol.format.WMSCapabilities.readDimension_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'Dimension',
'localName should be Dimension');
@@ -92059,7 +80756,7 @@ ol.format.WMSCapabilities.readDimension_ = function(node, objectStack) {
* @return {Object|undefined} Online resource object.
*/
ol.format.WMSCapabilities.readFormatOnlineresource_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
return ol.xml.pushParseAndPop(
{}, ol.format.WMSCapabilities.FORMAT_ONLINERESOURCE_PARSERS_,
@@ -92074,7 +80771,7 @@ ol.format.WMSCapabilities.readFormatOnlineresource_ = function(node, objectStack
* @return {Object|undefined} Request object.
*/
ol.format.WMSCapabilities.readRequest_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'Request',
'localName should be Request');
@@ -92090,7 +80787,7 @@ ol.format.WMSCapabilities.readRequest_ = function(node, objectStack) {
* @return {Object|undefined} DCP type object.
*/
ol.format.WMSCapabilities.readDCPType_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'DCPType',
'localName should be DCPType');
@@ -92106,7 +80803,7 @@ ol.format.WMSCapabilities.readDCPType_ = function(node, objectStack) {
* @return {Object|undefined} HTTP object.
*/
ol.format.WMSCapabilities.readHTTP_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'HTTP', 'localName should be HTTP');
return ol.xml.pushParseAndPop(
@@ -92121,7 +80818,7 @@ ol.format.WMSCapabilities.readHTTP_ = function(node, objectStack) {
* @return {Object|undefined} Operation type object.
*/
ol.format.WMSCapabilities.readOperationType_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
return ol.xml.pushParseAndPop(
{}, ol.format.WMSCapabilities.OPERATIONTYPE_PARSERS_, node, objectStack);
@@ -92135,7 +80832,7 @@ ol.format.WMSCapabilities.readOperationType_ = function(node, objectStack) {
* @return {Object|undefined} Online resource object.
*/
ol.format.WMSCapabilities.readSizedFormatOnlineresource_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
var formatOnlineresource =
ol.format.WMSCapabilities.readFormatOnlineresource_(node, objectStack);
@@ -92158,7 +80855,7 @@ ol.format.WMSCapabilities.readSizedFormatOnlineresource_ = function(node, object
* @return {Object|undefined} Authority URL object.
*/
ol.format.WMSCapabilities.readAuthorityURL_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'AuthorityURL',
'localName should be AuthorityURL');
@@ -92179,7 +80876,7 @@ ol.format.WMSCapabilities.readAuthorityURL_ = function(node, objectStack) {
* @return {Object|undefined} Metadata URL object.
*/
ol.format.WMSCapabilities.readMetadataURL_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'MetadataURL',
'localName should be MetadataURL');
@@ -92200,7 +80897,7 @@ ol.format.WMSCapabilities.readMetadataURL_ = function(node, objectStack) {
* @return {Object|undefined} Style object.
*/
ol.format.WMSCapabilities.readStyle_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'Style', 'localName should be Style');
return ol.xml.pushParseAndPop(
@@ -92215,7 +80912,7 @@ ol.format.WMSCapabilities.readStyle_ = function(node, objectStack) {
* @return {Array.<string>|undefined} Keyword list.
*/
ol.format.WMSCapabilities.readKeywordList_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'KeywordList',
'localName should be KeywordList');
@@ -92531,7 +81228,6 @@ ol.format.WMSCapabilities.KEYWORDLIST_PARSERS_ = ol.xml.makeStructureNS(
goog.provide('ol.format.WMSGetFeatureInfo');
goog.require('goog.asserts');
-goog.require('goog.dom.NodeType');
goog.require('ol.array');
goog.require('ol.format.GML2');
goog.require('ol.format.XMLFeature');
@@ -92573,9 +81269,9 @@ ol.format.WMSGetFeatureInfo = function(opt_options) {
*/
this.layers_ = options.layers ? options.layers : null;
- goog.base(this);
+ ol.format.XMLFeature.call(this);
};
-goog.inherits(ol.format.WMSGetFeatureInfo, ol.format.XMLFeature);
+ol.inherits(ol.format.WMSGetFeatureInfo, ol.format.XMLFeature);
/**
@@ -92603,7 +81299,7 @@ ol.format.WMSGetFeatureInfo.layerIdentifier_ = '_layer';
ol.format.WMSGetFeatureInfo.prototype.readFeatures_ = function(node, objectStack) {
node.setAttribute('namespaceURI', this.featureNS_);
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
var localName = node.localName;
/** @type {Array.<ol.Feature>} */
@@ -92614,7 +81310,7 @@ ol.format.WMSGetFeatureInfo.prototype.readFeatures_ = function(node, objectStack
if (localName == 'msGMLOutput') {
for (var i = 0, ii = node.childNodes.length; i < ii; i++) {
var layer = node.childNodes[i];
- if (layer.nodeType !== goog.dom.NodeType.ELEMENT) {
+ if (layer.nodeType !== Node.ELEMENT_NODE) {
continue;
}
var context = objectStack[0];
@@ -92689,7 +81385,6 @@ ol.format.WMSGetFeatureInfo.prototype.readFeaturesFromNode = function(node, opt_
goog.provide('ol.format.WMTSCapabilities');
goog.require('goog.asserts');
-goog.require('goog.dom.NodeType');
goog.require('ol.extent');
goog.require('ol.format.OWS');
goog.require('ol.format.XLink');
@@ -92707,7 +81402,7 @@ goog.require('ol.xml');
* @api
*/
ol.format.WMTSCapabilities = function() {
- goog.base(this);
+ ol.format.XML.call(this);
/**
* @type {ol.format.OWS}
@@ -92715,7 +81410,7 @@ ol.format.WMTSCapabilities = function() {
*/
this.owsParser_ = new ol.format.OWS();
};
-goog.inherits(ol.format.WMTSCapabilities, ol.format.XML);
+ol.inherits(ol.format.WMTSCapabilities, ol.format.XML);
/**
@@ -92734,10 +81429,10 @@ ol.format.WMTSCapabilities.prototype.read;
* @return {Object} WMTS Capability object.
*/
ol.format.WMTSCapabilities.prototype.readFromDocument = function(doc) {
- goog.asserts.assert(doc.nodeType == goog.dom.NodeType.DOCUMENT,
+ goog.asserts.assert(doc.nodeType == Node.DOCUMENT_NODE,
'doc.nodeType should be DOCUMENT');
for (var n = doc.firstChild; n; n = n.nextSibling) {
- if (n.nodeType == goog.dom.NodeType.ELEMENT) {
+ if (n.nodeType == Node.ELEMENT_NODE) {
return this.readFromNode(n);
}
}
@@ -92750,7 +81445,7 @@ ol.format.WMTSCapabilities.prototype.readFromDocument = function(doc) {
* @return {Object} WMTS Capability object.
*/
ol.format.WMTSCapabilities.prototype.readFromNode = function(node) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'Capabilities',
'localName should be Capabilities');
@@ -92774,7 +81469,7 @@ ol.format.WMTSCapabilities.prototype.readFromNode = function(node) {
* @return {Object|undefined} Attribution object.
*/
ol.format.WMTSCapabilities.readContents_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'Contents',
'localName should be Contents');
@@ -92791,7 +81486,7 @@ ol.format.WMTSCapabilities.readContents_ = function(node, objectStack) {
* @return {Object|undefined} Layers object.
*/
ol.format.WMTSCapabilities.readLayer_ = function(node, objectStack) {
- goog.asserts.assert(node.nodeType == goog.dom.NodeType.ELEMENT,
+ goog.asserts.assert(node.nodeType == Node.ELEMENT_NODE,
'node.nodeType should be ELEMENT');
goog.asserts.assert(node.localName == 'Layer', 'localName should be Layer');
return ol.xml.pushParseAndPop({},
@@ -93124,7 +81819,6 @@ ol.format.WMTSCapabilities.TM_PARSERS_ = ol.xml.makeStructureNS(
// FIXME handle geolocation not supported
goog.provide('ol.Geolocation');
-goog.provide('ol.GeolocationProperty');
goog.require('ol.events');
goog.require('ol.events.EventType');
@@ -93182,7 +81876,7 @@ ol.GeolocationProperty = {
*/
ol.Geolocation = function(opt_options) {
- goog.base(this);
+ ol.Object.call(this);
var options = opt_options || {};
@@ -93222,7 +81916,7 @@ ol.Geolocation = function(opt_options) {
this.setTracking(options.tracking !== undefined ? options.tracking : false);
};
-goog.inherits(ol.Geolocation, ol.Object);
+ol.inherits(ol.Geolocation, ol.Object);
/**
@@ -93230,7 +81924,7 @@ goog.inherits(ol.Geolocation, ol.Object);
*/
ol.Geolocation.prototype.disposeInternal = function() {
this.setTracking(false);
- goog.base(this, 'disposeInternal');
+ ol.Object.prototype.disposeInternal.call(this);
};
@@ -93490,7 +82184,6 @@ goog.require('ol.geom.GeometryLayout');
goog.require('ol.geom.GeometryType');
goog.require('ol.geom.SimpleGeometry');
goog.require('ol.geom.flat.deflate');
-goog.require('ol.proj');
/**
@@ -93505,11 +82198,11 @@ goog.require('ol.proj');
* @api
*/
ol.geom.Circle = function(center, opt_radius, opt_layout) {
- goog.base(this);
+ ol.geom.SimpleGeometry.call(this);
var radius = opt_radius ? opt_radius : 0;
this.setCenterAndRadius(center, radius, opt_layout);
};
-goog.inherits(ol.geom.Circle, ol.geom.SimpleGeometry);
+ol.inherits(ol.geom.Circle, ol.geom.SimpleGeometry);
/**
@@ -93728,9 +82421,9 @@ ol.geom.Circle.prototype.setRadius = function(radius) {
* correspond to the shape that would be obtained by transforming every point
* of the original circle.
*
- * @param {ol.proj.ProjectionLike} source The current projection. Can be a
+ * @param {ol.ProjectionLike} source The current projection. Can be a
* string identifier or a {@link ol.proj.Projection} object.
- * @param {ol.proj.ProjectionLike} destination The desired projection. Can be a
+ * @param {ol.ProjectionLike} destination The desired projection. Can be a
* string identifier or a {@link ol.proj.Projection} object.
* @return {ol.geom.Circle} This geometry. Note that original geometry is
* modified in place.
@@ -94477,7 +83170,7 @@ goog.require('ol.object');
ol.Image = function(extent, resolution, pixelRatio, attributions, src,
crossOrigin, imageLoadFunction) {
- goog.base(this, extent, resolution, pixelRatio, ol.ImageState.IDLE,
+ ol.ImageBase.call(this, extent, resolution, pixelRatio, ol.ImageState.IDLE,
attributions);
/**
@@ -94503,7 +83196,7 @@ ol.Image = function(extent, resolution, pixelRatio, attributions, src,
/**
* @private
- * @type {Array.<ol.events.Key>}
+ * @type {Array.<ol.EventsKey>}
*/
this.imageListenerKeys_ = null;
@@ -94520,7 +83213,7 @@ ol.Image = function(extent, resolution, pixelRatio, attributions, src,
this.imageLoadFunction_ = imageLoadFunction;
};
-goog.inherits(ol.Image, ol.ImageBase);
+ol.inherits(ol.Image, ol.ImageBase);
/**
@@ -94576,10 +83269,13 @@ ol.Image.prototype.handleImageLoad_ = function() {
/**
- * Load not yet loaded URI.
+ * Load the image or retry if loading previously failed.
+ * Loading is taken care of by the tile queue, and calling this method is
+ * only needed for preloading or for reloading in case of an error.
+ * @api
*/
ol.Image.prototype.load = function() {
- if (this.state == ol.ImageState.IDLE) {
+ if (this.state == ol.ImageState.IDLE || this.state == ol.ImageState.ERROR) {
this.state = ol.ImageState.LOADING;
this.changed();
goog.asserts.assert(!this.imageListenerKeys_,
@@ -94636,7 +83332,7 @@ goog.require('ol.object');
*/
ol.ImageTile = function(tileCoord, state, src, crossOrigin, tileLoadFunction) {
- goog.base(this, tileCoord, state);
+ ol.Tile.call(this, tileCoord, state);
/**
* Image URI
@@ -94663,7 +83359,7 @@ ol.ImageTile = function(tileCoord, state, src, crossOrigin, tileLoadFunction) {
/**
* @private
- * @type {Array.<ol.events.Key>}
+ * @type {Array.<ol.EventsKey>}
*/
this.imageListenerKeys_ = null;
@@ -94674,7 +83370,7 @@ ol.ImageTile = function(tileCoord, state, src, crossOrigin, tileLoadFunction) {
this.tileLoadFunction_ = tileLoadFunction;
};
-goog.inherits(ol.ImageTile, ol.Tile);
+ol.inherits(ol.ImageTile, ol.Tile);
/**
@@ -94689,7 +83385,7 @@ ol.ImageTile.prototype.disposeInternal = function() {
}
this.state = ol.TileState.ABORT;
this.changed();
- goog.base(this, 'disposeInternal');
+ ol.Tile.prototype.disposeInternal.call(this);
};
@@ -94754,10 +83450,13 @@ ol.ImageTile.prototype.handleImageLoad_ = function() {
/**
- * Load not yet loaded URI.
+ * Load the image or retry if loading previously failed.
+ * Loading is taken care of by the tile queue, and calling this method is
+ * only needed for preloading or for reloading in case of an error.
+ * @api
*/
ol.ImageTile.prototype.load = function() {
- if (this.state == ol.TileState.IDLE) {
+ if (this.state == ol.TileState.IDLE || this.state == ol.TileState.ERROR) {
this.state = ol.TileState.LOADING;
this.changed();
goog.asserts.assert(!this.imageListenerKeys_,
@@ -94813,7 +83512,7 @@ ol.interaction.DragAndDrop = function(opt_options) {
var options = opt_options ? opt_options : {};
- goog.base(this, {
+ ol.interaction.Interaction.call(this, {
handleEvent: ol.interaction.DragAndDrop.handleEvent
});
@@ -94833,7 +83532,7 @@ ol.interaction.DragAndDrop = function(opt_options) {
/**
* @private
- * @type {Array.<ol.events.Key>}
+ * @type {Array.<ol.EventsKey>}
*/
this.dropListenKeys_ = null;
@@ -94844,7 +83543,7 @@ ol.interaction.DragAndDrop = function(opt_options) {
this.target = options.target ? options.target : null;
};
-goog.inherits(ol.interaction.DragAndDrop, ol.interaction.Interaction);
+ol.inherits(ol.interaction.DragAndDrop, ol.interaction.Interaction);
/**
@@ -94932,7 +83631,7 @@ ol.interaction.DragAndDrop.prototype.setMap = function(map) {
this.dropListenKeys_.forEach(ol.events.unlistenByKey);
this.dropListenKeys_ = null;
}
- goog.base(this, 'setMap', map);
+ ol.interaction.Interaction.prototype.setMap.call(this, map);
if (map) {
var dropArea = this.target ? this.target : map.getViewport();
this.dropListenKeys_ = [
@@ -94944,7 +83643,7 @@ ol.interaction.DragAndDrop.prototype.setMap = function(map) {
ol.interaction.DragAndDrop.handleStop_, this),
ol.events.listen(dropArea, ol.events.EventType.DROP,
ol.interaction.DragAndDrop.handleStop_, this)
- ]
+ ];
}
};
@@ -94994,7 +83693,7 @@ ol.interaction.DragAndDropEventType = {
*/
ol.interaction.DragAndDropEvent = function(type, target, file, opt_features, opt_projection) {
- goog.base(this, type, target);
+ ol.events.Event.call(this, type, target);
/**
* The features parsed from dropped data.
@@ -95018,7 +83717,7 @@ ol.interaction.DragAndDropEvent = function(type, target, file, opt_features, opt
this.projection = opt_projection;
};
-goog.inherits(ol.interaction.DragAndDropEvent, ol.events.Event);
+ol.inherits(ol.interaction.DragAndDropEvent, ol.events.Event);
goog.provide('ol.interaction.DragRotateAndZoom');
@@ -95048,7 +83747,7 @@ ol.interaction.DragRotateAndZoom = function(opt_options) {
var options = opt_options ? opt_options : {};
- goog.base(this, {
+ ol.interaction.Pointer.call(this, {
handleDownEvent: ol.interaction.DragRotateAndZoom.handleDownEvent_,
handleDragEvent: ol.interaction.DragRotateAndZoom.handleDragEvent_,
handleUpEvent: ol.interaction.DragRotateAndZoom.handleUpEvent_
@@ -95056,7 +83755,7 @@ ol.interaction.DragRotateAndZoom = function(opt_options) {
/**
* @private
- * @type {ol.events.ConditionType}
+ * @type {ol.EventsConditionType}
*/
this.condition_ = options.condition ?
options.condition : ol.events.condition.shiftKeyOnly;
@@ -95086,7 +83785,7 @@ ol.interaction.DragRotateAndZoom = function(opt_options) {
this.duration_ = options.duration !== undefined ? options.duration : 400;
};
-goog.inherits(ol.interaction.DragRotateAndZoom, ol.interaction.Pointer);
+ol.inherits(ol.interaction.DragRotateAndZoom, ol.interaction.Pointer);
/**
@@ -95232,7 +83931,7 @@ ol.interaction.DrawEventType = {
*/
ol.interaction.DrawEvent = function(type, feature) {
- goog.base(this, type);
+ ol.events.Event.call(this, type);
/**
* The feature being drawn.
@@ -95242,7 +83941,7 @@ ol.interaction.DrawEvent = function(type, feature) {
this.feature = feature;
};
-goog.inherits(ol.interaction.DrawEvent, ol.events.Event);
+ol.inherits(ol.interaction.DrawEvent, ol.events.Event);
/**
@@ -95257,7 +83956,7 @@ goog.inherits(ol.interaction.DrawEvent, ol.events.Event);
*/
ol.interaction.Draw = function(options) {
- goog.base(this, {
+ ol.interaction.Pointer.call(this, {
handleDownEvent: ol.interaction.Draw.handleDownEvent_,
handleEvent: ol.interaction.Draw.handleEvent,
handleUpEvent: ol.interaction.Draw.handleUpEvent_
@@ -95332,7 +84031,7 @@ ol.interaction.Draw = function(options) {
/**
* A function to decide if a potential finish coordinate is permissable
* @private
- * @type {ol.events.ConditionType}
+ * @type {ol.EventsConditionType}
*/
this.finishCondition_ = options.finishCondition ? options.finishCondition : ol.functions.TRUE;
@@ -95384,7 +84083,7 @@ ol.interaction.Draw = function(options) {
}
/**
- * @type {ol.interaction.DrawGeometryFunctionType}
+ * @type {ol.DrawGeometryFunctionType}
* @private
*/
this.geometryFunction_ = geometryFunction;
@@ -95465,14 +84164,14 @@ ol.interaction.Draw = function(options) {
/**
* @private
- * @type {ol.events.ConditionType}
+ * @type {ol.EventsConditionType}
*/
this.condition_ = options.condition ?
options.condition : ol.events.condition.noModifierKeys;
/**
* @private
- * @type {ol.events.ConditionType}
+ * @type {ol.EventsConditionType}
*/
this.freehandCondition_ = options.freehandCondition ?
options.freehandCondition : ol.events.condition.shiftKeyOnly;
@@ -95482,11 +84181,11 @@ ol.interaction.Draw = function(options) {
this.updateState_, this);
};
-goog.inherits(ol.interaction.Draw, ol.interaction.Pointer);
+ol.inherits(ol.interaction.Draw, ol.interaction.Pointer);
/**
- * @return {ol.style.StyleFunction} Styles.
+ * @return {ol.StyleFunction} Styles.
*/
ol.interaction.Draw.getDefaultStyleFunction = function() {
var styles = ol.style.createDefaultEditingStyles();
@@ -95500,7 +84199,7 @@ ol.interaction.Draw.getDefaultStyleFunction = function() {
* @inheritDoc
*/
ol.interaction.Draw.prototype.setMap = function(map) {
- goog.base(this, 'setMap', map);
+ ol.interaction.Pointer.prototype.setMap.call(this, map);
this.updateState_();
};
@@ -95966,7 +84665,7 @@ ol.interaction.Draw.prototype.updateState_ = function() {
* @param {number=} opt_angle Angle of the first point in radians. 0 means East.
* Default is the angle defined by the heading from the center of the
* regular polygon to the current pointer position.
- * @return {ol.interaction.DrawGeometryFunctionType} Function that draws a
+ * @return {ol.DrawGeometryFunctionType} Function that draws a
* polygon.
* @api
*/
@@ -96098,7 +84797,7 @@ ol.ModifyEventType = {
*/
ol.interaction.ModifyEvent = function(type, features, mapBrowserPointerEvent) {
- goog.base(this, type);
+ ol.events.Event.call(this, type);
/**
* The features being modified.
@@ -96108,13 +84807,13 @@ ol.interaction.ModifyEvent = function(type, features, mapBrowserPointerEvent) {
this.features = features;
/**
- * Associated {@link ol.MapBrowserPointerEvent}.
- * @type {ol.MapBrowserPointerEvent}
+ * Associated {@link ol.MapBrowserEvent}.
+ * @type {ol.MapBrowserEvent}
* @api
*/
- this.mapBrowserPointerEvent = mapBrowserPointerEvent;
+ this.mapBrowserEvent = mapBrowserPointerEvent;
};
-goog.inherits(ol.interaction.ModifyEvent, ol.events.Event);
+ol.inherits(ol.interaction.ModifyEvent, ol.events.Event);
/**
@@ -96129,7 +84828,7 @@ goog.inherits(ol.interaction.ModifyEvent, ol.events.Event);
*/
ol.interaction.Modify = function(options) {
- goog.base(this, {
+ ol.interaction.Pointer.call(this, {
handleDownEvent: ol.interaction.Modify.handleDownEvent_,
handleDragEvent: ol.interaction.Modify.handleDragEvent_,
handleEvent: ol.interaction.Modify.handleEvent,
@@ -96138,7 +84837,7 @@ ol.interaction.Modify = function(options) {
/**
* @private
- * @type {ol.events.ConditionType}
+ * @type {ol.EventsConditionType}
*/
this.condition_ = options.condition ?
options.condition : ol.events.condition.primaryAction;
@@ -96152,10 +84851,10 @@ ol.interaction.Modify = function(options) {
this.defaultDeleteCondition_ = function(mapBrowserEvent) {
return ol.events.condition.noModifierKeys(mapBrowserEvent) &&
ol.events.condition.singleClick(mapBrowserEvent);
- }
+ };
/**
- * @type {ol.events.ConditionType}
+ * @type {ol.EventsConditionType}
* @private
*/
this.deleteCondition_ = options.deleteCondition ?
@@ -96197,7 +84896,7 @@ ol.interaction.Modify = function(options) {
/**
* Segment RTree for each layer
- * @type {ol.structs.RBush.<ol.interaction.SegmentDataType>}
+ * @type {ol.structs.RBush.<ol.ModifySegmentDataType>}
* @private
*/
this.rBush_ = new ol.structs.RBush();
@@ -96280,7 +84979,7 @@ ol.interaction.Modify = function(options) {
this.lastPointerEvent_ = null;
};
-goog.inherits(ol.interaction.Modify, ol.interaction.Pointer);
+ol.inherits(ol.interaction.Modify, ol.interaction.Pointer);
/**
@@ -96337,10 +85036,10 @@ ol.interaction.Modify.prototype.removeFeature_ = function(feature) {
*/
ol.interaction.Modify.prototype.removeFeatureSegmentData_ = function(feature) {
var rBush = this.rBush_;
- var /** @type {Array.<ol.interaction.SegmentDataType>} */ nodesToRemove = [];
+ var /** @type {Array.<ol.ModifySegmentDataType>} */ nodesToRemove = [];
rBush.forEach(
/**
- * @param {ol.interaction.SegmentDataType} node RTree node.
+ * @param {ol.ModifySegmentDataType} node RTree node.
*/
function(node) {
if (feature === node.feature) {
@@ -96358,7 +85057,7 @@ ol.interaction.Modify.prototype.removeFeatureSegmentData_ = function(feature) {
*/
ol.interaction.Modify.prototype.setMap = function(map) {
this.overlay_.setMap(map);
- goog.base(this, 'setMap', map);
+ ol.interaction.Pointer.prototype.setMap.call(this, map);
};
@@ -96404,7 +85103,7 @@ ol.interaction.Modify.prototype.handleFeatureRemove_ = function(evt) {
*/
ol.interaction.Modify.prototype.writePointGeometry_ = function(feature, geometry) {
var coordinates = geometry.getCoordinates();
- var segmentData = /** @type {ol.interaction.SegmentDataType} */ ({
+ var segmentData = /** @type {ol.ModifySegmentDataType} */ ({
feature: feature,
geometry: geometry,
segment: [coordinates, coordinates]
@@ -96423,7 +85122,7 @@ ol.interaction.Modify.prototype.writeMultiPointGeometry_ = function(feature, geo
var coordinates, i, ii, segmentData;
for (i = 0, ii = points.length; i < ii; ++i) {
coordinates = points[i];
- segmentData = /** @type {ol.interaction.SegmentDataType} */ ({
+ segmentData = /** @type {ol.ModifySegmentDataType} */ ({
feature: feature,
geometry: geometry,
depth: [i],
@@ -96445,7 +85144,7 @@ ol.interaction.Modify.prototype.writeLineStringGeometry_ = function(feature, geo
var i, ii, segment, segmentData;
for (i = 0, ii = coordinates.length - 1; i < ii; ++i) {
segment = coordinates.slice(i, i + 2);
- segmentData = /** @type {ol.interaction.SegmentDataType} */ ({
+ segmentData = /** @type {ol.ModifySegmentDataType} */ ({
feature: feature,
geometry: geometry,
index: i,
@@ -96468,7 +85167,7 @@ ol.interaction.Modify.prototype.writeMultiLineStringGeometry_ = function(feature
coordinates = lines[j];
for (i = 0, ii = coordinates.length - 1; i < ii; ++i) {
segment = coordinates.slice(i, i + 2);
- segmentData = /** @type {ol.interaction.SegmentDataType} */ ({
+ segmentData = /** @type {ol.ModifySegmentDataType} */ ({
feature: feature,
geometry: geometry,
depth: [j],
@@ -96493,7 +85192,7 @@ ol.interaction.Modify.prototype.writePolygonGeometry_ = function(feature, geomet
coordinates = rings[j];
for (i = 0, ii = coordinates.length - 1; i < ii; ++i) {
segment = coordinates.slice(i, i + 2);
- segmentData = /** @type {ol.interaction.SegmentDataType} */ ({
+ segmentData = /** @type {ol.ModifySegmentDataType} */ ({
feature: feature,
geometry: geometry,
depth: [j],
@@ -96520,7 +85219,7 @@ ol.interaction.Modify.prototype.writeMultiPolygonGeometry_ = function(feature, g
coordinates = rings[j];
for (i = 0, ii = coordinates.length - 1; i < ii; ++i) {
segment = coordinates.slice(i, i + 2);
- segmentData = /** @type {ol.interaction.SegmentDataType} */ ({
+ segmentData = /** @type {ol.ModifySegmentDataType} */ ({
feature: feature,
geometry: geometry,
depth: [j, k],
@@ -96568,8 +85267,8 @@ ol.interaction.Modify.prototype.createOrUpdateVertexFeature_ = function(coordina
/**
- * @param {ol.interaction.SegmentDataType} a The first segment data.
- * @param {ol.interaction.SegmentDataType} b The second segment data.
+ * @param {ol.ModifySegmentDataType} a The first segment data.
+ * @param {ol.ModifySegmentDataType} b The second segment data.
* @return {number} The difference in indexes.
* @private
*/
@@ -96843,7 +85542,7 @@ ol.interaction.Modify.prototype.handlePointerAtPixel_ = function(pixel, map) {
/**
- * @param {ol.interaction.SegmentDataType} segmentData Segment data.
+ * @param {ol.ModifySegmentDataType} segmentData Segment data.
* @param {ol.Coordinate} vertex Vertex.
* @private
*/
@@ -96894,7 +85593,7 @@ ol.interaction.Modify.prototype.insertVertex_ = function(segmentData, vertex) {
rTree.remove(segmentData);
goog.asserts.assert(index !== undefined, 'index should be defined');
this.updateSegmentIndices_(geometry, index, depth, 1);
- var newSegmentData = /** @type {ol.interaction.SegmentDataType} */ ({
+ var newSegmentData = /** @type {ol.ModifySegmentDataType} */ ({
segment: [segment[0], vertex],
feature: feature,
geometry: geometry,
@@ -96905,7 +85604,7 @@ ol.interaction.Modify.prototype.insertVertex_ = function(segmentData, vertex) {
newSegmentData);
this.dragSegments_.push([newSegmentData, 1]);
- var newSegmentData2 = /** @type {ol.interaction.SegmentDataType} */ ({
+ var newSegmentData2 = /** @type {ol.ModifySegmentDataType} */ ({
segment: [vertex, segment[1]],
feature: feature,
geometry: geometry,
@@ -97033,7 +85732,7 @@ ol.interaction.Modify.prototype.removeVertex_ = function() {
if (left !== undefined && right !== undefined) {
goog.asserts.assert(newIndex >= 0, 'newIndex should be larger than 0');
- var newSegmentData = /** @type {ol.interaction.SegmentDataType} */ ({
+ var newSegmentData = /** @type {ol.ModifySegmentDataType} */ ({
depth: segmentData.depth,
feature: segmentData.feature,
geometry: segmentData.geometry,
@@ -97088,7 +85787,7 @@ ol.interaction.Modify.prototype.updateSegmentIndices_ = function(
/**
- * @return {ol.style.StyleFunction} Styles.
+ * @return {ol.StyleFunction} Styles.
*/
ol.interaction.Modify.getDefaultStyleFunction = function() {
var style = ol.style.createDefaultEditingStyles();
@@ -97144,7 +85843,7 @@ ol.interaction.SelectEventType = {
* @constructor
*/
ol.interaction.SelectEvent = function(type, selected, deselected, mapBrowserEvent) {
- goog.base(this, type);
+ ol.events.Event.call(this, type);
/**
* Selected features array.
@@ -97167,7 +85866,7 @@ ol.interaction.SelectEvent = function(type, selected, deselected, mapBrowserEven
*/
this.mapBrowserEvent = mapBrowserEvent;
};
-goog.inherits(ol.interaction.SelectEvent, ol.events.Event);
+ol.inherits(ol.interaction.SelectEvent, ol.events.Event);
/**
@@ -97190,7 +85889,7 @@ goog.inherits(ol.interaction.SelectEvent, ol.events.Event);
*/
ol.interaction.Select = function(opt_options) {
- goog.base(this, {
+ ol.interaction.Interaction.call(this, {
handleEvent: ol.interaction.Select.handleEvent
});
@@ -97198,28 +85897,28 @@ ol.interaction.Select = function(opt_options) {
/**
* @private
- * @type {ol.events.ConditionType}
+ * @type {ol.EventsConditionType}
*/
this.condition_ = options.condition ?
options.condition : ol.events.condition.singleClick;
/**
* @private
- * @type {ol.events.ConditionType}
+ * @type {ol.EventsConditionType}
*/
this.addCondition_ = options.addCondition ?
options.addCondition : ol.events.condition.never;
/**
* @private
- * @type {ol.events.ConditionType}
+ * @type {ol.EventsConditionType}
*/
this.removeCondition_ = options.removeCondition ?
options.removeCondition : ol.events.condition.never;
/**
* @private
- * @type {ol.events.ConditionType}
+ * @type {ol.EventsConditionType}
*/
this.toggleCondition_ = options.toggleCondition ?
options.toggleCondition : ol.events.condition.shiftKeyOnly;
@@ -97232,7 +85931,7 @@ ol.interaction.Select = function(opt_options) {
/**
* @private
- * @type {ol.interaction.SelectFilterFunction}
+ * @type {ol.SelectFilterFunction}
*/
this.filter_ = options.filter ? options.filter :
ol.functions.TRUE;
@@ -97257,7 +85956,7 @@ ol.interaction.Select = function(opt_options) {
var layerFilter;
if (options.layers) {
- if (goog.isFunction(options.layers)) {
+ if (typeof options.layers === 'function') {
/**
* @param {ol.layer.Layer} layer Layer.
* @return {boolean} Include.
@@ -97301,7 +86000,7 @@ ol.interaction.Select = function(opt_options) {
this.removeFeature_, this);
};
-goog.inherits(ol.interaction.Select, ol.interaction.Interaction);
+ol.inherits(ol.interaction.Select, ol.interaction.Interaction);
/**
@@ -97362,7 +86061,6 @@ ol.interaction.Select.handleEvent = function(mapBrowserEvent) {
var features = this.featureOverlay_.getSource().getFeaturesCollection();
var deselected = [];
var selected = [];
- var change = false;
if (set) {
// Replace the currently selected feature(s) with the feature(s) at the
// pixel, or clear the selected feature(s) if there is no feature at
@@ -97381,11 +86079,10 @@ ol.interaction.Select.handleEvent = function(mapBrowserEvent) {
return !this.multi_;
}
}, this, this.layerFilter_);
- if (selected.length > 0 && features.getLength() == 1 &&
- features.item(0) == selected[0]) {
- // No change
+ if (selected.length > 0 && features.getLength() == 1 && features.item(0) == selected[0]) {
+ // No change; an already selected feature is selected again
+ selected.length = 0;
} else {
- change = true;
if (features.getLength() !== 0) {
deselected = Array.prototype.concat(features.getArray());
features.clear();
@@ -97419,11 +86116,8 @@ ol.interaction.Select.handleEvent = function(mapBrowserEvent) {
features.remove(deselected[i]);
}
features.extend(selected);
- if (selected.length > 0 || deselected.length > 0) {
- change = true;
- }
}
- if (change) {
+ if (selected.length > 0 || deselected.length > 0) {
this.dispatchEvent(
new ol.interaction.SelectEvent(ol.interaction.SelectEventType.SELECT,
selected, deselected, mapBrowserEvent));
@@ -97445,7 +86139,7 @@ ol.interaction.Select.prototype.setMap = function(map) {
if (currentMap) {
selectedFeatures.forEach(currentMap.unskipFeature, currentMap);
}
- goog.base(this, 'setMap', map);
+ ol.interaction.Interaction.prototype.setMap.call(this, map);
this.featureOverlay_.setMap(map);
if (map) {
selectedFeatures.forEach(map.skipFeature, map);
@@ -97454,7 +86148,7 @@ ol.interaction.Select.prototype.setMap = function(map) {
/**
- * @return {ol.style.StyleFunction} Styles.
+ * @return {ol.StyleFunction} Styles.
*/
ol.interaction.Select.getDefaultStyleFunction = function() {
var styles = ol.style.createDefaultEditingStyles();
@@ -97557,7 +86251,7 @@ goog.require('ol.structs.RBush');
*/
ol.interaction.Snap = function(opt_options) {
- goog.base(this, {
+ ol.interaction.Pointer.call(this, {
handleEvent: ol.interaction.Snap.handleEvent_,
handleDownEvent: ol.functions.TRUE,
handleUpEvent: ol.interaction.Snap.handleUpEvent_
@@ -97590,19 +86284,19 @@ ol.interaction.Snap = function(opt_options) {
this.features_ = options.features ? options.features : null;
/**
- * @type {Array.<ol.events.Key>}
+ * @type {Array.<ol.EventsKey>}
* @private
*/
this.featuresListenerKeys_ = [];
/**
- * @type {Object.<number, ol.events.Key>}
+ * @type {Object.<number, ol.EventsKey>}
* @private
*/
this.geometryChangeListenerKeys_ = {};
/**
- * @type {Object.<number, ol.events.Key>}
+ * @type {Object.<number, ol.EventsKey>}
* @private
*/
this.geometryModifyListenerKeys_ = {};
@@ -97639,7 +86333,7 @@ ol.interaction.Snap = function(opt_options) {
options.pixelTolerance : 10;
/**
- * @type {function(ol.interaction.SnapSegmentDataType, ol.interaction.SnapSegmentDataType): number}
+ * @type {function(ol.SnapSegmentDataType, ol.SnapSegmentDataType): number}
* @private
*/
this.sortByDistance_ = ol.interaction.Snap.sortByDistance.bind(this);
@@ -97647,7 +86341,7 @@ ol.interaction.Snap = function(opt_options) {
/**
* Segment RTree for each layer
- * @type {ol.structs.RBush.<ol.interaction.SnapSegmentDataType>}
+ * @type {ol.structs.RBush.<ol.SnapSegmentDataType>}
* @private
*/
this.rBush_ = new ol.structs.RBush();
@@ -97669,7 +86363,7 @@ ol.interaction.Snap = function(opt_options) {
'GeometryCollection': this.writeGeometryCollectionGeometry_
};
};
-goog.inherits(ol.interaction.Snap, ol.interaction.Pointer);
+ol.inherits(ol.interaction.Snap, ol.interaction.Pointer);
/**
@@ -97854,8 +86548,7 @@ ol.interaction.Snap.prototype.setMap = function(map) {
keys.length = 0;
features.forEach(this.forEachFeatureRemove_, this);
}
-
- goog.base(this, 'setMap', map);
+ ol.interaction.Pointer.prototype.setMap.call(this, map);
if (map) {
if (this.features_) {
@@ -97888,7 +86581,7 @@ ol.interaction.Snap.prototype.shouldStopEvent = ol.functions.FALSE;
* @param {ol.Pixel} pixel Pixel
* @param {ol.Coordinate} pixelCoordinate Coordinate
* @param {ol.Map} map Map.
- * @return {ol.interaction.SnapResultType} Snap result
+ * @return {ol.SnapResultType} Snap result
*/
ol.interaction.Snap.prototype.snapTo = function(pixel, pixelCoordinate, map) {
@@ -97947,7 +86640,7 @@ ol.interaction.Snap.prototype.snapTo = function(pixel, pixelCoordinate, map) {
vertexPixel = [Math.round(vertexPixel[0]), Math.round(vertexPixel[1])];
}
}
- return /** @type {ol.interaction.SnapResultType} */ ({
+ return /** @type {ol.SnapResultType} */ ({
snapped: snapped,
vertex: vertex,
vertexPixel: vertexPixel
@@ -97989,7 +86682,7 @@ ol.interaction.Snap.prototype.writeLineStringGeometry_ = function(feature, geome
var i, ii, segment, segmentData;
for (i = 0, ii = coordinates.length - 1; i < ii; ++i) {
segment = coordinates.slice(i, i + 2);
- segmentData = /** @type {ol.interaction.SnapSegmentDataType} */ ({
+ segmentData = /** @type {ol.SnapSegmentDataType} */ ({
feature: feature,
segment: segment
});
@@ -98010,7 +86703,7 @@ ol.interaction.Snap.prototype.writeMultiLineStringGeometry_ = function(feature,
coordinates = lines[j];
for (i = 0, ii = coordinates.length - 1; i < ii; ++i) {
segment = coordinates.slice(i, i + 2);
- segmentData = /** @type {ol.interaction.SnapSegmentDataType} */ ({
+ segmentData = /** @type {ol.SnapSegmentDataType} */ ({
feature: feature,
segment: segment
});
@@ -98030,7 +86723,7 @@ ol.interaction.Snap.prototype.writeMultiPointGeometry_ = function(feature, geome
var coordinates, i, ii, segmentData;
for (i = 0, ii = points.length; i < ii; ++i) {
coordinates = points[i];
- segmentData = /** @type {ol.interaction.SnapSegmentDataType} */ ({
+ segmentData = /** @type {ol.SnapSegmentDataType} */ ({
feature: feature,
segment: [coordinates, coordinates]
});
@@ -98053,7 +86746,7 @@ ol.interaction.Snap.prototype.writeMultiPolygonGeometry_ = function(feature, geo
coordinates = rings[j];
for (i = 0, ii = coordinates.length - 1; i < ii; ++i) {
segment = coordinates.slice(i, i + 2);
- segmentData = /** @type {ol.interaction.SnapSegmentDataType} */ ({
+ segmentData = /** @type {ol.SnapSegmentDataType} */ ({
feature: feature,
segment: segment
});
@@ -98071,7 +86764,7 @@ ol.interaction.Snap.prototype.writeMultiPolygonGeometry_ = function(feature, geo
*/
ol.interaction.Snap.prototype.writePointGeometry_ = function(feature, geometry) {
var coordinates = geometry.getCoordinates();
- var segmentData = /** @type {ol.interaction.SnapSegmentDataType} */ ({
+ var segmentData = /** @type {ol.SnapSegmentDataType} */ ({
feature: feature,
segment: [coordinates, coordinates]
});
@@ -98091,7 +86784,7 @@ ol.interaction.Snap.prototype.writePolygonGeometry_ = function(feature, geometry
coordinates = rings[j];
for (i = 0, ii = coordinates.length - 1; i < ii; ++i) {
segment = coordinates.slice(i, i + 2);
- segmentData = /** @type {ol.interaction.SnapSegmentDataType} */ ({
+ segmentData = /** @type {ol.SnapSegmentDataType} */ ({
feature: feature,
segment: segment
});
@@ -98136,8 +86829,8 @@ ol.interaction.Snap.handleUpEvent_ = function(evt) {
/**
* Sort segments by distance, helper function
- * @param {ol.interaction.SnapSegmentDataType} a The first segment data.
- * @param {ol.interaction.SnapSegmentDataType} b The second segment data.
+ * @param {ol.SnapSegmentDataType} a The first segment data.
+ * @param {ol.SnapSegmentDataType} b The second segment data.
* @return {number} The difference in distance.
* @this {ol.interaction.Snap}
*/
@@ -98197,7 +86890,7 @@ ol.interaction.TranslateEventType = {
*/
ol.interaction.TranslateEvent = function(type, features, coordinate) {
- goog.base(this, type);
+ ol.events.Event.call(this, type);
/**
* The features being translated.
@@ -98214,7 +86907,7 @@ ol.interaction.TranslateEvent = function(type, features, coordinate) {
*/
this.coordinate = coordinate;
};
-goog.inherits(ol.interaction.TranslateEvent, ol.events.Event);
+ol.inherits(ol.interaction.TranslateEvent, ol.events.Event);
/**
@@ -98228,7 +86921,7 @@ goog.inherits(ol.interaction.TranslateEvent, ol.events.Event);
* @api
*/
ol.interaction.Translate = function(options) {
- goog.base(this, {
+ ol.interaction.Pointer.call(this, {
handleDownEvent: ol.interaction.Translate.handleDownEvent_,
handleDragEvent: ol.interaction.Translate.handleDragEvent_,
handleMoveEvent: ol.interaction.Translate.handleMoveEvent_,
@@ -98259,7 +86952,7 @@ ol.interaction.Translate = function(options) {
var layerFilter;
if (options.layers) {
- if (goog.isFunction(options.layers)) {
+ if (typeof options.layers === 'function') {
/**
* @param {ol.layer.Layer} layer Layer.
* @return {boolean} Include.
@@ -98294,7 +86987,7 @@ ol.interaction.Translate = function(options) {
*/
this.lastFeature_ = null;
};
-goog.inherits(ol.interaction.Translate, ol.interaction.Pointer);
+ol.inherits(ol.interaction.Translate, ol.interaction.Pointer);
/**
@@ -98482,7 +87175,7 @@ ol.layer.Heatmap = function(opt_options) {
delete baseOptions.blur;
delete baseOptions.shadow;
delete baseOptions.weight;
- goog.base(this, /** @type {olx.layer.VectorOptions} */ (baseOptions));
+ ol.layer.Vector.call(this, /** @type {olx.layer.VectorOptions} */ (baseOptions));
/**
* @private
@@ -98537,7 +87230,7 @@ ol.layer.Heatmap = function(opt_options) {
} else {
weightFunction = weight;
}
- goog.asserts.assert(goog.isFunction(weightFunction),
+ goog.asserts.assert(typeof weightFunction === 'function',
'weightFunction should be a function');
this.setStyle(function(feature, resolution) {
@@ -98570,7 +87263,7 @@ ol.layer.Heatmap = function(opt_options) {
ol.events.listen(this, ol.render.EventType.RENDER, this.handleRender_, this);
};
-goog.inherits(ol.layer.Heatmap, ol.layer.Vector);
+ol.inherits(ol.layer.Heatmap, ol.layer.Vector);
/**
@@ -98773,19 +87466,6 @@ ol.net.jsonp = function(url, callback, opt_errback, opt_callbackParam) {
ol.global.document.getElementsByTagName('head')[0].appendChild(script);
};
-goog.provide('ol.raster.OperationType');
-
-
-/**
- * Raster operation type. Supported values are `'pixel'` and `'image'`.
- * @enum {string}
- * @api
- */
-ol.raster.OperationType = {
- PIXEL: 'pixel',
- IMAGE: 'image'
-};
-
goog.provide('ol.render');
goog.require('goog.vec.Mat4');
@@ -98871,7 +87551,7 @@ ol.reproj.Tile = function(sourceProj, sourceTileGrid,
pixelRatio, gutter, getTileFunction,
opt_errorThreshold,
opt_renderEdges) {
- goog.base(this, tileCoord, ol.TileState.IDLE);
+ ol.Tile.call(this, tileCoord, ol.TileState.IDLE);
/**
* @private
@@ -98929,7 +87609,7 @@ ol.reproj.Tile = function(sourceProj, sourceTileGrid,
/**
* @private
- * @type {Array.<ol.events.Key>}
+ * @type {Array.<ol.EventsKey>}
*/
this.sourcesListenerKeys_ = null;
@@ -99035,7 +87715,7 @@ ol.reproj.Tile = function(sourceProj, sourceTileGrid,
}
}
};
-goog.inherits(ol.reproj.Tile, ol.Tile);
+ol.inherits(ol.reproj.Tile, ol.Tile);
/**
@@ -99045,7 +87725,7 @@ ol.reproj.Tile.prototype.disposeInternal = function() {
if (this.state == ol.TileState.LOADING) {
this.unlistenSources_();
}
- goog.base(this, 'disposeInternal');
+ ol.Tile.prototype.disposeInternal.call(this);
};
@@ -99198,7 +87878,7 @@ goog.require('ol.source.UrlTile');
*/
ol.source.TileImage = function(options) {
- goog.base(this, {
+ ol.source.UrlTile.call(this, {
attributions: options.attributions,
cacheSize: options.cacheSize,
extent: options.extent,
@@ -99255,7 +87935,7 @@ ol.source.TileImage = function(options) {
*/
this.renderReprojectionEdges_ = false;
};
-goog.inherits(ol.source.TileImage, ol.source.UrlTile);
+ol.inherits(ol.source.TileImage, ol.source.UrlTile);
/**
@@ -99263,7 +87943,7 @@ goog.inherits(ol.source.TileImage, ol.source.UrlTile);
*/
ol.source.TileImage.prototype.canExpireCache = function() {
if (!ol.ENABLE_RASTER_REPROJECTION) {
- return goog.base(this, 'canExpireCache');
+ return ol.source.UrlTile.prototype.canExpireCache.call(this);
}
if (this.tileCache.canExpireCache()) {
return true;
@@ -99283,7 +87963,7 @@ ol.source.TileImage.prototype.canExpireCache = function() {
*/
ol.source.TileImage.prototype.expireCache = function(projection, usedTiles) {
if (!ol.ENABLE_RASTER_REPROJECTION) {
- goog.base(this, 'expireCache', projection, usedTiles);
+ ol.source.UrlTile.prototype.expireCache.call(this, projection, usedTiles);
return;
}
var usedTileCache = this.getTileCacheForProjection(projection);
@@ -99328,7 +88008,7 @@ ol.source.TileImage.prototype.getOpaque = function(projection) {
!ol.proj.equivalent(this.getProjection(), projection)) {
return false;
} else {
- return goog.base(this, 'getOpaque', projection);
+ return ol.source.UrlTile.prototype.getOpaque.call(this, projection);
}
};
@@ -99338,7 +88018,7 @@ ol.source.TileImage.prototype.getOpaque = function(projection) {
*/
ol.source.TileImage.prototype.getTileGridForProjection = function(projection) {
if (!ol.ENABLE_RASTER_REPROJECTION) {
- return goog.base(this, 'getTileGridForProjection', projection);
+ return ol.source.UrlTile.prototype.getTileGridForProjection.call(this, projection);
}
var thisProj = this.getProjection();
if (this.tileGrid &&
@@ -99360,7 +88040,7 @@ ol.source.TileImage.prototype.getTileGridForProjection = function(projection) {
*/
ol.source.TileImage.prototype.getTileCacheForProjection = function(projection) {
if (!ol.ENABLE_RASTER_REPROJECTION) {
- return goog.base(this, 'getTileCacheForProjection', projection);
+ return ol.source.UrlTile.prototype.getTileCacheForProjection.call(this, projection);
}
var thisProj = this.getProjection();
if (!thisProj || ol.proj.equivalent(thisProj, projection)) {
@@ -99520,7 +88200,7 @@ ol.source.TileImage.prototype.setRenderReprojectionEdges = function(render) {
* (e.g. projection has no extent defined) or
* for optimization reasons (custom tile size, resolutions, ...).
*
- * @param {ol.proj.ProjectionLike} projection Projection.
+ * @param {ol.ProjectionLike} projection Projection.
* @param {ol.tilegrid.TileGrid} tilegrid Tile grid to use for the projection.
* @api
*/
@@ -99570,7 +88250,7 @@ goog.require('ol.tilecoord');
*/
ol.source.BingMaps = function(options) {
- goog.base(this, {
+ ol.source.TileImage.call(this, {
cacheSize: options.cacheSize,
crossOrigin: 'anonymous',
opaque: true,
@@ -99601,7 +88281,7 @@ ol.source.BingMaps = function(options) {
'jsonp');
};
-goog.inherits(ol.source.BingMaps, ol.source.TileImage);
+ol.inherits(ol.source.BingMaps, ol.source.TileImage);
/**
@@ -99760,7 +88440,7 @@ ol.source.XYZ = function(opt_options) {
tileSize: options.tileSize
});
- goog.base(this, {
+ ol.source.TileImage.call(this, {
attributions: options.attributions,
cacheSize: options.cacheSize,
crossOrigin: options.crossOrigin,
@@ -99778,7 +88458,7 @@ ol.source.XYZ = function(opt_options) {
});
};
-goog.inherits(ol.source.XYZ, ol.source.TileImage);
+ol.inherits(ol.source.XYZ, ol.source.TileImage);
goog.provide('ol.source.CartoDB');
@@ -99822,7 +88502,7 @@ ol.source.CartoDB = function(options) {
*/
this.templateCache_ = {};
- goog.base(this, {
+ ol.source.XYZ.call(this, {
attributions: options.attributions,
cacheSize: options.cacheSize,
crossOrigin: options.crossOrigin,
@@ -99835,7 +88515,7 @@ ol.source.CartoDB = function(options) {
});
this.initializeMap_();
};
-goog.inherits(ol.source.CartoDB, ol.source.XYZ);
+ol.inherits(ol.source.CartoDB, ol.source.XYZ);
/**
@@ -99930,7 +88610,7 @@ ol.source.CartoDB.prototype.handleInitResponse_ = function(paramHash, event) {
*/
ol.source.CartoDB.prototype.handleInitError_ = function(event) {
this.setState(ol.source.State.ERROR);
-}
+};
/**
@@ -99970,7 +88650,7 @@ goog.require('ol.source.Vector');
* @api
*/
ol.source.Cluster = function(options) {
- goog.base(this, {
+ ol.source.Vector.call(this, {
attributions: options.attributions,
extent: options.extent,
logo: options.logo,
@@ -100016,7 +88696,7 @@ ol.source.Cluster = function(options) {
this.source_.on(ol.events.EventType.CHANGE,
ol.source.Cluster.prototype.onSourceChange_, this);
};
-goog.inherits(ol.source.Cluster, ol.source.Vector);
+ol.inherits(ol.source.Cluster, ol.source.Vector);
/**
@@ -100125,10 +88805,31 @@ ol.source.Cluster.prototype.createCluster_ = function(features) {
return cluster;
};
+goog.provide('ol.uri');
+
+
+/**
+ * Appends query parameters to a URI.
+ *
+ * @param {string} uri The original URI, which may already have query data.
+ * @param {!Object} params An object where keys are URI-encoded parameter keys,
+ * and the values are arbitrary types or arrays.
+ * @return {string} The new URI.
+ */
+ol.uri.appendParams = function(uri, params) {
+ var qs = Object.keys(params).map(function(k) {
+ return k + '=' + encodeURIComponent(params[k]);
+ }).join('&');
+ // remove any trailing ? or &
+ uri = uri.replace(/[?&]$/, '');
+ // append ? or & depending on whether uri has existing parameters
+ uri = uri.indexOf('?') === -1 ? uri + '?' : uri + '&';
+ return uri + qs;
+};
+
goog.provide('ol.source.ImageArcGISRest');
goog.require('goog.asserts');
-goog.require('goog.uri.utils');
goog.require('ol');
goog.require('ol.Image');
goog.require('ol.events');
@@ -100137,6 +88838,7 @@ goog.require('ol.extent');
goog.require('ol.object');
goog.require('ol.proj');
goog.require('ol.source.Image');
+goog.require('ol.uri');
/**
@@ -100158,7 +88860,7 @@ ol.source.ImageArcGISRest = function(opt_options) {
var options = opt_options || {};
- goog.base(this, {
+ ol.source.Image.call(this, {
attributions: options.attributions,
logo: options.logo,
projection: options.projection,
@@ -100218,7 +88920,7 @@ ol.source.ImageArcGISRest = function(opt_options) {
this.ratio_ = options.ratio !== undefined ? options.ratio : 1.5;
};
-goog.inherits(ol.source.ImageArcGISRest, ol.source.Image);
+ol.inherits(ol.source.ImageArcGISRest, ol.source.Image);
/**
@@ -100342,7 +89044,7 @@ ol.source.ImageArcGISRest.prototype.getRequestUrl_ = function(extent, size, pixe
if (modifiedUrl == url) {
goog.asserts.fail('Unknown Rest Service', url);
}
- return goog.uri.utils.appendParamsFromMap(modifiedUrl, params);
+ return ol.uri.appendParams(modifiedUrl, params);
};
@@ -100397,11 +89099,11 @@ goog.provide('ol.source.ImageMapGuide');
goog.require('ol.events');
goog.require('ol.events.EventType');
-goog.require('goog.uri.utils');
goog.require('ol.Image');
goog.require('ol.extent');
goog.require('ol.object');
goog.require('ol.source.Image');
+goog.require('ol.uri');
/**
@@ -100416,7 +89118,7 @@ goog.require('ol.source.Image');
*/
ol.source.ImageMapGuide = function(options) {
- goog.base(this, {
+ ol.source.Image.call(this, {
projection: options.projection,
resolutions: options.resolutions
});
@@ -100493,7 +89195,7 @@ ol.source.ImageMapGuide = function(options) {
this.renderedRevision_ = 0;
};
-goog.inherits(ol.source.ImageMapGuide, ol.source.Image);
+ol.inherits(ol.source.ImageMapGuide, ol.source.Image);
/**
@@ -100617,7 +89319,7 @@ ol.source.ImageMapGuide.prototype.getUrl = function(baseUrl, params, extent, siz
'SETVIEWCENTERY': center[1]
};
ol.object.assign(baseParams, params);
- return goog.uri.utils.appendParamsFromMap(baseUrl, baseParams);
+ return ol.uri.appendParams(baseUrl, baseParams);
};
@@ -100664,7 +89366,7 @@ ol.source.ImageStatic = function(options) {
options.imageLoadFunction !== undefined ?
options.imageLoadFunction : ol.source.Image.defaultImageLoadFunction;
- goog.base(this, {
+ ol.source.Image.call(this, {
attributions: options.attributions,
logo: options.logo,
projection: ol.proj.get(options.projection)
@@ -100687,7 +89389,7 @@ ol.source.ImageStatic = function(options) {
this.handleImageChange, this);
};
-goog.inherits(ol.source.ImageStatic, ol.source.Image);
+ol.inherits(ol.source.ImageStatic, ol.source.Image);
/**
@@ -100728,7 +89430,7 @@ ol.source.ImageStatic.prototype.handleImageChange = function(evt) {
this.image_.setImage(canvas);
}
}
- goog.base(this, 'handleImageChange', evt);
+ ol.source.Image.prototype.handleImageChange.call(this, evt);
};
goog.provide('ol.source.wms');
@@ -100740,7 +89442,6 @@ goog.provide('ol.source.wms.ServerType');
* `'qgis'`. These are servers that have vendor parameters beyond the WMS
* specification that OpenLayers can make use of.
* @enum {string}
- * @api
*/
ol.source.wms.ServerType = {
CARMENTA_SERVER: 'carmentaserver',
@@ -100754,7 +89455,6 @@ ol.source.wms.ServerType = {
goog.provide('ol.source.ImageWMS');
goog.require('goog.asserts');
-goog.require('goog.uri.utils');
goog.require('ol');
goog.require('ol.Image');
goog.require('ol.events');
@@ -100766,6 +89466,7 @@ goog.require('ol.source.Image');
goog.require('ol.source.wms');
goog.require('ol.source.wms.ServerType');
goog.require('ol.string');
+goog.require('ol.uri');
/**
@@ -100782,7 +89483,7 @@ ol.source.ImageWMS = function(opt_options) {
var options = opt_options || {};
- goog.base(this, {
+ ol.source.Image.call(this, {
attributions: options.attributions,
logo: options.logo,
projection: options.projection,
@@ -100860,7 +89561,7 @@ ol.source.ImageWMS = function(opt_options) {
this.ratio_ = options.ratio !== undefined ? options.ratio : 1.5;
};
-goog.inherits(ol.source.ImageWMS, ol.source.Image);
+ol.inherits(ol.source.ImageWMS, ol.source.Image);
/**
@@ -100877,7 +89578,7 @@ ol.source.ImageWMS.GETFEATUREINFO_IMAGE_SIZE_ = [101, 101];
* constructed.
* @param {ol.Coordinate} coordinate Coordinate.
* @param {number} resolution Resolution.
- * @param {ol.proj.ProjectionLike} projection Projection.
+ * @param {ol.ProjectionLike} projection Projection.
* @param {!Object} params GetFeatureInfo params. `INFO_FORMAT` at least should
* be provided. If `QUERY_LAYERS` is not provided then the layers specified
* in the `LAYERS` parameter will be used. `VERSION` should not be
@@ -101063,7 +89764,7 @@ ol.source.ImageWMS.prototype.getRequestUrl_ = function(extent, size, pixelRatio,
}
params['BBOX'] = bbox.join(',');
- return goog.uri.utils.appendParamsFromMap(this.url_, params);
+ return ol.uri.appendParams(this.url_, params);
};
@@ -101157,7 +89858,7 @@ ol.source.OSM = function(opt_options) {
var url = options.url !== undefined ?
options.url : 'https://{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png';
- goog.base(this, {
+ ol.source.XYZ.call(this, {
attributions: attributions,
cacheSize: options.cacheSize,
crossOrigin: crossOrigin,
@@ -101170,7 +89871,7 @@ ol.source.OSM = function(opt_options) {
});
};
-goog.inherits(ol.source.OSM, ol.source.XYZ);
+ol.inherits(ol.source.OSM, ol.source.XYZ);
/**
@@ -101186,110 +89887,6 @@ ol.source.OSM.ATTRIBUTION = new ol.Attribution({
'contributors.'
});
-goog.provide('ol.source.MapQuest');
-
-goog.require('goog.asserts');
-goog.require('ol.Attribution');
-goog.require('ol.source.OSM');
-goog.require('ol.source.XYZ');
-
-
-/**
- * @classdesc
- * Layer source for the MapQuest tile server.
- *
- * @constructor
- * @extends {ol.source.XYZ}
- * @param {olx.source.MapQuestOptions=} opt_options MapQuest options.
- * @api stable
- */
-ol.source.MapQuest = function(opt_options) {
-
- var options = opt_options || {};
- goog.asserts.assert(options.layer in ol.source.MapQuestConfig,
- 'known layer configured');
-
- var layerConfig = ol.source.MapQuestConfig[options.layer];
-
- /**
- * Layer. Possible values are `osm`, `sat`, and `hyb`.
- * @type {string}
- * @private
- */
- this.layer_ = options.layer;
-
- var url = options.url !== undefined ? options.url :
- 'https://otile{1-4}-s.mqcdn.com/tiles/1.0.0/' +
- this.layer_ + '/{z}/{x}/{y}.jpg';
-
- goog.base(this, {
- attributions: layerConfig.attributions,
- cacheSize: options.cacheSize,
- crossOrigin: 'anonymous',
- logo: 'https://developer.mapquest.com/content/osm/mq_logo.png',
- maxZoom: layerConfig.maxZoom,
- reprojectionErrorThreshold: options.reprojectionErrorThreshold,
- opaque: layerConfig.opaque,
- tileLoadFunction: options.tileLoadFunction,
- url: url
- });
-
-};
-goog.inherits(ol.source.MapQuest, ol.source.XYZ);
-
-
-/**
- * @const
- * @type {ol.Attribution}
- */
-ol.source.MapQuest.TILE_ATTRIBUTION = new ol.Attribution({
- html: 'Tiles Courtesy of <a href="http://www.mapquest.com/">MapQuest</a>'
-});
-
-
-/**
- * @type {Object.<string, {maxZoom: number, opaque: boolean, attributions: (Array.<ol.Attribution>)}>}
- */
-ol.source.MapQuestConfig = {
- 'osm': {
- maxZoom: 19,
- opaque: true,
- attributions: [
- ol.source.MapQuest.TILE_ATTRIBUTION,
- ol.source.OSM.ATTRIBUTION
- ]
- },
- 'sat': {
- maxZoom: 18,
- opaque: true,
- attributions: [
- ol.source.MapQuest.TILE_ATTRIBUTION,
- new ol.Attribution({
- html: 'Portions Courtesy NASA/JPL-Caltech and ' +
- 'U.S. Depart. of Agriculture, Farm Service Agency'
- })
- ]
- },
- 'hyb': {
- maxZoom: 18,
- opaque: false,
- attributions: [
- ol.source.MapQuest.TILE_ATTRIBUTION,
- ol.source.OSM.ATTRIBUTION
- ]
- }
-};
-
-
-/**
- * Get the layer of the source, either `osm`, `sat`, or `hyb`.
- * @return {string} Layer.
- * @api
- */
-ol.source.MapQuest.prototype.getLayer = function() {
- return this.layer_;
-};
-
goog.provide('ol.ext.pixelworks');
/** @typedef {function(*)} */
ol.ext.pixelworks;
@@ -101609,6 +90206,7 @@ exports.newImageData = newImageData;
ol.ext.pixelworks = module.exports;
})();
+goog.provide('ol.RasterOperationType');
goog.provide('ol.source.Raster');
goog.provide('ol.source.RasterEvent');
goog.provide('ol.source.RasterEventType');
@@ -101626,7 +90224,6 @@ goog.require('ol.extent');
goog.require('ol.layer.Image');
goog.require('ol.layer.Tile');
goog.require('ol.object');
-goog.require('ol.raster.OperationType');
goog.require('ol.renderer.canvas.ImageLayer');
goog.require('ol.renderer.canvas.TileLayer');
goog.require('ol.source.Image');
@@ -101635,9 +90232,19 @@ goog.require('ol.source.Tile');
/**
+ * Raster operation type. Supported values are `'pixel'` and `'image'`.
+ * @enum {string}
+ */
+ol.RasterOperationType = {
+ PIXEL: 'pixel',
+ IMAGE: 'image'
+};
+
+
+/**
* @classdesc
* A source that transforms data from any number of input sources using an array
- * of {@link ol.raster.Operation} functions to transform input pixel values into
+ * of {@link ol.RasterOperation} functions to transform input pixel values into
* output pixel values.
*
* @constructor
@@ -101656,10 +90263,10 @@ ol.source.Raster = function(options) {
/**
* @private
- * @type {ol.raster.OperationType}
+ * @type {ol.RasterOperationType}
*/
this.operationType_ = options.operationType !== undefined ?
- options.operationType : ol.raster.OperationType.PIXEL;
+ options.operationType : ol.RasterOperationType.PIXEL;
/**
* @private
@@ -101743,19 +90350,19 @@ ol.source.Raster = function(options) {
wantedTiles: {}
};
- goog.base(this, {});
+ ol.source.Image.call(this, {});
if (options.operation !== undefined) {
this.setOperation(options.operation, options.lib);
}
};
-goog.inherits(ol.source.Raster, ol.source.Image);
+ol.inherits(ol.source.Raster, ol.source.Image);
/**
* Set the operation.
- * @param {ol.raster.Operation} operation New operation.
+ * @param {ol.RasterOperation} operation New operation.
* @param {Object=} opt_lib Functions that will be available to operations run
* in a worker.
* @api
@@ -101763,7 +90370,7 @@ goog.inherits(ol.source.Raster, ol.source.Image);
ol.source.Raster.prototype.setOperation = function(operation, opt_lib) {
this.worker_ = new ol.ext.pixelworks.Processor({
operation: operation,
- imageOps: this.operationType_ === ol.raster.OperationType.IMAGE,
+ imageOps: this.operationType_ === ol.RasterOperationType.IMAGE,
queue: 1,
lib: opt_lib,
threads: this.threads_
@@ -102069,7 +90676,7 @@ ol.source.Raster.createTileRenderer_ = function(source) {
* @param {Object} data An object made available to operations.
*/
ol.source.RasterEvent = function(type, frameState, data) {
- goog.base(this, type);
+ ol.events.Event.call(this, type);
/**
* The raster extent.
@@ -102094,7 +90701,7 @@ ol.source.RasterEvent = function(type, frameState, data) {
this.data = data;
};
-goog.inherits(ol.source.RasterEvent, ol.events.Event);
+ol.inherits(ol.source.RasterEvent, ol.events.Event);
/**
@@ -102219,12 +90826,12 @@ ol.source.Stamen = function(options) {
'https://stamen-tiles-{a-d}.a.ssl.fastly.net/' + options.layer +
'/{z}/{x}/{y}.' + layerConfig.extension;
- goog.base(this, {
+ ol.source.XYZ.call(this, {
attributions: ol.source.Stamen.ATTRIBUTIONS,
cacheSize: options.cacheSize,
crossOrigin: 'anonymous',
- maxZoom: providerConfig.maxZoom,
- minZoom: providerConfig.minZoom,
+ maxZoom: options.maxZoom != undefined ? options.maxZoom : providerConfig.maxZoom,
+ minZoom: options.minZoom != undefined ? options.minZoom : providerConfig.minZoom,
opaque: layerConfig.opaque,
reprojectionErrorThreshold: options.reprojectionErrorThreshold,
tileLoadFunction: options.tileLoadFunction,
@@ -102232,7 +90839,7 @@ ol.source.Stamen = function(options) {
});
};
-goog.inherits(ol.source.Stamen, ol.source.XYZ);
+ol.inherits(ol.source.Stamen, ol.source.XYZ);
/**
@@ -102251,7 +90858,6 @@ ol.source.Stamen.ATTRIBUTIONS = [
goog.provide('ol.source.TileArcGISRest');
goog.require('goog.asserts');
-goog.require('goog.uri.utils');
goog.require('ol');
goog.require('ol.extent');
goog.require('ol.object');
@@ -102260,6 +90866,7 @@ goog.require('ol.proj');
goog.require('ol.size');
goog.require('ol.source.TileImage');
goog.require('ol.tilecoord');
+goog.require('ol.uri');
/**
@@ -102280,7 +90887,7 @@ ol.source.TileArcGISRest = function(opt_options) {
var options = opt_options || {};
- goog.base(this, {
+ ol.source.TileImage.call(this, {
attributions: options.attributions,
cacheSize: options.cacheSize,
crossOrigin: options.crossOrigin,
@@ -102307,7 +90914,7 @@ ol.source.TileArcGISRest = function(opt_options) {
this.tmpExtent_ = ol.extent.createEmpty();
};
-goog.inherits(ol.source.TileArcGISRest, ol.source.TileImage);
+ol.inherits(ol.source.TileArcGISRest, ol.source.TileImage);
/**
@@ -102364,7 +90971,7 @@ ol.source.TileArcGISRest.prototype.getRequestUrl_ = function(tileCoord, tileSize
if (modifiedUrl == url) {
goog.asserts.fail('Unknown Rest Service', url);
}
- return goog.uri.utils.appendParamsFromMap(modifiedUrl, params);
+ return ol.uri.appendParams(modifiedUrl, params);
};
@@ -102441,7 +91048,7 @@ goog.require('ol.source.Tile');
*/
ol.DebugTile_ = function(tileCoord, tileSize, text) {
- goog.base(this, tileCoord, ol.TileState.LOADED);
+ ol.Tile.call(this, tileCoord, ol.TileState.LOADED);
/**
* @private
@@ -102462,7 +91069,7 @@ ol.DebugTile_ = function(tileCoord, tileSize, text) {
this.canvasByContext_ = {};
};
-goog.inherits(ol.DebugTile_, ol.Tile);
+ol.inherits(ol.DebugTile_, ol.Tile);
/**
@@ -102511,7 +91118,7 @@ ol.DebugTile_.prototype.getImage = function(opt_context) {
*/
ol.source.TileDebug = function(options) {
- goog.base(this, {
+ ol.source.Tile.call(this, {
opaque: false,
projection: options.projection,
tileGrid: options.tileGrid,
@@ -102519,7 +91126,7 @@ ol.source.TileDebug = function(options) {
});
};
-goog.inherits(ol.source.TileDebug, ol.source.Tile);
+ol.inherits(ol.source.TileDebug, ol.source.Tile);
/**
@@ -102578,7 +91185,7 @@ ol.source.TileJSON = function(options) {
*/
this.tileJSON_ = null;
- goog.base(this, {
+ ol.source.TileImage.call(this, {
attributions: options.attributions,
cacheSize: options.cacheSize,
crossOrigin: options.crossOrigin,
@@ -102601,7 +91208,7 @@ ol.source.TileJSON = function(options) {
}
};
-goog.inherits(ol.source.TileJSON, ol.source.TileImage);
+ol.inherits(ol.source.TileJSON, ol.source.TileImage);
/**
@@ -102732,7 +91339,7 @@ goog.require('ol.source.Tile');
* @api
*/
ol.source.TileUTFGrid = function(options) {
- goog.base(this, {
+ ol.source.Tile.call(this, {
projection: ol.proj.get('EPSG:3857'),
state: ol.source.State.LOADING
});
@@ -102779,7 +91386,7 @@ ol.source.TileUTFGrid = function(options) {
goog.asserts.fail('Either url or tileJSON options must be provided');
}
};
-goog.inherits(ol.source.TileUTFGrid, ol.source.Tile);
+ol.inherits(ol.source.TileUTFGrid, ol.source.Tile);
/**
@@ -102977,7 +91584,7 @@ ol.source.TileUTFGrid.prototype.useTile = function(z, x, y) {
*/
ol.source.TileUTFGridTile_ = function(tileCoord, state, src, extent, preemptive, jsonp) {
- goog.base(this, tileCoord, state);
+ ol.Tile.call(this, tileCoord, state);
/**
* @private
@@ -103023,7 +91630,7 @@ ol.source.TileUTFGridTile_ = function(tileCoord, state, src, extent, preemptive,
this.jsonp_ = jsonp;
};
-goog.inherits(ol.source.TileUTFGridTile_, ol.Tile);
+ol.inherits(ol.source.TileUTFGridTile_, ol.Tile);
/**
@@ -103204,7 +91811,6 @@ ol.source.TileUTFGridTile_.prototype.load = function() {
goog.provide('ol.source.TileWMS');
goog.require('goog.asserts');
-goog.require('goog.uri.utils');
goog.require('ol');
goog.require('ol.extent');
goog.require('ol.object');
@@ -103216,7 +91822,7 @@ goog.require('ol.source.wms');
goog.require('ol.source.wms.ServerType');
goog.require('ol.tilecoord');
goog.require('ol.string');
-
+goog.require('ol.uri');
/**
* @classdesc
@@ -103235,7 +91841,7 @@ ol.source.TileWMS = function(opt_options) {
var transparent = 'TRANSPARENT' in params ? params['TRANSPARENT'] : true;
- goog.base(this, {
+ ol.source.TileImage.call(this, {
attributions: options.attributions,
cacheSize: options.cacheSize,
crossOrigin: options.crossOrigin,
@@ -103298,7 +91904,7 @@ ol.source.TileWMS = function(opt_options) {
this.setKey(this.getKeyForParams_());
};
-goog.inherits(ol.source.TileWMS, ol.source.TileImage);
+ol.inherits(ol.source.TileWMS, ol.source.TileImage);
/**
@@ -103307,7 +91913,7 @@ goog.inherits(ol.source.TileWMS, ol.source.TileImage);
* constructed.
* @param {ol.Coordinate} coordinate Coordinate.
* @param {number} resolution Resolution.
- * @param {ol.proj.ProjectionLike} projection Projection.
+ * @param {ol.ProjectionLike} projection Projection.
* @param {!Object} params GetFeatureInfo params. `INFO_FORMAT` at least should
* be provided. If `QUERY_LAYERS` is not provided then the layers specified
* in the `LAYERS` parameter will be used. `VERSION` should not be
@@ -103379,7 +91985,7 @@ ol.source.TileWMS.prototype.getGutterInternal = function() {
* @inheritDoc
*/
ol.source.TileWMS.prototype.getKeyZXY = function(z, x, y) {
- return this.coordKeyPrefix_ + goog.base(this, 'getKeyZXY', z, x, y);
+ return this.coordKeyPrefix_ + ol.source.TileImage.prototype.getKeyZXY.call(this, z, x, y);
};
@@ -103464,7 +92070,7 @@ ol.source.TileWMS.prototype.getRequestUrl_ = function(tileCoord, tileSize, tileE
var index = ol.math.modulo(ol.tilecoord.hash(tileCoord), urls.length);
url = urls[index];
}
- return goog.uri.utils.appendParamsFromMap(url, params);
+ return ol.uri.appendParams(url, params);
};
@@ -103608,7 +92214,7 @@ ol.tilegrid.WMTS = function(options) {
this.matrixIds_ = options.matrixIds;
// FIXME: should the matrixIds become optionnal?
- goog.base(this, {
+ ol.tilegrid.TileGrid.call(this, {
extent: options.extent,
origin: options.origin,
origins: options.origins,
@@ -103619,7 +92225,7 @@ ol.tilegrid.WMTS = function(options) {
});
};
-goog.inherits(ol.tilegrid.WMTS, ol.tilegrid.TileGrid);
+ol.inherits(ol.tilegrid.WMTS, ol.tilegrid.TileGrid);
/**
@@ -103713,10 +92319,8 @@ ol.tilegrid.WMTS.createFromCapabilitiesMatrixSet = function(matrixSet, opt_exten
};
goog.provide('ol.source.WMTS');
-goog.provide('ol.source.WMTSRequestEncoding');
goog.require('goog.asserts');
-goog.require('goog.uri.utils');
goog.require('ol.TileUrlFunction');
goog.require('ol.array');
goog.require('ol.extent');
@@ -103724,12 +92328,12 @@ goog.require('ol.object');
goog.require('ol.proj');
goog.require('ol.source.TileImage');
goog.require('ol.tilegrid.WMTS');
+goog.require('ol.uri');
/**
* Request encoding. One of 'KVP', 'REST'.
* @enum {string}
- * @api
*/
ol.source.WMTSRequestEncoding = {
KVP: 'KVP', // see spec §8
@@ -103838,7 +92442,7 @@ ol.source.WMTS = function(options) {
// special template params
template = (requestEncoding == ol.source.WMTSRequestEncoding.KVP) ?
- goog.uri.utils.appendParamsFromMap(template, context) :
+ ol.uri.appendParams(template, context) :
template.replace(/\{(\w+?)\}/g, function(m, p) {
return (p.toLowerCase() in context) ? context[p.toLowerCase()] : m;
});
@@ -103862,7 +92466,7 @@ ol.source.WMTS = function(options) {
ol.object.assign(localContext, dimensions);
var url = template;
if (requestEncoding == ol.source.WMTSRequestEncoding.KVP) {
- url = goog.uri.utils.appendParamsFromMap(url, localContext);
+ url = ol.uri.appendParams(url, localContext);
} else {
url = url.replace(/\{(\w+?)\}/g, function(m, p) {
return localContext[p];
@@ -103878,7 +92482,7 @@ ol.source.WMTS = function(options) {
urls.map(createFromWMTSTemplate)) :
ol.TileUrlFunction.nullTileUrlFunction;
- goog.base(this, {
+ ol.source.TileImage.call(this, {
attributions: options.attributions,
cacheSize: options.cacheSize,
crossOrigin: options.crossOrigin,
@@ -103897,7 +92501,7 @@ ol.source.WMTS = function(options) {
this.setKey(this.getKeyForDimensions_());
};
-goog.inherits(ol.source.WMTS, ol.source.TileImage);
+ol.inherits(ol.source.WMTS, ol.source.TileImage);
/**
@@ -104142,32 +92746,39 @@ ol.source.WMTS.optionsFromCapabilities = function(wmtsCap, config) {
'requestEncoding (%s) is one of "REST", "RESTful", "KVP" or ""',
requestEncoding);
- if (!wmtsCap.hasOwnProperty('OperationsMetadata') ||
- !wmtsCap['OperationsMetadata'].hasOwnProperty('GetTile') ||
- requestEncoding.indexOf('REST') === 0) {
- // Add REST tile resource url
- requestEncoding = ol.source.WMTSRequestEncoding.REST;
- l['ResourceURL'].forEach(function(elt, index, array) {
- if (elt['resourceType'] == 'tile') {
- format = elt['format'];
- urls.push(/** @type {string} */ (elt['template']));
- }
- });
- } else {
+ if ('OperationsMetadata' in wmtsCap && 'GetTile' in wmtsCap['OperationsMetadata']) {
var gets = wmtsCap['OperationsMetadata']['GetTile']['DCP']['HTTP']['Get'];
+ goog.asserts.assert(gets.length >= 1);
for (var i = 0, ii = gets.length; i < ii; ++i) {
- var constraint = ol.array.find(gets[i]['Constraint'],
- function(elt, index, array) {
- return elt['name'] == 'GetEncoding';
- });
+ var constraint = ol.array.find(gets[i]['Constraint'], function(element) {
+ return element['name'] == 'GetEncoding';
+ });
var encodings = constraint['AllowedValues']['Value'];
- if (encodings.length > 0 && ol.array.includes(encodings, 'KVP')) {
- requestEncoding = ol.source.WMTSRequestEncoding.KVP;
- urls.push(/** @type {string} */ (gets[i]['href']));
+ goog.asserts.assert(encodings.length >= 1);
+
+ if (requestEncoding === '') {
+ // requestEncoding not provided, use the first encoding from the list
+ requestEncoding = encodings[0];
+ }
+ if (requestEncoding === ol.source.WMTSRequestEncoding.KVP) {
+ if (ol.array.includes(encodings, ol.source.WMTSRequestEncoding.KVP)) {
+ urls.push(/** @type {string} */ (gets[i]['href']));
+ }
+ } else {
+ break;
}
}
}
+ if (urls.length === 0) {
+ requestEncoding = ol.source.WMTSRequestEncoding.REST;
+ l['ResourceURL'].forEach(function(element) {
+ if (element['resourceType'] === 'tile') {
+ format = element['format'];
+ urls.push(/** @type {string} */ (element['template']));
+ }
+ });
+ }
goog.asserts.assert(urls.length > 0, 'At least one URL found');
return {
@@ -104305,7 +92916,7 @@ ol.source.Zoomify = function(opt_options) {
}
}
- goog.base(this, {
+ ol.source.TileImage.call(this, {
attributions: options.attributions,
cacheSize: options.cacheSize,
crossOrigin: options.crossOrigin,
@@ -104317,7 +92928,7 @@ ol.source.Zoomify = function(opt_options) {
});
};
-goog.inherits(ol.source.Zoomify, ol.source.TileImage);
+ol.inherits(ol.source.Zoomify, ol.source.TileImage);
/**
@@ -104333,7 +92944,7 @@ goog.inherits(ol.source.Zoomify, ol.source.TileImage);
ol.source.ZoomifyTile_ = function(
tileCoord, state, src, crossOrigin, tileLoadFunction) {
- goog.base(this, tileCoord, state, src, crossOrigin, tileLoadFunction);
+ ol.ImageTile.call(this, tileCoord, state, src, crossOrigin, tileLoadFunction);
/**
* @private
@@ -104343,7 +92954,7 @@ ol.source.ZoomifyTile_ = function(
this.zoomifyImageByContext_ = {};
};
-goog.inherits(ol.source.ZoomifyTile_, ol.ImageTile);
+ol.inherits(ol.source.ZoomifyTile_, ol.ImageTile);
/**
@@ -104356,7 +92967,7 @@ ol.source.ZoomifyTile_.prototype.getImage = function(opt_context) {
if (key in this.zoomifyImageByContext_) {
return this.zoomifyImageByContext_[key];
} else {
- var image = goog.base(this, 'getImage', opt_context);
+ var image = ol.ImageTile.prototype.getImage.call(this, opt_context);
if (this.state == ol.TileState.LOADED) {
if (image.width == tileSize && image.height == tileSize) {
this.zoomifyImageByContext_[key] = image;
@@ -104450,17 +93061,17 @@ ol.style.AtlasManager = function(opt_options) {
/**
* @param {string} id The identifier of the entry to check.
- * @return {?ol.style.AtlasManagerInfo} The position and atlas image for the
+ * @return {?ol.AtlasManagerInfo} The position and atlas image for the
* entry, or `null` if the entry is not part of the atlas manager.
*/
ol.style.AtlasManager.prototype.getInfo = function(id) {
- /** @type {?ol.style.AtlasInfo} */
+ /** @type {?ol.AtlasInfo} */
var info = this.getInfo_(this.atlases_, id);
if (!info) {
return null;
}
- /** @type {?ol.style.AtlasInfo} */
+ /** @type {?ol.AtlasInfo} */
var hitInfo = this.getInfo_(this.hitAtlases_, id);
goog.asserts.assert(hitInfo, 'hitInfo must not be null');
@@ -104472,7 +93083,7 @@ ol.style.AtlasManager.prototype.getInfo = function(id) {
* @private
* @param {Array.<ol.style.Atlas>} atlases The atlases to search.
* @param {string} id The identifier of the entry to check.
- * @return {?ol.style.AtlasInfo} The position and atlas image for the entry,
+ * @return {?ol.AtlasInfo} The position and atlas image for the entry,
* or `null` if the entry is not part of the atlases.
*/
ol.style.AtlasManager.prototype.getInfo_ = function(atlases, id) {
@@ -104490,10 +93101,10 @@ ol.style.AtlasManager.prototype.getInfo_ = function(atlases, id) {
/**
* @private
- * @param {ol.style.AtlasInfo} info The info for the real image.
- * @param {ol.style.AtlasInfo} hitInfo The info for the hit-detection
+ * @param {ol.AtlasInfo} info The info for the real image.
+ * @param {ol.AtlasInfo} hitInfo The info for the hit-detection
* image.
- * @return {?ol.style.AtlasManagerInfo} The position and atlas image for the
+ * @return {?ol.AtlasManagerInfo} The position and atlas image for the
* entry, or `null` if the entry is not part of the atlases.
*/
ol.style.AtlasManager.prototype.mergeInfos_ = function(info, hitInfo) {
@@ -104501,7 +93112,7 @@ ol.style.AtlasManager.prototype.mergeInfos_ = function(info, hitInfo) {
'in order to merge, offsetX of info and hitInfo must be equal');
goog.asserts.assert(info.offsetY === hitInfo.offsetY,
'in order to merge, offsetY of info and hitInfo must be equal');
- return /** @type {ol.style.AtlasManagerInfo} */ ({
+ return /** @type {ol.AtlasManagerInfo} */ ({
offsetX: info.offsetX,
offsetY: info.offsetY,
image: info.image,
@@ -104529,7 +93140,7 @@ ol.style.AtlasManager.prototype.mergeInfos_ = function(info, hitInfo) {
* detection atlas image.
* @param {Object=} opt_this Value to use as `this` when executing
* `renderCallback` and `renderHitCallback`.
- * @return {?ol.style.AtlasManagerInfo} The position and atlas image for the
+ * @return {?ol.AtlasManagerInfo} The position and atlas image for the
* entry, or `null` if the image is too big.
*/
ol.style.AtlasManager.prototype.add = function(id, width, height,
@@ -104539,7 +93150,7 @@ ol.style.AtlasManager.prototype.add = function(id, width, height,
return null;
}
- /** @type {?ol.style.AtlasInfo} */
+ /** @type {?ol.AtlasInfo} */
var info = this.add_(false,
id, width, height, renderCallback, opt_this);
if (!info) {
@@ -104550,9 +93161,9 @@ ol.style.AtlasManager.prototype.add = function(id, width, height,
// the hit-detection atlas, to make sure that the offset is the same for
// the original image and the hit-detection image.
var renderHitCallback = opt_renderHitCallback !== undefined ?
- opt_renderHitCallback : ol.nullFunction
+ opt_renderHitCallback : ol.nullFunction;
- /** @type {?ol.style.AtlasInfo} */
+ /** @type {?ol.AtlasInfo} */
var hitInfo = this.add_(true,
id, width, height, renderHitCallback, opt_this);
goog.asserts.assert(hitInfo, 'hitInfo must not be null');
@@ -104571,7 +93182,7 @@ ol.style.AtlasManager.prototype.add = function(id, width, height,
* Called to render the new image onto an atlas image.
* @param {Object=} opt_this Value to use as `this` when executing
* `renderCallback` and `renderHitCallback`.
- * @return {?ol.style.AtlasInfo} The position and atlas image for the entry,
+ * @return {?ol.AtlasInfo} The position and atlas image for the entry,
* or `null` if the image is too big.
*/
ol.style.AtlasManager.prototype.add_ = function(isHitAtlas, id, width, height,
@@ -104631,13 +93242,13 @@ ol.style.Atlas = function(size, space) {
/**
* @private
- * @type {Array.<ol.style.AtlasBlock>}
+ * @type {Array.<ol.AtlasBlock>}
*/
this.emptyBlocks_ = [{x: 0, y: 0, width: size, height: size}];
/**
* @private
- * @type {Object.<string, ol.style.AtlasInfo>}
+ * @type {Object.<string, ol.AtlasInfo>}
*/
this.entries_ = {};
@@ -104657,7 +93268,7 @@ ol.style.Atlas = function(size, space) {
/**
* @param {string} id The identifier of the entry to check.
- * @return {?ol.style.AtlasInfo} The atlas info.
+ * @return {?ol.AtlasInfo} The atlas info.
*/
ol.style.Atlas.prototype.get = function(id) {
return this.entries_[id] || null;
@@ -104672,7 +93283,7 @@ ol.style.Atlas.prototype.get = function(id) {
* Called to render the new image onto an atlas image.
* @param {Object=} opt_this Value to use as `this` when executing
* `renderCallback`.
- * @return {?ol.style.AtlasInfo} The position and atlas image for the entry.
+ * @return {?ol.AtlasInfo} The position and atlas image for the entry.
*/
ol.style.Atlas.prototype.add = function(id, width, height, renderCallback, opt_this) {
var block, i, ii;
@@ -104707,7 +93318,7 @@ ol.style.Atlas.prototype.add = function(id, width, height, renderCallback, opt_t
/**
* @private
* @param {number} index The index of the block.
- * @param {ol.style.AtlasBlock} block The block to split.
+ * @param {ol.AtlasBlock} block The block to split.
* @param {number} width The width of the entry to insert.
* @param {number} height The height of the entry to insert.
*/
@@ -104715,9 +93326,9 @@ ol.style.Atlas.prototype.split_ = function(index, block, width, height) {
var deltaWidth = block.width - width;
var deltaHeight = block.height - height;
- /** @type {ol.style.AtlasBlock} */
+ /** @type {ol.AtlasBlock} */
var newBlock1;
- /** @type {ol.style.AtlasBlock} */
+ /** @type {ol.AtlasBlock} */
var newBlock2;
if (deltaWidth > deltaHeight) {
@@ -104766,8 +93377,8 @@ ol.style.Atlas.prototype.split_ = function(index, block, width, height) {
* blocks (that are potentially smaller) are filled first.
* @private
* @param {number} index The index of the block to remove.
- * @param {ol.style.AtlasBlock} newBlock1 The 1st block to add.
- * @param {ol.style.AtlasBlock} newBlock2 The 2nd block to add.
+ * @param {ol.AtlasBlock} newBlock1 The 1st block to add.
+ * @param {ol.AtlasBlock} newBlock2 The 2nd block to add.
*/
ol.style.Atlas.prototype.updateBlocks_ = function(index, newBlock1, newBlock2) {
var args = [index, 1];
@@ -104913,7 +93524,7 @@ ol.style.RegularShape = function(options) {
var rotateWithView = options.rotateWithView !== undefined ?
options.rotateWithView : false;
- goog.base(this, {
+ ol.style.Image.call(this, {
opacity: 1,
rotateWithView: rotateWithView,
rotation: options.rotation !== undefined ? options.rotation : 0,
@@ -104922,7 +93533,7 @@ ol.style.RegularShape = function(options) {
});
};
-goog.inherits(ol.style.RegularShape, ol.style.Image);
+ol.inherits(ol.style.RegularShape, ol.style.Image);
/**
@@ -105110,7 +93721,7 @@ ol.style.RegularShape.prototype.render_ = function(atlasManager) {
var size = 2 * (this.radius_ + strokeWidth) + 1;
- /** @type {ol.style.RegularShapeRenderOptions} */
+ /** @type {ol.RegularShapeRenderOptions} */
var renderOptions = {
strokeStyle: strokeStyle,
strokeWidth: strokeWidth,
@@ -105173,7 +93784,7 @@ ol.style.RegularShape.prototype.render_ = function(atlasManager) {
/**
* @private
- * @param {ol.style.RegularShapeRenderOptions} renderOptions Render options.
+ * @param {ol.RegularShapeRenderOptions} renderOptions Render options.
* @param {CanvasRenderingContext2D} context The rendering context.
* @param {number} x The origin for the symbol (x).
* @param {number} y The origin for the symbol (y).
@@ -105218,7 +93829,7 @@ ol.style.RegularShape.prototype.draw_ = function(renderOptions, context, x, y) {
/**
* @private
- * @param {ol.style.RegularShapeRenderOptions} renderOptions Render options.
+ * @param {ol.RegularShapeRenderOptions} renderOptions Render options.
*/
ol.style.RegularShape.prototype.createHitDetectionCanvas_ = function(renderOptions) {
this.hitDetectionImageSize_ = [renderOptions.size, renderOptions.size];
@@ -105238,7 +93849,7 @@ ol.style.RegularShape.prototype.createHitDetectionCanvas_ = function(renderOptio
/**
* @private
- * @param {ol.style.RegularShapeRenderOptions} renderOptions Render options.
+ * @param {ol.RegularShapeRenderOptions} renderOptions Render options.
* @param {CanvasRenderingContext2D} context The context.
* @param {number} x The origin for the symbol (x).
* @param {number} y The origin for the symbol (y).
@@ -105363,11 +93974,9 @@ goog.require('ol.Collection');
goog.require('ol.CollectionEvent');
goog.require('ol.CollectionEventType');
goog.require('ol.DeviceOrientation');
-goog.require('ol.DeviceOrientationProperty');
goog.require('ol.DragBoxEvent');
goog.require('ol.Feature');
goog.require('ol.Geolocation');
-goog.require('ol.GeolocationProperty');
goog.require('ol.Graticule');
goog.require('ol.Image');
goog.require('ol.ImageTile');
@@ -105386,7 +93995,7 @@ goog.require('ol.ObjectEventType');
goog.require('ol.Observable');
goog.require('ol.Overlay');
goog.require('ol.OverlayPositioning');
-goog.require('ol.OverlayProperty');
+goog.require('ol.RasterOperationType');
goog.require('ol.Sphere');
goog.require('ol.Tile');
goog.require('ol.TileState');
@@ -105405,8 +94014,6 @@ goog.require('ol.control.MousePosition');
goog.require('ol.control.OverviewMap');
goog.require('ol.control.Rotate');
goog.require('ol.control.ScaleLine');
-goog.require('ol.control.ScaleLineProperty');
-goog.require('ol.control.ScaleLineUnits');
goog.require('ol.control.Zoom');
goog.require('ol.control.ZoomSlider');
goog.require('ol.control.ZoomToExtent');
@@ -105427,7 +94034,6 @@ goog.require('ol.format.GMLBase');
goog.require('ol.format.GPX');
goog.require('ol.format.GeoJSON');
goog.require('ol.format.IGC');
-goog.require('ol.format.IGCZ');
goog.require('ol.format.KML');
goog.require('ol.format.MVT');
goog.require('ol.format.OSMXML');
@@ -105535,7 +94141,6 @@ goog.require('ol.source.ImageMapGuide');
goog.require('ol.source.ImageStatic');
goog.require('ol.source.ImageVector');
goog.require('ol.source.ImageWMS');
-goog.require('ol.source.MapQuest');
goog.require('ol.source.OSM');
goog.require('ol.source.Raster');
goog.require('ol.source.RasterEvent');
@@ -105557,7 +94162,6 @@ goog.require('ol.source.VectorEvent');
goog.require('ol.source.VectorEventType');
goog.require('ol.source.VectorTile');
goog.require('ol.source.WMTS');
-goog.require('ol.source.WMTSRequestEncoding');
goog.require('ol.source.XYZ');
goog.require('ol.source.Zoomify');
goog.require('ol.style.Atlas');
@@ -106073,10 +94677,20 @@ goog.exportProperty(
ol.Image.prototype.getImage);
goog.exportProperty(
+ ol.Image.prototype,
+ 'load',
+ ol.Image.prototype.load);
+
+goog.exportProperty(
ol.ImageTile.prototype,
'getImage',
ol.ImageTile.prototype.getImage);
+goog.exportProperty(
+ ol.ImageTile.prototype,
+ 'load',
+ ol.ImageTile.prototype.load);
+
goog.exportSymbol(
'ol.Kinetic',
ol.Kinetic,
@@ -106473,6 +95087,11 @@ goog.exportProperty(
ol.Tile.prototype.getTileCoord);
goog.exportProperty(
+ ol.Tile.prototype,
+ 'load',
+ ol.Tile.prototype.load);
+
+goog.exportProperty(
ol.VectorTile.prototype,
'getFormat',
ol.VectorTile.prototype.getFormat);
@@ -106524,6 +95143,16 @@ goog.exportProperty(
goog.exportProperty(
ol.View.prototype,
+ 'getMaxResolution',
+ ol.View.prototype.getMaxResolution);
+
+goog.exportProperty(
+ ol.View.prototype,
+ 'getMinResolution',
+ ol.View.prototype.getMinResolution);
+
+goog.exportProperty(
+ ol.View.prototype,
'getProjection',
ol.View.prototype.getProjection);
@@ -106609,6 +95238,11 @@ goog.exportSymbol(
goog.exportProperty(
ol.tilegrid.TileGrid.prototype,
+ 'forEachTileCoord',
+ ol.tilegrid.TileGrid.prototype.forEachTileCoord);
+
+goog.exportProperty(
+ ol.tilegrid.TileGrid.prototype,
'getMaxZoom',
ol.tilegrid.TileGrid.prototype.getMaxZoom);
@@ -106652,6 +95286,11 @@ goog.exportProperty(
'getTileSize',
ol.tilegrid.TileGrid.prototype.getTileSize);
+goog.exportProperty(
+ ol.tilegrid.TileGrid.prototype,
+ 'getZForResolution',
+ ol.tilegrid.TileGrid.prototype.getZForResolution);
+
goog.exportSymbol(
'ol.tilegrid.createXYZ',
ol.tilegrid.createXYZ,
@@ -107273,16 +95912,6 @@ goog.exportProperty(
ol.source.ImageWMS.prototype.updateParams);
goog.exportSymbol(
- 'ol.source.MapQuest',
- ol.source.MapQuest,
- OPENLAYERS);
-
-goog.exportProperty(
- ol.source.MapQuest.prototype,
- 'getLayer',
- ol.source.MapQuest.prototype.getLayer);
-
-goog.exportSymbol(
'ol.source.OSM',
ol.source.OSM,
OPENLAYERS);
@@ -108239,8 +96868,8 @@ goog.exportProperty(
goog.exportProperty(
ol.interaction.ModifyEvent.prototype,
- 'mapBrowserPointerEvent',
- ol.interaction.ModifyEvent.prototype.mapBrowserPointerEvent);
+ 'mapBrowserEvent',
+ ol.interaction.ModifyEvent.prototype.mapBrowserEvent);
goog.exportSymbol(
'ol.interaction.Modify',
@@ -110364,6 +98993,11 @@ goog.exportProperty(
goog.exportProperty(
ol.tilegrid.WMTS.prototype,
+ 'forEachTileCoord',
+ ol.tilegrid.WMTS.prototype.forEachTileCoord);
+
+goog.exportProperty(
+ ol.tilegrid.WMTS.prototype,
'getMaxZoom',
ol.tilegrid.WMTS.prototype.getMaxZoom);
@@ -110408,6 +99042,11 @@ goog.exportProperty(
ol.tilegrid.WMTS.prototype.getTileSize);
goog.exportProperty(
+ ol.tilegrid.WMTS.prototype,
+ 'getZForResolution',
+ ol.tilegrid.WMTS.prototype.getZForResolution);
+
+goog.exportProperty(
ol.style.Circle.prototype,
'getOpacity',
ol.style.Circle.prototype.getOpacity);
@@ -112313,151 +100952,6 @@ goog.exportProperty(
ol.source.ImageWMS.prototype.unByKey);
goog.exportProperty(
- ol.source.MapQuest.prototype,
- 'setRenderReprojectionEdges',
- ol.source.MapQuest.prototype.setRenderReprojectionEdges);
-
-goog.exportProperty(
- ol.source.MapQuest.prototype,
- 'setTileGridForProjection',
- ol.source.MapQuest.prototype.setTileGridForProjection);
-
-goog.exportProperty(
- ol.source.MapQuest.prototype,
- 'getTileLoadFunction',
- ol.source.MapQuest.prototype.getTileLoadFunction);
-
-goog.exportProperty(
- ol.source.MapQuest.prototype,
- 'getTileUrlFunction',
- ol.source.MapQuest.prototype.getTileUrlFunction);
-
-goog.exportProperty(
- ol.source.MapQuest.prototype,
- 'getUrls',
- ol.source.MapQuest.prototype.getUrls);
-
-goog.exportProperty(
- ol.source.MapQuest.prototype,
- 'setTileLoadFunction',
- ol.source.MapQuest.prototype.setTileLoadFunction);
-
-goog.exportProperty(
- ol.source.MapQuest.prototype,
- 'setTileUrlFunction',
- ol.source.MapQuest.prototype.setTileUrlFunction);
-
-goog.exportProperty(
- ol.source.MapQuest.prototype,
- 'setUrl',
- ol.source.MapQuest.prototype.setUrl);
-
-goog.exportProperty(
- ol.source.MapQuest.prototype,
- 'setUrls',
- ol.source.MapQuest.prototype.setUrls);
-
-goog.exportProperty(
- ol.source.MapQuest.prototype,
- 'getTileGrid',
- ol.source.MapQuest.prototype.getTileGrid);
-
-goog.exportProperty(
- ol.source.MapQuest.prototype,
- 'refresh',
- ol.source.MapQuest.prototype.refresh);
-
-goog.exportProperty(
- ol.source.MapQuest.prototype,
- 'getAttributions',
- ol.source.MapQuest.prototype.getAttributions);
-
-goog.exportProperty(
- ol.source.MapQuest.prototype,
- 'getLogo',
- ol.source.MapQuest.prototype.getLogo);
-
-goog.exportProperty(
- ol.source.MapQuest.prototype,
- 'getProjection',
- ol.source.MapQuest.prototype.getProjection);
-
-goog.exportProperty(
- ol.source.MapQuest.prototype,
- 'getState',
- ol.source.MapQuest.prototype.getState);
-
-goog.exportProperty(
- ol.source.MapQuest.prototype,
- 'setAttributions',
- ol.source.MapQuest.prototype.setAttributions);
-
-goog.exportProperty(
- ol.source.MapQuest.prototype,
- 'get',
- ol.source.MapQuest.prototype.get);
-
-goog.exportProperty(
- ol.source.MapQuest.prototype,
- 'getKeys',
- ol.source.MapQuest.prototype.getKeys);
-
-goog.exportProperty(
- ol.source.MapQuest.prototype,
- 'getProperties',
- ol.source.MapQuest.prototype.getProperties);
-
-goog.exportProperty(
- ol.source.MapQuest.prototype,
- 'set',
- ol.source.MapQuest.prototype.set);
-
-goog.exportProperty(
- ol.source.MapQuest.prototype,
- 'setProperties',
- ol.source.MapQuest.prototype.setProperties);
-
-goog.exportProperty(
- ol.source.MapQuest.prototype,
- 'unset',
- ol.source.MapQuest.prototype.unset);
-
-goog.exportProperty(
- ol.source.MapQuest.prototype,
- 'changed',
- ol.source.MapQuest.prototype.changed);
-
-goog.exportProperty(
- ol.source.MapQuest.prototype,
- 'dispatchEvent',
- ol.source.MapQuest.prototype.dispatchEvent);
-
-goog.exportProperty(
- ol.source.MapQuest.prototype,
- 'getRevision',
- ol.source.MapQuest.prototype.getRevision);
-
-goog.exportProperty(
- ol.source.MapQuest.prototype,
- 'on',
- ol.source.MapQuest.prototype.on);
-
-goog.exportProperty(
- ol.source.MapQuest.prototype,
- 'once',
- ol.source.MapQuest.prototype.once);
-
-goog.exportProperty(
- ol.source.MapQuest.prototype,
- 'un',
- ol.source.MapQuest.prototype.un);
-
-goog.exportProperty(
- ol.source.MapQuest.prototype,
- 'unByKey',
- ol.source.MapQuest.prototype.unByKey);
-
-goog.exportProperty(
ol.source.OSM.prototype,
'setRenderReprojectionEdges',
ol.source.OSM.prototype.setRenderReprojectionEdges);
@@ -113968,6 +102462,11 @@ goog.exportProperty(
ol.reproj.Tile.prototype.getTileCoord);
goog.exportProperty(
+ ol.reproj.Tile.prototype,
+ 'load',
+ ol.reproj.Tile.prototype.load);
+
+goog.exportProperty(
ol.renderer.Layer.prototype,
'changed',
ol.renderer.Layer.prototype.changed);
@@ -118238,1176 +106737,6 @@ goog.exportProperty(
ol.geom.Polygon.prototype.unByKey);
goog.exportProperty(
- ol.format.ogc.filter.Filter.prototype,
- 'get',
- ol.format.ogc.filter.Filter.prototype.get);
-
-goog.exportProperty(
- ol.format.ogc.filter.Filter.prototype,
- 'getKeys',
- ol.format.ogc.filter.Filter.prototype.getKeys);
-
-goog.exportProperty(
- ol.format.ogc.filter.Filter.prototype,
- 'getProperties',
- ol.format.ogc.filter.Filter.prototype.getProperties);
-
-goog.exportProperty(
- ol.format.ogc.filter.Filter.prototype,
- 'set',
- ol.format.ogc.filter.Filter.prototype.set);
-
-goog.exportProperty(
- ol.format.ogc.filter.Filter.prototype,
- 'setProperties',
- ol.format.ogc.filter.Filter.prototype.setProperties);
-
-goog.exportProperty(
- ol.format.ogc.filter.Filter.prototype,
- 'unset',
- ol.format.ogc.filter.Filter.prototype.unset);
-
-goog.exportProperty(
- ol.format.ogc.filter.Filter.prototype,
- 'changed',
- ol.format.ogc.filter.Filter.prototype.changed);
-
-goog.exportProperty(
- ol.format.ogc.filter.Filter.prototype,
- 'dispatchEvent',
- ol.format.ogc.filter.Filter.prototype.dispatchEvent);
-
-goog.exportProperty(
- ol.format.ogc.filter.Filter.prototype,
- 'getRevision',
- ol.format.ogc.filter.Filter.prototype.getRevision);
-
-goog.exportProperty(
- ol.format.ogc.filter.Filter.prototype,
- 'on',
- ol.format.ogc.filter.Filter.prototype.on);
-
-goog.exportProperty(
- ol.format.ogc.filter.Filter.prototype,
- 'once',
- ol.format.ogc.filter.Filter.prototype.once);
-
-goog.exportProperty(
- ol.format.ogc.filter.Filter.prototype,
- 'un',
- ol.format.ogc.filter.Filter.prototype.un);
-
-goog.exportProperty(
- ol.format.ogc.filter.Filter.prototype,
- 'unByKey',
- ol.format.ogc.filter.Filter.prototype.unByKey);
-
-goog.exportProperty(
- ol.format.ogc.filter.Logical.prototype,
- 'get',
- ol.format.ogc.filter.Logical.prototype.get);
-
-goog.exportProperty(
- ol.format.ogc.filter.Logical.prototype,
- 'getKeys',
- ol.format.ogc.filter.Logical.prototype.getKeys);
-
-goog.exportProperty(
- ol.format.ogc.filter.Logical.prototype,
- 'getProperties',
- ol.format.ogc.filter.Logical.prototype.getProperties);
-
-goog.exportProperty(
- ol.format.ogc.filter.Logical.prototype,
- 'set',
- ol.format.ogc.filter.Logical.prototype.set);
-
-goog.exportProperty(
- ol.format.ogc.filter.Logical.prototype,
- 'setProperties',
- ol.format.ogc.filter.Logical.prototype.setProperties);
-
-goog.exportProperty(
- ol.format.ogc.filter.Logical.prototype,
- 'unset',
- ol.format.ogc.filter.Logical.prototype.unset);
-
-goog.exportProperty(
- ol.format.ogc.filter.Logical.prototype,
- 'changed',
- ol.format.ogc.filter.Logical.prototype.changed);
-
-goog.exportProperty(
- ol.format.ogc.filter.Logical.prototype,
- 'dispatchEvent',
- ol.format.ogc.filter.Logical.prototype.dispatchEvent);
-
-goog.exportProperty(
- ol.format.ogc.filter.Logical.prototype,
- 'getRevision',
- ol.format.ogc.filter.Logical.prototype.getRevision);
-
-goog.exportProperty(
- ol.format.ogc.filter.Logical.prototype,
- 'on',
- ol.format.ogc.filter.Logical.prototype.on);
-
-goog.exportProperty(
- ol.format.ogc.filter.Logical.prototype,
- 'once',
- ol.format.ogc.filter.Logical.prototype.once);
-
-goog.exportProperty(
- ol.format.ogc.filter.Logical.prototype,
- 'un',
- ol.format.ogc.filter.Logical.prototype.un);
-
-goog.exportProperty(
- ol.format.ogc.filter.Logical.prototype,
- 'unByKey',
- ol.format.ogc.filter.Logical.prototype.unByKey);
-
-goog.exportProperty(
- ol.format.ogc.filter.LogicalBinary.prototype,
- 'get',
- ol.format.ogc.filter.LogicalBinary.prototype.get);
-
-goog.exportProperty(
- ol.format.ogc.filter.LogicalBinary.prototype,
- 'getKeys',
- ol.format.ogc.filter.LogicalBinary.prototype.getKeys);
-
-goog.exportProperty(
- ol.format.ogc.filter.LogicalBinary.prototype,
- 'getProperties',
- ol.format.ogc.filter.LogicalBinary.prototype.getProperties);
-
-goog.exportProperty(
- ol.format.ogc.filter.LogicalBinary.prototype,
- 'set',
- ol.format.ogc.filter.LogicalBinary.prototype.set);
-
-goog.exportProperty(
- ol.format.ogc.filter.LogicalBinary.prototype,
- 'setProperties',
- ol.format.ogc.filter.LogicalBinary.prototype.setProperties);
-
-goog.exportProperty(
- ol.format.ogc.filter.LogicalBinary.prototype,
- 'unset',
- ol.format.ogc.filter.LogicalBinary.prototype.unset);
-
-goog.exportProperty(
- ol.format.ogc.filter.LogicalBinary.prototype,
- 'changed',
- ol.format.ogc.filter.LogicalBinary.prototype.changed);
-
-goog.exportProperty(
- ol.format.ogc.filter.LogicalBinary.prototype,
- 'dispatchEvent',
- ol.format.ogc.filter.LogicalBinary.prototype.dispatchEvent);
-
-goog.exportProperty(
- ol.format.ogc.filter.LogicalBinary.prototype,
- 'getRevision',
- ol.format.ogc.filter.LogicalBinary.prototype.getRevision);
-
-goog.exportProperty(
- ol.format.ogc.filter.LogicalBinary.prototype,
- 'on',
- ol.format.ogc.filter.LogicalBinary.prototype.on);
-
-goog.exportProperty(
- ol.format.ogc.filter.LogicalBinary.prototype,
- 'once',
- ol.format.ogc.filter.LogicalBinary.prototype.once);
-
-goog.exportProperty(
- ol.format.ogc.filter.LogicalBinary.prototype,
- 'un',
- ol.format.ogc.filter.LogicalBinary.prototype.un);
-
-goog.exportProperty(
- ol.format.ogc.filter.LogicalBinary.prototype,
- 'unByKey',
- ol.format.ogc.filter.LogicalBinary.prototype.unByKey);
-
-goog.exportProperty(
- ol.format.ogc.filter.And.prototype,
- 'get',
- ol.format.ogc.filter.And.prototype.get);
-
-goog.exportProperty(
- ol.format.ogc.filter.And.prototype,
- 'getKeys',
- ol.format.ogc.filter.And.prototype.getKeys);
-
-goog.exportProperty(
- ol.format.ogc.filter.And.prototype,
- 'getProperties',
- ol.format.ogc.filter.And.prototype.getProperties);
-
-goog.exportProperty(
- ol.format.ogc.filter.And.prototype,
- 'set',
- ol.format.ogc.filter.And.prototype.set);
-
-goog.exportProperty(
- ol.format.ogc.filter.And.prototype,
- 'setProperties',
- ol.format.ogc.filter.And.prototype.setProperties);
-
-goog.exportProperty(
- ol.format.ogc.filter.And.prototype,
- 'unset',
- ol.format.ogc.filter.And.prototype.unset);
-
-goog.exportProperty(
- ol.format.ogc.filter.And.prototype,
- 'changed',
- ol.format.ogc.filter.And.prototype.changed);
-
-goog.exportProperty(
- ol.format.ogc.filter.And.prototype,
- 'dispatchEvent',
- ol.format.ogc.filter.And.prototype.dispatchEvent);
-
-goog.exportProperty(
- ol.format.ogc.filter.And.prototype,
- 'getRevision',
- ol.format.ogc.filter.And.prototype.getRevision);
-
-goog.exportProperty(
- ol.format.ogc.filter.And.prototype,
- 'on',
- ol.format.ogc.filter.And.prototype.on);
-
-goog.exportProperty(
- ol.format.ogc.filter.And.prototype,
- 'once',
- ol.format.ogc.filter.And.prototype.once);
-
-goog.exportProperty(
- ol.format.ogc.filter.And.prototype,
- 'un',
- ol.format.ogc.filter.And.prototype.un);
-
-goog.exportProperty(
- ol.format.ogc.filter.And.prototype,
- 'unByKey',
- ol.format.ogc.filter.And.prototype.unByKey);
-
-goog.exportProperty(
- ol.format.ogc.filter.Or.prototype,
- 'get',
- ol.format.ogc.filter.Or.prototype.get);
-
-goog.exportProperty(
- ol.format.ogc.filter.Or.prototype,
- 'getKeys',
- ol.format.ogc.filter.Or.prototype.getKeys);
-
-goog.exportProperty(
- ol.format.ogc.filter.Or.prototype,
- 'getProperties',
- ol.format.ogc.filter.Or.prototype.getProperties);
-
-goog.exportProperty(
- ol.format.ogc.filter.Or.prototype,
- 'set',
- ol.format.ogc.filter.Or.prototype.set);
-
-goog.exportProperty(
- ol.format.ogc.filter.Or.prototype,
- 'setProperties',
- ol.format.ogc.filter.Or.prototype.setProperties);
-
-goog.exportProperty(
- ol.format.ogc.filter.Or.prototype,
- 'unset',
- ol.format.ogc.filter.Or.prototype.unset);
-
-goog.exportProperty(
- ol.format.ogc.filter.Or.prototype,
- 'changed',
- ol.format.ogc.filter.Or.prototype.changed);
-
-goog.exportProperty(
- ol.format.ogc.filter.Or.prototype,
- 'dispatchEvent',
- ol.format.ogc.filter.Or.prototype.dispatchEvent);
-
-goog.exportProperty(
- ol.format.ogc.filter.Or.prototype,
- 'getRevision',
- ol.format.ogc.filter.Or.prototype.getRevision);
-
-goog.exportProperty(
- ol.format.ogc.filter.Or.prototype,
- 'on',
- ol.format.ogc.filter.Or.prototype.on);
-
-goog.exportProperty(
- ol.format.ogc.filter.Or.prototype,
- 'once',
- ol.format.ogc.filter.Or.prototype.once);
-
-goog.exportProperty(
- ol.format.ogc.filter.Or.prototype,
- 'un',
- ol.format.ogc.filter.Or.prototype.un);
-
-goog.exportProperty(
- ol.format.ogc.filter.Or.prototype,
- 'unByKey',
- ol.format.ogc.filter.Or.prototype.unByKey);
-
-goog.exportProperty(
- ol.format.ogc.filter.Not.prototype,
- 'get',
- ol.format.ogc.filter.Not.prototype.get);
-
-goog.exportProperty(
- ol.format.ogc.filter.Not.prototype,
- 'getKeys',
- ol.format.ogc.filter.Not.prototype.getKeys);
-
-goog.exportProperty(
- ol.format.ogc.filter.Not.prototype,
- 'getProperties',
- ol.format.ogc.filter.Not.prototype.getProperties);
-
-goog.exportProperty(
- ol.format.ogc.filter.Not.prototype,
- 'set',
- ol.format.ogc.filter.Not.prototype.set);
-
-goog.exportProperty(
- ol.format.ogc.filter.Not.prototype,
- 'setProperties',
- ol.format.ogc.filter.Not.prototype.setProperties);
-
-goog.exportProperty(
- ol.format.ogc.filter.Not.prototype,
- 'unset',
- ol.format.ogc.filter.Not.prototype.unset);
-
-goog.exportProperty(
- ol.format.ogc.filter.Not.prototype,
- 'changed',
- ol.format.ogc.filter.Not.prototype.changed);
-
-goog.exportProperty(
- ol.format.ogc.filter.Not.prototype,
- 'dispatchEvent',
- ol.format.ogc.filter.Not.prototype.dispatchEvent);
-
-goog.exportProperty(
- ol.format.ogc.filter.Not.prototype,
- 'getRevision',
- ol.format.ogc.filter.Not.prototype.getRevision);
-
-goog.exportProperty(
- ol.format.ogc.filter.Not.prototype,
- 'on',
- ol.format.ogc.filter.Not.prototype.on);
-
-goog.exportProperty(
- ol.format.ogc.filter.Not.prototype,
- 'once',
- ol.format.ogc.filter.Not.prototype.once);
-
-goog.exportProperty(
- ol.format.ogc.filter.Not.prototype,
- 'un',
- ol.format.ogc.filter.Not.prototype.un);
-
-goog.exportProperty(
- ol.format.ogc.filter.Not.prototype,
- 'unByKey',
- ol.format.ogc.filter.Not.prototype.unByKey);
-
-goog.exportProperty(
- ol.format.ogc.filter.Bbox.prototype,
- 'get',
- ol.format.ogc.filter.Bbox.prototype.get);
-
-goog.exportProperty(
- ol.format.ogc.filter.Bbox.prototype,
- 'getKeys',
- ol.format.ogc.filter.Bbox.prototype.getKeys);
-
-goog.exportProperty(
- ol.format.ogc.filter.Bbox.prototype,
- 'getProperties',
- ol.format.ogc.filter.Bbox.prototype.getProperties);
-
-goog.exportProperty(
- ol.format.ogc.filter.Bbox.prototype,
- 'set',
- ol.format.ogc.filter.Bbox.prototype.set);
-
-goog.exportProperty(
- ol.format.ogc.filter.Bbox.prototype,
- 'setProperties',
- ol.format.ogc.filter.Bbox.prototype.setProperties);
-
-goog.exportProperty(
- ol.format.ogc.filter.Bbox.prototype,
- 'unset',
- ol.format.ogc.filter.Bbox.prototype.unset);
-
-goog.exportProperty(
- ol.format.ogc.filter.Bbox.prototype,
- 'changed',
- ol.format.ogc.filter.Bbox.prototype.changed);
-
-goog.exportProperty(
- ol.format.ogc.filter.Bbox.prototype,
- 'dispatchEvent',
- ol.format.ogc.filter.Bbox.prototype.dispatchEvent);
-
-goog.exportProperty(
- ol.format.ogc.filter.Bbox.prototype,
- 'getRevision',
- ol.format.ogc.filter.Bbox.prototype.getRevision);
-
-goog.exportProperty(
- ol.format.ogc.filter.Bbox.prototype,
- 'on',
- ol.format.ogc.filter.Bbox.prototype.on);
-
-goog.exportProperty(
- ol.format.ogc.filter.Bbox.prototype,
- 'once',
- ol.format.ogc.filter.Bbox.prototype.once);
-
-goog.exportProperty(
- ol.format.ogc.filter.Bbox.prototype,
- 'un',
- ol.format.ogc.filter.Bbox.prototype.un);
-
-goog.exportProperty(
- ol.format.ogc.filter.Bbox.prototype,
- 'unByKey',
- ol.format.ogc.filter.Bbox.prototype.unByKey);
-
-goog.exportProperty(
- ol.format.ogc.filter.Comparison.prototype,
- 'get',
- ol.format.ogc.filter.Comparison.prototype.get);
-
-goog.exportProperty(
- ol.format.ogc.filter.Comparison.prototype,
- 'getKeys',
- ol.format.ogc.filter.Comparison.prototype.getKeys);
-
-goog.exportProperty(
- ol.format.ogc.filter.Comparison.prototype,
- 'getProperties',
- ol.format.ogc.filter.Comparison.prototype.getProperties);
-
-goog.exportProperty(
- ol.format.ogc.filter.Comparison.prototype,
- 'set',
- ol.format.ogc.filter.Comparison.prototype.set);
-
-goog.exportProperty(
- ol.format.ogc.filter.Comparison.prototype,
- 'setProperties',
- ol.format.ogc.filter.Comparison.prototype.setProperties);
-
-goog.exportProperty(
- ol.format.ogc.filter.Comparison.prototype,
- 'unset',
- ol.format.ogc.filter.Comparison.prototype.unset);
-
-goog.exportProperty(
- ol.format.ogc.filter.Comparison.prototype,
- 'changed',
- ol.format.ogc.filter.Comparison.prototype.changed);
-
-goog.exportProperty(
- ol.format.ogc.filter.Comparison.prototype,
- 'dispatchEvent',
- ol.format.ogc.filter.Comparison.prototype.dispatchEvent);
-
-goog.exportProperty(
- ol.format.ogc.filter.Comparison.prototype,
- 'getRevision',
- ol.format.ogc.filter.Comparison.prototype.getRevision);
-
-goog.exportProperty(
- ol.format.ogc.filter.Comparison.prototype,
- 'on',
- ol.format.ogc.filter.Comparison.prototype.on);
-
-goog.exportProperty(
- ol.format.ogc.filter.Comparison.prototype,
- 'once',
- ol.format.ogc.filter.Comparison.prototype.once);
-
-goog.exportProperty(
- ol.format.ogc.filter.Comparison.prototype,
- 'un',
- ol.format.ogc.filter.Comparison.prototype.un);
-
-goog.exportProperty(
- ol.format.ogc.filter.Comparison.prototype,
- 'unByKey',
- ol.format.ogc.filter.Comparison.prototype.unByKey);
-
-goog.exportProperty(
- ol.format.ogc.filter.ComparisonBinary.prototype,
- 'get',
- ol.format.ogc.filter.ComparisonBinary.prototype.get);
-
-goog.exportProperty(
- ol.format.ogc.filter.ComparisonBinary.prototype,
- 'getKeys',
- ol.format.ogc.filter.ComparisonBinary.prototype.getKeys);
-
-goog.exportProperty(
- ol.format.ogc.filter.ComparisonBinary.prototype,
- 'getProperties',
- ol.format.ogc.filter.ComparisonBinary.prototype.getProperties);
-
-goog.exportProperty(
- ol.format.ogc.filter.ComparisonBinary.prototype,
- 'set',
- ol.format.ogc.filter.ComparisonBinary.prototype.set);
-
-goog.exportProperty(
- ol.format.ogc.filter.ComparisonBinary.prototype,
- 'setProperties',
- ol.format.ogc.filter.ComparisonBinary.prototype.setProperties);
-
-goog.exportProperty(
- ol.format.ogc.filter.ComparisonBinary.prototype,
- 'unset',
- ol.format.ogc.filter.ComparisonBinary.prototype.unset);
-
-goog.exportProperty(
- ol.format.ogc.filter.ComparisonBinary.prototype,
- 'changed',
- ol.format.ogc.filter.ComparisonBinary.prototype.changed);
-
-goog.exportProperty(
- ol.format.ogc.filter.ComparisonBinary.prototype,
- 'dispatchEvent',
- ol.format.ogc.filter.ComparisonBinary.prototype.dispatchEvent);
-
-goog.exportProperty(
- ol.format.ogc.filter.ComparisonBinary.prototype,
- 'getRevision',
- ol.format.ogc.filter.ComparisonBinary.prototype.getRevision);
-
-goog.exportProperty(
- ol.format.ogc.filter.ComparisonBinary.prototype,
- 'on',
- ol.format.ogc.filter.ComparisonBinary.prototype.on);
-
-goog.exportProperty(
- ol.format.ogc.filter.ComparisonBinary.prototype,
- 'once',
- ol.format.ogc.filter.ComparisonBinary.prototype.once);
-
-goog.exportProperty(
- ol.format.ogc.filter.ComparisonBinary.prototype,
- 'un',
- ol.format.ogc.filter.ComparisonBinary.prototype.un);
-
-goog.exportProperty(
- ol.format.ogc.filter.ComparisonBinary.prototype,
- 'unByKey',
- ol.format.ogc.filter.ComparisonBinary.prototype.unByKey);
-
-goog.exportProperty(
- ol.format.ogc.filter.EqualTo.prototype,
- 'get',
- ol.format.ogc.filter.EqualTo.prototype.get);
-
-goog.exportProperty(
- ol.format.ogc.filter.EqualTo.prototype,
- 'getKeys',
- ol.format.ogc.filter.EqualTo.prototype.getKeys);
-
-goog.exportProperty(
- ol.format.ogc.filter.EqualTo.prototype,
- 'getProperties',
- ol.format.ogc.filter.EqualTo.prototype.getProperties);
-
-goog.exportProperty(
- ol.format.ogc.filter.EqualTo.prototype,
- 'set',
- ol.format.ogc.filter.EqualTo.prototype.set);
-
-goog.exportProperty(
- ol.format.ogc.filter.EqualTo.prototype,
- 'setProperties',
- ol.format.ogc.filter.EqualTo.prototype.setProperties);
-
-goog.exportProperty(
- ol.format.ogc.filter.EqualTo.prototype,
- 'unset',
- ol.format.ogc.filter.EqualTo.prototype.unset);
-
-goog.exportProperty(
- ol.format.ogc.filter.EqualTo.prototype,
- 'changed',
- ol.format.ogc.filter.EqualTo.prototype.changed);
-
-goog.exportProperty(
- ol.format.ogc.filter.EqualTo.prototype,
- 'dispatchEvent',
- ol.format.ogc.filter.EqualTo.prototype.dispatchEvent);
-
-goog.exportProperty(
- ol.format.ogc.filter.EqualTo.prototype,
- 'getRevision',
- ol.format.ogc.filter.EqualTo.prototype.getRevision);
-
-goog.exportProperty(
- ol.format.ogc.filter.EqualTo.prototype,
- 'on',
- ol.format.ogc.filter.EqualTo.prototype.on);
-
-goog.exportProperty(
- ol.format.ogc.filter.EqualTo.prototype,
- 'once',
- ol.format.ogc.filter.EqualTo.prototype.once);
-
-goog.exportProperty(
- ol.format.ogc.filter.EqualTo.prototype,
- 'un',
- ol.format.ogc.filter.EqualTo.prototype.un);
-
-goog.exportProperty(
- ol.format.ogc.filter.EqualTo.prototype,
- 'unByKey',
- ol.format.ogc.filter.EqualTo.prototype.unByKey);
-
-goog.exportProperty(
- ol.format.ogc.filter.NotEqualTo.prototype,
- 'get',
- ol.format.ogc.filter.NotEqualTo.prototype.get);
-
-goog.exportProperty(
- ol.format.ogc.filter.NotEqualTo.prototype,
- 'getKeys',
- ol.format.ogc.filter.NotEqualTo.prototype.getKeys);
-
-goog.exportProperty(
- ol.format.ogc.filter.NotEqualTo.prototype,
- 'getProperties',
- ol.format.ogc.filter.NotEqualTo.prototype.getProperties);
-
-goog.exportProperty(
- ol.format.ogc.filter.NotEqualTo.prototype,
- 'set',
- ol.format.ogc.filter.NotEqualTo.prototype.set);
-
-goog.exportProperty(
- ol.format.ogc.filter.NotEqualTo.prototype,
- 'setProperties',
- ol.format.ogc.filter.NotEqualTo.prototype.setProperties);
-
-goog.exportProperty(
- ol.format.ogc.filter.NotEqualTo.prototype,
- 'unset',
- ol.format.ogc.filter.NotEqualTo.prototype.unset);
-
-goog.exportProperty(
- ol.format.ogc.filter.NotEqualTo.prototype,
- 'changed',
- ol.format.ogc.filter.NotEqualTo.prototype.changed);
-
-goog.exportProperty(
- ol.format.ogc.filter.NotEqualTo.prototype,
- 'dispatchEvent',
- ol.format.ogc.filter.NotEqualTo.prototype.dispatchEvent);
-
-goog.exportProperty(
- ol.format.ogc.filter.NotEqualTo.prototype,
- 'getRevision',
- ol.format.ogc.filter.NotEqualTo.prototype.getRevision);
-
-goog.exportProperty(
- ol.format.ogc.filter.NotEqualTo.prototype,
- 'on',
- ol.format.ogc.filter.NotEqualTo.prototype.on);
-
-goog.exportProperty(
- ol.format.ogc.filter.NotEqualTo.prototype,
- 'once',
- ol.format.ogc.filter.NotEqualTo.prototype.once);
-
-goog.exportProperty(
- ol.format.ogc.filter.NotEqualTo.prototype,
- 'un',
- ol.format.ogc.filter.NotEqualTo.prototype.un);
-
-goog.exportProperty(
- ol.format.ogc.filter.NotEqualTo.prototype,
- 'unByKey',
- ol.format.ogc.filter.NotEqualTo.prototype.unByKey);
-
-goog.exportProperty(
- ol.format.ogc.filter.LessThan.prototype,
- 'get',
- ol.format.ogc.filter.LessThan.prototype.get);
-
-goog.exportProperty(
- ol.format.ogc.filter.LessThan.prototype,
- 'getKeys',
- ol.format.ogc.filter.LessThan.prototype.getKeys);
-
-goog.exportProperty(
- ol.format.ogc.filter.LessThan.prototype,
- 'getProperties',
- ol.format.ogc.filter.LessThan.prototype.getProperties);
-
-goog.exportProperty(
- ol.format.ogc.filter.LessThan.prototype,
- 'set',
- ol.format.ogc.filter.LessThan.prototype.set);
-
-goog.exportProperty(
- ol.format.ogc.filter.LessThan.prototype,
- 'setProperties',
- ol.format.ogc.filter.LessThan.prototype.setProperties);
-
-goog.exportProperty(
- ol.format.ogc.filter.LessThan.prototype,
- 'unset',
- ol.format.ogc.filter.LessThan.prototype.unset);
-
-goog.exportProperty(
- ol.format.ogc.filter.LessThan.prototype,
- 'changed',
- ol.format.ogc.filter.LessThan.prototype.changed);
-
-goog.exportProperty(
- ol.format.ogc.filter.LessThan.prototype,
- 'dispatchEvent',
- ol.format.ogc.filter.LessThan.prototype.dispatchEvent);
-
-goog.exportProperty(
- ol.format.ogc.filter.LessThan.prototype,
- 'getRevision',
- ol.format.ogc.filter.LessThan.prototype.getRevision);
-
-goog.exportProperty(
- ol.format.ogc.filter.LessThan.prototype,
- 'on',
- ol.format.ogc.filter.LessThan.prototype.on);
-
-goog.exportProperty(
- ol.format.ogc.filter.LessThan.prototype,
- 'once',
- ol.format.ogc.filter.LessThan.prototype.once);
-
-goog.exportProperty(
- ol.format.ogc.filter.LessThan.prototype,
- 'un',
- ol.format.ogc.filter.LessThan.prototype.un);
-
-goog.exportProperty(
- ol.format.ogc.filter.LessThan.prototype,
- 'unByKey',
- ol.format.ogc.filter.LessThan.prototype.unByKey);
-
-goog.exportProperty(
- ol.format.ogc.filter.LessThanOrEqualTo.prototype,
- 'get',
- ol.format.ogc.filter.LessThanOrEqualTo.prototype.get);
-
-goog.exportProperty(
- ol.format.ogc.filter.LessThanOrEqualTo.prototype,
- 'getKeys',
- ol.format.ogc.filter.LessThanOrEqualTo.prototype.getKeys);
-
-goog.exportProperty(
- ol.format.ogc.filter.LessThanOrEqualTo.prototype,
- 'getProperties',
- ol.format.ogc.filter.LessThanOrEqualTo.prototype.getProperties);
-
-goog.exportProperty(
- ol.format.ogc.filter.LessThanOrEqualTo.prototype,
- 'set',
- ol.format.ogc.filter.LessThanOrEqualTo.prototype.set);
-
-goog.exportProperty(
- ol.format.ogc.filter.LessThanOrEqualTo.prototype,
- 'setProperties',
- ol.format.ogc.filter.LessThanOrEqualTo.prototype.setProperties);
-
-goog.exportProperty(
- ol.format.ogc.filter.LessThanOrEqualTo.prototype,
- 'unset',
- ol.format.ogc.filter.LessThanOrEqualTo.prototype.unset);
-
-goog.exportProperty(
- ol.format.ogc.filter.LessThanOrEqualTo.prototype,
- 'changed',
- ol.format.ogc.filter.LessThanOrEqualTo.prototype.changed);
-
-goog.exportProperty(
- ol.format.ogc.filter.LessThanOrEqualTo.prototype,
- 'dispatchEvent',
- ol.format.ogc.filter.LessThanOrEqualTo.prototype.dispatchEvent);
-
-goog.exportProperty(
- ol.format.ogc.filter.LessThanOrEqualTo.prototype,
- 'getRevision',
- ol.format.ogc.filter.LessThanOrEqualTo.prototype.getRevision);
-
-goog.exportProperty(
- ol.format.ogc.filter.LessThanOrEqualTo.prototype,
- 'on',
- ol.format.ogc.filter.LessThanOrEqualTo.prototype.on);
-
-goog.exportProperty(
- ol.format.ogc.filter.LessThanOrEqualTo.prototype,
- 'once',
- ol.format.ogc.filter.LessThanOrEqualTo.prototype.once);
-
-goog.exportProperty(
- ol.format.ogc.filter.LessThanOrEqualTo.prototype,
- 'un',
- ol.format.ogc.filter.LessThanOrEqualTo.prototype.un);
-
-goog.exportProperty(
- ol.format.ogc.filter.LessThanOrEqualTo.prototype,
- 'unByKey',
- ol.format.ogc.filter.LessThanOrEqualTo.prototype.unByKey);
-
-goog.exportProperty(
- ol.format.ogc.filter.GreaterThan.prototype,
- 'get',
- ol.format.ogc.filter.GreaterThan.prototype.get);
-
-goog.exportProperty(
- ol.format.ogc.filter.GreaterThan.prototype,
- 'getKeys',
- ol.format.ogc.filter.GreaterThan.prototype.getKeys);
-
-goog.exportProperty(
- ol.format.ogc.filter.GreaterThan.prototype,
- 'getProperties',
- ol.format.ogc.filter.GreaterThan.prototype.getProperties);
-
-goog.exportProperty(
- ol.format.ogc.filter.GreaterThan.prototype,
- 'set',
- ol.format.ogc.filter.GreaterThan.prototype.set);
-
-goog.exportProperty(
- ol.format.ogc.filter.GreaterThan.prototype,
- 'setProperties',
- ol.format.ogc.filter.GreaterThan.prototype.setProperties);
-
-goog.exportProperty(
- ol.format.ogc.filter.GreaterThan.prototype,
- 'unset',
- ol.format.ogc.filter.GreaterThan.prototype.unset);
-
-goog.exportProperty(
- ol.format.ogc.filter.GreaterThan.prototype,
- 'changed',
- ol.format.ogc.filter.GreaterThan.prototype.changed);
-
-goog.exportProperty(
- ol.format.ogc.filter.GreaterThan.prototype,
- 'dispatchEvent',
- ol.format.ogc.filter.GreaterThan.prototype.dispatchEvent);
-
-goog.exportProperty(
- ol.format.ogc.filter.GreaterThan.prototype,
- 'getRevision',
- ol.format.ogc.filter.GreaterThan.prototype.getRevision);
-
-goog.exportProperty(
- ol.format.ogc.filter.GreaterThan.prototype,
- 'on',
- ol.format.ogc.filter.GreaterThan.prototype.on);
-
-goog.exportProperty(
- ol.format.ogc.filter.GreaterThan.prototype,
- 'once',
- ol.format.ogc.filter.GreaterThan.prototype.once);
-
-goog.exportProperty(
- ol.format.ogc.filter.GreaterThan.prototype,
- 'un',
- ol.format.ogc.filter.GreaterThan.prototype.un);
-
-goog.exportProperty(
- ol.format.ogc.filter.GreaterThan.prototype,
- 'unByKey',
- ol.format.ogc.filter.GreaterThan.prototype.unByKey);
-
-goog.exportProperty(
- ol.format.ogc.filter.GreaterThanOrEqualTo.prototype,
- 'get',
- ol.format.ogc.filter.GreaterThanOrEqualTo.prototype.get);
-
-goog.exportProperty(
- ol.format.ogc.filter.GreaterThanOrEqualTo.prototype,
- 'getKeys',
- ol.format.ogc.filter.GreaterThanOrEqualTo.prototype.getKeys);
-
-goog.exportProperty(
- ol.format.ogc.filter.GreaterThanOrEqualTo.prototype,
- 'getProperties',
- ol.format.ogc.filter.GreaterThanOrEqualTo.prototype.getProperties);
-
-goog.exportProperty(
- ol.format.ogc.filter.GreaterThanOrEqualTo.prototype,
- 'set',
- ol.format.ogc.filter.GreaterThanOrEqualTo.prototype.set);
-
-goog.exportProperty(
- ol.format.ogc.filter.GreaterThanOrEqualTo.prototype,
- 'setProperties',
- ol.format.ogc.filter.GreaterThanOrEqualTo.prototype.setProperties);
-
-goog.exportProperty(
- ol.format.ogc.filter.GreaterThanOrEqualTo.prototype,
- 'unset',
- ol.format.ogc.filter.GreaterThanOrEqualTo.prototype.unset);
-
-goog.exportProperty(
- ol.format.ogc.filter.GreaterThanOrEqualTo.prototype,
- 'changed',
- ol.format.ogc.filter.GreaterThanOrEqualTo.prototype.changed);
-
-goog.exportProperty(
- ol.format.ogc.filter.GreaterThanOrEqualTo.prototype,
- 'dispatchEvent',
- ol.format.ogc.filter.GreaterThanOrEqualTo.prototype.dispatchEvent);
-
-goog.exportProperty(
- ol.format.ogc.filter.GreaterThanOrEqualTo.prototype,
- 'getRevision',
- ol.format.ogc.filter.GreaterThanOrEqualTo.prototype.getRevision);
-
-goog.exportProperty(
- ol.format.ogc.filter.GreaterThanOrEqualTo.prototype,
- 'on',
- ol.format.ogc.filter.GreaterThanOrEqualTo.prototype.on);
-
-goog.exportProperty(
- ol.format.ogc.filter.GreaterThanOrEqualTo.prototype,
- 'once',
- ol.format.ogc.filter.GreaterThanOrEqualTo.prototype.once);
-
-goog.exportProperty(
- ol.format.ogc.filter.GreaterThanOrEqualTo.prototype,
- 'un',
- ol.format.ogc.filter.GreaterThanOrEqualTo.prototype.un);
-
-goog.exportProperty(
- ol.format.ogc.filter.GreaterThanOrEqualTo.prototype,
- 'unByKey',
- ol.format.ogc.filter.GreaterThanOrEqualTo.prototype.unByKey);
-
-goog.exportProperty(
- ol.format.ogc.filter.IsNull.prototype,
- 'get',
- ol.format.ogc.filter.IsNull.prototype.get);
-
-goog.exportProperty(
- ol.format.ogc.filter.IsNull.prototype,
- 'getKeys',
- ol.format.ogc.filter.IsNull.prototype.getKeys);
-
-goog.exportProperty(
- ol.format.ogc.filter.IsNull.prototype,
- 'getProperties',
- ol.format.ogc.filter.IsNull.prototype.getProperties);
-
-goog.exportProperty(
- ol.format.ogc.filter.IsNull.prototype,
- 'set',
- ol.format.ogc.filter.IsNull.prototype.set);
-
-goog.exportProperty(
- ol.format.ogc.filter.IsNull.prototype,
- 'setProperties',
- ol.format.ogc.filter.IsNull.prototype.setProperties);
-
-goog.exportProperty(
- ol.format.ogc.filter.IsNull.prototype,
- 'unset',
- ol.format.ogc.filter.IsNull.prototype.unset);
-
-goog.exportProperty(
- ol.format.ogc.filter.IsNull.prototype,
- 'changed',
- ol.format.ogc.filter.IsNull.prototype.changed);
-
-goog.exportProperty(
- ol.format.ogc.filter.IsNull.prototype,
- 'dispatchEvent',
- ol.format.ogc.filter.IsNull.prototype.dispatchEvent);
-
-goog.exportProperty(
- ol.format.ogc.filter.IsNull.prototype,
- 'getRevision',
- ol.format.ogc.filter.IsNull.prototype.getRevision);
-
-goog.exportProperty(
- ol.format.ogc.filter.IsNull.prototype,
- 'on',
- ol.format.ogc.filter.IsNull.prototype.on);
-
-goog.exportProperty(
- ol.format.ogc.filter.IsNull.prototype,
- 'once',
- ol.format.ogc.filter.IsNull.prototype.once);
-
-goog.exportProperty(
- ol.format.ogc.filter.IsNull.prototype,
- 'un',
- ol.format.ogc.filter.IsNull.prototype.un);
-
-goog.exportProperty(
- ol.format.ogc.filter.IsNull.prototype,
- 'unByKey',
- ol.format.ogc.filter.IsNull.prototype.unByKey);
-
-goog.exportProperty(
- ol.format.ogc.filter.IsBetween.prototype,
- 'get',
- ol.format.ogc.filter.IsBetween.prototype.get);
-
-goog.exportProperty(
- ol.format.ogc.filter.IsBetween.prototype,
- 'getKeys',
- ol.format.ogc.filter.IsBetween.prototype.getKeys);
-
-goog.exportProperty(
- ol.format.ogc.filter.IsBetween.prototype,
- 'getProperties',
- ol.format.ogc.filter.IsBetween.prototype.getProperties);
-
-goog.exportProperty(
- ol.format.ogc.filter.IsBetween.prototype,
- 'set',
- ol.format.ogc.filter.IsBetween.prototype.set);
-
-goog.exportProperty(
- ol.format.ogc.filter.IsBetween.prototype,
- 'setProperties',
- ol.format.ogc.filter.IsBetween.prototype.setProperties);
-
-goog.exportProperty(
- ol.format.ogc.filter.IsBetween.prototype,
- 'unset',
- ol.format.ogc.filter.IsBetween.prototype.unset);
-
-goog.exportProperty(
- ol.format.ogc.filter.IsBetween.prototype,
- 'changed',
- ol.format.ogc.filter.IsBetween.prototype.changed);
-
-goog.exportProperty(
- ol.format.ogc.filter.IsBetween.prototype,
- 'dispatchEvent',
- ol.format.ogc.filter.IsBetween.prototype.dispatchEvent);
-
-goog.exportProperty(
- ol.format.ogc.filter.IsBetween.prototype,
- 'getRevision',
- ol.format.ogc.filter.IsBetween.prototype.getRevision);
-
-goog.exportProperty(
- ol.format.ogc.filter.IsBetween.prototype,
- 'on',
- ol.format.ogc.filter.IsBetween.prototype.on);
-
-goog.exportProperty(
- ol.format.ogc.filter.IsBetween.prototype,
- 'once',
- ol.format.ogc.filter.IsBetween.prototype.once);
-
-goog.exportProperty(
- ol.format.ogc.filter.IsBetween.prototype,
- 'un',
- ol.format.ogc.filter.IsBetween.prototype.un);
-
-goog.exportProperty(
- ol.format.ogc.filter.IsBetween.prototype,
- 'unByKey',
- ol.format.ogc.filter.IsBetween.prototype.unByKey);
-
-goog.exportProperty(
- ol.format.ogc.filter.IsLike.prototype,
- 'get',
- ol.format.ogc.filter.IsLike.prototype.get);
-
-goog.exportProperty(
- ol.format.ogc.filter.IsLike.prototype,
- 'getKeys',
- ol.format.ogc.filter.IsLike.prototype.getKeys);
-
-goog.exportProperty(
- ol.format.ogc.filter.IsLike.prototype,
- 'getProperties',
- ol.format.ogc.filter.IsLike.prototype.getProperties);
-
-goog.exportProperty(
- ol.format.ogc.filter.IsLike.prototype,
- 'set',
- ol.format.ogc.filter.IsLike.prototype.set);
-
-goog.exportProperty(
- ol.format.ogc.filter.IsLike.prototype,
- 'setProperties',
- ol.format.ogc.filter.IsLike.prototype.setProperties);
-
-goog.exportProperty(
- ol.format.ogc.filter.IsLike.prototype,
- 'unset',
- ol.format.ogc.filter.IsLike.prototype.unset);
-
-goog.exportProperty(
- ol.format.ogc.filter.IsLike.prototype,
- 'changed',
- ol.format.ogc.filter.IsLike.prototype.changed);
-
-goog.exportProperty(
- ol.format.ogc.filter.IsLike.prototype,
- 'dispatchEvent',
- ol.format.ogc.filter.IsLike.prototype.dispatchEvent);
-
-goog.exportProperty(
- ol.format.ogc.filter.IsLike.prototype,
- 'getRevision',
- ol.format.ogc.filter.IsLike.prototype.getRevision);
-
-goog.exportProperty(
- ol.format.ogc.filter.IsLike.prototype,
- 'on',
- ol.format.ogc.filter.IsLike.prototype.on);
-
-goog.exportProperty(
- ol.format.ogc.filter.IsLike.prototype,
- 'once',
- ol.format.ogc.filter.IsLike.prototype.once);
-
-goog.exportProperty(
- ol.format.ogc.filter.IsLike.prototype,
- 'un',
- ol.format.ogc.filter.IsLike.prototype.un);
-
-goog.exportProperty(
- ol.format.ogc.filter.IsLike.prototype,
- 'unByKey',
- ol.format.ogc.filter.IsLike.prototype.unByKey);
-
-goog.exportProperty(
ol.format.GML2.prototype,
'readFeatures',
ol.format.GML2.prototype.readFeatures);
diff --git a/chimere/static/ol3/ol.js b/chimere/static/ol3/ol.js
index c9bc673..6cc1289 100644
--- a/chimere/static/ol3/ol.js
+++ b/chimere/static/ol3/ol.js
@@ -1,6 +1,6 @@
// OpenLayers 3. See http://openlayers.org/
// License: https://raw.githubusercontent.com/openlayers/ol3/master/LICENSE.md
-// Version: v3.16.0
+// Version: v3.17.1
(function (root, factory) {
if (typeof exports === "object") {
@@ -12,1014 +12,987 @@
}
}(this, function () {
var OPENLAYERS = {};
- var l,aa=this;function t(a,c,d){a=a.split(".");d=d||aa;a[0]in d||!d.execScript||d.execScript("var "+a[0]);for(var e;a.length&&(e=a.shift());)a.length||void 0===c?d[e]?d=d[e]:d=d[e]={}:d[e]=c}function ba(a){a.Ub=function(){return a.Og?a.Og:a.Og=new a}}
-function ca(a){var c=typeof a;if("object"==c)if(a){if(a instanceof Array)return"array";if(a instanceof Object)return c;var d=Object.prototype.toString.call(a);if("[object Window]"==d)return"object";if("[object Array]"==d||"number"==typeof a.length&&"undefined"!=typeof a.splice&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("splice"))return"array";if("[object Function]"==d||"undefined"!=typeof a.call&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("call"))return"function"}else return"null";
-else if("function"==c&&"undefined"==typeof a.call)return"object";return c}function da(a){var c=ca(a);return"array"==c||"object"==c&&"number"==typeof a.length}function ea(a){return"string"==typeof a}function fa(a){return"number"==typeof a}function ga(a){return"function"==ca(a)}function ha(a){var c=typeof a;return"object"==c&&null!=a||"function"==c}function w(a){return a[ia]||(a[ia]=++ja)}var ia="closure_uid_"+(1E9*Math.random()>>>0),ja=0;function ka(a,c,d){return a.call.apply(a.bind,arguments)}
-function la(a,c,d){if(!a)throw Error();if(2<arguments.length){var e=Array.prototype.slice.call(arguments,2);return function(){var d=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(d,e);return a.apply(c,d)}}return function(){return a.apply(c,arguments)}}function ma(a,c,d){ma=Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?ka:la;return ma.apply(null,arguments)}
-function y(a,c){function d(){}d.prototype=c.prototype;a.ia=c.prototype;a.prototype=new d;a.prototype.constructor=a;a.Lp=function(a,d,g){for(var h=Array(arguments.length-2),k=2;k<arguments.length;k++)h[k-2]=arguments[k];return c.prototype[d].apply(a,h)}};var na,oa;function pa(){}var qa=Function("return this")();var ra;var sa=String.prototype.trim?function(a){return a.trim()}:function(a){return a.replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")};function ta(a){if(!va.test(a))return a;-1!=a.indexOf("&")&&(a=a.replace(wa,"&amp;"));-1!=a.indexOf("<")&&(a=a.replace(xa,"&lt;"));-1!=a.indexOf(">")&&(a=a.replace(ya,"&gt;"));-1!=a.indexOf('"')&&(a=a.replace(za,"&quot;"));-1!=a.indexOf("'")&&(a=a.replace(Aa,"&#39;"));-1!=a.indexOf("\x00")&&(a=a.replace(Ba,"&#0;"));return a}var wa=/&/g,xa=/</g,ya=/>/g,za=/"/g,Aa=/'/g,Ba=/\x00/g,va=/[\x00&<>"']/;
-function Ca(a,c){return a<c?-1:a>c?1:0};function Da(a,c,d){return Math.min(Math.max(a,c),d)}var Ea=function(){var a;"cosh"in Math?a=Math.cosh:a=function(a){a=Math.exp(a);return(a+1/a)/2};return a}();function Fa(a,c,d,e,f,g){var h=f-d,k=g-e;if(0!==h||0!==k){var m=((a-d)*h+(c-e)*k)/(h*h+k*k);1<m?(d=f,e=g):0<m&&(d+=h*m,e+=k*m)}return Ga(a,c,d,e)}function Ga(a,c,d,e){a=d-a;c=e-c;return a*a+c*c}function Ha(a){return a*Math.PI/180}function Ja(a,c){var d=a%c;return 0>d*c?d+c:d}function La(a,c,d){return a+d*(c-a)};function Ma(a){return function(c){if(c)return[Da(c[0],a[0],a[2]),Da(c[1],a[1],a[3])]}}function Na(a){return a};function Oa(a,c,d){this.center=a;this.resolution=c;this.rotation=d};var Pa="function"===typeof Object.assign?Object.assign:function(a,c){if(void 0===a||null===a)throw new TypeError("Cannot convert undefined or null to object");for(var d=Object(a),e=1,f=arguments.length;e<f;++e){var g=arguments[e];if(void 0!==g&&null!==g)for(var h in g)g.hasOwnProperty(h)&&(d[h]=g[h])}return d};function Qa(a){for(var c in a)delete a[c]}function Ra(a){var c=[],d;for(d in a)c.push(a[d]);return c}function Sa(a){for(var c in a)return!1;return!c};var Ua="olm_"+(1E4*Math.random()|0);function Va(a){function c(c){var e=a.listener,f=a.jg||a.target;a.lg&&Xa(a);return e.call(f,c)}return a.kg=c}function Ya(a,c,d,e){for(var f,g=0,h=a.length;g<h;++g)if(f=a[g],f.listener===c&&f.jg===d)return e&&(f.deleteIndex=g),f}function Za(a,c){var d=a[Ua];return d?d[c]:void 0}function $a(a){var c=a[Ua];c||(c=a[Ua]={});return c}
-function ab(a,c){var d=Za(a,c);if(d){for(var e=0,f=d.length;e<f;++e)a.removeEventListener(c,d[e].kg),Qa(d[e]);d.length=0;if(d=a[Ua])delete d[c],0===Object.keys(d).length&&delete a[Ua]}}function C(a,c,d,e,f){var g=$a(a),h=g[c];h||(h=g[c]=[]);(g=Ya(h,d,e,!1))?f||(g.lg=!1):(g={jg:e,lg:!!f,listener:d,target:a,type:c},a.addEventListener(c,Va(g)),h.push(g));return g}function bb(a,c,d,e){return C(a,c,d,e,!0)}function cb(a,c,d,e){(a=Za(a,c))&&(d=Ya(a,d,e,!0))&&Xa(d)}
-function Xa(a){if(a&&a.target){a.target.removeEventListener(a.type,a.kg);var c=Za(a.target,a.type);if(c){var d="deleteIndex"in a?a.deleteIndex:c.indexOf(a);-1!==d&&c.splice(d,1);0===c.length&&ab(a.target,a.type)}Qa(a)}}function db(a){var c=$a(a),d;for(d in c)ab(a,d)};function eb(){}eb.prototype.Cb=!1;function fb(a){a.Cb||(a.Cb=!0,a.fa())}eb.prototype.fa=pa;function gb(a,c){this.type=a;this.target=c||null}gb.prototype.preventDefault=gb.prototype.stopPropagation=function(){this.no=!0};function hb(a){a.stopPropagation()}function ib(a){a.preventDefault()};function jb(){this.Qa={};this.ya={};this.va={}}y(jb,eb);jb.prototype.addEventListener=function(a,c){var d=this.va[a];d||(d=this.va[a]=[]);-1===d.indexOf(c)&&d.push(c)};
-jb.prototype.b=function(a){var c="string"===typeof a?new gb(a):a;a=c.type;c.target=this;var d=this.va[a],e;if(d){a in this.ya||(this.ya[a]=0,this.Qa[a]=0);++this.ya[a];for(var f=0,g=d.length;f<g;++f)if(!1===d[f].call(this,c)||c.no){e=!1;break}--this.ya[a];if(0===this.ya[a]){c=this.Qa[a];for(delete this.Qa[a];c--;)this.removeEventListener(a,pa);delete this.ya[a]}return e}};jb.prototype.fa=function(){db(this)};function lb(a,c){return c?c in a.va:0<Object.keys(a.va).length}
-jb.prototype.removeEventListener=function(a,c){var d=this.va[a];if(d){var e=d.indexOf(c);a in this.Qa?(d[e]=pa,++this.Qa[a]):(d.splice(e,1),0===d.length&&delete this.va[a])}};function mb(){jb.call(this);this.g=0}y(mb,jb);function nb(a){if(Array.isArray(a))for(var c=0,d=a.length;c<d;++c)Xa(a[c]);else Xa(a)}l=mb.prototype;l.u=function(){++this.g;this.b("change")};l.H=function(){return this.g};l.D=function(a,c,d){if(Array.isArray(a)){for(var e=a.length,f=Array(e),g=0;g<e;++g)f[g]=C(this,a[g],c,d);return f}return C(this,a,c,d)};l.I=function(a,c,d){if(Array.isArray(a)){for(var e=a.length,f=Array(e),g=0;g<e;++g)f[g]=bb(this,a[g],c,d);return f}return bb(this,a,c,d)};
-l.G=function(a,c,d){if(Array.isArray(a))for(var e=0,f=a.length;e<f;++e)cb(this,a[e],c,d);else cb(this,a,c,d)};l.J=nb;function ob(a,c,d){gb.call(this,a);this.key=c;this.oldValue=d}y(ob,gb);function pb(a){mb.call(this);w(this);this.U={};void 0!==a&&this.C(a)}y(pb,mb);var qb={};function rb(a){return qb.hasOwnProperty(a)?qb[a]:qb[a]="change:"+a}l=pb.prototype;l.get=function(a){var c;this.U.hasOwnProperty(a)&&(c=this.U[a]);return c};l.K=function(){return Object.keys(this.U)};l.L=function(){return Pa({},this.U)};function sb(a,c,d){var e;e=rb(c);a.b(new ob(e,c,d));a.b(new ob("propertychange",c,d))}
-l.set=function(a,c,d){d?this.U[a]=c:(d=this.U[a],this.U[a]=c,d!==c&&sb(this,a,d))};l.C=function(a,c){for(var d in a)this.set(d,a[d],c)};l.P=function(a,c){if(a in this.U){var d=this.U[a];delete this.U[a];c||sb(this,a,d)}};function tb(a,c){return a>c?1:a<c?-1:0}function ub(a,c){return 0<=a.indexOf(c)}function vb(a,c,d){var e=a.length;if(a[0]<=c)return 0;if(!(c<=a[e-1]))if(0<d)for(d=1;d<e;++d){if(a[d]<c)return d-1}else if(0>d)for(d=1;d<e;++d){if(a[d]<=c)return d}else for(d=1;d<e;++d){if(a[d]==c)return d;if(a[d]<c)return a[d-1]-c<c-a[d]?d-1:d}return e-1}function wb(a){return a.reduce(function(a,d){return Array.isArray(d)?a.concat(wb(d)):a.concat(d)},[])}
-function xb(a,c){var d,e=da(c)?c:[c],f=e.length;for(d=0;d<f;d++)a[a.length]=e[d]}function yb(a,c){var d=a.indexOf(c),e=-1<d;e&&a.splice(d,1);return e}function zb(a,c){for(var d=a.length>>>0,e,f=0;f<d;f++)if(e=a[f],c(e,f,a))return e;return null}function Ab(a,c){var d=a.length;if(d!==c.length)return!1;for(var e=0;e<d;e++)if(a[e]!==c[e])return!1;return!0}
-function Bb(a){var c=Cb,d=a.length,e=Array(a.length),f;for(f=0;f<d;f++)e[f]={index:f,value:a[f]};e.sort(function(a,d){return c(a.value,d.value)||a.index-d.index});for(f=0;f<a.length;f++)a[f]=e[f].value}function Db(a,c){var d;return a.every(function(e,f){d=f;return!c(e,f,a)})?-1:d};function Eb(a){return function(c,d,e){if(void 0!==c)return c=vb(a,c,e),c=Da(c+d,0,a.length-1),a[c]}}function Fb(a,c,d){return function(e,f,g){if(void 0!==e)return e=Math.max(Math.floor(Math.log(c/e)/Math.log(a)+(0<g?0:0>g?1:.5))+f,0),void 0!==d&&(e=Math.min(e,d)),c/Math.pow(a,e)}};function Gb(a){if(void 0!==a)return 0}function Hb(a,c){if(void 0!==a)return a+c}function Ib(a){var c=2*Math.PI/a;return function(a,e){if(void 0!==a)return a=Math.floor((a+e)/c+.5)*c}}function Jb(){var a=Ha(5);return function(c,d){if(void 0!==c)return Math.abs(c+d)<=a?0:c+d}};function Kb(a,c){var d=void 0!==c?a.toFixed(c):""+a,e=d.indexOf("."),e=-1===e?d.length:e;return 2<e?d:Array(3-e).join("0")+d}function Lb(a){a=(""+a).split(".");for(var c=["1","3"],d=0;d<Math.max(a.length,c.length);d++){var e=parseInt(a[d]||"0",10),f=parseInt(c[d]||"0",10);if(e>f)return 1;if(f>e)return-1}return 0};function Mb(a,c){a[0]+=c[0];a[1]+=c[1];return a}function Nb(a,c){var d=a[0],e=a[1],f=c[0],g=c[1],h=f[0],f=f[1],k=g[0],g=g[1],m=k-h,n=g-f,d=0===m&&0===n?0:(m*(d-h)+n*(e-f))/(m*m+n*n||0);0>=d||(1<=d?(h=k,f=g):(h+=d*m,f+=d*n));return[h,f]}function Ob(a,c,d){a=Ja(a+180,360)-180;var e=Math.abs(3600*a);return Math.floor(e/3600)+"\u00b0 "+Kb(Math.floor(e/60%60))+"\u2032 "+Kb(e%60,d||0)+"\u2033 "+c.charAt(0>a?1:0)}
-function Pb(a,c,d){return a?c.replace("{x}",a[0].toFixed(d)).replace("{y}",a[1].toFixed(d)):""}function Qb(a,c){for(var d=!0,e=a.length-1;0<=e;--e)if(a[e]!=c[e]){d=!1;break}return d}function Rb(a,c){var d=Math.cos(c),e=Math.sin(c),f=a[1]*d+a[0]*e;a[0]=a[0]*d-a[1]*e;a[1]=f;return a}function Sb(a,c){var d=a[0]-c[0],e=a[1]-c[1];return d*d+e*e}function Tb(a,c){return Sb(a,Nb(a,c))}function Ub(a,c){return Pb(a,"{x}, {y}",c)};function Vb(a){for(var c=Wb(),d=0,e=a.length;d<e;++d)Xb(c,a[d]);return c}function Yb(a,c,d){return d?(d[0]=a[0]-c,d[1]=a[1]-c,d[2]=a[2]+c,d[3]=a[3]+c,d):[a[0]-c,a[1]-c,a[2]+c,a[3]+c]}function Zb(a,c){return c?(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3],c):a.slice()}function $b(a,c,d){c=c<a[0]?a[0]-c:a[2]<c?c-a[2]:0;a=d<a[1]?a[1]-d:a[3]<d?d-a[3]:0;return c*c+a*a}function ac(a,c){return bc(a,c[0],c[1])}function cc(a,c){return a[0]<=c[0]&&c[2]<=a[2]&&a[1]<=c[1]&&c[3]<=a[3]}
-function bc(a,c,d){return a[0]<=c&&c<=a[2]&&a[1]<=d&&d<=a[3]}function dc(a,c){var d=a[1],e=a[2],f=a[3],g=c[0],h=c[1],k=0;g<a[0]?k=k|16:g>e&&(k=k|4);h<d?k|=8:h>f&&(k|=2);0===k&&(k=1);return k}function Wb(){return[Infinity,Infinity,-Infinity,-Infinity]}function ec(a,c,d,e,f){return f?(f[0]=a,f[1]=c,f[2]=d,f[3]=e,f):[a,c,d,e]}function fc(a,c){var d=a[0],e=a[1];return ec(d,e,d,e,c)}function gc(a,c,d,e,f){f=ec(Infinity,Infinity,-Infinity,-Infinity,f);return hc(f,a,c,d,e)}
-function ic(a,c){return a[0]==c[0]&&a[2]==c[2]&&a[1]==c[1]&&a[3]==c[3]}function jc(a,c){c[0]<a[0]&&(a[0]=c[0]);c[2]>a[2]&&(a[2]=c[2]);c[1]<a[1]&&(a[1]=c[1]);c[3]>a[3]&&(a[3]=c[3]);return a}function Xb(a,c){c[0]<a[0]&&(a[0]=c[0]);c[0]>a[2]&&(a[2]=c[0]);c[1]<a[1]&&(a[1]=c[1]);c[1]>a[3]&&(a[3]=c[1])}function hc(a,c,d,e,f){for(;d<e;d+=f){var g=a,h=c[d],k=c[d+1];g[0]=Math.min(g[0],h);g[1]=Math.min(g[1],k);g[2]=Math.max(g[2],h);g[3]=Math.max(g[3],k)}return a}
-function kc(a,c,d){var e;return(e=c.call(d,lc(a)))||(e=c.call(d,mc(a)))||(e=c.call(d,nc(a)))?e:(e=c.call(d,oc(a)))?e:!1}function pc(a){var c=0;qc(a)||(c=rc(a)*sc(a));return c}function lc(a){return[a[0],a[1]]}function mc(a){return[a[2],a[1]]}function tc(a){return[(a[0]+a[2])/2,(a[1]+a[3])/2]}
-function uc(a,c,d,e,f){var g=c*e[0]/2;e=c*e[1]/2;c=Math.cos(d);var h=Math.sin(d);d=g*c;g*=h;c*=e;var k=e*h,m=a[0],n=a[1];a=m-d+k;e=m-d-k;h=m+d-k;d=m+d+k;var k=n-g-c,m=n-g+c,p=n+g+c,g=n+g-c;return ec(Math.min(a,e,h,d),Math.min(k,m,p,g),Math.max(a,e,h,d),Math.max(k,m,p,g),f)}function sc(a){return a[3]-a[1]}function vc(a,c,d){d=d?d:Wb();wc(a,c)&&(d[0]=a[0]>c[0]?a[0]:c[0],d[1]=a[1]>c[1]?a[1]:c[1],d[2]=a[2]<c[2]?a[2]:c[2],d[3]=a[3]<c[3]?a[3]:c[3]);return d}function oc(a){return[a[0],a[3]]}
-function nc(a){return[a[2],a[3]]}function rc(a){return a[2]-a[0]}function wc(a,c){return a[0]<=c[2]&&a[2]>=c[0]&&a[1]<=c[3]&&a[3]>=c[1]}function qc(a){return a[2]<a[0]||a[3]<a[1]}function yc(a,c){var d=(a[2]-a[0])/2*(c-1),e=(a[3]-a[1])/2*(c-1);a[0]-=d;a[2]+=d;a[1]-=e;a[3]+=e}
-function zc(a,c,d){a=[a[0],a[1],a[0],a[3],a[2],a[1],a[2],a[3]];c(a,a,2);var e=[a[0],a[2],a[4],a[6]],f=[a[1],a[3],a[5],a[7]];c=Math.min.apply(null,e);a=Math.min.apply(null,f);e=Math.max.apply(null,e);f=Math.max.apply(null,f);return ec(c,a,e,f,d)};function Ac(){return!0}function Bc(){return!1};/*
+ var k,aa=this;function t(a,b,c){a=a.split(".");c=c||aa;a[0]in c||!c.execScript||c.execScript("var "+a[0]);for(var d;a.length&&(d=a.shift());)a.length||void 0===b?c[d]?c=c[d]:c=c[d]={}:c[d]=b}function ba(a){a.Zb=function(){return a.Tg?a.Tg:a.Tg=new a}}
+function ca(a){var b=typeof a;if("object"==b)if(a){if(a instanceof Array)return"array";if(a instanceof Object)return b;var c=Object.prototype.toString.call(a);if("[object Window]"==c)return"object";if("[object Array]"==c||"number"==typeof a.length&&"undefined"!=typeof a.splice&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("splice"))return"array";if("[object Function]"==c||"undefined"!=typeof a.call&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("call"))return"function"}else return"null";
+else if("function"==b&&"undefined"==typeof a.call)return"object";return b}function da(a){return"string"==typeof a}function ea(a){return"number"==typeof a}function fa(a){var b=typeof a;return"object"==b&&null!=a||"function"==b}function w(a){return a[ga]||(a[ga]=++ha)}var ga="closure_uid_"+(1E9*Math.random()>>>0),ha=0;function ia(a,b,c){return a.call.apply(a.bind,arguments)}
+function ja(a,b,c){if(!a)throw Error();if(2<arguments.length){var d=Array.prototype.slice.call(arguments,2);return function(){var c=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(c,d);return a.apply(b,c)}}return function(){return a.apply(b,arguments)}}function ka(a,b,c){ka=Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?ia:ja;return ka.apply(null,arguments)};var la,ma;function y(a,b){a.prototype=Object.create(b.prototype);a.prototype.constructor=a}function na(){}var pa=Function("return this")();var qa=String.prototype.trim?function(a){return a.trim()}:function(a){return a.replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")};function ra(a,b){return a<b?-1:a>b?1:0};function sa(a,b,c){return Math.min(Math.max(a,b),c)}var ta=function(){var a;"cosh"in Math?a=Math.cosh:a=function(a){a=Math.exp(a);return(a+1/a)/2};return a}();function ua(a,b,c,d,e,f){var g=e-c,h=f-d;if(0!==g||0!==h){var l=((a-c)*g+(b-d)*h)/(g*g+h*h);1<l?(c=e,d=f):0<l&&(c+=g*l,d+=h*l)}return va(a,b,c,d)}function va(a,b,c,d){a=c-a;b=d-b;return a*a+b*b}function wa(a){return a*Math.PI/180}function xa(a,b){var c=a%b;return 0>c*b?c+b:c}function za(a,b,c){return a+c*(b-a)};function Ba(a){return function(b){if(b)return[sa(b[0],a[0],a[2]),sa(b[1],a[1],a[3])]}}function Ca(a){return a};function Da(a,b,c){this.center=a;this.resolution=b;this.rotation=c};var Ea="function"===typeof Object.assign?Object.assign:function(a,b){if(!a||!a)throw new TypeError("Cannot convert undefined or null to object");for(var c=Object(a),d=1,e=arguments.length;d<e;++d){var f=arguments[d];if(void 0!==f&&null!==f)for(var g in f)f.hasOwnProperty(g)&&(c[g]=f[g])}return c};function Fa(a){for(var b in a)delete a[b]}function Ga(a){var b=[],c;for(c in a)b.push(a[c]);return b}function Ha(a){for(var b in a)return!1;return!b};var Ia="olm_"+(1E4*Math.random()|0);function Ja(a){function b(b){var d=a.listener,e=a.ng||a.target;a.pg&&Ka(a);return d.call(e,b)}return a.og=b}function La(a,b,c,d){for(var e,f=0,g=a.length;f<g;++f)if(e=a[f],e.listener===b&&e.ng===c)return d&&(e.deleteIndex=f),e}function Ma(a,b){var c=a[Ia];return c?c[b]:void 0}function Na(a){var b=a[Ia];b||(b=a[Ia]={});return b}
+function Oa(a,b){var c=Ma(a,b);if(c){for(var d=0,e=c.length;d<e;++d)a.removeEventListener(b,c[d].og),Fa(c[d]);c.length=0;if(c=a[Ia])delete c[b],0===Object.keys(c).length&&delete a[Ia]}}function B(a,b,c,d,e){var f=Na(a),g=f[b];g||(g=f[b]=[]);(f=La(g,c,d,!1))?e||(f.pg=!1):(f={ng:d,pg:!!e,listener:c,target:a,type:b},a.addEventListener(b,Ja(f)),g.push(f));return f}function Pa(a,b,c,d){return B(a,b,c,d,!0)}function Qa(a,b,c,d){(a=Ma(a,b))&&(c=La(a,c,d,!0))&&Ka(c)}
+function Ka(a){if(a&&a.target){a.target.removeEventListener(a.type,a.og);var b=Ma(a.target,a.type);if(b){var c="deleteIndex"in a?a.deleteIndex:b.indexOf(a);-1!==c&&b.splice(c,1);0===b.length&&Oa(a.target,a.type)}Fa(a)}}function Ra(a){var b=Na(a),c;for(c in b)Oa(a,c)};function Sa(){}Sa.prototype.Gb=!1;function Ta(a){a.Gb||(a.Gb=!0,a.ka())}Sa.prototype.ka=na;function Wa(a,b){this.type=a;this.target=b||null}Wa.prototype.preventDefault=Wa.prototype.stopPropagation=function(){this.to=!0};function Ya(a){a.stopPropagation()}function Za(a){a.preventDefault()};function $a(){this.Ra={};this.Ba={};this.ya={}}y($a,Sa);$a.prototype.addEventListener=function(a,b){var c=this.ya[a];c||(c=this.ya[a]=[]);-1===c.indexOf(b)&&c.push(b)};
+$a.prototype.b=function(a){var b="string"===typeof a?new Wa(a):a;a=b.type;b.target=this;var c=this.ya[a],d;if(c){a in this.Ba||(this.Ba[a]=0,this.Ra[a]=0);++this.Ba[a];for(var e=0,f=c.length;e<f;++e)if(!1===c[e].call(this,b)||b.to){d=!1;break}--this.Ba[a];if(0===this.Ba[a]){b=this.Ra[a];for(delete this.Ra[a];b--;)this.removeEventListener(a,na);delete this.Ba[a]}return d}};$a.prototype.ka=function(){Ra(this)};function ab(a,b){return b?b in a.ya:0<Object.keys(a.ya).length}
+$a.prototype.removeEventListener=function(a,b){var c=this.ya[a];if(c){var d=c.indexOf(b);a in this.Ra?(c[d]=na,++this.Ra[a]):(c.splice(d,1),0===c.length&&delete this.ya[a])}};function bb(){$a.call(this);this.g=0}y(bb,$a);function cb(a){if(Array.isArray(a))for(var b=0,c=a.length;b<c;++b)Ka(a[b]);else Ka(a)}k=bb.prototype;k.u=function(){++this.g;this.b("change")};k.K=function(){return this.g};k.I=function(a,b,c){if(Array.isArray(a)){for(var d=a.length,e=Array(d),f=0;f<d;++f)e[f]=B(this,a[f],b,c);return e}return B(this,a,b,c)};k.L=function(a,b,c){if(Array.isArray(a)){for(var d=a.length,e=Array(d),f=0;f<d;++f)e[f]=Pa(this,a[f],b,c);return e}return Pa(this,a,b,c)};
+k.J=function(a,b,c){if(Array.isArray(a))for(var d=0,e=a.length;d<e;++d)Qa(this,a[d],b,c);else Qa(this,a,b,c)};k.M=cb;function db(a,b,c){Wa.call(this,a);this.key=b;this.oldValue=c}y(db,Wa);function eb(a){bb.call(this);w(this);this.U={};void 0!==a&&this.G(a)}y(eb,bb);var fb={};function gb(a){return fb.hasOwnProperty(a)?fb[a]:fb[a]="change:"+a}k=eb.prototype;k.get=function(a){var b;this.U.hasOwnProperty(a)&&(b=this.U[a]);return b};k.N=function(){return Object.keys(this.U)};k.O=function(){return Ea({},this.U)};function hb(a,b,c){var d;d=gb(b);a.b(new db(d,b,c));a.b(new db("propertychange",b,c))}
+k.set=function(a,b,c){c?this.U[a]=b:(c=this.U[a],this.U[a]=b,c!==b&&hb(this,a,c))};k.G=function(a,b){for(var c in a)this.set(c,a[c],b)};k.P=function(a,b){if(a in this.U){var c=this.U[a];delete this.U[a];b||hb(this,a,c)}};function ib(a,b){return a>b?1:a<b?-1:0}function jb(a,b){return 0<=a.indexOf(b)}function kb(a,b,c){var d=a.length;if(a[0]<=b)return 0;if(!(b<=a[d-1]))if(0<c)for(c=1;c<d;++c){if(a[c]<b)return c-1}else if(0>c)for(c=1;c<d;++c){if(a[c]<=b)return c}else for(c=1;c<d;++c){if(a[c]==b)return c;if(a[c]<b)return a[c-1]-b<b-a[c]?c-1:c}return d-1}function lb(a){return a.reduce(function(a,c){return Array.isArray(c)?a.concat(lb(c)):a.concat(c)},[])}
+function mb(a,b){var c;c=ca(b);var d="array"==c||"object"==c&&"number"==typeof b.length?b:[b],e=d.length;for(c=0;c<e;c++)a[a.length]=d[c]}function nb(a,b){var c=a.indexOf(b),d=-1<c;d&&a.splice(c,1);return d}function ob(a,b){for(var c=a.length>>>0,d,e=0;e<c;e++)if(d=a[e],b(d,e,a))return d;return null}function pb(a,b){var c=a.length;if(c!==b.length)return!1;for(var d=0;d<c;d++)if(a[d]!==b[d])return!1;return!0}
+function qb(a){var b=rb,c=a.length,d=Array(a.length),e;for(e=0;e<c;e++)d[e]={index:e,value:a[e]};d.sort(function(a,c){return b(a.value,c.value)||a.index-c.index});for(e=0;e<a.length;e++)a[e]=d[e].value}function sb(a,b){var c;return a.every(function(d,e){c=e;return!b(d,e,a)})?-1:c};function tb(a){return function(b,c,d){if(void 0!==b)return b=kb(a,b,d),b=sa(b+c,0,a.length-1),a[b]}}function ub(a,b,c){return function(d,e,f){if(void 0!==d)return d=Math.max(Math.floor(Math.log(b/d)/Math.log(a)+(0<f?0:0>f?1:.5))+e,0),void 0!==c&&(d=Math.min(d,c)),b/Math.pow(a,d)}};function vb(a){if(void 0!==a)return 0}function wb(a,b){if(void 0!==a)return a+b}function xb(a){var b=2*Math.PI/a;return function(a,d){if(void 0!==a)return a=Math.floor((a+d)/b+.5)*b}}function yb(){var a=wa(5);return function(b,c){if(void 0!==b)return Math.abs(b+c)<=a?0:b+c}};function zb(a,b){var c=void 0!==b?a.toFixed(b):""+a,d=c.indexOf("."),d=-1===d?c.length:d;return 2<d?c:Array(3-d).join("0")+c}function Ab(a){a=(""+a).split(".");for(var b=["1","3"],c=0;c<Math.max(a.length,b.length);c++){var d=parseInt(a[c]||"0",10),e=parseInt(b[c]||"0",10);if(d>e)return 1;if(e>d)return-1}return 0};function Bb(a,b){a[0]+=b[0];a[1]+=b[1];return a}function Cb(a,b){var c=a[0],d=a[1],e=b[0],f=b[1],g=e[0],e=e[1],h=f[0],f=f[1],l=h-g,m=f-e,c=0===l&&0===m?0:(l*(c-g)+m*(d-e))/(l*l+m*m||0);0>=c||(1<=c?(g=h,e=f):(g+=c*l,e+=c*m));return[g,e]}function Db(a,b,c){a=xa(a+180,360)-180;var d=Math.abs(3600*a);return Math.floor(d/3600)+"\u00b0 "+zb(Math.floor(d/60%60))+"\u2032 "+zb(d%60,c||0)+"\u2033 "+b.charAt(0>a?1:0)}
+function Eb(a,b,c){return a?b.replace("{x}",a[0].toFixed(c)).replace("{y}",a[1].toFixed(c)):""}function Fb(a,b){for(var c=!0,d=a.length-1;0<=d;--d)if(a[d]!=b[d]){c=!1;break}return c}function Gb(a,b){var c=Math.cos(b),d=Math.sin(b),e=a[1]*c+a[0]*d;a[0]=a[0]*c-a[1]*d;a[1]=e;return a}function Hb(a,b){var c=a[0]-b[0],d=a[1]-b[1];return c*c+d*d}function Ib(a,b){return Hb(a,Cb(a,b))}function Jb(a,b){return Eb(a,"{x}, {y}",b)};function Kb(a){for(var b=Lb(),c=0,d=a.length;c<d;++c)Mb(b,a[c]);return b}function Ob(a,b,c){return c?(c[0]=a[0]-b,c[1]=a[1]-b,c[2]=a[2]+b,c[3]=a[3]+b,c):[a[0]-b,a[1]-b,a[2]+b,a[3]+b]}function Pb(a,b){return b?(b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b):a.slice()}function Rb(a,b,c){b=b<a[0]?a[0]-b:a[2]<b?b-a[2]:0;a=c<a[1]?a[1]-c:a[3]<c?c-a[3]:0;return b*b+a*a}function Sb(a,b){return Tb(a,b[0],b[1])}function Ub(a,b){return a[0]<=b[0]&&b[2]<=a[2]&&a[1]<=b[1]&&b[3]<=a[3]}
+function Tb(a,b,c){return a[0]<=b&&b<=a[2]&&a[1]<=c&&c<=a[3]}function Vb(a,b){var c=a[1],d=a[2],e=a[3],f=b[0],g=b[1],h=0;f<a[0]?h|=16:f>d&&(h|=4);g<c?h|=8:g>e&&(h|=2);0===h&&(h=1);return h}function Lb(){return[Infinity,Infinity,-Infinity,-Infinity]}function Wb(a,b,c,d,e){return e?(e[0]=a,e[1]=b,e[2]=c,e[3]=d,e):[a,b,c,d]}function Xb(a,b){var c=a[0],d=a[1];return Wb(c,d,c,d,b)}function Yb(a,b,c,d,e){e=Wb(Infinity,Infinity,-Infinity,-Infinity,e);return Zb(e,a,b,c,d)}
+function $b(a,b){return a[0]==b[0]&&a[2]==b[2]&&a[1]==b[1]&&a[3]==b[3]}function ac(a,b){b[0]<a[0]&&(a[0]=b[0]);b[2]>a[2]&&(a[2]=b[2]);b[1]<a[1]&&(a[1]=b[1]);b[3]>a[3]&&(a[3]=b[3]);return a}function Mb(a,b){b[0]<a[0]&&(a[0]=b[0]);b[0]>a[2]&&(a[2]=b[0]);b[1]<a[1]&&(a[1]=b[1]);b[1]>a[3]&&(a[3]=b[1])}function Zb(a,b,c,d,e){for(;c<d;c+=e){var f=a,g=b[c],h=b[c+1];f[0]=Math.min(f[0],g);f[1]=Math.min(f[1],h);f[2]=Math.max(f[2],g);f[3]=Math.max(f[3],h)}return a}
+function bc(a,b,c){var d;return(d=b.call(c,cc(a)))||(d=b.call(c,dc(a)))||(d=b.call(c,ec(a)))?d:(d=b.call(c,fc(a)))?d:!1}function gc(a){var b=0;hc(a)||(b=ic(a)*jc(a));return b}function cc(a){return[a[0],a[1]]}function dc(a){return[a[2],a[1]]}function kc(a){return[(a[0]+a[2])/2,(a[1]+a[3])/2]}
+function lc(a,b,c,d,e){var f=b*d[0]/2;d=b*d[1]/2;b=Math.cos(c);var g=Math.sin(c);c=f*b;f*=g;b*=d;var h=d*g,l=a[0],m=a[1];a=l-c+h;d=l-c-h;g=l+c-h;c=l+c+h;var h=m-f-b,l=m-f+b,n=m+f+b,f=m+f-b;return Wb(Math.min(a,d,g,c),Math.min(h,l,n,f),Math.max(a,d,g,c),Math.max(h,l,n,f),e)}function jc(a){return a[3]-a[1]}function mc(a,b,c){c=c?c:Lb();nc(a,b)&&(c[0]=a[0]>b[0]?a[0]:b[0],c[1]=a[1]>b[1]?a[1]:b[1],c[2]=a[2]<b[2]?a[2]:b[2],c[3]=a[3]<b[3]?a[3]:b[3]);return c}function fc(a){return[a[0],a[3]]}
+function ec(a){return[a[2],a[3]]}function ic(a){return a[2]-a[0]}function nc(a,b){return a[0]<=b[2]&&a[2]>=b[0]&&a[1]<=b[3]&&a[3]>=b[1]}function hc(a){return a[2]<a[0]||a[3]<a[1]}function oc(a,b){var c=(a[2]-a[0])/2*(b-1),d=(a[3]-a[1])/2*(b-1);a[0]-=c;a[2]+=c;a[1]-=d;a[3]+=d}
+function pc(a,b,c){a=[a[0],a[1],a[0],a[3],a[2],a[1],a[2],a[3]];b(a,a,2);var d=[a[0],a[2],a[4],a[6]],e=[a[1],a[3],a[5],a[7]];b=Math.min.apply(null,d);a=Math.min.apply(null,e);d=Math.max.apply(null,d);e=Math.max.apply(null,e);return Wb(b,a,d,e,c)};function qc(){return!0}function rc(){return!1};/*
Latitude/longitude spherical geodesy formulae taken from
http://www.movable-type.co.uk/scripts/latlong.html
Licensed under CC-BY-3.0.
*/
-function Cc(a){this.radius=a}Cc.prototype.a=function(a){for(var c=0,d=a.length,e=a[d-1][0],f=a[d-1][1],g=0;g<d;g++)var h=a[g][0],k=a[g][1],c=c+Ha(h-e)*(2+Math.sin(Ha(f))+Math.sin(Ha(k))),e=h,f=k;return c*this.radius*this.radius/2};Cc.prototype.b=function(a,c){var d=Ha(a[1]),e=Ha(c[1]),f=(e-d)/2,g=Ha(c[0]-a[0])/2,d=Math.sin(f)*Math.sin(f)+Math.sin(g)*Math.sin(g)*Math.cos(d)*Math.cos(e);return 2*this.radius*Math.atan2(Math.sqrt(d),Math.sqrt(1-d))};
-Cc.prototype.offset=function(a,c,d){var e=Ha(a[1]);c/=this.radius;var f=Math.asin(Math.sin(e)*Math.cos(c)+Math.cos(e)*Math.sin(c)*Math.cos(d));return[180*(Ha(a[0])+Math.atan2(Math.sin(d)*Math.sin(c)*Math.cos(e),Math.cos(c)-Math.sin(e)*Math.sin(f)))/Math.PI,180*f/Math.PI]};var Dc=new Cc(6370997);var Ec={};Ec.degrees=2*Math.PI*Dc.radius/360;Ec.ft=.3048;Ec.m=1;Ec["us-ft"]=1200/3937;
-function Fc(a){this.eb=a.code;this.c=a.units;this.f=void 0!==a.extent?a.extent:null;this.i=void 0!==a.worldExtent?a.worldExtent:null;this.b=void 0!==a.axisOrientation?a.axisOrientation:"enu";this.g=void 0!==a.global?a.global:!1;this.a=!(!this.g||!this.f);this.o=void 0!==a.getPointResolution?a.getPointResolution:this.nk;this.l=null;this.j=a.metersPerUnit;var c=Gc,d=a.code,e=Hc||qa.proj4;if("function"==typeof e&&void 0===c[d]){var f=e.defs(d);if(void 0!==f){void 0!==f.axis&&void 0===a.axisOrientation&&
-(this.b=f.axis);void 0===a.metersPerUnit&&(this.j=f.to_meter);void 0===a.units&&(this.c=f.units);for(var g in c)c=e.defs(g),void 0!==c&&(a=Ic(g),c===f?Jc([a,this]):(c=e(g,d),Kc(a,this,c.forward,c.inverse)))}}}l=Fc.prototype;l.Oj=function(){return this.eb};l.O=function(){return this.f};l.vb=function(){return this.c};l.Vb=function(){return this.j||Ec[this.c]};l.Ak=function(){return this.i};l.ll=function(){return this.g};l.Yo=function(a){this.g=a;this.a=!(!a||!this.f)};
-l.Gm=function(a){this.f=a;this.a=!(!this.g||!a)};l.gp=function(a){this.i=a};l.Xo=function(a){this.o=a};l.nk=function(a,c){if("degrees"==this.vb())return a;var d=Lc(this,Ic("EPSG:4326")),e=[c[0]-a/2,c[1],c[0]+a/2,c[1],c[0],c[1]-a/2,c[0],c[1]+a/2],e=d(e,e,2),d=Dc.b(e.slice(0,2),e.slice(2,4)),e=Dc.b(e.slice(4,6),e.slice(6,8)),e=(d+e)/2,d=this.Vb();void 0!==d&&(e/=d);return e};l.getPointResolution=function(a,c){return this.o(a,c)};var Gc={},Mc={},Hc=null;
-function Jc(a){Nc(a);a.forEach(function(c){a.forEach(function(a){c!==a&&Oc(c,a,Qc)})})}function Rc(){var a=Sc,c=Tc,d=Uc;Vc.forEach(function(e){a.forEach(function(a){Oc(e,a,c);Oc(a,e,d)})})}function Wc(a){Gc[a.eb]=a;Oc(a,a,Qc)}function Nc(a){var c=[];a.forEach(function(a){c.push(Wc(a))})}function Xc(a){return a?"string"===typeof a?Ic(a):a:Ic("EPSG:3857")}function Oc(a,c,d){a=a.eb;c=c.eb;a in Mc||(Mc[a]={});Mc[a][c]=d}function Kc(a,c,d,e){a=Ic(a);c=Ic(c);Oc(a,c,Yc(d));Oc(c,a,Yc(e))}
-function Yc(a){return function(c,d,e){var f=c.length;e=void 0!==e?e:2;d=void 0!==d?d:Array(f);var g,h;for(h=0;h<f;h+=e)for(g=a([c[h],c[h+1]]),d[h]=g[0],d[h+1]=g[1],g=e-1;2<=g;--g)d[h+g]=c[h+g];return d}}function Ic(a){var c;if(a instanceof Fc)c=a;else if("string"===typeof a){c=Gc[a];var d=Hc||qa.proj4;void 0===c&&"function"==typeof d&&void 0!==d.defs(a)&&(c=new Fc({code:a}),Wc(c))}else c=null;return c}function Zc(a,c){if(a===c)return!0;var d=a.vb()===c.vb();return a.eb===c.eb?d:Lc(a,c)===Qc&&d}
-function $c(a,c){var d=Ic(a),e=Ic(c);return Lc(d,e)}function Lc(a,c){var d=a.eb,e=c.eb,f;d in Mc&&e in Mc[d]&&(f=Mc[d][e]);void 0===f&&(f=ad);return f}function ad(a,c){if(void 0!==c&&a!==c){for(var d=0,e=a.length;d<e;++d)c[d]=a[d];a=c}return a}function Qc(a,c){var d;if(void 0!==c){d=0;for(var e=a.length;d<e;++d)c[d]=a[d];d=c}else d=a.slice();return d}function bd(a,c,d){return $c(c,d)(a,void 0,a.length)}function cd(a,c,d){c=$c(c,d);return zc(a,c)};function dd(){pb.call(this);this.v=Wb();this.B=-1;this.l={};this.s=this.o=0}y(dd,pb);l=dd.prototype;l.ub=function(a,c){var d=c?c:[NaN,NaN];this.rb(a[0],a[1],d,Infinity);return d};l.og=function(a){return this.wc(a[0],a[1])};l.wc=Bc;l.O=function(a){this.B!=this.g&&(this.v=this.Jd(this.v),this.B=this.g);var c=this.v;a?(a[0]=c[0],a[1]=c[1],a[2]=c[2],a[3]=c[3]):a=c;return a};l.yb=function(a){return this.hd(a*a)};l.hb=function(a,c){this.mc($c(a,c));return this};function ed(a){this.length=a.length||a;for(var c=0;c<this.length;c++)this[c]=a[c]||0}ed.prototype.BYTES_PER_ELEMENT=4;ed.prototype.set=function(a,c){c=c||0;for(var d=0;d<a.length&&c+d<this.length;d++)this[c+d]=a[d]};ed.prototype.toString=Array.prototype.join;"undefined"==typeof Float32Array&&(ed.BYTES_PER_ELEMENT=4,ed.prototype.BYTES_PER_ELEMENT=ed.prototype.BYTES_PER_ELEMENT,ed.prototype.set=ed.prototype.set,ed.prototype.toString=ed.prototype.toString,t("Float32Array",ed,void 0));function fd(a){this.length=a.length||a;for(var c=0;c<this.length;c++)this[c]=a[c]||0}fd.prototype.BYTES_PER_ELEMENT=8;fd.prototype.set=function(a,c){c=c||0;for(var d=0;d<a.length&&c+d<this.length;d++)this[c+d]=a[d]};fd.prototype.toString=Array.prototype.join;if("undefined"==typeof Float64Array){try{fd.BYTES_PER_ELEMENT=8}catch(a){}fd.prototype.BYTES_PER_ELEMENT=fd.prototype.BYTES_PER_ELEMENT;fd.prototype.set=fd.prototype.set;fd.prototype.toString=fd.prototype.toString;t("Float64Array",fd,void 0)};function gd(a,c,d,e,f){a[0]=c;a[1]=d;a[2]=e;a[3]=f};function hd(){var a=Array(16);id(a,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);return a}function jd(){var a=Array(16);id(a,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1);return a}function id(a,c,d,e,f,g,h,k,m,n,p,q,r,u,v,x,z){a[0]=c;a[1]=d;a[2]=e;a[3]=f;a[4]=g;a[5]=h;a[6]=k;a[7]=m;a[8]=n;a[9]=p;a[10]=q;a[11]=r;a[12]=u;a[13]=v;a[14]=x;a[15]=z}
-function kd(a,c){a[0]=c[0];a[1]=c[1];a[2]=c[2];a[3]=c[3];a[4]=c[4];a[5]=c[5];a[6]=c[6];a[7]=c[7];a[8]=c[8];a[9]=c[9];a[10]=c[10];a[11]=c[11];a[12]=c[12];a[13]=c[13];a[14]=c[14];a[15]=c[15]}function ld(a){a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1}
-function md(a,c,d){var e=a[0],f=a[1],g=a[2],h=a[3],k=a[4],m=a[5],n=a[6],p=a[7],q=a[8],r=a[9],u=a[10],v=a[11],x=a[12],z=a[13],E=a[14];a=a[15];var B=c[0],A=c[1],G=c[2],O=c[3],L=c[4],R=c[5],Wa=c[6],J=c[7],ua=c[8],Ta=c[9],kb=c[10],Ka=c[11],Ia=c[12],xc=c[13],Pc=c[14];c=c[15];d[0]=e*B+k*A+q*G+x*O;d[1]=f*B+m*A+r*G+z*O;d[2]=g*B+n*A+u*G+E*O;d[3]=h*B+p*A+v*G+a*O;d[4]=e*L+k*R+q*Wa+x*J;d[5]=f*L+m*R+r*Wa+z*J;d[6]=g*L+n*R+u*Wa+E*J;d[7]=h*L+p*R+v*Wa+a*J;d[8]=e*ua+k*Ta+q*kb+x*Ka;d[9]=f*ua+m*Ta+r*kb+z*Ka;d[10]=g*
-ua+n*Ta+u*kb+E*Ka;d[11]=h*ua+p*Ta+v*kb+a*Ka;d[12]=e*Ia+k*xc+q*Pc+x*c;d[13]=f*Ia+m*xc+r*Pc+z*c;d[14]=g*Ia+n*xc+u*Pc+E*c;d[15]=h*Ia+p*xc+v*Pc+a*c}
-function nd(a,c){var d=a[0],e=a[1],f=a[2],g=a[3],h=a[4],k=a[5],m=a[6],n=a[7],p=a[8],q=a[9],r=a[10],u=a[11],v=a[12],x=a[13],z=a[14],E=a[15],B=d*k-e*h,A=d*m-f*h,G=d*n-g*h,O=e*m-f*k,L=e*n-g*k,R=f*n-g*m,Wa=p*x-q*v,J=p*z-r*v,ua=p*E-u*v,Ta=q*z-r*x,kb=q*E-u*x,Ka=r*E-u*z,Ia=B*Ka-A*kb+G*Ta+O*ua-L*J+R*Wa;0!=Ia&&(Ia=1/Ia,c[0]=(k*Ka-m*kb+n*Ta)*Ia,c[1]=(-e*Ka+f*kb-g*Ta)*Ia,c[2]=(x*R-z*L+E*O)*Ia,c[3]=(-q*R+r*L-u*O)*Ia,c[4]=(-h*Ka+m*ua-n*J)*Ia,c[5]=(d*Ka-f*ua+g*J)*Ia,c[6]=(-v*R+z*G-E*A)*Ia,c[7]=(p*R-r*G+u*A)*Ia,
-c[8]=(h*kb-k*ua+n*Wa)*Ia,c[9]=(-d*kb+e*ua-g*Wa)*Ia,c[10]=(v*L-x*G+E*B)*Ia,c[11]=(-p*L+q*G-u*B)*Ia,c[12]=(-h*Ta+k*J-m*Wa)*Ia,c[13]=(d*Ta-e*J+f*Wa)*Ia,c[14]=(-v*O+x*A-z*B)*Ia,c[15]=(p*O-q*A+r*B)*Ia)}function od(a,c,d){var e=a[1]*c+a[5]*d+0*a[9]+a[13],f=a[2]*c+a[6]*d+0*a[10]+a[14],g=a[3]*c+a[7]*d+0*a[11]+a[15];a[12]=a[0]*c+a[4]*d+0*a[8]+a[12];a[13]=e;a[14]=f;a[15]=g}
-function pd(a,c,d){id(a,a[0]*c,a[1]*c,a[2]*c,a[3]*c,a[4]*d,a[5]*d,a[6]*d,a[7]*d,1*a[8],1*a[9],1*a[10],1*a[11],a[12],a[13],a[14],a[15])}function qd(a,c){var d=a[0],e=a[1],f=a[2],g=a[3],h=a[4],k=a[5],m=a[6],n=a[7],p=Math.cos(c),q=Math.sin(c);a[0]=d*p+h*q;a[1]=e*p+k*q;a[2]=f*p+m*q;a[3]=g*p+n*q;a[4]=d*-q+h*p;a[5]=e*-q+k*p;a[6]=f*-q+m*p;a[7]=g*-q+n*p}new Float64Array(3);new Float64Array(3);new Float64Array(4);new Float64Array(4);new Float64Array(4);new Float64Array(16);function rd(a,c,d,e,f,g){var h=f[0],k=f[1],m=f[4],n=f[5],p=f[12];f=f[13];for(var q=g?g:[],r=0;c<d;c+=e){var u=a[c],v=a[c+1];q[r++]=h*u+m*v+p;q[r++]=k*u+n*v+f}g&&q.length!=r&&(q.length=r);return q};function sd(){dd.call(this);this.f="XY";this.a=2;this.A=null}y(sd,dd);function td(a){if("XY"==a)return 2;if("XYZ"==a||"XYM"==a)return 3;if("XYZM"==a)return 4}l=sd.prototype;l.wc=Bc;l.Jd=function(a){return gc(this.A,0,this.A.length,this.a,a)};l.Fb=function(){return this.A.slice(0,this.a)};l.ga=function(){return this.A};l.Gb=function(){return this.A.slice(this.A.length-this.a)};l.Hb=function(){return this.f};
-l.hd=function(a){this.s!=this.g&&(Qa(this.l),this.o=0,this.s=this.g);if(0>a||0!==this.o&&a<=this.o)return this;var c=a.toString();if(this.l.hasOwnProperty(c))return this.l[c];var d=this.Ic(a);if(d.ga().length<this.A.length)return this.l[c]=d;this.o=a;return this};l.Ic=function(){return this};l.ua=function(){return this.a};function ud(a,c,d){a.a=td(c);a.f=c;a.A=d}
-function vd(a,c,d,e){if(c)d=td(c);else{for(c=0;c<e;++c){if(0===d.length){a.f="XY";a.a=2;return}d=d[0]}d=d.length;c=2==d?"XY":3==d?"XYZ":4==d?"XYZM":void 0}a.f=c;a.a=d}l.mc=function(a){this.A&&(a(this.A,this.A,this.a),this.u())};l.rotate=function(a,c){var d=this.ga();if(d){for(var e=d.length,f=this.ua(),g=d?d:[],h=Math.cos(a),k=Math.sin(a),m=c[0],n=c[1],p=0,q=0;q<e;q+=f){var r=d[q]-m,u=d[q+1]-n;g[p++]=m+r*h-u*k;g[p++]=n+r*k+u*h;for(r=q+2;r<q+f;++r)g[p++]=d[r]}d&&g.length!=p&&(g.length=p);this.u()}};
-l.Nc=function(a,c){var d=this.ga();if(d){var e=d.length,f=this.ua(),g=d?d:[],h=0,k,m;for(k=0;k<e;k+=f)for(g[h++]=d[k]+a,g[h++]=d[k+1]+c,m=k+2;m<k+f;++m)g[h++]=d[m];d&&g.length!=h&&(g.length=h);this.u()}};function wd(a,c,d,e){for(var f=0,g=a[d-e],h=a[d-e+1];c<d;c+=e)var k=a[c],m=a[c+1],f=f+(h*k-g*m),g=k,h=m;return f/2}function xd(a,c,d,e){var f=0,g,h;g=0;for(h=d.length;g<h;++g){var k=d[g],f=f+wd(a,c,k,e);c=k}return f};function yd(a,c,d,e,f,g,h){var k=a[c],m=a[c+1],n=a[d]-k,p=a[d+1]-m;if(0!==n||0!==p)if(g=((f-k)*n+(g-m)*p)/(n*n+p*p),1<g)c=d;else if(0<g){for(f=0;f<e;++f)h[f]=La(a[c+f],a[d+f],g);h.length=e;return}for(f=0;f<e;++f)h[f]=a[c+f];h.length=e}function zd(a,c,d,e,f){var g=a[c],h=a[c+1];for(c+=e;c<d;c+=e){var k=a[c],m=a[c+1],g=Ga(g,h,k,m);g>f&&(f=g);g=k;h=m}return f}function Ad(a,c,d,e,f){var g,h;g=0;for(h=d.length;g<h;++g){var k=d[g];f=zd(a,c,k,e,f);c=k}return f}
-function Bd(a,c,d,e,f,g,h,k,m,n,p){if(c==d)return n;var q;if(0===f){q=Ga(h,k,a[c],a[c+1]);if(q<n){for(p=0;p<e;++p)m[p]=a[c+p];m.length=e;return q}return n}for(var r=p?p:[NaN,NaN],u=c+e;u<d;)if(yd(a,u-e,u,e,h,k,r),q=Ga(h,k,r[0],r[1]),q<n){n=q;for(p=0;p<e;++p)m[p]=r[p];m.length=e;u+=e}else u+=e*Math.max((Math.sqrt(q)-Math.sqrt(n))/f|0,1);if(g&&(yd(a,d-e,c,e,h,k,r),q=Ga(h,k,r[0],r[1]),q<n)){n=q;for(p=0;p<e;++p)m[p]=r[p];m.length=e}return n}
-function Cd(a,c,d,e,f,g,h,k,m,n,p){p=p?p:[NaN,NaN];var q,r;q=0;for(r=d.length;q<r;++q){var u=d[q];n=Bd(a,c,u,e,f,g,h,k,m,n,p);c=u}return n};function Dd(a,c){var d=0,e,f;e=0;for(f=c.length;e<f;++e)a[d++]=c[e];return d}function Ed(a,c,d,e){var f,g;f=0;for(g=d.length;f<g;++f){var h=d[f],k;for(k=0;k<e;++k)a[c++]=h[k]}return c}function Fd(a,c,d,e,f){f=f?f:[];var g=0,h,k;h=0;for(k=d.length;h<k;++h)c=Ed(a,c,d[h],e),f[g++]=c;f.length=g;return f};function Gd(a,c,d,e,f){f=void 0!==f?f:[];for(var g=0;c<d;c+=e)f[g++]=a.slice(c,c+e);f.length=g;return f}function Hd(a,c,d,e,f){f=void 0!==f?f:[];var g=0,h,k;h=0;for(k=d.length;h<k;++h){var m=d[h];f[g++]=Gd(a,c,m,e,f[g]);c=m}f.length=g;return f};function Id(a,c,d,e,f,g,h){var k=(d-c)/e;if(3>k){for(;c<d;c+=e)g[h++]=a[c],g[h++]=a[c+1];return h}var m=Array(k);m[0]=1;m[k-1]=1;d=[c,d-e];for(var n=0,p;0<d.length;){var q=d.pop(),r=d.pop(),u=0,v=a[r],x=a[r+1],z=a[q],E=a[q+1];for(p=r+e;p<q;p+=e){var B=Fa(a[p],a[p+1],v,x,z,E);B>u&&(n=p,u=B)}u>f&&(m[(n-c)/e]=1,r+e<n&&d.push(r,n),n+e<q&&d.push(n,q))}for(p=0;p<k;++p)m[p]&&(g[h++]=a[c+p*e],g[h++]=a[c+p*e+1]);return h}
-function Jd(a,c,d,e,f,g,h,k){var m,n;m=0;for(n=d.length;m<n;++m){var p=d[m];a:{var q=a,r=p,u=e,v=f,x=g;if(c!=r){var z=v*Math.round(q[c]/v),E=v*Math.round(q[c+1]/v);c+=u;x[h++]=z;x[h++]=E;var B=void 0,A=void 0;do if(B=v*Math.round(q[c]/v),A=v*Math.round(q[c+1]/v),c+=u,c==r){x[h++]=B;x[h++]=A;break a}while(B==z&&A==E);for(;c<r;){var G,O;G=v*Math.round(q[c]/v);O=v*Math.round(q[c+1]/v);c+=u;if(G!=B||O!=A){var L=B-z,R=A-E,Wa=G-z,J=O-E;L*J==R*Wa&&(0>L&&Wa<L||L==Wa||0<L&&Wa>L)&&(0>R&&J<R||R==J||0<R&&J>R)||
-(x[h++]=B,x[h++]=A,z=B,E=A);B=G;A=O}}x[h++]=B;x[h++]=A}}k.push(h);c=p}return h};function Kd(a,c){sd.call(this);this.i=this.j=-1;this.ma(a,c)}y(Kd,sd);l=Kd.prototype;l.clone=function(){var a=new Kd(null);Ld(a,this.f,this.A.slice());return a};l.rb=function(a,c,d,e){if(e<$b(this.O(),a,c))return e;this.i!=this.g&&(this.j=Math.sqrt(zd(this.A,0,this.A.length,this.a,0)),this.i=this.g);return Bd(this.A,0,this.A.length,this.a,this.j,!0,a,c,d,e)};l.hm=function(){return wd(this.A,0,this.A.length,this.a)};l.Z=function(){return Gd(this.A,0,this.A.length,this.a)};
-l.Ic=function(a){var c=[];c.length=Id(this.A,0,this.A.length,this.a,a,c,0);a=new Kd(null);Ld(a,"XY",c);return a};l.X=function(){return"LinearRing"};l.ma=function(a,c){a?(vd(this,c,a,1),this.A||(this.A=[]),this.A.length=Ed(this.A,0,a,this.a),this.u()):Ld(this,"XY",null)};function Ld(a,c,d){ud(a,c,d);a.u()};function D(a,c){sd.call(this);this.ma(a,c)}y(D,sd);l=D.prototype;l.clone=function(){var a=new D(null);a.ba(this.f,this.A.slice());return a};l.rb=function(a,c,d,e){var f=this.A;a=Ga(a,c,f[0],f[1]);if(a<e){e=this.a;for(c=0;c<e;++c)d[c]=f[c];d.length=e;return a}return e};l.Z=function(){return this.A?this.A.slice():[]};l.Jd=function(a){return fc(this.A,a)};l.X=function(){return"Point"};l.Ia=function(a){return bc(a,this.A[0],this.A[1])};
-l.ma=function(a,c){a?(vd(this,c,a,0),this.A||(this.A=[]),this.A.length=Dd(this.A,a),this.u()):this.ba("XY",null)};l.ba=function(a,c){ud(this,a,c);this.u()};function Md(a,c,d,e,f){return!kc(f,function(f){return!Nd(a,c,d,e,f[0],f[1])})}function Nd(a,c,d,e,f,g){for(var h=!1,k=a[d-e],m=a[d-e+1];c<d;c+=e){var n=a[c],p=a[c+1];m>g!=p>g&&f<(n-k)*(g-m)/(p-m)+k&&(h=!h);k=n;m=p}return h}function Od(a,c,d,e,f,g){if(0===d.length||!Nd(a,c,d[0],e,f,g))return!1;var h;c=1;for(h=d.length;c<h;++c)if(Nd(a,d[c-1],d[c],e,f,g))return!1;return!0};function Pd(a,c,d,e,f,g,h){var k,m,n,p,q,r=f[g+1],u=[],v=d[0];n=a[v-e];q=a[v-e+1];for(k=c;k<v;k+=e){p=a[k];m=a[k+1];if(r<=q&&m<=r||q<=r&&r<=m)n=(r-q)/(m-q)*(p-n)+n,u.push(n);n=p;q=m}v=NaN;q=-Infinity;u.sort(tb);n=u[0];k=1;for(m=u.length;k<m;++k){p=u[k];var x=Math.abs(p-n);x>q&&(n=(n+p)/2,Od(a,c,d,e,n,r)&&(v=n,q=x));n=p}isNaN(v)&&(v=f[g]);return h?(h.push(v,r),h):[v,r]};function Qd(a,c,d,e,f,g){for(var h=[a[c],a[c+1]],k=[],m;c+e<d;c+=e){k[0]=a[c+e];k[1]=a[c+e+1];if(m=f.call(g,h,k))return m;h[0]=k[0];h[1]=k[1]}return!1};function Rd(a,c,d,e,f){var g=hc(Wb(),a,c,d,e);return wc(f,g)?cc(f,g)||g[0]>=f[0]&&g[2]<=f[2]||g[1]>=f[1]&&g[3]<=f[3]?!0:Qd(a,c,d,e,function(a,c){var d=!1,e=dc(f,a),g=dc(f,c);if(1===e||1===g)d=!0;else{var q=f[0],r=f[1],u=f[2],v=f[3],x=c[0],z=c[1],E=(z-a[1])/(x-a[0]);g&2&&!(e&2)&&(d=x-(z-v)/E,d=d>=q&&d<=u);d||!(g&4)||e&4||(d=z-(x-u)*E,d=d>=r&&d<=v);d||!(g&8)||e&8||(d=x-(z-r)/E,d=d>=q&&d<=u);d||!(g&16)||e&16||(d=z-(x-q)*E,d=d>=r&&d<=v)}return d}):!1}
-function Sd(a,c,d,e,f){var g=d[0];if(!(Rd(a,c,g,e,f)||Nd(a,c,g,e,f[0],f[1])||Nd(a,c,g,e,f[0],f[3])||Nd(a,c,g,e,f[2],f[1])||Nd(a,c,g,e,f[2],f[3])))return!1;if(1===d.length)return!0;c=1;for(g=d.length;c<g;++c)if(Md(a,d[c-1],d[c],e,f))return!1;return!0};function Td(a,c,d,e){for(var f=0,g=a[d-e],h=a[d-e+1];c<d;c+=e)var k=a[c],m=a[c+1],f=f+(k-g)*(m+h),g=k,h=m;return 0<f}function Ud(a,c,d,e){var f=0;e=void 0!==e?e:!1;var g,h;g=0;for(h=c.length;g<h;++g){var k=c[g],f=Td(a,f,k,d);if(0===g){if(e&&f||!e&&!f)return!1}else if(e&&!f||!e&&f)return!1;f=k}return!0}
-function Vd(a,c,d,e,f){f=void 0!==f?f:!1;var g,h;g=0;for(h=d.length;g<h;++g){var k=d[g],m=Td(a,c,k,e);if(0===g?f&&m||!f&&!m:f&&!m||!f&&m)for(var m=a,n=k,p=e;c<n-p;){var q;for(q=0;q<p;++q){var r=m[c+q];m[c+q]=m[n-p+q];m[n-p+q]=r}c+=p;n-=p}c=k}return c}function Wd(a,c,d,e){var f=0,g,h;g=0;for(h=c.length;g<h;++g)f=Vd(a,f,c[g],d,e);return f};function F(a,c){sd.call(this);this.i=[];this.M=-1;this.N=null;this.T=this.R=this.S=-1;this.j=null;this.ma(a,c)}y(F,sd);l=F.prototype;l.tj=function(a){this.A?xb(this.A,a.ga()):this.A=a.ga().slice();this.i.push(this.A.length);this.u()};l.clone=function(){var a=new F(null);a.ba(this.f,this.A.slice(),this.i.slice());return a};
-l.rb=function(a,c,d,e){if(e<$b(this.O(),a,c))return e;this.R!=this.g&&(this.S=Math.sqrt(Ad(this.A,0,this.i,this.a,0)),this.R=this.g);return Cd(this.A,0,this.i,this.a,this.S,!0,a,c,d,e)};l.wc=function(a,c){return Od(this.Kb(),0,this.i,this.a,a,c)};l.km=function(){return xd(this.Kb(),0,this.i,this.a)};l.Z=function(a){var c;void 0!==a?(c=this.Kb().slice(),Vd(c,0,this.i,this.a,a)):c=this.A;return Hd(c,0,this.i,this.a)};l.zb=function(){return this.i};
-function Xd(a){if(a.M!=a.g){var c=tc(a.O());a.N=Pd(a.Kb(),0,a.i,a.a,c,0);a.M=a.g}return a.N}l.Yj=function(){return new D(Xd(this))};l.ck=function(){return this.i.length};l.Cg=function(a){if(0>a||this.i.length<=a)return null;var c=new Kd(null);Ld(c,this.f,this.A.slice(0===a?0:this.i[a-1],this.i[a]));return c};l.Pd=function(){var a=this.f,c=this.A,d=this.i,e=[],f=0,g,h;g=0;for(h=d.length;g<h;++g){var k=d[g],m=new Kd(null);Ld(m,a,c.slice(f,k));e.push(m);f=k}return e};
-l.Kb=function(){if(this.T!=this.g){var a=this.A;Ud(a,this.i,this.a)?this.j=a:(this.j=a.slice(),this.j.length=Vd(this.j,0,this.i,this.a));this.T=this.g}return this.j};l.Ic=function(a){var c=[],d=[];c.length=Jd(this.A,0,this.i,this.a,Math.sqrt(a),c,0,d);a=new F(null);a.ba("XY",c,d);return a};l.X=function(){return"Polygon"};l.Ia=function(a){return Sd(this.Kb(),0,this.i,this.a,a)};
-l.ma=function(a,c){if(a){vd(this,c,a,2);this.A||(this.A=[]);var d=Fd(this.A,0,a,this.a,this.i);this.A.length=0===d.length?0:d[d.length-1];this.u()}else this.ba("XY",null,this.i)};l.ba=function(a,c,d){ud(this,a,c);this.i=d;this.u()};function Yd(a,c,d,e){var f=e?e:32;e=[];var g;for(g=0;g<f;++g)xb(e,a.offset(c,d,2*Math.PI*g/f));e.push(e[0],e[1]);a=new F(null);a.ba("XY",e,[e.length]);return a}
-function Zd(a){var c=a[0],d=a[1],e=a[2];a=a[3];c=[c,d,c,a,e,a,e,d,c,d];d=new F(null);d.ba("XY",c,[c.length]);return d}function $d(a,c,d){var e=c?c:32,f=a.ua();c=a.f;for(var g=new F(null,c),e=f*(e+1),f=Array(e),h=0;h<e;h++)f[h]=0;g.ba(c,f,[f.length]);ae(g,a.ld(),a.sf(),d);return g}function ae(a,c,d,e){var f=a.ga(),g=a.f,h=a.ua(),k=a.zb(),m=f.length/h-1;e=e?e:0;for(var n,p,q=0;q<=m;++q)p=q*h,n=e+2*Ja(q,m)*Math.PI/m,f[p]=c[0]+d*Math.cos(n),f[p+1]=c[1]+d*Math.sin(n);a.ba(g,f,k)};function be(a){pb.call(this);a=a||{};this.f=[0,0];var c={};c.center=void 0!==a.center?a.center:null;this.i=Xc(a.projection);var d,e,f,g=void 0!==a.minZoom?a.minZoom:0;d=void 0!==a.maxZoom?a.maxZoom:28;var h=void 0!==a.zoomFactor?a.zoomFactor:2;if(void 0!==a.resolutions)d=a.resolutions,e=d[0],f=d[d.length-1],d=Eb(d);else{e=Xc(a.projection);f=e.O();var k=(f?Math.max(rc(f),sc(f)):360*Ec.degrees/e.Vb())/256/Math.pow(2,0),m=k/Math.pow(2,28);e=a.maxResolution;void 0!==e?g=0:e=k/Math.pow(h,g);f=a.minResolution;
-void 0===f&&(f=void 0!==a.maxZoom?void 0!==a.maxResolution?e/Math.pow(h,d):k/Math.pow(h,d):m);d=g+Math.floor(Math.log(e/f)/Math.log(h));f=e/Math.pow(h,d-g);d=Fb(h,e,d-g)}this.a=e;this.o=f;this.j=a.resolutions;this.c=g;g=void 0!==a.extent?Ma(a.extent):Na;(void 0!==a.enableRotation?a.enableRotation:1)?(e=a.constrainRotation,e=void 0===e||!0===e?Jb():!1===e?Hb:fa(e)?Ib(e):Hb):e=Gb;this.l=new Oa(g,d,e);void 0!==a.resolution?c.resolution=a.resolution:void 0!==a.zoom&&(c.resolution=this.constrainResolution(this.a,
-a.zoom-this.c));c.rotation=void 0!==a.rotation?a.rotation:0;this.C(c)}y(be,pb);l=be.prototype;l.Kd=function(a){return this.l.center(a)};l.constrainResolution=function(a,c,d){return this.l.resolution(a,c||0,d||0)};l.constrainRotation=function(a,c){return this.l.rotation(a,c||0)};l.bb=function(){return this.get("center")};function ce(a,c){return void 0!==c?(c[0]=a.f[0],c[1]=a.f[1],c):a.f.slice()}l.Fc=function(a){var c=this.bb(),d=this.$(),e=this.Ka();return uc(c,d,e,a)};l.Rl=function(){return this.i};
-l.$=function(){return this.get("resolution")};l.Sl=function(){return this.j};function de(a,c){return Math.max(rc(a)/c[0],sc(a)/c[1])}function ee(a){var c=a.a,d=Math.log(c/a.o)/Math.log(2);return function(a){return c/Math.pow(2,a*d)}}l.Ka=function(){return this.get("rotation")};function fe(a){var c=a.a,d=Math.log(c/a.o)/Math.log(2);return function(a){return Math.log(c/a)/Math.log(2)/d}}
-l.V=function(){var a=this.bb(),c=this.i,d=this.$(),e=this.Ka();return{center:[Math.round(a[0]/d)*d,Math.round(a[1]/d)*d],projection:void 0!==c?c:null,resolution:d,rotation:e}};l.Bk=function(){var a,c=this.$();if(void 0!==c){var d,e=0;do{d=this.constrainResolution(this.a,e);if(d==c){a=e;break}++e}while(d>this.o)}return void 0!==a?this.c+a:a};
-l.Ze=function(a,c,d){a instanceof sd||(a=Zd(a));var e=d||{};d=void 0!==e.padding?e.padding:[0,0,0,0];var f=void 0!==e.constrainResolution?e.constrainResolution:!0,g=void 0!==e.nearest?e.nearest:!1,h;void 0!==e.minResolution?h=e.minResolution:void 0!==e.maxZoom?h=this.constrainResolution(this.a,e.maxZoom-this.c,0):h=0;var k=a.ga(),m=this.Ka(),e=Math.cos(-m),m=Math.sin(-m),n=Infinity,p=Infinity,q=-Infinity,r=-Infinity;a=a.ua();for(var u=0,v=k.length;u<v;u+=a)var x=k[u]*e-k[u+1]*m,z=k[u]*m+k[u+1]*e,
-n=Math.min(n,x),p=Math.min(p,z),q=Math.max(q,x),r=Math.max(r,z);c=de([n,p,q,r],[c[0]-d[1]-d[3],c[1]-d[0]-d[2]]);c=isNaN(c)?h:Math.max(c,h);f&&(h=this.constrainResolution(c,0,0),!g&&h<c&&(h=this.constrainResolution(h,-1,0)),c=h);this.Qb(c);m=-m;g=(n+q)/2+(d[1]-d[3])/2*c;d=(p+r)/2+(d[0]-d[2])/2*c;this.jb([g*e-d*m,d*e+g*m])};
-l.Aj=function(a,c,d){var e=this.Ka(),f=Math.cos(-e),e=Math.sin(-e),g=a[0]*f-a[1]*e;a=a[1]*f+a[0]*e;var h=this.$(),g=g+(c[0]/2-d[0])*h;a+=(d[1]-c[1]/2)*h;e=-e;this.jb([g*f-a*e,a*f+g*e])};function ge(a){return!!a.bb()&&void 0!==a.$()}l.rotate=function(a,c){if(void 0!==c){var d,e=this.bb();void 0!==e&&(d=[e[0]-c[0],e[1]-c[1]],Rb(d,a-this.Ka()),Mb(d,c));this.jb(d)}this.de(a)};l.jb=function(a){this.set("center",a)};function he(a,c){a.f[1]+=c}l.Qb=function(a){this.set("resolution",a)};
-l.de=function(a){this.set("rotation",a)};l.hp=function(a){a=this.constrainResolution(this.a,a-this.c,0);this.Qb(a)};function ie(a){return Math.pow(a,3)}function je(a){return 1-ie(1-a)}function ke(a){return 3*a*a-2*a*a*a}function le(a){return a}function me(a){return.5>a?ke(2*a):1-ke(2*(a-.5))};function ne(a){var c=a.source,d=a.start?a.start:Date.now(),e=c[0],f=c[1],g=void 0!==a.duration?a.duration:1E3,h=a.easing?a.easing:ke;return function(a,c){if(c.time<d)return c.animate=!0,c.viewHints[0]+=1,!0;if(c.time<d+g){var n=1-h((c.time-d)/g),p=e-c.viewState.center[0],q=f-c.viewState.center[1];c.animate=!0;c.viewState.center[0]+=n*p;c.viewState.center[1]+=n*q;c.viewHints[0]+=1;return!0}return!1}}
-function oe(a){var c=a.rotation?a.rotation:0,d=a.start?a.start:Date.now(),e=void 0!==a.duration?a.duration:1E3,f=a.easing?a.easing:ke,g=a.anchor?a.anchor:null;return function(a,k){if(k.time<d)return k.animate=!0,k.viewHints[0]+=1,!0;if(k.time<d+e){var m=1-f((k.time-d)/e),m=(c-k.viewState.rotation)*m;k.animate=!0;k.viewState.rotation+=m;if(g){var n=k.viewState.center;n[0]-=g[0];n[1]-=g[1];Rb(n,m);Mb(n,g)}k.viewHints[0]+=1;return!0}return!1}}
-function pe(a){var c=a.resolution,d=a.start?a.start:Date.now(),e=void 0!==a.duration?a.duration:1E3,f=a.easing?a.easing:ke;return function(a,h){if(h.time<d)return h.animate=!0,h.viewHints[0]+=1,!0;if(h.time<d+e){var k=1-f((h.time-d)/e),m=c-h.viewState.resolution;h.animate=!0;h.viewState.resolution+=k*m;h.viewHints[0]+=1;return!0}return!1}};function qe(a,c,d,e){this.b=a;this.a=c;this.g=d;this.f=e}qe.prototype.contains=function(a){return re(this,a[1],a[2])};function re(a,c,d){return a.b<=c&&c<=a.a&&a.g<=d&&d<=a.f}function se(a,c){return a.b==c.b&&a.g==c.g&&a.a==c.a&&a.f==c.f}function te(a,c){return a.b<=c.a&&a.a>=c.b&&a.g<=c.f&&a.f>=c.g};function ue(a){this.a=a.html;this.b=a.tileRanges?a.tileRanges:null}ue.prototype.g=function(){return this.a};function ve(a,c,d){gb.call(this,a,d);this.element=c}y(ve,gb);function we(a){pb.call(this);this.a=a?a:[];xe(this)}y(we,pb);l=we.prototype;l.clear=function(){for(;0<this.Zb();)this.pop()};l.lf=function(a){var c,d;c=0;for(d=a.length;c<d;++c)this.push(a[c]);return this};l.forEach=function(a,c){this.a.forEach(a,c)};l.Cl=function(){return this.a};l.item=function(a){return this.a[a]};l.Zb=function(){return this.get("length")};l.Zd=function(a,c){this.a.splice(a,0,c);xe(this);this.b(new ve("add",c,this))};
-l.pop=function(){return this.Nf(this.Zb()-1)};l.push=function(a){var c=this.a.length;this.Zd(c,a);return c};l.remove=function(a){var c=this.a,d,e;d=0;for(e=c.length;d<e;++d)if(c[d]===a)return this.Nf(d)};l.Nf=function(a){var c=this.a[a];this.a.splice(a,1);xe(this);this.b(new ve("remove",c,this));return c};l.To=function(a,c){var d=this.Zb();if(a<d)d=this.a[a],this.a[a]=c,this.b(new ve("remove",d,this)),this.b(new ve("add",c,this));else{for(;d<a;++d)this.Zd(d,void 0);this.Zd(a,c)}};
-function xe(a){a.set("length",a.a.length)};var ye=Array.prototype.forEach?function(a,c,d){Array.prototype.forEach.call(a,c,d)}:function(a,c,d){for(var e=a.length,f=ea(a)?a.split(""):a,g=0;g<e;g++)g in f&&c.call(d,f[g],g,a)};function ze(a){return Array.prototype.concat.apply(Array.prototype,arguments)}function Ae(a){var c=a.length;if(0<c){for(var d=Array(c),e=0;e<c;e++)d[e]=a[e];return d}return[]}function Be(a,c,d){return 2>=arguments.length?Array.prototype.slice.call(a,c):Array.prototype.slice.call(a,c,d)};var Ce=/^#(?:[0-9a-f]{3}){1,2}$/i,De=/^(?:rgb)?\((0|[1-9]\d{0,2}),\s?(0|[1-9]\d{0,2}),\s?(0|[1-9]\d{0,2})\)$/i,Ee=/^(?:rgba)?\((0|[1-9]\d{0,2}),\s?(0|[1-9]\d{0,2}),\s?(0|[1-9]\d{0,2}),\s?(0|1|0\.\d{0,10})\)$/i;function Fe(a){return Array.isArray(a)?a:Ge(a)}function He(a){if("string"!==typeof a){var c=a[0];c!=(c|0)&&(c=c+.5|0);var d=a[1];d!=(d|0)&&(d=d+.5|0);var e=a[2];e!=(e|0)&&(e=e+.5|0);a="rgba("+c+","+d+","+e+","+(void 0===a[3]?1:a[3])+")"}return a}
-var Ge=function(){var a={},c=0;return function(d){var e;if(a.hasOwnProperty(d))e=a[d];else{if(1024<=c){e=0;for(var f in a)0===(e++&3)&&(delete a[f],--c)}var g,h;Ce.exec(d)?(h=3==d.length-1?1:2,e=parseInt(d.substr(1+0*h,h),16),f=parseInt(d.substr(1+1*h,h),16),g=parseInt(d.substr(1+2*h,h),16),1==h&&(e=(e<<4)+e,f=(f<<4)+f,g=(g<<4)+g),e=[e,f,g,1]):(h=Ee.exec(d))?(e=Number(h[1]),f=Number(h[2]),g=Number(h[3]),h=Number(h[4]),e=[e,f,g,h],e=Ie(e,e)):(h=De.exec(d))?(e=Number(h[1]),f=Number(h[2]),g=Number(h[3]),
-e=[e,f,g,1],e=Ie(e,e)):e=void 0;a[d]=e;++c}return e}}();function Ie(a,c){var d=c||[];d[0]=Da(a[0]+.5|0,0,255);d[1]=Da(a[1]+.5|0,0,255);d[2]=Da(a[2]+.5|0,0,255);d[3]=Da(a[3],0,1);return d};function Je(a){return"string"===typeof a||a instanceof CanvasPattern||a instanceof CanvasGradient?a:He(a)};var Ke;a:{var Le=aa.navigator;if(Le){var Me=Le.userAgent;if(Me){Ke=Me;break a}}Ke=""}function Ne(a){return-1!=Ke.indexOf(a)};function Oe(a,c){for(var d in a)c.call(void 0,a[d],d,a)}var Pe="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");function Qe(a,c){for(var d,e,f=1;f<arguments.length;f++){e=arguments[f];for(d in e)a[d]=e[d];for(var g=0;g<Pe.length;g++)d=Pe[g],Object.prototype.hasOwnProperty.call(e,d)&&(a[d]=e[d])}};var Re=Ne("Opera")||Ne("OPR"),Se=Ne("Trident")||Ne("MSIE"),Te=Ne("Edge"),Ue=Ne("Gecko")&&!(-1!=Ke.toLowerCase().indexOf("webkit")&&!Ne("Edge"))&&!(Ne("Trident")||Ne("MSIE"))&&!Ne("Edge"),Ve=-1!=Ke.toLowerCase().indexOf("webkit")&&!Ne("Edge");function We(){var a=aa.document;return a?a.documentMode:void 0}var Xe;
-a:{var Ye="",$e=function(){var a=Ke;if(Ue)return/rv\:([^\);]+)(\)|;)/.exec(a);if(Te)return/Edge\/([\d\.]+)/.exec(a);if(Se)return/\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/.exec(a);if(Ve)return/WebKit\/(\S+)/.exec(a);if(Re)return/(?:Version)[ \/]?(\S+)/.exec(a)}();$e&&(Ye=$e?$e[1]:"");if(Se){var af=We();if(null!=af&&af>parseFloat(Ye)){Xe=String(af);break a}}Xe=Ye}var bf={};
-function cf(a){var c;if(!(c=bf[a])){c=0;for(var d=sa(String(Xe)).split("."),e=sa(String(a)).split("."),f=Math.max(d.length,e.length),g=0;0==c&&g<f;g++){var h=d[g]||"",k=e[g]||"",m=RegExp("(\\d*)(\\D*)","g"),n=RegExp("(\\d*)(\\D*)","g");do{var p=m.exec(h)||["","",""],q=n.exec(k)||["","",""];if(0==p[0].length&&0==q[0].length)break;c=Ca(0==p[1].length?0:parseInt(p[1],10),0==q[1].length?0:parseInt(q[1],10))||Ca(0==p[2].length,0==q[2].length)||Ca(p[2],q[2])}while(0==c)}c=bf[a]=0<=c}return c}
-var df=aa.document,ef=df&&Se?We()||("CSS1Compat"==df.compatMode?parseInt(Xe,10):5):void 0;var ff=!Se||9<=Number(ef);!Ue&&!Se||Se&&9<=Number(ef)||Ue&&cf("1.9.1");Se&&cf("9");function gf(a,c){this.x=void 0!==a?a:0;this.y=void 0!==c?c:0}l=gf.prototype;l.clone=function(){return new gf(this.x,this.y)};l.ceil=function(){this.x=Math.ceil(this.x);this.y=Math.ceil(this.y);return this};l.floor=function(){this.x=Math.floor(this.x);this.y=Math.floor(this.y);return this};l.round=function(){this.x=Math.round(this.x);this.y=Math.round(this.y);return this};l.scale=function(a,c){var d=fa(c)?c:a;this.x*=a;this.y*=d;return this};function hf(a,c){this.width=a;this.height=c}l=hf.prototype;l.clone=function(){return new hf(this.width,this.height)};l.wj=function(){return this.width*this.height};l.Sa=function(){return!this.wj()};l.ceil=function(){this.width=Math.ceil(this.width);this.height=Math.ceil(this.height);return this};l.floor=function(){this.width=Math.floor(this.width);this.height=Math.floor(this.height);return this};l.round=function(){this.width=Math.round(this.width);this.height=Math.round(this.height);return this};
-l.scale=function(a,c){var d=fa(c)?c:a;this.width*=a;this.height*=d;return this};function jf(a){return a?new kf(lf(a)):ra||(ra=new kf)}function mf(a){var c=document;return ea(a)?c.getElementById(a):a}function nf(a,c){Oe(c,function(c,e){"style"==e?a.style.cssText=c:"class"==e?a.className=c:"for"==e?a.htmlFor=c:of.hasOwnProperty(e)?a.setAttribute(of[e],c):0==e.lastIndexOf("aria-",0)||0==e.lastIndexOf("data-",0)?a.setAttribute(e,c):a[e]=c})}
-var of={cellpadding:"cellPadding",cellspacing:"cellSpacing",colspan:"colSpan",frameborder:"frameBorder",height:"height",maxlength:"maxLength",nonce:"nonce",role:"role",rowspan:"rowSpan",type:"type",usemap:"useMap",valign:"vAlign",width:"width"};
-function pf(a,c,d){var e=arguments,f=document,g=e[0],h=e[1];if(!ff&&h&&(h.name||h.type)){g=["<",g];h.name&&g.push(' name="',ta(h.name),'"');if(h.type){g.push(' type="',ta(h.type),'"');var k={};Qe(k,h);delete k.type;h=k}g.push(">");g=g.join("")}g=f.createElement(g);h&&(ea(h)?g.className=h:"array"==ca(h)?g.className=h.join(" "):nf(g,h));2<e.length&&qf(f,g,e);return g}
-function qf(a,c,d){function e(d){d&&c.appendChild(ea(d)?a.createTextNode(d):d)}for(var f=2;f<d.length;f++){var g=d[f];!da(g)||ha(g)&&0<g.nodeType?e(g):ye(rf(g)?Ae(g):g,e)}}function sf(a){for(var c;c=a.firstChild;)a.removeChild(c)}function tf(a,c,d){a.insertBefore(c,a.childNodes[d]||null)}function uf(a){a&&a.parentNode&&a.parentNode.removeChild(a)}function vf(a,c){var d=c.parentNode;d&&d.replaceChild(a,c)}
-function wf(a,c){if(!a||!c)return!1;if(a.contains&&1==c.nodeType)return a==c||a.contains(c);if("undefined"!=typeof a.compareDocumentPosition)return a==c||!!(a.compareDocumentPosition(c)&16);for(;c&&a!=c;)c=c.parentNode;return c==a}function lf(a){return 9==a.nodeType?a:a.ownerDocument||a.document}function rf(a){if(a&&"number"==typeof a.length){if(ha(a))return"function"==typeof a.item||"string"==typeof a.item;if(ga(a))return"function"==typeof a.item}return!1}
-function kf(a){this.b=a||aa.document||document}kf.prototype.C=nf;kf.prototype.createElement=function(a){return this.b.createElement(a)};kf.prototype.appendChild=function(a,c){a.appendChild(c)};kf.prototype.contains=wf;function xf(a,c,d,e){this.top=a;this.right=c;this.bottom=d;this.left=e}l=xf.prototype;l.clone=function(){return new xf(this.top,this.right,this.bottom,this.left)};l.contains=function(a){return this&&a?a instanceof xf?a.left>=this.left&&a.right<=this.right&&a.top>=this.top&&a.bottom<=this.bottom:a.x>=this.left&&a.x<=this.right&&a.y>=this.top&&a.y<=this.bottom:!1};
-l.ceil=function(){this.top=Math.ceil(this.top);this.right=Math.ceil(this.right);this.bottom=Math.ceil(this.bottom);this.left=Math.ceil(this.left);return this};l.floor=function(){this.top=Math.floor(this.top);this.right=Math.floor(this.right);this.bottom=Math.floor(this.bottom);this.left=Math.floor(this.left);return this};l.round=function(){this.top=Math.round(this.top);this.right=Math.round(this.right);this.bottom=Math.round(this.bottom);this.left=Math.round(this.left);return this};
-l.scale=function(a,c){var d=fa(c)?c:a;this.left*=a;this.right*=a;this.top*=d;this.bottom*=d;return this};function yf(a,c){var d=lf(a);return d.defaultView&&d.defaultView.getComputedStyle&&(d=d.defaultView.getComputedStyle(a,null))?d[c]||d.getPropertyValue(c)||"":""}function zf(a){var c;try{c=a.getBoundingClientRect()}catch(d){return{left:0,top:0,right:0,bottom:0}}Se&&a.ownerDocument.body&&(a=a.ownerDocument,c.left-=a.documentElement.clientLeft+a.body.clientLeft,c.top-=a.documentElement.clientTop+a.body.clientTop);return c}
-function Af(a){var c=Bf;if("none"!=(yf(a,"display")||(a.currentStyle?a.currentStyle.display:null)||a.style&&a.style.display))return c(a);var d=a.style,e=d.display,f=d.visibility,g=d.position;d.visibility="hidden";d.position="absolute";d.display="inline";a=c(a);d.display=e;d.position=g;d.visibility=f;return a}function Bf(a){var c=a.offsetWidth,d=a.offsetHeight,e=Ve&&!c&&!d;return(void 0===c||e)&&a.getBoundingClientRect?(a=zf(a),new hf(a.right-a.left,a.bottom-a.top)):new hf(c,d)}
-function Cf(a,c){a.style.display=c?"":"none"}function Df(a,c,d,e){if(/^\d+px?$/.test(c))return parseInt(c,10);var f=a.style[d],g=a.runtimeStyle[d];a.runtimeStyle[d]=a.currentStyle[d];a.style[d]=c;c=a.style[e];a.style[d]=f;a.runtimeStyle[d]=g;return c}function Ef(a,c){var d=a.currentStyle?a.currentStyle[c]:null;return d?Df(a,d,"left","pixelLeft"):0}
-function Ff(a,c){if(Se){var d=Ef(a,c+"Left"),e=Ef(a,c+"Right"),f=Ef(a,c+"Top"),g=Ef(a,c+"Bottom");return new xf(f,e,g,d)}d=yf(a,c+"Left");e=yf(a,c+"Right");f=yf(a,c+"Top");g=yf(a,c+"Bottom");return new xf(parseFloat(f),parseFloat(e),parseFloat(g),parseFloat(d))}var Gf={thin:2,medium:4,thick:6};function Hf(a,c){if("none"==(a.currentStyle?a.currentStyle[c+"Style"]:null))return 0;var d=a.currentStyle?a.currentStyle[c+"Width"]:null;return d in Gf?Gf[d]:Df(a,d,"left","pixelLeft")};function If(a,c,d){gb.call(this,a);this.map=c;this.frameState=void 0!==d?d:null}y(If,gb);function Jf(a){pb.call(this);this.element=a.element?a.element:null;this.a=this.S=null;this.s=[];this.render=a.render?a.render:pa;a.target&&this.c(a.target)}y(Jf,pb);Jf.prototype.fa=function(){uf(this.element);Jf.ia.fa.call(this)};Jf.prototype.i=function(){return this.a};
-Jf.prototype.setMap=function(a){this.a&&uf(this.element);for(var c=0,d=this.s.length;c<d;++c)Xa(this.s[c]);this.s.length=0;if(this.a=a)(this.S?this.S:a.v).appendChild(this.element),this.render!==pa&&this.s.push(C(a,"postrender",this.render,this)),a.render()};Jf.prototype.c=function(a){this.S=mf(a)};function Kf(){this.g=0;this.f={};this.a=this.b=null}l=Kf.prototype;l.clear=function(){this.g=0;this.f={};this.a=this.b=null};function Lf(a,c){return a.f.hasOwnProperty(c)}l.forEach=function(a,c){for(var d=this.b;d;)a.call(c,d.kc,d.Yb,this),d=d.xb};l.get=function(a){a=this.f[a];if(a===this.a)return a.kc;a===this.b?(this.b=this.b.xb,this.b.fc=null):(a.xb.fc=a.fc,a.fc.xb=a.xb);a.xb=null;a.fc=this.a;this.a=this.a.xb=a;return a.kc};l.rc=function(){return this.g};
-l.K=function(){var a=Array(this.g),c=0,d;for(d=this.a;d;d=d.fc)a[c++]=d.Yb;return a};l.uc=function(){var a=Array(this.g),c=0,d;for(d=this.a;d;d=d.fc)a[c++]=d.kc;return a};l.pop=function(){var a=this.b;delete this.f[a.Yb];a.xb&&(a.xb.fc=null);this.b=a.xb;this.b||(this.a=null);--this.g;return a.kc};l.replace=function(a,c){this.get(a);this.f[a].kc=c};l.set=function(a,c){var d={Yb:a,xb:null,fc:this.a,kc:c};this.a?this.a.xb=d:this.b=d;this.a=d;this.f[a]=d;++this.g};function Mf(a,c,d,e){return void 0!==e?(e[0]=a,e[1]=c,e[2]=d,e):[a,c,d]}function Nf(a){var c=a[0],d=Array(c),e=1<<c-1,f,g;for(f=0;f<c;++f)g=48,a[1]&e&&(g+=1),a[2]&e&&(g+=2),d[f]=String.fromCharCode(g),e>>=1;return d.join("")};function Of(a){Kf.call(this);this.c=void 0!==a?a:2048}y(Of,Kf);function Pf(a){return a.rc()>a.c}Of.prototype.Gc=function(a){for(var c,d;Pf(this)&&!(c=this.b.kc,d=c.ja[0].toString(),d in a&&a[d].contains(c.ja));)fb(this.pop())};function Qf(a,c){jb.call(this);this.ja=a;this.state=c;this.a=null;this.key=""}y(Qf,jb);function Rf(a){a.b("change")}Qf.prototype.gb=function(){return w(this).toString()};Qf.prototype.i=function(){return this.ja};Qf.prototype.V=function(){return this.state};function Sf(a,c,d){void 0===d&&(d=[0,0]);d[0]=a[0]+2*c;d[1]=a[1]+2*c;return d}function Tf(a,c,d){void 0===d&&(d=[0,0]);d[0]=a[0]*c+.5|0;d[1]=a[1]*c+.5|0;return d}function Uf(a,c){if(Array.isArray(a))return a;void 0===c?c=[a,a]:(c[0]=a,c[1]=a);return c};function Vf(a){pb.call(this);this.f=Ic(a.projection);this.l=Wf(a.attributions);this.R=a.logo;this.wa=void 0!==a.state?a.state:"ready";this.N=void 0!==a.wrapX?a.wrapX:!1}y(Vf,pb);function Wf(a){if("string"===typeof a)return[new ue({html:a})];if(a instanceof ue)return[a];if(Array.isArray(a)){for(var c=a.length,d=Array(c),e=0;e<c;e++){var f=a[e];d[e]="string"===typeof f?new ue({html:f}):f}return d}return null}l=Vf.prototype;l.oa=pa;l.ra=function(){return this.l};l.qa=function(){return this.R};l.sa=function(){return this.f};
-l.V=function(){return this.wa};l.pa=function(){this.u()};l.ka=function(a){this.l=Wf(a);this.u()};function Xf(a,c){a.wa=c;a.u()};function Yf(a){this.minZoom=void 0!==a.minZoom?a.minZoom:0;this.b=a.resolutions;this.maxZoom=this.b.length-1;this.g=void 0!==a.origin?a.origin:null;this.c=null;void 0!==a.origins&&(this.c=a.origins);var c=a.extent;void 0===c||this.g||this.c||(this.g=oc(c));this.i=null;void 0!==a.tileSizes&&(this.i=a.tileSizes);this.o=void 0!==a.tileSize?a.tileSize:this.i?null:256;this.s=void 0!==c?c:null;this.a=null;this.f=[0,0];void 0!==a.sizes?this.a=a.sizes.map(function(a){return new qe(Math.min(0,a[0]),Math.max(a[0]-
-1,-1),Math.min(0,a[1]),Math.max(a[1]-1,-1))},this):c&&Zf(this,c)}var $f=[0,0,0];function ag(a,c,d,e,f){f=a.Ba(c,f);for(c=c[0]-1;c>=a.minZoom;){if(d.call(null,c,bg(a,f,c,e)))return!0;--c}return!1}l=Yf.prototype;l.O=function(){return this.s};l.Dg=function(){return this.maxZoom};l.Eg=function(){return this.minZoom};l.Fa=function(a){return this.g?this.g:this.c[a]};l.$=function(a){return this.b[a]};l.Fh=function(){return this.b};
-function cg(a,c,d,e){return c[0]<a.maxZoom?(e=a.Ba(c,e),bg(a,e,c[0]+1,d)):null}function dg(a,c,d,e){eg(a,c[0],c[1],d,!1,$f);var f=$f[1],g=$f[2];eg(a,c[2],c[3],d,!0,$f);a=$f[1];c=$f[2];void 0!==e?(e.b=f,e.a=a,e.g=g,e.f=c):e=new qe(f,a,g,c);return e}function bg(a,c,d,e){d=a.$(d);return dg(a,c,d,e)}function fg(a,c){var d=a.Fa(c[0]),e=a.$(c[0]),f=Uf(a.Ha(c[0]),a.f);return[d[0]+(c[1]+.5)*f[0]*e,d[1]+(c[2]+.5)*f[1]*e]}
-l.Ba=function(a,c){var d=this.Fa(a[0]),e=this.$(a[0]),f=Uf(this.Ha(a[0]),this.f),g=d[0]+a[1]*f[0]*e,d=d[1]+a[2]*f[1]*e;return ec(g,d,g+f[0]*e,d+f[1]*e,c)};l.Td=function(a,c,d){return eg(this,a[0],a[1],c,!1,d)};function eg(a,c,d,e,f,g){var h=gg(a,e),k=e/a.$(h),m=a.Fa(h);a=Uf(a.Ha(h),a.f);c=k*Math.floor((c-m[0])/e+(f?.5:0))/a[0];d=k*Math.floor((d-m[1])/e+(f?0:.5))/a[1];f?(c=Math.ceil(c)-1,d=Math.ceil(d)-1):(c=Math.floor(c),d=Math.floor(d));return Mf(h,c,d,g)}
-l.kd=function(a,c,d){c=this.$(c);return eg(this,a[0],a[1],c,!1,d)};l.Ha=function(a){return this.o?this.o:this.i[a]};function gg(a,c,d){c=vb(a.b,c,d||0);return Da(c,a.minZoom,a.maxZoom)}function Zf(a,c){for(var d=a.b.length,e=Array(d),f=a.minZoom;f<d;++f)e[f]=bg(a,c,f);a.a=e}function hg(a){var c=a.l;if(!c){var c=ig(a),d=jg(c,void 0,void 0),c=new Yf({extent:c,origin:oc(c),resolutions:d,tileSize:void 0});a.l=c}return c}
-function kg(a){var c={};Pa(c,void 0!==a?a:{});void 0===c.extent&&(c.extent=Ic("EPSG:3857").O());c.resolutions=jg(c.extent,c.maxZoom,c.tileSize);delete c.maxZoom;return new Yf(c)}function jg(a,c,d){c=void 0!==c?c:42;var e=sc(a);a=rc(a);d=Uf(void 0!==d?d:256);d=Math.max(a/d[0],e/d[1]);c+=1;e=Array(c);for(a=0;a<c;++a)e[a]=d/Math.pow(2,a);return e}function ig(a){a=Ic(a);var c=a.O();c||(a=180*Ec.degrees/a.Vb(),c=ec(-a,-a,a,a));return c};function lg(a){Vf.call(this,{attributions:a.attributions,extent:a.extent,logo:a.logo,projection:a.projection,state:a.state,wrapX:a.wrapX});this.ea=void 0!==a.opaque?a.opaque:!1;this.ta=void 0!==a.tilePixelRatio?a.tilePixelRatio:1;this.tileGrid=void 0!==a.tileGrid?a.tileGrid:null;this.a=new Of(a.cacheSize);this.o=[0,0];this.Yb=""}y(lg,Vf);l=lg.prototype;l.vh=function(){return Pf(this.a)};l.Gc=function(a,c){var d=this.jd(a);d&&d.Gc(c)};
-function mg(a,c,d,e,f){c=a.jd(c);if(!c)return!1;for(var g=!0,h,k,m=e.b;m<=e.a;++m)for(var n=e.g;n<=e.f;++n)h=a.Ab(d,m,n),k=!1,Lf(c,h)&&(h=c.get(h),(k=2===h.V())&&(k=!1!==f(h))),k||(g=!1);return g}l.Od=function(){return 0};function ng(a,c){a.Yb!==c&&(a.Yb=c,a.u())}l.Ab=function(a,c,d){return a+"/"+c+"/"+d};l.ef=function(){return this.ea};l.Ga=function(){return this.tileGrid};l.fb=function(a){return this.tileGrid?this.tileGrid:hg(a)};l.jd=function(a){var c=this.f;return c&&!Zc(c,a)?null:this.a};
-l.Xb=function(){return this.ta};l.Ud=function(a,c,d){d=this.fb(d);c=this.Xb(c);a=Uf(d.Ha(a),this.o);return 1==c?a:Tf(a,c,this.o)};function og(a,c,d){var e=void 0!==d?d:a.f;d=a.fb(e);if(a.N&&e.g){var f=c;c=f[0];a=fg(d,f);e=ig(e);ac(e,a)?c=f:(f=rc(e),a[0]+=f*Math.ceil((e[0]-a[0])/f),c=d.kd(a,c))}f=c[0];e=c[1];a=c[2];if(d.minZoom>f||f>d.maxZoom)d=!1;else{var g=d.O();d=(d=g?bg(d,g,f):d.a?d.a[f]:null)?re(d,e,a):!0}return d?c:null}l.pa=function(){this.a.clear();this.u()};l.Uf=pa;
-function pg(a,c){gb.call(this,a);this.tile=c}y(pg,gb);function qg(a){a=a?a:{};this.M=document.createElement("UL");this.v=document.createElement("LI");this.M.appendChild(this.v);Cf(this.v,!1);this.f=void 0!==a.collapsed?a.collapsed:!0;this.o=void 0!==a.collapsible?a.collapsible:!0;this.o||(this.f=!1);var c=void 0!==a.className?a.className:"ol-attribution",d=void 0!==a.tipLabel?a.tipLabel:"Attributions",e=void 0!==a.collapseLabel?a.collapseLabel:"\u00bb";this.N="string"===typeof e?pf("SPAN",{},e):e;e=void 0!==a.label?a.label:"i";this.R="string"===typeof e?
-pf("SPAN",{},e):e;d=pf("BUTTON",{type:"button",title:d},this.o&&!this.f?this.N:this.R);C(d,"click",this.Vl,this);c=pf("DIV",c+" ol-unselectable ol-control"+(this.f&&this.o?" ol-collapsed":"")+(this.o?"":" ol-uncollapsible"),this.M,d);Jf.call(this,{element:c,render:a.render?a.render:rg,target:a.target});this.B=!0;this.j={};this.l={};this.T={}}y(qg,Jf);
-function rg(a){if(a=a.frameState){var c,d,e,f,g,h,k,m,n,p,q,r=a.layerStatesArray,u=Pa({},a.attributions),v={},x=a.viewState.projection;d=0;for(c=r.length;d<c;d++)if(h=r[d].layer.da())if(p=w(h).toString(),n=h.l)for(e=0,f=n.length;e<f;e++)if(k=n[e],m=w(k).toString(),!(m in u)){if(g=a.usedTiles[p]){var z=h.fb(x);a:{q=k;var E=x;if(q.b){var B=void 0,A=void 0,G=void 0,O=void 0;for(O in g)if(O in q.b)for(var G=g[O],L,B=0,A=q.b[O].length;B<A;++B){L=q.b[O][B];if(te(L,G)){q=!0;break a}var R=bg(z,ig(E),parseInt(O,
-10)),Wa=R.a-R.b+1;if(G.b<R.b||G.a>R.a)if(te(L,new qe(Ja(G.b,Wa),Ja(G.a,Wa),G.g,G.f))||G.a-G.b+1>Wa&&te(L,R)){q=!0;break a}}q=!1}else q=!0}}else q=!1;q?(m in v&&delete v[m],u[m]=k):v[m]=k}c=[u,v];d=c[0];c=c[1];for(var J in this.j)J in d?(this.l[J]||(Cf(this.j[J],!0),this.l[J]=!0),delete d[J]):J in c?(this.l[J]&&(Cf(this.j[J],!1),delete this.l[J]),delete c[J]):(uf(this.j[J]),delete this.j[J],delete this.l[J]);for(J in d)e=document.createElement("LI"),e.innerHTML=d[J].a,this.M.appendChild(e),this.j[J]=
-e,this.l[J]=!0;for(J in c)e=document.createElement("LI"),e.innerHTML=c[J].a,Cf(e,!1),this.M.appendChild(e),this.j[J]=e;J=!Sa(this.l)||!Sa(a.logos);this.B!=J&&(Cf(this.element,J),this.B=J);J&&Sa(this.l)?this.element.classList.add("ol-logo-only"):this.element.classList.remove("ol-logo-only");var ua;a=a.logos;J=this.T;for(ua in J)ua in a||(uf(J[ua]),delete J[ua]);for(var Ta in a)d=a[Ta],d instanceof HTMLElement&&(this.v.appendChild(d),J[Ta]=d),Ta in J||(ua=new Image,ua.src=Ta,""===d?d=ua:(d=pf("A",{href:d}),
-d.appendChild(ua)),this.v.appendChild(d),J[Ta]=d);Cf(this.v,!Sa(a))}else this.B&&(Cf(this.element,!1),this.B=!1)}l=qg.prototype;l.Vl=function(a){a.preventDefault();sg(this)};function sg(a){a.element.classList.toggle("ol-collapsed");a.f?vf(a.N,a.R):vf(a.R,a.N);a.f=!a.f}l.Ul=function(){return this.o};l.Xl=function(a){this.o!==a&&(this.o=a,this.element.classList.toggle("ol-uncollapsible"),!a&&this.f&&sg(this))};l.Wl=function(a){this.o&&this.f!==a&&sg(this)};l.Tl=function(){return this.f};function tg(a){a=a?a:{};var c=void 0!==a.className?a.className:"ol-rotate",d=void 0!==a.label?a.label:"\u21e7";this.f=null;"string"===typeof d?this.f=pf("SPAN","ol-compass",d):(this.f=d,this.f.classList.add("ol-compass"));d=pf("BUTTON",{"class":c+"-reset",type:"button",title:a.tipLabel?a.tipLabel:"Reset rotation"},this.f);C(d,"click",tg.prototype.B,this);c=pf("DIV",c+" ol-unselectable ol-control",d);d=a.render?a.render:ug;this.o=a.resetNorth?a.resetNorth:void 0;Jf.call(this,{element:c,render:d,target:a.target});
-this.j=void 0!==a.duration?a.duration:250;this.l=void 0!==a.autoHide?a.autoHide:!0;this.v=void 0;this.l&&this.element.classList.add("ol-hidden")}y(tg,Jf);tg.prototype.B=function(a){a.preventDefault();if(void 0!==this.o)this.o();else{a=this.a;var c=a.aa();if(c){var d=c.Ka();void 0!==d&&(0<this.j&&(d%=2*Math.PI,d<-Math.PI&&(d+=2*Math.PI),d>Math.PI&&(d-=2*Math.PI),a.Va(oe({rotation:d,duration:this.j,easing:je}))),c.de(0))}}};
-function ug(a){if(a=a.frameState){a=a.viewState.rotation;if(a!=this.v){var c="rotate("+a+"rad)";if(this.l){var d=this.element.classList.contains("ol-hidden");d||0!==a?d&&0!==a&&this.element.classList.remove("ol-hidden"):this.element.classList.add("ol-hidden")}this.f.style.msTransform=c;this.f.style.webkitTransform=c;this.f.style.transform=c}this.v=a}};function vg(a){a=a?a:{};var c=void 0!==a.className?a.className:"ol-zoom",d=void 0!==a.delta?a.delta:1,e=void 0!==a.zoomOutLabel?a.zoomOutLabel:"\u2212",f=void 0!==a.zoomOutTipLabel?a.zoomOutTipLabel:"Zoom out",g=pf("BUTTON",{"class":c+"-in",type:"button",title:void 0!==a.zoomInTipLabel?a.zoomInTipLabel:"Zoom in"},void 0!==a.zoomInLabel?a.zoomInLabel:"+");C(g,"click",vg.prototype.l.bind(this,d));e=pf("BUTTON",{"class":c+"-out",type:"button",title:f},e);C(e,"click",vg.prototype.l.bind(this,-d));c=pf("DIV",
-c+" ol-unselectable ol-control",g,e);Jf.call(this,{element:c,target:a.target});this.f=void 0!==a.duration?a.duration:250}y(vg,Jf);vg.prototype.l=function(a,c){c.preventDefault();var d=this.a,e=d.aa();if(e){var f=e.$();f&&(0<this.f&&d.Va(pe({resolution:f,duration:this.f,easing:je})),d=e.constrainResolution(f,a),e.Qb(d))}};function wg(a){a=a?a:{};var c=new we;(void 0!==a.zoom?a.zoom:1)&&c.push(new vg(a.zoomOptions));(void 0!==a.rotate?a.rotate:1)&&c.push(new tg(a.rotateOptions));(void 0!==a.attribution?a.attribution:1)&&c.push(new qg(a.attributionOptions));return c};var xg=Ve?"webkitfullscreenchange":Ue?"mozfullscreenchange":Se?"MSFullscreenChange":"fullscreenchange";function yg(){var a=jf().b,c=a.body;return!!(c.webkitRequestFullscreen||c.mozRequestFullScreen&&a.mozFullScreenEnabled||c.msRequestFullscreen&&a.msFullscreenEnabled||c.requestFullscreen&&a.fullscreenEnabled)}
-function zg(a){a.webkitRequestFullscreen?a.webkitRequestFullscreen():a.mozRequestFullScreen?a.mozRequestFullScreen():a.msRequestFullscreen?a.msRequestFullscreen():a.requestFullscreen&&a.requestFullscreen()}function Ag(){var a=jf().b;return!!(a.webkitIsFullScreen||a.mozFullScreen||a.msFullscreenElement||a.fullscreenElement)};function Bg(a){a=a?a:{};this.f=void 0!==a.className?a.className:"ol-full-screen";var c=void 0!==a.label?a.label:"\u2922";this.l="string"===typeof c?document.createTextNode(c):c;c=void 0!==a.labelActive?a.labelActive:"\u00d7";this.o="string"===typeof c?document.createTextNode(c):c;c=a.tipLabel?a.tipLabel:"Toggle full-screen";c=pf("BUTTON",{"class":this.f+"-"+Ag(),type:"button",title:c},this.l);C(c,"click",this.M,this);var d=this.f+" ol-unselectable ol-control "+(yg()?"":"ol-unsupported"),c=pf("DIV",
-d,c);Jf.call(this,{element:c,target:a.target});this.B=void 0!==a.keys?a.keys:!1;this.j=a.source}y(Bg,Jf);
-Bg.prototype.M=function(a){a.preventDefault();yg()&&(a=this.a)&&(Ag()?(a=jf().b,a.webkitCancelFullScreen?a.webkitCancelFullScreen():a.mozCancelFullScreen?a.mozCancelFullScreen():a.msExitFullscreen?a.msExitFullscreen():a.exitFullscreen&&a.exitFullscreen()):(a=this.j?mf(this.j):a.tc(),this.B?a.mozRequestFullScreenWithKeys?a.mozRequestFullScreenWithKeys():a.webkitRequestFullscreen?a.webkitRequestFullscreen():zg(a):zg(a)))};
-Bg.prototype.v=function(){var a=this.element.firstElementChild,c=this.a;Ag()?(a.className=this.f+"-true",vf(this.o,this.l)):(a.className=this.f+"-false",vf(this.l,this.o));c&&c.Sc()};Bg.prototype.setMap=function(a){Bg.ia.setMap.call(this,a);a&&this.s.push(C(qa.document,xg,this.v,this))};function Cg(a){a=a?a:{};var c=document.createElement("DIV");c.className=void 0!==a.className?a.className:"ol-mouse-position";Jf.call(this,{element:c,render:a.render?a.render:Dg,target:a.target});C(this,rb("projection"),this.Yl,this);a.coordinateFormat&&this.$h(a.coordinateFormat);a.projection&&this.dh(Ic(a.projection));this.v=void 0!==a.undefinedHTML?a.undefinedHTML:"";this.j=c.innerHTML;this.o=this.l=this.f=null}y(Cg,Jf);
-function Dg(a){a=a.frameState;a?this.f!=a.viewState.projection&&(this.f=a.viewState.projection,this.l=null):this.f=null;Eg(this,this.o)}l=Cg.prototype;l.Yl=function(){this.l=null};l.xg=function(){return this.get("coordinateFormat")};l.bh=function(){return this.get("projection")};l.Tk=function(a){this.o=this.a.Nd(a);Eg(this,this.o)};l.Uk=function(){Eg(this,null);this.o=null};l.setMap=function(a){Cg.ia.setMap.call(this,a);a&&(a=a.a,this.s.push(C(a,"mousemove",this.Tk,this),C(a,"mouseout",this.Uk,this)))};
-l.$h=function(a){this.set("coordinateFormat",a)};l.dh=function(a){this.set("projection",a)};function Eg(a,c){var d=a.v;if(c&&a.f){if(!a.l){var e=a.bh();a.l=e?Lc(a.f,e):ad}if(e=a.a.Ma(c))a.l(e,e),d=(d=a.xg())?d(e):e.toString()}a.j&&d==a.j||(a.element.innerHTML=d,a.j=d)};function Fg(a,c){var d=a;c&&(d=ma(a,c));!ga(aa.setImmediate)||aa.Window&&aa.Window.prototype&&!Ne("Edge")&&aa.Window.prototype.setImmediate==aa.setImmediate?(Gg||(Gg=Hg()),Gg(d)):aa.setImmediate(d)}var Gg;
-function Hg(){var a=aa.MessageChannel;"undefined"===typeof a&&"undefined"!==typeof window&&window.postMessage&&window.addEventListener&&!Ne("Presto")&&(a=function(){var a=document.createElement("IFRAME");a.style.display="none";a.src="";document.documentElement.appendChild(a);var c=a.contentWindow,a=c.document;a.open();a.write("");a.close();var d="callImmediate"+Math.random(),e="file:"==c.location.protocol?"*":c.location.protocol+"//"+c.location.host,a=ma(function(a){if(("*"==e||a.origin==e)&&a.data==
-d)this.port1.onmessage()},this);c.addEventListener("message",a,!1);this.port1={};this.port2={postMessage:function(){c.postMessage(d,e)}}});if("undefined"!==typeof a&&!Ne("Trident")&&!Ne("MSIE")){var c=new a,d={},e=d;c.port1.onmessage=function(){if(void 0!==d.next){d=d.next;var a=d.ng;d.ng=null;a()}};return function(a){e.next={ng:a};e=e.next;c.port2.postMessage(0)}}return"undefined"!==typeof document&&"onreadystatechange"in document.createElement("SCRIPT")?function(a){var c=document.createElement("SCRIPT");
-c.onreadystatechange=function(){c.onreadystatechange=null;c.parentNode.removeChild(c);c=null;a();a=null};document.documentElement.appendChild(c)}:function(a){aa.setTimeout(a,0)}};function Ig(a,c,d){gb.call(this,a);this.b=c;a=d?d:{};this.buttons=Jg(a);this.pressure=Kg(a,this.buttons);this.bubbles="bubbles"in a?a.bubbles:!1;this.cancelable="cancelable"in a?a.cancelable:!1;this.view="view"in a?a.view:null;this.detail="detail"in a?a.detail:null;this.screenX="screenX"in a?a.screenX:0;this.screenY="screenY"in a?a.screenY:0;this.clientX="clientX"in a?a.clientX:0;this.clientY="clientY"in a?a.clientY:0;this.button="button"in a?a.button:0;this.relatedTarget="relatedTarget"in a?a.relatedTarget:
-null;this.pointerId="pointerId"in a?a.pointerId:0;this.width="width"in a?a.width:0;this.height="height"in a?a.height:0;this.pointerType="pointerType"in a?a.pointerType:"";this.isPrimary="isPrimary"in a?a.isPrimary:!1;c.preventDefault&&(this.preventDefault=function(){c.preventDefault()})}y(Ig,gb);function Jg(a){if(a.buttons||Lg)a=a.buttons;else switch(a.which){case 1:a=1;break;case 2:a=4;break;case 3:a=2;break;default:a=0}return a}
-function Kg(a,c){var d=0;a.pressure?d=a.pressure:d=c?.5:0;return d}var Lg=!1;try{Lg=1===(new MouseEvent("click",{buttons:1})).buttons}catch(a){};function Mg(a,c){var d=document.createElement("CANVAS");a&&(d.width=a);c&&(d.height=c);return d.getContext("2d")}
-var Ng=function(){var a;return function(){if(void 0===a){var c=document.createElement("P"),d,e={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};document.body.appendChild(c);for(var f in e)f in c.style&&(c.style[f]="translate(1px,1px)",d=qa.getComputedStyle(c).getPropertyValue(e[f]));document.body.removeChild(c);a=d&&"none"!==d}return a}}(),Og=function(){var a;return function(){if(void 0===a){var c=document.createElement("P"),
-d,e={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};document.body.appendChild(c);for(var f in e)f in c.style&&(c.style[f]="translate3d(1px,1px,1px)",d=qa.getComputedStyle(c).getPropertyValue(e[f]));document.body.removeChild(c);a=d&&"none"!==d}return a}}();
-function Pg(a,c){var d=a.style;d.WebkitTransform=c;d.MozTransform=c;d.b=c;d.msTransform=c;d.transform=c;Se&&cf("9.0")&&(a.style.transformOrigin="0 0")}function Qg(a,c){var d;if(Og()){var e=Array(16);for(d=0;16>d;++d)e[d]=c[d].toFixed(6);Pg(a,"matrix3d("+e.join(",")+")")}else if(Ng()){var e=[c[0],c[1],c[4],c[5],c[12],c[13]],f=Array(6);for(d=0;6>d;++d)f[d]=e[d].toFixed(6);Pg(a,"matrix("+f.join(",")+")")}else a.style.left=Math.round(c[12])+"px",a.style.top=Math.round(c[13])+"px"};var Rg=["experimental-webgl","webgl","webkit-3d","moz-webgl"];function Sg(a,c){var d,e,f=Rg.length;for(e=0;e<f;++e)try{if(d=a.getContext(Rg[e],c))return d}catch(g){}return null};var Tg,Ug="undefined"!==typeof navigator?navigator.userAgent.toLowerCase():"",Vg=-1!==Ug.indexOf("firefox"),Wg=-1!==Ug.indexOf("safari")&&-1===Ug.indexOf("chrom"),Xg=-1!==Ug.indexOf("macintosh"),Yg=qa.devicePixelRatio||1,Zg=!1,$g=function(){if(!("HTMLCanvasElement"in qa))return!1;try{var a=Mg();return a?(void 0!==a.setLineDash&&(Zg=!0),!0):!1}catch(c){return!1}}(),ah="DeviceOrientationEvent"in qa,bh="geolocation"in qa.navigator,ch="ontouchstart"in qa,dh="PointerEvent"in qa,eh=!!qa.navigator.msPointerEnabled,
-fh=!1,gh,hh=[];if("WebGLRenderingContext"in qa)try{var ih=Sg(document.createElement("CANVAS"),{failIfMajorPerformanceCaveat:!0});ih&&(fh=!0,gh=ih.getParameter(ih.MAX_TEXTURE_SIZE),hh=ih.getSupportedExtensions())}catch(a){}Tg=fh;oa=hh;na=gh;function jh(a,c){this.b=a;this.c=c};function kh(a){jh.call(this,a,{mousedown:this.nl,mousemove:this.ol,mouseup:this.rl,mouseover:this.ql,mouseout:this.pl});this.a=a.g;this.g=[]}y(kh,jh);function lh(a,c){for(var d=a.g,e=c.clientX,f=c.clientY,g=0,h=d.length,k;g<h&&(k=d[g]);g++){var m=Math.abs(f-k[1]);if(25>=Math.abs(e-k[0])&&25>=m)return!0}return!1}function mh(a){var c=nh(a,a),d=c.preventDefault;c.preventDefault=function(){a.preventDefault();d()};c.pointerId=1;c.isPrimary=!0;c.pointerType="mouse";return c}l=kh.prototype;
-l.nl=function(a){if(!lh(this,a)){if((1).toString()in this.a){var c=mh(a);oh(this.b,ph,c,a);delete this.a[(1).toString()]}c=mh(a);this.a[(1).toString()]=a;oh(this.b,qh,c,a)}};l.ol=function(a){if(!lh(this,a)){var c=mh(a);oh(this.b,rh,c,a)}};l.rl=function(a){if(!lh(this,a)){var c=this.a[(1).toString()];c&&c.button===a.button&&(c=mh(a),oh(this.b,sh,c,a),delete this.a[(1).toString()])}};l.ql=function(a){if(!lh(this,a)){var c=mh(a);th(this.b,c,a)}};
-l.pl=function(a){if(!lh(this,a)){var c=mh(a);uh(this.b,c,a)}};function vh(a){jh.call(this,a,{MSPointerDown:this.wl,MSPointerMove:this.xl,MSPointerUp:this.Al,MSPointerOut:this.yl,MSPointerOver:this.zl,MSPointerCancel:this.vl,MSGotPointerCapture:this.tl,MSLostPointerCapture:this.ul});this.a=a.g;this.g=["","unavailable","touch","pen","mouse"]}y(vh,jh);function wh(a,c){var d=c;fa(c.pointerType)&&(d=nh(c,c),d.pointerType=a.g[c.pointerType]);return d}l=vh.prototype;l.wl=function(a){this.a[a.pointerId.toString()]=a;var c=wh(this,a);oh(this.b,qh,c,a)};
-l.xl=function(a){var c=wh(this,a);oh(this.b,rh,c,a)};l.Al=function(a){var c=wh(this,a);oh(this.b,sh,c,a);delete this.a[a.pointerId.toString()]};l.yl=function(a){var c=wh(this,a);uh(this.b,c,a)};l.zl=function(a){var c=wh(this,a);th(this.b,c,a)};l.vl=function(a){var c=wh(this,a);oh(this.b,ph,c,a);delete this.a[a.pointerId.toString()]};l.ul=function(a){this.b.b(new Ig("lostpointercapture",a,a))};l.tl=function(a){this.b.b(new Ig("gotpointercapture",a,a))};function xh(a){jh.call(this,a,{pointerdown:this.eo,pointermove:this.fo,pointerup:this.jo,pointerout:this.ho,pointerover:this.io,pointercancel:this.co,gotpointercapture:this.Ck,lostpointercapture:this.ml})}y(xh,jh);l=xh.prototype;l.eo=function(a){yh(this.b,a)};l.fo=function(a){yh(this.b,a)};l.jo=function(a){yh(this.b,a)};l.ho=function(a){yh(this.b,a)};l.io=function(a){yh(this.b,a)};l.co=function(a){yh(this.b,a)};l.ml=function(a){yh(this.b,a)};l.Ck=function(a){yh(this.b,a)};function zh(a,c){jh.call(this,a,{touchstart:this.mp,touchmove:this.lp,touchend:this.kp,touchcancel:this.jp});this.a=a.g;this.l=c;this.g=void 0;this.i=0;this.f=void 0}y(zh,jh);l=zh.prototype;l.Yh=function(){this.i=0;this.f=void 0};
-function Ah(a,c,d){c=nh(c,d);c.pointerId=d.identifier+2;c.bubbles=!0;c.cancelable=!0;c.detail=a.i;c.button=0;c.buttons=1;c.width=d.webkitRadiusX||d.radiusX||0;c.height=d.webkitRadiusY||d.radiusY||0;c.pressure=d.webkitForce||d.force||.5;c.isPrimary=a.g===d.identifier;c.pointerType="touch";c.clientX=d.clientX;c.clientY=d.clientY;c.screenX=d.screenX;c.screenY=d.screenY;return c}
-function Bh(a,c,d){function e(){c.preventDefault()}var f=Array.prototype.slice.call(c.changedTouches),g=f.length,h,k;for(h=0;h<g;++h)k=Ah(a,c,f[h]),k.preventDefault=e,d.call(a,c,k)}
-l.mp=function(a){var c=a.touches,d=Object.keys(this.a),e=d.length;if(e>=c.length){var f=[],g,h,k;for(g=0;g<e;++g){h=d[g];k=this.a[h];var m;if(!(m=1==h))a:{m=c.length;for(var n=void 0,p=0;p<m;p++)if(n=c[p],n.identifier===h-2){m=!0;break a}m=!1}m||f.push(k.out)}for(g=0;g<f.length;++g)this.Qe(a,f[g])}c=a.changedTouches[0];d=Object.keys(this.a).length;if(0===d||1===d&&(1).toString()in this.a)this.g=c.identifier,void 0!==this.f&&qa.clearTimeout(this.f);Ch(this,a);this.i++;Bh(this,a,this.Zn)};
-l.Zn=function(a,c){this.a[c.pointerId]={target:c.target,out:c,Gh:c.target};var d=this.b;c.bubbles=!0;oh(d,Dh,c,a);d=this.b;c.bubbles=!1;oh(d,Eh,c,a);oh(this.b,qh,c,a)};l.lp=function(a){a.preventDefault();Bh(this,a,this.sl)};l.sl=function(a,c){var d=this.a[c.pointerId];if(d){var e=d.out,f=d.Gh;oh(this.b,rh,c,a);e&&f!==c.target&&(e.relatedTarget=c.target,c.relatedTarget=f,e.target=f,c.target?(uh(this.b,e,a),th(this.b,c,a)):(c.target=f,c.relatedTarget=null,this.Qe(a,c)));d.out=c;d.Gh=c.target}};
-l.kp=function(a){Ch(this,a);Bh(this,a,this.np)};l.np=function(a,c){oh(this.b,sh,c,a);this.b.out(c,a);var d=this.b;c.bubbles=!1;oh(d,Fh,c,a);delete this.a[c.pointerId];c.isPrimary&&(this.g=void 0,this.f=qa.setTimeout(this.Yh.bind(this),200))};l.jp=function(a){Bh(this,a,this.Qe)};l.Qe=function(a,c){oh(this.b,ph,c,a);this.b.out(c,a);var d=this.b;c.bubbles=!1;oh(d,Fh,c,a);delete this.a[c.pointerId];c.isPrimary&&(this.g=void 0,this.f=qa.setTimeout(this.Yh.bind(this),200))};
-function Ch(a,c){var d=a.l.g,e=c.changedTouches[0];if(a.g===e.identifier){var f=[e.clientX,e.clientY];d.push(f);qa.setTimeout(function(){yb(d,f)},2500)}};function Gh(a){jb.call(this);this.i=a;this.g={};this.c={};this.a=[];dh?Hh(this,new xh(this)):eh?Hh(this,new vh(this)):(a=new kh(this),Hh(this,a),ch&&Hh(this,new zh(this,a)));a=this.a.length;for(var c,d=0;d<a;d++)c=this.a[d],Ih(this,Object.keys(c.c))}y(Gh,jb);function Hh(a,c){var d=Object.keys(c.c);d&&(d.forEach(function(a){var d=c.c[a];d&&(this.c[a]=d.bind(c))},a),a.a.push(c))}Gh.prototype.f=function(a){var c=this.c[a.type];c&&c(a)};
-function Ih(a,c){c.forEach(function(a){C(this.i,a,this.f,this)},a)}function Jh(a,c){c.forEach(function(a){cb(this.i,a,this.f,this)},a)}function nh(a,c){for(var d={},e,f=0,g=Kh.length;f<g;f++)e=Kh[f][0],d[e]=a[e]||c[e]||Kh[f][1];return d}Gh.prototype.out=function(a,c){a.bubbles=!0;oh(this,Lh,a,c)};function uh(a,c,d){a.out(c,d);var e=c.relatedTarget;e&&wf(c.target,e)||(c.bubbles=!1,oh(a,Fh,c,d))}
-function th(a,c,d){c.bubbles=!0;oh(a,Dh,c,d);var e=c.relatedTarget;e&&wf(c.target,e)||(c.bubbles=!1,oh(a,Eh,c,d))}function oh(a,c,d,e){a.b(new Ig(c,e,d))}function yh(a,c){a.b(new Ig(c.type,c,c))}Gh.prototype.fa=function(){for(var a=this.a.length,c,d=0;d<a;d++)c=this.a[d],Jh(this,Object.keys(c.c));Gh.ia.fa.call(this)};
-var rh="pointermove",qh="pointerdown",sh="pointerup",Dh="pointerover",Lh="pointerout",Eh="pointerenter",Fh="pointerleave",ph="pointercancel",Kh=[["bubbles",!1],["cancelable",!1],["view",null],["detail",null],["screenX",0],["screenY",0],["clientX",0],["clientY",0],["ctrlKey",!1],["altKey",!1],["shiftKey",!1],["metaKey",!1],["button",0],["relatedTarget",null],["buttons",0],["pointerId",0],["width",0],["height",0],["pressure",0],["tiltX",0],["tiltY",0],["pointerType",""],["hwTimestamp",0],["isPrimary",
-!1],["type",""],["target",null],["currentTarget",null],["which",0]];function Mh(a,c,d,e,f){If.call(this,a,c,f);this.originalEvent=d;this.pixel=c.Nd(d);this.coordinate=c.Ma(this.pixel);this.dragging=void 0!==e?e:!1}y(Mh,If);Mh.prototype.preventDefault=function(){Mh.ia.preventDefault.call(this);this.originalEvent.preventDefault()};Mh.prototype.stopPropagation=function(){Mh.ia.stopPropagation.call(this);this.originalEvent.stopPropagation()};function Nh(a,c,d,e,f){Mh.call(this,a,c,d.b,e,f);this.b=d}y(Nh,Mh);
-function Oh(a){jb.call(this);this.f=a;this.l=0;this.o=!1;this.c=[];this.g=null;a=this.f.a;this.U=0;this.v={};this.i=new Gh(a);this.a=null;this.j=C(this.i,qh,this.Wk,this);this.s=C(this.i,rh,this.Ho,this)}y(Oh,jb);function Ph(a,c){var d;d=new Nh(Qh,a.f,c);a.b(d);0!==a.l?(qa.clearTimeout(a.l),a.l=0,d=new Nh(Rh,a.f,c),a.b(d)):a.l=qa.setTimeout(function(){this.l=0;var a=new Nh(Sh,this.f,c);this.b(a)}.bind(a),250)}
-function Th(a,c){c.type==Uh||c.type==Vh?delete a.v[c.pointerId]:c.type==Wh&&(a.v[c.pointerId]=!0);a.U=Object.keys(a.v).length}l=Oh.prototype;l.Lg=function(a){Th(this,a);var c=new Nh(Uh,this.f,a);this.b(c);!this.o&&0===a.button&&Ph(this,this.g);0===this.U&&(this.c.forEach(Xa),this.c.length=0,this.o=!1,this.g=null,fb(this.a),this.a=null)};
-l.Wk=function(a){Th(this,a);var c=new Nh(Wh,this.f,a);this.b(c);this.g=a;0===this.c.length&&(this.a=new Gh(document),this.c.push(C(this.a,Xh,this.Ol,this),C(this.a,Uh,this.Lg,this),C(this.i,Vh,this.Lg,this)))};l.Ol=function(a){if(a.clientX!=this.g.clientX||a.clientY!=this.g.clientY){this.o=!0;var c=new Nh(Yh,this.f,a,this.o);this.b(c)}a.preventDefault()};l.Ho=function(a){this.b(new Nh(a.type,this.f,a,!(!this.g||a.clientX==this.g.clientX&&a.clientY==this.g.clientY)))};
-l.fa=function(){this.s&&(Xa(this.s),this.s=null);this.j&&(Xa(this.j),this.j=null);this.c.forEach(Xa);this.c.length=0;this.a&&(fb(this.a),this.a=null);this.i&&(fb(this.i),this.i=null);Oh.ia.fa.call(this)};var Sh="singleclick",Qh="click",Rh="dblclick",Yh="pointerdrag",Xh="pointermove",Wh="pointerdown",Uh="pointerup",Vh="pointercancel",Zh={Gp:Sh,vp:Qh,wp:Rh,zp:Yh,Cp:Xh,yp:Wh,Fp:Uh,Ep:"pointerover",Dp:"pointerout",Ap:"pointerenter",Bp:"pointerleave",xp:Vh};function $h(a){pb.call(this);var c=Pa({},a);c.opacity=void 0!==a.opacity?a.opacity:1;c.visible=void 0!==a.visible?a.visible:!0;c.zIndex=void 0!==a.zIndex?a.zIndex:0;c.maxResolution=void 0!==a.maxResolution?a.maxResolution:Infinity;c.minResolution=void 0!==a.minResolution?a.minResolution:0;this.C(c)}y($h,pb);
-function ai(a){var c=a.Lb(),d=a.ff(),e=a.wb(),f=a.O(),g=a.Mb(),h=a.Ib(),k=a.Jb();return{layer:a,opacity:Da(c,0,1),R:d,visible:e,Lc:!0,extent:f,zIndex:g,maxResolution:h,minResolution:Math.max(k,0)}}l=$h.prototype;l.O=function(){return this.get("extent")};l.Ib=function(){return this.get("maxResolution")};l.Jb=function(){return this.get("minResolution")};l.Lb=function(){return this.get("opacity")};l.wb=function(){return this.get("visible")};l.Mb=function(){return this.get("zIndex")};
-l.ac=function(a){this.set("extent",a)};l.ic=function(a){this.set("maxResolution",a)};l.jc=function(a){this.set("minResolution",a)};l.bc=function(a){this.set("opacity",a)};l.cc=function(a){this.set("visible",a)};l.dc=function(a){this.set("zIndex",a)};function bi(){};function ci(a,c,d,e,f,g){gb.call(this,a,c);this.vectorContext=d;this.frameState=e;this.context=f;this.glContext=g}y(ci,gb);function di(a){var c=Pa({},a);delete c.source;$h.call(this,c);this.v=this.j=this.o=null;a.map&&this.setMap(a.map);C(this,rb("source"),this.bl,this);this.Ac(a.source?a.source:null)}y(di,$h);function ei(a,c){return a.visible&&c>=a.minResolution&&c<a.maxResolution}l=di.prototype;l.df=function(a){a=a?a:[];a.push(ai(this));return a};l.da=function(){return this.get("source")||null};l.ff=function(){var a=this.da();return a?a.V():"undefined"};l.Fm=function(){this.u()};
-l.bl=function(){this.v&&(Xa(this.v),this.v=null);var a=this.da();a&&(this.v=C(a,"change",this.Fm,this));this.u()};l.setMap=function(a){this.o&&(Xa(this.o),this.o=null);a||this.u();this.j&&(Xa(this.j),this.j=null);a&&(this.o=C(a,"precompose",function(a){var d=ai(this);d.Lc=!1;d.zIndex=Infinity;a.frameState.layerStatesArray.push(d);a.frameState.layerStates[w(this)]=d},this),this.j=C(this,"change",a.render,a),this.u())};l.Ac=function(a){this.set("source",a)};function fi(a,c,d,e,f){jb.call(this);this.l=f;this.extent=a;this.f=d;this.resolution=c;this.state=e}y(fi,jb);function gi(a){a.b("change")}fi.prototype.O=function(){return this.extent};fi.prototype.$=function(){return this.resolution};fi.prototype.V=function(){return this.state};function hi(a,c,d,e,f,g,h,k){ld(a);0===c&&0===d||od(a,c,d);1==e&&1==f||pd(a,e,f);0!==g&&qd(a,g);0===h&&0===k||od(a,h,k);return a}function ii(a,c){return a[0]==c[0]&&a[1]==c[1]&&a[4]==c[4]&&a[5]==c[5]&&a[12]==c[12]&&a[13]==c[13]}function ji(a,c,d){var e=a[1],f=a[5],g=a[13],h=c[0];c=c[1];d[0]=a[0]*h+a[4]*c+a[12];d[1]=e*h+f*c+g;return d};function ki(a){mb.call(this);this.a=a}y(ki,mb);l=ki.prototype;l.oa=pa;l.xc=function(a,c,d,e){a=a.slice();ji(c.pixelToCoordinateMatrix,a,a);if(this.oa(a,c,Ac,this))return d.call(e,this.a)};l.ge=Bc;l.Ld=function(a,c,d){return function(e,f){return mg(a,c,e,f,function(a){d[e]||(d[e]={});d[e][a.ja.toString()]=a})}};l.Im=function(a){2===a.target.V()&&li(this)};function mi(a,c){var d=c.V();2!=d&&3!=d&&C(c,"change",a.Im,a);0==d&&(c.load(),d=c.V());return 2==d}
-function li(a){var c=a.a;c.wb()&&"ready"==c.ff()&&a.u()}function ni(a,c){c.vh()&&a.postRenderFunctions.push(function(a,c,f){c=w(a).toString();a.Gc(f.viewState.projection,f.usedTiles[c])}.bind(null,c))}function oi(a,c){if(c){var d,e,f;e=0;for(f=c.length;e<f;++e)d=c[e],a[w(d).toString()]=d}}function pi(a,c){var d=c.R;void 0!==d&&("string"===typeof d?a.logos[d]="":ha(d)&&(a.logos[d.src]=d.href))}
-function qi(a,c,d,e){c=w(c).toString();d=d.toString();c in a?d in a[c]?(a=a[c][d],e.b<a.b&&(a.b=e.b),e.a>a.a&&(a.a=e.a),e.g<a.g&&(a.g=e.g),e.f>a.f&&(a.f=e.f)):a[c][d]=e:(a[c]={},a[c][d]=e)}function ri(a,c,d){return[c*(Math.round(a[0]/c)+d[0]%2/2),c*(Math.round(a[1]/c)+d[1]%2/2)]}
-function si(a,c,d,e,f,g,h,k,m,n){var p=w(c).toString();p in a.wantedTiles||(a.wantedTiles[p]={});var q=a.wantedTiles[p];a=a.tileQueue;var r=d.minZoom,u,v,x,z,E,B;for(B=h;B>=r;--B)for(v=bg(d,g,B,v),x=d.$(B),z=v.b;z<=v.a;++z)for(E=v.g;E<=v.f;++E)h-B<=k?(u=c.Wb(B,z,E,e,f),0==u.V()&&(q[u.ja.toString()]=!0,u.gb()in a.g||a.f([u,p,fg(d,u.ja),x])),void 0!==m&&m.call(n,u)):c.Uf(B,z,E,f)};function ti(a){this.v=a.opacity;this.U=a.rotateWithView;this.j=a.rotation;this.i=a.scale;this.M=a.snapToPixel}l=ti.prototype;l.le=function(){return this.v};l.Rd=function(){return this.U};l.me=function(){return this.j};l.ne=function(){return this.i};l.Sd=function(){return this.M};l.oe=function(a){this.v=a};l.pe=function(a){this.j=a};l.qe=function(a){this.i=a};function ui(a){a=a||{};this.c=void 0!==a.anchor?a.anchor:[.5,.5];this.f=null;this.a=void 0!==a.anchorOrigin?a.anchorOrigin:"top-left";this.o=void 0!==a.anchorXUnits?a.anchorXUnits:"fraction";this.s=void 0!==a.anchorYUnits?a.anchorYUnits:"fraction";var c=void 0!==a.crossOrigin?a.crossOrigin:null,d=void 0!==a.img?a.img:null,e=void 0!==a.imgSize?a.imgSize:null,f=a.src;void 0!==f&&0!==f.length||!d||(f=d.src||w(d).toString());var g=void 0!==a.src?0:2,h=void 0!==a.color?Fe(a.color):null,k=vi.Ub(),m=k.get(f,
-c,h);m||(m=new wi(d,f,e,c,g,h),k.set(f,c,h,m));this.b=m;this.N=void 0!==a.offset?a.offset:[0,0];this.g=void 0!==a.offsetOrigin?a.offsetOrigin:"top-left";this.l=null;this.B=void 0!==a.size?a.size:null;ti.call(this,{opacity:void 0!==a.opacity?a.opacity:1,rotation:void 0!==a.rotation?a.rotation:0,scale:void 0!==a.scale?a.scale:1,snapToPixel:void 0!==a.snapToPixel?a.snapToPixel:!0,rotateWithView:void 0!==a.rotateWithView?a.rotateWithView:!1})}y(ui,ti);l=ui.prototype;
-l.Tb=function(){if(this.f)return this.f;var a=this.c,c=this.Bb();if("fraction"==this.o||"fraction"==this.s){if(!c)return null;a=this.c.slice();"fraction"==this.o&&(a[0]*=c[0]);"fraction"==this.s&&(a[1]*=c[1])}if("top-left"!=this.a){if(!c)return null;a===this.c&&(a=this.c.slice());if("top-right"==this.a||"bottom-right"==this.a)a[0]=-a[0]+c[0];if("bottom-left"==this.a||"bottom-right"==this.a)a[1]=-a[1]+c[1]}return this.f=a};l.ec=function(){var a=this.b;return a.c?a.c:a.a};l.fd=function(){return this.b.g};
-l.od=function(){return this.b.f};l.ke=function(){var a=this.b;if(!a.o)if(a.s){var c=a.g[0],d=a.g[1],e=Mg(c,d);e.fillRect(0,0,c,d);a.o=e.canvas}else a.o=a.a;return a.o};l.Fa=function(){if(this.l)return this.l;var a=this.N;if("top-left"!=this.g){var c=this.Bb(),d=this.b.g;if(!c||!d)return null;a=a.slice();if("top-right"==this.g||"bottom-right"==this.g)a[0]=d[0]-c[0]-a[0];if("bottom-left"==this.g||"bottom-right"==this.g)a[1]=d[1]-c[1]-a[1]}return this.l=a};l.yn=function(){return this.b.j};
-l.Bb=function(){return this.B?this.B:this.b.g};l.kf=function(a,c){return C(this.b,"change",a,c)};l.load=function(){this.b.load()};l.Tf=function(a,c){cb(this.b,"change",a,c)};function wi(a,c,d,e,f,g){jb.call(this);this.o=null;this.a=a?a:new Image;null!==e&&(this.a.crossOrigin=e);this.c=g?document.createElement("CANVAS"):null;this.l=g;this.i=null;this.f=f;this.g=d;this.j=c;this.s=!1;2==this.f&&xi(this)}y(wi,jb);
-function xi(a){var c=Mg(1,1);try{c.drawImage(a.a,0,0),c.getImageData(0,0,1,1)}catch(d){a.s=!0}}wi.prototype.v=function(){this.f=3;this.i.forEach(Xa);this.i=null;this.b("change")};
-wi.prototype.U=function(){this.f=2;this.g&&(this.a.width=this.g[0],this.a.height=this.g[1]);this.g=[this.a.width,this.a.height];this.i.forEach(Xa);this.i=null;xi(this);if(!this.s&&null!==this.l){this.c.width=this.a.width;this.c.height=this.a.height;var a=this.c.getContext("2d");a.drawImage(this.a,0,0);for(var c=a.getImageData(0,0,this.a.width,this.a.height),d=c.data,e=this.l[0]/255,f=this.l[1]/255,g=this.l[2]/255,h=0,k=d.length;h<k;h+=4)d[h]*=e,d[h+1]*=f,d[h+2]*=g;a.putImageData(c,0,0)}this.b("change")};
-wi.prototype.load=function(){if(0==this.f){this.f=1;this.i=[bb(this.a,"error",this.v,this),bb(this.a,"load",this.U,this)];try{this.a.src=this.j}catch(a){this.v()}}};function vi(){this.b={};this.a=0}ba(vi);vi.prototype.clear=function(){this.b={};this.a=0};vi.prototype.get=function(a,c,d){a=c+":"+a+":"+(d?He(d):"null");return a in this.b?this.b[a]:null};vi.prototype.set=function(a,c,d,e){this.b[c+":"+a+":"+(d?He(d):"null")]=e;++this.a};function yi(a,c){this.i=c;this.g={};this.s={}}y(yi,eb);function zi(a){var c=a.viewState,d=a.coordinateToPixelMatrix;hi(d,a.size[0]/2,a.size[1]/2,1/c.resolution,-1/c.resolution,-c.rotation,-c.center[0],-c.center[1]);nd(d,a.pixelToCoordinateMatrix)}l=yi.prototype;l.fa=function(){for(var a in this.g)fb(this.g[a])};function Ai(){var a=vi.Ub();if(32<a.a){var c=0,d,e;for(d in a.b)e=a.b[d],0!==(c++&3)||lb(e)||(delete a.b[d],--a.a)}}
-l.oa=function(a,c,d,e,f,g){function h(a,f){var g=w(a).toString(),h=c.layerStates[w(f)].Lc;if(!(g in c.skippedFeatureUids)||h)return d.call(e,a,h?f:null)}var k,m=c.viewState,n=m.resolution,p=m.projection,m=a;if(p.a){var p=p.O(),q=rc(p),r=a[0];if(r<p[0]||r>p[2])m=[r+q*Math.ceil((p[0]-r)/q),a[1]]}p=c.layerStatesArray;for(q=p.length-1;0<=q;--q){var u=p[q],r=u.layer;if(ei(u,n)&&f.call(g,r)&&(u=Bi(this,r),r.da()&&(k=u.oa(r.da().N?m:a,c,h,e)),k))return k}};
-l.mh=function(a,c,d,e,f,g){var h,k=c.viewState.resolution,m=c.layerStatesArray,n;for(n=m.length-1;0<=n;--n){h=m[n];var p=h.layer;if(ei(h,k)&&f.call(g,p)&&(h=Bi(this,p).xc(a,c,d,e)))return h}};l.nh=function(a,c,d,e){return void 0!==this.oa(a,c,Ac,this,d,e)};function Bi(a,c){var d=w(c).toString();if(d in a.g)return a.g[d];var e=a.Te(c);a.g[d]=e;a.s[d]=C(e,"change",a.Nk,a);return e}l.Nk=function(){this.i.render()};l.xe=pa;
-l.No=function(a,c){for(var d in this.g)if(!(c&&d in c.layerStates)){var e=d,f=this.g[e];delete this.g[e];Xa(this.s[e]);delete this.s[e];fb(f)}};function Ci(a,c){for(var d in a.g)if(!(d in c.layerStates)){c.postRenderFunctions.push(a.No.bind(a));break}}function Cb(a,c){return a.zIndex-c.zIndex};function Di(a,c){this.j=a;this.l=c;this.b=[];this.a=[];this.g={}}Di.prototype.clear=function(){this.b.length=0;this.a.length=0;Qa(this.g)};function Ei(a){var c=a.b,d=a.a,e=c[0];1==c.length?(c.length=0,d.length=0):(c[0]=c.pop(),d[0]=d.pop(),Fi(a,0));c=a.l(e);delete a.g[c];return e}Di.prototype.f=function(a){var c=this.j(a);return Infinity!=c?(this.b.push(a),this.a.push(c),this.g[this.l(a)]=!0,Gi(this,0,this.b.length-1),!0):!1};Di.prototype.rc=function(){return this.b.length};
-Di.prototype.Sa=function(){return 0===this.b.length};function Fi(a,c){for(var d=a.b,e=a.a,f=d.length,g=d[c],h=e[c],k=c;c<f>>1;){var m=2*c+1,n=2*c+2,m=n<f&&e[n]<e[m]?n:m;d[c]=d[m];e[c]=e[m];c=m}d[c]=g;e[c]=h;Gi(a,k,c)}function Gi(a,c,d){var e=a.b;a=a.a;for(var f=e[d],g=a[d];d>c;){var h=d-1>>1;if(a[h]>g)e[d]=e[h],a[d]=a[h],d=h;else break}e[d]=f;a[d]=g}
-function Hi(a){var c=a.j,d=a.b,e=a.a,f=0,g=d.length,h,k,m;for(k=0;k<g;++k)h=d[k],m=c(h),Infinity==m?delete a.g[a.l(h)]:(e[f]=m,d[f++]=h);d.length=f;e.length=f;for(c=(a.b.length>>1)-1;0<=c;c--)Fi(a,c)};function Ii(a,c){Di.call(this,function(c){return a.apply(null,c)},function(a){return a[0].gb()});this.s=c;this.i=0;this.c={}}y(Ii,Di);Ii.prototype.f=function(a){var c=Ii.ia.f.call(this,a);c&&C(a[0],"change",this.o,this);return c};Ii.prototype.o=function(a){a=a.target;var c=a.V();if(2===c||3===c||4===c||5===c)cb(a,"change",this.o,this),a=a.gb(),a in this.c&&(delete this.c[a],--this.i),this.s()};
-function Ji(a,c,d){for(var e=0,f,g;a.i<c&&e<d&&0<a.rc();)f=Ei(a)[0],g=f.gb(),0!==f.V()||g in a.c||(a.c[g]=!0,++a.i,++e,f.load())};function Ki(a,c,d){this.f=a;this.g=c;this.i=d;this.b=[];this.a=this.c=0}function Li(a,c){var d=a.f,e=a.a,f=a.g-e,g=Math.log(a.g/a.a)/a.f;return ne({source:c,duration:g,easing:function(a){return e*(Math.exp(d*a*g)-1)/f}})};function Mi(a){pb.call(this);this.v=null;this.i(!0);this.handleEvent=a.handleEvent}y(Mi,pb);Mi.prototype.f=function(){return this.get("active")};Mi.prototype.l=function(){return this.v};Mi.prototype.i=function(a){this.set("active",a)};Mi.prototype.setMap=function(a){this.v=a};function Ni(a,c,d,e,f){if(void 0!==d){var g=c.Ka(),h=c.bb();void 0!==g&&h&&f&&0<f&&(a.Va(oe({rotation:g,duration:f,easing:je})),e&&a.Va(ne({source:h,duration:f,easing:je})));c.rotate(d,e)}}
-function Oi(a,c,d,e,f){var g=c.$();d=c.constrainResolution(g,d,0);Pi(a,c,d,e,f)}function Pi(a,c,d,e,f){if(d){var g=c.$(),h=c.bb();void 0!==g&&h&&d!==g&&f&&0<f&&(a.Va(pe({resolution:g,duration:f,easing:je})),e&&a.Va(ne({source:h,duration:f,easing:je})));if(e){var k;a=c.bb();f=c.$();void 0!==a&&void 0!==f&&(k=[e[0]-d*(e[0]-a[0])/f,e[1]-d*(e[1]-a[1])/f]);c.jb(k)}c.Qb(d)}};function Qi(a){a=a?a:{};this.a=a.delta?a.delta:1;Mi.call(this,{handleEvent:Ri});this.c=void 0!==a.duration?a.duration:250}y(Qi,Mi);function Ri(a){var c=!1,d=a.originalEvent;if(a.type==Rh){var c=a.map,e=a.coordinate,d=d.shiftKey?-this.a:this.a,f=c.aa();Oi(c,f,d,e,this.c);a.preventDefault();c=!0}return!c};function Si(a){a=a.originalEvent;return a.altKey&&!(a.metaKey||a.ctrlKey)&&a.shiftKey}function Ti(a){a=a.originalEvent;return 0==a.button&&!(Ve&&Xg&&a.ctrlKey)}function Ui(a){return"pointermove"==a.type}function Vi(a){return a.type==Sh}function Wi(a){a=a.originalEvent;return!a.altKey&&!(a.metaKey||a.ctrlKey)&&!a.shiftKey}function Xi(a){a=a.originalEvent;return!a.altKey&&!(a.metaKey||a.ctrlKey)&&a.shiftKey}
-function Yi(a){a=a.originalEvent.target.tagName;return"INPUT"!==a&&"SELECT"!==a&&"TEXTAREA"!==a}function Zi(a){return"mouse"==a.b.pointerType}function $i(a){a=a.b;return a.isPrimary&&0===a.button};function aj(a){a=a?a:{};Mi.call(this,{handleEvent:a.handleEvent?a.handleEvent:bj});this.Ke=a.handleDownEvent?a.handleDownEvent:Bc;this.Le=a.handleDragEvent?a.handleDragEvent:pa;this.Hi=a.handleMoveEvent?a.handleMoveEvent:pa;this.oj=a.handleUpEvent?a.handleUpEvent:Bc;this.M=!1;this.ea={};this.o=[]}y(aj,Mi);function cj(a){for(var c=a.length,d=0,e=0,f=0;f<c;f++)d+=a[f].clientX,e+=a[f].clientY;return[d/c,e/c]}
-function bj(a){if(!(a instanceof Nh))return!0;var c=!1,d=a.type;if(d===Wh||d===Yh||d===Uh)d=a.b,a.type==Uh?delete this.ea[d.pointerId]:a.type==Wh?this.ea[d.pointerId]=d:d.pointerId in this.ea&&(this.ea[d.pointerId]=d),this.o=Ra(this.ea);this.M&&(a.type==Yh?this.Le(a):a.type==Uh&&(this.M=this.oj(a)));a.type==Wh?(this.M=a=this.Ke(a),c=this.Bc(a)):a.type==Xh&&this.Hi(a);return!c}aj.prototype.Bc=function(a){return a};function dj(a){aj.call(this,{handleDownEvent:ej,handleDragEvent:fj,handleUpEvent:gj});a=a?a:{};this.a=a.kinetic;this.c=this.j=null;this.B=a.condition?a.condition:Wi;this.s=!1}y(dj,aj);function fj(a){var c=cj(this.o);this.a&&this.a.b.push(c[0],c[1],Date.now());if(this.c){var d=this.c[0]-c[0],e=c[1]-this.c[1];a=a.map;var f=a.aa(),g=f.V(),e=d=[d,e],h=g.resolution;e[0]*=h;e[1]*=h;Rb(d,g.rotation);Mb(d,g.center);d=f.Kd(d);a.render();f.jb(d)}this.c=c}
-function gj(a){a=a.map;var c=a.aa();if(0===this.o.length){var d;if(d=!this.s&&this.a)if(d=this.a,6>d.b.length)d=!1;else{var e=Date.now()-d.i,f=d.b.length-3;if(d.b[f+2]<e)d=!1;else{for(var g=f-3;0<g&&d.b[g+2]>e;)g-=3;var e=d.b[f+2]-d.b[g+2],h=d.b[f]-d.b[g],f=d.b[f+1]-d.b[g+1];d.c=Math.atan2(f,h);d.a=Math.sqrt(h*h+f*f)/e;d=d.a>d.g}}d&&(d=this.a,d=(d.g-d.a)/d.f,f=this.a.c,g=c.bb(),this.j=Li(this.a,g),a.Va(this.j),g=a.Da(g),d=a.Ma([g[0]-d*Math.cos(f),g[1]-d*Math.sin(f)]),d=c.Kd(d),c.jb(d));he(c,-1);a.render();
-return!1}this.c=null;return!0}function ej(a){if(0<this.o.length&&this.B(a)){var c=a.map,d=c.aa();this.c=null;this.M||he(d,1);c.render();this.j&&yb(c.R,this.j)&&(d.jb(a.frameState.viewState.center),this.j=null);this.a&&(a=this.a,a.b.length=0,a.c=0,a.a=0);this.s=1<this.o.length;return!0}return!1}dj.prototype.Bc=Bc;function hj(a){a=a?a:{};aj.call(this,{handleDownEvent:ij,handleDragEvent:jj,handleUpEvent:kj});this.c=a.condition?a.condition:Si;this.a=void 0;this.j=void 0!==a.duration?a.duration:250}y(hj,aj);function jj(a){if(Zi(a)){var c=a.map,d=c.$a();a=a.pixel;d=Math.atan2(d[1]/2-a[1],a[0]-d[0]/2);if(void 0!==this.a){a=d-this.a;var e=c.aa(),f=e.Ka();c.render();Ni(c,e,f-a)}this.a=d}}
-function kj(a){if(!Zi(a))return!0;a=a.map;var c=a.aa();he(c,-1);var d=c.Ka(),e=this.j,d=c.constrainRotation(d,0);Ni(a,c,d,void 0,e);return!1}function ij(a){return Zi(a)&&Ti(a)&&this.c(a)?(a=a.map,he(a.aa(),1),a.render(),this.a=void 0,!0):!1}hj.prototype.Bc=Bc;function lj(a){this.f=null;this.a=document.createElement("div");this.a.style.position="absolute";this.a.className="ol-box "+a;this.g=this.c=this.b=null}y(lj,eb);lj.prototype.fa=function(){this.setMap(null)};function mj(a){var c=a.c,d=a.g;a=a.a.style;a.left=Math.min(c[0],d[0])+"px";a.top=Math.min(c[1],d[1])+"px";a.width=Math.abs(d[0]-c[0])+"px";a.height=Math.abs(d[1]-c[1])+"px"}
-lj.prototype.setMap=function(a){if(this.b){this.b.B.removeChild(this.a);var c=this.a.style;c.left=c.top=c.width=c.height="inherit"}(this.b=a)&&this.b.B.appendChild(this.a)};function nj(a){var c=a.c,d=a.g,c=[c,[c[0],d[1]],d,[d[0],c[1]]].map(a.b.Ma,a.b);c[4]=c[0].slice();a.f?a.f.ma([c]):a.f=new F([c])}lj.prototype.W=function(){return this.f};function oj(a,c,d){gb.call(this,a);this.coordinate=c;this.mapBrowserEvent=d}y(oj,gb);function pj(a){aj.call(this,{handleDownEvent:qj,handleDragEvent:rj,handleUpEvent:sj});a=a?a:{};this.a=new lj(a.className||"ol-dragbox");this.c=null;this.N=a.condition?a.condition:Ac;this.B=a.boxEndCondition?a.boxEndCondition:tj}y(pj,aj);function tj(a,c,d){a=d[0]-c[0];c=d[1]-c[1];return 64<=a*a+c*c}
-function rj(a){if(Zi(a)){var c=this.a,d=a.pixel;c.c=this.c;c.g=d;nj(c);mj(c);this.b(new oj("boxdrag",a.coordinate,a))}}pj.prototype.W=function(){return this.a.W()};pj.prototype.s=pa;function sj(a){if(!Zi(a))return!0;this.a.setMap(null);this.B(a,this.c,a.pixel)&&(this.s(a),this.b(new oj("boxend",a.coordinate,a)));return!1}
-function qj(a){if(Zi(a)&&Ti(a)&&this.N(a)){this.c=a.pixel;this.a.setMap(a.map);var c=this.a,d=this.c;c.c=this.c;c.g=d;nj(c);mj(c);this.b(new oj("boxstart",a.coordinate,a));return!0}return!1};function uj(a){a=a?a:{};var c=a.condition?a.condition:Xi;this.j=void 0!==a.duration?a.duration:200;this.R=void 0!==a.out?a.out:!1;pj.call(this,{condition:c,className:a.className||"ol-dragzoom"})}y(uj,pj);
-uj.prototype.s=function(){var a=this.v,c=a.aa(),d=a.$a(),e=this.W().O();if(this.R){var f=c.Fc(d),e=[a.Da(lc(e)),a.Da(nc(e))],g=ec(Infinity,Infinity,-Infinity,-Infinity,void 0),h,k;h=0;for(k=e.length;h<k;++h)Xb(g,e[h]);yc(f,1/de(g,d));e=f}d=c.constrainResolution(de(e,d));f=c.$();g=c.bb();a.Va(pe({resolution:f,duration:this.j,easing:je}));a.Va(ne({source:g,duration:this.j,easing:je}));c.jb(tc(e));c.Qb(d)};function vj(a){Mi.call(this,{handleEvent:wj});a=a||{};this.a=function(a){return Wi(a)&&Yi(a)};this.c=void 0!==a.condition?a.condition:this.a;this.o=void 0!==a.duration?a.duration:100;this.j=void 0!==a.pixelDelta?a.pixelDelta:128}y(vj,Mi);
-function wj(a){var c=!1;if("keydown"==a.type){var d=a.originalEvent.keyCode;if(this.c(a)&&(40==d||37==d||39==d||38==d)){var e=a.map,c=e.aa(),f=c.$()*this.j,g=0,h=0;40==d?h=-f:37==d?g=-f:39==d?g=f:h=f;d=[g,h];Rb(d,c.Ka());f=this.o;if(g=c.bb())f&&0<f&&e.Va(ne({source:g,duration:f,easing:le})),e=c.Kd([g[0]+d[0],g[1]+d[1]]),c.jb(e);a.preventDefault();c=!0}}return!c};function xj(a){Mi.call(this,{handleEvent:yj});a=a?a:{};this.c=a.condition?a.condition:Yi;this.a=a.delta?a.delta:1;this.o=void 0!==a.duration?a.duration:100}y(xj,Mi);function yj(a){var c=!1;if("keydown"==a.type||"keypress"==a.type){var d=a.originalEvent.charCode;if(this.c(a)&&(43==d||45==d)){c=a.map;d=43==d?this.a:-this.a;c.render();var e=c.aa();Oi(c,e,d,void 0,this.o);a.preventDefault();c=!0}}return!c};function zj(a){Mi.call(this,{handleEvent:Aj});a=a||{};this.c=0;this.M=void 0!==a.duration?a.duration:250;this.s=void 0!==a.useAnchor?a.useAnchor:!0;this.a=null;this.j=this.o=void 0}y(zj,Mi);
-function Aj(a){var c=!1;if("wheel"==a.type||"mousewheel"==a.type){var c=a.map,d=a.originalEvent;this.s&&(this.a=a.coordinate);var e;"wheel"==a.type?(e=d.deltaY,Vg&&d.deltaMode===qa.WheelEvent.DOM_DELTA_PIXEL&&(e/=Yg),d.deltaMode===qa.WheelEvent.DOM_DELTA_LINE&&(e*=40)):"mousewheel"==a.type&&(e=-d.wheelDeltaY,Wg&&(e/=3));this.c+=e;void 0===this.o&&(this.o=Date.now());e=Math.max(80-(Date.now()-this.o),0);qa.clearTimeout(this.j);this.j=qa.setTimeout(this.B.bind(this,c),e);a.preventDefault();c=!0}return!c}
-zj.prototype.B=function(a){var c=Da(this.c,-1,1),d=a.aa();a.render();Oi(a,d,-c,this.a,this.M);this.c=0;this.a=null;this.j=this.o=void 0};zj.prototype.N=function(a){this.s=a;a||(this.a=null)};function Bj(a){aj.call(this,{handleDownEvent:Cj,handleDragEvent:Dj,handleUpEvent:Ej});a=a||{};this.c=null;this.j=void 0;this.a=!1;this.s=0;this.N=void 0!==a.threshold?a.threshold:.3;this.B=void 0!==a.duration?a.duration:250}y(Bj,aj);
-function Dj(a){var c=0,d=this.o[0],e=this.o[1],d=Math.atan2(e.clientY-d.clientY,e.clientX-d.clientX);void 0!==this.j&&(c=d-this.j,this.s+=c,!this.a&&Math.abs(this.s)>this.N&&(this.a=!0));this.j=d;a=a.map;d=a.a.getBoundingClientRect();e=cj(this.o);e[0]-=d.left;e[1]-=d.top;this.c=a.Ma(e);this.a&&(d=a.aa(),e=d.Ka(),a.render(),Ni(a,d,e+c,this.c))}
-function Ej(a){if(2>this.o.length){a=a.map;var c=a.aa();he(c,-1);if(this.a){var d=c.Ka(),e=this.c,f=this.B,d=c.constrainRotation(d,0);Ni(a,c,d,e,f)}return!1}return!0}function Cj(a){return 2<=this.o.length?(a=a.map,this.c=null,this.j=void 0,this.a=!1,this.s=0,this.M||he(a.aa(),1),a.render(),!0):!1}Bj.prototype.Bc=Bc;function Fj(a){aj.call(this,{handleDownEvent:Gj,handleDragEvent:Hj,handleUpEvent:Ij});a=a?a:{};this.c=null;this.s=void 0!==a.duration?a.duration:400;this.a=void 0;this.j=1}y(Fj,aj);function Hj(a){var c=1,d=this.o[0],e=this.o[1],f=d.clientX-e.clientX,d=d.clientY-e.clientY,f=Math.sqrt(f*f+d*d);void 0!==this.a&&(c=this.a/f);this.a=f;1!=c&&(this.j=c);a=a.map;var f=a.aa(),d=f.$(),e=a.a.getBoundingClientRect(),g=cj(this.o);g[0]-=e.left;g[1]-=e.top;this.c=a.Ma(g);a.render();Pi(a,f,d*c,this.c)}
-function Ij(a){if(2>this.o.length){a=a.map;var c=a.aa();he(c,-1);var d=c.$(),e=this.c,f=this.s,d=c.constrainResolution(d,0,this.j-1);Pi(a,c,d,e,f);return!1}return!0}function Gj(a){return 2<=this.o.length?(a=a.map,this.c=null,this.a=void 0,this.j=1,this.M||he(a.aa(),1),a.render(),!0):!1}Fj.prototype.Bc=Bc;function Jj(a){a=a?a:{};var c=new we,d=new Ki(-.005,.05,100);(void 0!==a.altShiftDragRotate?a.altShiftDragRotate:1)&&c.push(new hj);(void 0!==a.doubleClickZoom?a.doubleClickZoom:1)&&c.push(new Qi({delta:a.zoomDelta,duration:a.zoomDuration}));(void 0!==a.dragPan?a.dragPan:1)&&c.push(new dj({kinetic:d}));(void 0!==a.pinchRotate?a.pinchRotate:1)&&c.push(new Bj);(void 0!==a.pinchZoom?a.pinchZoom:1)&&c.push(new Fj({duration:a.zoomDuration}));if(void 0!==a.keyboard?a.keyboard:1)c.push(new vj),c.push(new xj({delta:a.zoomDelta,
-duration:a.zoomDuration}));(void 0!==a.mouseWheelZoom?a.mouseWheelZoom:1)&&c.push(new zj({duration:a.zoomDuration}));(void 0!==a.shiftDragZoom?a.shiftDragZoom:1)&&c.push(new uj({duration:a.zoomDuration}));return c};function Kj(a){var c=a||{};a=Pa({},c);delete a.layers;c=c.layers;$h.call(this,a);this.f=[];this.a={};C(this,rb("layers"),this.Pk,this);c?Array.isArray(c)&&(c=new we(c.slice())):c=new we;this.jh(c)}y(Kj,$h);l=Kj.prototype;l.Xd=function(){this.wb()&&this.u()};
-l.Pk=function(){this.f.forEach(Xa);this.f.length=0;var a=this.Oc();this.f.push(C(a,"add",this.Ok,this),C(a,"remove",this.Qk,this));for(var c in this.a)this.a[c].forEach(Xa);Qa(this.a);var a=a.a,d,e;c=0;for(d=a.length;c<d;c++)e=a[c],this.a[w(e).toString()]=[C(e,"propertychange",this.Xd,this),C(e,"change",this.Xd,this)];this.u()};l.Ok=function(a){a=a.element;var c=w(a).toString();this.a[c]=[C(a,"propertychange",this.Xd,this),C(a,"change",this.Xd,this)];this.u()};
-l.Qk=function(a){a=w(a.element).toString();this.a[a].forEach(Xa);delete this.a[a];this.u()};l.Oc=function(){return this.get("layers")};l.jh=function(a){this.set("layers",a)};
-l.df=function(a){var c=void 0!==a?a:[],d=c.length;this.Oc().forEach(function(a){a.df(c)});a=ai(this);var e,f;for(e=c.length;d<e;d++)f=c[d],f.opacity*=a.opacity,f.visible=f.visible&&a.visible,f.maxResolution=Math.min(f.maxResolution,a.maxResolution),f.minResolution=Math.max(f.minResolution,a.minResolution),void 0!==a.extent&&(f.extent=void 0!==f.extent?vc(f.extent,a.extent):a.extent);return c};l.ff=function(){return"ready"};function Lj(a){Fc.call(this,{code:a,units:"m",extent:Mj,global:!0,worldExtent:Nj})}y(Lj,Fc);Lj.prototype.getPointResolution=function(a,c){return a/Ea(c[1]/6378137)};var Oj=6378137*Math.PI,Mj=[-Oj,-Oj,Oj,Oj],Nj=[-180,-85,180,85],Sc="EPSG:3857 EPSG:102100 EPSG:102113 EPSG:900913 urn:ogc:def:crs:EPSG:6.18:3:3857 urn:ogc:def:crs:EPSG::3857 http://www.opengis.net/gml/srs/epsg.xml#3857".split(" ").map(function(a){return new Lj(a)});
-function Tc(a,c,d){var e=a.length;d=1<d?d:2;void 0===c&&(2<d?c=a.slice():c=Array(e));for(var f=0;f<e;f+=d)c[f]=6378137*Math.PI*a[f]/180,c[f+1]=6378137*Math.log(Math.tan(Math.PI*(a[f+1]+90)/360));return c}function Uc(a,c,d){var e=a.length;d=1<d?d:2;void 0===c&&(2<d?c=a.slice():c=Array(e));for(var f=0;f<e;f+=d)c[f]=180*a[f]/(6378137*Math.PI),c[f+1]=360*Math.atan(Math.exp(a[f+1]/6378137))/Math.PI-90;return c};var Pj=new Cc(6378137);function Qj(a,c){Fc.call(this,{code:a,units:"degrees",extent:Rj,axisOrientation:c,global:!0,metersPerUnit:Sj,worldExtent:Rj})}y(Qj,Fc);Qj.prototype.getPointResolution=function(a){return a};
-var Rj=[-180,-90,180,90],Sj=Math.PI*Pj.radius/180,Vc=[new Qj("CRS:84"),new Qj("EPSG:4326","neu"),new Qj("urn:ogc:def:crs:EPSG::4326","neu"),new Qj("urn:ogc:def:crs:EPSG:6.6:4326","neu"),new Qj("urn:ogc:def:crs:OGC:1.3:CRS84"),new Qj("urn:ogc:def:crs:OGC:2:84"),new Qj("http://www.opengis.net/gml/srs/epsg.xml#4326","neu"),new Qj("urn:x-ogc:def:crs:EPSG:4326","neu")];function Tj(){Jc(Sc);Jc(Vc);Rc()};function Uj(a){di.call(this,a?a:{})}y(Uj,di);function Vj(a){a=a?a:{};var c=Pa({},a);delete c.preload;delete c.useInterimTilesOnError;di.call(this,c);this.l(void 0!==a.preload?a.preload:0);this.B(void 0!==a.useInterimTilesOnError?a.useInterimTilesOnError:!0)}y(Vj,di);Vj.prototype.f=function(){return this.get("preload")};Vj.prototype.l=function(a){this.set("preload",a)};Vj.prototype.c=function(){return this.get("useInterimTilesOnError")};Vj.prototype.B=function(a){this.set("useInterimTilesOnError",a)};var Wj=[0,0,0,1],Xj=[],Yj=[0,0,0,1];function Zj(a,c,d,e){0!==c&&(a.translate(d,e),a.rotate(c),a.translate(-d,-e))};function ak(a){a=a||{};this.b=void 0!==a.color?a.color:null;this.a=void 0}ak.prototype.g=function(){return this.b};ak.prototype.f=function(a){this.b=a;this.a=void 0};function bk(a){void 0===a.a&&(a.a=a.b instanceof CanvasPattern||a.b instanceof CanvasGradient?w(a.b).toString():"f"+(a.b?He(a.b):"-"));return a.a};function ck(){this.a=-1};function dk(){this.a=-1;this.a=64;this.b=Array(4);this.c=Array(this.a);this.f=this.g=0;this.b[0]=1732584193;this.b[1]=4023233417;this.b[2]=2562383102;this.b[3]=271733878;this.f=this.g=0}y(dk,ck);
-function ek(a,c,d){d||(d=0);var e=Array(16);if(ea(c))for(var f=0;16>f;++f)e[f]=c.charCodeAt(d++)|c.charCodeAt(d++)<<8|c.charCodeAt(d++)<<16|c.charCodeAt(d++)<<24;else for(f=0;16>f;++f)e[f]=c[d++]|c[d++]<<8|c[d++]<<16|c[d++]<<24;c=a.b[0];d=a.b[1];var f=a.b[2],g=a.b[3],h=0,h=c+(g^d&(f^g))+e[0]+3614090360&4294967295;c=d+(h<<7&4294967295|h>>>25);h=g+(f^c&(d^f))+e[1]+3905402710&4294967295;g=c+(h<<12&4294967295|h>>>20);h=f+(d^g&(c^d))+e[2]+606105819&4294967295;f=g+(h<<17&4294967295|h>>>15);h=d+(c^f&(g^
-c))+e[3]+3250441966&4294967295;d=f+(h<<22&4294967295|h>>>10);h=c+(g^d&(f^g))+e[4]+4118548399&4294967295;c=d+(h<<7&4294967295|h>>>25);h=g+(f^c&(d^f))+e[5]+1200080426&4294967295;g=c+(h<<12&4294967295|h>>>20);h=f+(d^g&(c^d))+e[6]+2821735955&4294967295;f=g+(h<<17&4294967295|h>>>15);h=d+(c^f&(g^c))+e[7]+4249261313&4294967295;d=f+(h<<22&4294967295|h>>>10);h=c+(g^d&(f^g))+e[8]+1770035416&4294967295;c=d+(h<<7&4294967295|h>>>25);h=g+(f^c&(d^f))+e[9]+2336552879&4294967295;g=c+(h<<12&4294967295|h>>>20);h=f+
-(d^g&(c^d))+e[10]+4294925233&4294967295;f=g+(h<<17&4294967295|h>>>15);h=d+(c^f&(g^c))+e[11]+2304563134&4294967295;d=f+(h<<22&4294967295|h>>>10);h=c+(g^d&(f^g))+e[12]+1804603682&4294967295;c=d+(h<<7&4294967295|h>>>25);h=g+(f^c&(d^f))+e[13]+4254626195&4294967295;g=c+(h<<12&4294967295|h>>>20);h=f+(d^g&(c^d))+e[14]+2792965006&4294967295;f=g+(h<<17&4294967295|h>>>15);h=d+(c^f&(g^c))+e[15]+1236535329&4294967295;d=f+(h<<22&4294967295|h>>>10);h=c+(f^g&(d^f))+e[1]+4129170786&4294967295;c=d+(h<<5&4294967295|
-h>>>27);h=g+(d^f&(c^d))+e[6]+3225465664&4294967295;g=c+(h<<9&4294967295|h>>>23);h=f+(c^d&(g^c))+e[11]+643717713&4294967295;f=g+(h<<14&4294967295|h>>>18);h=d+(g^c&(f^g))+e[0]+3921069994&4294967295;d=f+(h<<20&4294967295|h>>>12);h=c+(f^g&(d^f))+e[5]+3593408605&4294967295;c=d+(h<<5&4294967295|h>>>27);h=g+(d^f&(c^d))+e[10]+38016083&4294967295;g=c+(h<<9&4294967295|h>>>23);h=f+(c^d&(g^c))+e[15]+3634488961&4294967295;f=g+(h<<14&4294967295|h>>>18);h=d+(g^c&(f^g))+e[4]+3889429448&4294967295;d=f+(h<<20&4294967295|
-h>>>12);h=c+(f^g&(d^f))+e[9]+568446438&4294967295;c=d+(h<<5&4294967295|h>>>27);h=g+(d^f&(c^d))+e[14]+3275163606&4294967295;g=c+(h<<9&4294967295|h>>>23);h=f+(c^d&(g^c))+e[3]+4107603335&4294967295;f=g+(h<<14&4294967295|h>>>18);h=d+(g^c&(f^g))+e[8]+1163531501&4294967295;d=f+(h<<20&4294967295|h>>>12);h=c+(f^g&(d^f))+e[13]+2850285829&4294967295;c=d+(h<<5&4294967295|h>>>27);h=g+(d^f&(c^d))+e[2]+4243563512&4294967295;g=c+(h<<9&4294967295|h>>>23);h=f+(c^d&(g^c))+e[7]+1735328473&4294967295;f=g+(h<<14&4294967295|
-h>>>18);h=d+(g^c&(f^g))+e[12]+2368359562&4294967295;d=f+(h<<20&4294967295|h>>>12);h=c+(d^f^g)+e[5]+4294588738&4294967295;c=d+(h<<4&4294967295|h>>>28);h=g+(c^d^f)+e[8]+2272392833&4294967295;g=c+(h<<11&4294967295|h>>>21);h=f+(g^c^d)+e[11]+1839030562&4294967295;f=g+(h<<16&4294967295|h>>>16);h=d+(f^g^c)+e[14]+4259657740&4294967295;d=f+(h<<23&4294967295|h>>>9);h=c+(d^f^g)+e[1]+2763975236&4294967295;c=d+(h<<4&4294967295|h>>>28);h=g+(c^d^f)+e[4]+1272893353&4294967295;g=c+(h<<11&4294967295|h>>>21);h=f+(g^
-c^d)+e[7]+4139469664&4294967295;f=g+(h<<16&4294967295|h>>>16);h=d+(f^g^c)+e[10]+3200236656&4294967295;d=f+(h<<23&4294967295|h>>>9);h=c+(d^f^g)+e[13]+681279174&4294967295;c=d+(h<<4&4294967295|h>>>28);h=g+(c^d^f)+e[0]+3936430074&4294967295;g=c+(h<<11&4294967295|h>>>21);h=f+(g^c^d)+e[3]+3572445317&4294967295;f=g+(h<<16&4294967295|h>>>16);h=d+(f^g^c)+e[6]+76029189&4294967295;d=f+(h<<23&4294967295|h>>>9);h=c+(d^f^g)+e[9]+3654602809&4294967295;c=d+(h<<4&4294967295|h>>>28);h=g+(c^d^f)+e[12]+3873151461&4294967295;
-g=c+(h<<11&4294967295|h>>>21);h=f+(g^c^d)+e[15]+530742520&4294967295;f=g+(h<<16&4294967295|h>>>16);h=d+(f^g^c)+e[2]+3299628645&4294967295;d=f+(h<<23&4294967295|h>>>9);h=c+(f^(d|~g))+e[0]+4096336452&4294967295;c=d+(h<<6&4294967295|h>>>26);h=g+(d^(c|~f))+e[7]+1126891415&4294967295;g=c+(h<<10&4294967295|h>>>22);h=f+(c^(g|~d))+e[14]+2878612391&4294967295;f=g+(h<<15&4294967295|h>>>17);h=d+(g^(f|~c))+e[5]+4237533241&4294967295;d=f+(h<<21&4294967295|h>>>11);h=c+(f^(d|~g))+e[12]+1700485571&4294967295;c=d+
-(h<<6&4294967295|h>>>26);h=g+(d^(c|~f))+e[3]+2399980690&4294967295;g=c+(h<<10&4294967295|h>>>22);h=f+(c^(g|~d))+e[10]+4293915773&4294967295;f=g+(h<<15&4294967295|h>>>17);h=d+(g^(f|~c))+e[1]+2240044497&4294967295;d=f+(h<<21&4294967295|h>>>11);h=c+(f^(d|~g))+e[8]+1873313359&4294967295;c=d+(h<<6&4294967295|h>>>26);h=g+(d^(c|~f))+e[15]+4264355552&4294967295;g=c+(h<<10&4294967295|h>>>22);h=f+(c^(g|~d))+e[6]+2734768916&4294967295;f=g+(h<<15&4294967295|h>>>17);h=d+(g^(f|~c))+e[13]+1309151649&4294967295;
-d=f+(h<<21&4294967295|h>>>11);h=c+(f^(d|~g))+e[4]+4149444226&4294967295;c=d+(h<<6&4294967295|h>>>26);h=g+(d^(c|~f))+e[11]+3174756917&4294967295;g=c+(h<<10&4294967295|h>>>22);h=f+(c^(g|~d))+e[2]+718787259&4294967295;f=g+(h<<15&4294967295|h>>>17);h=d+(g^(f|~c))+e[9]+3951481745&4294967295;a.b[0]=a.b[0]+c&4294967295;a.b[1]=a.b[1]+(f+(h<<21&4294967295|h>>>11))&4294967295;a.b[2]=a.b[2]+f&4294967295;a.b[3]=a.b[3]+g&4294967295}
-function fk(a,c){var d;void 0===d&&(d=c.length);for(var e=d-a.a,f=a.c,g=a.g,h=0;h<d;){if(0==g)for(;h<=e;)ek(a,c,h),h+=a.a;if(ea(c))for(;h<d;){if(f[g++]=c.charCodeAt(h++),g==a.a){ek(a,f);g=0;break}}else for(;h<d;)if(f[g++]=c[h++],g==a.a){ek(a,f);g=0;break}}a.g=g;a.f+=d};function gk(a){a=a||{};this.b=void 0!==a.color?a.color:null;this.f=a.lineCap;this.g=void 0!==a.lineDash?a.lineDash:null;this.c=a.lineJoin;this.i=a.miterLimit;this.a=a.width;this.l=void 0}l=gk.prototype;l.En=function(){return this.b};l.$j=function(){return this.f};l.Fn=function(){return this.g};l.ak=function(){return this.c};l.fk=function(){return this.i};l.Gn=function(){return this.a};l.Hn=function(a){this.b=a;this.l=void 0};l.Zo=function(a){this.f=a;this.l=void 0};
-l.In=function(a){this.g=a;this.l=void 0};l.$o=function(a){this.c=a;this.l=void 0};l.ap=function(a){this.i=a;this.l=void 0};l.fp=function(a){this.a=a;this.l=void 0};
-function hk(a){if(void 0===a.l){var c="s"+(a.b?He(a.b):"-")+","+(void 0!==a.f?a.f.toString():"-")+","+(a.g?a.g.toString():"-")+","+(void 0!==a.c?a.c:"-")+","+(void 0!==a.i?a.i.toString():"-")+","+(void 0!==a.a?a.a.toString():"-"),d=new dk;fk(d,c);c=Array((56>d.g?d.a:2*d.a)-d.g);c[0]=128;for(var e=1;e<c.length-8;++e)c[e]=0;for(var f=8*d.f,e=c.length-8;e<c.length;++e)c[e]=f&255,f/=256;fk(d,c);c=Array(16);for(e=f=0;4>e;++e)for(var g=0;32>g;g+=8)c[f++]=d.b[e]>>>g&255;if(8192>=c.length)d=String.fromCharCode.apply(null,
-c);else for(d="",e=0;e<c.length;e+=8192)f=Be(c,e,e+8192),d+=String.fromCharCode.apply(null,f);a.l=d}return a.l};function ik(a){a=a||{};this.l=this.f=this.c=null;this.g=void 0!==a.fill?a.fill:null;this.b=void 0!==a.stroke?a.stroke:null;this.a=a.radius;this.B=[0,0];this.s=this.N=this.o=null;var c=a.atlasManager,d,e=null,f,g=0;this.b&&(f=He(this.b.b),g=this.b.a,void 0===g&&(g=1),e=this.b.g,Zg||(e=null));var h=2*(this.a+g)+1;f={strokeStyle:f,wd:g,size:h,lineDash:e};if(void 0===c)c=Mg(h,h),this.f=c.canvas,d=h=this.f.width,this.Bh(f,c,0,0),this.g?this.l=this.f:(c=Mg(f.size,f.size),this.l=c.canvas,this.Ah(f,c,0,0));
-else{h=Math.round(h);(e=!this.g)&&(d=this.Ah.bind(this,f));var g=this.b?hk(this.b):"-",k=this.g?bk(this.g):"-";this.c&&g==this.c[1]&&k==this.c[2]&&this.a==this.c[3]||(this.c=["c"+g+k+(void 0!==this.a?this.a.toString():"-"),g,k,this.a]);c=c.add(this.c[0],h,h,this.Bh.bind(this,f),d);this.f=c.image;this.B=[c.offsetX,c.offsetY];d=c.image.width;this.l=e?c.Ng:this.f}this.o=[h/2,h/2];this.N=[h,h];this.s=[d,d];ti.call(this,{opacity:1,rotateWithView:!1,rotation:0,scale:1,snapToPixel:void 0!==a.snapToPixel?
-a.snapToPixel:!0})}y(ik,ti);l=ik.prototype;l.Tb=function(){return this.o};l.vn=function(){return this.g};l.ke=function(){return this.l};l.ec=function(){return this.f};l.od=function(){return 2};l.fd=function(){return this.s};l.Fa=function(){return this.B};l.wn=function(){return this.a};l.Bb=function(){return this.N};l.xn=function(){return this.b};l.kf=pa;l.load=pa;l.Tf=pa;
-l.Bh=function(a,c,d,e){c.setTransform(1,0,0,1,0,0);c.translate(d,e);c.beginPath();c.arc(a.size/2,a.size/2,this.a,0,2*Math.PI,!0);this.g&&(c.fillStyle=Je(this.g.b),c.fill());this.b&&(c.strokeStyle=a.strokeStyle,c.lineWidth=a.wd,a.lineDash&&c.setLineDash(a.lineDash),c.stroke());c.closePath()};
-l.Ah=function(a,c,d,e){c.setTransform(1,0,0,1,0,0);c.translate(d,e);c.beginPath();c.arc(a.size/2,a.size/2,this.a,0,2*Math.PI,!0);c.fillStyle=He(Wj);c.fill();this.b&&(c.strokeStyle=a.strokeStyle,c.lineWidth=a.wd,a.lineDash&&c.setLineDash(a.lineDash),c.stroke());c.closePath()};function jk(a){a=a||{};this.i=null;this.g=kk;void 0!==a.geometry&&this.Eh(a.geometry);this.c=void 0!==a.fill?a.fill:null;this.a=void 0!==a.image?a.image:null;this.f=void 0!==a.stroke?a.stroke:null;this.l=void 0!==a.text?a.text:null;this.b=a.zIndex}l=jk.prototype;l.W=function(){return this.i};l.Vj=function(){return this.g};l.Jn=function(){return this.c};l.Kn=function(){return this.a};l.Ln=function(){return this.f};l.Ea=function(){return this.l};l.Mn=function(){return this.b};
-l.Eh=function(a){ga(a)?this.g=a:"string"===typeof a?this.g=function(c){return c.get(a)}:a?void 0!==a&&(this.g=function(){return a}):this.g=kk;this.i=a};l.Nn=function(a){this.b=a};function lk(a){if(!ga(a)){var c;c=Array.isArray(a)?a:[a];a=function(){return c}}return a}var mk=null;function nk(){if(!mk){var a=new ak({color:"rgba(255,255,255,0.4)"}),c=new gk({color:"#3399CC",width:1.25});mk=[new jk({image:new ik({fill:a,stroke:c,radius:5}),fill:a,stroke:c})]}return mk}
-function ok(){var a={},c=[255,255,255,1],d=[0,153,255,1];a.Polygon=[new jk({fill:new ak({color:[255,255,255,.5]})})];a.MultiPolygon=a.Polygon;a.LineString=[new jk({stroke:new gk({color:c,width:5})}),new jk({stroke:new gk({color:d,width:3})})];a.MultiLineString=a.LineString;a.Circle=a.Polygon.concat(a.LineString);a.Point=[new jk({image:new ik({radius:6,fill:new ak({color:d}),stroke:new gk({color:c,width:1.5})}),zIndex:Infinity})];a.MultiPoint=a.Point;a.GeometryCollection=a.Polygon.concat(a.LineString,
-a.Point);return a}function kk(a){return a.W()};function H(a){a=a?a:{};var c=Pa({},a);delete c.style;delete c.renderBuffer;delete c.updateWhileAnimating;delete c.updateWhileInteracting;di.call(this,c);this.a=void 0!==a.renderBuffer?a.renderBuffer:100;this.B=null;this.i=void 0;this.l(a.style);this.S=void 0!==a.updateWhileAnimating?a.updateWhileAnimating:!1;this.T=void 0!==a.updateWhileInteracting?a.updateWhileInteracting:!1}y(H,di);function pk(a){return a.get("renderOrder")}H.prototype.M=function(){return this.B};H.prototype.N=function(){return this.i};
-H.prototype.l=function(a){this.B=void 0!==a?a:nk;this.i=null===a?void 0:lk(this.B);this.u()};function I(a){a=a?a:{};var c=Pa({},a);delete c.preload;delete c.useInterimTilesOnError;H.call(this,c);this.Y(a.preload?a.preload:0);this.ea(a.useInterimTilesOnError?a.useInterimTilesOnError:!0);this.s=a.renderMode||"hybrid"}y(I,H);I.prototype.f=function(){return this.get("preload")};I.prototype.c=function(){return this.get("useInterimTilesOnError")};I.prototype.Y=function(a){this.set("preload",a)};I.prototype.ea=function(a){this.set("useInterimTilesOnError",a)};function qk(a,c,d,e,f){this.f=a;this.B=c;this.c=d;this.N=e;this.Cc=f;this.i=this.b=this.a=this.ea=this.Qa=this.Y=null;this.na=this.wa=this.v=this.ya=this.va=this.R=0;this.Cb=!1;this.l=this.ta=0;this.xa=!1;this.S=0;this.g="";this.j=this.M=this.pb=this.Ra=0;this.T=this.s=this.o=null;this.U=[];this.Db=hd()}y(qk,bi);
-function rk(a,c,d){if(a.i){c=rd(c,0,d,2,a.N,a.U);d=a.f;var e=a.Db,f=d.globalAlpha;1!=a.v&&(d.globalAlpha=f*a.v);var g=a.ta;a.Cb&&(g+=a.Cc);var h,k;h=0;for(k=c.length;h<k;h+=2){var m=c[h]-a.R,n=c[h+1]-a.va;a.xa&&(m=Math.round(m),n=Math.round(n));if(0!==g||1!=a.l){var p=m+a.R,q=n+a.va;hi(e,p,q,a.l,a.l,g,-p,-q);d.setTransform(e[0],e[1],e[4],e[5],e[12],e[13])}d.drawImage(a.i,a.wa,a.na,a.S,a.ya,m,n,a.S,a.ya)}0===g&&1==a.l||d.setTransform(1,0,0,1,0,0);1!=a.v&&(d.globalAlpha=f)}}
-function sk(a,c,d,e){var f=0;if(a.T&&""!==a.g){a.o&&tk(a,a.o);a.s&&uk(a,a.s);var g=a.T,h=a.f,k=a.ea;k?(k.font!=g.font&&(k.font=h.font=g.font),k.textAlign!=g.textAlign&&(k.textAlign=h.textAlign=g.textAlign),k.textBaseline!=g.textBaseline&&(k.textBaseline=h.textBaseline=g.textBaseline)):(h.font=g.font,h.textAlign=g.textAlign,h.textBaseline=g.textBaseline,a.ea={font:g.font,textAlign:g.textAlign,textBaseline:g.textBaseline});c=rd(c,f,d,e,a.N,a.U);for(g=a.f;f<d;f+=e){h=c[f]+a.Ra;k=c[f+1]+a.pb;if(0!==a.M||
-1!=a.j){var m=hi(a.Db,h,k,a.j,a.j,a.M,-h,-k);g.setTransform(m[0],m[1],m[4],m[5],m[12],m[13])}a.s&&g.strokeText(a.g,h,k);a.o&&g.fillText(a.g,h,k)}0===a.M&&1==a.j||g.setTransform(1,0,0,1,0,0)}}function vk(a,c,d,e,f,g){var h=a.f;a=rd(c,d,e,f,a.N,a.U);h.moveTo(a[0],a[1]);c=a.length;g&&(c-=2);for(d=2;d<c;d+=2)h.lineTo(a[d],a[d+1]);g&&h.closePath();return e}function wk(a,c,d,e,f){var g,h;g=0;for(h=e.length;g<h;++g)d=vk(a,c,d,e[g],f,!0);return d}l=qk.prototype;
-l.Md=function(a){if(wc(this.c,a.O())){if(this.a||this.b){this.a&&tk(this,this.a);this.b&&uk(this,this.b);var c;c=this.N;var d=this.U,e=a.ga();c=e?rd(e,0,e.length,a.ua(),c,d):null;d=c[2]-c[0];e=c[3]-c[1];d=Math.sqrt(d*d+e*e);e=this.f;e.beginPath();e.arc(c[0],c[1],d,0,2*Math.PI);this.a&&e.fill();this.b&&e.stroke()}""!==this.g&&sk(this,a.ld(),2,2)}};l.md=function(a){this.Ob(a.c,a.f);this.Pb(a.a);this.Rb(a.Ea())};
-l.nc=function(a){switch(a.X()){case "Point":this.pc(a);break;case "LineString":this.cd(a);break;case "Polygon":this.Ye(a);break;case "MultiPoint":this.oc(a);break;case "MultiLineString":this.We(a);break;case "MultiPolygon":this.Xe(a);break;case "GeometryCollection":this.Ve(a);break;case "Circle":this.Md(a)}};l.Ue=function(a,c){var d=(0,c.g)(a);d&&wc(this.c,d.O())&&(this.md(c),this.nc(d))};l.Ve=function(a){a=a.c;var c,d;c=0;for(d=a.length;c<d;++c)this.nc(a[c])};
-l.pc=function(a){var c=a.ga();a=a.ua();this.i&&rk(this,c,c.length);""!==this.g&&sk(this,c,c.length,a)};l.oc=function(a){var c=a.ga();a=a.ua();this.i&&rk(this,c,c.length);""!==this.g&&sk(this,c,c.length,a)};l.cd=function(a){if(wc(this.c,a.O())){if(this.b){uk(this,this.b);var c=this.f,d=a.ga();c.beginPath();vk(this,d,0,d.length,a.ua(),!1);c.stroke()}""!==this.g&&(a=xk(a),sk(this,a,2,2))}};
-l.We=function(a){var c=a.O();if(wc(this.c,c)){if(this.b){uk(this,this.b);var c=this.f,d=a.ga(),e=0,f=a.zb(),g=a.ua();c.beginPath();var h,k;h=0;for(k=f.length;h<k;++h)e=vk(this,d,e,f[h],g,!1);c.stroke()}""!==this.g&&(a=yk(a),sk(this,a,a.length,2))}};l.Ye=function(a){if(wc(this.c,a.O())){if(this.b||this.a){this.a&&tk(this,this.a);this.b&&uk(this,this.b);var c=this.f;c.beginPath();wk(this,a.Kb(),0,a.zb(),a.ua());this.a&&c.fill();this.b&&c.stroke()}""!==this.g&&(a=Xd(a),sk(this,a,2,2))}};
-l.Xe=function(a){if(wc(this.c,a.O())){if(this.b||this.a){this.a&&tk(this,this.a);this.b&&uk(this,this.b);var c=this.f,d=zk(a),e=0,f=a.i,g=a.ua(),h,k;h=0;for(k=f.length;h<k;++h){var m=f[h];c.beginPath();e=wk(this,d,e,m,g);this.a&&c.fill();this.b&&c.stroke()}}""!==this.g&&(a=Ak(a),sk(this,a,a.length,2))}};function tk(a,c){var d=a.f,e=a.Y;e?e.fillStyle!=c.fillStyle&&(e.fillStyle=d.fillStyle=c.fillStyle):(d.fillStyle=c.fillStyle,a.Y={fillStyle:c.fillStyle})}
-function uk(a,c){var d=a.f,e=a.Qa;e?(e.lineCap!=c.lineCap&&(e.lineCap=d.lineCap=c.lineCap),Zg&&!Ab(e.lineDash,c.lineDash)&&d.setLineDash(e.lineDash=c.lineDash),e.lineJoin!=c.lineJoin&&(e.lineJoin=d.lineJoin=c.lineJoin),e.lineWidth!=c.lineWidth&&(e.lineWidth=d.lineWidth=c.lineWidth),e.miterLimit!=c.miterLimit&&(e.miterLimit=d.miterLimit=c.miterLimit),e.strokeStyle!=c.strokeStyle&&(e.strokeStyle=d.strokeStyle=c.strokeStyle)):(d.lineCap=c.lineCap,Zg&&d.setLineDash(c.lineDash),d.lineJoin=c.lineJoin,d.lineWidth=
-c.lineWidth,d.miterLimit=c.miterLimit,d.strokeStyle=c.strokeStyle,a.Qa={lineCap:c.lineCap,lineDash:c.lineDash,lineJoin:c.lineJoin,lineWidth:c.lineWidth,miterLimit:c.miterLimit,strokeStyle:c.strokeStyle})}
-l.Ob=function(a,c){if(a){var d=a.b;this.a={fillStyle:Je(d?d:Wj)}}else this.a=null;if(c){var d=c.b,e=c.f,f=c.g,g=c.c,h=c.a,k=c.i;this.b={lineCap:void 0!==e?e:"round",lineDash:f?f:Xj,lineJoin:void 0!==g?g:"round",lineWidth:this.B*(void 0!==h?h:1),miterLimit:void 0!==k?k:10,strokeStyle:He(d?d:Yj)}}else this.b=null};
-l.Pb=function(a){if(a){var c=a.Tb(),d=a.ec(1),e=a.Fa(),f=a.Bb();this.R=c[0];this.va=c[1];this.ya=f[1];this.i=d;this.v=a.v;this.wa=e[0];this.na=e[1];this.Cb=a.U;this.ta=a.j;this.l=a.i;this.xa=a.M;this.S=f[0]}else this.i=null};
-l.Rb=function(a){if(a){var c=a.b;c?(c=c.b,this.o={fillStyle:Je(c?c:Wj)}):this.o=null;var d=a.l;if(d){var c=d.b,e=d.f,f=d.g,g=d.c,h=d.a,d=d.i;this.s={lineCap:void 0!==e?e:"round",lineDash:f?f:Xj,lineJoin:void 0!==g?g:"round",lineWidth:void 0!==h?h:1,miterLimit:void 0!==d?d:10,strokeStyle:He(c?c:Yj)}}else this.s=null;var c=a.g,e=a.f,f=a.c,g=a.i,h=a.a,d=a.Ea(),k=a.o;a=a.j;this.T={font:void 0!==c?c:"10px sans-serif",textAlign:void 0!==k?k:"center",textBaseline:void 0!==a?a:"middle"};this.g=void 0!==d?
-d:"";this.Ra=void 0!==e?this.B*e:0;this.pb=void 0!==f?this.B*f:0;this.M=void 0!==g?g:0;this.j=this.B*(void 0!==h?h:1)}else this.g=""};function Bk(a){ki.call(this,a);this.R=hd()}y(Bk,ki);
-Bk.prototype.i=function(a,c,d){Ck(this,"precompose",d,a,void 0);var e=this.f?this.f.a():null;if(e){var f=c.extent,g=void 0!==f;if(g){var h=a.pixelRatio,k=a.size[0]*h,m=a.size[1]*h,n=a.viewState.rotation,p=oc(f),q=nc(f),r=mc(f),f=lc(f);ji(a.coordinateToPixelMatrix,p,p);ji(a.coordinateToPixelMatrix,q,q);ji(a.coordinateToPixelMatrix,r,r);ji(a.coordinateToPixelMatrix,f,f);d.save();Zj(d,-n,k/2,m/2);d.beginPath();d.moveTo(p[0]*h,p[1]*h);d.lineTo(q[0]*h,q[1]*h);d.lineTo(r[0]*h,r[1]*h);d.lineTo(f[0]*h,f[1]*
-h);d.clip();Zj(d,n,k/2,m/2)}h=this.s;k=d.globalAlpha;d.globalAlpha=c.opacity;d.drawImage(e,0,0,+e.width,+e.height,Math.round(h[12]),Math.round(h[13]),Math.round(e.width*h[0]),Math.round(e.height*h[5]));d.globalAlpha=k;g&&d.restore()}Dk(this,d,a)};
-function Ck(a,c,d,e,f){var g=a.a;if(lb(g,c)){var h=e.size[0]*e.pixelRatio,k=e.size[1]*e.pixelRatio,m=e.viewState.rotation;Zj(d,-m,h/2,k/2);a=void 0!==f?f:Ek(a,e,0);a=new qk(d,e.pixelRatio,e.extent,a,e.viewState.rotation);g.b(new ci(c,g,a,e,d,null));Zj(d,m,h/2,k/2)}}function Dk(a,c,d,e){Ck(a,"postcompose",c,d,e)}function Ek(a,c,d){var e=c.viewState,f=c.pixelRatio;return hi(a.R,f*c.size[0]/2,f*c.size[1]/2,f/e.resolution,-f/e.resolution,-e.rotation,-e.center[0]+d,-e.center[1])};var Fk=["Polygon","LineString","Image","Text"];function Gk(a,c,d){this.na=a;this.T=c;this.f=null;this.c=0;this.resolution=d;this.ya=this.va=null;this.a=[];this.coordinates=[];this.Qa=hd();this.b=[];this.Y=[];this.ea=hd();this.wa=hd()}y(Gk,bi);
-function Hk(a,c,d,e,f,g){var h=a.coordinates.length,k=a.$e(),m=[c[d],c[d+1]],n=[NaN,NaN],p=!0,q,r,u;for(q=d+f;q<e;q+=f)n[0]=c[q],n[1]=c[q+1],u=dc(k,n),u!==r?(p&&(a.coordinates[h++]=m[0],a.coordinates[h++]=m[1]),a.coordinates[h++]=n[0],a.coordinates[h++]=n[1],p=!1):1===u?(a.coordinates[h++]=n[0],a.coordinates[h++]=n[1],p=!1):p=!0,m[0]=n[0],m[1]=n[1],r=u;q===d+f&&(a.coordinates[h++]=m[0],a.coordinates[h++]=m[1]);g&&(a.coordinates[h++]=c[d],a.coordinates[h++]=c[d+1]);return h}
-function Ik(a,c){a.va=[0,c,0];a.a.push(a.va);a.ya=[0,c,0];a.b.push(a.ya)}
-function Jk(a,c,d,e,f,g,h,k,m){var n;ii(e,a.Qa)?n=a.Y:(n=rd(a.coordinates,0,a.coordinates.length,2,e,a.Y),kd(a.Qa,e));e=!Sa(g);var p=0,q=h.length,r=0,u,v=a.ea;a=a.wa;for(var x,z,E,B;p<q;){var A=h[p],G,O,L,R;switch(A[0]){case 0:r=A[1];e&&g[w(r).toString()]||!r.W()?p=A[2]:void 0===m||wc(m,r.W().O())?++p:p=A[2];break;case 1:c.beginPath();++p;break;case 2:r=A[1];u=n[r];A=n[r+1];E=n[r+2]-u;r=n[r+3]-A;c.arc(u,A,Math.sqrt(E*E+r*r),0,2*Math.PI,!0);++p;break;case 3:c.closePath();++p;break;case 4:r=A[1];u=
-A[2];G=A[3];L=A[4]*d;var Wa=A[5]*d,J=A[6];O=A[7];var ua=A[8],Ta=A[9];E=A[11];B=A[12];var kb=A[13],Ka=A[14];for(A[10]&&(E+=f);r<u;r+=2){A=n[r]-L;R=n[r+1]-Wa;kb&&(A=Math.round(A),R=Math.round(R));if(1!=B||0!==E){var Ia=A+L,xc=R+Wa;hi(v,Ia,xc,B,B,E,-Ia,-xc);c.transform(v[0],v[1],v[4],v[5],v[12],v[13])}Ia=c.globalAlpha;1!=O&&(c.globalAlpha=Ia*O);var xc=Ka+ua>G.width?G.width-ua:Ka,Pc=J+Ta>G.height?G.height-Ta:J;c.drawImage(G,ua,Ta,xc,Pc,A,R,xc*d,Pc*d);1!=O&&(c.globalAlpha=Ia);if(1!=B||0!==E)nd(v,a),c.transform(a[0],
-a[1],a[4],a[5],a[12],a[13])}++p;break;case 5:r=A[1];u=A[2];L=A[3];Wa=A[4]*d;J=A[5]*d;E=A[6];B=A[7]*d;G=A[8];for(O=A[9];r<u;r+=2){A=n[r]+Wa;R=n[r+1]+J;if(1!=B||0!==E)hi(v,A,R,B,B,E,-A,-R),c.transform(v[0],v[1],v[4],v[5],v[12],v[13]);ua=L.split("\n");Ta=ua.length;1<Ta?(kb=Math.round(1.5*c.measureText("M").width),R-=(Ta-1)/2*kb):kb=0;for(Ka=0;Ka<Ta;Ka++)Ia=ua[Ka],O&&c.strokeText(Ia,A,R),G&&c.fillText(Ia,A,R),R+=kb;if(1!=B||0!==E)nd(v,a),c.transform(a[0],a[1],a[4],a[5],a[12],a[13])}++p;break;case 6:if(void 0!==
-k&&(r=A[1],r=k(r)))return r;++p;break;case 7:c.fill();++p;break;case 8:r=A[1];u=A[2];A=n[r];R=n[r+1];E=A+.5|0;B=R+.5|0;if(E!==x||B!==z)c.moveTo(A,R),x=E,z=B;for(r+=2;r<u;r+=2)if(A=n[r],R=n[r+1],E=A+.5|0,B=R+.5|0,E!==x||B!==z)c.lineTo(A,R),x=E,z=B;++p;break;case 9:c.fillStyle=A[1];++p;break;case 10:x=void 0!==A[7]?A[7]:!0;z=A[2];c.strokeStyle=A[1];c.lineWidth=x?z*d:z;c.lineCap=A[3];c.lineJoin=A[4];c.miterLimit=A[5];Zg&&c.setLineDash(A[6]);z=x=NaN;++p;break;case 11:c.font=A[1];c.textAlign=A[2];c.textBaseline=
-A[3];++p;break;case 12:c.stroke();++p;break;default:++p}}}Gk.prototype.Pa=function(a,c,d,e,f){Jk(this,a,c,d,e,f,this.a,void 0)};function Kk(a){var c=a.b;c.reverse();var d,e=c.length,f,g,h=-1;for(d=0;d<e;++d)if(f=c[d],g=f[0],6==g)h=d;else if(0==g){f[2]=d;f=a.b;for(g=d;h<g;){var k=f[h];f[h]=f[g];f[g]=k;++h;--g}h=-1}}function Lk(a,c){a.va[2]=a.a.length;a.va=null;a.ya[2]=a.b.length;a.ya=null;var d=[6,c];a.a.push(d);a.b.push(d)}Gk.prototype.fe=pa;Gk.prototype.$e=function(){return this.T};
-function Mk(a,c,d){Gk.call(this,a,c,d);this.o=this.S=null;this.R=this.N=this.M=this.B=this.U=this.v=this.s=this.j=this.l=this.i=this.g=void 0}y(Mk,Gk);Mk.prototype.pc=function(a,c){if(this.o){Ik(this,c);var d=a.ga(),e=this.coordinates.length,d=Hk(this,d,0,d.length,a.ua(),!1);this.a.push([4,e,d,this.o,this.g,this.i,this.l,this.j,this.s,this.v,this.U,this.B,this.M,this.N,this.R]);this.b.push([4,e,d,this.S,this.g,this.i,this.l,this.j,this.s,this.v,this.U,this.B,this.M,this.N,this.R]);Lk(this,c)}};
-Mk.prototype.oc=function(a,c){if(this.o){Ik(this,c);var d=a.ga(),e=this.coordinates.length,d=Hk(this,d,0,d.length,a.ua(),!1);this.a.push([4,e,d,this.o,this.g,this.i,this.l,this.j,this.s,this.v,this.U,this.B,this.M,this.N,this.R]);this.b.push([4,e,d,this.S,this.g,this.i,this.l,this.j,this.s,this.v,this.U,this.B,this.M,this.N,this.R]);Lk(this,c)}};Mk.prototype.fe=function(){Kk(this);this.i=this.g=void 0;this.o=this.S=null;this.R=this.N=this.B=this.U=this.v=this.s=this.j=this.M=this.l=void 0};
-Mk.prototype.Pb=function(a){var c=a.Tb(),d=a.Bb(),e=a.ke(1),f=a.ec(1),g=a.Fa();this.g=c[0];this.i=c[1];this.S=e;this.o=f;this.l=d[1];this.j=a.v;this.s=g[0];this.v=g[1];this.U=a.U;this.B=a.j;this.M=a.i;this.N=a.M;this.R=d[0]};function Nk(a,c,d){Gk.call(this,a,c,d);this.g={ad:void 0,Wc:void 0,Xc:null,Yc:void 0,Zc:void 0,$c:void 0,jf:0,strokeStyle:void 0,lineCap:void 0,lineDash:null,lineJoin:void 0,lineWidth:void 0,miterLimit:void 0}}y(Nk,Gk);
-function Ok(a,c,d,e,f){var g=a.coordinates.length;c=Hk(a,c,d,e,f,!1);g=[8,g,c];a.a.push(g);a.b.push(g);return e}l=Nk.prototype;l.$e=function(){this.f||(this.f=Zb(this.T),0<this.c&&Yb(this.f,this.resolution*(this.c+1)/2,this.f));return this.f};
-function Pk(a){var c=a.g,d=c.strokeStyle,e=c.lineCap,f=c.lineDash,g=c.lineJoin,h=c.lineWidth,k=c.miterLimit;c.ad==d&&c.Wc==e&&Ab(c.Xc,f)&&c.Yc==g&&c.Zc==h&&c.$c==k||(c.jf!=a.coordinates.length&&(a.a.push([12]),c.jf=a.coordinates.length),a.a.push([10,d,h,e,g,k,f],[1]),c.ad=d,c.Wc=e,c.Xc=f,c.Yc=g,c.Zc=h,c.$c=k)}
-l.cd=function(a,c){var d=this.g,e=d.lineWidth;void 0!==d.strokeStyle&&void 0!==e&&(Pk(this),Ik(this,c),this.b.push([10,d.strokeStyle,d.lineWidth,d.lineCap,d.lineJoin,d.miterLimit,d.lineDash],[1]),d=a.ga(),Ok(this,d,0,d.length,a.ua()),this.b.push([12]),Lk(this,c))};
-l.We=function(a,c){var d=this.g,e=d.lineWidth;if(void 0!==d.strokeStyle&&void 0!==e){Pk(this);Ik(this,c);this.b.push([10,d.strokeStyle,d.lineWidth,d.lineCap,d.lineJoin,d.miterLimit,d.lineDash],[1]);var d=a.zb(),e=a.ga(),f=a.ua(),g=0,h,k;h=0;for(k=d.length;h<k;++h)g=Ok(this,e,g,d[h],f);this.b.push([12]);Lk(this,c)}};l.fe=function(){this.g.jf!=this.coordinates.length&&this.a.push([12]);Kk(this);this.g=null};
-l.Ob=function(a,c){var d=c.b;this.g.strokeStyle=He(d?d:Yj);d=c.f;this.g.lineCap=void 0!==d?d:"round";d=c.g;this.g.lineDash=d?d:Xj;d=c.c;this.g.lineJoin=void 0!==d?d:"round";d=c.a;this.g.lineWidth=void 0!==d?d:1;d=c.i;this.g.miterLimit=void 0!==d?d:10;this.g.lineWidth>this.c&&(this.c=this.g.lineWidth,this.f=null)};
-function Qk(a,c,d){Gk.call(this,a,c,d);this.g={qg:void 0,ad:void 0,Wc:void 0,Xc:null,Yc:void 0,Zc:void 0,$c:void 0,fillStyle:void 0,strokeStyle:void 0,lineCap:void 0,lineDash:null,lineJoin:void 0,lineWidth:void 0,miterLimit:void 0}}y(Qk,Gk);
-function Rk(a,c,d,e,f){var g=a.g,h=[1];a.a.push(h);a.b.push(h);var k,h=0;for(k=e.length;h<k;++h){var m=e[h],n=a.coordinates.length;d=Hk(a,c,d,m,f,!0);d=[8,n,d];n=[3];a.a.push(d,n);a.b.push(d,n);d=m}c=[7];a.b.push(c);void 0!==g.fillStyle&&a.a.push(c);void 0!==g.strokeStyle&&(g=[12],a.a.push(g),a.b.push(g));return d}l=Qk.prototype;
-l.Md=function(a,c){var d=this.g,e=d.strokeStyle;if(void 0!==d.fillStyle||void 0!==e){Sk(this);Ik(this,c);this.b.push([9,He(Wj)]);void 0!==d.strokeStyle&&this.b.push([10,d.strokeStyle,d.lineWidth,d.lineCap,d.lineJoin,d.miterLimit,d.lineDash]);var f=a.ga(),e=this.coordinates.length;Hk(this,f,0,f.length,a.ua(),!1);f=[1];e=[2,e];this.a.push(f,e);this.b.push(f,e);e=[7];this.b.push(e);void 0!==d.fillStyle&&this.a.push(e);void 0!==d.strokeStyle&&(d=[12],this.a.push(d),this.b.push(d));Lk(this,c)}};
-l.Ye=function(a,c){var d=this.g,e=d.strokeStyle;if(void 0!==d.fillStyle||void 0!==e)Sk(this),Ik(this,c),this.b.push([9,He(Wj)]),void 0!==d.strokeStyle&&this.b.push([10,d.strokeStyle,d.lineWidth,d.lineCap,d.lineJoin,d.miterLimit,d.lineDash]),d=a.zb(),e=a.Kb(),Rk(this,e,0,d,a.ua()),Lk(this,c)};
-l.Xe=function(a,c){var d=this.g,e=d.strokeStyle;if(void 0!==d.fillStyle||void 0!==e){Sk(this);Ik(this,c);this.b.push([9,He(Wj)]);void 0!==d.strokeStyle&&this.b.push([10,d.strokeStyle,d.lineWidth,d.lineCap,d.lineJoin,d.miterLimit,d.lineDash]);var d=a.i,e=zk(a),f=a.ua(),g=0,h,k;h=0;for(k=d.length;h<k;++h)g=Rk(this,e,g,d[h],f);Lk(this,c)}};l.fe=function(){Kk(this);this.g=null;var a=this.na;if(0!==a){var c=this.coordinates,d,e;d=0;for(e=c.length;d<e;++d)c[d]=a*Math.round(c[d]/a)}};
-l.$e=function(){this.f||(this.f=Zb(this.T),0<this.c&&Yb(this.f,this.resolution*(this.c+1)/2,this.f));return this.f};
-l.Ob=function(a,c){var d=this.g;if(a){var e=a.b;d.fillStyle=Je(e?e:Wj)}else d.fillStyle=void 0;c?(e=c.b,d.strokeStyle=He(e?e:Yj),e=c.f,d.lineCap=void 0!==e?e:"round",e=c.g,d.lineDash=e?e.slice():Xj,e=c.c,d.lineJoin=void 0!==e?e:"round",e=c.a,d.lineWidth=void 0!==e?e:1,e=c.i,d.miterLimit=void 0!==e?e:10,d.lineWidth>this.c&&(this.c=d.lineWidth,this.f=null)):(d.strokeStyle=void 0,d.lineCap=void 0,d.lineDash=null,d.lineJoin=void 0,d.lineWidth=void 0,d.miterLimit=void 0)};
-function Sk(a){var c=a.g,d=c.fillStyle,e=c.strokeStyle,f=c.lineCap,g=c.lineDash,h=c.lineJoin,k=c.lineWidth,m=c.miterLimit;void 0!==d&&c.qg!=d&&(a.a.push([9,d]),c.qg=c.fillStyle);void 0===e||c.ad==e&&c.Wc==f&&c.Xc==g&&c.Yc==h&&c.Zc==k&&c.$c==m||(a.a.push([10,e,k,f,h,m,g]),c.ad=e,c.Wc=f,c.Xc=g,c.Yc=h,c.Zc=k,c.$c=m)}function Tk(a,c,d){Gk.call(this,a,c,d);this.N=this.M=this.B=null;this.o="";this.U=this.v=this.s=this.j=0;this.l=this.i=this.g=null}y(Tk,Gk);
-function Uk(a,c,d,e,f){if(""!==a.o&&a.l&&(a.g||a.i)){if(a.g){var g=a.g,h=a.B;if(!h||h.fillStyle!=g.fillStyle){var k=[9,g.fillStyle];a.a.push(k);a.b.push(k);h?h.fillStyle=g.fillStyle:a.B={fillStyle:g.fillStyle}}}a.i&&(g=a.i,h=a.M,h&&h.lineCap==g.lineCap&&h.lineDash==g.lineDash&&h.lineJoin==g.lineJoin&&h.lineWidth==g.lineWidth&&h.miterLimit==g.miterLimit&&h.strokeStyle==g.strokeStyle||(k=[10,g.strokeStyle,g.lineWidth,g.lineCap,g.lineJoin,g.miterLimit,g.lineDash,!1],a.a.push(k),a.b.push(k),h?(h.lineCap=
-g.lineCap,h.lineDash=g.lineDash,h.lineJoin=g.lineJoin,h.lineWidth=g.lineWidth,h.miterLimit=g.miterLimit,h.strokeStyle=g.strokeStyle):a.M={lineCap:g.lineCap,lineDash:g.lineDash,lineJoin:g.lineJoin,lineWidth:g.lineWidth,miterLimit:g.miterLimit,strokeStyle:g.strokeStyle}));g=a.l;h=a.N;h&&h.font==g.font&&h.textAlign==g.textAlign&&h.textBaseline==g.textBaseline||(k=[11,g.font,g.textAlign,g.textBaseline],a.a.push(k),a.b.push(k),h?(h.font=g.font,h.textAlign=g.textAlign,h.textBaseline=g.textBaseline):a.N=
-{font:g.font,textAlign:g.textAlign,textBaseline:g.textBaseline});Ik(a,f);g=a.coordinates.length;c=Hk(a,c,0,d,e,!1);c=[5,g,c,a.o,a.j,a.s,a.v,a.U,!!a.g,!!a.i];a.a.push(c);a.b.push(c);Lk(a,f)}}
-Tk.prototype.Rb=function(a){if(a){var c=a.b;c?(c=c.b,c=Je(c?c:Wj),this.g?this.g.fillStyle=c:this.g={fillStyle:c}):this.g=null;var d=a.l;if(d){var c=d.b,e=d.f,f=d.g,g=d.c,h=d.a,d=d.i,e=void 0!==e?e:"round",f=f?f.slice():Xj,g=void 0!==g?g:"round",h=void 0!==h?h:1,d=void 0!==d?d:10,c=He(c?c:Yj);if(this.i){var k=this.i;k.lineCap=e;k.lineDash=f;k.lineJoin=g;k.lineWidth=h;k.miterLimit=d;k.strokeStyle=c}else this.i={lineCap:e,lineDash:f,lineJoin:g,lineWidth:h,miterLimit:d,strokeStyle:c}}else this.i=null;
-var m=a.g,c=a.f,e=a.c,f=a.i,h=a.a,d=a.Ea(),g=a.o,k=a.j;a=void 0!==m?m:"10px sans-serif";g=void 0!==g?g:"center";k=void 0!==k?k:"middle";this.l?(m=this.l,m.font=a,m.textAlign=g,m.textBaseline=k):this.l={font:a,textAlign:g,textBaseline:k};this.o=void 0!==d?d:"";this.j=void 0!==c?c:0;this.s=void 0!==e?e:0;this.v=void 0!==f?f:0;this.U=void 0!==h?h:1}else this.o=""};function Vk(a,c,d,e){this.o=a;this.g=c;this.l=d;this.f=e;this.a={};this.c=Mg(1,1);this.i=hd()}
-function Wk(a){for(var c in a.a){var d=a.a[c],e;for(e in d)d[e].fe()}}Vk.prototype.oa=function(a,c,d,e,f){var g=this.i;hi(g,.5,.5,1/c,-1/c,-d,-a[0],-a[1]);var h=this.c;h.clearRect(0,0,1,1);var k;void 0!==this.f&&(k=Wb(),Xb(k,a),Yb(k,c*this.f,k));return Xk(this,h,g,d,e,function(a){if(0<h.getImageData(0,0,1,1).data[3]){if(a=f(a))return a;h.clearRect(0,0,1,1)}},k)};
-Vk.prototype.b=function(a,c){var d=void 0!==a?a.toString():"0",e=this.a[d];void 0===e&&(e={},this.a[d]=e);d=e[c];void 0===d&&(d=new Yk[c](this.o,this.g,this.l),e[c]=d);return d};Vk.prototype.Sa=function(){return Sa(this.a)};
-Vk.prototype.Pa=function(a,c,d,e,f,g){var h=Object.keys(this.a).map(Number);h.sort(tb);var k=this.g,m=k[0],n=k[1],p=k[2],k=k[3],m=[m,n,m,k,p,k,p,n];rd(m,0,8,2,d,m);a.save();a.beginPath();a.moveTo(m[0],m[1]);a.lineTo(m[2],m[3]);a.lineTo(m[4],m[5]);a.lineTo(m[6],m[7]);a.closePath();a.clip();g=g?g:Fk;for(var q,r,m=0,n=h.length;m<n;++m)for(q=this.a[h[m].toString()],p=0,k=g.length;p<k;++p)r=q[g[p]],void 0!==r&&r.Pa(a,c,d,e,f);a.restore()};
-function Xk(a,c,d,e,f,g,h){var k=Object.keys(a.a).map(Number);k.sort(function(a,c){return c-a});var m,n,p,q,r;m=0;for(n=k.length;m<n;++m)for(q=a.a[k[m].toString()],p=Fk.length-1;0<=p;--p)if(r=q[Fk[p]],void 0!==r&&(r=Jk(r,c,1,d,e,f,r.b,g,h)))return r}var Yk={Image:Mk,LineString:Nk,Polygon:Qk,Text:Tk};function Zk(a,c,d,e){this.g=a;this.b=c;this.c=d;this.f=e}l=Zk.prototype;l.get=function(a){return this.f[a]};l.zb=function(){return this.c};l.O=function(){this.a||(this.a="Point"===this.g?fc(this.b):gc(this.b,0,this.b.length,2));return this.a};l.Kb=function(){return this.b};l.ga=Zk.prototype.Kb;l.W=function(){return this};l.Hm=function(){return this.f};l.hd=Zk.prototype.W;l.ua=function(){return 2};l.$b=pa;l.X=function(){return this.g};function $k(a,c){return w(a)-w(c)}function al(a,c){var d=.5*a/c;return d*d}function bl(a,c,d,e,f,g){var h=!1,k,m;if(k=d.a)m=k.od(),2==m||3==m?k.Tf(f,g):(0==m&&k.load(),k.kf(f,g),h=!0);if(f=(0,d.g)(c))e=f.hd(e),(0,cl[e.X()])(a,e,d,c);return h}
-var cl={Point:function(a,c,d,e){var f=d.a;if(f){if(2!=f.od())return;var g=a.b(d.b,"Image");g.Pb(f);g.pc(c,e)}if(f=d.Ea())a=a.b(d.b,"Text"),a.Rb(f),Uk(a,c.ga(),2,2,e)},LineString:function(a,c,d,e){var f=d.f;if(f){var g=a.b(d.b,"LineString");g.Ob(null,f);g.cd(c,e)}if(f=d.Ea())a=a.b(d.b,"Text"),a.Rb(f),Uk(a,xk(c),2,2,e)},Polygon:function(a,c,d,e){var f=d.c,g=d.f;if(f||g){var h=a.b(d.b,"Polygon");h.Ob(f,g);h.Ye(c,e)}if(f=d.Ea())a=a.b(d.b,"Text"),a.Rb(f),Uk(a,Xd(c),2,2,e)},MultiPoint:function(a,c,d,e){var f=
-d.a;if(f){if(2!=f.od())return;var g=a.b(d.b,"Image");g.Pb(f);g.oc(c,e)}if(f=d.Ea())a=a.b(d.b,"Text"),a.Rb(f),d=c.ga(),Uk(a,d,d.length,c.ua(),e)},MultiLineString:function(a,c,d,e){var f=d.f;if(f){var g=a.b(d.b,"LineString");g.Ob(null,f);g.We(c,e)}if(f=d.Ea())a=a.b(d.b,"Text"),a.Rb(f),c=yk(c),Uk(a,c,c.length,2,e)},MultiPolygon:function(a,c,d,e){var f=d.c,g=d.f;if(g||f){var h=a.b(d.b,"Polygon");h.Ob(f,g);h.Xe(c,e)}if(f=d.Ea())a=a.b(d.b,"Text"),a.Rb(f),c=Ak(c),Uk(a,c,c.length,2,e)},GeometryCollection:function(a,
-c,d,e){c=c.c;var f,g;f=0;for(g=c.length;f<g;++f)(0,cl[c[f].X()])(a,c[f],d,e)},Circle:function(a,c,d,e){var f=d.c,g=d.f;if(f||g){var h=a.b(d.b,"Polygon");h.Ob(f,g);h.Md(c,e)}if(f=d.Ea())a=a.b(d.b,"Text"),a.Rb(f),Uk(a,c.ld(),2,2,e)}};function dl(a,c,d,e,f,g){this.c=void 0!==g?g:null;fi.call(this,a,c,d,void 0!==g?0:2,e);this.g=f}y(dl,fi);dl.prototype.i=function(a){this.state=a?3:2;gi(this)};dl.prototype.load=function(){0==this.state&&(this.state=1,gi(this),this.c(this.i.bind(this)))};dl.prototype.a=function(){return this.g};var el,fl=aa.navigator,gl=aa.chrome,hl=-1<fl.userAgent.indexOf("OPR"),il=-1<fl.userAgent.indexOf("Edge");el=!(!fl.userAgent.match("CriOS")&&null!==gl&&void 0!==gl&&"Google Inc."===fl.vendor&&0==hl&&0==il);function jl(a,c,d,e){var f=bd(d,c,a);d=c.getPointResolution(e,d);c=c.Vb();void 0!==c&&(d*=c);c=a.Vb();void 0!==c&&(d/=c);a=a.getPointResolution(d,f)/d;isFinite(a)&&0<a&&(d/=a);return d}function kl(a,c,d,e){a=d-a;c=e-c;var f=Math.sqrt(a*a+c*c);return[Math.round(d+a/f),Math.round(e+c/f)]}
-function ll(a,c,d,e,f,g,h,k,m,n,p){var q=Mg(Math.round(d*a),Math.round(d*c));if(0===m.length)return q.canvas;q.scale(d,d);var r=Wb();m.forEach(function(a){jc(r,a.extent)});var u=Mg(Math.round(d*rc(r)/e),Math.round(d*sc(r)/e)),v=d/e;m.forEach(function(a){u.drawImage(a.image,n,n,a.image.width-2*n,a.image.height-2*n,(a.extent[0]-r[0])*v,-(a.extent[3]-r[3])*v,rc(a.extent)*v,sc(a.extent)*v)});var x=oc(h);k.f.forEach(function(a){var c=a.source,f=a.target,h=c[1][0],k=c[1][1],m=c[2][0],n=c[2][1];a=(f[0][0]-
-x[0])/g;var p=-(f[0][1]-x[1])/g,v=(f[1][0]-x[0])/g,J=-(f[1][1]-x[1])/g,ua=(f[2][0]-x[0])/g,Ta=-(f[2][1]-x[1])/g,f=c[0][0],c=c[0][1],h=h-f,k=k-c,m=m-f,n=n-c;a:{h=[[h,k,0,0,v-a],[m,n,0,0,ua-a],[0,0,h,k,J-p],[0,0,m,n,Ta-p]];k=h.length;for(m=0;m<k;m++){for(var n=m,kb=Math.abs(h[m][m]),Ka=m+1;Ka<k;Ka++){var Ia=Math.abs(h[Ka][m]);Ia>kb&&(kb=Ia,n=Ka)}if(0===kb){h=null;break a}kb=h[n];h[n]=h[m];h[m]=kb;for(n=m+1;n<k;n++)for(kb=-h[n][m]/h[m][m],Ka=m;Ka<k+1;Ka++)h[n][Ka]=m==Ka?0:h[n][Ka]+kb*h[m][Ka]}m=Array(k);
-for(n=k-1;0<=n;n--)for(m[n]=h[n][k]/h[n][n],kb=n-1;0<=kb;kb--)h[kb][k]-=h[kb][n]*m[n];h=m}h&&(q.save(),q.beginPath(),el?(m=(a+v+ua)/3,n=(p+J+Ta)/3,k=kl(m,n,a,p),v=kl(m,n,v,J),ua=kl(m,n,ua,Ta),q.moveTo(k[0],k[1]),q.lineTo(v[0],v[1]),q.lineTo(ua[0],ua[1])):(q.moveTo(a,p),q.lineTo(v,J),q.lineTo(ua,Ta)),q.closePath(),q.clip(),q.transform(h[0],h[2],h[1],h[3],a,p),q.translate(r[0]-f,r[3]-c),q.scale(e/d,-e/d),q.drawImage(u.canvas,0,0),q.restore())});p&&(q.save(),q.strokeStyle="black",q.lineWidth=1,k.f.forEach(function(a){var c=
-a.target;a=(c[0][0]-x[0])/g;var d=-(c[0][1]-x[1])/g,e=(c[1][0]-x[0])/g,f=-(c[1][1]-x[1])/g,h=(c[2][0]-x[0])/g,c=-(c[2][1]-x[1])/g;q.beginPath();q.moveTo(a,d);q.lineTo(e,f);q.lineTo(h,c);q.closePath();q.stroke()}),q.restore());return q.canvas};function ml(a,c,d,e,f){this.g=a;this.c=c;var g={},h=$c(this.c,this.g);this.a=function(a){var c=a[0]+"/"+a[1];g[c]||(g[c]=h(a));return g[c]};this.i=e;this.s=f*f;this.f=[];this.o=!1;this.j=this.g.a&&!!e&&!!this.g.O()&&rc(e)==rc(this.g.O());this.b=this.g.O()?rc(this.g.O()):null;this.l=this.c.O()?rc(this.c.O()):null;a=oc(d);c=nc(d);e=mc(d);d=lc(d);f=this.a(a);var k=this.a(c),m=this.a(e),n=this.a(d);nl(this,a,c,e,d,f,k,m,n,10);if(this.o){var p=Infinity;this.f.forEach(function(a){p=Math.min(p,a.source[0][0],
-a.source[1][0],a.source[2][0])});this.f.forEach(function(a){if(Math.max(a.source[0][0],a.source[1][0],a.source[2][0])-p>this.b/2){var c=[[a.source[0][0],a.source[0][1]],[a.source[1][0],a.source[1][1]],[a.source[2][0],a.source[2][1]]];c[0][0]-p>this.b/2&&(c[0][0]-=this.b);c[1][0]-p>this.b/2&&(c[1][0]-=this.b);c[2][0]-p>this.b/2&&(c[2][0]-=this.b);Math.max(c[0][0],c[1][0],c[2][0])-Math.min(c[0][0],c[1][0],c[2][0])<this.b/2&&(a.source=c)}},this)}g={}}
-function nl(a,c,d,e,f,g,h,k,m,n){var p=Vb([g,h,k,m]),q=a.b?rc(p)/a.b:null,r=a.g.a&&.5<q&&1>q,u=!1;if(0<n){if(a.c.g&&a.l)var v=Vb([c,d,e,f]),u=u|.25<rc(v)/a.l;!r&&a.g.g&&q&&(u|=.25<q)}if(u||!a.i||wc(p,a.i)){if(!(u||isFinite(g[0])&&isFinite(g[1])&&isFinite(h[0])&&isFinite(h[1])&&isFinite(k[0])&&isFinite(k[1])&&isFinite(m[0])&&isFinite(m[1])))if(0<n)u=!0;else return;if(0<n&&(u||(q=a.a([(c[0]+e[0])/2,(c[1]+e[1])/2]),p=r?(Ja(g[0],a.b)+Ja(k[0],a.b))/2-Ja(q[0],a.b):(g[0]+k[0])/2-q[0],q=(g[1]+k[1])/2-q[1],
-u=p*p+q*q>a.s),u)){Math.abs(c[0]-e[0])<=Math.abs(c[1]-e[1])?(r=[(d[0]+e[0])/2,(d[1]+e[1])/2],p=a.a(r),q=[(f[0]+c[0])/2,(f[1]+c[1])/2],u=a.a(q),nl(a,c,d,r,q,g,h,p,u,n-1),nl(a,q,r,e,f,u,p,k,m,n-1)):(r=[(c[0]+d[0])/2,(c[1]+d[1])/2],p=a.a(r),q=[(e[0]+f[0])/2,(e[1]+f[1])/2],u=a.a(q),nl(a,c,r,q,f,g,p,u,m,n-1),nl(a,r,d,e,q,p,h,k,u,n-1));return}if(r){if(!a.j)return;a.o=!0}a.f.push({source:[g,k,m],target:[c,e,f]});a.f.push({source:[g,h,k],target:[c,d,e]})}}
-function pl(a){var c=Wb();a.f.forEach(function(a){a=a.source;Xb(c,a[0]);Xb(c,a[1]);Xb(c,a[2])});return c};function ql(a,c,d,e,f,g){this.v=c;this.s=a.O();var h=c.O(),k=h?vc(d,h):d,h=jl(a,c,tc(k),e);this.o=new ml(a,c,k,this.s,.5*h);this.c=e;this.g=d;a=pl(this.o);this.j=(this.nb=g(a,h,f))?this.nb.f:1;this.vd=this.i=null;f=2;g=[];this.nb&&(f=0,g=this.nb.l);fi.call(this,d,e,this.j,f,g)}y(ql,fi);ql.prototype.fa=function(){1==this.state&&(Xa(this.vd),this.vd=null);ql.ia.fa.call(this)};ql.prototype.a=function(){return this.i};
-ql.prototype.ud=function(){var a=this.nb.V();2==a&&(this.i=ll(rc(this.g)/this.c,sc(this.g)/this.c,this.j,this.nb.$(),0,this.c,this.g,this.o,[{extent:this.nb.O(),image:this.nb.a()}],0));this.state=a;gi(this)};ql.prototype.load=function(){if(0==this.state){this.state=1;gi(this);var a=this.nb.V();2==a||3==a?this.ud():(this.vd=C(this.nb,"change",function(){var a=this.nb.V();if(2==a||3==a)Xa(this.vd),this.vd=null,this.ud()},this),this.nb.load())}};function rl(a){Vf.call(this,{attributions:a.attributions,extent:a.extent,logo:a.logo,projection:a.projection,state:a.state});this.M=void 0!==a.resolutions?a.resolutions:null;this.a=null;this.na=0}y(rl,Vf);function sl(a,c){if(a.M){var d=vb(a.M,c,0);c=a.M[d]}return c}
-rl.prototype.B=function(a,c,d,e){var f=this.f;if(f&&e&&!Zc(f,e)){if(this.a){if(this.na==this.g&&Zc(this.a.v,e)&&this.a.$()==c&&this.a.f==d&&ic(this.a.O(),a))return this.a;fb(this.a);this.a=null}this.a=new ql(f,e,a,c,d,function(a,c,d){return this.Hc(a,c,d,f)}.bind(this));this.na=this.g;return this.a}f&&(e=f);return this.Hc(a,c,d,e)};rl.prototype.o=function(a){a=a.target;switch(a.V()){case 1:this.b(new tl(ul,a));break;case 2:this.b(new tl(vl,a));break;case 3:this.b(new tl(wl,a))}};
-function xl(a,c){a.a().src=c}function tl(a,c){gb.call(this,a);this.image=c}y(tl,gb);var ul="imageloadstart",vl="imageloadend",wl="imageloaderror";function yl(a){rl.call(this,{attributions:a.attributions,logo:a.logo,projection:a.projection,resolutions:a.resolutions,state:a.state});this.ea=a.canvasFunction;this.T=null;this.Y=0;this.ta=void 0!==a.ratio?a.ratio:1.5}y(yl,rl);yl.prototype.Hc=function(a,c,d,e){c=sl(this,c);var f=this.T;if(f&&this.Y==this.g&&f.$()==c&&f.f==d&&cc(f.O(),a))return f;a=a.slice();yc(a,this.ta);(e=this.ea(a,c,d,[rc(a)/c*d,sc(a)/c*d],e))&&(f=new dl(a,c,d,this.l,e));this.T=f;this.Y=this.g;return f};function zl(a){pb.call(this);this.i=void 0;this.a="geometry";this.c=null;this.l=void 0;this.f=null;C(this,rb(this.a),this.Wd,this);void 0!==a&&(a instanceof dd||!a?this.Ta(a):this.C(a))}y(zl,pb);l=zl.prototype;l.clone=function(){var a=new zl(this.L());a.zc(this.a);var c=this.W();c&&a.Ta(c.clone());(c=this.c)&&a.nf(c);return a};l.W=function(){return this.get(this.a)};l.Wa=function(){return this.i};l.Wj=function(){return this.a};l.Fl=function(){return this.c};l.$b=function(){return this.l};l.Gl=function(){this.u()};
-l.Wd=function(){this.f&&(Xa(this.f),this.f=null);var a=this.W();a&&(this.f=C(a,"change",this.Gl,this));this.u()};l.Ta=function(a){this.set(this.a,a)};l.nf=function(a){this.l=(this.c=a)?Al(a):void 0;this.u()};l.hc=function(a){this.i=a;this.u()};l.zc=function(a){cb(this,rb(this.a),this.Wd,this);this.a=a;C(this,rb(this.a),this.Wd,this);this.Wd()};function Al(a){if(!ga(a)){var c;c=Array.isArray(a)?a:[a];a=function(){return c}}return a};function Bl(a,c,d,e,f){Qf.call(this,a,c);this.g=Mg();this.l=e;this.c=null;this.f={bd:!1,Pf:null,Xh:-1,Qf:-1,td:null,oi:[]};this.v=f;this.j=d}y(Bl,Qf);l=Bl.prototype;l.ab=function(){return-1==this.f.Qf?null:this.g.canvas};l.Ql=function(){return this.l};l.gb=function(){return this.j};l.load=function(){0==this.state&&(this.state=1,Rf(this),this.v(this,this.j),this.s(null,NaN,null))};l.bi=function(a){this.c=a;this.state=2;Rf(this)};l.rf=function(a){this.o=a};l.fi=function(a){this.s=a};var Cl=document.implementation.createDocument("","",null);function Dl(a,c){return Cl.createElementNS(a,c)}function El(a,c){return Fl(a,c,[]).join("")}function Fl(a,c,d){if(4==a.nodeType||3==a.nodeType)c?d.push(String(a.nodeValue).replace(/(\r\n|\r|\n)/g,"")):d.push(a.nodeValue);else for(a=a.firstChild;a;a=a.nextSibling)Fl(a,c,d);return d}function Gl(a){return a instanceof Document}function Hl(a){return a instanceof Node}function Il(a){return(new DOMParser).parseFromString(a,"application/xml")}
-function Jl(a,c){return function(d,e){var f=a.call(c,d,e);void 0!==f&&xb(e[e.length-1],f)}}function Kl(a,c){return function(d,e){var f=a.call(void 0!==c?c:this,d,e);void 0!==f&&e[e.length-1].push(f)}}function Ll(a,c){return function(d,e){var f=a.call(void 0!==c?c:this,d,e);void 0!==f&&(e[e.length-1]=f)}}function Ml(a){return function(c,d){var e=a.call(this,c,d);if(void 0!==e){var f=d[d.length-1],g=c.localName,h;g in f?h=f[g]:h=f[g]=[];h.push(e)}}}
-function K(a,c){return function(d,e){var f=a.call(this,d,e);void 0!==f&&(e[e.length-1][void 0!==c?c:d.localName]=f)}}function M(a,c){return function(d,e,f){a.call(void 0!==c?c:this,d,e,f);f[f.length-1].node.appendChild(d)}}function Nl(a){var c,d;return function(e,f,g){if(void 0===c){c={};var h={};h[e.localName]=a;c[e.namespaceURI]=h;d=Ol(e.localName)}Pl(c,d,f,g)}}function Ol(a,c){return function(d,e,f){d=e[e.length-1].node;e=a;void 0===e&&(e=f);f=c;void 0===c&&(f=d.namespaceURI);return Dl(f,e)}}
-var Ql=Ol();function Rl(a,c){for(var d=c.length,e=Array(d),f=0;f<d;++f)e[f]=a[c[f]];return e}function N(a,c,d){d=void 0!==d?d:{};var e,f;e=0;for(f=a.length;e<f;++e)d[a[e]]=c;return d}function Sl(a,c,d,e){for(c=c.firstElementChild;c;c=c.nextElementSibling){var f=a[c.namespaceURI];void 0!==f&&(f=f[c.localName],void 0!==f&&f.call(e,c,d))}}function P(a,c,d,e,f){e.push(a);Sl(c,d,e,f);return e.pop()}
-function Pl(a,c,d,e,f,g){for(var h=(void 0!==f?f:d).length,k,m,n=0;n<h;++n)k=d[n],void 0!==k&&(m=c.call(g,k,e,void 0!==f?f[n]:void 0),void 0!==m&&a[m.namespaceURI][m.localName].call(g,m,k,e))}function Tl(a,c,d,e,f,g,h){f.push(a);Pl(c,d,e,f,g,h);f.pop()};function Ul(a,c,d,e){return function(f,g,h){var k=new XMLHttpRequest;k.open("GET",ga(a)?a(f,g,h):a,!0);"arraybuffer"==c.X()&&(k.responseType="arraybuffer");k.onload=function(){if(200<=k.status&&300>k.status){var a=c.X(),f;"json"==a||"text"==a?f=k.responseText:"xml"==a?(f=k.responseXML)||(f=Il(k.responseText)):"arraybuffer"==a&&(f=k.response);f&&d.call(this,c.Ca(f,{featureProjection:h}),c.Oa(f))}else e.call(this)}.bind(this);k.send()}}
-function Vl(a,c){return Ul(a,c,function(a,c){this.rf(c);this.bi(a)},function(){this.state=3;Rf(this)})}function Wl(a,c){return Ul(a,c,function(a){this.Ec(a)},pa)};function Xl(){return[[-Infinity,-Infinity,Infinity,Infinity]]};var Yl,Zl,$l,am;
-(function(){var a={ha:{}};(function(){function c(a,d){if(!(this instanceof c))return new c(a,d);this.Pe=Math.max(4,a||9);this.dg=Math.max(2,Math.ceil(.4*this.Pe));d&&this.hj(d);this.clear()}function d(a,c){a.bbox=e(a,0,a.children.length,c)}function e(a,c,d,e){for(var g=[Infinity,Infinity,-Infinity,-Infinity],h;c<d;c++)h=a.children[c],f(g,a.Ja?e(h):h.bbox);return g}function f(a,c){a[0]=Math.min(a[0],c[0]);a[1]=Math.min(a[1],c[1]);a[2]=Math.max(a[2],c[2]);a[3]=Math.max(a[3],c[3])}function g(a,c){return a.bbox[0]-
-c.bbox[0]}function h(a,c){return a.bbox[1]-c.bbox[1]}function k(a){return(a[2]-a[0])*(a[3]-a[1])}function m(a){return a[2]-a[0]+(a[3]-a[1])}function n(a,c){return a[0]<=c[0]&&a[1]<=c[1]&&c[2]<=a[2]&&c[3]<=a[3]}function p(a,c){return c[0]<=a[2]&&c[1]<=a[3]&&c[2]>=a[0]&&c[3]>=a[1]}function q(a,c,d,e,f){for(var g=[c,d],h;g.length;)d=g.pop(),c=g.pop(),d-c<=e||(h=c+Math.ceil((d-c)/e/2)*e,r(a,c,d,h,f),g.push(c,h,h,d))}function r(a,c,d,e,f){for(var g,h,k,m,n;d>c;){600<d-c&&(g=d-c+1,h=e-c+1,k=Math.log(g),
-m=.5*Math.exp(2*k/3),n=.5*Math.sqrt(k*m*(g-m)/g)*(0>h-g/2?-1:1),k=Math.max(c,Math.floor(e-h*m/g+n)),h=Math.min(d,Math.floor(e+(g-h)*m/g+n)),r(a,k,h,e,f));g=a[e];h=c;m=d;u(a,c,e);for(0<f(a[d],g)&&u(a,c,d);h<m;){u(a,h,m);h++;for(m--;0>f(a[h],g);)h++;for(;0<f(a[m],g);)m--}0===f(a[c],g)?u(a,c,m):(m++,u(a,m,d));m<=e&&(c=m+1);e<=m&&(d=m-1)}}function u(a,c,d){var e=a[c];a[c]=a[d];a[d]=e}c.prototype={all:function(){return this.Zf(this.data,[])},search:function(a){var c=this.data,d=[],e=this.ib;if(!p(a,c.bbox))return d;
-for(var f=[],g,h,k,m;c;){g=0;for(h=c.children.length;g<h;g++)k=c.children[g],m=c.Ja?e(k):k.bbox,p(a,m)&&(c.Ja?d.push(k):n(a,m)?this.Zf(k,d):f.push(k));c=f.pop()}return d},load:function(a){if(!a||!a.length)return this;if(a.length<this.dg){for(var c=0,d=a.length;c<d;c++)this.za(a[c]);return this}a=this.ag(a.slice(),0,a.length-1,0);this.data.children.length?this.data.height===a.height?this.fg(this.data,a):(this.data.height<a.height&&(c=this.data,this.data=a,a=c),this.cg(a,this.data.height-a.height-1,
-!0)):this.data=a;return this},za:function(a){a&&this.cg(a,this.data.height-1);return this},clear:function(){this.data={children:[],height:1,bbox:[Infinity,Infinity,-Infinity,-Infinity],Ja:!0};return this},remove:function(a){if(!a)return this;for(var c=this.data,d=this.ib(a),e=[],f=[],g,h,k,m;c||e.length;){c||(c=e.pop(),h=e[e.length-1],g=f.pop(),m=!0);if(c.Ja&&(k=c.children.indexOf(a),-1!==k)){c.children.splice(k,1);e.push(c);this.fj(e);break}m||c.Ja||!n(c.bbox,d)?h?(g++,c=h.children[g],m=!1):c=null:
-(e.push(c),f.push(g),g=0,h=c,c=c.children[0])}return this},ib:function(a){return a},Re:function(a,c){return a[0]-c[0]},Se:function(a,c){return a[1]-c[1]},toJSON:function(){return this.data},Zf:function(a,c){for(var d=[];a;)a.Ja?c.push.apply(c,a.children):d.push.apply(d,a.children),a=d.pop();return c},ag:function(a,c,e,f){var g=e-c+1,h=this.Pe,k;if(g<=h)return k={children:a.slice(c,e+1),height:1,bbox:null,Ja:!0},d(k,this.ib),k;f||(f=Math.ceil(Math.log(g)/Math.log(h)),h=Math.ceil(g/Math.pow(h,f-1)));
-k={children:[],height:f,bbox:null,Ja:!1};var g=Math.ceil(g/h),h=g*Math.ceil(Math.sqrt(h)),m,n,p;for(q(a,c,e,h,this.Re);c<=e;c+=h)for(n=Math.min(c+h-1,e),q(a,c,n,g,this.Se),m=c;m<=n;m+=g)p=Math.min(m+g-1,n),k.children.push(this.ag(a,m,p,f-1));d(k,this.ib);return k},ej:function(a,c,d,e){for(var f,g,h,m,n,p,q,r;;){e.push(c);if(c.Ja||e.length-1===d)break;q=r=Infinity;f=0;for(g=c.children.length;f<g;f++)h=c.children[f],n=k(h.bbox),p=h.bbox,p=(Math.max(p[2],a[2])-Math.min(p[0],a[0]))*(Math.max(p[3],a[3])-
-Math.min(p[1],a[1]))-n,p<r?(r=p,q=n<q?n:q,m=h):p===r&&n<q&&(q=n,m=h);c=m||c.children[0]}return c},cg:function(a,c,d){var e=this.ib;d=d?a.bbox:e(a);var e=[],g=this.ej(d,this.data,c,e);g.children.push(a);for(f(g.bbox,d);0<=c;)if(e[c].children.length>this.Pe)this.nj(e,c),c--;else break;this.bj(d,e,c)},nj:function(a,c){var e=a[c],f=e.children.length,g=this.dg;this.cj(e,g,f);f=this.dj(e,g,f);f={children:e.children.splice(f,e.children.length-f),height:e.height,bbox:null,Ja:!1};e.Ja&&(f.Ja=!0);d(e,this.ib);
-d(f,this.ib);c?a[c-1].children.push(f):this.fg(e,f)},fg:function(a,c){this.data={children:[a,c],height:a.height+1,bbox:null,Ja:!1};d(this.data,this.ib)},dj:function(a,c,d){var f,g,h,m,n,p,q;n=p=Infinity;for(f=c;f<=d-c;f++)g=e(a,0,f,this.ib),h=e(a,f,d,this.ib),m=Math.max(0,Math.min(g[2],h[2])-Math.max(g[0],h[0]))*Math.max(0,Math.min(g[3],h[3])-Math.max(g[1],h[1])),g=k(g)+k(h),m<n?(n=m,q=f,p=g<p?g:p):m===n&&g<p&&(p=g,q=f);return q},cj:function(a,c,d){var e=a.Ja?this.Re:g,f=a.Ja?this.Se:h,k=this.$f(a,
-c,d,e);c=this.$f(a,c,d,f);k<c&&a.children.sort(e)},$f:function(a,c,d,g){a.children.sort(g);g=this.ib;var h=e(a,0,c,g),k=e(a,d-c,d,g),n=m(h)+m(k),p,q;for(p=c;p<d-c;p++)q=a.children[p],f(h,a.Ja?g(q):q.bbox),n+=m(h);for(p=d-c-1;p>=c;p--)q=a.children[p],f(k,a.Ja?g(q):q.bbox),n+=m(k);return n},bj:function(a,c,d){for(;0<=d;d--)f(c[d].bbox,a)},fj:function(a){for(var c=a.length-1,e;0<=c;c--)0===a[c].children.length?0<c?(e=a[c-1].children,e.splice(e.indexOf(a[c]),1)):this.clear():d(a[c],this.ib)},hj:function(a){var c=
-["return a"," - b",";"];this.Re=new Function("a","b",c.join(a[0]));this.Se=new Function("a","b",c.join(a[1]));this.ib=new Function("a","return [a"+a.join(", a")+"];")}};"undefined"!==typeof a?a.ha=c:"undefined"!==typeof self?self.b=c:window.b=c})();Yl=a.ha})();function bm(a){this.a=Yl(a);this.b={}}l=bm.prototype;l.za=function(a,c){var d=[a[0],a[1],a[2],a[3],c];this.a.za(d);this.b[w(c)]=d};l.load=function(a,c){for(var d=Array(c.length),e=0,f=c.length;e<f;e++){var g=a[e],h=c[e],g=[g[0],g[1],g[2],g[3],h];d[e]=g;this.b[w(h)]=g}this.a.load(d)};l.remove=function(a){a=w(a);var c=this.b[a];delete this.b[a];return null!==this.a.remove(c)};function cm(a,c,d){var e=w(d);ic(a.b[e].slice(0,4),c)||(a.remove(d),a.za(c,d))}
-function dm(a){return a.a.all().map(function(a){return a[4]})}function em(a,c){return a.a.search(c).map(function(a){return a[4]})}l.forEach=function(a,c){return fm(dm(this),a,c)};function gm(a,c,d,e){return fm(em(a,c),d,e)}function fm(a,c,d){for(var e,f=0,g=a.length;f<g&&!(e=c.call(d,a[f]));f++);return e}l.Sa=function(){return Sa(this.b)};l.clear=function(){this.a.clear();this.b={}};l.O=function(){return this.a.data.bbox};function Q(a){a=a||{};Vf.call(this,{attributions:a.attributions,logo:a.logo,projection:void 0,state:"ready",wrapX:void 0!==a.wrapX?a.wrapX:!0});this.S=pa;this.na=a.format;this.T=a.url;void 0!==a.loader?this.S=a.loader:void 0!==this.T&&(this.S=Wl(this.T,this.na));this.pb=void 0!==a.strategy?a.strategy:Xl;var c=void 0!==a.useSpatialIndex?a.useSpatialIndex:!0;this.a=c?new bm:null;this.Y=new bm;this.i={};this.o={};this.j={};this.s={};this.c=null;var d,e;a.features instanceof we?(d=a.features,e=d.a):Array.isArray(a.features)&&
-(e=a.features);c||void 0!==d||(d=new we(e));void 0!==e&&hm(this,e);void 0!==d&&im(this,d)}y(Q,Vf);l=Q.prototype;l.qb=function(a){var c=w(a).toString();if(jm(this,c,a)){km(this,c,a);var d=a.W();d?(c=d.O(),this.a&&this.a.za(c,a)):this.i[c]=a;this.b(new lm("addfeature",a))}this.u()};function km(a,c,d){a.s[c]=[C(d,"change",a.zh,a),C(d,"propertychange",a.zh,a)]}function jm(a,c,d){var e=!0,f=d.Wa();void 0!==f?f.toString()in a.o?e=!1:a.o[f.toString()]=d:a.j[c]=d;return e}l.Ec=function(a){hm(this,a);this.u()};
-function hm(a,c){var d,e,f,g,h=[],k=[],m=[];e=0;for(f=c.length;e<f;e++)g=c[e],d=w(g).toString(),jm(a,d,g)&&k.push(g);e=0;for(f=k.length;e<f;e++){g=k[e];d=w(g).toString();km(a,d,g);var n=g.W();n?(d=n.O(),h.push(d),m.push(g)):a.i[d]=g}a.a&&a.a.load(h,m);e=0;for(f=k.length;e<f;e++)a.b(new lm("addfeature",k[e]))}
-function im(a,c){var d=!1;C(a,"addfeature",function(a){d||(d=!0,c.push(a.feature),d=!1)});C(a,"removefeature",function(a){d||(d=!0,c.remove(a.feature),d=!1)});C(c,"add",function(a){d||(a=a.element,d=!0,this.qb(a),d=!1)},a);C(c,"remove",function(a){d||(a=a.element,d=!0,this.kb(a),d=!1)},a);a.c=c}
-l.clear=function(a){if(a){for(var c in this.s)this.s[c].forEach(Xa);this.c||(this.s={},this.o={},this.j={})}else if(this.a){this.a.forEach(this.Of,this);for(var d in this.i)this.Of(this.i[d])}this.c&&this.c.clear();this.a&&this.a.clear();this.Y.clear();this.i={};this.b(new lm("clear"));this.u()};l.sg=function(a,c){if(this.a)return this.a.forEach(a,c);if(this.c)return this.c.forEach(a,c)};function mm(a,c,d){a.tb([c[0],c[1],c[0],c[1]],function(a){if(a.W().og(c))return d.call(void 0,a)})}
-l.tb=function(a,c,d){if(this.a)return gm(this.a,a,c,d);if(this.c)return this.c.forEach(c,d)};l.tg=function(a,c,d){return this.tb(a,function(e){if(e.W().Ia(a)&&(e=c.call(d,e)))return e})};l.Ag=function(){return this.c};l.je=function(){var a;this.c?a=this.c.a:this.a&&(a=dm(this.a),Sa(this.i)||xb(a,Ra(this.i)));return a};l.zg=function(a){var c=[];mm(this,a,function(a){c.push(a)});return c};l.af=function(a){return em(this.a,a)};
-l.vg=function(a,c){var d=a[0],e=a[1],f=null,g=[NaN,NaN],h=Infinity,k=[-Infinity,-Infinity,Infinity,Infinity],m=c?c:Ac;gm(this.a,k,function(a){if(m(a)){var c=a.W(),q=h;h=c.rb(d,e,g,h);h<q&&(f=a,a=Math.sqrt(h),k[0]=d-a,k[1]=e-a,k[2]=d+a,k[3]=e+a)}});return f};l.O=function(){return this.a.O()};l.yg=function(a){a=this.o[a.toString()];return void 0!==a?a:null};l.xh=function(){return this.na};l.yh=function(){return this.T};
-l.zh=function(a){a=a.target;var c=w(a).toString(),d=a.W();d?(d=d.O(),c in this.i?(delete this.i[c],this.a&&this.a.za(d,a)):this.a&&cm(this.a,d,a)):c in this.i||(this.a&&this.a.remove(a),this.i[c]=a);d=a.Wa();void 0!==d?(d=d.toString(),c in this.j?(delete this.j[c],this.o[d]=a):this.o[d]!==a&&(nm(this,a),this.o[d]=a)):c in this.j||(nm(this,a),this.j[c]=a);this.u();this.b(new lm("changefeature",a))};l.Sa=function(){return this.a.Sa()&&Sa(this.i)};
-l.Kc=function(a,c,d){var e=this.Y;a=this.pb(a,c);var f,g;f=0;for(g=a.length;f<g;++f){var h=a[f];gm(e,h,function(a){return cc(a.extent,h)})||(this.S.call(this,h,c,d),e.za(h,{extent:h.slice()}))}};l.kb=function(a){var c=w(a).toString();c in this.i?delete this.i[c]:this.a&&this.a.remove(a);this.Of(a);this.u()};l.Of=function(a){var c=w(a).toString();this.s[c].forEach(Xa);delete this.s[c];var d=a.Wa();void 0!==d?delete this.o[d.toString()]:delete this.j[c];this.b(new lm("removefeature",a))};
-function nm(a,c){for(var d in a.o)if(a.o[d]===c){delete a.o[d];break}}function lm(a,c){gb.call(this,a);this.feature=c}y(lm,gb);function om(a){this.c=a.source;this.xa=hd();this.i=Mg();this.j=[0,0];this.v=null;yl.call(this,{attributions:a.attributions,canvasFunction:this.zj.bind(this),logo:a.logo,projection:a.projection,ratio:a.ratio,resolutions:a.resolutions,state:this.c.V()});this.S=null;this.s=void 0;this.sh(a.style);C(this.c,"change",this.Zm,this)}y(om,yl);l=om.prototype;
-l.zj=function(a,c,d,e,f){var g=new Vk(.5*c/d,a,c);this.c.Kc(a,c,f);var h=!1;this.c.tb(a,function(a){var e;if(!(e=h)){var f;(e=a.$b())?f=e.call(a,c):this.s&&(f=this.s(a,c));if(f){var p,q=!1;Array.isArray(f)||(f=[f]);e=0;for(p=f.length;e<p;++e)q=bl(g,a,f[e],al(c,d),this.Ym,this)||q;e=q}else e=!1}h=e},this);Wk(g);if(h)return null;this.j[0]!=e[0]||this.j[1]!=e[1]?(this.i.canvas.width=e[0],this.i.canvas.height=e[1],this.j[0]=e[0],this.j[1]=e[1]):this.i.clearRect(0,0,e[0],e[1]);a=pm(this,tc(a),c,d,e);g.Pa(this.i,
-d,a,0,{});this.v=g;return this.i.canvas};l.oa=function(a,c,d,e,f){if(this.v){var g={};return this.v.oa(a,c,0,e,function(a){var c=w(a).toString();if(!(c in g))return g[c]=!0,f(a)})}};l.Vm=function(){return this.c};l.Wm=function(){return this.S};l.Xm=function(){return this.s};function pm(a,c,d,e,f){return hi(a.xa,f[0]/2,f[1]/2,e/d,-e/d,0,-c[0],-c[1])}l.Ym=function(){this.u()};l.Zm=function(){Xf(this,this.c.V())};l.sh=function(a){this.S=void 0!==a?a:nk;this.s=a?lk(this.S):void 0;this.u()};function qm(a){Bk.call(this,a);this.f=null;this.s=hd();this.o=this.c=null}y(qm,Bk);qm.prototype.oa=function(a,c,d,e){var f=this.a;return f.da().oa(a,c.viewState.resolution,c.viewState.rotation,c.skippedFeatureUids,function(a){return d.call(e,a,f)})};
-qm.prototype.xc=function(a,c,d,e){if(this.f&&this.f.a())if(this.a.da()instanceof om){if(a=a.slice(),ji(c.pixelToCoordinateMatrix,a,a),this.oa(a,c,Ac,this))return d.call(e,this.a)}else if(this.c||(this.c=hd(),nd(this.s,this.c)),c=[0,0],ji(this.c,a,c),this.o||(this.o=Mg(1,1)),this.o.clearRect(0,0,1,1),this.o.drawImage(this.f?this.f.a():null,c[0],c[1],1,1,0,0,1,1),0<this.o.getImageData(0,0,1,1).data[3])return d.call(e,this.a)};
-qm.prototype.l=function(a,c){var d=a.pixelRatio,e=a.viewState,f=e.center,g=e.resolution,h=this.a.da(),k=a.viewHints,m=a.extent;void 0!==c.extent&&(m=vc(m,c.extent));k[0]||k[1]||qc(m)||(e=h.B(m,g,d,e.projection))&&mi(this,e)&&(this.f=e);if(this.f){var e=this.f,k=e.O(),m=e.$(),n=e.f,g=d*m/(g*n);hi(this.s,d*a.size[0]/2,d*a.size[1]/2,g,g,0,n*(k[0]-f[0])/m,n*(f[1]-k[3])/m);this.c=null;oi(a.attributions,e.l);pi(a,h)}return!!this.f};function rm(a){Bk.call(this,a);this.c=Mg();this.o=null;this.j=Wb();this.S=[0,0,0];this.N=hd();this.M=0}y(rm,Bk);rm.prototype.i=function(a,c,d){var e=Ek(this,a,0);Ck(this,"precompose",d,a,e);sm(this,d,a,c);Dk(this,d,a,e)};
-rm.prototype.l=function(a,c){function d(a){a=a.V();return 2==a||4==a||3==a&&!u}var e=a.pixelRatio,f=a.viewState,g=f.projection,h=this.a,k=h.da(),m=k.fb(g),n=gg(m,f.resolution,this.M),p=m.$(n),q=f.center;p==f.resolution?(q=ri(q,p,a.size),f=uc(q,p,f.rotation,a.size)):f=a.extent;void 0!==c.extent&&(f=vc(f,c.extent));if(qc(f))return!1;p=dg(m,f,p);q={};q[n]={};var r=this.Ld(k,g,q),u=h.c(),v=Wb(),x=new qe(0,0,0,0),z,E,B,A;for(B=p.b;B<=p.a;++B)for(A=p.g;A<=p.f;++A)z=k.Wb(n,B,A,e,g),!d(z)&&z.a&&(z=z.a),d(z)?
-q[n][z.ja.toString()]=z:(E=ag(m,z.ja,r,x,v),E||(z=cg(m,z.ja,x,v))&&r(n+1,z));r=Object.keys(q).map(Number);r.sort(tb);var v=[],G,x=0;for(B=r.length;x<B;++x)for(G in z=r[x],A=q[z],A)z=A[G],2==z.V()&&v.push(z);this.o=v;qi(a.usedTiles,k,n,p);si(a,k,m,e,g,f,n,h.f());ni(a,k);pi(a,k);return!0};rm.prototype.xc=function(a,c,d,e){var f=this.c.canvas,g=c.size;f.width=g[0];f.height=g[1];this.i(c,ai(this.a),this.c);if(0<this.c.getImageData(a[0],a[1],1,1).data[3])return d.call(e,this.a)};
-function sm(a,c,d,e){var f=d.pixelRatio,g=d.viewState,h=g.center,k=g.projection,m=g.resolution,g=g.rotation,n=d.size,p=Math.round(f*n[0]/2),q=Math.round(f*n[1]/2),n=f/m,r=a.a,u=r.da(),v=u.Od(k),x=u.fb(k),r=lb(r,"render"),z=c,E,B,A,G;if(g||r)z=a.c,E=z.canvas,G=gg(x,m),A=u.Ud(G,f,k),G=Uf(x.Ha(G)),A=A[0]/G[0],m=c.canvas.width*A,B=c.canvas.height*A,G=Math.round(Math.sqrt(m*m+B*B)),E.width!=G?E.width=E.height=G:z.clearRect(0,0,G,G),E=(G-m)/2/A,B=(G-B)/2/A,n*=A,p=Math.round(A*(p+E)),q=Math.round(A*(q+B));
-m=z.globalAlpha;z.globalAlpha=e.opacity;var O=a.o,L;e=u.ef(k)&&1==e.opacity;e||(O.reverse(),L=[]);for(var R=0,Wa=O.length;R<Wa;++R){var J=O[R],ua=J.ja,Ta=x.Ba(ua,a.j),kb=ua[0],Ka=lc(x.Ba(x.kd(h,kb,a.S))),ua=Math.round(rc(Ta)*n),Ia=Math.round(sc(Ta)*n),xc=Math.round((Ta[0]-Ka[0])*n/ua)*ua+p+Math.round((Ka[0]-h[0])*n),Ta=Math.round((Ka[1]-Ta[3])*n/Ia)*Ia+q+Math.round((h[1]-Ka[1])*n);if(!e){Ka=[xc,Ta,xc+ua,Ta+Ia];z.save();for(var Pc=0,qt=L.length;Pc<qt;++Pc){var Ze=L[Pc];wc(Ka,Ze)&&(z.beginPath(),z.moveTo(Ka[0],
-Ka[1]),z.lineTo(Ka[0],Ka[3]),z.lineTo(Ka[2],Ka[3]),z.lineTo(Ka[2],Ka[1]),z.moveTo(Ze[0],Ze[1]),z.lineTo(Ze[2],Ze[1]),z.lineTo(Ze[2],Ze[3]),z.lineTo(Ze[0],Ze[3]),z.closePath(),z.clip())}L.push(Ka)}kb=u.Ud(kb,f,k);z.drawImage(J.ab(),v,v,kb[0],kb[1],xc,Ta,ua,Ia);e||z.restore()}r&&(f=E-p/A+p,k=B-q/A+q,h=hi(a.N,G/2-f,G/2-k,n,-n,-g,-h[0]+f/n,-h[1]-k/n),Ck(a,"render",z,d,h));(g||r)&&c.drawImage(z.canvas,-Math.round(E),-Math.round(B),G/A,G/A);z.globalAlpha=m};function tm(a){Bk.call(this,a);this.c=!1;this.M=-1;this.B=NaN;this.v=Wb();this.o=this.U=null;this.j=Mg()}y(tm,Bk);
-tm.prototype.i=function(a,c,d){var e=a.extent,f=a.pixelRatio,g=c.Lc?a.skippedFeatureUids:{},h=a.viewState,k=h.projection,h=h.rotation,m=k.O(),n=this.a.da(),p=Ek(this,a,0);Ck(this,"precompose",d,a,p);var q=this.o;if(q&&!q.Sa()){var r;lb(this.a,"render")?(this.j.canvas.width=d.canvas.width,this.j.canvas.height=d.canvas.height,r=this.j):r=d;var u=r.globalAlpha;r.globalAlpha=c.opacity;c=a.size[0]*f;var v=a.size[1]*f;Zj(r,-h,c/2,v/2);q.Pa(r,f,p,h,g);if(n.N&&k.a&&!cc(m,e)){for(var k=e[0],n=rc(m),x=0;k<
-m[0];)--x,p=n*x,p=Ek(this,a,p),q.Pa(r,f,p,h,g),k+=n;x=0;for(k=e[2];k>m[2];)++x,p=n*x,p=Ek(this,a,p),q.Pa(r,f,p,h,g),k-=n;p=Ek(this,a,0)}Zj(r,h,c/2,v/2);r!=d&&(Ck(this,"render",r,a,p),d.drawImage(r.canvas,0,0));r.globalAlpha=u}Dk(this,d,a,p)};tm.prototype.oa=function(a,c,d,e){if(this.o){var f=this.a,g={};return this.o.oa(a,c.viewState.resolution,c.viewState.rotation,{},function(a){var c=w(a).toString();if(!(c in g))return g[c]=!0,d.call(e,a,f)})}};tm.prototype.N=function(){li(this)};
-tm.prototype.l=function(a){function c(a){var c,e=a.$b();e?c=e.call(a,n):(e=d.i)&&(c=e(a,n));if(c){if(c){e=!1;if(Array.isArray(c))for(var f=0,g=c.length;f<g;++f)e=bl(r,a,c[f],al(n,p),this.N,this)||e;else e=bl(r,a,c,al(n,p),this.N,this)||e;a=e}else a=!1;this.c=this.c||a}}var d=this.a,e=d.da();oi(a.attributions,e.l);pi(a,e);var f=a.viewHints[0],g=a.viewHints[1],h=d.S,k=d.T;if(!this.c&&!h&&f||!k&&g)return!0;var m=a.extent,k=a.viewState,f=k.projection,n=k.resolution,p=a.pixelRatio,g=d.g,q=d.a,h=pk(d);
-void 0===h&&(h=$k);m=Yb(m,q*n);q=k.projection.O();e.N&&k.projection.a&&!cc(q,a.extent)&&(a=Math.max(rc(m)/2,rc(q)),m[0]=q[0]-a,m[2]=q[2]+a);if(!this.c&&this.B==n&&this.M==g&&this.U==h&&cc(this.v,m))return!0;this.o=null;this.c=!1;var r=new Vk(.5*n/p,m,n,d.a);e.Kc(m,n,f);if(h){var u=[];e.tb(m,function(a){u.push(a)},this);u.sort(h);u.forEach(c,this)}else e.tb(m,c,this);Wk(r);this.B=n;this.M=g;this.U=h;this.v=m;this.o=r;return!0};function um(a,c){var d=/\{z\}/g,e=/\{x\}/g,f=/\{y\}/g,g=/\{-y\}/g;return function(h){if(h)return a.replace(d,h[0].toString()).replace(e,h[1].toString()).replace(f,function(){return(-h[2]-1).toString()}).replace(g,function(){var a=c.a?c.a[h[0]]:null;return(a.f-a.g+1+h[2]).toString()})}}function vm(a,c){for(var d=a.length,e=Array(d),f=0;f<d;++f)e[f]=um(a[f],c);return wm(e)}function wm(a){return 1===a.length?a[0]:function(c,d,e){if(c)return a[Ja((c[1]<<c[0])+c[2],a.length)](c,d,e)}}function xm(){}
-function ym(a){var c=[],d=/\{(\d)-(\d)\}/.exec(a)||/\{([a-z])-([a-z])\}/.exec(a);if(d){var e=d[2].charCodeAt(0),f;for(f=d[1].charCodeAt(0);f<=e;++f)c.push(a.replace(d[0],String.fromCharCode(f)))}else c.push(a);return c};function zm(a){lg.call(this,{attributions:a.attributions,cacheSize:a.cacheSize,extent:a.extent,logo:a.logo,opaque:a.opaque,projection:a.projection,state:a.state,tileGrid:a.tileGrid,tilePixelRatio:a.tilePixelRatio,wrapX:a.wrapX});this.tileLoadFunction=a.tileLoadFunction;this.tileUrlFunction=this.qc?this.qc.bind(this):xm;this.urls=null;a.urls?this.Ua(a.urls):a.url&&this.Na(a.url);a.tileUrlFunction&&this.La(a.tileUrlFunction)}y(zm,lg);l=zm.prototype;l.Xa=function(){return this.tileLoadFunction};
-l.Ya=function(){return this.tileUrlFunction};l.Za=function(){return this.urls};l.wh=function(a){a=a.target;switch(a.V()){case 1:this.b(new pg("tileloadstart",a));break;case 2:this.b(new pg("tileloadend",a));break;case 3:this.b(new pg("tileloaderror",a))}};l.cb=function(a){this.a.clear();this.tileLoadFunction=a;this.u()};l.La=function(a,c){this.tileUrlFunction=a;"undefined"!==typeof c?ng(this,c):this.u()};
-l.Na=function(a){var c=this.urls=ym(a);this.La(this.qc?this.qc.bind(this):vm(c,this.tileGrid),a)};l.Ua=function(a){this.urls=a;var c=a.join("\n");this.La(this.qc?this.qc.bind(this):vm(a,this.tileGrid),c)};l.Uf=function(a,c,d){a=this.Ab(a,c,d);Lf(this.a,a)&&this.a.get(a)};function Am(a){zm.call(this,{attributions:a.attributions,cacheSize:void 0!==a.cacheSize?a.cacheSize:128,extent:a.extent,logo:a.logo,opaque:!1,projection:a.projection,state:a.state,tileGrid:a.tileGrid,tileLoadFunction:a.tileLoadFunction?a.tileLoadFunction:Bm,tileUrlFunction:a.tileUrlFunction,tilePixelRatio:a.tilePixelRatio,url:a.url,urls:a.urls,wrapX:void 0===a.wrapX?!0:a.wrapX});this.c=a.format?a.format:null;this.tileClass=a.tileClass?a.tileClass:Bl}y(Am,zm);
-Am.prototype.Wb=function(a,c,d,e,f){var g=this.Ab(a,c,d);if(Lf(this.a,g))return this.a.get(g);a=[a,c,d];e=(c=og(this,a,f))?this.tileUrlFunction(c,e,f):void 0;e=new this.tileClass(a,void 0!==e?0:4,void 0!==e?e:"",this.c,this.tileLoadFunction);C(e,"change",this.wh,this);this.a.set(g,e);return e};Am.prototype.Ud=function(a,c){var d=Uf(this.tileGrid.Ha(a));return[d[0]*c,d[1]*c]};function Bm(a,c){a.fi(Vl(c,a.l))};var Cm={image:Fk,hybrid:["Polygon","LineString"]},Dm={hybrid:["Image","Text"],vector:Fk};function Em(a){rm.call(this,a);this.U=!1;this.v=hd();this.M="vector"==a.s?1:0}y(Em,rm);
-Em.prototype.i=function(a,c,d){var e=Ek(this,a,0);Ck(this,"precompose",d,a,e);var f=this.a.s;"vector"!==f&&sm(this,d,a,c);if("image"!==f){var g=this.a,f=Dm[g.s],h=a.pixelRatio,k=c.Lc?a.skippedFeatureUids:{},m=a.viewState,n=m.center,p=m.rotation,q=a.size,m=h/m.resolution,r=g.da(),u=r.Xb(h),v=Ek(this,a,0);lb(g,"render")?(this.c.canvas.width=d.canvas.width,this.c.canvas.height=d.canvas.height,g=this.c):g=d;var x=g.globalAlpha;g.globalAlpha=c.opacity;c=this.o;var r=r.tileGrid,z,E,B,A,G,O,L,R;E=0;for(B=
-c.length;E<B;++E)A=c[E],L=A.f,G=r.Ba(A.ja,this.j),z=A.ja[0],O="tile-pixels"==A.o.vb(),z=r.$(z),R=z/u,z=Math.round(h*q[0]/2),A=Math.round(h*q[1]/2),O?(G=oc(G),G=hi(this.v,z,A,m*R,m*R,p,(G[0]-n[0])/R,(n[1]-G[1])/R)):G=v,Zj(g,-p,z,A),L.td.Pa(g,h,G,p,k,f),Zj(g,p,z,A);g!=d&&(Ck(this,"render",g,a,v),d.drawImage(g.canvas,0,0));g.globalAlpha=x}Dk(this,d,a,e)};
-function Fm(a,c,d){function e(a){var c,d=a.$b();d?c=d.call(a,v):(d=f.i)&&(c=d(a,v));if(c){Array.isArray(c)||(c=[c]);var d=E,e=z;if(c){var g=!1;if(Array.isArray(c))for(var h=0,k=c.length;h<k;++h)g=bl(e,a,c[h],d,this.B,this)||g;else g=bl(e,a,c,d,this.B,this)||g;a=g}else a=!1;this.U=this.U||a;m.bd=m.bd||a}}var f=a.a,g=d.pixelRatio;d=d.viewState.projection;var h=f.g,k=pk(f)||null,m=c.f;if(m.bd||m.Xh!=h||m.Pf!=k){m.td=null;m.bd=!1;var n=f.da(),p=n.tileGrid,q=c.ja,r=c.o,u="tile-pixels"==r.vb(),v=p.$(q[0]),
-x;u?(u=n=n.Xb(g),p=Uf(p.Ha(q[0])),p=[0,0,p[0]*u,p[1]*u]):(n=v,p=p.Ba(q),Zc(d,r)||(x=!0,c.rf(d)));m.bd=!1;var z=new Vk(0,p,n,f.a),E=al(n,g);c=c.c;k&&k!==m.Pf&&c.sort(k);p=0;for(q=c.length;p<q;++p)g=c[p],x&&g.W().hb(r,d),e.call(a,g);Wk(z);m.Xh=h;m.Pf=k;m.td=z;m.resolution=NaN}}
-Em.prototype.oa=function(a,c,d,e){var f=c.pixelRatio,g=c.viewState.resolution;c=c.viewState.rotation;var h=this.a,k={},m=this.o,n=h.da(),p=n.tileGrid,q,r,u,v,x,z;u=0;for(v=m.length;u<v;++u)z=m[u],r=z.ja,x=n.tileGrid.Ba(r,this.j),ac(x,a)&&("tile-pixels"===z.o.vb()?(x=oc(x),g=n.Xb(f),r=p.$(r[0])/g,r=[(a[0]-x[0])/r,(x[1]-a[1])/r]):r=a,z=z.f.td,q=q||z.oa(r,g,c,{},function(a){var c=w(a).toString();if(!(c in k))return k[c]=!0,d.call(e,a,h)}));return q};Em.prototype.B=function(){li(this)};
-Em.prototype.l=function(a,c){var d=Em.ia.l.call(this,a,c);if(d)for(var e=Object.keys(a.ze||{}),f=0,g=this.o.length;f<g;++f){var h=this.o[f];Fm(this,h,a);var k=h,h=a,m=this.a,n=Cm[m.s];if(n){var p=h.pixelRatio,q=k.f,r=m.g;if(!Ab(q.oi,e)||q.Qf!==r){q.oi=e;q.Qf=r;var r=k.g,u=m.da(),v=u.tileGrid,x=k.ja[0],z=v.$(x),m=Uf(v.Ha(x)),x=v.$(x),E=x/z,B=m[0]*p*E,A=m[1]*p*E;r.canvas.width=B/E+.5;r.canvas.height=A/E+.5;r.scale(1/E,1/E);r.translate(B/2,A/2);E="tile-pixels"==k.o.vb();z=p/z;u=u.Xb(p);x/=u;k=v.Ba(k.ja,
-this.j);v=void 0;E?v=hi(this.v,0,0,z*x,z*x,0,-m[0]*u/2,-m[1]*u/2):(k=tc(k),v=hi(this.v,0,0,z,-z,0,-k[0],-k[1]));q.td.Pa(r,p,v,0,h.skippedFeatureUids||{},n)}}}return d};function Gm(a,c){yi.call(this,0,c);this.f=Mg();this.b=this.f.canvas;this.b.style.width="100%";this.b.style.height="100%";this.b.className="ol-unselectable";tf(a,this.b,0);this.a=!0;this.c=hd()}y(Gm,yi);Gm.prototype.Te=function(a){return a instanceof Uj?new qm(a):a instanceof Vj?new rm(a):a instanceof I?new Em(a):a instanceof H?new tm(a):null};
-function Hm(a,c,d){var e=a.i,f=a.f;if(lb(e,c)){var g=d.extent,h=d.pixelRatio,k=d.viewState.rotation,m=d.pixelRatio,n=d.viewState,p=n.resolution;a=hi(a.c,a.b.width/2,a.b.height/2,m/p,-m/p,-n.rotation,-n.center[0],-n.center[1]);g=new qk(f,h,g,a,k);e.b(new ci(c,e,g,d,f,null))}}Gm.prototype.X=function(){return"canvas"};
-Gm.prototype.xe=function(a){if(a){var c=this.f,d=a.pixelRatio,e=Math.round(a.size[0]*d),d=Math.round(a.size[1]*d);this.b.width!=e||this.b.height!=d?(this.b.width=e,this.b.height=d):c.clearRect(0,0,e,d);var f=a.viewState.rotation;zi(a);Hm(this,"precompose",a);var g=a.layerStatesArray;Bb(g);Zj(c,f,e/2,d/2);var h=a.viewState.resolution,k,m,n,p;k=0;for(m=g.length;k<m;++k)p=g[k],n=p.layer,n=Bi(this,n),ei(p,h)&&"ready"==p.R&&n.l(a,p)&&n.i(a,p,c);Zj(c,-f,e/2,d/2);Hm(this,"postcompose",a);this.a||(Cf(this.b,
-!0),this.a=!0);Ci(this,a);a.postRenderFunctions.push(Ai)}else this.a&&(Cf(this.b,!1),this.a=!1)};function Im(a,c){ki.call(this,a);this.target=c}y(Im,ki);Im.prototype.Id=pa;Im.prototype.oh=pa;function Jm(a){var c=document.createElement("DIV");c.style.position="absolute";Im.call(this,a,c);this.f=null;this.c=jd()}y(Jm,Im);Jm.prototype.oa=function(a,c,d,e){var f=this.a;return f.da().oa(a,c.viewState.resolution,c.viewState.rotation,c.skippedFeatureUids,function(a){return d.call(e,a,f)})};Jm.prototype.Id=function(){sf(this.target);this.f=null};
-Jm.prototype.uf=function(a,c){var d=a.viewState,e=d.center,f=d.resolution,g=d.rotation,h=this.f,k=this.a.da(),m=a.viewHints,n=a.extent;void 0!==c.extent&&(n=vc(n,c.extent));m[0]||m[1]||qc(n)||(d=k.B(n,f,a.pixelRatio,d.projection))&&mi(this,d)&&(h=d);h&&(m=h.O(),n=h.$(),d=hd(),hi(d,a.size[0]/2,a.size[1]/2,n/f,n/f,g,(m[0]-e[0])/n,(e[1]-m[3])/n),h!=this.f&&(e=h.a(this),e.style.maxWidth="none",e.style.position="absolute",sf(this.target),this.target.appendChild(e),this.f=h),ii(d,this.c)||(Qg(this.target,
-d),kd(this.c,d)),oi(a.attributions,h.l),pi(a,k));return!0};function Km(a){var c=document.createElement("DIV");c.style.position="absolute";Im.call(this,a,c);this.c=!0;this.l=1;this.i=0;this.f={}}y(Km,Im);Km.prototype.Id=function(){sf(this.target);this.i=0};
-Km.prototype.uf=function(a,c){if(!c.visible)return this.c&&(Cf(this.target,!1),this.c=!1),!0;var d=a.pixelRatio,e=a.viewState,f=e.projection,g=this.a,h=g.da(),k=h.fb(f),m=h.Od(f),n=gg(k,e.resolution),p=k.$(n),q=e.center,r;p==e.resolution?(q=ri(q,p,a.size),r=uc(q,p,e.rotation,a.size)):r=a.extent;void 0!==c.extent&&(r=vc(r,c.extent));var p=dg(k,r,p),u={};u[n]={};var v=this.Ld(h,f,u),x=g.c(),z=Wb(),E=new qe(0,0,0,0),B,A,G,O;for(G=p.b;G<=p.a;++G)for(O=p.g;O<=p.f;++O)B=h.Wb(n,G,O,d,f),A=B.V(),A=2==A||
-4==A||3==A&&!x,!A&&B.a&&(B=B.a),A=B.V(),2==A?u[n][B.ja.toString()]=B:4==A||3==A&&!x||(A=ag(k,B.ja,v,E,z),A||(B=cg(k,B.ja,E,z))&&v(n+1,B));var L;if(this.i!=h.g){for(L in this.f)x=this.f[+L],uf(x.target);this.f={};this.i=h.g}z=Object.keys(u).map(Number);z.sort(tb);var v={},R;G=0;for(O=z.length;G<O;++G){L=z[G];L in this.f?x=this.f[L]:(x=k.kd(q,L),x=new Lm(k,x),v[L]=!0,this.f[L]=x);L=u[L];for(R in L){B=x;A=L[R];var Wa=m,J=A.ja,ua=J[0],Ta=J[1],kb=J[2],J=J.toString();if(!(J in B.a)){var ua=Uf(B.c.Ha(ua),
-B.o),Ka=A.ab(B),Ia=Ka.style;Ia.maxWidth="none";var xc=void 0,Pc=void 0;0<Wa?(xc=document.createElement("DIV"),Pc=xc.style,Pc.overflow="hidden",Pc.width=ua[0]+"px",Pc.height=ua[1]+"px",Ia.position="absolute",Ia.left=-Wa+"px",Ia.top=-Wa+"px",Ia.width=ua[0]+2*Wa+"px",Ia.height=ua[1]+2*Wa+"px",xc.appendChild(Ka)):(Ia.width=ua[0]+"px",Ia.height=ua[1]+"px",xc=Ka,Pc=Ia);Pc.position="absolute";Pc.left=(Ta-B.g[1])*ua[0]+"px";Pc.top=(B.g[2]-kb)*ua[1]+"px";B.b||(B.b=document.createDocumentFragment());B.b.appendChild(xc);
-B.a[J]=A}}x.b&&(x.target.appendChild(x.b),x.b=null)}m=Object.keys(this.f).map(Number);m.sort(tb);G=hd();R=0;for(z=m.length;R<z;++R)if(L=m[R],x=this.f[L],L in u)if(B=x.$(),O=x.Fa(),hi(G,a.size[0]/2,a.size[1]/2,B/e.resolution,B/e.resolution,e.rotation,(O[0]-q[0])/B,(q[1]-O[1])/B),x.setTransform(G),L in v){for(--L;0<=L;--L)if(L in this.f){O=this.f[L].target;O.parentNode&&O.parentNode.insertBefore(x.target,O.nextSibling);break}0>L&&tf(this.target,x.target,0)}else{if(!a.viewHints[0]&&!a.viewHints[1]){A=
-bg(x.c,r,x.g[0],E);L=[];B=O=void 0;for(B in x.a)O=x.a[B],A.contains(O.ja)||L.push(O);Wa=A=void 0;A=0;for(Wa=L.length;A<Wa;++A)O=L[A],B=O.ja.toString(),uf(O.ab(x)),delete x.a[B]}}else uf(x.target),delete this.f[L];c.opacity!=this.l&&(this.l=this.target.style.opacity=c.opacity);c.visible&&!this.c&&(Cf(this.target,!0),this.c=!0);qi(a.usedTiles,h,n,p);si(a,h,k,d,f,r,n,g.f());ni(a,h);pi(a,h);return!0};
-function Lm(a,c){this.target=document.createElement("DIV");this.target.style.position="absolute";this.target.style.width="100%";this.target.style.height="100%";this.c=a;this.g=c;this.i=oc(a.Ba(c));this.l=a.$(c[0]);this.a={};this.b=null;this.f=jd();this.o=[0,0]}Lm.prototype.Fa=function(){return this.i};Lm.prototype.$=function(){return this.l};Lm.prototype.setTransform=function(a){ii(a,this.f)||(Qg(this.target,a),kd(this.f,a))};function Mm(a){this.i=Mg();var c=this.i.canvas;c.style.maxWidth="none";c.style.position="absolute";Im.call(this,a,c);this.f=!1;this.l=-1;this.s=NaN;this.o=Wb();this.c=this.j=null;this.U=hd();this.v=hd()}y(Mm,Im);l=Mm.prototype;l.Id=function(){var a=this.i.canvas;a.width=a.width;this.l=0};
-l.oh=function(a,c){var d=a.viewState,e=d.center,f=d.rotation,g=d.resolution,d=a.pixelRatio,h=a.size[0],k=a.size[1],m=h*d,n=k*d,e=hi(this.U,d*h/2,d*k/2,d/g,-d/g,-f,-e[0],-e[1]),g=this.i;g.canvas.width=m;g.canvas.height=n;h=hi(this.v,0,0,1/d,1/d,0,-(m-h)/2*d,-(n-k)/2*d);Qg(g.canvas,h);Nm(this,"precompose",a,e);(h=this.c)&&!h.Sa()&&(g.globalAlpha=c.opacity,h.Pa(g,d,e,f,c.Lc?a.skippedFeatureUids:{}),Nm(this,"render",a,e));Nm(this,"postcompose",a,e)};
-function Nm(a,c,d,e){var f=a.i;a=a.a;lb(a,c)&&(e=new qk(f,d.pixelRatio,d.extent,e,d.viewState.rotation),a.b(new ci(c,a,e,d,f,null)))}l.oa=function(a,c,d,e){if(this.c){var f=this.a,g={};return this.c.oa(a,c.viewState.resolution,c.viewState.rotation,{},function(a){var c=w(a).toString();if(!(c in g))return g[c]=!0,d.call(e,a,f)})}};l.ph=function(){li(this)};
-l.uf=function(a){function c(a){var c,e=a.$b();e?c=e.call(a,m):(e=d.i)&&(c=e(a,m));if(c){if(c){e=!1;if(Array.isArray(c))for(var f=0,g=c.length;f<g;++f)e=bl(p,a,c[f],al(m,n),this.ph,this)||e;else e=bl(p,a,c,al(m,n),this.ph,this)||e;a=e}else a=!1;this.f=this.f||a}}var d=this.a,e=d.da();oi(a.attributions,e.l);pi(a,e);var f=a.viewHints[0],g=a.viewHints[1],h=d.S,k=d.T;if(!this.f&&!h&&f||!k&&g)return!0;var g=a.extent,h=a.viewState,f=h.projection,m=h.resolution,n=a.pixelRatio;a=d.g;k=d.a;h=pk(d);void 0===
-h&&(h=$k);g=Yb(g,k*m);if(!this.f&&this.s==m&&this.l==a&&this.j==h&&cc(this.o,g))return!0;this.c=null;this.f=!1;var p=new Vk(.5*m/n,g,m,d.a);e.Kc(g,m,f);if(h){var q=[];e.tb(g,function(a){q.push(a)},this);q.sort(h);q.forEach(c,this)}else e.tb(g,c,this);Wk(p);this.s=m;this.l=a;this.j=h;this.o=g;this.c=p;return!0};function Om(a,c){yi.call(this,0,c);this.f=Mg();var d=this.f.canvas;d.style.position="absolute";d.style.width="100%";d.style.height="100%";d.className="ol-unselectable";tf(a,d,0);this.c=hd();this.b=document.createElement("DIV");this.b.className="ol-unselectable";d=this.b.style;d.position="absolute";d.width="100%";d.height="100%";C(this.b,"touchstart",ib);tf(a,this.b,0);this.a=!0}y(Om,yi);Om.prototype.fa=function(){uf(this.b);Om.ia.fa.call(this)};
-Om.prototype.Te=function(a){if(a instanceof Uj)a=new Jm(a);else if(a instanceof Vj)a=new Km(a);else if(a instanceof H)a=new Mm(a);else return null;return a};function Pm(a,c,d){var e=a.i;if(lb(e,c)){var f=d.extent,g=d.pixelRatio,h=d.viewState,k=h.rotation,m=a.f,n=m.canvas;hi(a.c,n.width/2,n.height/2,g/h.resolution,-g/h.resolution,-h.rotation,-h.center[0],-h.center[1]);a=new qk(m,g,f,a.c,k);e.b(new ci(c,e,a,d,m,null))}}Om.prototype.X=function(){return"dom"};
-Om.prototype.xe=function(a){if(a){var c=this.i;if(lb(c,"precompose")||lb(c,"postcompose")){var c=this.f.canvas,d=a.pixelRatio;c.width=a.size[0]*d;c.height=a.size[1]*d}Pm(this,"precompose",a);c=a.layerStatesArray;Bb(c);var d=a.viewState.resolution,e,f,g,h;e=0;for(f=c.length;e<f;++e)h=c[e],g=h.layer,g=Bi(this,g),tf(this.b,g.target,e),ei(h,d)&&"ready"==h.R?g.uf(a,h)&&g.oh(a,h):g.Id();var c=a.layerStates,k;for(k in this.g)k in c||(g=this.g[k],uf(g.target));this.a||(Cf(this.b,!0),this.a=!0);zi(a);Ci(this,
-a);a.postRenderFunctions.push(Ai);Pm(this,"postcompose",a)}else this.a&&(Cf(this.b,!1),this.a=!1)};function Qm(a){this.b=a}function Rm(a){this.b=a}y(Rm,Qm);Rm.prototype.X=function(){return 35632};function Sm(a){this.b=a}y(Sm,Qm);Sm.prototype.X=function(){return 35633};function Tm(){this.b="precision mediump float;varying vec2 a;varying float b;uniform float k;uniform sampler2D l;void main(void){vec4 texColor=texture2D(l,a);gl_FragColor.rgb=texColor.rgb;float alpha=texColor.a*b*k;if(alpha==0.0){discard;}gl_FragColor.a=alpha;}"}y(Tm,Rm);ba(Tm);
-function Um(){this.b="varying vec2 a;varying float b;attribute vec2 c;attribute vec2 d;attribute vec2 e;attribute float f;attribute float g;uniform mat4 h;uniform mat4 i;uniform mat4 j;void main(void){mat4 offsetMatrix=i;if(g==1.0){offsetMatrix=i*j;}vec4 offsets=offsetMatrix*vec4(e,0.,0.);gl_Position=h*vec4(c,0.,1.)+offsets;a=d;b=f;}"}y(Um,Sm);ba(Um);
-function Vm(a,c){this.o=a.getUniformLocation(c,"j");this.j=a.getUniformLocation(c,"i");this.i=a.getUniformLocation(c,"k");this.l=a.getUniformLocation(c,"h");this.b=a.getAttribLocation(c,"e");this.a=a.getAttribLocation(c,"f");this.f=a.getAttribLocation(c,"c");this.g=a.getAttribLocation(c,"g");this.c=a.getAttribLocation(c,"d")};function Wm(a){this.b=void 0!==a?a:[]};function Xm(a,c){this.l=a;this.b=c;this.a={};this.c={};this.f={};this.j=this.s=this.i=this.o=null;(this.g=ub(oa,"OES_element_index_uint"))&&c.getExtension("OES_element_index_uint");C(this.l,"webglcontextlost",this.Vn,this);C(this.l,"webglcontextrestored",this.Wn,this)}y(Xm,eb);
-function Ym(a,c,d){var e=a.b,f=d.b,g=String(w(d));if(g in a.a)e.bindBuffer(c,a.a[g].buffer);else{var h=e.createBuffer();e.bindBuffer(c,h);var k;34962==c?k=new Float32Array(f):34963==c&&(k=a.g?new Uint32Array(f):new Uint16Array(f));e.bufferData(c,k,35044);a.a[g]={Eb:d,buffer:h}}}function Zm(a,c){var d=a.b,e=String(w(c)),f=a.a[e];d.isContextLost()||d.deleteBuffer(f.buffer);delete a.a[e]}l=Xm.prototype;
-l.fa=function(){db(this.l);var a=this.b;if(!a.isContextLost()){for(var c in this.a)a.deleteBuffer(this.a[c].buffer);for(c in this.f)a.deleteProgram(this.f[c]);for(c in this.c)a.deleteShader(this.c[c]);a.deleteFramebuffer(this.i);a.deleteRenderbuffer(this.j);a.deleteTexture(this.s)}};l.Un=function(){return this.b};
-function $m(a){if(!a.i){var c=a.b,d=c.createFramebuffer();c.bindFramebuffer(c.FRAMEBUFFER,d);var e=an(c,1,1),f=c.createRenderbuffer();c.bindRenderbuffer(c.RENDERBUFFER,f);c.renderbufferStorage(c.RENDERBUFFER,c.DEPTH_COMPONENT16,1,1);c.framebufferTexture2D(c.FRAMEBUFFER,c.COLOR_ATTACHMENT0,c.TEXTURE_2D,e,0);c.framebufferRenderbuffer(c.FRAMEBUFFER,c.DEPTH_ATTACHMENT,c.RENDERBUFFER,f);c.bindTexture(c.TEXTURE_2D,null);c.bindRenderbuffer(c.RENDERBUFFER,null);c.bindFramebuffer(c.FRAMEBUFFER,null);a.i=d;
-a.s=e;a.j=f}return a.i}function bn(a,c){var d=String(w(c));if(d in a.c)return a.c[d];var e=a.b,f=e.createShader(c.X());e.shaderSource(f,c.b);e.compileShader(f);return a.c[d]=f}function cn(a,c,d){var e=w(c)+"/"+w(d);if(e in a.f)return a.f[e];var f=a.b,g=f.createProgram();f.attachShader(g,bn(a,c));f.attachShader(g,bn(a,d));f.linkProgram(g);return a.f[e]=g}l.Vn=function(){Qa(this.a);Qa(this.c);Qa(this.f);this.j=this.s=this.i=this.o=null};l.Wn=function(){};
-l.re=function(a){if(a==this.o)return!1;this.b.useProgram(a);this.o=a;return!0};function dn(a,c,d){var e=a.createTexture();a.bindTexture(a.TEXTURE_2D,e);a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.LINEAR);a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.LINEAR);void 0!==c&&a.texParameteri(3553,10242,c);void 0!==d&&a.texParameteri(3553,10243,d);return e}function an(a,c,d){var e=dn(a,void 0,void 0);a.texImage2D(a.TEXTURE_2D,0,a.RGBA,c,d,0,a.RGBA,a.UNSIGNED_BYTE,null);return e}
-function en(a,c){var d=dn(a,33071,33071);a.texImage2D(a.TEXTURE_2D,0,a.RGBA,a.RGBA,a.UNSIGNED_BYTE,c);return d};function fn(a,c){this.M=this.B=void 0;this.j=tc(c);this.U=[];this.i=[];this.R=void 0;this.c=[];this.f=[];this.ya=this.va=void 0;this.a=[];this.N=this.o=null;this.S=void 0;this.ta=jd();this.xa=jd();this.Y=this.T=void 0;this.Ra=jd();this.wa=this.ea=this.Qa=void 0;this.Cb=[];this.l=[];this.b=[];this.v=null;this.g=[];this.s=[];this.na=void 0}y(fn,bi);
-function gn(a,c){var d=a.v,e=a.o,f=a.Cb,g=a.l,h=c.b;return function(){if(!h.isContextLost()){var a,m;a=0;for(m=f.length;a<m;++a)h.deleteTexture(f[a]);a=0;for(m=g.length;a<m;++a)h.deleteTexture(g[a])}Zm(c,d);Zm(c,e)}}
-function hn(a,c,d,e){var f=a.B,g=a.M,h=a.R,k=a.va,m=a.ya,n=a.S,p=a.T,q=a.Y,r=a.Qa?1:0,u=a.ea,v=a.wa,x=a.na,z=Math.cos(u),u=Math.sin(u),E=a.a.length,B=a.b.length,A,G,O,L,R,Wa;for(A=0;A<d;A+=e)R=c[A]-a.j[0],Wa=c[A+1]-a.j[1],G=B/8,O=-v*f,L=-v*(h-g),a.b[B++]=R,a.b[B++]=Wa,a.b[B++]=O*z-L*u,a.b[B++]=O*u+L*z,a.b[B++]=p/m,a.b[B++]=(q+h)/k,a.b[B++]=n,a.b[B++]=r,O=v*(x-f),L=-v*(h-g),a.b[B++]=R,a.b[B++]=Wa,a.b[B++]=O*z-L*u,a.b[B++]=O*u+L*z,a.b[B++]=(p+x)/m,a.b[B++]=(q+h)/k,a.b[B++]=n,a.b[B++]=r,O=v*(x-f),L=
-v*g,a.b[B++]=R,a.b[B++]=Wa,a.b[B++]=O*z-L*u,a.b[B++]=O*u+L*z,a.b[B++]=(p+x)/m,a.b[B++]=q/k,a.b[B++]=n,a.b[B++]=r,O=-v*f,L=v*g,a.b[B++]=R,a.b[B++]=Wa,a.b[B++]=O*z-L*u,a.b[B++]=O*u+L*z,a.b[B++]=p/m,a.b[B++]=q/k,a.b[B++]=n,a.b[B++]=r,a.a[E++]=G,a.a[E++]=G+1,a.a[E++]=G+2,a.a[E++]=G,a.a[E++]=G+2,a.a[E++]=G+3}fn.prototype.oc=function(a,c){this.g.push(this.a.length);this.s.push(c);var d=a.ga();hn(this,d,d.length,a.ua())};
-fn.prototype.pc=function(a,c){this.g.push(this.a.length);this.s.push(c);var d=a.ga();hn(this,d,d.length,a.ua())};function jn(a,c){var d=c.b;a.U.push(a.a.length);a.i.push(a.a.length);a.v=new Wm(a.b);Ym(c,34962,a.v);a.o=new Wm(a.a);Ym(c,34963,a.o);var e={};kn(a.Cb,a.c,e,d);kn(a.l,a.f,e,d);a.B=void 0;a.M=void 0;a.R=void 0;a.c=null;a.f=null;a.va=void 0;a.ya=void 0;a.a=null;a.S=void 0;a.T=void 0;a.Y=void 0;a.Qa=void 0;a.ea=void 0;a.wa=void 0;a.b=null;a.na=void 0}
-function kn(a,c,d,e){var f,g,h,k=c.length;for(h=0;h<k;++h)f=c[h],g=w(f).toString(),g in d?f=d[g]:(f=en(e,f),d[g]=f),a[h]=f}
-fn.prototype.Pa=function(a,c,d,e,f,g,h,k,m,n,p){g=a.b;Ym(a,34962,this.v);Ym(a,34963,this.o);var q=Tm.Ub(),r=Um.Ub(),r=cn(a,q,r);this.N?q=this.N:this.N=q=new Vm(g,r);a.re(r);g.enableVertexAttribArray(q.f);g.vertexAttribPointer(q.f,2,5126,!1,32,0);g.enableVertexAttribArray(q.b);g.vertexAttribPointer(q.b,2,5126,!1,32,8);g.enableVertexAttribArray(q.c);g.vertexAttribPointer(q.c,2,5126,!1,32,16);g.enableVertexAttribArray(q.a);g.vertexAttribPointer(q.a,1,5126,!1,32,24);g.enableVertexAttribArray(q.g);g.vertexAttribPointer(q.g,
-1,5126,!1,32,28);r=this.Ra;hi(r,0,0,2/(d*f[0]),2/(d*f[1]),-e,-(c[0]-this.j[0]),-(c[1]-this.j[1]));c=this.xa;d=2/f[0];f=2/f[1];ld(c);c[0]=d;c[5]=f;c[10]=1;c[15]=1;f=this.ta;ld(f);0!==e&&qd(f,-e);g.uniformMatrix4fv(q.l,!1,r);g.uniformMatrix4fv(q.j,!1,c);g.uniformMatrix4fv(q.o,!1,f);g.uniform1f(q.i,h);var u;if(void 0===m)ln(this,g,a,k,this.Cb,this.U);else{if(n)a:{e=a.g?5125:5123;a=a.g?4:2;f=this.g.length-1;for(h=this.l.length-1;0<=h;--h)for(g.bindTexture(3553,this.l[h]),n=0<h?this.i[h-1]:0,c=this.i[h];0<=
-f&&this.g[f]>=n;){u=this.g[f];d=this.s[f];r=w(d).toString();if(void 0===k[r]&&d.W()&&(void 0===p||wc(p,d.W().O()))&&(g.clear(g.COLOR_BUFFER_BIT|g.DEPTH_BUFFER_BIT),g.drawElements(4,c-u,e,u*a),c=m(d))){k=c;break a}c=u;f--}k=void 0}else g.clear(g.COLOR_BUFFER_BIT|g.DEPTH_BUFFER_BIT),ln(this,g,a,k,this.l,this.i),k=(k=m(null))?k:void 0;u=k}g.disableVertexAttribArray(q.f);g.disableVertexAttribArray(q.b);g.disableVertexAttribArray(q.c);g.disableVertexAttribArray(q.a);g.disableVertexAttribArray(q.g);return u};
-function ln(a,c,d,e,f,g){var h=d.g?5125:5123;d=d.g?4:2;if(Sa(e)){var k;a=0;e=f.length;for(k=0;a<e;++a){c.bindTexture(3553,f[a]);var m=g[a];c.drawElements(4,m-k,h,k*d);k=m}}else{k=0;var n,m=0;for(n=f.length;m<n;++m){c.bindTexture(3553,f[m]);for(var p=0<m?g[m-1]:0,q=g[m],r=p;k<a.g.length&&a.g[k]<=q;){var u=w(a.s[k]).toString();void 0!==e[u]?(r!==p&&c.drawElements(4,p-r,h,r*d),p=r=k===a.g.length-1?q:a.g[k+1]):p=k===a.g.length-1?q:a.g[k+1];k++}r!==p&&c.drawElements(4,p-r,h,r*d)}}}
-fn.prototype.Pb=function(a){var c=a.Tb(),d=a.ec(1),e=a.fd(),f=a.ke(1),g=a.v,h=a.Fa(),k=a.U,m=a.j,n=a.Bb();a=a.i;var p;0===this.c.length?this.c.push(d):(p=this.c[this.c.length-1],w(p)!=w(d)&&(this.U.push(this.a.length),this.c.push(d)));0===this.f.length?this.f.push(f):(p=this.f[this.f.length-1],w(p)!=w(f)&&(this.i.push(this.a.length),this.f.push(f)));this.B=c[0];this.M=c[1];this.R=n[1];this.va=e[1];this.ya=e[0];this.S=g;this.T=h[0];this.Y=h[1];this.ea=m;this.Qa=k;this.wa=a;this.na=n[0]};
-function mn(a,c,d){this.f=c;this.c=a;this.g=d;this.a={}}function nn(a,c){var d=[],e;for(e in a.a)d.push(gn(a.a[e],c));return function(){for(var a=d.length,c,e=0;e<a;e++)c=d[e].apply(this,arguments);return c}}function on(a,c){for(var d in a.a)jn(a.a[d],c)}mn.prototype.b=function(a,c){var d=this.a[c];void 0===d&&(d=new pn[c](this.c,this.f),this.a[c]=d);return d};mn.prototype.Sa=function(){return Sa(this.a)};
-mn.prototype.Pa=function(a,c,d,e,f,g,h,k){var m,n,p;m=0;for(n=Fk.length;m<n;++m)p=this.a[Fk[m]],void 0!==p&&p.Pa(a,c,d,e,f,g,h,k,void 0,!1)};function qn(a,c,d,e,f,g,h,k,m,n,p){var q=rn,r,u;for(r=Fk.length-1;0<=r;--r)if(u=a.a[Fk[r]],void 0!==u&&(u=u.Pa(c,d,e,f,q,g,h,k,m,n,p)))return u}
-mn.prototype.oa=function(a,c,d,e,f,g,h,k,m,n){var p=c.b;p.bindFramebuffer(p.FRAMEBUFFER,$m(c));var q;void 0!==this.g&&(q=Yb(fc(a),e*this.g));return qn(this,c,a,e,f,h,k,m,function(a){var c=new Uint8Array(4);p.readPixels(0,0,1,1,p.RGBA,p.UNSIGNED_BYTE,c);if(0<c[3]&&(a=n(a)))return a},!0,q)};
-function sn(a,c,d,e,f,g,h,k){var m=d.b;m.bindFramebuffer(m.FRAMEBUFFER,$m(d));return void 0!==qn(a,d,c,e,f,g,h,k,function(){var a=new Uint8Array(4);m.readPixels(0,0,1,1,m.RGBA,m.UNSIGNED_BYTE,a);return 0<a[3]},!1)}var pn={Image:fn},rn=[1,1];function tn(a,c,d,e,f,g,h){this.b=a;this.f=c;this.g=g;this.c=h;this.o=f;this.l=e;this.i=d;this.a=null}y(tn,bi);l=tn.prototype;l.md=function(a){this.Pb(a.a)};l.nc=function(a){switch(a.X()){case "Point":this.pc(a,null);break;case "MultiPoint":this.oc(a,null);break;case "GeometryCollection":this.Ve(a,null)}};l.Ue=function(a,c){var d=(0,c.g)(a);d&&wc(this.g,d.O())&&(this.md(c),this.nc(d))};l.Ve=function(a){a=a.c;var c,d;c=0;for(d=a.length;c<d;++c)this.nc(a[c])};
-l.pc=function(a,c){var d=this.b,e=(new mn(1,this.g)).b(0,"Image");e.Pb(this.a);e.pc(a,c);jn(e,d);e.Pa(this.b,this.f,this.i,this.l,this.o,this.c,1,{},void 0,!1);gn(e,d)()};l.oc=function(a,c){var d=this.b,e=(new mn(1,this.g)).b(0,"Image");e.Pb(this.a);e.oc(a,c);jn(e,d);e.Pa(this.b,this.f,this.i,this.l,this.o,this.c,1,{},void 0,!1);gn(e,d)()};l.Pb=function(a){this.a=a};function un(){this.b="precision mediump float;varying vec2 a;uniform float f;uniform sampler2D g;void main(void){vec4 texColor=texture2D(g,a);gl_FragColor.rgb=texColor.rgb;gl_FragColor.a=texColor.a*f;}"}y(un,Rm);ba(un);function vn(){this.b="varying vec2 a;attribute vec2 b;attribute vec2 c;uniform mat4 d;uniform mat4 e;void main(void){gl_Position=e*vec4(b,0.,1.);a=(d*vec4(c,0.,1.)).st;}"}y(vn,Sm);ba(vn);
-function wn(a,c){this.g=a.getUniformLocation(c,"f");this.f=a.getUniformLocation(c,"e");this.i=a.getUniformLocation(c,"d");this.c=a.getUniformLocation(c,"g");this.b=a.getAttribLocation(c,"b");this.a=a.getAttribLocation(c,"c")};function xn(a,c){ki.call(this,c);this.f=a;this.S=new Wm([-1,-1,0,0,1,-1,1,0,-1,1,0,1,1,1,1,1]);this.i=this.ob=null;this.l=void 0;this.s=hd();this.U=jd();this.v=null}y(xn,ki);
-function yn(a,c,d){var e=a.f.f;if(void 0===a.l||a.l!=d){c.postRenderFunctions.push(function(a,c,d){a.isContextLost()||(a.deleteFramebuffer(c),a.deleteTexture(d))}.bind(null,e,a.i,a.ob));c=an(e,d,d);var f=e.createFramebuffer();e.bindFramebuffer(36160,f);e.framebufferTexture2D(36160,36064,3553,c,0);a.ob=c;a.i=f;a.l=d}else e.bindFramebuffer(36160,a.i)}
-xn.prototype.qh=function(a,c,d){zn(this,"precompose",d,a);Ym(d,34962,this.S);var e=d.b,f=un.Ub(),g=vn.Ub(),f=cn(d,f,g);this.v?g=this.v:this.v=g=new wn(e,f);d.re(f)&&(e.enableVertexAttribArray(g.b),e.vertexAttribPointer(g.b,2,5126,!1,16,0),e.enableVertexAttribArray(g.a),e.vertexAttribPointer(g.a,2,5126,!1,16,8),e.uniform1i(g.c,0));e.uniformMatrix4fv(g.i,!1,this.s);e.uniformMatrix4fv(g.f,!1,this.U);e.uniform1f(g.g,c.opacity);e.bindTexture(3553,this.ob);e.drawArrays(5,0,4);zn(this,"postcompose",d,a)};
-function zn(a,c,d,e){a=a.a;if(lb(a,c)){var f=e.viewState;a.b(new ci(c,a,new tn(d,f.center,f.resolution,f.rotation,e.size,e.extent,e.pixelRatio),e,null,d))}}xn.prototype.vf=function(){this.i=this.ob=null;this.l=void 0};function An(a,c){xn.call(this,a,c);this.j=this.o=this.c=null}y(An,xn);function Bn(a,c){var d=c.a();return en(a.f.f,d)}An.prototype.oa=function(a,c,d,e){var f=this.a;return f.da().oa(a,c.viewState.resolution,c.viewState.rotation,c.skippedFeatureUids,function(a){return d.call(e,a,f)})};
-An.prototype.wf=function(a,c){var d=this.f.f,e=a.pixelRatio,f=a.viewState,g=f.center,h=f.resolution,k=f.rotation,m=this.c,n=this.ob,p=this.a.da(),q=a.viewHints,r=a.extent;void 0!==c.extent&&(r=vc(r,c.extent));q[0]||q[1]||qc(r)||(f=p.B(r,h,e,f.projection))&&mi(this,f)&&(m=f,n=Bn(this,f),this.ob&&a.postRenderFunctions.push(function(a,c){a.isContextLost()||a.deleteTexture(c)}.bind(null,d,this.ob)));m&&(d=this.f.c.l,Cn(this,d.width,d.height,e,g,h,k,m.O()),this.j=null,e=this.s,ld(e),pd(e,1,-1),od(e,0,
--1),this.c=m,this.ob=n,oi(a.attributions,m.l),pi(a,p));return!0};function Cn(a,c,d,e,f,g,h,k){c*=g;d*=g;a=a.U;ld(a);pd(a,2*e/c,2*e/d);qd(a,-h);od(a,k[0]-f[0],k[1]-f[1]);pd(a,(k[2]-k[0])/2,(k[3]-k[1])/2);od(a,1,1)}An.prototype.ge=function(a,c){return void 0!==this.oa(a,c,Ac,this)};
-An.prototype.xc=function(a,c,d,e){if(this.c&&this.c.a())if(this.a.da()instanceof om){if(a=a.slice(),ji(c.pixelToCoordinateMatrix,a,a),this.oa(a,c,Ac,this))return d.call(e,this.a)}else{var f=[this.c.a().width,this.c.a().height];if(!this.j){var g=c.size;c=hd();ld(c);od(c,-1,-1);pd(c,2/g[0],2/g[1]);od(c,0,g[1]);pd(c,1,-1);g=hd();nd(this.U,g);var h=hd();ld(h);od(h,0,f[1]);pd(h,1,-1);pd(h,f[0]/2,f[1]/2);od(h,1,1);var k=hd();md(h,g,k);md(k,c,k);this.j=k}c=[0,0];ji(this.j,a,c);if(!(0>c[0]||c[0]>f[0]||0>
-c[1]||c[1]>f[1])&&(this.o||(this.o=Mg(1,1)),this.o.clearRect(0,0,1,1),this.o.drawImage(this.c.a(),c[0],c[1],1,1,0,0,1,1),0<this.o.getImageData(0,0,1,1).data[3]))return d.call(e,this.a)}};function Dn(){this.b="precision mediump float;varying vec2 a;uniform sampler2D e;void main(void){gl_FragColor=texture2D(e,a);}"}y(Dn,Rm);ba(Dn);function En(){this.b="varying vec2 a;attribute vec2 b;attribute vec2 c;uniform vec4 d;void main(void){gl_Position=vec4(b*d.xy+d.zw,0.,1.);a=c;}"}y(En,Sm);ba(En);function Fn(a,c){this.g=a.getUniformLocation(c,"e");this.f=a.getUniformLocation(c,"d");this.b=a.getAttribLocation(c,"b");this.a=a.getAttribLocation(c,"c")};function Gn(a,c){xn.call(this,a,c);this.N=Dn.Ub();this.T=En.Ub();this.c=null;this.M=new Wm([0,0,0,1,1,0,1,1,0,1,0,0,1,1,1,0]);this.B=this.o=null;this.j=-1;this.R=[0,0]}y(Gn,xn);l=Gn.prototype;l.fa=function(){Zm(this.f.c,this.M);Gn.ia.fa.call(this)};l.Ld=function(a,c,d){var e=this.f;return function(f,g){return mg(a,c,f,g,function(a){var c=Lf(e.a,a.gb());c&&(d[f]||(d[f]={}),d[f][a.ja.toString()]=a);return c})}};l.vf=function(){Gn.ia.vf.call(this);this.c=null};
-l.wf=function(a,c,d){var e=this.f,f=d.b,g=a.viewState,h=g.projection,k=this.a,m=k.da(),n=m.fb(h),p=gg(n,g.resolution),q=n.$(p),r=m.Ud(p,a.pixelRatio,h),u=r[0]/Uf(n.Ha(p),this.R)[0],v=q/u,x=m.Od(h),z=g.center,E;q==g.resolution?(z=ri(z,q,a.size),E=uc(z,q,g.rotation,a.size)):E=a.extent;q=dg(n,E,q);if(this.o&&se(this.o,q)&&this.j==m.g)v=this.B;else{var B=[q.a-q.b+1,q.f-q.g+1],A=Math.pow(2,Math.ceil(Math.log(Math.max(B[0]*r[0],B[1]*r[1]))/Math.LN2)),B=v*A,G=n.Fa(p),O=G[0]+q.b*r[0]*v,v=G[1]+q.g*r[1]*v,
-v=[O,v,O+B,v+B];yn(this,a,A);f.viewport(0,0,A,A);f.clearColor(0,0,0,0);f.clear(16384);f.disable(3042);A=cn(d,this.N,this.T);d.re(A);this.c||(this.c=new Fn(f,A));Ym(d,34962,this.M);f.enableVertexAttribArray(this.c.b);f.vertexAttribPointer(this.c.b,2,5126,!1,16,0);f.enableVertexAttribArray(this.c.a);f.vertexAttribPointer(this.c.a,2,5126,!1,16,8);f.uniform1i(this.c.g,0);d={};d[p]={};var L=this.Ld(m,h,d),R=k.c(),A=!0,O=Wb(),Wa=new qe(0,0,0,0),J,ua,Ta;for(ua=q.b;ua<=q.a;++ua)for(Ta=q.g;Ta<=q.f;++Ta){G=
-m.Wb(p,ua,Ta,u,h);if(void 0!==c.extent&&(J=n.Ba(G.ja,O),!wc(J,c.extent)))continue;J=G.V();J=2==J||4==J||3==J&&!R;!J&&G.a&&(G=G.a);J=G.V();if(2==J){if(Lf(e.a,G.gb())){d[p][G.ja.toString()]=G;continue}}else if(4==J||3==J&&!R)continue;A=!1;J=ag(n,G.ja,L,Wa,O);J||(G=cg(n,G.ja,Wa,O))&&L(p+1,G)}c=Object.keys(d).map(Number);c.sort(tb);for(var L=new Float32Array(4),kb,Ka,Ia,R=0,Wa=c.length;R<Wa;++R)for(kb in Ka=d[c[R]],Ka)G=Ka[kb],J=n.Ba(G.ja,O),ua=2*(J[2]-J[0])/B,Ta=2*(J[3]-J[1])/B,Ia=2*(J[0]-v[0])/B-1,
-J=2*(J[1]-v[1])/B-1,gd(L,ua,Ta,Ia,J),f.uniform4fv(this.c.f,L),Hn(e,G,r,x*u),f.drawArrays(5,0,4);A?(this.o=q,this.B=v,this.j=m.g):(this.B=this.o=null,this.j=-1,a.animate=!0)}qi(a.usedTiles,m,p,q);var xc=e.o;si(a,m,n,u,h,E,p,k.f(),function(a){var c;(c=2!=a.V()||Lf(e.a,a.gb()))||(c=a.gb()in xc.g);c||xc.f([a,fg(n,a.ja),n.$(a.ja[0]),r,x*u])},this);ni(a,m);pi(a,m);f=this.s;ld(f);od(f,(z[0]-v[0])/(v[2]-v[0]),(z[1]-v[1])/(v[3]-v[1]));0!==g.rotation&&qd(f,g.rotation);pd(f,a.size[0]*g.resolution/(v[2]-v[0]),
-a.size[1]*g.resolution/(v[3]-v[1]));od(f,-.5,-.5);return!0};l.xc=function(a,c,d,e){if(this.i){var f=[0,0];ji(this.s,[a[0]/c.size[0],(c.size[1]-a[1])/c.size[1]],f);a=[f[0]*this.l,f[1]*this.l];c=this.f.c.b;c.bindFramebuffer(c.FRAMEBUFFER,this.i);f=new Uint8Array(4);c.readPixels(a[0],a[1],1,1,c.RGBA,c.UNSIGNED_BYTE,f);if(0<f[3])return d.call(e,this.a)}};function In(a,c){xn.call(this,a,c);this.j=!1;this.R=-1;this.N=NaN;this.B=Wb();this.o=this.c=this.M=null}y(In,xn);l=In.prototype;l.qh=function(a,c,d){this.o=c;var e=a.viewState,f=this.c;f&&!f.Sa()&&f.Pa(d,e.center,e.resolution,e.rotation,a.size,a.pixelRatio,c.opacity,c.Lc?a.skippedFeatureUids:{})};l.fa=function(){var a=this.c;a&&(nn(a,this.f.c)(),this.c=null);In.ia.fa.call(this)};
-l.oa=function(a,c,d,e){if(this.c&&this.o){var f=c.viewState,g=this.a,h={};return this.c.oa(a,this.f.c,f.center,f.resolution,f.rotation,c.size,c.pixelRatio,this.o.opacity,{},function(a){var c=w(a).toString();if(!(c in h))return h[c]=!0,d.call(e,a,g)})}};l.ge=function(a,c){if(this.c&&this.o){var d=c.viewState;return sn(this.c,a,this.f.c,d.resolution,d.rotation,c.pixelRatio,this.o.opacity,c.skippedFeatureUids)}return!1};
-l.xc=function(a,c,d,e){a=a.slice();ji(c.pixelToCoordinateMatrix,a,a);if(this.ge(a,c))return d.call(e,this.a)};l.rh=function(){li(this)};
-l.wf=function(a,c,d){function e(a){var c,d=a.$b();d?c=d.call(a,n):(d=f.i)&&(c=d(a,n));if(c){if(c){d=!1;if(Array.isArray(c))for(var e=0,g=c.length;e<g;++e)d=bl(r,a,c[e],al(n,p),this.rh,this)||d;else d=bl(r,a,c,al(n,p),this.rh,this)||d;a=d}else a=!1;this.j=this.j||a}}var f=this.a;c=f.da();oi(a.attributions,c.l);pi(a,c);var g=a.viewHints[0],h=a.viewHints[1],k=f.S,m=f.T;if(!this.j&&!k&&g||!m&&h)return!0;var h=a.extent,k=a.viewState,g=k.projection,n=k.resolution,p=a.pixelRatio,k=f.g,q=f.a,m=pk(f);void 0===
-m&&(m=$k);h=Yb(h,q*n);if(!this.j&&this.N==n&&this.R==k&&this.M==m&&cc(this.B,h))return!0;this.c&&a.postRenderFunctions.push(nn(this.c,d));this.j=!1;var r=new mn(.5*n/p,h,f.a);c.Kc(h,n,g);if(m){var u=[];c.tb(h,function(a){u.push(a)},this);u.sort(m);u.forEach(e,this)}else c.tb(h,e,this);on(r,d);this.N=n;this.R=k;this.M=m;this.B=h;this.c=r;return!0};function Jn(a,c){yi.call(this,0,c);this.b=document.createElement("CANVAS");this.b.style.width="100%";this.b.style.height="100%";this.b.className="ol-unselectable";tf(a,this.b,0);this.U=this.B=0;this.M=Mg();this.j=!0;this.f=Sg(this.b,{antialias:!0,depth:!1,failIfMajorPerformanceCaveat:!0,preserveDrawingBuffer:!1,stencil:!0});this.c=new Xm(this.b,this.f);C(this.b,"webglcontextlost",this.Jm,this);C(this.b,"webglcontextrestored",this.Km,this);this.a=new Kf;this.v=null;this.o=new Di(function(a){var c=
-a[1];a=a[2];var f=c[0]-this.v[0],c=c[1]-this.v[1];return 65536*Math.log(a)+Math.sqrt(f*f+c*c)/a}.bind(this),function(a){return a[0].gb()});this.N=function(){if(!this.o.Sa()){Hi(this.o);var a=Ei(this.o);Hn(this,a[0],a[3],a[4])}return!1}.bind(this);this.l=0;Kn(this)}y(Jn,yi);
-function Hn(a,c,d,e){var f=a.f,g=c.gb();if(Lf(a.a,g))a=a.a.get(g),f.bindTexture(3553,a.ob),9729!=a.Rg&&(f.texParameteri(3553,10240,9729),a.Rg=9729),9729!=a.Tg&&(f.texParameteri(3553,10240,9729),a.Tg=9729);else{var h=f.createTexture();f.bindTexture(3553,h);if(0<e){var k=a.M.canvas,m=a.M;a.B!==d[0]||a.U!==d[1]?(k.width=d[0],k.height=d[1],a.B=d[0],a.U=d[1]):m.clearRect(0,0,d[0],d[1]);m.drawImage(c.ab(),e,e,d[0],d[1],0,0,d[0],d[1]);f.texImage2D(3553,0,6408,6408,5121,k)}else f.texImage2D(3553,0,6408,6408,
-5121,c.ab());f.texParameteri(3553,10240,9729);f.texParameteri(3553,10241,9729);f.texParameteri(3553,10242,33071);f.texParameteri(3553,10243,33071);a.a.set(g,{ob:h,Rg:9729,Tg:9729})}}l=Jn.prototype;l.Te=function(a){return a instanceof Uj?new An(this,a):a instanceof Vj?new Gn(this,a):a instanceof H?new In(this,a):null};function Ln(a,c,d){var e=a.i;if(lb(e,c)){a=a.c;var f=d.viewState;e.b(new ci(c,e,new tn(a,f.center,f.resolution,f.rotation,d.size,d.extent,d.pixelRatio),d,null,a))}}
-l.fa=function(){var a=this.f;a.isContextLost()||this.a.forEach(function(c){c&&a.deleteTexture(c.ob)});fb(this.c);Jn.ia.fa.call(this)};l.Cj=function(a,c){for(var d=this.f,e;1024<this.a.rc()-this.l;){if(e=this.a.b.kc)d.deleteTexture(e.ob);else if(+this.a.b.Yb==c.index)break;else--this.l;this.a.pop()}};l.X=function(){return"webgl"};l.Jm=function(a){a.preventDefault();this.a.clear();this.l=0;a=this.g;for(var c in a)a[c].vf()};l.Km=function(){Kn(this);this.i.render()};
-function Kn(a){a=a.f;a.activeTexture(33984);a.blendFuncSeparate(770,771,1,771);a.disable(2884);a.disable(2929);a.disable(3089);a.disable(2960)}
-l.xe=function(a){var c=this.c,d=this.f;if(d.isContextLost())return!1;if(!a)return this.j&&(Cf(this.b,!1),this.j=!1),!1;this.v=a.focus;this.a.set((-a.index).toString(),null);++this.l;Ln(this,"precompose",a);var e=[],f=a.layerStatesArray;Bb(f);var g=a.viewState.resolution,h,k,m,n;h=0;for(k=f.length;h<k;++h)n=f[h],ei(n,g)&&"ready"==n.R&&(m=Bi(this,n.layer),m.wf(a,n,c)&&e.push(n));f=a.size[0]*a.pixelRatio;g=a.size[1]*a.pixelRatio;if(this.b.width!=f||this.b.height!=g)this.b.width=f,this.b.height=g;d.bindFramebuffer(36160,
-null);d.clearColor(0,0,0,0);d.clear(16384);d.enable(3042);d.viewport(0,0,this.b.width,this.b.height);h=0;for(k=e.length;h<k;++h)n=e[h],m=Bi(this,n.layer),m.qh(a,n,c);this.j||(Cf(this.b,!0),this.j=!0);zi(a);1024<this.a.rc()-this.l&&a.postRenderFunctions.push(this.Cj.bind(this));this.o.Sa()||(a.postRenderFunctions.push(this.N),a.animate=!0);Ln(this,"postcompose",a);Ci(this,a);a.postRenderFunctions.push(Ai)};
-l.oa=function(a,c,d,e,f,g){var h;if(this.f.isContextLost())return!1;var k=c.viewState,m=c.layerStatesArray,n;for(n=m.length-1;0<=n;--n){h=m[n];var p=h.layer;if(ei(h,k.resolution)&&f.call(g,p)&&(h=Bi(this,p).oa(a,c,d,e)))return h}};l.nh=function(a,c,d,e){var f=!1;if(this.f.isContextLost())return!1;var g=c.viewState,h=c.layerStatesArray,k;for(k=h.length-1;0<=k;--k){var m=h[k],n=m.layer;if(ei(m,g.resolution)&&d.call(e,n)&&(f=Bi(this,n).ge(a,c)))return!0}return f};
-l.mh=function(a,c,d,e,f){if(this.f.isContextLost())return!1;var g=c.viewState,h,k=c.layerStatesArray,m;for(m=k.length-1;0<=m;--m){h=k[m];var n=h.layer;if(ei(h,g.resolution)&&f.call(e,n)&&(h=Bi(this,n).xc(a,c,d,e)))return h}};var Mn=["canvas","webgl","dom"];
-function S(a){pb.call(this);var c=Nn(a);this.Db=void 0!==a.loadTilesWhileAnimating?a.loadTilesWhileAnimating:!1;this.Cc=void 0!==a.loadTilesWhileInteracting?a.loadTilesWhileInteracting:!1;this.Ke=void 0!==a.pixelRatio?a.pixelRatio:Yg;this.Je=c.logos;this.Y=function(){this.i=void 0;this.Oo.call(this,Date.now())}.bind(this);this.Ra=hd();this.Le=hd();this.pb=0;this.f=null;this.xa=Wb();this.N=this.S=null;this.a=document.createElement("DIV");this.a.className="ol-viewport"+(ch?" ol-touch":"");this.a.style.position=
-"relative";this.a.style.overflow="hidden";this.a.style.width="100%";this.a.style.height="100%";this.a.style.msTouchAction="none";this.a.style.touchAction="none";this.B=document.createElement("DIV");this.B.className="ol-overlaycontainer";this.a.appendChild(this.B);this.v=document.createElement("DIV");this.v.className="ol-overlaycontainer-stopevent";a=["click","dblclick","mousedown","touchstart","mspointerdown",Wh,"mousewheel","wheel"];for(var d=0,e=a.length;d<e;++d)C(this.v,a[d],hb);this.a.appendChild(this.v);
-this.wa=new Oh(this);for(var f in Zh)C(this.wa,Zh[f],this.Kg,this);this.ea=c.keyboardEventTarget;this.s=null;C(this.a,"wheel",this.Jc,this);C(this.a,"mousewheel",this.Jc,this);this.o=c.controls;this.l=c.interactions;this.j=c.overlays;this.yf={};this.M=new c.Qo(this.a,this);this.T=null;this.R=[];this.ta=[];this.na=new Ii(this.xk.bind(this),this.dl.bind(this));this.ze={};C(this,rb("layergroup"),this.Kk,this);C(this,rb("view"),this.el,this);C(this,rb("size"),this.al,this);C(this,rb("target"),this.cl,
-this);this.C(c.values);this.o.forEach(function(a){a.setMap(this)},this);C(this.o,"add",function(a){a.element.setMap(this)},this);C(this.o,"remove",function(a){a.element.setMap(null)},this);this.l.forEach(function(a){a.setMap(this)},this);C(this.l,"add",function(a){a.element.setMap(this)},this);C(this.l,"remove",function(a){a.element.setMap(null)},this);this.j.forEach(this.ig,this);C(this.j,"add",function(a){this.ig(a.element)},this);C(this.j,"remove",function(a){var c=a.element.Wa();void 0!==c&&delete this.yf[c.toString()];
-a.element.setMap(null)},this)}y(S,pb);l=S.prototype;l.pj=function(a){this.o.push(a)};l.qj=function(a){this.l.push(a)};l.gg=function(a){this.sc().Oc().push(a)};l.hg=function(a){this.j.push(a)};l.ig=function(a){var c=a.Wa();void 0!==c&&(this.yf[c.toString()]=a);a.setMap(this)};l.Va=function(a){this.render();Array.prototype.push.apply(this.R,arguments)};
-l.fa=function(){fb(this.wa);fb(this.M);cb(this.a,"wheel",this.Jc,this);cb(this.a,"mousewheel",this.Jc,this);void 0!==this.c&&(qa.removeEventListener("resize",this.c,!1),this.c=void 0);this.i&&(qa.cancelAnimationFrame(this.i),this.i=void 0);this.$g(null);S.ia.fa.call(this)};l.ed=function(a,c,d,e,f){if(this.f)return a=this.Ma(a),this.M.oa(a,this.f,c,void 0!==d?d:null,void 0!==e?e:Ac,void 0!==f?f:null)};
-l.Pl=function(a,c,d,e,f){if(this.f)return this.M.mh(a,this.f,c,void 0!==d?d:null,void 0!==e?e:Ac,void 0!==f?f:null)};l.gl=function(a,c,d){if(!this.f)return!1;a=this.Ma(a);return this.M.nh(a,this.f,void 0!==c?c:Ac,void 0!==d?d:null)};l.Sj=function(a){return this.Ma(this.Nd(a))};l.Nd=function(a){var c=this.a.getBoundingClientRect();a=a.changedTouches?a.changedTouches[0]:a;return[a.clientX-c.left,a.clientY-c.top]};l.pf=function(){return this.get("target")};
-l.tc=function(){var a=this.pf();return void 0!==a?mf(a):null};l.Ma=function(a){var c=this.f;return c?(a=a.slice(),ji(c.pixelToCoordinateMatrix,a,a)):null};l.Qj=function(){return this.o};l.jk=function(){return this.j};l.ik=function(a){a=this.yf[a.toString()];return void 0!==a?a:null};l.Xj=function(){return this.l};l.sc=function(){return this.get("layergroup")};l.Zg=function(){return this.sc().Oc()};l.Da=function(a){var c=this.f;return c?(a=a.slice(0,2),ji(c.coordinateToPixelMatrix,a,a)):null};
-l.$a=function(){return this.get("size")};l.aa=function(){return this.get("view")};l.zk=function(){return this.a};l.xk=function(a,c,d,e){var f=this.f;if(!(f&&c in f.wantedTiles&&f.wantedTiles[c][a.ja.toString()]))return Infinity;a=d[0]-f.focus[0];d=d[1]-f.focus[1];return 65536*Math.log(e)+Math.sqrt(a*a+d*d)/e};l.Jc=function(a,c){var d=new Mh(c||a.type,this,a);this.Kg(d)};
-l.Kg=function(a){if(this.f){this.T=a.coordinate;a.frameState=this.f;var c=this.l.a,d;if(!1!==this.b(a))for(d=c.length-1;0<=d;d--){var e=c[d];if(e.f()&&!e.handleEvent(a))break}}};l.Zk=function(){var a=this.f,c=this.na;if(!c.Sa()){var d=16,e=d;if(a){var f=a.viewHints;f[0]&&(d=this.Db?8:0,e=2);f[1]&&(d=this.Cc?8:0,e=2)}c.i<d&&(Hi(c),Ji(c,d,e))}c=this.ta;d=0;for(e=c.length;d<e;++d)c[d](this,a);c.length=0};l.al=function(){this.render()};
-l.cl=function(){var a;this.pf()&&(a=this.tc());if(this.s){for(var c=0,d=this.s.length;c<d;++c)Xa(this.s[c]);this.s=null}a?(a.appendChild(this.a),a=this.ea?this.ea:a,this.s=[C(a,"keydown",this.Jc,this),C(a,"keypress",this.Jc,this)],this.c||(this.c=this.Sc.bind(this),qa.addEventListener("resize",this.c,!1))):(uf(this.a),void 0!==this.c&&(qa.removeEventListener("resize",this.c,!1),this.c=void 0));this.Sc()};l.dl=function(){this.render()};l.fl=function(){this.render()};
-l.el=function(){this.S&&(Xa(this.S),this.S=null);var a=this.aa();a&&(this.S=C(a,"propertychange",this.fl,this));this.render()};l.Lk=function(){this.render()};l.Mk=function(){this.render()};l.Kk=function(){this.N&&(this.N.forEach(Xa),this.N=null);var a=this.sc();a&&(this.N=[C(a,"propertychange",this.Mk,this),C(a,"change",this.Lk,this)]);this.render()};l.Po=function(){this.i&&qa.cancelAnimationFrame(this.i);this.Y()};l.render=function(){void 0===this.i&&(this.i=qa.requestAnimationFrame(this.Y))};
-l.Io=function(a){return this.o.remove(a)};l.Jo=function(a){return this.l.remove(a)};l.Lo=function(a){return this.sc().Oc().remove(a)};l.Mo=function(a){return this.j.remove(a)};
-l.Oo=function(a){var c,d,e,f=this.$a(),g=this.aa(),h=Wb(),k=null;if(void 0!==f&&0<f[0]&&0<f[1]&&g&&ge(g)){var k=ce(g,this.f?this.f.viewHints:void 0),m=this.sc().df(),n={};c=0;for(d=m.length;c<d;++c)n[w(m[c].layer)]=m[c];e=g.V();k={animate:!1,attributions:{},coordinateToPixelMatrix:this.Ra,extent:h,focus:this.T?this.T:e.center,index:this.pb++,layerStates:n,layerStatesArray:m,logos:Pa({},this.Je),pixelRatio:this.Ke,pixelToCoordinateMatrix:this.Le,postRenderFunctions:[],size:f,skippedFeatureUids:this.ze,
-tileQueue:this.na,time:a,usedTiles:{},viewState:e,viewHints:k,wantedTiles:{}}}if(k){a=this.R;c=f=0;for(d=a.length;c<d;++c)g=a[c],g(this,k)&&(a[f++]=g);a.length=f;k.extent=uc(e.center,e.resolution,e.rotation,k.size,h)}this.f=k;this.M.xe(k);k&&(k.animate&&this.render(),Array.prototype.push.apply(this.ta,k.postRenderFunctions),0!==this.R.length||k.viewHints[0]||k.viewHints[1]||ic(k.extent,this.xa)||(this.b(new If("moveend",this,k)),Zb(k.extent,this.xa)));this.b(new If("postrender",this,k));Fg(this.Zk,
-this)};l.ei=function(a){this.set("layergroup",a)};l.Sf=function(a){this.set("size",a)};l.$g=function(a){this.set("target",a)};l.ep=function(a){this.set("view",a)};l.ni=function(a){a=w(a).toString();this.ze[a]=!0;this.render()};
-l.Sc=function(){var a=this.tc();if(a){var c=lf(a),d=Se&&a.currentStyle,e;if(e=d)jf(c),e=!0;if(e&&"auto"!=d.width&&"auto"!=d.height&&!d.boxSizing)c=Df(a,d.width,"width","pixelWidth"),a=Df(a,d.height,"height","pixelHeight"),a=new hf(c,a);else{d=new hf(a.offsetWidth,a.offsetHeight);c=Ff(a,"padding");if(!Se||9<=Number(ef))e=yf(a,"borderLeftWidth"),f=yf(a,"borderRightWidth"),g=yf(a,"borderTopWidth"),a=yf(a,"borderBottomWidth"),a=new xf(parseFloat(g),parseFloat(f),parseFloat(a),parseFloat(e));else{e=Hf(a,
-"borderLeft");var f=Hf(a,"borderRight"),g=Hf(a,"borderTop"),a=Hf(a,"borderBottom"),a=new xf(g,f,a,e)}a=new hf(d.width-a.left-c.left-c.right-a.right,d.height-a.top-c.top-c.bottom-a.bottom)}this.Sf([a.width,a.height])}else this.Sf(void 0)};l.ri=function(a){a=w(a).toString();delete this.ze[a];this.render()};
-function Nn(a){var c=null;void 0!==a.keyboardEventTarget&&(c="string"===typeof a.keyboardEventTarget?document.getElementById(a.keyboardEventTarget):a.keyboardEventTarget);var d={},e={};if(void 0===a.logo||"boolean"===typeof a.logo&&a.logo)e["data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAA3NCSVQICAjb4U/gAAAACXBIWXMAAAHGAAABxgEXwfpGAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAhNQTFRF////AP//AICAgP//AFVVQECA////K1VVSbbbYL/fJ05idsTYJFtbbcjbJllmZszWWMTOIFhoHlNiZszTa9DdUcHNHlNlV8XRIVdiasrUHlZjIVZjaMnVH1RlIFRkH1RkH1ZlasvYasvXVsPQH1VkacnVa8vWIVZjIFRjVMPQa8rXIVVkXsXRsNveIFVkIFZlIVVj3eDeh6GmbMvXH1ZkIFRka8rWbMvXIFVkIFVjIFVkbMvWH1VjbMvWIFVlbcvWIFVla8vVIFVkbMvWbMvVH1VkbMvWIFVlbcvWIFVkbcvVbMvWjNPbIFVkU8LPwMzNIFVkbczWIFVkbsvWbMvXIFVkRnB8bcvW2+TkW8XRIFVkIlZlJVloJlpoKlxrLl9tMmJwOWd0Omh1RXF8TneCT3iDUHiDU8LPVMLPVcLPVcPQVsPPVsPQV8PQWMTQWsTQW8TQXMXSXsXRX4SNX8bSYMfTYcfTYsfTY8jUZcfSZsnUaIqTacrVasrVa8jTa8rWbI2VbMvWbcvWdJObdcvUdszUd8vVeJaee87Yfc3WgJyjhqGnitDYjaarldPZnrK2oNbborW5o9bbo9fbpLa6q9ndrL3ArtndscDDutzfu8fJwN7gwt7gxc/QyuHhy+HizeHi0NfX0+Pj19zb1+Tj2uXk29/e3uLg3+Lh3+bl4uXj4ufl4+fl5Ofl5ufl5ujm5+jmySDnBAAAAFp0Uk5TAAECAgMEBAYHCA0NDg4UGRogIiMmKSssLzU7PkJJT1JTVFliY2hrdHZ3foSFhYeJjY2QkpugqbG1tre5w8zQ09XY3uXn6+zx8vT09vf4+Pj5+fr6/P39/f3+gz7SsAAAAVVJREFUOMtjYKA7EBDnwCPLrObS1BRiLoJLnte6CQy8FLHLCzs2QUG4FjZ5GbcmBDDjxJBXDWxCBrb8aM4zbkIDzpLYnAcE9VXlJSWlZRU13koIeW57mGx5XjoMZEUqwxWYQaQbSzLSkYGfKFSe0QMsX5WbjgY0YS4MBplemI4BdGBW+DQ11eZiymfqQuXZIjqwyadPNoSZ4L+0FVM6e+oGI6g8a9iKNT3o8kVzNkzRg5lgl7p4wyRUL9Yt2jAxVh6mQCogae6GmflI8p0r13VFWTHBQ0rWPW7ahgWVcPm+9cuLoyy4kCJDzCm6d8PSFoh0zvQNC5OjDJhQopPPJqph1doJBUD5tnkbZiUEqaCnB3bTqLTFG1bPn71kw4b+GFdpLElKIzRxxgYgWNYc5SCENVHKeUaltHdXx0dZ8uBI1hJ2UUDgq82CM2MwKeibqAvSO7MCABq0wXEPiqWEAAAAAElFTkSuQmCC"]=
-"http://openlayers.org/";else{var f=a.logo;"string"===typeof f?e[f]="":f instanceof HTMLElement?e[w(f).toString()]=f:ha(f)&&(e[f.src]=f.href)}f=a.layers instanceof Kj?a.layers:new Kj({layers:a.layers});d.layergroup=f;d.target=a.target;d.view=void 0!==a.view?a.view:new be;var f=yi,g;void 0!==a.renderer?Array.isArray(a.renderer)?g=a.renderer:"string"===typeof a.renderer&&(g=[a.renderer]):g=Mn;var h,k;h=0;for(k=g.length;h<k;++h){var m=g[h];if("canvas"==m){if($g){f=Gm;break}}else if("dom"==m){f=Om;break}else if("webgl"==
-m&&Tg){f=Jn;break}}var n;void 0!==a.controls?n=Array.isArray(a.controls)?new we(a.controls.slice()):a.controls:n=wg();var p;void 0!==a.interactions?p=Array.isArray(a.interactions)?new we(a.interactions.slice()):a.interactions:p=Jj();a=void 0!==a.overlays?Array.isArray(a.overlays)?new we(a.overlays.slice()):a.overlays:new we;return{controls:n,interactions:p,keyboardEventTarget:c,logos:e,overlays:a,Qo:f,values:d}}Tj();function On(a){pb.call(this);this.j=a.id;this.o=void 0!==a.insertFirst?a.insertFirst:!0;this.s=void 0!==a.stopEvent?a.stopEvent:!0;this.f=document.createElement("DIV");this.f.className="ol-overlay-container";this.f.style.position="absolute";this.autoPan=void 0!==a.autoPan?a.autoPan:!1;this.i=void 0!==a.autoPanAnimation?a.autoPanAnimation:{};this.l=void 0!==a.autoPanMargin?a.autoPanMargin:20;this.a={Hd:"",$d:"",ye:"",Be:"",visible:!0};this.c=null;C(this,rb("element"),this.Fk,this);C(this,rb("map"),
-this.Rk,this);C(this,rb("offset"),this.Vk,this);C(this,rb("position"),this.Xk,this);C(this,rb("positioning"),this.Yk,this);void 0!==a.element&&this.ai(a.element);this.gi(void 0!==a.offset?a.offset:[0,0]);this.ji(void 0!==a.positioning?a.positioning:"top-left");void 0!==a.position&&this.qf(a.position)}y(On,pb);l=On.prototype;l.be=function(){return this.get("element")};l.Wa=function(){return this.j};l.ce=function(){return this.get("map")};l.Fg=function(){return this.get("offset")};l.ah=function(){return this.get("position")};
-l.Gg=function(){return this.get("positioning")};l.Fk=function(){sf(this.f);var a=this.be();a&&this.f.appendChild(a)};l.Rk=function(){this.c&&(uf(this.f),Xa(this.c),this.c=null);var a=this.ce();a&&(this.c=C(a,"postrender",this.render,this),Pn(this),a=this.s?a.v:a.B,this.o?tf(a,this.f,0):a.appendChild(this.f))};l.render=function(){Pn(this)};l.Vk=function(){Pn(this)};
-l.Xk=function(){Pn(this);if(void 0!==this.get("position")&&this.autoPan){var a=this.ce();if(void 0!==a&&a.tc()){var c=Qn(a.tc(),a.$a()),d=this.be(),e=d.offsetWidth,f=d.currentStyle||qa.getComputedStyle(d),e=e+(parseInt(f.marginLeft,10)+parseInt(f.marginRight,10)),f=d.offsetHeight,g=d.currentStyle||qa.getComputedStyle(d),f=f+(parseInt(g.marginTop,10)+parseInt(g.marginBottom,10)),h=Qn(d,[e,f]),d=this.l;cc(c,h)||(e=h[0]-c[0],f=c[2]-h[2],g=h[1]-c[1],h=c[3]-h[3],c=[0,0],0>e?c[0]=e-d:0>f&&(c[0]=Math.abs(f)+
-d),0>g?c[1]=g-d:0>h&&(c[1]=Math.abs(h)+d),0===c[0]&&0===c[1])||(d=a.aa().bb(),e=a.Da(d),c=[e[0]+c[0],e[1]+c[1]],this.i&&(this.i.source=d,a.Va(ne(this.i))),a.aa().jb(a.Ma(c)))}}};l.Yk=function(){Pn(this)};l.ai=function(a){this.set("element",a)};l.setMap=function(a){this.set("map",a)};l.gi=function(a){this.set("offset",a)};l.qf=function(a){this.set("position",a)};
-function Qn(a,c){var d=lf(a),e=new gf(0,0),f;f=d?lf(d):document;var g;(g=!Se||9<=Number(ef))||(jf(f),g=!0);a!=(g?f.documentElement:f.body)&&(f=zf(a),g=jf(d).b,d=g.scrollingElement?g.scrollingElement:Ve?g.body||g.documentElement:g.documentElement,g=g.parentWindow||g.defaultView,d=Se&&cf("10")&&g.pageYOffset!=d.scrollTop?new gf(d.scrollLeft,d.scrollTop):new gf(g.pageXOffset||d.scrollLeft,g.pageYOffset||d.scrollTop),e.x=f.left+d.x,e.y=f.top+d.y);return[e.x,e.y,e.x+c[0],e.y+c[1]]}
-l.ji=function(a){this.set("positioning",a)};function Rn(a,c){a.a.visible!==c&&(Cf(a.f,c),a.a.visible=c)}
-function Pn(a){var c=a.ce(),d=a.ah();if(void 0!==c&&c.f&&void 0!==d){var d=c.Da(d),e=c.$a(),c=a.f.style,f=a.Fg(),g=a.Gg(),h=f[0],f=f[1];if("bottom-right"==g||"center-right"==g||"top-right"==g)""!==a.a.$d&&(a.a.$d=c.left=""),h=Math.round(e[0]-d[0]-h)+"px",a.a.ye!=h&&(a.a.ye=c.right=h);else{""!==a.a.ye&&(a.a.ye=c.right="");if("bottom-center"==g||"center-center"==g||"top-center"==g)h-=Af(a.f).width/2;h=Math.round(d[0]+h)+"px";a.a.$d!=h&&(a.a.$d=c.left=h)}if("bottom-left"==g||"bottom-center"==g||"bottom-right"==
-g)""!==a.a.Be&&(a.a.Be=c.top=""),d=Math.round(e[1]-d[1]-f)+"px",a.a.Hd!=d&&(a.a.Hd=c.bottom=d);else{""!==a.a.Hd&&(a.a.Hd=c.bottom="");if("center-left"==g||"center-center"==g||"center-right"==g)f-=Af(a.f).height/2;d=Math.round(d[1]+f)+"px";a.a.Be!=d&&(a.a.Be=c.top=d)}Rn(a,!0)}else Rn(a,!1)};function Sn(a){a=a?a:{};this.l=void 0!==a.collapsed?a.collapsed:!0;this.o=void 0!==a.collapsible?a.collapsible:!0;this.o||(this.l=!1);var c=void 0!==a.className?a.className:"ol-overviewmap",d=void 0!==a.tipLabel?a.tipLabel:"Overview map",e=void 0!==a.collapseLabel?a.collapseLabel:"\u00ab";this.v="string"===typeof e?pf("SPAN",{},e):e;e=void 0!==a.label?a.label:"\u00bb";this.B="string"===typeof e?pf("SPAN",{},e):e;d=pf("BUTTON",{type:"button",title:d},this.o&&!this.l?this.v:this.B);C(d,"click",this.am,
-this);e=document.createElement("DIV");e.className="ol-overviewmap-map";var f=this.f=new S({controls:new we,interactions:new we,target:e,view:a.view});a.layers&&a.layers.forEach(function(a){f.gg(a)},this);var g=document.createElement("DIV");g.className="ol-overviewmap-box";g.style.boxSizing="border-box";this.j=new On({position:[0,0],positioning:"bottom-left",element:g});this.f.hg(this.j);c=pf("DIV",c+" ol-unselectable ol-control"+(this.l&&this.o?" ol-collapsed":"")+(this.o?"":" ol-uncollapsible"),
-e,d);Jf.call(this,{element:c,render:a.render?a.render:Tn,target:a.target})}y(Sn,Jf);l=Sn.prototype;l.setMap=function(a){var c=this.a;a!==c&&(c&&(c=c.aa())&&cb(c,rb("rotation"),this.Yd,this),Sn.ia.setMap.call(this,a),a&&(this.s.push(C(a,"propertychange",this.Sk,this)),0===this.f.Zg().Zb()&&this.f.ei(a.sc()),a=a.aa()))&&(C(a,rb("rotation"),this.Yd,this),ge(a)&&(this.f.Sc(),Un(this)))};
-l.Sk=function(a){"view"===a.key&&((a=a.oldValue)&&cb(a,rb("rotation"),this.Yd,this),a=this.a.aa(),C(a,rb("rotation"),this.Yd,this))};l.Yd=function(){this.f.aa().de(this.a.aa().Ka())};function Tn(){var a=this.a,c=this.f;if(a.f&&c.f){var d=a.$a(),a=a.aa().Fc(d),e=c.$a(),d=c.aa().Fc(e),f=c.Da(oc(a)),g=c.Da(mc(a)),c=Math.abs(f[0]-g[0]),f=Math.abs(f[1]-g[1]),g=e[0],e=e[1];c<.1*g||f<.1*e||c>.75*g||f>.75*e?Un(this):cc(d,a)||(a=this.f,d=this.a.aa(),a.aa().jb(d.bb()))}Vn(this)}
-function Un(a){var c=a.a;a=a.f;var d=c.$a(),c=c.aa().Fc(d),d=a.$a();a=a.aa();yc(c,1/(.1*Math.pow(2,Math.log(7.5)/Math.LN2/2)));a.Ze(c,d)}function Vn(a){var c=a.a,d=a.f;if(c.f&&d.f){var e=c.$a(),f=c.aa(),g=d.aa();d.$a();var d=f.Ka(),c=a.j,h=a.j.be(),f=f.Fc(e),e=g.$(),g=lc(f),f=nc(f),k;if(a=a.a.aa().bb())k=[g[0]-a[0],g[1]-a[1]],Rb(k,d),Mb(k,a);c.qf(k);h&&(h.style.width=Math.abs((g[0]-f[0])/e)+"px",h.style.height=Math.abs((f[1]-g[1])/e)+"px")}}l.am=function(a){a.preventDefault();Wn(this)};
-function Wn(a){a.element.classList.toggle("ol-collapsed");a.l?vf(a.v,a.B):vf(a.B,a.v);a.l=!a.l;var c=a.f;a.l||c.f||(c.Sc(),Un(a),bb(c,"postrender",function(){Vn(this)},a))}l.$l=function(){return this.o};l.cm=function(a){this.o!==a&&(this.o=a,this.element.classList.toggle("ol-uncollapsible"),!a&&this.l&&Wn(this))};l.bm=function(a){this.o&&this.l!==a&&Wn(this)};l.Zl=function(){return this.l};l.kk=function(){return this.f};function Xn(a){a=a?a:{};var c=void 0!==a.className?a.className:"ol-scale-line";this.o=document.createElement("DIV");this.o.className=c+"-inner";this.f=document.createElement("DIV");this.f.className=c+" ol-unselectable";this.f.appendChild(this.o);this.v=null;this.j=void 0!==a.minWidth?a.minWidth:64;this.l=!1;this.M=void 0;this.B="";Jf.call(this,{element:this.f,render:a.render?a.render:Yn,target:a.target});C(this,rb("units"),this.R,this);this.N(a.units||"metric")}y(Xn,Jf);var Zn=[1,2,5];
-Xn.prototype.vb=function(){return this.get("units")};function Yn(a){(a=a.frameState)?this.v=a.viewState:this.v=null;$n(this)}Xn.prototype.R=function(){$n(this)};Xn.prototype.N=function(a){this.set("units",a)};
-function $n(a){var c=a.v;if(c){var d=c.projection,e=d.Vb(),c=d.getPointResolution(c.resolution,c.center)*e,e=a.j*c,d="",f=a.vb();"degrees"==f?(d=Ec.degrees,c/=d,e<d/60?(d="\u2033",c*=3600):e<d?(d="\u2032",c*=60):d="\u00b0"):"imperial"==f?.9144>e?(d="in",c/=.0254):1609.344>e?(d="ft",c/=.3048):(d="mi",c/=1609.344):"nautical"==f?(c/=1852,d="nm"):"metric"==f?1>e?(d="mm",c*=1E3):1E3>e?d="m":(d="km",c/=1E3):"us"==f&&(.9144>e?(d="in",c*=39.37):1609.344>e?(d="ft",c/=.30480061):(d="mi",c/=1609.3472));for(var f=
-3*Math.floor(Math.log(a.j*c)/Math.log(10)),g;;){g=Zn[(f%3+3)%3]*Math.pow(10,Math.floor(f/3));e=Math.round(g/c);if(isNaN(e)){Cf(a.f,!1);a.l=!1;return}if(e>=a.j)break;++f}c=g+" "+d;a.B!=c&&(a.o.innerHTML=c,a.B=c);a.M!=e&&(a.o.style.width=e+"px",a.M=e);a.l||(Cf(a.f,!0),a.l=!0)}else a.l&&(Cf(a.f,!1),a.l=!1)};function ao(a){a=a?a:{};this.f=void 0;this.l=bo;this.v=[];this.M=this.j=0;this.T=null;this.ea=!1;this.Y=void 0!==a.duration?a.duration:200;var c=void 0!==a.className?a.className:"ol-zoomslider",d=pf("BUTTON",{type:"button","class":c+"-thumb ol-unselectable"}),c=pf("DIV",[c,"ol-unselectable","ol-control"],d);this.o=new Gh(c);C(this.o,qh,this.Ek,this);C(this.o,rh,this.Ig,this);C(this.o,sh,this.Jg,this);C(c,"click",this.Dk,this);C(d,"click",hb);Jf.call(this,{element:c,render:a.render?a.render:co})}
-y(ao,Jf);ao.prototype.fa=function(){fb(this.o);ao.ia.fa.call(this)};var bo=0;l=ao.prototype;l.setMap=function(a){ao.ia.setMap.call(this,a);a&&a.render()};
-function co(a){if(a.frameState){if(!this.ea){var c=this.element,d=Af(c),e=c.firstElementChild,c=Ff(e,"margin"),f=new hf(e.offsetWidth,e.offsetHeight),e=f.width+c.right+c.left,c=f.height+c.top+c.bottom;this.T=[e,c];d.width>d.height?(this.l=1,this.M=d.width-e):(this.l=bo,this.j=d.height-c);this.ea=!0}a=a.frameState.viewState.resolution;a!==this.f&&(this.f=a,eo(this,a))}}
-l.Dk=function(a){var c=this.a,d=c.aa(),e=d.$();c.Va(pe({resolution:e,duration:this.Y,easing:je}));a=fo(this,Da(1===this.l?(a.offsetX-this.T[0]/2)/this.M:(a.offsetY-this.T[1]/2)/this.j,0,1));d.Qb(d.constrainResolution(a))};
-l.Ek=function(a){if(!this.B&&a.b.target===this.element.firstElementChild&&(he(this.a.aa(),1),this.N=a.clientX,this.R=a.clientY,this.B=!0,0===this.v.length)){a=this.Ig;var c=this.Jg;this.v.push(C(document,"mousemove",a,this),C(document,"touchmove",a,this),C(document,rh,a,this),C(document,"mouseup",c,this),C(document,"touchend",c,this),C(document,sh,c,this))}};
-l.Ig=function(a){if(this.B){var c=this.element.firstElementChild;this.f=fo(this,Da(1===this.l?(a.clientX-this.N+parseInt(c.style.left,10))/this.M:(a.clientY-this.R+parseInt(c.style.top,10))/this.j,0,1));this.a.aa().Qb(this.f);eo(this,this.f);this.N=a.clientX;this.R=a.clientY}};l.Jg=function(){if(this.B){var a=this.a,c=a.aa();he(c,-1);a.Va(pe({resolution:this.f,duration:this.Y,easing:je}));a=c.constrainResolution(this.f);c.Qb(a);this.B=!1;this.R=this.N=void 0;this.v.forEach(Xa);this.v.length=0}};
-function eo(a,c){var d;d=1-fe(a.a.aa())(c);var e=a.element.firstElementChild;1==a.l?e.style.left=a.M*d+"px":e.style.top=a.j*d+"px"}function fo(a,c){return ee(a.a.aa())(1-c)};function go(a){a=a?a:{};this.f=a.extent?a.extent:null;var c=void 0!==a.className?a.className:"ol-zoom-extent",d=pf("BUTTON",{type:"button",title:void 0!==a.tipLabel?a.tipLabel:"Fit to extent"},void 0!==a.label?a.label:"E");C(d,"click",this.l,this);c=pf("DIV",c+" ol-unselectable ol-control",d);Jf.call(this,{element:c,target:a.target})}y(go,Jf);go.prototype.l=function(a){a.preventDefault();var c=this.a;a=c.aa();var d=this.f?this.f:a.i.O(),c=c.$a();a.Ze(d,c)};function ho(a){pb.call(this);a=a?a:{};this.a=null;C(this,rb("tracking"),this.El,this);this.mf(void 0!==a.tracking?a.tracking:!1)}y(ho,pb);l=ho.prototype;l.fa=function(){this.mf(!1);ho.ia.fa.call(this)};
-l.Xn=function(a){if(null!==a.alpha){var c=Ha(a.alpha);this.set("alpha",c);"boolean"===typeof a.absolute&&a.absolute?this.set("heading",c):fa(a.webkitCompassHeading)&&-1!=a.webkitCompassAccuracy&&this.set("heading",Ha(a.webkitCompassHeading))}null!==a.beta&&this.set("beta",Ha(a.beta));null!==a.gamma&&this.set("gamma",Ha(a.gamma));this.u()};l.Kj=function(){return this.get("alpha")};l.Nj=function(){return this.get("beta")};l.Uj=function(){return this.get("gamma")};l.Dl=function(){return this.get("heading")};
-l.Vg=function(){return this.get("tracking")};l.El=function(){if(ah){var a=this.Vg();a&&!this.a?this.a=C(qa,"deviceorientation",this.Xn,this):a||null===this.a||(Xa(this.a),this.a=null)}};l.mf=function(a){this.set("tracking",a)};function io(){this.defaultDataProjection=null}function jo(a,c,d){var e;d&&(e={dataProjection:d.dataProjection?d.dataProjection:a.Oa(c),featureProjection:d.featureProjection});return ko(a,e)}function ko(a,c){var d;c&&(d={featureProjection:c.featureProjection,dataProjection:c.dataProjection?c.dataProjection:a.defaultDataProjection,rightHanded:c.rightHanded},c.decimals&&(d.decimals=c.decimals));return d}
-function lo(a,c,d){var e=d?Ic(d.featureProjection):null,f=d?Ic(d.dataProjection):null,g;e&&f&&!Zc(e,f)?a instanceof dd?g=(c?a.clone():a).hb(c?e:f,c?f:e):g=cd(c?a.slice():a,c?e:f,c?f:e):g=a;if(c&&d&&d.decimals){var h=Math.pow(10,d.decimals);a=function(a){for(var c=0,d=a.length;c<d;++c)a[c]=Math.round(a[c]*h)/h;return a};Array.isArray(g)?a(g):g.mc(a)}return g};function mo(){this.defaultDataProjection=null}y(mo,io);function no(a){return ha(a)?a:"string"===typeof a?(a=JSON.parse(a))?a:null:null}l=mo.prototype;l.X=function(){return"json"};l.Nb=function(a,c){return this.Pc(no(a),jo(this,a,c))};l.Ca=function(a,c){return this.Ff(no(a),jo(this,a,c))};l.Qc=function(a,c){return this.Mh(no(a),jo(this,a,c))};l.Oa=function(a){return this.Th(no(a))};l.yd=function(a,c){return JSON.stringify(this.Tc(a,c))};l.Sb=function(a,c){return JSON.stringify(this.Ee(a,c))};
-l.Uc=function(a,c){return JSON.stringify(this.Ge(a,c))};function oo(a,c,d,e,f,g){var h=NaN,k=NaN,m=(d-c)/e;if(0!==m)if(1==m)h=a[c],k=a[c+1];else if(2==m)h=(1-f)*a[c]+f*a[c+e],k=(1-f)*a[c+1]+f*a[c+e+1];else{var k=a[c],m=a[c+1],n=0,h=[0],p;for(p=c+e;p<d;p+=e){var q=a[p],r=a[p+1],n=n+Math.sqrt((q-k)*(q-k)+(r-m)*(r-m));h.push(n);k=q;m=r}d=f*n;m=0;n=h.length;for(p=!1;m<n;)f=m+(n-m>>1),k=+tb(h[f],d),0>k?m=f+1:(n=f,p=!k);f=p?m:~m;0>f?(d=(d-h[-f-2])/(h[-f-1]-h[-f-2]),c+=(-f-2)*e,h=La(a[c],a[c+e],d),k=La(a[c+1],a[c+e+1],d)):(h=a[c+f*e],k=a[c+f*e+1])}return g?(g[0]=
-h,g[1]=k,g):[h,k]}function po(a,c,d,e,f,g){if(d==c)return null;if(f<a[c+e-1])return g?(d=a.slice(c,c+e),d[e-1]=f,d):null;if(a[d-1]<f)return g?(d=a.slice(d-e,d),d[e-1]=f,d):null;if(f==a[c+e-1])return a.slice(c,c+e);c/=e;for(d/=e;c<d;)g=c+d>>1,f<a[(g+1)*e-1]?d=g:c=g+1;d=a[c*e-1];if(f==d)return a.slice((c-1)*e,(c-1)*e+e);g=(f-d)/(a[(c+1)*e-1]-d);d=[];var h;for(h=0;h<e-1;++h)d.push(La(a[(c-1)*e+h],a[c*e+h],g));d.push(f);return d}
-function qo(a,c,d,e,f,g){var h=0;if(g)return po(a,h,c[c.length-1],d,e,f);if(e<a[d-1])return f?(a=a.slice(0,d),a[d-1]=e,a):null;if(a[a.length-1]<e)return f?(a=a.slice(a.length-d),a[d-1]=e,a):null;f=0;for(g=c.length;f<g;++f){var k=c[f];if(h!=k){if(e<a[h+d-1])break;if(e<=a[k-1])return po(a,h,k,d,e,!1);h=k}}return null};function T(a,c){sd.call(this);this.i=null;this.M=this.N=this.j=-1;this.ma(a,c)}y(T,sd);l=T.prototype;l.rj=function(a){this.A?xb(this.A,a):this.A=a.slice();this.u()};l.clone=function(){var a=new T(null);a.ba(this.f,this.A.slice());return a};l.rb=function(a,c,d,e){if(e<$b(this.O(),a,c))return e;this.M!=this.g&&(this.N=Math.sqrt(zd(this.A,0,this.A.length,this.a,0)),this.M=this.g);return Bd(this.A,0,this.A.length,this.a,this.N,!1,a,c,d,e)};
-l.Hj=function(a,c){return Qd(this.A,0,this.A.length,this.a,a,c)};l.fm=function(a,c){return"XYM"!=this.f&&"XYZM"!=this.f?null:po(this.A,0,this.A.length,this.a,a,void 0!==c?c:!1)};l.Z=function(){return Gd(this.A,0,this.A.length,this.a)};l.wg=function(a,c){return oo(this.A,0,this.A.length,this.a,a,c)};l.gm=function(){var a=this.A,c=this.a,d=a[0],e=a[1],f=0,g;for(g=0+c;g<this.A.length;g+=c)var h=a[g],k=a[g+1],f=f+Math.sqrt((h-d)*(h-d)+(k-e)*(k-e)),d=h,e=k;return f};
-function xk(a){a.j!=a.g&&(a.i=a.wg(.5,a.i),a.j=a.g);return a.i}l.Ic=function(a){var c=[];c.length=Id(this.A,0,this.A.length,this.a,a,c,0);a=new T(null);a.ba("XY",c);return a};l.X=function(){return"LineString"};l.Ia=function(a){return Rd(this.A,0,this.A.length,this.a,a)};l.ma=function(a,c){a?(vd(this,c,a,1),this.A||(this.A=[]),this.A.length=Ed(this.A,0,a,this.a),this.u()):this.ba("XY",null)};l.ba=function(a,c){ud(this,a,c);this.u()};function U(a,c){sd.call(this);this.i=[];this.j=this.M=-1;this.ma(a,c)}y(U,sd);l=U.prototype;l.sj=function(a){this.A?xb(this.A,a.ga().slice()):this.A=a.ga().slice();this.i.push(this.A.length);this.u()};l.clone=function(){var a=new U(null);a.ba(this.f,this.A.slice(),this.i.slice());return a};l.rb=function(a,c,d,e){if(e<$b(this.O(),a,c))return e;this.j!=this.g&&(this.M=Math.sqrt(Ad(this.A,0,this.i,this.a,0)),this.j=this.g);return Cd(this.A,0,this.i,this.a,this.M,!1,a,c,d,e)};
-l.im=function(a,c,d){return"XYM"!=this.f&&"XYZM"!=this.f||0===this.A.length?null:qo(this.A,this.i,this.a,a,void 0!==c?c:!1,void 0!==d?d:!1)};l.Z=function(){return Hd(this.A,0,this.i,this.a)};l.zb=function(){return this.i};l.bk=function(a){if(0>a||this.i.length<=a)return null;var c=new T(null);c.ba(this.f,this.A.slice(0===a?0:this.i[a-1],this.i[a]));return c};
-l.gd=function(){var a=this.A,c=this.i,d=this.f,e=[],f=0,g,h;g=0;for(h=c.length;g<h;++g){var k=c[g],m=new T(null);m.ba(d,a.slice(f,k));e.push(m);f=k}return e};function yk(a){var c=[],d=a.A,e=0,f=a.i;a=a.a;var g,h;g=0;for(h=f.length;g<h;++g){var k=f[g],e=oo(d,e,k,a,.5);xb(c,e);e=k}return c}l.Ic=function(a){var c=[],d=[],e=this.A,f=this.i,g=this.a,h=0,k=0,m,n;m=0;for(n=f.length;m<n;++m){var p=f[m],k=Id(e,h,p,g,a,c,k);d.push(k);h=p}c.length=k;a=new U(null);a.ba("XY",c,d);return a};l.X=function(){return"MultiLineString"};
-l.Ia=function(a){a:{var c=this.A,d=this.i,e=this.a,f=0,g,h;g=0;for(h=d.length;g<h;++g){if(Rd(c,f,d[g],e,a)){a=!0;break a}f=d[g]}a=!1}return a};l.ma=function(a,c){if(a){vd(this,c,a,2);this.A||(this.A=[]);var d=Fd(this.A,0,a,this.a,this.i);this.A.length=0===d.length?0:d[d.length-1];this.u()}else this.ba("XY",null,this.i)};l.ba=function(a,c,d){ud(this,a,c);this.i=d;this.u()};
-function ro(a,c){var d=a.f,e=[],f=[],g,h;g=0;for(h=c.length;g<h;++g){var k=c[g];0===g&&(d=k.f);xb(e,k.ga());f.push(e.length)}a.ba(d,e,f)};function so(a,c){sd.call(this);this.ma(a,c)}y(so,sd);l=so.prototype;l.uj=function(a){this.A?xb(this.A,a.ga()):this.A=a.ga().slice();this.u()};l.clone=function(){var a=new so(null);a.ba(this.f,this.A.slice());return a};l.rb=function(a,c,d,e){if(e<$b(this.O(),a,c))return e;var f=this.A,g=this.a,h,k,m;h=0;for(k=f.length;h<k;h+=g)if(m=Ga(a,c,f[h],f[h+1]),m<e){e=m;for(m=0;m<g;++m)d[m]=f[h+m];d.length=g}return e};l.Z=function(){return Gd(this.A,0,this.A.length,this.a)};
-l.mk=function(a){var c=this.A?this.A.length/this.a:0;if(0>a||c<=a)return null;c=new D(null);c.ba(this.f,this.A.slice(a*this.a,(a+1)*this.a));return c};l.ee=function(){var a=this.A,c=this.f,d=this.a,e=[],f,g;f=0;for(g=a.length;f<g;f+=d){var h=new D(null);h.ba(c,a.slice(f,f+d));e.push(h)}return e};l.X=function(){return"MultiPoint"};l.Ia=function(a){var c=this.A,d=this.a,e,f,g,h;e=0;for(f=c.length;e<f;e+=d)if(g=c[e],h=c[e+1],bc(a,g,h))return!0;return!1};
-l.ma=function(a,c){a?(vd(this,c,a,1),this.A||(this.A=[]),this.A.length=Ed(this.A,0,a,this.a),this.u()):this.ba("XY",null)};l.ba=function(a,c){ud(this,a,c);this.u()};function to(a,c){sd.call(this);this.i=[];this.M=-1;this.N=null;this.T=this.R=this.S=-1;this.j=null;this.ma(a,c)}y(to,sd);l=to.prototype;l.vj=function(a){if(this.A){var c=this.A.length;xb(this.A,a.ga());a=a.zb().slice();var d,e;d=0;for(e=a.length;d<e;++d)a[d]+=c}else this.A=a.ga().slice(),a=a.zb().slice(),this.i.push();this.i.push(a);this.u()};l.clone=function(){for(var a=new to(null),c=this.i.length,d=Array(c),e=0;e<c;++e)d[e]=this.i[e].slice();uo(a,this.f,this.A.slice(),d);return a};
-l.rb=function(a,c,d,e){if(e<$b(this.O(),a,c))return e;if(this.R!=this.g){var f=this.i,g=0,h=0,k,m;k=0;for(m=f.length;k<m;++k)var n=f[k],h=Ad(this.A,g,n,this.a,h),g=n[n.length-1];this.S=Math.sqrt(h);this.R=this.g}f=zk(this);g=this.i;h=this.a;k=this.S;m=0;var n=[NaN,NaN],p,q;p=0;for(q=g.length;p<q;++p){var r=g[p];e=Cd(f,m,r,h,k,!0,a,c,d,e,n);m=r[r.length-1]}return e};
-l.wc=function(a,c){var d;a:{d=zk(this);var e=this.i,f=0;if(0!==e.length){var g,h;g=0;for(h=e.length;g<h;++g){var k=e[g];if(Od(d,f,k,this.a,a,c)){d=!0;break a}f=k[k.length-1]}}d=!1}return d};l.jm=function(){var a=zk(this),c=this.i,d=0,e=0,f,g;f=0;for(g=c.length;f<g;++f)var h=c[f],e=e+xd(a,d,h,this.a),d=h[h.length-1];return e};
-l.Z=function(a){var c;void 0!==a?(c=zk(this).slice(),Wd(c,this.i,this.a,a)):c=this.A;a=c;c=this.i;var d=this.a,e=0,f=[],g=0,h,k;h=0;for(k=c.length;h<k;++h){var m=c[h];f[g++]=Hd(a,e,m,d,f[g]);e=m[m.length-1]}f.length=g;return f};
-function Ak(a){if(a.M!=a.g){var c=a.A,d=a.i,e=a.a,f=0,g=[],h,k,m=Wb();h=0;for(k=d.length;h<k;++h){var n=d[h],m=gc(c,f,n[0],e);g.push((m[0]+m[2])/2,(m[1]+m[3])/2);f=n[n.length-1]}c=zk(a);d=a.i;e=a.a;f=0;h=[];k=0;for(m=d.length;k<m;++k)n=d[k],h=Pd(c,f,n,e,g,2*k,h),f=n[n.length-1];a.N=h;a.M=a.g}return a.N}l.Zj=function(){var a=new so(null);a.ba("XY",Ak(this).slice());return a};
-function zk(a){if(a.T!=a.g){var c=a.A,d;a:{d=a.i;var e,f;e=0;for(f=d.length;e<f;++e)if(!Ud(c,d[e],a.a,void 0)){d=!1;break a}d=!0}d?a.j=c:(a.j=c.slice(),a.j.length=Wd(a.j,a.i,a.a));a.T=a.g}return a.j}l.Ic=function(a){var c=[],d=[],e=this.A,f=this.i,g=this.a;a=Math.sqrt(a);var h=0,k=0,m,n;m=0;for(n=f.length;m<n;++m){var p=f[m],q=[],k=Jd(e,h,p,g,a,c,k,q);d.push(q);h=p[p.length-1]}c.length=k;e=new to(null);uo(e,"XY",c,d);return e};
-l.pk=function(a){if(0>a||this.i.length<=a)return null;var c;0===a?c=0:(c=this.i[a-1],c=c[c.length-1]);a=this.i[a].slice();var d=a[a.length-1];if(0!==c){var e,f;e=0;for(f=a.length;e<f;++e)a[e]-=c}e=new F(null);e.ba(this.f,this.A.slice(c,d),a);return e};l.Qd=function(){var a=this.f,c=this.A,d=this.i,e=[],f=0,g,h,k,m;g=0;for(h=d.length;g<h;++g){var n=d[g].slice(),p=n[n.length-1];if(0!==f)for(k=0,m=n.length;k<m;++k)n[k]-=f;k=new F(null);k.ba(a,c.slice(f,p),n);e.push(k);f=p}return e};l.X=function(){return"MultiPolygon"};
-l.Ia=function(a){a:{var c=zk(this),d=this.i,e=this.a,f=0,g,h;g=0;for(h=d.length;g<h;++g){var k=d[g];if(Sd(c,f,k,e,a)){a=!0;break a}f=k[k.length-1]}a=!1}return a};l.ma=function(a,c){if(a){vd(this,c,a,3);this.A||(this.A=[]);var d=this.A,e=this.a,f=this.i,g=0,f=f?f:[],h=0,k,m;k=0;for(m=a.length;k<m;++k)g=Fd(d,g,a[k],e,f[h]),f[h++]=g,g=g[g.length-1];f.length=h;0===f.length?this.A.length=0:(d=f[f.length-1],this.A.length=0===d.length?0:d[d.length-1]);this.u()}else uo(this,"XY",null,this.i)};
-function uo(a,c,d,e){ud(a,c,d);a.i=e;a.u()}function vo(a,c){var d=a.f,e=[],f=[],g,h,k;g=0;for(h=c.length;g<h;++g){var m=c[g];0===g&&(d=m.f);var n=e.length;k=m.zb();var p,q;p=0;for(q=k.length;p<q;++p)k[p]+=n;xb(e,m.ga());f.push(k)}uo(a,d,e,f)};function wo(a){a=a?a:{};this.defaultDataProjection=null;this.b=a.geometryName}y(wo,mo);
-function xo(a,c){if(!a)return null;var d;if(fa(a.x)&&fa(a.y))d="Point";else if(a.points)d="MultiPoint";else if(a.paths)d=1===a.paths.length?"LineString":"MultiLineString";else if(a.rings){var e=a.rings,f=yo(a),g=[];d=[];var h,k;h=0;for(k=e.length;h<k;++h){var m=wb(e[h]);Td(m,0,m.length,f.length)?g.push([e[h]]):d.push(e[h])}for(;d.length;){e=d.shift();f=!1;for(h=g.length-1;0<=h;h--)if(cc((new Kd(g[h][0])).O(),(new Kd(e)).O())){g[h].push(e);f=!0;break}f||g.push([e.reverse()])}a=Pa({},a);1===g.length?
-(d="Polygon",a.rings=g[0]):(d="MultiPolygon",a.rings=g)}return lo((0,zo[d])(a),!1,c)}function yo(a){var c="XY";!0===a.hasZ&&!0===a.hasM?c="XYZM":!0===a.hasZ?c="XYZ":!0===a.hasM&&(c="XYM");return c}function Ao(a){a=a.f;return{hasZ:"XYZ"===a||"XYZM"===a,hasM:"XYM"===a||"XYZM"===a}}
-var zo={Point:function(a){return void 0!==a.m&&void 0!==a.z?new D([a.x,a.y,a.z,a.m],"XYZM"):void 0!==a.z?new D([a.x,a.y,a.z],"XYZ"):void 0!==a.m?new D([a.x,a.y,a.m],"XYM"):new D([a.x,a.y])},LineString:function(a){return new T(a.paths[0],yo(a))},Polygon:function(a){return new F(a.rings,yo(a))},MultiPoint:function(a){return new so(a.points,yo(a))},MultiLineString:function(a){return new U(a.paths,yo(a))},MultiPolygon:function(a){return new to(a.rings,yo(a))}},Bo={Point:function(a){var c=a.Z();a=a.f;
-if("XYZ"===a)return{x:c[0],y:c[1],z:c[2]};if("XYM"===a)return{x:c[0],y:c[1],m:c[2]};if("XYZM"===a)return{x:c[0],y:c[1],z:c[2],m:c[3]};if("XY"===a)return{x:c[0],y:c[1]}},LineString:function(a){var c=Ao(a);return{hasZ:c.hasZ,hasM:c.hasM,paths:[a.Z()]}},Polygon:function(a){var c=Ao(a);return{hasZ:c.hasZ,hasM:c.hasM,rings:a.Z(!1)}},MultiPoint:function(a){var c=Ao(a);return{hasZ:c.hasZ,hasM:c.hasM,points:a.Z()}},MultiLineString:function(a){var c=Ao(a);return{hasZ:c.hasZ,hasM:c.hasM,paths:a.Z()}},MultiPolygon:function(a){var c=
-Ao(a);a=a.Z(!1);for(var d=[],e=0;e<a.length;e++)for(var f=a[e].length-1;0<=f;f--)d.push(a[e][f]);return{hasZ:c.hasZ,hasM:c.hasM,rings:d}}};l=wo.prototype;l.Pc=function(a,c){var d=xo(a.geometry,c),e=new zl;this.b&&e.zc(this.b);e.Ta(d);c&&c.hf&&a.attributes[c.hf]&&e.hc(a.attributes[c.hf]);a.attributes&&e.C(a.attributes);return e};
-l.Ff=function(a,c){var d=c?c:{};if(a.features){var e=[],f=a.features,g,h;d.hf=a.objectIdFieldName;g=0;for(h=f.length;g<h;++g)e.push(this.Pc(f[g],d));return e}return[this.Pc(a,d)]};l.Mh=function(a,c){return xo(a,c)};l.Th=function(a){return a.spatialReference&&a.spatialReference.wkid?Ic("EPSG:"+a.spatialReference.wkid):null};function Co(a,c){return(0,Bo[a.X()])(lo(a,!0,c),c)}l.Ge=function(a,c){return Co(a,ko(this,c))};
-l.Tc=function(a,c){c=ko(this,c);var d={},e=a.W();e&&(d.geometry=Co(e,c));e=a.L();delete e[a.a];d.attributes=Sa(e)?{}:e;c&&c.featureProjection&&(d.spatialReference={wkid:Ic(c.featureProjection).eb.split(":").pop()});return d};l.Ee=function(a,c){c=ko(this,c);var d=[],e,f;e=0;for(f=a.length;e<f;++e)d.push(this.Tc(a[e],c));return{features:d}};function Do(a){dd.call(this);this.c=a?a:null;Eo(this)}y(Do,dd);function Fo(a){var c=[],d,e;d=0;for(e=a.length;d<e;++d)c.push(a[d].clone());return c}function Go(a){var c,d;if(a.c)for(c=0,d=a.c.length;c<d;++c)cb(a.c[c],"change",a.u,a)}function Eo(a){var c,d;if(a.c)for(c=0,d=a.c.length;c<d;++c)C(a.c[c],"change",a.u,a)}l=Do.prototype;l.clone=function(){var a=new Do(null);a.ci(this.c);return a};
-l.rb=function(a,c,d,e){if(e<$b(this.O(),a,c))return e;var f=this.c,g,h;g=0;for(h=f.length;g<h;++g)e=f[g].rb(a,c,d,e);return e};l.wc=function(a,c){var d=this.c,e,f;e=0;for(f=d.length;e<f;++e)if(d[e].wc(a,c))return!0;return!1};l.Jd=function(a){ec(Infinity,Infinity,-Infinity,-Infinity,a);for(var c=this.c,d=0,e=c.length;d<e;++d)jc(a,c[d].O());return a};l.bf=function(){return Fo(this.c)};
-l.hd=function(a){this.s!=this.g&&(Qa(this.l),this.o=0,this.s=this.g);if(0>a||0!==this.o&&a<this.o)return this;var c=a.toString();if(this.l.hasOwnProperty(c))return this.l[c];var d=[],e=this.c,f=!1,g,h;g=0;for(h=e.length;g<h;++g){var k=e[g],m=k.hd(a);d.push(m);m!==k&&(f=!0)}if(f)return a=new Do(null),Go(a),a.c=d,Eo(a),a.u(),this.l[c]=a;this.o=a;return this};l.X=function(){return"GeometryCollection"};l.Ia=function(a){var c=this.c,d,e;d=0;for(e=c.length;d<e;++d)if(c[d].Ia(a))return!0;return!1};
-l.Sa=function(){return 0===this.c.length};l.rotate=function(a,c){for(var d=this.c,e=0,f=d.length;e<f;++e)d[e].rotate(a,c);this.u()};l.ci=function(a){a=Fo(a);Go(this);this.c=a;Eo(this);this.u()};l.mc=function(a){var c=this.c,d,e;d=0;for(e=c.length;d<e;++d)c[d].mc(a);this.u()};l.Nc=function(a,c){var d=this.c,e,f;e=0;for(f=d.length;e<f;++e)d[e].Nc(a,c);this.u()};l.fa=function(){Go(this);Do.ia.fa.call(this)};function Ho(a){a=a?a:{};this.defaultDataProjection=null;this.defaultDataProjection=Ic(a.defaultDataProjection?a.defaultDataProjection:"EPSG:4326");this.b=a.geometryName}y(Ho,mo);function Io(a,c){return a?lo((0,Jo[a.type])(a),!1,c):null}function Ko(a,c){return(0,Lo[a.X()])(lo(a,!0,c),c)}
-var Jo={Point:function(a){return new D(a.coordinates)},LineString:function(a){return new T(a.coordinates)},Polygon:function(a){return new F(a.coordinates)},MultiPoint:function(a){return new so(a.coordinates)},MultiLineString:function(a){return new U(a.coordinates)},MultiPolygon:function(a){return new to(a.coordinates)},GeometryCollection:function(a,c){var d=a.geometries.map(function(a){return Io(a,c)});return new Do(d)}},Lo={Point:function(a){return{type:"Point",coordinates:a.Z()}},LineString:function(a){return{type:"LineString",
-coordinates:a.Z()}},Polygon:function(a,c){var d;c&&(d=c.rightHanded);return{type:"Polygon",coordinates:a.Z(d)}},MultiPoint:function(a){return{type:"MultiPoint",coordinates:a.Z()}},MultiLineString:function(a){return{type:"MultiLineString",coordinates:a.Z()}},MultiPolygon:function(a,c){var d;c&&(d=c.rightHanded);return{type:"MultiPolygon",coordinates:a.Z(d)}},GeometryCollection:function(a,c){return{type:"GeometryCollection",geometries:a.c.map(function(a){var e=Pa({},c);delete e.featureProjection;return Ko(a,
-e)})}},Circle:function(){return{type:"GeometryCollection",geometries:[]}}};l=Ho.prototype;l.Pc=function(a,c){var d=Io(a.geometry,c),e=new zl;this.b&&e.zc(this.b);e.Ta(d);void 0!==a.id&&e.hc(a.id);a.properties&&e.C(a.properties);return e};l.Ff=function(a,c){if("Feature"==a.type)return[this.Pc(a,c)];if("FeatureCollection"==a.type){var d=[],e=a.features,f,g;f=0;for(g=e.length;f<g;++f)d.push(this.Pc(e[f],c));return d}return[]};l.Mh=function(a,c){return Io(a,c)};
-l.Th=function(a){return(a=a.crs)?"name"==a.type?Ic(a.properties.name):"EPSG"==a.type?Ic("EPSG:"+a.properties.code):null:this.defaultDataProjection};l.Tc=function(a,c){c=ko(this,c);var d={type:"Feature"},e=a.Wa();void 0!==e&&(d.id=e);(e=a.W())?d.geometry=Ko(e,c):d.geometry=null;e=a.L();delete e[a.a];Sa(e)?d.properties=null:d.properties=e;return d};l.Ee=function(a,c){c=ko(this,c);var d=[],e,f;e=0;for(f=a.length;e<f;++e)d.push(this.Tc(a[e],c));return{type:"FeatureCollection",features:d}};
-l.Ge=function(a,c){return Ko(a,ko(this,c))};function Mo(){this.f=new XMLSerializer;this.defaultDataProjection=null}y(Mo,io);l=Mo.prototype;l.X=function(){return"xml"};l.Nb=function(a,c){if(Gl(a))return No(this,a,c);if(Hl(a))return this.Kh(a,c);if("string"===typeof a){var d=Il(a);return No(this,d,c)}return null};function No(a,c,d){a=Oo(a,c,d);return 0<a.length?a[0]:null}l.Ca=function(a,c){if(Gl(a))return Oo(this,a,c);if(Hl(a))return this.gc(a,c);if("string"===typeof a){var d=Il(a);return Oo(this,d,c)}return[]};
-function Oo(a,c,d){var e=[];for(c=c.firstChild;c;c=c.nextSibling)1==c.nodeType&&xb(e,a.gc(c,d));return e}l.Qc=function(a,c){if(Gl(a))return this.v(a,c);if(Hl(a)){var d=this.te(a,[jo(this,a,c?c:{})]);return d?d:null}return"string"===typeof a?(d=Il(a),this.v(d,c)):null};l.Oa=function(a){return Gl(a)?this.Lf(a):Hl(a)?this.we(a):"string"===typeof a?(a=Il(a),this.Lf(a)):null};l.Lf=function(){return this.defaultDataProjection};l.we=function(){return this.defaultDataProjection};
-l.yd=function(a,c){var d=this.B(a,c);return this.f.serializeToString(d)};l.Sb=function(a,c){var d=this.a(a,c);return this.f.serializeToString(d)};l.Uc=function(a,c){var d=this.s(a,c);return this.f.serializeToString(d)};function Po(a){a=a?a:{};this.featureType=a.featureType;this.featureNS=a.featureNS;this.srsName=a.srsName;this.schemaLocation="";this.b={};this.b["http://www.opengis.net/gml"]={featureMember:Ll(Po.prototype.qd),featureMembers:Ll(Po.prototype.qd)};Mo.call(this)}y(Po,Mo);var Qo=/^[\s\xa0]*$/;l=Po.prototype;
-l.qd=function(a,c){var d=a.localName,e=null;if("FeatureCollection"==d)"http://www.opengis.net/wfs"===a.namespaceURI?e=P([],this.b,a,c,this):e=P(null,this.b,a,c,this);else if("featureMembers"==d||"featureMember"==d){var f=c[0],g=f.featureType,h=f.featureNS,k,m;if(!g&&a.childNodes){g=[];h={};k=0;for(m=a.childNodes.length;k<m;++k){var n=a.childNodes[k];if(1===n.nodeType){var p=n.nodeName.split(":").pop();if(-1===g.indexOf(p)){var q="",r=0,n=n.namespaceURI,u;for(u in h){if(h[u]===n){q=u;break}++r}q||
-(q="p"+r,h[q]=n);g.push(q+":"+p)}}}"featureMember"!=d&&(f.featureType=g,f.featureNS=h)}"string"===typeof h&&(k=h,h={},h.p0=k);var f={},g=Array.isArray(g)?g:[g],v;for(v in h){p={};k=0;for(m=g.length;k<m;++k)(-1===g[k].indexOf(":")?"p0":g[k].split(":")[0])===v&&(p[g[k].split(":").pop()]="featureMembers"==d?Kl(this.Ef,this):Ll(this.Ef,this));f[h[v]]=p}"featureMember"==d?e=P(void 0,f,a,c):e=P([],f,a,c)}null===e&&(e=[]);return e};
-l.te=function(a,c){var d=c[0];d.srsName=a.firstElementChild.getAttribute("srsName");var e=P(null,this.Yf,a,c,this);if(e)return lo(e,!1,d)};
-l.Ef=function(a,c){var d,e;(e=a.getAttribute("fid"))||(e=a.getAttributeNS("http://www.opengis.net/gml","id")||"");var f={},g;for(d=a.firstElementChild;d;d=d.nextElementSibling){var h=d.localName;if(0===d.childNodes.length||1===d.childNodes.length&&(3===d.firstChild.nodeType||4===d.firstChild.nodeType)){var k=El(d,!1);Qo.test(k)&&(k=void 0);f[h]=k}else"boundedBy"!==h&&(g=h),f[h]=this.te(d,c)}d=new zl(f);g&&d.zc(g);e&&d.hc(e);return d};
-l.Sh=function(a,c){var d=this.se(a,c);if(d){var e=new D(null);e.ba("XYZ",d);return e}};l.Qh=function(a,c){var d=P([],this.Pi,a,c,this);if(d)return new so(d)};l.Ph=function(a,c){var d=P([],this.Oi,a,c,this);if(d){var e=new U(null);ro(e,d);return e}};l.Rh=function(a,c){var d=P([],this.Qi,a,c,this);if(d){var e=new to(null);vo(e,d);return e}};l.Hh=function(a,c){Sl(this.Ti,a,c,this)};l.Pg=function(a,c){Sl(this.Mi,a,c,this)};l.Ih=function(a,c){Sl(this.Ui,a,c,this)};
-l.ue=function(a,c){var d=this.se(a,c);if(d){var e=new T(null);e.ba("XYZ",d);return e}};l.to=function(a,c){var d=P(null,this.Ad,a,c,this);if(d)return d};l.Oh=function(a,c){var d=this.se(a,c);if(d){var e=new Kd(null);Ld(e,"XYZ",d);return e}};l.ve=function(a,c){var d=P([null],this.Ie,a,c,this);if(d&&d[0]){var e=new F(null),f=d[0],g=[f.length],h,k;h=1;for(k=d.length;h<k;++h)xb(f,d[h]),g.push(f.length);e.ba("XYZ",f,g);return e}};l.se=function(a,c){return P(null,this.Ad,a,c,this)};
-l.Pi={"http://www.opengis.net/gml":{pointMember:Kl(Po.prototype.Hh),pointMembers:Kl(Po.prototype.Hh)}};l.Oi={"http://www.opengis.net/gml":{lineStringMember:Kl(Po.prototype.Pg),lineStringMembers:Kl(Po.prototype.Pg)}};l.Qi={"http://www.opengis.net/gml":{polygonMember:Kl(Po.prototype.Ih),polygonMembers:Kl(Po.prototype.Ih)}};l.Ti={"http://www.opengis.net/gml":{Point:Kl(Po.prototype.se)}};l.Mi={"http://www.opengis.net/gml":{LineString:Kl(Po.prototype.ue)}};l.Ui={"http://www.opengis.net/gml":{Polygon:Kl(Po.prototype.ve)}};
-l.Bd={"http://www.opengis.net/gml":{LinearRing:Ll(Po.prototype.to)}};l.gc=function(a,c){var d={featureType:this.featureType,featureNS:this.featureNS};c&&Pa(d,jo(this,a,c));return this.qd(a,[d])||[]};l.we=function(a){return Ic(this.srsName?this.srsName:a.firstElementChild.getAttribute("srsName"))};function Ro(a){a=El(a,!1);return So(a)}function So(a){if(a=/^\s*(true|1)|(false|0)\s*$/.exec(a))return void 0!==a[1]||!1}
-function To(a){a=El(a,!1);if(a=/^\s*(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(Z|(?:([+\-])(\d{2})(?::(\d{2}))?))\s*$/.exec(a)){var c=Date.UTC(parseInt(a[1],10),parseInt(a[2],10)-1,parseInt(a[3],10),parseInt(a[4],10),parseInt(a[5],10),parseInt(a[6],10))/1E3;if("Z"!=a[7]){var d="-"==a[8]?-1:1,c=c+60*d*parseInt(a[9],10);void 0!==a[10]&&(c+=3600*d*parseInt(a[10],10))}return c}}function Uo(a){a=El(a,!1);return Vo(a)}
-function Vo(a){if(a=/^\s*([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?)\s*$/i.exec(a))return parseFloat(a[1])}function Wo(a){a=El(a,!1);return Xo(a)}function Xo(a){if(a=/^\s*(\d+)\s*$/.exec(a))return parseInt(a[1],10)}function V(a){return El(a,!1).trim()}function Yo(a,c){Zo(a,c?"1":"0")}function $o(a,c){a.appendChild(Cl.createTextNode(c.toPrecision()))}function ap(a,c){a.appendChild(Cl.createTextNode(c.toString()))}function Zo(a,c){a.appendChild(Cl.createTextNode(c))};function bp(a){a=a?a:{};Po.call(this,a);this.b["http://www.opengis.net/gml"].featureMember=Kl(Po.prototype.qd);this.schemaLocation=a.schemaLocation?a.schemaLocation:"http://www.opengis.net/gml http://schemas.opengis.net/gml/2.1.2/feature.xsd"}y(bp,Po);l=bp.prototype;
-l.Lh=function(a,c){var d=El(a,!1).replace(/^\s*|\s*$/g,""),e=c[0].srsName,f=a.parentNode.getAttribute("srsDimension"),g="enu";e&&(e=Ic(e))&&(g=e.b);d=d.split(/[\s,]+/);e=2;a.getAttribute("srsDimension")?e=Xo(a.getAttribute("srsDimension")):a.getAttribute("dimension")?e=Xo(a.getAttribute("dimension")):f&&(e=Xo(f));for(var h,k,m=[],n=0,p=d.length;n<p;n+=e)f=parseFloat(d[n]),h=parseFloat(d[n+1]),k=3===e?parseFloat(d[n+2]):0,"en"===g.substr(0,2)?m.push(f,h,k):m.push(h,f,k);return m};
-l.qo=function(a,c){var d=P([null],this.Ii,a,c,this);return ec(d[1][0],d[1][1],d[1][3],d[1][4])};l.il=function(a,c){var d=P(void 0,this.Bd,a,c,this);d&&c[c.length-1].push(d)};l.Yn=function(a,c){var d=P(void 0,this.Bd,a,c,this);d&&(c[c.length-1][0]=d)};l.Ad={"http://www.opengis.net/gml":{coordinates:Ll(bp.prototype.Lh)}};l.Ie={"http://www.opengis.net/gml":{innerBoundaryIs:bp.prototype.il,outerBoundaryIs:bp.prototype.Yn}};l.Ii={"http://www.opengis.net/gml":{coordinates:Kl(bp.prototype.Lh)}};
-l.Yf={"http://www.opengis.net/gml":{Point:Ll(Po.prototype.Sh),MultiPoint:Ll(Po.prototype.Qh),LineString:Ll(Po.prototype.ue),MultiLineString:Ll(Po.prototype.Ph),LinearRing:Ll(Po.prototype.Oh),Polygon:Ll(Po.prototype.ve),MultiPolygon:Ll(Po.prototype.Rh),Box:Ll(bp.prototype.qo)}};function cp(a){a=a?a:{};Po.call(this,a);this.j=void 0!==a.surface?a.surface:!1;this.i=void 0!==a.curve?a.curve:!1;this.l=void 0!==a.multiCurve?a.multiCurve:!0;this.o=void 0!==a.multiSurface?a.multiSurface:!0;this.schemaLocation=a.schemaLocation?a.schemaLocation:"http://www.opengis.net/gml http://schemas.opengis.net/gml/3.1.1/profiles/gmlsfProfile/1.0.0/gmlsf.xsd"}y(cp,Po);l=cp.prototype;l.xo=function(a,c){var d=P([],this.Ni,a,c,this);if(d){var e=new U(null);ro(e,d);return e}};
-l.yo=function(a,c){var d=P([],this.Ri,a,c,this);if(d){var e=new to(null);vo(e,d);return e}};l.rg=function(a,c){Sl(this.Ji,a,c,this)};l.pi=function(a,c){Sl(this.Yi,a,c,this)};l.Bo=function(a,c){return P([null],this.Si,a,c,this)};l.Do=function(a,c){return P([null],this.Xi,a,c,this)};l.Co=function(a,c){return P([null],this.Ie,a,c,this)};l.wo=function(a,c){return P([null],this.Ad,a,c,this)};l.kl=function(a,c){var d=P(void 0,this.Bd,a,c,this);d&&c[c.length-1].push(d)};
-l.Dj=function(a,c){var d=P(void 0,this.Bd,a,c,this);d&&(c[c.length-1][0]=d)};l.Uh=function(a,c){var d=P([null],this.Zi,a,c,this);if(d&&d[0]){var e=new F(null),f=d[0],g=[f.length],h,k;h=1;for(k=d.length;h<k;++h)xb(f,d[h]),g.push(f.length);e.ba("XYZ",f,g);return e}};l.Jh=function(a,c){var d=P([null],this.Ki,a,c,this);if(d){var e=new T(null);e.ba("XYZ",d);return e}};l.so=function(a,c){var d=P([null],this.Li,a,c,this);return ec(d[1][0],d[1][1],d[2][0],d[2][1])};
-l.uo=function(a,c){for(var d=El(a,!1),e=/^\s*([+\-]?\d*\.?\d+(?:[eE][+\-]?\d+)?)\s*/,f=[],g;g=e.exec(d);)f.push(parseFloat(g[1])),d=d.substr(g[0].length);if(""===d){d=c[0].srsName;e="enu";d&&(e=Ic(d).b);if("neu"===e)for(d=0,e=f.length;d<e;d+=3)g=f[d],f[d]=f[d+1],f[d+1]=g;d=f.length;2==d&&f.push(0);return 0===d?void 0:f}};
-l.If=function(a,c){var d=El(a,!1).replace(/^\s*|\s*$/g,""),e=c[0].srsName,f=a.parentNode.getAttribute("srsDimension"),g="enu";e&&(g=Ic(e).b);d=d.split(/\s+/);e=2;a.getAttribute("srsDimension")?e=Xo(a.getAttribute("srsDimension")):a.getAttribute("dimension")?e=Xo(a.getAttribute("dimension")):f&&(e=Xo(f));for(var h,k,m=[],n=0,p=d.length;n<p;n+=e)f=parseFloat(d[n]),h=parseFloat(d[n+1]),k=3===e?parseFloat(d[n+2]):0,"en"===g.substr(0,2)?m.push(f,h,k):m.push(h,f,k);return m};
-l.Ad={"http://www.opengis.net/gml":{pos:Ll(cp.prototype.uo),posList:Ll(cp.prototype.If)}};l.Ie={"http://www.opengis.net/gml":{interior:cp.prototype.kl,exterior:cp.prototype.Dj}};
-l.Yf={"http://www.opengis.net/gml":{Point:Ll(Po.prototype.Sh),MultiPoint:Ll(Po.prototype.Qh),LineString:Ll(Po.prototype.ue),MultiLineString:Ll(Po.prototype.Ph),LinearRing:Ll(Po.prototype.Oh),Polygon:Ll(Po.prototype.ve),MultiPolygon:Ll(Po.prototype.Rh),Surface:Ll(cp.prototype.Uh),MultiSurface:Ll(cp.prototype.yo),Curve:Ll(cp.prototype.Jh),MultiCurve:Ll(cp.prototype.xo),Envelope:Ll(cp.prototype.so)}};l.Ni={"http://www.opengis.net/gml":{curveMember:Kl(cp.prototype.rg),curveMembers:Kl(cp.prototype.rg)}};
-l.Ri={"http://www.opengis.net/gml":{surfaceMember:Kl(cp.prototype.pi),surfaceMembers:Kl(cp.prototype.pi)}};l.Ji={"http://www.opengis.net/gml":{LineString:Kl(Po.prototype.ue),Curve:Kl(cp.prototype.Jh)}};l.Yi={"http://www.opengis.net/gml":{Polygon:Kl(Po.prototype.ve),Surface:Kl(cp.prototype.Uh)}};l.Zi={"http://www.opengis.net/gml":{patches:Ll(cp.prototype.Bo)}};l.Ki={"http://www.opengis.net/gml":{segments:Ll(cp.prototype.Do)}};l.Li={"http://www.opengis.net/gml":{lowerCorner:Kl(cp.prototype.If),upperCorner:Kl(cp.prototype.If)}};
-l.Si={"http://www.opengis.net/gml":{PolygonPatch:Ll(cp.prototype.Co)}};l.Xi={"http://www.opengis.net/gml":{LineStringSegment:Ll(cp.prototype.wo)}};function dp(a,c,d){d=d[d.length-1].srsName;c=c.Z();for(var e=c.length,f=Array(e),g,h=0;h<e;++h){g=c[h];var k=h,m="enu";d&&(m=Ic(d).b);f[k]="en"===m.substr(0,2)?g[0]+" "+g[1]:g[1]+" "+g[0]}Zo(a,f.join(" "))}
-l.Ei=function(a,c,d){var e=d[d.length-1].srsName;e&&a.setAttribute("srsName",e);e=Dl(a.namespaceURI,"pos");a.appendChild(e);d=d[d.length-1].srsName;a="enu";d&&(a=Ic(d).b);c=c.Z();Zo(e,"en"===a.substr(0,2)?c[0]+" "+c[1]:c[1]+" "+c[0])};var ep={"http://www.opengis.net/gml":{lowerCorner:M(Zo),upperCorner:M(Zo)}};l=cp.prototype;l.rp=function(a,c,d){var e=d[d.length-1].srsName;e&&a.setAttribute("srsName",e);Tl({node:a},ep,Ql,[c[0]+" "+c[1],c[2]+" "+c[3]],d,["lowerCorner","upperCorner"],this)};
-l.Bi=function(a,c,d){var e=d[d.length-1].srsName;e&&a.setAttribute("srsName",e);e=Dl(a.namespaceURI,"posList");a.appendChild(e);dp(e,c,d)};l.Wi=function(a,c){var d=c[c.length-1],e=d.node,f=d.exteriorWritten;void 0===f&&(d.exteriorWritten=!0);return Dl(e.namespaceURI,void 0!==f?"interior":"exterior")};
-l.He=function(a,c,d){var e=d[d.length-1].srsName;"PolygonPatch"!==a.nodeName&&e&&a.setAttribute("srsName",e);"Polygon"===a.nodeName||"PolygonPatch"===a.nodeName?(c=c.Pd(),Tl({node:a,srsName:e},fp,this.Wi,c,d,void 0,this)):"Surface"===a.nodeName&&(e=Dl(a.namespaceURI,"patches"),a.appendChild(e),a=Dl(e.namespaceURI,"PolygonPatch"),e.appendChild(a),this.He(a,c,d))};
-l.Ce=function(a,c,d){var e=d[d.length-1].srsName;"LineStringSegment"!==a.nodeName&&e&&a.setAttribute("srsName",e);"LineString"===a.nodeName||"LineStringSegment"===a.nodeName?(e=Dl(a.namespaceURI,"posList"),a.appendChild(e),dp(e,c,d)):"Curve"===a.nodeName&&(e=Dl(a.namespaceURI,"segments"),a.appendChild(e),a=Dl(e.namespaceURI,"LineStringSegment"),e.appendChild(a),this.Ce(a,c,d))};
-l.Di=function(a,c,d){var e=d[d.length-1],f=e.srsName,e=e.surface;f&&a.setAttribute("srsName",f);c=c.Qd();Tl({node:a,srsName:f,surface:e},gp,this.c,c,d,void 0,this)};l.sp=function(a,c,d){var e=d[d.length-1].srsName;e&&a.setAttribute("srsName",e);c=c.ee();Tl({node:a,srsName:e},hp,Ol("pointMember"),c,d,void 0,this)};l.Ci=function(a,c,d){var e=d[d.length-1],f=e.srsName,e=e.curve;f&&a.setAttribute("srsName",f);c=c.gd();Tl({node:a,srsName:f,curve:e},ip,this.c,c,d,void 0,this)};
-l.Fi=function(a,c,d){var e=Dl(a.namespaceURI,"LinearRing");a.appendChild(e);this.Bi(e,c,d)};l.Gi=function(a,c,d){var e=this.g(c,d);e&&(a.appendChild(e),this.He(e,c,d))};l.tp=function(a,c,d){var e=Dl(a.namespaceURI,"Point");a.appendChild(e);this.Ei(e,c,d)};l.Ai=function(a,c,d){var e=this.g(c,d);e&&(a.appendChild(e),this.Ce(e,c,d))};
-l.Fe=function(a,c,d){var e=d[d.length-1],f=Pa({},e);f.node=a;var g;Array.isArray(c)?e.dataProjection?g=cd(c,e.featureProjection,e.dataProjection):g=c:g=lo(c,!0,e);Tl(f,jp,this.g,[g],d,void 0,this)};
-l.wi=function(a,c,d){var e=c.Wa();e&&a.setAttribute("fid",e);var e=d[d.length-1],f=e.featureNS,g=c.a;e.yc||(e.yc={},e.yc[f]={});var h=c.L();c=[];var k=[],m;for(m in h){var n=h[m];null!==n&&(c.push(m),k.push(n),m==g||n instanceof dd?m in e.yc[f]||(e.yc[f][m]=M(this.Fe,this)):m in e.yc[f]||(e.yc[f][m]=M(Zo)))}m=Pa({},e);m.node=a;Tl(m,e.yc,Ol(void 0,f),k,d,c)};
-var gp={"http://www.opengis.net/gml":{surfaceMember:M(cp.prototype.Gi),polygonMember:M(cp.prototype.Gi)}},hp={"http://www.opengis.net/gml":{pointMember:M(cp.prototype.tp)}},ip={"http://www.opengis.net/gml":{lineStringMember:M(cp.prototype.Ai),curveMember:M(cp.prototype.Ai)}},fp={"http://www.opengis.net/gml":{exterior:M(cp.prototype.Fi),interior:M(cp.prototype.Fi)}},jp={"http://www.opengis.net/gml":{Curve:M(cp.prototype.Ce),MultiCurve:M(cp.prototype.Ci),Point:M(cp.prototype.Ei),MultiPoint:M(cp.prototype.sp),
-LineString:M(cp.prototype.Ce),MultiLineString:M(cp.prototype.Ci),LinearRing:M(cp.prototype.Bi),Polygon:M(cp.prototype.He),MultiPolygon:M(cp.prototype.Di),Surface:M(cp.prototype.He),MultiSurface:M(cp.prototype.Di),Envelope:M(cp.prototype.rp)}},kp={MultiLineString:"lineStringMember",MultiCurve:"curveMember",MultiPolygon:"polygonMember",MultiSurface:"surfaceMember"};cp.prototype.c=function(a,c){return Dl("http://www.opengis.net/gml",kp[c[c.length-1].node.nodeName])};
-cp.prototype.g=function(a,c){var d=c[c.length-1],e=d.multiSurface,f=d.surface,g=d.curve,d=d.multiCurve,h;Array.isArray(a)?h="Envelope":(h=a.X(),"MultiPolygon"===h&&!0===e?h="MultiSurface":"Polygon"===h&&!0===f?h="Surface":"LineString"===h&&!0===g?h="Curve":"MultiLineString"===h&&!0===d&&(h="MultiCurve"));return Dl("http://www.opengis.net/gml",h)};
-cp.prototype.s=function(a,c){c=ko(this,c);var d=Dl("http://www.opengis.net/gml","geom"),e={node:d,srsName:this.srsName,curve:this.i,surface:this.j,multiSurface:this.o,multiCurve:this.l};c&&Pa(e,c);this.Fe(d,a,[e]);return d};
-cp.prototype.a=function(a,c){c=ko(this,c);var d=Dl("http://www.opengis.net/gml","featureMembers");d.setAttributeNS("http://www.w3.org/2001/XMLSchema-instance","xsi:schemaLocation",this.schemaLocation);var e={srsName:this.srsName,curve:this.i,surface:this.j,multiSurface:this.o,multiCurve:this.l,featureNS:this.featureNS,featureType:this.featureType};c&&Pa(e,c);var e=[e],f=e[e.length-1],g=f.featureType,h=f.featureNS,k={};k[h]={};k[h][g]=M(this.wi,this);f=Pa({},f);f.node=d;Tl(f,k,Ol(g,h),a,e);return d};function lp(a){a=a?a:{};Mo.call(this);this.defaultDataProjection=Ic("EPSG:4326");this.b=a.readExtensions}y(lp,Mo);var mp=[null,"http://www.topografix.com/GPX/1/0","http://www.topografix.com/GPX/1/1"];function np(a,c,d){a.push(parseFloat(c.getAttribute("lon")),parseFloat(c.getAttribute("lat")));"ele"in d?(a.push(d.ele),delete d.ele):a.push(0);"time"in d?(a.push(d.time),delete d.time):a.push(0);return a}function op(a,c){var d=c[c.length-1],e=a.getAttribute("href");null!==e&&(d.link=e);Sl(pp,a,c)}
-function qp(a,c){c[c.length-1].extensionsNode_=a}function rp(a,c){var d=c[0],e=P({flatCoordinates:[]},sp,a,c);if(e){var f=e.flatCoordinates;delete e.flatCoordinates;var g=new T(null);g.ba("XYZM",f);lo(g,!1,d);d=new zl(g);d.C(e);return d}}function tp(a,c){var d=c[0],e=P({flatCoordinates:[],ends:[]},up,a,c);if(e){var f=e.flatCoordinates;delete e.flatCoordinates;var g=e.ends;delete e.ends;var h=new U(null);h.ba("XYZM",f,g);lo(h,!1,d);d=new zl(h);d.C(e);return d}}
-function vp(a,c){var d=c[0],e=P({},wp,a,c);if(e){var f=np([],a,e),f=new D(f,"XYZM");lo(f,!1,d);d=new zl(f);d.C(e);return d}}
-var xp={rte:rp,trk:tp,wpt:vp},yp=N(mp,{rte:Kl(rp),trk:Kl(tp),wpt:Kl(vp)}),pp=N(mp,{text:K(V,"linkText"),type:K(V,"linkType")}),sp=N(mp,{name:K(V),cmt:K(V),desc:K(V),src:K(V),link:op,number:K(Wo),extensions:qp,type:K(V),rtept:function(a,c){var d=P({},zp,a,c);d&&np(c[c.length-1].flatCoordinates,a,d)}}),zp=N(mp,{ele:K(Uo),time:K(To)}),up=N(mp,{name:K(V),cmt:K(V),desc:K(V),src:K(V),link:op,number:K(Wo),type:K(V),extensions:qp,trkseg:function(a,c){var d=c[c.length-1];Sl(Ap,a,c);d.ends.push(d.flatCoordinates.length)}}),
-Ap=N(mp,{trkpt:function(a,c){var d=P({},Bp,a,c);d&&np(c[c.length-1].flatCoordinates,a,d)}}),Bp=N(mp,{ele:K(Uo),time:K(To)}),wp=N(mp,{ele:K(Uo),time:K(To),magvar:K(Uo),geoidheight:K(Uo),name:K(V),cmt:K(V),desc:K(V),src:K(V),link:op,sym:K(V),type:K(V),fix:K(V),sat:K(Wo),hdop:K(Uo),vdop:K(Uo),pdop:K(Uo),ageofdgpsdata:K(Uo),dgpsid:K(Wo),extensions:qp});
-function Cp(a,c){c||(c=[]);for(var d=0,e=c.length;d<e;++d){var f=c[d];if(a.b){var g=f.get("extensionsNode_")||null;a.b(f,g)}f.set("extensionsNode_",void 0)}}lp.prototype.Kh=function(a,c){if(!ub(mp,a.namespaceURI))return null;var d=xp[a.localName];if(!d)return null;d=d(a,[jo(this,a,c)]);if(!d)return null;Cp(this,[d]);return d};lp.prototype.gc=function(a,c){if(!ub(mp,a.namespaceURI))return[];if("gpx"==a.localName){var d=P([],yp,a,[jo(this,a,c)]);if(d)return Cp(this,d),d}return[]};
-function Dp(a,c,d){a.setAttribute("href",c);c=d[d.length-1].properties;Tl({node:a},Ep,Ql,[c.linkText,c.linkType],d,Fp)}function Gp(a,c,d){var e=d[d.length-1],f=e.node.namespaceURI,g=e.properties;a.setAttributeNS(null,"lat",c[1]);a.setAttributeNS(null,"lon",c[0]);switch(e.geometryLayout){case "XYZM":0!==c[3]&&(g.time=c[3]);case "XYZ":0!==c[2]&&(g.ele=c[2]);break;case "XYM":0!==c[2]&&(g.time=c[2])}c=Hp[f];e=Rl(g,c);Tl({node:a,properties:g},Ip,Ql,e,d,c)}
-var Fp=["text","type"],Ep=N(mp,{text:M(Zo),type:M(Zo)}),Jp=N(mp,"name cmt desc src link number type rtept".split(" ")),Kp=N(mp,{name:M(Zo),cmt:M(Zo),desc:M(Zo),src:M(Zo),link:M(Dp),number:M(ap),type:M(Zo),rtept:Nl(M(Gp))}),Lp=N(mp,"name cmt desc src link number type trkseg".split(" ")),Op=N(mp,{name:M(Zo),cmt:M(Zo),desc:M(Zo),src:M(Zo),link:M(Dp),number:M(ap),type:M(Zo),trkseg:Nl(M(function(a,c,d){Tl({node:a,geometryLayout:c.f,properties:{}},Mp,Np,c.Z(),d)}))}),Np=Ol("trkpt"),Mp=N(mp,{trkpt:M(Gp)}),
-Hp=N(mp,"ele time magvar geoidheight name cmt desc src link sym type fix sat hdop vdop pdop ageofdgpsdata dgpsid".split(" ")),Ip=N(mp,{ele:M($o),time:M(function(a,c){var d=new Date(1E3*c);a.appendChild(Cl.createTextNode(d.getUTCFullYear()+"-"+Kb(d.getUTCMonth()+1)+"-"+Kb(d.getUTCDate())+"T"+Kb(d.getUTCHours())+":"+Kb(d.getUTCMinutes())+":"+Kb(d.getUTCSeconds())+"Z"))}),magvar:M($o),geoidheight:M($o),name:M(Zo),cmt:M(Zo),desc:M(Zo),src:M(Zo),link:M(Dp),sym:M(Zo),type:M(Zo),fix:M(Zo),sat:M(ap),hdop:M($o),
-vdop:M($o),pdop:M($o),ageofdgpsdata:M($o),dgpsid:M(ap)}),Pp={Point:"wpt",LineString:"rte",MultiLineString:"trk"};function Qp(a,c){var d=a.W();if(d&&(d=Pp[d.X()]))return Dl(c[c.length-1].node.namespaceURI,d)}
-var Rp=N(mp,{rte:M(function(a,c,d){var e=d[0],f=c.L();a={node:a,properties:f};if(c=c.W())c=lo(c,!0,e),a.geometryLayout=c.f,f.rtept=c.Z();e=Jp[d[d.length-1].node.namespaceURI];f=Rl(f,e);Tl(a,Kp,Ql,f,d,e)}),trk:M(function(a,c,d){var e=d[0],f=c.L();a={node:a,properties:f};if(c=c.W())c=lo(c,!0,e),f.trkseg=c.gd();e=Lp[d[d.length-1].node.namespaceURI];f=Rl(f,e);Tl(a,Op,Ql,f,d,e)}),wpt:M(function(a,c,d){var e=d[0],f=d[d.length-1];f.properties=c.L();if(c=c.W())c=lo(c,!0,e),f.geometryLayout=c.f,Gp(a,c.Z(),
-d)})});lp.prototype.a=function(a,c){c=ko(this,c);var d=Dl("http://www.topografix.com/GPX/1/1","gpx");Tl({node:d},Rp,Qp,a,[c]);return d};function Sp(){this.defaultDataProjection=null}y(Sp,io);function Tp(a){return"string"===typeof a?a:""}l=Sp.prototype;l.X=function(){return"text"};l.Nb=function(a,c){return this.pd(Tp(a),ko(this,c))};l.Ca=function(a,c){return this.Gf(Tp(a),ko(this,c))};l.Qc=function(a,c){return this.rd(Tp(a),ko(this,c))};l.Oa=function(a){Tp(a);return this.defaultDataProjection};l.yd=function(a,c){return this.De(a,ko(this,c))};l.Sb=function(a,c){return this.xi(a,ko(this,c))};
-l.Uc=function(a,c){return this.zd(a,ko(this,c))};function Up(a){a=a?a:{};this.defaultDataProjection=null;this.defaultDataProjection=Ic("EPSG:4326");this.b=a.altitudeMode?a.altitudeMode:"none"}y(Up,Sp);var Vp=/^B(\d{2})(\d{2})(\d{2})(\d{2})(\d{5})([NS])(\d{3})(\d{5})([EW])([AV])(\d{5})(\d{5})/,Wp=/^H.([A-Z]{3}).*?:(.*)/,Xp=/^HFDTE(\d{2})(\d{2})(\d{2})/,Yp=/\r\n|\r|\n/;
-Up.prototype.pd=function(a,c){var d=this.b,e=a.split(Yp),f={},g=[],h=2E3,k=0,m=1,n,p;n=0;for(p=e.length;n<p;++n){var q=e[n],r;if("B"==q.charAt(0)){if(r=Vp.exec(q)){var q=parseInt(r[1],10),u=parseInt(r[2],10),v=parseInt(r[3],10),x=parseInt(r[4],10)+parseInt(r[5],10)/6E4;"S"==r[6]&&(x=-x);var z=parseInt(r[7],10)+parseInt(r[8],10)/6E4;"W"==r[9]&&(z=-z);g.push(z,x);"none"!=d&&g.push("gps"==d?parseInt(r[11],10):"barometric"==d?parseInt(r[12],10):0);g.push(Date.UTC(h,k,m,q,u,v)/1E3)}}else"H"==q.charAt(0)&&
-((r=Xp.exec(q))?(m=parseInt(r[1],10),k=parseInt(r[2],10)-1,h=2E3+parseInt(r[3],10)):(r=Wp.exec(q))&&(f[r[1]]=r[2].trim()))}if(0===g.length)return null;e=new T(null);e.ba("none"==d?"XYM":"XYZM",g);d=new zl(lo(e,!1,c));d.C(f);return d};Up.prototype.Gf=function(a,c){var d=this.pd(a,c);return d?[d]:[]};function Zp(a,c){this.a={};this.b=[];this.g=0;var d=arguments.length;if(1<d){if(d%2)throw Error("Uneven number of arguments");for(var e=0;e<d;e+=2)this.set(arguments[e],arguments[e+1])}else if(a){var f;if(a instanceof Zp)f=a.K(),e=a.uc();else{var d=[],g=0;for(f in a)d[g++]=f;f=d;d=[];g=0;for(e in a)d[g++]=a[e];e=d}for(d=0;d<f.length;d++)this.set(f[d],e[d])}}l=Zp.prototype;l.rc=function(){return this.g};l.uc=function(){$p(this);for(var a=[],c=0;c<this.b.length;c++)a.push(this.a[this.b[c]]);return a};
-l.K=function(){$p(this);return this.b.concat()};l.Sa=function(){return 0==this.g};l.clear=function(){this.a={};this.g=this.b.length=0};l.remove=function(a){return aq(this.a,a)?(delete this.a[a],this.g--,this.b.length>2*this.g&&$p(this),!0):!1};function $p(a){if(a.g!=a.b.length){for(var c=0,d=0;c<a.b.length;){var e=a.b[c];aq(a.a,e)&&(a.b[d++]=e);c++}a.b.length=d}if(a.g!=a.b.length){for(var f={},d=c=0;c<a.b.length;)e=a.b[c],aq(f,e)||(a.b[d++]=e,f[e]=1),c++;a.b.length=d}}
-l.get=function(a,c){return aq(this.a,a)?this.a[a]:c};l.set=function(a,c){aq(this.a,a)||(this.g++,this.b.push(a));this.a[a]=c};l.forEach=function(a,c){for(var d=this.K(),e=0;e<d.length;e++){var f=d[e],g=this.get(f);a.call(c,g,f,this)}};l.clone=function(){return new Zp(this)};function aq(a,c){return Object.prototype.hasOwnProperty.call(a,c)};var bq=/^(?:([^:/?#.]+):)?(?:\/\/(?:([^/?#]*)@)?([^/#?]*?)(?::([0-9]+))?(?=[/#?]|$))?([^?#]+)?(?:\?([^#]*))?(?:#(.*))?$/;function cq(a,c){if(a)for(var d=a.split("&"),e=0;e<d.length;e++){var f=d[e].indexOf("="),g=null,h=null;0<=f?(g=d[e].substring(0,f),h=d[e].substring(f+1)):g=d[e];c(g,h?decodeURIComponent(h.replace(/\+/g," ")):"")}}
-function dq(a){if(a[1]){var c=a[0],d=c.indexOf("#");0<=d&&(a.push(c.substr(d)),a[0]=c=c.substr(0,d));d=c.indexOf("?");0>d?a[1]="?":d==c.length-1&&(a[1]=void 0)}return a.join("")}function eq(a,c,d){if("array"==ca(c))for(var e=0;e<c.length;e++)eq(a,String(c[e]),d);else null!=c&&d.push("&",a,""===c?"":"=",encodeURIComponent(String(c)))}function fq(a,c){for(var d in c)eq(d,c[d],a);return a};function gq(a,c){this.a=this.l=this.g="";this.o=null;this.f=this.b="";this.c=!1;var d;a instanceof gq?(this.c=void 0!==c?c:a.c,hq(this,a.g),this.l=a.l,this.a=a.a,iq(this,a.o),this.b=a.b,jq(this,a.i.clone()),this.f=a.f):a&&(d=String(a).match(bq))?(this.c=!!c,hq(this,d[1]||"",!0),this.l=kq(d[2]||""),this.a=kq(d[3]||"",!0),iq(this,d[4]),this.b=kq(d[5]||"",!0),jq(this,d[6]||"",!0),this.f=kq(d[7]||"")):(this.c=!!c,this.i=new lq(null,0,this.c))}
-gq.prototype.toString=function(){var a=[],c=this.g;c&&a.push(mq(c,nq,!0),":");var d=this.a;if(d||"file"==c)a.push("//"),(c=this.l)&&a.push(mq(c,nq,!0),"@"),a.push(encodeURIComponent(String(d)).replace(/%25([0-9a-fA-F]{2})/g,"%$1")),d=this.o,null!=d&&a.push(":",String(d));if(d=this.b)this.a&&"/"!=d.charAt(0)&&a.push("/"),a.push(mq(d,"/"==d.charAt(0)?oq:pq,!0));(d=this.i.toString())&&a.push("?",d);(d=this.f)&&a.push("#",mq(d,qq));return a.join("")};gq.prototype.clone=function(){return new gq(this)};
-function hq(a,c,d){a.g=d?kq(c,!0):c;a.g&&(a.g=a.g.replace(/:$/,""))}function iq(a,c){if(c){c=Number(c);if(isNaN(c)||0>c)throw Error("Bad port number "+c);a.o=c}else a.o=null}function jq(a,c,d){c instanceof lq?(a.i=c,rq(a.i,a.c)):(d||(c=mq(c,sq)),a.i=new lq(c,0,a.c))}function tq(a){return a instanceof gq?a.clone():new gq(a,void 0)}
-function uq(a,c){a instanceof gq||(a=tq(a));c instanceof gq||(c=tq(c));var d=a,e=c,f=d.clone(),g=!!e.g;g?hq(f,e.g):g=!!e.l;g?f.l=e.l:g=!!e.a;g?f.a=e.a:g=null!=e.o;var h=e.b;if(g)iq(f,e.o);else if(g=!!e.b)if("/"!=h.charAt(0)&&(d.a&&!d.b?h="/"+h:(d=f.b.lastIndexOf("/"),-1!=d&&(h=f.b.substr(0,d+1)+h))),d=h,".."==d||"."==d)h="";else if(-1!=d.indexOf("./")||-1!=d.indexOf("/.")){for(var h=0==d.lastIndexOf("/",0),d=d.split("/"),k=[],m=0;m<d.length;){var n=d[m++];"."==n?h&&m==d.length&&k.push(""):".."==n?
-((1<k.length||1==k.length&&""!=k[0])&&k.pop(),h&&m==d.length&&k.push("")):(k.push(n),h=!0)}h=k.join("/")}else h=d;g?f.b=h:g=""!==e.i.toString();g?jq(f,kq(e.i.toString())):g=!!e.f;g&&(f.f=e.f);return f}function kq(a,c){return a?c?decodeURI(a.replace(/%25/g,"%2525")):decodeURIComponent(a):""}function mq(a,c,d){return ea(a)?(a=encodeURI(a).replace(c,vq),d&&(a=a.replace(/%25([0-9a-fA-F]{2})/g,"%$1")),a):null}function vq(a){a=a.charCodeAt(0);return"%"+(a>>4&15).toString(16)+(a&15).toString(16)}
-var nq=/[#\/\?@]/g,pq=/[\#\?:]/g,oq=/[\#\?]/g,sq=/[\#\?@]/g,qq=/#/g;function lq(a,c,d){this.a=this.b=null;this.g=a||null;this.f=!!d}function wq(a){a.b||(a.b=new Zp,a.a=0,a.g&&cq(a.g,function(c,d){a.add(decodeURIComponent(c.replace(/\+/g," ")),d)}))}l=lq.prototype;l.rc=function(){wq(this);return this.a};l.add=function(a,c){wq(this);this.g=null;a=xq(this,a);var d=this.b.get(a);d||this.b.set(a,d=[]);d.push(c);this.a=this.a+1;return this};
-l.remove=function(a){wq(this);a=xq(this,a);return aq(this.b.a,a)?(this.g=null,this.a=this.a-this.b.get(a).length,this.b.remove(a)):!1};l.clear=function(){this.b=this.g=null;this.a=0};l.Sa=function(){wq(this);return 0==this.a};function yq(a,c){wq(a);c=xq(a,c);return aq(a.b.a,c)}l.K=function(){wq(this);for(var a=this.b.uc(),c=this.b.K(),d=[],e=0;e<c.length;e++)for(var f=a[e],g=0;g<f.length;g++)d.push(c[e]);return d};
-l.uc=function(a){wq(this);var c=[];if(ea(a))yq(this,a)&&(c=ze(c,this.b.get(xq(this,a))));else{a=this.b.uc();for(var d=0;d<a.length;d++)c=ze(c,a[d])}return c};l.set=function(a,c){wq(this);this.g=null;a=xq(this,a);yq(this,a)&&(this.a=this.a-this.b.get(a).length);this.b.set(a,[c]);this.a=this.a+1;return this};l.get=function(a,c){var d=a?this.uc(a):[];return 0<d.length?String(d[0]):c};
-l.toString=function(){if(this.g)return this.g;if(!this.b)return"";for(var a=[],c=this.b.K(),d=0;d<c.length;d++)for(var e=c[d],f=encodeURIComponent(String(e)),e=this.uc(e),g=0;g<e.length;g++){var h=f;""!==e[g]&&(h+="="+encodeURIComponent(String(e[g])));a.push(h)}return this.g=a.join("&")};l.clone=function(){var a=new lq;a.g=this.g;this.b&&(a.b=this.b.clone(),a.a=this.a);return a};function xq(a,c){var d=String(c);a.f&&(d=d.toLowerCase());return d}
-function rq(a,c){c&&!a.f&&(wq(a),a.g=null,a.b.forEach(function(a,c){var f=c.toLowerCase();c!=f&&(this.remove(c),this.remove(f),0<a.length&&(this.g=null,this.b.set(xq(this,f),Ae(a)),this.a=this.a+a.length))},a));a.f=c};function zq(a){a=a||{};this.g=a.font;this.i=a.rotation;this.a=a.scale;this.s=a.text;this.o=a.textAlign;this.j=a.textBaseline;this.b=void 0!==a.fill?a.fill:new ak({color:"#333"});this.l=void 0!==a.stroke?a.stroke:null;this.f=void 0!==a.offsetX?a.offsetX:0;this.c=void 0!==a.offsetY?a.offsetY:0}l=zq.prototype;l.Tj=function(){return this.g};l.gk=function(){return this.f};l.hk=function(){return this.c};l.On=function(){return this.b};l.Pn=function(){return this.i};l.Qn=function(){return this.a};l.Rn=function(){return this.l};
-l.Ea=function(){return this.s};l.uk=function(){return this.o};l.vk=function(){return this.j};l.Wo=function(a){this.g=a};l.hi=function(a){this.f=a};l.ii=function(a){this.c=a};l.Vo=function(a){this.b=a};l.Sn=function(a){this.i=a};l.Tn=function(a){this.a=a};l.bp=function(a){this.l=a};l.ki=function(a){this.s=a};l.li=function(a){this.o=a};l.cp=function(a){this.j=a};function Aq(a){a=a?a:{};Mo.call(this);this.defaultDataProjection=Ic("EPSG:4326");this.g=a.defaultStyle?a.defaultStyle:Bq;this.c=void 0!==a.extractStyles?a.extractStyles:!0;this.l=void 0!==a.writeStyles?a.writeStyles:!0;this.b={};this.i=void 0!==a.showPointNames?a.showPointNames:!0}y(Aq,Mo);
-var Cq=["http://www.google.com/kml/ext/2.2"],Dq=[null,"http://earth.google.com/kml/2.0","http://earth.google.com/kml/2.1","http://earth.google.com/kml/2.2","http://www.opengis.net/kml/2.2"],Eq=[255,255,255,1],Fq=new ak({color:Eq}),Gq=[20,2],Hq=[64,64],Iq=new ui({anchor:Gq,anchorOrigin:"bottom-left",anchorXUnits:"pixels",anchorYUnits:"pixels",crossOrigin:"anonymous",rotation:0,scale:.5,size:Hq,src:"https://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png"}),Jq=new gk({color:Eq,width:1}),Kq=new zq({font:"bold 16px Helvetica",
-fill:Fq,stroke:new gk({color:[51,51,51,1],width:2}),scale:.8}),Bq=[new jk({fill:Fq,image:Iq,text:Kq,stroke:Jq,zIndex:0})],Lq={fraction:"fraction",pixels:"pixels"};function Mq(a,c){var d=null,e=[0,0],f="start";a.a&&(d=a.a.fd())&&2==d.length&&(e[0]=a.a.i*d[0]/2,e[1]=-a.a.i*d[1]/2,f="left");if(Sa(a.Ea()))d=new zq({text:c,offsetX:e[0],offsetY:e[1],textAlign:f});else{var d=a.Ea(),g={},h;for(h in d)g[h]=d[h];d=g;d.ki(c);d.li(f);d.hi(e[0]);d.ii(e[1])}return new jk({text:d})}
-function Nq(a,c,d,e,f){return function(){var g=f,h="";g&&this.W()&&(g="Point"===this.W().X());g&&(h=this.get("name"),g=g&&h);if(a)return g?(g=Mq(a[0],h),a.concat(g)):a;if(c){var k=Oq(c,d,e);return g?(g=Mq(k[0],h),k.concat(g)):k}return g?(g=Mq(d[0],h),d.concat(g)):d}}function Oq(a,c,d){return Array.isArray(a)?a:"string"===typeof a?(!(a in d)&&"#"+a in d&&(a="#"+a),Oq(d[a],c,d)):c}
-function Pq(a){a=El(a,!1);if(a=/^\s*#?\s*([0-9A-Fa-f]{8})\s*$/.exec(a))return a=a[1],[parseInt(a.substr(6,2),16),parseInt(a.substr(4,2),16),parseInt(a.substr(2,2),16),parseInt(a.substr(0,2),16)/255]}function Qq(a){a=El(a,!1);for(var c=[],d=/^\s*([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?)\s*,\s*([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?)(?:\s*,\s*([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?))?\s*/i,e;e=d.exec(a);)c.push(parseFloat(e[1]),parseFloat(e[2]),e[3]?parseFloat(e[3]):0),a=a.substr(e[0].length);return""!==a?void 0:c}
-function Rq(a){var c=El(a,!1);return a.baseURI?uq(a.baseURI,c.trim()).toString():c.trim()}function Sq(a){a=Uo(a);if(void 0!==a)return Math.sqrt(a)}function Tq(a,c){return P(null,Uq,a,c)}function Vq(a,c){var d=P({A:[],ui:[]},Wq,a,c);if(d){var e=d.A,d=d.ui,f,g;f=0;for(g=Math.min(e.length,d.length);f<g;++f)e[4*f+3]=d[f];d=new T(null);d.ba("XYZM",e);return d}}function Xq(a,c){var d=P({},Yq,a,c),e=P(null,Zq,a,c);if(e){var f=new T(null);f.ba("XYZ",e);f.C(d);return f}}
-function $q(a,c){var d=P({},Yq,a,c),e=P(null,Zq,a,c);if(e){var f=new F(null);f.ba("XYZ",e,[e.length]);f.C(d);return f}}
-function ar(a,c){var d=P([],br,a,c);if(!d)return null;if(0===d.length)return new Do(d);var e=!0,f=d[0].X(),g,h,k;h=1;for(k=d.length;h<k;++h)if(g=d[h],g.X()!=f){e=!1;break}if(e){if("Point"==f){g=d[0];e=g.f;f=g.ga();h=1;for(k=d.length;h<k;++h)g=d[h],xb(f,g.ga());g=new so(null);g.ba(e,f);cr(g,d);return g}return"LineString"==f?(g=new U(null),ro(g,d),cr(g,d),g):"Polygon"==f?(g=new to(null),vo(g,d),cr(g,d),g):"GeometryCollection"==f?new Do(d):null}return new Do(d)}
-function dr(a,c){var d=P({},Yq,a,c),e=P(null,Zq,a,c);if(e){var f=new D(null);f.ba("XYZ",e);f.C(d);return f}}function er(a,c){var d=P({},Yq,a,c),e=P([null],fr,a,c);if(e&&e[0]){var f=new F(null),g=e[0],h=[g.length],k,m;k=1;for(m=e.length;k<m;++k)xb(g,e[k]),h.push(g.length);f.ba("XYZ",g,h);f.C(d);return f}}
-function gr(a,c){var d=P({},hr,a,c);if(!d)return null;var e="fillStyle"in d?d.fillStyle:Fq,f=d.fill;void 0===f||f||(e=null);var f="imageStyle"in d?d.imageStyle:Iq,g="textStyle"in d?d.textStyle:Kq,h="strokeStyle"in d?d.strokeStyle:Jq,d=d.outline;void 0===d||d||(h=null);return[new jk({fill:e,image:f,stroke:h,text:g,zIndex:void 0})]}
-function cr(a,c){var d=c.length,e=Array(c.length),f=Array(c.length),g,h,k,m;k=m=!1;for(h=0;h<d;++h)g=c[h],e[h]=g.get("extrude"),f[h]=g.get("altitudeMode"),k=k||void 0!==e[h],m=m||f[h];k&&a.set("extrude",e);m&&a.set("altitudeMode",f)}function ir(a,c){Sl(jr,a,c)}
-var kr=N(Dq,{value:Ll(V)}),jr=N(Dq,{Data:function(a,c){var d=a.getAttribute("name");if(null!==d){var e=P(void 0,kr,a,c);e&&(c[c.length-1][d]=e)}},SchemaData:function(a,c){Sl(lr,a,c)}}),Yq=N(Dq,{extrude:K(Ro),altitudeMode:K(V)}),Uq=N(Dq,{coordinates:Ll(Qq)}),fr=N(Dq,{innerBoundaryIs:function(a,c){var d=P(void 0,mr,a,c);d&&c[c.length-1].push(d)},outerBoundaryIs:function(a,c){var d=P(void 0,nr,a,c);d&&(c[c.length-1][0]=d)}}),Wq=N(Dq,{when:function(a,c){var d=c[c.length-1].ui,e=El(a,!1);if(e=/^\s*(\d{4})($|-(\d{2})($|-(\d{2})($|T(\d{2}):(\d{2}):(\d{2})(Z|(?:([+\-])(\d{2})(?::(\d{2}))?)))))\s*$/.exec(e)){var f=
-Date.UTC(parseInt(e[1],10),e[3]?parseInt(e[3],10)-1:0,e[5]?parseInt(e[5],10):1,e[7]?parseInt(e[7],10):0,e[8]?parseInt(e[8],10):0,e[9]?parseInt(e[9],10):0);if(e[10]&&"Z"!=e[10]){var g="-"==e[11]?-1:1,f=f+60*g*parseInt(e[12],10);e[13]&&(f+=3600*g*parseInt(e[13],10))}d.push(f)}else d.push(0)}},N(Cq,{coord:function(a,c){var d=c[c.length-1].A,e=El(a,!1);(e=/^\s*([+\-]?\d+(?:\.\d*)?(?:e[+\-]?\d*)?)\s+([+\-]?\d+(?:\.\d*)?(?:e[+\-]?\d*)?)\s+([+\-]?\d+(?:\.\d*)?(?:e[+\-]?\d*)?)\s*$/i.exec(e))?d.push(parseFloat(e[1]),
-parseFloat(e[2]),parseFloat(e[3]),0):d.push(0,0,0,0)}})),Zq=N(Dq,{coordinates:Ll(Qq)}),or=N(Dq,{href:K(Rq)},N(Cq,{x:K(Uo),y:K(Uo),w:K(Uo),h:K(Uo)})),pr=N(Dq,{Icon:K(function(a,c){var d=P({},or,a,c);return d?d:null}),heading:K(Uo),hotSpot:K(function(a){var c=a.getAttribute("xunits"),d=a.getAttribute("yunits");return{x:parseFloat(a.getAttribute("x")),Wf:Lq[c],y:parseFloat(a.getAttribute("y")),Xf:Lq[d]}}),scale:K(Sq)}),mr=N(Dq,{LinearRing:Ll(Tq)}),qr=N(Dq,{color:K(Pq),scale:K(Sq)}),rr=N(Dq,{color:K(Pq),
-width:K(Uo)}),br=N(Dq,{LineString:Kl(Xq),LinearRing:Kl($q),MultiGeometry:Kl(ar),Point:Kl(dr),Polygon:Kl(er)}),sr=N(Cq,{Track:Kl(Vq)}),ur=N(Dq,{ExtendedData:ir,Link:function(a,c){Sl(tr,a,c)},address:K(V),description:K(V),name:K(V),open:K(Ro),phoneNumber:K(V),visibility:K(Ro)}),tr=N(Dq,{href:K(Rq)}),nr=N(Dq,{LinearRing:Ll(Tq)}),vr=N(Dq,{Style:K(gr),key:K(V),styleUrl:K(function(a){var c=El(a,!1).trim();return a.baseURI?uq(a.baseURI,c).toString():c})}),xr=N(Dq,{ExtendedData:ir,MultiGeometry:K(ar,"geometry"),
-LineString:K(Xq,"geometry"),LinearRing:K($q,"geometry"),Point:K(dr,"geometry"),Polygon:K(er,"geometry"),Style:K(gr),StyleMap:function(a,c){var d=P(void 0,wr,a,c);if(d){var e=c[c.length-1];Array.isArray(d)?e.Style=d:"string"===typeof d&&(e.styleUrl=d)}},address:K(V),description:K(V),name:K(V),open:K(Ro),phoneNumber:K(V),styleUrl:K(Rq),visibility:K(Ro)},N(Cq,{MultiTrack:K(function(a,c){var d=P([],sr,a,c);if(d){var e=new U(null);ro(e,d);return e}},"geometry"),Track:K(Vq,"geometry")})),yr=N(Dq,{color:K(Pq),
-fill:K(Ro),outline:K(Ro)}),lr=N(Dq,{SimpleData:function(a,c){var d=a.getAttribute("name");if(null!==d){var e=V(a);c[c.length-1][d]=e}}}),hr=N(Dq,{IconStyle:function(a,c){var d=P({},pr,a,c);if(d){var e=c[c.length-1],f="Icon"in d?d.Icon:{},g;g=(g=f.href)?g:"https://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png";var h,k,m,n=d.hotSpot;n?(h=[n.x,n.y],k=n.Wf,m=n.Xf):"https://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png"===g?(h=Gq,m=k="pixels"):/^http:\/\/maps\.(?:google|gstatic)\.com\//.test(g)&&
-(h=[.5,0],m=k="fraction");var p,n=f.x,q=f.y;void 0!==n&&void 0!==q&&(p=[n,q]);var r,n=f.w,f=f.h;void 0!==n&&void 0!==f&&(r=[n,f]);var u,f=d.heading;void 0!==f&&(u=Ha(f));d=d.scale;"https://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png"==g&&(r=Hq,void 0===d&&(d=.5));h=new ui({anchor:h,anchorOrigin:"bottom-left",anchorXUnits:k,anchorYUnits:m,crossOrigin:"anonymous",offset:p,offsetOrigin:"bottom-left",rotation:u,scale:d,size:r,src:g});e.imageStyle=h}},LabelStyle:function(a,c){var d=P({},qr,a,
-c);d&&(c[c.length-1].textStyle=new zq({fill:new ak({color:"color"in d?d.color:Eq}),scale:d.scale}))},LineStyle:function(a,c){var d=P({},rr,a,c);d&&(c[c.length-1].strokeStyle=new gk({color:"color"in d?d.color:Eq,width:"width"in d?d.width:1}))},PolyStyle:function(a,c){var d=P({},yr,a,c);if(d){var e=c[c.length-1];e.fillStyle=new ak({color:"color"in d?d.color:Eq});var f=d.fill;void 0!==f&&(e.fill=f);d=d.outline;void 0!==d&&(e.outline=d)}}}),wr=N(Dq,{Pair:function(a,c){var d=P({},vr,a,c);if(d){var e=d.key;
-e&&"normal"==e&&((e=d.styleUrl)&&(c[c.length-1]=e),(d=d.Style)&&(c[c.length-1]=d))}}});l=Aq.prototype;l.Cf=function(a,c){var d=N(Dq,{Document:Jl(this.Cf,this),Folder:Jl(this.Cf,this),Placemark:Kl(this.Kf,this),Style:this.Fo.bind(this),StyleMap:this.Eo.bind(this)});if(d=P([],d,a,c,this))return d};
-l.Kf=function(a,c){var d=P({geometry:null},xr,a,c);if(d){var e=new zl,f=a.getAttribute("id");null!==f&&e.hc(f);var f=c[0],g=d.geometry;g&&lo(g,!1,f);e.Ta(g);delete d.geometry;this.c&&e.nf(Nq(d.Style,d.styleUrl,this.g,this.b,this.i));delete d.Style;e.C(d);return e}};l.Fo=function(a,c){var d=a.getAttribute("id");if(null!==d){var e=gr(a,c);e&&(d=a.baseURI?uq(a.baseURI,"#"+d).toString():"#"+d,this.b[d]=e)}};
-l.Eo=function(a,c){var d=a.getAttribute("id");if(null!==d){var e=P(void 0,wr,a,c);e&&(d=a.baseURI?uq(a.baseURI,"#"+d).toString():"#"+d,this.b[d]=e)}};l.Kh=function(a,c){if(!ub(Dq,a.namespaceURI))return null;var d=this.Kf(a,[jo(this,a,c)]);return d?d:null};
-l.gc=function(a,c){if(!ub(Dq,a.namespaceURI))return[];var d;d=a.localName;if("Document"==d||"Folder"==d)return(d=this.Cf(a,[jo(this,a,c)]))?d:[];if("Placemark"==d)return(d=this.Kf(a,[jo(this,a,c)]))?[d]:[];if("kml"==d){d=[];var e;for(e=a.firstElementChild;e;e=e.nextElementSibling){var f=this.gc(e,c);f&&xb(d,f)}return d}return[]};l.zo=function(a){if(Gl(a))return zr(this,a);if(Hl(a))return Ar(this,a);if("string"===typeof a)return a=Il(a),zr(this,a)};
-function zr(a,c){var d;for(d=c.firstChild;d;d=d.nextSibling)if(1==d.nodeType){var e=Ar(a,d);if(e)return e}}function Ar(a,c){var d;for(d=c.firstElementChild;d;d=d.nextElementSibling)if(ub(Dq,d.namespaceURI)&&"name"==d.localName)return V(d);for(d=c.firstElementChild;d;d=d.nextElementSibling){var e=d.localName;if(ub(Dq,d.namespaceURI)&&("Document"==e||"Folder"==e||"Placemark"==e||"kml"==e)&&(e=Ar(a,d)))return e}}
-l.Ao=function(a){var c=[];Gl(a)?xb(c,Br(this,a)):Hl(a)?xb(c,Cr(this,a)):"string"===typeof a&&(a=Il(a),xb(c,Br(this,a)));return c};function Br(a,c){var d,e=[];for(d=c.firstChild;d;d=d.nextSibling)1==d.nodeType&&xb(e,Cr(a,d));return e}
-function Cr(a,c){var d,e=[];for(d=c.firstElementChild;d;d=d.nextElementSibling)if(ub(Dq,d.namespaceURI)&&"NetworkLink"==d.localName){var f=P({},ur,d,[]);e.push(f)}for(d=c.firstElementChild;d;d=d.nextElementSibling)f=d.localName,!ub(Dq,d.namespaceURI)||"Document"!=f&&"Folder"!=f&&"kml"!=f||xb(e,Cr(a,d));return e}function Dr(a,c){var d=Fe(c),d=[255*(4==d.length?d[3]:1),d[2],d[1],d[0]],e;for(e=0;4>e;++e){var f=parseInt(d[e],10).toString(16);d[e]=1==f.length?"0"+f:f}Zo(a,d.join(""))}
-function Er(a,c,d){a={node:a};var e=c.X(),f,g;"GeometryCollection"==e?(f=c.bf(),g=Fr):"MultiPoint"==e?(f=c.ee(),g=Gr):"MultiLineString"==e?(f=c.gd(),g=Hr):"MultiPolygon"==e&&(f=c.Qd(),g=Ir);Tl(a,Jr,g,f,d)}function Kr(a,c,d){Tl({node:a},Lr,Mr,[c],d)}
-function Nr(a,c,d){var e={node:a};c.Wa()&&a.setAttribute("id",c.Wa());a=c.L();var f=c.$b();f&&(f=f.call(c,0))&&(f=Array.isArray(f)?f[0]:f,this.l&&(a.Style=f),(f=f.Ea())&&(a.name=f.Ea()));f=Or[d[d.length-1].node.namespaceURI];a=Rl(a,f);Tl(e,Pr,Ql,a,d,f);a=d[0];(c=c.W())&&(c=lo(c,!0,a));Tl(e,Pr,Fr,[c],d)}function Qr(a,c,d){var e=c.ga();a={node:a};a.layout=c.f;a.stride=c.ua();Tl(a,Rr,Sr,[e],d)}function Tr(a,c,d){c=c.Pd();var e=c.shift();a={node:a};Tl(a,Ur,Vr,c,d);Tl(a,Ur,Wr,[e],d)}
-function Xr(a,c){$o(a,Math.round(c*c*1E6)/1E6)}
-var Yr=N(Dq,["Document","Placemark"]),as=N(Dq,{Document:M(function(a,c,d){Tl({node:a},Zr,$r,c,d,void 0,this)}),Placemark:M(Nr)}),Zr=N(Dq,{Placemark:M(Nr)}),bs={Point:"Point",LineString:"LineString",LinearRing:"LinearRing",Polygon:"Polygon",MultiPoint:"MultiGeometry",MultiLineString:"MultiGeometry",MultiPolygon:"MultiGeometry",GeometryCollection:"MultiGeometry"},cs=N(Dq,["href"],N(Cq,["x","y","w","h"])),ds=N(Dq,{href:M(Zo)},N(Cq,{x:M($o),y:M($o),w:M($o),h:M($o)})),es=N(Dq,["scale","heading","Icon",
-"hotSpot"]),gs=N(Dq,{Icon:M(function(a,c,d){a={node:a};var e=cs[d[d.length-1].node.namespaceURI],f=Rl(c,e);Tl(a,ds,Ql,f,d,e);e=cs[Cq[0]];f=Rl(c,e);Tl(a,ds,fs,f,d,e)}),heading:M($o),hotSpot:M(function(a,c){a.setAttribute("x",c.x);a.setAttribute("y",c.y);a.setAttribute("xunits",c.Wf);a.setAttribute("yunits",c.Xf)}),scale:M(Xr)}),hs=N(Dq,["color","scale"]),is=N(Dq,{color:M(Dr),scale:M(Xr)}),js=N(Dq,["color","width"]),ks=N(Dq,{color:M(Dr),width:M($o)}),Lr=N(Dq,{LinearRing:M(Qr)}),Jr=N(Dq,{LineString:M(Qr),
-Point:M(Qr),Polygon:M(Tr),GeometryCollection:M(Er)}),Or=N(Dq,"name open visibility address phoneNumber description styleUrl Style".split(" ")),Pr=N(Dq,{MultiGeometry:M(Er),LineString:M(Qr),LinearRing:M(Qr),Point:M(Qr),Polygon:M(Tr),Style:M(function(a,c,d){a={node:a};var e={},f=c.c,g=c.f,h=c.a;c=c.Ea();h instanceof ui&&(e.IconStyle=h);c&&(e.LabelStyle=c);g&&(e.LineStyle=g);f&&(e.PolyStyle=f);c=ls[d[d.length-1].node.namespaceURI];e=Rl(e,c);Tl(a,ms,Ql,e,d,c)}),address:M(Zo),description:M(Zo),name:M(Zo),
-open:M(Yo),phoneNumber:M(Zo),styleUrl:M(Zo),visibility:M(Yo)}),Rr=N(Dq,{coordinates:M(function(a,c,d){d=d[d.length-1];var e=d.layout;d=d.stride;var f;"XY"==e||"XYM"==e?f=2:("XYZ"==e||"XYZM"==e)&&(f=3);var g,h=c.length,k="";if(0<h){k+=c[0];for(e=1;e<f;++e)k+=","+c[e];for(g=d;g<h;g+=d)for(k+=" "+c[g],e=1;e<f;++e)k+=","+c[g+e]}Zo(a,k)})}),Ur=N(Dq,{outerBoundaryIs:M(Kr),innerBoundaryIs:M(Kr)}),ns=N(Dq,{color:M(Dr)}),ls=N(Dq,["IconStyle","LabelStyle","LineStyle","PolyStyle"]),ms=N(Dq,{IconStyle:M(function(a,
-c,d){a={node:a};var e={},f=c.Bb(),g=c.fd(),h={href:c.b.j};if(f){h.w=f[0];h.h=f[1];var k=c.Tb(),m=c.Fa();m&&g&&0!==m[0]&&m[1]!==f[1]&&(h.x=m[0],h.y=g[1]-(m[1]+f[1]));k&&0!==k[0]&&k[1]!==f[1]&&(e.hotSpot={x:k[0],Wf:"pixels",y:f[1]-k[1],Xf:"pixels"})}e.Icon=h;f=c.i;1!==f&&(e.scale=f);c=c.j;0!==c&&(e.heading=c);c=es[d[d.length-1].node.namespaceURI];e=Rl(e,c);Tl(a,gs,Ql,e,d,c)}),LabelStyle:M(function(a,c,d){a={node:a};var e={},f=c.b;f&&(e.color=f.b);(c=c.a)&&1!==c&&(e.scale=c);c=hs[d[d.length-1].node.namespaceURI];
-e=Rl(e,c);Tl(a,is,Ql,e,d,c)}),LineStyle:M(function(a,c,d){a={node:a};var e=js[d[d.length-1].node.namespaceURI];c=Rl({color:c.b,width:c.a},e);Tl(a,ks,Ql,c,d,e)}),PolyStyle:M(function(a,c,d){Tl({node:a},ns,os,[c.b],d)})});function fs(a,c,d){return Dl(Cq[0],"gx:"+d)}function $r(a,c){return Dl(c[c.length-1].node.namespaceURI,"Placemark")}function Fr(a,c){if(a)return Dl(c[c.length-1].node.namespaceURI,bs[a.X()])}
-var os=Ol("color"),Sr=Ol("coordinates"),Vr=Ol("innerBoundaryIs"),Gr=Ol("Point"),Hr=Ol("LineString"),Mr=Ol("LinearRing"),Ir=Ol("Polygon"),Wr=Ol("outerBoundaryIs");
-Aq.prototype.a=function(a,c){c=ko(this,c);var d=Dl(Dq[4],"kml");d.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:gx",Cq[0]);d.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xsi","http://www.w3.org/2001/XMLSchema-instance");d.setAttributeNS("http://www.w3.org/2001/XMLSchema-instance","xsi:schemaLocation","http://www.opengis.net/kml/2.2 https://developers.google.com/kml/schema/kml22gx.xsd");var e={node:d},f={};1<a.length?f.Document=a:1==a.length&&(f.Placemark=a[0]);var g=Yr[d.namespaceURI],
-f=Rl(f,g);Tl(e,as,Ql,f,[c],g,this);return d};(function(){var a={},c={ha:a};(function(d){if("object"===typeof a&&"undefined"!==typeof c)c.ha=d();else{var e;"undefined"!==typeof window?e=window:"undefined"!==typeof global?e=global:"undefined"!==typeof self?e=self:e=this;e.Mp=d()}})(function(){return function e(a,c,h){function k(n,q){if(!c[n]){if(!a[n]){var r="function"==typeof require&&require;if(!q&&r)return r(n,!0);if(m)return m(n,!0);r=Error("Cannot find module '"+n+"'");throw r.code="MODULE_NOT_FOUND",r;}r=c[n]={ha:{}};a[n][0].call(r.ha,function(c){var e=
-a[n][1][c];return k(e?e:c)},r,r.ha,e,a,c,h)}return c[n].ha}for(var m="function"==typeof require&&require,n=0;n<h.length;n++)k(h[n]);return k}({1:[function(a,c,g){g.read=function(a,c,e,f,g){var q;q=8*g-f-1;var r=(1<<q)-1,u=r>>1,v=-7;g=e?g-1:0;var x=e?-1:1,z=a[c+g];g+=x;e=z&(1<<-v)-1;z>>=-v;for(v+=q;0<v;e=256*e+a[c+g],g+=x,v-=8);q=e&(1<<-v)-1;e>>=-v;for(v+=f;0<v;q=256*q+a[c+g],g+=x,v-=8);if(0===e)e=1-u;else{if(e===r)return q?NaN:Infinity*(z?-1:1);q+=Math.pow(2,f);e=e-u}return(z?-1:1)*q*Math.pow(2,e-
-f)};g.write=function(a,c,e,f,g,q){var r,u=8*q-g-1,v=(1<<u)-1,x=v>>1,z=23===g?Math.pow(2,-24)-Math.pow(2,-77):0;q=f?0:q-1;var E=f?1:-1,B=0>c||0===c&&0>1/c?1:0;c=Math.abs(c);isNaN(c)||Infinity===c?(c=isNaN(c)?1:0,f=v):(f=Math.floor(Math.log(c)/Math.LN2),1>c*(r=Math.pow(2,-f))&&(f--,r*=2),c=1<=f+x?c+z/r:c+z*Math.pow(2,1-x),2<=c*r&&(f++,r/=2),f+x>=v?(c=0,f=v):1<=f+x?(c=(c*r-1)*Math.pow(2,g),f+=x):(c=c*Math.pow(2,x-1)*Math.pow(2,g),f=0));for(;8<=g;a[e+q]=c&255,q+=E,c/=256,g-=8);f=f<<g|c;for(u+=g;0<u;a[e+
-q]=f&255,q+=E,f/=256,u-=8);a[e+q-E]|=128*B}},{}],2:[function(a,c){function g(a){var c;a&&a.length&&(c=a,a=c.length);a=new Uint8Array(a||0);c&&a.set(c);a.Vh=m.Vh;a.Vf=m.Vf;a.Nh=m.Nh;a.zi=m.zi;a.Jf=m.Jf;a.yi=m.yi;a.Df=m.Df;a.vi=m.vi;a.toString=m.toString;a.write=m.write;a.slice=m.slice;a.pg=m.pg;a.ij=!0;return a}function h(a){for(var c=a.length,e=[],f=0,g,h;f<c;f++){g=a.charCodeAt(f);if(55295<g&&57344>g)if(h)if(56320>g){e.push(239,191,189);h=g;continue}else g=h-55296<<10|g-56320|65536,h=null;else{56319<
-g||f+1===c?e.push(239,191,189):h=g;continue}else h&&(e.push(239,191,189),h=null);128>g?e.push(g):2048>g?e.push(g>>6|192,g&63|128):65536>g?e.push(g>>12|224,g>>6&63|128,g&63|128):e.push(g>>18|240,g>>12&63|128,g>>6&63|128,g&63|128)}return e}c.ha=g;var k=a("ieee754"),m,n,p;m={Vh:function(a){return(this[a]|this[a+1]<<8|this[a+2]<<16)+16777216*this[a+3]},Vf:function(a,c){this[c]=a;this[c+1]=a>>>8;this[c+2]=a>>>16;this[c+3]=a>>>24},Nh:function(a){return(this[a]|this[a+1]<<8|this[a+2]<<16)+(this[a+3]<<24)},
-Jf:function(a){return k.read(this,a,!0,23,4)},Df:function(a){return k.read(this,a,!0,52,8)},yi:function(a,c){return k.write(this,a,c,!0,23,4)},vi:function(a,c){return k.write(this,a,c,!0,52,8)},toString:function(a,c,e){var f=a="";e=Math.min(this.length,e||this.length);for(c=c||0;c<e;c++){var g=this[c];127>=g?(a+=decodeURIComponent(f)+String.fromCharCode(g),f=""):f+="%"+g.toString(16)}return a+=decodeURIComponent(f)},write:function(a,c){for(var e=a===n?p:h(a),f=0;f<e.length;f++)this[c+f]=e[f]},slice:function(a,
-c){return this.subarray(a,c)},pg:function(a,c){c=c||0;for(var e=0;e<this.length;e++)a[c+e]=this[e]}};m.zi=m.Vf;g.byteLength=function(a){n=a;p=h(a);return p.length};g.isBuffer=function(a){return!(!a||!a.ij)}},{ieee754:1}],3:[function(a,c){(function(g){function h(a){this.Eb=k.isBuffer(a)?a:new k(a||0);this.ca=0;this.length=this.Eb.length}c.ha=h;var k=g.up||a("./buffer");h.f=0;h.g=1;h.b=2;h.a=5;var m=Math.pow(2,63);h.prototype={Hf:function(a,c,e){for(e=e||this.length;this.ca<e;){var f=this.Aa(),g=this.ca;
-a(f>>3,c,this);this.ca===g&&this.ip(f)}return c},vo:function(){var a=this.Eb.Jf(this.ca);this.ca+=4;return a},ro:function(){var a=this.Eb.Df(this.ca);this.ca+=8;return a},Aa:function(){var a=this.Eb,c,e,f,g,h;c=a[this.ca++];if(128>c)return c;c=c&127;f=a[this.ca++];if(128>f)return c|f<<7;f=(f&127)<<7;g=a[this.ca++];if(128>g)return c|f|g<<14;g=(g&127)<<14;h=a[this.ca++];if(128>h)return c|f|g|h<<21;e=a[this.ca++];c=(c|f|g|(h&127)<<21)+268435456*(e&127);if(128>e)return c;e=a[this.ca++];c+=34359738368*
-(e&127);if(128>e)return c;e=a[this.ca++];c+=4398046511104*(e&127);if(128>e)return c;e=a[this.ca++];c+=562949953421312*(e&127);if(128>e)return c;e=a[this.ca++];c+=72057594037927936*(e&127);if(128>e)return c;e=a[this.ca++];if(128>e)return c+0x7fffffffffffffff*(e&127);throw Error("Expected varint not more than 10 bytes");},Go:function(){var a=this.ca,c=this.Aa();if(c<m)return c;for(var e=this.ca-2;255===this.Eb[e];)e--;e<a&&(e=a);for(var f=c=0;f<e-a+1;f++)var g=~this.Eb[a+f]&127,c=c+(4>f?g<<7*f:g*Math.pow(2,
-7*f));return-c-1},sd:function(){var a=this.Aa();return 1===a%2?(a+1)/-2:a/2},po:function(){return!!this.Aa()},Mf:function(){var a=this.Aa()+this.ca,c=this.Eb.toString("utf8",this.ca,a);this.ca=a;return c},ip:function(a){a=a&7;if(a===h.f)for(;127<this.Eb[this.ca++];);else if(a===h.b)this.ca=this.Aa()+this.ca;else if(a===h.a)this.ca+=4;else if(a===h.g)this.ca+=8;else throw Error("Unimplemented type: "+a);}}}).call(this,"undefined"!==typeof global?global:"undefined"!==typeof self?self:"undefined"!==
-typeof window?window:{})},{"./buffer":2}]},{},[3])(3)});Zl=c.ha})();(function(){var a={},c={ha:a};(function(d){if("object"===typeof a&&"undefined"!==typeof c)c.ha=d();else{var e;"undefined"!==typeof window?e=window:"undefined"!==typeof global?e=global:"undefined"!==typeof self?e=self:e=this;e.Op=d()}})(function(){return function e(a,c,h){function k(n,q){if(!c[n]){if(!a[n]){var r="function"==typeof require&&require;if(!q&&r)return r(n,!0);if(m)return m(n,!0);r=Error("Cannot find module '"+n+"'");throw r.code="MODULE_NOT_FOUND",r;}r=c[n]={ha:{}};a[n][0].call(r.ha,function(c){var e=
-a[n][1][c];return k(e?e:c)},r,r.ha,e,a,c,h)}return c[n].ha}for(var m="function"==typeof require&&require,n=0;n<h.length;n++)k(h[n]);return k}({1:[function(a,c){function g(a,c){this.x=a;this.y=c}c.ha=g;g.prototype={clone:function(){return new g(this.x,this.y)},add:function(a){return this.clone().aj(a)},rotate:function(a){return this.clone().lj(a)},round:function(){return this.clone().mj()},angle:function(){return Math.atan2(this.y,this.x)},aj:function(a){this.x+=a.x;this.y+=a.y;return this},lj:function(a){var c=
-Math.cos(a);a=Math.sin(a);var e=a*this.x+c*this.y;this.x=c*this.x-a*this.y;this.y=e;return this},mj:function(){this.x=Math.round(this.x);this.y=Math.round(this.y);return this}};g.b=function(a){return a instanceof g?a:Array.isArray(a)?new g(a[0],a[1]):a}},{}],2:[function(a,c){c.ha.$i=a("./lib/vectortile.js");c.ha.Hp=a("./lib/vectortilefeature.js");c.ha.Ip=a("./lib/vectortilelayer.js")},{"./lib/vectortile.js":3,"./lib/vectortilefeature.js":4,"./lib/vectortilelayer.js":5}],3:[function(a,c){function g(a,
-c,e){3===a&&(a=new h(e,e.Aa()+e.ca),a.length&&(c[a.name]=a))}var h=a("./vectortilelayer");c.ha=function(a,c){this.layers=a.Hf(g,{},c)}},{"./vectortilelayer":5}],4:[function(a,c){function g(a,c,e,f,g){this.properties={};this.extent=e;this.type=0;this.lc=a;this.Me=-1;this.Dd=f;this.Fd=g;a.Hf(h,this,c)}function h(a,c,e){if(1==a)c.Kp=e.Aa();else if(2==a)for(a=e.Aa()+e.ca;e.ca<a;){var f=c.Dd[e.Aa()],g=c.Fd[e.Aa()];c.properties[f]=g}else 3==a?c.type=e.Aa():4==a&&(c.Me=e.ca)}var k=a("point-geometry");c.ha=
-g;g.b=["Unknown","Point","LineString","Polygon"];g.prototype.Qg=function(){var a=this.lc;a.ca=this.Me;for(var c=a.Aa()+a.ca,e=1,f=0,g=0,h=0,v=[],x;a.ca<c;)if(f||(f=a.Aa(),e=f&7,f=f>>3),f--,1===e||2===e)g+=a.sd(),h+=a.sd(),1===e&&(x&&v.push(x),x=[]),x.push(new k(g,h));else if(7===e)x&&x.push(x[0].clone());else throw Error("unknown command "+e);x&&v.push(x);return v};g.prototype.bbox=function(){var a=this.lc;a.ca=this.Me;for(var c=a.Aa()+a.ca,e=1,f=0,g=0,h=0,k=Infinity,x=-Infinity,z=Infinity,E=-Infinity;a.ca<
-c;)if(f||(f=a.Aa(),e=f&7,f=f>>3),f--,1===e||2===e)g+=a.sd(),h+=a.sd(),g<k&&(k=g),g>x&&(x=g),h<z&&(z=h),h>E&&(E=h);else if(7!==e)throw Error("unknown command "+e);return[k,z,x,E]}},{"point-geometry":1}],5:[function(a,c){function g(a,c){this.version=1;this.name=null;this.extent=4096;this.length=0;this.lc=a;this.Dd=[];this.Fd=[];this.Cd=[];a.Hf(h,this,c);this.length=this.Cd.length}function h(a,c,e){15===a?c.version=e.Aa():1===a?c.name=e.Mf():5===a?c.extent=e.Aa():2===a?c.Cd.push(e.ca):3===a?c.Dd.push(e.Mf()):
-4===a&&c.Fd.push(k(e))}function k(a){for(var c=null,e=a.Aa()+a.ca;a.ca<e;)c=a.Aa()>>3,c=1===c?a.Mf():2===c?a.vo():3===c?a.ro():4===c?a.Go():5===c?a.Aa():6===c?a.sd():7===c?a.po():null;return c}var m=a("./vectortilefeature.js");c.ha=g;g.prototype.feature=function(a){if(0>a||a>=this.Cd.length)throw Error("feature index out of bounds");this.lc.ca=this.Cd[a];a=this.lc.Aa()+this.lc.ca;return new m(this.lc,a,this.extent,this.Dd,this.Fd)}},{"./vectortilefeature.js":4}]},{},[2])(2)});$l=c.ha})();function ps(a){this.defaultDataProjection=null;a=a?a:{};this.defaultDataProjection=new Fc({code:"",units:"tile-pixels"});this.b=a.featureClass?a.featureClass:Zk;this.g=a.geometryName?a.geometryName:"geometry";this.a=a.layerName?a.layerName:"layer";this.f=a.layers?a.layers:null}y(ps,io);ps.prototype.X=function(){return"arraybuffer"};
-ps.prototype.Ca=function(a,c){var d=this.f,e=new Zl(a),e=new $l.$i(e),f=[],g=this.b,h,k,m;for(m in e.layers)if(!d||-1!=d.indexOf(m)){h=e.layers[m];for(var n=0,p=h.length;n<p;++n){if(g===Zk){var q=h.feature(n);k=m;var r=q.Qg(),u=[],v=[];qs(r,v,u);var x=q.type,z=void 0;1===x?z=1===r.length?"Point":"MultiPoint":2===x?z=1===r.length?"LineString":"MultiLineString":3===x&&(z="Polygon");q=q.properties;q[this.a]=k;k=new this.b(z,v,u,q)}else{q=h.feature(n);z=m;v=c;k=new this.b;u=q.properties;u[this.a]=z;z=
-q.type;if(0===z)z=null;else{q=q.Qg();r=[];x=[];qs(q,x,r);var E=void 0;1===z?E=1===q.length?new D(null):new so(null):2===z?1===q.length?E=new T(null):E=new U(null):3===z&&(E=new F(null));E.ba("XY",x,r);z=E}(v=lo(z,!1,ko(this,v)))&&(u[this.g]=v);k.C(u);k.zc(this.g)}f.push(k)}}return f};ps.prototype.Oa=function(){return this.defaultDataProjection};ps.prototype.c=function(a){this.f=a};
-function qs(a,c,d){for(var e=0,f=0,g=a.length;f<g;++f){var h=a[f],k,m;k=0;for(m=h.length;k<m;++k){var n=h[k];c.push(n.x,n.y)}e+=2*k;d.push(e)}};function rs(a,c){return new ss(a,c)}function ts(a,c,d){return new us(a,c,d)}function vs(a){pb.call(this);this.Ae=a}y(vs,pb);function ws(a){vs.call(this,a)}y(ws,vs);function xs(a,c,d){vs.call(this,a);this.a=c;this.f=d}y(xs,ws);function ss(a,c){xs.call(this,"And",a,c)}y(ss,xs);function ys(a,c){xs.call(this,"Or",a,c)}y(ys,xs);function zs(a){vs.call(this,"Not");this.condition=a}y(zs,ws);function us(a,c,d){vs.call(this,"BBOX");this.geometryName=a;this.extent=c;this.srsName=d}y(us,vs);
-function As(a,c){vs.call(this,a);this.a=c}y(As,vs);function Bs(a,c,d,e){As.call(this,a,c);this.c=d;this.f=e}y(Bs,As);function Cs(a,c,d){Bs.call(this,"PropertyIsEqualTo",a,c,d)}y(Cs,Bs);function Ds(a,c,d){Bs.call(this,"PropertyIsNotEqualTo",a,c,d)}y(Ds,Bs);function Es(a,c){Bs.call(this,"PropertyIsLessThan",a,c)}y(Es,Bs);function Fs(a,c){Bs.call(this,"PropertyIsLessThanOrEqualTo",a,c)}y(Fs,Bs);function Gs(a,c){Bs.call(this,"PropertyIsGreaterThan",a,c)}y(Gs,Bs);
-function Hs(a,c){Bs.call(this,"PropertyIsGreaterThanOrEqualTo",a,c)}y(Hs,Bs);function Is(a){As.call(this,"PropertyIsNull",a)}y(Is,As);function Js(a,c,d){As.call(this,"PropertyIsBetween",a);this.f=c;this.c=d}y(Js,As);function Ks(a,c,d,e,f,g){As.call(this,"PropertyIsLike",a);this.i=c;this.o=void 0!==d?d:"*";this.l=void 0!==e?e:".";this.c=void 0!==f?f:"!";this.f=g}y(Ks,As);function Ls(){Mo.call(this);this.defaultDataProjection=Ic("EPSG:4326")}y(Ls,Mo);function Ms(a,c){c[c.length-1].xd[a.getAttribute("k")]=a.getAttribute("v")}
-var Ns=[null],Os=N(Ns,{nd:function(a,c){c[c.length-1].Mc.push(a.getAttribute("ref"))},tag:Ms}),Qs=N(Ns,{node:function(a,c){var d=c[0],e=c[c.length-1],f=a.getAttribute("id"),g=[parseFloat(a.getAttribute("lon")),parseFloat(a.getAttribute("lat"))];e.Ug[f]=g;var h=P({xd:{}},Ps,a,c);Sa(h.xd)||(g=new D(g),lo(g,!1,d),d=new zl(g),d.hc(f),d.C(h.xd),e.features.push(d))},way:function(a,c){for(var d=c[0],e=a.getAttribute("id"),f=P({Mc:[],xd:{}},Os,a,c),g=c[c.length-1],h=[],k=0,m=f.Mc.length;k<m;k++)xb(h,g.Ug[f.Mc[k]]);
-f.Mc[0]==f.Mc[f.Mc.length-1]?(k=new F(null),k.ba("XY",h,[h.length])):(k=new T(null),k.ba("XY",h));lo(k,!1,d);d=new zl(k);d.hc(e);d.C(f.xd);g.features.push(d)}}),Ps=N(Ns,{tag:Ms});Ls.prototype.gc=function(a,c){var d=jo(this,a,c);return"osm"==a.localName&&(d=P({Ug:{},features:[]},Qs,a,[d]),d.features)?d.features:[]};function Rs(a){return a.getAttributeNS("http://www.w3.org/1999/xlink","href")};function Ss(){}Ss.prototype.read=function(a){return Gl(a)?this.a(a):Hl(a)?this.b(a):"string"===typeof a?(a=Il(a),this.a(a)):null};function Ts(){}y(Ts,Ss);Ts.prototype.a=function(a){for(a=a.firstChild;a;a=a.nextSibling)if(1==a.nodeType)return this.b(a);return null};Ts.prototype.b=function(a){return(a=P({},Us,a,[]))?a:null};
-var Vs=[null,"http://www.opengis.net/ows/1.1"],Us=N(Vs,{ServiceIdentification:K(function(a,c){return P({},Ws,a,c)}),ServiceProvider:K(function(a,c){return P({},Xs,a,c)}),OperationsMetadata:K(function(a,c){return P({},Ys,a,c)})}),Zs=N(Vs,{DeliveryPoint:K(V),City:K(V),AdministrativeArea:K(V),PostalCode:K(V),Country:K(V),ElectronicMailAddress:K(V)}),$s=N(Vs,{Value:Ml(function(a){return V(a)})}),at=N(Vs,{AllowedValues:K(function(a,c){return P({},$s,a,c)})}),ct=N(Vs,{Phone:K(function(a,c){return P({},
-bt,a,c)}),Address:K(function(a,c){return P({},Zs,a,c)})}),et=N(Vs,{HTTP:K(function(a,c){return P({},dt,a,c)})}),dt=N(Vs,{Get:Ml(function(a,c){var d=Rs(a);return d?P({href:d},ft,a,c):void 0}),Post:void 0}),gt=N(Vs,{DCP:K(function(a,c){return P({},et,a,c)})}),Ys=N(Vs,{Operation:function(a,c){var d=a.getAttribute("name"),e=P({},gt,a,c);e&&(c[c.length-1][d]=e)}}),bt=N(Vs,{Voice:K(V),Facsimile:K(V)}),ft=N(Vs,{Constraint:Ml(function(a,c){var d=a.getAttribute("name");return d?P({name:d},at,a,c):void 0})}),
-ht=N(Vs,{IndividualName:K(V),PositionName:K(V),ContactInfo:K(function(a,c){return P({},ct,a,c)})}),Ws=N(Vs,{Title:K(V),ServiceTypeVersion:K(V),ServiceType:K(V)}),Xs=N(Vs,{ProviderName:K(V),ProviderSite:K(Rs),ServiceContact:K(function(a,c){return P({},ht,a,c)})});function it(a,c,d,e){var f;void 0!==e?f=e:f=[];for(var g=e=0;g<c;){var h=a[g++];f[e++]=a[g++];f[e++]=h;for(h=2;h<d;++h)f[e++]=a[g++]}f.length=e};function jt(a){a=a?a:{};this.defaultDataProjection=null;this.defaultDataProjection=Ic("EPSG:4326");this.b=a.factor?a.factor:1E5;this.a=a.geometryLayout?a.geometryLayout:"XY"}y(jt,Sp);function kt(a,c,d){var e,f=Array(c);for(e=0;e<c;++e)f[e]=0;var g,h;g=0;for(h=a.length;g<h;)for(e=0;e<c;++e,++g){var k=a[g],m=k-f[e];f[e]=k;a[g]=m}return lt(a,d?d:1E5)}
-function mt(a,c,d){var e,f=Array(c);for(e=0;e<c;++e)f[e]=0;a=nt(a,d?d:1E5);var g;d=0;for(g=a.length;d<g;)for(e=0;e<c;++e,++d)f[e]+=a[d],a[d]=f[e];return a}function lt(a,c){var d=c?c:1E5,e,f;e=0;for(f=a.length;e<f;++e)a[e]=Math.round(a[e]*d);d=0;for(e=a.length;d<e;++d)f=a[d],a[d]=0>f?~(f<<1):f<<1;d="";e=0;for(f=a.length;e<f;++e){for(var g=a[e],h=void 0,k="";32<=g;)h=(32|g&31)+63,k+=String.fromCharCode(h),g>>=5;k+=String.fromCharCode(g+63);d+=k}return d}
-function nt(a,c){var d=c?c:1E5,e=[],f=0,g=0,h,k;h=0;for(k=a.length;h<k;++h){var m=a.charCodeAt(h)-63,f=f|(m&31)<<g;32>m?(e.push(f),g=f=0):g+=5}f=0;for(g=e.length;f<g;++f)h=e[f],e[f]=h&1?~(h>>1):h>>1;f=0;for(g=e.length;f<g;++f)e[f]/=d;return e}l=jt.prototype;l.pd=function(a,c){var d=this.rd(a,c);return new zl(d)};l.Gf=function(a,c){return[this.pd(a,c)]};l.rd=function(a,c){var d=td(this.a),e=mt(a,d,this.b);it(e,e.length,d,e);d=Gd(e,0,e.length,d);return lo(new T(d,this.a),!1,ko(this,c))};
-l.De=function(a,c){var d=a.W();return d?this.zd(d,c):""};l.xi=function(a,c){return this.De(a[0],c)};l.zd=function(a,c){a=lo(a,!0,ko(this,c));var d=a.ga(),e=a.ua();it(d,d.length,e,d);return kt(d,e,this.b)};function ot(a){a=a?a:{};this.defaultDataProjection=null;this.defaultDataProjection=Ic(a.defaultDataProjection?a.defaultDataProjection:"EPSG:4326")}y(ot,mo);function pt(a,c){var d=[],e,f,g,h;g=0;for(h=a.length;g<h;++g)e=a[g],0<g&&d.pop(),0<=e?f=c[e]:f=c[~e].slice().reverse(),d.push.apply(d,f);e=0;for(f=d.length;e<f;++e)d[e]=d[e].slice();return d}function rt(a,c,d,e,f){a=a.geometries;var g=[],h,k;h=0;for(k=a.length;h<k;++h)g[h]=st(a[h],c,d,e,f);return g}
-function st(a,c,d,e,f){var g=a.type,h=tt[g];c="Point"===g||"MultiPoint"===g?h(a,d,e):h(a,c);d=new zl;d.Ta(lo(c,!1,f));void 0!==a.id&&d.hc(a.id);a.properties&&d.C(a.properties);return d}
-ot.prototype.Ff=function(a,c){if("Topology"==a.type){var d,e=null,f=null;a.transform&&(d=a.transform,e=d.scale,f=d.translate);var g=a.arcs;if(d){d=e;var h=f,k,m;k=0;for(m=g.length;k<m;++k)for(var n=g[k],p=d,q=h,r=0,u=0,v=void 0,x=void 0,z=void 0,x=0,z=n.length;x<z;++x)v=n[x],r+=v[0],u+=v[1],v[0]=r,v[1]=u,ut(v,p,q)}d=[];h=Ra(a.objects);k=0;for(m=h.length;k<m;++k)"GeometryCollection"===h[k].type?(n=h[k],d.push.apply(d,rt(n,g,e,f,c))):(n=h[k],d.push(st(n,g,e,f,c)));return d}return[]};
-function ut(a,c,d){a[0]=a[0]*c[0]+d[0];a[1]=a[1]*c[1]+d[1]}ot.prototype.Oa=function(){return this.defaultDataProjection};
-var tt={Point:function(a,c,d){a=a.coordinates;c&&d&&ut(a,c,d);return new D(a)},LineString:function(a,c){var d=pt(a.arcs,c);return new T(d)},Polygon:function(a,c){var d=[],e,f;e=0;for(f=a.arcs.length;e<f;++e)d[e]=pt(a.arcs[e],c);return new F(d)},MultiPoint:function(a,c,d){a=a.coordinates;var e,f;if(c&&d)for(e=0,f=a.length;e<f;++e)ut(a[e],c,d);return new so(a)},MultiLineString:function(a,c){var d=[],e,f;e=0;for(f=a.arcs.length;e<f;++e)d[e]=pt(a.arcs[e],c);return new U(d)},MultiPolygon:function(a,c){var d=
-[],e,f,g,h,k,m;k=0;for(m=a.arcs.length;k<m;++k){e=a.arcs[k];f=[];g=0;for(h=e.length;g<h;++g)f[g]=pt(e[g],c);d[k]=f}return new to(d)}};function vt(a){a=a?a:{};this.i=a.featureType;this.g=a.featureNS;this.b=a.gmlFormat?a.gmlFormat:new cp;this.c=a.schemaLocation?a.schemaLocation:"http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd";Mo.call(this)}y(vt,Mo);vt.prototype.gc=function(a,c){var d={featureType:this.i,featureNS:this.g};Pa(d,jo(this,a,c?c:{}));d=[d];this.b.b["http://www.opengis.net/gml"].featureMember=Kl(Po.prototype.qd);(d=P([],this.b.b,a,d,this.b))||(d=[]);return d};
-vt.prototype.o=function(a){if(Gl(a))return wt(a);if(Hl(a))return P({},xt,a,[]);if("string"===typeof a)return a=Il(a),wt(a)};vt.prototype.l=function(a){if(Gl(a))return yt(this,a);if(Hl(a))return zt(this,a);if("string"===typeof a)return a=Il(a),yt(this,a)};function yt(a,c){for(var d=c.firstChild;d;d=d.nextSibling)if(1==d.nodeType)return zt(a,d)}var At={"http://www.opengis.net/gml":{boundedBy:K(Po.prototype.te,"bounds")}};
-function zt(a,c){var d={},e=Xo(c.getAttribute("numberOfFeatures"));d.numberOfFeatures=e;return P(d,At,c,[],a.b)}
-var Bt={"http://www.opengis.net/wfs":{totalInserted:K(Wo),totalUpdated:K(Wo),totalDeleted:K(Wo)}},Ct={"http://www.opengis.net/ogc":{FeatureId:Kl(function(a){return a.getAttribute("fid")})}},Dt={"http://www.opengis.net/wfs":{Feature:function(a,c){Sl(Ct,a,c)}}},xt={"http://www.opengis.net/wfs":{TransactionSummary:K(function(a,c){return P({},Bt,a,c)},"transactionSummary"),InsertResults:K(function(a,c){return P([],Dt,a,c)},"insertIds")}};
-function wt(a){for(a=a.firstChild;a;a=a.nextSibling)if(1==a.nodeType)return P({},xt,a,[])}var Et={"http://www.opengis.net/wfs":{PropertyName:M(Zo)}};function Ft(a,c){var d=Dl("http://www.opengis.net/ogc","Filter"),e=Dl("http://www.opengis.net/ogc","FeatureId");d.appendChild(e);e.setAttribute("fid",c);a.appendChild(d)}
-var Gt={"http://www.opengis.net/wfs":{Insert:M(function(a,c,d){var e=d[d.length-1],e=Dl(e.featureNS,e.featureType);a.appendChild(e);cp.prototype.wi(e,c,d)}),Update:M(function(a,c,d){var e=d[d.length-1],f=e.featureType,g=e.featurePrefix,g=g?g:"feature",h=e.featureNS;a.setAttribute("typeName",g+":"+f);a.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:"+g,h);f=c.Wa();if(void 0!==f){for(var g=c.K(),h=[],k=0,m=g.length;k<m;k++){var n=c.get(g[k]);void 0!==n&&h.push({name:g[k],value:n})}Tl({node:a,
-srsName:e.srsName},Gt,Ol("Property"),h,d);Ft(a,f)}}),Delete:M(function(a,c,d){var e=d[d.length-1];d=e.featureType;var f=e.featurePrefix,f=f?f:"feature",e=e.featureNS;a.setAttribute("typeName",f+":"+d);a.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:"+f,e);c=c.Wa();void 0!==c&&Ft(a,c)}),Property:M(function(a,c,d){var e=Dl("http://www.opengis.net/wfs","Name");a.appendChild(e);Zo(e,c.name);void 0!==c.value&&null!==c.value&&(e=Dl("http://www.opengis.net/wfs","Value"),a.appendChild(e),c.value instanceof
-dd?cp.prototype.Fe(e,c.value,d):Zo(e,c.value))}),Native:M(function(a,c){c.qp&&a.setAttribute("vendorId",c.qp);void 0!==c.So&&a.setAttribute("safeToIgnore",c.So);void 0!==c.value&&Zo(a,c.value)})}};function Ht(a,c,d){a={node:a};var e=c.a;Tl(a,It,Ol(e.Ae),[e],d);c=c.f;Tl(a,It,Ol(c.Ae),[c],d)}function Jt(a,c){void 0!==c.f&&a.setAttribute("matchCase",c.f.toString());Kt(a,c.a);Lt("Literal",a,""+c.c)}function Lt(a,c,d){a=Dl("http://www.opengis.net/ogc",a);Zo(a,d);c.appendChild(a)}
-function Kt(a,c){Lt("PropertyName",a,c)}
-var It={"http://www.opengis.net/wfs":{Query:M(function(a,c,d){var e=d[d.length-1],f=e.featurePrefix,g=e.featureNS,h=e.propertyNames,k=e.srsName;a.setAttribute("typeName",(f?f+":":"")+c);k&&a.setAttribute("srsName",k);g&&a.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:"+f,g);c=Pa({},e);c.node=a;Tl(c,Et,Ol("PropertyName"),h,d);if(e=e.filter)h=Dl("http://www.opengis.net/ogc","Filter"),a.appendChild(h),Tl({node:h},It,Ol(e.Ae),[e],d)})},"http://www.opengis.net/ogc":{And:M(Ht),Or:M(Ht),Not:M(function(a,
-c,d){c=c.condition;Tl({node:a},It,Ol(c.Ae),[c],d)}),BBOX:M(function(a,c,d){d[d.length-1].srsName=c.srsName;Kt(a,c.geometryName);cp.prototype.Fe(a,c.extent,d)}),PropertyIsEqualTo:M(Jt),PropertyIsNotEqualTo:M(Jt),PropertyIsLessThan:M(Jt),PropertyIsLessThanOrEqualTo:M(Jt),PropertyIsGreaterThan:M(Jt),PropertyIsGreaterThanOrEqualTo:M(Jt),PropertyIsNull:M(function(a,c){Kt(a,c.a)}),PropertyIsBetween:M(function(a,c){Kt(a,c.a);Lt("LowerBoundary",a,""+c.f);Lt("UpperBoundary",a,""+c.c)}),PropertyIsLike:M(function(a,
-c){a.setAttribute("wildCard",c.o);a.setAttribute("singleChar",c.l);a.setAttribute("escapeChar",c.c);void 0!==c.f&&a.setAttribute("matchCase",c.f.toString());Kt(a,c.a);Lt("Literal",a,""+c.i)})}};
-vt.prototype.j=function(a){var c=Dl("http://www.opengis.net/wfs","GetFeature");c.setAttribute("service","WFS");c.setAttribute("version","1.1.0");var d;if(a&&(a.handle&&c.setAttribute("handle",a.handle),a.outputFormat&&c.setAttribute("outputFormat",a.outputFormat),void 0!==a.maxFeatures&&c.setAttribute("maxFeatures",a.maxFeatures),a.resultType&&c.setAttribute("resultType",a.resultType),void 0!==a.startIndex&&c.setAttribute("startIndex",a.startIndex),void 0!==a.count&&c.setAttribute("count",a.count),
-d=a.filter,a.bbox)){var e=ts(a.geometryName,a.bbox,a.srsName);d?d=rs(d,e):d=e}c.setAttributeNS("http://www.w3.org/2001/XMLSchema-instance","xsi:schemaLocation",this.c);e=a.featureTypes;a=[{node:c,srsName:a.srsName,featureNS:a.featureNS?a.featureNS:this.g,featurePrefix:a.featurePrefix,geometryName:a.geometryName,filter:d,propertyNames:a.propertyNames?a.propertyNames:[]}];d=Pa({},a[a.length-1]);d.node=c;Tl(d,It,Ol("Query"),e,a);return c};
-vt.prototype.U=function(a,c,d,e){var f=[],g=Dl("http://www.opengis.net/wfs","Transaction");g.setAttribute("service","WFS");g.setAttribute("version","1.1.0");var h,k;e&&(h=e.gmlOptions?e.gmlOptions:{},e.handle&&g.setAttribute("handle",e.handle));g.setAttributeNS("http://www.w3.org/2001/XMLSchema-instance","xsi:schemaLocation",this.c);a&&(k={node:g,featureNS:e.featureNS,featureType:e.featureType,featurePrefix:e.featurePrefix},Pa(k,h),Tl(k,Gt,Ol("Insert"),a,f));c&&(k={node:g,featureNS:e.featureNS,featureType:e.featureType,
-featurePrefix:e.featurePrefix},Pa(k,h),Tl(k,Gt,Ol("Update"),c,f));d&&Tl({node:g,featureNS:e.featureNS,featureType:e.featureType,featurePrefix:e.featurePrefix},Gt,Ol("Delete"),d,f);e.nativeElements&&Tl({node:g,featureNS:e.featureNS,featureType:e.featureType,featurePrefix:e.featurePrefix},Gt,Ol("Native"),e.nativeElements,f);return g};vt.prototype.Lf=function(a){for(a=a.firstChild;a;a=a.nextSibling)if(1==a.nodeType)return this.we(a);return null};
-vt.prototype.we=function(a){if(a.firstElementChild&&a.firstElementChild.firstElementChild)for(a=a.firstElementChild.firstElementChild,a=a.firstElementChild;a;a=a.nextElementSibling)if(0!==a.childNodes.length&&(1!==a.childNodes.length||3!==a.firstChild.nodeType)){var c=[{}];this.b.te(a,c);return Ic(c.pop().srsName)}return null};function Mt(a){a=a?a:{};this.defaultDataProjection=null;this.b=void 0!==a.splitCollection?a.splitCollection:!1}y(Mt,Sp);function Nt(a){a=a.Z();return 0===a.length?"":a[0]+" "+a[1]}function Ot(a){a=a.Z();for(var c=[],d=0,e=a.length;d<e;++d)c.push(a[d][0]+" "+a[d][1]);return c.join(",")}function Pt(a){var c=[];a=a.Pd();for(var d=0,e=a.length;d<e;++d)c.push("("+Ot(a[d])+")");return c.join(",")}function Qt(a){var c=a.X();a=(0,Rt[c])(a);c=c.toUpperCase();return 0===a.length?c+" EMPTY":c+"("+a+")"}
-var Rt={Point:Nt,LineString:Ot,Polygon:Pt,MultiPoint:function(a){var c=[];a=a.ee();for(var d=0,e=a.length;d<e;++d)c.push("("+Nt(a[d])+")");return c.join(",")},MultiLineString:function(a){var c=[];a=a.gd();for(var d=0,e=a.length;d<e;++d)c.push("("+Ot(a[d])+")");return c.join(",")},MultiPolygon:function(a){var c=[];a=a.Qd();for(var d=0,e=a.length;d<e;++d)c.push("("+Pt(a[d])+")");return c.join(",")},GeometryCollection:function(a){var c=[];a=a.bf();for(var d=0,e=a.length;d<e;++d)c.push(Qt(a[d]));return c.join(",")}};
-l=Mt.prototype;l.pd=function(a,c){var d=this.rd(a,c);if(d){var e=new zl;e.Ta(d);return e}return null};l.Gf=function(a,c){var d=[],e=this.rd(a,c);this.b&&"GeometryCollection"==e.X()?d=e.c:d=[e];for(var f=[],g=0,h=d.length;g<h;++g)e=new zl,e.Ta(d[g]),f.push(e);return f};l.rd=function(a,c){var d;d=new St(new Tt(a));d.b=Ut(d.a);return(d=Vt(d))?lo(d,!1,c):null};l.De=function(a,c){var d=a.W();return d?this.zd(d,c):""};
-l.xi=function(a,c){if(1==a.length)return this.De(a[0],c);for(var d=[],e=0,f=a.length;e<f;++e)d.push(a[e].W());d=new Do(d);return this.zd(d,c)};l.zd=function(a,c){return Qt(lo(a,!0,c))};function Tt(a){this.a=a;this.b=-1}
-function Ut(a){var c=a.a.charAt(++a.b),d={position:a.b,value:c};if("("==c)d.type=2;else if(","==c)d.type=5;else if(")"==c)d.type=3;else if("0"<=c&&"9">=c||"."==c||"-"==c){d.type=4;var e,c=a.b,f=!1,g=!1;do{if("."==e)f=!0;else if("e"==e||"E"==e)g=!0;e=a.a.charAt(++a.b)}while("0"<=e&&"9">=e||"."==e&&(void 0===f||!f)||!g&&("e"==e||"E"==e)||g&&("-"==e||"+"==e));a=parseFloat(a.a.substring(c,a.b--));d.value=a}else if("a"<=c&&"z">=c||"A"<=c&&"Z">=c){d.type=1;c=a.b;do e=a.a.charAt(++a.b);while("a"<=e&&"z">=
-e||"A"<=e&&"Z">=e);a=a.a.substring(c,a.b--).toUpperCase();d.value=a}else{if(" "==c||"\t"==c||"\r"==c||"\n"==c)return Ut(a);if(""===c)d.type=6;else throw Error("Unexpected character: "+c);}return d}function St(a){this.a=a}l=St.prototype;l.match=function(a){if(a=this.b.type==a)this.b=Ut(this.a);return a};
-function Vt(a){var c=a.b;if(a.match(1)){var d=c.value;if("GEOMETRYCOLLECTION"==d){a:{if(a.match(2)){c=[];do c.push(Vt(a));while(a.match(5));if(a.match(3)){a=c;break a}}else if(Wt(a)){a=[];break a}throw Error(Xt(a));}return new Do(a)}var e=Yt[d],c=Zt[d];if(!e||!c)throw Error("Invalid geometry type: "+d);a=e.call(a);return new c(a)}throw Error(Xt(a));}l.Af=function(){if(this.match(2)){var a=$t(this);if(this.match(3))return a}else if(Wt(this))return null;throw Error(Xt(this));};
-l.zf=function(){if(this.match(2)){var a=au(this);if(this.match(3))return a}else if(Wt(this))return[];throw Error(Xt(this));};l.Bf=function(){if(this.match(2)){var a=bu(this);if(this.match(3))return a}else if(Wt(this))return[];throw Error(Xt(this));};l.ao=function(){if(this.match(2)){var a;if(2==this.b.type)for(a=[this.Af()];this.match(5);)a.push(this.Af());else a=au(this);if(this.match(3))return a}else if(Wt(this))return[];throw Error(Xt(this));};
-l.$n=function(){if(this.match(2)){var a=bu(this);if(this.match(3))return a}else if(Wt(this))return[];throw Error(Xt(this));};l.bo=function(){if(this.match(2)){for(var a=[this.Bf()];this.match(5);)a.push(this.Bf());if(this.match(3))return a}else if(Wt(this))return[];throw Error(Xt(this));};function $t(a){for(var c=[],d=0;2>d;++d){var e=a.b;if(a.match(4))c.push(e.value);else break}if(2==c.length)return c;throw Error(Xt(a));}function au(a){for(var c=[$t(a)];a.match(5);)c.push($t(a));return c}
-function bu(a){for(var c=[a.zf()];a.match(5);)c.push(a.zf());return c}function Wt(a){var c=1==a.b.type&&"EMPTY"==a.b.value;c&&(a.b=Ut(a.a));return c}function Xt(a){return"Unexpected `"+a.b.value+"` at position "+a.b.position+" in `"+a.a.a+"`"}var Zt={POINT:D,LINESTRING:T,POLYGON:F,MULTIPOINT:so,MULTILINESTRING:U,MULTIPOLYGON:to},Yt={POINT:St.prototype.Af,LINESTRING:St.prototype.zf,POLYGON:St.prototype.Bf,MULTIPOINT:St.prototype.ao,MULTILINESTRING:St.prototype.$n,MULTIPOLYGON:St.prototype.bo};function cu(){this.version=void 0}y(cu,Ss);cu.prototype.a=function(a){for(a=a.firstChild;a;a=a.nextSibling)if(1==a.nodeType)return this.b(a);return null};cu.prototype.b=function(a){this.version=a.getAttribute("version").trim();return(a=P({version:this.version},du,a,[]))?a:null};function eu(a,c){return P({},fu,a,c)}function gu(a,c){return P({},hu,a,c)}function iu(a,c){var d=eu(a,c);if(d){var e=[Xo(a.getAttribute("width")),Xo(a.getAttribute("height"))];d.size=e;return d}}
-function ju(a,c){return P([],ku,a,c)}
-var lu=[null,"http://www.opengis.net/wms"],du=N(lu,{Service:K(function(a,c){return P({},mu,a,c)}),Capability:K(function(a,c){return P({},nu,a,c)})}),nu=N(lu,{Request:K(function(a,c){return P({},ou,a,c)}),Exception:K(function(a,c){return P([],pu,a,c)}),Layer:K(function(a,c){return P({},qu,a,c)})}),mu=N(lu,{Name:K(V),Title:K(V),Abstract:K(V),KeywordList:K(ju),OnlineResource:K(Rs),ContactInformation:K(function(a,c){return P({},ru,a,c)}),Fees:K(V),AccessConstraints:K(V),LayerLimit:K(Wo),MaxWidth:K(Wo),
-MaxHeight:K(Wo)}),ru=N(lu,{ContactPersonPrimary:K(function(a,c){return P({},su,a,c)}),ContactPosition:K(V),ContactAddress:K(function(a,c){return P({},tu,a,c)}),ContactVoiceTelephone:K(V),ContactFacsimileTelephone:K(V),ContactElectronicMailAddress:K(V)}),su=N(lu,{ContactPerson:K(V),ContactOrganization:K(V)}),tu=N(lu,{AddressType:K(V),Address:K(V),City:K(V),StateOrProvince:K(V),PostCode:K(V),Country:K(V)}),pu=N(lu,{Format:Kl(V)}),qu=N(lu,{Name:K(V),Title:K(V),Abstract:K(V),KeywordList:K(ju),CRS:Ml(V),
-EX_GeographicBoundingBox:K(function(a,c){var d=P({},uu,a,c);if(d){var e=d.westBoundLongitude,f=d.southBoundLatitude,g=d.eastBoundLongitude,d=d.northBoundLatitude;return void 0===e||void 0===f||void 0===g||void 0===d?void 0:[e,f,g,d]}}),BoundingBox:Ml(function(a){var c=[Vo(a.getAttribute("minx")),Vo(a.getAttribute("miny")),Vo(a.getAttribute("maxx")),Vo(a.getAttribute("maxy"))],d=[Vo(a.getAttribute("resx")),Vo(a.getAttribute("resy"))];return{crs:a.getAttribute("CRS"),extent:c,res:d}}),Dimension:Ml(function(a){return{name:a.getAttribute("name"),
-units:a.getAttribute("units"),unitSymbol:a.getAttribute("unitSymbol"),"default":a.getAttribute("default"),multipleValues:So(a.getAttribute("multipleValues")),nearestValue:So(a.getAttribute("nearestValue")),current:So(a.getAttribute("current")),values:V(a)}}),Attribution:K(function(a,c){return P({},vu,a,c)}),AuthorityURL:Ml(function(a,c){var d=eu(a,c);if(d)return d.name=a.getAttribute("name"),d}),Identifier:Ml(V),MetadataURL:Ml(function(a,c){var d=eu(a,c);if(d)return d.type=a.getAttribute("type"),
-d}),DataURL:Ml(eu),FeatureListURL:Ml(eu),Style:Ml(function(a,c){return P({},wu,a,c)}),MinScaleDenominator:K(Uo),MaxScaleDenominator:K(Uo),Layer:Ml(function(a,c){var d=c[c.length-1],e=P({},qu,a,c);if(e){var f=So(a.getAttribute("queryable"));void 0===f&&(f=d.queryable);e.queryable=void 0!==f?f:!1;f=Xo(a.getAttribute("cascaded"));void 0===f&&(f=d.cascaded);e.cascaded=f;f=So(a.getAttribute("opaque"));void 0===f&&(f=d.opaque);e.opaque=void 0!==f?f:!1;f=So(a.getAttribute("noSubsets"));void 0===f&&(f=d.noSubsets);
-e.noSubsets=void 0!==f?f:!1;(f=Vo(a.getAttribute("fixedWidth")))||(f=d.fixedWidth);e.fixedWidth=f;(f=Vo(a.getAttribute("fixedHeight")))||(f=d.fixedHeight);e.fixedHeight=f;["Style","CRS","AuthorityURL"].forEach(function(a){a in d&&(e[a]=(e[a]||[]).concat(d[a]))});"EX_GeographicBoundingBox BoundingBox Dimension Attribution MinScaleDenominator MaxScaleDenominator".split(" ").forEach(function(a){a in e||(e[a]=d[a])});return e}})}),vu=N(lu,{Title:K(V),OnlineResource:K(Rs),LogoURL:K(iu)}),uu=N(lu,{westBoundLongitude:K(Uo),
-eastBoundLongitude:K(Uo),southBoundLatitude:K(Uo),northBoundLatitude:K(Uo)}),ou=N(lu,{GetCapabilities:K(gu),GetMap:K(gu),GetFeatureInfo:K(gu)}),hu=N(lu,{Format:Ml(V),DCPType:Ml(function(a,c){return P({},xu,a,c)})}),xu=N(lu,{HTTP:K(function(a,c){return P({},yu,a,c)})}),yu=N(lu,{Get:K(eu),Post:K(eu)}),wu=N(lu,{Name:K(V),Title:K(V),Abstract:K(V),LegendURL:Ml(iu),StyleSheetURL:K(eu),StyleURL:K(eu)}),fu=N(lu,{Format:K(V),OnlineResource:K(Rs)}),ku=N(lu,{Keyword:Kl(V)});function zu(a){a=a?a:{};this.g="http://mapserver.gis.umn.edu/mapserver";this.b=new bp;this.c=a.layers?a.layers:null;Mo.call(this)}y(zu,Mo);
-zu.prototype.gc=function(a,c){var d={};c&&Pa(d,jo(this,a,c));var e=[d];a.setAttribute("namespaceURI",this.g);var f=a.localName,d=[];if(0!==a.childNodes.length){if("msGMLOutput"==f)for(var g=0,h=a.childNodes.length;g<h;g++){var k=a.childNodes[g];if(1===k.nodeType){var m=e[0],n=k.localName.replace("_layer","");if(!this.c||ub(this.c,n)){n+="_feature";m.featureType=n;m.featureNS=this.g;var p={};p[n]=Kl(this.b.Ef,this.b);m=N([m.featureNS,null],p);k.setAttribute("namespaceURI",this.g);(k=P([],m,k,e,this.b))&&
-xb(d,k)}}}"FeatureCollection"==f&&(e=P([],this.b.b,a,[{}],this.b))&&(d=e)}return d};function Au(){this.g=new Ts}y(Au,Ss);Au.prototype.a=function(a){for(a=a.firstChild;a;a=a.nextSibling)if(1==a.nodeType)return this.b(a);return null};Au.prototype.b=function(a){var c=a.getAttribute("version").trim(),d=this.g.b(a);if(!d)return null;d.version=c;return(d=P(d,Bu,a,[]))?d:null};function Cu(a){var c=V(a).split(" ");if(c&&2==c.length)return a=+c[0],c=+c[1],isNaN(a)||isNaN(c)?void 0:[a,c]}
-var Du=[null,"http://www.opengis.net/wmts/1.0"],Eu=[null,"http://www.opengis.net/ows/1.1"],Bu=N(Du,{Contents:K(function(a,c){return P({},Fu,a,c)})}),Fu=N(Du,{Layer:Ml(function(a,c){return P({},Gu,a,c)}),TileMatrixSet:Ml(function(a,c){return P({},Hu,a,c)})}),Gu=N(Du,{Style:Ml(function(a,c){var d=P({},Iu,a,c);if(d){var e="true"===a.getAttribute("isDefault");d.isDefault=e;return d}}),Format:Ml(V),TileMatrixSetLink:Ml(function(a,c){return P({},Ju,a,c)}),Dimension:Ml(function(a,c){return P({},Ku,a,c)}),
-ResourceURL:Ml(function(a){var c=a.getAttribute("format"),d=a.getAttribute("template");a=a.getAttribute("resourceType");var e={};c&&(e.format=c);d&&(e.template=d);a&&(e.resourceType=a);return e})},N(Eu,{Title:K(V),Abstract:K(V),WGS84BoundingBox:K(function(a,c){var d=P([],Lu,a,c);return 2!=d.length?void 0:Vb(d)}),Identifier:K(V)})),Iu=N(Du,{LegendURL:Ml(function(a){var c={};c.format=a.getAttribute("format");c.href=Rs(a);return c})},N(Eu,{Title:K(V),Identifier:K(V)})),Ju=N(Du,{TileMatrixSet:K(V)}),
-Ku=N(Du,{Default:K(V),Value:Ml(V)},N(Eu,{Identifier:K(V)})),Lu=N(Eu,{LowerCorner:Kl(Cu),UpperCorner:Kl(Cu)}),Hu=N(Du,{WellKnownScaleSet:K(V),TileMatrix:Ml(function(a,c){return P({},Mu,a,c)})},N(Eu,{SupportedCRS:K(V),Identifier:K(V)})),Mu=N(Du,{TopLeftCorner:K(Cu),ScaleDenominator:K(Uo),TileWidth:K(Wo),TileHeight:K(Wo),MatrixWidth:K(Wo),MatrixHeight:K(Wo)},N(Eu,{Identifier:K(V)}));function Nu(a){pb.call(this);a=a||{};this.a=null;this.c=ad;this.f=void 0;C(this,rb("projection"),this.Jl,this);C(this,rb("tracking"),this.Kl,this);void 0!==a.projection&&this.Yg(Ic(a.projection));void 0!==a.trackingOptions&&this.mi(a.trackingOptions);this.ae(void 0!==a.tracking?a.tracking:!1)}y(Nu,pb);l=Nu.prototype;l.fa=function(){this.ae(!1);Nu.ia.fa.call(this)};l.Jl=function(){var a=this.Wg();a&&(this.c=Lc(Ic("EPSG:4326"),a),this.a&&this.set("position",this.c(this.a)))};
-l.Kl=function(){if(bh){var a=this.Xg();a&&void 0===this.f?this.f=qa.navigator.geolocation.watchPosition(this.ko.bind(this),this.lo.bind(this),this.Hg()):a||void 0===this.f||(qa.navigator.geolocation.clearWatch(this.f),this.f=void 0)}};
-l.ko=function(a){a=a.coords;this.set("accuracy",a.accuracy);this.set("altitude",null===a.altitude?void 0:a.altitude);this.set("altitudeAccuracy",null===a.altitudeAccuracy?void 0:a.altitudeAccuracy);this.set("heading",null===a.heading?void 0:Ha(a.heading));this.a?(this.a[0]=a.longitude,this.a[1]=a.latitude):this.a=[a.longitude,a.latitude];var c=this.c(this.a);this.set("position",c);this.set("speed",null===a.speed?void 0:a.speed);a=Yd(Pj,this.a,a.accuracy);a.mc(this.c);this.set("accuracyGeometry",a);
-this.u()};l.lo=function(a){a.type="error";this.ae(!1);this.b(a)};l.Ij=function(){return this.get("accuracy")};l.Jj=function(){return this.get("accuracyGeometry")||null};l.Lj=function(){return this.get("altitude")};l.Mj=function(){return this.get("altitudeAccuracy")};l.Hl=function(){return this.get("heading")};l.Il=function(){return this.get("position")};l.Wg=function(){return this.get("projection")};l.sk=function(){return this.get("speed")};l.Xg=function(){return this.get("tracking")};l.Hg=function(){return this.get("trackingOptions")};
-l.Yg=function(a){this.set("projection",a)};l.ae=function(a){this.set("tracking",a)};l.mi=function(a){this.set("trackingOptions",a)};function Ou(a,c,d){sd.call(this);this.Rf(a,c?c:0,d)}y(Ou,sd);l=Ou.prototype;l.clone=function(){var a=new Ou(null),c=this.A.slice();ud(a,this.f,c);a.u();return a};l.rb=function(a,c,d,e){var f=this.A;a-=f[0];var g=c-f[1];c=a*a+g*g;if(c<e){if(0===c)for(e=0;e<this.a;++e)d[e]=f[e];else for(e=this.sf()/Math.sqrt(c),d[0]=f[0]+e*a,d[1]=f[1]+e*g,e=2;e<this.a;++e)d[e]=f[e];d.length=this.a;return c}return e};l.wc=function(a,c){var d=this.A,e=a-d[0],d=c-d[1];return e*e+d*d<=Pu(this)};
-l.ld=function(){return this.A.slice(0,this.a)};l.Jd=function(a){var c=this.A,d=c[this.a]-c[0];return ec(c[0]-d,c[1]-d,c[0]+d,c[1]+d,a)};l.sf=function(){return Math.sqrt(Pu(this))};function Pu(a){var c=a.A[a.a]-a.A[0];a=a.A[a.a+1]-a.A[1];return c*c+a*a}l.X=function(){return"Circle"};l.Ia=function(a){var c=this.O();return wc(a,c)?(c=this.ld(),a[0]<=c[0]&&a[2]>=c[0]||a[1]<=c[1]&&a[3]>=c[1]?!0:kc(a,this.og,this)):!1};
-l.dm=function(a){var c=this.a,d=this.A[c]-this.A[0],e=a.slice();e[c]=e[0]+d;for(d=1;d<c;++d)e[c+d]=a[d];ud(this,this.f,e);this.u()};l.Rf=function(a,c,d){if(a){vd(this,d,a,0);this.A||(this.A=[]);d=this.A;a=Dd(d,a);d[a++]=d[0]+c;var e;c=1;for(e=this.a;c<e;++c)d[a++]=d[c];d.length=a}else ud(this,"XY",null);this.u()};l.em=function(a){this.A[this.a]=this.A[0]+a;this.u()};function Qu(a,c,d){for(var e=[],f=a(0),g=a(1),h=c(f),k=c(g),m=[g,f],n=[k,h],p=[1,0],q={},r=1E5,u,v,x,z,E;0<--r&&0<p.length;)x=p.pop(),f=m.pop(),h=n.pop(),g=x.toString(),g in q||(e.push(h[0],h[1]),q[g]=!0),z=p.pop(),g=m.pop(),k=n.pop(),E=(x+z)/2,u=a(E),v=c(u),Fa(v[0],v[1],h[0],h[1],k[0],k[1])<d?(e.push(k[0],k[1]),g=z.toString(),q[g]=!0):(p.push(z,E,E,x),n.push(k,v,v,h),m.push(g,u,u,f));return e}function Ru(a,c,d,e,f){var g=Ic("EPSG:4326");return Qu(function(e){return[a,c+(d-c)*e]},$c(g,e),f)}
-function Su(a,c,d,e,f){var g=Ic("EPSG:4326");return Qu(function(e){return[c+(d-c)*e,a]},$c(g,e),f)};function Tu(a){a=a||{};this.c=this.o=null;this.g=this.i=Infinity;this.f=this.l=-Infinity;this.B=this.U=Infinity;this.N=this.M=-Infinity;this.ya=void 0!==a.targetSize?a.targetSize:100;this.R=void 0!==a.maxLines?a.maxLines:100;this.b=[];this.a=[];this.va=void 0!==a.strokeStyle?a.strokeStyle:Uu;this.v=this.j=void 0;this.s=null;this.setMap(void 0!==a.map?a.map:null)}var Uu=new gk({color:"rgba(0,0,0,0.2)"}),Vu=[90,45,30,20,10,5,2,1,.5,.2,.1,.05,.01,.005,.002,.001];
-function Wu(a,c,d,e,f,g,h){var k=h;c=Ru(c,d,e,a.c,f);k=void 0!==a.b[k]?a.b[k]:new T(null);k.ba("XY",c);wc(k.O(),g)&&(a.b[h++]=k);return h}function Xu(a,c,d,e,f){var g=f;c=Su(c,a.f,a.g,a.c,d);g=void 0!==a.a[g]?a.a[g]:new T(null);g.ba("XY",c);wc(g.O(),e)&&(a.a[f++]=g);return f}l=Tu.prototype;l.Ll=function(){return this.o};l.ek=function(){return this.b};l.lk=function(){return this.a};
-l.Mg=function(a){var c=a.vectorContext,d=a.frameState,e=d.extent;a=d.viewState;var f=a.center,g=a.projection,h=a.resolution;a=d.pixelRatio;a=h*h/(4*a*a);if(!this.c||!Zc(this.c,g)){var k=Ic("EPSG:4326"),m=g.O(),n=g.i,p=cd(n,k,g),q=n[2],r=n[1],u=n[0],v=p[3],x=p[2],z=p[1],p=p[0];this.i=n[3];this.g=q;this.l=r;this.f=u;this.U=v;this.B=x;this.M=z;this.N=p;this.j=$c(k,g);this.v=$c(g,k);this.s=this.v(tc(m));this.c=g}k=0;g.a&&(g=g.O(),k=rc(g),d=d.focus[0],d<g[0]||d>g[2])&&(k*=Math.ceil((g[0]-d)/k),e=[e[0]+
-k,e[1],e[2]+k,e[3]]);d=this.s[0];g=this.s[1];k=-1;n=Math.pow(this.ya*h,2);q=[];r=[];h=0;for(m=Vu.length;h<m;++h){u=Vu[h]/2;q[0]=d-u;q[1]=g-u;r[0]=d+u;r[1]=g+u;this.j(q,q);this.j(r,r);u=Math.pow(r[0]-q[0],2)+Math.pow(r[1]-q[1],2);if(u<=n)break;k=Vu[h]}h=k;if(-1==h)this.b.length=this.a.length=0;else{d=this.v(f);f=d[0];d=d[1];g=this.R;k=[Math.max(e[0],this.N),Math.max(e[1],this.M),Math.min(e[2],this.B),Math.min(e[3],this.U)];k=cd(k,this.c,"EPSG:4326");n=k[3];r=k[1];f=Math.floor(f/h)*h;q=Da(f,this.f,
-this.g);m=Wu(this,q,r,n,a,e,0);for(k=0;q!=this.f&&k++<g;)q=Math.max(q-h,this.f),m=Wu(this,q,r,n,a,e,m);q=Da(f,this.f,this.g);for(k=0;q!=this.g&&k++<g;)q=Math.min(q+h,this.g),m=Wu(this,q,r,n,a,e,m);this.b.length=m;d=Math.floor(d/h)*h;f=Da(d,this.l,this.i);m=Xu(this,f,a,e,0);for(k=0;f!=this.l&&k++<g;)f=Math.max(f-h,this.l),m=Xu(this,f,a,e,m);f=Da(d,this.l,this.i);for(k=0;f!=this.i&&k++<g;)f=Math.min(f+h,this.i),m=Xu(this,f,a,e,m);this.a.length=m}c.Ob(null,this.va);a=0;for(f=this.b.length;a<f;++a)h=
-this.b[a],c.cd(h,null);a=0;for(f=this.a.length;a<f;++a)h=this.a[a],c.cd(h,null)};l.setMap=function(a){this.o&&(this.o.G("postcompose",this.Mg,this),this.o.render());a&&(a.D("postcompose",this.Mg,this),a.render());this.o=a};function Yu(a,c,d,e,f,g,h){fi.call(this,a,c,d,0,e);this.j=f;this.g=new Image;null!==g&&(this.g.crossOrigin=g);this.i={};this.c=null;this.state=0;this.o=h}y(Yu,fi);Yu.prototype.a=function(a){if(void 0!==a){var c;a=w(a);if(a in this.i)return this.i[a];Sa(this.i)?c=this.g:c=this.g.cloneNode(!1);return this.i[a]=c}return this.g};Yu.prototype.s=function(){this.state=3;this.c.forEach(Xa);this.c=null;gi(this)};
-Yu.prototype.v=function(){void 0===this.resolution&&(this.resolution=sc(this.extent)/this.g.height);this.state=2;this.c.forEach(Xa);this.c=null;gi(this)};Yu.prototype.load=function(){0==this.state&&(this.state=1,gi(this),this.c=[bb(this.g,"error",this.s,this),bb(this.g,"load",this.v,this)],this.o(this,this.j))};function Zu(a,c,d,e,f){Qf.call(this,a,c);this.s=d;this.g=new Image;null!==e&&(this.g.crossOrigin=e);this.c={};this.j=null;this.v=f}y(Zu,Qf);l=Zu.prototype;l.fa=function(){1==this.state&&$u(this);this.a&&fb(this.a);this.state=5;Rf(this);Zu.ia.fa.call(this)};l.ab=function(a){if(void 0!==a){var c=w(a);if(c in this.c)return this.c[c];a=Sa(this.c)?this.g:this.g.cloneNode(!1);return this.c[c]=a}return this.g};l.gb=function(){return this.s};l.Ml=function(){this.state=3;$u(this);Rf(this)};
-l.Nl=function(){this.state=this.g.naturalWidth&&this.g.naturalHeight?2:4;$u(this);Rf(this)};l.load=function(){0==this.state&&(this.state=1,Rf(this),this.j=[bb(this.g,"error",this.Ml,this),bb(this.g,"load",this.Nl,this)],this.v(this,this.s))};function $u(a){a.j.forEach(Xa);a.j=null};function av(a){a=a?a:{};Mi.call(this,{handleEvent:Ac});this.c=a.formatConstructors?a.formatConstructors:[];this.j=a.projection?Ic(a.projection):null;this.a=null;this.target=a.target?a.target:null}y(av,Mi);function bv(a){a=a.dataTransfer.files;var c,d,e;c=0;for(d=a.length;c<d;++c){e=a.item(c);var f=new FileReader;f.addEventListener("load",this.o.bind(this,e));f.readAsText(e)}}function cv(a){a.stopPropagation();a.preventDefault();a.dataTransfer.dropEffect="copy"}
-av.prototype.o=function(a,c){var d=c.target.result,e=this.v,f=this.j;f||(f=e.aa().i);var e=this.c,g=[],h,k;h=0;for(k=e.length;h<k;++h){var m=new e[h];var n={featureProjection:f};try{g=m.Ca(d,n)}catch(p){g=null}if(g&&0<g.length)break}this.b(new dv(ev,this,a,g,f))};av.prototype.setMap=function(a){this.a&&(this.a.forEach(Xa),this.a=null);av.ia.setMap.call(this,a);a&&(a=this.target?this.target:a.a,this.a=[C(a,"drop",bv,this),C(a,"dragenter",cv,this),C(a,"dragover",cv,this),C(a,"drop",cv,this)])};
-var ev="addfeatures";function dv(a,c,d,e,f){gb.call(this,a,c);this.features=e;this.file=d;this.projection=f}y(dv,gb);function fv(a){a=a?a:{};aj.call(this,{handleDownEvent:gv,handleDragEvent:hv,handleUpEvent:iv});this.s=a.condition?a.condition:Xi;this.a=this.c=void 0;this.j=0;this.B=void 0!==a.duration?a.duration:400}y(fv,aj);
-function hv(a){if(Zi(a)){var c=a.map,d=c.$a(),e=a.pixel;a=e[0]-d[0]/2;e=d[1]/2-e[1];d=Math.atan2(e,a);a=Math.sqrt(a*a+e*e);e=c.aa();c.render();if(void 0!==this.c){var f=d-this.c;Ni(c,e,e.Ka()-f)}this.c=d;void 0!==this.a&&(d=this.a*(e.$()/a),Pi(c,e,d));void 0!==this.a&&(this.j=this.a/a);this.a=a}}
-function iv(a){if(!Zi(a))return!0;a=a.map;var c=a.aa();he(c,-1);var d=this.j-1,e=c.Ka(),e=c.constrainRotation(e,0);Ni(a,c,e,void 0,void 0);var e=c.$(),f=this.B,e=c.constrainResolution(e,0,d);Pi(a,c,e,void 0,f);this.j=0;return!1}function gv(a){return Zi(a)&&this.s(a)?(he(a.map.aa(),1),this.a=this.c=void 0,!0):!1};function jv(a,c){gb.call(this,a);this.feature=c}y(jv,gb);
-function kv(a){aj.call(this,{handleDownEvent:lv,handleEvent:mv,handleUpEvent:nv});this.wa=null;this.S=!1;this.Cc=a.source?a.source:null;this.pb=a.features?a.features:null;this.yj=a.snapTolerance?a.snapTolerance:12;this.Y=a.type;this.c=ov(this.Y);this.Ra=a.minPoints?a.minPoints:this.c===pv?3:2;this.xa=a.maxPoints?a.maxPoints:Infinity;this.Je=a.finishCondition?a.finishCondition:Ac;var c=a.geometryFunction;if(!c)if("Circle"===this.Y)c=function(a,c){var d=c?c:new Ou([NaN,NaN]);d.Rf(a[0],Math.sqrt(Sb(a[0],
-a[1])));return d};else{var d,c=this.c;c===qv?d=D:c===rv?d=T:c===pv&&(d=F);c=function(a,c){var g=c;g?g.ma(a):g=new d(a);return g}}this.N=c;this.T=this.B=this.a=this.R=this.j=this.s=null;this.Bj=a.clickTolerance?a.clickTolerance*a.clickTolerance:36;this.na=new H({source:new Q({useSpatialIndex:!1,wrapX:a.wrapX?a.wrapX:!1}),style:a.style?a.style:sv()});this.Db=a.geometryName;this.xj=a.condition?a.condition:Wi;this.ta=a.freehandCondition?a.freehandCondition:Xi;C(this,rb("active"),this.ti,this)}y(kv,aj);
-function sv(){var a=ok();return function(c){return a[c.W().X()]}}l=kv.prototype;l.setMap=function(a){kv.ia.setMap.call(this,a);this.ti()};function mv(a){this.c!==rv&&this.c!==pv||!this.ta(a)||(this.S=!0);var c=!this.S;this.S&&a.type===Yh?(tv(this,a),c=!1):a.type===Xh?c=uv(this,a):a.type===Rh&&(c=!1);return bj.call(this,a)&&c}function lv(a){return this.xj(a)?(this.wa=a.pixel,!0):this.S?(this.wa=a.pixel,this.s||vv(this,a),!0):!1}
-function nv(a){this.S=!1;var c=this.wa,d=a.pixel,e=c[0]-d[0],c=c[1]-d[1],d=!0;e*e+c*c<=this.Bj&&(uv(this,a),this.s?this.c===wv?this.dd():xv(this,a)?this.Je(a)&&this.dd():tv(this,a):(vv(this,a),this.c===qv&&this.dd()),d=!1);return d}
-function uv(a,c){if(a.s){var d=c.coordinate,e=a.j.W(),f;a.c===qv?f=a.a:a.c===pv?(f=a.a[0],f=f[f.length-1],xv(a,c)&&(d=a.s.slice())):(f=a.a,f=f[f.length-1]);f[0]=d[0];f[1]=d[1];a.N(a.a,e);a.R&&a.R.W().ma(d);e instanceof F&&a.c!==pv?(a.B||(a.B=new zl(new T(null))),e=e.Cg(0),d=a.B.W(),d.ba(e.f,e.ga())):a.T&&(d=a.B.W(),d.ma(a.T));yv(a)}else d=c.coordinate.slice(),a.R?a.R.W().ma(d):(a.R=new zl(new D(d)),yv(a));return!0}
-function xv(a,c){var d=!1;if(a.j){var e=!1,f=[a.s];a.c===rv?e=a.a.length>a.Ra:a.c===pv&&(e=a.a[0].length>a.Ra,f=[a.a[0][0],a.a[0][a.a[0].length-2]]);if(e)for(var e=c.map,g=0,h=f.length;g<h;g++){var k=f[g],m=e.Da(k),n=c.pixel,d=n[0]-m[0],m=n[1]-m[1],n=a.S&&a.ta(c)?1:a.yj;if(d=Math.sqrt(d*d+m*m)<=n){a.s=k;break}}}return d}
-function vv(a,c){var d=c.coordinate;a.s=d;a.c===qv?a.a=d.slice():a.c===pv?(a.a=[[d.slice(),d.slice()]],a.T=a.a[0]):(a.a=[d.slice(),d.slice()],a.c===wv&&(a.T=a.a));a.T&&(a.B=new zl(new T(a.T)));d=a.N(a.a);a.j=new zl;a.Db&&a.j.zc(a.Db);a.j.Ta(d);yv(a);a.b(new jv("drawstart",a.j))}
-function tv(a,c){var d=c.coordinate,e=a.j.W(),f,g;if(a.c===rv)a.s=d.slice(),g=a.a,g.push(d.slice()),f=g.length>a.xa,a.N(g,e);else if(a.c===pv){g=a.a[0];g.push(d.slice());if(f=g.length>a.xa)a.s=g[0];a.N(a.a,e)}yv(a);f&&a.dd()}l.Ko=function(){var a=this.j.W(),c,d;this.c===rv?(c=this.a,c.splice(-2,1),this.N(c,a)):this.c===pv&&(c=this.a[0],c.splice(-2,1),d=this.B.W(),d.ma(c),this.N(this.a,a));0===c.length&&(this.s=null);yv(this)};
-l.dd=function(){var a=zv(this),c=this.a,d=a.W();this.c===rv?(c.pop(),this.N(c,d)):this.c===pv&&(c[0].pop(),c[0].push(c[0][0]),this.N(c,d));"MultiPoint"===this.Y?a.Ta(new so([c])):"MultiLineString"===this.Y?a.Ta(new U([c])):"MultiPolygon"===this.Y&&a.Ta(new to([c]));this.b(new jv("drawend",a));this.pb&&this.pb.push(a);this.Cc&&this.Cc.qb(a)};function zv(a){a.s=null;var c=a.j;c&&(a.j=null,a.R=null,a.B=null,a.na.da().clear(!0));return c}
-l.lm=function(a){var c=a.W();this.j=a;this.a=c.Z();a=this.a[this.a.length-1];this.s=a.slice();this.a.push(a.slice());yv(this);this.b(new jv("drawstart",this.j))};l.Bc=Bc;function yv(a){var c=[];a.j&&c.push(a.j);a.B&&c.push(a.B);a.R&&c.push(a.R);a=a.na.da();a.clear(!0);a.Ec(c)}l.ti=function(){var a=this.v,c=this.f();a&&c||zv(this);this.na.setMap(c?a:null)};
-function ov(a){var c;"Point"===a||"MultiPoint"===a?c=qv:"LineString"===a||"MultiLineString"===a?c=rv:"Polygon"===a||"MultiPolygon"===a?c=pv:"Circle"===a&&(c=wv);return c}var qv="Point",rv="LineString",pv="Polygon",wv="Circle";function Av(a,c,d){gb.call(this,a);this.features=c;this.mapBrowserPointerEvent=d}y(Av,gb);
-function Bv(a){aj.call(this,{handleDownEvent:Cv,handleDragEvent:Dv,handleEvent:Ev,handleUpEvent:Fv});this.Db=a.condition?a.condition:$i;this.Ra=function(a){return Wi(a)&&Vi(a)};this.pb=a.deleteCondition?a.deleteCondition:this.Ra;this.xa=this.c=null;this.na=[0,0];this.N=this.T=!1;this.a=new bm;this.R=void 0!==a.pixelTolerance?a.pixelTolerance:10;this.s=this.ta=!1;this.j=[];this.S=new H({source:new Q({useSpatialIndex:!1,wrapX:!!a.wrapX}),style:a.style?a.style:Gv(),updateWhileAnimating:!0,updateWhileInteracting:!0});
-this.wa={Point:this.sm,LineString:this.fh,LinearRing:this.fh,Polygon:this.tm,MultiPoint:this.qm,MultiLineString:this.pm,MultiPolygon:this.rm,GeometryCollection:this.om};this.B=a.features;this.B.forEach(this.tf,this);C(this.B,"add",this.mm,this);C(this.B,"remove",this.nm,this);this.Y=null}y(Bv,aj);l=Bv.prototype;l.tf=function(a){var c=a.W();c.X()in this.wa&&this.wa[c.X()].call(this,a,c);(c=this.v)&&Hv(this,this.na,c);C(a,"change",this.eh,this)};
-function Iv(a,c){a.N||(a.N=!0,a.b(new Av("modifystart",a.B,c)))}function Jv(a,c){Kv(a,c);a.c&&0===a.B.Zb()&&(a.S.da().kb(a.c),a.c=null);cb(c,"change",a.eh,a)}function Kv(a,c){var d=a.a,e=[];d.forEach(function(a){c===a.feature&&e.push(a)});for(var f=e.length-1;0<=f;--f)d.remove(e[f])}l.setMap=function(a){this.S.setMap(a);Bv.ia.setMap.call(this,a)};l.mm=function(a){this.tf(a.element)};l.eh=function(a){this.s||(a=a.target,Jv(this,a),this.tf(a))};l.nm=function(a){Jv(this,a.element)};
-l.sm=function(a,c){var d=c.Z(),d={feature:a,geometry:c,la:[d,d]};this.a.za(c.O(),d)};l.qm=function(a,c){var d=c.Z(),e,f,g;f=0;for(g=d.length;f<g;++f)e=d[f],e={feature:a,geometry:c,depth:[f],index:f,la:[e,e]},this.a.za(c.O(),e)};l.fh=function(a,c){var d=c.Z(),e,f,g,h;e=0;for(f=d.length-1;e<f;++e)g=d.slice(e,e+2),h={feature:a,geometry:c,index:e,la:g},this.a.za(Vb(g),h)};
-l.pm=function(a,c){var d=c.Z(),e,f,g,h,k,m,n;h=0;for(k=d.length;h<k;++h)for(e=d[h],f=0,g=e.length-1;f<g;++f)m=e.slice(f,f+2),n={feature:a,geometry:c,depth:[h],index:f,la:m},this.a.za(Vb(m),n)};l.tm=function(a,c){var d=c.Z(),e,f,g,h,k,m,n;h=0;for(k=d.length;h<k;++h)for(e=d[h],f=0,g=e.length-1;f<g;++f)m=e.slice(f,f+2),n={feature:a,geometry:c,depth:[h],index:f,la:m},this.a.za(Vb(m),n)};
-l.rm=function(a,c){var d=c.Z(),e,f,g,h,k,m,n,p,q,r;m=0;for(n=d.length;m<n;++m)for(p=d[m],h=0,k=p.length;h<k;++h)for(e=p[h],f=0,g=e.length-1;f<g;++f)q=e.slice(f,f+2),r={feature:a,geometry:c,depth:[h,m],index:f,la:q},this.a.za(Vb(q),r)};l.om=function(a,c){var d,e=c.c;for(d=0;d<e.length;++d)this.wa[e[d].X()].call(this,a,e[d])};function Lv(a,c){var d=a.c;d?d.W().ma(c):(d=new zl(new D(c)),a.c=d,a.S.da().qb(d))}function Mv(a,c){return a.index-c.index}
-function Cv(a){if(!this.Db(a))return!1;Hv(this,a.pixel,a.map);this.j.length=0;this.N=!1;var c=this.c;if(c){var d=[],c=c.W().Z(),e=Vb([c]),e=em(this.a,e),f={};e.sort(Mv);for(var g=0,h=e.length;g<h;++g){var k=e[g],m=k.la,n=w(k.feature),p=k.depth;p&&(n+="-"+p.join("-"));f[n]||(f[n]=Array(2));if(Qb(m[0],c)&&!f[n][0])this.j.push([k,0]),f[n][0]=k;else if(Qb(m[1],c)&&!f[n][1]){if("LineString"!==k.geometry.X()&&"MultiLineString"!==k.geometry.X()||!f[n][0]||0!==f[n][0].index)this.j.push([k,1]),f[n][1]=k}else w(m)in
-this.xa&&!f[n][0]&&!f[n][1]&&d.push([k,c])}d.length&&Iv(this,a);for(a=d.length-1;0<=a;--a)this.jl.apply(this,d[a])}return!!this.c}
-function Dv(a){this.T=!1;Iv(this,a);a=a.coordinate;for(var c=0,d=this.j.length;c<d;++c){for(var e=this.j[c],f=e[0],g=f.depth,h=f.geometry,k=h.Z(),m=f.la,e=e[1];a.length<h.ua();)a.push(0);switch(h.X()){case "Point":k=a;m[0]=m[1]=a;break;case "MultiPoint":k[f.index]=a;m[0]=m[1]=a;break;case "LineString":k[f.index+e]=a;m[e]=a;break;case "MultiLineString":k[g[0]][f.index+e]=a;m[e]=a;break;case "Polygon":k[g[0]][f.index+e]=a;m[e]=a;break;case "MultiPolygon":k[g[1]][g[0]][f.index+e]=a,m[e]=a}f=h;this.s=
-!0;f.ma(k);this.s=!1}Lv(this,a)}function Fv(a){for(var c,d=this.j.length-1;0<=d;--d)c=this.j[d][0],cm(this.a,Vb(c.la),c);this.N&&(this.b(new Av("modifyend",this.B,a)),this.N=!1);return!1}function Ev(a){if(!(a instanceof Nh))return!0;this.Y=a;var c;ce(a.map.aa())[1]||a.type!=Xh||this.M||(this.na=a.pixel,Hv(this,a.pixel,a.map));this.c&&this.pb(a)&&(a.type==Sh&&this.T?c=!0:(this.c.W(),c=this.Wh()));a.type==Sh&&(this.T=!1);return bj.call(this,a)&&!c}
-function Hv(a,c,d){function e(a,c){return Tb(f,a.la)-Tb(f,c.la)}var f=d.Ma(c),g=d.Ma([c[0]-a.R,c[1]+a.R]),h=d.Ma([c[0]+a.R,c[1]-a.R]),g=Vb([g,h]),g=em(a.a,g);if(0<g.length){g.sort(e);var h=g[0].la,k=Nb(f,h),m=d.Da(k);if(Math.sqrt(Sb(c,m))<=a.R){c=d.Da(h[0]);d=d.Da(h[1]);c=Sb(m,c);d=Sb(m,d);a.ta=Math.sqrt(Math.min(c,d))<=a.R;a.ta&&(k=c>d?h[1]:h[0]);Lv(a,k);d={};d[w(h)]=!0;c=1;for(m=g.length;c<m;++c)if(k=g[c].la,Qb(h[0],k[0])&&Qb(h[1],k[1])||Qb(h[0],k[1])&&Qb(h[1],k[0]))d[w(k)]=!0;else break;a.xa=d;
-return}}a.c&&(a.S.da().kb(a.c),a.c=null)}
-l.jl=function(a,c){for(var d=a.la,e=a.feature,f=a.geometry,g=a.depth,h=a.index,k;c.length<f.ua();)c.push(0);switch(f.X()){case "MultiLineString":k=f.Z();k[g[0]].splice(h+1,0,c);break;case "Polygon":k=f.Z();k[g[0]].splice(h+1,0,c);break;case "MultiPolygon":k=f.Z();k[g[1]][g[0]].splice(h+1,0,c);break;case "LineString":k=f.Z();k.splice(h+1,0,c);break;default:return}this.s=!0;f.ma(k);this.s=!1;k=this.a;k.remove(a);Nv(this,f,h,g,1);var m={la:[d[0],c],feature:e,geometry:f,depth:g,index:h};k.za(Vb(m.la),
-m);this.j.push([m,1]);d={la:[c,d[1]],feature:e,geometry:f,depth:g,index:h+1};k.za(Vb(d.la),d);this.j.push([d,0]);this.T=!0};
-l.Wh=function(){var a=!1;if(this.Y&&this.Y.type!=Yh){var c=this.Y;Iv(this,c);var d=this.j,a={},e,f,g,h,k,m,n,p,q;for(h=d.length-1;0<=h;--h)g=d[h],n=g[0],p=w(n.feature),n.depth&&(p+="-"+n.depth.join("-")),p in a||(a[p]={}),0===g[1]?(a[p].right=n,a[p].index=n.index):1==g[1]&&(a[p].left=n,a[p].index=n.index+1);for(p in a){m=a[p].right;h=a[p].left;g=a[p].index;k=g-1;n=void 0!==h?h:m;0>k&&(k=0);d=n.geometry;e=f=d.Z();q=!1;switch(d.X()){case "MultiLineString":2<f[n.depth[0]].length&&(f[n.depth[0]].splice(g,
-1),q=!0);break;case "LineString":2<f.length&&(f.splice(g,1),q=!0);break;case "MultiPolygon":e=e[n.depth[1]];case "Polygon":e=e[n.depth[0]],4<e.length&&(g==e.length-1&&(g=0),e.splice(g,1),q=!0,0===g&&(e.pop(),e.push(e[0]),k=e.length-1))}q&&(e=d,this.s=!0,e.ma(f),this.s=!1,f=[],void 0!==h&&(this.a.remove(h),f.push(h.la[0])),void 0!==m&&(this.a.remove(m),f.push(m.la[1])),void 0!==h&&void 0!==m&&(h={depth:n.depth,feature:n.feature,geometry:n.geometry,index:k,la:f},this.a.za(Vb(h.la),h)),Nv(this,d,g,n.depth,
--1),this.c&&(this.S.da().kb(this.c),this.c=null))}a=!0;this.b(new Av("modifyend",this.B,c));this.N=!1}return a};function Nv(a,c,d,e,f){gm(a.a,c.O(),function(a){a.geometry===c&&(void 0===e||void 0===a.depth||Ab(a.depth,e))&&a.index>d&&(a.index+=f)})}function Gv(){var a=ok();return function(){return a.Point}};function Ov(a,c,d,e){gb.call(this,a);this.selected=c;this.deselected=d;this.mapBrowserEvent=e}y(Ov,gb);
-function Pv(a){Mi.call(this,{handleEvent:Qv});var c=a?a:{};this.M=c.condition?c.condition:Vi;this.B=c.addCondition?c.addCondition:Bc;this.N=c.removeCondition?c.removeCondition:Bc;this.R=c.toggleCondition?c.toggleCondition:Xi;this.j=c.multi?c.multi:!1;this.o=c.filter?c.filter:Ac;this.c=new H({source:new Q({useSpatialIndex:!1,features:c.features,wrapX:c.wrapX}),style:c.style?c.style:Rv(),updateWhileAnimating:!0,updateWhileInteracting:!0});if(c.layers)if(ga(c.layers))a=function(a){return c.layers(a)};
-else{var d=c.layers;a=function(a){return ub(d,a)}}else a=Ac;this.s=a;this.a={};a=this.c.da().c;C(a,"add",this.um,this);C(a,"remove",this.xm,this)}y(Pv,Mi);l=Pv.prototype;l.vm=function(){return this.c.da().c};l.wm=function(a){a=w(a);return this.a[a]};
-function Qv(a){if(!this.M(a))return!0;var c=this.B(a),d=this.N(a),e=this.R(a),f=!c&&!d&&!e,g=a.map,h=this.c.da().c,k=[],m=[],n=!1;if(f)Qa(this.a),g.ed(a.pixel,function(a,c){if(this.o(a,c)){m.push(a);var d=w(a);this.a[d]=c;return!this.j}},this,this.s),0<m.length&&1==h.Zb()&&h.item(0)==m[0]||(n=!0,0!==h.Zb()&&(k=Array.prototype.concat(h.a),h.clear()),h.lf(m));else{g.ed(a.pixel,function(a,f){if(this.o(a,f)){if(!c&&!e||ub(h.a,a))(d||e)&&ub(h.a,a)&&(k.push(a),g=w(a),delete this.a[g]);else{m.push(a);var g=
-w(a);this.a[g]=f}return!this.j}},this,this.s);for(f=k.length-1;0<=f;--f)h.remove(k[f]);h.lf(m);if(0<m.length||0<k.length)n=!0}n&&this.b(new Ov("select",m,k,a));return Ui(a)}l.setMap=function(a){var c=this.v,d=this.c.da().c;c&&d.forEach(c.ri,c);Pv.ia.setMap.call(this,a);this.c.setMap(a);a&&d.forEach(a.ni,a)};function Rv(){var a=ok();xb(a.Polygon,a.LineString);xb(a.GeometryCollection,a.LineString);return function(c){return a[c.W().X()]}}l.um=function(a){a=a.element;var c=this.v;c&&c.ni(a)};
-l.xm=function(a){a=a.element;var c=this.v;c&&c.ri(a)};function Sv(a){aj.call(this,{handleEvent:Tv,handleDownEvent:Ac,handleUpEvent:Uv});a=a?a:{};this.s=a.source?a.source:null;this.na=void 0!==a.vertex?a.vertex:!0;this.T=void 0!==a.edge?a.edge:!0;this.j=a.features?a.features:null;this.ta=[];this.N={};this.R={};this.Y={};this.B={};this.S=null;this.c=void 0!==a.pixelTolerance?a.pixelTolerance:10;this.xa=Vv.bind(this);this.a=new bm;this.wa={Point:this.Dm,LineString:this.ih,LinearRing:this.ih,Polygon:this.Em,MultiPoint:this.Bm,MultiLineString:this.Am,MultiPolygon:this.Cm,
-GeometryCollection:this.zm}}y(Sv,aj);l=Sv.prototype;l.qb=function(a,c){var d=void 0!==c?c:!0,e=w(a),f=a.W();if(f){var g=this.wa[f.X()];g&&(this.Y[e]=f.O(Wb()),g.call(this,a,f),d&&(this.R[e]=C(f,"change",this.Gk.bind(this,a),this)))}d&&(this.N[e]=C(a,rb(a.a),this.ym,this))};l.Fj=function(a){this.qb(a)};l.Gj=function(a){this.kb(a)};l.gh=function(a){var c;a instanceof lm?c=a.feature:a instanceof ve&&(c=a.element);this.qb(c)};
-l.hh=function(a){var c;a instanceof lm?c=a.feature:a instanceof ve&&(c=a.element);this.kb(c)};l.ym=function(a){a=a.target;this.kb(a,!0);this.qb(a,!0)};l.Gk=function(a){if(this.M){var c=w(a);c in this.B||(this.B[c]=a)}else this.si(a)};l.kb=function(a,c){var d=void 0!==c?c:!0,e=w(a),f=this.Y[e];if(f){var g=this.a,h=[];gm(g,f,function(c){a===c.feature&&h.push(c)});for(f=h.length-1;0<=f;--f)g.remove(h[f]);d&&(nb(this.R[e]),delete this.R[e])}d&&(nb(this.N[e]),delete this.N[e])};
-l.setMap=function(a){var c=this.v,d=this.ta,e;this.j?e=this.j:this.s&&(e=this.s.je());c&&(d.forEach(nb),d.length=0,e.forEach(this.Gj,this));Sv.ia.setMap.call(this,a);a&&(this.j?d.push(C(this.j,"add",this.gh,this),C(this.j,"remove",this.hh,this)):this.s&&d.push(C(this.s,"addfeature",this.gh,this),C(this.s,"removefeature",this.hh,this)),e.forEach(this.Fj,this))};l.Bc=Bc;l.si=function(a){this.kb(a,!1);this.qb(a,!1)};
-l.zm=function(a,c){var d,e=c.c;for(d=0;d<e.length;++d)this.wa[e[d].X()].call(this,a,e[d])};l.ih=function(a,c){var d=c.Z(),e,f,g,h;e=0;for(f=d.length-1;e<f;++e)g=d.slice(e,e+2),h={feature:a,la:g},this.a.za(Vb(g),h)};l.Am=function(a,c){var d=c.Z(),e,f,g,h,k,m,n;h=0;for(k=d.length;h<k;++h)for(e=d[h],f=0,g=e.length-1;f<g;++f)m=e.slice(f,f+2),n={feature:a,la:m},this.a.za(Vb(m),n)};l.Bm=function(a,c){var d=c.Z(),e,f,g;f=0;for(g=d.length;f<g;++f)e=d[f],e={feature:a,la:[e,e]},this.a.za(c.O(),e)};
-l.Cm=function(a,c){var d=c.Z(),e,f,g,h,k,m,n,p,q,r;m=0;for(n=d.length;m<n;++m)for(p=d[m],h=0,k=p.length;h<k;++h)for(e=p[h],f=0,g=e.length-1;f<g;++f)q=e.slice(f,f+2),r={feature:a,la:q},this.a.za(Vb(q),r)};l.Dm=function(a,c){var d=c.Z(),d={feature:a,la:[d,d]};this.a.za(c.O(),d)};l.Em=function(a,c){var d=c.Z(),e,f,g,h,k,m,n;h=0;for(k=d.length;h<k;++h)for(e=d[h],f=0,g=e.length-1;f<g;++f)m=e.slice(f,f+2),n={feature:a,la:m},this.a.za(Vb(m),n)};
-function Tv(a){var c,d;d=a.pixel;var e=a.coordinate;c=a.map;var f=c.Ma([d[0]-this.c,d[1]+this.c]),g=c.Ma([d[0]+this.c,d[1]-this.c]),f=Vb([f,g]),h=em(this.a,f),k=!1,f=!1,m=null,g=null;if(0<h.length){this.S=e;h.sort(this.xa);h=h[0].la;if(this.na&&!this.T){if(e=c.Da(h[0]),k=c.Da(h[1]),e=Sb(d,e),d=Sb(d,k),k=Math.sqrt(Math.min(e,d)),k=k<=this.c)f=!0,m=e>d?h[1]:h[0],g=c.Da(m)}else this.T&&(m=Nb(e,h),g=c.Da(m),Math.sqrt(Sb(d,g))<=this.c&&(f=!0,this.na&&(e=c.Da(h[0]),k=c.Da(h[1]),e=Sb(g,e),d=Sb(g,k),k=Math.sqrt(Math.min(e,
-d)),k=k<=this.c)))&&(m=e>d?h[1]:h[0],g=c.Da(m));f&&(g=[Math.round(g[0]),Math.round(g[1])])}c=m;d=g;f&&(a.coordinate=c.slice(0,2),a.pixel=d);return bj.call(this,a)}function Uv(){var a=Ra(this.B);a.length&&(a.forEach(this.si,this),this.B={});return!1}function Vv(a,c){return Tb(this.S,a.la)-Tb(this.S,c.la)};function Wv(a,c,d){gb.call(this,a);this.features=c;this.coordinate=d}y(Wv,gb);function Xv(a){aj.call(this,{handleDownEvent:Yv,handleDragEvent:Zv,handleMoveEvent:$v,handleUpEvent:aw});this.s=void 0;this.a=null;this.c=void 0!==a.features?a.features:null;var c;if(a.layers)if(ga(a.layers))c=function(c){return a.layers(c)};else{var d=a.layers;c=function(a){return ub(d,a)}}else c=Ac;this.B=c;this.j=null}y(Xv,aj);
-function Yv(a){this.j=bw(this,a.pixel,a.map);return!this.a&&this.j?(this.a=a.coordinate,$v.call(this,a),this.b(new Wv("translatestart",this.c,a.coordinate)),!0):!1}function aw(a){return this.a?(this.a=null,$v.call(this,a),this.b(new Wv("translateend",this.c,a.coordinate)),!0):!1}
-function Zv(a){if(this.a){a=a.coordinate;var c=a[0]-this.a[0],d=a[1]-this.a[1];if(this.c)this.c.forEach(function(a){var e=a.W();e.Nc(c,d);a.Ta(e)});else if(this.j){var e=this.j.W();e.Nc(c,d);this.j.Ta(e)}this.a=a;this.b(new Wv("translating",this.c,a))}}
-function $v(a){var c=a.map.tc();if(a=a.map.ed(a.pixel,function(a){return a})){var d=!1;this.c&&ub(this.c.a,a)&&(d=!0);this.s=c.style.cursor;c.style.cursor=this.a?"-webkit-grabbing":d?"-webkit-grab":"pointer";c.style.cursor=this.a?d?"grab":"pointer":"grabbing"}else c.style.cursor=void 0!==this.s?this.s:"",this.s=void 0}function bw(a,c,d){var e=null;c=d.ed(c,function(a){return a},a,a.B);a.c&&ub(a.c.a,c)&&(e=c);return e};function W(a){a=a?a:{};var c=Pa({},a);delete c.gradient;delete c.radius;delete c.blur;delete c.shadow;delete c.weight;H.call(this,c);this.f=null;this.ea=void 0!==a.shadow?a.shadow:250;this.Y=void 0;this.c=null;C(this,rb("gradient"),this.Hk,this);this.di(a.gradient?a.gradient:cw);this.Zh(void 0!==a.blur?a.blur:15);this.lh(void 0!==a.radius?a.radius:8);C(this,rb("blur"),this.gf,this);C(this,rb("radius"),this.gf,this);this.gf();var d=a.weight?a.weight:"weight",e;"string"===typeof d?e=function(a){return a.get(d)}:
-e=d;this.l(function(a){a=e(a);a=void 0!==a?Da(a,0,1):1;var c=255*a|0,d=this.c[c];d||(d=[new jk({image:new ui({opacity:a,src:this.Y})})],this.c[c]=d);return d}.bind(this));this.set("renderOrder",null);C(this,"render",this.$k,this)}y(W,H);var cw=["#00f","#0ff","#0f0","#ff0","#f00"];l=W.prototype;l.ug=function(){return this.get("blur")};l.Bg=function(){return this.get("gradient")};l.kh=function(){return this.get("radius")};
-l.Hk=function(){for(var a=this.Bg(),c=Mg(1,256),d=c.createLinearGradient(0,0,1,256),e=1/(a.length-1),f=0,g=a.length;f<g;++f)d.addColorStop(f*e,a[f]);c.fillStyle=d;c.fillRect(0,0,1,256);this.f=c.getImageData(0,0,1,256).data};l.gf=function(){var a=this.kh(),c=this.ug(),d=a+c+1,e=2*d,e=Mg(e,e);e.shadowOffsetX=e.shadowOffsetY=this.ea;e.shadowBlur=c;e.shadowColor="#000";e.beginPath();c=d-this.ea;e.arc(c,c,a,0,2*Math.PI,!0);e.fill();this.Y=e.canvas.toDataURL();this.c=Array(256);this.u()};
-l.$k=function(a){a=a.context;var c=a.canvas,c=a.getImageData(0,0,c.width,c.height),d=c.data,e,f,g;e=0;for(f=d.length;e<f;e+=4)if(g=4*d[e+3])d[e]=this.f[g],d[e+1]=this.f[g+1],d[e+2]=this.f[g+2];a.putImageData(c,0,0)};l.Zh=function(a){this.set("blur",a)};l.di=function(a){this.set("gradient",a)};l.lh=function(a){this.set("radius",a)};function dw(a,c,d,e){function f(){delete qa[h];g.parentNode.removeChild(g)}var g=qa.document.createElement("script"),h="olc_"+w(c);g.async=!0;g.src=a+(-1==a.indexOf("?")?"?":"&")+(e||"callback")+"="+h;var k=qa.setTimeout(function(){f();d&&d()},1E4);qa[h]=function(a){qa.clearTimeout(k);f();c(a)};qa.document.getElementsByTagName("head")[0].appendChild(g)};function ew(a,c,d,e,f,g,h,k,m,n,p){Qf.call(this,f,0);this.R=void 0!==p?p:!1;this.N=h;this.M=k;this.l=null;this.c={};this.j=c;this.v=e;this.U=g?g:f;this.g=[];this.Rc=null;this.s=0;g=e.Ba(this.U);k=this.v.O();f=this.j.O();g=k?vc(g,k):g;if(0===pc(g))this.state=4;else if((k=a.O())&&(f?f=vc(f,k):f=k),e=e.$(this.U[0]),e=jl(a,d,tc(g),e),!isFinite(e)||0>=e)this.state=4;else if(this.B=new ml(a,d,g,f,e*(void 0!==n?n:.5)),0===this.B.f.length)this.state=4;else if(this.s=gg(c,e),d=pl(this.B),f&&(a.a?(d[1]=Da(d[1],
-f[1],f[3]),d[3]=Da(d[3],f[1],f[3])):d=vc(d,f)),pc(d))if(a=bg(c,d,this.s),100>(a.a-a.b+1)*(a.f-a.g+1)){for(c=a.b;c<=a.a;c++)for(d=a.g;d<=a.f;d++)(n=m(this.s,c,d,h))&&this.g.push(n);0===this.g.length&&(this.state=4)}else this.state=3;else this.state=4}y(ew,Qf);ew.prototype.fa=function(){1==this.state&&(this.Rc.forEach(Xa),this.Rc=null);ew.ia.fa.call(this)};
-ew.prototype.ab=function(a){if(void 0!==a){var c=w(a);if(c in this.c)return this.c[c];a=Sa(this.c)?this.l:this.l.cloneNode(!1);return this.c[c]=a}return this.l};
-ew.prototype.ud=function(){var a=[];this.g.forEach(function(c){c&&2==c.V()&&a.push({extent:this.j.Ba(c.ja),image:c.ab()})},this);this.g.length=0;if(0===a.length)this.state=3;else{var c=this.U[0],d=this.v.Ha(c),e=fa(d)?d:d[0],d=fa(d)?d:d[1],c=this.v.$(c),f=this.j.$(this.s),g=this.v.Ba(this.U);this.l=ll(e,d,this.N,f,this.j.O(),c,g,this.B,a,this.M,this.R);this.state=2}Rf(this)};
-ew.prototype.load=function(){if(0==this.state){this.state=1;Rf(this);var a=0;this.Rc=[];this.g.forEach(function(c){var d=c.V();if(0==d||1==d){a++;var e;e=C(c,"change",function(){var d=c.V();if(2==d||3==d||4==d)Xa(e),a--,0===a&&(this.Rc.forEach(Xa),this.Rc=null,this.ud())},this);this.Rc.push(e)}},this);this.g.forEach(function(a){0==a.V()&&a.load()});0===a&&qa.setTimeout(this.ud.bind(this),0)}};function X(a){zm.call(this,{attributions:a.attributions,cacheSize:a.cacheSize,extent:a.extent,logo:a.logo,opaque:a.opaque,projection:a.projection,state:a.state,tileGrid:a.tileGrid,tileLoadFunction:a.tileLoadFunction?a.tileLoadFunction:fw,tilePixelRatio:a.tilePixelRatio,tileUrlFunction:a.tileUrlFunction,url:a.url,urls:a.urls,wrapX:a.wrapX});this.crossOrigin=void 0!==a.crossOrigin?a.crossOrigin:null;this.tileClass=void 0!==a.tileClass?a.tileClass:Zu;this.i={};this.s={};this.na=a.reprojectionErrorThreshold;
-this.M=!1}y(X,zm);l=X.prototype;l.vh=function(){if(Pf(this.a))return!0;for(var a in this.i)if(Pf(this.i[a]))return!0;return!1};l.Gc=function(a,c){var d=this.jd(a);this.a.Gc(this.a==d?c:{});for(var e in this.i){var f=this.i[e];f.Gc(f==d?c:{})}};l.Od=function(a){return this.f&&a&&!Zc(this.f,a)?0:this.cf()};l.cf=function(){return 0};l.ef=function(a){return this.f&&a&&!Zc(this.f,a)?!1:X.ia.ef.call(this,a)};
-l.fb=function(a){var c=this.f;return!this.tileGrid||c&&!Zc(c,a)?(c=w(a).toString(),c in this.s||(this.s[c]=hg(a)),this.s[c]):this.tileGrid};l.jd=function(a){var c=this.f;if(!c||Zc(c,a))return this.a;a=w(a).toString();a in this.i||(this.i[a]=new Of);return this.i[a]};function gw(a,c,d,e,f,g,h){c=[c,d,e];f=(d=og(a,c,g))?a.tileUrlFunction(d,f,g):void 0;f=new a.tileClass(c,void 0!==f?0:4,void 0!==f?f:"",a.crossOrigin,a.tileLoadFunction);f.key=h;C(f,"change",a.wh,a);return f}
-l.Wb=function(a,c,d,e,f){if(this.f&&f&&!Zc(this.f,f)){var g=this.jd(f);c=[a,c,d];a=this.Ab.apply(this,c);if(Lf(g,a))return g.get(a);var h=this.f;d=this.fb(h);var k=this.fb(f),m=og(this,c,f);e=new ew(h,d,f,k,c,m,this.Xb(e),this.cf(),function(a,c,d,e){return hw(this,a,c,d,e,h)}.bind(this),this.na,this.M);g.set(a,e);return e}return hw(this,a,c,d,e,f)};
-function hw(a,c,d,e,f,g){var h=null,k=a.Ab(c,d,e),m=a.Yb;if(Lf(a.a,k)){if(h=a.a.get(k),h.key!=m){var n=h;h.a&&h.a.key==m?(h=h.a,2==n.V()&&(h.a=n)):(h=gw(a,c,d,e,f,g,m),2==n.V()?h.a=n:n.a&&2==n.a.V()&&(h.a=n.a,n.a=null));h.a&&(h.a.a=null);a.a.replace(k,h)}}else h=gw(a,c,d,e,f,g,m),a.a.set(k,h);return h}l.lb=function(a){if(this.M!=a){this.M=a;for(var c in this.i)this.i[c].clear();this.u()}};l.mb=function(a,c){var d=Ic(a);d&&(d=w(d).toString(),d in this.s||(this.s[d]=c))};
-function fw(a,c){a.ab().src=c};function iw(a){X.call(this,{cacheSize:a.cacheSize,crossOrigin:"anonymous",opaque:!0,projection:Ic("EPSG:3857"),reprojectionErrorThreshold:a.reprojectionErrorThreshold,state:"loading",tileLoadFunction:a.tileLoadFunction,wrapX:void 0!==a.wrapX?a.wrapX:!0});this.j=void 0!==a.culture?a.culture:"en-us";this.c=void 0!==a.maxZoom?a.maxZoom:-1;dw("https://dev.virtualearth.net/REST/v1/Imagery/Metadata/"+a.imagerySet+"?uriScheme=https&include=ImageryProviders&key="+a.key,this.v.bind(this),void 0,"jsonp")}
-y(iw,X);var jw=new ue({html:'<a class="ol-attribution-bing-tos" href="http://www.microsoft.com/maps/product/terms.html">Terms of Use</a>'});
-iw.prototype.v=function(a){if(200!=a.statusCode||"OK"!=a.statusDescription||"ValidCredentials"!=a.authenticationResultCode||1!=a.resourceSets.length||1!=a.resourceSets[0].resources.length)Xf(this,"error");else{var c=a.brandLogoUri;-1==c.indexOf("https")&&(c=c.replace("http","https"));var d=a.resourceSets[0].resources[0],e=-1==this.c?d.zoomMax:this.c;a=ig(this.f);var f=kg({extent:a,minZoom:d.zoomMin,maxZoom:e,tileSize:d.imageWidth==d.imageHeight?d.imageWidth:[d.imageWidth,d.imageHeight]});this.tileGrid=
-f;var g=this.j;this.tileUrlFunction=wm(d.imageUrlSubdomains.map(function(a){var c=[0,0,0],e=d.imageUrl.replace("{subdomain}",a).replace("{culture}",g);return function(a){if(a)return Mf(a[0],a[1],-a[2]-1,c),e.replace("{quadkey}",Nf(c))}}));if(d.imageryProviders){var h=Lc(Ic("EPSG:4326"),this.f);a=d.imageryProviders.map(function(a){var c=a.attribution,d={};a.coverageAreas.forEach(function(a){var c=a.zoomMin,g=Math.min(a.zoomMax,e);a=a.bbox;a=zc([a[1],a[0],a[3],a[2]],h);var k,m;for(k=c;k<=g;++k)m=k.toString(),
-c=bg(f,a,k),m in d?d[m].push(c):d[m]=[c]});return new ue({html:c,tileRanges:d})});a.push(jw);this.ka(a)}this.R=c;Xf(this,"ready")}};function kw(a){a=a||{};var c=void 0!==a.projection?a.projection:"EPSG:3857",d=void 0!==a.tileGrid?a.tileGrid:kg({extent:ig(c),maxZoom:a.maxZoom,minZoom:a.minZoom,tileSize:a.tileSize});X.call(this,{attributions:a.attributions,cacheSize:a.cacheSize,crossOrigin:a.crossOrigin,logo:a.logo,opaque:a.opaque,projection:c,reprojectionErrorThreshold:a.reprojectionErrorThreshold,tileGrid:d,tileLoadFunction:a.tileLoadFunction,tilePixelRatio:a.tilePixelRatio,tileUrlFunction:a.tileUrlFunction,url:a.url,urls:a.urls,
-wrapX:void 0!==a.wrapX?a.wrapX:!0})}y(kw,X);function lw(a){this.v=a.account;this.B=a.map||"";this.c=a.config||{};this.j={};kw.call(this,{attributions:a.attributions,cacheSize:a.cacheSize,crossOrigin:a.crossOrigin,logo:a.logo,maxZoom:void 0!==a.maxZoom?a.maxZoom:18,minZoom:a.minZoom,projection:a.projection,state:"loading",wrapX:a.wrapX});mw(this)}y(lw,kw);l=lw.prototype;l.Pj=function(){return this.c};l.op=function(a){Pa(this.c,a);mw(this)};l.Uo=function(a){this.c=a||{};mw(this)};
-function mw(a){var c=JSON.stringify(a.c);if(a.j[c])nw(a,a.j[c]);else{var d="https://"+a.v+".cartodb.com/api/v1/map";a.B&&(d+="/named/"+a.B);var e=new XMLHttpRequest;e.addEventListener("load",a.Jk.bind(a,c));e.addEventListener("error",a.Ik.bind(a));e.open("POST",d);e.setRequestHeader("Content-type","application/json");e.send(JSON.stringify(a.c))}}
-l.Jk=function(a,c){var d=c.target;if(200<=d.status&&300>d.status){var e;try{e=JSON.parse(d.responseText)}catch(f){Xf(this,"error");return}nw(this,e);this.j[a]=e;Xf(this,"ready")}else Xf(this,"error")};l.Ik=function(){Xf(this,"error")};function nw(a,c){a.Na("https://"+c.cdn_url.https+"/"+a.v+"/api/v1/map/"+c.layergroupid+"/{z}/{x}/{y}.png")};function Y(a){Q.call(this,{attributions:a.attributions,extent:a.extent,logo:a.logo,projection:a.projection,wrapX:a.wrapX});this.M=void 0;this.ta=void 0!==a.distance?a.distance:20;this.B=[];this.ea=a.geometryFunction||function(a){return a.W()};this.v=a.source;this.v.D("change",Y.prototype.Ra,this)}y(Y,Q);Y.prototype.xa=function(){return this.v};Y.prototype.Kc=function(a,c,d){this.v.Kc(a,c,d);c!==this.M&&(this.clear(),this.M=c,ow(this),this.Ec(this.B))};
-Y.prototype.Ra=function(){this.clear();ow(this);this.Ec(this.B);this.u()};function ow(a){if(void 0!==a.M){a.B.length=0;for(var c=Wb(),d=a.ta*a.M,e=a.v.je(),f={},g=0,h=e.length;g<h;g++){var k=e[g];w(k).toString()in f||!(k=a.ea(k))||(k=k.Z(),fc(k,c),Yb(c,d,c),k=a.v.af(c),k=k.filter(function(a){a=w(a).toString();return a in f?!1:f[a]=!0}),a.B.push(pw(a,k)))}}}
-function pw(a,c){for(var d=[0,0],e=c.length-1;0<=e;--e){var f=a.ea(c[e]);f?Mb(d,f.Z()):c.splice(e,1)}e=1/c.length;d[0]*=e;d[1]*=e;d=new zl(new D(d));d.set("features",c);return d};function qw(a){a=a||{};rl.call(this,{attributions:a.attributions,logo:a.logo,projection:a.projection,resolutions:a.resolutions});this.Y=void 0!==a.crossOrigin?a.crossOrigin:null;this.i=a.url;this.j=void 0!==a.imageLoadFunction?a.imageLoadFunction:xl;this.v=a.params||{};this.c=null;this.s=[0,0];this.T=0;this.S=void 0!==a.ratio?a.ratio:1.5}y(qw,rl);l=qw.prototype;l.Mm=function(){return this.v};
-l.Hc=function(a,c,d,e){if(void 0===this.i)return null;c=sl(this,c);var f=this.c;if(f&&this.T==this.g&&f.$()==c&&f.f==d&&cc(f.O(),a))return f;f={F:"image",FORMAT:"PNG32",TRANSPARENT:!0};Pa(f,this.v);a=a.slice();var g=(a[0]+a[2])/2,h=(a[1]+a[3])/2;if(1!=this.S){var k=this.S*rc(a)/2,m=this.S*sc(a)/2;a[0]=g-k;a[1]=h-m;a[2]=g+k;a[3]=h+m}var k=c/d,m=Math.ceil(rc(a)/k),n=Math.ceil(sc(a)/k);a[0]=g-k*m/2;a[2]=g+k*m/2;a[1]=h-k*n/2;a[3]=h+k*n/2;this.s[0]=m;this.s[1]=n;g=a;h=this.s;e=e.eb.split(":").pop();f.SIZE=
-h[0]+","+h[1];f.BBOX=g.join(",");f.BBOXSR=e;f.IMAGESR=e;f.DPI=90*d;e=this.i.replace(/MapServer\/?$/,"MapServer/export").replace(/ImageServer\/?$/,"ImageServer/exportImage");f=dq(fq([e],f));this.c=new Yu(a,c,d,this.l,f,this.Y,this.j);this.T=this.g;C(this.c,"change",this.o,this);return this.c};l.Lm=function(){return this.j};l.Nm=function(){return this.i};l.Om=function(a){this.c=null;this.j=a;this.u()};l.Pm=function(a){a!=this.i&&(this.i=a,this.c=null,this.u())};
-l.Qm=function(a){Pa(this.v,a);this.c=null;this.u()};function rw(a){rl.call(this,{projection:a.projection,resolutions:a.resolutions});this.Y=void 0!==a.crossOrigin?a.crossOrigin:null;this.s=void 0!==a.displayDpi?a.displayDpi:96;this.j=a.params||{};this.T=a.url;this.c=void 0!==a.imageLoadFunction?a.imageLoadFunction:xl;this.ea=void 0!==a.hidpi?a.hidpi:!0;this.ta=void 0!==a.metersPerUnit?a.metersPerUnit:1;this.v=void 0!==a.ratio?a.ratio:1;this.xa=void 0!==a.useOverlay?a.useOverlay:!1;this.i=null;this.S=0}y(rw,rl);l=rw.prototype;l.Sm=function(){return this.j};
-l.Hc=function(a,c,d){c=sl(this,c);d=this.ea?d:1;var e=this.i;if(e&&this.S==this.g&&e.$()==c&&e.f==d&&cc(e.O(),a))return e;1!=this.v&&(a=a.slice(),yc(a,this.v));var f=[rc(a)/c*d,sc(a)/c*d];if(void 0!==this.T){var e=this.T,g=tc(a),h=this.ta,k=rc(a),m=sc(a),n=f[0],p=f[1],q=.0254/this.s,f={OPERATION:this.xa?"GETDYNAMICMAPOVERLAYIMAGE":"GETMAPIMAGE",VERSION:"2.0.0",LOCALE:"en",CLIENTAGENT:"ol.source.ImageMapGuide source",CLIP:"1",SETDISPLAYDPI:this.s,SETDISPLAYWIDTH:Math.round(f[0]),SETDISPLAYHEIGHT:Math.round(f[1]),
-SETVIEWSCALE:p*k>n*m?k*h/(n*q):m*h/(p*q),SETVIEWCENTERX:g[0],SETVIEWCENTERY:g[1]};Pa(f,this.j);e=dq(fq([e],f));e=new Yu(a,c,d,this.l,e,this.Y,this.c);C(e,"change",this.o,this)}else e=null;this.i=e;this.S=this.g;return e};l.Rm=function(){return this.c};l.Um=function(a){Pa(this.j,a);this.u()};l.Tm=function(a){this.i=null;this.c=a;this.u()};function sw(a){var c=a.imageExtent,d=void 0!==a.crossOrigin?a.crossOrigin:null,e=void 0!==a.imageLoadFunction?a.imageLoadFunction:xl;rl.call(this,{attributions:a.attributions,logo:a.logo,projection:Ic(a.projection)});this.c=new Yu(c,void 0,1,this.l,a.url,d,e);this.i=a.imageSize?a.imageSize:null;C(this.c,"change",this.o,this)}y(sw,rl);sw.prototype.Hc=function(a){return wc(a,this.c.O())?this.c:null};
-sw.prototype.o=function(a){if(2==this.c.V()){var c=this.c.O(),d=this.c.a(),e,f;this.i?(e=this.i[0],f=this.i[1]):(e=d.width,f=d.height);c=Math.ceil(rc(c)/(sc(c)/f));if(c!=e){var c=Mg(c,f),g=c.canvas;c.drawImage(d,0,0,e,f,0,0,g.width,g.height);this.c.g=g}}sw.ia.o.call(this,a)};function tw(a){a=a||{};rl.call(this,{attributions:a.attributions,logo:a.logo,projection:a.projection,resolutions:a.resolutions});this.ta=void 0!==a.crossOrigin?a.crossOrigin:null;this.j=a.url;this.S=void 0!==a.imageLoadFunction?a.imageLoadFunction:xl;this.i=a.params||{};this.v=!0;uw(this);this.ea=a.serverType;this.xa=void 0!==a.hidpi?a.hidpi:!0;this.c=null;this.T=[0,0];this.Y=0;this.s=void 0!==a.ratio?a.ratio:1.5}y(tw,rl);var vw=[101,101];l=tw.prototype;
-l.$m=function(a,c,d,e){if(void 0!==this.j){var f=uc(a,c,0,vw),g={SERVICE:"WMS",VERSION:"1.3.0",REQUEST:"GetFeatureInfo",FORMAT:"image/png",TRANSPARENT:!0,QUERY_LAYERS:this.i.LAYERS};Pa(g,this.i,e);e=Math.floor((f[3]-a[1])/c);g[this.v?"I":"X"]=Math.floor((a[0]-f[0])/c);g[this.v?"J":"Y"]=e;return ww(this,f,vw,1,Ic(d),g)}};l.bn=function(){return this.i};
-l.Hc=function(a,c,d,e){if(void 0===this.j)return null;c=sl(this,c);1==d||this.xa&&void 0!==this.ea||(d=1);a=a.slice();var f=(a[0]+a[2])/2,g=(a[1]+a[3])/2,h=c/d,k=rc(a)/h,h=sc(a)/h,m=this.c;if(m&&this.Y==this.g&&m.$()==c&&m.f==d&&cc(m.O(),a))return m;if(1!=this.s){var m=this.s*rc(a)/2,n=this.s*sc(a)/2;a[0]=f-m;a[1]=g-n;a[2]=f+m;a[3]=g+n}f={SERVICE:"WMS",VERSION:"1.3.0",REQUEST:"GetMap",FORMAT:"image/png",TRANSPARENT:!0};Pa(f,this.i);this.T[0]=Math.ceil(k*this.s);this.T[1]=Math.ceil(h*this.s);e=ww(this,
-a,this.T,d,e,f);this.c=new Yu(a,c,d,this.l,e,this.ta,this.S);this.Y=this.g;C(this.c,"change",this.o,this);return this.c};l.an=function(){return this.S};
-function ww(a,c,d,e,f,g){g[a.v?"CRS":"SRS"]=f.eb;"STYLES"in a.i||(g.STYLES="");if(1!=e)switch(a.ea){case "geoserver":e=90*e+.5|0;g.FORMAT_OPTIONS="FORMAT_OPTIONS"in g?g.FORMAT_OPTIONS+(";dpi:"+e):"dpi:"+e;break;case "mapserver":g.MAP_RESOLUTION=90*e;break;case "carmentaserver":case "qgis":g.DPI=90*e}g.WIDTH=d[0];g.HEIGHT=d[1];d=f.b;var h;a.v&&"ne"==d.substr(0,2)?h=[c[1],c[0],c[3],c[2]]:h=c;g.BBOX=h.join(",");return dq(fq([a.j],g))}l.cn=function(){return this.j};
-l.dn=function(a){this.c=null;this.S=a;this.u()};l.en=function(a){a!=this.j&&(this.j=a,this.c=null,this.u())};l.fn=function(a){Pa(this.i,a);uw(this);this.c=null;this.u()};function uw(a){a.v=0<=Lb(a.i.VERSION||"1.3.0")};function xw(a){a=a||{};var c;void 0!==a.attributions?c=a.attributions:c=[yw];kw.call(this,{attributions:c,cacheSize:a.cacheSize,crossOrigin:void 0!==a.crossOrigin?a.crossOrigin:"anonymous",opaque:void 0!==a.opaque?a.opaque:!0,maxZoom:void 0!==a.maxZoom?a.maxZoom:19,reprojectionErrorThreshold:a.reprojectionErrorThreshold,tileLoadFunction:a.tileLoadFunction,url:void 0!==a.url?a.url:"https://{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png",wrapX:a.wrapX})}y(xw,kw);var yw=new ue({html:'&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors.'});function zw(a){a=a||{};var c=Aw[a.layer];this.c=a.layer;kw.call(this,{attributions:c.attributions,cacheSize:a.cacheSize,crossOrigin:"anonymous",logo:"https://developer.mapquest.com/content/osm/mq_logo.png",maxZoom:c.maxZoom,reprojectionErrorThreshold:a.reprojectionErrorThreshold,opaque:c.opaque,tileLoadFunction:a.tileLoadFunction,url:void 0!==a.url?a.url:"https://otile{1-4}-s.mqcdn.com/tiles/1.0.0/"+this.c+"/{z}/{x}/{y}.jpg"})}y(zw,kw);
-var Bw=new ue({html:'Tiles Courtesy of <a href="http://www.mapquest.com/">MapQuest</a>'}),Aw={osm:{maxZoom:19,opaque:!0,attributions:[Bw,yw]},sat:{maxZoom:18,opaque:!0,attributions:[Bw,new ue({html:"Portions Courtesy NASA/JPL-Caltech and U.S. Depart. of Agriculture, Farm Service Agency"})]},hyb:{maxZoom:18,opaque:!1,attributions:[Bw,yw]}};zw.prototype.j=function(){return this.c};(function(){var a={},c={ha:a};(function(d){if("object"===typeof a&&"undefined"!==typeof c)c.ha=d();else{var e;"undefined"!==typeof window?e=window:"undefined"!==typeof global?e=global:"undefined"!==typeof self?e=self:e=this;e.Np=d()}})(function(){return function e(a,c,h){function k(n,q){if(!c[n]){if(!a[n]){var r="function"==typeof require&&require;if(!q&&r)return r(n,!0);if(m)return m(n,!0);r=Error("Cannot find module '"+n+"'");throw r.code="MODULE_NOT_FOUND",r;}r=c[n]={ha:{}};a[n][0].call(r.ha,function(c){var e=
-a[n][1][c];return k(e?e:c)},r,r.ha,e,a,c,h)}return c[n].ha}for(var m="function"==typeof require&&require,n=0;n<h.length;n++)k(h[n]);return k}({1:[function(a,c,g){a=a("./processor");g.Vi=a},{"./processor":2}],2:[function(a,c){function g(a){var c=!0;try{new ImageData(10,10)}catch(e){c=!1}return function(e){var f=e.buffers,g=e.meta,h=e.width,k=e.height,m=f.length,n=f[0].byteLength;if(e.imageOps){n=Array(m);for(e=0;e<m;++e){var A=n,G=e,O;O=new Uint8ClampedArray(f[e]);var L=h,R=k;O=c?new ImageData(O,L,
-R):{data:O,width:L,height:R};A[G]=O}h=a(n,g).data}else{h=new Uint8ClampedArray(n);k=Array(m);A=Array(m);for(e=0;e<m;++e)k[e]=new Uint8ClampedArray(f[e]),A[e]=[0,0,0,0];for(f=0;f<n;f+=4){for(e=0;e<m;++e)G=k[e],A[e][0]=G[f],A[e][1]=G[f+1],A[e][2]=G[f+2],A[e][3]=G[f+3];e=a(A,g);h[f]=e[0];h[f+1]=e[1];h[f+2]=e[2];h[f+3]=e[3]}}return h.buffer}}function h(a,c){var e=Object.keys(a.lib||{}).map(function(c){return"var "+c+" = "+a.lib[c].toString()+";"}).concat(["var __minion__ = ("+g.toString()+")(",a.operation.toString(),
-");",'self.addEventListener("message", function(event) {'," var buffer = __minion__(event.data);"," self.postMessage({buffer: buffer, meta: event.data.meta}, [buffer]);","});"]),e=URL.createObjectURL(new Blob(e,{type:"text/javascript"})),e=new Worker(e);e.addEventListener("message",c);return e}function k(a,c){var e=g(a.operation);return{postMessage:function(a){setTimeout(function(){c({data:{buffer:e(a),meta:a.meta}})},0)}}}function m(a){this.Ne=!!a.hl;var c;0===a.threads?c=0:this.Ne?c=1:c=a.threads||
-1;var e=[];if(c)for(var f=0;f<c;++f)e[f]=h(a,this.eg.bind(this,f));else e[0]=k(a,this.eg.bind(this,0));this.Gd=e;this.Vc=[];this.jj=a.oo||Infinity;this.Ed=0;this.Dc={};this.Oe=null}var n=a("./util").Bl;m.prototype.mo=function(a,c,e){this.gj({vc:a,Sg:c,mg:e});this.bg()};m.prototype.gj=function(a){for(this.Vc.push(a);this.Vc.length>this.jj;)this.Vc.shift().mg(null,null)};m.prototype.bg=function(){if(0===this.Ed&&0<this.Vc.length){var a=this.Oe=this.Vc.shift(),c=a.vc[0].width,e=a.vc[0].height,f=a.vc.map(function(a){return a.data.buffer}),
-g=this.Gd.length;this.Ed=g;if(1===g)this.Gd[0].postMessage({buffers:f,meta:a.Sg,imageOps:this.Ne,width:c,height:e},f);else for(var h=4*Math.ceil(a.vc[0].data.length/4/g),k=0;k<g;++k){for(var m=k*h,n=[],A=0,G=f.length;A<G;++A)n.push(f[k].slice(m,m+h));this.Gd[k].postMessage({buffers:n,meta:a.Sg,imageOps:this.Ne,width:c,height:e},n)}}};m.prototype.eg=function(a,c){this.Jp||(this.Dc[a]=c.data,--this.Ed,0===this.Ed&&this.kj())};m.prototype.kj=function(){var a=this.Oe,c=this.Gd.length,e,f;if(1===c)e=new Uint8ClampedArray(this.Dc[0].buffer),
-f=this.Dc[0].meta;else{var g=a.vc[0].data.length;e=new Uint8ClampedArray(g);f=Array(g);for(var g=4*Math.ceil(g/4/c),h=0;h<c;++h){var k=h*g;e.set(new Uint8ClampedArray(this.Dc[h].buffer),k);f[h]=this.Dc[h].meta}}this.Oe=null;this.Dc={};a.mg(null,n(e,a.vc[0].width,a.vc[0].height),f);this.bg()};c.ha=m},{"./util":3}],3:[function(a,c,g){var h=!0;try{new ImageData(10,10)}catch(m){h=!1}var k=document.createElement("canvas").getContext("2d");g.Bl=function(a,c,e){if(h)return new ImageData(a,c,e);c=k.createImageData(c,
-e);c.data.set(a);return c}},{}]},{},[1])(1)});am=c.ha})();function Cw(a){this.S=null;this.xa=void 0!==a.operationType?a.operationType:"pixel";this.Ra=void 0!==a.threads?a.threads:1;this.c=Dw(a.sources);for(var c=0,d=this.c.length;c<d;++c)C(this.c[c],"change",this.u,this);this.i=Mg();this.ea=new Ii(function(){return 1},this.u.bind(this));for(var c=Ew(this.c),d={},e=0,f=c.length;e<f;++e)d[w(c[e].layer)]=c[e];this.j=this.s=null;this.Y={animate:!1,attributions:{},coordinateToPixelMatrix:hd(),extent:null,focus:null,index:0,layerStates:d,layerStatesArray:c,logos:{},
-pixelRatio:1,pixelToCoordinateMatrix:hd(),postRenderFunctions:[],size:[0,0],skippedFeatureUids:{},tileQueue:this.ea,time:Date.now(),usedTiles:{},viewState:{rotation:0},viewHints:[],wantedTiles:{}};rl.call(this,{});void 0!==a.operation&&this.v(a.operation,a.lib)}y(Cw,rl);Cw.prototype.v=function(a,c){this.S=new am.Vi({operation:a,hl:"image"===this.xa,oo:1,lib:c,threads:this.Ra});this.u()};function Fw(a,c,d){var e=a.s;return!e||a.g!==e.Ro||d!==e.resolution||!ic(c,e.extent)}
-Cw.prototype.B=function(a,c,d,e){d=!0;for(var f,g=0,h=this.c.length;g<h;++g)if(f=this.c[g].a.da(),"ready"!==f.V()){d=!1;break}if(!d)return null;a=a.slice();if(!Fw(this,a,c))return this.j;d=this.i.canvas;f=Math.round(rc(a)/c);g=Math.round(sc(a)/c);if(f!==d.width||g!==d.height)d.width=f,d.height=g;f=Pa({},this.Y);f.viewState=Pa({},f.viewState);var g=tc(a),h=Math.round(rc(a)/c),k=Math.round(sc(a)/c);f.extent=a;f.focus=tc(a);f.size[0]=h;f.size[1]=k;h=f.viewState;h.center=g;h.projection=e;h.resolution=
-c;this.j=e=new dl(a,c,1,this.l,d,this.T.bind(this,f));this.s={extent:a,resolution:c,Ro:this.g};return e};
-Cw.prototype.T=function(a,c){for(var d=this.c.length,e=Array(d),f=0;f<d;++f){var g;g=this.c[f];var h=a,k=a.layerStatesArray[f];if(g.l(h,k)){var m=h.size[0],n=h.size[1];if(Gw){var p=Gw.canvas;p.width!==m||p.height!==n?Gw=Mg(m,n):Gw.clearRect(0,0,m,n)}else Gw=Mg(m,n);g.i(h,k,Gw);g=Gw.getImageData(0,0,m,n)}else g=null;if(g)e[f]=g;else return}d={};this.b(new Hw(Iw,a,d));this.S.mo(e,d,this.ta.bind(this,a,c));Ji(a.tileQueue,16,16)};
-Cw.prototype.ta=function(a,c,d,e,f){d?c(d):e&&(this.b(new Hw(Jw,a,f)),Fw(this,a.extent,a.viewState.resolution/a.pixelRatio)||this.i.putImageData(e,0,0),c(null))};var Gw=null;function Ew(a){return a.map(function(a){return ai(a.a)})}function Dw(a){for(var c=a.length,d=Array(c),e=0;e<c;++e){var f=e,g=a[e],h=null;g instanceof lg?(g=new Vj({source:g}),h=new rm(g)):g instanceof rl&&(g=new Uj({source:g}),h=new qm(g));d[f]=h}return d}
-function Hw(a,c,d){gb.call(this,a);this.extent=c.extent;this.resolution=c.viewState.resolution/c.pixelRatio;this.data=d}y(Hw,gb);var Iw="beforeoperations",Jw="afteroperations";var Kw={terrain:{sb:"jpg",opaque:!0},"terrain-background":{sb:"jpg",opaque:!0},"terrain-labels":{sb:"png",opaque:!1},"terrain-lines":{sb:"png",opaque:!1},"toner-background":{sb:"png",opaque:!0},toner:{sb:"png",opaque:!0},"toner-hybrid":{sb:"png",opaque:!1},"toner-labels":{sb:"png",opaque:!1},"toner-lines":{sb:"png",opaque:!1},"toner-lite":{sb:"png",opaque:!0},watercolor:{sb:"jpg",opaque:!0}},Lw={terrain:{minZoom:4,maxZoom:18},toner:{minZoom:0,maxZoom:20},watercolor:{minZoom:1,maxZoom:16}};
-function Mw(a){var c=a.layer.indexOf("-"),c=-1==c?a.layer:a.layer.slice(0,c),c=Lw[c],d=Kw[a.layer];kw.call(this,{attributions:Nw,cacheSize:a.cacheSize,crossOrigin:"anonymous",maxZoom:c.maxZoom,minZoom:c.minZoom,opaque:d.opaque,reprojectionErrorThreshold:a.reprojectionErrorThreshold,tileLoadFunction:a.tileLoadFunction,url:void 0!==a.url?a.url:"https://stamen-tiles-{a-d}.a.ssl.fastly.net/"+a.layer+"/{z}/{x}/{y}."+d.sb})}y(Mw,kw);
-var Nw=[new ue({html:'Map tiles by <a href="http://stamen.com/">Stamen Design</a>, under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>.'}),yw];function Ow(a){a=a||{};X.call(this,{attributions:a.attributions,cacheSize:a.cacheSize,crossOrigin:a.crossOrigin,logo:a.logo,projection:a.projection,reprojectionErrorThreshold:a.reprojectionErrorThreshold,tileGrid:a.tileGrid,tileLoadFunction:a.tileLoadFunction,url:a.url,urls:a.urls,wrapX:void 0!==a.wrapX?a.wrapX:!0});this.c=a.params||{};this.j=Wb()}y(Ow,X);Ow.prototype.v=function(){return this.c};Ow.prototype.Xb=function(a){return a};
-Ow.prototype.qc=function(a,c,d){var e=this.tileGrid;e||(e=this.fb(d));if(!(e.b.length<=a[0])){var f=e.Ba(a,this.j),g=Uf(e.Ha(a[0]),this.o);1!=c&&(g=Tf(g,c,this.o));e={F:"image",FORMAT:"PNG32",TRANSPARENT:!0};Pa(e,this.c);var h=this.urls;h?(d=d.eb.split(":").pop(),e.SIZE=g[0]+","+g[1],e.BBOX=f.join(","),e.BBOXSR=d,e.IMAGESR=d,e.DPI=Math.round(e.DPI?e.DPI*c:90*c),a=(1==h.length?h[0]:h[Ja((a[1]<<a[0])+a[2],h.length)]).replace(/MapServer\/?$/,"MapServer/export").replace(/ImageServer\/?$/,"ImageServer/exportImage"),
-a=dq(fq([a],e))):a=void 0;return a}};Ow.prototype.B=function(a){Pa(this.c,a);this.u()};function Pw(a,c,d){Qf.call(this,a,2);this.l=c;this.c=d;this.g={}}y(Pw,Qf);Pw.prototype.ab=function(a){a=void 0!==a?w(a):-1;if(a in this.g)return this.g[a];var c=this.l,d=Mg(c[0],c[1]);d.strokeStyle="black";d.strokeRect(.5,.5,c[0]+.5,c[1]+.5);d.fillStyle="black";d.textAlign="center";d.textBaseline="middle";d.font="24px sans-serif";d.fillText(this.c,c[0]/2,c[1]/2);return this.g[a]=d.canvas};
-function Qw(a){lg.call(this,{opaque:!1,projection:a.projection,tileGrid:a.tileGrid,wrapX:void 0!==a.wrapX?a.wrapX:!0})}y(Qw,lg);Qw.prototype.Wb=function(a,c,d){var e=this.Ab(a,c,d);if(Lf(this.a,e))return this.a.get(e);var f=Uf(this.tileGrid.Ha(a));a=[a,c,d];c=(c=og(this,a))?og(this,c).toString():"";f=new Pw(a,f,c);this.a.set(e,f);return f};function Rw(a){this.c=null;X.call(this,{attributions:a.attributions,cacheSize:a.cacheSize,crossOrigin:a.crossOrigin,projection:Ic("EPSG:3857"),reprojectionErrorThreshold:a.reprojectionErrorThreshold,state:"loading",tileLoadFunction:a.tileLoadFunction,wrapX:void 0!==a.wrapX?a.wrapX:!0});if(a.jsonp)dw(a.url,this.th.bind(this),this.he.bind(this));else{var c=new XMLHttpRequest;c.addEventListener("load",this.hn.bind(this));c.addEventListener("error",this.gn.bind(this));c.open("GET",a.url);c.send()}}
-y(Rw,X);l=Rw.prototype;l.hn=function(a){a=a.target;if(200<=a.status&&300>a.status){var c;try{c=JSON.parse(a.responseText)}catch(d){this.he();return}this.th(c)}else this.he()};l.gn=function(){this.he()};l.wk=function(){return this.c};
-l.th=function(a){var c=Ic("EPSG:4326"),d=this.f,e;void 0!==a.bounds&&(e=zc(a.bounds,Lc(c,d)));var f=a.minzoom||0,g=a.maxzoom||22;this.tileGrid=d=kg({extent:ig(d),maxZoom:g,minZoom:f});this.tileUrlFunction=vm(a.tiles,d);if(void 0!==a.attribution&&!this.l){c=void 0!==e?e:c.O();e={};for(var h;f<=g;++f)h=f.toString(),e[h]=[bg(d,c,f)];this.ka([new ue({html:a.attribution,tileRanges:e})])}this.c=a;Xf(this,"ready")};l.he=function(){Xf(this,"error")};function Sw(a){lg.call(this,{projection:Ic("EPSG:3857"),state:"loading"});this.s=void 0!==a.preemptive?a.preemptive:!0;this.j=xm;this.i=void 0;this.c=a.jsonp||!1;if(a.url)if(this.c)dw(a.url,this.xf.bind(this),this.ie.bind(this));else{var c=new XMLHttpRequest;c.addEventListener("load",this.mn.bind(this));c.addEventListener("error",this.ln.bind(this));c.open("GET",a.url);c.send()}else a.tileJSON&&this.xf(a.tileJSON)}y(Sw,lg);l=Sw.prototype;
-l.mn=function(a){a=a.target;if(200<=a.status&&300>a.status){var c;try{c=JSON.parse(a.responseText)}catch(d){this.ie();return}this.xf(c)}else this.ie()};l.ln=function(){this.ie()};l.tk=function(){return this.i};l.Ej=function(a,c,d,e,f){this.tileGrid?(c=this.tileGrid.Td(a,c),Tw(this.Wb(c[0],c[1],c[2],1,this.f),a,d,e,f)):!0===f?Fg(function(){d.call(e,null)}):d.call(e,null)};l.ie=function(){Xf(this,"error")};
-l.xf=function(a){var c=Ic("EPSG:4326"),d=this.f,e;void 0!==a.bounds&&(e=zc(a.bounds,Lc(c,d)));var f=a.minzoom||0,g=a.maxzoom||22;this.tileGrid=d=kg({extent:ig(d),maxZoom:g,minZoom:f});this.i=a.template;var h=a.grids;if(h){this.j=vm(h,d);if(void 0!==a.attribution){c=void 0!==e?e:c.O();for(e={};f<=g;++f)h=f.toString(),e[h]=[bg(d,c,f)];this.ka([new ue({html:a.attribution,tileRanges:e})])}Xf(this,"ready")}else Xf(this,"error")};
-l.Wb=function(a,c,d,e,f){var g=this.Ab(a,c,d);if(Lf(this.a,g))return this.a.get(g);a=[a,c,d];c=og(this,a,f);e=this.j(c,e,f);e=new Uw(a,void 0!==e?0:4,void 0!==e?e:"",this.tileGrid.Ba(a),this.s,this.c);this.a.set(g,e);return e};l.Uf=function(a,c,d){a=this.Ab(a,c,d);Lf(this.a,a)&&this.a.get(a)};function Uw(a,c,d,e,f,g){Qf.call(this,a,c);this.s=d;this.g=e;this.U=f;this.c=this.j=this.l=null;this.v=g}y(Uw,Qf);l=Uw.prototype;l.ab=function(){return null};
-l.getData=function(a){if(!this.l||!this.j)return null;var c=this.l[Math.floor((1-(a[1]-this.g[1])/(this.g[3]-this.g[1]))*this.l.length)];if("string"!==typeof c)return null;c=c.charCodeAt(Math.floor((a[0]-this.g[0])/(this.g[2]-this.g[0])*c.length));93<=c&&c--;35<=c&&c--;c-=32;a=null;c in this.j&&(c=this.j[c],this.c&&c in this.c?a=this.c[c]:a=c);return a};
-function Tw(a,c,d,e,f){0==a.state&&!0===f?(bb(a,"change",function(){d.call(e,this.getData(c))},a),Vw(a)):!0===f?Fg(function(){d.call(e,this.getData(c))},a):d.call(e,a.getData(c))}l.gb=function(){return this.s};l.Vd=function(){this.state=3;Rf(this)};l.uh=function(a){this.l=a.grid;this.j=a.keys;this.c=a.data;this.state=4;Rf(this)};
-function Vw(a){if(0==a.state)if(a.state=1,a.v)dw(a.s,a.uh.bind(a),a.Vd.bind(a));else{var c=new XMLHttpRequest;c.addEventListener("load",a.kn.bind(a));c.addEventListener("error",a.jn.bind(a));c.open("GET",a.s);c.send()}}l.kn=function(a){a=a.target;if(200<=a.status&&300>a.status){var c;try{c=JSON.parse(a.responseText)}catch(d){this.Vd();return}this.uh(c)}else this.Vd()};l.jn=function(){this.Vd()};l.load=function(){this.U&&Vw(this)};function Ww(a){a=a||{};var c=a.params||{};X.call(this,{attributions:a.attributions,cacheSize:a.cacheSize,crossOrigin:a.crossOrigin,logo:a.logo,opaque:!("TRANSPARENT"in c?c.TRANSPARENT:1),projection:a.projection,reprojectionErrorThreshold:a.reprojectionErrorThreshold,tileGrid:a.tileGrid,tileLoadFunction:a.tileLoadFunction,url:a.url,urls:a.urls,wrapX:void 0!==a.wrapX?a.wrapX:!0});this.v=void 0!==a.gutter?a.gutter:0;this.c=c;this.j=!0;this.B=a.serverType;this.T=void 0!==a.hidpi?a.hidpi:!0;this.S="";
-Xw(this);this.Y=Wb();Yw(this);ng(this,Zw(this))}y(Ww,X);l=Ww.prototype;
-l.nn=function(a,c,d,e){d=Ic(d);var f=this.tileGrid;f||(f=this.fb(d));c=f.Td(a,c);if(!(f.b.length<=c[0])){var g=f.$(c[0]),h=f.Ba(c,this.Y),f=Uf(f.Ha(c[0]),this.o),k=this.v;0!==k&&(f=Sf(f,k,this.o),h=Yb(h,g*k,h));k={SERVICE:"WMS",VERSION:"1.3.0",REQUEST:"GetFeatureInfo",FORMAT:"image/png",TRANSPARENT:!0,QUERY_LAYERS:this.c.LAYERS};Pa(k,this.c,e);e=Math.floor((h[3]-a[1])/g);k[this.j?"I":"X"]=Math.floor((a[0]-h[0])/g);k[this.j?"J":"Y"]=e;return $w(this,c,f,h,1,d,k)}};l.cf=function(){return this.v};
-l.Ab=function(a,c,d){return this.S+Ww.ia.Ab.call(this,a,c,d)};l.pn=function(){return this.c};
-function $w(a,c,d,e,f,g,h){var k=a.urls;if(k){h.WIDTH=d[0];h.HEIGHT=d[1];h[a.j?"CRS":"SRS"]=g.eb;"STYLES"in a.c||(h.STYLES="");if(1!=f)switch(a.B){case "geoserver":d=90*f+.5|0;h.FORMAT_OPTIONS="FORMAT_OPTIONS"in h?h.FORMAT_OPTIONS+(";dpi:"+d):"dpi:"+d;break;case "mapserver":h.MAP_RESOLUTION=90*f;break;case "carmentaserver":case "qgis":h.DPI=90*f}g=g.b;a.j&&"ne"==g.substr(0,2)&&(a=e[0],e[0]=e[1],e[1]=a,a=e[2],e[2]=e[3],e[3]=a);h.BBOX=e.join(",");return dq(fq([1==k.length?k[0]:k[Ja((c[1]<<c[0])+c[2],
-k.length)]],h))}}l.Xb=function(a){return this.T&&void 0!==this.B?a:1};function Xw(a){var c=0,d=[];if(a.urls){var e,f;e=0;for(f=a.urls.length;e<f;++e)d[c++]=a.urls[e]}a.S=d.join("#")}function Zw(a){var c=0,d=[],e;for(e in a.c)d[c++]=e+"-"+a.c[e];return d.join("/")}
-l.qc=function(a,c,d){var e=this.tileGrid;e||(e=this.fb(d));if(!(e.b.length<=a[0])){1==c||this.T&&void 0!==this.B||(c=1);var f=e.$(a[0]),g=e.Ba(a,this.Y),e=Uf(e.Ha(a[0]),this.o),h=this.v;0!==h&&(e=Sf(e,h,this.o),g=Yb(g,f*h,g));1!=c&&(e=Tf(e,c,this.o));f={SERVICE:"WMS",VERSION:"1.3.0",REQUEST:"GetMap",FORMAT:"image/png",TRANSPARENT:!0};Pa(f,this.c);return $w(this,a,e,g,c,d,f)}};l.qn=function(a){Pa(this.c,a);Xw(this);Yw(this);ng(this,Zw(this))};function Yw(a){a.j=0<=Lb(a.c.VERSION||"1.3.0")};function ax(a){this.l=a.matrixIds;Yf.call(this,{extent:a.extent,origin:a.origin,origins:a.origins,resolutions:a.resolutions,tileSize:a.tileSize,tileSizes:a.tileSizes,sizes:a.sizes})}y(ax,Yf);ax.prototype.j=function(){return this.l};
-function bx(a,c){var d=[],e=[],f=[],g=[],h=[],k;k=Ic(a.SupportedCRS.replace(/urn:ogc:def:crs:(\w+):(.*:)?(\w+)$/,"$1:$3"));var m=k.Vb(),n="ne"==k.b.substr(0,2);a.TileMatrix.sort(function(a,c){return c.ScaleDenominator-a.ScaleDenominator});a.TileMatrix.forEach(function(a){e.push(a.Identifier);var c=2.8E-4*a.ScaleDenominator/m,k=a.TileWidth,u=a.TileHeight;n?f.push([a.TopLeftCorner[1],a.TopLeftCorner[0]]):f.push(a.TopLeftCorner);d.push(c);g.push(k==u?k:[k,u]);h.push([a.MatrixWidth,-a.MatrixHeight])});
-return new ax({extent:c,origins:f,resolutions:d,matrixIds:e,tileSizes:g,sizes:h})};function Z(a){function c(a){a="KVP"==e?dq(fq([a],g)):a.replace(/\{(\w+?)\}/g,function(a,c){return c.toLowerCase()in g?g[c.toLowerCase()]:a});return function(c){if(c){var d={TileMatrix:f.l[c[0]],TileCol:c[1],TileRow:-c[2]-1};Pa(d,h);c=a;return c="KVP"==e?dq(fq([c],d)):c.replace(/\{(\w+?)\}/g,function(a,c){return d[c]})}}}this.T=void 0!==a.version?a.version:"1.0.0";this.v=void 0!==a.format?a.format:"image/jpeg";this.c=void 0!==a.dimensions?a.dimensions:{};this.B=a.layer;this.j=a.matrixSet;this.S=a.style;
-var d=a.urls;void 0===d&&void 0!==a.url&&(d=ym(a.url));var e=this.Y=void 0!==a.requestEncoding?a.requestEncoding:"KVP",f=a.tileGrid,g={layer:this.B,style:this.S,tilematrixset:this.j};"KVP"==e&&Pa(g,{Service:"WMTS",Request:"GetTile",Version:this.T,Format:this.v});var h=this.c,k=d&&0<d.length?wm(d.map(c)):xm;X.call(this,{attributions:a.attributions,cacheSize:a.cacheSize,crossOrigin:a.crossOrigin,logo:a.logo,projection:a.projection,reprojectionErrorThreshold:a.reprojectionErrorThreshold,tileClass:a.tileClass,
-tileGrid:f,tileLoadFunction:a.tileLoadFunction,tilePixelRatio:a.tilePixelRatio,tileUrlFunction:k,urls:d,wrapX:void 0!==a.wrapX?a.wrapX:!1});ng(this,cx(this))}y(Z,X);l=Z.prototype;l.Rj=function(){return this.c};l.rn=function(){return this.v};l.sn=function(){return this.B};l.dk=function(){return this.j};l.rk=function(){return this.Y};l.tn=function(){return this.S};l.yk=function(){return this.T};function cx(a){var c=0,d=[],e;for(e in a.c)d[c++]=e+"-"+a.c[e];return d.join("/")}
-l.pp=function(a){Pa(this.c,a);ng(this,cx(this))};function dx(a){a=a||{};var c=a.size,d=c[0],e=c[1],f=[],g=256;switch(void 0!==a.tierSizeCalculation?a.tierSizeCalculation:"default"){case "default":for(;d>g||e>g;)f.push([Math.ceil(d/g),Math.ceil(e/g)]),g+=g;break;case "truncated":for(;d>g||e>g;)f.push([Math.ceil(d/g),Math.ceil(e/g)]),d>>=1,e>>=1}f.push([1,1]);f.reverse();for(var g=[1],h=[0],e=1,d=f.length;e<d;e++)g.push(1<<e),h.push(f[e-1][0]*f[e-1][1]+h[e-1]);g.reverse();var c=[0,-c[1],c[0],0],c=new Yf({extent:c,origin:oc(c),resolutions:g}),k=a.url;
-X.call(this,{attributions:a.attributions,cacheSize:a.cacheSize,crossOrigin:a.crossOrigin,logo:a.logo,reprojectionErrorThreshold:a.reprojectionErrorThreshold,tileClass:ex,tileGrid:c,tileUrlFunction:function(a){if(a){var c=a[0],d=a[1];a=-a[2]-1;return k+"TileGroup"+((d+a*f[c][0]+h[c])/256|0)+"/"+c+"-"+d+"-"+a+".jpg"}}})}y(dx,X);function ex(a,c,d,e,f){Zu.call(this,a,c,d,e,f);this.l={}}y(ex,Zu);
-ex.prototype.ab=function(a){var c=void 0!==a?w(a).toString():"";if(c in this.l)return this.l[c];a=ex.ia.ab.call(this,a);if(2==this.state){if(256==a.width&&256==a.height)return this.l[c]=a;var d=Mg(256,256);d.drawImage(a,0,0);return this.l[c]=d.canvas}return a};function fx(a){a=a||{};this.a=void 0!==a.initialSize?a.initialSize:256;this.g=void 0!==a.maxSize?a.maxSize:void 0!==na?na:2048;this.b=void 0!==a.space?a.space:1;this.c=[new gx(this.a,this.b)];this.f=this.a;this.i=[new gx(this.f,this.b)]}fx.prototype.add=function(a,c,d,e,f,g){if(c+this.b>this.g||d+this.b>this.g)return null;e=hx(this,!1,a,c,d,e,g);if(!e)return null;a=hx(this,!0,a,c,d,void 0!==f?f:pa,g);return{offsetX:e.offsetX,offsetY:e.offsetY,image:e.image,Ng:a.image}};
-function hx(a,c,d,e,f,g,h){var k=c?a.i:a.c,m,n,p;n=0;for(p=k.length;n<p;++n){m=k[n];if(m=m.add(d,e,f,g,h))return m;m||n!==p-1||(c?(m=Math.min(2*a.f,a.g),a.f=m):(m=Math.min(2*a.a,a.g),a.a=m),m=new gx(m,a.b),k.push(m),++p)}}function gx(a,c){this.b=c;this.a=[{x:0,y:0,width:a,height:a}];this.f={};this.g=Mg(a,a);this.c=this.g.canvas}gx.prototype.get=function(a){return this.f[a]||null};
-gx.prototype.add=function(a,c,d,e,f){var g,h,k;h=0;for(k=this.a.length;h<k;++h)if(g=this.a[h],g.width>=c+this.b&&g.height>=d+this.b)return k={offsetX:g.x+this.b,offsetY:g.y+this.b,image:this.c},this.f[a]=k,e.call(f,this.g,g.x+this.b,g.y+this.b),a=h,c=c+this.b,d=d+this.b,f=e=void 0,g.width-c>g.height-d?(e={x:g.x+c,y:g.y,width:g.width-c,height:g.height},f={x:g.x,y:g.y+d,width:c,height:g.height-d},ix(this,a,e,f)):(e={x:g.x+c,y:g.y,width:g.width-c,height:d},f={x:g.x,y:g.y+d,width:g.width,height:g.height-
-d},ix(this,a,e,f)),k;return null};function ix(a,c,d,e){c=[c,1];0<d.width&&0<d.height&&c.push(d);0<e.width&&0<e.height&&c.push(e);a.a.splice.apply(a.a,c)};function jx(a){this.B=this.s=this.f=null;this.o=void 0!==a.fill?a.fill:null;this.va=[0,0];this.b=a.points;this.g=void 0!==a.radius?a.radius:a.radius1;this.c=void 0!==a.radius2?a.radius2:this.g;this.l=void 0!==a.angle?a.angle:0;this.a=void 0!==a.stroke?a.stroke:null;this.R=this.ya=this.N=null;var c=a.atlasManager,d="",e="",f=0,g=null,h,k=0;this.a&&(h=He(this.a.b),k=this.a.a,void 0===k&&(k=1),g=this.a.g,Zg||(g=null),e=this.a.c,void 0===e&&(e="round"),d=this.a.f,void 0===d&&(d="round"),f=this.a.i,void 0===
-f&&(f=10));var m=2*(this.g+k)+1,d={strokeStyle:h,wd:k,size:m,lineCap:d,lineDash:g,lineJoin:e,miterLimit:f};if(void 0===c){var n=Mg(m,m);this.s=n.canvas;c=m=this.s.width;this.Dh(d,n,0,0);this.o?this.B=this.s:(n=Mg(d.size,d.size),this.B=n.canvas,this.Ch(d,n,0,0))}else m=Math.round(m),(e=!this.o)&&(n=this.Ch.bind(this,d)),f=this.a?hk(this.a):"-",g=this.o?bk(this.o):"-",this.f&&f==this.f[1]&&g==this.f[2]&&this.g==this.f[3]&&this.c==this.f[4]&&this.l==this.f[5]&&this.b==this.f[6]||(this.f=["r"+f+g+(void 0!==
-this.g?this.g.toString():"-")+(void 0!==this.c?this.c.toString():"-")+(void 0!==this.l?this.l.toString():"-")+(void 0!==this.b?this.b.toString():"-"),f,g,this.g,this.c,this.l,this.b]),n=c.add(this.f[0],m,m,this.Dh.bind(this,d),n),this.s=n.image,this.va=[n.offsetX,n.offsetY],c=n.image.width,this.B=e?n.Ng:this.s;this.N=[m/2,m/2];this.ya=[m,m];this.R=[c,c];ti.call(this,{opacity:1,rotateWithView:void 0!==a.rotateWithView?a.rotateWithView:!1,rotation:void 0!==a.rotation?a.rotation:0,scale:1,snapToPixel:void 0!==
-a.snapToPixel?a.snapToPixel:!0})}y(jx,ti);l=jx.prototype;l.Tb=function(){return this.N};l.zn=function(){return this.l};l.An=function(){return this.o};l.ke=function(){return this.B};l.ec=function(){return this.s};l.fd=function(){return this.R};l.od=function(){return 2};l.Fa=function(){return this.va};l.Bn=function(){return this.b};l.Cn=function(){return this.g};l.qk=function(){return this.c};l.Bb=function(){return this.ya};l.Dn=function(){return this.a};l.kf=pa;l.load=pa;l.Tf=pa;
-l.Dh=function(a,c,d,e){var f;c.setTransform(1,0,0,1,0,0);c.translate(d,e);c.beginPath();this.c!==this.g&&(this.b*=2);for(d=0;d<=this.b;d++)e=2*d*Math.PI/this.b-Math.PI/2+this.l,f=0===d%2?this.g:this.c,c.lineTo(a.size/2+f*Math.cos(e),a.size/2+f*Math.sin(e));this.o&&(c.fillStyle=Je(this.o.b),c.fill());this.a&&(c.strokeStyle=a.strokeStyle,c.lineWidth=a.wd,a.lineDash&&c.setLineDash(a.lineDash),c.lineCap=a.lineCap,c.lineJoin=a.lineJoin,c.miterLimit=a.miterLimit,c.stroke());c.closePath()};
-l.Ch=function(a,c,d,e){c.setTransform(1,0,0,1,0,0);c.translate(d,e);c.beginPath();this.c!==this.g&&(this.b*=2);var f;for(d=0;d<=this.b;d++)f=2*d*Math.PI/this.b-Math.PI/2+this.l,e=0===d%2?this.g:this.c,c.lineTo(a.size/2+e*Math.cos(f),a.size/2+e*Math.sin(f));c.fillStyle=Wj;c.fill();this.a&&(c.strokeStyle=a.strokeStyle,c.lineWidth=a.wd,a.lineDash&&c.setLineDash(a.lineDash),c.stroke());c.closePath()};t("ol.animation.bounce",function(a){var c=a.resolution,d=a.start?a.start:Date.now(),e=void 0!==a.duration?a.duration:1E3,f=a.easing?a.easing:me;return function(a,h){if(h.time<d)return h.animate=!0,h.viewHints[0]+=1,!0;if(h.time<d+e){var k=f((h.time-d)/e),m=c-h.viewState.resolution;h.animate=!0;h.viewState.resolution+=k*m;h.viewHints[0]+=1;return!0}return!1}},OPENLAYERS);t("ol.animation.pan",ne,OPENLAYERS);t("ol.animation.rotate",oe,OPENLAYERS);t("ol.animation.zoom",pe,OPENLAYERS);
-t("ol.Attribution",ue,OPENLAYERS);ue.prototype.getHTML=ue.prototype.g;ve.prototype.element=ve.prototype.element;t("ol.Collection",we,OPENLAYERS);we.prototype.clear=we.prototype.clear;we.prototype.extend=we.prototype.lf;we.prototype.forEach=we.prototype.forEach;we.prototype.getArray=we.prototype.Cl;we.prototype.item=we.prototype.item;we.prototype.getLength=we.prototype.Zb;we.prototype.insertAt=we.prototype.Zd;we.prototype.pop=we.prototype.pop;we.prototype.push=we.prototype.push;
-we.prototype.remove=we.prototype.remove;we.prototype.removeAt=we.prototype.Nf;we.prototype.setAt=we.prototype.To;t("ol.colorlike.asColorLike",Je,OPENLAYERS);t("ol.coordinate.add",Mb,OPENLAYERS);t("ol.coordinate.createStringXY",function(a){return function(c){return Ub(c,a)}},OPENLAYERS);t("ol.coordinate.format",Pb,OPENLAYERS);t("ol.coordinate.rotate",Rb,OPENLAYERS);t("ol.coordinate.toStringHDMS",function(a,c){return a?Ob(a[1],"NS",c)+" "+Ob(a[0],"EW",c):""},OPENLAYERS);
-t("ol.coordinate.toStringXY",Ub,OPENLAYERS);t("ol.DeviceOrientation",ho,OPENLAYERS);ho.prototype.getAlpha=ho.prototype.Kj;ho.prototype.getBeta=ho.prototype.Nj;ho.prototype.getGamma=ho.prototype.Uj;ho.prototype.getHeading=ho.prototype.Dl;ho.prototype.getTracking=ho.prototype.Vg;ho.prototype.setTracking=ho.prototype.mf;t("ol.easing.easeIn",ie,OPENLAYERS);t("ol.easing.easeOut",je,OPENLAYERS);t("ol.easing.inAndOut",ke,OPENLAYERS);t("ol.easing.linear",le,OPENLAYERS);t("ol.easing.upAndDown",me,OPENLAYERS);
-t("ol.extent.boundingExtent",Vb,OPENLAYERS);t("ol.extent.buffer",Yb,OPENLAYERS);t("ol.extent.containsCoordinate",ac,OPENLAYERS);t("ol.extent.containsExtent",cc,OPENLAYERS);t("ol.extent.containsXY",bc,OPENLAYERS);t("ol.extent.createEmpty",Wb,OPENLAYERS);t("ol.extent.equals",ic,OPENLAYERS);t("ol.extent.extend",jc,OPENLAYERS);t("ol.extent.getBottomLeft",lc,OPENLAYERS);t("ol.extent.getBottomRight",mc,OPENLAYERS);t("ol.extent.getCenter",tc,OPENLAYERS);t("ol.extent.getHeight",sc,OPENLAYERS);
-t("ol.extent.getIntersection",vc,OPENLAYERS);t("ol.extent.getSize",function(a){return[a[2]-a[0],a[3]-a[1]]},OPENLAYERS);t("ol.extent.getTopLeft",oc,OPENLAYERS);t("ol.extent.getTopRight",nc,OPENLAYERS);t("ol.extent.getWidth",rc,OPENLAYERS);t("ol.extent.intersects",wc,OPENLAYERS);t("ol.extent.isEmpty",qc,OPENLAYERS);t("ol.extent.applyTransform",zc,OPENLAYERS);t("ol.Feature",zl,OPENLAYERS);zl.prototype.clone=zl.prototype.clone;zl.prototype.getGeometry=zl.prototype.W;zl.prototype.getId=zl.prototype.Wa;
-zl.prototype.getGeometryName=zl.prototype.Wj;zl.prototype.getStyle=zl.prototype.Fl;zl.prototype.getStyleFunction=zl.prototype.$b;zl.prototype.setGeometry=zl.prototype.Ta;zl.prototype.setStyle=zl.prototype.nf;zl.prototype.setId=zl.prototype.hc;zl.prototype.setGeometryName=zl.prototype.zc;t("ol.featureloader.tile",Vl,OPENLAYERS);t("ol.featureloader.xhr",Wl,OPENLAYERS);t("ol.Geolocation",Nu,OPENLAYERS);Nu.prototype.getAccuracy=Nu.prototype.Ij;Nu.prototype.getAccuracyGeometry=Nu.prototype.Jj;
-Nu.prototype.getAltitude=Nu.prototype.Lj;Nu.prototype.getAltitudeAccuracy=Nu.prototype.Mj;Nu.prototype.getHeading=Nu.prototype.Hl;Nu.prototype.getPosition=Nu.prototype.Il;Nu.prototype.getProjection=Nu.prototype.Wg;Nu.prototype.getSpeed=Nu.prototype.sk;Nu.prototype.getTracking=Nu.prototype.Xg;Nu.prototype.getTrackingOptions=Nu.prototype.Hg;Nu.prototype.setProjection=Nu.prototype.Yg;Nu.prototype.setTracking=Nu.prototype.ae;Nu.prototype.setTrackingOptions=Nu.prototype.mi;t("ol.Graticule",Tu,OPENLAYERS);
-Tu.prototype.getMap=Tu.prototype.Ll;Tu.prototype.getMeridians=Tu.prototype.ek;Tu.prototype.getParallels=Tu.prototype.lk;Tu.prototype.setMap=Tu.prototype.setMap;t("ol.has.DEVICE_PIXEL_RATIO",Yg,OPENLAYERS);t("ol.has.CANVAS",$g,OPENLAYERS);t("ol.has.DEVICE_ORIENTATION",ah,OPENLAYERS);t("ol.has.GEOLOCATION",bh,OPENLAYERS);t("ol.has.TOUCH",ch,OPENLAYERS);t("ol.has.WEBGL",Tg,OPENLAYERS);Yu.prototype.getImage=Yu.prototype.a;Zu.prototype.getImage=Zu.prototype.ab;t("ol.Kinetic",Ki,OPENLAYERS);
-t("ol.loadingstrategy.all",Xl,OPENLAYERS);t("ol.loadingstrategy.bbox",function(a){return[a]},OPENLAYERS);t("ol.loadingstrategy.tile",function(a){return function(c,d){var e=gg(a,d),f=bg(a,c,e),g=[],e=[e,0,0];for(e[1]=f.b;e[1]<=f.a;++e[1])for(e[2]=f.g;e[2]<=f.f;++e[2])g.push(a.Ba(e));return g}},OPENLAYERS);t("ol.Map",S,OPENLAYERS);S.prototype.addControl=S.prototype.pj;S.prototype.addInteraction=S.prototype.qj;S.prototype.addLayer=S.prototype.gg;S.prototype.addOverlay=S.prototype.hg;
-S.prototype.beforeRender=S.prototype.Va;S.prototype.forEachFeatureAtPixel=S.prototype.ed;S.prototype.forEachLayerAtPixel=S.prototype.Pl;S.prototype.hasFeatureAtPixel=S.prototype.gl;S.prototype.getEventCoordinate=S.prototype.Sj;S.prototype.getEventPixel=S.prototype.Nd;S.prototype.getTarget=S.prototype.pf;S.prototype.getTargetElement=S.prototype.tc;S.prototype.getCoordinateFromPixel=S.prototype.Ma;S.prototype.getControls=S.prototype.Qj;S.prototype.getOverlays=S.prototype.jk;
-S.prototype.getOverlayById=S.prototype.ik;S.prototype.getInteractions=S.prototype.Xj;S.prototype.getLayerGroup=S.prototype.sc;S.prototype.getLayers=S.prototype.Zg;S.prototype.getPixelFromCoordinate=S.prototype.Da;S.prototype.getSize=S.prototype.$a;S.prototype.getView=S.prototype.aa;S.prototype.getViewport=S.prototype.zk;S.prototype.renderSync=S.prototype.Po;S.prototype.render=S.prototype.render;S.prototype.removeControl=S.prototype.Io;S.prototype.removeInteraction=S.prototype.Jo;
-S.prototype.removeLayer=S.prototype.Lo;S.prototype.removeOverlay=S.prototype.Mo;S.prototype.setLayerGroup=S.prototype.ei;S.prototype.setSize=S.prototype.Sf;S.prototype.setTarget=S.prototype.$g;S.prototype.setView=S.prototype.ep;S.prototype.updateSize=S.prototype.Sc;Mh.prototype.originalEvent=Mh.prototype.originalEvent;Mh.prototype.pixel=Mh.prototype.pixel;Mh.prototype.coordinate=Mh.prototype.coordinate;Mh.prototype.dragging=Mh.prototype.dragging;If.prototype.map=If.prototype.map;
-If.prototype.frameState=If.prototype.frameState;ob.prototype.key=ob.prototype.key;ob.prototype.oldValue=ob.prototype.oldValue;t("ol.Object",pb,OPENLAYERS);pb.prototype.get=pb.prototype.get;pb.prototype.getKeys=pb.prototype.K;pb.prototype.getProperties=pb.prototype.L;pb.prototype.set=pb.prototype.set;pb.prototype.setProperties=pb.prototype.C;pb.prototype.unset=pb.prototype.P;t("ol.Observable",mb,OPENLAYERS);t("ol.Observable.unByKey",nb,OPENLAYERS);mb.prototype.changed=mb.prototype.u;
-mb.prototype.dispatchEvent=mb.prototype.b;mb.prototype.getRevision=mb.prototype.H;mb.prototype.on=mb.prototype.D;mb.prototype.once=mb.prototype.I;mb.prototype.un=mb.prototype.G;mb.prototype.unByKey=mb.prototype.J;t("ol.inherits",y,OPENLAYERS);t("ol.Overlay",On,OPENLAYERS);On.prototype.getElement=On.prototype.be;On.prototype.getId=On.prototype.Wa;On.prototype.getMap=On.prototype.ce;On.prototype.getOffset=On.prototype.Fg;On.prototype.getPosition=On.prototype.ah;On.prototype.getPositioning=On.prototype.Gg;
-On.prototype.setElement=On.prototype.ai;On.prototype.setMap=On.prototype.setMap;On.prototype.setOffset=On.prototype.gi;On.prototype.setPosition=On.prototype.qf;On.prototype.setPositioning=On.prototype.ji;t("ol.render.toContext",function(a,c){var d=a.canvas,e=c?c:{},f=e.pixelRatio||Yg;if(e=e.size)d.width=e[0]*f,d.height=e[1]*f,d.style.width=e[0]+"px",d.style.height=e[1]+"px";d=[0,0,d.width,d.height];e=hi(hd(),0,0,f,f,0,0,0);return new qk(a,f,d,e,0)},OPENLAYERS);t("ol.size.toSize",Uf,OPENLAYERS);
-Qf.prototype.getTileCoord=Qf.prototype.i;Bl.prototype.getFormat=Bl.prototype.Ql;Bl.prototype.setFeatures=Bl.prototype.bi;Bl.prototype.setProjection=Bl.prototype.rf;Bl.prototype.setLoader=Bl.prototype.fi;t("ol.View",be,OPENLAYERS);be.prototype.constrainCenter=be.prototype.Kd;be.prototype.constrainResolution=be.prototype.constrainResolution;be.prototype.constrainRotation=be.prototype.constrainRotation;be.prototype.getCenter=be.prototype.bb;be.prototype.calculateExtent=be.prototype.Fc;
-be.prototype.getProjection=be.prototype.Rl;be.prototype.getResolution=be.prototype.$;be.prototype.getResolutions=be.prototype.Sl;be.prototype.getRotation=be.prototype.Ka;be.prototype.getZoom=be.prototype.Bk;be.prototype.fit=be.prototype.Ze;be.prototype.centerOn=be.prototype.Aj;be.prototype.rotate=be.prototype.rotate;be.prototype.setCenter=be.prototype.jb;be.prototype.setResolution=be.prototype.Qb;be.prototype.setRotation=be.prototype.de;be.prototype.setZoom=be.prototype.hp;
-t("ol.xml.getAllTextContent",El,OPENLAYERS);t("ol.xml.parse",Il,OPENLAYERS);Xm.prototype.getGL=Xm.prototype.Un;Xm.prototype.useProgram=Xm.prototype.re;t("ol.tilegrid.TileGrid",Yf,OPENLAYERS);Yf.prototype.getMaxZoom=Yf.prototype.Dg;Yf.prototype.getMinZoom=Yf.prototype.Eg;Yf.prototype.getOrigin=Yf.prototype.Fa;Yf.prototype.getResolution=Yf.prototype.$;Yf.prototype.getResolutions=Yf.prototype.Fh;Yf.prototype.getTileCoordExtent=Yf.prototype.Ba;Yf.prototype.getTileCoordForCoordAndResolution=Yf.prototype.Td;
-Yf.prototype.getTileCoordForCoordAndZ=Yf.prototype.kd;Yf.prototype.getTileSize=Yf.prototype.Ha;t("ol.tilegrid.createXYZ",kg,OPENLAYERS);t("ol.tilegrid.WMTS",ax,OPENLAYERS);ax.prototype.getMatrixIds=ax.prototype.j;t("ol.tilegrid.WMTS.createFromCapabilitiesMatrixSet",bx,OPENLAYERS);t("ol.style.AtlasManager",fx,OPENLAYERS);t("ol.style.Circle",ik,OPENLAYERS);ik.prototype.getFill=ik.prototype.vn;ik.prototype.getImage=ik.prototype.ec;ik.prototype.getRadius=ik.prototype.wn;ik.prototype.getStroke=ik.prototype.xn;
-t("ol.style.Fill",ak,OPENLAYERS);ak.prototype.getColor=ak.prototype.g;ak.prototype.setColor=ak.prototype.f;t("ol.style.Icon",ui,OPENLAYERS);ui.prototype.getAnchor=ui.prototype.Tb;ui.prototype.getImage=ui.prototype.ec;ui.prototype.getOrigin=ui.prototype.Fa;ui.prototype.getSrc=ui.prototype.yn;ui.prototype.getSize=ui.prototype.Bb;ui.prototype.load=ui.prototype.load;t("ol.style.Image",ti,OPENLAYERS);ti.prototype.getOpacity=ti.prototype.le;ti.prototype.getRotateWithView=ti.prototype.Rd;
-ti.prototype.getRotation=ti.prototype.me;ti.prototype.getScale=ti.prototype.ne;ti.prototype.getSnapToPixel=ti.prototype.Sd;ti.prototype.setOpacity=ti.prototype.oe;ti.prototype.setRotation=ti.prototype.pe;ti.prototype.setScale=ti.prototype.qe;t("ol.style.RegularShape",jx,OPENLAYERS);jx.prototype.getAnchor=jx.prototype.Tb;jx.prototype.getAngle=jx.prototype.zn;jx.prototype.getFill=jx.prototype.An;jx.prototype.getImage=jx.prototype.ec;jx.prototype.getOrigin=jx.prototype.Fa;jx.prototype.getPoints=jx.prototype.Bn;
-jx.prototype.getRadius=jx.prototype.Cn;jx.prototype.getRadius2=jx.prototype.qk;jx.prototype.getSize=jx.prototype.Bb;jx.prototype.getStroke=jx.prototype.Dn;t("ol.style.Stroke",gk,OPENLAYERS);gk.prototype.getColor=gk.prototype.En;gk.prototype.getLineCap=gk.prototype.$j;gk.prototype.getLineDash=gk.prototype.Fn;gk.prototype.getLineJoin=gk.prototype.ak;gk.prototype.getMiterLimit=gk.prototype.fk;gk.prototype.getWidth=gk.prototype.Gn;gk.prototype.setColor=gk.prototype.Hn;gk.prototype.setLineCap=gk.prototype.Zo;
-gk.prototype.setLineDash=gk.prototype.In;gk.prototype.setLineJoin=gk.prototype.$o;gk.prototype.setMiterLimit=gk.prototype.ap;gk.prototype.setWidth=gk.prototype.fp;t("ol.style.Style",jk,OPENLAYERS);jk.prototype.getGeometry=jk.prototype.W;jk.prototype.getGeometryFunction=jk.prototype.Vj;jk.prototype.getFill=jk.prototype.Jn;jk.prototype.getImage=jk.prototype.Kn;jk.prototype.getStroke=jk.prototype.Ln;jk.prototype.getText=jk.prototype.Ea;jk.prototype.getZIndex=jk.prototype.Mn;
-jk.prototype.setGeometry=jk.prototype.Eh;jk.prototype.setZIndex=jk.prototype.Nn;t("ol.style.Text",zq,OPENLAYERS);zq.prototype.getFont=zq.prototype.Tj;zq.prototype.getOffsetX=zq.prototype.gk;zq.prototype.getOffsetY=zq.prototype.hk;zq.prototype.getFill=zq.prototype.On;zq.prototype.getRotation=zq.prototype.Pn;zq.prototype.getScale=zq.prototype.Qn;zq.prototype.getStroke=zq.prototype.Rn;zq.prototype.getText=zq.prototype.Ea;zq.prototype.getTextAlign=zq.prototype.uk;zq.prototype.getTextBaseline=zq.prototype.vk;
-zq.prototype.setFont=zq.prototype.Wo;zq.prototype.setOffsetX=zq.prototype.hi;zq.prototype.setOffsetY=zq.prototype.ii;zq.prototype.setFill=zq.prototype.Vo;zq.prototype.setRotation=zq.prototype.Sn;zq.prototype.setScale=zq.prototype.Tn;zq.prototype.setStroke=zq.prototype.bp;zq.prototype.setText=zq.prototype.ki;zq.prototype.setTextAlign=zq.prototype.li;zq.prototype.setTextBaseline=zq.prototype.cp;t("ol.Sphere",Cc,OPENLAYERS);Cc.prototype.geodesicArea=Cc.prototype.a;Cc.prototype.haversineDistance=Cc.prototype.b;
-t("ol.source.BingMaps",iw,OPENLAYERS);t("ol.source.BingMaps.TOS_ATTRIBUTION",jw,OPENLAYERS);t("ol.source.CartoDB",lw,OPENLAYERS);lw.prototype.getConfig=lw.prototype.Pj;lw.prototype.updateConfig=lw.prototype.op;lw.prototype.setConfig=lw.prototype.Uo;t("ol.source.Cluster",Y,OPENLAYERS);Y.prototype.getSource=Y.prototype.xa;t("ol.source.ImageArcGISRest",qw,OPENLAYERS);qw.prototype.getParams=qw.prototype.Mm;qw.prototype.getImageLoadFunction=qw.prototype.Lm;qw.prototype.getUrl=qw.prototype.Nm;
-qw.prototype.setImageLoadFunction=qw.prototype.Om;qw.prototype.setUrl=qw.prototype.Pm;qw.prototype.updateParams=qw.prototype.Qm;t("ol.source.ImageCanvas",yl,OPENLAYERS);t("ol.source.ImageMapGuide",rw,OPENLAYERS);rw.prototype.getParams=rw.prototype.Sm;rw.prototype.getImageLoadFunction=rw.prototype.Rm;rw.prototype.updateParams=rw.prototype.Um;rw.prototype.setImageLoadFunction=rw.prototype.Tm;t("ol.source.Image",rl,OPENLAYERS);tl.prototype.image=tl.prototype.image;t("ol.source.ImageStatic",sw,OPENLAYERS);
-t("ol.source.ImageVector",om,OPENLAYERS);om.prototype.getSource=om.prototype.Vm;om.prototype.getStyle=om.prototype.Wm;om.prototype.getStyleFunction=om.prototype.Xm;om.prototype.setStyle=om.prototype.sh;t("ol.source.ImageWMS",tw,OPENLAYERS);tw.prototype.getGetFeatureInfoUrl=tw.prototype.$m;tw.prototype.getParams=tw.prototype.bn;tw.prototype.getImageLoadFunction=tw.prototype.an;tw.prototype.getUrl=tw.prototype.cn;tw.prototype.setImageLoadFunction=tw.prototype.dn;tw.prototype.setUrl=tw.prototype.en;
-tw.prototype.updateParams=tw.prototype.fn;t("ol.source.MapQuest",zw,OPENLAYERS);zw.prototype.getLayer=zw.prototype.j;t("ol.source.OSM",xw,OPENLAYERS);t("ol.source.OSM.ATTRIBUTION",yw,OPENLAYERS);t("ol.source.Raster",Cw,OPENLAYERS);Cw.prototype.setOperation=Cw.prototype.v;Hw.prototype.extent=Hw.prototype.extent;Hw.prototype.resolution=Hw.prototype.resolution;Hw.prototype.data=Hw.prototype.data;t("ol.source.Source",Vf,OPENLAYERS);Vf.prototype.getAttributions=Vf.prototype.ra;Vf.prototype.getLogo=Vf.prototype.qa;
-Vf.prototype.getProjection=Vf.prototype.sa;Vf.prototype.getState=Vf.prototype.V;Vf.prototype.refresh=Vf.prototype.pa;Vf.prototype.setAttributions=Vf.prototype.ka;t("ol.source.Stamen",Mw,OPENLAYERS);t("ol.source.TileArcGISRest",Ow,OPENLAYERS);Ow.prototype.getParams=Ow.prototype.v;Ow.prototype.updateParams=Ow.prototype.B;t("ol.source.TileDebug",Qw,OPENLAYERS);t("ol.source.TileImage",X,OPENLAYERS);X.prototype.setRenderReprojectionEdges=X.prototype.lb;X.prototype.setTileGridForProjection=X.prototype.mb;
-t("ol.source.TileJSON",Rw,OPENLAYERS);Rw.prototype.getTileJSON=Rw.prototype.wk;t("ol.source.Tile",lg,OPENLAYERS);lg.prototype.getTileGrid=lg.prototype.Ga;pg.prototype.tile=pg.prototype.tile;t("ol.source.TileUTFGrid",Sw,OPENLAYERS);Sw.prototype.getTemplate=Sw.prototype.tk;Sw.prototype.forDataAtCoordinateAndResolution=Sw.prototype.Ej;t("ol.source.TileWMS",Ww,OPENLAYERS);Ww.prototype.getGetFeatureInfoUrl=Ww.prototype.nn;Ww.prototype.getParams=Ww.prototype.pn;Ww.prototype.updateParams=Ww.prototype.qn;
-zm.prototype.getTileLoadFunction=zm.prototype.Xa;zm.prototype.getTileUrlFunction=zm.prototype.Ya;zm.prototype.getUrls=zm.prototype.Za;zm.prototype.setTileLoadFunction=zm.prototype.cb;zm.prototype.setTileUrlFunction=zm.prototype.La;zm.prototype.setUrl=zm.prototype.Na;zm.prototype.setUrls=zm.prototype.Ua;t("ol.source.Vector",Q,OPENLAYERS);Q.prototype.addFeature=Q.prototype.qb;Q.prototype.addFeatures=Q.prototype.Ec;Q.prototype.clear=Q.prototype.clear;Q.prototype.forEachFeature=Q.prototype.sg;
-Q.prototype.forEachFeatureInExtent=Q.prototype.tb;Q.prototype.forEachFeatureIntersectingExtent=Q.prototype.tg;Q.prototype.getFeaturesCollection=Q.prototype.Ag;Q.prototype.getFeatures=Q.prototype.je;Q.prototype.getFeaturesAtCoordinate=Q.prototype.zg;Q.prototype.getFeaturesInExtent=Q.prototype.af;Q.prototype.getClosestFeatureToCoordinate=Q.prototype.vg;Q.prototype.getExtent=Q.prototype.O;Q.prototype.getFeatureById=Q.prototype.yg;Q.prototype.getFormat=Q.prototype.xh;Q.prototype.getUrl=Q.prototype.yh;
-Q.prototype.removeFeature=Q.prototype.kb;lm.prototype.feature=lm.prototype.feature;t("ol.source.VectorTile",Am,OPENLAYERS);t("ol.source.WMTS",Z,OPENLAYERS);Z.prototype.getDimensions=Z.prototype.Rj;Z.prototype.getFormat=Z.prototype.rn;Z.prototype.getLayer=Z.prototype.sn;Z.prototype.getMatrixSet=Z.prototype.dk;Z.prototype.getRequestEncoding=Z.prototype.rk;Z.prototype.getStyle=Z.prototype.tn;Z.prototype.getVersion=Z.prototype.yk;Z.prototype.updateDimensions=Z.prototype.pp;
-t("ol.source.WMTS.optionsFromCapabilities",function(a,c){var d=zb(a.Contents.Layer,function(a){return a.Identifier==c.layer}),e=a.Contents.TileMatrixSet,f,g;f=1<d.TileMatrixSetLink.length?"projection"in c?Db(d.TileMatrixSetLink,function(a){return zb(e,function(c){return c.Identifier==a.TileMatrixSet}).SupportedCRS.replace(/urn:ogc:def:crs:(\w+):(.*:)?(\w+)$/,"$1:$3")==c.projection}):Db(d.TileMatrixSetLink,function(a){return a.TileMatrixSet==c.matrixSet}):0;0>f&&(f=0);g=d.TileMatrixSetLink[f].TileMatrixSet;
-var h=d.Format[0];"format"in c&&(h=c.format);f=Db(d.Style,function(a){return"style"in c?a.Title==c.style:a.isDefault});0>f&&(f=0);f=d.Style[f].Identifier;var k={};"Dimension"in d&&d.Dimension.forEach(function(a){var c=a.Identifier,d=a.Default;void 0===d&&(d=a.Value[0]);k[c]=d});var m=zb(a.Contents.TileMatrixSet,function(a){return a.Identifier==g}),n;n="projection"in c?Ic(c.projection):Ic(m.SupportedCRS.replace(/urn:ogc:def:crs:(\w+):(.*:)?(\w+)$/,"$1:$3"));var p=d.WGS84BoundingBox,q,r;void 0!==p&&
-(r=Ic("EPSG:4326").O(),r=p[0]==r[0]&&p[2]==r[2],q=cd(p,"EPSG:4326",n),(p=n.O())&&(cc(p,q)||(q=void 0)));var m=bx(m,q),u=[];q=c.requestEncoding;q=void 0!==q?q:"";if(a.hasOwnProperty("OperationsMetadata")&&a.OperationsMetadata.hasOwnProperty("GetTile")&&0!==q.indexOf("REST"))for(var d=a.OperationsMetadata.GetTile.DCP.HTTP.Get,p=0,v=d.length;p<v;++p){var x=zb(d[p].Constraint,function(a){return"GetEncoding"==a.name}).AllowedValues.Value;0<x.length&&ub(x,"KVP")&&(q="KVP",u.push(d[p].href))}else q="REST",
-d.ResourceURL.forEach(function(a){"tile"==a.resourceType&&(h=a.format,u.push(a.template))});return{urls:u,layer:c.layer,matrixSet:g,format:h,projection:n,requestEncoding:q,tileGrid:m,style:f,dimensions:k,wrapX:r}},OPENLAYERS);t("ol.source.XYZ",kw,OPENLAYERS);t("ol.source.Zoomify",dx,OPENLAYERS);ci.prototype.vectorContext=ci.prototype.vectorContext;ci.prototype.frameState=ci.prototype.frameState;ci.prototype.context=ci.prototype.context;ci.prototype.glContext=ci.prototype.glContext;
-Zk.prototype.get=Zk.prototype.get;Zk.prototype.getExtent=Zk.prototype.O;Zk.prototype.getGeometry=Zk.prototype.W;Zk.prototype.getProperties=Zk.prototype.Hm;Zk.prototype.getType=Zk.prototype.X;t("ol.render.VectorContext",bi,OPENLAYERS);tn.prototype.setStyle=tn.prototype.md;tn.prototype.drawGeometry=tn.prototype.nc;tn.prototype.drawFeature=tn.prototype.Ue;qk.prototype.drawCircle=qk.prototype.Md;qk.prototype.setStyle=qk.prototype.md;qk.prototype.drawGeometry=qk.prototype.nc;qk.prototype.drawFeature=qk.prototype.Ue;
-t("ol.proj.common.add",Tj,OPENLAYERS);t("ol.proj.METERS_PER_UNIT",Ec,OPENLAYERS);t("ol.proj.Projection",Fc,OPENLAYERS);Fc.prototype.getCode=Fc.prototype.Oj;Fc.prototype.getExtent=Fc.prototype.O;Fc.prototype.getUnits=Fc.prototype.vb;Fc.prototype.getMetersPerUnit=Fc.prototype.Vb;Fc.prototype.getWorldExtent=Fc.prototype.Ak;Fc.prototype.isGlobal=Fc.prototype.ll;Fc.prototype.setGlobal=Fc.prototype.Yo;Fc.prototype.setExtent=Fc.prototype.Gm;Fc.prototype.setWorldExtent=Fc.prototype.gp;
-Fc.prototype.setGetPointResolution=Fc.prototype.Xo;Fc.prototype.getPointResolution=Fc.prototype.getPointResolution;t("ol.proj.setProj4",function(a){Hc=a},OPENLAYERS);t("ol.proj.addEquivalentProjections",Jc,OPENLAYERS);t("ol.proj.addProjection",Wc,OPENLAYERS);t("ol.proj.addCoordinateTransforms",Kc,OPENLAYERS);t("ol.proj.fromLonLat",function(a,c){return bd(a,"EPSG:4326",void 0!==c?c:"EPSG:3857")},OPENLAYERS);t("ol.proj.toLonLat",function(a,c){return bd(a,void 0!==c?c:"EPSG:3857","EPSG:4326")},OPENLAYERS);
-t("ol.proj.get",Ic,OPENLAYERS);t("ol.proj.equivalent",Zc,OPENLAYERS);t("ol.proj.getTransform",$c,OPENLAYERS);t("ol.proj.transform",bd,OPENLAYERS);t("ol.proj.transformExtent",cd,OPENLAYERS);t("ol.layer.Heatmap",W,OPENLAYERS);W.prototype.getBlur=W.prototype.ug;W.prototype.getGradient=W.prototype.Bg;W.prototype.getRadius=W.prototype.kh;W.prototype.setBlur=W.prototype.Zh;W.prototype.setGradient=W.prototype.di;W.prototype.setRadius=W.prototype.lh;t("ol.layer.Image",Uj,OPENLAYERS);
-Uj.prototype.getSource=Uj.prototype.da;t("ol.layer.Layer",di,OPENLAYERS);di.prototype.getSource=di.prototype.da;di.prototype.setMap=di.prototype.setMap;di.prototype.setSource=di.prototype.Ac;t("ol.layer.Base",$h,OPENLAYERS);$h.prototype.getExtent=$h.prototype.O;$h.prototype.getMaxResolution=$h.prototype.Ib;$h.prototype.getMinResolution=$h.prototype.Jb;$h.prototype.getOpacity=$h.prototype.Lb;$h.prototype.getVisible=$h.prototype.wb;$h.prototype.getZIndex=$h.prototype.Mb;$h.prototype.setExtent=$h.prototype.ac;
-$h.prototype.setMaxResolution=$h.prototype.ic;$h.prototype.setMinResolution=$h.prototype.jc;$h.prototype.setOpacity=$h.prototype.bc;$h.prototype.setVisible=$h.prototype.cc;$h.prototype.setZIndex=$h.prototype.dc;t("ol.layer.Group",Kj,OPENLAYERS);Kj.prototype.getLayers=Kj.prototype.Oc;Kj.prototype.setLayers=Kj.prototype.jh;t("ol.layer.Tile",Vj,OPENLAYERS);Vj.prototype.getPreload=Vj.prototype.f;Vj.prototype.getSource=Vj.prototype.da;Vj.prototype.setPreload=Vj.prototype.l;
-Vj.prototype.getUseInterimTilesOnError=Vj.prototype.c;Vj.prototype.setUseInterimTilesOnError=Vj.prototype.B;t("ol.layer.Vector",H,OPENLAYERS);H.prototype.getSource=H.prototype.da;H.prototype.getStyle=H.prototype.M;H.prototype.getStyleFunction=H.prototype.N;H.prototype.setStyle=H.prototype.l;t("ol.layer.VectorTile",I,OPENLAYERS);I.prototype.getPreload=I.prototype.f;I.prototype.getUseInterimTilesOnError=I.prototype.c;I.prototype.setPreload=I.prototype.Y;I.prototype.setUseInterimTilesOnError=I.prototype.ea;
-t("ol.interaction.DoubleClickZoom",Qi,OPENLAYERS);t("ol.interaction.DoubleClickZoom.handleEvent",Ri,OPENLAYERS);t("ol.interaction.DragAndDrop",av,OPENLAYERS);t("ol.interaction.DragAndDrop.handleEvent",Ac,OPENLAYERS);dv.prototype.features=dv.prototype.features;dv.prototype.file=dv.prototype.file;dv.prototype.projection=dv.prototype.projection;oj.prototype.coordinate=oj.prototype.coordinate;oj.prototype.mapBrowserEvent=oj.prototype.mapBrowserEvent;t("ol.interaction.DragBox",pj,OPENLAYERS);
-pj.prototype.getGeometry=pj.prototype.W;t("ol.interaction.DragPan",dj,OPENLAYERS);t("ol.interaction.DragRotateAndZoom",fv,OPENLAYERS);t("ol.interaction.DragRotate",hj,OPENLAYERS);t("ol.interaction.DragZoom",uj,OPENLAYERS);jv.prototype.feature=jv.prototype.feature;t("ol.interaction.Draw",kv,OPENLAYERS);t("ol.interaction.Draw.handleEvent",mv,OPENLAYERS);kv.prototype.removeLastPoint=kv.prototype.Ko;kv.prototype.finishDrawing=kv.prototype.dd;kv.prototype.extend=kv.prototype.lm;
-t("ol.interaction.Draw.createRegularPolygon",function(a,c){return function(d,e){var f=d[0],g=d[1],h=Math.sqrt(Sb(f,g)),k=e?e:$d(new Ou(f),a);ae(k,f,h,c?c:Math.atan((g[1]-f[1])/(g[0]-f[0])));return k}},OPENLAYERS);t("ol.interaction.Interaction",Mi,OPENLAYERS);Mi.prototype.getActive=Mi.prototype.f;Mi.prototype.getMap=Mi.prototype.l;Mi.prototype.setActive=Mi.prototype.i;t("ol.interaction.defaults",Jj,OPENLAYERS);t("ol.interaction.KeyboardPan",vj,OPENLAYERS);
-t("ol.interaction.KeyboardPan.handleEvent",wj,OPENLAYERS);t("ol.interaction.KeyboardZoom",xj,OPENLAYERS);t("ol.interaction.KeyboardZoom.handleEvent",yj,OPENLAYERS);Av.prototype.features=Av.prototype.features;Av.prototype.mapBrowserPointerEvent=Av.prototype.mapBrowserPointerEvent;t("ol.interaction.Modify",Bv,OPENLAYERS);t("ol.interaction.Modify.handleEvent",Ev,OPENLAYERS);Bv.prototype.removePoint=Bv.prototype.Wh;t("ol.interaction.MouseWheelZoom",zj,OPENLAYERS);
-t("ol.interaction.MouseWheelZoom.handleEvent",Aj,OPENLAYERS);zj.prototype.setMouseAnchor=zj.prototype.N;t("ol.interaction.PinchRotate",Bj,OPENLAYERS);t("ol.interaction.PinchZoom",Fj,OPENLAYERS);t("ol.interaction.Pointer",aj,OPENLAYERS);t("ol.interaction.Pointer.handleEvent",bj,OPENLAYERS);Ov.prototype.selected=Ov.prototype.selected;Ov.prototype.deselected=Ov.prototype.deselected;Ov.prototype.mapBrowserEvent=Ov.prototype.mapBrowserEvent;t("ol.interaction.Select",Pv,OPENLAYERS);
-Pv.prototype.getFeatures=Pv.prototype.vm;Pv.prototype.getLayer=Pv.prototype.wm;t("ol.interaction.Select.handleEvent",Qv,OPENLAYERS);Pv.prototype.setMap=Pv.prototype.setMap;t("ol.interaction.Snap",Sv,OPENLAYERS);Sv.prototype.addFeature=Sv.prototype.qb;Sv.prototype.removeFeature=Sv.prototype.kb;Wv.prototype.features=Wv.prototype.features;Wv.prototype.coordinate=Wv.prototype.coordinate;t("ol.interaction.Translate",Xv,OPENLAYERS);t("ol.geom.Circle",Ou,OPENLAYERS);Ou.prototype.clone=Ou.prototype.clone;
-Ou.prototype.getCenter=Ou.prototype.ld;Ou.prototype.getRadius=Ou.prototype.sf;Ou.prototype.getType=Ou.prototype.X;Ou.prototype.intersectsExtent=Ou.prototype.Ia;Ou.prototype.setCenter=Ou.prototype.dm;Ou.prototype.setCenterAndRadius=Ou.prototype.Rf;Ou.prototype.setRadius=Ou.prototype.em;Ou.prototype.transform=Ou.prototype.hb;t("ol.geom.Geometry",dd,OPENLAYERS);dd.prototype.getClosestPoint=dd.prototype.ub;dd.prototype.getExtent=dd.prototype.O;dd.prototype.rotate=dd.prototype.rotate;
-dd.prototype.simplify=dd.prototype.yb;dd.prototype.transform=dd.prototype.hb;t("ol.geom.GeometryCollection",Do,OPENLAYERS);Do.prototype.clone=Do.prototype.clone;Do.prototype.getGeometries=Do.prototype.bf;Do.prototype.getType=Do.prototype.X;Do.prototype.intersectsExtent=Do.prototype.Ia;Do.prototype.setGeometries=Do.prototype.ci;Do.prototype.applyTransform=Do.prototype.mc;Do.prototype.translate=Do.prototype.Nc;t("ol.geom.LinearRing",Kd,OPENLAYERS);Kd.prototype.clone=Kd.prototype.clone;
-Kd.prototype.getArea=Kd.prototype.hm;Kd.prototype.getCoordinates=Kd.prototype.Z;Kd.prototype.getType=Kd.prototype.X;Kd.prototype.setCoordinates=Kd.prototype.ma;t("ol.geom.LineString",T,OPENLAYERS);T.prototype.appendCoordinate=T.prototype.rj;T.prototype.clone=T.prototype.clone;T.prototype.forEachSegment=T.prototype.Hj;T.prototype.getCoordinateAtM=T.prototype.fm;T.prototype.getCoordinates=T.prototype.Z;T.prototype.getCoordinateAt=T.prototype.wg;T.prototype.getLength=T.prototype.gm;
-T.prototype.getType=T.prototype.X;T.prototype.intersectsExtent=T.prototype.Ia;T.prototype.setCoordinates=T.prototype.ma;t("ol.geom.MultiLineString",U,OPENLAYERS);U.prototype.appendLineString=U.prototype.sj;U.prototype.clone=U.prototype.clone;U.prototype.getCoordinateAtM=U.prototype.im;U.prototype.getCoordinates=U.prototype.Z;U.prototype.getLineString=U.prototype.bk;U.prototype.getLineStrings=U.prototype.gd;U.prototype.getType=U.prototype.X;U.prototype.intersectsExtent=U.prototype.Ia;
-U.prototype.setCoordinates=U.prototype.ma;t("ol.geom.MultiPoint",so,OPENLAYERS);so.prototype.appendPoint=so.prototype.uj;so.prototype.clone=so.prototype.clone;so.prototype.getCoordinates=so.prototype.Z;so.prototype.getPoint=so.prototype.mk;so.prototype.getPoints=so.prototype.ee;so.prototype.getType=so.prototype.X;so.prototype.intersectsExtent=so.prototype.Ia;so.prototype.setCoordinates=so.prototype.ma;t("ol.geom.MultiPolygon",to,OPENLAYERS);to.prototype.appendPolygon=to.prototype.vj;
-to.prototype.clone=to.prototype.clone;to.prototype.getArea=to.prototype.jm;to.prototype.getCoordinates=to.prototype.Z;to.prototype.getInteriorPoints=to.prototype.Zj;to.prototype.getPolygon=to.prototype.pk;to.prototype.getPolygons=to.prototype.Qd;to.prototype.getType=to.prototype.X;to.prototype.intersectsExtent=to.prototype.Ia;to.prototype.setCoordinates=to.prototype.ma;t("ol.geom.Point",D,OPENLAYERS);D.prototype.clone=D.prototype.clone;D.prototype.getCoordinates=D.prototype.Z;
-D.prototype.getType=D.prototype.X;D.prototype.intersectsExtent=D.prototype.Ia;D.prototype.setCoordinates=D.prototype.ma;t("ol.geom.Polygon",F,OPENLAYERS);F.prototype.appendLinearRing=F.prototype.tj;F.prototype.clone=F.prototype.clone;F.prototype.getArea=F.prototype.km;F.prototype.getCoordinates=F.prototype.Z;F.prototype.getInteriorPoint=F.prototype.Yj;F.prototype.getLinearRingCount=F.prototype.ck;F.prototype.getLinearRing=F.prototype.Cg;F.prototype.getLinearRings=F.prototype.Pd;
-F.prototype.getType=F.prototype.X;F.prototype.intersectsExtent=F.prototype.Ia;F.prototype.setCoordinates=F.prototype.ma;t("ol.geom.Polygon.circular",Yd,OPENLAYERS);t("ol.geom.Polygon.fromExtent",Zd,OPENLAYERS);t("ol.geom.Polygon.fromCircle",$d,OPENLAYERS);t("ol.geom.SimpleGeometry",sd,OPENLAYERS);sd.prototype.getFirstCoordinate=sd.prototype.Fb;sd.prototype.getLastCoordinate=sd.prototype.Gb;sd.prototype.getLayout=sd.prototype.Hb;sd.prototype.applyTransform=sd.prototype.mc;sd.prototype.translate=sd.prototype.Nc;
-t("ol.format.EsriJSON",wo,OPENLAYERS);wo.prototype.readFeature=wo.prototype.Nb;wo.prototype.readFeatures=wo.prototype.Ca;wo.prototype.readGeometry=wo.prototype.Qc;wo.prototype.readProjection=wo.prototype.Oa;wo.prototype.writeGeometry=wo.prototype.Uc;wo.prototype.writeGeometryObject=wo.prototype.Ge;wo.prototype.writeFeature=wo.prototype.yd;wo.prototype.writeFeatureObject=wo.prototype.Tc;wo.prototype.writeFeatures=wo.prototype.Sb;wo.prototype.writeFeaturesObject=wo.prototype.Ee;
-t("ol.format.Feature",io,OPENLAYERS);t("ol.format.GeoJSON",Ho,OPENLAYERS);Ho.prototype.readFeature=Ho.prototype.Nb;Ho.prototype.readFeatures=Ho.prototype.Ca;Ho.prototype.readGeometry=Ho.prototype.Qc;Ho.prototype.readProjection=Ho.prototype.Oa;Ho.prototype.writeFeature=Ho.prototype.yd;Ho.prototype.writeFeatureObject=Ho.prototype.Tc;Ho.prototype.writeFeatures=Ho.prototype.Sb;Ho.prototype.writeFeaturesObject=Ho.prototype.Ee;Ho.prototype.writeGeometry=Ho.prototype.Uc;
-Ho.prototype.writeGeometryObject=Ho.prototype.Ge;t("ol.format.GPX",lp,OPENLAYERS);lp.prototype.readFeature=lp.prototype.Nb;lp.prototype.readFeatures=lp.prototype.Ca;lp.prototype.readProjection=lp.prototype.Oa;lp.prototype.writeFeatures=lp.prototype.Sb;lp.prototype.writeFeaturesNode=lp.prototype.a;t("ol.format.IGC",Up,OPENLAYERS);Up.prototype.readFeature=Up.prototype.Nb;Up.prototype.readFeatures=Up.prototype.Ca;Up.prototype.readProjection=Up.prototype.Oa;t("ol.format.KML",Aq,OPENLAYERS);
-Aq.prototype.readFeature=Aq.prototype.Nb;Aq.prototype.readFeatures=Aq.prototype.Ca;Aq.prototype.readName=Aq.prototype.zo;Aq.prototype.readNetworkLinks=Aq.prototype.Ao;Aq.prototype.readProjection=Aq.prototype.Oa;Aq.prototype.writeFeatures=Aq.prototype.Sb;Aq.prototype.writeFeaturesNode=Aq.prototype.a;t("ol.format.MVT",ps,OPENLAYERS);ps.prototype.readFeatures=ps.prototype.Ca;ps.prototype.readProjection=ps.prototype.Oa;ps.prototype.setLayers=ps.prototype.c;t("ol.format.OSMXML",Ls,OPENLAYERS);
-Ls.prototype.readFeatures=Ls.prototype.Ca;Ls.prototype.readProjection=Ls.prototype.Oa;t("ol.format.Polyline",jt,OPENLAYERS);t("ol.format.Polyline.encodeDeltas",kt,OPENLAYERS);t("ol.format.Polyline.decodeDeltas",mt,OPENLAYERS);t("ol.format.Polyline.encodeFloats",lt,OPENLAYERS);t("ol.format.Polyline.decodeFloats",nt,OPENLAYERS);jt.prototype.readFeature=jt.prototype.Nb;jt.prototype.readFeatures=jt.prototype.Ca;jt.prototype.readGeometry=jt.prototype.Qc;jt.prototype.readProjection=jt.prototype.Oa;
-jt.prototype.writeGeometry=jt.prototype.Uc;t("ol.format.TopoJSON",ot,OPENLAYERS);ot.prototype.readFeatures=ot.prototype.Ca;ot.prototype.readProjection=ot.prototype.Oa;t("ol.format.WFS",vt,OPENLAYERS);vt.prototype.readFeatures=vt.prototype.Ca;vt.prototype.readTransactionResponse=vt.prototype.o;vt.prototype.readFeatureCollectionMetadata=vt.prototype.l;vt.prototype.writeGetFeature=vt.prototype.j;vt.prototype.writeTransaction=vt.prototype.U;vt.prototype.readProjection=vt.prototype.Oa;
-t("ol.format.WKT",Mt,OPENLAYERS);Mt.prototype.readFeature=Mt.prototype.Nb;Mt.prototype.readFeatures=Mt.prototype.Ca;Mt.prototype.readGeometry=Mt.prototype.Qc;Mt.prototype.writeFeature=Mt.prototype.yd;Mt.prototype.writeFeatures=Mt.prototype.Sb;Mt.prototype.writeGeometry=Mt.prototype.Uc;t("ol.format.WMSCapabilities",cu,OPENLAYERS);cu.prototype.read=cu.prototype.read;t("ol.format.WMSGetFeatureInfo",zu,OPENLAYERS);zu.prototype.readFeatures=zu.prototype.Ca;t("ol.format.WMTSCapabilities",Au,OPENLAYERS);
-Au.prototype.read=Au.prototype.read;t("ol.format.ogc.filter.and",rs,OPENLAYERS);t("ol.format.ogc.filter.or",function(a,c){return new ys(a,c)},OPENLAYERS);t("ol.format.ogc.filter.not",function(a){return new zs(a)},OPENLAYERS);t("ol.format.ogc.filter.bbox",ts,OPENLAYERS);t("ol.format.ogc.filter.equalTo",function(a,c,d){return new Cs(a,c,d)},OPENLAYERS);t("ol.format.ogc.filter.notEqualTo",function(a,c,d){return new Ds(a,c,d)},OPENLAYERS);
-t("ol.format.ogc.filter.lessThan",function(a,c){return new Es(a,c)},OPENLAYERS);t("ol.format.ogc.filter.lessThanOrEqualTo",function(a,c){return new Fs(a,c)},OPENLAYERS);t("ol.format.ogc.filter.greaterThan",function(a,c){return new Gs(a,c)},OPENLAYERS);t("ol.format.ogc.filter.greaterThanOrEqualTo",function(a,c){return new Hs(a,c)},OPENLAYERS);t("ol.format.ogc.filter.isNull",function(a){return new Is(a)},OPENLAYERS);t("ol.format.ogc.filter.between",function(a,c,d){return new Js(a,c,d)},OPENLAYERS);
-t("ol.format.ogc.filter.like",function(a,c,d,e,f,g){return new Ks(a,c,d,e,f,g)},OPENLAYERS);t("ol.format.ogc.filter.Filter",vs,OPENLAYERS);t("ol.format.ogc.filter.And",ss,OPENLAYERS);t("ol.format.ogc.filter.Or",ys,OPENLAYERS);t("ol.format.ogc.filter.Not",zs,OPENLAYERS);t("ol.format.ogc.filter.Bbox",us,OPENLAYERS);t("ol.format.ogc.filter.Comparison",As,OPENLAYERS);t("ol.format.ogc.filter.ComparisonBinary",Bs,OPENLAYERS);t("ol.format.ogc.filter.EqualTo",Cs,OPENLAYERS);
-t("ol.format.ogc.filter.NotEqualTo",Ds,OPENLAYERS);t("ol.format.ogc.filter.LessThan",Es,OPENLAYERS);t("ol.format.ogc.filter.LessThanOrEqualTo",Fs,OPENLAYERS);t("ol.format.ogc.filter.GreaterThan",Gs,OPENLAYERS);t("ol.format.ogc.filter.GreaterThanOrEqualTo",Hs,OPENLAYERS);t("ol.format.ogc.filter.IsNull",Is,OPENLAYERS);t("ol.format.ogc.filter.IsBetween",Js,OPENLAYERS);t("ol.format.ogc.filter.IsLike",Ks,OPENLAYERS);t("ol.format.GML2",bp,OPENLAYERS);t("ol.format.GML3",cp,OPENLAYERS);
-cp.prototype.writeGeometryNode=cp.prototype.s;cp.prototype.writeFeatures=cp.prototype.Sb;cp.prototype.writeFeaturesNode=cp.prototype.a;t("ol.format.GML",cp,OPENLAYERS);cp.prototype.writeFeatures=cp.prototype.Sb;cp.prototype.writeFeaturesNode=cp.prototype.a;Po.prototype.readFeatures=Po.prototype.Ca;t("ol.events.condition.altKeyOnly",function(a){a=a.originalEvent;return a.altKey&&!(a.metaKey||a.ctrlKey)&&!a.shiftKey},OPENLAYERS);t("ol.events.condition.altShiftKeysOnly",Si,OPENLAYERS);
-t("ol.events.condition.always",Ac,OPENLAYERS);t("ol.events.condition.click",function(a){return a.type==Qh},OPENLAYERS);t("ol.events.condition.never",Bc,OPENLAYERS);t("ol.events.condition.pointerMove",Ui,OPENLAYERS);t("ol.events.condition.singleClick",Vi,OPENLAYERS);t("ol.events.condition.doubleClick",function(a){return a.type==Rh},OPENLAYERS);t("ol.events.condition.noModifierKeys",Wi,OPENLAYERS);
-t("ol.events.condition.platformModifierKeyOnly",function(a){a=a.originalEvent;return!a.altKey&&(Xg?a.metaKey:a.ctrlKey)&&!a.shiftKey},OPENLAYERS);t("ol.events.condition.shiftKeyOnly",Xi,OPENLAYERS);t("ol.events.condition.targetNotEditable",Yi,OPENLAYERS);t("ol.events.condition.mouseOnly",Zi,OPENLAYERS);t("ol.events.condition.primaryAction",$i,OPENLAYERS);gb.prototype.type=gb.prototype.type;gb.prototype.target=gb.prototype.target;gb.prototype.preventDefault=gb.prototype.preventDefault;
-gb.prototype.stopPropagation=gb.prototype.stopPropagation;t("ol.control.Attribution",qg,OPENLAYERS);t("ol.control.Attribution.render",rg,OPENLAYERS);qg.prototype.getCollapsible=qg.prototype.Ul;qg.prototype.setCollapsible=qg.prototype.Xl;qg.prototype.setCollapsed=qg.prototype.Wl;qg.prototype.getCollapsed=qg.prototype.Tl;t("ol.control.Control",Jf,OPENLAYERS);Jf.prototype.getMap=Jf.prototype.i;Jf.prototype.setMap=Jf.prototype.setMap;Jf.prototype.setTarget=Jf.prototype.c;t("ol.control.defaults",wg,OPENLAYERS);
-t("ol.control.FullScreen",Bg,OPENLAYERS);t("ol.control.MousePosition",Cg,OPENLAYERS);t("ol.control.MousePosition.render",Dg,OPENLAYERS);Cg.prototype.getCoordinateFormat=Cg.prototype.xg;Cg.prototype.getProjection=Cg.prototype.bh;Cg.prototype.setCoordinateFormat=Cg.prototype.$h;Cg.prototype.setProjection=Cg.prototype.dh;t("ol.control.OverviewMap",Sn,OPENLAYERS);t("ol.control.OverviewMap.render",Tn,OPENLAYERS);Sn.prototype.getCollapsible=Sn.prototype.$l;Sn.prototype.setCollapsible=Sn.prototype.cm;
-Sn.prototype.setCollapsed=Sn.prototype.bm;Sn.prototype.getCollapsed=Sn.prototype.Zl;Sn.prototype.getOverviewMap=Sn.prototype.kk;t("ol.control.Rotate",tg,OPENLAYERS);t("ol.control.Rotate.render",ug,OPENLAYERS);t("ol.control.ScaleLine",Xn,OPENLAYERS);Xn.prototype.getUnits=Xn.prototype.vb;t("ol.control.ScaleLine.render",Yn,OPENLAYERS);Xn.prototype.setUnits=Xn.prototype.N;t("ol.control.Zoom",vg,OPENLAYERS);t("ol.control.ZoomSlider",ao,OPENLAYERS);t("ol.control.ZoomSlider.render",co,OPENLAYERS);
-t("ol.control.ZoomToExtent",go,OPENLAYERS);t("ol.color.asArray",Fe,OPENLAYERS);t("ol.color.asString",He,OPENLAYERS);ve.prototype.type=ve.prototype.type;ve.prototype.target=ve.prototype.target;ve.prototype.preventDefault=ve.prototype.preventDefault;ve.prototype.stopPropagation=ve.prototype.stopPropagation;pb.prototype.changed=pb.prototype.u;pb.prototype.dispatchEvent=pb.prototype.b;pb.prototype.getRevision=pb.prototype.H;pb.prototype.on=pb.prototype.D;pb.prototype.once=pb.prototype.I;
-pb.prototype.un=pb.prototype.G;pb.prototype.unByKey=pb.prototype.J;we.prototype.get=we.prototype.get;we.prototype.getKeys=we.prototype.K;we.prototype.getProperties=we.prototype.L;we.prototype.set=we.prototype.set;we.prototype.setProperties=we.prototype.C;we.prototype.unset=we.prototype.P;we.prototype.changed=we.prototype.u;we.prototype.dispatchEvent=we.prototype.b;we.prototype.getRevision=we.prototype.H;we.prototype.on=we.prototype.D;we.prototype.once=we.prototype.I;we.prototype.un=we.prototype.G;
-we.prototype.unByKey=we.prototype.J;ho.prototype.get=ho.prototype.get;ho.prototype.getKeys=ho.prototype.K;ho.prototype.getProperties=ho.prototype.L;ho.prototype.set=ho.prototype.set;ho.prototype.setProperties=ho.prototype.C;ho.prototype.unset=ho.prototype.P;ho.prototype.changed=ho.prototype.u;ho.prototype.dispatchEvent=ho.prototype.b;ho.prototype.getRevision=ho.prototype.H;ho.prototype.on=ho.prototype.D;ho.prototype.once=ho.prototype.I;ho.prototype.un=ho.prototype.G;ho.prototype.unByKey=ho.prototype.J;
-zl.prototype.get=zl.prototype.get;zl.prototype.getKeys=zl.prototype.K;zl.prototype.getProperties=zl.prototype.L;zl.prototype.set=zl.prototype.set;zl.prototype.setProperties=zl.prototype.C;zl.prototype.unset=zl.prototype.P;zl.prototype.changed=zl.prototype.u;zl.prototype.dispatchEvent=zl.prototype.b;zl.prototype.getRevision=zl.prototype.H;zl.prototype.on=zl.prototype.D;zl.prototype.once=zl.prototype.I;zl.prototype.un=zl.prototype.G;zl.prototype.unByKey=zl.prototype.J;Nu.prototype.get=Nu.prototype.get;
-Nu.prototype.getKeys=Nu.prototype.K;Nu.prototype.getProperties=Nu.prototype.L;Nu.prototype.set=Nu.prototype.set;Nu.prototype.setProperties=Nu.prototype.C;Nu.prototype.unset=Nu.prototype.P;Nu.prototype.changed=Nu.prototype.u;Nu.prototype.dispatchEvent=Nu.prototype.b;Nu.prototype.getRevision=Nu.prototype.H;Nu.prototype.on=Nu.prototype.D;Nu.prototype.once=Nu.prototype.I;Nu.prototype.un=Nu.prototype.G;Nu.prototype.unByKey=Nu.prototype.J;Zu.prototype.getTileCoord=Zu.prototype.i;S.prototype.get=S.prototype.get;
-S.prototype.getKeys=S.prototype.K;S.prototype.getProperties=S.prototype.L;S.prototype.set=S.prototype.set;S.prototype.setProperties=S.prototype.C;S.prototype.unset=S.prototype.P;S.prototype.changed=S.prototype.u;S.prototype.dispatchEvent=S.prototype.b;S.prototype.getRevision=S.prototype.H;S.prototype.on=S.prototype.D;S.prototype.once=S.prototype.I;S.prototype.un=S.prototype.G;S.prototype.unByKey=S.prototype.J;If.prototype.type=If.prototype.type;If.prototype.target=If.prototype.target;
-If.prototype.preventDefault=If.prototype.preventDefault;If.prototype.stopPropagation=If.prototype.stopPropagation;Mh.prototype.map=Mh.prototype.map;Mh.prototype.frameState=Mh.prototype.frameState;Mh.prototype.type=Mh.prototype.type;Mh.prototype.target=Mh.prototype.target;Mh.prototype.preventDefault=Mh.prototype.preventDefault;Mh.prototype.stopPropagation=Mh.prototype.stopPropagation;Nh.prototype.originalEvent=Nh.prototype.originalEvent;Nh.prototype.pixel=Nh.prototype.pixel;
-Nh.prototype.coordinate=Nh.prototype.coordinate;Nh.prototype.dragging=Nh.prototype.dragging;Nh.prototype.preventDefault=Nh.prototype.preventDefault;Nh.prototype.stopPropagation=Nh.prototype.stopPropagation;Nh.prototype.map=Nh.prototype.map;Nh.prototype.frameState=Nh.prototype.frameState;Nh.prototype.type=Nh.prototype.type;Nh.prototype.target=Nh.prototype.target;ob.prototype.type=ob.prototype.type;ob.prototype.target=ob.prototype.target;ob.prototype.preventDefault=ob.prototype.preventDefault;
-ob.prototype.stopPropagation=ob.prototype.stopPropagation;On.prototype.get=On.prototype.get;On.prototype.getKeys=On.prototype.K;On.prototype.getProperties=On.prototype.L;On.prototype.set=On.prototype.set;On.prototype.setProperties=On.prototype.C;On.prototype.unset=On.prototype.P;On.prototype.changed=On.prototype.u;On.prototype.dispatchEvent=On.prototype.b;On.prototype.getRevision=On.prototype.H;On.prototype.on=On.prototype.D;On.prototype.once=On.prototype.I;On.prototype.un=On.prototype.G;
-On.prototype.unByKey=On.prototype.J;Bl.prototype.getTileCoord=Bl.prototype.i;be.prototype.get=be.prototype.get;be.prototype.getKeys=be.prototype.K;be.prototype.getProperties=be.prototype.L;be.prototype.set=be.prototype.set;be.prototype.setProperties=be.prototype.C;be.prototype.unset=be.prototype.P;be.prototype.changed=be.prototype.u;be.prototype.dispatchEvent=be.prototype.b;be.prototype.getRevision=be.prototype.H;be.prototype.on=be.prototype.D;be.prototype.once=be.prototype.I;be.prototype.un=be.prototype.G;
-be.prototype.unByKey=be.prototype.J;ax.prototype.getMaxZoom=ax.prototype.Dg;ax.prototype.getMinZoom=ax.prototype.Eg;ax.prototype.getOrigin=ax.prototype.Fa;ax.prototype.getResolution=ax.prototype.$;ax.prototype.getResolutions=ax.prototype.Fh;ax.prototype.getTileCoordExtent=ax.prototype.Ba;ax.prototype.getTileCoordForCoordAndResolution=ax.prototype.Td;ax.prototype.getTileCoordForCoordAndZ=ax.prototype.kd;ax.prototype.getTileSize=ax.prototype.Ha;ik.prototype.getOpacity=ik.prototype.le;
-ik.prototype.getRotateWithView=ik.prototype.Rd;ik.prototype.getRotation=ik.prototype.me;ik.prototype.getScale=ik.prototype.ne;ik.prototype.getSnapToPixel=ik.prototype.Sd;ik.prototype.setOpacity=ik.prototype.oe;ik.prototype.setRotation=ik.prototype.pe;ik.prototype.setScale=ik.prototype.qe;ui.prototype.getOpacity=ui.prototype.le;ui.prototype.getRotateWithView=ui.prototype.Rd;ui.prototype.getRotation=ui.prototype.me;ui.prototype.getScale=ui.prototype.ne;ui.prototype.getSnapToPixel=ui.prototype.Sd;
-ui.prototype.setOpacity=ui.prototype.oe;ui.prototype.setRotation=ui.prototype.pe;ui.prototype.setScale=ui.prototype.qe;jx.prototype.getOpacity=jx.prototype.le;jx.prototype.getRotateWithView=jx.prototype.Rd;jx.prototype.getRotation=jx.prototype.me;jx.prototype.getScale=jx.prototype.ne;jx.prototype.getSnapToPixel=jx.prototype.Sd;jx.prototype.setOpacity=jx.prototype.oe;jx.prototype.setRotation=jx.prototype.pe;jx.prototype.setScale=jx.prototype.qe;Vf.prototype.get=Vf.prototype.get;
-Vf.prototype.getKeys=Vf.prototype.K;Vf.prototype.getProperties=Vf.prototype.L;Vf.prototype.set=Vf.prototype.set;Vf.prototype.setProperties=Vf.prototype.C;Vf.prototype.unset=Vf.prototype.P;Vf.prototype.changed=Vf.prototype.u;Vf.prototype.dispatchEvent=Vf.prototype.b;Vf.prototype.getRevision=Vf.prototype.H;Vf.prototype.on=Vf.prototype.D;Vf.prototype.once=Vf.prototype.I;Vf.prototype.un=Vf.prototype.G;Vf.prototype.unByKey=Vf.prototype.J;lg.prototype.getAttributions=lg.prototype.ra;
-lg.prototype.getLogo=lg.prototype.qa;lg.prototype.getProjection=lg.prototype.sa;lg.prototype.getState=lg.prototype.V;lg.prototype.refresh=lg.prototype.pa;lg.prototype.setAttributions=lg.prototype.ka;lg.prototype.get=lg.prototype.get;lg.prototype.getKeys=lg.prototype.K;lg.prototype.getProperties=lg.prototype.L;lg.prototype.set=lg.prototype.set;lg.prototype.setProperties=lg.prototype.C;lg.prototype.unset=lg.prototype.P;lg.prototype.changed=lg.prototype.u;lg.prototype.dispatchEvent=lg.prototype.b;
-lg.prototype.getRevision=lg.prototype.H;lg.prototype.on=lg.prototype.D;lg.prototype.once=lg.prototype.I;lg.prototype.un=lg.prototype.G;lg.prototype.unByKey=lg.prototype.J;zm.prototype.getTileGrid=zm.prototype.Ga;zm.prototype.refresh=zm.prototype.pa;zm.prototype.getAttributions=zm.prototype.ra;zm.prototype.getLogo=zm.prototype.qa;zm.prototype.getProjection=zm.prototype.sa;zm.prototype.getState=zm.prototype.V;zm.prototype.setAttributions=zm.prototype.ka;zm.prototype.get=zm.prototype.get;
-zm.prototype.getKeys=zm.prototype.K;zm.prototype.getProperties=zm.prototype.L;zm.prototype.set=zm.prototype.set;zm.prototype.setProperties=zm.prototype.C;zm.prototype.unset=zm.prototype.P;zm.prototype.changed=zm.prototype.u;zm.prototype.dispatchEvent=zm.prototype.b;zm.prototype.getRevision=zm.prototype.H;zm.prototype.on=zm.prototype.D;zm.prototype.once=zm.prototype.I;zm.prototype.un=zm.prototype.G;zm.prototype.unByKey=zm.prototype.J;X.prototype.getTileLoadFunction=X.prototype.Xa;
-X.prototype.getTileUrlFunction=X.prototype.Ya;X.prototype.getUrls=X.prototype.Za;X.prototype.setTileLoadFunction=X.prototype.cb;X.prototype.setTileUrlFunction=X.prototype.La;X.prototype.setUrl=X.prototype.Na;X.prototype.setUrls=X.prototype.Ua;X.prototype.getTileGrid=X.prototype.Ga;X.prototype.refresh=X.prototype.pa;X.prototype.getAttributions=X.prototype.ra;X.prototype.getLogo=X.prototype.qa;X.prototype.getProjection=X.prototype.sa;X.prototype.getState=X.prototype.V;X.prototype.setAttributions=X.prototype.ka;
-X.prototype.get=X.prototype.get;X.prototype.getKeys=X.prototype.K;X.prototype.getProperties=X.prototype.L;X.prototype.set=X.prototype.set;X.prototype.setProperties=X.prototype.C;X.prototype.unset=X.prototype.P;X.prototype.changed=X.prototype.u;X.prototype.dispatchEvent=X.prototype.b;X.prototype.getRevision=X.prototype.H;X.prototype.on=X.prototype.D;X.prototype.once=X.prototype.I;X.prototype.un=X.prototype.G;X.prototype.unByKey=X.prototype.J;iw.prototype.setRenderReprojectionEdges=iw.prototype.lb;
-iw.prototype.setTileGridForProjection=iw.prototype.mb;iw.prototype.getTileLoadFunction=iw.prototype.Xa;iw.prototype.getTileUrlFunction=iw.prototype.Ya;iw.prototype.getUrls=iw.prototype.Za;iw.prototype.setTileLoadFunction=iw.prototype.cb;iw.prototype.setTileUrlFunction=iw.prototype.La;iw.prototype.setUrl=iw.prototype.Na;iw.prototype.setUrls=iw.prototype.Ua;iw.prototype.getTileGrid=iw.prototype.Ga;iw.prototype.refresh=iw.prototype.pa;iw.prototype.getAttributions=iw.prototype.ra;
-iw.prototype.getLogo=iw.prototype.qa;iw.prototype.getProjection=iw.prototype.sa;iw.prototype.getState=iw.prototype.V;iw.prototype.setAttributions=iw.prototype.ka;iw.prototype.get=iw.prototype.get;iw.prototype.getKeys=iw.prototype.K;iw.prototype.getProperties=iw.prototype.L;iw.prototype.set=iw.prototype.set;iw.prototype.setProperties=iw.prototype.C;iw.prototype.unset=iw.prototype.P;iw.prototype.changed=iw.prototype.u;iw.prototype.dispatchEvent=iw.prototype.b;iw.prototype.getRevision=iw.prototype.H;
-iw.prototype.on=iw.prototype.D;iw.prototype.once=iw.prototype.I;iw.prototype.un=iw.prototype.G;iw.prototype.unByKey=iw.prototype.J;kw.prototype.setRenderReprojectionEdges=kw.prototype.lb;kw.prototype.setTileGridForProjection=kw.prototype.mb;kw.prototype.getTileLoadFunction=kw.prototype.Xa;kw.prototype.getTileUrlFunction=kw.prototype.Ya;kw.prototype.getUrls=kw.prototype.Za;kw.prototype.setTileLoadFunction=kw.prototype.cb;kw.prototype.setTileUrlFunction=kw.prototype.La;kw.prototype.setUrl=kw.prototype.Na;
-kw.prototype.setUrls=kw.prototype.Ua;kw.prototype.getTileGrid=kw.prototype.Ga;kw.prototype.refresh=kw.prototype.pa;kw.prototype.getAttributions=kw.prototype.ra;kw.prototype.getLogo=kw.prototype.qa;kw.prototype.getProjection=kw.prototype.sa;kw.prototype.getState=kw.prototype.V;kw.prototype.setAttributions=kw.prototype.ka;kw.prototype.get=kw.prototype.get;kw.prototype.getKeys=kw.prototype.K;kw.prototype.getProperties=kw.prototype.L;kw.prototype.set=kw.prototype.set;kw.prototype.setProperties=kw.prototype.C;
-kw.prototype.unset=kw.prototype.P;kw.prototype.changed=kw.prototype.u;kw.prototype.dispatchEvent=kw.prototype.b;kw.prototype.getRevision=kw.prototype.H;kw.prototype.on=kw.prototype.D;kw.prototype.once=kw.prototype.I;kw.prototype.un=kw.prototype.G;kw.prototype.unByKey=kw.prototype.J;lw.prototype.setRenderReprojectionEdges=lw.prototype.lb;lw.prototype.setTileGridForProjection=lw.prototype.mb;lw.prototype.getTileLoadFunction=lw.prototype.Xa;lw.prototype.getTileUrlFunction=lw.prototype.Ya;
-lw.prototype.getUrls=lw.prototype.Za;lw.prototype.setTileLoadFunction=lw.prototype.cb;lw.prototype.setTileUrlFunction=lw.prototype.La;lw.prototype.setUrl=lw.prototype.Na;lw.prototype.setUrls=lw.prototype.Ua;lw.prototype.getTileGrid=lw.prototype.Ga;lw.prototype.refresh=lw.prototype.pa;lw.prototype.getAttributions=lw.prototype.ra;lw.prototype.getLogo=lw.prototype.qa;lw.prototype.getProjection=lw.prototype.sa;lw.prototype.getState=lw.prototype.V;lw.prototype.setAttributions=lw.prototype.ka;
-lw.prototype.get=lw.prototype.get;lw.prototype.getKeys=lw.prototype.K;lw.prototype.getProperties=lw.prototype.L;lw.prototype.set=lw.prototype.set;lw.prototype.setProperties=lw.prototype.C;lw.prototype.unset=lw.prototype.P;lw.prototype.changed=lw.prototype.u;lw.prototype.dispatchEvent=lw.prototype.b;lw.prototype.getRevision=lw.prototype.H;lw.prototype.on=lw.prototype.D;lw.prototype.once=lw.prototype.I;lw.prototype.un=lw.prototype.G;lw.prototype.unByKey=lw.prototype.J;Q.prototype.getAttributions=Q.prototype.ra;
-Q.prototype.getLogo=Q.prototype.qa;Q.prototype.getProjection=Q.prototype.sa;Q.prototype.getState=Q.prototype.V;Q.prototype.refresh=Q.prototype.pa;Q.prototype.setAttributions=Q.prototype.ka;Q.prototype.get=Q.prototype.get;Q.prototype.getKeys=Q.prototype.K;Q.prototype.getProperties=Q.prototype.L;Q.prototype.set=Q.prototype.set;Q.prototype.setProperties=Q.prototype.C;Q.prototype.unset=Q.prototype.P;Q.prototype.changed=Q.prototype.u;Q.prototype.dispatchEvent=Q.prototype.b;Q.prototype.getRevision=Q.prototype.H;
-Q.prototype.on=Q.prototype.D;Q.prototype.once=Q.prototype.I;Q.prototype.un=Q.prototype.G;Q.prototype.unByKey=Q.prototype.J;Y.prototype.addFeature=Y.prototype.qb;Y.prototype.addFeatures=Y.prototype.Ec;Y.prototype.clear=Y.prototype.clear;Y.prototype.forEachFeature=Y.prototype.sg;Y.prototype.forEachFeatureInExtent=Y.prototype.tb;Y.prototype.forEachFeatureIntersectingExtent=Y.prototype.tg;Y.prototype.getFeaturesCollection=Y.prototype.Ag;Y.prototype.getFeatures=Y.prototype.je;
-Y.prototype.getFeaturesAtCoordinate=Y.prototype.zg;Y.prototype.getFeaturesInExtent=Y.prototype.af;Y.prototype.getClosestFeatureToCoordinate=Y.prototype.vg;Y.prototype.getExtent=Y.prototype.O;Y.prototype.getFeatureById=Y.prototype.yg;Y.prototype.getFormat=Y.prototype.xh;Y.prototype.getUrl=Y.prototype.yh;Y.prototype.removeFeature=Y.prototype.kb;Y.prototype.getAttributions=Y.prototype.ra;Y.prototype.getLogo=Y.prototype.qa;Y.prototype.getProjection=Y.prototype.sa;Y.prototype.getState=Y.prototype.V;
-Y.prototype.refresh=Y.prototype.pa;Y.prototype.setAttributions=Y.prototype.ka;Y.prototype.get=Y.prototype.get;Y.prototype.getKeys=Y.prototype.K;Y.prototype.getProperties=Y.prototype.L;Y.prototype.set=Y.prototype.set;Y.prototype.setProperties=Y.prototype.C;Y.prototype.unset=Y.prototype.P;Y.prototype.changed=Y.prototype.u;Y.prototype.dispatchEvent=Y.prototype.b;Y.prototype.getRevision=Y.prototype.H;Y.prototype.on=Y.prototype.D;Y.prototype.once=Y.prototype.I;Y.prototype.un=Y.prototype.G;
-Y.prototype.unByKey=Y.prototype.J;rl.prototype.getAttributions=rl.prototype.ra;rl.prototype.getLogo=rl.prototype.qa;rl.prototype.getProjection=rl.prototype.sa;rl.prototype.getState=rl.prototype.V;rl.prototype.refresh=rl.prototype.pa;rl.prototype.setAttributions=rl.prototype.ka;rl.prototype.get=rl.prototype.get;rl.prototype.getKeys=rl.prototype.K;rl.prototype.getProperties=rl.prototype.L;rl.prototype.set=rl.prototype.set;rl.prototype.setProperties=rl.prototype.C;rl.prototype.unset=rl.prototype.P;
-rl.prototype.changed=rl.prototype.u;rl.prototype.dispatchEvent=rl.prototype.b;rl.prototype.getRevision=rl.prototype.H;rl.prototype.on=rl.prototype.D;rl.prototype.once=rl.prototype.I;rl.prototype.un=rl.prototype.G;rl.prototype.unByKey=rl.prototype.J;qw.prototype.getAttributions=qw.prototype.ra;qw.prototype.getLogo=qw.prototype.qa;qw.prototype.getProjection=qw.prototype.sa;qw.prototype.getState=qw.prototype.V;qw.prototype.refresh=qw.prototype.pa;qw.prototype.setAttributions=qw.prototype.ka;
-qw.prototype.get=qw.prototype.get;qw.prototype.getKeys=qw.prototype.K;qw.prototype.getProperties=qw.prototype.L;qw.prototype.set=qw.prototype.set;qw.prototype.setProperties=qw.prototype.C;qw.prototype.unset=qw.prototype.P;qw.prototype.changed=qw.prototype.u;qw.prototype.dispatchEvent=qw.prototype.b;qw.prototype.getRevision=qw.prototype.H;qw.prototype.on=qw.prototype.D;qw.prototype.once=qw.prototype.I;qw.prototype.un=qw.prototype.G;qw.prototype.unByKey=qw.prototype.J;yl.prototype.getAttributions=yl.prototype.ra;
-yl.prototype.getLogo=yl.prototype.qa;yl.prototype.getProjection=yl.prototype.sa;yl.prototype.getState=yl.prototype.V;yl.prototype.refresh=yl.prototype.pa;yl.prototype.setAttributions=yl.prototype.ka;yl.prototype.get=yl.prototype.get;yl.prototype.getKeys=yl.prototype.K;yl.prototype.getProperties=yl.prototype.L;yl.prototype.set=yl.prototype.set;yl.prototype.setProperties=yl.prototype.C;yl.prototype.unset=yl.prototype.P;yl.prototype.changed=yl.prototype.u;yl.prototype.dispatchEvent=yl.prototype.b;
-yl.prototype.getRevision=yl.prototype.H;yl.prototype.on=yl.prototype.D;yl.prototype.once=yl.prototype.I;yl.prototype.un=yl.prototype.G;yl.prototype.unByKey=yl.prototype.J;rw.prototype.getAttributions=rw.prototype.ra;rw.prototype.getLogo=rw.prototype.qa;rw.prototype.getProjection=rw.prototype.sa;rw.prototype.getState=rw.prototype.V;rw.prototype.refresh=rw.prototype.pa;rw.prototype.setAttributions=rw.prototype.ka;rw.prototype.get=rw.prototype.get;rw.prototype.getKeys=rw.prototype.K;
-rw.prototype.getProperties=rw.prototype.L;rw.prototype.set=rw.prototype.set;rw.prototype.setProperties=rw.prototype.C;rw.prototype.unset=rw.prototype.P;rw.prototype.changed=rw.prototype.u;rw.prototype.dispatchEvent=rw.prototype.b;rw.prototype.getRevision=rw.prototype.H;rw.prototype.on=rw.prototype.D;rw.prototype.once=rw.prototype.I;rw.prototype.un=rw.prototype.G;rw.prototype.unByKey=rw.prototype.J;tl.prototype.type=tl.prototype.type;tl.prototype.target=tl.prototype.target;
-tl.prototype.preventDefault=tl.prototype.preventDefault;tl.prototype.stopPropagation=tl.prototype.stopPropagation;sw.prototype.getAttributions=sw.prototype.ra;sw.prototype.getLogo=sw.prototype.qa;sw.prototype.getProjection=sw.prototype.sa;sw.prototype.getState=sw.prototype.V;sw.prototype.refresh=sw.prototype.pa;sw.prototype.setAttributions=sw.prototype.ka;sw.prototype.get=sw.prototype.get;sw.prototype.getKeys=sw.prototype.K;sw.prototype.getProperties=sw.prototype.L;sw.prototype.set=sw.prototype.set;
-sw.prototype.setProperties=sw.prototype.C;sw.prototype.unset=sw.prototype.P;sw.prototype.changed=sw.prototype.u;sw.prototype.dispatchEvent=sw.prototype.b;sw.prototype.getRevision=sw.prototype.H;sw.prototype.on=sw.prototype.D;sw.prototype.once=sw.prototype.I;sw.prototype.un=sw.prototype.G;sw.prototype.unByKey=sw.prototype.J;om.prototype.getAttributions=om.prototype.ra;om.prototype.getLogo=om.prototype.qa;om.prototype.getProjection=om.prototype.sa;om.prototype.getState=om.prototype.V;
-om.prototype.refresh=om.prototype.pa;om.prototype.setAttributions=om.prototype.ka;om.prototype.get=om.prototype.get;om.prototype.getKeys=om.prototype.K;om.prototype.getProperties=om.prototype.L;om.prototype.set=om.prototype.set;om.prototype.setProperties=om.prototype.C;om.prototype.unset=om.prototype.P;om.prototype.changed=om.prototype.u;om.prototype.dispatchEvent=om.prototype.b;om.prototype.getRevision=om.prototype.H;om.prototype.on=om.prototype.D;om.prototype.once=om.prototype.I;
-om.prototype.un=om.prototype.G;om.prototype.unByKey=om.prototype.J;tw.prototype.getAttributions=tw.prototype.ra;tw.prototype.getLogo=tw.prototype.qa;tw.prototype.getProjection=tw.prototype.sa;tw.prototype.getState=tw.prototype.V;tw.prototype.refresh=tw.prototype.pa;tw.prototype.setAttributions=tw.prototype.ka;tw.prototype.get=tw.prototype.get;tw.prototype.getKeys=tw.prototype.K;tw.prototype.getProperties=tw.prototype.L;tw.prototype.set=tw.prototype.set;tw.prototype.setProperties=tw.prototype.C;
-tw.prototype.unset=tw.prototype.P;tw.prototype.changed=tw.prototype.u;tw.prototype.dispatchEvent=tw.prototype.b;tw.prototype.getRevision=tw.prototype.H;tw.prototype.on=tw.prototype.D;tw.prototype.once=tw.prototype.I;tw.prototype.un=tw.prototype.G;tw.prototype.unByKey=tw.prototype.J;zw.prototype.setRenderReprojectionEdges=zw.prototype.lb;zw.prototype.setTileGridForProjection=zw.prototype.mb;zw.prototype.getTileLoadFunction=zw.prototype.Xa;zw.prototype.getTileUrlFunction=zw.prototype.Ya;
-zw.prototype.getUrls=zw.prototype.Za;zw.prototype.setTileLoadFunction=zw.prototype.cb;zw.prototype.setTileUrlFunction=zw.prototype.La;zw.prototype.setUrl=zw.prototype.Na;zw.prototype.setUrls=zw.prototype.Ua;zw.prototype.getTileGrid=zw.prototype.Ga;zw.prototype.refresh=zw.prototype.pa;zw.prototype.getAttributions=zw.prototype.ra;zw.prototype.getLogo=zw.prototype.qa;zw.prototype.getProjection=zw.prototype.sa;zw.prototype.getState=zw.prototype.V;zw.prototype.setAttributions=zw.prototype.ka;
-zw.prototype.get=zw.prototype.get;zw.prototype.getKeys=zw.prototype.K;zw.prototype.getProperties=zw.prototype.L;zw.prototype.set=zw.prototype.set;zw.prototype.setProperties=zw.prototype.C;zw.prototype.unset=zw.prototype.P;zw.prototype.changed=zw.prototype.u;zw.prototype.dispatchEvent=zw.prototype.b;zw.prototype.getRevision=zw.prototype.H;zw.prototype.on=zw.prototype.D;zw.prototype.once=zw.prototype.I;zw.prototype.un=zw.prototype.G;zw.prototype.unByKey=zw.prototype.J;
-xw.prototype.setRenderReprojectionEdges=xw.prototype.lb;xw.prototype.setTileGridForProjection=xw.prototype.mb;xw.prototype.getTileLoadFunction=xw.prototype.Xa;xw.prototype.getTileUrlFunction=xw.prototype.Ya;xw.prototype.getUrls=xw.prototype.Za;xw.prototype.setTileLoadFunction=xw.prototype.cb;xw.prototype.setTileUrlFunction=xw.prototype.La;xw.prototype.setUrl=xw.prototype.Na;xw.prototype.setUrls=xw.prototype.Ua;xw.prototype.getTileGrid=xw.prototype.Ga;xw.prototype.refresh=xw.prototype.pa;
-xw.prototype.getAttributions=xw.prototype.ra;xw.prototype.getLogo=xw.prototype.qa;xw.prototype.getProjection=xw.prototype.sa;xw.prototype.getState=xw.prototype.V;xw.prototype.setAttributions=xw.prototype.ka;xw.prototype.get=xw.prototype.get;xw.prototype.getKeys=xw.prototype.K;xw.prototype.getProperties=xw.prototype.L;xw.prototype.set=xw.prototype.set;xw.prototype.setProperties=xw.prototype.C;xw.prototype.unset=xw.prototype.P;xw.prototype.changed=xw.prototype.u;xw.prototype.dispatchEvent=xw.prototype.b;
-xw.prototype.getRevision=xw.prototype.H;xw.prototype.on=xw.prototype.D;xw.prototype.once=xw.prototype.I;xw.prototype.un=xw.prototype.G;xw.prototype.unByKey=xw.prototype.J;Cw.prototype.getAttributions=Cw.prototype.ra;Cw.prototype.getLogo=Cw.prototype.qa;Cw.prototype.getProjection=Cw.prototype.sa;Cw.prototype.getState=Cw.prototype.V;Cw.prototype.refresh=Cw.prototype.pa;Cw.prototype.setAttributions=Cw.prototype.ka;Cw.prototype.get=Cw.prototype.get;Cw.prototype.getKeys=Cw.prototype.K;
-Cw.prototype.getProperties=Cw.prototype.L;Cw.prototype.set=Cw.prototype.set;Cw.prototype.setProperties=Cw.prototype.C;Cw.prototype.unset=Cw.prototype.P;Cw.prototype.changed=Cw.prototype.u;Cw.prototype.dispatchEvent=Cw.prototype.b;Cw.prototype.getRevision=Cw.prototype.H;Cw.prototype.on=Cw.prototype.D;Cw.prototype.once=Cw.prototype.I;Cw.prototype.un=Cw.prototype.G;Cw.prototype.unByKey=Cw.prototype.J;Hw.prototype.type=Hw.prototype.type;Hw.prototype.target=Hw.prototype.target;
-Hw.prototype.preventDefault=Hw.prototype.preventDefault;Hw.prototype.stopPropagation=Hw.prototype.stopPropagation;Mw.prototype.setRenderReprojectionEdges=Mw.prototype.lb;Mw.prototype.setTileGridForProjection=Mw.prototype.mb;Mw.prototype.getTileLoadFunction=Mw.prototype.Xa;Mw.prototype.getTileUrlFunction=Mw.prototype.Ya;Mw.prototype.getUrls=Mw.prototype.Za;Mw.prototype.setTileLoadFunction=Mw.prototype.cb;Mw.prototype.setTileUrlFunction=Mw.prototype.La;Mw.prototype.setUrl=Mw.prototype.Na;
-Mw.prototype.setUrls=Mw.prototype.Ua;Mw.prototype.getTileGrid=Mw.prototype.Ga;Mw.prototype.refresh=Mw.prototype.pa;Mw.prototype.getAttributions=Mw.prototype.ra;Mw.prototype.getLogo=Mw.prototype.qa;Mw.prototype.getProjection=Mw.prototype.sa;Mw.prototype.getState=Mw.prototype.V;Mw.prototype.setAttributions=Mw.prototype.ka;Mw.prototype.get=Mw.prototype.get;Mw.prototype.getKeys=Mw.prototype.K;Mw.prototype.getProperties=Mw.prototype.L;Mw.prototype.set=Mw.prototype.set;Mw.prototype.setProperties=Mw.prototype.C;
-Mw.prototype.unset=Mw.prototype.P;Mw.prototype.changed=Mw.prototype.u;Mw.prototype.dispatchEvent=Mw.prototype.b;Mw.prototype.getRevision=Mw.prototype.H;Mw.prototype.on=Mw.prototype.D;Mw.prototype.once=Mw.prototype.I;Mw.prototype.un=Mw.prototype.G;Mw.prototype.unByKey=Mw.prototype.J;Ow.prototype.setRenderReprojectionEdges=Ow.prototype.lb;Ow.prototype.setTileGridForProjection=Ow.prototype.mb;Ow.prototype.getTileLoadFunction=Ow.prototype.Xa;Ow.prototype.getTileUrlFunction=Ow.prototype.Ya;
-Ow.prototype.getUrls=Ow.prototype.Za;Ow.prototype.setTileLoadFunction=Ow.prototype.cb;Ow.prototype.setTileUrlFunction=Ow.prototype.La;Ow.prototype.setUrl=Ow.prototype.Na;Ow.prototype.setUrls=Ow.prototype.Ua;Ow.prototype.getTileGrid=Ow.prototype.Ga;Ow.prototype.refresh=Ow.prototype.pa;Ow.prototype.getAttributions=Ow.prototype.ra;Ow.prototype.getLogo=Ow.prototype.qa;Ow.prototype.getProjection=Ow.prototype.sa;Ow.prototype.getState=Ow.prototype.V;Ow.prototype.setAttributions=Ow.prototype.ka;
-Ow.prototype.get=Ow.prototype.get;Ow.prototype.getKeys=Ow.prototype.K;Ow.prototype.getProperties=Ow.prototype.L;Ow.prototype.set=Ow.prototype.set;Ow.prototype.setProperties=Ow.prototype.C;Ow.prototype.unset=Ow.prototype.P;Ow.prototype.changed=Ow.prototype.u;Ow.prototype.dispatchEvent=Ow.prototype.b;Ow.prototype.getRevision=Ow.prototype.H;Ow.prototype.on=Ow.prototype.D;Ow.prototype.once=Ow.prototype.I;Ow.prototype.un=Ow.prototype.G;Ow.prototype.unByKey=Ow.prototype.J;Qw.prototype.getTileGrid=Qw.prototype.Ga;
-Qw.prototype.refresh=Qw.prototype.pa;Qw.prototype.getAttributions=Qw.prototype.ra;Qw.prototype.getLogo=Qw.prototype.qa;Qw.prototype.getProjection=Qw.prototype.sa;Qw.prototype.getState=Qw.prototype.V;Qw.prototype.setAttributions=Qw.prototype.ka;Qw.prototype.get=Qw.prototype.get;Qw.prototype.getKeys=Qw.prototype.K;Qw.prototype.getProperties=Qw.prototype.L;Qw.prototype.set=Qw.prototype.set;Qw.prototype.setProperties=Qw.prototype.C;Qw.prototype.unset=Qw.prototype.P;Qw.prototype.changed=Qw.prototype.u;
-Qw.prototype.dispatchEvent=Qw.prototype.b;Qw.prototype.getRevision=Qw.prototype.H;Qw.prototype.on=Qw.prototype.D;Qw.prototype.once=Qw.prototype.I;Qw.prototype.un=Qw.prototype.G;Qw.prototype.unByKey=Qw.prototype.J;Rw.prototype.setRenderReprojectionEdges=Rw.prototype.lb;Rw.prototype.setTileGridForProjection=Rw.prototype.mb;Rw.prototype.getTileLoadFunction=Rw.prototype.Xa;Rw.prototype.getTileUrlFunction=Rw.prototype.Ya;Rw.prototype.getUrls=Rw.prototype.Za;Rw.prototype.setTileLoadFunction=Rw.prototype.cb;
-Rw.prototype.setTileUrlFunction=Rw.prototype.La;Rw.prototype.setUrl=Rw.prototype.Na;Rw.prototype.setUrls=Rw.prototype.Ua;Rw.prototype.getTileGrid=Rw.prototype.Ga;Rw.prototype.refresh=Rw.prototype.pa;Rw.prototype.getAttributions=Rw.prototype.ra;Rw.prototype.getLogo=Rw.prototype.qa;Rw.prototype.getProjection=Rw.prototype.sa;Rw.prototype.getState=Rw.prototype.V;Rw.prototype.setAttributions=Rw.prototype.ka;Rw.prototype.get=Rw.prototype.get;Rw.prototype.getKeys=Rw.prototype.K;
-Rw.prototype.getProperties=Rw.prototype.L;Rw.prototype.set=Rw.prototype.set;Rw.prototype.setProperties=Rw.prototype.C;Rw.prototype.unset=Rw.prototype.P;Rw.prototype.changed=Rw.prototype.u;Rw.prototype.dispatchEvent=Rw.prototype.b;Rw.prototype.getRevision=Rw.prototype.H;Rw.prototype.on=Rw.prototype.D;Rw.prototype.once=Rw.prototype.I;Rw.prototype.un=Rw.prototype.G;Rw.prototype.unByKey=Rw.prototype.J;pg.prototype.type=pg.prototype.type;pg.prototype.target=pg.prototype.target;
-pg.prototype.preventDefault=pg.prototype.preventDefault;pg.prototype.stopPropagation=pg.prototype.stopPropagation;Sw.prototype.getTileGrid=Sw.prototype.Ga;Sw.prototype.refresh=Sw.prototype.pa;Sw.prototype.getAttributions=Sw.prototype.ra;Sw.prototype.getLogo=Sw.prototype.qa;Sw.prototype.getProjection=Sw.prototype.sa;Sw.prototype.getState=Sw.prototype.V;Sw.prototype.setAttributions=Sw.prototype.ka;Sw.prototype.get=Sw.prototype.get;Sw.prototype.getKeys=Sw.prototype.K;Sw.prototype.getProperties=Sw.prototype.L;
-Sw.prototype.set=Sw.prototype.set;Sw.prototype.setProperties=Sw.prototype.C;Sw.prototype.unset=Sw.prototype.P;Sw.prototype.changed=Sw.prototype.u;Sw.prototype.dispatchEvent=Sw.prototype.b;Sw.prototype.getRevision=Sw.prototype.H;Sw.prototype.on=Sw.prototype.D;Sw.prototype.once=Sw.prototype.I;Sw.prototype.un=Sw.prototype.G;Sw.prototype.unByKey=Sw.prototype.J;Ww.prototype.setRenderReprojectionEdges=Ww.prototype.lb;Ww.prototype.setTileGridForProjection=Ww.prototype.mb;
-Ww.prototype.getTileLoadFunction=Ww.prototype.Xa;Ww.prototype.getTileUrlFunction=Ww.prototype.Ya;Ww.prototype.getUrls=Ww.prototype.Za;Ww.prototype.setTileLoadFunction=Ww.prototype.cb;Ww.prototype.setTileUrlFunction=Ww.prototype.La;Ww.prototype.setUrl=Ww.prototype.Na;Ww.prototype.setUrls=Ww.prototype.Ua;Ww.prototype.getTileGrid=Ww.prototype.Ga;Ww.prototype.refresh=Ww.prototype.pa;Ww.prototype.getAttributions=Ww.prototype.ra;Ww.prototype.getLogo=Ww.prototype.qa;Ww.prototype.getProjection=Ww.prototype.sa;
-Ww.prototype.getState=Ww.prototype.V;Ww.prototype.setAttributions=Ww.prototype.ka;Ww.prototype.get=Ww.prototype.get;Ww.prototype.getKeys=Ww.prototype.K;Ww.prototype.getProperties=Ww.prototype.L;Ww.prototype.set=Ww.prototype.set;Ww.prototype.setProperties=Ww.prototype.C;Ww.prototype.unset=Ww.prototype.P;Ww.prototype.changed=Ww.prototype.u;Ww.prototype.dispatchEvent=Ww.prototype.b;Ww.prototype.getRevision=Ww.prototype.H;Ww.prototype.on=Ww.prototype.D;Ww.prototype.once=Ww.prototype.I;
-Ww.prototype.un=Ww.prototype.G;Ww.prototype.unByKey=Ww.prototype.J;lm.prototype.type=lm.prototype.type;lm.prototype.target=lm.prototype.target;lm.prototype.preventDefault=lm.prototype.preventDefault;lm.prototype.stopPropagation=lm.prototype.stopPropagation;Am.prototype.getTileLoadFunction=Am.prototype.Xa;Am.prototype.getTileUrlFunction=Am.prototype.Ya;Am.prototype.getUrls=Am.prototype.Za;Am.prototype.setTileLoadFunction=Am.prototype.cb;Am.prototype.setTileUrlFunction=Am.prototype.La;
-Am.prototype.setUrl=Am.prototype.Na;Am.prototype.setUrls=Am.prototype.Ua;Am.prototype.getTileGrid=Am.prototype.Ga;Am.prototype.refresh=Am.prototype.pa;Am.prototype.getAttributions=Am.prototype.ra;Am.prototype.getLogo=Am.prototype.qa;Am.prototype.getProjection=Am.prototype.sa;Am.prototype.getState=Am.prototype.V;Am.prototype.setAttributions=Am.prototype.ka;Am.prototype.get=Am.prototype.get;Am.prototype.getKeys=Am.prototype.K;Am.prototype.getProperties=Am.prototype.L;Am.prototype.set=Am.prototype.set;
-Am.prototype.setProperties=Am.prototype.C;Am.prototype.unset=Am.prototype.P;Am.prototype.changed=Am.prototype.u;Am.prototype.dispatchEvent=Am.prototype.b;Am.prototype.getRevision=Am.prototype.H;Am.prototype.on=Am.prototype.D;Am.prototype.once=Am.prototype.I;Am.prototype.un=Am.prototype.G;Am.prototype.unByKey=Am.prototype.J;Z.prototype.setRenderReprojectionEdges=Z.prototype.lb;Z.prototype.setTileGridForProjection=Z.prototype.mb;Z.prototype.getTileLoadFunction=Z.prototype.Xa;
-Z.prototype.getTileUrlFunction=Z.prototype.Ya;Z.prototype.getUrls=Z.prototype.Za;Z.prototype.setTileLoadFunction=Z.prototype.cb;Z.prototype.setTileUrlFunction=Z.prototype.La;Z.prototype.setUrl=Z.prototype.Na;Z.prototype.setUrls=Z.prototype.Ua;Z.prototype.getTileGrid=Z.prototype.Ga;Z.prototype.refresh=Z.prototype.pa;Z.prototype.getAttributions=Z.prototype.ra;Z.prototype.getLogo=Z.prototype.qa;Z.prototype.getProjection=Z.prototype.sa;Z.prototype.getState=Z.prototype.V;Z.prototype.setAttributions=Z.prototype.ka;
-Z.prototype.get=Z.prototype.get;Z.prototype.getKeys=Z.prototype.K;Z.prototype.getProperties=Z.prototype.L;Z.prototype.set=Z.prototype.set;Z.prototype.setProperties=Z.prototype.C;Z.prototype.unset=Z.prototype.P;Z.prototype.changed=Z.prototype.u;Z.prototype.dispatchEvent=Z.prototype.b;Z.prototype.getRevision=Z.prototype.H;Z.prototype.on=Z.prototype.D;Z.prototype.once=Z.prototype.I;Z.prototype.un=Z.prototype.G;Z.prototype.unByKey=Z.prototype.J;dx.prototype.setRenderReprojectionEdges=dx.prototype.lb;
-dx.prototype.setTileGridForProjection=dx.prototype.mb;dx.prototype.getTileLoadFunction=dx.prototype.Xa;dx.prototype.getTileUrlFunction=dx.prototype.Ya;dx.prototype.getUrls=dx.prototype.Za;dx.prototype.setTileLoadFunction=dx.prototype.cb;dx.prototype.setTileUrlFunction=dx.prototype.La;dx.prototype.setUrl=dx.prototype.Na;dx.prototype.setUrls=dx.prototype.Ua;dx.prototype.getTileGrid=dx.prototype.Ga;dx.prototype.refresh=dx.prototype.pa;dx.prototype.getAttributions=dx.prototype.ra;
-dx.prototype.getLogo=dx.prototype.qa;dx.prototype.getProjection=dx.prototype.sa;dx.prototype.getState=dx.prototype.V;dx.prototype.setAttributions=dx.prototype.ka;dx.prototype.get=dx.prototype.get;dx.prototype.getKeys=dx.prototype.K;dx.prototype.getProperties=dx.prototype.L;dx.prototype.set=dx.prototype.set;dx.prototype.setProperties=dx.prototype.C;dx.prototype.unset=dx.prototype.P;dx.prototype.changed=dx.prototype.u;dx.prototype.dispatchEvent=dx.prototype.b;dx.prototype.getRevision=dx.prototype.H;
-dx.prototype.on=dx.prototype.D;dx.prototype.once=dx.prototype.I;dx.prototype.un=dx.prototype.G;dx.prototype.unByKey=dx.prototype.J;ew.prototype.getTileCoord=ew.prototype.i;ki.prototype.changed=ki.prototype.u;ki.prototype.dispatchEvent=ki.prototype.b;ki.prototype.getRevision=ki.prototype.H;ki.prototype.on=ki.prototype.D;ki.prototype.once=ki.prototype.I;ki.prototype.un=ki.prototype.G;ki.prototype.unByKey=ki.prototype.J;xn.prototype.changed=xn.prototype.u;xn.prototype.dispatchEvent=xn.prototype.b;
-xn.prototype.getRevision=xn.prototype.H;xn.prototype.on=xn.prototype.D;xn.prototype.once=xn.prototype.I;xn.prototype.un=xn.prototype.G;xn.prototype.unByKey=xn.prototype.J;An.prototype.changed=An.prototype.u;An.prototype.dispatchEvent=An.prototype.b;An.prototype.getRevision=An.prototype.H;An.prototype.on=An.prototype.D;An.prototype.once=An.prototype.I;An.prototype.un=An.prototype.G;An.prototype.unByKey=An.prototype.J;Gn.prototype.changed=Gn.prototype.u;Gn.prototype.dispatchEvent=Gn.prototype.b;
-Gn.prototype.getRevision=Gn.prototype.H;Gn.prototype.on=Gn.prototype.D;Gn.prototype.once=Gn.prototype.I;Gn.prototype.un=Gn.prototype.G;Gn.prototype.unByKey=Gn.prototype.J;In.prototype.changed=In.prototype.u;In.prototype.dispatchEvent=In.prototype.b;In.prototype.getRevision=In.prototype.H;In.prototype.on=In.prototype.D;In.prototype.once=In.prototype.I;In.prototype.un=In.prototype.G;In.prototype.unByKey=In.prototype.J;Im.prototype.changed=Im.prototype.u;Im.prototype.dispatchEvent=Im.prototype.b;
-Im.prototype.getRevision=Im.prototype.H;Im.prototype.on=Im.prototype.D;Im.prototype.once=Im.prototype.I;Im.prototype.un=Im.prototype.G;Im.prototype.unByKey=Im.prototype.J;Jm.prototype.changed=Jm.prototype.u;Jm.prototype.dispatchEvent=Jm.prototype.b;Jm.prototype.getRevision=Jm.prototype.H;Jm.prototype.on=Jm.prototype.D;Jm.prototype.once=Jm.prototype.I;Jm.prototype.un=Jm.prototype.G;Jm.prototype.unByKey=Jm.prototype.J;Km.prototype.changed=Km.prototype.u;Km.prototype.dispatchEvent=Km.prototype.b;
-Km.prototype.getRevision=Km.prototype.H;Km.prototype.on=Km.prototype.D;Km.prototype.once=Km.prototype.I;Km.prototype.un=Km.prototype.G;Km.prototype.unByKey=Km.prototype.J;Mm.prototype.changed=Mm.prototype.u;Mm.prototype.dispatchEvent=Mm.prototype.b;Mm.prototype.getRevision=Mm.prototype.H;Mm.prototype.on=Mm.prototype.D;Mm.prototype.once=Mm.prototype.I;Mm.prototype.un=Mm.prototype.G;Mm.prototype.unByKey=Mm.prototype.J;Bk.prototype.changed=Bk.prototype.u;Bk.prototype.dispatchEvent=Bk.prototype.b;
-Bk.prototype.getRevision=Bk.prototype.H;Bk.prototype.on=Bk.prototype.D;Bk.prototype.once=Bk.prototype.I;Bk.prototype.un=Bk.prototype.G;Bk.prototype.unByKey=Bk.prototype.J;qm.prototype.changed=qm.prototype.u;qm.prototype.dispatchEvent=qm.prototype.b;qm.prototype.getRevision=qm.prototype.H;qm.prototype.on=qm.prototype.D;qm.prototype.once=qm.prototype.I;qm.prototype.un=qm.prototype.G;qm.prototype.unByKey=qm.prototype.J;rm.prototype.changed=rm.prototype.u;rm.prototype.dispatchEvent=rm.prototype.b;
-rm.prototype.getRevision=rm.prototype.H;rm.prototype.on=rm.prototype.D;rm.prototype.once=rm.prototype.I;rm.prototype.un=rm.prototype.G;rm.prototype.unByKey=rm.prototype.J;tm.prototype.changed=tm.prototype.u;tm.prototype.dispatchEvent=tm.prototype.b;tm.prototype.getRevision=tm.prototype.H;tm.prototype.on=tm.prototype.D;tm.prototype.once=tm.prototype.I;tm.prototype.un=tm.prototype.G;tm.prototype.unByKey=tm.prototype.J;Em.prototype.changed=Em.prototype.u;Em.prototype.dispatchEvent=Em.prototype.b;
-Em.prototype.getRevision=Em.prototype.H;Em.prototype.on=Em.prototype.D;Em.prototype.once=Em.prototype.I;Em.prototype.un=Em.prototype.G;Em.prototype.unByKey=Em.prototype.J;ci.prototype.type=ci.prototype.type;ci.prototype.target=ci.prototype.target;ci.prototype.preventDefault=ci.prototype.preventDefault;ci.prototype.stopPropagation=ci.prototype.stopPropagation;Ig.prototype.type=Ig.prototype.type;Ig.prototype.target=Ig.prototype.target;Ig.prototype.preventDefault=Ig.prototype.preventDefault;
-Ig.prototype.stopPropagation=Ig.prototype.stopPropagation;$h.prototype.get=$h.prototype.get;$h.prototype.getKeys=$h.prototype.K;$h.prototype.getProperties=$h.prototype.L;$h.prototype.set=$h.prototype.set;$h.prototype.setProperties=$h.prototype.C;$h.prototype.unset=$h.prototype.P;$h.prototype.changed=$h.prototype.u;$h.prototype.dispatchEvent=$h.prototype.b;$h.prototype.getRevision=$h.prototype.H;$h.prototype.on=$h.prototype.D;$h.prototype.once=$h.prototype.I;$h.prototype.un=$h.prototype.G;
-$h.prototype.unByKey=$h.prototype.J;di.prototype.getExtent=di.prototype.O;di.prototype.getMaxResolution=di.prototype.Ib;di.prototype.getMinResolution=di.prototype.Jb;di.prototype.getOpacity=di.prototype.Lb;di.prototype.getVisible=di.prototype.wb;di.prototype.getZIndex=di.prototype.Mb;di.prototype.setExtent=di.prototype.ac;di.prototype.setMaxResolution=di.prototype.ic;di.prototype.setMinResolution=di.prototype.jc;di.prototype.setOpacity=di.prototype.bc;di.prototype.setVisible=di.prototype.cc;
-di.prototype.setZIndex=di.prototype.dc;di.prototype.get=di.prototype.get;di.prototype.getKeys=di.prototype.K;di.prototype.getProperties=di.prototype.L;di.prototype.set=di.prototype.set;di.prototype.setProperties=di.prototype.C;di.prototype.unset=di.prototype.P;di.prototype.changed=di.prototype.u;di.prototype.dispatchEvent=di.prototype.b;di.prototype.getRevision=di.prototype.H;di.prototype.on=di.prototype.D;di.prototype.once=di.prototype.I;di.prototype.un=di.prototype.G;di.prototype.unByKey=di.prototype.J;
-H.prototype.setMap=H.prototype.setMap;H.prototype.setSource=H.prototype.Ac;H.prototype.getExtent=H.prototype.O;H.prototype.getMaxResolution=H.prototype.Ib;H.prototype.getMinResolution=H.prototype.Jb;H.prototype.getOpacity=H.prototype.Lb;H.prototype.getVisible=H.prototype.wb;H.prototype.getZIndex=H.prototype.Mb;H.prototype.setExtent=H.prototype.ac;H.prototype.setMaxResolution=H.prototype.ic;H.prototype.setMinResolution=H.prototype.jc;H.prototype.setOpacity=H.prototype.bc;H.prototype.setVisible=H.prototype.cc;
-H.prototype.setZIndex=H.prototype.dc;H.prototype.get=H.prototype.get;H.prototype.getKeys=H.prototype.K;H.prototype.getProperties=H.prototype.L;H.prototype.set=H.prototype.set;H.prototype.setProperties=H.prototype.C;H.prototype.unset=H.prototype.P;H.prototype.changed=H.prototype.u;H.prototype.dispatchEvent=H.prototype.b;H.prototype.getRevision=H.prototype.H;H.prototype.on=H.prototype.D;H.prototype.once=H.prototype.I;H.prototype.un=H.prototype.G;H.prototype.unByKey=H.prototype.J;
-W.prototype.getSource=W.prototype.da;W.prototype.getStyle=W.prototype.M;W.prototype.getStyleFunction=W.prototype.N;W.prototype.setStyle=W.prototype.l;W.prototype.setMap=W.prototype.setMap;W.prototype.setSource=W.prototype.Ac;W.prototype.getExtent=W.prototype.O;W.prototype.getMaxResolution=W.prototype.Ib;W.prototype.getMinResolution=W.prototype.Jb;W.prototype.getOpacity=W.prototype.Lb;W.prototype.getVisible=W.prototype.wb;W.prototype.getZIndex=W.prototype.Mb;W.prototype.setExtent=W.prototype.ac;
-W.prototype.setMaxResolution=W.prototype.ic;W.prototype.setMinResolution=W.prototype.jc;W.prototype.setOpacity=W.prototype.bc;W.prototype.setVisible=W.prototype.cc;W.prototype.setZIndex=W.prototype.dc;W.prototype.get=W.prototype.get;W.prototype.getKeys=W.prototype.K;W.prototype.getProperties=W.prototype.L;W.prototype.set=W.prototype.set;W.prototype.setProperties=W.prototype.C;W.prototype.unset=W.prototype.P;W.prototype.changed=W.prototype.u;W.prototype.dispatchEvent=W.prototype.b;
-W.prototype.getRevision=W.prototype.H;W.prototype.on=W.prototype.D;W.prototype.once=W.prototype.I;W.prototype.un=W.prototype.G;W.prototype.unByKey=W.prototype.J;Uj.prototype.setMap=Uj.prototype.setMap;Uj.prototype.setSource=Uj.prototype.Ac;Uj.prototype.getExtent=Uj.prototype.O;Uj.prototype.getMaxResolution=Uj.prototype.Ib;Uj.prototype.getMinResolution=Uj.prototype.Jb;Uj.prototype.getOpacity=Uj.prototype.Lb;Uj.prototype.getVisible=Uj.prototype.wb;Uj.prototype.getZIndex=Uj.prototype.Mb;
-Uj.prototype.setExtent=Uj.prototype.ac;Uj.prototype.setMaxResolution=Uj.prototype.ic;Uj.prototype.setMinResolution=Uj.prototype.jc;Uj.prototype.setOpacity=Uj.prototype.bc;Uj.prototype.setVisible=Uj.prototype.cc;Uj.prototype.setZIndex=Uj.prototype.dc;Uj.prototype.get=Uj.prototype.get;Uj.prototype.getKeys=Uj.prototype.K;Uj.prototype.getProperties=Uj.prototype.L;Uj.prototype.set=Uj.prototype.set;Uj.prototype.setProperties=Uj.prototype.C;Uj.prototype.unset=Uj.prototype.P;Uj.prototype.changed=Uj.prototype.u;
-Uj.prototype.dispatchEvent=Uj.prototype.b;Uj.prototype.getRevision=Uj.prototype.H;Uj.prototype.on=Uj.prototype.D;Uj.prototype.once=Uj.prototype.I;Uj.prototype.un=Uj.prototype.G;Uj.prototype.unByKey=Uj.prototype.J;Kj.prototype.getExtent=Kj.prototype.O;Kj.prototype.getMaxResolution=Kj.prototype.Ib;Kj.prototype.getMinResolution=Kj.prototype.Jb;Kj.prototype.getOpacity=Kj.prototype.Lb;Kj.prototype.getVisible=Kj.prototype.wb;Kj.prototype.getZIndex=Kj.prototype.Mb;Kj.prototype.setExtent=Kj.prototype.ac;
-Kj.prototype.setMaxResolution=Kj.prototype.ic;Kj.prototype.setMinResolution=Kj.prototype.jc;Kj.prototype.setOpacity=Kj.prototype.bc;Kj.prototype.setVisible=Kj.prototype.cc;Kj.prototype.setZIndex=Kj.prototype.dc;Kj.prototype.get=Kj.prototype.get;Kj.prototype.getKeys=Kj.prototype.K;Kj.prototype.getProperties=Kj.prototype.L;Kj.prototype.set=Kj.prototype.set;Kj.prototype.setProperties=Kj.prototype.C;Kj.prototype.unset=Kj.prototype.P;Kj.prototype.changed=Kj.prototype.u;Kj.prototype.dispatchEvent=Kj.prototype.b;
-Kj.prototype.getRevision=Kj.prototype.H;Kj.prototype.on=Kj.prototype.D;Kj.prototype.once=Kj.prototype.I;Kj.prototype.un=Kj.prototype.G;Kj.prototype.unByKey=Kj.prototype.J;Vj.prototype.setMap=Vj.prototype.setMap;Vj.prototype.setSource=Vj.prototype.Ac;Vj.prototype.getExtent=Vj.prototype.O;Vj.prototype.getMaxResolution=Vj.prototype.Ib;Vj.prototype.getMinResolution=Vj.prototype.Jb;Vj.prototype.getOpacity=Vj.prototype.Lb;Vj.prototype.getVisible=Vj.prototype.wb;Vj.prototype.getZIndex=Vj.prototype.Mb;
-Vj.prototype.setExtent=Vj.prototype.ac;Vj.prototype.setMaxResolution=Vj.prototype.ic;Vj.prototype.setMinResolution=Vj.prototype.jc;Vj.prototype.setOpacity=Vj.prototype.bc;Vj.prototype.setVisible=Vj.prototype.cc;Vj.prototype.setZIndex=Vj.prototype.dc;Vj.prototype.get=Vj.prototype.get;Vj.prototype.getKeys=Vj.prototype.K;Vj.prototype.getProperties=Vj.prototype.L;Vj.prototype.set=Vj.prototype.set;Vj.prototype.setProperties=Vj.prototype.C;Vj.prototype.unset=Vj.prototype.P;Vj.prototype.changed=Vj.prototype.u;
-Vj.prototype.dispatchEvent=Vj.prototype.b;Vj.prototype.getRevision=Vj.prototype.H;Vj.prototype.on=Vj.prototype.D;Vj.prototype.once=Vj.prototype.I;Vj.prototype.un=Vj.prototype.G;Vj.prototype.unByKey=Vj.prototype.J;I.prototype.getSource=I.prototype.da;I.prototype.getStyle=I.prototype.M;I.prototype.getStyleFunction=I.prototype.N;I.prototype.setStyle=I.prototype.l;I.prototype.setMap=I.prototype.setMap;I.prototype.setSource=I.prototype.Ac;I.prototype.getExtent=I.prototype.O;
-I.prototype.getMaxResolution=I.prototype.Ib;I.prototype.getMinResolution=I.prototype.Jb;I.prototype.getOpacity=I.prototype.Lb;I.prototype.getVisible=I.prototype.wb;I.prototype.getZIndex=I.prototype.Mb;I.prototype.setExtent=I.prototype.ac;I.prototype.setMaxResolution=I.prototype.ic;I.prototype.setMinResolution=I.prototype.jc;I.prototype.setOpacity=I.prototype.bc;I.prototype.setVisible=I.prototype.cc;I.prototype.setZIndex=I.prototype.dc;I.prototype.get=I.prototype.get;I.prototype.getKeys=I.prototype.K;
-I.prototype.getProperties=I.prototype.L;I.prototype.set=I.prototype.set;I.prototype.setProperties=I.prototype.C;I.prototype.unset=I.prototype.P;I.prototype.changed=I.prototype.u;I.prototype.dispatchEvent=I.prototype.b;I.prototype.getRevision=I.prototype.H;I.prototype.on=I.prototype.D;I.prototype.once=I.prototype.I;I.prototype.un=I.prototype.G;I.prototype.unByKey=I.prototype.J;Mi.prototype.get=Mi.prototype.get;Mi.prototype.getKeys=Mi.prototype.K;Mi.prototype.getProperties=Mi.prototype.L;
-Mi.prototype.set=Mi.prototype.set;Mi.prototype.setProperties=Mi.prototype.C;Mi.prototype.unset=Mi.prototype.P;Mi.prototype.changed=Mi.prototype.u;Mi.prototype.dispatchEvent=Mi.prototype.b;Mi.prototype.getRevision=Mi.prototype.H;Mi.prototype.on=Mi.prototype.D;Mi.prototype.once=Mi.prototype.I;Mi.prototype.un=Mi.prototype.G;Mi.prototype.unByKey=Mi.prototype.J;Qi.prototype.getActive=Qi.prototype.f;Qi.prototype.getMap=Qi.prototype.l;Qi.prototype.setActive=Qi.prototype.i;Qi.prototype.get=Qi.prototype.get;
-Qi.prototype.getKeys=Qi.prototype.K;Qi.prototype.getProperties=Qi.prototype.L;Qi.prototype.set=Qi.prototype.set;Qi.prototype.setProperties=Qi.prototype.C;Qi.prototype.unset=Qi.prototype.P;Qi.prototype.changed=Qi.prototype.u;Qi.prototype.dispatchEvent=Qi.prototype.b;Qi.prototype.getRevision=Qi.prototype.H;Qi.prototype.on=Qi.prototype.D;Qi.prototype.once=Qi.prototype.I;Qi.prototype.un=Qi.prototype.G;Qi.prototype.unByKey=Qi.prototype.J;av.prototype.getActive=av.prototype.f;av.prototype.getMap=av.prototype.l;
-av.prototype.setActive=av.prototype.i;av.prototype.get=av.prototype.get;av.prototype.getKeys=av.prototype.K;av.prototype.getProperties=av.prototype.L;av.prototype.set=av.prototype.set;av.prototype.setProperties=av.prototype.C;av.prototype.unset=av.prototype.P;av.prototype.changed=av.prototype.u;av.prototype.dispatchEvent=av.prototype.b;av.prototype.getRevision=av.prototype.H;av.prototype.on=av.prototype.D;av.prototype.once=av.prototype.I;av.prototype.un=av.prototype.G;av.prototype.unByKey=av.prototype.J;
-dv.prototype.type=dv.prototype.type;dv.prototype.target=dv.prototype.target;dv.prototype.preventDefault=dv.prototype.preventDefault;dv.prototype.stopPropagation=dv.prototype.stopPropagation;oj.prototype.type=oj.prototype.type;oj.prototype.target=oj.prototype.target;oj.prototype.preventDefault=oj.prototype.preventDefault;oj.prototype.stopPropagation=oj.prototype.stopPropagation;aj.prototype.getActive=aj.prototype.f;aj.prototype.getMap=aj.prototype.l;aj.prototype.setActive=aj.prototype.i;
-aj.prototype.get=aj.prototype.get;aj.prototype.getKeys=aj.prototype.K;aj.prototype.getProperties=aj.prototype.L;aj.prototype.set=aj.prototype.set;aj.prototype.setProperties=aj.prototype.C;aj.prototype.unset=aj.prototype.P;aj.prototype.changed=aj.prototype.u;aj.prototype.dispatchEvent=aj.prototype.b;aj.prototype.getRevision=aj.prototype.H;aj.prototype.on=aj.prototype.D;aj.prototype.once=aj.prototype.I;aj.prototype.un=aj.prototype.G;aj.prototype.unByKey=aj.prototype.J;pj.prototype.getActive=pj.prototype.f;
-pj.prototype.getMap=pj.prototype.l;pj.prototype.setActive=pj.prototype.i;pj.prototype.get=pj.prototype.get;pj.prototype.getKeys=pj.prototype.K;pj.prototype.getProperties=pj.prototype.L;pj.prototype.set=pj.prototype.set;pj.prototype.setProperties=pj.prototype.C;pj.prototype.unset=pj.prototype.P;pj.prototype.changed=pj.prototype.u;pj.prototype.dispatchEvent=pj.prototype.b;pj.prototype.getRevision=pj.prototype.H;pj.prototype.on=pj.prototype.D;pj.prototype.once=pj.prototype.I;pj.prototype.un=pj.prototype.G;
-pj.prototype.unByKey=pj.prototype.J;dj.prototype.getActive=dj.prototype.f;dj.prototype.getMap=dj.prototype.l;dj.prototype.setActive=dj.prototype.i;dj.prototype.get=dj.prototype.get;dj.prototype.getKeys=dj.prototype.K;dj.prototype.getProperties=dj.prototype.L;dj.prototype.set=dj.prototype.set;dj.prototype.setProperties=dj.prototype.C;dj.prototype.unset=dj.prototype.P;dj.prototype.changed=dj.prototype.u;dj.prototype.dispatchEvent=dj.prototype.b;dj.prototype.getRevision=dj.prototype.H;
-dj.prototype.on=dj.prototype.D;dj.prototype.once=dj.prototype.I;dj.prototype.un=dj.prototype.G;dj.prototype.unByKey=dj.prototype.J;fv.prototype.getActive=fv.prototype.f;fv.prototype.getMap=fv.prototype.l;fv.prototype.setActive=fv.prototype.i;fv.prototype.get=fv.prototype.get;fv.prototype.getKeys=fv.prototype.K;fv.prototype.getProperties=fv.prototype.L;fv.prototype.set=fv.prototype.set;fv.prototype.setProperties=fv.prototype.C;fv.prototype.unset=fv.prototype.P;fv.prototype.changed=fv.prototype.u;
-fv.prototype.dispatchEvent=fv.prototype.b;fv.prototype.getRevision=fv.prototype.H;fv.prototype.on=fv.prototype.D;fv.prototype.once=fv.prototype.I;fv.prototype.un=fv.prototype.G;fv.prototype.unByKey=fv.prototype.J;hj.prototype.getActive=hj.prototype.f;hj.prototype.getMap=hj.prototype.l;hj.prototype.setActive=hj.prototype.i;hj.prototype.get=hj.prototype.get;hj.prototype.getKeys=hj.prototype.K;hj.prototype.getProperties=hj.prototype.L;hj.prototype.set=hj.prototype.set;hj.prototype.setProperties=hj.prototype.C;
-hj.prototype.unset=hj.prototype.P;hj.prototype.changed=hj.prototype.u;hj.prototype.dispatchEvent=hj.prototype.b;hj.prototype.getRevision=hj.prototype.H;hj.prototype.on=hj.prototype.D;hj.prototype.once=hj.prototype.I;hj.prototype.un=hj.prototype.G;hj.prototype.unByKey=hj.prototype.J;uj.prototype.getGeometry=uj.prototype.W;uj.prototype.getActive=uj.prototype.f;uj.prototype.getMap=uj.prototype.l;uj.prototype.setActive=uj.prototype.i;uj.prototype.get=uj.prototype.get;uj.prototype.getKeys=uj.prototype.K;
-uj.prototype.getProperties=uj.prototype.L;uj.prototype.set=uj.prototype.set;uj.prototype.setProperties=uj.prototype.C;uj.prototype.unset=uj.prototype.P;uj.prototype.changed=uj.prototype.u;uj.prototype.dispatchEvent=uj.prototype.b;uj.prototype.getRevision=uj.prototype.H;uj.prototype.on=uj.prototype.D;uj.prototype.once=uj.prototype.I;uj.prototype.un=uj.prototype.G;uj.prototype.unByKey=uj.prototype.J;jv.prototype.type=jv.prototype.type;jv.prototype.target=jv.prototype.target;
-jv.prototype.preventDefault=jv.prototype.preventDefault;jv.prototype.stopPropagation=jv.prototype.stopPropagation;kv.prototype.getActive=kv.prototype.f;kv.prototype.getMap=kv.prototype.l;kv.prototype.setActive=kv.prototype.i;kv.prototype.get=kv.prototype.get;kv.prototype.getKeys=kv.prototype.K;kv.prototype.getProperties=kv.prototype.L;kv.prototype.set=kv.prototype.set;kv.prototype.setProperties=kv.prototype.C;kv.prototype.unset=kv.prototype.P;kv.prototype.changed=kv.prototype.u;
-kv.prototype.dispatchEvent=kv.prototype.b;kv.prototype.getRevision=kv.prototype.H;kv.prototype.on=kv.prototype.D;kv.prototype.once=kv.prototype.I;kv.prototype.un=kv.prototype.G;kv.prototype.unByKey=kv.prototype.J;vj.prototype.getActive=vj.prototype.f;vj.prototype.getMap=vj.prototype.l;vj.prototype.setActive=vj.prototype.i;vj.prototype.get=vj.prototype.get;vj.prototype.getKeys=vj.prototype.K;vj.prototype.getProperties=vj.prototype.L;vj.prototype.set=vj.prototype.set;vj.prototype.setProperties=vj.prototype.C;
-vj.prototype.unset=vj.prototype.P;vj.prototype.changed=vj.prototype.u;vj.prototype.dispatchEvent=vj.prototype.b;vj.prototype.getRevision=vj.prototype.H;vj.prototype.on=vj.prototype.D;vj.prototype.once=vj.prototype.I;vj.prototype.un=vj.prototype.G;vj.prototype.unByKey=vj.prototype.J;xj.prototype.getActive=xj.prototype.f;xj.prototype.getMap=xj.prototype.l;xj.prototype.setActive=xj.prototype.i;xj.prototype.get=xj.prototype.get;xj.prototype.getKeys=xj.prototype.K;xj.prototype.getProperties=xj.prototype.L;
-xj.prototype.set=xj.prototype.set;xj.prototype.setProperties=xj.prototype.C;xj.prototype.unset=xj.prototype.P;xj.prototype.changed=xj.prototype.u;xj.prototype.dispatchEvent=xj.prototype.b;xj.prototype.getRevision=xj.prototype.H;xj.prototype.on=xj.prototype.D;xj.prototype.once=xj.prototype.I;xj.prototype.un=xj.prototype.G;xj.prototype.unByKey=xj.prototype.J;Av.prototype.type=Av.prototype.type;Av.prototype.target=Av.prototype.target;Av.prototype.preventDefault=Av.prototype.preventDefault;
-Av.prototype.stopPropagation=Av.prototype.stopPropagation;Bv.prototype.getActive=Bv.prototype.f;Bv.prototype.getMap=Bv.prototype.l;Bv.prototype.setActive=Bv.prototype.i;Bv.prototype.get=Bv.prototype.get;Bv.prototype.getKeys=Bv.prototype.K;Bv.prototype.getProperties=Bv.prototype.L;Bv.prototype.set=Bv.prototype.set;Bv.prototype.setProperties=Bv.prototype.C;Bv.prototype.unset=Bv.prototype.P;Bv.prototype.changed=Bv.prototype.u;Bv.prototype.dispatchEvent=Bv.prototype.b;Bv.prototype.getRevision=Bv.prototype.H;
-Bv.prototype.on=Bv.prototype.D;Bv.prototype.once=Bv.prototype.I;Bv.prototype.un=Bv.prototype.G;Bv.prototype.unByKey=Bv.prototype.J;zj.prototype.getActive=zj.prototype.f;zj.prototype.getMap=zj.prototype.l;zj.prototype.setActive=zj.prototype.i;zj.prototype.get=zj.prototype.get;zj.prototype.getKeys=zj.prototype.K;zj.prototype.getProperties=zj.prototype.L;zj.prototype.set=zj.prototype.set;zj.prototype.setProperties=zj.prototype.C;zj.prototype.unset=zj.prototype.P;zj.prototype.changed=zj.prototype.u;
-zj.prototype.dispatchEvent=zj.prototype.b;zj.prototype.getRevision=zj.prototype.H;zj.prototype.on=zj.prototype.D;zj.prototype.once=zj.prototype.I;zj.prototype.un=zj.prototype.G;zj.prototype.unByKey=zj.prototype.J;Bj.prototype.getActive=Bj.prototype.f;Bj.prototype.getMap=Bj.prototype.l;Bj.prototype.setActive=Bj.prototype.i;Bj.prototype.get=Bj.prototype.get;Bj.prototype.getKeys=Bj.prototype.K;Bj.prototype.getProperties=Bj.prototype.L;Bj.prototype.set=Bj.prototype.set;Bj.prototype.setProperties=Bj.prototype.C;
-Bj.prototype.unset=Bj.prototype.P;Bj.prototype.changed=Bj.prototype.u;Bj.prototype.dispatchEvent=Bj.prototype.b;Bj.prototype.getRevision=Bj.prototype.H;Bj.prototype.on=Bj.prototype.D;Bj.prototype.once=Bj.prototype.I;Bj.prototype.un=Bj.prototype.G;Bj.prototype.unByKey=Bj.prototype.J;Fj.prototype.getActive=Fj.prototype.f;Fj.prototype.getMap=Fj.prototype.l;Fj.prototype.setActive=Fj.prototype.i;Fj.prototype.get=Fj.prototype.get;Fj.prototype.getKeys=Fj.prototype.K;Fj.prototype.getProperties=Fj.prototype.L;
-Fj.prototype.set=Fj.prototype.set;Fj.prototype.setProperties=Fj.prototype.C;Fj.prototype.unset=Fj.prototype.P;Fj.prototype.changed=Fj.prototype.u;Fj.prototype.dispatchEvent=Fj.prototype.b;Fj.prototype.getRevision=Fj.prototype.H;Fj.prototype.on=Fj.prototype.D;Fj.prototype.once=Fj.prototype.I;Fj.prototype.un=Fj.prototype.G;Fj.prototype.unByKey=Fj.prototype.J;Ov.prototype.type=Ov.prototype.type;Ov.prototype.target=Ov.prototype.target;Ov.prototype.preventDefault=Ov.prototype.preventDefault;
-Ov.prototype.stopPropagation=Ov.prototype.stopPropagation;Pv.prototype.getActive=Pv.prototype.f;Pv.prototype.getMap=Pv.prototype.l;Pv.prototype.setActive=Pv.prototype.i;Pv.prototype.get=Pv.prototype.get;Pv.prototype.getKeys=Pv.prototype.K;Pv.prototype.getProperties=Pv.prototype.L;Pv.prototype.set=Pv.prototype.set;Pv.prototype.setProperties=Pv.prototype.C;Pv.prototype.unset=Pv.prototype.P;Pv.prototype.changed=Pv.prototype.u;Pv.prototype.dispatchEvent=Pv.prototype.b;Pv.prototype.getRevision=Pv.prototype.H;
-Pv.prototype.on=Pv.prototype.D;Pv.prototype.once=Pv.prototype.I;Pv.prototype.un=Pv.prototype.G;Pv.prototype.unByKey=Pv.prototype.J;Sv.prototype.getActive=Sv.prototype.f;Sv.prototype.getMap=Sv.prototype.l;Sv.prototype.setActive=Sv.prototype.i;Sv.prototype.get=Sv.prototype.get;Sv.prototype.getKeys=Sv.prototype.K;Sv.prototype.getProperties=Sv.prototype.L;Sv.prototype.set=Sv.prototype.set;Sv.prototype.setProperties=Sv.prototype.C;Sv.prototype.unset=Sv.prototype.P;Sv.prototype.changed=Sv.prototype.u;
-Sv.prototype.dispatchEvent=Sv.prototype.b;Sv.prototype.getRevision=Sv.prototype.H;Sv.prototype.on=Sv.prototype.D;Sv.prototype.once=Sv.prototype.I;Sv.prototype.un=Sv.prototype.G;Sv.prototype.unByKey=Sv.prototype.J;Wv.prototype.type=Wv.prototype.type;Wv.prototype.target=Wv.prototype.target;Wv.prototype.preventDefault=Wv.prototype.preventDefault;Wv.prototype.stopPropagation=Wv.prototype.stopPropagation;Xv.prototype.getActive=Xv.prototype.f;Xv.prototype.getMap=Xv.prototype.l;Xv.prototype.setActive=Xv.prototype.i;
-Xv.prototype.get=Xv.prototype.get;Xv.prototype.getKeys=Xv.prototype.K;Xv.prototype.getProperties=Xv.prototype.L;Xv.prototype.set=Xv.prototype.set;Xv.prototype.setProperties=Xv.prototype.C;Xv.prototype.unset=Xv.prototype.P;Xv.prototype.changed=Xv.prototype.u;Xv.prototype.dispatchEvent=Xv.prototype.b;Xv.prototype.getRevision=Xv.prototype.H;Xv.prototype.on=Xv.prototype.D;Xv.prototype.once=Xv.prototype.I;Xv.prototype.un=Xv.prototype.G;Xv.prototype.unByKey=Xv.prototype.J;dd.prototype.get=dd.prototype.get;
-dd.prototype.getKeys=dd.prototype.K;dd.prototype.getProperties=dd.prototype.L;dd.prototype.set=dd.prototype.set;dd.prototype.setProperties=dd.prototype.C;dd.prototype.unset=dd.prototype.P;dd.prototype.changed=dd.prototype.u;dd.prototype.dispatchEvent=dd.prototype.b;dd.prototype.getRevision=dd.prototype.H;dd.prototype.on=dd.prototype.D;dd.prototype.once=dd.prototype.I;dd.prototype.un=dd.prototype.G;dd.prototype.unByKey=dd.prototype.J;sd.prototype.getClosestPoint=sd.prototype.ub;
-sd.prototype.getExtent=sd.prototype.O;sd.prototype.rotate=sd.prototype.rotate;sd.prototype.simplify=sd.prototype.yb;sd.prototype.transform=sd.prototype.hb;sd.prototype.get=sd.prototype.get;sd.prototype.getKeys=sd.prototype.K;sd.prototype.getProperties=sd.prototype.L;sd.prototype.set=sd.prototype.set;sd.prototype.setProperties=sd.prototype.C;sd.prototype.unset=sd.prototype.P;sd.prototype.changed=sd.prototype.u;sd.prototype.dispatchEvent=sd.prototype.b;sd.prototype.getRevision=sd.prototype.H;
-sd.prototype.on=sd.prototype.D;sd.prototype.once=sd.prototype.I;sd.prototype.un=sd.prototype.G;sd.prototype.unByKey=sd.prototype.J;Ou.prototype.getFirstCoordinate=Ou.prototype.Fb;Ou.prototype.getLastCoordinate=Ou.prototype.Gb;Ou.prototype.getLayout=Ou.prototype.Hb;Ou.prototype.rotate=Ou.prototype.rotate;Ou.prototype.getClosestPoint=Ou.prototype.ub;Ou.prototype.getExtent=Ou.prototype.O;Ou.prototype.simplify=Ou.prototype.yb;Ou.prototype.get=Ou.prototype.get;Ou.prototype.getKeys=Ou.prototype.K;
-Ou.prototype.getProperties=Ou.prototype.L;Ou.prototype.set=Ou.prototype.set;Ou.prototype.setProperties=Ou.prototype.C;Ou.prototype.unset=Ou.prototype.P;Ou.prototype.changed=Ou.prototype.u;Ou.prototype.dispatchEvent=Ou.prototype.b;Ou.prototype.getRevision=Ou.prototype.H;Ou.prototype.on=Ou.prototype.D;Ou.prototype.once=Ou.prototype.I;Ou.prototype.un=Ou.prototype.G;Ou.prototype.unByKey=Ou.prototype.J;Do.prototype.getClosestPoint=Do.prototype.ub;Do.prototype.getExtent=Do.prototype.O;
-Do.prototype.rotate=Do.prototype.rotate;Do.prototype.simplify=Do.prototype.yb;Do.prototype.transform=Do.prototype.hb;Do.prototype.get=Do.prototype.get;Do.prototype.getKeys=Do.prototype.K;Do.prototype.getProperties=Do.prototype.L;Do.prototype.set=Do.prototype.set;Do.prototype.setProperties=Do.prototype.C;Do.prototype.unset=Do.prototype.P;Do.prototype.changed=Do.prototype.u;Do.prototype.dispatchEvent=Do.prototype.b;Do.prototype.getRevision=Do.prototype.H;Do.prototype.on=Do.prototype.D;
-Do.prototype.once=Do.prototype.I;Do.prototype.un=Do.prototype.G;Do.prototype.unByKey=Do.prototype.J;Kd.prototype.getFirstCoordinate=Kd.prototype.Fb;Kd.prototype.getLastCoordinate=Kd.prototype.Gb;Kd.prototype.getLayout=Kd.prototype.Hb;Kd.prototype.rotate=Kd.prototype.rotate;Kd.prototype.getClosestPoint=Kd.prototype.ub;Kd.prototype.getExtent=Kd.prototype.O;Kd.prototype.simplify=Kd.prototype.yb;Kd.prototype.transform=Kd.prototype.hb;Kd.prototype.get=Kd.prototype.get;Kd.prototype.getKeys=Kd.prototype.K;
-Kd.prototype.getProperties=Kd.prototype.L;Kd.prototype.set=Kd.prototype.set;Kd.prototype.setProperties=Kd.prototype.C;Kd.prototype.unset=Kd.prototype.P;Kd.prototype.changed=Kd.prototype.u;Kd.prototype.dispatchEvent=Kd.prototype.b;Kd.prototype.getRevision=Kd.prototype.H;Kd.prototype.on=Kd.prototype.D;Kd.prototype.once=Kd.prototype.I;Kd.prototype.un=Kd.prototype.G;Kd.prototype.unByKey=Kd.prototype.J;T.prototype.getFirstCoordinate=T.prototype.Fb;T.prototype.getLastCoordinate=T.prototype.Gb;
-T.prototype.getLayout=T.prototype.Hb;T.prototype.rotate=T.prototype.rotate;T.prototype.getClosestPoint=T.prototype.ub;T.prototype.getExtent=T.prototype.O;T.prototype.simplify=T.prototype.yb;T.prototype.transform=T.prototype.hb;T.prototype.get=T.prototype.get;T.prototype.getKeys=T.prototype.K;T.prototype.getProperties=T.prototype.L;T.prototype.set=T.prototype.set;T.prototype.setProperties=T.prototype.C;T.prototype.unset=T.prototype.P;T.prototype.changed=T.prototype.u;T.prototype.dispatchEvent=T.prototype.b;
-T.prototype.getRevision=T.prototype.H;T.prototype.on=T.prototype.D;T.prototype.once=T.prototype.I;T.prototype.un=T.prototype.G;T.prototype.unByKey=T.prototype.J;U.prototype.getFirstCoordinate=U.prototype.Fb;U.prototype.getLastCoordinate=U.prototype.Gb;U.prototype.getLayout=U.prototype.Hb;U.prototype.rotate=U.prototype.rotate;U.prototype.getClosestPoint=U.prototype.ub;U.prototype.getExtent=U.prototype.O;U.prototype.simplify=U.prototype.yb;U.prototype.transform=U.prototype.hb;U.prototype.get=U.prototype.get;
-U.prototype.getKeys=U.prototype.K;U.prototype.getProperties=U.prototype.L;U.prototype.set=U.prototype.set;U.prototype.setProperties=U.prototype.C;U.prototype.unset=U.prototype.P;U.prototype.changed=U.prototype.u;U.prototype.dispatchEvent=U.prototype.b;U.prototype.getRevision=U.prototype.H;U.prototype.on=U.prototype.D;U.prototype.once=U.prototype.I;U.prototype.un=U.prototype.G;U.prototype.unByKey=U.prototype.J;so.prototype.getFirstCoordinate=so.prototype.Fb;so.prototype.getLastCoordinate=so.prototype.Gb;
-so.prototype.getLayout=so.prototype.Hb;so.prototype.rotate=so.prototype.rotate;so.prototype.getClosestPoint=so.prototype.ub;so.prototype.getExtent=so.prototype.O;so.prototype.simplify=so.prototype.yb;so.prototype.transform=so.prototype.hb;so.prototype.get=so.prototype.get;so.prototype.getKeys=so.prototype.K;so.prototype.getProperties=so.prototype.L;so.prototype.set=so.prototype.set;so.prototype.setProperties=so.prototype.C;so.prototype.unset=so.prototype.P;so.prototype.changed=so.prototype.u;
-so.prototype.dispatchEvent=so.prototype.b;so.prototype.getRevision=so.prototype.H;so.prototype.on=so.prototype.D;so.prototype.once=so.prototype.I;so.prototype.un=so.prototype.G;so.prototype.unByKey=so.prototype.J;to.prototype.getFirstCoordinate=to.prototype.Fb;to.prototype.getLastCoordinate=to.prototype.Gb;to.prototype.getLayout=to.prototype.Hb;to.prototype.rotate=to.prototype.rotate;to.prototype.getClosestPoint=to.prototype.ub;to.prototype.getExtent=to.prototype.O;to.prototype.simplify=to.prototype.yb;
-to.prototype.transform=to.prototype.hb;to.prototype.get=to.prototype.get;to.prototype.getKeys=to.prototype.K;to.prototype.getProperties=to.prototype.L;to.prototype.set=to.prototype.set;to.prototype.setProperties=to.prototype.C;to.prototype.unset=to.prototype.P;to.prototype.changed=to.prototype.u;to.prototype.dispatchEvent=to.prototype.b;to.prototype.getRevision=to.prototype.H;to.prototype.on=to.prototype.D;to.prototype.once=to.prototype.I;to.prototype.un=to.prototype.G;to.prototype.unByKey=to.prototype.J;
-D.prototype.getFirstCoordinate=D.prototype.Fb;D.prototype.getLastCoordinate=D.prototype.Gb;D.prototype.getLayout=D.prototype.Hb;D.prototype.rotate=D.prototype.rotate;D.prototype.getClosestPoint=D.prototype.ub;D.prototype.getExtent=D.prototype.O;D.prototype.simplify=D.prototype.yb;D.prototype.transform=D.prototype.hb;D.prototype.get=D.prototype.get;D.prototype.getKeys=D.prototype.K;D.prototype.getProperties=D.prototype.L;D.prototype.set=D.prototype.set;D.prototype.setProperties=D.prototype.C;
-D.prototype.unset=D.prototype.P;D.prototype.changed=D.prototype.u;D.prototype.dispatchEvent=D.prototype.b;D.prototype.getRevision=D.prototype.H;D.prototype.on=D.prototype.D;D.prototype.once=D.prototype.I;D.prototype.un=D.prototype.G;D.prototype.unByKey=D.prototype.J;F.prototype.getFirstCoordinate=F.prototype.Fb;F.prototype.getLastCoordinate=F.prototype.Gb;F.prototype.getLayout=F.prototype.Hb;F.prototype.rotate=F.prototype.rotate;F.prototype.getClosestPoint=F.prototype.ub;F.prototype.getExtent=F.prototype.O;
-F.prototype.simplify=F.prototype.yb;F.prototype.transform=F.prototype.hb;F.prototype.get=F.prototype.get;F.prototype.getKeys=F.prototype.K;F.prototype.getProperties=F.prototype.L;F.prototype.set=F.prototype.set;F.prototype.setProperties=F.prototype.C;F.prototype.unset=F.prototype.P;F.prototype.changed=F.prototype.u;F.prototype.dispatchEvent=F.prototype.b;F.prototype.getRevision=F.prototype.H;F.prototype.on=F.prototype.D;F.prototype.once=F.prototype.I;F.prototype.un=F.prototype.G;
-F.prototype.unByKey=F.prototype.J;vs.prototype.get=vs.prototype.get;vs.prototype.getKeys=vs.prototype.K;vs.prototype.getProperties=vs.prototype.L;vs.prototype.set=vs.prototype.set;vs.prototype.setProperties=vs.prototype.C;vs.prototype.unset=vs.prototype.P;vs.prototype.changed=vs.prototype.u;vs.prototype.dispatchEvent=vs.prototype.b;vs.prototype.getRevision=vs.prototype.H;vs.prototype.on=vs.prototype.D;vs.prototype.once=vs.prototype.I;vs.prototype.un=vs.prototype.G;vs.prototype.unByKey=vs.prototype.J;
-ws.prototype.get=ws.prototype.get;ws.prototype.getKeys=ws.prototype.K;ws.prototype.getProperties=ws.prototype.L;ws.prototype.set=ws.prototype.set;ws.prototype.setProperties=ws.prototype.C;ws.prototype.unset=ws.prototype.P;ws.prototype.changed=ws.prototype.u;ws.prototype.dispatchEvent=ws.prototype.b;ws.prototype.getRevision=ws.prototype.H;ws.prototype.on=ws.prototype.D;ws.prototype.once=ws.prototype.I;ws.prototype.un=ws.prototype.G;ws.prototype.unByKey=ws.prototype.J;xs.prototype.get=xs.prototype.get;
-xs.prototype.getKeys=xs.prototype.K;xs.prototype.getProperties=xs.prototype.L;xs.prototype.set=xs.prototype.set;xs.prototype.setProperties=xs.prototype.C;xs.prototype.unset=xs.prototype.P;xs.prototype.changed=xs.prototype.u;xs.prototype.dispatchEvent=xs.prototype.b;xs.prototype.getRevision=xs.prototype.H;xs.prototype.on=xs.prototype.D;xs.prototype.once=xs.prototype.I;xs.prototype.un=xs.prototype.G;xs.prototype.unByKey=xs.prototype.J;ss.prototype.get=ss.prototype.get;ss.prototype.getKeys=ss.prototype.K;
-ss.prototype.getProperties=ss.prototype.L;ss.prototype.set=ss.prototype.set;ss.prototype.setProperties=ss.prototype.C;ss.prototype.unset=ss.prototype.P;ss.prototype.changed=ss.prototype.u;ss.prototype.dispatchEvent=ss.prototype.b;ss.prototype.getRevision=ss.prototype.H;ss.prototype.on=ss.prototype.D;ss.prototype.once=ss.prototype.I;ss.prototype.un=ss.prototype.G;ss.prototype.unByKey=ss.prototype.J;ys.prototype.get=ys.prototype.get;ys.prototype.getKeys=ys.prototype.K;ys.prototype.getProperties=ys.prototype.L;
-ys.prototype.set=ys.prototype.set;ys.prototype.setProperties=ys.prototype.C;ys.prototype.unset=ys.prototype.P;ys.prototype.changed=ys.prototype.u;ys.prototype.dispatchEvent=ys.prototype.b;ys.prototype.getRevision=ys.prototype.H;ys.prototype.on=ys.prototype.D;ys.prototype.once=ys.prototype.I;ys.prototype.un=ys.prototype.G;ys.prototype.unByKey=ys.prototype.J;zs.prototype.get=zs.prototype.get;zs.prototype.getKeys=zs.prototype.K;zs.prototype.getProperties=zs.prototype.L;zs.prototype.set=zs.prototype.set;
-zs.prototype.setProperties=zs.prototype.C;zs.prototype.unset=zs.prototype.P;zs.prototype.changed=zs.prototype.u;zs.prototype.dispatchEvent=zs.prototype.b;zs.prototype.getRevision=zs.prototype.H;zs.prototype.on=zs.prototype.D;zs.prototype.once=zs.prototype.I;zs.prototype.un=zs.prototype.G;zs.prototype.unByKey=zs.prototype.J;us.prototype.get=us.prototype.get;us.prototype.getKeys=us.prototype.K;us.prototype.getProperties=us.prototype.L;us.prototype.set=us.prototype.set;us.prototype.setProperties=us.prototype.C;
-us.prototype.unset=us.prototype.P;us.prototype.changed=us.prototype.u;us.prototype.dispatchEvent=us.prototype.b;us.prototype.getRevision=us.prototype.H;us.prototype.on=us.prototype.D;us.prototype.once=us.prototype.I;us.prototype.un=us.prototype.G;us.prototype.unByKey=us.prototype.J;As.prototype.get=As.prototype.get;As.prototype.getKeys=As.prototype.K;As.prototype.getProperties=As.prototype.L;As.prototype.set=As.prototype.set;As.prototype.setProperties=As.prototype.C;As.prototype.unset=As.prototype.P;
-As.prototype.changed=As.prototype.u;As.prototype.dispatchEvent=As.prototype.b;As.prototype.getRevision=As.prototype.H;As.prototype.on=As.prototype.D;As.prototype.once=As.prototype.I;As.prototype.un=As.prototype.G;As.prototype.unByKey=As.prototype.J;Bs.prototype.get=Bs.prototype.get;Bs.prototype.getKeys=Bs.prototype.K;Bs.prototype.getProperties=Bs.prototype.L;Bs.prototype.set=Bs.prototype.set;Bs.prototype.setProperties=Bs.prototype.C;Bs.prototype.unset=Bs.prototype.P;Bs.prototype.changed=Bs.prototype.u;
-Bs.prototype.dispatchEvent=Bs.prototype.b;Bs.prototype.getRevision=Bs.prototype.H;Bs.prototype.on=Bs.prototype.D;Bs.prototype.once=Bs.prototype.I;Bs.prototype.un=Bs.prototype.G;Bs.prototype.unByKey=Bs.prototype.J;Cs.prototype.get=Cs.prototype.get;Cs.prototype.getKeys=Cs.prototype.K;Cs.prototype.getProperties=Cs.prototype.L;Cs.prototype.set=Cs.prototype.set;Cs.prototype.setProperties=Cs.prototype.C;Cs.prototype.unset=Cs.prototype.P;Cs.prototype.changed=Cs.prototype.u;Cs.prototype.dispatchEvent=Cs.prototype.b;
-Cs.prototype.getRevision=Cs.prototype.H;Cs.prototype.on=Cs.prototype.D;Cs.prototype.once=Cs.prototype.I;Cs.prototype.un=Cs.prototype.G;Cs.prototype.unByKey=Cs.prototype.J;Ds.prototype.get=Ds.prototype.get;Ds.prototype.getKeys=Ds.prototype.K;Ds.prototype.getProperties=Ds.prototype.L;Ds.prototype.set=Ds.prototype.set;Ds.prototype.setProperties=Ds.prototype.C;Ds.prototype.unset=Ds.prototype.P;Ds.prototype.changed=Ds.prototype.u;Ds.prototype.dispatchEvent=Ds.prototype.b;Ds.prototype.getRevision=Ds.prototype.H;
-Ds.prototype.on=Ds.prototype.D;Ds.prototype.once=Ds.prototype.I;Ds.prototype.un=Ds.prototype.G;Ds.prototype.unByKey=Ds.prototype.J;Es.prototype.get=Es.prototype.get;Es.prototype.getKeys=Es.prototype.K;Es.prototype.getProperties=Es.prototype.L;Es.prototype.set=Es.prototype.set;Es.prototype.setProperties=Es.prototype.C;Es.prototype.unset=Es.prototype.P;Es.prototype.changed=Es.prototype.u;Es.prototype.dispatchEvent=Es.prototype.b;Es.prototype.getRevision=Es.prototype.H;Es.prototype.on=Es.prototype.D;
-Es.prototype.once=Es.prototype.I;Es.prototype.un=Es.prototype.G;Es.prototype.unByKey=Es.prototype.J;Fs.prototype.get=Fs.prototype.get;Fs.prototype.getKeys=Fs.prototype.K;Fs.prototype.getProperties=Fs.prototype.L;Fs.prototype.set=Fs.prototype.set;Fs.prototype.setProperties=Fs.prototype.C;Fs.prototype.unset=Fs.prototype.P;Fs.prototype.changed=Fs.prototype.u;Fs.prototype.dispatchEvent=Fs.prototype.b;Fs.prototype.getRevision=Fs.prototype.H;Fs.prototype.on=Fs.prototype.D;Fs.prototype.once=Fs.prototype.I;
-Fs.prototype.un=Fs.prototype.G;Fs.prototype.unByKey=Fs.prototype.J;Gs.prototype.get=Gs.prototype.get;Gs.prototype.getKeys=Gs.prototype.K;Gs.prototype.getProperties=Gs.prototype.L;Gs.prototype.set=Gs.prototype.set;Gs.prototype.setProperties=Gs.prototype.C;Gs.prototype.unset=Gs.prototype.P;Gs.prototype.changed=Gs.prototype.u;Gs.prototype.dispatchEvent=Gs.prototype.b;Gs.prototype.getRevision=Gs.prototype.H;Gs.prototype.on=Gs.prototype.D;Gs.prototype.once=Gs.prototype.I;Gs.prototype.un=Gs.prototype.G;
-Gs.prototype.unByKey=Gs.prototype.J;Hs.prototype.get=Hs.prototype.get;Hs.prototype.getKeys=Hs.prototype.K;Hs.prototype.getProperties=Hs.prototype.L;Hs.prototype.set=Hs.prototype.set;Hs.prototype.setProperties=Hs.prototype.C;Hs.prototype.unset=Hs.prototype.P;Hs.prototype.changed=Hs.prototype.u;Hs.prototype.dispatchEvent=Hs.prototype.b;Hs.prototype.getRevision=Hs.prototype.H;Hs.prototype.on=Hs.prototype.D;Hs.prototype.once=Hs.prototype.I;Hs.prototype.un=Hs.prototype.G;Hs.prototype.unByKey=Hs.prototype.J;
-Is.prototype.get=Is.prototype.get;Is.prototype.getKeys=Is.prototype.K;Is.prototype.getProperties=Is.prototype.L;Is.prototype.set=Is.prototype.set;Is.prototype.setProperties=Is.prototype.C;Is.prototype.unset=Is.prototype.P;Is.prototype.changed=Is.prototype.u;Is.prototype.dispatchEvent=Is.prototype.b;Is.prototype.getRevision=Is.prototype.H;Is.prototype.on=Is.prototype.D;Is.prototype.once=Is.prototype.I;Is.prototype.un=Is.prototype.G;Is.prototype.unByKey=Is.prototype.J;Js.prototype.get=Js.prototype.get;
-Js.prototype.getKeys=Js.prototype.K;Js.prototype.getProperties=Js.prototype.L;Js.prototype.set=Js.prototype.set;Js.prototype.setProperties=Js.prototype.C;Js.prototype.unset=Js.prototype.P;Js.prototype.changed=Js.prototype.u;Js.prototype.dispatchEvent=Js.prototype.b;Js.prototype.getRevision=Js.prototype.H;Js.prototype.on=Js.prototype.D;Js.prototype.once=Js.prototype.I;Js.prototype.un=Js.prototype.G;Js.prototype.unByKey=Js.prototype.J;Ks.prototype.get=Ks.prototype.get;Ks.prototype.getKeys=Ks.prototype.K;
-Ks.prototype.getProperties=Ks.prototype.L;Ks.prototype.set=Ks.prototype.set;Ks.prototype.setProperties=Ks.prototype.C;Ks.prototype.unset=Ks.prototype.P;Ks.prototype.changed=Ks.prototype.u;Ks.prototype.dispatchEvent=Ks.prototype.b;Ks.prototype.getRevision=Ks.prototype.H;Ks.prototype.on=Ks.prototype.D;Ks.prototype.once=Ks.prototype.I;Ks.prototype.un=Ks.prototype.G;Ks.prototype.unByKey=Ks.prototype.J;bp.prototype.readFeatures=bp.prototype.Ca;cp.prototype.readFeatures=cp.prototype.Ca;
-cp.prototype.readFeatures=cp.prototype.Ca;Jf.prototype.get=Jf.prototype.get;Jf.prototype.getKeys=Jf.prototype.K;Jf.prototype.getProperties=Jf.prototype.L;Jf.prototype.set=Jf.prototype.set;Jf.prototype.setProperties=Jf.prototype.C;Jf.prototype.unset=Jf.prototype.P;Jf.prototype.changed=Jf.prototype.u;Jf.prototype.dispatchEvent=Jf.prototype.b;Jf.prototype.getRevision=Jf.prototype.H;Jf.prototype.on=Jf.prototype.D;Jf.prototype.once=Jf.prototype.I;Jf.prototype.un=Jf.prototype.G;Jf.prototype.unByKey=Jf.prototype.J;
-qg.prototype.getMap=qg.prototype.i;qg.prototype.setMap=qg.prototype.setMap;qg.prototype.setTarget=qg.prototype.c;qg.prototype.get=qg.prototype.get;qg.prototype.getKeys=qg.prototype.K;qg.prototype.getProperties=qg.prototype.L;qg.prototype.set=qg.prototype.set;qg.prototype.setProperties=qg.prototype.C;qg.prototype.unset=qg.prototype.P;qg.prototype.changed=qg.prototype.u;qg.prototype.dispatchEvent=qg.prototype.b;qg.prototype.getRevision=qg.prototype.H;qg.prototype.on=qg.prototype.D;
-qg.prototype.once=qg.prototype.I;qg.prototype.un=qg.prototype.G;qg.prototype.unByKey=qg.prototype.J;Bg.prototype.getMap=Bg.prototype.i;Bg.prototype.setMap=Bg.prototype.setMap;Bg.prototype.setTarget=Bg.prototype.c;Bg.prototype.get=Bg.prototype.get;Bg.prototype.getKeys=Bg.prototype.K;Bg.prototype.getProperties=Bg.prototype.L;Bg.prototype.set=Bg.prototype.set;Bg.prototype.setProperties=Bg.prototype.C;Bg.prototype.unset=Bg.prototype.P;Bg.prototype.changed=Bg.prototype.u;Bg.prototype.dispatchEvent=Bg.prototype.b;
-Bg.prototype.getRevision=Bg.prototype.H;Bg.prototype.on=Bg.prototype.D;Bg.prototype.once=Bg.prototype.I;Bg.prototype.un=Bg.prototype.G;Bg.prototype.unByKey=Bg.prototype.J;Cg.prototype.getMap=Cg.prototype.i;Cg.prototype.setMap=Cg.prototype.setMap;Cg.prototype.setTarget=Cg.prototype.c;Cg.prototype.get=Cg.prototype.get;Cg.prototype.getKeys=Cg.prototype.K;Cg.prototype.getProperties=Cg.prototype.L;Cg.prototype.set=Cg.prototype.set;Cg.prototype.setProperties=Cg.prototype.C;Cg.prototype.unset=Cg.prototype.P;
-Cg.prototype.changed=Cg.prototype.u;Cg.prototype.dispatchEvent=Cg.prototype.b;Cg.prototype.getRevision=Cg.prototype.H;Cg.prototype.on=Cg.prototype.D;Cg.prototype.once=Cg.prototype.I;Cg.prototype.un=Cg.prototype.G;Cg.prototype.unByKey=Cg.prototype.J;Sn.prototype.getMap=Sn.prototype.i;Sn.prototype.setMap=Sn.prototype.setMap;Sn.prototype.setTarget=Sn.prototype.c;Sn.prototype.get=Sn.prototype.get;Sn.prototype.getKeys=Sn.prototype.K;Sn.prototype.getProperties=Sn.prototype.L;Sn.prototype.set=Sn.prototype.set;
-Sn.prototype.setProperties=Sn.prototype.C;Sn.prototype.unset=Sn.prototype.P;Sn.prototype.changed=Sn.prototype.u;Sn.prototype.dispatchEvent=Sn.prototype.b;Sn.prototype.getRevision=Sn.prototype.H;Sn.prototype.on=Sn.prototype.D;Sn.prototype.once=Sn.prototype.I;Sn.prototype.un=Sn.prototype.G;Sn.prototype.unByKey=Sn.prototype.J;tg.prototype.getMap=tg.prototype.i;tg.prototype.setMap=tg.prototype.setMap;tg.prototype.setTarget=tg.prototype.c;tg.prototype.get=tg.prototype.get;tg.prototype.getKeys=tg.prototype.K;
-tg.prototype.getProperties=tg.prototype.L;tg.prototype.set=tg.prototype.set;tg.prototype.setProperties=tg.prototype.C;tg.prototype.unset=tg.prototype.P;tg.prototype.changed=tg.prototype.u;tg.prototype.dispatchEvent=tg.prototype.b;tg.prototype.getRevision=tg.prototype.H;tg.prototype.on=tg.prototype.D;tg.prototype.once=tg.prototype.I;tg.prototype.un=tg.prototype.G;tg.prototype.unByKey=tg.prototype.J;Xn.prototype.getMap=Xn.prototype.i;Xn.prototype.setMap=Xn.prototype.setMap;Xn.prototype.setTarget=Xn.prototype.c;
-Xn.prototype.get=Xn.prototype.get;Xn.prototype.getKeys=Xn.prototype.K;Xn.prototype.getProperties=Xn.prototype.L;Xn.prototype.set=Xn.prototype.set;Xn.prototype.setProperties=Xn.prototype.C;Xn.prototype.unset=Xn.prototype.P;Xn.prototype.changed=Xn.prototype.u;Xn.prototype.dispatchEvent=Xn.prototype.b;Xn.prototype.getRevision=Xn.prototype.H;Xn.prototype.on=Xn.prototype.D;Xn.prototype.once=Xn.prototype.I;Xn.prototype.un=Xn.prototype.G;Xn.prototype.unByKey=Xn.prototype.J;vg.prototype.getMap=vg.prototype.i;
-vg.prototype.setMap=vg.prototype.setMap;vg.prototype.setTarget=vg.prototype.c;vg.prototype.get=vg.prototype.get;vg.prototype.getKeys=vg.prototype.K;vg.prototype.getProperties=vg.prototype.L;vg.prototype.set=vg.prototype.set;vg.prototype.setProperties=vg.prototype.C;vg.prototype.unset=vg.prototype.P;vg.prototype.changed=vg.prototype.u;vg.prototype.dispatchEvent=vg.prototype.b;vg.prototype.getRevision=vg.prototype.H;vg.prototype.on=vg.prototype.D;vg.prototype.once=vg.prototype.I;vg.prototype.un=vg.prototype.G;
-vg.prototype.unByKey=vg.prototype.J;ao.prototype.getMap=ao.prototype.i;ao.prototype.setMap=ao.prototype.setMap;ao.prototype.setTarget=ao.prototype.c;ao.prototype.get=ao.prototype.get;ao.prototype.getKeys=ao.prototype.K;ao.prototype.getProperties=ao.prototype.L;ao.prototype.set=ao.prototype.set;ao.prototype.setProperties=ao.prototype.C;ao.prototype.unset=ao.prototype.P;ao.prototype.changed=ao.prototype.u;ao.prototype.dispatchEvent=ao.prototype.b;ao.prototype.getRevision=ao.prototype.H;
-ao.prototype.on=ao.prototype.D;ao.prototype.once=ao.prototype.I;ao.prototype.un=ao.prototype.G;ao.prototype.unByKey=ao.prototype.J;go.prototype.getMap=go.prototype.i;go.prototype.setMap=go.prototype.setMap;go.prototype.setTarget=go.prototype.c;go.prototype.get=go.prototype.get;go.prototype.getKeys=go.prototype.K;go.prototype.getProperties=go.prototype.L;go.prototype.set=go.prototype.set;go.prototype.setProperties=go.prototype.C;go.prototype.unset=go.prototype.P;go.prototype.changed=go.prototype.u;
-go.prototype.dispatchEvent=go.prototype.b;go.prototype.getRevision=go.prototype.H;go.prototype.on=go.prototype.D;go.prototype.once=go.prototype.I;go.prototype.un=go.prototype.G;go.prototype.unByKey=go.prototype.J;
+function sc(a){this.radius=a}sc.prototype.a=function(a){for(var b=0,c=a.length,d=a[c-1][0],e=a[c-1][1],f=0;f<c;f++)var g=a[f][0],h=a[f][1],b=b+wa(g-d)*(2+Math.sin(wa(e))+Math.sin(wa(h))),d=g,e=h;return b*this.radius*this.radius/2};sc.prototype.b=function(a,b){var c=wa(a[1]),d=wa(b[1]),e=(d-c)/2,f=wa(b[0]-a[0])/2,c=Math.sin(e)*Math.sin(e)+Math.sin(f)*Math.sin(f)*Math.cos(c)*Math.cos(d);return 2*this.radius*Math.atan2(Math.sqrt(c),Math.sqrt(1-c))};
+sc.prototype.offset=function(a,b,c){var d=wa(a[1]);b/=this.radius;var e=Math.asin(Math.sin(d)*Math.cos(b)+Math.cos(d)*Math.sin(b)*Math.cos(c));return[180*(wa(a[0])+Math.atan2(Math.sin(c)*Math.sin(b)*Math.cos(d),Math.cos(b)-Math.sin(d)*Math.sin(e)))/Math.PI,180*e/Math.PI]};var tc=new sc(6370997);var uc={};uc.degrees=2*Math.PI*tc.radius/360;uc.ft=.3048;uc.m=1;uc["us-ft"]=1200/3937;
+function vc(a){this.cb=a.code;this.c=a.units;this.f=void 0!==a.extent?a.extent:null;this.i=void 0!==a.worldExtent?a.worldExtent:null;this.b=void 0!==a.axisOrientation?a.axisOrientation:"enu";this.g=void 0!==a.global?a.global:!1;this.a=!(!this.g||!this.f);this.o=void 0!==a.getPointResolution?a.getPointResolution:this.sk;this.l=null;this.j=a.metersPerUnit;var b=wc,c=a.code,d=xc||pa.proj4;if("function"==typeof d&&void 0===b[c]){var e=d.defs(c);if(void 0!==e){void 0!==e.axis&&void 0===a.axisOrientation&&
+(this.b=e.axis);void 0===a.metersPerUnit&&(this.j=e.to_meter);void 0===a.units&&(this.c=e.units);for(var f in b)b=d.defs(f),void 0!==b&&(a=yc(f),b===e?zc([a,this]):(b=d(f,c),Ac(a,this,b.forward,b.inverse)))}}}k=vc.prototype;k.Sj=function(){return this.cb};k.H=function(){return this.f};k.wb=function(){return this.c};k.$b=function(){return this.j||uc[this.c]};k.Ek=function(){return this.i};k.pl=function(){return this.g};k.ep=function(a){this.g=a;this.a=!(!a||!this.f)};
+k.Mm=function(a){this.f=a;this.a=!(!this.g||!a)};k.mp=function(a){this.i=a};k.cp=function(a){this.o=a};k.sk=function(a,b){if("degrees"==this.wb())return a;var c=Bc(this,yc("EPSG:4326")),d=[b[0]-a/2,b[1],b[0]+a/2,b[1],b[0],b[1]-a/2,b[0],b[1]+a/2],d=c(d,d,2),c=tc.b(d.slice(0,2),d.slice(2,4)),d=tc.b(d.slice(4,6),d.slice(6,8)),d=(c+d)/2,c=this.$b();void 0!==c&&(d/=c);return d};k.getPointResolution=function(a,b){return this.o(a,b)};var wc={},Cc={},xc=null;
+function zc(a){Dc(a);a.forEach(function(b){a.forEach(function(a){b!==a&&Ec(b,a,Fc)})})}function Gc(){var a=Hc,b=Ic,c=Jc;Kc.forEach(function(d){a.forEach(function(a){Ec(d,a,b);Ec(a,d,c)})})}function Lc(a){wc[a.cb]=a;Ec(a,a,Fc)}function Dc(a){var b=[];a.forEach(function(a){b.push(Lc(a))})}function Mc(a){return a?"string"===typeof a?yc(a):a:yc("EPSG:3857")}function Ec(a,b,c){a=a.cb;b=b.cb;a in Cc||(Cc[a]={});Cc[a][b]=c}function Ac(a,b,c,d){a=yc(a);b=yc(b);Ec(a,b,Nc(c));Ec(b,a,Nc(d))}
+function Nc(a){return function(b,c,d){var e=b.length;d=void 0!==d?d:2;c=void 0!==c?c:Array(e);var f,g;for(g=0;g<e;g+=d)for(f=a([b[g],b[g+1]]),c[g]=f[0],c[g+1]=f[1],f=d-1;2<=f;--f)c[g+f]=b[g+f];return c}}function yc(a){var b;if(a instanceof vc)b=a;else if("string"===typeof a){b=wc[a];var c=xc||pa.proj4;void 0===b&&"function"==typeof c&&void 0!==c.defs(a)&&(b=new vc({code:a}),Lc(b))}else b=null;return b}function Oc(a,b){if(a===b)return!0;var c=a.wb()===b.wb();return a.cb===b.cb?c:Bc(a,b)===Fc&&c}
+function Pc(a,b){var c=yc(a),d=yc(b);return Bc(c,d)}function Bc(a,b){var c=a.cb,d=b.cb,e;c in Cc&&d in Cc[c]&&(e=Cc[c][d]);void 0===e&&(e=Qc);return e}function Qc(a,b){if(void 0!==b&&a!==b){for(var c=0,d=a.length;c<d;++c)b[c]=a[c];a=b}return a}function Fc(a,b){var c;if(void 0!==b){c=0;for(var d=a.length;c<d;++c)b[c]=a[c];c=b}else c=a.slice();return c}function Rc(a,b,c){return Pc(b,c)(a,void 0,a.length)}function Sc(a,b,c){b=Pc(b,c);return pc(a,b)};function Tc(){eb.call(this);this.v=Lb();this.A=-1;this.l={};this.s=this.o=0}y(Tc,eb);k=Tc.prototype;k.vb=function(a,b){var c=b?b:[NaN,NaN];this.sb(a[0],a[1],c,Infinity);return c};k.sg=function(a){return this.Bc(a[0],a[1])};k.Bc=rc;k.H=function(a){this.A!=this.g&&(this.v=this.Od(this.v),this.A=this.g);var b=this.v;a?(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=b[3]):a=b;return a};k.Bb=function(a){return this.od(a*a)};k.jb=function(a,b){this.rc(Pc(a,b));return this};function Uc(a){this.length=a.length||a;for(var b=0;b<this.length;b++)this[b]=a[b]||0}Uc.prototype.BYTES_PER_ELEMENT=4;Uc.prototype.set=function(a,b){b=b||0;for(var c=0;c<a.length&&b+c<this.length;c++)this[b+c]=a[c]};Uc.prototype.toString=Array.prototype.join;"undefined"==typeof Float32Array&&(Uc.BYTES_PER_ELEMENT=4,Uc.prototype.BYTES_PER_ELEMENT=Uc.prototype.BYTES_PER_ELEMENT,Uc.prototype.set=Uc.prototype.set,Uc.prototype.toString=Uc.prototype.toString,t("Float32Array",Uc,void 0));function Vc(a){this.length=a.length||a;for(var b=0;b<this.length;b++)this[b]=a[b]||0}Vc.prototype.BYTES_PER_ELEMENT=8;Vc.prototype.set=function(a,b){b=b||0;for(var c=0;c<a.length&&b+c<this.length;c++)this[b+c]=a[c]};Vc.prototype.toString=Array.prototype.join;if("undefined"==typeof Float64Array){try{Vc.BYTES_PER_ELEMENT=8}catch(a){}Vc.prototype.BYTES_PER_ELEMENT=Vc.prototype.BYTES_PER_ELEMENT;Vc.prototype.set=Vc.prototype.set;Vc.prototype.toString=Vc.prototype.toString;t("Float64Array",Vc,void 0)};function Wc(a,b,c,d,e){a[0]=b;a[1]=c;a[2]=d;a[3]=e};function Xc(){var a=Array(16);Yc(a,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);return a}function Zc(){var a=Array(16);Yc(a,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1);return a}function Yc(a,b,c,d,e,f,g,h,l,m,n,p,q,r,u,x,v){a[0]=b;a[1]=c;a[2]=d;a[3]=e;a[4]=f;a[5]=g;a[6]=h;a[7]=l;a[8]=m;a[9]=n;a[10]=p;a[11]=q;a[12]=r;a[13]=u;a[14]=x;a[15]=v}
+function $c(a,b){a[0]=b[0];a[1]=b[1];a[2]=b[2];a[3]=b[3];a[4]=b[4];a[5]=b[5];a[6]=b[6];a[7]=b[7];a[8]=b[8];a[9]=b[9];a[10]=b[10];a[11]=b[11];a[12]=b[12];a[13]=b[13];a[14]=b[14];a[15]=b[15]}function ad(a){a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1}
+function bd(a,b,c){var d=a[0],e=a[1],f=a[2],g=a[3],h=a[4],l=a[5],m=a[6],n=a[7],p=a[8],q=a[9],r=a[10],u=a[11],x=a[12],v=a[13],D=a[14];a=a[15];var A=b[0],z=b[1],F=b[2],N=b[3],K=b[4],X=b[5],oa=b[6],H=b[7],ya=b[8],Ua=b[9],Xa=b[10],Va=b[11],Aa=b[12],Qb=b[13],Nb=b[14];b=b[15];c[0]=d*A+h*z+p*F+x*N;c[1]=e*A+l*z+q*F+v*N;c[2]=f*A+m*z+r*F+D*N;c[3]=g*A+n*z+u*F+a*N;c[4]=d*K+h*X+p*oa+x*H;c[5]=e*K+l*X+q*oa+v*H;c[6]=f*K+m*X+r*oa+D*H;c[7]=g*K+n*X+u*oa+a*H;c[8]=d*ya+h*Ua+p*Xa+x*Va;c[9]=e*ya+l*Ua+q*Xa+v*Va;c[10]=f*
+ya+m*Ua+r*Xa+D*Va;c[11]=g*ya+n*Ua+u*Xa+a*Va;c[12]=d*Aa+h*Qb+p*Nb+x*b;c[13]=e*Aa+l*Qb+q*Nb+v*b;c[14]=f*Aa+m*Qb+r*Nb+D*b;c[15]=g*Aa+n*Qb+u*Nb+a*b}
+function cd(a,b){var c=a[0],d=a[1],e=a[2],f=a[3],g=a[4],h=a[5],l=a[6],m=a[7],n=a[8],p=a[9],q=a[10],r=a[11],u=a[12],x=a[13],v=a[14],D=a[15],A=c*h-d*g,z=c*l-e*g,F=c*m-f*g,N=d*l-e*h,K=d*m-f*h,X=e*m-f*l,oa=n*x-p*u,H=n*v-q*u,ya=n*D-r*u,Ua=p*v-q*x,Xa=p*D-r*x,Va=q*D-r*v,Aa=A*Va-z*Xa+F*Ua+N*ya-K*H+X*oa;0!=Aa&&(Aa=1/Aa,b[0]=(h*Va-l*Xa+m*Ua)*Aa,b[1]=(-d*Va+e*Xa-f*Ua)*Aa,b[2]=(x*X-v*K+D*N)*Aa,b[3]=(-p*X+q*K-r*N)*Aa,b[4]=(-g*Va+l*ya-m*H)*Aa,b[5]=(c*Va-e*ya+f*H)*Aa,b[6]=(-u*X+v*F-D*z)*Aa,b[7]=(n*X-q*F+r*z)*Aa,
+b[8]=(g*Xa-h*ya+m*oa)*Aa,b[9]=(-c*Xa+d*ya-f*oa)*Aa,b[10]=(u*K-x*F+D*A)*Aa,b[11]=(-n*K+p*F-r*A)*Aa,b[12]=(-g*Ua+h*H-l*oa)*Aa,b[13]=(c*Ua-d*H+e*oa)*Aa,b[14]=(-u*N+x*z-v*A)*Aa,b[15]=(n*N-p*z+q*A)*Aa)}function dd(a,b,c){var d=a[1]*b+a[5]*c+0*a[9]+a[13],e=a[2]*b+a[6]*c+0*a[10]+a[14],f=a[3]*b+a[7]*c+0*a[11]+a[15];a[12]=a[0]*b+a[4]*c+0*a[8]+a[12];a[13]=d;a[14]=e;a[15]=f}
+function ed(a,b,c){Yc(a,a[0]*b,a[1]*b,a[2]*b,a[3]*b,a[4]*c,a[5]*c,a[6]*c,a[7]*c,1*a[8],1*a[9],1*a[10],1*a[11],a[12],a[13],a[14],a[15])}function fd(a,b){var c=a[0],d=a[1],e=a[2],f=a[3],g=a[4],h=a[5],l=a[6],m=a[7],n=Math.cos(b),p=Math.sin(b);a[0]=c*n+g*p;a[1]=d*n+h*p;a[2]=e*n+l*p;a[3]=f*n+m*p;a[4]=c*-p+g*n;a[5]=d*-p+h*n;a[6]=e*-p+l*n;a[7]=f*-p+m*n}new Float64Array(3);new Float64Array(3);new Float64Array(4);new Float64Array(4);new Float64Array(4);new Float64Array(16);function gd(a,b,c,d,e,f){var g=e[0],h=e[1],l=e[4],m=e[5],n=e[12];e=e[13];for(var p=f?f:[],q=0;b<c;b+=d){var r=a[b],u=a[b+1];p[q++]=g*r+l*u+n;p[q++]=h*r+m*u+e}f&&p.length!=q&&(p.length=q);return p};function hd(){Tc.call(this);this.f="XY";this.a=2;this.B=null}y(hd,Tc);function id(a){if("XY"==a)return 2;if("XYZ"==a||"XYM"==a)return 3;if("XYZM"==a)return 4}k=hd.prototype;k.Bc=rc;k.Od=function(a){return Yb(this.B,0,this.B.length,this.a,a)};k.Ib=function(){return this.B.slice(0,this.a)};k.la=function(){return this.B};k.Jb=function(){return this.B.slice(this.B.length-this.a)};k.Kb=function(){return this.f};
+k.od=function(a){this.s!=this.g&&(Fa(this.l),this.o=0,this.s=this.g);if(0>a||0!==this.o&&a<=this.o)return this;var b=a.toString();if(this.l.hasOwnProperty(b))return this.l[b];var c=this.Nc(a);if(c.la().length<this.B.length)return this.l[b]=c;this.o=a;return this};k.Nc=function(){return this};k.va=function(){return this.a};function jd(a,b,c){a.a=id(b);a.f=b;a.B=c}
+function kd(a,b,c,d){if(b)c=id(b);else{for(b=0;b<d;++b){if(0===c.length){a.f="XY";a.a=2;return}c=c[0]}c=c.length;b=2==c?"XY":3==c?"XYZ":4==c?"XYZM":void 0}a.f=b;a.a=c}k.rc=function(a){this.B&&(a(this.B,this.B,this.a),this.u())};k.rotate=function(a,b){var c=this.la();if(c){for(var d=c.length,e=this.va(),f=c?c:[],g=Math.cos(a),h=Math.sin(a),l=b[0],m=b[1],n=0,p=0;p<d;p+=e){var q=c[p]-l,r=c[p+1]-m;f[n++]=l+q*g-r*h;f[n++]=m+q*h+r*g;for(q=p+2;q<p+e;++q)f[n++]=c[q]}c&&f.length!=n&&(f.length=n);this.u()}};
+k.Sc=function(a,b){var c=this.la();if(c){var d=c.length,e=this.va(),f=c?c:[],g=0,h,l;for(h=0;h<d;h+=e)for(f[g++]=c[h]+a,f[g++]=c[h+1]+b,l=h+2;l<h+e;++l)f[g++]=c[l];c&&f.length!=g&&(f.length=g);this.u()}};function ld(a,b,c,d){for(var e=0,f=a[c-d],g=a[c-d+1];b<c;b+=d)var h=a[b],l=a[b+1],e=e+(g*h-f*l),f=h,g=l;return e/2}function md(a,b,c,d){var e=0,f,g;f=0;for(g=c.length;f<g;++f){var h=c[f],e=e+ld(a,b,h,d);b=h}return e};function nd(a,b,c,d,e,f,g){var h=a[b],l=a[b+1],m=a[c]-h,n=a[c+1]-l;if(0!==m||0!==n)if(f=((e-h)*m+(f-l)*n)/(m*m+n*n),1<f)b=c;else if(0<f){for(e=0;e<d;++e)g[e]=za(a[b+e],a[c+e],f);g.length=d;return}for(e=0;e<d;++e)g[e]=a[b+e];g.length=d}function od(a,b,c,d,e){var f=a[b],g=a[b+1];for(b+=d;b<c;b+=d){var h=a[b],l=a[b+1],f=va(f,g,h,l);f>e&&(e=f);f=h;g=l}return e}function pd(a,b,c,d,e){var f,g;f=0;for(g=c.length;f<g;++f){var h=c[f];e=od(a,b,h,d,e);b=h}return e}
+function qd(a,b,c,d,e,f,g,h,l,m,n){if(b==c)return m;var p;if(0===e){p=va(g,h,a[b],a[b+1]);if(p<m){for(n=0;n<d;++n)l[n]=a[b+n];l.length=d;return p}return m}for(var q=n?n:[NaN,NaN],r=b+d;r<c;)if(nd(a,r-d,r,d,g,h,q),p=va(g,h,q[0],q[1]),p<m){m=p;for(n=0;n<d;++n)l[n]=q[n];l.length=d;r+=d}else r+=d*Math.max((Math.sqrt(p)-Math.sqrt(m))/e|0,1);if(f&&(nd(a,c-d,b,d,g,h,q),p=va(g,h,q[0],q[1]),p<m)){m=p;for(n=0;n<d;++n)l[n]=q[n];l.length=d}return m}
+function rd(a,b,c,d,e,f,g,h,l,m,n){n=n?n:[NaN,NaN];var p,q;p=0;for(q=c.length;p<q;++p){var r=c[p];m=qd(a,b,r,d,e,f,g,h,l,m,n);b=r}return m};function sd(a,b){var c=0,d,e;d=0;for(e=b.length;d<e;++d)a[c++]=b[d];return c}function td(a,b,c,d){var e,f;e=0;for(f=c.length;e<f;++e){var g=c[e],h;for(h=0;h<d;++h)a[b++]=g[h]}return b}function ud(a,b,c,d,e){e=e?e:[];var f=0,g,h;g=0;for(h=c.length;g<h;++g)b=td(a,b,c[g],d),e[f++]=b;e.length=f;return e};function vd(a,b,c,d,e){e=void 0!==e?e:[];for(var f=0;b<c;b+=d)e[f++]=a.slice(b,b+d);e.length=f;return e}function wd(a,b,c,d,e){e=void 0!==e?e:[];var f=0,g,h;g=0;for(h=c.length;g<h;++g){var l=c[g];e[f++]=vd(a,b,l,d,e[f]);b=l}e.length=f;return e};function xd(a,b,c,d,e,f,g){var h=(c-b)/d;if(3>h){for(;b<c;b+=d)f[g++]=a[b],f[g++]=a[b+1];return g}var l=Array(h);l[0]=1;l[h-1]=1;c=[b,c-d];for(var m=0,n;0<c.length;){var p=c.pop(),q=c.pop(),r=0,u=a[q],x=a[q+1],v=a[p],D=a[p+1];for(n=q+d;n<p;n+=d){var A=ua(a[n],a[n+1],u,x,v,D);A>r&&(m=n,r=A)}r>e&&(l[(m-b)/d]=1,q+d<m&&c.push(q,m),m+d<p&&c.push(m,p))}for(n=0;n<h;++n)l[n]&&(f[g++]=a[b+n*d],f[g++]=a[b+n*d+1]);return g}
+function yd(a,b,c,d,e,f,g,h){var l,m;l=0;for(m=c.length;l<m;++l){var n=c[l];a:{var p=a,q=n,r=d,u=e,x=f;if(b!=q){var v=u*Math.round(p[b]/u),D=u*Math.round(p[b+1]/u);b+=r;x[g++]=v;x[g++]=D;var A,z;do if(A=u*Math.round(p[b]/u),z=u*Math.round(p[b+1]/u),b+=r,b==q){x[g++]=A;x[g++]=z;break a}while(A==v&&z==D);for(;b<q;){var F,N;F=u*Math.round(p[b]/u);N=u*Math.round(p[b+1]/u);b+=r;if(F!=A||N!=z){var K=A-v,X=z-D,oa=F-v,H=N-D;K*H==X*oa&&(0>K&&oa<K||K==oa||0<K&&oa>K)&&(0>X&&H<X||X==H||0<X&&H>X)||(x[g++]=A,x[g++]=
+z,v=A,D=z);A=F;z=N}}x[g++]=A;x[g++]=z}}h.push(g);b=n}return g};function zd(a,b){hd.call(this);this.i=this.j=-1;this.pa(a,b)}y(zd,hd);k=zd.prototype;k.clone=function(){var a=new zd(null);Ad(a,this.f,this.B.slice());return a};k.sb=function(a,b,c,d){if(d<Rb(this.H(),a,b))return d;this.i!=this.g&&(this.j=Math.sqrt(od(this.B,0,this.B.length,this.a,0)),this.i=this.g);return qd(this.B,0,this.B.length,this.a,this.j,!0,a,b,c,d)};k.nm=function(){return ld(this.B,0,this.B.length,this.a)};k.Z=function(){return vd(this.B,0,this.B.length,this.a)};
+k.Nc=function(a){var b=[];b.length=xd(this.B,0,this.B.length,this.a,a,b,0);a=new zd(null);Ad(a,"XY",b);return a};k.X=function(){return"LinearRing"};k.pa=function(a,b){a?(kd(this,b,a,1),this.B||(this.B=[]),this.B.length=td(this.B,0,a,this.a),this.u()):Ad(this,"XY",null)};function Ad(a,b,c){jd(a,b,c);a.u()};function C(a,b){hd.call(this);this.pa(a,b)}y(C,hd);k=C.prototype;k.clone=function(){var a=new C(null);a.ba(this.f,this.B.slice());return a};k.sb=function(a,b,c,d){var e=this.B;a=va(a,b,e[0],e[1]);if(a<d){d=this.a;for(b=0;b<d;++b)c[b]=e[b];c.length=d;return a}return d};k.Z=function(){return this.B?this.B.slice():[]};k.Od=function(a){return Xb(this.B,a)};k.X=function(){return"Point"};k.Ka=function(a){return Tb(a,this.B[0],this.B[1])};
+k.pa=function(a,b){a?(kd(this,b,a,0),this.B||(this.B=[]),this.B.length=sd(this.B,a),this.u()):this.ba("XY",null)};k.ba=function(a,b){jd(this,a,b);this.u()};function Bd(a,b,c,d,e){return!bc(e,function(e){return!Cd(a,b,c,d,e[0],e[1])})}function Cd(a,b,c,d,e,f){for(var g=!1,h=a[c-d],l=a[c-d+1];b<c;b+=d){var m=a[b],n=a[b+1];l>f!=n>f&&e<(m-h)*(f-l)/(n-l)+h&&(g=!g);h=m;l=n}return g}function Dd(a,b,c,d,e,f){if(0===c.length||!Cd(a,b,c[0],d,e,f))return!1;var g;b=1;for(g=c.length;b<g;++b)if(Cd(a,c[b-1],c[b],d,e,f))return!1;return!0};function Ed(a,b,c,d,e,f,g){var h,l,m,n,p,q=e[f+1],r=[],u=c[0];m=a[u-d];p=a[u-d+1];for(h=b;h<u;h+=d){n=a[h];l=a[h+1];if(q<=p&&l<=q||p<=q&&q<=l)m=(q-p)/(l-p)*(n-m)+m,r.push(m);m=n;p=l}u=NaN;p=-Infinity;r.sort(ib);m=r[0];h=1;for(l=r.length;h<l;++h){n=r[h];var x=Math.abs(n-m);x>p&&(m=(m+n)/2,Dd(a,b,c,d,m,q)&&(u=m,p=x));m=n}isNaN(u)&&(u=e[f]);return g?(g.push(u,q),g):[u,q]};function Fd(a,b,c,d,e,f){for(var g=[a[b],a[b+1]],h=[],l;b+d<c;b+=d){h[0]=a[b+d];h[1]=a[b+d+1];if(l=e.call(f,g,h))return l;g[0]=h[0];g[1]=h[1]}return!1};function Gd(a,b,c,d,e){var f=Zb(Lb(),a,b,c,d);return nc(e,f)?Ub(e,f)||f[0]>=e[0]&&f[2]<=e[2]||f[1]>=e[1]&&f[3]<=e[3]?!0:Fd(a,b,c,d,function(a,b){var c=!1,d=Vb(e,a),f=Vb(e,b);if(1===d||1===f)c=!0;else{var p=e[0],q=e[1],r=e[2],u=e[3],x=b[0],v=b[1],D=(v-a[1])/(x-a[0]);f&2&&!(d&2)&&(c=x-(v-u)/D,c=c>=p&&c<=r);c||!(f&4)||d&4||(c=v-(x-r)*D,c=c>=q&&c<=u);c||!(f&8)||d&8||(c=x-(v-q)/D,c=c>=p&&c<=r);c||!(f&16)||d&16||(c=v-(x-p)*D,c=c>=q&&c<=u)}return c}):!1}
+function Hd(a,b,c,d,e){var f=c[0];if(!(Gd(a,b,f,d,e)||Cd(a,b,f,d,e[0],e[1])||Cd(a,b,f,d,e[0],e[3])||Cd(a,b,f,d,e[2],e[1])||Cd(a,b,f,d,e[2],e[3])))return!1;if(1===c.length)return!0;b=1;for(f=c.length;b<f;++b)if(Bd(a,c[b-1],c[b],d,e))return!1;return!0};function Id(a,b,c,d){for(var e=0,f=a[c-d],g=a[c-d+1];b<c;b+=d)var h=a[b],l=a[b+1],e=e+(h-f)*(l+g),f=h,g=l;return 0<e}function Jd(a,b,c,d){var e=0;d=void 0!==d?d:!1;var f,g;f=0;for(g=b.length;f<g;++f){var h=b[f],e=Id(a,e,h,c);if(0===f){if(d&&e||!d&&!e)return!1}else if(d&&!e||!d&&e)return!1;e=h}return!0}
+function Kd(a,b,c,d,e){e=void 0!==e?e:!1;var f,g;f=0;for(g=c.length;f<g;++f){var h=c[f],l=Id(a,b,h,d);if(0===f?e&&l||!e&&!l:e&&!l||!e&&l)for(var l=a,m=h,n=d;b<m-n;){var p;for(p=0;p<n;++p){var q=l[b+p];l[b+p]=l[m-n+p];l[m-n+p]=q}b+=n;m-=n}b=h}return b}function Ld(a,b,c,d){var e=0,f,g;f=0;for(g=b.length;f<g;++f)e=Kd(a,e,b[f],c,d);return e};function E(a,b){hd.call(this);this.i=[];this.C=-1;this.D=null;this.T=this.R=this.S=-1;this.j=null;this.pa(a,b)}y(E,hd);k=E.prototype;k.yj=function(a){this.B?mb(this.B,a.la()):this.B=a.la().slice();this.i.push(this.B.length);this.u()};k.clone=function(){var a=new E(null);a.ba(this.f,this.B.slice(),this.i.slice());return a};
+k.sb=function(a,b,c,d){if(d<Rb(this.H(),a,b))return d;this.R!=this.g&&(this.S=Math.sqrt(pd(this.B,0,this.i,this.a,0)),this.R=this.g);return rd(this.B,0,this.i,this.a,this.S,!0,a,b,c,d)};k.Bc=function(a,b){return Dd(this.Mb(),0,this.i,this.a,a,b)};k.qm=function(){return md(this.Mb(),0,this.i,this.a)};k.Z=function(a){var b;void 0!==a?(b=this.Mb().slice(),Kd(b,0,this.i,this.a,a)):b=this.B;return wd(b,0,this.i,this.a)};k.Db=function(){return this.i};
+function Md(a){if(a.C!=a.g){var b=kc(a.H());a.D=Ed(a.Mb(),0,a.i,a.a,b,0);a.C=a.g}return a.D}k.bk=function(){return new C(Md(this))};k.gk=function(){return this.i.length};k.Hg=function(a){if(0>a||this.i.length<=a)return null;var b=new zd(null);Ad(b,this.f,this.B.slice(0===a?0:this.i[a-1],this.i[a]));return b};k.Vd=function(){var a=this.f,b=this.B,c=this.i,d=[],e=0,f,g;f=0;for(g=c.length;f<g;++f){var h=c[f],l=new zd(null);Ad(l,a,b.slice(e,h));d.push(l);e=h}return d};
+k.Mb=function(){if(this.T!=this.g){var a=this.B;Jd(a,this.i,this.a)?this.j=a:(this.j=a.slice(),this.j.length=Kd(this.j,0,this.i,this.a));this.T=this.g}return this.j};k.Nc=function(a){var b=[],c=[];b.length=yd(this.B,0,this.i,this.a,Math.sqrt(a),b,0,c);a=new E(null);a.ba("XY",b,c);return a};k.X=function(){return"Polygon"};k.Ka=function(a){return Hd(this.Mb(),0,this.i,this.a,a)};
+k.pa=function(a,b){if(a){kd(this,b,a,2);this.B||(this.B=[]);var c=ud(this.B,0,a,this.a,this.i);this.B.length=0===c.length?0:c[c.length-1];this.u()}else this.ba("XY",null,this.i)};k.ba=function(a,b,c){jd(this,a,b);this.i=c;this.u()};function Nd(a,b,c,d){var e=d?d:32;d=[];var f;for(f=0;f<e;++f)mb(d,a.offset(b,c,2*Math.PI*f/e));d.push(d[0],d[1]);a=new E(null);a.ba("XY",d,[d.length]);return a}
+function Od(a){var b=a[0],c=a[1],d=a[2];a=a[3];b=[b,c,b,a,d,a,d,c,b,c];c=new E(null);c.ba("XY",b,[b.length]);return c}function Pd(a,b,c){var d=b?b:32,e=a.va();b=a.f;for(var f=new E(null,b),d=e*(d+1),e=Array(d),g=0;g<d;g++)e[g]=0;f.ba(b,e,[e.length]);Qd(f,a.rd(),a.wf(),c);return f}function Qd(a,b,c,d){var e=a.la(),f=a.f,g=a.va(),h=a.Db(),l=e.length/g-1;d=d?d:0;for(var m,n,p=0;p<=l;++p)n=p*g,m=d+2*xa(p,l)*Math.PI/l,e[n]=b[0]+c*Math.cos(m),e[n+1]=b[1]+c*Math.sin(m);a.ba(f,e,h)};function Rd(a){eb.call(this);a=a||{};this.f=[0,0];var b={};b.center=void 0!==a.center?a.center:null;this.l=Mc(a.projection);var c,d,e,f=void 0!==a.minZoom?a.minZoom:0;c=void 0!==a.maxZoom?a.maxZoom:28;var g=void 0!==a.zoomFactor?a.zoomFactor:2;if(void 0!==a.resolutions)c=a.resolutions,d=c[0],e=c[c.length-1],c=tb(c);else{d=Mc(a.projection);e=d.H();var h=(e?Math.max(ic(e),jc(e)):360*uc.degrees/d.$b())/256/Math.pow(2,0),l=h/Math.pow(2,28);d=a.maxResolution;void 0!==d?f=0:d=h/Math.pow(g,f);e=a.minResolution;
+void 0===e&&(e=void 0!==a.maxZoom?void 0!==a.maxResolution?d/Math.pow(g,c):h/Math.pow(g,c):l);c=f+Math.floor(Math.log(d/e)/Math.log(g));e=d/Math.pow(g,c-f);c=ub(g,d,c-f)}this.a=d;this.c=e;this.j=a.resolutions;this.i=f;f=void 0!==a.extent?Ba(a.extent):Ca;(void 0!==a.enableRotation?a.enableRotation:1)?(d=a.constrainRotation,d=void 0===d||!0===d?yb():!1===d?wb:ea(d)?xb(d):wb):d=vb;this.o=new Da(f,c,d);void 0!==a.resolution?b.resolution=a.resolution:void 0!==a.zoom&&(b.resolution=this.constrainResolution(this.a,
+a.zoom-this.i));b.rotation=void 0!==a.rotation?a.rotation:0;this.G(b)}y(Rd,eb);k=Rd.prototype;k.Pd=function(a){return this.o.center(a)};k.constrainResolution=function(a,b,c){return this.o.resolution(a,b||0,c||0)};k.constrainRotation=function(a,b){return this.o.rotation(a,b||0)};k.ab=function(){return this.get("center")};function Sd(a,b){return void 0!==b?(b[0]=a.f[0],b[1]=a.f[1],b):a.f.slice()}k.Kc=function(a){var b=this.ab(),c=this.$(),d=this.La();return lc(b,c,d,a)};k.Vl=function(){return this.a};
+k.Wl=function(){return this.c};k.Xl=function(){return this.l};k.$=function(){return this.get("resolution")};k.Yl=function(){return this.j};function Td(a,b){return Math.max(ic(a)/b[0],jc(a)/b[1])}function Ud(a){var b=a.a,c=Math.log(b/a.c)/Math.log(2);return function(a){return b/Math.pow(2,a*c)}}k.La=function(){return this.get("rotation")};function Vd(a){var b=a.a,c=Math.log(b/a.c)/Math.log(2);return function(a){return Math.log(b/a)/Math.log(2)/c}}
+k.V=function(){var a=this.ab(),b=this.l,c=this.$(),d=this.La();return{center:[Math.round(a[0]/c)*c,Math.round(a[1]/c)*c],projection:void 0!==b?b:null,resolution:c,rotation:d}};k.Fk=function(){var a,b=this.$();if(void 0!==b){var c,d=0;do{c=this.constrainResolution(this.a,d);if(c==b){a=d;break}++d}while(c>this.c)}return void 0!==a?this.i+a:a};
+k.cf=function(a,b,c){a instanceof hd||(a=Od(a));var d=c||{};c=void 0!==d.padding?d.padding:[0,0,0,0];var e=void 0!==d.constrainResolution?d.constrainResolution:!0,f=void 0!==d.nearest?d.nearest:!1,g;void 0!==d.minResolution?g=d.minResolution:void 0!==d.maxZoom?g=this.constrainResolution(this.a,d.maxZoom-this.i,0):g=0;var h=a.la(),l=this.La(),d=Math.cos(-l),l=Math.sin(-l),m=Infinity,n=Infinity,p=-Infinity,q=-Infinity;a=a.va();for(var r=0,u=h.length;r<u;r+=a)var x=h[r]*d-h[r+1]*l,v=h[r]*l+h[r+1]*d,
+m=Math.min(m,x),n=Math.min(n,v),p=Math.max(p,x),q=Math.max(q,v);b=Td([m,n,p,q],[b[0]-c[1]-c[3],b[1]-c[0]-c[2]]);b=isNaN(b)?g:Math.max(b,g);e&&(g=this.constrainResolution(b,0,0),!f&&g<b&&(g=this.constrainResolution(g,-1,0)),b=g);this.Ub(b);l=-l;f=(m+p)/2+(c[1]-c[3])/2*b;c=(n+q)/2+(c[0]-c[2])/2*b;this.mb([f*d-c*l,c*d+f*l])};
+k.Ej=function(a,b,c){var d=this.La(),e=Math.cos(-d),d=Math.sin(-d),f=a[0]*e-a[1]*d;a=a[1]*e+a[0]*d;var g=this.$(),f=f+(b[0]/2-c[0])*g;a+=(c[1]-b[1]/2)*g;d=-d;this.mb([f*e-a*d,a*e+f*d])};function Wd(a){return!!a.ab()&&void 0!==a.$()}k.rotate=function(a,b){if(void 0!==b){var c,d=this.ab();void 0!==d&&(c=[d[0]-b[0],d[1]-b[1]],Gb(c,a-this.La()),Bb(c,b));this.mb(c)}this.ie(a)};k.mb=function(a){this.set("center",a)};function Xd(a,b){a.f[1]+=b}k.Ub=function(a){this.set("resolution",a)};
+k.ie=function(a){this.set("rotation",a)};k.np=function(a){a=this.constrainResolution(this.a,a-this.i,0);this.Ub(a)};function Yd(a){return Math.pow(a,3)}function Zd(a){return 1-Yd(1-a)}function $d(a){return 3*a*a-2*a*a*a}function ae(a){return a}function be(a){return.5>a?$d(2*a):1-$d(2*(a-.5))};function ce(a){var b=a.source,c=a.start?a.start:Date.now(),d=b[0],e=b[1],f=void 0!==a.duration?a.duration:1E3,g=a.easing?a.easing:$d;return function(a,b){if(b.time<c)return b.animate=!0,b.viewHints[0]+=1,!0;if(b.time<c+f){var m=1-g((b.time-c)/f),n=d-b.viewState.center[0],p=e-b.viewState.center[1];b.animate=!0;b.viewState.center[0]+=m*n;b.viewState.center[1]+=m*p;b.viewHints[0]+=1;return!0}return!1}}
+function de(a){var b=a.rotation?a.rotation:0,c=a.start?a.start:Date.now(),d=void 0!==a.duration?a.duration:1E3,e=a.easing?a.easing:$d,f=a.anchor?a.anchor:null;return function(a,h){if(h.time<c)return h.animate=!0,h.viewHints[0]+=1,!0;if(h.time<c+d){var l=1-e((h.time-c)/d),l=(b-h.viewState.rotation)*l;h.animate=!0;h.viewState.rotation+=l;if(f){var m=h.viewState.center;m[0]-=f[0];m[1]-=f[1];Gb(m,l);Bb(m,f)}h.viewHints[0]+=1;return!0}return!1}}
+function ee(a){var b=a.resolution,c=a.start?a.start:Date.now(),d=void 0!==a.duration?a.duration:1E3,e=a.easing?a.easing:$d;return function(a,g){if(g.time<c)return g.animate=!0,g.viewHints[0]+=1,!0;if(g.time<c+d){var h=1-e((g.time-c)/d),l=b-g.viewState.resolution;g.animate=!0;g.viewState.resolution+=h*l;g.viewHints[0]+=1;return!0}return!1}};function fe(a,b,c,d){this.ca=a;this.ea=b;this.fa=c;this.ga=d}fe.prototype.contains=function(a){return ge(this,a[1],a[2])};function ge(a,b,c){return a.ca<=b&&b<=a.ea&&a.fa<=c&&c<=a.ga}function he(a,b){return a.ca==b.ca&&a.fa==b.fa&&a.ea==b.ea&&a.ga==b.ga}function ie(a,b){return a.ca<=b.ea&&a.ea>=b.ca&&a.fa<=b.ga&&a.ga>=b.fa};function je(a){this.a=a.html;this.b=a.tileRanges?a.tileRanges:null}je.prototype.g=function(){return this.a};function ke(a,b,c){Wa.call(this,a,c);this.element=b}y(ke,Wa);function le(a){eb.call(this);this.a=a?a:[];me(this)}y(le,eb);k=le.prototype;k.clear=function(){for(;0<this.dc();)this.pop()};k.qf=function(a){var b,c;b=0;for(c=a.length;b<c;++b)this.push(a[b]);return this};k.forEach=function(a,b){this.a.forEach(a,b)};k.Gl=function(){return this.a};k.item=function(a){return this.a[a]};k.dc=function(){return this.get("length")};k.ee=function(a,b){this.a.splice(a,0,b);me(this);this.b(new ke("add",b,this))};
+k.pop=function(){return this.Rf(this.dc()-1)};k.push=function(a){var b=this.a.length;this.ee(b,a);return b};k.remove=function(a){var b=this.a,c,d;c=0;for(d=b.length;c<d;++c)if(b[c]===a)return this.Rf(c)};k.Rf=function(a){var b=this.a[a];this.a.splice(a,1);me(this);this.b(new ke("remove",b,this));return b};k.Zo=function(a,b){var c=this.dc();if(a<c)c=this.a[a],this.a[a]=b,this.b(new ke("remove",c,this)),this.b(new ke("add",b,this));else{for(;c<a;++c)this.ee(c,void 0);this.ee(a,b)}};
+function me(a){a.set("length",a.a.length)};function ne(a){return Array.prototype.concat.apply(Array.prototype,arguments)}function oe(a){var b=a.length;if(0<b){for(var c=Array(b),d=0;d<b;d++)c[d]=a[d];return c}return[]}function pe(a,b,c){return 2>=arguments.length?Array.prototype.slice.call(a,b):Array.prototype.slice.call(a,b,c)};var qe=/^#(?:[0-9a-f]{3}){1,2}$/i,re=/^(?:rgb)?\((0|[1-9]\d{0,2}),\s?(0|[1-9]\d{0,2}),\s?(0|[1-9]\d{0,2})\)$/i,se=/^(?:rgba)?\((0|[1-9]\d{0,2}),\s?(0|[1-9]\d{0,2}),\s?(0|[1-9]\d{0,2}),\s?(0|1|0\.\d{0,10})\)$/i;function te(a){return Array.isArray(a)?a:ue(a)}function ve(a){if("string"!==typeof a){var b=a[0];b!=(b|0)&&(b=b+.5|0);var c=a[1];c!=(c|0)&&(c=c+.5|0);var d=a[2];d!=(d|0)&&(d=d+.5|0);a="rgba("+b+","+c+","+d+","+(void 0===a[3]?1:a[3])+")"}return a}
+var ue=function(){var a={},b=0;return function(c){var d;if(a.hasOwnProperty(c))d=a[c];else{if(1024<=b){d=0;for(var e in a)0===(d++&3)&&(delete a[e],--b)}var f,g;qe.exec(c)?(g=3==c.length-1?1:2,d=parseInt(c.substr(1+0*g,g),16),e=parseInt(c.substr(1+1*g,g),16),f=parseInt(c.substr(1+2*g,g),16),1==g&&(d=(d<<4)+d,e=(e<<4)+e,f=(f<<4)+f),d=[d,e,f,1]):(g=se.exec(c))?(d=Number(g[1]),e=Number(g[2]),f=Number(g[3]),g=Number(g[4]),d=[d,e,f,g],d=we(d,d)):(g=re.exec(c))?(d=Number(g[1]),e=Number(g[2]),f=Number(g[3]),
+d=[d,e,f,1],d=we(d,d)):d=void 0;a[c]=d;++b}return d}}();function we(a,b){var c=b||[];c[0]=sa(a[0]+.5|0,0,255);c[1]=sa(a[1]+.5|0,0,255);c[2]=sa(a[2]+.5|0,0,255);c[3]=sa(a[3],0,1);return c};function xe(a){return"string"===typeof a||a instanceof CanvasPattern||a instanceof CanvasGradient?a:ve(a)};var ye;a:{var ze=aa.navigator;if(ze){var Ae=ze.userAgent;if(Ae){ye=Ae;break a}}ye=""}function Be(a){return-1!=ye.indexOf(a)};var Ce=Be("Opera"),Ee=Be("Trident")||Be("MSIE"),Fe=Be("Edge"),Ge=Be("Gecko")&&!(-1!=ye.toLowerCase().indexOf("webkit")&&!Be("Edge"))&&!(Be("Trident")||Be("MSIE"))&&!Be("Edge"),He=-1!=ye.toLowerCase().indexOf("webkit")&&!Be("Edge"),Ie;
+a:{var Je="",Ke=function(){var a=ye;if(Ge)return/rv\:([^\);]+)(\)|;)/.exec(a);if(Fe)return/Edge\/([\d\.]+)/.exec(a);if(Ee)return/\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/.exec(a);if(He)return/WebKit\/(\S+)/.exec(a);if(Ce)return/(?:Version)[ \/]?(\S+)/.exec(a)}();Ke&&(Je=Ke?Ke[1]:"");if(Ee){var Le,Me=aa.document;Le=Me?Me.documentMode:void 0;if(null!=Le&&Le>parseFloat(Je)){Ie=String(Le);break a}}Ie=Je}var Ne={};function Oe(a,b){var c=document.createElement("CANVAS");a&&(c.width=a);b&&(c.height=b);return c.getContext("2d")}
+var Pe=function(){var a;return function(){if(void 0===a){var b=document.createElement("P"),c,d={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};document.body.appendChild(b);for(var e in d)e in b.style&&(b.style[e]="translate(1px,1px)",c=pa.getComputedStyle(b).getPropertyValue(d[e]));document.body.removeChild(b);a=c&&"none"!==c}return a}}(),Qe=function(){var a;return function(){if(void 0===a){var b=document.createElement("P"),
+c,d={webkitTransform:"-webkit-transform",OTransform:"-o-transform",msTransform:"-ms-transform",MozTransform:"-moz-transform",transform:"transform"};document.body.appendChild(b);for(var e in d)e in b.style&&(b.style[e]="translate3d(1px,1px,1px)",c=pa.getComputedStyle(b).getPropertyValue(d[e]));document.body.removeChild(b);a=c&&"none"!==c}return a}}();
+function Re(a,b){var c=a.style;c.WebkitTransform=b;c.MozTransform=b;c.b=b;c.msTransform=b;c.transform=b;if((c=Ee)&&!(c=Ne["9.0"])){for(var c=0,d=qa(String(Ie)).split("."),e=qa("9.0").split("."),f=Math.max(d.length,e.length),g=0;0==c&&g<f;g++){var h=d[g]||"",l=e[g]||"",m=RegExp("(\\d*)(\\D*)","g"),n=RegExp("(\\d*)(\\D*)","g");do{var p=m.exec(h)||["","",""],q=n.exec(l)||["","",""];if(0==p[0].length&&0==q[0].length)break;c=ra(0==p[1].length?0:parseInt(p[1],10),0==q[1].length?0:parseInt(q[1],10))||ra(0==
+p[2].length,0==q[2].length)||ra(p[2],q[2])}while(0==c)}c=Ne["9.0"]=0<=c}c&&(a.style.transformOrigin="0 0")}function Se(a,b){var c;if(Qe()){var d=Array(16);for(c=0;16>c;++c)d[c]=b[c].toFixed(6);Re(a,"matrix3d("+d.join(",")+")")}else if(Pe()){var d=[b[0],b[1],b[4],b[5],b[12],b[13]],e=Array(6);for(c=0;6>c;++c)e[c]=d[c].toFixed(6);Re(a,"matrix("+e.join(",")+")")}else a.style.left=Math.round(b[12])+"px",a.style.top=Math.round(b[13])+"px"}function Te(a,b){var c=b.parentNode;c&&c.replaceChild(a,b)}
+function Ue(a){a&&a.parentNode&&a.parentNode.removeChild(a)}function Ve(a){for(;a.lastChild;)a.removeChild(a.lastChild)};function We(a,b,c){Wa.call(this,a);this.map=b;this.frameState=void 0!==c?c:null}y(We,Wa);function Xe(a){eb.call(this);this.element=a.element?a.element:null;this.a=this.S=null;this.s=[];this.render=a.render?a.render:na;a.target&&this.c(a.target)}y(Xe,eb);Xe.prototype.ka=function(){Ue(this.element);eb.prototype.ka.call(this)};Xe.prototype.i=function(){return this.a};
+Xe.prototype.setMap=function(a){this.a&&Ue(this.element);for(var b=0,c=this.s.length;b<c;++b)Ka(this.s[b]);this.s.length=0;if(this.a=a)(this.S?this.S:a.v).appendChild(this.element),this.render!==na&&this.s.push(B(a,"postrender",this.render,this)),a.render()};Xe.prototype.c=function(a){this.S="string"===typeof a?document.getElementById(a):a};function Ye(){this.g=0;this.f={};this.a=this.b=null}k=Ye.prototype;k.clear=function(){this.g=0;this.f={};this.a=this.b=null};function Ze(a,b){return a.f.hasOwnProperty(b)}k.forEach=function(a,b){for(var c=this.b;c;)a.call(b,c.pc,c.cc,this),c=c.yb};k.get=function(a){a=this.f[a];if(a===this.a)return a.pc;a===this.b?(this.b=this.b.yb,this.b.kc=null):(a.yb.kc=a.kc,a.kc.yb=a.yb);a.yb=null;a.kc=this.a;this.a=this.a.yb=a;return a.pc};k.wc=function(){return this.g};
+k.N=function(){var a=Array(this.g),b=0,c;for(c=this.a;c;c=c.kc)a[b++]=c.cc;return a};k.zc=function(){var a=Array(this.g),b=0,c;for(c=this.a;c;c=c.kc)a[b++]=c.pc;return a};k.pop=function(){var a=this.b;delete this.f[a.cc];a.yb&&(a.yb.kc=null);this.b=a.yb;this.b||(this.a=null);--this.g;return a.pc};k.replace=function(a,b){this.get(a);this.f[a].pc=b};k.set=function(a,b){var c={cc:a,yb:null,kc:this.a,pc:b};this.a?this.a.yb=c:this.b=c;this.a=c;this.f[a]=c;++this.g};function $e(a,b,c,d){return void 0!==d?(d[0]=a,d[1]=b,d[2]=c,d):[a,b,c]}function af(a){var b=a[0],c=Array(b),d=1<<b-1,e,f;for(e=0;e<b;++e)f=48,a[1]&d&&(f+=1),a[2]&d&&(f+=2),c[e]=String.fromCharCode(f),d>>=1;return c.join("")};function bf(a){Ye.call(this);this.c=void 0!==a?a:2048}y(bf,Ye);function cf(a){return a.wc()>a.c}bf.prototype.Lc=function(a){for(var b,c;cf(this)&&!(b=this.b.pc,c=b.ma[0].toString(),c in a&&a[c].contains(b.ma));)Ta(this.pop())};function df(a,b){$a.call(this);this.ma=a;this.state=b;this.a=null;this.key=""}y(df,$a);function ef(a){a.b("change")}df.prototype.ib=function(){return w(this).toString()};df.prototype.i=function(){return this.ma};df.prototype.V=function(){return this.state};function ff(a,b,c){void 0===c&&(c=[0,0]);c[0]=a[0]+2*b;c[1]=a[1]+2*b;return c}function gf(a,b,c){void 0===c&&(c=[0,0]);c[0]=a[0]*b+.5|0;c[1]=a[1]*b+.5|0;return c}function hf(a,b){if(Array.isArray(a))return a;void 0===b?b=[a,a]:(b[0]=a,b[1]=a);return b};function jf(a){eb.call(this);this.f=yc(a.projection);this.l=kf(a.attributions);this.R=a.logo;this.za=void 0!==a.state?a.state:"ready";this.D=void 0!==a.wrapX?a.wrapX:!1}y(jf,eb);function kf(a){if("string"===typeof a)return[new je({html:a})];if(a instanceof je)return[a];if(Array.isArray(a)){for(var b=a.length,c=Array(b),d=0;d<b;d++){var e=a[d];c[d]="string"===typeof e?new je({html:e}):e}return c}return null}k=jf.prototype;k.ra=na;k.wa=function(){return this.l};k.ua=function(){return this.R};k.xa=function(){return this.f};
+k.V=function(){return this.za};k.sa=function(){this.u()};k.oa=function(a){this.l=kf(a);this.u()};function lf(a,b){a.za=b;a.u()};function mf(a){this.minZoom=void 0!==a.minZoom?a.minZoom:0;this.b=a.resolutions;this.maxZoom=this.b.length-1;this.g=void 0!==a.origin?a.origin:null;this.c=null;void 0!==a.origins&&(this.c=a.origins);var b=a.extent;void 0===b||this.g||this.c||(this.g=fc(b));this.i=null;void 0!==a.tileSizes&&(this.i=a.tileSizes);this.o=void 0!==a.tileSize?a.tileSize:this.i?null:256;this.s=void 0!==b?b:null;this.a=null;this.f=[0,0];void 0!==a.sizes?this.a=a.sizes.map(function(a){return new fe(Math.min(0,a[0]),Math.max(a[0]-
+1,-1),Math.min(0,a[1]),Math.max(a[1]-1,-1))},this):b&&nf(this,b)}var of=[0,0,0];k=mf.prototype;k.yg=function(a,b,c){a=pf(this,a,b);for(var d=a.ca,e=a.ea;d<=e;++d)for(var f=a.fa,g=a.ga;f<=g;++f)c([b,d,f])};function qf(a,b,c,d,e){e=a.Ea(b,e);for(b=b[0]-1;b>=a.minZoom;){if(c.call(null,b,pf(a,e,b,d)))return!0;--b}return!1}k.H=function(){return this.s};k.Ig=function(){return this.maxZoom};k.Jg=function(){return this.minZoom};k.Ia=function(a){return this.g?this.g:this.c[a]};k.$=function(a){return this.b[a]};
+k.Kh=function(){return this.b};function rf(a,b,c,d){return b[0]<a.maxZoom?(d=a.Ea(b,d),pf(a,d,b[0]+1,c)):null}function sf(a,b,c,d){tf(a,b[0],b[1],c,!1,of);var e=of[1],f=of[2];tf(a,b[2],b[3],c,!0,of);a=of[1];b=of[2];void 0!==d?(d.ca=e,d.ea=a,d.fa=f,d.ga=b):d=new fe(e,a,f,b);return d}function pf(a,b,c,d){c=a.$(c);return sf(a,b,c,d)}function uf(a,b){var c=a.Ia(b[0]),d=a.$(b[0]),e=hf(a.Ja(b[0]),a.f);return[c[0]+(b[1]+.5)*e[0]*d,c[1]+(b[2]+.5)*e[1]*d]}
+k.Ea=function(a,b){var c=this.Ia(a[0]),d=this.$(a[0]),e=hf(this.Ja(a[0]),this.f),f=c[0]+a[1]*e[0]*d,c=c[1]+a[2]*e[1]*d;return Wb(f,c,f+e[0]*d,c+e[1]*d,b)};k.Zd=function(a,b,c){return tf(this,a[0],a[1],b,!1,c)};function tf(a,b,c,d,e,f){var g=a.Lb(d),h=d/a.$(g),l=a.Ia(g);a=hf(a.Ja(g),a.f);b=h*Math.floor((b-l[0])/d+(e?.5:0))/a[0];c=h*Math.floor((c-l[1])/d+(e?0:.5))/a[1];e?(b=Math.ceil(b)-1,c=Math.ceil(c)-1):(b=Math.floor(b),c=Math.floor(c));return $e(g,b,c,f)}
+k.qd=function(a,b,c){b=this.$(b);return tf(this,a[0],a[1],b,!1,c)};k.Ja=function(a){return this.o?this.o:this.i[a]};k.Lb=function(a,b){var c=kb(this.b,a,b||0);return sa(c,this.minZoom,this.maxZoom)};function nf(a,b){for(var c=a.b.length,d=Array(c),e=a.minZoom;e<c;++e)d[e]=pf(a,b,e);a.a=d}function vf(a){var b=a.l;if(!b){var b=wf(a),c=xf(b,void 0,void 0),b=new mf({extent:b,origin:fc(b),resolutions:c,tileSize:void 0});a.l=b}return b}
+function yf(a){var b={};Ea(b,void 0!==a?a:{});void 0===b.extent&&(b.extent=yc("EPSG:3857").H());b.resolutions=xf(b.extent,b.maxZoom,b.tileSize);delete b.maxZoom;return new mf(b)}function xf(a,b,c){b=void 0!==b?b:42;var d=jc(a);a=ic(a);c=hf(void 0!==c?c:256);c=Math.max(a/c[0],d/c[1]);b+=1;d=Array(b);for(a=0;a<b;++a)d[a]=c/Math.pow(2,a);return d}function wf(a){a=yc(a);var b=a.H();b||(a=180*uc.degrees/a.$b(),b=Wb(-a,-a,a,a));return b};function zf(a){jf.call(this,{attributions:a.attributions,extent:a.extent,logo:a.logo,projection:a.projection,state:a.state,wrapX:a.wrapX});this.ia=void 0!==a.opaque?a.opaque:!1;this.ta=void 0!==a.tilePixelRatio?a.tilePixelRatio:1;this.tileGrid=void 0!==a.tileGrid?a.tileGrid:null;this.a=new bf(a.cacheSize);this.o=[0,0];this.cc=""}y(zf,jf);k=zf.prototype;k.Ah=function(){return cf(this.a)};k.Lc=function(a,b){var c=this.pd(a);c&&c.Lc(b)};
+function Af(a,b,c,d,e){b=a.pd(b);if(!b)return!1;for(var f=!0,g,h,l=d.ca;l<=d.ea;++l)for(var m=d.fa;m<=d.ga;++m)g=a.Eb(c,l,m),h=!1,Ze(b,g)&&(g=b.get(g),(h=2===g.V())&&(h=!1!==e(g))),h||(f=!1);return f}k.Ud=function(){return 0};function Bf(a,b){a.cc!==b&&(a.cc=b,a.u())}k.Eb=function(a,b,c){return a+"/"+b+"/"+c};k.jf=function(){return this.ia};k.Na=function(){return this.tileGrid};k.eb=function(a){return this.tileGrid?this.tileGrid:vf(a)};k.pd=function(a){var b=this.f;return b&&!Oc(b,a)?null:this.a};
+k.bc=function(){return this.ta};k.$d=function(a,b,c){c=this.eb(c);b=this.bc(b);a=hf(c.Ja(a),this.o);return 1==b?a:gf(a,b,this.o)};function Cf(a,b,c){var d=void 0!==c?c:a.f;c=a.eb(d);if(a.D&&d.g){var e=b;b=e[0];a=uf(c,e);d=wf(d);Sb(d,a)?b=e:(e=ic(d),a[0]+=e*Math.ceil((d[0]-a[0])/e),b=c.qd(a,b))}e=b[0];d=b[1];a=b[2];if(c.minZoom>e||e>c.maxZoom)c=!1;else{var f=c.H();c=(c=f?pf(c,f,e):c.a?c.a[e]:null)?ge(c,d,a):!0}return c?b:null}k.sa=function(){this.a.clear();this.u()};k.Yf=na;
+function Df(a,b){Wa.call(this,a);this.tile=b}y(Df,Wa);function Ef(a){a=a?a:{};this.R=document.createElement("UL");this.v=document.createElement("LI");this.R.appendChild(this.v);this.v.style.display="none";this.f=void 0!==a.collapsed?a.collapsed:!0;this.o=void 0!==a.collapsible?a.collapsible:!0;this.o||(this.f=!1);var b=void 0!==a.className?a.className:"ol-attribution",c=void 0!==a.tipLabel?a.tipLabel:"Attributions",d=void 0!==a.collapseLabel?a.collapseLabel:"\u00bb";"string"===typeof d?(this.A=document.createElement("span"),this.A.textContent=d):this.A=
+d;d=void 0!==a.label?a.label:"i";"string"===typeof d?(this.C=document.createElement("span"),this.C.textContent=d):this.C=d;var e=this.o&&!this.f?this.A:this.C,d=document.createElement("button");d.setAttribute("type","button");d.title=c;d.appendChild(e);B(d,"click",this.am,this);c=document.createElement("div");c.className=b+" ol-unselectable ol-control"+(this.f&&this.o?" ol-collapsed":"")+(this.o?"":" ol-uncollapsible");c.appendChild(this.R);c.appendChild(d);Xe.call(this,{element:c,render:a.render?
+a.render:Ff,target:a.target});this.D=!0;this.j={};this.l={};this.T={}}y(Ef,Xe);
+function Ff(a){if(a=a.frameState){var b,c,d,e,f,g,h,l,m,n,p,q=a.layerStatesArray,r=Ea({},a.attributions),u={},x=a.viewState.projection;c=0;for(b=q.length;c<b;c++)if(g=q[c].layer.ha())if(n=w(g).toString(),m=g.l)for(d=0,e=m.length;d<e;d++)if(h=m[d],l=w(h).toString(),!(l in r)){if(f=a.usedTiles[n]){var v=g.eb(x);a:{p=h;var D=x;if(p.b){var A,z,F,N=void 0;for(N in f)if(N in p.b){F=f[N];var K;A=0;for(z=p.b[N].length;A<z;++A){K=p.b[N][A];if(ie(K,F)){p=!0;break a}var X=pf(v,wf(D),parseInt(N,10)),oa=X.ea-
+X.ca+1;if(F.ca<X.ca||F.ea>X.ea)if(ie(K,new fe(xa(F.ca,oa),xa(F.ea,oa),F.fa,F.ga))||F.ea-F.ca+1>oa&&ie(K,X)){p=!0;break a}}}p=!1}else p=!0}}else p=!1;p?(l in u&&delete u[l],r[l]=h):u[l]=h}b=[r,u];c=b[0];b=b[1];for(var H in this.j)H in c?(this.l[H]||(this.j[H].style.display="",this.l[H]=!0),delete c[H]):H in b?(this.l[H]&&(this.j[H].style.display="none",delete this.l[H]),delete b[H]):(Ue(this.j[H]),delete this.j[H],delete this.l[H]);for(H in c)d=document.createElement("LI"),d.innerHTML=c[H].a,this.R.appendChild(d),
+this.j[H]=d,this.l[H]=!0;for(H in b)d=document.createElement("LI"),d.innerHTML=b[H].a,d.style.display="none",this.R.appendChild(d),this.j[H]=d;H=!Ha(this.l)||!Ha(a.logos);this.D!=H&&(this.element.style.display=H?"":"none",this.D=H);H&&Ha(this.l)?this.element.classList.add("ol-logo-only"):this.element.classList.remove("ol-logo-only");var ya;a=a.logos;H=this.T;for(ya in H)ya in a||(Ue(H[ya]),delete H[ya]);for(var Ua in a)b=a[Ua],b instanceof HTMLElement&&(this.v.appendChild(b),H[Ua]=b),Ua in H||(ya=
+new Image,ya.src=Ua,""===b?c=ya:(c=document.createElement("a"),c.href=b,c.appendChild(ya)),this.v.appendChild(c),H[Ua]=c);this.v.style.display=Ha(a)?"none":""}else this.D&&(this.element.style.display="none",this.D=!1)}k=Ef.prototype;k.am=function(a){a.preventDefault();Gf(this)};function Gf(a){a.element.classList.toggle("ol-collapsed");a.f?Te(a.A,a.C):Te(a.C,a.A);a.f=!a.f}k.$l=function(){return this.o};
+k.cm=function(a){this.o!==a&&(this.o=a,this.element.classList.toggle("ol-uncollapsible"),!a&&this.f&&Gf(this))};k.bm=function(a){this.o&&this.f!==a&&Gf(this)};k.Zl=function(){return this.f};function Hf(a){a=a?a:{};var b=void 0!==a.className?a.className:"ol-rotate",c=void 0!==a.label?a.label:"\u21e7";this.f=null;"string"===typeof c?(this.f=document.createElement("span"),this.f.className="ol-compass",this.f.textContent=c):(this.f=c,this.f.classList.add("ol-compass"));var d=a.tipLabel?a.tipLabel:"Reset rotation",c=document.createElement("button");c.className=b+"-reset";c.setAttribute("type","button");c.title=d;c.appendChild(this.f);B(c,"click",Hf.prototype.A,this);d=document.createElement("div");
+d.className=b+" ol-unselectable ol-control";d.appendChild(c);b=a.render?a.render:If;this.o=a.resetNorth?a.resetNorth:void 0;Xe.call(this,{element:d,render:b,target:a.target});this.j=void 0!==a.duration?a.duration:250;this.l=void 0!==a.autoHide?a.autoHide:!0;this.v=void 0;this.l&&this.element.classList.add("ol-hidden")}y(Hf,Xe);
+Hf.prototype.A=function(a){a.preventDefault();if(void 0!==this.o)this.o();else{a=this.a;var b=a.aa();if(b){var c=b.La();void 0!==c&&(0<this.j&&(c%=2*Math.PI,c<-Math.PI&&(c+=2*Math.PI),c>Math.PI&&(c-=2*Math.PI),a.Wa(de({rotation:c,duration:this.j,easing:Zd}))),b.ie(0))}}};
+function If(a){if(a=a.frameState){a=a.viewState.rotation;if(a!=this.v){var b="rotate("+a+"rad)";if(this.l){var c=this.element.classList.contains("ol-hidden");c||0!==a?c&&0!==a&&this.element.classList.remove("ol-hidden"):this.element.classList.add("ol-hidden")}this.f.style.msTransform=b;this.f.style.webkitTransform=b;this.f.style.transform=b}this.v=a}};function Jf(a){a=a?a:{};var b=void 0!==a.className?a.className:"ol-zoom",c=void 0!==a.delta?a.delta:1,d=void 0!==a.zoomInLabel?a.zoomInLabel:"+",e=void 0!==a.zoomOutLabel?a.zoomOutLabel:"\u2212",f=void 0!==a.zoomInTipLabel?a.zoomInTipLabel:"Zoom in",g=void 0!==a.zoomOutTipLabel?a.zoomOutTipLabel:"Zoom out",h=document.createElement("button");h.className=b+"-in";h.setAttribute("type","button");h.title=f;h.appendChild("string"===typeof d?document.createTextNode(d):d);B(h,"click",Jf.prototype.l.bind(this,
+c));d=document.createElement("button");d.className=b+"-out";d.setAttribute("type","button");d.title=g;d.appendChild("string"===typeof e?document.createTextNode(e):e);B(d,"click",Jf.prototype.l.bind(this,-c));c=document.createElement("div");c.className=b+" ol-unselectable ol-control";c.appendChild(h);c.appendChild(d);Xe.call(this,{element:c,target:a.target});this.f=void 0!==a.duration?a.duration:250}y(Jf,Xe);
+Jf.prototype.l=function(a,b){b.preventDefault();var c=this.a,d=c.aa();if(d){var e=d.$();e&&(0<this.f&&c.Wa(ee({resolution:e,duration:this.f,easing:Zd})),c=d.constrainResolution(e,a),d.Ub(c))}};function Kf(a){a=a?a:{};var b=new le;(void 0!==a.zoom?a.zoom:1)&&b.push(new Jf(a.zoomOptions));(void 0!==a.rotate?a.rotate:1)&&b.push(new Hf(a.rotateOptions));(void 0!==a.attribution?a.attribution:1)&&b.push(new Ef(a.attributionOptions));return b};function Lf(a){a=a?a:{};this.f=void 0!==a.className?a.className:"ol-full-screen";var b=void 0!==a.label?a.label:"\u2922";this.o="string"===typeof b?document.createTextNode(b):b;b=void 0!==a.labelActive?a.labelActive:"\u00d7";this.j="string"===typeof b?document.createTextNode(b):b;var c=a.tipLabel?a.tipLabel:"Toggle full-screen",b=document.createElement("button");b.className=this.f+"-"+Mf();b.setAttribute("type","button");b.title=c;b.appendChild(this.o);B(b,"click",this.C,this);c=document.createElement("div");
+c.className=this.f+" ol-unselectable ol-control "+(Nf()?"":"ol-unsupported");c.appendChild(b);Xe.call(this,{element:c,target:a.target});this.A=void 0!==a.keys?a.keys:!1;this.l=a.source}y(Lf,Xe);
+Lf.prototype.C=function(a){a.preventDefault();Nf()&&(a=this.a)&&(Mf()?document.exitFullscreen?document.exitFullscreen():document.msExitFullscreen?document.msExitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen&&document.webkitExitFullscreen():(a=this.l?"string"===typeof this.l?document.getElementById(this.l):this.l:a.yc(),this.A?a.mozRequestFullScreenWithKeys?a.mozRequestFullScreenWithKeys():a.webkitRequestFullscreen?a.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT):
+Of(a):Of(a)))};Lf.prototype.v=function(){var a=this.element.firstElementChild,b=this.a;Mf()?(a.className=this.f+"-true",Te(this.j,this.o)):(a.className=this.f+"-false",Te(this.o,this.j));b&&b.Xc()};Lf.prototype.setMap=function(a){Xe.prototype.setMap.call(this,a);a&&this.s.push(B(pa.document,Pf(),this.v,this))};
+function Nf(){var a=document.body;return!!(a.webkitRequestFullscreen||a.mozRequestFullScreen&&document.mozFullScreenEnabled||a.msRequestFullscreen&&document.msFullscreenEnabled||a.requestFullscreen&&document.fullscreenEnabled)}function Mf(){return!!(document.webkitIsFullScreen||document.mozFullScreen||document.msFullscreenElement||document.fullscreenElement)}
+function Of(a){a.requestFullscreen?a.requestFullscreen():a.msRequestFullscreen?a.msRequestFullscreen():a.mozRequestFullScreen?a.mozRequestFullScreen():a.webkitRequestFullscreen&&a.webkitRequestFullscreen()}var Pf=function(){var a;return function(){if(!a){var b=document.body;b.webkitRequestFullscreen?a="webkitfullscreenchange":b.mozRequestFullScreen?a="mozfullscreenchange":b.msRequestFullscreen?a="MSFullscreenChange":b.requestFullscreen&&(a="fullscreenchange")}return a}}();function Qf(a){a=a?a:{};var b=document.createElement("DIV");b.className=void 0!==a.className?a.className:"ol-mouse-position";Xe.call(this,{element:b,render:a.render?a.render:Rf,target:a.target});B(this,gb("projection"),this.dm,this);a.coordinateFormat&&this.ei(a.coordinateFormat);a.projection&&this.ih(yc(a.projection));this.v=void 0!==a.undefinedHTML?a.undefinedHTML:"";this.j=b.innerHTML;this.o=this.l=this.f=null}y(Qf,Xe);
+function Rf(a){a=a.frameState;a?this.f!=a.viewState.projection&&(this.f=a.viewState.projection,this.l=null):this.f=null;Sf(this,this.o)}k=Qf.prototype;k.dm=function(){this.l=null};k.Cg=function(){return this.get("coordinateFormat")};k.hh=function(){return this.get("projection")};k.Xk=function(a){this.o=this.a.Td(a);Sf(this,this.o)};k.Yk=function(){Sf(this,null);this.o=null};
+k.setMap=function(a){Xe.prototype.setMap.call(this,a);a&&(a=a.a,this.s.push(B(a,"mousemove",this.Xk,this),B(a,"mouseout",this.Yk,this)))};k.ei=function(a){this.set("coordinateFormat",a)};k.ih=function(a){this.set("projection",a)};function Sf(a,b){var c=a.v;if(b&&a.f){if(!a.l){var d=a.hh();a.l=d?Bc(a.f,d):Qc}if(d=a.a.Ma(b))a.l(d,d),c=(c=a.Cg())?c(d):d.toString()}a.j&&c==a.j||(a.element.innerHTML=c,a.j=c)};function Tf(a,b){var c=a;b&&(c=ka(a,b));"function"!=ca(aa.setImmediate)||aa.Window&&aa.Window.prototype&&!Be("Edge")&&aa.Window.prototype.setImmediate==aa.setImmediate?(Uf||(Uf=Vf()),Uf(c)):aa.setImmediate(c)}var Uf;
+function Vf(){var a=aa.MessageChannel;"undefined"===typeof a&&"undefined"!==typeof window&&window.postMessage&&window.addEventListener&&!Be("Presto")&&(a=function(){var a=document.createElement("IFRAME");a.style.display="none";a.src="";document.documentElement.appendChild(a);var b=a.contentWindow,a=b.document;a.open();a.write("");a.close();var c="callImmediate"+Math.random(),d="file:"==b.location.protocol?"*":b.location.protocol+"//"+b.location.host,a=ka(function(a){if(("*"==d||a.origin==d)&&a.data==
+c)this.port1.onmessage()},this);b.addEventListener("message",a,!1);this.port1={};this.port2={postMessage:function(){b.postMessage(c,d)}}});if("undefined"!==typeof a&&!Be("Trident")&&!Be("MSIE")){var b=new a,c={},d=c;b.port1.onmessage=function(){if(void 0!==c.next){c=c.next;var a=c.rg;c.rg=null;a()}};return function(a){d.next={rg:a};d=d.next;b.port2.postMessage(0)}}return"undefined"!==typeof document&&"onreadystatechange"in document.createElement("SCRIPT")?function(a){var b=document.createElement("SCRIPT");
+b.onreadystatechange=function(){b.onreadystatechange=null;b.parentNode.removeChild(b);b=null;a();a=null};document.documentElement.appendChild(b)}:function(a){aa.setTimeout(a,0)}};function Wf(a,b,c){Wa.call(this,a);this.b=b;a=c?c:{};this.buttons=Xf(a);this.pressure=Yf(a,this.buttons);this.bubbles="bubbles"in a?a.bubbles:!1;this.cancelable="cancelable"in a?a.cancelable:!1;this.view="view"in a?a.view:null;this.detail="detail"in a?a.detail:null;this.screenX="screenX"in a?a.screenX:0;this.screenY="screenY"in a?a.screenY:0;this.clientX="clientX"in a?a.clientX:0;this.clientY="clientY"in a?a.clientY:0;this.button="button"in a?a.button:0;this.relatedTarget="relatedTarget"in a?a.relatedTarget:
+null;this.pointerId="pointerId"in a?a.pointerId:0;this.width="width"in a?a.width:0;this.height="height"in a?a.height:0;this.pointerType="pointerType"in a?a.pointerType:"";this.isPrimary="isPrimary"in a?a.isPrimary:!1;b.preventDefault&&(this.preventDefault=function(){b.preventDefault()})}y(Wf,Wa);function Xf(a){if(a.buttons||Zf)a=a.buttons;else switch(a.which){case 1:a=1;break;case 2:a=4;break;case 3:a=2;break;default:a=0}return a}
+function Yf(a,b){var c=0;a.pressure?c=a.pressure:c=b?.5:0;return c}var Zf=!1;try{Zf=1===(new MouseEvent("click",{buttons:1})).buttons}catch(a){};var $f=["experimental-webgl","webgl","webkit-3d","moz-webgl"];function ag(a,b){var c,d,e=$f.length;for(d=0;d<e;++d)try{if(c=a.getContext($f[d],b))return c}catch(f){}return null};var bg,cg="undefined"!==typeof navigator?navigator.userAgent.toLowerCase():"",dg=-1!==cg.indexOf("firefox"),eg=-1!==cg.indexOf("safari")&&-1===cg.indexOf("chrom"),fg=-1!==cg.indexOf("macintosh"),gg=pa.devicePixelRatio||1,hg=!1,ig=function(){if(!("HTMLCanvasElement"in pa))return!1;try{var a=Oe();return a?(a.setLineDash&&(hg=!0),!0):!1}catch(b){return!1}}(),jg="DeviceOrientationEvent"in pa,kg="geolocation"in pa.navigator,lg="ontouchstart"in pa,mg="PointerEvent"in pa,ng=!!pa.navigator.msPointerEnabled,
+og=!1,pg,qg=[];if("WebGLRenderingContext"in pa)try{var rg=ag(document.createElement("CANVAS"),{failIfMajorPerformanceCaveat:!0});rg&&(og=!0,pg=rg.getParameter(rg.MAX_TEXTURE_SIZE),qg=rg.getSupportedExtensions())}catch(a){}bg=og;ma=qg;la=pg;function sg(a,b){this.b=a;this.c=b};function tg(a){sg.call(this,a,{mousedown:this.rl,mousemove:this.sl,mouseup:this.vl,mouseover:this.ul,mouseout:this.tl});this.a=a.g;this.g=[]}y(tg,sg);function ug(a,b){for(var c=a.g,d=b.clientX,e=b.clientY,f=0,g=c.length,h;f<g&&(h=c[f]);f++){var l=Math.abs(e-h[1]);if(25>=Math.abs(d-h[0])&&25>=l)return!0}return!1}function vg(a){var b=wg(a,a),c=b.preventDefault;b.preventDefault=function(){a.preventDefault();c()};b.pointerId=1;b.isPrimary=!0;b.pointerType="mouse";return b}k=tg.prototype;
+k.rl=function(a){if(!ug(this,a)){if((1).toString()in this.a){var b=vg(a);xg(this.b,yg,b,a);delete this.a[(1).toString()]}b=vg(a);this.a[(1).toString()]=a;xg(this.b,zg,b,a)}};k.sl=function(a){if(!ug(this,a)){var b=vg(a);xg(this.b,Ag,b,a)}};k.vl=function(a){if(!ug(this,a)){var b=this.a[(1).toString()];b&&b.button===a.button&&(b=vg(a),xg(this.b,Bg,b,a),delete this.a[(1).toString()])}};k.ul=function(a){if(!ug(this,a)){var b=vg(a);Cg(this.b,b,a)}};
+k.tl=function(a){if(!ug(this,a)){var b=vg(a);Dg(this.b,b,a)}};function Eg(a){sg.call(this,a,{MSPointerDown:this.Al,MSPointerMove:this.Bl,MSPointerUp:this.El,MSPointerOut:this.Cl,MSPointerOver:this.Dl,MSPointerCancel:this.zl,MSGotPointerCapture:this.xl,MSLostPointerCapture:this.yl});this.a=a.g;this.g=["","unavailable","touch","pen","mouse"]}y(Eg,sg);function Fg(a,b){var c=b;ea(b.pointerType)&&(c=wg(b,b),c.pointerType=a.g[b.pointerType]);return c}k=Eg.prototype;k.Al=function(a){this.a[a.pointerId.toString()]=a;var b=Fg(this,a);xg(this.b,zg,b,a)};
+k.Bl=function(a){var b=Fg(this,a);xg(this.b,Ag,b,a)};k.El=function(a){var b=Fg(this,a);xg(this.b,Bg,b,a);delete this.a[a.pointerId.toString()]};k.Cl=function(a){var b=Fg(this,a);Dg(this.b,b,a)};k.Dl=function(a){var b=Fg(this,a);Cg(this.b,b,a)};k.zl=function(a){var b=Fg(this,a);xg(this.b,yg,b,a);delete this.a[a.pointerId.toString()]};k.yl=function(a){this.b.b(new Wf("lostpointercapture",a,a))};k.xl=function(a){this.b.b(new Wf("gotpointercapture",a,a))};function Gg(a){sg.call(this,a,{pointerdown:this.lo,pointermove:this.mo,pointerup:this.po,pointerout:this.no,pointerover:this.oo,pointercancel:this.ko,gotpointercapture:this.Gk,lostpointercapture:this.ql})}y(Gg,sg);k=Gg.prototype;k.lo=function(a){Hg(this.b,a)};k.mo=function(a){Hg(this.b,a)};k.po=function(a){Hg(this.b,a)};k.no=function(a){Hg(this.b,a)};k.oo=function(a){Hg(this.b,a)};k.ko=function(a){Hg(this.b,a)};k.ql=function(a){Hg(this.b,a)};k.Gk=function(a){Hg(this.b,a)};function Ig(a,b){sg.call(this,a,{touchstart:this.sp,touchmove:this.rp,touchend:this.qp,touchcancel:this.pp});this.a=a.g;this.l=b;this.g=void 0;this.i=0;this.f=void 0}y(Ig,sg);k=Ig.prototype;k.ci=function(){this.i=0;this.f=void 0};
+function Jg(a,b,c){b=wg(b,c);b.pointerId=c.identifier+2;b.bubbles=!0;b.cancelable=!0;b.detail=a.i;b.button=0;b.buttons=1;b.width=c.webkitRadiusX||c.radiusX||0;b.height=c.webkitRadiusY||c.radiusY||0;b.pressure=c.webkitForce||c.force||.5;b.isPrimary=a.g===c.identifier;b.pointerType="touch";b.clientX=c.clientX;b.clientY=c.clientY;b.screenX=c.screenX;b.screenY=c.screenY;return b}
+function Kg(a,b,c){function d(){b.preventDefault()}var e=Array.prototype.slice.call(b.changedTouches),f=e.length,g,h;for(g=0;g<f;++g)h=Jg(a,b,e[g]),h.preventDefault=d,c.call(a,b,h)}
+k.sp=function(a){var b=a.touches,c=Object.keys(this.a),d=c.length;if(d>=b.length){var e=[],f,g,h;for(f=0;f<d;++f){g=c[f];h=this.a[g];var l;if(!(l=1==g))a:{l=b.length;for(var m,n=0;n<l;n++)if(m=b[n],m.identifier===g-2){l=!0;break a}l=!1}l||e.push(h.out)}for(f=0;f<e.length;++f)this.Ue(a,e[f])}b=a.changedTouches[0];c=Object.keys(this.a).length;if(0===c||1===c&&(1).toString()in this.a)this.g=b.identifier,void 0!==this.f&&pa.clearTimeout(this.f);Lg(this,a);this.i++;Kg(this,a,this.fo)};
+k.fo=function(a,b){this.a[b.pointerId]={target:b.target,out:b,Lh:b.target};var c=this.b;b.bubbles=!0;xg(c,Mg,b,a);c=this.b;b.bubbles=!1;xg(c,Ng,b,a);xg(this.b,zg,b,a)};k.rp=function(a){a.preventDefault();Kg(this,a,this.wl)};k.wl=function(a,b){var c=this.a[b.pointerId];if(c){var d=c.out,e=c.Lh;xg(this.b,Ag,b,a);d&&e!==b.target&&(d.relatedTarget=b.target,b.relatedTarget=e,d.target=e,b.target?(Dg(this.b,d,a),Cg(this.b,b,a)):(b.target=e,b.relatedTarget=null,this.Ue(a,b)));c.out=b;c.Lh=b.target}};
+k.qp=function(a){Lg(this,a);Kg(this,a,this.tp)};k.tp=function(a,b){xg(this.b,Bg,b,a);this.b.out(b,a);var c=this.b;b.bubbles=!1;xg(c,Og,b,a);delete this.a[b.pointerId];b.isPrimary&&(this.g=void 0,this.f=pa.setTimeout(this.ci.bind(this),200))};k.pp=function(a){Kg(this,a,this.Ue)};k.Ue=function(a,b){xg(this.b,yg,b,a);this.b.out(b,a);var c=this.b;b.bubbles=!1;xg(c,Og,b,a);delete this.a[b.pointerId];b.isPrimary&&(this.g=void 0,this.f=pa.setTimeout(this.ci.bind(this),200))};
+function Lg(a,b){var c=a.l.g,d=b.changedTouches[0];if(a.g===d.identifier){var e=[d.clientX,d.clientY];c.push(e);pa.setTimeout(function(){nb(c,e)},2500)}};function Pg(a){$a.call(this);this.i=a;this.g={};this.c={};this.a=[];mg?Qg(this,new Gg(this)):ng?Qg(this,new Eg(this)):(a=new tg(this),Qg(this,a),lg&&Qg(this,new Ig(this,a)));a=this.a.length;for(var b,c=0;c<a;c++)b=this.a[c],Rg(this,Object.keys(b.c))}y(Pg,$a);function Qg(a,b){var c=Object.keys(b.c);c&&(c.forEach(function(a){var c=b.c[a];c&&(this.c[a]=c.bind(b))},a),a.a.push(b))}Pg.prototype.f=function(a){var b=this.c[a.type];b&&b(a)};
+function Rg(a,b){b.forEach(function(a){B(this.i,a,this.f,this)},a)}function Sg(a,b){b.forEach(function(a){Qa(this.i,a,this.f,this)},a)}function wg(a,b){for(var c={},d,e=0,f=Tg.length;e<f;e++)d=Tg[e][0],c[d]=a[d]||b[d]||Tg[e][1];return c}Pg.prototype.out=function(a,b){a.bubbles=!0;xg(this,Ug,a,b)};function Dg(a,b,c){a.out(b,c);var d=b.target,e=b.relatedTarget;d&&e&&d.contains(e)||(b.bubbles=!1,xg(a,Og,b,c))}
+function Cg(a,b,c){b.bubbles=!0;xg(a,Mg,b,c);var d=b.target,e=b.relatedTarget;d&&e&&d.contains(e)||(b.bubbles=!1,xg(a,Ng,b,c))}function xg(a,b,c,d){a.b(new Wf(b,d,c))}function Hg(a,b){a.b(new Wf(b.type,b,b))}Pg.prototype.ka=function(){for(var a=this.a.length,b,c=0;c<a;c++)b=this.a[c],Sg(this,Object.keys(b.c));$a.prototype.ka.call(this)};
+var Ag="pointermove",zg="pointerdown",Bg="pointerup",Mg="pointerover",Ug="pointerout",Ng="pointerenter",Og="pointerleave",yg="pointercancel",Tg=[["bubbles",!1],["cancelable",!1],["view",null],["detail",null],["screenX",0],["screenY",0],["clientX",0],["clientY",0],["ctrlKey",!1],["altKey",!1],["shiftKey",!1],["metaKey",!1],["button",0],["relatedTarget",null],["buttons",0],["pointerId",0],["width",0],["height",0],["pressure",0],["tiltX",0],["tiltY",0],["pointerType",""],["hwTimestamp",0],["isPrimary",
+!1],["type",""],["target",null],["currentTarget",null],["which",0]];function Vg(a,b,c,d,e){We.call(this,a,b,e);this.originalEvent=c;this.pixel=b.Td(c);this.coordinate=b.Ma(this.pixel);this.dragging=void 0!==d?d:!1}y(Vg,We);Vg.prototype.preventDefault=function(){We.prototype.preventDefault.call(this);this.originalEvent.preventDefault()};Vg.prototype.stopPropagation=function(){We.prototype.stopPropagation.call(this);this.originalEvent.stopPropagation()};function Wg(a,b,c,d,e){Vg.call(this,a,b,c.b,d,e);this.b=c}y(Wg,Vg);
+function Xg(a){$a.call(this);this.f=a;this.l=0;this.o=!1;this.c=[];this.g=null;a=this.f.a;this.U=0;this.v={};this.i=new Pg(a);this.a=null;this.j=B(this.i,zg,this.$k,this);this.s=B(this.i,Ag,this.No,this)}y(Xg,$a);function Yg(a,b){var c;c=new Wg(Zg,a.f,b);a.b(c);0!==a.l?(pa.clearTimeout(a.l),a.l=0,c=new Wg($g,a.f,b),a.b(c)):a.l=pa.setTimeout(function(){this.l=0;var a=new Wg(ah,this.f,b);this.b(a)}.bind(a),250)}
+function bh(a,b){b.type==ch||b.type==dh?delete a.v[b.pointerId]:b.type==eh&&(a.v[b.pointerId]=!0);a.U=Object.keys(a.v).length}k=Xg.prototype;k.Qg=function(a){bh(this,a);var b=new Wg(ch,this.f,a);this.b(b);!this.o&&0===a.button&&Yg(this,this.g);0===this.U&&(this.c.forEach(Ka),this.c.length=0,this.o=!1,this.g=null,Ta(this.a),this.a=null)};
+k.$k=function(a){bh(this,a);var b=new Wg(eh,this.f,a);this.b(b);this.g=a;0===this.c.length&&(this.a=new Pg(document),this.c.push(B(this.a,fh,this.Sl,this),B(this.a,ch,this.Qg,this),B(this.i,dh,this.Qg,this)))};k.Sl=function(a){if(a.clientX!=this.g.clientX||a.clientY!=this.g.clientY){this.o=!0;var b=new Wg(gh,this.f,a,this.o);this.b(b)}a.preventDefault()};k.No=function(a){this.b(new Wg(a.type,this.f,a,!(!this.g||a.clientX==this.g.clientX&&a.clientY==this.g.clientY)))};
+k.ka=function(){this.s&&(Ka(this.s),this.s=null);this.j&&(Ka(this.j),this.j=null);this.c.forEach(Ka);this.c.length=0;this.a&&(Ta(this.a),this.a=null);this.i&&(Ta(this.i),this.i=null);$a.prototype.ka.call(this)};var ah="singleclick",Zg="click",$g="dblclick",gh="pointerdrag",fh="pointermove",eh="pointerdown",ch="pointerup",dh="pointercancel",hh={Mp:ah,Bp:Zg,Cp:$g,Fp:gh,Ip:fh,Ep:eh,Lp:ch,Kp:"pointerover",Jp:"pointerout",Gp:"pointerenter",Hp:"pointerleave",Dp:dh};function ih(a){eb.call(this);var b=Ea({},a);b.opacity=void 0!==a.opacity?a.opacity:1;b.visible=void 0!==a.visible?a.visible:!0;b.zIndex=void 0!==a.zIndex?a.zIndex:0;b.maxResolution=void 0!==a.maxResolution?a.maxResolution:Infinity;b.minResolution=void 0!==a.minResolution?a.minResolution:0;this.G(b)}y(ih,eb);
+function jh(a){var b=a.Pb(),c=a.kf(),d=a.xb(),e=a.H(),f=a.Qb(),g=a.Nb(),h=a.Ob();return{layer:a,opacity:sa(b,0,1),R:c,visible:d,Qc:!0,extent:e,zIndex:f,maxResolution:g,minResolution:Math.max(h,0)}}k=ih.prototype;k.H=function(){return this.get("extent")};k.Nb=function(){return this.get("maxResolution")};k.Ob=function(){return this.get("minResolution")};k.Pb=function(){return this.get("opacity")};k.xb=function(){return this.get("visible")};k.Qb=function(){return this.get("zIndex")};
+k.fc=function(a){this.set("extent",a)};k.nc=function(a){this.set("maxResolution",a)};k.oc=function(a){this.set("minResolution",a)};k.gc=function(a){this.set("opacity",a)};k.hc=function(a){this.set("visible",a)};k.ic=function(a){this.set("zIndex",a)};function kh(){};function lh(a,b,c,d,e,f){Wa.call(this,a,b);this.vectorContext=c;this.frameState=d;this.context=e;this.glContext=f}y(lh,Wa);function mh(a){var b=Ea({},a);delete b.source;ih.call(this,b);this.v=this.j=this.o=null;a.map&&this.setMap(a.map);B(this,gb("source"),this.fl,this);this.Fc(a.source?a.source:null)}y(mh,ih);function nh(a,b){return a.visible&&b>=a.minResolution&&b<a.maxResolution}k=mh.prototype;k.hf=function(a){a=a?a:[];a.push(jh(this));return a};k.ha=function(){return this.get("source")||null};k.kf=function(){var a=this.ha();return a?a.V():"undefined"};k.Lm=function(){this.u()};
+k.fl=function(){this.v&&(Ka(this.v),this.v=null);var a=this.ha();a&&(this.v=B(a,"change",this.Lm,this));this.u()};k.setMap=function(a){this.o&&(Ka(this.o),this.o=null);a||this.u();this.j&&(Ka(this.j),this.j=null);a&&(this.o=B(a,"precompose",function(a){var c=jh(this);c.Qc=!1;c.zIndex=Infinity;a.frameState.layerStatesArray.push(c);a.frameState.layerStates[w(this)]=c},this),this.j=B(this,"change",a.render,a),this.u())};k.Fc=function(a){this.set("source",a)};function oh(a,b,c,d,e){$a.call(this);this.l=e;this.extent=a;this.f=c;this.resolution=b;this.state=d}y(oh,$a);function ph(a){a.b("change")}oh.prototype.H=function(){return this.extent};oh.prototype.$=function(){return this.resolution};oh.prototype.V=function(){return this.state};function qh(a,b,c,d,e,f,g,h){ad(a);0===b&&0===c||dd(a,b,c);1==d&&1==e||ed(a,d,e);0!==f&&fd(a,f);0===g&&0===h||dd(a,g,h);return a}function rh(a,b){return a[0]==b[0]&&a[1]==b[1]&&a[4]==b[4]&&a[5]==b[5]&&a[12]==b[12]&&a[13]==b[13]}function sh(a,b,c){var d=a[1],e=a[5],f=a[13],g=b[0];b=b[1];c[0]=a[0]*g+a[4]*b+a[12];c[1]=d*g+e*b+f;return c};function th(a){bb.call(this);this.a=a}y(th,bb);k=th.prototype;k.ra=na;k.Cc=function(a,b,c,d){a=a.slice();sh(b.pixelToCoordinateMatrix,a,a);if(this.ra(a,b,qc,this))return c.call(d,this.a)};k.le=rc;k.Qd=function(a,b,c){return function(d,e){return Af(a,b,d,e,function(a){c[d]||(c[d]={});c[d][a.ma.toString()]=a})}};k.Om=function(a){2===a.target.V()&&uh(this)};function vh(a,b){var c=b.V();2!=c&&3!=c&&B(b,"change",a.Om,a);0==c&&(b.load(),c=b.V());return 2==c}
+function uh(a){var b=a.a;b.xb()&&"ready"==b.kf()&&a.u()}function wh(a,b){b.Ah()&&a.postRenderFunctions.push(function(a,b,e){b=w(a).toString();a.Lc(e.viewState.projection,e.usedTiles[b])}.bind(null,b))}function xh(a,b){if(b){var c,d,e;d=0;for(e=b.length;d<e;++d)c=b[d],a[w(c).toString()]=c}}function yh(a,b){var c=b.R;void 0!==c&&("string"===typeof c?a.logos[c]="":fa(c)&&(a.logos[c.src]=c.href))}
+function zh(a,b,c,d){b=w(b).toString();c=c.toString();b in a?c in a[b]?(a=a[b][c],d.ca<a.ca&&(a.ca=d.ca),d.ea>a.ea&&(a.ea=d.ea),d.fa<a.fa&&(a.fa=d.fa),d.ga>a.ga&&(a.ga=d.ga)):a[b][c]=d:(a[b]={},a[b][c]=d)}function Ah(a,b,c){return[b*(Math.round(a[0]/b)+c[0]%2/2),b*(Math.round(a[1]/b)+c[1]%2/2)]}
+function Bh(a,b,c,d,e,f,g,h,l,m){var n=w(b).toString();n in a.wantedTiles||(a.wantedTiles[n]={});var p=a.wantedTiles[n];a=a.tileQueue;var q=c.minZoom,r,u,x,v,D,A;for(A=g;A>=q;--A)for(u=pf(c,f,A,u),x=c.$(A),v=u.ca;v<=u.ea;++v)for(D=u.fa;D<=u.ga;++D)g-A<=h?(r=b.ac(A,v,D,d,e),0==r.V()&&(p[r.ma.toString()]=!0,r.ib()in a.g||a.f([r,n,uf(c,r.ma),x])),void 0!==l&&l.call(m,r)):b.Yf(A,v,D,e)};function Ch(a){this.v=a.opacity;this.U=a.rotateWithView;this.j=a.rotation;this.i=a.scale;this.C=a.snapToPixel}k=Ch.prototype;k.qe=function(){return this.v};k.Xd=function(){return this.U};k.re=function(){return this.j};k.se=function(){return this.i};k.Yd=function(){return this.C};k.te=function(a){this.v=a};k.ue=function(a){this.j=a};k.ve=function(a){this.i=a};function Dh(a){a=a||{};this.c=void 0!==a.anchor?a.anchor:[.5,.5];this.f=null;this.a=void 0!==a.anchorOrigin?a.anchorOrigin:"top-left";this.o=void 0!==a.anchorXUnits?a.anchorXUnits:"fraction";this.s=void 0!==a.anchorYUnits?a.anchorYUnits:"fraction";var b=void 0!==a.crossOrigin?a.crossOrigin:null,c=void 0!==a.img?a.img:null,d=void 0!==a.imgSize?a.imgSize:null,e=a.src;void 0!==e&&0!==e.length||!c||(e=c.src||w(c).toString());var f=void 0!==a.src?0:2,g=void 0!==a.color?te(a.color):null,h=Eh.Zb(),l=h.get(e,
+b,g);l||(l=new Fh(c,e,d,b,f,g),h.set(e,b,g,l));this.b=l;this.D=void 0!==a.offset?a.offset:[0,0];this.g=void 0!==a.offsetOrigin?a.offsetOrigin:"top-left";this.l=null;this.A=void 0!==a.size?a.size:null;Ch.call(this,{opacity:void 0!==a.opacity?a.opacity:1,rotation:void 0!==a.rotation?a.rotation:0,scale:void 0!==a.scale?a.scale:1,snapToPixel:void 0!==a.snapToPixel?a.snapToPixel:!0,rotateWithView:void 0!==a.rotateWithView?a.rotateWithView:!1})}y(Dh,Ch);k=Dh.prototype;
+k.Yb=function(){if(this.f)return this.f;var a=this.c,b=this.Fb();if("fraction"==this.o||"fraction"==this.s){if(!b)return null;a=this.c.slice();"fraction"==this.o&&(a[0]*=b[0]);"fraction"==this.s&&(a[1]*=b[1])}if("top-left"!=this.a){if(!b)return null;a===this.c&&(a=this.c.slice());if("top-right"==this.a||"bottom-right"==this.a)a[0]=-a[0]+b[0];if("bottom-left"==this.a||"bottom-right"==this.a)a[1]=-a[1]+b[1]}return this.f=a};k.jc=function(){var a=this.b;return a.c?a.c:a.a};k.ld=function(){return this.b.g};
+k.td=function(){return this.b.f};k.pe=function(){var a=this.b;if(!a.o)if(a.s){var b=a.g[0],c=a.g[1],d=Oe(b,c);d.fillRect(0,0,b,c);a.o=d.canvas}else a.o=a.a;return a.o};k.Ia=function(){if(this.l)return this.l;var a=this.D;if("top-left"!=this.g){var b=this.Fb(),c=this.b.g;if(!b||!c)return null;a=a.slice();if("top-right"==this.g||"bottom-right"==this.g)a[0]=c[0]-b[0]-a[0];if("bottom-left"==this.g||"bottom-right"==this.g)a[1]=c[1]-b[1]-a[1]}return this.l=a};k.En=function(){return this.b.j};
+k.Fb=function(){return this.A?this.A:this.b.g};k.pf=function(a,b){return B(this.b,"change",a,b)};k.load=function(){this.b.load()};k.Xf=function(a,b){Qa(this.b,"change",a,b)};function Fh(a,b,c,d,e,f){$a.call(this);this.o=null;this.a=a?a:new Image;null!==d&&(this.a.crossOrigin=d);this.c=f?document.createElement("CANVAS"):null;this.l=f;this.i=null;this.f=e;this.g=c;this.j=b;this.s=!1;2==this.f&&Gh(this)}y(Fh,$a);
+function Gh(a){var b=Oe(1,1);try{b.drawImage(a.a,0,0),b.getImageData(0,0,1,1)}catch(c){a.s=!0}}Fh.prototype.v=function(){this.f=3;this.i.forEach(Ka);this.i=null;this.b("change")};
+Fh.prototype.U=function(){this.f=2;this.g&&(this.a.width=this.g[0],this.a.height=this.g[1]);this.g=[this.a.width,this.a.height];this.i.forEach(Ka);this.i=null;Gh(this);if(!this.s&&null!==this.l){this.c.width=this.a.width;this.c.height=this.a.height;var a=this.c.getContext("2d");a.drawImage(this.a,0,0);for(var b=a.getImageData(0,0,this.a.width,this.a.height),c=b.data,d=this.l[0]/255,e=this.l[1]/255,f=this.l[2]/255,g=0,h=c.length;g<h;g+=4)c[g]*=d,c[g+1]*=e,c[g+2]*=f;a.putImageData(b,0,0)}this.b("change")};
+Fh.prototype.load=function(){if(0==this.f){this.f=1;this.i=[Pa(this.a,"error",this.v,this),Pa(this.a,"load",this.U,this)];try{this.a.src=this.j}catch(a){this.v()}}};function Eh(){this.b={};this.a=0}ba(Eh);Eh.prototype.clear=function(){this.b={};this.a=0};Eh.prototype.get=function(a,b,c){a=b+":"+a+":"+(c?ve(c):"null");return a in this.b?this.b[a]:null};Eh.prototype.set=function(a,b,c,d){this.b[b+":"+a+":"+(c?ve(c):"null")]=d;++this.a};function Hh(a,b){this.i=b;this.g={};this.s={}}y(Hh,Sa);function Ih(a){var b=a.viewState,c=a.coordinateToPixelMatrix;qh(c,a.size[0]/2,a.size[1]/2,1/b.resolution,-1/b.resolution,-b.rotation,-b.center[0],-b.center[1]);cd(c,a.pixelToCoordinateMatrix)}k=Hh.prototype;k.ka=function(){for(var a in this.g)Ta(this.g[a])};function Jh(){var a=Eh.Zb();if(32<a.a){var b=0,c,d;for(c in a.b)d=a.b[c],0!==(b++&3)||ab(d)||(delete a.b[c],--a.a)}}
+k.ra=function(a,b,c,d,e,f){function g(a,e){var f=w(a).toString(),g=b.layerStates[w(e)].Qc;if(!(f in b.skippedFeatureUids)||g)return c.call(d,a,g?e:null)}var h,l=b.viewState,m=l.resolution,n=l.projection,l=a;if(n.a){var n=n.H(),p=ic(n),q=a[0];if(q<n[0]||q>n[2])l=[q+p*Math.ceil((n[0]-q)/p),a[1]]}n=b.layerStatesArray;for(p=n.length-1;0<=p;--p){var r=n[p],q=r.layer;if(nh(r,m)&&e.call(f,q)&&(r=Kh(this,q),q.ha()&&(h=r.ra(q.ha().D?l:a,b,g,d)),h))return h}};
+k.rh=function(a,b,c,d,e,f){var g,h=b.viewState.resolution,l=b.layerStatesArray,m;for(m=l.length-1;0<=m;--m){g=l[m];var n=g.layer;if(nh(g,h)&&e.call(f,n)&&(g=Kh(this,n).Cc(a,b,c,d)))return g}};k.sh=function(a,b,c,d){return void 0!==this.ra(a,b,qc,this,c,d)};function Kh(a,b){var c=w(b).toString();if(c in a.g)return a.g[c];var d=a.Xe(b);a.g[c]=d;a.s[c]=B(d,"change",a.Rk,a);return d}k.Rk=function(){this.i.render()};k.Ce=na;
+k.To=function(a,b){for(var c in this.g)if(!(b&&c in b.layerStates)){var d=c,e=this.g[d];delete this.g[d];Ka(this.s[d]);delete this.s[d];Ta(e)}};function Lh(a,b){for(var c in a.g)if(!(c in b.layerStates)){b.postRenderFunctions.push(a.To.bind(a));break}}function rb(a,b){return a.zIndex-b.zIndex};function Mh(a,b){this.j=a;this.l=b;this.b=[];this.a=[];this.g={}}Mh.prototype.clear=function(){this.b.length=0;this.a.length=0;Fa(this.g)};function Nh(a){var b=a.b,c=a.a,d=b[0];1==b.length?(b.length=0,c.length=0):(b[0]=b.pop(),c[0]=c.pop(),Oh(a,0));b=a.l(d);delete a.g[b];return d}Mh.prototype.f=function(a){var b=this.j(a);return Infinity!=b?(this.b.push(a),this.a.push(b),this.g[this.l(a)]=!0,Ph(this,0,this.b.length-1),!0):!1};Mh.prototype.wc=function(){return this.b.length};
+Mh.prototype.Ya=function(){return 0===this.b.length};function Oh(a,b){for(var c=a.b,d=a.a,e=c.length,f=c[b],g=d[b],h=b;b<e>>1;){var l=2*b+1,m=2*b+2,l=m<e&&d[m]<d[l]?m:l;c[b]=c[l];d[b]=d[l];b=l}c[b]=f;d[b]=g;Ph(a,h,b)}function Ph(a,b,c){var d=a.b;a=a.a;for(var e=d[c],f=a[c];c>b;){var g=c-1>>1;if(a[g]>f)d[c]=d[g],a[c]=a[g],c=g;else break}d[c]=e;a[c]=f}
+function Qh(a){var b=a.j,c=a.b,d=a.a,e=0,f=c.length,g,h,l;for(h=0;h<f;++h)g=c[h],l=b(g),Infinity==l?delete a.g[a.l(g)]:(d[e]=l,c[e++]=g);c.length=e;d.length=e;for(b=(a.b.length>>1)-1;0<=b;b--)Oh(a,b)};function Rh(a,b){Mh.call(this,function(b){return a.apply(null,b)},function(a){return a[0].ib()});this.s=b;this.i=0;this.c={}}y(Rh,Mh);Rh.prototype.f=function(a){var b=Mh.prototype.f.call(this,a);b&&B(a[0],"change",this.o,this);return b};Rh.prototype.o=function(a){a=a.target;var b=a.V();if(2===b||3===b||4===b||5===b)Qa(a,"change",this.o,this),a=a.ib(),a in this.c&&(delete this.c[a],--this.i),this.s()};
+function Sh(a,b,c){for(var d=0,e,f;a.i<b&&d<c&&0<a.wc();)e=Nh(a)[0],f=e.ib(),0!==e.V()||f in a.c||(a.c[f]=!0,++a.i,++d,e.load())};function Th(a,b,c){this.f=a;this.g=b;this.i=c;this.b=[];this.a=this.c=0}function Uh(a,b){var c=a.f,d=a.a,e=a.g-d,f=Math.log(a.g/a.a)/a.f;return ce({source:b,duration:f,easing:function(a){return d*(Math.exp(c*a*f)-1)/e}})};function Vh(a){eb.call(this);this.v=null;this.i(!0);this.handleEvent=a.handleEvent}y(Vh,eb);Vh.prototype.f=function(){return this.get("active")};Vh.prototype.l=function(){return this.v};Vh.prototype.i=function(a){this.set("active",a)};Vh.prototype.setMap=function(a){this.v=a};function Wh(a,b,c,d,e){if(void 0!==c){var f=b.La(),g=b.ab();void 0!==f&&g&&e&&0<e&&(a.Wa(de({rotation:f,duration:e,easing:Zd})),d&&a.Wa(ce({source:g,duration:e,easing:Zd})));b.rotate(c,d)}}
+function Xh(a,b,c,d,e){var f=b.$();c=b.constrainResolution(f,c,0);Yh(a,b,c,d,e)}function Yh(a,b,c,d,e){if(c){var f=b.$(),g=b.ab();void 0!==f&&g&&c!==f&&e&&0<e&&(a.Wa(ee({resolution:f,duration:e,easing:Zd})),d&&a.Wa(ce({source:g,duration:e,easing:Zd})));if(d){var h;a=b.ab();e=b.$();void 0!==a&&void 0!==e&&(h=[d[0]-c*(d[0]-a[0])/e,d[1]-c*(d[1]-a[1])/e]);b.mb(h)}b.Ub(c)}};function Zh(a){a=a?a:{};this.a=a.delta?a.delta:1;Vh.call(this,{handleEvent:$h});this.c=void 0!==a.duration?a.duration:250}y(Zh,Vh);function $h(a){var b=!1,c=a.originalEvent;if(a.type==$g){var b=a.map,d=a.coordinate,c=c.shiftKey?-this.a:this.a,e=b.aa();Xh(b,e,c,d,this.c);a.preventDefault();b=!0}return!b};function ai(a){a=a.originalEvent;return a.altKey&&!(a.metaKey||a.ctrlKey)&&a.shiftKey}function bi(a){a=a.originalEvent;return 0==a.button&&!(He&&fg&&a.ctrlKey)}function ci(a){return"pointermove"==a.type}function di(a){return a.type==ah}function ei(a){a=a.originalEvent;return!a.altKey&&!(a.metaKey||a.ctrlKey)&&!a.shiftKey}function fi(a){a=a.originalEvent;return!a.altKey&&!(a.metaKey||a.ctrlKey)&&a.shiftKey}
+function gi(a){a=a.originalEvent.target.tagName;return"INPUT"!==a&&"SELECT"!==a&&"TEXTAREA"!==a}function hi(a){return"mouse"==a.b.pointerType}function ii(a){a=a.b;return a.isPrimary&&0===a.button};function ji(a){a=a?a:{};Vh.call(this,{handleEvent:a.handleEvent?a.handleEvent:ki});this.Oe=a.handleDownEvent?a.handleDownEvent:rc;this.Pe=a.handleDragEvent?a.handleDragEvent:na;this.Mi=a.handleMoveEvent?a.handleMoveEvent:na;this.tj=a.handleUpEvent?a.handleUpEvent:rc;this.C=!1;this.ia={};this.o=[]}y(ji,Vh);function li(a){for(var b=a.length,c=0,d=0,e=0;e<b;e++)c+=a[e].clientX,d+=a[e].clientY;return[c/b,d/b]}
+function ki(a){if(!(a instanceof Wg))return!0;var b=!1,c=a.type;if(c===eh||c===gh||c===ch)c=a.b,a.type==ch?delete this.ia[c.pointerId]:a.type==eh?this.ia[c.pointerId]=c:c.pointerId in this.ia&&(this.ia[c.pointerId]=c),this.o=Ga(this.ia);this.C&&(a.type==gh?this.Pe(a):a.type==ch&&(this.C=this.tj(a)));a.type==eh?(this.C=a=this.Oe(a),b=this.Gc(a)):a.type==fh&&this.Mi(a);return!b}ji.prototype.Gc=function(a){return a};function mi(a){ji.call(this,{handleDownEvent:ni,handleDragEvent:oi,handleUpEvent:pi});a=a?a:{};this.a=a.kinetic;this.c=this.j=null;this.A=a.condition?a.condition:ei;this.s=!1}y(mi,ji);function oi(a){var b=li(this.o);this.a&&this.a.b.push(b[0],b[1],Date.now());if(this.c){var c=this.c[0]-b[0],d=b[1]-this.c[1];a=a.map;var e=a.aa(),f=e.V(),d=c=[c,d],g=f.resolution;d[0]*=g;d[1]*=g;Gb(c,f.rotation);Bb(c,f.center);c=e.Pd(c);a.render();e.mb(c)}this.c=b}
+function pi(a){a=a.map;var b=a.aa();if(0===this.o.length){var c;if(c=!this.s&&this.a)if(c=this.a,6>c.b.length)c=!1;else{var d=Date.now()-c.i,e=c.b.length-3;if(c.b[e+2]<d)c=!1;else{for(var f=e-3;0<f&&c.b[f+2]>d;)f-=3;var d=c.b[e+2]-c.b[f+2],g=c.b[e]-c.b[f],e=c.b[e+1]-c.b[f+1];c.c=Math.atan2(e,g);c.a=Math.sqrt(g*g+e*e)/d;c=c.a>c.g}}c&&(c=this.a,c=(c.g-c.a)/c.f,e=this.a.c,f=b.ab(),this.j=Uh(this.a,f),a.Wa(this.j),f=a.Ga(f),c=a.Ma([f[0]-c*Math.cos(e),f[1]-c*Math.sin(e)]),c=b.Pd(c),b.mb(c));Xd(b,-1);a.render();
+return!1}this.c=null;return!0}function ni(a){if(0<this.o.length&&this.A(a)){var b=a.map,c=b.aa();this.c=null;this.C||Xd(c,1);b.render();this.j&&nb(b.R,this.j)&&(c.mb(a.frameState.viewState.center),this.j=null);this.a&&(a=this.a,a.b.length=0,a.c=0,a.a=0);this.s=1<this.o.length;return!0}return!1}mi.prototype.Gc=rc;function qi(a){a=a?a:{};ji.call(this,{handleDownEvent:ri,handleDragEvent:si,handleUpEvent:ti});this.c=a.condition?a.condition:ai;this.a=void 0;this.j=void 0!==a.duration?a.duration:250}y(qi,ji);function si(a){if(hi(a)){var b=a.map,c=b.Za();a=a.pixel;c=Math.atan2(c[1]/2-a[1],a[0]-c[0]/2);if(void 0!==this.a){a=c-this.a;var d=b.aa(),e=d.La();b.render();Wh(b,d,e-a)}this.a=c}}
+function ti(a){if(!hi(a))return!0;a=a.map;var b=a.aa();Xd(b,-1);var c=b.La(),d=this.j,c=b.constrainRotation(c,0);Wh(a,b,c,void 0,d);return!1}function ri(a){return hi(a)&&bi(a)&&this.c(a)?(a=a.map,Xd(a.aa(),1),a.render(),this.a=void 0,!0):!1}qi.prototype.Gc=rc;function ui(a){this.f=null;this.a=document.createElement("div");this.a.style.position="absolute";this.a.className="ol-box "+a;this.g=this.c=this.b=null}y(ui,Sa);ui.prototype.ka=function(){this.setMap(null)};function vi(a){var b=a.c,c=a.g;a=a.a.style;a.left=Math.min(b[0],c[0])+"px";a.top=Math.min(b[1],c[1])+"px";a.width=Math.abs(c[0]-b[0])+"px";a.height=Math.abs(c[1]-b[1])+"px"}
+ui.prototype.setMap=function(a){if(this.b){this.b.A.removeChild(this.a);var b=this.a.style;b.left=b.top=b.width=b.height="inherit"}(this.b=a)&&this.b.A.appendChild(this.a)};function wi(a){var b=a.c,c=a.g,b=[b,[b[0],c[1]],c,[c[0],b[1]]].map(a.b.Ma,a.b);b[4]=b[0].slice();a.f?a.f.pa([b]):a.f=new E([b])}ui.prototype.W=function(){return this.f};function xi(a,b,c){Wa.call(this,a);this.coordinate=b;this.mapBrowserEvent=c}y(xi,Wa);function yi(a){ji.call(this,{handleDownEvent:zi,handleDragEvent:Ai,handleUpEvent:Bi});a=a?a:{};this.a=new ui(a.className||"ol-dragbox");this.c=null;this.D=a.condition?a.condition:qc;this.A=a.boxEndCondition?a.boxEndCondition:Ci}y(yi,ji);function Ci(a,b,c){a=c[0]-b[0];b=c[1]-b[1];return 64<=a*a+b*b}
+function Ai(a){if(hi(a)){var b=this.a,c=a.pixel;b.c=this.c;b.g=c;wi(b);vi(b);this.b(new xi("boxdrag",a.coordinate,a))}}yi.prototype.W=function(){return this.a.W()};yi.prototype.s=na;function Bi(a){if(!hi(a))return!0;this.a.setMap(null);this.A(a,this.c,a.pixel)&&(this.s(a),this.b(new xi("boxend",a.coordinate,a)));return!1}
+function zi(a){if(hi(a)&&bi(a)&&this.D(a)){this.c=a.pixel;this.a.setMap(a.map);var b=this.a,c=this.c;b.c=this.c;b.g=c;wi(b);vi(b);this.b(new xi("boxstart",a.coordinate,a));return!0}return!1};function Di(a){a=a?a:{};var b=a.condition?a.condition:fi;this.j=void 0!==a.duration?a.duration:200;this.R=void 0!==a.out?a.out:!1;yi.call(this,{condition:b,className:a.className||"ol-dragzoom"})}y(Di,yi);
+Di.prototype.s=function(){var a=this.v,b=a.aa(),c=a.Za(),d=this.W().H();if(this.R){var e=b.Kc(c),d=[a.Ga(cc(d)),a.Ga(ec(d))],f=Wb(Infinity,Infinity,-Infinity,-Infinity,void 0),g,h;g=0;for(h=d.length;g<h;++g)Mb(f,d[g]);oc(e,1/Td(f,c));d=e}c=b.constrainResolution(Td(d,c));e=b.$();f=b.ab();a.Wa(ee({resolution:e,duration:this.j,easing:Zd}));a.Wa(ce({source:f,duration:this.j,easing:Zd}));b.mb(kc(d));b.Ub(c)};function Ei(a){Vh.call(this,{handleEvent:Fi});a=a||{};this.a=function(a){return ei(a)&&gi(a)};this.c=void 0!==a.condition?a.condition:this.a;this.o=void 0!==a.duration?a.duration:100;this.j=void 0!==a.pixelDelta?a.pixelDelta:128}y(Ei,Vh);
+function Fi(a){var b=!1;if("keydown"==a.type){var c=a.originalEvent.keyCode;if(this.c(a)&&(40==c||37==c||39==c||38==c)){var d=a.map,b=d.aa(),e=b.$()*this.j,f=0,g=0;40==c?g=-e:37==c?f=-e:39==c?f=e:g=e;c=[f,g];Gb(c,b.La());e=this.o;if(f=b.ab())e&&0<e&&d.Wa(ce({source:f,duration:e,easing:ae})),d=b.Pd([f[0]+c[0],f[1]+c[1]]),b.mb(d);a.preventDefault();b=!0}}return!b};function Gi(a){Vh.call(this,{handleEvent:Hi});a=a?a:{};this.c=a.condition?a.condition:gi;this.a=a.delta?a.delta:1;this.o=void 0!==a.duration?a.duration:100}y(Gi,Vh);function Hi(a){var b=!1;if("keydown"==a.type||"keypress"==a.type){var c=a.originalEvent.charCode;if(this.c(a)&&(43==c||45==c)){b=a.map;c=43==c?this.a:-this.a;b.render();var d=b.aa();Xh(b,d,c,void 0,this.o);a.preventDefault();b=!0}}return!b};function Ii(a){Vh.call(this,{handleEvent:Ji});a=a||{};this.c=0;this.C=void 0!==a.duration?a.duration:250;this.s=void 0!==a.useAnchor?a.useAnchor:!0;this.a=null;this.j=this.o=void 0}y(Ii,Vh);
+function Ji(a){var b=!1;if("wheel"==a.type||"mousewheel"==a.type){var b=a.map,c=a.originalEvent;this.s&&(this.a=a.coordinate);var d;"wheel"==a.type?(d=c.deltaY,dg&&c.deltaMode===pa.WheelEvent.DOM_DELTA_PIXEL&&(d/=gg),c.deltaMode===pa.WheelEvent.DOM_DELTA_LINE&&(d*=40)):"mousewheel"==a.type&&(d=-c.wheelDeltaY,eg&&(d/=3));this.c+=d;void 0===this.o&&(this.o=Date.now());d=Math.max(80-(Date.now()-this.o),0);pa.clearTimeout(this.j);this.j=pa.setTimeout(this.A.bind(this,b),d);a.preventDefault();b=!0}return!b}
+Ii.prototype.A=function(a){var b=sa(this.c,-1,1),c=a.aa();a.render();Xh(a,c,-b,this.a,this.C);this.c=0;this.a=null;this.j=this.o=void 0};Ii.prototype.D=function(a){this.s=a;a||(this.a=null)};function Ki(a){ji.call(this,{handleDownEvent:Li,handleDragEvent:Mi,handleUpEvent:Ni});a=a||{};this.c=null;this.j=void 0;this.a=!1;this.s=0;this.D=void 0!==a.threshold?a.threshold:.3;this.A=void 0!==a.duration?a.duration:250}y(Ki,ji);
+function Mi(a){var b=0,c=this.o[0],d=this.o[1],c=Math.atan2(d.clientY-c.clientY,d.clientX-c.clientX);void 0!==this.j&&(b=c-this.j,this.s+=b,!this.a&&Math.abs(this.s)>this.D&&(this.a=!0));this.j=c;a=a.map;c=a.a.getBoundingClientRect();d=li(this.o);d[0]-=c.left;d[1]-=c.top;this.c=a.Ma(d);this.a&&(c=a.aa(),d=c.La(),a.render(),Wh(a,c,d+b,this.c))}
+function Ni(a){if(2>this.o.length){a=a.map;var b=a.aa();Xd(b,-1);if(this.a){var c=b.La(),d=this.c,e=this.A,c=b.constrainRotation(c,0);Wh(a,b,c,d,e)}return!1}return!0}function Li(a){return 2<=this.o.length?(a=a.map,this.c=null,this.j=void 0,this.a=!1,this.s=0,this.C||Xd(a.aa(),1),a.render(),!0):!1}Ki.prototype.Gc=rc;function Oi(a){ji.call(this,{handleDownEvent:Pi,handleDragEvent:Qi,handleUpEvent:Ri});a=a?a:{};this.c=null;this.s=void 0!==a.duration?a.duration:400;this.a=void 0;this.j=1}y(Oi,ji);function Qi(a){var b=1,c=this.o[0],d=this.o[1],e=c.clientX-d.clientX,c=c.clientY-d.clientY,e=Math.sqrt(e*e+c*c);void 0!==this.a&&(b=this.a/e);this.a=e;1!=b&&(this.j=b);a=a.map;var e=a.aa(),c=e.$(),d=a.a.getBoundingClientRect(),f=li(this.o);f[0]-=d.left;f[1]-=d.top;this.c=a.Ma(f);a.render();Yh(a,e,c*b,this.c)}
+function Ri(a){if(2>this.o.length){a=a.map;var b=a.aa();Xd(b,-1);var c=b.$(),d=this.c,e=this.s,c=b.constrainResolution(c,0,this.j-1);Yh(a,b,c,d,e);return!1}return!0}function Pi(a){return 2<=this.o.length?(a=a.map,this.c=null,this.a=void 0,this.j=1,this.C||Xd(a.aa(),1),a.render(),!0):!1}Oi.prototype.Gc=rc;function Si(a){a=a?a:{};var b=new le,c=new Th(-.005,.05,100);(void 0!==a.altShiftDragRotate?a.altShiftDragRotate:1)&&b.push(new qi);(void 0!==a.doubleClickZoom?a.doubleClickZoom:1)&&b.push(new Zh({delta:a.zoomDelta,duration:a.zoomDuration}));(void 0!==a.dragPan?a.dragPan:1)&&b.push(new mi({kinetic:c}));(void 0!==a.pinchRotate?a.pinchRotate:1)&&b.push(new Ki);(void 0!==a.pinchZoom?a.pinchZoom:1)&&b.push(new Oi({duration:a.zoomDuration}));if(void 0!==a.keyboard?a.keyboard:1)b.push(new Ei),b.push(new Gi({delta:a.zoomDelta,
+duration:a.zoomDuration}));(void 0!==a.mouseWheelZoom?a.mouseWheelZoom:1)&&b.push(new Ii({duration:a.zoomDuration}));(void 0!==a.shiftDragZoom?a.shiftDragZoom:1)&&b.push(new Di({duration:a.zoomDuration}));return b};function Ti(a){var b=a||{};a=Ea({},b);delete a.layers;b=b.layers;ih.call(this,a);this.f=[];this.a={};B(this,gb("layers"),this.Tk,this);b?Array.isArray(b)&&(b=new le(b.slice())):b=new le;this.oh(b)}y(Ti,ih);k=Ti.prototype;k.ce=function(){this.xb()&&this.u()};
+k.Tk=function(){this.f.forEach(Ka);this.f.length=0;var a=this.Tc();this.f.push(B(a,"add",this.Sk,this),B(a,"remove",this.Uk,this));for(var b in this.a)this.a[b].forEach(Ka);Fa(this.a);var a=a.a,c,d;b=0;for(c=a.length;b<c;b++)d=a[b],this.a[w(d).toString()]=[B(d,"propertychange",this.ce,this),B(d,"change",this.ce,this)];this.u()};k.Sk=function(a){a=a.element;var b=w(a).toString();this.a[b]=[B(a,"propertychange",this.ce,this),B(a,"change",this.ce,this)];this.u()};
+k.Uk=function(a){a=w(a.element).toString();this.a[a].forEach(Ka);delete this.a[a];this.u()};k.Tc=function(){return this.get("layers")};k.oh=function(a){this.set("layers",a)};
+k.hf=function(a){var b=void 0!==a?a:[],c=b.length;this.Tc().forEach(function(a){a.hf(b)});a=jh(this);var d,e;for(d=b.length;c<d;c++)e=b[c],e.opacity*=a.opacity,e.visible=e.visible&&a.visible,e.maxResolution=Math.min(e.maxResolution,a.maxResolution),e.minResolution=Math.max(e.minResolution,a.minResolution),void 0!==a.extent&&(e.extent=void 0!==e.extent?mc(e.extent,a.extent):a.extent);return b};k.kf=function(){return"ready"};function Ui(a){vc.call(this,{code:a,units:"m",extent:Vi,global:!0,worldExtent:Wi})}y(Ui,vc);Ui.prototype.getPointResolution=function(a,b){return a/ta(b[1]/6378137)};var Xi=6378137*Math.PI,Vi=[-Xi,-Xi,Xi,Xi],Wi=[-180,-85,180,85],Hc="EPSG:3857 EPSG:102100 EPSG:102113 EPSG:900913 urn:ogc:def:crs:EPSG:6.18:3:3857 urn:ogc:def:crs:EPSG::3857 http://www.opengis.net/gml/srs/epsg.xml#3857".split(" ").map(function(a){return new Ui(a)});
+function Ic(a,b,c){var d=a.length;c=1<c?c:2;void 0===b&&(2<c?b=a.slice():b=Array(d));for(var e=0;e<d;e+=c)b[e]=6378137*Math.PI*a[e]/180,b[e+1]=6378137*Math.log(Math.tan(Math.PI*(a[e+1]+90)/360));return b}function Jc(a,b,c){var d=a.length;c=1<c?c:2;void 0===b&&(2<c?b=a.slice():b=Array(d));for(var e=0;e<d;e+=c)b[e]=180*a[e]/(6378137*Math.PI),b[e+1]=360*Math.atan(Math.exp(a[e+1]/6378137))/Math.PI-90;return b};var Yi=new sc(6378137);function Zi(a,b){vc.call(this,{code:a,units:"degrees",extent:$i,axisOrientation:b,global:!0,metersPerUnit:aj,worldExtent:$i})}y(Zi,vc);Zi.prototype.getPointResolution=function(a){return a};
+var $i=[-180,-90,180,90],aj=Math.PI*Yi.radius/180,Kc=[new Zi("CRS:84"),new Zi("EPSG:4326","neu"),new Zi("urn:ogc:def:crs:EPSG::4326","neu"),new Zi("urn:ogc:def:crs:EPSG:6.6:4326","neu"),new Zi("urn:ogc:def:crs:OGC:1.3:CRS84"),new Zi("urn:ogc:def:crs:OGC:2:84"),new Zi("http://www.opengis.net/gml/srs/epsg.xml#4326","neu"),new Zi("urn:x-ogc:def:crs:EPSG:4326","neu")];function bj(){zc(Hc);zc(Kc);Gc()};function cj(a){mh.call(this,a?a:{})}y(cj,mh);function dj(a){a=a?a:{};var b=Ea({},a);delete b.preload;delete b.useInterimTilesOnError;mh.call(this,b);this.l(void 0!==a.preload?a.preload:0);this.A(void 0!==a.useInterimTilesOnError?a.useInterimTilesOnError:!0)}y(dj,mh);dj.prototype.f=function(){return this.get("preload")};dj.prototype.l=function(a){this.set("preload",a)};dj.prototype.c=function(){return this.get("useInterimTilesOnError")};dj.prototype.A=function(a){this.set("useInterimTilesOnError",a)};var ej=[0,0,0,1],fj=[],gj=[0,0,0,1];function hj(a,b,c,d){0!==b&&(a.translate(c,d),a.rotate(b),a.translate(-c,-d))};function ij(a){a=a||{};this.b=void 0!==a.color?a.color:null;this.a=void 0}ij.prototype.g=function(){return this.b};ij.prototype.f=function(a){this.b=a;this.a=void 0};function jj(a){void 0===a.a&&(a.a=a.b instanceof CanvasPattern||a.b instanceof CanvasGradient?w(a.b).toString():"f"+(a.b?ve(a.b):"-"));return a.a};function kj(){this.a=-1};function lj(){this.a=64;this.b=Array(4);this.c=Array(this.a);this.b[0]=1732584193;this.b[1]=4023233417;this.b[2]=2562383102;this.b[3]=271733878;this.f=this.g=0}(function(){function a(){}a.prototype=kj.prototype;lj.a=kj.prototype;lj.prototype=new a;lj.prototype.constructor=lj;lj.b=function(a,c,d){for(var e=Array(arguments.length-2),f=2;f<arguments.length;f++)e[f-2]=arguments[f];return kj.prototype[c].apply(a,e)}})();
+function mj(a,b,c){c||(c=0);var d=Array(16);if(da(b))for(var e=0;16>e;++e)d[e]=b.charCodeAt(c++)|b.charCodeAt(c++)<<8|b.charCodeAt(c++)<<16|b.charCodeAt(c++)<<24;else for(e=0;16>e;++e)d[e]=b[c++]|b[c++]<<8|b[c++]<<16|b[c++]<<24;b=a.b[0];c=a.b[1];var e=a.b[2],f=a.b[3],g;g=b+(f^c&(e^f))+d[0]+3614090360&4294967295;b=c+(g<<7&4294967295|g>>>25);g=f+(e^b&(c^e))+d[1]+3905402710&4294967295;f=b+(g<<12&4294967295|g>>>20);g=e+(c^f&(b^c))+d[2]+606105819&4294967295;e=f+(g<<17&4294967295|g>>>15);g=c+(b^e&(f^b))+
+d[3]+3250441966&4294967295;c=e+(g<<22&4294967295|g>>>10);g=b+(f^c&(e^f))+d[4]+4118548399&4294967295;b=c+(g<<7&4294967295|g>>>25);g=f+(e^b&(c^e))+d[5]+1200080426&4294967295;f=b+(g<<12&4294967295|g>>>20);g=e+(c^f&(b^c))+d[6]+2821735955&4294967295;e=f+(g<<17&4294967295|g>>>15);g=c+(b^e&(f^b))+d[7]+4249261313&4294967295;c=e+(g<<22&4294967295|g>>>10);g=b+(f^c&(e^f))+d[8]+1770035416&4294967295;b=c+(g<<7&4294967295|g>>>25);g=f+(e^b&(c^e))+d[9]+2336552879&4294967295;f=b+(g<<12&4294967295|g>>>20);g=e+(c^f&
+(b^c))+d[10]+4294925233&4294967295;e=f+(g<<17&4294967295|g>>>15);g=c+(b^e&(f^b))+d[11]+2304563134&4294967295;c=e+(g<<22&4294967295|g>>>10);g=b+(f^c&(e^f))+d[12]+1804603682&4294967295;b=c+(g<<7&4294967295|g>>>25);g=f+(e^b&(c^e))+d[13]+4254626195&4294967295;f=b+(g<<12&4294967295|g>>>20);g=e+(c^f&(b^c))+d[14]+2792965006&4294967295;e=f+(g<<17&4294967295|g>>>15);g=c+(b^e&(f^b))+d[15]+1236535329&4294967295;c=e+(g<<22&4294967295|g>>>10);g=b+(e^f&(c^e))+d[1]+4129170786&4294967295;b=c+(g<<5&4294967295|g>>>
+27);g=f+(c^e&(b^c))+d[6]+3225465664&4294967295;f=b+(g<<9&4294967295|g>>>23);g=e+(b^c&(f^b))+d[11]+643717713&4294967295;e=f+(g<<14&4294967295|g>>>18);g=c+(f^b&(e^f))+d[0]+3921069994&4294967295;c=e+(g<<20&4294967295|g>>>12);g=b+(e^f&(c^e))+d[5]+3593408605&4294967295;b=c+(g<<5&4294967295|g>>>27);g=f+(c^e&(b^c))+d[10]+38016083&4294967295;f=b+(g<<9&4294967295|g>>>23);g=e+(b^c&(f^b))+d[15]+3634488961&4294967295;e=f+(g<<14&4294967295|g>>>18);g=c+(f^b&(e^f))+d[4]+3889429448&4294967295;c=e+(g<<20&4294967295|
+g>>>12);g=b+(e^f&(c^e))+d[9]+568446438&4294967295;b=c+(g<<5&4294967295|g>>>27);g=f+(c^e&(b^c))+d[14]+3275163606&4294967295;f=b+(g<<9&4294967295|g>>>23);g=e+(b^c&(f^b))+d[3]+4107603335&4294967295;e=f+(g<<14&4294967295|g>>>18);g=c+(f^b&(e^f))+d[8]+1163531501&4294967295;c=e+(g<<20&4294967295|g>>>12);g=b+(e^f&(c^e))+d[13]+2850285829&4294967295;b=c+(g<<5&4294967295|g>>>27);g=f+(c^e&(b^c))+d[2]+4243563512&4294967295;f=b+(g<<9&4294967295|g>>>23);g=e+(b^c&(f^b))+d[7]+1735328473&4294967295;e=f+(g<<14&4294967295|
+g>>>18);g=c+(f^b&(e^f))+d[12]+2368359562&4294967295;c=e+(g<<20&4294967295|g>>>12);g=b+(c^e^f)+d[5]+4294588738&4294967295;b=c+(g<<4&4294967295|g>>>28);g=f+(b^c^e)+d[8]+2272392833&4294967295;f=b+(g<<11&4294967295|g>>>21);g=e+(f^b^c)+d[11]+1839030562&4294967295;e=f+(g<<16&4294967295|g>>>16);g=c+(e^f^b)+d[14]+4259657740&4294967295;c=e+(g<<23&4294967295|g>>>9);g=b+(c^e^f)+d[1]+2763975236&4294967295;b=c+(g<<4&4294967295|g>>>28);g=f+(b^c^e)+d[4]+1272893353&4294967295;f=b+(g<<11&4294967295|g>>>21);g=e+(f^
+b^c)+d[7]+4139469664&4294967295;e=f+(g<<16&4294967295|g>>>16);g=c+(e^f^b)+d[10]+3200236656&4294967295;c=e+(g<<23&4294967295|g>>>9);g=b+(c^e^f)+d[13]+681279174&4294967295;b=c+(g<<4&4294967295|g>>>28);g=f+(b^c^e)+d[0]+3936430074&4294967295;f=b+(g<<11&4294967295|g>>>21);g=e+(f^b^c)+d[3]+3572445317&4294967295;e=f+(g<<16&4294967295|g>>>16);g=c+(e^f^b)+d[6]+76029189&4294967295;c=e+(g<<23&4294967295|g>>>9);g=b+(c^e^f)+d[9]+3654602809&4294967295;b=c+(g<<4&4294967295|g>>>28);g=f+(b^c^e)+d[12]+3873151461&4294967295;
+f=b+(g<<11&4294967295|g>>>21);g=e+(f^b^c)+d[15]+530742520&4294967295;e=f+(g<<16&4294967295|g>>>16);g=c+(e^f^b)+d[2]+3299628645&4294967295;c=e+(g<<23&4294967295|g>>>9);g=b+(e^(c|~f))+d[0]+4096336452&4294967295;b=c+(g<<6&4294967295|g>>>26);g=f+(c^(b|~e))+d[7]+1126891415&4294967295;f=b+(g<<10&4294967295|g>>>22);g=e+(b^(f|~c))+d[14]+2878612391&4294967295;e=f+(g<<15&4294967295|g>>>17);g=c+(f^(e|~b))+d[5]+4237533241&4294967295;c=e+(g<<21&4294967295|g>>>11);g=b+(e^(c|~f))+d[12]+1700485571&4294967295;b=c+
+(g<<6&4294967295|g>>>26);g=f+(c^(b|~e))+d[3]+2399980690&4294967295;f=b+(g<<10&4294967295|g>>>22);g=e+(b^(f|~c))+d[10]+4293915773&4294967295;e=f+(g<<15&4294967295|g>>>17);g=c+(f^(e|~b))+d[1]+2240044497&4294967295;c=e+(g<<21&4294967295|g>>>11);g=b+(e^(c|~f))+d[8]+1873313359&4294967295;b=c+(g<<6&4294967295|g>>>26);g=f+(c^(b|~e))+d[15]+4264355552&4294967295;f=b+(g<<10&4294967295|g>>>22);g=e+(b^(f|~c))+d[6]+2734768916&4294967295;e=f+(g<<15&4294967295|g>>>17);g=c+(f^(e|~b))+d[13]+1309151649&4294967295;
+c=e+(g<<21&4294967295|g>>>11);g=b+(e^(c|~f))+d[4]+4149444226&4294967295;b=c+(g<<6&4294967295|g>>>26);g=f+(c^(b|~e))+d[11]+3174756917&4294967295;f=b+(g<<10&4294967295|g>>>22);g=e+(b^(f|~c))+d[2]+718787259&4294967295;e=f+(g<<15&4294967295|g>>>17);g=c+(f^(e|~b))+d[9]+3951481745&4294967295;a.b[0]=a.b[0]+b&4294967295;a.b[1]=a.b[1]+(e+(g<<21&4294967295|g>>>11))&4294967295;a.b[2]=a.b[2]+e&4294967295;a.b[3]=a.b[3]+f&4294967295}
+function nj(a,b){var c;void 0===c&&(c=b.length);for(var d=c-a.a,e=a.c,f=a.g,g=0;g<c;){if(0==f)for(;g<=d;)mj(a,b,g),g+=a.a;if(da(b))for(;g<c;){if(e[f++]=b.charCodeAt(g++),f==a.a){mj(a,e);f=0;break}}else for(;g<c;)if(e[f++]=b[g++],f==a.a){mj(a,e);f=0;break}}a.g=f;a.f+=c};function oj(a){a=a||{};this.b=void 0!==a.color?a.color:null;this.f=a.lineCap;this.g=void 0!==a.lineDash?a.lineDash:null;this.c=a.lineJoin;this.i=a.miterLimit;this.a=a.width;this.l=void 0}k=oj.prototype;k.Kn=function(){return this.b};k.dk=function(){return this.f};k.Ln=function(){return this.g};k.ek=function(){return this.c};k.jk=function(){return this.i};k.Mn=function(){return this.a};k.Nn=function(a){this.b=a;this.l=void 0};k.fp=function(a){this.f=a;this.l=void 0};
+k.On=function(a){this.g=a;this.l=void 0};k.gp=function(a){this.c=a;this.l=void 0};k.hp=function(a){this.i=a;this.l=void 0};k.lp=function(a){this.a=a;this.l=void 0};
+function pj(a){if(void 0===a.l){var b="s"+(a.b?ve(a.b):"-")+","+(void 0!==a.f?a.f.toString():"-")+","+(a.g?a.g.toString():"-")+","+(void 0!==a.c?a.c:"-")+","+(void 0!==a.i?a.i.toString():"-")+","+(void 0!==a.a?a.a.toString():"-"),c=new lj;nj(c,b);b=Array((56>c.g?c.a:2*c.a)-c.g);b[0]=128;for(var d=1;d<b.length-8;++d)b[d]=0;for(var e=8*c.f,d=b.length-8;d<b.length;++d)b[d]=e&255,e/=256;nj(c,b);b=Array(16);for(d=e=0;4>d;++d)for(var f=0;32>f;f+=8)b[e++]=c.b[d]>>>f&255;if(8192>=b.length)c=String.fromCharCode.apply(null,
+b);else for(c="",d=0;d<b.length;d+=8192)e=pe(b,d,d+8192),c+=String.fromCharCode.apply(null,e);a.l=c}return a.l};function qj(a){a=a||{};this.l=this.f=this.c=null;this.g=void 0!==a.fill?a.fill:null;this.b=void 0!==a.stroke?a.stroke:null;this.a=a.radius;this.A=[0,0];this.s=this.D=this.o=null;var b=a.atlasManager,c,d=null,e,f=0;this.b&&(e=ve(this.b.b),f=this.b.a,void 0===f&&(f=1),d=this.b.g,hg||(d=null));var g=2*(this.a+f)+1;e={strokeStyle:e,Bd:f,size:g,lineDash:d};if(void 0===b)b=Oe(g,g),this.f=b.canvas,c=g=this.f.width,this.Gh(e,b,0,0),this.g?this.l=this.f:(b=Oe(e.size,e.size),this.l=b.canvas,this.Fh(e,b,0,0));
+else{g=Math.round(g);(d=!this.g)&&(c=this.Fh.bind(this,e));var f=this.b?pj(this.b):"-",h=this.g?jj(this.g):"-";this.c&&f==this.c[1]&&h==this.c[2]&&this.a==this.c[3]||(this.c=["c"+f+h+(void 0!==this.a?this.a.toString():"-"),f,h,this.a]);b=b.add(this.c[0],g,g,this.Gh.bind(this,e),c);this.f=b.image;this.A=[b.offsetX,b.offsetY];c=b.image.width;this.l=d?b.Sg:this.f}this.o=[g/2,g/2];this.D=[g,g];this.s=[c,c];Ch.call(this,{opacity:1,rotateWithView:!1,rotation:0,scale:1,snapToPixel:void 0!==a.snapToPixel?
+a.snapToPixel:!0})}y(qj,Ch);k=qj.prototype;k.Yb=function(){return this.o};k.Bn=function(){return this.g};k.pe=function(){return this.l};k.jc=function(){return this.f};k.td=function(){return 2};k.ld=function(){return this.s};k.Ia=function(){return this.A};k.Cn=function(){return this.a};k.Fb=function(){return this.D};k.Dn=function(){return this.b};k.pf=na;k.load=na;k.Xf=na;
+k.Gh=function(a,b,c,d){b.setTransform(1,0,0,1,0,0);b.translate(c,d);b.beginPath();b.arc(a.size/2,a.size/2,this.a,0,2*Math.PI,!0);this.g&&(b.fillStyle=xe(this.g.b),b.fill());this.b&&(b.strokeStyle=a.strokeStyle,b.lineWidth=a.Bd,a.lineDash&&b.setLineDash(a.lineDash),b.stroke());b.closePath()};
+k.Fh=function(a,b,c,d){b.setTransform(1,0,0,1,0,0);b.translate(c,d);b.beginPath();b.arc(a.size/2,a.size/2,this.a,0,2*Math.PI,!0);b.fillStyle=ve(ej);b.fill();this.b&&(b.strokeStyle=a.strokeStyle,b.lineWidth=a.Bd,a.lineDash&&b.setLineDash(a.lineDash),b.stroke());b.closePath()};function rj(a){a=a||{};this.i=null;this.g=sj;void 0!==a.geometry&&this.Jh(a.geometry);this.c=void 0!==a.fill?a.fill:null;this.a=void 0!==a.image?a.image:null;this.f=void 0!==a.stroke?a.stroke:null;this.l=void 0!==a.text?a.text:null;this.b=a.zIndex}k=rj.prototype;k.W=function(){return this.i};k.Zj=function(){return this.g};k.Pn=function(){return this.c};k.Qn=function(){return this.a};k.Rn=function(){return this.f};k.Ha=function(){return this.l};k.Sn=function(){return this.b};
+k.Jh=function(a){"function"===typeof a?this.g=a:"string"===typeof a?this.g=function(b){return b.get(a)}:a?a&&(this.g=function(){return a}):this.g=sj;this.i=a};k.Tn=function(a){this.b=a};function tj(a){if("function"!==typeof a){var b;b=Array.isArray(a)?a:[a];a=function(){return b}}return a}var uj=null;function vj(){if(!uj){var a=new ij({color:"rgba(255,255,255,0.4)"}),b=new oj({color:"#3399CC",width:1.25});uj=[new rj({image:new qj({fill:a,stroke:b,radius:5}),fill:a,stroke:b})]}return uj}
+function wj(){var a={},b=[255,255,255,1],c=[0,153,255,1];a.Polygon=[new rj({fill:new ij({color:[255,255,255,.5]})})];a.MultiPolygon=a.Polygon;a.LineString=[new rj({stroke:new oj({color:b,width:5})}),new rj({stroke:new oj({color:c,width:3})})];a.MultiLineString=a.LineString;a.Circle=a.Polygon.concat(a.LineString);a.Point=[new rj({image:new qj({radius:6,fill:new ij({color:c}),stroke:new oj({color:b,width:1.5})}),zIndex:Infinity})];a.MultiPoint=a.Point;a.GeometryCollection=a.Polygon.concat(a.LineString,
+a.Point);return a}function sj(a){return a.W()};function G(a){a=a?a:{};var b=Ea({},a);delete b.style;delete b.renderBuffer;delete b.updateWhileAnimating;delete b.updateWhileInteracting;mh.call(this,b);this.a=void 0!==a.renderBuffer?a.renderBuffer:100;this.A=null;this.i=void 0;this.l(a.style);this.S=void 0!==a.updateWhileAnimating?a.updateWhileAnimating:!1;this.T=void 0!==a.updateWhileInteracting?a.updateWhileInteracting:!1}y(G,mh);function xj(a){return a.get("renderOrder")}G.prototype.C=function(){return this.A};G.prototype.D=function(){return this.i};
+G.prototype.l=function(a){this.A=void 0!==a?a:vj;this.i=null===a?void 0:tj(this.A);this.u()};function I(a){a=a?a:{};var b=Ea({},a);delete b.preload;delete b.useInterimTilesOnError;G.call(this,b);this.Y(a.preload?a.preload:0);this.ia(a.useInterimTilesOnError?a.useInterimTilesOnError:!0);this.s=a.renderMode||"hybrid"}y(I,G);I.prototype.f=function(){return this.get("preload")};I.prototype.c=function(){return this.get("useInterimTilesOnError")};I.prototype.Y=function(a){this.set("preload",a)};I.prototype.ia=function(a){this.set("useInterimTilesOnError",a)};function yj(a,b,c,d,e){this.f=a;this.A=b;this.c=c;this.D=d;this.Hc=e;this.i=this.b=this.a=this.ia=this.Ra=this.Y=null;this.qa=this.za=this.v=this.Ba=this.ya=this.R=0;this.Gb=!1;this.l=this.ta=0;this.Aa=!1;this.S=0;this.g="";this.j=this.C=this.qb=this.Sa=0;this.T=this.s=this.o=null;this.U=[];this.Hb=Xc()}y(yj,kh);
+function zj(a,b,c){if(a.i){b=gd(b,0,c,2,a.D,a.U);c=a.f;var d=a.Hb,e=c.globalAlpha;1!=a.v&&(c.globalAlpha=e*a.v);var f=a.ta;a.Gb&&(f+=a.Hc);var g,h;g=0;for(h=b.length;g<h;g+=2){var l=b[g]-a.R,m=b[g+1]-a.ya;a.Aa&&(l=Math.round(l),m=Math.round(m));if(0!==f||1!=a.l){var n=l+a.R,p=m+a.ya;qh(d,n,p,a.l,a.l,f,-n,-p);c.setTransform(d[0],d[1],d[4],d[5],d[12],d[13])}c.drawImage(a.i,a.za,a.qa,a.S,a.Ba,l,m,a.S,a.Ba)}0===f&&1==a.l||c.setTransform(1,0,0,1,0,0);1!=a.v&&(c.globalAlpha=e)}}
+function Aj(a,b,c,d){var e=0;if(a.T&&""!==a.g){a.o&&Bj(a,a.o);a.s&&Cj(a,a.s);var f=a.T,g=a.f,h=a.ia;h?(h.font!=f.font&&(h.font=g.font=f.font),h.textAlign!=f.textAlign&&(h.textAlign=g.textAlign=f.textAlign),h.textBaseline!=f.textBaseline&&(h.textBaseline=g.textBaseline=f.textBaseline)):(g.font=f.font,g.textAlign=f.textAlign,g.textBaseline=f.textBaseline,a.ia={font:f.font,textAlign:f.textAlign,textBaseline:f.textBaseline});b=gd(b,e,c,d,a.D,a.U);for(f=a.f;e<c;e+=d){g=b[e]+a.Sa;h=b[e+1]+a.qb;if(0!==a.C||
+1!=a.j){var l=qh(a.Hb,g,h,a.j,a.j,a.C,-g,-h);f.setTransform(l[0],l[1],l[4],l[5],l[12],l[13])}a.s&&f.strokeText(a.g,g,h);a.o&&f.fillText(a.g,g,h)}0===a.C&&1==a.j||f.setTransform(1,0,0,1,0,0)}}function Dj(a,b,c,d,e,f){var g=a.f;a=gd(b,c,d,e,a.D,a.U);g.moveTo(a[0],a[1]);b=a.length;f&&(b-=2);for(c=2;c<b;c+=2)g.lineTo(a[c],a[c+1]);f&&g.closePath();return d}function Ej(a,b,c,d,e){var f,g;f=0;for(g=d.length;f<g;++f)c=Dj(a,b,c,d[f],e,!0);return c}k=yj.prototype;
+k.Rd=function(a){if(nc(this.c,a.H())){if(this.a||this.b){this.a&&Bj(this,this.a);this.b&&Cj(this,this.b);var b;b=this.D;var c=this.U,d=a.la();b=d?gd(d,0,d.length,a.va(),b,c):null;c=b[2]-b[0];d=b[3]-b[1];c=Math.sqrt(c*c+d*d);d=this.f;d.beginPath();d.arc(b[0],b[1],c,0,2*Math.PI);this.a&&d.fill();this.b&&d.stroke()}""!==this.g&&Aj(this,a.rd(),2,2)}};k.sd=function(a){this.Sb(a.c,a.f);this.Tb(a.a);this.Vb(a.Ha())};
+k.sc=function(a){switch(a.X()){case "Point":this.uc(a);break;case "LineString":this.hd(a);break;case "Polygon":this.bf(a);break;case "MultiPoint":this.tc(a);break;case "MultiLineString":this.$e(a);break;case "MultiPolygon":this.af(a);break;case "GeometryCollection":this.Ze(a);break;case "Circle":this.Rd(a)}};k.Ye=function(a,b){var c=(0,b.g)(a);c&&nc(this.c,c.H())&&(this.sd(b),this.sc(c))};k.Ze=function(a){a=a.c;var b,c;b=0;for(c=a.length;b<c;++b)this.sc(a[b])};
+k.uc=function(a){var b=a.la();a=a.va();this.i&&zj(this,b,b.length);""!==this.g&&Aj(this,b,b.length,a)};k.tc=function(a){var b=a.la();a=a.va();this.i&&zj(this,b,b.length);""!==this.g&&Aj(this,b,b.length,a)};k.hd=function(a){if(nc(this.c,a.H())){if(this.b){Cj(this,this.b);var b=this.f,c=a.la();b.beginPath();Dj(this,c,0,c.length,a.va(),!1);b.stroke()}""!==this.g&&(a=Fj(a),Aj(this,a,2,2))}};
+k.$e=function(a){var b=a.H();if(nc(this.c,b)){if(this.b){Cj(this,this.b);var b=this.f,c=a.la(),d=0,e=a.Db(),f=a.va();b.beginPath();var g,h;g=0;for(h=e.length;g<h;++g)d=Dj(this,c,d,e[g],f,!1);b.stroke()}""!==this.g&&(a=Gj(a),Aj(this,a,a.length,2))}};k.bf=function(a){if(nc(this.c,a.H())){if(this.b||this.a){this.a&&Bj(this,this.a);this.b&&Cj(this,this.b);var b=this.f;b.beginPath();Ej(this,a.Mb(),0,a.Db(),a.va());this.a&&b.fill();this.b&&b.stroke()}""!==this.g&&(a=Md(a),Aj(this,a,2,2))}};
+k.af=function(a){if(nc(this.c,a.H())){if(this.b||this.a){this.a&&Bj(this,this.a);this.b&&Cj(this,this.b);var b=this.f,c=Hj(a),d=0,e=a.i,f=a.va(),g,h;g=0;for(h=e.length;g<h;++g){var l=e[g];b.beginPath();d=Ej(this,c,d,l,f);this.a&&b.fill();this.b&&b.stroke()}}""!==this.g&&(a=Ij(a),Aj(this,a,a.length,2))}};function Bj(a,b){var c=a.f,d=a.Y;d?d.fillStyle!=b.fillStyle&&(d.fillStyle=c.fillStyle=b.fillStyle):(c.fillStyle=b.fillStyle,a.Y={fillStyle:b.fillStyle})}
+function Cj(a,b){var c=a.f,d=a.Ra;d?(d.lineCap!=b.lineCap&&(d.lineCap=c.lineCap=b.lineCap),hg&&!pb(d.lineDash,b.lineDash)&&c.setLineDash(d.lineDash=b.lineDash),d.lineJoin!=b.lineJoin&&(d.lineJoin=c.lineJoin=b.lineJoin),d.lineWidth!=b.lineWidth&&(d.lineWidth=c.lineWidth=b.lineWidth),d.miterLimit!=b.miterLimit&&(d.miterLimit=c.miterLimit=b.miterLimit),d.strokeStyle!=b.strokeStyle&&(d.strokeStyle=c.strokeStyle=b.strokeStyle)):(c.lineCap=b.lineCap,hg&&c.setLineDash(b.lineDash),c.lineJoin=b.lineJoin,c.lineWidth=
+b.lineWidth,c.miterLimit=b.miterLimit,c.strokeStyle=b.strokeStyle,a.Ra={lineCap:b.lineCap,lineDash:b.lineDash,lineJoin:b.lineJoin,lineWidth:b.lineWidth,miterLimit:b.miterLimit,strokeStyle:b.strokeStyle})}
+k.Sb=function(a,b){if(a){var c=a.b;this.a={fillStyle:xe(c?c:ej)}}else this.a=null;if(b){var c=b.b,d=b.f,e=b.g,f=b.c,g=b.a,h=b.i;this.b={lineCap:void 0!==d?d:"round",lineDash:e?e:fj,lineJoin:void 0!==f?f:"round",lineWidth:this.A*(void 0!==g?g:1),miterLimit:void 0!==h?h:10,strokeStyle:ve(c?c:gj)}}else this.b=null};
+k.Tb=function(a){if(a){var b=a.Yb(),c=a.jc(1),d=a.Ia(),e=a.Fb();this.R=b[0];this.ya=b[1];this.Ba=e[1];this.i=c;this.v=a.v;this.za=d[0];this.qa=d[1];this.Gb=a.U;this.ta=a.j;this.l=a.i;this.Aa=a.C;this.S=e[0]}else this.i=null};
+k.Vb=function(a){if(a){var b=a.b;b?(b=b.b,this.o={fillStyle:xe(b?b:ej)}):this.o=null;var c=a.l;if(c){var b=c.b,d=c.f,e=c.g,f=c.c,g=c.a,c=c.i;this.s={lineCap:void 0!==d?d:"round",lineDash:e?e:fj,lineJoin:void 0!==f?f:"round",lineWidth:void 0!==g?g:1,miterLimit:void 0!==c?c:10,strokeStyle:ve(b?b:gj)}}else this.s=null;var b=a.g,d=a.f,e=a.c,f=a.i,g=a.a,c=a.Ha(),h=a.o;a=a.j;this.T={font:void 0!==b?b:"10px sans-serif",textAlign:void 0!==h?h:"center",textBaseline:void 0!==a?a:"middle"};this.g=void 0!==c?
+c:"";this.Sa=void 0!==d?this.A*d:0;this.qb=void 0!==e?this.A*e:0;this.C=void 0!==f?f:0;this.j=this.A*(void 0!==g?g:1)}else this.g=""};function Jj(a){th.call(this,a);this.R=Xc()}y(Jj,th);
+Jj.prototype.i=function(a,b,c){Kj(this,"precompose",c,a,void 0);var d=this.f?this.f.a():null;if(d){var e=b.extent,f=void 0!==e;if(f){var g=a.pixelRatio,h=a.size[0]*g,l=a.size[1]*g,m=a.viewState.rotation,n=fc(e),p=ec(e),q=dc(e),e=cc(e);sh(a.coordinateToPixelMatrix,n,n);sh(a.coordinateToPixelMatrix,p,p);sh(a.coordinateToPixelMatrix,q,q);sh(a.coordinateToPixelMatrix,e,e);c.save();hj(c,-m,h/2,l/2);c.beginPath();c.moveTo(n[0]*g,n[1]*g);c.lineTo(p[0]*g,p[1]*g);c.lineTo(q[0]*g,q[1]*g);c.lineTo(e[0]*g,e[1]*
+g);c.clip();hj(c,m,h/2,l/2)}g=this.s;h=c.globalAlpha;c.globalAlpha=b.opacity;c.drawImage(d,0,0,+d.width,+d.height,Math.round(g[12]),Math.round(g[13]),Math.round(d.width*g[0]),Math.round(d.height*g[5]));c.globalAlpha=h;f&&c.restore()}Lj(this,c,a)};
+function Kj(a,b,c,d,e){var f=a.a;if(ab(f,b)){var g=d.size[0]*d.pixelRatio,h=d.size[1]*d.pixelRatio,l=d.viewState.rotation;hj(c,-l,g/2,h/2);a=void 0!==e?e:Mj(a,d,0);a=new yj(c,d.pixelRatio,d.extent,a,d.viewState.rotation);f.b(new lh(b,f,a,d,c,null));hj(c,l,g/2,h/2)}}function Lj(a,b,c,d){Kj(a,"postcompose",b,c,d)}function Mj(a,b,c){var d=b.viewState,e=b.pixelRatio;return qh(a.R,e*b.size[0]/2,e*b.size[1]/2,e/d.resolution,-e/d.resolution,-d.rotation,-d.center[0]+c,-d.center[1])};var Nj=["Polygon","LineString","Image","Text"];function Oj(a,b,c){this.qa=a;this.T=b;this.f=null;this.c=0;this.resolution=c;this.Ba=this.ya=null;this.a=[];this.coordinates=[];this.Ra=Xc();this.b=[];this.Y=[];this.ia=Xc();this.za=Xc()}y(Oj,kh);
+function Pj(a,b,c,d,e,f){var g=a.coordinates.length,h=a.df(),l=[b[c],b[c+1]],m=[NaN,NaN],n=!0,p,q,r;for(p=c+e;p<d;p+=e)m[0]=b[p],m[1]=b[p+1],r=Vb(h,m),r!==q?(n&&(a.coordinates[g++]=l[0],a.coordinates[g++]=l[1]),a.coordinates[g++]=m[0],a.coordinates[g++]=m[1],n=!1):1===r?(a.coordinates[g++]=m[0],a.coordinates[g++]=m[1],n=!1):n=!0,l[0]=m[0],l[1]=m[1],q=r;p===c+e&&(a.coordinates[g++]=l[0],a.coordinates[g++]=l[1]);f&&(a.coordinates[g++]=b[c],a.coordinates[g++]=b[c+1]);return g}
+function Qj(a,b){a.ya=[0,b,0];a.a.push(a.ya);a.Ba=[0,b,0];a.b.push(a.Ba)}
+function Rj(a,b,c,d,e,f,g,h,l){var m;rh(d,a.Ra)?m=a.Y:(m=gd(a.coordinates,0,a.coordinates.length,2,d,a.Y),$c(a.Ra,d));d=!Ha(f);var n=0,p=g.length,q,r,u=a.ia;a=a.za;for(var x,v,D,A;n<p;){var z=g[n],F,N,K,X;switch(z[0]){case 0:q=z[1];d&&f[w(q).toString()]||!q.W()?n=z[2]:void 0===l||nc(l,q.W().H())?++n:n=z[2];break;case 1:b.beginPath();++n;break;case 2:q=z[1];r=m[q];z=m[q+1];D=m[q+2]-r;q=m[q+3]-z;b.arc(r,z,Math.sqrt(D*D+q*q),0,2*Math.PI,!0);++n;break;case 3:b.closePath();++n;break;case 4:q=z[1];r=z[2];
+F=z[3];K=z[4]*c;var oa=z[5]*c,H=z[6];N=z[7];var ya=z[8],Ua=z[9];D=z[11];A=z[12];var Xa=z[13],Va=z[14];for(z[10]&&(D+=e);q<r;q+=2){z=m[q]-K;X=m[q+1]-oa;Xa&&(z=Math.round(z),X=Math.round(X));if(1!=A||0!==D){var Aa=z+K,Qb=X+oa;qh(u,Aa,Qb,A,A,D,-Aa,-Qb);b.transform(u[0],u[1],u[4],u[5],u[12],u[13])}Aa=b.globalAlpha;1!=N&&(b.globalAlpha=Aa*N);var Qb=Va+ya>F.width?F.width-ya:Va,Nb=H+Ua>F.height?F.height-Ua:H;b.drawImage(F,ya,Ua,Qb,Nb,z,X,Qb*c,Nb*c);1!=N&&(b.globalAlpha=Aa);if(1!=A||0!==D)cd(u,a),b.transform(a[0],
+a[1],a[4],a[5],a[12],a[13])}++n;break;case 5:q=z[1];r=z[2];K=z[3];oa=z[4]*c;H=z[5]*c;D=z[6];A=z[7]*c;F=z[8];for(N=z[9];q<r;q+=2){z=m[q]+oa;X=m[q+1]+H;if(1!=A||0!==D)qh(u,z,X,A,A,D,-z,-X),b.transform(u[0],u[1],u[4],u[5],u[12],u[13]);ya=K.split("\n");Ua=ya.length;1<Ua?(Xa=Math.round(1.5*b.measureText("M").width),X-=(Ua-1)/2*Xa):Xa=0;for(Va=0;Va<Ua;Va++)Aa=ya[Va],N&&b.strokeText(Aa,z,X),F&&b.fillText(Aa,z,X),X+=Xa;if(1!=A||0!==D)cd(u,a),b.transform(a[0],a[1],a[4],a[5],a[12],a[13])}++n;break;case 6:if(void 0!==
+h&&(q=z[1],q=h(q)))return q;++n;break;case 7:b.fill();++n;break;case 8:q=z[1];r=z[2];z=m[q];X=m[q+1];D=z+.5|0;A=X+.5|0;if(D!==x||A!==v)b.moveTo(z,X),x=D,v=A;for(q+=2;q<r;q+=2)if(z=m[q],X=m[q+1],D=z+.5|0,A=X+.5|0,q==r-2||D!==x||A!==v)b.lineTo(z,X),x=D,v=A;++n;break;case 9:b.fillStyle=z[1];++n;break;case 10:x=void 0!==z[7]?z[7]:!0;v=z[2];b.strokeStyle=z[1];b.lineWidth=x?v*c:v;b.lineCap=z[3];b.lineJoin=z[4];b.miterLimit=z[5];hg&&b.setLineDash(z[6]);v=x=NaN;++n;break;case 11:b.font=z[1];b.textAlign=z[2];
+b.textBaseline=z[3];++n;break;case 12:b.stroke();++n;break;default:++n}}}Oj.prototype.Pa=function(a,b,c,d,e){Rj(this,a,b,c,d,e,this.a,void 0)};function Sj(a){var b=a.b;b.reverse();var c,d=b.length,e,f,g=-1;for(c=0;c<d;++c)if(e=b[c],f=e[0],6==f)g=c;else if(0==f){e[2]=c;e=a.b;for(f=c;g<f;){var h=e[g];e[g]=e[f];e[f]=h;++g;--f}g=-1}}function Tj(a,b){a.ya[2]=a.a.length;a.ya=null;a.Ba[2]=a.b.length;a.Ba=null;var c=[6,b];a.a.push(c);a.b.push(c)}Oj.prototype.ke=na;Oj.prototype.df=function(){return this.T};
+function Uj(a,b,c){Oj.call(this,a,b,c);this.o=this.S=null;this.R=this.D=this.C=this.A=this.U=this.v=this.s=this.j=this.l=this.i=this.g=void 0}y(Uj,Oj);Uj.prototype.uc=function(a,b){if(this.o){Qj(this,b);var c=a.la(),d=this.coordinates.length,c=Pj(this,c,0,c.length,a.va(),!1);this.a.push([4,d,c,this.o,this.g,this.i,this.l,this.j,this.s,this.v,this.U,this.A,this.C,this.D,this.R]);this.b.push([4,d,c,this.S,this.g,this.i,this.l,this.j,this.s,this.v,this.U,this.A,this.C,this.D,this.R]);Tj(this,b)}};
+Uj.prototype.tc=function(a,b){if(this.o){Qj(this,b);var c=a.la(),d=this.coordinates.length,c=Pj(this,c,0,c.length,a.va(),!1);this.a.push([4,d,c,this.o,this.g,this.i,this.l,this.j,this.s,this.v,this.U,this.A,this.C,this.D,this.R]);this.b.push([4,d,c,this.S,this.g,this.i,this.l,this.j,this.s,this.v,this.U,this.A,this.C,this.D,this.R]);Tj(this,b)}};Uj.prototype.ke=function(){Sj(this);this.i=this.g=void 0;this.o=this.S=null;this.R=this.D=this.A=this.U=this.v=this.s=this.j=this.C=this.l=void 0};
+Uj.prototype.Tb=function(a){var b=a.Yb(),c=a.Fb(),d=a.pe(1),e=a.jc(1),f=a.Ia();this.g=b[0];this.i=b[1];this.S=d;this.o=e;this.l=c[1];this.j=a.v;this.s=f[0];this.v=f[1];this.U=a.U;this.A=a.j;this.C=a.i;this.D=a.C;this.R=c[0]};function Vj(a,b,c){Oj.call(this,a,b,c);this.g={fd:void 0,ad:void 0,bd:null,cd:void 0,dd:void 0,ed:void 0,nf:0,strokeStyle:void 0,lineCap:void 0,lineDash:null,lineJoin:void 0,lineWidth:void 0,miterLimit:void 0}}y(Vj,Oj);
+function Wj(a,b,c,d,e){var f=a.coordinates.length;b=Pj(a,b,c,d,e,!1);f=[8,f,b];a.a.push(f);a.b.push(f);return d}k=Vj.prototype;k.df=function(){this.f||(this.f=Pb(this.T),0<this.c&&Ob(this.f,this.resolution*(this.c+1)/2,this.f));return this.f};
+function Xj(a){var b=a.g,c=b.strokeStyle,d=b.lineCap,e=b.lineDash,f=b.lineJoin,g=b.lineWidth,h=b.miterLimit;b.fd==c&&b.ad==d&&pb(b.bd,e)&&b.cd==f&&b.dd==g&&b.ed==h||(b.nf!=a.coordinates.length&&(a.a.push([12]),b.nf=a.coordinates.length),a.a.push([10,c,g,d,f,h,e],[1]),b.fd=c,b.ad=d,b.bd=e,b.cd=f,b.dd=g,b.ed=h)}
+k.hd=function(a,b){var c=this.g,d=c.lineWidth;void 0!==c.strokeStyle&&void 0!==d&&(Xj(this),Qj(this,b),this.b.push([10,c.strokeStyle,c.lineWidth,c.lineCap,c.lineJoin,c.miterLimit,c.lineDash],[1]),c=a.la(),Wj(this,c,0,c.length,a.va()),this.b.push([12]),Tj(this,b))};
+k.$e=function(a,b){var c=this.g,d=c.lineWidth;if(void 0!==c.strokeStyle&&void 0!==d){Xj(this);Qj(this,b);this.b.push([10,c.strokeStyle,c.lineWidth,c.lineCap,c.lineJoin,c.miterLimit,c.lineDash],[1]);var c=a.Db(),d=a.la(),e=a.va(),f=0,g,h;g=0;for(h=c.length;g<h;++g)f=Wj(this,d,f,c[g],e);this.b.push([12]);Tj(this,b)}};k.ke=function(){this.g.nf!=this.coordinates.length&&this.a.push([12]);Sj(this);this.g=null};
+k.Sb=function(a,b){var c=b.b;this.g.strokeStyle=ve(c?c:gj);c=b.f;this.g.lineCap=void 0!==c?c:"round";c=b.g;this.g.lineDash=c?c:fj;c=b.c;this.g.lineJoin=void 0!==c?c:"round";c=b.a;this.g.lineWidth=void 0!==c?c:1;c=b.i;this.g.miterLimit=void 0!==c?c:10;this.g.lineWidth>this.c&&(this.c=this.g.lineWidth,this.f=null)};
+function Yj(a,b,c){Oj.call(this,a,b,c);this.g={ug:void 0,fd:void 0,ad:void 0,bd:null,cd:void 0,dd:void 0,ed:void 0,fillStyle:void 0,strokeStyle:void 0,lineCap:void 0,lineDash:null,lineJoin:void 0,lineWidth:void 0,miterLimit:void 0}}y(Yj,Oj);
+function Zj(a,b,c,d,e){var f=a.g,g=[1];a.a.push(g);a.b.push(g);var h,g=0;for(h=d.length;g<h;++g){var l=d[g],m=a.coordinates.length;c=Pj(a,b,c,l,e,!0);c=[8,m,c];m=[3];a.a.push(c,m);a.b.push(c,m);c=l}b=[7];a.b.push(b);void 0!==f.fillStyle&&a.a.push(b);void 0!==f.strokeStyle&&(f=[12],a.a.push(f),a.b.push(f));return c}k=Yj.prototype;
+k.Rd=function(a,b){var c=this.g,d=c.strokeStyle;if(void 0!==c.fillStyle||void 0!==d){ak(this);Qj(this,b);this.b.push([9,ve(ej)]);void 0!==c.strokeStyle&&this.b.push([10,c.strokeStyle,c.lineWidth,c.lineCap,c.lineJoin,c.miterLimit,c.lineDash]);var e=a.la(),d=this.coordinates.length;Pj(this,e,0,e.length,a.va(),!1);e=[1];d=[2,d];this.a.push(e,d);this.b.push(e,d);d=[7];this.b.push(d);void 0!==c.fillStyle&&this.a.push(d);void 0!==c.strokeStyle&&(c=[12],this.a.push(c),this.b.push(c));Tj(this,b)}};
+k.bf=function(a,b){var c=this.g,d=c.strokeStyle;if(void 0!==c.fillStyle||void 0!==d)ak(this),Qj(this,b),this.b.push([9,ve(ej)]),void 0!==c.strokeStyle&&this.b.push([10,c.strokeStyle,c.lineWidth,c.lineCap,c.lineJoin,c.miterLimit,c.lineDash]),c=a.Db(),d=a.Mb(),Zj(this,d,0,c,a.va()),Tj(this,b)};
+k.af=function(a,b){var c=this.g,d=c.strokeStyle;if(void 0!==c.fillStyle||void 0!==d){ak(this);Qj(this,b);this.b.push([9,ve(ej)]);void 0!==c.strokeStyle&&this.b.push([10,c.strokeStyle,c.lineWidth,c.lineCap,c.lineJoin,c.miterLimit,c.lineDash]);var c=a.i,d=Hj(a),e=a.va(),f=0,g,h;g=0;for(h=c.length;g<h;++g)f=Zj(this,d,f,c[g],e);Tj(this,b)}};k.ke=function(){Sj(this);this.g=null;var a=this.qa;if(0!==a){var b=this.coordinates,c,d;c=0;for(d=b.length;c<d;++c)b[c]=a*Math.round(b[c]/a)}};
+k.df=function(){this.f||(this.f=Pb(this.T),0<this.c&&Ob(this.f,this.resolution*(this.c+1)/2,this.f));return this.f};
+k.Sb=function(a,b){var c=this.g;if(a){var d=a.b;c.fillStyle=xe(d?d:ej)}else c.fillStyle=void 0;b?(d=b.b,c.strokeStyle=ve(d?d:gj),d=b.f,c.lineCap=void 0!==d?d:"round",d=b.g,c.lineDash=d?d.slice():fj,d=b.c,c.lineJoin=void 0!==d?d:"round",d=b.a,c.lineWidth=void 0!==d?d:1,d=b.i,c.miterLimit=void 0!==d?d:10,c.lineWidth>this.c&&(this.c=c.lineWidth,this.f=null)):(c.strokeStyle=void 0,c.lineCap=void 0,c.lineDash=null,c.lineJoin=void 0,c.lineWidth=void 0,c.miterLimit=void 0)};
+function ak(a){var b=a.g,c=b.fillStyle,d=b.strokeStyle,e=b.lineCap,f=b.lineDash,g=b.lineJoin,h=b.lineWidth,l=b.miterLimit;void 0!==c&&b.ug!=c&&(a.a.push([9,c]),b.ug=b.fillStyle);void 0===d||b.fd==d&&b.ad==e&&b.bd==f&&b.cd==g&&b.dd==h&&b.ed==l||(a.a.push([10,d,h,e,g,l,f]),b.fd=d,b.ad=e,b.bd=f,b.cd=g,b.dd=h,b.ed=l)}function bk(a,b,c){Oj.call(this,a,b,c);this.D=this.C=this.A=null;this.o="";this.U=this.v=this.s=this.j=0;this.l=this.i=this.g=null}y(bk,Oj);
+function ck(a,b,c,d,e){if(""!==a.o&&a.l&&(a.g||a.i)){if(a.g){var f=a.g,g=a.A;if(!g||g.fillStyle!=f.fillStyle){var h=[9,f.fillStyle];a.a.push(h);a.b.push(h);g?g.fillStyle=f.fillStyle:a.A={fillStyle:f.fillStyle}}}a.i&&(f=a.i,g=a.C,g&&g.lineCap==f.lineCap&&g.lineDash==f.lineDash&&g.lineJoin==f.lineJoin&&g.lineWidth==f.lineWidth&&g.miterLimit==f.miterLimit&&g.strokeStyle==f.strokeStyle||(h=[10,f.strokeStyle,f.lineWidth,f.lineCap,f.lineJoin,f.miterLimit,f.lineDash,!1],a.a.push(h),a.b.push(h),g?(g.lineCap=
+f.lineCap,g.lineDash=f.lineDash,g.lineJoin=f.lineJoin,g.lineWidth=f.lineWidth,g.miterLimit=f.miterLimit,g.strokeStyle=f.strokeStyle):a.C={lineCap:f.lineCap,lineDash:f.lineDash,lineJoin:f.lineJoin,lineWidth:f.lineWidth,miterLimit:f.miterLimit,strokeStyle:f.strokeStyle}));f=a.l;g=a.D;g&&g.font==f.font&&g.textAlign==f.textAlign&&g.textBaseline==f.textBaseline||(h=[11,f.font,f.textAlign,f.textBaseline],a.a.push(h),a.b.push(h),g?(g.font=f.font,g.textAlign=f.textAlign,g.textBaseline=f.textBaseline):a.D=
+{font:f.font,textAlign:f.textAlign,textBaseline:f.textBaseline});Qj(a,e);f=a.coordinates.length;b=Pj(a,b,0,c,d,!1);b=[5,f,b,a.o,a.j,a.s,a.v,a.U,!!a.g,!!a.i];a.a.push(b);a.b.push(b);Tj(a,e)}}
+bk.prototype.Vb=function(a){if(a){var b=a.b;b?(b=b.b,b=xe(b?b:ej),this.g?this.g.fillStyle=b:this.g={fillStyle:b}):this.g=null;var c=a.l;if(c){var b=c.b,d=c.f,e=c.g,f=c.c,g=c.a,c=c.i,d=void 0!==d?d:"round",e=e?e.slice():fj,f=void 0!==f?f:"round",g=void 0!==g?g:1,c=void 0!==c?c:10,b=ve(b?b:gj);if(this.i){var h=this.i;h.lineCap=d;h.lineDash=e;h.lineJoin=f;h.lineWidth=g;h.miterLimit=c;h.strokeStyle=b}else this.i={lineCap:d,lineDash:e,lineJoin:f,lineWidth:g,miterLimit:c,strokeStyle:b}}else this.i=null;
+var l=a.g,b=a.f,d=a.c,e=a.i,g=a.a,c=a.Ha(),f=a.o,h=a.j;a=void 0!==l?l:"10px sans-serif";f=void 0!==f?f:"center";h=void 0!==h?h:"middle";this.l?(l=this.l,l.font=a,l.textAlign=f,l.textBaseline=h):this.l={font:a,textAlign:f,textBaseline:h};this.o=void 0!==c?c:"";this.j=void 0!==b?b:0;this.s=void 0!==d?d:0;this.v=void 0!==e?e:0;this.U=void 0!==g?g:1}else this.o=""};function dk(a,b,c,d){this.o=a;this.g=b;this.l=c;this.f=d;this.a={};this.c=Oe(1,1);this.i=Xc()}
+function ek(a){for(var b in a.a){var c=a.a[b],d;for(d in c)c[d].ke()}}dk.prototype.ra=function(a,b,c,d,e){var f=this.i;qh(f,.5,.5,1/b,-1/b,-c,-a[0],-a[1]);var g=this.c;g.clearRect(0,0,1,1);var h;void 0!==this.f&&(h=Lb(),Mb(h,a),Ob(h,b*this.f,h));return fk(this,g,f,c,d,function(a){if(0<g.getImageData(0,0,1,1).data[3]){if(a=e(a))return a;g.clearRect(0,0,1,1)}},h)};
+dk.prototype.b=function(a,b){var c=void 0!==a?a.toString():"0",d=this.a[c];void 0===d&&(d={},this.a[c]=d);c=d[b];void 0===c&&(c=new gk[b](this.o,this.g,this.l),d[b]=c);return c};dk.prototype.Ya=function(){return Ha(this.a)};
+dk.prototype.Pa=function(a,b,c,d,e,f){var g=Object.keys(this.a).map(Number);g.sort(ib);var h=this.g,l=h[0],m=h[1],n=h[2],h=h[3],l=[l,m,l,h,n,h,n,m];gd(l,0,8,2,c,l);a.save();a.beginPath();a.moveTo(l[0],l[1]);a.lineTo(l[2],l[3]);a.lineTo(l[4],l[5]);a.lineTo(l[6],l[7]);a.closePath();a.clip();f=f?f:Nj;for(var p,q,l=0,m=g.length;l<m;++l)for(p=this.a[g[l].toString()],n=0,h=f.length;n<h;++n)q=p[f[n]],void 0!==q&&q.Pa(a,b,c,d,e);a.restore()};
+function fk(a,b,c,d,e,f,g){var h=Object.keys(a.a).map(Number);h.sort(function(a,b){return b-a});var l,m,n,p,q;l=0;for(m=h.length;l<m;++l)for(p=a.a[h[l].toString()],n=Nj.length-1;0<=n;--n)if(q=p[Nj[n]],void 0!==q&&(q=Rj(q,b,1,c,d,e,q.b,f,g)))return q}var gk={Image:Uj,LineString:Vj,Polygon:Yj,Text:bk};function hk(a,b,c,d){this.g=a;this.b=b;this.c=c;this.f=d}k=hk.prototype;k.get=function(a){return this.f[a]};k.Db=function(){return this.c};k.H=function(){this.a||(this.a="Point"===this.g?Xb(this.b):Yb(this.b,0,this.b.length,2));return this.a};k.Mb=function(){return this.b};k.la=hk.prototype.Mb;k.W=function(){return this};k.Nm=function(){return this.f};k.od=hk.prototype.W;k.va=function(){return 2};k.ec=na;k.X=function(){return this.g};function ik(a,b){return w(a)-w(b)}function jk(a,b){var c=.5*a/b;return c*c}function lk(a,b,c,d,e,f){var g=!1,h,l;if(h=c.a)l=h.td(),2==l||3==l?h.Xf(e,f):(0==l&&h.load(),h.pf(e,f),g=!0);if(e=(0,c.g)(b))d=e.od(d),(0,mk[d.X()])(a,d,c,b);return g}
+var mk={Point:function(a,b,c,d){var e=c.a;if(e){if(2!=e.td())return;var f=a.b(c.b,"Image");f.Tb(e);f.uc(b,d)}if(e=c.Ha())a=a.b(c.b,"Text"),a.Vb(e),ck(a,b.la(),2,2,d)},LineString:function(a,b,c,d){var e=c.f;if(e){var f=a.b(c.b,"LineString");f.Sb(null,e);f.hd(b,d)}if(e=c.Ha())a=a.b(c.b,"Text"),a.Vb(e),ck(a,Fj(b),2,2,d)},Polygon:function(a,b,c,d){var e=c.c,f=c.f;if(e||f){var g=a.b(c.b,"Polygon");g.Sb(e,f);g.bf(b,d)}if(e=c.Ha())a=a.b(c.b,"Text"),a.Vb(e),ck(a,Md(b),2,2,d)},MultiPoint:function(a,b,c,d){var e=
+c.a;if(e){if(2!=e.td())return;var f=a.b(c.b,"Image");f.Tb(e);f.tc(b,d)}if(e=c.Ha())a=a.b(c.b,"Text"),a.Vb(e),c=b.la(),ck(a,c,c.length,b.va(),d)},MultiLineString:function(a,b,c,d){var e=c.f;if(e){var f=a.b(c.b,"LineString");f.Sb(null,e);f.$e(b,d)}if(e=c.Ha())a=a.b(c.b,"Text"),a.Vb(e),b=Gj(b),ck(a,b,b.length,2,d)},MultiPolygon:function(a,b,c,d){var e=c.c,f=c.f;if(f||e){var g=a.b(c.b,"Polygon");g.Sb(e,f);g.af(b,d)}if(e=c.Ha())a=a.b(c.b,"Text"),a.Vb(e),b=Ij(b),ck(a,b,b.length,2,d)},GeometryCollection:function(a,
+b,c,d){b=b.c;var e,f;e=0;for(f=b.length;e<f;++e)(0,mk[b[e].X()])(a,b[e],c,d)},Circle:function(a,b,c,d){var e=c.c,f=c.f;if(e||f){var g=a.b(c.b,"Polygon");g.Sb(e,f);g.Rd(b,d)}if(e=c.Ha())a=a.b(c.b,"Text"),a.Vb(e),ck(a,b.rd(),2,2,d)}};function nk(a,b,c,d,e,f){this.c=void 0!==f?f:null;oh.call(this,a,b,c,void 0!==f?0:2,d);this.g=e}y(nk,oh);nk.prototype.i=function(a){this.state=a?3:2;ph(this)};nk.prototype.load=function(){0==this.state&&(this.state=1,ph(this),this.c(this.i.bind(this)))};nk.prototype.a=function(){return this.g};var ok,pk=pa.navigator,qk=pa.chrome,rk=-1<pk.userAgent.indexOf("OPR"),sk=-1<pk.userAgent.indexOf("Edge");ok=!(!pk.userAgent.match("CriOS")&&null!==qk&&void 0!==qk&&"Google Inc."===pk.vendor&&0==rk&&0==sk);function tk(a,b,c,d){var e=Rc(c,b,a);c=b.getPointResolution(d,c);b=b.$b();void 0!==b&&(c*=b);b=a.$b();void 0!==b&&(c/=b);a=a.getPointResolution(c,e)/c;isFinite(a)&&0<a&&(c/=a);return c}function uk(a,b,c,d){a=c-a;b=d-b;var e=Math.sqrt(a*a+b*b);return[Math.round(c+a/e),Math.round(d+b/e)]}
+function vk(a,b,c,d,e,f,g,h,l,m,n){var p=Oe(Math.round(c*a),Math.round(c*b));if(0===l.length)return p.canvas;p.scale(c,c);var q=Lb();l.forEach(function(a){ac(q,a.extent)});var r=Oe(Math.round(c*ic(q)/d),Math.round(c*jc(q)/d)),u=c/d;l.forEach(function(a){r.drawImage(a.image,m,m,a.image.width-2*m,a.image.height-2*m,(a.extent[0]-q[0])*u,-(a.extent[3]-q[3])*u,ic(a.extent)*u,jc(a.extent)*u)});var x=fc(g);h.f.forEach(function(a){var b=a.source,e=a.target,g=b[1][0],h=b[1][1],l=b[2][0],m=b[2][1];a=(e[0][0]-
+x[0])/f;var n=-(e[0][1]-x[1])/f,u=(e[1][0]-x[0])/f,H=-(e[1][1]-x[1])/f,ya=(e[2][0]-x[0])/f,Ua=-(e[2][1]-x[1])/f,e=b[0][0],b=b[0][1],g=g-e,h=h-b,l=l-e,m=m-b;a:{g=[[g,h,0,0,u-a],[l,m,0,0,ya-a],[0,0,g,h,H-n],[0,0,l,m,Ua-n]];h=g.length;for(l=0;l<h;l++){for(var m=l,Xa=Math.abs(g[l][l]),Va=l+1;Va<h;Va++){var Aa=Math.abs(g[Va][l]);Aa>Xa&&(Xa=Aa,m=Va)}if(0===Xa){g=null;break a}Xa=g[m];g[m]=g[l];g[l]=Xa;for(m=l+1;m<h;m++)for(Xa=-g[m][l]/g[l][l],Va=l;Va<h+1;Va++)g[m][Va]=l==Va?0:g[m][Va]+Xa*g[l][Va]}l=Array(h);
+for(m=h-1;0<=m;m--)for(l[m]=g[m][h]/g[m][m],Xa=m-1;0<=Xa;Xa--)g[Xa][h]-=g[Xa][m]*l[m];g=l}g&&(p.save(),p.beginPath(),ok?(l=(a+u+ya)/3,m=(n+H+Ua)/3,h=uk(l,m,a,n),u=uk(l,m,u,H),ya=uk(l,m,ya,Ua),p.moveTo(h[0],h[1]),p.lineTo(u[0],u[1]),p.lineTo(ya[0],ya[1])):(p.moveTo(a,n),p.lineTo(u,H),p.lineTo(ya,Ua)),p.closePath(),p.clip(),p.transform(g[0],g[2],g[1],g[3],a,n),p.translate(q[0]-e,q[3]-b),p.scale(d/c,-d/c),p.drawImage(r.canvas,0,0),p.restore())});n&&(p.save(),p.strokeStyle="black",p.lineWidth=1,h.f.forEach(function(a){var b=
+a.target;a=(b[0][0]-x[0])/f;var c=-(b[0][1]-x[1])/f,d=(b[1][0]-x[0])/f,e=-(b[1][1]-x[1])/f,g=(b[2][0]-x[0])/f,b=-(b[2][1]-x[1])/f;p.beginPath();p.moveTo(a,c);p.lineTo(d,e);p.lineTo(g,b);p.closePath();p.stroke()}),p.restore());return p.canvas};function wk(a,b,c,d,e){this.g=a;this.c=b;var f={},g=Pc(this.c,this.g);this.a=function(a){var b=a[0]+"/"+a[1];f[b]||(f[b]=g(a));return f[b]};this.i=d;this.s=e*e;this.f=[];this.o=!1;this.j=this.g.a&&!!d&&!!this.g.H()&&ic(d)==ic(this.g.H());this.b=this.g.H()?ic(this.g.H()):null;this.l=this.c.H()?ic(this.c.H()):null;a=fc(c);b=ec(c);d=dc(c);c=cc(c);e=this.a(a);var h=this.a(b),l=this.a(d),m=this.a(c);xk(this,a,b,d,c,e,h,l,m,10);if(this.o){var n=Infinity;this.f.forEach(function(a){n=Math.min(n,a.source[0][0],
+a.source[1][0],a.source[2][0])});this.f.forEach(function(a){if(Math.max(a.source[0][0],a.source[1][0],a.source[2][0])-n>this.b/2){var b=[[a.source[0][0],a.source[0][1]],[a.source[1][0],a.source[1][1]],[a.source[2][0],a.source[2][1]]];b[0][0]-n>this.b/2&&(b[0][0]-=this.b);b[1][0]-n>this.b/2&&(b[1][0]-=this.b);b[2][0]-n>this.b/2&&(b[2][0]-=this.b);Math.max(b[0][0],b[1][0],b[2][0])-Math.min(b[0][0],b[1][0],b[2][0])<this.b/2&&(a.source=b)}},this)}f={}}
+function xk(a,b,c,d,e,f,g,h,l,m){var n=Kb([f,g,h,l]),p=a.b?ic(n)/a.b:null,q=a.g.a&&.5<p&&1>p,r=!1;if(0<m){if(a.c.g&&a.l)var u=Kb([b,c,d,e]),r=r|.25<ic(u)/a.l;!q&&a.g.g&&p&&(r|=.25<p)}if(r||!a.i||nc(n,a.i)){if(!(r||isFinite(f[0])&&isFinite(f[1])&&isFinite(g[0])&&isFinite(g[1])&&isFinite(h[0])&&isFinite(h[1])&&isFinite(l[0])&&isFinite(l[1])))if(0<m)r=!0;else return;if(0<m&&(r||(p=a.a([(b[0]+d[0])/2,(b[1]+d[1])/2]),n=q?(xa(f[0],a.b)+xa(h[0],a.b))/2-xa(p[0],a.b):(f[0]+h[0])/2-p[0],p=(f[1]+h[1])/2-p[1],
+r=n*n+p*p>a.s),r)){Math.abs(b[0]-d[0])<=Math.abs(b[1]-d[1])?(q=[(c[0]+d[0])/2,(c[1]+d[1])/2],n=a.a(q),p=[(e[0]+b[0])/2,(e[1]+b[1])/2],r=a.a(p),xk(a,b,c,q,p,f,g,n,r,m-1),xk(a,p,q,d,e,r,n,h,l,m-1)):(q=[(b[0]+c[0])/2,(b[1]+c[1])/2],n=a.a(q),p=[(d[0]+e[0])/2,(d[1]+e[1])/2],r=a.a(p),xk(a,b,q,p,e,f,n,r,l,m-1),xk(a,q,c,d,p,n,g,h,r,m-1));return}if(q){if(!a.j)return;a.o=!0}a.f.push({source:[f,h,l],target:[b,d,e]});a.f.push({source:[f,g,h],target:[b,c,d]})}}
+function yk(a){var b=Lb();a.f.forEach(function(a){a=a.source;Mb(b,a[0]);Mb(b,a[1]);Mb(b,a[2])});return b};function zk(a,b,c,d,e,f){this.v=b;this.s=a.H();var g=b.H(),h=g?mc(c,g):c,g=tk(a,b,kc(h),d);this.o=new wk(a,b,h,this.s,.5*g);this.c=d;this.g=c;a=yk(this.o);this.j=(this.ob=f(a,g,e))?this.ob.f:1;this.Ad=this.i=null;e=2;f=[];this.ob&&(e=0,f=this.ob.l);oh.call(this,c,d,this.j,e,f)}y(zk,oh);zk.prototype.ka=function(){1==this.state&&(Ka(this.Ad),this.Ad=null);oh.prototype.ka.call(this)};zk.prototype.a=function(){return this.i};
+zk.prototype.zd=function(){var a=this.ob.V();2==a&&(this.i=vk(ic(this.g)/this.c,jc(this.g)/this.c,this.j,this.ob.$(),0,this.c,this.g,this.o,[{extent:this.ob.H(),image:this.ob.a()}],0));this.state=a;ph(this)};zk.prototype.load=function(){if(0==this.state){this.state=1;ph(this);var a=this.ob.V();2==a||3==a?this.zd():(this.Ad=B(this.ob,"change",function(){var a=this.ob.V();if(2==a||3==a)Ka(this.Ad),this.Ad=null,this.zd()},this),this.ob.load())}};function Ak(a){jf.call(this,{attributions:a.attributions,extent:a.extent,logo:a.logo,projection:a.projection,state:a.state});this.C=void 0!==a.resolutions?a.resolutions:null;this.a=null;this.qa=0}y(Ak,jf);function Bk(a,b){if(a.C){var c=kb(a.C,b,0);b=a.C[c]}return b}
+Ak.prototype.A=function(a,b,c,d){var e=this.f;if(e&&d&&!Oc(e,d)){if(this.a){if(this.qa==this.g&&Oc(this.a.v,d)&&this.a.$()==b&&this.a.f==c&&$b(this.a.H(),a))return this.a;Ta(this.a);this.a=null}this.a=new zk(e,d,a,b,c,function(a,b,c){return this.Mc(a,b,c,e)}.bind(this));this.qa=this.g;return this.a}e&&(d=e);return this.Mc(a,b,c,d)};Ak.prototype.o=function(a){a=a.target;switch(a.V()){case 1:this.b(new Ck(Dk,a));break;case 2:this.b(new Ck(Ek,a));break;case 3:this.b(new Ck(Fk,a))}};
+function Gk(a,b){a.a().src=b}function Ck(a,b){Wa.call(this,a);this.image=b}y(Ck,Wa);var Dk="imageloadstart",Ek="imageloadend",Fk="imageloaderror";function Hk(a){Ak.call(this,{attributions:a.attributions,logo:a.logo,projection:a.projection,resolutions:a.resolutions,state:a.state});this.ia=a.canvasFunction;this.T=null;this.Y=0;this.ta=void 0!==a.ratio?a.ratio:1.5}y(Hk,Ak);Hk.prototype.Mc=function(a,b,c,d){b=Bk(this,b);var e=this.T;if(e&&this.Y==this.g&&e.$()==b&&e.f==c&&Ub(e.H(),a))return e;a=a.slice();oc(a,this.ta);(d=this.ia(a,b,c,[ic(a)/b*c,jc(a)/b*c],d))&&(e=new nk(a,b,c,this.l,d));this.T=e;this.Y=this.g;return e};function Ik(a){eb.call(this);this.i=void 0;this.a="geometry";this.c=null;this.l=void 0;this.f=null;B(this,gb(this.a),this.be,this);void 0!==a&&(a instanceof Tc||!a?this.Ua(a):this.G(a))}y(Ik,eb);k=Ik.prototype;k.clone=function(){var a=new Ik(this.O());a.Ec(this.a);var b=this.W();b&&a.Ua(b.clone());(b=this.c)&&a.sf(b);return a};k.W=function(){return this.get(this.a)};k.Xa=function(){return this.i};k.$j=function(){return this.a};k.Jl=function(){return this.c};k.ec=function(){return this.l};k.Kl=function(){this.u()};
+k.be=function(){this.f&&(Ka(this.f),this.f=null);var a=this.W();a&&(this.f=B(a,"change",this.Kl,this));this.u()};k.Ua=function(a){this.set(this.a,a)};k.sf=function(a){this.l=(this.c=a)?Jk(a):void 0;this.u()};k.mc=function(a){this.i=a;this.u()};k.Ec=function(a){Qa(this,gb(this.a),this.be,this);this.a=a;B(this,gb(this.a),this.be,this);this.be()};function Jk(a){if("function"!==typeof a){var b;b=Array.isArray(a)?a:[a];a=function(){return b}}return a};function Kk(a,b,c,d,e){df.call(this,a,b);this.g=Oe();this.l=d;this.c=null;this.f={gd:!1,Tf:null,bi:-1,Uf:-1,yd:null,ui:[]};this.v=e;this.j=c}y(Kk,df);k=Kk.prototype;k.$a=function(){return-1==this.f.Uf?null:this.g.canvas};k.Ul=function(){return this.l};k.ib=function(){return this.j};k.load=function(){0==this.state&&(this.state=1,ef(this),this.v(this,this.j),this.s(null,NaN,null))};k.gi=function(a){this.c=a;this.state=2;ef(this)};k.vf=function(a){this.o=a};k.ki=function(a){this.s=a};var Lk=document.implementation.createDocument("","",null);function Mk(a,b){return Lk.createElementNS(a,b)}function Nk(a,b){return Ok(a,b,[]).join("")}function Ok(a,b,c){if(a.nodeType==Node.CDATA_SECTION_NODE||a.nodeType==Node.TEXT_NODE)b?c.push(String(a.nodeValue).replace(/(\r\n|\r|\n)/g,"")):c.push(a.nodeValue);else for(a=a.firstChild;a;a=a.nextSibling)Ok(a,b,c);return c}function Pk(a){return a instanceof Document}function Qk(a){return a instanceof Node}
+function Rk(a){return(new DOMParser).parseFromString(a,"application/xml")}function Sk(a,b){return function(c,d){var e=a.call(b,c,d);void 0!==e&&mb(d[d.length-1],e)}}function Tk(a,b){return function(c,d){var e=a.call(void 0!==b?b:this,c,d);void 0!==e&&d[d.length-1].push(e)}}function Uk(a,b){return function(c,d){var e=a.call(void 0!==b?b:this,c,d);void 0!==e&&(d[d.length-1]=e)}}
+function Vk(a){return function(b,c){var d=a.call(this,b,c);if(void 0!==d){var e=c[c.length-1],f=b.localName,g;f in e?g=e[f]:g=e[f]=[];g.push(d)}}}function J(a,b){return function(c,d){var e=a.call(this,c,d);void 0!==e&&(d[d.length-1][void 0!==b?b:c.localName]=e)}}function L(a,b){return function(c,d,e){a.call(void 0!==b?b:this,c,d,e);e[e.length-1].node.appendChild(c)}}
+function Wk(a){var b,c;return function(d,e,f){if(!b){b={};var g={};g[d.localName]=a;b[d.namespaceURI]=g;c=Xk(d.localName)}Yk(b,c,e,f)}}function Xk(a,b){return function(c,d,e){c=d[d.length-1].node;d=a;void 0===d&&(d=e);e=b;void 0===b&&(e=c.namespaceURI);return Mk(e,d)}}var Zk=Xk();function $k(a,b){for(var c=b.length,d=Array(c),e=0;e<c;++e)d[e]=a[b[e]];return d}function M(a,b,c){c=void 0!==c?c:{};var d,e;d=0;for(e=a.length;d<e;++d)c[a[d]]=b;return c}
+function al(a,b,c,d){for(b=b.firstElementChild;b;b=b.nextElementSibling){var e=a[b.namespaceURI];void 0!==e&&(e=e[b.localName])&&e.call(d,b,c)}}function O(a,b,c,d,e){d.push(a);al(b,c,d,e);return d.pop()}function Yk(a,b,c,d,e,f){for(var g=(void 0!==e?e:c).length,h,l,m=0;m<g;++m)h=c[m],void 0!==h&&(l=b.call(f,h,d,void 0!==e?e[m]:void 0),void 0!==l&&a[l.namespaceURI][l.localName].call(f,l,h,d))}function bl(a,b,c,d,e,f,g){e.push(a);Yk(b,c,d,e,f,g);e.pop()};function cl(a,b,c,d){return function(e,f,g){var h=new XMLHttpRequest;h.open("GET","function"===typeof a?a(e,f,g):a,!0);"arraybuffer"==b.X()&&(h.responseType="arraybuffer");h.onload=function(){if(200<=h.status&&300>h.status){var a=b.X(),e;"json"==a||"text"==a?e=h.responseText:"xml"==a?(e=h.responseXML)||(e=Rk(h.responseText)):"arraybuffer"==a&&(e=h.response);e&&c.call(this,b.Fa(e,{featureProjection:g}),b.Oa(e))}else d.call(this)}.bind(this);h.send()}}
+function dl(a,b){return cl(a,b,function(a,b){this.vf(b);this.gi(a)},function(){this.state=3;ef(this)})}function el(a,b){return cl(a,b,function(a){this.Jc(a)},na)};function fl(){return[[-Infinity,-Infinity,Infinity,Infinity]]};var gl,hl,il,jl;
+(function(){var a={},b={ja:a};(function(c){if("object"===typeof a&&"undefined"!==typeof b)b.ja=c();else{var d;"undefined"!==typeof window?d=window:"undefined"!==typeof global?d=global:"undefined"!==typeof self?d=self:d=this;d.Tp=c()}})(function(){return function d(a,b,g){function h(m,p){if(!b[m]){if(!a[m]){var q="function"==typeof require&&require;if(!p&&q)return q(m,!0);if(l)return l(m,!0);q=Error("Cannot find module '"+m+"'");throw q.code="MODULE_NOT_FOUND",q;}q=b[m]={ja:{}};a[m][0].call(q.ja,function(b){var d=
+a[m][1][b];return h(d?d:b)},q,q.ja,d,a,b,g)}return b[m].ja}for(var l="function"==typeof require&&require,m=0;m<g.length;m++)h(g[m]);return h}({1:[function(a,b){function f(a,b){if(!(this instanceof f))return new f(a,b);this.Te=Math.max(4,a||9);this.hg=Math.max(2,Math.ceil(.4*this.Te));b&&this.mj(b);this.clear()}function g(a,b){h(a,0,a.children.length,b,a)}function h(a,b,d,e,f){f||(f=x(null));f.ca=Infinity;f.fa=Infinity;f.ea=-Infinity;f.ga=-Infinity;for(var g;b<d;b++)g=a.children[b],l(f,a.Ta?e(g):g);
+return f}function l(a,b){a.ca=Math.min(a.ca,b.ca);a.fa=Math.min(a.fa,b.fa);a.ea=Math.max(a.ea,b.ea);a.ga=Math.max(a.ga,b.ga)}function m(a,b){return a.ca-b.ca}function n(a,b){return a.fa-b.fa}function p(a){return(a.ea-a.ca)*(a.ga-a.fa)}function q(a){return a.ea-a.ca+(a.ga-a.fa)}function r(a,b){return a.ca<=b.ca&&a.fa<=b.fa&&b.ea<=a.ea&&b.ga<=a.ga}function u(a,b){return b.ca<=a.ea&&b.fa<=a.ga&&b.ea>=a.ca&&b.ga>=a.fa}function x(a){return{children:a,height:1,Ta:!0,ca:Infinity,fa:Infinity,ea:-Infinity,
+ga:-Infinity}}function v(a,b,d,e,f){for(var g=[b,d],h;g.length;)d=g.pop(),b=g.pop(),d-b<=e||(h=b+Math.ceil((d-b)/e/2)*e,D(a,h,b,d,f),g.push(b,h,h,d))}b.ja=f;var D=a("quickselect");f.prototype={all:function(){return this.cg(this.data,[])},search:function(a){var b=this.data,d=[],e=this.lb;if(!u(a,b))return d;for(var f=[],g,h,l,m;b;){g=0;for(h=b.children.length;g<h;g++)l=b.children[g],m=b.Ta?e(l):l,u(a,m)&&(b.Ta?d.push(l):r(a,m)?this.cg(l,d):f.push(l));b=f.pop()}return d},load:function(a){if(!a||!a.length)return this;
+if(a.length<this.hg){for(var b=0,d=a.length;b<d;b++)this.Ca(a[b]);return this}a=this.eg(a.slice(),0,a.length-1,0);this.data.children.length?this.data.height===a.height?this.jg(this.data,a):(this.data.height<a.height&&(b=this.data,this.data=a,a=b),this.gg(a,this.data.height-a.height-1,!0)):this.data=a;return this},Ca:function(a){a&&this.gg(a,this.data.height-1);return this},clear:function(){this.data=x([]);return this},remove:function(a,b){if(!a)return this;for(var d=this.data,e=this.lb(a),f=[],g=
+[],h,l,m,n;d||f.length;){d||(d=f.pop(),l=f[f.length-1],h=g.pop(),n=!0);if(d.Ta){a:{m=a;var p=d.children,q=b;if(q){for(var u=0;u<p.length;u++)if(q(m,p[u])){m=u;break a}m=-1}else m=p.indexOf(m)}if(-1!==m){d.children.splice(m,1);f.push(d);this.kj(f);break}}n||d.Ta||!r(d,e)?l?(h++,d=l.children[h],n=!1):d=null:(f.push(d),g.push(h),h=0,l=d,d=d.children[0])}return this},lb:function(a){return a},Ve:m,We:n,toJSON:function(){return this.data},cg:function(a,b){for(var d=[];a;)a.Ta?b.push.apply(b,a.children):
+d.push.apply(d,a.children),a=d.pop();return b},eg:function(a,b,d,e){var f=d-b+1,h=this.Te,l;if(f<=h)return l=x(a.slice(b,d+1)),g(l,this.lb),l;e||(e=Math.ceil(Math.log(f)/Math.log(h)),h=Math.ceil(f/Math.pow(h,e-1)));l=x([]);l.Ta=!1;l.height=e;var f=Math.ceil(f/h),h=f*Math.ceil(Math.sqrt(h)),m,n,p;for(v(a,b,d,h,this.Ve);b<=d;b+=h)for(n=Math.min(b+h-1,d),v(a,b,n,f,this.We),m=b;m<=n;m+=f)p=Math.min(m+f-1,n),l.children.push(this.eg(a,m,p,e-1));g(l,this.lb);return l},jj:function(a,b,d,e){for(var f,g,h,
+l,m,n,q,r;;){e.push(b);if(b.Ta||e.length-1===d)break;q=r=Infinity;f=0;for(g=b.children.length;f<g;f++)h=b.children[f],m=p(h),n=(Math.max(h.ea,a.ea)-Math.min(h.ca,a.ca))*(Math.max(h.ga,a.ga)-Math.min(h.fa,a.fa))-m,n<r?(r=n,q=m<q?m:q,l=h):n===r&&m<q&&(q=m,l=h);b=l||b.children[0]}return b},gg:function(a,b,d){var e=this.lb;d=d?a:e(a);var e=[],f=this.jj(d,this.data,b,e);f.children.push(a);for(l(f,d);0<=b;)if(e[b].children.length>this.Te)this.sj(e,b),b--;else break;this.gj(d,e,b)},sj:function(a,b){var d=
+a[b],e=d.children.length,f=this.hg;this.hj(d,f,e);e=this.ij(d,f,e);e=x(d.children.splice(e,d.children.length-e));e.height=d.height;e.Ta=d.Ta;g(d,this.lb);g(e,this.lb);b?a[b-1].children.push(e):this.jg(d,e)},jg:function(a,b){this.data=x([a,b]);this.data.height=a.height+1;this.data.Ta=!1;g(this.data,this.lb)},ij:function(a,b,d){var e,f,g,l,m,n,q;m=n=Infinity;for(e=b;e<=d-b;e++)f=h(a,0,e,this.lb),g=h(a,e,d,this.lb),l=Math.max(0,Math.min(f.ea,g.ea)-Math.max(f.ca,g.ca))*Math.max(0,Math.min(f.ga,g.ga)-
+Math.max(f.fa,g.fa)),f=p(f)+p(g),l<m?(m=l,q=e,n=f<n?f:n):l===m&&f<n&&(n=f,q=e);return q},hj:function(a,b,d){var e=a.Ta?this.Ve:m,f=a.Ta?this.We:n,g=this.dg(a,b,d,e);b=this.dg(a,b,d,f);g<b&&a.children.sort(e)},dg:function(a,b,d,e){a.children.sort(e);e=this.lb;var f=h(a,0,b,e),g=h(a,d-b,d,e),m=q(f)+q(g),n,p;for(n=b;n<d-b;n++)p=a.children[n],l(f,a.Ta?e(p):p),m+=q(f);for(n=d-b-1;n>=b;n--)p=a.children[n],l(g,a.Ta?e(p):p),m+=q(g);return m},gj:function(a,b,d){for(;0<=d;d--)l(b[d],a)},kj:function(a){for(var b=
+a.length-1,d;0<=b;b--)0===a[b].children.length?0<b?(d=a[b-1].children,d.splice(d.indexOf(a[b]),1)):this.clear():g(a[b],this.lb)},mj:function(a){var b=["return a"," - b",";"];this.Ve=new Function("a","b",b.join(a[0]));this.We=new Function("a","b",b.join(a[1]));this.lb=new Function("a","return {minX: a"+a[0]+", minY: a"+a[1]+", maxX: a"+a[2]+", maxY: a"+a[3]+"};")}}},{quickselect:2}],2:[function(a,b){function f(a,b,d,e,q){d=d||0;e=e||a.length-1;for(q=q||h;e>d;){if(600<e-d){var r=e-d+1,u=b-d+1,x=Math.log(r),
+v=.5*Math.exp(2*x/3),x=.5*Math.sqrt(x*v*(r-v)/r)*(0>u-r/2?-1:1);f(a,b,Math.max(d,Math.floor(b-u*v/r+x)),Math.min(e,Math.floor(b+(r-u)*v/r+x)),q)}r=a[b];u=d;v=e;g(a,d,b);for(0<q(a[e],r)&&g(a,d,e);u<v;){g(a,u,v);u++;for(v--;0>q(a[u],r);)u++;for(;0<q(a[v],r);)v--}0===q(a[d],r)?g(a,d,v):(v++,g(a,v,e));v<=b&&(d=v+1);b<=v&&(e=v-1)}}function g(a,b,d){var e=a[b];a[b]=a[d];a[d]=e}function h(a,b){return a<b?-1:a>b?1:0}b.ja=f},{}]},{},[1])(1)});gl=b.ja})();function kl(a){this.a=gl(a);this.b={}}k=kl.prototype;k.Ca=function(a,b){var c={ca:a[0],fa:a[1],ea:a[2],ga:a[3],value:b};this.a.Ca(c);this.b[w(b)]=c};k.load=function(a,b){for(var c=Array(b.length),d=0,e=b.length;d<e;d++){var f=a[d],g=b[d],f={ca:f[0],fa:f[1],ea:f[2],ga:f[3],value:g};c[d]=f;this.b[w(g)]=f}this.a.load(c)};k.remove=function(a){a=w(a);var b=this.b[a];delete this.b[a];return null!==this.a.remove(b)};
+function ll(a,b,c){var d=w(c),d=a.b[d];$b([d.ca,d.fa,d.ea,d.ga],b)||(a.remove(c),a.Ca(b,c))}function ml(a){return a.a.all().map(function(a){return a.value})}function nl(a,b){return a.a.search({ca:b[0],fa:b[1],ea:b[2],ga:b[3]}).map(function(a){return a.value})}k.forEach=function(a,b){return pl(ml(this),a,b)};function ql(a,b,c,d){return pl(nl(a,b),c,d)}function pl(a,b,c){for(var d,e=0,f=a.length;e<f&&!(d=b.call(c,a[e]));e++);return d}k.Ya=function(){return Ha(this.b)};
+k.clear=function(){this.a.clear();this.b={}};k.H=function(){var a=this.a.data;return[a.ca,a.fa,a.ea,a.ga]};function P(a){a=a||{};jf.call(this,{attributions:a.attributions,logo:a.logo,projection:void 0,state:"ready",wrapX:void 0!==a.wrapX?a.wrapX:!0});this.S=na;this.qa=a.format;this.T=a.url;void 0!==a.loader?this.S=a.loader:void 0!==this.T&&(this.S=el(this.T,this.qa));this.qb=void 0!==a.strategy?a.strategy:fl;var b=void 0!==a.useSpatialIndex?a.useSpatialIndex:!0;this.a=b?new kl:null;this.Y=new kl;this.i={};this.o={};this.j={};this.s={};this.c=null;var c,d;a.features instanceof le?(c=a.features,d=c.a):Array.isArray(a.features)&&
+(d=a.features);b||void 0!==c||(c=new le(d));void 0!==d&&rl(this,d);void 0!==c&&sl(this,c)}y(P,jf);k=P.prototype;k.rb=function(a){var b=w(a).toString();if(tl(this,b,a)){ul(this,b,a);var c=a.W();c?(b=c.H(),this.a&&this.a.Ca(b,a)):this.i[b]=a;this.b(new vl("addfeature",a))}this.u()};function ul(a,b,c){a.s[b]=[B(c,"change",a.Eh,a),B(c,"propertychange",a.Eh,a)]}function tl(a,b,c){var d=!0,e=c.Xa();void 0!==e?e.toString()in a.o?d=!1:a.o[e.toString()]=c:a.j[b]=c;return d}k.Jc=function(a){rl(this,a);this.u()};
+function rl(a,b){var c,d,e,f,g=[],h=[],l=[];d=0;for(e=b.length;d<e;d++)f=b[d],c=w(f).toString(),tl(a,c,f)&&h.push(f);d=0;for(e=h.length;d<e;d++){f=h[d];c=w(f).toString();ul(a,c,f);var m=f.W();m?(c=m.H(),g.push(c),l.push(f)):a.i[c]=f}a.a&&a.a.load(g,l);d=0;for(e=h.length;d<e;d++)a.b(new vl("addfeature",h[d]))}
+function sl(a,b){var c=!1;B(a,"addfeature",function(a){c||(c=!0,b.push(a.feature),c=!1)});B(a,"removefeature",function(a){c||(c=!0,b.remove(a.feature),c=!1)});B(b,"add",function(a){c||(a=a.element,c=!0,this.rb(a),c=!1)},a);B(b,"remove",function(a){c||(a=a.element,c=!0,this.nb(a),c=!1)},a);a.c=b}
+k.clear=function(a){if(a){for(var b in this.s)this.s[b].forEach(Ka);this.c||(this.s={},this.o={},this.j={})}else if(this.a){this.a.forEach(this.Sf,this);for(var c in this.i)this.Sf(this.i[c])}this.c&&this.c.clear();this.a&&this.a.clear();this.Y.clear();this.i={};this.b(new vl("clear"));this.u()};k.wg=function(a,b){if(this.a)return this.a.forEach(a,b);if(this.c)return this.c.forEach(a,b)};function wl(a,b,c){a.ub([b[0],b[1],b[0],b[1]],function(a){if(a.W().sg(b))return c.call(void 0,a)})}
+k.ub=function(a,b,c){if(this.a)return ql(this.a,a,b,c);if(this.c)return this.c.forEach(b,c)};k.xg=function(a,b,c){return this.ub(a,function(d){if(d.W().Ka(a)&&(d=b.call(c,d)))return d})};k.Fg=function(){return this.c};k.oe=function(){var a;this.c?a=this.c.a:this.a&&(a=ml(this.a),Ha(this.i)||mb(a,Ga(this.i)));return a};k.Eg=function(a){var b=[];wl(this,a,function(a){b.push(a)});return b};k.ef=function(a){return nl(this.a,a)};
+k.Ag=function(a,b){var c=a[0],d=a[1],e=null,f=[NaN,NaN],g=Infinity,h=[-Infinity,-Infinity,Infinity,Infinity],l=b?b:qc;ql(this.a,h,function(a){if(l(a)){var b=a.W(),p=g;g=b.sb(c,d,f,g);g<p&&(e=a,a=Math.sqrt(g),h[0]=c-a,h[1]=d-a,h[2]=c+a,h[3]=d+a)}});return e};k.H=function(){return this.a.H()};k.Dg=function(a){a=this.o[a.toString()];return void 0!==a?a:null};k.Ch=function(){return this.qa};k.Dh=function(){return this.T};
+k.Eh=function(a){a=a.target;var b=w(a).toString(),c=a.W();c?(c=c.H(),b in this.i?(delete this.i[b],this.a&&this.a.Ca(c,a)):this.a&&ll(this.a,c,a)):b in this.i||(this.a&&this.a.remove(a),this.i[b]=a);c=a.Xa();void 0!==c?(c=c.toString(),b in this.j?(delete this.j[b],this.o[c]=a):this.o[c]!==a&&(xl(this,a),this.o[c]=a)):b in this.j||(xl(this,a),this.j[b]=a);this.u();this.b(new vl("changefeature",a))};k.Ya=function(){return this.a.Ya()&&Ha(this.i)};
+k.Pc=function(a,b,c){var d=this.Y;a=this.qb(a,b);var e,f;e=0;for(f=a.length;e<f;++e){var g=a[e];ql(d,g,function(a){return Ub(a.extent,g)})||(this.S.call(this,g,b,c),d.Ca(g,{extent:g.slice()}))}};k.nb=function(a){var b=w(a).toString();b in this.i?delete this.i[b]:this.a&&this.a.remove(a);this.Sf(a);this.u()};k.Sf=function(a){var b=w(a).toString();this.s[b].forEach(Ka);delete this.s[b];var c=a.Xa();void 0!==c?delete this.o[c.toString()]:delete this.j[b];this.b(new vl("removefeature",a))};
+function xl(a,b){for(var c in a.o)if(a.o[c]===b){delete a.o[c];break}}function vl(a,b){Wa.call(this,a);this.feature=b}y(vl,Wa);function yl(a){this.c=a.source;this.Aa=Xc();this.i=Oe();this.j=[0,0];this.v=null;Hk.call(this,{attributions:a.attributions,canvasFunction:this.Dj.bind(this),logo:a.logo,projection:a.projection,ratio:a.ratio,resolutions:a.resolutions,state:this.c.V()});this.S=null;this.s=void 0;this.xh(a.style);B(this.c,"change",this.en,this)}y(yl,Hk);k=yl.prototype;
+k.Dj=function(a,b,c,d,e){var f=new dk(.5*b/c,a,b);this.c.Pc(a,b,e);var g=!1;this.c.ub(a,function(a){var d;if(!(d=g)){var e;(d=a.ec())?e=d.call(a,b):this.s&&(e=this.s(a,b));if(e){var n,p=!1;Array.isArray(e)||(e=[e]);d=0;for(n=e.length;d<n;++d)p=lk(f,a,e[d],jk(b,c),this.dn,this)||p;d=p}else d=!1}g=d},this);ek(f);if(g)return null;this.j[0]!=d[0]||this.j[1]!=d[1]?(this.i.canvas.width=d[0],this.i.canvas.height=d[1],this.j[0]=d[0],this.j[1]=d[1]):this.i.clearRect(0,0,d[0],d[1]);a=zl(this,kc(a),b,c,d);f.Pa(this.i,
+c,a,0,{});this.v=f;return this.i.canvas};k.ra=function(a,b,c,d,e){if(this.v){var f={};return this.v.ra(a,b,0,d,function(a){var b=w(a).toString();if(!(b in f))return f[b]=!0,e(a)})}};k.an=function(){return this.c};k.bn=function(){return this.S};k.cn=function(){return this.s};function zl(a,b,c,d,e){return qh(a.Aa,e[0]/2,e[1]/2,d/c,-d/c,0,-b[0],-b[1])}k.dn=function(){this.u()};k.en=function(){lf(this,this.c.V())};k.xh=function(a){this.S=void 0!==a?a:vj;this.s=a?tj(this.S):void 0;this.u()};function Al(a){Jj.call(this,a);this.f=null;this.s=Xc();this.o=this.c=null}y(Al,Jj);Al.prototype.ra=function(a,b,c,d){var e=this.a;return e.ha().ra(a,b.viewState.resolution,b.viewState.rotation,b.skippedFeatureUids,function(a){return c.call(d,a,e)})};
+Al.prototype.Cc=function(a,b,c,d){if(this.f&&this.f.a())if(this.a.ha()instanceof yl){if(a=a.slice(),sh(b.pixelToCoordinateMatrix,a,a),this.ra(a,b,qc,this))return c.call(d,this.a)}else if(this.c||(this.c=Xc(),cd(this.s,this.c)),b=[0,0],sh(this.c,a,b),this.o||(this.o=Oe(1,1)),this.o.clearRect(0,0,1,1),this.o.drawImage(this.f?this.f.a():null,b[0],b[1],1,1,0,0,1,1),0<this.o.getImageData(0,0,1,1).data[3])return c.call(d,this.a)};
+Al.prototype.l=function(a,b){var c=a.pixelRatio,d=a.viewState,e=d.center,f=d.resolution,g=this.a.ha(),h=a.viewHints,l=a.extent;void 0!==b.extent&&(l=mc(l,b.extent));h[0]||h[1]||hc(l)||(d=g.A(l,f,c,d.projection))&&vh(this,d)&&(this.f=d);if(this.f){var d=this.f,h=d.H(),l=d.$(),m=d.f,f=c*l/(f*m);qh(this.s,c*a.size[0]/2,c*a.size[1]/2,f,f,0,m*(h[0]-e[0])/l,m*(e[1]-h[3])/l);this.c=null;xh(a.attributions,d.l);yh(a,g)}return!!this.f};function Bl(a){Jj.call(this,a);this.c=Oe();this.o=null;this.j=Lb();this.S=[0,0,0];this.D=Xc();this.C=0}y(Bl,Jj);Bl.prototype.i=function(a,b,c){var d=Mj(this,a,0);Kj(this,"precompose",c,a,d);Cl(this,c,a,b);Lj(this,c,a,d)};
+Bl.prototype.l=function(a,b){function c(a){a=a.V();return 2==a||4==a||3==a&&!r}var d=a.pixelRatio,e=a.viewState,f=e.projection,g=this.a,h=g.ha(),l=h.eb(f),m=l.Lb(e.resolution,this.C),n=l.$(m),p=e.center;n==e.resolution?(p=Ah(p,n,a.size),e=lc(p,n,e.rotation,a.size)):e=a.extent;void 0!==b.extent&&(e=mc(e,b.extent));if(hc(e))return!1;n=sf(l,e,n);p={};p[m]={};var q=this.Qd(h,f,p),r=g.c(),u=Lb(),x=new fe(0,0,0,0),v,D,A,z;for(A=n.ca;A<=n.ea;++A)for(z=n.fa;z<=n.ga;++z)v=h.ac(m,A,z,d,f),!c(v)&&v.a&&(v=v.a),
+c(v)?p[m][v.ma.toString()]=v:(D=qf(l,v.ma,q,x,u),D||(v=rf(l,v.ma,x,u))&&q(m+1,v));q=Object.keys(p).map(Number);q.sort(ib);var u=[],F,x=0;for(A=q.length;x<A;++x)for(F in v=q[x],z=p[v],z)v=z[F],2==v.V()&&u.push(v);this.o=u;zh(a.usedTiles,h,m,n);Bh(a,h,l,d,f,e,m,g.f());wh(a,h);yh(a,h);return!0};Bl.prototype.Cc=function(a,b,c,d){var e=this.c.canvas,f=b.size;e.width=f[0];e.height=f[1];this.i(b,jh(this.a),this.c);if(0<this.c.getImageData(a[0],a[1],1,1).data[3])return c.call(d,this.a)};
+function Cl(a,b,c,d){var e=c.pixelRatio,f=c.viewState,g=f.center,h=f.projection,l=f.resolution,f=f.rotation,m=c.size,n=Math.round(e*m[0]/2),p=Math.round(e*m[1]/2),m=e/l,q=a.a,r=q.ha(),u=r.Ud(h),x=r.eb(h),q=ab(q,"render"),v=b,D,A,z,F;if(f||q)v=a.c,D=v.canvas,F=x.Lb(l),z=r.$d(F,e,h),F=hf(x.Ja(F)),z=z[0]/F[0],l=b.canvas.width*z,A=b.canvas.height*z,F=Math.round(Math.sqrt(l*l+A*A)),D.width!=F?D.width=D.height=F:v.clearRect(0,0,F,F),D=(F-l)/2/z,A=(F-A)/2/z,m*=z,n=Math.round(z*(n+D)),p=Math.round(z*(p+A));
+l=v.globalAlpha;v.globalAlpha=d.opacity;var N=a.o,K,X=r.jf(h)&&1==d.opacity;X||(N.reverse(),K=[]);var oa=d.extent;if(d=void 0!==oa){var H=fc(oa),ya=ec(oa),Ua=dc(oa),oa=cc(oa);sh(c.coordinateToPixelMatrix,H,H);sh(c.coordinateToPixelMatrix,ya,ya);sh(c.coordinateToPixelMatrix,Ua,Ua);sh(c.coordinateToPixelMatrix,oa,oa);var Xa=D||0,Va=A||0;v.save();var Aa=v.canvas.width*e/2,Qb=v.canvas.height*e/2;hj(v,-f,Aa,Qb);v.beginPath();v.moveTo(H[0]*e+Xa,H[1]*e+Va);v.lineTo(ya[0]*e+Xa,ya[1]*e+Va);v.lineTo(Ua[0]*
+e+Xa,Ua[1]*e+Va);v.lineTo(oa[0]*e+Xa,oa[1]*e+Va);v.clip();hj(v,f,Aa,Qb)}H=0;for(ya=N.length;H<ya;++H){var Ua=N[H],oa=Ua.ma,Qb=x.Ea(oa,a.j),Aa=oa[0],Nb=cc(x.Ea(x.qd(g,Aa,a.S))),oa=Math.round(ic(Qb)*m),Xa=Math.round(jc(Qb)*m),Va=Math.round((Qb[0]-Nb[0])*m/oa)*oa+n+Math.round((Nb[0]-g[0])*m),Qb=Math.round((Nb[1]-Qb[3])*m/Xa)*Xa+p+Math.round((g[1]-Nb[1])*m);if(!X){Nb=[Va,Qb,Va+oa,Qb+Xa];v.save();for(var kk=0,vs=K.length;kk<vs;++kk){var De=K[kk];nc(Nb,De)&&(v.beginPath(),v.moveTo(Nb[0],Nb[1]),v.lineTo(Nb[0],
+Nb[3]),v.lineTo(Nb[2],Nb[3]),v.lineTo(Nb[2],Nb[1]),v.moveTo(De[0],De[1]),v.lineTo(De[2],De[1]),v.lineTo(De[2],De[3]),v.lineTo(De[0],De[3]),v.closePath(),v.clip())}K.push(Nb)}Aa=r.$d(Aa,e,h);v.drawImage(Ua.$a(),u,u,Aa[0],Aa[1],Va,Qb,oa,Xa);X||v.restore()}d&&v.restore();q&&(e=D-n/z+n,h=A-p/z+p,g=qh(a.D,F/2-e,F/2-h,m,-m,-f,-g[0]+e/m,-g[1]-h/m),Kj(a,"render",v,c,g));(f||q)&&b.drawImage(v.canvas,-Math.round(D),-Math.round(A),F/z,F/z);v.globalAlpha=l};function Dl(a){Jj.call(this,a);this.c=!1;this.C=-1;this.A=NaN;this.v=Lb();this.o=this.U=null;this.j=Oe()}y(Dl,Jj);
+Dl.prototype.i=function(a,b,c){var d=a.extent,e=a.pixelRatio,f=b.Qc?a.skippedFeatureUids:{},g=a.viewState,h=g.projection,g=g.rotation,l=h.H(),m=this.a.ha(),n=Mj(this,a,0);Kj(this,"precompose",c,a,n);var p=this.o;if(p&&!p.Ya()){var q;ab(this.a,"render")?(this.j.canvas.width=c.canvas.width,this.j.canvas.height=c.canvas.height,q=this.j):q=c;var r=q.globalAlpha;q.globalAlpha=b.opacity;b=a.size[0]*e;var u=a.size[1]*e;hj(q,-g,b/2,u/2);p.Pa(q,e,n,g,f);if(m.D&&h.a&&!Ub(l,d)){for(var h=d[0],m=ic(l),x=0;h<
+l[0];)--x,n=m*x,n=Mj(this,a,n),p.Pa(q,e,n,g,f),h+=m;x=0;for(h=d[2];h>l[2];)++x,n=m*x,n=Mj(this,a,n),p.Pa(q,e,n,g,f),h-=m;n=Mj(this,a,0)}hj(q,g,b/2,u/2);q!=c&&(Kj(this,"render",q,a,n),c.drawImage(q.canvas,0,0));q.globalAlpha=r}Lj(this,c,a,n)};Dl.prototype.ra=function(a,b,c,d){if(this.o){var e=this.a,f={};return this.o.ra(a,b.viewState.resolution,b.viewState.rotation,{},function(a){var b=w(a).toString();if(!(b in f))return f[b]=!0,c.call(d,a,e)})}};Dl.prototype.D=function(){uh(this)};
+Dl.prototype.l=function(a){function b(a){var b,d=a.ec();d?b=d.call(a,m):(d=c.i)&&(b=d(a,m));if(b){if(b){d=!1;if(Array.isArray(b))for(var e=0,f=b.length;e<f;++e)d=lk(q,a,b[e],jk(m,n),this.D,this)||d;else d=lk(q,a,b,jk(m,n),this.D,this)||d;a=d}else a=!1;this.c=this.c||a}}var c=this.a,d=c.ha();xh(a.attributions,d.l);yh(a,d);var e=a.viewHints[0],f=a.viewHints[1],g=c.S,h=c.T;if(!this.c&&!g&&e||!h&&f)return!0;var l=a.extent,h=a.viewState,e=h.projection,m=h.resolution,n=a.pixelRatio,f=c.g,p=c.a,g=xj(c);
+void 0===g&&(g=ik);l=Ob(l,p*m);p=h.projection.H();d.D&&h.projection.a&&!Ub(p,a.extent)&&(a=Math.max(ic(l)/2,ic(p)),l[0]=p[0]-a,l[2]=p[2]+a);if(!this.c&&this.A==m&&this.C==f&&this.U==g&&Ub(this.v,l))return!0;this.o=null;this.c=!1;var q=new dk(.5*m/n,l,m,c.a);d.Pc(l,m,e);if(g){var r=[];d.ub(l,function(a){r.push(a)},this);r.sort(g);r.forEach(b,this)}else d.ub(l,b,this);ek(q);this.A=m;this.C=f;this.U=g;this.v=l;this.o=q;return!0};function El(a,b){var c=/\{z\}/g,d=/\{x\}/g,e=/\{y\}/g,f=/\{-y\}/g;return function(g){if(g)return a.replace(c,g[0].toString()).replace(d,g[1].toString()).replace(e,function(){return(-g[2]-1).toString()}).replace(f,function(){var a=b.a?b.a[g[0]]:null;return(a.ga-a.fa+1+g[2]).toString()})}}function Fl(a,b){for(var c=a.length,d=Array(c),e=0;e<c;++e)d[e]=El(a[e],b);return Gl(d)}function Gl(a){return 1===a.length?a[0]:function(b,c,d){if(b)return a[xa((b[1]<<b[0])+b[2],a.length)](b,c,d)}}
+function Hl(){}function Il(a){var b=[],c=/\{(\d)-(\d)\}/.exec(a)||/\{([a-z])-([a-z])\}/.exec(a);if(c){var d=c[2].charCodeAt(0),e;for(e=c[1].charCodeAt(0);e<=d;++e)b.push(a.replace(c[0],String.fromCharCode(e)))}else b.push(a);return b};function Jl(a){zf.call(this,{attributions:a.attributions,cacheSize:a.cacheSize,extent:a.extent,logo:a.logo,opaque:a.opaque,projection:a.projection,state:a.state,tileGrid:a.tileGrid,tilePixelRatio:a.tilePixelRatio,wrapX:a.wrapX});this.tileLoadFunction=a.tileLoadFunction;this.tileUrlFunction=this.vc?this.vc.bind(this):Hl;this.urls=null;a.urls?this.bb(a.urls):a.url&&this.Va(a.url);a.tileUrlFunction&&this.Qa(a.tileUrlFunction)}y(Jl,zf);k=Jl.prototype;k.fb=function(){return this.tileLoadFunction};
+k.gb=function(){return this.tileUrlFunction};k.hb=function(){return this.urls};k.Bh=function(a){a=a.target;switch(a.V()){case 1:this.b(new Df("tileloadstart",a));break;case 2:this.b(new Df("tileloadend",a));break;case 3:this.b(new Df("tileloaderror",a))}};k.kb=function(a){this.a.clear();this.tileLoadFunction=a;this.u()};k.Qa=function(a,b){this.tileUrlFunction=a;"undefined"!==typeof b?Bf(this,b):this.u()};
+k.Va=function(a){var b=this.urls=Il(a);this.Qa(this.vc?this.vc.bind(this):Fl(b,this.tileGrid),a)};k.bb=function(a){this.urls=a;var b=a.join("\n");this.Qa(this.vc?this.vc.bind(this):Fl(a,this.tileGrid),b)};k.Yf=function(a,b,c){a=this.Eb(a,b,c);Ze(this.a,a)&&this.a.get(a)};function Kl(a){Jl.call(this,{attributions:a.attributions,cacheSize:void 0!==a.cacheSize?a.cacheSize:128,extent:a.extent,logo:a.logo,opaque:!1,projection:a.projection,state:a.state,tileGrid:a.tileGrid,tileLoadFunction:a.tileLoadFunction?a.tileLoadFunction:Ll,tileUrlFunction:a.tileUrlFunction,tilePixelRatio:a.tilePixelRatio,url:a.url,urls:a.urls,wrapX:void 0===a.wrapX?!0:a.wrapX});this.c=a.format?a.format:null;this.tileClass=a.tileClass?a.tileClass:Kk}y(Kl,Jl);
+Kl.prototype.ac=function(a,b,c,d,e){var f=this.Eb(a,b,c);if(Ze(this.a,f))return this.a.get(f);a=[a,b,c];d=(b=Cf(this,a,e))?this.tileUrlFunction(b,d,e):void 0;d=new this.tileClass(a,void 0!==d?0:4,void 0!==d?d:"",this.c,this.tileLoadFunction);B(d,"change",this.Bh,this);this.a.set(f,d);return d};Kl.prototype.$d=function(a,b){var c=hf(this.tileGrid.Ja(a));return[c[0]*b,c[1]*b]};function Ll(a,b){a.ki(dl(b,a.l))};var Ml={image:Nj,hybrid:["Polygon","LineString"]},Nl={hybrid:["Image","Text"],vector:Nj};function Ol(a){Bl.call(this,a);this.U=!1;this.v=Xc();this.C="vector"==a.s?1:0}y(Ol,Bl);
+Ol.prototype.i=function(a,b,c){var d=Mj(this,a,0);Kj(this,"precompose",c,a,d);var e=this.a.s;"vector"!==e&&Cl(this,c,a,b);if("image"!==e){var f=this.a,e=Nl[f.s],g=a.pixelRatio,h=b.Qc?a.skippedFeatureUids:{},l=a.viewState,m=l.center,n=l.rotation,p=a.size,l=g/l.resolution,q=f.ha(),r=q.bc(g),u=Mj(this,a,0);ab(f,"render")?(this.c.canvas.width=c.canvas.width,this.c.canvas.height=c.canvas.height,f=this.c):f=c;var x=f.globalAlpha;f.globalAlpha=b.opacity;b=this.o;var q=q.tileGrid,v,D,A,z,F,N,K,X;D=0;for(A=
+b.length;D<A;++D)z=b[D],K=z.f,F=q.Ea(z.ma,this.j),v=z.ma[0],N="tile-pixels"==z.o.wb(),v=q.$(v),X=v/r,v=Math.round(g*p[0]/2),z=Math.round(g*p[1]/2),N?(F=fc(F),F=qh(this.v,v,z,l*X,l*X,n,(F[0]-m[0])/X,(m[1]-F[1])/X)):F=u,hj(f,-n,v,z),K.yd.Pa(f,g,F,n,h,e),hj(f,n,v,z);f!=c&&(Kj(this,"render",f,a,u),c.drawImage(f.canvas,0,0));f.globalAlpha=x}Lj(this,c,a,d)};
+function Pl(a,b,c){function d(a){var b,c=a.ec();c?b=c.call(a,u):(c=e.i)&&(b=c(a,u));if(b){Array.isArray(b)||(b=[b]);var c=D,d=v;if(b){var f=!1;if(Array.isArray(b))for(var g=0,h=b.length;g<h;++g)f=lk(d,a,b[g],c,this.A,this)||f;else f=lk(d,a,b,c,this.A,this)||f;a=f}else a=!1;this.U=this.U||a;l.gd=l.gd||a}}var e=a.a,f=c.pixelRatio;c=c.viewState.projection;var g=e.g,h=xj(e)||null,l=b.f;if(l.gd||l.bi!=g||l.Tf!=h){l.yd=null;l.gd=!1;var m=e.ha(),n=m.tileGrid,p=b.ma,q=b.o,r="tile-pixels"==q.wb(),u=n.$(p[0]),
+x;r?(r=m=m.bc(f),n=hf(n.Ja(p[0])),n=[0,0,n[0]*r,n[1]*r]):(m=u,n=n.Ea(p),Oc(c,q)||(x=!0,b.vf(c)));l.gd=!1;var v=new dk(0,n,m,e.a),D=jk(m,f);b=b.c;h&&h!==l.Tf&&b.sort(h);n=0;for(p=b.length;n<p;++n)f=b[n],x&&f.W().jb(q,c),d.call(a,f);ek(v);l.bi=g;l.Tf=h;l.yd=v;l.resolution=NaN}}
+Ol.prototype.ra=function(a,b,c,d){var e=b.pixelRatio,f=b.viewState.resolution;b=b.viewState.rotation;var g=this.a,h={},l=this.o,m=g.ha(),n=m.tileGrid,p,q,r,u,x,v;r=0;for(u=l.length;r<u;++r)v=l[r],q=v.ma,x=m.tileGrid.Ea(q,this.j),Sb(x,a)&&("tile-pixels"===v.o.wb()?(x=fc(x),f=m.bc(e),q=n.$(q[0])/f,q=[(a[0]-x[0])/q,(x[1]-a[1])/q]):q=a,v=v.f.yd,p=p||v.ra(q,f,b,{},function(a){var b=w(a).toString();if(!(b in h))return h[b]=!0,c.call(d,a,g)}));return p};Ol.prototype.A=function(){uh(this)};
+Ol.prototype.l=function(a,b){var c=Bl.prototype.l.call(this,a,b);if(c)for(var d=Object.keys(a.Ee||{}),e=0,f=this.o.length;e<f;++e){var g=this.o[e];Pl(this,g,a);var h=g,g=a,l=this.a,m=Ml[l.s];if(m){var n=g.pixelRatio,p=h.f,q=l.g;if(!pb(p.ui,d)||p.Uf!==q){p.ui=d;p.Uf=q;var q=h.g,r=l.ha(),u=r.tileGrid,x=h.ma[0],v=u.$(x),l=hf(u.Ja(x)),x=u.$(x),D=x/v,A=l[0]*n*D,z=l[1]*n*D;q.canvas.width=A/D+.5;q.canvas.height=z/D+.5;q.scale(1/D,1/D);q.translate(A/2,z/2);D="tile-pixels"==h.o.wb();v=n/v;r=r.bc(n);x/=r;h=
+u.Ea(h.ma,this.j);D?h=qh(this.v,0,0,v*x,v*x,0,-l[0]*r/2,-l[1]*r/2):(h=kc(h),h=qh(this.v,0,0,v,-v,0,-h[0],-h[1]));p.yd.Pa(q,n,h,0,g.skippedFeatureUids||{},m)}}}return c};function Ql(a,b){Hh.call(this,0,b);this.f=Oe();this.b=this.f.canvas;this.b.style.width="100%";this.b.style.height="100%";this.b.className="ol-unselectable";a.insertBefore(this.b,a.childNodes[0]||null);this.a=!0;this.c=Xc()}y(Ql,Hh);Ql.prototype.Xe=function(a){return a instanceof cj?new Al(a):a instanceof dj?new Bl(a):a instanceof I?new Ol(a):a instanceof G?new Dl(a):null};
+function Rl(a,b,c){var d=a.i,e=a.f;if(ab(d,b)){var f=c.extent,g=c.pixelRatio,h=c.viewState.rotation,l=c.pixelRatio,m=c.viewState,n=m.resolution;a=qh(a.c,a.b.width/2,a.b.height/2,l/n,-l/n,-m.rotation,-m.center[0],-m.center[1]);f=new yj(e,g,f,a,h);d.b(new lh(b,d,f,c,e,null))}}Ql.prototype.X=function(){return"canvas"};
+Ql.prototype.Ce=function(a){if(a){var b=this.f,c=a.pixelRatio,d=Math.round(a.size[0]*c),c=Math.round(a.size[1]*c);this.b.width!=d||this.b.height!=c?(this.b.width=d,this.b.height=c):b.clearRect(0,0,d,c);var e=a.viewState.rotation;Ih(a);Rl(this,"precompose",a);var f=a.layerStatesArray;qb(f);hj(b,e,d/2,c/2);var g=a.viewState.resolution,h,l,m,n;h=0;for(l=f.length;h<l;++h)n=f[h],m=n.layer,m=Kh(this,m),nh(n,g)&&"ready"==n.R&&m.l(a,n)&&m.i(a,n,b);hj(b,-e,d/2,c/2);Rl(this,"postcompose",a);this.a||(this.b.style.display=
+"",this.a=!0);Lh(this,a);a.postRenderFunctions.push(Jh)}else this.a&&(this.b.style.display="none",this.a=!1)};function Sl(a,b){th.call(this,a);this.target=b}y(Sl,th);Sl.prototype.Nd=na;Sl.prototype.th=na;function Tl(a){var b=document.createElement("DIV");b.style.position="absolute";Sl.call(this,a,b);this.f=null;this.c=Zc()}y(Tl,Sl);Tl.prototype.ra=function(a,b,c,d){var e=this.a;return e.ha().ra(a,b.viewState.resolution,b.viewState.rotation,b.skippedFeatureUids,function(a){return c.call(d,a,e)})};Tl.prototype.Nd=function(){Ve(this.target);this.f=null};
+Tl.prototype.yf=function(a,b){var c=a.viewState,d=c.center,e=c.resolution,f=c.rotation,g=this.f,h=this.a.ha(),l=a.viewHints,m=a.extent;void 0!==b.extent&&(m=mc(m,b.extent));l[0]||l[1]||hc(m)||(c=h.A(m,e,a.pixelRatio,c.projection))&&vh(this,c)&&(g=c);g&&(l=g.H(),m=g.$(),c=Xc(),qh(c,a.size[0]/2,a.size[1]/2,m/e,m/e,f,(l[0]-d[0])/m,(d[1]-l[3])/m),g!=this.f&&(d=g.a(this),d.style.maxWidth="none",d.style.position="absolute",Ve(this.target),this.target.appendChild(d),this.f=g),rh(c,this.c)||(Se(this.target,
+c),$c(this.c,c)),xh(a.attributions,g.l),yh(a,h));return!0};function Ul(a){var b=document.createElement("DIV");b.style.position="absolute";Sl.call(this,a,b);this.c=!0;this.l=1;this.i=0;this.f={}}y(Ul,Sl);Ul.prototype.Nd=function(){Ve(this.target);this.i=0};
+Ul.prototype.yf=function(a,b){if(!b.visible)return this.c&&(this.target.style.display="none",this.c=!1),!0;var c=a.pixelRatio,d=a.viewState,e=d.projection,f=this.a,g=f.ha(),h=g.eb(e),l=g.Ud(e),m=h.Lb(d.resolution),n=h.$(m),p=d.center,q;n==d.resolution?(p=Ah(p,n,a.size),q=lc(p,n,d.rotation,a.size)):q=a.extent;void 0!==b.extent&&(q=mc(q,b.extent));var n=sf(h,q,n),r={};r[m]={};var u=this.Qd(g,e,r),x=f.c(),v=Lb(),D=new fe(0,0,0,0),A,z,F,N;for(F=n.ca;F<=n.ea;++F)for(N=n.fa;N<=n.ga;++N)A=g.ac(m,F,N,c,e),
+z=A.V(),z=2==z||4==z||3==z&&!x,!z&&A.a&&(A=A.a),z=A.V(),2==z?r[m][A.ma.toString()]=A:4==z||3==z&&!x||(z=qf(h,A.ma,u,D,v),z||(A=rf(h,A.ma,D,v))&&u(m+1,A));var K;if(this.i!=g.g){for(K in this.f)x=this.f[+K],Ue(x.target);this.f={};this.i=g.g}v=Object.keys(r).map(Number);v.sort(ib);var u={},X;F=0;for(N=v.length;F<N;++F){K=v[F];K in this.f?x=this.f[K]:(x=h.qd(p,K),x=new Vl(h,x),u[K]=!0,this.f[K]=x);K=r[K];for(X in K){A=x;z=K[X];var oa=l,H=z.ma,ya=H[0],Ua=H[1],Xa=H[2],H=H.toString();if(!(H in A.a)){var ya=
+hf(A.c.Ja(ya),A.o),Va=z.$a(A),Aa=Va.style;Aa.maxWidth="none";var Qb,Nb;0<oa?(Qb=document.createElement("DIV"),Nb=Qb.style,Nb.overflow="hidden",Nb.width=ya[0]+"px",Nb.height=ya[1]+"px",Aa.position="absolute",Aa.left=-oa+"px",Aa.top=-oa+"px",Aa.width=ya[0]+2*oa+"px",Aa.height=ya[1]+2*oa+"px",Qb.appendChild(Va)):(Aa.width=ya[0]+"px",Aa.height=ya[1]+"px",Qb=Va,Nb=Aa);Nb.position="absolute";Nb.left=(Ua-A.g[1])*ya[0]+"px";Nb.top=(A.g[2]-Xa)*ya[1]+"px";A.b||(A.b=document.createDocumentFragment());A.b.appendChild(Qb);
+A.a[H]=z}}x.b&&(x.target.appendChild(x.b),x.b=null)}l=Object.keys(this.f).map(Number);l.sort(ib);F=Xc();X=0;for(v=l.length;X<v;++X)if(K=l[X],x=this.f[K],K in r)if(A=x.$(),N=x.Ia(),qh(F,a.size[0]/2,a.size[1]/2,A/d.resolution,A/d.resolution,d.rotation,(N[0]-p[0])/A,(p[1]-N[1])/A),x.setTransform(F),K in u){for(--K;0<=K;--K)if(K in this.f){this.f[K].target.parentNode&&this.f[K].target.parentNode.insertBefore(x.target,this.f[K].target.nextSibling);break}0>K&&this.target.insertBefore(x.target,this.target.childNodes[0]||
+null)}else{if(!a.viewHints[0]&&!a.viewHints[1]){z=pf(x.c,q,x.g[0],D);K=[];A=void 0;for(A in x.a)N=x.a[A],z.contains(N.ma)||K.push(N);z=0;for(oa=K.length;z<oa;++z)N=K[z],A=N.ma.toString(),Ue(N.$a(x)),delete x.a[A]}}else Ue(x.target),delete this.f[K];b.opacity!=this.l&&(this.l=this.target.style.opacity=b.opacity);b.visible&&!this.c&&(this.target.style.display="",this.c=!0);zh(a.usedTiles,g,m,n);Bh(a,g,h,c,e,q,m,f.f());wh(a,g);yh(a,g);return!0};
+function Vl(a,b){this.target=document.createElement("DIV");this.target.style.position="absolute";this.target.style.width="100%";this.target.style.height="100%";this.c=a;this.g=b;this.i=fc(a.Ea(b));this.l=a.$(b[0]);this.a={};this.b=null;this.f=Zc();this.o=[0,0]}Vl.prototype.Ia=function(){return this.i};Vl.prototype.$=function(){return this.l};Vl.prototype.setTransform=function(a){rh(a,this.f)||(Se(this.target,a),$c(this.f,a))};function Wl(a){this.i=Oe();var b=this.i.canvas;b.style.maxWidth="none";b.style.position="absolute";Sl.call(this,a,b);this.f=!1;this.l=-1;this.s=NaN;this.o=Lb();this.c=this.j=null;this.U=Xc();this.v=Xc()}y(Wl,Sl);k=Wl.prototype;k.Nd=function(){var a=this.i.canvas;a.width=a.width;this.l=0};
+k.th=function(a,b){var c=a.viewState,d=c.center,e=c.rotation,f=c.resolution,c=a.pixelRatio,g=a.size[0],h=a.size[1],l=g*c,m=h*c,d=qh(this.U,c*g/2,c*h/2,c/f,-c/f,-e,-d[0],-d[1]),f=this.i;f.canvas.width=l;f.canvas.height=m;g=qh(this.v,0,0,1/c,1/c,0,-(l-g)/2*c,-(m-h)/2*c);Se(f.canvas,g);Xl(this,"precompose",a,d);(g=this.c)&&!g.Ya()&&(f.globalAlpha=b.opacity,g.Pa(f,c,d,e,b.Qc?a.skippedFeatureUids:{}),Xl(this,"render",a,d));Xl(this,"postcompose",a,d)};
+function Xl(a,b,c,d){var e=a.i;a=a.a;ab(a,b)&&(d=new yj(e,c.pixelRatio,c.extent,d,c.viewState.rotation),a.b(new lh(b,a,d,c,e,null)))}k.ra=function(a,b,c,d){if(this.c){var e=this.a,f={};return this.c.ra(a,b.viewState.resolution,b.viewState.rotation,{},function(a){var b=w(a).toString();if(!(b in f))return f[b]=!0,c.call(d,a,e)})}};k.uh=function(){uh(this)};
+k.yf=function(a){function b(a){var b,d=a.ec();d?b=d.call(a,l):(d=c.i)&&(b=d(a,l));if(b){if(b){d=!1;if(Array.isArray(b))for(var e=0,f=b.length;e<f;++e)d=lk(n,a,b[e],jk(l,m),this.uh,this)||d;else d=lk(n,a,b,jk(l,m),this.uh,this)||d;a=d}else a=!1;this.f=this.f||a}}var c=this.a,d=c.ha();xh(a.attributions,d.l);yh(a,d);var e=a.viewHints[0],f=a.viewHints[1],g=c.S,h=c.T;if(!this.f&&!g&&e||!h&&f)return!0;var f=a.extent,g=a.viewState,e=g.projection,l=g.resolution,m=a.pixelRatio;a=c.g;h=c.a;g=xj(c);void 0===
+g&&(g=ik);f=Ob(f,h*l);if(!this.f&&this.s==l&&this.l==a&&this.j==g&&Ub(this.o,f))return!0;this.c=null;this.f=!1;var n=new dk(.5*l/m,f,l,c.a);d.Pc(f,l,e);if(g){var p=[];d.ub(f,function(a){p.push(a)},this);p.sort(g);p.forEach(b,this)}else d.ub(f,b,this);ek(n);this.s=l;this.l=a;this.j=g;this.o=f;this.c=n;return!0};function Yl(a,b){Hh.call(this,0,b);this.f=Oe();var c=this.f.canvas;c.style.position="absolute";c.style.width="100%";c.style.height="100%";c.className="ol-unselectable";a.insertBefore(c,a.childNodes[0]||null);this.c=Xc();this.b=document.createElement("DIV");this.b.className="ol-unselectable";c=this.b.style;c.position="absolute";c.width="100%";c.height="100%";B(this.b,"touchstart",Za);a.insertBefore(this.b,a.childNodes[0]||null);this.a=!0}y(Yl,Hh);Yl.prototype.ka=function(){Ue(this.b);Hh.prototype.ka.call(this)};
+Yl.prototype.Xe=function(a){if(a instanceof cj)a=new Tl(a);else if(a instanceof dj)a=new Ul(a);else if(a instanceof G)a=new Wl(a);else return null;return a};function Zl(a,b,c){var d=a.i;if(ab(d,b)){var e=c.extent,f=c.pixelRatio,g=c.viewState,h=g.rotation,l=a.f,m=l.canvas;qh(a.c,m.width/2,m.height/2,f/g.resolution,-f/g.resolution,-g.rotation,-g.center[0],-g.center[1]);a=new yj(l,f,e,a.c,h);d.b(new lh(b,d,a,c,l,null))}}Yl.prototype.X=function(){return"dom"};
+Yl.prototype.Ce=function(a){if(a){var b=this.i;if(ab(b,"precompose")||ab(b,"postcompose")){var b=this.f.canvas,c=a.pixelRatio;b.width=a.size[0]*c;b.height=a.size[1]*c}Zl(this,"precompose",a);b=a.layerStatesArray;qb(b);var c=a.viewState.resolution,d,e,f,g;d=0;for(e=b.length;d<e;++d)g=b[d],f=g.layer,f=Kh(this,f),this.b.insertBefore(f.target,this.b.childNodes[d]||null),nh(g,c)&&"ready"==g.R?f.yf(a,g)&&f.th(a,g):f.Nd();var b=a.layerStates,h;for(h in this.g)h in b||(f=this.g[h],Ue(f.target));this.a||(this.b.style.display=
+"",this.a=!0);Ih(a);Lh(this,a);a.postRenderFunctions.push(Jh);Zl(this,"postcompose",a)}else this.a&&(this.b.style.display="none",this.a=!1)};function $l(a){this.b=a}function am(a){this.b=a}y(am,$l);am.prototype.X=function(){return 35632};function bm(a){this.b=a}y(bm,$l);bm.prototype.X=function(){return 35633};function cm(){this.b="precision mediump float;varying vec2 a;varying float b;uniform float k;uniform sampler2D l;void main(void){vec4 texColor=texture2D(l,a);gl_FragColor.rgb=texColor.rgb;float alpha=texColor.a*b*k;if(alpha==0.0){discard;}gl_FragColor.a=alpha;}"}y(cm,am);ba(cm);
+function dm(){this.b="varying vec2 a;varying float b;attribute vec2 c;attribute vec2 d;attribute vec2 e;attribute float f;attribute float g;uniform mat4 h;uniform mat4 i;uniform mat4 j;void main(void){mat4 offsetMatrix=i;if(g==1.0){offsetMatrix=i*j;}vec4 offsets=offsetMatrix*vec4(e,0.,0.);gl_Position=h*vec4(c,0.,1.)+offsets;a=d;b=f;}"}y(dm,bm);ba(dm);
+function em(a,b){this.o=a.getUniformLocation(b,"j");this.j=a.getUniformLocation(b,"i");this.i=a.getUniformLocation(b,"k");this.l=a.getUniformLocation(b,"h");this.b=a.getAttribLocation(b,"e");this.a=a.getAttribLocation(b,"f");this.f=a.getAttribLocation(b,"c");this.g=a.getAttribLocation(b,"g");this.c=a.getAttribLocation(b,"d")};function fm(a){this.b=void 0!==a?a:[]};function gm(a,b){this.l=a;this.b=b;this.a={};this.c={};this.f={};this.j=this.s=this.i=this.o=null;(this.g=jb(ma,"OES_element_index_uint"))&&b.getExtension("OES_element_index_uint");B(this.l,"webglcontextlost",this.ao,this);B(this.l,"webglcontextrestored",this.bo,this)}y(gm,Sa);
+function hm(a,b,c){var d=a.b,e=c.b,f=String(w(c));if(f in a.a)d.bindBuffer(b,a.a[f].buffer);else{var g=d.createBuffer();d.bindBuffer(b,g);var h;34962==b?h=new Float32Array(e):34963==b&&(h=a.g?new Uint32Array(e):new Uint16Array(e));d.bufferData(b,h,35044);a.a[f]={Cb:c,buffer:g}}}function im(a,b){var c=a.b,d=String(w(b)),e=a.a[d];c.isContextLost()||c.deleteBuffer(e.buffer);delete a.a[d]}k=gm.prototype;
+k.ka=function(){Ra(this.l);var a=this.b;if(!a.isContextLost()){for(var b in this.a)a.deleteBuffer(this.a[b].buffer);for(b in this.f)a.deleteProgram(this.f[b]);for(b in this.c)a.deleteShader(this.c[b]);a.deleteFramebuffer(this.i);a.deleteRenderbuffer(this.j);a.deleteTexture(this.s)}};k.$n=function(){return this.b};
+function jm(a){if(!a.i){var b=a.b,c=b.createFramebuffer();b.bindFramebuffer(b.FRAMEBUFFER,c);var d=km(b,1,1),e=b.createRenderbuffer();b.bindRenderbuffer(b.RENDERBUFFER,e);b.renderbufferStorage(b.RENDERBUFFER,b.DEPTH_COMPONENT16,1,1);b.framebufferTexture2D(b.FRAMEBUFFER,b.COLOR_ATTACHMENT0,b.TEXTURE_2D,d,0);b.framebufferRenderbuffer(b.FRAMEBUFFER,b.DEPTH_ATTACHMENT,b.RENDERBUFFER,e);b.bindTexture(b.TEXTURE_2D,null);b.bindRenderbuffer(b.RENDERBUFFER,null);b.bindFramebuffer(b.FRAMEBUFFER,null);a.i=c;
+a.s=d;a.j=e}return a.i}function lm(a,b){var c=String(w(b));if(c in a.c)return a.c[c];var d=a.b,e=d.createShader(b.X());d.shaderSource(e,b.b);d.compileShader(e);return a.c[c]=e}function mm(a,b,c){var d=w(b)+"/"+w(c);if(d in a.f)return a.f[d];var e=a.b,f=e.createProgram();e.attachShader(f,lm(a,b));e.attachShader(f,lm(a,c));e.linkProgram(f);return a.f[d]=f}k.ao=function(){Fa(this.a);Fa(this.c);Fa(this.f);this.j=this.s=this.i=this.o=null};k.bo=function(){};
+k.we=function(a){if(a==this.o)return!1;this.b.useProgram(a);this.o=a;return!0};function nm(a,b,c){var d=a.createTexture();a.bindTexture(a.TEXTURE_2D,d);a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.LINEAR);a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.LINEAR);void 0!==b&&a.texParameteri(3553,10242,b);void 0!==c&&a.texParameteri(3553,10243,c);return d}function km(a,b,c){var d=nm(a,void 0,void 0);a.texImage2D(a.TEXTURE_2D,0,a.RGBA,b,c,0,a.RGBA,a.UNSIGNED_BYTE,null);return d}
+function om(a,b){var c=nm(a,33071,33071);a.texImage2D(a.TEXTURE_2D,0,a.RGBA,a.RGBA,a.UNSIGNED_BYTE,b);return c};function pm(a,b){this.C=this.A=void 0;this.j=kc(b);this.U=[];this.i=[];this.R=void 0;this.c=[];this.f=[];this.Ba=this.ya=void 0;this.a=[];this.D=this.o=null;this.S=void 0;this.ta=Zc();this.Aa=Zc();this.Y=this.T=void 0;this.Sa=Zc();this.za=this.ia=this.Ra=void 0;this.Gb=[];this.l=[];this.b=[];this.v=null;this.g=[];this.s=[];this.qa=void 0}y(pm,kh);
+function qm(a,b){var c=a.v,d=a.o,e=a.Gb,f=a.l,g=b.b;return function(){if(!g.isContextLost()){var a,l;a=0;for(l=e.length;a<l;++a)g.deleteTexture(e[a]);a=0;for(l=f.length;a<l;++a)g.deleteTexture(f[a])}im(b,c);im(b,d)}}
+function rm(a,b,c,d){var e=a.A,f=a.C,g=a.R,h=a.ya,l=a.Ba,m=a.S,n=a.T,p=a.Y,q=a.Ra?1:0,r=a.ia,u=a.za,x=a.qa,v=Math.cos(r),r=Math.sin(r),D=a.a.length,A=a.b.length,z,F,N,K,X,oa;for(z=0;z<c;z+=d)X=b[z]-a.j[0],oa=b[z+1]-a.j[1],F=A/8,N=-u*e,K=-u*(g-f),a.b[A++]=X,a.b[A++]=oa,a.b[A++]=N*v-K*r,a.b[A++]=N*r+K*v,a.b[A++]=n/l,a.b[A++]=(p+g)/h,a.b[A++]=m,a.b[A++]=q,N=u*(x-e),K=-u*(g-f),a.b[A++]=X,a.b[A++]=oa,a.b[A++]=N*v-K*r,a.b[A++]=N*r+K*v,a.b[A++]=(n+x)/l,a.b[A++]=(p+g)/h,a.b[A++]=m,a.b[A++]=q,N=u*(x-e),K=
+u*f,a.b[A++]=X,a.b[A++]=oa,a.b[A++]=N*v-K*r,a.b[A++]=N*r+K*v,a.b[A++]=(n+x)/l,a.b[A++]=p/h,a.b[A++]=m,a.b[A++]=q,N=-u*e,K=u*f,a.b[A++]=X,a.b[A++]=oa,a.b[A++]=N*v-K*r,a.b[A++]=N*r+K*v,a.b[A++]=n/l,a.b[A++]=p/h,a.b[A++]=m,a.b[A++]=q,a.a[D++]=F,a.a[D++]=F+1,a.a[D++]=F+2,a.a[D++]=F,a.a[D++]=F+2,a.a[D++]=F+3}pm.prototype.tc=function(a,b){this.g.push(this.a.length);this.s.push(b);var c=a.la();rm(this,c,c.length,a.va())};
+pm.prototype.uc=function(a,b){this.g.push(this.a.length);this.s.push(b);var c=a.la();rm(this,c,c.length,a.va())};function sm(a,b){var c=b.b;a.U.push(a.a.length);a.i.push(a.a.length);a.v=new fm(a.b);hm(b,34962,a.v);a.o=new fm(a.a);hm(b,34963,a.o);var d={};tm(a.Gb,a.c,d,c);tm(a.l,a.f,d,c);a.A=void 0;a.C=void 0;a.R=void 0;a.c=null;a.f=null;a.ya=void 0;a.Ba=void 0;a.a=null;a.S=void 0;a.T=void 0;a.Y=void 0;a.Ra=void 0;a.ia=void 0;a.za=void 0;a.b=null;a.qa=void 0}
+function tm(a,b,c,d){var e,f,g,h=b.length;for(g=0;g<h;++g)e=b[g],f=w(e).toString(),f in c?e=c[f]:(e=om(d,e),c[f]=e),a[g]=e}
+pm.prototype.Pa=function(a,b,c,d,e,f,g,h,l,m,n){f=a.b;hm(a,34962,this.v);hm(a,34963,this.o);var p=cm.Zb(),q=dm.Zb(),q=mm(a,p,q);this.D?p=this.D:this.D=p=new em(f,q);a.we(q);f.enableVertexAttribArray(p.f);f.vertexAttribPointer(p.f,2,5126,!1,32,0);f.enableVertexAttribArray(p.b);f.vertexAttribPointer(p.b,2,5126,!1,32,8);f.enableVertexAttribArray(p.c);f.vertexAttribPointer(p.c,2,5126,!1,32,16);f.enableVertexAttribArray(p.a);f.vertexAttribPointer(p.a,1,5126,!1,32,24);f.enableVertexAttribArray(p.g);f.vertexAttribPointer(p.g,
+1,5126,!1,32,28);q=this.Sa;qh(q,0,0,2/(c*e[0]),2/(c*e[1]),-d,-(b[0]-this.j[0]),-(b[1]-this.j[1]));b=this.Aa;c=2/e[0];e=2/e[1];ad(b);b[0]=c;b[5]=e;b[10]=1;b[15]=1;e=this.ta;ad(e);0!==d&&fd(e,-d);f.uniformMatrix4fv(p.l,!1,q);f.uniformMatrix4fv(p.j,!1,b);f.uniformMatrix4fv(p.o,!1,e);f.uniform1f(p.i,g);var r;if(void 0===l)um(this,f,a,h,this.Gb,this.U);else{if(m)a:{d=a.g?5125:5123;a=a.g?4:2;e=this.g.length-1;for(g=this.l.length-1;0<=g;--g)for(f.bindTexture(3553,this.l[g]),m=0<g?this.i[g-1]:0,b=this.i[g];0<=
+e&&this.g[e]>=m;){r=this.g[e];c=this.s[e];q=w(c).toString();if(void 0===h[q]&&c.W()&&(void 0===n||nc(n,c.W().H()))&&(f.clear(f.COLOR_BUFFER_BIT|f.DEPTH_BUFFER_BIT),f.drawElements(4,b-r,d,r*a),b=l(c))){h=b;break a}b=r;e--}h=void 0}else f.clear(f.COLOR_BUFFER_BIT|f.DEPTH_BUFFER_BIT),um(this,f,a,h,this.l,this.i),h=(h=l(null))?h:void 0;r=h}f.disableVertexAttribArray(p.f);f.disableVertexAttribArray(p.b);f.disableVertexAttribArray(p.c);f.disableVertexAttribArray(p.a);f.disableVertexAttribArray(p.g);return r};
+function um(a,b,c,d,e,f){var g=c.g?5125:5123;c=c.g?4:2;if(Ha(d)){var h;a=0;d=e.length;for(h=0;a<d;++a){b.bindTexture(3553,e[a]);var l=f[a];b.drawElements(4,l-h,g,h*c);h=l}}else{h=0;var m,l=0;for(m=e.length;l<m;++l){b.bindTexture(3553,e[l]);for(var n=0<l?f[l-1]:0,p=f[l],q=n;h<a.g.length&&a.g[h]<=p;){var r=w(a.s[h]).toString();void 0!==d[r]?(q!==n&&b.drawElements(4,n-q,g,q*c),n=q=h===a.g.length-1?p:a.g[h+1]):n=h===a.g.length-1?p:a.g[h+1];h++}q!==n&&b.drawElements(4,n-q,g,q*c)}}}
+pm.prototype.Tb=function(a){var b=a.Yb(),c=a.jc(1),d=a.ld(),e=a.pe(1),f=a.v,g=a.Ia(),h=a.U,l=a.j,m=a.Fb();a=a.i;var n;0===this.c.length?this.c.push(c):(n=this.c[this.c.length-1],w(n)!=w(c)&&(this.U.push(this.a.length),this.c.push(c)));0===this.f.length?this.f.push(e):(n=this.f[this.f.length-1],w(n)!=w(e)&&(this.i.push(this.a.length),this.f.push(e)));this.A=b[0];this.C=b[1];this.R=m[1];this.ya=d[1];this.Ba=d[0];this.S=f;this.T=g[0];this.Y=g[1];this.ia=l;this.Ra=h;this.za=a;this.qa=m[0]};
+function vm(a,b,c){this.f=b;this.c=a;this.g=c;this.a={}}function wm(a,b){var c=[],d;for(d in a.a)c.push(qm(a.a[d],b));return function(){for(var a=c.length,b,d=0;d<a;d++)b=c[d].apply(this,arguments);return b}}function xm(a,b){for(var c in a.a)sm(a.a[c],b)}vm.prototype.b=function(a,b){var c=this.a[b];void 0===c&&(c=new ym[b](this.c,this.f),this.a[b]=c);return c};vm.prototype.Ya=function(){return Ha(this.a)};
+vm.prototype.Pa=function(a,b,c,d,e,f,g,h){var l,m,n;l=0;for(m=Nj.length;l<m;++l)n=this.a[Nj[l]],void 0!==n&&n.Pa(a,b,c,d,e,f,g,h,void 0,!1)};function zm(a,b,c,d,e,f,g,h,l,m,n){var p=Am,q,r;for(q=Nj.length-1;0<=q;--q)if(r=a.a[Nj[q]],void 0!==r&&(r=r.Pa(b,c,d,e,p,f,g,h,l,m,n)))return r}
+vm.prototype.ra=function(a,b,c,d,e,f,g,h,l,m){var n=b.b;n.bindFramebuffer(n.FRAMEBUFFER,jm(b));var p;void 0!==this.g&&(p=Ob(Xb(a),d*this.g));return zm(this,b,a,d,e,g,h,l,function(a){var b=new Uint8Array(4);n.readPixels(0,0,1,1,n.RGBA,n.UNSIGNED_BYTE,b);if(0<b[3]&&(a=m(a)))return a},!0,p)};
+function Bm(a,b,c,d,e,f,g,h){var l=c.b;l.bindFramebuffer(l.FRAMEBUFFER,jm(c));return void 0!==zm(a,c,b,d,e,f,g,h,function(){var a=new Uint8Array(4);l.readPixels(0,0,1,1,l.RGBA,l.UNSIGNED_BYTE,a);return 0<a[3]},!1)}var ym={Image:pm},Am=[1,1];function Cm(a,b,c,d,e,f,g){this.b=a;this.f=b;this.g=f;this.c=g;this.o=e;this.l=d;this.i=c;this.a=null}y(Cm,kh);k=Cm.prototype;k.sd=function(a){this.Tb(a.a)};k.sc=function(a){switch(a.X()){case "Point":this.uc(a,null);break;case "MultiPoint":this.tc(a,null);break;case "GeometryCollection":this.Ze(a,null)}};k.Ye=function(a,b){var c=(0,b.g)(a);c&&nc(this.g,c.H())&&(this.sd(b),this.sc(c))};k.Ze=function(a){a=a.c;var b,c;b=0;for(c=a.length;b<c;++b)this.sc(a[b])};
+k.uc=function(a,b){var c=this.b,d=(new vm(1,this.g)).b(0,"Image");d.Tb(this.a);d.uc(a,b);sm(d,c);d.Pa(this.b,this.f,this.i,this.l,this.o,this.c,1,{},void 0,!1);qm(d,c)()};k.tc=function(a,b){var c=this.b,d=(new vm(1,this.g)).b(0,"Image");d.Tb(this.a);d.tc(a,b);sm(d,c);d.Pa(this.b,this.f,this.i,this.l,this.o,this.c,1,{},void 0,!1);qm(d,c)()};k.Tb=function(a){this.a=a};function Dm(){this.b="precision mediump float;varying vec2 a;uniform float f;uniform sampler2D g;void main(void){vec4 texColor=texture2D(g,a);gl_FragColor.rgb=texColor.rgb;gl_FragColor.a=texColor.a*f;}"}y(Dm,am);ba(Dm);function Em(){this.b="varying vec2 a;attribute vec2 b;attribute vec2 c;uniform mat4 d;uniform mat4 e;void main(void){gl_Position=e*vec4(b,0.,1.);a=(d*vec4(c,0.,1.)).st;}"}y(Em,bm);ba(Em);
+function Fm(a,b){this.g=a.getUniformLocation(b,"f");this.f=a.getUniformLocation(b,"e");this.i=a.getUniformLocation(b,"d");this.c=a.getUniformLocation(b,"g");this.b=a.getAttribLocation(b,"b");this.a=a.getAttribLocation(b,"c")};function Gm(a,b){th.call(this,b);this.f=a;this.S=new fm([-1,-1,0,0,1,-1,1,0,-1,1,0,1,1,1,1,1]);this.i=this.pb=null;this.l=void 0;this.s=Xc();this.U=Zc();this.v=null}y(Gm,th);
+function Hm(a,b,c){var d=a.f.f;if(void 0===a.l||a.l!=c){b.postRenderFunctions.push(function(a,b,c){a.isContextLost()||(a.deleteFramebuffer(b),a.deleteTexture(c))}.bind(null,d,a.i,a.pb));b=km(d,c,c);var e=d.createFramebuffer();d.bindFramebuffer(36160,e);d.framebufferTexture2D(36160,36064,3553,b,0);a.pb=b;a.i=e;a.l=c}else d.bindFramebuffer(36160,a.i)}
+Gm.prototype.vh=function(a,b,c){Im(this,"precompose",c,a);hm(c,34962,this.S);var d=c.b,e=Dm.Zb(),f=Em.Zb(),e=mm(c,e,f);this.v?f=this.v:this.v=f=new Fm(d,e);c.we(e)&&(d.enableVertexAttribArray(f.b),d.vertexAttribPointer(f.b,2,5126,!1,16,0),d.enableVertexAttribArray(f.a),d.vertexAttribPointer(f.a,2,5126,!1,16,8),d.uniform1i(f.c,0));d.uniformMatrix4fv(f.i,!1,this.s);d.uniformMatrix4fv(f.f,!1,this.U);d.uniform1f(f.g,b.opacity);d.bindTexture(3553,this.pb);d.drawArrays(5,0,4);Im(this,"postcompose",c,a)};
+function Im(a,b,c,d){a=a.a;if(ab(a,b)){var e=d.viewState;a.b(new lh(b,a,new Cm(c,e.center,e.resolution,e.rotation,d.size,d.extent,d.pixelRatio),d,null,c))}}Gm.prototype.zf=function(){this.i=this.pb=null;this.l=void 0};function Jm(a,b){Gm.call(this,a,b);this.j=this.o=this.c=null}y(Jm,Gm);function Km(a,b){var c=b.a();return om(a.f.f,c)}Jm.prototype.ra=function(a,b,c,d){var e=this.a;return e.ha().ra(a,b.viewState.resolution,b.viewState.rotation,b.skippedFeatureUids,function(a){return c.call(d,a,e)})};
+Jm.prototype.Af=function(a,b){var c=this.f.f,d=a.pixelRatio,e=a.viewState,f=e.center,g=e.resolution,h=e.rotation,l=this.c,m=this.pb,n=this.a.ha(),p=a.viewHints,q=a.extent;void 0!==b.extent&&(q=mc(q,b.extent));p[0]||p[1]||hc(q)||(e=n.A(q,g,d,e.projection))&&vh(this,e)&&(l=e,m=Km(this,e),this.pb&&a.postRenderFunctions.push(function(a,b){a.isContextLost()||a.deleteTexture(b)}.bind(null,c,this.pb)));l&&(c=this.f.c.l,Lm(this,c.width,c.height,d,f,g,h,l.H()),this.j=null,d=this.s,ad(d),ed(d,1,-1),dd(d,0,
+-1),this.c=l,this.pb=m,xh(a.attributions,l.l),yh(a,n));return!0};function Lm(a,b,c,d,e,f,g,h){b*=f;c*=f;a=a.U;ad(a);ed(a,2*d/b,2*d/c);fd(a,-g);dd(a,h[0]-e[0],h[1]-e[1]);ed(a,(h[2]-h[0])/2,(h[3]-h[1])/2);dd(a,1,1)}Jm.prototype.le=function(a,b){return void 0!==this.ra(a,b,qc,this)};
+Jm.prototype.Cc=function(a,b,c,d){if(this.c&&this.c.a())if(this.a.ha()instanceof yl){if(a=a.slice(),sh(b.pixelToCoordinateMatrix,a,a),this.ra(a,b,qc,this))return c.call(d,this.a)}else{var e=[this.c.a().width,this.c.a().height];if(!this.j){var f=b.size;b=Xc();ad(b);dd(b,-1,-1);ed(b,2/f[0],2/f[1]);dd(b,0,f[1]);ed(b,1,-1);f=Xc();cd(this.U,f);var g=Xc();ad(g);dd(g,0,e[1]);ed(g,1,-1);ed(g,e[0]/2,e[1]/2);dd(g,1,1);var h=Xc();bd(g,f,h);bd(h,b,h);this.j=h}b=[0,0];sh(this.j,a,b);if(!(0>b[0]||b[0]>e[0]||0>
+b[1]||b[1]>e[1])&&(this.o||(this.o=Oe(1,1)),this.o.clearRect(0,0,1,1),this.o.drawImage(this.c.a(),b[0],b[1],1,1,0,0,1,1),0<this.o.getImageData(0,0,1,1).data[3]))return c.call(d,this.a)}};function Mm(){this.b="precision mediump float;varying vec2 a;uniform sampler2D e;void main(void){gl_FragColor=texture2D(e,a);}"}y(Mm,am);ba(Mm);function Nm(){this.b="varying vec2 a;attribute vec2 b;attribute vec2 c;uniform vec4 d;void main(void){gl_Position=vec4(b*d.xy+d.zw,0.,1.);a=c;}"}y(Nm,bm);ba(Nm);function Om(a,b){this.g=a.getUniformLocation(b,"e");this.f=a.getUniformLocation(b,"d");this.b=a.getAttribLocation(b,"b");this.a=a.getAttribLocation(b,"c")};function Pm(a,b){Gm.call(this,a,b);this.D=Mm.Zb();this.T=Nm.Zb();this.c=null;this.C=new fm([0,0,0,1,1,0,1,1,0,1,0,0,1,1,1,0]);this.A=this.o=null;this.j=-1;this.R=[0,0]}y(Pm,Gm);k=Pm.prototype;k.ka=function(){im(this.f.c,this.C);Gm.prototype.ka.call(this)};k.Qd=function(a,b,c){var d=this.f;return function(e,f){return Af(a,b,e,f,function(a){var b=Ze(d.a,a.ib());b&&(c[e]||(c[e]={}),c[e][a.ma.toString()]=a);return b})}};k.zf=function(){Gm.prototype.zf.call(this);this.c=null};
+k.Af=function(a,b,c){var d=this.f,e=c.b,f=a.viewState,g=f.projection,h=this.a,l=h.ha(),m=l.eb(g),n=m.Lb(f.resolution),p=m.$(n),q=l.$d(n,a.pixelRatio,g),r=q[0]/hf(m.Ja(n),this.R)[0],u=p/r,x=l.Ud(g),v=f.center,D;p==f.resolution?(v=Ah(v,p,a.size),D=lc(v,p,f.rotation,a.size)):D=a.extent;p=sf(m,D,p);if(this.o&&he(this.o,p)&&this.j==l.g)u=this.A;else{var A=[p.ea-p.ca+1,p.ga-p.fa+1],z=Math.pow(2,Math.ceil(Math.log(Math.max(A[0]*q[0],A[1]*q[1]))/Math.LN2)),A=u*z,F=m.Ia(n),N=F[0]+p.ca*q[0]*u,u=F[1]+p.fa*q[1]*
+u,u=[N,u,N+A,u+A];Hm(this,a,z);e.viewport(0,0,z,z);e.clearColor(0,0,0,0);e.clear(16384);e.disable(3042);z=mm(c,this.D,this.T);c.we(z);this.c||(this.c=new Om(e,z));hm(c,34962,this.C);e.enableVertexAttribArray(this.c.b);e.vertexAttribPointer(this.c.b,2,5126,!1,16,0);e.enableVertexAttribArray(this.c.a);e.vertexAttribPointer(this.c.a,2,5126,!1,16,8);e.uniform1i(this.c.g,0);c={};c[n]={};var K=this.Qd(l,g,c),X=h.c(),z=!0,N=Lb(),oa=new fe(0,0,0,0),H,ya,Ua;for(ya=p.ca;ya<=p.ea;++ya)for(Ua=p.fa;Ua<=p.ga;++Ua){F=
+l.ac(n,ya,Ua,r,g);if(void 0!==b.extent&&(H=m.Ea(F.ma,N),!nc(H,b.extent)))continue;H=F.V();H=2==H||4==H||3==H&&!X;!H&&F.a&&(F=F.a);H=F.V();if(2==H){if(Ze(d.a,F.ib())){c[n][F.ma.toString()]=F;continue}}else if(4==H||3==H&&!X)continue;z=!1;H=qf(m,F.ma,K,oa,N);H||(F=rf(m,F.ma,oa,N))&&K(n+1,F)}b=Object.keys(c).map(Number);b.sort(ib);for(var K=new Float32Array(4),Xa,Va,Aa,X=0,oa=b.length;X<oa;++X)for(Xa in Va=c[b[X]],Va)F=Va[Xa],H=m.Ea(F.ma,N),ya=2*(H[2]-H[0])/A,Ua=2*(H[3]-H[1])/A,Aa=2*(H[0]-u[0])/A-1,
+H=2*(H[1]-u[1])/A-1,Wc(K,ya,Ua,Aa,H),e.uniform4fv(this.c.f,K),Qm(d,F,q,x*r),e.drawArrays(5,0,4);z?(this.o=p,this.A=u,this.j=l.g):(this.A=this.o=null,this.j=-1,a.animate=!0)}zh(a.usedTiles,l,n,p);var Qb=d.o;Bh(a,l,m,r,g,D,n,h.f(),function(a){var b;(b=2!=a.V()||Ze(d.a,a.ib()))||(b=a.ib()in Qb.g);b||Qb.f([a,uf(m,a.ma),m.$(a.ma[0]),q,x*r])},this);wh(a,l);yh(a,l);e=this.s;ad(e);dd(e,(v[0]-u[0])/(u[2]-u[0]),(v[1]-u[1])/(u[3]-u[1]));0!==f.rotation&&fd(e,f.rotation);ed(e,a.size[0]*f.resolution/(u[2]-u[0]),
+a.size[1]*f.resolution/(u[3]-u[1]));dd(e,-.5,-.5);return!0};k.Cc=function(a,b,c,d){if(this.i){var e=[0,0];sh(this.s,[a[0]/b.size[0],(b.size[1]-a[1])/b.size[1]],e);a=[e[0]*this.l,e[1]*this.l];b=this.f.c.b;b.bindFramebuffer(b.FRAMEBUFFER,this.i);e=new Uint8Array(4);b.readPixels(a[0],a[1],1,1,b.RGBA,b.UNSIGNED_BYTE,e);if(0<e[3])return c.call(d,this.a)}};function Rm(a,b){Gm.call(this,a,b);this.j=!1;this.R=-1;this.D=NaN;this.A=Lb();this.o=this.c=this.C=null}y(Rm,Gm);k=Rm.prototype;k.vh=function(a,b,c){this.o=b;var d=a.viewState,e=this.c;e&&!e.Ya()&&e.Pa(c,d.center,d.resolution,d.rotation,a.size,a.pixelRatio,b.opacity,b.Qc?a.skippedFeatureUids:{})};k.ka=function(){var a=this.c;a&&(wm(a,this.f.c)(),this.c=null);Gm.prototype.ka.call(this)};
+k.ra=function(a,b,c,d){if(this.c&&this.o){var e=b.viewState,f=this.a,g={};return this.c.ra(a,this.f.c,e.center,e.resolution,e.rotation,b.size,b.pixelRatio,this.o.opacity,{},function(a){var b=w(a).toString();if(!(b in g))return g[b]=!0,c.call(d,a,f)})}};k.le=function(a,b){if(this.c&&this.o){var c=b.viewState;return Bm(this.c,a,this.f.c,c.resolution,c.rotation,b.pixelRatio,this.o.opacity,b.skippedFeatureUids)}return!1};
+k.Cc=function(a,b,c,d){a=a.slice();sh(b.pixelToCoordinateMatrix,a,a);if(this.le(a,b))return c.call(d,this.a)};k.wh=function(){uh(this)};
+k.Af=function(a,b,c){function d(a){var b,c=a.ec();c?b=c.call(a,m):(c=e.i)&&(b=c(a,m));if(b){if(b){c=!1;if(Array.isArray(b))for(var d=0,f=b.length;d<f;++d)c=lk(q,a,b[d],jk(m,n),this.wh,this)||c;else c=lk(q,a,b,jk(m,n),this.wh,this)||c;a=c}else a=!1;this.j=this.j||a}}var e=this.a;b=e.ha();xh(a.attributions,b.l);yh(a,b);var f=a.viewHints[0],g=a.viewHints[1],h=e.S,l=e.T;if(!this.j&&!h&&f||!l&&g)return!0;var g=a.extent,h=a.viewState,f=h.projection,m=h.resolution,n=a.pixelRatio,h=e.g,p=e.a,l=xj(e);void 0===
+l&&(l=ik);g=Ob(g,p*m);if(!this.j&&this.D==m&&this.R==h&&this.C==l&&Ub(this.A,g))return!0;this.c&&a.postRenderFunctions.push(wm(this.c,c));this.j=!1;var q=new vm(.5*m/n,g,e.a);b.Pc(g,m,f);if(l){var r=[];b.ub(g,function(a){r.push(a)},this);r.sort(l);r.forEach(d,this)}else b.ub(g,d,this);xm(q,c);this.D=m;this.R=h;this.C=l;this.A=g;this.c=q;return!0};function Sm(a,b){Hh.call(this,0,b);this.b=document.createElement("CANVAS");this.b.style.width="100%";this.b.style.height="100%";this.b.className="ol-unselectable";a.insertBefore(this.b,a.childNodes[0]||null);this.U=this.A=0;this.C=Oe();this.j=!0;this.f=ag(this.b,{antialias:!0,depth:!1,failIfMajorPerformanceCaveat:!0,preserveDrawingBuffer:!1,stencil:!0});this.c=new gm(this.b,this.f);B(this.b,"webglcontextlost",this.Pm,this);B(this.b,"webglcontextrestored",this.Qm,this);this.a=new Ye;this.v=null;this.o=
+new Mh(function(a){var b=a[1];a=a[2];var e=b[0]-this.v[0],b=b[1]-this.v[1];return 65536*Math.log(a)+Math.sqrt(e*e+b*b)/a}.bind(this),function(a){return a[0].ib()});this.D=function(){if(!this.o.Ya()){Qh(this.o);var a=Nh(this.o);Qm(this,a[0],a[3],a[4])}return!1}.bind(this);this.l=0;Tm(this)}y(Sm,Hh);
+function Qm(a,b,c,d){var e=a.f,f=b.ib();if(Ze(a.a,f))a=a.a.get(f),e.bindTexture(3553,a.pb),9729!=a.Wg&&(e.texParameteri(3553,10240,9729),a.Wg=9729),9729!=a.Yg&&(e.texParameteri(3553,10241,9729),a.Yg=9729);else{var g=e.createTexture();e.bindTexture(3553,g);if(0<d){var h=a.C.canvas,l=a.C;a.A!==c[0]||a.U!==c[1]?(h.width=c[0],h.height=c[1],a.A=c[0],a.U=c[1]):l.clearRect(0,0,c[0],c[1]);l.drawImage(b.$a(),d,d,c[0],c[1],0,0,c[0],c[1]);e.texImage2D(3553,0,6408,6408,5121,h)}else e.texImage2D(3553,0,6408,6408,
+5121,b.$a());e.texParameteri(3553,10240,9729);e.texParameteri(3553,10241,9729);e.texParameteri(3553,10242,33071);e.texParameteri(3553,10243,33071);a.a.set(f,{pb:g,Wg:9729,Yg:9729})}}k=Sm.prototype;k.Xe=function(a){return a instanceof cj?new Jm(this,a):a instanceof dj?new Pm(this,a):a instanceof G?new Rm(this,a):null};function Um(a,b,c){var d=a.i;if(ab(d,b)){a=a.c;var e=c.viewState;d.b(new lh(b,d,new Cm(a,e.center,e.resolution,e.rotation,c.size,c.extent,c.pixelRatio),c,null,a))}}
+k.ka=function(){var a=this.f;a.isContextLost()||this.a.forEach(function(b){b&&a.deleteTexture(b.pb)});Ta(this.c);Hh.prototype.ka.call(this)};k.Gj=function(a,b){for(var c=this.f,d;1024<this.a.wc()-this.l;){if(d=this.a.b.pc)c.deleteTexture(d.pb);else if(+this.a.b.cc==b.index)break;else--this.l;this.a.pop()}};k.X=function(){return"webgl"};k.Pm=function(a){a.preventDefault();this.a.clear();this.l=0;a=this.g;for(var b in a)a[b].zf()};k.Qm=function(){Tm(this);this.i.render()};
+function Tm(a){a=a.f;a.activeTexture(33984);a.blendFuncSeparate(770,771,1,771);a.disable(2884);a.disable(2929);a.disable(3089);a.disable(2960)}
+k.Ce=function(a){var b=this.c,c=this.f;if(c.isContextLost())return!1;if(!a)return this.j&&(this.b.style.display="none",this.j=!1),!1;this.v=a.focus;this.a.set((-a.index).toString(),null);++this.l;Um(this,"precompose",a);var d=[],e=a.layerStatesArray;qb(e);var f=a.viewState.resolution,g,h,l,m;g=0;for(h=e.length;g<h;++g)m=e[g],nh(m,f)&&"ready"==m.R&&(l=Kh(this,m.layer),l.Af(a,m,b)&&d.push(m));e=a.size[0]*a.pixelRatio;f=a.size[1]*a.pixelRatio;if(this.b.width!=e||this.b.height!=f)this.b.width=e,this.b.height=
+f;c.bindFramebuffer(36160,null);c.clearColor(0,0,0,0);c.clear(16384);c.enable(3042);c.viewport(0,0,this.b.width,this.b.height);g=0;for(h=d.length;g<h;++g)m=d[g],l=Kh(this,m.layer),l.vh(a,m,b);this.j||(this.b.style.display="",this.j=!0);Ih(a);1024<this.a.wc()-this.l&&a.postRenderFunctions.push(this.Gj.bind(this));this.o.Ya()||(a.postRenderFunctions.push(this.D),a.animate=!0);Um(this,"postcompose",a);Lh(this,a);a.postRenderFunctions.push(Jh)};
+k.ra=function(a,b,c,d,e,f){var g;if(this.f.isContextLost())return!1;var h=b.viewState,l=b.layerStatesArray,m;for(m=l.length-1;0<=m;--m){g=l[m];var n=g.layer;if(nh(g,h.resolution)&&e.call(f,n)&&(g=Kh(this,n).ra(a,b,c,d)))return g}};k.sh=function(a,b,c,d){var e=!1;if(this.f.isContextLost())return!1;var f=b.viewState,g=b.layerStatesArray,h;for(h=g.length-1;0<=h;--h){var l=g[h],m=l.layer;if(nh(l,f.resolution)&&c.call(d,m)&&(e=Kh(this,m).le(a,b)))return!0}return e};
+k.rh=function(a,b,c,d,e){if(this.f.isContextLost())return!1;var f=b.viewState,g,h=b.layerStatesArray,l;for(l=h.length-1;0<=l;--l){g=h[l];var m=g.layer;if(nh(g,f.resolution)&&e.call(d,m)&&(g=Kh(this,m).Cc(a,b,c,d)))return g}};var Vm=["canvas","webgl","dom"];
+function Q(a){eb.call(this);var b=Wm(a);this.Hb=void 0!==a.loadTilesWhileAnimating?a.loadTilesWhileAnimating:!1;this.Hc=void 0!==a.loadTilesWhileInteracting?a.loadTilesWhileInteracting:!1;this.Oe=void 0!==a.pixelRatio?a.pixelRatio:gg;this.Ne=b.logos;this.Y=function(){this.i=void 0;this.Uo.call(this,Date.now())}.bind(this);this.Sa=Xc();this.Pe=Xc();this.qb=0;this.f=null;this.Aa=Lb();this.D=this.S=null;this.a=document.createElement("DIV");this.a.className="ol-viewport"+(lg?" ol-touch":"");this.a.style.position=
+"relative";this.a.style.overflow="hidden";this.a.style.width="100%";this.a.style.height="100%";this.a.style.msTouchAction="none";this.a.style.touchAction="none";this.A=document.createElement("DIV");this.A.className="ol-overlaycontainer";this.a.appendChild(this.A);this.v=document.createElement("DIV");this.v.className="ol-overlaycontainer-stopevent";a=["click","dblclick","mousedown","touchstart","mspointerdown",eh,"mousewheel","wheel"];for(var c=0,d=a.length;c<d;++c)B(this.v,a[c],Ya);this.a.appendChild(this.v);
+this.za=new Xg(this);for(var e in hh)B(this.za,hh[e],this.Pg,this);this.ia=b.keyboardEventTarget;this.s=null;B(this.a,"wheel",this.Oc,this);B(this.a,"mousewheel",this.Oc,this);this.o=b.controls;this.l=b.interactions;this.j=b.overlays;this.Cf={};this.C=new b.Wo(this.a,this);this.T=null;this.R=[];this.ta=[];this.qa=new Rh(this.Bk.bind(this),this.hl.bind(this));this.Ee={};B(this,gb("layergroup"),this.Ok,this);B(this,gb("view"),this.il,this);B(this,gb("size"),this.el,this);B(this,gb("target"),this.gl,
+this);this.G(b.values);this.o.forEach(function(a){a.setMap(this)},this);B(this.o,"add",function(a){a.element.setMap(this)},this);B(this.o,"remove",function(a){a.element.setMap(null)},this);this.l.forEach(function(a){a.setMap(this)},this);B(this.l,"add",function(a){a.element.setMap(this)},this);B(this.l,"remove",function(a){a.element.setMap(null)},this);this.j.forEach(this.mg,this);B(this.j,"add",function(a){this.mg(a.element)},this);B(this.j,"remove",function(a){var b=a.element.Xa();void 0!==b&&delete this.Cf[b.toString()];
+a.element.setMap(null)},this)}y(Q,eb);k=Q.prototype;k.uj=function(a){this.o.push(a)};k.vj=function(a){this.l.push(a)};k.kg=function(a){this.xc().Tc().push(a)};k.lg=function(a){this.j.push(a)};k.mg=function(a){var b=a.Xa();void 0!==b&&(this.Cf[b.toString()]=a);a.setMap(this)};k.Wa=function(a){this.render();Array.prototype.push.apply(this.R,arguments)};
+k.ka=function(){Ta(this.za);Ta(this.C);Qa(this.a,"wheel",this.Oc,this);Qa(this.a,"mousewheel",this.Oc,this);void 0!==this.c&&(pa.removeEventListener("resize",this.c,!1),this.c=void 0);this.i&&(pa.cancelAnimationFrame(this.i),this.i=void 0);this.fh(null);eb.prototype.ka.call(this)};k.kd=function(a,b,c,d,e){if(this.f)return a=this.Ma(a),this.C.ra(a,this.f,b,void 0!==c?c:null,void 0!==d?d:qc,void 0!==e?e:null)};
+k.Tl=function(a,b,c,d,e){if(this.f)return this.C.rh(a,this.f,b,void 0!==c?c:null,void 0!==d?d:qc,void 0!==e?e:null)};k.kl=function(a,b,c){if(!this.f)return!1;a=this.Ma(a);return this.C.sh(a,this.f,void 0!==b?b:qc,void 0!==c?c:null)};k.Wj=function(a){return this.Ma(this.Td(a))};k.Td=function(a){var b=this.a.getBoundingClientRect();a=a.changedTouches?a.changedTouches[0]:a;return[a.clientX-b.left,a.clientY-b.top]};k.tf=function(){return this.get("target")};
+k.yc=function(){var a=this.tf();return void 0!==a?"string"===typeof a?document.getElementById(a):a:null};k.Ma=function(a){var b=this.f;return b?(a=a.slice(),sh(b.pixelToCoordinateMatrix,a,a)):null};k.Uj=function(){return this.o};k.nk=function(){return this.j};k.mk=function(a){a=this.Cf[a.toString()];return void 0!==a?a:null};k.ak=function(){return this.l};k.xc=function(){return this.get("layergroup")};k.eh=function(){return this.xc().Tc()};
+k.Ga=function(a){var b=this.f;return b?(a=a.slice(0,2),sh(b.coordinateToPixelMatrix,a,a)):null};k.Za=function(){return this.get("size")};k.aa=function(){return this.get("view")};k.Dk=function(){return this.a};k.Bk=function(a,b,c,d){var e=this.f;if(!(e&&b in e.wantedTiles&&e.wantedTiles[b][a.ma.toString()]))return Infinity;a=c[0]-e.focus[0];c=c[1]-e.focus[1];return 65536*Math.log(d)+Math.sqrt(a*a+c*c)/d};k.Oc=function(a,b){var c=new Vg(b||a.type,this,a);this.Pg(c)};
+k.Pg=function(a){if(this.f){this.T=a.coordinate;a.frameState=this.f;var b=this.l.a,c;if(!1!==this.b(a))for(c=b.length-1;0<=c;c--){var d=b[c];if(d.f()&&!d.handleEvent(a))break}}};k.cl=function(){var a=this.f,b=this.qa;if(!b.Ya()){var c=16,d=c;if(a){var e=a.viewHints;e[0]&&(c=this.Hb?8:0,d=2);e[1]&&(c=this.Hc?8:0,d=2)}b.i<c&&(Qh(b),Sh(b,c,d))}b=this.ta;c=0;for(d=b.length;c<d;++c)b[c](this,a);b.length=0};k.el=function(){this.render()};
+k.gl=function(){var a;this.tf()&&(a=this.yc());if(this.s){for(var b=0,c=this.s.length;b<c;++b)Ka(this.s[b]);this.s=null}a?(a.appendChild(this.a),a=this.ia?this.ia:a,this.s=[B(a,"keydown",this.Oc,this),B(a,"keypress",this.Oc,this)],this.c||(this.c=this.Xc.bind(this),pa.addEventListener("resize",this.c,!1))):(Ue(this.a),void 0!==this.c&&(pa.removeEventListener("resize",this.c,!1),this.c=void 0));this.Xc()};k.hl=function(){this.render()};k.jl=function(){this.render()};
+k.il=function(){this.S&&(Ka(this.S),this.S=null);var a=this.aa();a&&(this.S=B(a,"propertychange",this.jl,this));this.render()};k.Pk=function(){this.render()};k.Qk=function(){this.render()};k.Ok=function(){this.D&&(this.D.forEach(Ka),this.D=null);var a=this.xc();a&&(this.D=[B(a,"propertychange",this.Qk,this),B(a,"change",this.Pk,this)]);this.render()};k.Vo=function(){this.i&&pa.cancelAnimationFrame(this.i);this.Y()};k.render=function(){void 0===this.i&&(this.i=pa.requestAnimationFrame(this.Y))};
+k.Oo=function(a){return this.o.remove(a)};k.Po=function(a){return this.l.remove(a)};k.Ro=function(a){return this.xc().Tc().remove(a)};k.So=function(a){return this.j.remove(a)};
+k.Uo=function(a){var b,c,d,e=this.Za(),f=this.aa(),g=Lb(),h=null;if(void 0!==e&&0<e[0]&&0<e[1]&&f&&Wd(f)){var h=Sd(f,this.f?this.f.viewHints:void 0),l=this.xc().hf(),m={};b=0;for(c=l.length;b<c;++b)m[w(l[b].layer)]=l[b];d=f.V();h={animate:!1,attributions:{},coordinateToPixelMatrix:this.Sa,extent:g,focus:this.T?this.T:d.center,index:this.qb++,layerStates:m,layerStatesArray:l,logos:Ea({},this.Ne),pixelRatio:this.Oe,pixelToCoordinateMatrix:this.Pe,postRenderFunctions:[],size:e,skippedFeatureUids:this.Ee,
+tileQueue:this.qa,time:a,usedTiles:{},viewState:d,viewHints:h,wantedTiles:{}}}if(h){a=this.R;b=e=0;for(c=a.length;b<c;++b)f=a[b],f(this,h)&&(a[e++]=f);a.length=e;h.extent=lc(d.center,d.resolution,d.rotation,h.size,g)}this.f=h;this.C.Ce(h);h&&(h.animate&&this.render(),Array.prototype.push.apply(this.ta,h.postRenderFunctions),0!==this.R.length||h.viewHints[0]||h.viewHints[1]||$b(h.extent,this.Aa)||(this.b(new We("moveend",this,h)),Pb(h.extent,this.Aa)));this.b(new We("postrender",this,h));Tf(this.cl,
+this)};k.ji=function(a){this.set("layergroup",a)};k.Wf=function(a){this.set("size",a)};k.fh=function(a){this.set("target",a)};k.kp=function(a){this.set("view",a)};k.ti=function(a){a=w(a).toString();this.Ee[a]=!0;this.render()};
+k.Xc=function(){var a=this.yc();if(a){var b=pa.getComputedStyle(a);this.Wf([a.offsetWidth-parseFloat(b.borderLeftWidth)-parseFloat(b.paddingLeft)-parseFloat(b.paddingRight)-parseFloat(b.borderRightWidth),a.offsetHeight-parseFloat(b.borderTopWidth)-parseFloat(b.paddingTop)-parseFloat(b.paddingBottom)-parseFloat(b.borderBottomWidth)])}else this.Wf(void 0)};k.wi=function(a){a=w(a).toString();delete this.Ee[a];this.render()};
+function Wm(a){var b=null;void 0!==a.keyboardEventTarget&&(b="string"===typeof a.keyboardEventTarget?document.getElementById(a.keyboardEventTarget):a.keyboardEventTarget);var c={},d={};if(void 0===a.logo||"boolean"===typeof a.logo&&a.logo)d["data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAA3NCSVQICAjb4U/gAAAACXBIWXMAAAHGAAABxgEXwfpGAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAhNQTFRF////AP//AICAgP//AFVVQECA////K1VVSbbbYL/fJ05idsTYJFtbbcjbJllmZszWWMTOIFhoHlNiZszTa9DdUcHNHlNlV8XRIVdiasrUHlZjIVZjaMnVH1RlIFRkH1RkH1ZlasvYasvXVsPQH1VkacnVa8vWIVZjIFRjVMPQa8rXIVVkXsXRsNveIFVkIFZlIVVj3eDeh6GmbMvXH1ZkIFRka8rWbMvXIFVkIFVjIFVkbMvWH1VjbMvWIFVlbcvWIFVla8vVIFVkbMvWbMvVH1VkbMvWIFVlbcvWIFVkbcvVbMvWjNPbIFVkU8LPwMzNIFVkbczWIFVkbsvWbMvXIFVkRnB8bcvW2+TkW8XRIFVkIlZlJVloJlpoKlxrLl9tMmJwOWd0Omh1RXF8TneCT3iDUHiDU8LPVMLPVcLPVcPQVsPPVsPQV8PQWMTQWsTQW8TQXMXSXsXRX4SNX8bSYMfTYcfTYsfTY8jUZcfSZsnUaIqTacrVasrVa8jTa8rWbI2VbMvWbcvWdJObdcvUdszUd8vVeJaee87Yfc3WgJyjhqGnitDYjaarldPZnrK2oNbborW5o9bbo9fbpLa6q9ndrL3ArtndscDDutzfu8fJwN7gwt7gxc/QyuHhy+HizeHi0NfX0+Pj19zb1+Tj2uXk29/e3uLg3+Lh3+bl4uXj4ufl4+fl5Ofl5ufl5ujm5+jmySDnBAAAAFp0Uk5TAAECAgMEBAYHCA0NDg4UGRogIiMmKSssLzU7PkJJT1JTVFliY2hrdHZ3foSFhYeJjY2QkpugqbG1tre5w8zQ09XY3uXn6+zx8vT09vf4+Pj5+fr6/P39/f3+gz7SsAAAAVVJREFUOMtjYKA7EBDnwCPLrObS1BRiLoJLnte6CQy8FLHLCzs2QUG4FjZ5GbcmBDDjxJBXDWxCBrb8aM4zbkIDzpLYnAcE9VXlJSWlZRU13koIeW57mGx5XjoMZEUqwxWYQaQbSzLSkYGfKFSe0QMsX5WbjgY0YS4MBplemI4BdGBW+DQ11eZiymfqQuXZIjqwyadPNoSZ4L+0FVM6e+oGI6g8a9iKNT3o8kVzNkzRg5lgl7p4wyRUL9Yt2jAxVh6mQCogae6GmflI8p0r13VFWTHBQ0rWPW7ahgWVcPm+9cuLoyy4kCJDzCm6d8PSFoh0zvQNC5OjDJhQopPPJqph1doJBUD5tnkbZiUEqaCnB3bTqLTFG1bPn71kw4b+GFdpLElKIzRxxgYgWNYc5SCENVHKeUaltHdXx0dZ8uBI1hJ2UUDgq82CM2MwKeibqAvSO7MCABq0wXEPiqWEAAAAAElFTkSuQmCC"]=
+"http://openlayers.org/";else{var e=a.logo;"string"===typeof e?d[e]="":e instanceof HTMLElement?d[w(e).toString()]=e:fa(e)&&(d[e.src]=e.href)}e=a.layers instanceof Ti?a.layers:new Ti({layers:a.layers});c.layergroup=e;c.target=a.target;c.view=void 0!==a.view?a.view:new Rd;var e=Hh,f;void 0!==a.renderer?Array.isArray(a.renderer)?f=a.renderer:"string"===typeof a.renderer&&(f=[a.renderer]):f=Vm;var g,h;g=0;for(h=f.length;g<h;++g){var l=f[g];if("canvas"==l){if(ig){e=Ql;break}}else if("dom"==l){e=Yl;break}else if("webgl"==
+l&&bg){e=Sm;break}}var m;void 0!==a.controls?m=Array.isArray(a.controls)?new le(a.controls.slice()):a.controls:m=Kf();var n;void 0!==a.interactions?n=Array.isArray(a.interactions)?new le(a.interactions.slice()):a.interactions:n=Si();a=void 0!==a.overlays?Array.isArray(a.overlays)?new le(a.overlays.slice()):a.overlays:new le;return{controls:m,interactions:n,keyboardEventTarget:b,logos:d,overlays:a,Wo:e,values:c}}bj();function Xm(a){eb.call(this);this.j=a.id;this.o=void 0!==a.insertFirst?a.insertFirst:!0;this.s=void 0!==a.stopEvent?a.stopEvent:!0;this.f=document.createElement("DIV");this.f.className="ol-overlay-container";this.f.style.position="absolute";this.autoPan=void 0!==a.autoPan?a.autoPan:!1;this.i=void 0!==a.autoPanAnimation?a.autoPanAnimation:{};this.l=void 0!==a.autoPanMargin?a.autoPanMargin:20;this.a={Md:"",fe:"",De:"",Fe:"",visible:!0};this.c=null;B(this,gb("element"),this.Jk,this);B(this,gb("map"),
+this.Vk,this);B(this,gb("offset"),this.Zk,this);B(this,gb("position"),this.al,this);B(this,gb("positioning"),this.bl,this);void 0!==a.element&&this.fi(a.element);this.li(void 0!==a.offset?a.offset:[0,0]);this.oi(void 0!==a.positioning?a.positioning:"top-left");void 0!==a.position&&this.uf(a.position)}y(Xm,eb);k=Xm.prototype;k.Sd=function(){return this.get("element")};k.Xa=function(){return this.j};k.he=function(){return this.get("map")};k.Kg=function(){return this.get("offset")};k.gh=function(){return this.get("position")};
+k.Lg=function(){return this.get("positioning")};k.Jk=function(){Ve(this.f);var a=this.Sd();a&&this.f.appendChild(a)};k.Vk=function(){this.c&&(Ue(this.f),Ka(this.c),this.c=null);var a=this.he();a&&(this.c=B(a,"postrender",this.render,this),Ym(this),a=this.s?a.v:a.A,this.o?a.insertBefore(this.f,a.childNodes[0]||null):a.appendChild(this.f))};k.render=function(){Ym(this)};k.Zk=function(){Ym(this)};
+k.al=function(){Ym(this);if(void 0!==this.get("position")&&this.autoPan){var a=this.he();if(void 0!==a&&a.yc()){var b=Zm(a.yc(),a.Za()),c=this.Sd(),d=c.offsetWidth,e=c.currentStyle||pa.getComputedStyle(c),d=d+(parseInt(e.marginLeft,10)+parseInt(e.marginRight,10)),e=c.offsetHeight,f=c.currentStyle||pa.getComputedStyle(c),e=e+(parseInt(f.marginTop,10)+parseInt(f.marginBottom,10)),g=Zm(c,[d,e]),c=this.l;Ub(b,g)||(d=g[0]-b[0],e=b[2]-g[2],f=g[1]-b[1],g=b[3]-g[3],b=[0,0],0>d?b[0]=d-c:0>e&&(b[0]=Math.abs(e)+
+c),0>f?b[1]=f-c:0>g&&(b[1]=Math.abs(g)+c),0===b[0]&&0===b[1])||(c=a.aa().ab(),d=a.Ga(c),b=[d[0]+b[0],d[1]+b[1]],this.i&&(this.i.source=c,a.Wa(ce(this.i))),a.aa().mb(a.Ma(b)))}}};k.bl=function(){Ym(this)};k.fi=function(a){this.set("element",a)};k.setMap=function(a){this.set("map",a)};k.li=function(a){this.set("offset",a)};k.uf=function(a){this.set("position",a)};function Zm(a,b){var c=a.getBoundingClientRect(),d=c.left+pa.pageXOffset,c=c.top+pa.pageYOffset;return[d,c,d+b[0],c+b[1]]}
+k.oi=function(a){this.set("positioning",a)};function $m(a,b){a.a.visible!==b&&(a.f.style.display=b?"":"none",a.a.visible=b)}
+function Ym(a){var b=a.he(),c=a.gh();if(void 0!==b&&b.f&&void 0!==c){var c=b.Ga(c),d=b.Za(),b=a.f.style,e=a.Kg(),f=a.Lg(),g=e[0],e=e[1];if("bottom-right"==f||"center-right"==f||"top-right"==f)""!==a.a.fe&&(a.a.fe=b.left=""),g=Math.round(d[0]-c[0]-g)+"px",a.a.De!=g&&(a.a.De=b.right=g);else{""!==a.a.De&&(a.a.De=b.right="");if("bottom-center"==f||"center-center"==f||"top-center"==f)g-=a.f.offsetWidth/2;g=Math.round(c[0]+g)+"px";a.a.fe!=g&&(a.a.fe=b.left=g)}if("bottom-left"==f||"bottom-center"==f||"bottom-right"==
+f)""!==a.a.Fe&&(a.a.Fe=b.top=""),c=Math.round(d[1]-c[1]-e)+"px",a.a.Md!=c&&(a.a.Md=b.bottom=c);else{""!==a.a.Md&&(a.a.Md=b.bottom="");if("center-left"==f||"center-center"==f||"center-right"==f)e-=a.f.offsetHeight/2;c=Math.round(c[1]+e)+"px";a.a.Fe!=c&&(a.a.Fe=b.top=c)}$m(a,!0)}else $m(a,!1)};function an(a){a=a?a:{};this.l=void 0!==a.collapsed?a.collapsed:!0;this.o=void 0!==a.collapsible?a.collapsible:!0;this.o||(this.l=!1);var b=void 0!==a.className?a.className:"ol-overviewmap",c=void 0!==a.tipLabel?a.tipLabel:"Overview map",d=void 0!==a.collapseLabel?a.collapseLabel:"\u00ab";"string"===typeof d?(this.j=document.createElement("span"),this.j.textContent=d):this.j=d;d=void 0!==a.label?a.label:"\u00bb";"string"===typeof d?(this.v=document.createElement("span"),this.v.textContent=d):this.v=
+d;var e=this.o&&!this.l?this.j:this.v,d=document.createElement("button");d.setAttribute("type","button");d.title=c;d.appendChild(e);B(d,"click",this.gm,this);c=document.createElement("DIV");c.className="ol-overviewmap-map";var f=this.f=new Q({controls:new le,interactions:new le,target:c,view:a.view});a.layers&&a.layers.forEach(function(a){f.kg(a)},this);e=document.createElement("DIV");e.className="ol-overviewmap-box";e.style.boxSizing="border-box";this.A=new Xm({position:[0,0],positioning:"bottom-left",
+element:e});this.f.lg(this.A);e=document.createElement("div");e.className=b+" ol-unselectable ol-control"+(this.l&&this.o?" ol-collapsed":"")+(this.o?"":" ol-uncollapsible");e.appendChild(c);e.appendChild(d);Xe.call(this,{element:e,render:a.render?a.render:bn,target:a.target})}y(an,Xe);k=an.prototype;
+k.setMap=function(a){var b=this.a;a!==b&&(b&&(b=b.aa())&&Qa(b,gb("rotation"),this.de,this),Xe.prototype.setMap.call(this,a),a&&(this.s.push(B(a,"propertychange",this.Wk,this)),0===this.f.eh().dc()&&this.f.ji(a.xc()),a=a.aa()))&&(B(a,gb("rotation"),this.de,this),Wd(a)&&(this.f.Xc(),cn(this)))};k.Wk=function(a){"view"===a.key&&((a=a.oldValue)&&Qa(a,gb("rotation"),this.de,this),a=this.a.aa(),B(a,gb("rotation"),this.de,this))};k.de=function(){this.f.aa().ie(this.a.aa().La())};
+function bn(){var a=this.a,b=this.f;if(a.f&&b.f){var c=a.Za(),a=a.aa().Kc(c),d=b.Za(),c=b.aa().Kc(d),e=b.Ga(fc(a)),f=b.Ga(dc(a)),b=Math.abs(e[0]-f[0]),e=Math.abs(e[1]-f[1]),f=d[0],d=d[1];b<.1*f||e<.1*d||b>.75*f||e>.75*d?cn(this):Ub(c,a)||(a=this.f,c=this.a.aa(),a.aa().mb(c.ab()))}dn(this)}function cn(a){var b=a.a;a=a.f;var c=b.Za(),b=b.aa().Kc(c),c=a.Za();a=a.aa();oc(b,1/(.1*Math.pow(2,Math.log(7.5)/Math.LN2/2)));a.cf(b,c)}
+function dn(a){var b=a.a,c=a.f;if(b.f&&c.f){var d=b.Za(),e=b.aa(),f=c.aa();c.Za();var c=e.La(),b=a.A,g=a.A.Sd(),e=e.Kc(d),d=f.$(),f=cc(e),e=ec(e),h;if(a=a.a.aa().ab())h=[f[0]-a[0],f[1]-a[1]],Gb(h,c),Bb(h,a);b.uf(h);g&&(g.style.width=Math.abs((f[0]-e[0])/d)+"px",g.style.height=Math.abs((e[1]-f[1])/d)+"px")}}k.gm=function(a){a.preventDefault();en(this)};
+function en(a){a.element.classList.toggle("ol-collapsed");a.l?Te(a.j,a.v):Te(a.v,a.j);a.l=!a.l;var b=a.f;a.l||b.f||(b.Xc(),cn(a),Pa(b,"postrender",function(){dn(this)},a))}k.fm=function(){return this.o};k.im=function(a){this.o!==a&&(this.o=a,this.element.classList.toggle("ol-uncollapsible"),!a&&this.l&&en(this))};k.hm=function(a){this.o&&this.l!==a&&en(this)};k.em=function(){return this.l};k.pk=function(){return this.f};function fn(a){a=a?a:{};var b=void 0!==a.className?a.className:"ol-scale-line";this.o=document.createElement("DIV");this.o.className=b+"-inner";this.f=document.createElement("DIV");this.f.className=b+" ol-unselectable";this.f.appendChild(this.o);this.v=null;this.j=void 0!==a.minWidth?a.minWidth:64;this.l=!1;this.C=void 0;this.A="";Xe.call(this,{element:this.f,render:a.render?a.render:gn,target:a.target});B(this,gb("units"),this.R,this);this.D(a.units||"metric")}y(fn,Xe);var hn=[1,2,5];
+fn.prototype.wb=function(){return this.get("units")};function gn(a){(a=a.frameState)?this.v=a.viewState:this.v=null;jn(this)}fn.prototype.R=function(){jn(this)};fn.prototype.D=function(a){this.set("units",a)};
+function jn(a){var b=a.v;if(b){var c=b.projection,d=c.$b(),b=c.getPointResolution(b.resolution,b.center)*d,d=a.j*b,c="",e=a.wb();"degrees"==e?(c=uc.degrees,b/=c,d<c/60?(c="\u2033",b*=3600):d<c?(c="\u2032",b*=60):c="\u00b0"):"imperial"==e?.9144>d?(c="in",b/=.0254):1609.344>d?(c="ft",b/=.3048):(c="mi",b/=1609.344):"nautical"==e?(b/=1852,c="nm"):"metric"==e?1>d?(c="mm",b*=1E3):1E3>d?c="m":(c="km",b/=1E3):"us"==e&&(.9144>d?(c="in",b*=39.37):1609.344>d?(c="ft",b/=.30480061):(c="mi",b/=1609.3472));for(var e=
+3*Math.floor(Math.log(a.j*b)/Math.log(10)),f;;){f=hn[(e%3+3)%3]*Math.pow(10,Math.floor(e/3));d=Math.round(f/b);if(isNaN(d)){a.f.style.display="none";a.l=!1;return}if(d>=a.j)break;++e}b=f+" "+c;a.A!=b&&(a.o.innerHTML=b,a.A=b);a.C!=d&&(a.o.style.width=d+"px",a.C=d);a.l||(a.f.style.display="",a.l=!0)}else a.l&&(a.f.style.display="none",a.l=!1)};function kn(a){a=a?a:{};this.f=void 0;this.l=ln;this.v=[];this.C=this.j=0;this.T=null;this.ia=!1;this.Y=void 0!==a.duration?a.duration:200;var b=void 0!==a.className?a.className:"ol-zoomslider",c=document.createElement("button");c.setAttribute("type","button");c.className=b+"-thumb ol-unselectable";var d=document.createElement("div");d.className=b+" ol-unselectable ol-control";d.appendChild(c);this.o=new Pg(d);B(this.o,zg,this.Ik,this);B(this.o,Ag,this.Ng,this);B(this.o,Bg,this.Og,this);B(d,"click",
+this.Hk,this);B(c,"click",Ya);Xe.call(this,{element:d,render:a.render?a.render:mn})}y(kn,Xe);kn.prototype.ka=function(){Ta(this.o);Xe.prototype.ka.call(this)};var ln=0;k=kn.prototype;k.setMap=function(a){Xe.prototype.setMap.call(this,a);a&&a.render()};
+function mn(a){if(a.frameState){if(!this.ia){var b=this.element,c=b.offsetWidth,d=b.offsetHeight,e=b.firstElementChild,f=pa.getComputedStyle(e),b=e.offsetWidth+parseFloat(f.marginRight)+parseFloat(f.marginLeft),e=e.offsetHeight+parseFloat(f.marginTop)+parseFloat(f.marginBottom);this.T=[b,e];c>d?(this.l=1,this.C=c-b):(this.l=ln,this.j=d-e);this.ia=!0}a=a.frameState.viewState.resolution;a!==this.f&&(this.f=a,nn(this,a))}}
+k.Hk=function(a){var b=this.a,c=b.aa(),d=c.$();b.Wa(ee({resolution:d,duration:this.Y,easing:Zd}));a=on(this,sa(1===this.l?(a.offsetX-this.T[0]/2)/this.C:(a.offsetY-this.T[1]/2)/this.j,0,1));c.Ub(c.constrainResolution(a))};
+k.Ik=function(a){if(!this.A&&a.b.target===this.element.firstElementChild&&(Xd(this.a.aa(),1),this.D=a.clientX,this.R=a.clientY,this.A=!0,0===this.v.length)){a=this.Ng;var b=this.Og;this.v.push(B(document,"mousemove",a,this),B(document,"touchmove",a,this),B(document,Ag,a,this),B(document,"mouseup",b,this),B(document,"touchend",b,this),B(document,Bg,b,this))}};
+k.Ng=function(a){if(this.A){var b=this.element.firstElementChild;this.f=on(this,sa(1===this.l?(a.clientX-this.D+parseInt(b.style.left,10))/this.C:(a.clientY-this.R+parseInt(b.style.top,10))/this.j,0,1));this.a.aa().Ub(this.f);nn(this,this.f);this.D=a.clientX;this.R=a.clientY}};k.Og=function(){if(this.A){var a=this.a,b=a.aa();Xd(b,-1);a.Wa(ee({resolution:this.f,duration:this.Y,easing:Zd}));a=b.constrainResolution(this.f);b.Ub(a);this.A=!1;this.R=this.D=void 0;this.v.forEach(Ka);this.v.length=0}};
+function nn(a,b){var c;c=1-Vd(a.a.aa())(b);var d=a.element.firstElementChild;1==a.l?d.style.left=a.C*c+"px":d.style.top=a.j*c+"px"}function on(a,b){return Ud(a.a.aa())(1-b)};function pn(a){a=a?a:{};this.f=a.extent?a.extent:null;var b=void 0!==a.className?a.className:"ol-zoom-extent",c=void 0!==a.label?a.label:"E",d=void 0!==a.tipLabel?a.tipLabel:"Fit to extent",e=document.createElement("button");e.setAttribute("type","button");e.title=d;e.appendChild("string"===typeof c?document.createTextNode(c):c);B(e,"click",this.l,this);c=document.createElement("div");c.className=b+" ol-unselectable ol-control";c.appendChild(e);Xe.call(this,{element:c,target:a.target})}y(pn,Xe);
+pn.prototype.l=function(a){a.preventDefault();var b=this.a;a=b.aa();var c=this.f?this.f:a.l.H(),b=b.Za();a.cf(c,b)};function qn(a){eb.call(this);a=a?a:{};this.a=null;B(this,gb("tracking"),this.Il,this);this.rf(void 0!==a.tracking?a.tracking:!1)}y(qn,eb);k=qn.prototype;k.ka=function(){this.rf(!1);eb.prototype.ka.call(this)};
+k.co=function(a){if(null!==a.alpha){var b=wa(a.alpha);this.set("alpha",b);"boolean"===typeof a.absolute&&a.absolute?this.set("heading",b):ea(a.webkitCompassHeading)&&-1!=a.webkitCompassAccuracy&&this.set("heading",wa(a.webkitCompassHeading))}null!==a.beta&&this.set("beta",wa(a.beta));null!==a.gamma&&this.set("gamma",wa(a.gamma));this.u()};k.Oj=function(){return this.get("alpha")};k.Rj=function(){return this.get("beta")};k.Yj=function(){return this.get("gamma")};k.Hl=function(){return this.get("heading")};
+k.$g=function(){return this.get("tracking")};k.Il=function(){if(jg){var a=this.$g();a&&!this.a?this.a=B(pa,"deviceorientation",this.co,this):a||null===this.a||(Ka(this.a),this.a=null)}};k.rf=function(a){this.set("tracking",a)};function rn(){this.defaultDataProjection=null}function sn(a,b,c){var d;c&&(d={dataProjection:c.dataProjection?c.dataProjection:a.Oa(b),featureProjection:c.featureProjection});return tn(a,d)}function tn(a,b){var c;b&&(c={featureProjection:b.featureProjection,dataProjection:b.dataProjection?b.dataProjection:a.defaultDataProjection,rightHanded:b.rightHanded},b.decimals&&(c.decimals=b.decimals));return c}
+function un(a,b,c){var d=c?yc(c.featureProjection):null,e=c?yc(c.dataProjection):null,f;d&&e&&!Oc(d,e)?a instanceof Tc?f=(b?a.clone():a).jb(b?d:e,b?e:d):f=Sc(b?a.slice():a,b?d:e,b?e:d):f=a;if(b&&c&&c.decimals){var g=Math.pow(10,c.decimals);a=function(a){for(var b=0,c=a.length;b<c;++b)a[b]=Math.round(a[b]*g)/g;return a};Array.isArray(f)?a(f):f.rc(a)}return f};function vn(){this.defaultDataProjection=null}y(vn,rn);function wn(a){return fa(a)?a:"string"===typeof a?(a=JSON.parse(a))?a:null:null}k=vn.prototype;k.X=function(){return"json"};k.Rb=function(a,b){return this.Uc(wn(a),sn(this,a,b))};k.Fa=function(a,b){return this.Jf(wn(a),sn(this,a,b))};k.Vc=function(a,b){return this.Rh(wn(a),sn(this,a,b))};k.Oa=function(a){return this.Yh(wn(a))};k.Dd=function(a,b){return JSON.stringify(this.Yc(a,b))};k.Xb=function(a,b){return JSON.stringify(this.Ie(a,b))};
+k.Zc=function(a,b){return JSON.stringify(this.Ke(a,b))};function xn(a,b,c,d,e,f){var g=NaN,h=NaN,l=(c-b)/d;if(0!==l)if(1==l)g=a[b],h=a[b+1];else if(2==l)g=(1-e)*a[b]+e*a[b+d],h=(1-e)*a[b+1]+e*a[b+d+1];else{var h=a[b],l=a[b+1],m=0,g=[0],n;for(n=b+d;n<c;n+=d){var p=a[n],q=a[n+1],m=m+Math.sqrt((p-h)*(p-h)+(q-l)*(q-l));g.push(m);h=p;l=q}c=e*m;l=0;m=g.length;for(n=!1;l<m;)e=l+(m-l>>1),h=+ib(g[e],c),0>h?l=e+1:(m=e,n=!h);e=n?l:~l;0>e?(c=(c-g[-e-2])/(g[-e-1]-g[-e-2]),b+=(-e-2)*d,g=za(a[b],a[b+d],c),h=za(a[b+1],a[b+d+1],c)):(g=a[b+e*d],h=a[b+e*d+1])}return f?(f[0]=
+g,f[1]=h,f):[g,h]}function yn(a,b,c,d,e,f){if(c==b)return null;if(e<a[b+d-1])return f?(c=a.slice(b,b+d),c[d-1]=e,c):null;if(a[c-1]<e)return f?(c=a.slice(c-d,c),c[d-1]=e,c):null;if(e==a[b+d-1])return a.slice(b,b+d);b/=d;for(c/=d;b<c;)f=b+c>>1,e<a[(f+1)*d-1]?c=f:b=f+1;c=a[b*d-1];if(e==c)return a.slice((b-1)*d,(b-1)*d+d);f=(e-c)/(a[(b+1)*d-1]-c);c=[];var g;for(g=0;g<d-1;++g)c.push(za(a[(b-1)*d+g],a[b*d+g],f));c.push(e);return c}
+function zn(a,b,c,d,e,f){var g=0;if(f)return yn(a,g,b[b.length-1],c,d,e);if(d<a[c-1])return e?(a=a.slice(0,c),a[c-1]=d,a):null;if(a[a.length-1]<d)return e?(a=a.slice(a.length-c),a[c-1]=d,a):null;e=0;for(f=b.length;e<f;++e){var h=b[e];if(g!=h){if(d<a[g+c-1])break;if(d<=a[h-1])return yn(a,g,h,c,d,!1);g=h}}return null};function R(a,b){hd.call(this);this.i=null;this.C=this.D=this.j=-1;this.pa(a,b)}y(R,hd);k=R.prototype;k.wj=function(a){this.B?mb(this.B,a):this.B=a.slice();this.u()};k.clone=function(){var a=new R(null);a.ba(this.f,this.B.slice());return a};k.sb=function(a,b,c,d){if(d<Rb(this.H(),a,b))return d;this.C!=this.g&&(this.D=Math.sqrt(od(this.B,0,this.B.length,this.a,0)),this.C=this.g);return qd(this.B,0,this.B.length,this.a,this.D,!1,a,b,c,d)};
+k.Lj=function(a,b){return Fd(this.B,0,this.B.length,this.a,a,b)};k.lm=function(a,b){return"XYM"!=this.f&&"XYZM"!=this.f?null:yn(this.B,0,this.B.length,this.a,a,void 0!==b?b:!1)};k.Z=function(){return vd(this.B,0,this.B.length,this.a)};k.Bg=function(a,b){return xn(this.B,0,this.B.length,this.a,a,b)};k.mm=function(){var a=this.B,b=this.a,c=a[0],d=a[1],e=0,f;for(f=0+b;f<this.B.length;f+=b)var g=a[f],h=a[f+1],e=e+Math.sqrt((g-c)*(g-c)+(h-d)*(h-d)),c=g,d=h;return e};
+function Fj(a){a.j!=a.g&&(a.i=a.Bg(.5,a.i),a.j=a.g);return a.i}k.Nc=function(a){var b=[];b.length=xd(this.B,0,this.B.length,this.a,a,b,0);a=new R(null);a.ba("XY",b);return a};k.X=function(){return"LineString"};k.Ka=function(a){return Gd(this.B,0,this.B.length,this.a,a)};k.pa=function(a,b){a?(kd(this,b,a,1),this.B||(this.B=[]),this.B.length=td(this.B,0,a,this.a),this.u()):this.ba("XY",null)};k.ba=function(a,b){jd(this,a,b);this.u()};function S(a,b){hd.call(this);this.i=[];this.j=this.C=-1;this.pa(a,b)}y(S,hd);k=S.prototype;k.xj=function(a){this.B?mb(this.B,a.la().slice()):this.B=a.la().slice();this.i.push(this.B.length);this.u()};k.clone=function(){var a=new S(null);a.ba(this.f,this.B.slice(),this.i.slice());return a};k.sb=function(a,b,c,d){if(d<Rb(this.H(),a,b))return d;this.j!=this.g&&(this.C=Math.sqrt(pd(this.B,0,this.i,this.a,0)),this.j=this.g);return rd(this.B,0,this.i,this.a,this.C,!1,a,b,c,d)};
+k.om=function(a,b,c){return"XYM"!=this.f&&"XYZM"!=this.f||0===this.B.length?null:zn(this.B,this.i,this.a,a,void 0!==b?b:!1,void 0!==c?c:!1)};k.Z=function(){return wd(this.B,0,this.i,this.a)};k.Db=function(){return this.i};k.fk=function(a){if(0>a||this.i.length<=a)return null;var b=new R(null);b.ba(this.f,this.B.slice(0===a?0:this.i[a-1],this.i[a]));return b};
+k.md=function(){var a=this.B,b=this.i,c=this.f,d=[],e=0,f,g;f=0;for(g=b.length;f<g;++f){var h=b[f],l=new R(null);l.ba(c,a.slice(e,h));d.push(l);e=h}return d};function Gj(a){var b=[],c=a.B,d=0,e=a.i;a=a.a;var f,g;f=0;for(g=e.length;f<g;++f){var h=e[f],d=xn(c,d,h,a,.5);mb(b,d);d=h}return b}k.Nc=function(a){var b=[],c=[],d=this.B,e=this.i,f=this.a,g=0,h=0,l,m;l=0;for(m=e.length;l<m;++l){var n=e[l],h=xd(d,g,n,f,a,b,h);c.push(h);g=n}b.length=h;a=new S(null);a.ba("XY",b,c);return a};k.X=function(){return"MultiLineString"};
+k.Ka=function(a){a:{var b=this.B,c=this.i,d=this.a,e=0,f,g;f=0;for(g=c.length;f<g;++f){if(Gd(b,e,c[f],d,a)){a=!0;break a}e=c[f]}a=!1}return a};k.pa=function(a,b){if(a){kd(this,b,a,2);this.B||(this.B=[]);var c=ud(this.B,0,a,this.a,this.i);this.B.length=0===c.length?0:c[c.length-1];this.u()}else this.ba("XY",null,this.i)};k.ba=function(a,b,c){jd(this,a,b);this.i=c;this.u()};
+function An(a,b){var c=a.f,d=[],e=[],f,g;f=0;for(g=b.length;f<g;++f){var h=b[f];0===f&&(c=h.f);mb(d,h.la());e.push(d.length)}a.ba(c,d,e)};function Bn(a,b){hd.call(this);this.pa(a,b)}y(Bn,hd);k=Bn.prototype;k.zj=function(a){this.B?mb(this.B,a.la()):this.B=a.la().slice();this.u()};k.clone=function(){var a=new Bn(null);a.ba(this.f,this.B.slice());return a};k.sb=function(a,b,c,d){if(d<Rb(this.H(),a,b))return d;var e=this.B,f=this.a,g,h,l;g=0;for(h=e.length;g<h;g+=f)if(l=va(a,b,e[g],e[g+1]),l<d){d=l;for(l=0;l<f;++l)c[l]=e[g+l];c.length=f}return d};k.Z=function(){return vd(this.B,0,this.B.length,this.a)};
+k.rk=function(a){var b=this.B?this.B.length/this.a:0;if(0>a||b<=a)return null;b=new C(null);b.ba(this.f,this.B.slice(a*this.a,(a+1)*this.a));return b};k.je=function(){var a=this.B,b=this.f,c=this.a,d=[],e,f;e=0;for(f=a.length;e<f;e+=c){var g=new C(null);g.ba(b,a.slice(e,e+c));d.push(g)}return d};k.X=function(){return"MultiPoint"};k.Ka=function(a){var b=this.B,c=this.a,d,e,f,g;d=0;for(e=b.length;d<e;d+=c)if(f=b[d],g=b[d+1],Tb(a,f,g))return!0;return!1};
+k.pa=function(a,b){a?(kd(this,b,a,1),this.B||(this.B=[]),this.B.length=td(this.B,0,a,this.a),this.u()):this.ba("XY",null)};k.ba=function(a,b){jd(this,a,b);this.u()};function T(a,b){hd.call(this);this.i=[];this.C=-1;this.D=null;this.T=this.R=this.S=-1;this.j=null;this.pa(a,b)}y(T,hd);k=T.prototype;k.Aj=function(a){if(this.B){var b=this.B.length;mb(this.B,a.la());a=a.Db().slice();var c,d;c=0;for(d=a.length;c<d;++c)a[c]+=b}else this.B=a.la().slice(),a=a.Db().slice(),this.i.push();this.i.push(a);this.u()};k.clone=function(){for(var a=new T(null),b=this.i.length,c=Array(b),d=0;d<b;++d)c[d]=this.i[d].slice();Cn(a,this.f,this.B.slice(),c);return a};
+k.sb=function(a,b,c,d){if(d<Rb(this.H(),a,b))return d;if(this.R!=this.g){var e=this.i,f=0,g=0,h,l;h=0;for(l=e.length;h<l;++h)var m=e[h],g=pd(this.B,f,m,this.a,g),f=m[m.length-1];this.S=Math.sqrt(g);this.R=this.g}e=Hj(this);f=this.i;g=this.a;h=this.S;l=0;var m=[NaN,NaN],n,p;n=0;for(p=f.length;n<p;++n){var q=f[n];d=rd(e,l,q,g,h,!0,a,b,c,d,m);l=q[q.length-1]}return d};
+k.Bc=function(a,b){var c;a:{c=Hj(this);var d=this.i,e=0;if(0!==d.length){var f,g;f=0;for(g=d.length;f<g;++f){var h=d[f];if(Dd(c,e,h,this.a,a,b)){c=!0;break a}e=h[h.length-1]}}c=!1}return c};k.pm=function(){var a=Hj(this),b=this.i,c=0,d=0,e,f;e=0;for(f=b.length;e<f;++e)var g=b[e],d=d+md(a,c,g,this.a),c=g[g.length-1];return d};
+k.Z=function(a){var b;void 0!==a?(b=Hj(this).slice(),Ld(b,this.i,this.a,a)):b=this.B;a=b;b=this.i;var c=this.a,d=0,e=[],f=0,g,h;g=0;for(h=b.length;g<h;++g){var l=b[g];e[f++]=wd(a,d,l,c,e[f]);d=l[l.length-1]}e.length=f;return e};
+function Ij(a){if(a.C!=a.g){var b=a.B,c=a.i,d=a.a,e=0,f=[],g,h;g=0;for(h=c.length;g<h;++g){var l=c[g],e=Yb(b,e,l[0],d);f.push((e[0]+e[2])/2,(e[1]+e[3])/2);e=l[l.length-1]}b=Hj(a);c=a.i;d=a.a;g=0;h=[];l=0;for(e=c.length;l<e;++l){var m=c[l];h=Ed(b,g,m,d,f,2*l,h);g=m[m.length-1]}a.D=h;a.C=a.g}return a.D}k.ck=function(){var a=new Bn(null);a.ba("XY",Ij(this).slice());return a};
+function Hj(a){if(a.T!=a.g){var b=a.B,c;a:{c=a.i;var d,e;d=0;for(e=c.length;d<e;++d)if(!Jd(b,c[d],a.a,void 0)){c=!1;break a}c=!0}c?a.j=b:(a.j=b.slice(),a.j.length=Ld(a.j,a.i,a.a));a.T=a.g}return a.j}k.Nc=function(a){var b=[],c=[],d=this.B,e=this.i,f=this.a;a=Math.sqrt(a);var g=0,h=0,l,m;l=0;for(m=e.length;l<m;++l){var n=e[l],p=[],h=yd(d,g,n,f,a,b,h,p);c.push(p);g=n[n.length-1]}b.length=h;d=new T(null);Cn(d,"XY",b,c);return d};
+k.tk=function(a){if(0>a||this.i.length<=a)return null;var b;0===a?b=0:(b=this.i[a-1],b=b[b.length-1]);a=this.i[a].slice();var c=a[a.length-1];if(0!==b){var d,e;d=0;for(e=a.length;d<e;++d)a[d]-=b}d=new E(null);d.ba(this.f,this.B.slice(b,c),a);return d};k.Wd=function(){var a=this.f,b=this.B,c=this.i,d=[],e=0,f,g,h,l;f=0;for(g=c.length;f<g;++f){var m=c[f].slice(),n=m[m.length-1];if(0!==e)for(h=0,l=m.length;h<l;++h)m[h]-=e;h=new E(null);h.ba(a,b.slice(e,n),m);d.push(h);e=n}return d};k.X=function(){return"MultiPolygon"};
+k.Ka=function(a){a:{var b=Hj(this),c=this.i,d=this.a,e=0,f,g;f=0;for(g=c.length;f<g;++f){var h=c[f];if(Hd(b,e,h,d,a)){a=!0;break a}e=h[h.length-1]}a=!1}return a};k.pa=function(a,b){if(a){kd(this,b,a,3);this.B||(this.B=[]);var c=this.B,d=this.a,e=this.i,f=0,e=e?e:[],g=0,h,l;h=0;for(l=a.length;h<l;++h)f=ud(c,f,a[h],d,e[g]),e[g++]=f,f=f[f.length-1];e.length=g;0===e.length?this.B.length=0:(c=e[e.length-1],this.B.length=0===c.length?0:c[c.length-1]);this.u()}else Cn(this,"XY",null,this.i)};
+function Cn(a,b,c,d){jd(a,b,c);a.i=d;a.u()}function Dn(a,b){var c=a.f,d=[],e=[],f,g,h;f=0;for(g=b.length;f<g;++f){var l=b[f];0===f&&(c=l.f);var m=d.length;h=l.Db();var n,p;n=0;for(p=h.length;n<p;++n)h[n]+=m;mb(d,l.la());e.push(h)}Cn(a,c,d,e)};function En(a){a=a?a:{};this.defaultDataProjection=null;this.b=a.geometryName}y(En,vn);
+function Fn(a,b){if(!a)return null;var c;if(ea(a.x)&&ea(a.y))c="Point";else if(a.points)c="MultiPoint";else if(a.paths)c=1===a.paths.length?"LineString":"MultiLineString";else if(a.rings){var d=a.rings,e=Gn(a),f=[];c=[];var g,h;g=0;for(h=d.length;g<h;++g){var l=lb(d[g]);Id(l,0,l.length,e.length)?f.push([d[g]]):c.push(d[g])}for(;c.length;){d=c.shift();e=!1;for(g=f.length-1;0<=g;g--)if(Ub((new zd(f[g][0])).H(),(new zd(d)).H())){f[g].push(d);e=!0;break}e||f.push([d.reverse()])}a=Ea({},a);1===f.length?
+(c="Polygon",a.rings=f[0]):(c="MultiPolygon",a.rings=f)}return un((0,Hn[c])(a),!1,b)}function Gn(a){var b="XY";!0===a.hasZ&&!0===a.hasM?b="XYZM":!0===a.hasZ?b="XYZ":!0===a.hasM&&(b="XYM");return b}function In(a){a=a.f;return{hasZ:"XYZ"===a||"XYZM"===a,hasM:"XYM"===a||"XYZM"===a}}
+var Hn={Point:function(a){return void 0!==a.m&&void 0!==a.z?new C([a.x,a.y,a.z,a.m],"XYZM"):void 0!==a.z?new C([a.x,a.y,a.z],"XYZ"):void 0!==a.m?new C([a.x,a.y,a.m],"XYM"):new C([a.x,a.y])},LineString:function(a){return new R(a.paths[0],Gn(a))},Polygon:function(a){return new E(a.rings,Gn(a))},MultiPoint:function(a){return new Bn(a.points,Gn(a))},MultiLineString:function(a){return new S(a.paths,Gn(a))},MultiPolygon:function(a){return new T(a.rings,Gn(a))}},Jn={Point:function(a){var b=a.Z();a=a.f;if("XYZ"===
+a)return{x:b[0],y:b[1],z:b[2]};if("XYM"===a)return{x:b[0],y:b[1],m:b[2]};if("XYZM"===a)return{x:b[0],y:b[1],z:b[2],m:b[3]};if("XY"===a)return{x:b[0],y:b[1]}},LineString:function(a){var b=In(a);return{hasZ:b.hasZ,hasM:b.hasM,paths:[a.Z()]}},Polygon:function(a){var b=In(a);return{hasZ:b.hasZ,hasM:b.hasM,rings:a.Z(!1)}},MultiPoint:function(a){var b=In(a);return{hasZ:b.hasZ,hasM:b.hasM,points:a.Z()}},MultiLineString:function(a){var b=In(a);return{hasZ:b.hasZ,hasM:b.hasM,paths:a.Z()}},MultiPolygon:function(a){var b=
+In(a);a=a.Z(!1);for(var c=[],d=0;d<a.length;d++)for(var e=a[d].length-1;0<=e;e--)c.push(a[d][e]);return{hasZ:b.hasZ,hasM:b.hasM,rings:c}}};k=En.prototype;k.Uc=function(a,b){var c=Fn(a.geometry,b),d=new Ik;this.b&&d.Ec(this.b);d.Ua(c);b&&b.mf&&a.attributes[b.mf]&&d.mc(a.attributes[b.mf]);a.attributes&&d.G(a.attributes);return d};
+k.Jf=function(a,b){var c=b?b:{};if(a.features){var d=[],e=a.features,f,g;c.mf=a.objectIdFieldName;f=0;for(g=e.length;f<g;++f)d.push(this.Uc(e[f],c));return d}return[this.Uc(a,c)]};k.Rh=function(a,b){return Fn(a,b)};k.Yh=function(a){return a.spatialReference&&a.spatialReference.wkid?yc("EPSG:"+a.spatialReference.wkid):null};function Kn(a,b){return(0,Jn[a.X()])(un(a,!0,b),b)}k.Ke=function(a,b){return Kn(a,tn(this,b))};
+k.Yc=function(a,b){b=tn(this,b);var c={},d=a.W();d&&(c.geometry=Kn(d,b));d=a.O();delete d[a.a];c.attributes=Ha(d)?{}:d;b&&b.featureProjection&&(c.spatialReference={wkid:yc(b.featureProjection).cb.split(":").pop()});return c};k.Ie=function(a,b){b=tn(this,b);var c=[],d,e;d=0;for(e=a.length;d<e;++d)c.push(this.Yc(a[d],b));return{features:c}};function Ln(a){Tc.call(this);this.c=a?a:null;Mn(this)}y(Ln,Tc);function Nn(a){var b=[],c,d;c=0;for(d=a.length;c<d;++c)b.push(a[c].clone());return b}function On(a){var b,c;if(a.c)for(b=0,c=a.c.length;b<c;++b)Qa(a.c[b],"change",a.u,a)}function Mn(a){var b,c;if(a.c)for(b=0,c=a.c.length;b<c;++b)B(a.c[b],"change",a.u,a)}k=Ln.prototype;k.clone=function(){var a=new Ln(null);a.hi(this.c);return a};
+k.sb=function(a,b,c,d){if(d<Rb(this.H(),a,b))return d;var e=this.c,f,g;f=0;for(g=e.length;f<g;++f)d=e[f].sb(a,b,c,d);return d};k.Bc=function(a,b){var c=this.c,d,e;d=0;for(e=c.length;d<e;++d)if(c[d].Bc(a,b))return!0;return!1};k.Od=function(a){Wb(Infinity,Infinity,-Infinity,-Infinity,a);for(var b=this.c,c=0,d=b.length;c<d;++c)ac(a,b[c].H());return a};k.ff=function(){return Nn(this.c)};
+k.od=function(a){this.s!=this.g&&(Fa(this.l),this.o=0,this.s=this.g);if(0>a||0!==this.o&&a<this.o)return this;var b=a.toString();if(this.l.hasOwnProperty(b))return this.l[b];var c=[],d=this.c,e=!1,f,g;f=0;for(g=d.length;f<g;++f){var h=d[f],l=h.od(a);c.push(l);l!==h&&(e=!0)}if(e)return a=new Ln(null),On(a),a.c=c,Mn(a),a.u(),this.l[b]=a;this.o=a;return this};k.X=function(){return"GeometryCollection"};k.Ka=function(a){var b=this.c,c,d;c=0;for(d=b.length;c<d;++c)if(b[c].Ka(a))return!0;return!1};
+k.Ya=function(){return 0===this.c.length};k.rotate=function(a,b){for(var c=this.c,d=0,e=c.length;d<e;++d)c[d].rotate(a,b);this.u()};k.hi=function(a){a=Nn(a);On(this);this.c=a;Mn(this);this.u()};k.rc=function(a){var b=this.c,c,d;c=0;for(d=b.length;c<d;++c)b[c].rc(a);this.u()};k.Sc=function(a,b){var c=this.c,d,e;d=0;for(e=c.length;d<e;++d)c[d].Sc(a,b);this.u()};k.ka=function(){On(this);Tc.prototype.ka.call(this)};function Pn(a){a=a?a:{};this.defaultDataProjection=null;this.defaultDataProjection=yc(a.defaultDataProjection?a.defaultDataProjection:"EPSG:4326");this.b=a.geometryName}y(Pn,vn);function Qn(a,b){return a?un((0,Rn[a.type])(a),!1,b):null}function Sn(a,b){return(0,Tn[a.X()])(un(a,!0,b),b)}
+var Rn={Point:function(a){return new C(a.coordinates)},LineString:function(a){return new R(a.coordinates)},Polygon:function(a){return new E(a.coordinates)},MultiPoint:function(a){return new Bn(a.coordinates)},MultiLineString:function(a){return new S(a.coordinates)},MultiPolygon:function(a){return new T(a.coordinates)},GeometryCollection:function(a,b){var c=a.geometries.map(function(a){return Qn(a,b)});return new Ln(c)}},Tn={Point:function(a){return{type:"Point",coordinates:a.Z()}},LineString:function(a){return{type:"LineString",
+coordinates:a.Z()}},Polygon:function(a,b){var c;b&&(c=b.rightHanded);return{type:"Polygon",coordinates:a.Z(c)}},MultiPoint:function(a){return{type:"MultiPoint",coordinates:a.Z()}},MultiLineString:function(a){return{type:"MultiLineString",coordinates:a.Z()}},MultiPolygon:function(a,b){var c;b&&(c=b.rightHanded);return{type:"MultiPolygon",coordinates:a.Z(c)}},GeometryCollection:function(a,b){return{type:"GeometryCollection",geometries:a.c.map(function(a){var d=Ea({},b);delete d.featureProjection;return Sn(a,
+d)})}},Circle:function(){return{type:"GeometryCollection",geometries:[]}}};k=Pn.prototype;k.Uc=function(a,b){var c=Qn(a.geometry,b),d=new Ik;this.b&&d.Ec(this.b);d.Ua(c);void 0!==a.id&&d.mc(a.id);a.properties&&d.G(a.properties);return d};k.Jf=function(a,b){if("Feature"==a.type)return[this.Uc(a,b)];if("FeatureCollection"==a.type){var c=[],d=a.features,e,f;e=0;for(f=d.length;e<f;++e)c.push(this.Uc(d[e],b));return c}return[]};k.Rh=function(a,b){return Qn(a,b)};
+k.Yh=function(a){return(a=a.crs)?"name"==a.type?yc(a.properties.name):"EPSG"==a.type?yc("EPSG:"+a.properties.code):null:this.defaultDataProjection};k.Yc=function(a,b){b=tn(this,b);var c={type:"Feature"},d=a.Xa();void 0!==d&&(c.id=d);(d=a.W())?c.geometry=Sn(d,b):c.geometry=null;d=a.O();delete d[a.a];Ha(d)?c.properties=null:c.properties=d;return c};k.Ie=function(a,b){b=tn(this,b);var c=[],d,e;d=0;for(e=a.length;d<e;++d)c.push(this.Yc(a[d],b));return{type:"FeatureCollection",features:c}};
+k.Ke=function(a,b){return Sn(a,tn(this,b))};function Un(){this.f=new XMLSerializer;this.defaultDataProjection=null}y(Un,rn);k=Un.prototype;k.X=function(){return"xml"};k.Rb=function(a,b){if(Pk(a))return Vn(this,a,b);if(Qk(a))return this.Ph(a,b);if("string"===typeof a){var c=Rk(a);return Vn(this,c,b)}return null};function Vn(a,b,c){a=Wn(a,b,c);return 0<a.length?a[0]:null}k.Fa=function(a,b){if(Pk(a))return Wn(this,a,b);if(Qk(a))return this.lc(a,b);if("string"===typeof a){var c=Rk(a);return Wn(this,c,b)}return[]};
+function Wn(a,b,c){var d=[];for(b=b.firstChild;b;b=b.nextSibling)b.nodeType==Node.ELEMENT_NODE&&mb(d,a.lc(b,c));return d}k.Vc=function(a,b){if(Pk(a))return this.v(a,b);if(Qk(a)){var c=this.ye(a,[sn(this,a,b?b:{})]);return c?c:null}return"string"===typeof a?(c=Rk(a),this.v(c,b)):null};k.Oa=function(a){return Pk(a)?this.Pf(a):Qk(a)?this.Be(a):"string"===typeof a?(a=Rk(a),this.Pf(a)):null};k.Pf=function(){return this.defaultDataProjection};k.Be=function(){return this.defaultDataProjection};
+k.Dd=function(a,b){var c=this.A(a,b);return this.f.serializeToString(c)};k.Xb=function(a,b){var c=this.a(a,b);return this.f.serializeToString(c)};k.Zc=function(a,b){var c=this.s(a,b);return this.f.serializeToString(c)};function Xn(a){a=a?a:{};this.featureType=a.featureType;this.featureNS=a.featureNS;this.srsName=a.srsName;this.schemaLocation="";this.b={};this.b["http://www.opengis.net/gml"]={featureMember:Uk(Xn.prototype.vd),featureMembers:Uk(Xn.prototype.vd)};Un.call(this)}y(Xn,Un);var Yn=/^[\s\xa0]*$/;k=Xn.prototype;
+k.vd=function(a,b){var c=a.localName,d=null;if("FeatureCollection"==c)"http://www.opengis.net/wfs"===a.namespaceURI?d=O([],this.b,a,b,this):d=O(null,this.b,a,b,this);else if("featureMembers"==c||"featureMember"==c){var e=b[0],f=e.featureType,g=e.featureNS,h,l;if(!f&&a.childNodes){f=[];g={};h=0;for(l=a.childNodes.length;h<l;++h){var m=a.childNodes[h];if(1===m.nodeType){var n=m.nodeName.split(":").pop();if(-1===f.indexOf(n)){var p="",q=0,m=m.namespaceURI,r;for(r in g){if(g[r]===m){p=r;break}++q}p||
+(p="p"+q,g[p]=m);f.push(p+":"+n)}}}"featureMember"!=c&&(e.featureType=f,e.featureNS=g)}"string"===typeof g&&(h=g,g={},g.p0=h);var e={},f=Array.isArray(f)?f:[f],u;for(u in g){n={};h=0;for(l=f.length;h<l;++h)(-1===f[h].indexOf(":")?"p0":f[h].split(":")[0])===u&&(n[f[h].split(":").pop()]="featureMembers"==c?Tk(this.If,this):Uk(this.If,this));e[g[u]]=n}"featureMember"==c?d=O(void 0,e,a,b):d=O([],e,a,b)}null===d&&(d=[]);return d};
+k.ye=function(a,b){var c=b[0];c.srsName=a.firstElementChild.getAttribute("srsName");var d=O(null,this.bg,a,b,this);if(d)return un(d,!1,c)};
+k.If=function(a,b){var c,d;(d=a.getAttribute("fid"))||(d=a.getAttributeNS("http://www.opengis.net/gml","id")||"");var e={},f;for(c=a.firstElementChild;c;c=c.nextElementSibling){var g=c.localName;if(0===c.childNodes.length||1===c.childNodes.length&&(3===c.firstChild.nodeType||4===c.firstChild.nodeType)){var h=Nk(c,!1);Yn.test(h)&&(h=void 0);e[g]=h}else"boundedBy"!==g&&(f=g),e[g]=this.ye(c,b)}c=new Ik(e);f&&c.Ec(f);d&&c.mc(d);return c};
+k.Xh=function(a,b){var c=this.xe(a,b);if(c){var d=new C(null);d.ba("XYZ",c);return d}};k.Vh=function(a,b){var c=O([],this.Ui,a,b,this);if(c)return new Bn(c)};k.Uh=function(a,b){var c=O([],this.Ti,a,b,this);if(c){var d=new S(null);An(d,c);return d}};k.Wh=function(a,b){var c=O([],this.Vi,a,b,this);if(c){var d=new T(null);Dn(d,c);return d}};k.Mh=function(a,b){al(this.Yi,a,b,this)};k.Ug=function(a,b){al(this.Ri,a,b,this)};k.Nh=function(a,b){al(this.Zi,a,b,this)};
+k.ze=function(a,b){var c=this.xe(a,b);if(c){var d=new R(null);d.ba("XYZ",c);return d}};k.zo=function(a,b){var c=O(null,this.Fd,a,b,this);if(c)return c};k.Th=function(a,b){var c=this.xe(a,b);if(c){var d=new zd(null);Ad(d,"XYZ",c);return d}};k.Ae=function(a,b){var c=O([null],this.Me,a,b,this);if(c&&c[0]){var d=new E(null),e=c[0],f=[e.length],g,h;g=1;for(h=c.length;g<h;++g)mb(e,c[g]),f.push(e.length);d.ba("XYZ",e,f);return d}};k.xe=function(a,b){return O(null,this.Fd,a,b,this)};
+k.Ui={"http://www.opengis.net/gml":{pointMember:Tk(Xn.prototype.Mh),pointMembers:Tk(Xn.prototype.Mh)}};k.Ti={"http://www.opengis.net/gml":{lineStringMember:Tk(Xn.prototype.Ug),lineStringMembers:Tk(Xn.prototype.Ug)}};k.Vi={"http://www.opengis.net/gml":{polygonMember:Tk(Xn.prototype.Nh),polygonMembers:Tk(Xn.prototype.Nh)}};k.Yi={"http://www.opengis.net/gml":{Point:Tk(Xn.prototype.xe)}};k.Ri={"http://www.opengis.net/gml":{LineString:Tk(Xn.prototype.ze)}};k.Zi={"http://www.opengis.net/gml":{Polygon:Tk(Xn.prototype.Ae)}};
+k.Gd={"http://www.opengis.net/gml":{LinearRing:Uk(Xn.prototype.zo)}};k.lc=function(a,b){var c={featureType:this.featureType,featureNS:this.featureNS};b&&Ea(c,sn(this,a,b));return this.vd(a,[c])||[]};k.Be=function(a){return yc(this.srsName?this.srsName:a.firstElementChild.getAttribute("srsName"))};function Zn(a){a=Nk(a,!1);return $n(a)}function $n(a){if(a=/^\s*(true|1)|(false|0)\s*$/.exec(a))return void 0!==a[1]||!1}
+function ao(a){a=Nk(a,!1);if(a=/^\s*(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(Z|(?:([+\-])(\d{2})(?::(\d{2}))?))\s*$/.exec(a)){var b=Date.UTC(parseInt(a[1],10),parseInt(a[2],10)-1,parseInt(a[3],10),parseInt(a[4],10),parseInt(a[5],10),parseInt(a[6],10))/1E3;if("Z"!=a[7]){var c="-"==a[8]?-1:1,b=b+60*c*parseInt(a[9],10);void 0!==a[10]&&(b+=3600*c*parseInt(a[10],10))}return b}}function bo(a){a=Nk(a,!1);return co(a)}
+function co(a){if(a=/^\s*([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?)\s*$/i.exec(a))return parseFloat(a[1])}function eo(a){a=Nk(a,!1);return fo(a)}function fo(a){if(a=/^\s*(\d+)\s*$/.exec(a))return parseInt(a[1],10)}function U(a){return Nk(a,!1).trim()}function go(a,b){ho(a,b?"1":"0")}function io(a,b){a.appendChild(Lk.createTextNode(b.toPrecision()))}function jo(a,b){a.appendChild(Lk.createTextNode(b.toString()))}function ho(a,b){a.appendChild(Lk.createTextNode(b))};function ko(a){a=a?a:{};Xn.call(this,a);this.b["http://www.opengis.net/gml"].featureMember=Tk(Xn.prototype.vd);this.schemaLocation=a.schemaLocation?a.schemaLocation:"http://www.opengis.net/gml http://schemas.opengis.net/gml/2.1.2/feature.xsd"}y(ko,Xn);k=ko.prototype;
+k.Qh=function(a,b){var c=Nk(a,!1).replace(/^\s*|\s*$/g,""),d=b[0].srsName,e=a.parentNode.getAttribute("srsDimension"),f="enu";d&&(d=yc(d))&&(f=d.b);c=c.split(/[\s,]+/);d=2;a.getAttribute("srsDimension")?d=fo(a.getAttribute("srsDimension")):a.getAttribute("dimension")?d=fo(a.getAttribute("dimension")):e&&(d=fo(e));for(var g,h,l=[],m=0,n=c.length;m<n;m+=d)e=parseFloat(c[m]),g=parseFloat(c[m+1]),h=3===d?parseFloat(c[m+2]):0,"en"===f.substr(0,2)?l.push(e,g,h):l.push(g,e,h);return l};
+k.wo=function(a,b){var c=O([null],this.Ni,a,b,this);return Wb(c[1][0],c[1][1],c[1][3],c[1][4])};k.ml=function(a,b){var c=O(void 0,this.Gd,a,b,this);c&&b[b.length-1].push(c)};k.eo=function(a,b){var c=O(void 0,this.Gd,a,b,this);c&&(b[b.length-1][0]=c)};k.Fd={"http://www.opengis.net/gml":{coordinates:Uk(ko.prototype.Qh)}};k.Me={"http://www.opengis.net/gml":{innerBoundaryIs:ko.prototype.ml,outerBoundaryIs:ko.prototype.eo}};k.Ni={"http://www.opengis.net/gml":{coordinates:Tk(ko.prototype.Qh)}};
+k.bg={"http://www.opengis.net/gml":{Point:Uk(Xn.prototype.Xh),MultiPoint:Uk(Xn.prototype.Vh),LineString:Uk(Xn.prototype.ze),MultiLineString:Uk(Xn.prototype.Uh),LinearRing:Uk(Xn.prototype.Th),Polygon:Uk(Xn.prototype.Ae),MultiPolygon:Uk(Xn.prototype.Wh),Box:Uk(ko.prototype.wo)}};function lo(a){a=a?a:{};Xn.call(this,a);this.j=void 0!==a.surface?a.surface:!1;this.i=void 0!==a.curve?a.curve:!1;this.l=void 0!==a.multiCurve?a.multiCurve:!0;this.o=void 0!==a.multiSurface?a.multiSurface:!0;this.schemaLocation=a.schemaLocation?a.schemaLocation:"http://www.opengis.net/gml http://schemas.opengis.net/gml/3.1.1/profiles/gmlsfProfile/1.0.0/gmlsf.xsd"}y(lo,Xn);k=lo.prototype;k.Do=function(a,b){var c=O([],this.Si,a,b,this);if(c){var d=new S(null);An(d,c);return d}};
+k.Eo=function(a,b){var c=O([],this.Wi,a,b,this);if(c){var d=new T(null);Dn(d,c);return d}};k.vg=function(a,b){al(this.Oi,a,b,this)};k.vi=function(a,b){al(this.cj,a,b,this)};k.Ho=function(a,b){return O([null],this.Xi,a,b,this)};k.Jo=function(a,b){return O([null],this.bj,a,b,this)};k.Io=function(a,b){return O([null],this.Me,a,b,this)};k.Co=function(a,b){return O([null],this.Fd,a,b,this)};k.ol=function(a,b){var c=O(void 0,this.Gd,a,b,this);c&&b[b.length-1].push(c)};
+k.Hj=function(a,b){var c=O(void 0,this.Gd,a,b,this);c&&(b[b.length-1][0]=c)};k.Zh=function(a,b){var c=O([null],this.dj,a,b,this);if(c&&c[0]){var d=new E(null),e=c[0],f=[e.length],g,h;g=1;for(h=c.length;g<h;++g)mb(e,c[g]),f.push(e.length);d.ba("XYZ",e,f);return d}};k.Oh=function(a,b){var c=O([null],this.Pi,a,b,this);if(c){var d=new R(null);d.ba("XYZ",c);return d}};k.yo=function(a,b){var c=O([null],this.Qi,a,b,this);return Wb(c[1][0],c[1][1],c[2][0],c[2][1])};
+k.Ao=function(a,b){for(var c=Nk(a,!1),d=/^\s*([+\-]?\d*\.?\d+(?:[eE][+\-]?\d+)?)\s*/,e=[],f;f=d.exec(c);)e.push(parseFloat(f[1])),c=c.substr(f[0].length);if(""===c){c=b[0].srsName;d="enu";c&&(d=yc(c).b);if("neu"===d)for(c=0,d=e.length;c<d;c+=3)f=e[c],e[c]=e[c+1],e[c+1]=f;c=e.length;2==c&&e.push(0);return 0===c?void 0:e}};
+k.Mf=function(a,b){var c=Nk(a,!1).replace(/^\s*|\s*$/g,""),d=b[0].srsName,e=a.parentNode.getAttribute("srsDimension"),f="enu";d&&(f=yc(d).b);c=c.split(/\s+/);d=2;a.getAttribute("srsDimension")?d=fo(a.getAttribute("srsDimension")):a.getAttribute("dimension")?d=fo(a.getAttribute("dimension")):e&&(d=fo(e));for(var g,h,l=[],m=0,n=c.length;m<n;m+=d)e=parseFloat(c[m]),g=parseFloat(c[m+1]),h=3===d?parseFloat(c[m+2]):0,"en"===f.substr(0,2)?l.push(e,g,h):l.push(g,e,h);return l};
+k.Fd={"http://www.opengis.net/gml":{pos:Uk(lo.prototype.Ao),posList:Uk(lo.prototype.Mf)}};k.Me={"http://www.opengis.net/gml":{interior:lo.prototype.ol,exterior:lo.prototype.Hj}};
+k.bg={"http://www.opengis.net/gml":{Point:Uk(Xn.prototype.Xh),MultiPoint:Uk(Xn.prototype.Vh),LineString:Uk(Xn.prototype.ze),MultiLineString:Uk(Xn.prototype.Uh),LinearRing:Uk(Xn.prototype.Th),Polygon:Uk(Xn.prototype.Ae),MultiPolygon:Uk(Xn.prototype.Wh),Surface:Uk(lo.prototype.Zh),MultiSurface:Uk(lo.prototype.Eo),Curve:Uk(lo.prototype.Oh),MultiCurve:Uk(lo.prototype.Do),Envelope:Uk(lo.prototype.yo)}};k.Si={"http://www.opengis.net/gml":{curveMember:Tk(lo.prototype.vg),curveMembers:Tk(lo.prototype.vg)}};
+k.Wi={"http://www.opengis.net/gml":{surfaceMember:Tk(lo.prototype.vi),surfaceMembers:Tk(lo.prototype.vi)}};k.Oi={"http://www.opengis.net/gml":{LineString:Tk(Xn.prototype.ze),Curve:Tk(lo.prototype.Oh)}};k.cj={"http://www.opengis.net/gml":{Polygon:Tk(Xn.prototype.Ae),Surface:Tk(lo.prototype.Zh)}};k.dj={"http://www.opengis.net/gml":{patches:Uk(lo.prototype.Ho)}};k.Pi={"http://www.opengis.net/gml":{segments:Uk(lo.prototype.Jo)}};k.Qi={"http://www.opengis.net/gml":{lowerCorner:Tk(lo.prototype.Mf),upperCorner:Tk(lo.prototype.Mf)}};
+k.Xi={"http://www.opengis.net/gml":{PolygonPatch:Uk(lo.prototype.Io)}};k.bj={"http://www.opengis.net/gml":{LineStringSegment:Uk(lo.prototype.Co)}};function mo(a,b,c){c=c[c.length-1].srsName;b=b.Z();for(var d=b.length,e=Array(d),f,g=0;g<d;++g){f=b[g];var h=g,l="enu";c&&(l=yc(c).b);e[h]="en"===l.substr(0,2)?f[0]+" "+f[1]:f[1]+" "+f[0]}ho(a,e.join(" "))}
+k.Ji=function(a,b,c){var d=c[c.length-1].srsName;d&&a.setAttribute("srsName",d);d=Mk(a.namespaceURI,"pos");a.appendChild(d);c=c[c.length-1].srsName;a="enu";c&&(a=yc(c).b);b=b.Z();ho(d,"en"===a.substr(0,2)?b[0]+" "+b[1]:b[1]+" "+b[0])};var no={"http://www.opengis.net/gml":{lowerCorner:L(ho),upperCorner:L(ho)}};k=lo.prototype;k.xp=function(a,b,c){var d=c[c.length-1].srsName;d&&a.setAttribute("srsName",d);bl({node:a},no,Zk,[b[0]+" "+b[1],b[2]+" "+b[3]],c,["lowerCorner","upperCorner"],this)};
+k.Gi=function(a,b,c){var d=c[c.length-1].srsName;d&&a.setAttribute("srsName",d);d=Mk(a.namespaceURI,"posList");a.appendChild(d);mo(d,b,c)};k.aj=function(a,b){var c=b[b.length-1],d=c.node,e=c.exteriorWritten;void 0===e&&(c.exteriorWritten=!0);return Mk(d.namespaceURI,void 0!==e?"interior":"exterior")};
+k.Le=function(a,b,c){var d=c[c.length-1].srsName;"PolygonPatch"!==a.nodeName&&d&&a.setAttribute("srsName",d);"Polygon"===a.nodeName||"PolygonPatch"===a.nodeName?(b=b.Vd(),bl({node:a,srsName:d},oo,this.aj,b,c,void 0,this)):"Surface"===a.nodeName&&(d=Mk(a.namespaceURI,"patches"),a.appendChild(d),a=Mk(d.namespaceURI,"PolygonPatch"),d.appendChild(a),this.Le(a,b,c))};
+k.Ge=function(a,b,c){var d=c[c.length-1].srsName;"LineStringSegment"!==a.nodeName&&d&&a.setAttribute("srsName",d);"LineString"===a.nodeName||"LineStringSegment"===a.nodeName?(d=Mk(a.namespaceURI,"posList"),a.appendChild(d),mo(d,b,c)):"Curve"===a.nodeName&&(d=Mk(a.namespaceURI,"segments"),a.appendChild(d),a=Mk(d.namespaceURI,"LineStringSegment"),d.appendChild(a),this.Ge(a,b,c))};
+k.Ii=function(a,b,c){var d=c[c.length-1],e=d.srsName,d=d.surface;e&&a.setAttribute("srsName",e);b=b.Wd();bl({node:a,srsName:e,surface:d},po,this.c,b,c,void 0,this)};k.yp=function(a,b,c){var d=c[c.length-1].srsName;d&&a.setAttribute("srsName",d);b=b.je();bl({node:a,srsName:d},qo,Xk("pointMember"),b,c,void 0,this)};k.Hi=function(a,b,c){var d=c[c.length-1],e=d.srsName,d=d.curve;e&&a.setAttribute("srsName",e);b=b.md();bl({node:a,srsName:e,curve:d},ro,this.c,b,c,void 0,this)};
+k.Ki=function(a,b,c){var d=Mk(a.namespaceURI,"LinearRing");a.appendChild(d);this.Gi(d,b,c)};k.Li=function(a,b,c){var d=this.g(b,c);d&&(a.appendChild(d),this.Le(d,b,c))};k.zp=function(a,b,c){var d=Mk(a.namespaceURI,"Point");a.appendChild(d);this.Ji(d,b,c)};k.Fi=function(a,b,c){var d=this.g(b,c);d&&(a.appendChild(d),this.Ge(d,b,c))};
+k.Je=function(a,b,c){var d=c[c.length-1],e=Ea({},d);e.node=a;var f;Array.isArray(b)?d.dataProjection?f=Sc(b,d.featureProjection,d.dataProjection):f=b:f=un(b,!0,d);bl(e,so,this.g,[f],c,void 0,this)};
+k.Bi=function(a,b,c){var d=b.Xa();d&&a.setAttribute("fid",d);var d=c[c.length-1],e=d.featureNS,f=b.a;d.Dc||(d.Dc={},d.Dc[e]={});var g=b.O();b=[];var h=[],l;for(l in g){var m=g[l];null!==m&&(b.push(l),h.push(m),l==f||m instanceof Tc?l in d.Dc[e]||(d.Dc[e][l]=L(this.Je,this)):l in d.Dc[e]||(d.Dc[e][l]=L(ho)))}l=Ea({},d);l.node=a;bl(l,d.Dc,Xk(void 0,e),h,c,b)};
+var po={"http://www.opengis.net/gml":{surfaceMember:L(lo.prototype.Li),polygonMember:L(lo.prototype.Li)}},qo={"http://www.opengis.net/gml":{pointMember:L(lo.prototype.zp)}},ro={"http://www.opengis.net/gml":{lineStringMember:L(lo.prototype.Fi),curveMember:L(lo.prototype.Fi)}},oo={"http://www.opengis.net/gml":{exterior:L(lo.prototype.Ki),interior:L(lo.prototype.Ki)}},so={"http://www.opengis.net/gml":{Curve:L(lo.prototype.Ge),MultiCurve:L(lo.prototype.Hi),Point:L(lo.prototype.Ji),MultiPoint:L(lo.prototype.yp),
+LineString:L(lo.prototype.Ge),MultiLineString:L(lo.prototype.Hi),LinearRing:L(lo.prototype.Gi),Polygon:L(lo.prototype.Le),MultiPolygon:L(lo.prototype.Ii),Surface:L(lo.prototype.Le),MultiSurface:L(lo.prototype.Ii),Envelope:L(lo.prototype.xp)}},to={MultiLineString:"lineStringMember",MultiCurve:"curveMember",MultiPolygon:"polygonMember",MultiSurface:"surfaceMember"};lo.prototype.c=function(a,b){return Mk("http://www.opengis.net/gml",to[b[b.length-1].node.nodeName])};
+lo.prototype.g=function(a,b){var c=b[b.length-1],d=c.multiSurface,e=c.surface,f=c.curve,c=c.multiCurve,g;Array.isArray(a)?g="Envelope":(g=a.X(),"MultiPolygon"===g&&!0===d?g="MultiSurface":"Polygon"===g&&!0===e?g="Surface":"LineString"===g&&!0===f?g="Curve":"MultiLineString"===g&&!0===c&&(g="MultiCurve"));return Mk("http://www.opengis.net/gml",g)};
+lo.prototype.s=function(a,b){b=tn(this,b);var c=Mk("http://www.opengis.net/gml","geom"),d={node:c,srsName:this.srsName,curve:this.i,surface:this.j,multiSurface:this.o,multiCurve:this.l};b&&Ea(d,b);this.Je(c,a,[d]);return c};
+lo.prototype.a=function(a,b){b=tn(this,b);var c=Mk("http://www.opengis.net/gml","featureMembers");c.setAttributeNS("http://www.w3.org/2001/XMLSchema-instance","xsi:schemaLocation",this.schemaLocation);var d={srsName:this.srsName,curve:this.i,surface:this.j,multiSurface:this.o,multiCurve:this.l,featureNS:this.featureNS,featureType:this.featureType};b&&Ea(d,b);var d=[d],e=d[d.length-1],f=e.featureType,g=e.featureNS,h={};h[g]={};h[g][f]=L(this.Bi,this);e=Ea({},e);e.node=c;bl(e,h,Xk(f,g),a,d);return c};function uo(a){a=a?a:{};Un.call(this);this.defaultDataProjection=yc("EPSG:4326");this.b=a.readExtensions}y(uo,Un);var vo=[null,"http://www.topografix.com/GPX/1/0","http://www.topografix.com/GPX/1/1"];function wo(a,b,c){a.push(parseFloat(b.getAttribute("lon")),parseFloat(b.getAttribute("lat")));"ele"in c?(a.push(c.ele),delete c.ele):a.push(0);"time"in c?(a.push(c.time),delete c.time):a.push(0);return a}function xo(a,b){var c=b[b.length-1],d=a.getAttribute("href");null!==d&&(c.link=d);al(yo,a,b)}
+function zo(a,b){b[b.length-1].extensionsNode_=a}function Ao(a,b){var c=b[0],d=O({flatCoordinates:[]},Bo,a,b);if(d){var e=d.flatCoordinates;delete d.flatCoordinates;var f=new R(null);f.ba("XYZM",e);un(f,!1,c);c=new Ik(f);c.G(d);return c}}function Co(a,b){var c=b[0],d=O({flatCoordinates:[],ends:[]},Do,a,b);if(d){var e=d.flatCoordinates;delete d.flatCoordinates;var f=d.ends;delete d.ends;var g=new S(null);g.ba("XYZM",e,f);un(g,!1,c);c=new Ik(g);c.G(d);return c}}
+function Eo(a,b){var c=b[0],d=O({},Fo,a,b);if(d){var e=wo([],a,d),e=new C(e,"XYZM");un(e,!1,c);c=new Ik(e);c.G(d);return c}}
+var Go={rte:Ao,trk:Co,wpt:Eo},Ho=M(vo,{rte:Tk(Ao),trk:Tk(Co),wpt:Tk(Eo)}),yo=M(vo,{text:J(U,"linkText"),type:J(U,"linkType")}),Bo=M(vo,{name:J(U),cmt:J(U),desc:J(U),src:J(U),link:xo,number:J(eo),extensions:zo,type:J(U),rtept:function(a,b){var c=O({},Io,a,b);c&&wo(b[b.length-1].flatCoordinates,a,c)}}),Io=M(vo,{ele:J(bo),time:J(ao)}),Do=M(vo,{name:J(U),cmt:J(U),desc:J(U),src:J(U),link:xo,number:J(eo),type:J(U),extensions:zo,trkseg:function(a,b){var c=b[b.length-1];al(Jo,a,b);c.ends.push(c.flatCoordinates.length)}}),
+Jo=M(vo,{trkpt:function(a,b){var c=O({},Ko,a,b);c&&wo(b[b.length-1].flatCoordinates,a,c)}}),Ko=M(vo,{ele:J(bo),time:J(ao)}),Fo=M(vo,{ele:J(bo),time:J(ao),magvar:J(bo),geoidheight:J(bo),name:J(U),cmt:J(U),desc:J(U),src:J(U),link:xo,sym:J(U),type:J(U),fix:J(U),sat:J(eo),hdop:J(bo),vdop:J(bo),pdop:J(bo),ageofdgpsdata:J(bo),dgpsid:J(eo),extensions:zo});
+function Lo(a,b){b||(b=[]);for(var c=0,d=b.length;c<d;++c){var e=b[c];if(a.b){var f=e.get("extensionsNode_")||null;a.b(e,f)}e.set("extensionsNode_",void 0)}}uo.prototype.Ph=function(a,b){if(!jb(vo,a.namespaceURI))return null;var c=Go[a.localName];if(!c)return null;c=c(a,[sn(this,a,b)]);if(!c)return null;Lo(this,[c]);return c};uo.prototype.lc=function(a,b){if(!jb(vo,a.namespaceURI))return[];if("gpx"==a.localName){var c=O([],Ho,a,[sn(this,a,b)]);if(c)return Lo(this,c),c}return[]};
+function Mo(a,b,c){a.setAttribute("href",b);b=c[c.length-1].properties;bl({node:a},No,Zk,[b.linkText,b.linkType],c,Oo)}function Po(a,b,c){var d=c[c.length-1],e=d.node.namespaceURI,f=d.properties;a.setAttributeNS(null,"lat",b[1]);a.setAttributeNS(null,"lon",b[0]);switch(d.geometryLayout){case "XYZM":0!==b[3]&&(f.time=b[3]);case "XYZ":0!==b[2]&&(f.ele=b[2]);break;case "XYM":0!==b[2]&&(f.time=b[2])}b="rtept"==a.nodeName?Qo[e]:Ro[e];d=$k(f,b);bl({node:a,properties:f},So,Zk,d,c,b)}
+var Oo=["text","type"],No=M(vo,{text:L(ho),type:L(ho)}),To=M(vo,"name cmt desc src link number type rtept".split(" ")),Uo=M(vo,{name:L(ho),cmt:L(ho),desc:L(ho),src:L(ho),link:L(Mo),number:L(jo),type:L(ho),rtept:Wk(L(Po))}),Qo=M(vo,["ele","time"]),Vo=M(vo,"name cmt desc src link number type trkseg".split(" ")),Yo=M(vo,{name:L(ho),cmt:L(ho),desc:L(ho),src:L(ho),link:L(Mo),number:L(jo),type:L(ho),trkseg:Wk(L(function(a,b,c){bl({node:a,geometryLayout:b.f,properties:{}},Wo,Xo,b.Z(),c)}))}),Xo=Xk("trkpt"),
+Wo=M(vo,{trkpt:L(Po)}),Ro=M(vo,"ele time magvar geoidheight name cmt desc src link sym type fix sat hdop vdop pdop ageofdgpsdata dgpsid".split(" ")),So=M(vo,{ele:L(io),time:L(function(a,b){var c=new Date(1E3*b);a.appendChild(Lk.createTextNode(c.getUTCFullYear()+"-"+zb(c.getUTCMonth()+1)+"-"+zb(c.getUTCDate())+"T"+zb(c.getUTCHours())+":"+zb(c.getUTCMinutes())+":"+zb(c.getUTCSeconds())+"Z"))}),magvar:L(io),geoidheight:L(io),name:L(ho),cmt:L(ho),desc:L(ho),src:L(ho),link:L(Mo),sym:L(ho),type:L(ho),fix:L(ho),
+sat:L(jo),hdop:L(io),vdop:L(io),pdop:L(io),ageofdgpsdata:L(io),dgpsid:L(jo)}),Zo={Point:"wpt",LineString:"rte",MultiLineString:"trk"};function $o(a,b){var c=a.W();if(c&&(c=Zo[c.X()]))return Mk(b[b.length-1].node.namespaceURI,c)}
+var ap=M(vo,{rte:L(function(a,b,c){var d=c[0],e=b.O();a={node:a,properties:e};if(b=b.W())b=un(b,!0,d),a.geometryLayout=b.f,e.rtept=b.Z();d=To[c[c.length-1].node.namespaceURI];e=$k(e,d);bl(a,Uo,Zk,e,c,d)}),trk:L(function(a,b,c){var d=c[0],e=b.O();a={node:a,properties:e};if(b=b.W())b=un(b,!0,d),e.trkseg=b.md();d=Vo[c[c.length-1].node.namespaceURI];e=$k(e,d);bl(a,Yo,Zk,e,c,d)}),wpt:L(function(a,b,c){var d=c[0],e=c[c.length-1];e.properties=b.O();if(b=b.W())b=un(b,!0,d),e.geometryLayout=b.f,Po(a,b.Z(),
+c)})});uo.prototype.a=function(a,b){b=tn(this,b);var c=Mk("http://www.topografix.com/GPX/1/1","gpx");c.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xsi","http://www.w3.org/2001/XMLSchema-instance");c.setAttributeNS("http://www.w3.org/2001/XMLSchema-instance","xsi:schemaLocation","http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd");c.setAttribute("version","1.1");c.setAttribute("creator","OpenLayers 3");bl({node:c},ap,$o,a,[b]);return c};function bp(){this.defaultDataProjection=null}y(bp,rn);function cp(a){return"string"===typeof a?a:""}k=bp.prototype;k.X=function(){return"text"};k.Rb=function(a,b){return this.ud(cp(a),tn(this,b))};k.Fa=function(a,b){return this.Kf(cp(a),tn(this,b))};k.Vc=function(a,b){return this.wd(cp(a),tn(this,b))};k.Oa=function(a){cp(a);return this.defaultDataProjection};k.Dd=function(a,b){return this.He(a,tn(this,b))};k.Xb=function(a,b){return this.Ci(a,tn(this,b))};
+k.Zc=function(a,b){return this.Ed(a,tn(this,b))};function dp(a){a=a?a:{};this.defaultDataProjection=null;this.defaultDataProjection=yc("EPSG:4326");this.b=a.altitudeMode?a.altitudeMode:"none"}y(dp,bp);var ep=/^B(\d{2})(\d{2})(\d{2})(\d{2})(\d{5})([NS])(\d{3})(\d{5})([EW])([AV])(\d{5})(\d{5})/,fp=/^H.([A-Z]{3}).*?:(.*)/,gp=/^HFDTE(\d{2})(\d{2})(\d{2})/,hp=/\r\n|\r|\n/;
+dp.prototype.ud=function(a,b){var c=this.b,d=a.split(hp),e={},f=[],g=2E3,h=0,l=1,m=-1,n,p;n=0;for(p=d.length;n<p;++n){var q=d[n],r;if("B"==q.charAt(0)){if(r=ep.exec(q)){var q=parseInt(r[1],10),u=parseInt(r[2],10),x=parseInt(r[3],10),v=parseInt(r[4],10)+parseInt(r[5],10)/6E4;"S"==r[6]&&(v=-v);var D=parseInt(r[7],10)+parseInt(r[8],10)/6E4;"W"==r[9]&&(D=-D);f.push(D,v);"none"!=c&&f.push("gps"==c?parseInt(r[11],10):"barometric"==c?parseInt(r[12],10):0);r=Date.UTC(g,h,l,q,u,x);r<m&&(r=Date.UTC(g,h,l+1,
+q,u,x));f.push(r/1E3);m=r}}else"H"==q.charAt(0)&&((r=gp.exec(q))?(l=parseInt(r[1],10),h=parseInt(r[2],10)-1,g=2E3+parseInt(r[3],10)):(r=fp.exec(q))&&(e[r[1]]=r[2].trim()))}if(0===f.length)return null;d=new R(null);d.ba("none"==c?"XYM":"XYZM",f);c=new Ik(un(d,!1,b));c.G(e);return c};dp.prototype.Kf=function(a,b){var c=this.ud(a,b);return c?[c]:[]};function ip(a,b){this.a={};this.b=[];this.g=0;var c=arguments.length;if(1<c){if(c%2)throw Error("Uneven number of arguments");for(var d=0;d<c;d+=2)this.set(arguments[d],arguments[d+1])}else if(a){var e;if(a instanceof ip)e=a.N(),d=a.zc();else{var c=[],f=0;for(e in a)c[f++]=e;e=c;c=[];f=0;for(d in a)c[f++]=a[d];d=c}for(c=0;c<e.length;c++)this.set(e[c],d[c])}}k=ip.prototype;k.wc=function(){return this.g};k.zc=function(){jp(this);for(var a=[],b=0;b<this.b.length;b++)a.push(this.a[this.b[b]]);return a};
+k.N=function(){jp(this);return this.b.concat()};k.Ya=function(){return 0==this.g};k.clear=function(){this.a={};this.g=this.b.length=0};k.remove=function(a){return kp(this.a,a)?(delete this.a[a],this.g--,this.b.length>2*this.g&&jp(this),!0):!1};function jp(a){if(a.g!=a.b.length){for(var b=0,c=0;b<a.b.length;){var d=a.b[b];kp(a.a,d)&&(a.b[c++]=d);b++}a.b.length=c}if(a.g!=a.b.length){for(var e={},c=b=0;b<a.b.length;)d=a.b[b],kp(e,d)||(a.b[c++]=d,e[d]=1),b++;a.b.length=c}}
+k.get=function(a,b){return kp(this.a,a)?this.a[a]:b};k.set=function(a,b){kp(this.a,a)||(this.g++,this.b.push(a));this.a[a]=b};k.forEach=function(a,b){for(var c=this.N(),d=0;d<c.length;d++){var e=c[d],f=this.get(e);a.call(b,f,e,this)}};k.clone=function(){return new ip(this)};function kp(a,b){return Object.prototype.hasOwnProperty.call(a,b)};var lp=/^(?:([^:/?#.]+):)?(?:\/\/(?:([^/?#]*)@)?([^/#?]*?)(?::([0-9]+))?(?=[/#?]|$))?([^?#]+)?(?:\?([^#]*))?(?:#(.*))?$/;function mp(a,b){if(a)for(var c=a.split("&"),d=0;d<c.length;d++){var e=c[d].indexOf("="),f,g=null;0<=e?(f=c[d].substring(0,e),g=c[d].substring(e+1)):f=c[d];b(f,g?decodeURIComponent(g.replace(/\+/g," ")):"")}};function np(a,b){this.a=this.l=this.g="";this.o=null;this.f=this.b="";this.c=!1;var c;a instanceof np?(this.c=void 0!==b?b:a.c,op(this,a.g),this.l=a.l,this.a=a.a,pp(this,a.o),this.b=a.b,qp(this,a.i.clone()),this.f=a.f):a&&(c=String(a).match(lp))?(this.c=!!b,op(this,c[1]||"",!0),this.l=rp(c[2]||""),this.a=rp(c[3]||"",!0),pp(this,c[4]),this.b=rp(c[5]||"",!0),qp(this,c[6]||"",!0),this.f=rp(c[7]||"")):(this.c=!!b,this.i=new sp(null,0,this.c))}
+np.prototype.toString=function(){var a=[],b=this.g;b&&a.push(tp(b,up,!0),":");var c=this.a;if(c||"file"==b)a.push("//"),(b=this.l)&&a.push(tp(b,up,!0),"@"),a.push(encodeURIComponent(String(c)).replace(/%25([0-9a-fA-F]{2})/g,"%$1")),c=this.o,null!=c&&a.push(":",String(c));if(c=this.b)this.a&&"/"!=c.charAt(0)&&a.push("/"),a.push(tp(c,"/"==c.charAt(0)?vp:wp,!0));(c=this.i.toString())&&a.push("?",c);(c=this.f)&&a.push("#",tp(c,xp));return a.join("")};np.prototype.clone=function(){return new np(this)};
+function op(a,b,c){a.g=c?rp(b,!0):b;a.g&&(a.g=a.g.replace(/:$/,""))}function pp(a,b){if(b){b=Number(b);if(isNaN(b)||0>b)throw Error("Bad port number "+b);a.o=b}else a.o=null}function qp(a,b,c){b instanceof sp?(a.i=b,yp(a.i,a.c)):(c||(b=tp(b,zp)),a.i=new sp(b,0,a.c))}function Ap(a){return a instanceof np?a.clone():new np(a,void 0)}
+function Bp(a,b){a instanceof np||(a=Ap(a));b instanceof np||(b=Ap(b));var c=a,d=b,e=c.clone(),f=!!d.g;f?op(e,d.g):f=!!d.l;f?e.l=d.l:f=!!d.a;f?e.a=d.a:f=null!=d.o;var g=d.b;if(f)pp(e,d.o);else if(f=!!d.b)if("/"!=g.charAt(0)&&(c.a&&!c.b?g="/"+g:(c=e.b.lastIndexOf("/"),-1!=c&&(g=e.b.substr(0,c+1)+g))),c=g,".."==c||"."==c)g="";else if(-1!=c.indexOf("./")||-1!=c.indexOf("/.")){for(var g=0==c.lastIndexOf("/",0),c=c.split("/"),h=[],l=0;l<c.length;){var m=c[l++];"."==m?g&&l==c.length&&h.push(""):".."==m?
+((1<h.length||1==h.length&&""!=h[0])&&h.pop(),g&&l==c.length&&h.push("")):(h.push(m),g=!0)}g=h.join("/")}else g=c;f?e.b=g:f=""!==d.i.toString();f?qp(e,rp(d.i.toString())):f=!!d.f;f&&(e.f=d.f);return e}function rp(a,b){return a?b?decodeURI(a.replace(/%25/g,"%2525")):decodeURIComponent(a):""}function tp(a,b,c){return da(a)?(a=encodeURI(a).replace(b,Cp),c&&(a=a.replace(/%25([0-9a-fA-F]{2})/g,"%$1")),a):null}function Cp(a){a=a.charCodeAt(0);return"%"+(a>>4&15).toString(16)+(a&15).toString(16)}
+var up=/[#\/\?@]/g,wp=/[\#\?:]/g,vp=/[\#\?]/g,zp=/[\#\?@]/g,xp=/#/g;function sp(a,b,c){this.a=this.b=null;this.g=a||null;this.f=!!c}function Dp(a){a.b||(a.b=new ip,a.a=0,a.g&&mp(a.g,function(b,c){a.add(decodeURIComponent(b.replace(/\+/g," ")),c)}))}k=sp.prototype;k.wc=function(){Dp(this);return this.a};k.add=function(a,b){Dp(this);this.g=null;a=Ep(this,a);var c=this.b.get(a);c||this.b.set(a,c=[]);c.push(b);this.a=this.a+1;return this};
+k.remove=function(a){Dp(this);a=Ep(this,a);return kp(this.b.a,a)?(this.g=null,this.a=this.a-this.b.get(a).length,this.b.remove(a)):!1};k.clear=function(){this.b=this.g=null;this.a=0};k.Ya=function(){Dp(this);return 0==this.a};function Fp(a,b){Dp(a);b=Ep(a,b);return kp(a.b.a,b)}k.N=function(){Dp(this);for(var a=this.b.zc(),b=this.b.N(),c=[],d=0;d<b.length;d++)for(var e=a[d],f=0;f<e.length;f++)c.push(b[d]);return c};
+k.zc=function(a){Dp(this);var b=[];if(da(a))Fp(this,a)&&(b=ne(b,this.b.get(Ep(this,a))));else{a=this.b.zc();for(var c=0;c<a.length;c++)b=ne(b,a[c])}return b};k.set=function(a,b){Dp(this);this.g=null;a=Ep(this,a);Fp(this,a)&&(this.a=this.a-this.b.get(a).length);this.b.set(a,[b]);this.a=this.a+1;return this};k.get=function(a,b){var c=a?this.zc(a):[];return 0<c.length?String(c[0]):b};
+k.toString=function(){if(this.g)return this.g;if(!this.b)return"";for(var a=[],b=this.b.N(),c=0;c<b.length;c++)for(var d=b[c],e=encodeURIComponent(String(d)),d=this.zc(d),f=0;f<d.length;f++){var g=e;""!==d[f]&&(g+="="+encodeURIComponent(String(d[f])));a.push(g)}return this.g=a.join("&")};k.clone=function(){var a=new sp;a.g=this.g;this.b&&(a.b=this.b.clone(),a.a=this.a);return a};function Ep(a,b){var c=String(b);a.f&&(c=c.toLowerCase());return c}
+function yp(a,b){b&&!a.f&&(Dp(a),a.g=null,a.b.forEach(function(a,b){var e=b.toLowerCase();b!=e&&(this.remove(b),this.remove(e),0<a.length&&(this.g=null,this.b.set(Ep(this,e),oe(a)),this.a=this.a+a.length))},a));a.f=b};function Gp(a){a=a||{};this.g=a.font;this.i=a.rotation;this.a=a.scale;this.s=a.text;this.o=a.textAlign;this.j=a.textBaseline;this.b=void 0!==a.fill?a.fill:new ij({color:"#333"});this.l=void 0!==a.stroke?a.stroke:null;this.f=void 0!==a.offsetX?a.offsetX:0;this.c=void 0!==a.offsetY?a.offsetY:0}k=Gp.prototype;k.Xj=function(){return this.g};k.kk=function(){return this.f};k.lk=function(){return this.c};k.Un=function(){return this.b};k.Vn=function(){return this.i};k.Wn=function(){return this.a};k.Xn=function(){return this.l};
+k.Ha=function(){return this.s};k.yk=function(){return this.o};k.zk=function(){return this.j};k.bp=function(a){this.g=a};k.mi=function(a){this.f=a};k.ni=function(a){this.c=a};k.ap=function(a){this.b=a};k.Yn=function(a){this.i=a};k.Zn=function(a){this.a=a};k.ip=function(a){this.l=a};k.pi=function(a){this.s=a};k.ri=function(a){this.o=a};k.jp=function(a){this.j=a};function Hp(a){a=a?a:{};Un.call(this);this.defaultDataProjection=yc("EPSG:4326");this.g=a.defaultStyle?a.defaultStyle:Ip;this.c=void 0!==a.extractStyles?a.extractStyles:!0;this.l=void 0!==a.writeStyles?a.writeStyles:!0;this.b={};this.i=void 0!==a.showPointNames?a.showPointNames:!0}y(Hp,Un);
+var Jp=["http://www.google.com/kml/ext/2.2"],Kp=[null,"http://earth.google.com/kml/2.0","http://earth.google.com/kml/2.1","http://earth.google.com/kml/2.2","http://www.opengis.net/kml/2.2"],Lp=[255,255,255,1],Mp=new ij({color:Lp}),Np=[20,2],Op=[64,64],Pp=new Dh({anchor:Np,anchorOrigin:"bottom-left",anchorXUnits:"pixels",anchorYUnits:"pixels",crossOrigin:"anonymous",rotation:0,scale:.5,size:Op,src:"https://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png"}),Qp=new oj({color:Lp,width:1}),Rp=new Gp({font:"bold 16px Helvetica",
+fill:Mp,stroke:new oj({color:[51,51,51,1],width:2}),scale:.8}),Ip=[new rj({fill:Mp,image:Pp,text:Rp,stroke:Qp,zIndex:0})],Sp={fraction:"fraction",pixels:"pixels"};function Tp(a,b){var c,d=[0,0],e="start";if(a.a){var f=a.a.ld();f&&2==f.length&&(d[0]=a.a.i*f[0]/2,d[1]=-a.a.i*f[1]/2,e="left")}if(Ha(a.Ha()))c=new Gp({text:b,offsetX:d[0],offsetY:d[1],textAlign:e});else{var f=a.Ha(),g={};for(c in f)g[c]=f[c];c=g;c.pi(b);c.ri(e);c.mi(d[0]);c.ni(d[1])}return new rj({text:c})}
+function Up(a,b,c,d,e){return function(){var f=e,g="";f&&this.W()&&(f="Point"===this.W().X());f&&(g=this.get("name"),f=f&&g);if(a)return f?(f=Tp(a[0],g),a.concat(f)):a;if(b){var h=Vp(b,c,d);return f?(f=Tp(h[0],g),h.concat(f)):h}return f?(f=Tp(c[0],g),c.concat(f)):c}}function Vp(a,b,c){return Array.isArray(a)?a:"string"===typeof a?(!(a in c)&&"#"+a in c&&(a="#"+a),Vp(c[a],b,c)):b}
+function Wp(a){a=Nk(a,!1);if(a=/^\s*#?\s*([0-9A-Fa-f]{8})\s*$/.exec(a))return a=a[1],[parseInt(a.substr(6,2),16),parseInt(a.substr(4,2),16),parseInt(a.substr(2,2),16),parseInt(a.substr(0,2),16)/255]}function Xp(a){a=Nk(a,!1);for(var b=[],c=/^\s*([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?)\s*,\s*([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?)(?:\s*,\s*([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?))?\s*/i,d;d=c.exec(a);)b.push(parseFloat(d[1]),parseFloat(d[2]),d[3]?parseFloat(d[3]):0),a=a.substr(d[0].length);return""!==a?void 0:b}
+function Yp(a){var b=Nk(a,!1);return a.baseURI?Bp(a.baseURI,b.trim()).toString():b.trim()}function Zp(a){a=bo(a);if(void 0!==a)return Math.sqrt(a)}function $p(a,b){return O(null,aq,a,b)}function bq(a,b){var c=O({B:[],zi:[]},cq,a,b);if(c){var d=c.B,c=c.zi,e,f;e=0;for(f=Math.min(d.length,c.length);e<f;++e)d[4*e+3]=c[e];c=new R(null);c.ba("XYZM",d);return c}}function dq(a,b){var c=O({},eq,a,b),d=O(null,fq,a,b);if(d){var e=new R(null);e.ba("XYZ",d);e.G(c);return e}}
+function gq(a,b){var c=O({},eq,a,b),d=O(null,fq,a,b);if(d){var e=new E(null);e.ba("XYZ",d,[d.length]);e.G(c);return e}}
+function hq(a,b){var c=O([],iq,a,b);if(!c)return null;if(0===c.length)return new Ln(c);var d=!0,e=c[0].X(),f,g,h;g=1;for(h=c.length;g<h;++g)if(f=c[g],f.X()!=e){d=!1;break}if(d){if("Point"==e){f=c[0];d=f.f;e=f.la();g=1;for(h=c.length;g<h;++g)f=c[g],mb(e,f.la());f=new Bn(null);f.ba(d,e);jq(f,c);return f}return"LineString"==e?(f=new S(null),An(f,c),jq(f,c),f):"Polygon"==e?(f=new T(null),Dn(f,c),jq(f,c),f):"GeometryCollection"==e?new Ln(c):null}return new Ln(c)}
+function kq(a,b){var c=O({},eq,a,b),d=O(null,fq,a,b);if(d){var e=new C(null);e.ba("XYZ",d);e.G(c);return e}}function lq(a,b){var c=O({},eq,a,b),d=O([null],mq,a,b);if(d&&d[0]){var e=new E(null),f=d[0],g=[f.length],h,l;h=1;for(l=d.length;h<l;++h)mb(f,d[h]),g.push(f.length);e.ba("XYZ",f,g);e.G(c);return e}}
+function nq(a,b){var c=O({},oq,a,b);if(!c)return null;var d="fillStyle"in c?c.fillStyle:Mp,e=c.fill;void 0===e||e||(d=null);var e="imageStyle"in c?c.imageStyle:Pp,f="textStyle"in c?c.textStyle:Rp,g="strokeStyle"in c?c.strokeStyle:Qp,c=c.outline;void 0===c||c||(g=null);return[new rj({fill:d,image:e,stroke:g,text:f,zIndex:void 0})]}
+function jq(a,b){var c=b.length,d=Array(b.length),e=Array(b.length),f,g,h,l;h=l=!1;for(g=0;g<c;++g)f=b[g],d[g]=f.get("extrude"),e[g]=f.get("altitudeMode"),h=h||void 0!==d[g],l=l||e[g];h&&a.set("extrude",d);l&&a.set("altitudeMode",e)}function pq(a,b){al(qq,a,b)}
+var rq=M(Kp,{value:Uk(U)}),qq=M(Kp,{Data:function(a,b){var c=a.getAttribute("name");if(null!==c){var d=O(void 0,rq,a,b);d&&(b[b.length-1][c]=d)}},SchemaData:function(a,b){al(sq,a,b)}}),eq=M(Kp,{extrude:J(Zn),altitudeMode:J(U)}),aq=M(Kp,{coordinates:Uk(Xp)}),mq=M(Kp,{innerBoundaryIs:function(a,b){var c=O(void 0,tq,a,b);c&&b[b.length-1].push(c)},outerBoundaryIs:function(a,b){var c=O(void 0,uq,a,b);c&&(b[b.length-1][0]=c)}}),cq=M(Kp,{when:function(a,b){var c=b[b.length-1].zi,d=Nk(a,!1);if(d=/^\s*(\d{4})($|-(\d{2})($|-(\d{2})($|T(\d{2}):(\d{2}):(\d{2})(Z|(?:([+\-])(\d{2})(?::(\d{2}))?)))))\s*$/.exec(d)){var e=
+Date.UTC(parseInt(d[1],10),d[3]?parseInt(d[3],10)-1:0,d[5]?parseInt(d[5],10):1,d[7]?parseInt(d[7],10):0,d[8]?parseInt(d[8],10):0,d[9]?parseInt(d[9],10):0);if(d[10]&&"Z"!=d[10]){var f="-"==d[11]?-1:1,e=e+60*f*parseInt(d[12],10);d[13]&&(e+=3600*f*parseInt(d[13],10))}c.push(e)}else c.push(0)}},M(Jp,{coord:function(a,b){var c=b[b.length-1].B,d=Nk(a,!1);(d=/^\s*([+\-]?\d+(?:\.\d*)?(?:e[+\-]?\d*)?)\s+([+\-]?\d+(?:\.\d*)?(?:e[+\-]?\d*)?)\s+([+\-]?\d+(?:\.\d*)?(?:e[+\-]?\d*)?)\s*$/i.exec(d))?c.push(parseFloat(d[1]),
+parseFloat(d[2]),parseFloat(d[3]),0):c.push(0,0,0,0)}})),fq=M(Kp,{coordinates:Uk(Xp)}),vq=M(Kp,{href:J(Yp)},M(Jp,{x:J(bo),y:J(bo),w:J(bo),h:J(bo)})),wq=M(Kp,{Icon:J(function(a,b){var c=O({},vq,a,b);return c?c:null}),heading:J(bo),hotSpot:J(function(a){var b=a.getAttribute("xunits"),c=a.getAttribute("yunits");return{x:parseFloat(a.getAttribute("x")),$f:Sp[b],y:parseFloat(a.getAttribute("y")),ag:Sp[c]}}),scale:J(Zp)}),tq=M(Kp,{LinearRing:Uk($p)}),xq=M(Kp,{color:J(Wp),scale:J(Zp)}),yq=M(Kp,{color:J(Wp),
+width:J(bo)}),iq=M(Kp,{LineString:Tk(dq),LinearRing:Tk(gq),MultiGeometry:Tk(hq),Point:Tk(kq),Polygon:Tk(lq)}),zq=M(Jp,{Track:Tk(bq)}),Bq=M(Kp,{ExtendedData:pq,Link:function(a,b){al(Aq,a,b)},address:J(U),description:J(U),name:J(U),open:J(Zn),phoneNumber:J(U),visibility:J(Zn)}),Aq=M(Kp,{href:J(Yp)}),uq=M(Kp,{LinearRing:Uk($p)}),Cq=M(Kp,{Style:J(nq),key:J(U),styleUrl:J(function(a){var b=Nk(a,!1).trim();return a.baseURI?Bp(a.baseURI,b).toString():b})}),Eq=M(Kp,{ExtendedData:pq,MultiGeometry:J(hq,"geometry"),
+LineString:J(dq,"geometry"),LinearRing:J(gq,"geometry"),Point:J(kq,"geometry"),Polygon:J(lq,"geometry"),Style:J(nq),StyleMap:function(a,b){var c=O(void 0,Dq,a,b);if(c){var d=b[b.length-1];Array.isArray(c)?d.Style=c:"string"===typeof c&&(d.styleUrl=c)}},address:J(U),description:J(U),name:J(U),open:J(Zn),phoneNumber:J(U),styleUrl:J(Yp),visibility:J(Zn)},M(Jp,{MultiTrack:J(function(a,b){var c=O([],zq,a,b);if(c){var d=new S(null);An(d,c);return d}},"geometry"),Track:J(bq,"geometry")})),Fq=M(Kp,{color:J(Wp),
+fill:J(Zn),outline:J(Zn)}),sq=M(Kp,{SimpleData:function(a,b){var c=a.getAttribute("name");if(null!==c){var d=U(a);b[b.length-1][c]=d}}}),oq=M(Kp,{IconStyle:function(a,b){var c=O({},wq,a,b);if(c){var d=b[b.length-1],e="Icon"in c?c.Icon:{},f;f=(f=e.href)?f:"https://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png";var g,h,l,m=c.hotSpot;m?(g=[m.x,m.y],h=m.$f,l=m.ag):"https://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png"===f?(g=Np,l=h="pixels"):/^http:\/\/maps\.(?:google|gstatic)\.com\//.test(f)&&
+(g=[.5,0],l=h="fraction");var n,m=e.x,p=e.y;void 0!==m&&void 0!==p&&(n=[m,p]);var q,m=e.w,e=e.h;void 0!==m&&void 0!==e&&(q=[m,e]);var r,e=c.heading;void 0!==e&&(r=wa(e));c=c.scale;"https://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png"==f&&(q=Op,void 0===c&&(c=.5));g=new Dh({anchor:g,anchorOrigin:"bottom-left",anchorXUnits:h,anchorYUnits:l,crossOrigin:"anonymous",offset:n,offsetOrigin:"bottom-left",rotation:r,scale:c,size:q,src:f});d.imageStyle=g}},LabelStyle:function(a,b){var c=O({},xq,a,
+b);c&&(b[b.length-1].textStyle=new Gp({fill:new ij({color:"color"in c?c.color:Lp}),scale:c.scale}))},LineStyle:function(a,b){var c=O({},yq,a,b);c&&(b[b.length-1].strokeStyle=new oj({color:"color"in c?c.color:Lp,width:"width"in c?c.width:1}))},PolyStyle:function(a,b){var c=O({},Fq,a,b);if(c){var d=b[b.length-1];d.fillStyle=new ij({color:"color"in c?c.color:Lp});var e=c.fill;void 0!==e&&(d.fill=e);c=c.outline;void 0!==c&&(d.outline=c)}}}),Dq=M(Kp,{Pair:function(a,b){var c=O({},Cq,a,b);if(c){var d=c.key;
+d&&"normal"==d&&((d=c.styleUrl)&&(b[b.length-1]=d),(c=c.Style)&&(b[b.length-1]=c))}}});k=Hp.prototype;k.Gf=function(a,b){var c=M(Kp,{Document:Sk(this.Gf,this),Folder:Sk(this.Gf,this),Placemark:Tk(this.Of,this),Style:this.Lo.bind(this),StyleMap:this.Ko.bind(this)});if(c=O([],c,a,b,this))return c};
+k.Of=function(a,b){var c=O({geometry:null},Eq,a,b);if(c){var d=new Ik,e=a.getAttribute("id");null!==e&&d.mc(e);var e=b[0],f=c.geometry;f&&un(f,!1,e);d.Ua(f);delete c.geometry;this.c&&d.sf(Up(c.Style,c.styleUrl,this.g,this.b,this.i));delete c.Style;d.G(c);return d}};k.Lo=function(a,b){var c=a.getAttribute("id");if(null!==c){var d=nq(a,b);d&&(c=a.baseURI?Bp(a.baseURI,"#"+c).toString():"#"+c,this.b[c]=d)}};
+k.Ko=function(a,b){var c=a.getAttribute("id");if(null!==c){var d=O(void 0,Dq,a,b);d&&(c=a.baseURI?Bp(a.baseURI,"#"+c).toString():"#"+c,this.b[c]=d)}};k.Ph=function(a,b){if(!jb(Kp,a.namespaceURI))return null;var c=this.Of(a,[sn(this,a,b)]);return c?c:null};
+k.lc=function(a,b){if(!jb(Kp,a.namespaceURI))return[];var c;c=a.localName;if("Document"==c||"Folder"==c)return(c=this.Gf(a,[sn(this,a,b)]))?c:[];if("Placemark"==c)return(c=this.Of(a,[sn(this,a,b)]))?[c]:[];if("kml"==c){c=[];var d;for(d=a.firstElementChild;d;d=d.nextElementSibling){var e=this.lc(d,b);e&&mb(c,e)}return c}return[]};k.Fo=function(a){if(Pk(a))return Gq(this,a);if(Qk(a))return Hq(this,a);if("string"===typeof a)return a=Rk(a),Gq(this,a)};
+function Gq(a,b){var c;for(c=b.firstChild;c;c=c.nextSibling)if(c.nodeType==Node.ELEMENT_NODE){var d=Hq(a,c);if(d)return d}}function Hq(a,b){var c;for(c=b.firstElementChild;c;c=c.nextElementSibling)if(jb(Kp,c.namespaceURI)&&"name"==c.localName)return U(c);for(c=b.firstElementChild;c;c=c.nextElementSibling){var d=c.localName;if(jb(Kp,c.namespaceURI)&&("Document"==d||"Folder"==d||"Placemark"==d||"kml"==d)&&(d=Hq(a,c)))return d}}
+k.Go=function(a){var b=[];Pk(a)?mb(b,Iq(this,a)):Qk(a)?mb(b,Jq(this,a)):"string"===typeof a&&(a=Rk(a),mb(b,Iq(this,a)));return b};function Iq(a,b){var c,d=[];for(c=b.firstChild;c;c=c.nextSibling)c.nodeType==Node.ELEMENT_NODE&&mb(d,Jq(a,c));return d}
+function Jq(a,b){var c,d=[];for(c=b.firstElementChild;c;c=c.nextElementSibling)if(jb(Kp,c.namespaceURI)&&"NetworkLink"==c.localName){var e=O({},Bq,c,[]);d.push(e)}for(c=b.firstElementChild;c;c=c.nextElementSibling)e=c.localName,!jb(Kp,c.namespaceURI)||"Document"!=e&&"Folder"!=e&&"kml"!=e||mb(d,Jq(a,c));return d}function Kq(a,b){var c=te(b),c=[255*(4==c.length?c[3]:1),c[2],c[1],c[0]],d;for(d=0;4>d;++d){var e=parseInt(c[d],10).toString(16);c[d]=1==e.length?"0"+e:e}ho(a,c.join(""))}
+function Lq(a,b,c){a={node:a};var d=b.X(),e,f;"GeometryCollection"==d?(e=b.ff(),f=Mq):"MultiPoint"==d?(e=b.je(),f=Nq):"MultiLineString"==d?(e=b.md(),f=Oq):"MultiPolygon"==d&&(e=b.Wd(),f=Pq);bl(a,Qq,f,e,c)}function Rq(a,b,c){bl({node:a},Sq,Tq,[b],c)}
+function Uq(a,b,c){var d={node:a};b.Xa()&&a.setAttribute("id",b.Xa());a=b.O();var e=b.ec();e&&(e=e.call(b,0))&&(e=Array.isArray(e)?e[0]:e,this.l&&(a.Style=e),(e=e.Ha())&&(a.name=e.Ha()));e=Vq[c[c.length-1].node.namespaceURI];a=$k(a,e);bl(d,Wq,Zk,a,c,e);a=c[0];(b=b.W())&&(b=un(b,!0,a));bl(d,Wq,Mq,[b],c)}function Xq(a,b,c){var d=b.la();a={node:a};a.layout=b.f;a.stride=b.va();bl(a,Yq,Zq,[d],c)}function $q(a,b,c){b=b.Vd();var d=b.shift();a={node:a};bl(a,ar,br,b,c);bl(a,ar,cr,[d],c)}
+function dr(a,b){io(a,Math.round(b*b*1E6)/1E6)}
+var er=M(Kp,["Document","Placemark"]),hr=M(Kp,{Document:L(function(a,b,c){bl({node:a},fr,gr,b,c,void 0,this)}),Placemark:L(Uq)}),fr=M(Kp,{Placemark:L(Uq)}),ir={Point:"Point",LineString:"LineString",LinearRing:"LinearRing",Polygon:"Polygon",MultiPoint:"MultiGeometry",MultiLineString:"MultiGeometry",MultiPolygon:"MultiGeometry",GeometryCollection:"MultiGeometry"},jr=M(Kp,["href"],M(Jp,["x","y","w","h"])),kr=M(Kp,{href:L(ho)},M(Jp,{x:L(io),y:L(io),w:L(io),h:L(io)})),lr=M(Kp,["scale","heading","Icon",
+"hotSpot"]),nr=M(Kp,{Icon:L(function(a,b,c){a={node:a};var d=jr[c[c.length-1].node.namespaceURI],e=$k(b,d);bl(a,kr,Zk,e,c,d);d=jr[Jp[0]];e=$k(b,d);bl(a,kr,mr,e,c,d)}),heading:L(io),hotSpot:L(function(a,b){a.setAttribute("x",b.x);a.setAttribute("y",b.y);a.setAttribute("xunits",b.$f);a.setAttribute("yunits",b.ag)}),scale:L(dr)}),or=M(Kp,["color","scale"]),pr=M(Kp,{color:L(Kq),scale:L(dr)}),qr=M(Kp,["color","width"]),rr=M(Kp,{color:L(Kq),width:L(io)}),Sq=M(Kp,{LinearRing:L(Xq)}),Qq=M(Kp,{LineString:L(Xq),
+Point:L(Xq),Polygon:L($q),GeometryCollection:L(Lq)}),Vq=M(Kp,"name open visibility address phoneNumber description styleUrl Style".split(" ")),Wq=M(Kp,{MultiGeometry:L(Lq),LineString:L(Xq),LinearRing:L(Xq),Point:L(Xq),Polygon:L($q),Style:L(function(a,b,c){a={node:a};var d={},e=b.c,f=b.f,g=b.a;b=b.Ha();g instanceof Dh&&(d.IconStyle=g);b&&(d.LabelStyle=b);f&&(d.LineStyle=f);e&&(d.PolyStyle=e);b=sr[c[c.length-1].node.namespaceURI];d=$k(d,b);bl(a,tr,Zk,d,c,b)}),address:L(ho),description:L(ho),name:L(ho),
+open:L(go),phoneNumber:L(ho),styleUrl:L(ho),visibility:L(go)}),Yq=M(Kp,{coordinates:L(function(a,b,c){c=c[c.length-1];var d=c.layout;c=c.stride;var e;"XY"==d||"XYM"==d?e=2:("XYZ"==d||"XYZM"==d)&&(e=3);var f,g=b.length,h="";if(0<g){h+=b[0];for(d=1;d<e;++d)h+=","+b[d];for(f=c;f<g;f+=c)for(h+=" "+b[f],d=1;d<e;++d)h+=","+b[f+d]}ho(a,h)})}),ar=M(Kp,{outerBoundaryIs:L(Rq),innerBoundaryIs:L(Rq)}),ur=M(Kp,{color:L(Kq)}),sr=M(Kp,["IconStyle","LabelStyle","LineStyle","PolyStyle"]),tr=M(Kp,{IconStyle:L(function(a,
+b,c){a={node:a};var d={},e=b.Fb(),f=b.ld(),g={href:b.b.j};if(e){g.w=e[0];g.h=e[1];var h=b.Yb(),l=b.Ia();l&&f&&0!==l[0]&&l[1]!==e[1]&&(g.x=l[0],g.y=f[1]-(l[1]+e[1]));h&&0!==h[0]&&h[1]!==e[1]&&(d.hotSpot={x:h[0],$f:"pixels",y:e[1]-h[1],ag:"pixels"})}d.Icon=g;e=b.i;1!==e&&(d.scale=e);b=b.j;0!==b&&(d.heading=b);b=lr[c[c.length-1].node.namespaceURI];d=$k(d,b);bl(a,nr,Zk,d,c,b)}),LabelStyle:L(function(a,b,c){a={node:a};var d={},e=b.b;e&&(d.color=e.b);(b=b.a)&&1!==b&&(d.scale=b);b=or[c[c.length-1].node.namespaceURI];
+d=$k(d,b);bl(a,pr,Zk,d,c,b)}),LineStyle:L(function(a,b,c){a={node:a};var d=qr[c[c.length-1].node.namespaceURI];b=$k({color:b.b,width:b.a},d);bl(a,rr,Zk,b,c,d)}),PolyStyle:L(function(a,b,c){bl({node:a},ur,vr,[b.b],c)})});function mr(a,b,c){return Mk(Jp[0],"gx:"+c)}function gr(a,b){return Mk(b[b.length-1].node.namespaceURI,"Placemark")}function Mq(a,b){if(a)return Mk(b[b.length-1].node.namespaceURI,ir[a.X()])}
+var vr=Xk("color"),Zq=Xk("coordinates"),br=Xk("innerBoundaryIs"),Nq=Xk("Point"),Oq=Xk("LineString"),Tq=Xk("LinearRing"),Pq=Xk("Polygon"),cr=Xk("outerBoundaryIs");
+Hp.prototype.a=function(a,b){b=tn(this,b);var c=Mk(Kp[4],"kml");c.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:gx",Jp[0]);c.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xsi","http://www.w3.org/2001/XMLSchema-instance");c.setAttributeNS("http://www.w3.org/2001/XMLSchema-instance","xsi:schemaLocation","http://www.opengis.net/kml/2.2 https://developers.google.com/kml/schema/kml22gx.xsd");var d={node:c},e={};1<a.length?e.Document=a:1==a.length&&(e.Placemark=a[0]);var f=er[c.namespaceURI],
+e=$k(e,f);bl(d,hr,Zk,e,[b],f,this);return c};(function(){var a={},b={ja:a};(function(c){if("object"===typeof a&&"undefined"!==typeof b)b.ja=c();else{var d;"undefined"!==typeof window?d=window:"undefined"!==typeof global?d=global:"undefined"!==typeof self?d=self:d=this;d.Rp=c()}})(function(){return function d(a,b,g){function h(m,p){if(!b[m]){if(!a[m]){var q="function"==typeof require&&require;if(!p&&q)return q(m,!0);if(l)return l(m,!0);q=Error("Cannot find module '"+m+"'");throw q.code="MODULE_NOT_FOUND",q;}q=b[m]={ja:{}};a[m][0].call(q.ja,function(b){var d=
+a[m][1][b];return h(d?d:b)},q,q.ja,d,a,b,g)}return b[m].ja}for(var l="function"==typeof require&&require,m=0;m<g.length;m++)h(g[m]);return h}({1:[function(a,b){function f(a){var b;a&&a.length&&(b=a,a=b.length);a=new Uint8Array(a||0);b&&a.set(b);a.$h=l.$h;a.Zf=l.Zf;a.Sh=l.Sh;a.Ei=l.Ei;a.Nf=l.Nf;a.Di=l.Di;a.Hf=l.Hf;a.Ai=l.Ai;a.toString=l.toString;a.write=l.write;a.slice=l.slice;a.tg=l.tg;a.nj=!0;return a}function g(a){for(var b=a.length,d=[],e=0,f,g;e<b;e++){f=a.charCodeAt(e);if(55295<f&&57344>f)if(g)if(56320>
+f){d.push(239,191,189);g=f;continue}else f=g-55296<<10|f-56320|65536,g=null;else{56319<f||e+1===b?d.push(239,191,189):g=f;continue}else g&&(d.push(239,191,189),g=null);128>f?d.push(f):2048>f?d.push(f>>6|192,f&63|128):65536>f?d.push(f>>12|224,f>>6&63|128,f&63|128):d.push(f>>18|240,f>>12&63|128,f>>6&63|128,f&63|128)}return d}b.ja=f;var h=a("ieee754"),l,m,n;l={$h:function(a){return(this[a]|this[a+1]<<8|this[a+2]<<16)+16777216*this[a+3]},Zf:function(a,b){this[b]=a;this[b+1]=a>>>8;this[b+2]=a>>>16;this[b+
+3]=a>>>24},Sh:function(a){return(this[a]|this[a+1]<<8|this[a+2]<<16)+(this[a+3]<<24)},Nf:function(a){return h.read(this,a,!0,23,4)},Hf:function(a){return h.read(this,a,!0,52,8)},Di:function(a,b){return h.write(this,a,b,!0,23,4)},Ai:function(a,b){return h.write(this,a,b,!0,52,8)},toString:function(a,b,d){var e=a="";d=Math.min(this.length,d||this.length);for(b=b||0;b<d;b++){var f=this[b];127>=f?(a+=decodeURIComponent(e)+String.fromCharCode(f),e=""):e+="%"+f.toString(16)}return a+=decodeURIComponent(e)},
+write:function(a,b){for(var d=a===m?n:g(a),e=0;e<d.length;e++)this[b+e]=d[e]},slice:function(a,b){return this.subarray(a,b)},tg:function(a,b){b=b||0;for(var d=0;d<this.length;d++)a[b+d]=this[d]}};l.Ei=l.Zf;f.byteLength=function(a){m=a;n=g(a);return n.length};f.isBuffer=function(a){return!(!a||!a.nj)}},{ieee754:3}],2:[function(a,b){(function(f){function g(a){this.Cb=l.isBuffer(a)?a:new l(a||0);this.da=0;this.length=this.Cb.length}function h(a,b){var d=b.Cb,e;e=d[b.da++];a+=268435456*(e&127);if(128>
+e)return a;e=d[b.da++];a+=34359738368*(e&127);if(128>e)return a;e=d[b.da++];a+=4398046511104*(e&127);if(128>e)return a;e=d[b.da++];a+=562949953421312*(e&127);if(128>e)return a;e=d[b.da++];a+=72057594037927936*(e&127);if(128>e)return a;e=d[b.da++];if(128>e)return a+0x7fffffffffffffff*(e&127);throw Error("Expected varint not more than 10 bytes");}b.ja=g;var l=f.Ap||a("./buffer");g.f=0;g.g=1;g.b=2;g.a=5;var m=Math.pow(2,63);g.prototype={Lf:function(a,b,d){for(d=d||this.length;this.da<d;){var e=this.Da(),
+f=this.da;a(e>>3,b,this);this.da===f&&this.op(e)}return b},Bo:function(){var a=this.Cb.Nf(this.da);this.da+=4;return a},xo:function(){var a=this.Cb.Hf(this.da);this.da+=8;return a},Da:function(){var a=this.Cb,b,d;d=a[this.da++];b=d&127;if(128>d)return b;d=a[this.da++];b|=(d&127)<<7;if(128>d)return b;d=a[this.da++];b|=(d&127)<<14;if(128>d)return b;d=a[this.da++];b|=(d&127)<<21;return 128>d?b:h(b,this)},Mo:function(){var a=this.da,b=this.Da();if(b<m)return b;for(var d=this.da-2;255===this.Cb[d];)d--;
+d<a&&(d=a);for(var e=b=0;e<d-a+1;e++)var f=~this.Cb[a+e]&127,b=b+(4>e?f<<7*e:f*Math.pow(2,7*e));return-b-1},xd:function(){var a=this.Da();return 1===a%2?(a+1)/-2:a/2},vo:function(){return!!this.Da()},Qf:function(){var a=this.Da()+this.da,b=this.Cb.toString("utf8",this.da,a);this.da=a;return b},op:function(a){a&=7;if(a===g.f)for(;127<this.Cb[this.da++];);else if(a===g.b)this.da=this.Da()+this.da;else if(a===g.a)this.da+=4;else if(a===g.g)this.da+=8;else throw Error("Unimplemented type: "+a);}}}).call(this,
+"undefined"!==typeof global?global:"undefined"!==typeof self?self:"undefined"!==typeof window?window:{})},{"./buffer":1}],3:[function(a,b,f){f.read=function(a,b,d,e,f){var p;p=8*f-e-1;var q=(1<<p)-1,r=q>>1,u=-7;f=d?f-1:0;var x=d?-1:1,v=a[b+f];f+=x;d=v&(1<<-u)-1;v>>=-u;for(u+=p;0<u;d=256*d+a[b+f],f+=x,u-=8);p=d&(1<<-u)-1;d>>=-u;for(u+=e;0<u;p=256*p+a[b+f],f+=x,u-=8);if(0===d)d=1-r;else{if(d===q)return p?NaN:Infinity*(v?-1:1);p+=Math.pow(2,e);d-=r}return(v?-1:1)*p*Math.pow(2,d-e)};f.write=function(a,
+b,d,e,f,p){var q,r=8*p-f-1,u=(1<<r)-1,x=u>>1,v=23===f?Math.pow(2,-24)-Math.pow(2,-77):0;p=e?0:p-1;var D=e?1:-1,A=0>b||0===b&&0>1/b?1:0;b=Math.abs(b);isNaN(b)||Infinity===b?(b=isNaN(b)?1:0,e=u):(e=Math.floor(Math.log(b)/Math.LN2),1>b*(q=Math.pow(2,-e))&&(e--,q*=2),b=1<=e+x?b+v/q:b+v*Math.pow(2,1-x),2<=b*q&&(e++,q/=2),e+x>=u?(b=0,e=u):1<=e+x?(b=(b*q-1)*Math.pow(2,f),e+=x):(b=b*Math.pow(2,x-1)*Math.pow(2,f),e=0));for(;8<=f;a[d+p]=b&255,p+=D,b/=256,f-=8);e=e<<f|b;for(r+=f;0<r;a[d+p]=e&255,p+=D,e/=256,
+r-=8);a[d+p-D]|=128*A}},{}]},{},[2])(2)});hl=b.ja})();(function(){var a={},b={ja:a};(function(c){if("object"===typeof a&&"undefined"!==typeof b)b.ja=c();else{var d;"undefined"!==typeof window?d=window:"undefined"!==typeof global?d=global:"undefined"!==typeof self?d=self:d=this;d.Up=c()}})(function(){return function d(a,b,g){function h(m,p){if(!b[m]){if(!a[m]){var q="function"==typeof require&&require;if(!p&&q)return q(m,!0);if(l)return l(m,!0);q=Error("Cannot find module '"+m+"'");throw q.code="MODULE_NOT_FOUND",q;}q=b[m]={ja:{}};a[m][0].call(q.ja,function(b){var d=
+a[m][1][b];return h(d?d:b)},q,q.ja,d,a,b,g)}return b[m].ja}for(var l="function"==typeof require&&require,m=0;m<g.length;m++)h(g[m]);return h}({1:[function(a,b){b.ja.ej=a("./lib/vectortile.js");b.ja.Np=a("./lib/vectortilefeature.js");b.ja.Op=a("./lib/vectortilelayer.js")},{"./lib/vectortile.js":2,"./lib/vectortilefeature.js":3,"./lib/vectortilelayer.js":4}],2:[function(a,b){function f(a,b,d){3===a&&(a=new g(d,d.Da()+d.da),a.length&&(b[a.name]=a))}var g=a("./vectortilelayer");b.ja=function(a,b){this.layers=
+a.Lf(f,{},b)}},{"./vectortilelayer":4}],3:[function(a,b){function f(a,b,d,e,f){this.properties={};this.extent=d;this.type=0;this.qc=a;this.Qe=-1;this.Id=e;this.Kd=f;a.Lf(g,this,b)}function g(a,b,d){if(1==a)b.Qp=d.Da();else if(2==a)for(a=d.Da()+d.da;d.da<a;){var e=b.Id[d.Da()],f=b.Kd[d.Da()];b.properties[e]=f}else 3==a?b.type=d.Da():4==a&&(b.Qe=d.da)}var h=a("point-geometry");b.ja=f;f.b=["Unknown","Point","LineString","Polygon"];f.prototype.Vg=function(){var a=this.qc;a.da=this.Qe;for(var b=a.Da()+
+a.da,d=1,e=0,f=0,g=0,u=[],x;a.da<b;)if(e||(e=a.Da(),d=e&7,e>>=3),e--,1===d||2===d)f+=a.xd(),g+=a.xd(),1===d&&(x&&u.push(x),x=[]),x.push(new h(f,g));else if(7===d)x&&x.push(x[0].clone());else throw Error("unknown command "+d);x&&u.push(x);return u};f.prototype.bbox=function(){var a=this.qc;a.da=this.Qe;for(var b=a.Da()+a.da,d=1,e=0,f=0,g=0,h=Infinity,x=-Infinity,v=Infinity,D=-Infinity;a.da<b;)if(e||(e=a.Da(),d=e&7,e>>=3),e--,1===d||2===d)f+=a.xd(),g+=a.xd(),f<h&&(h=f),f>x&&(x=f),g<v&&(v=g),g>D&&(D=
+g);else if(7!==d)throw Error("unknown command "+d);return[h,v,x,D]}},{"point-geometry":5}],4:[function(a,b){function f(a,b){this.version=1;this.name=null;this.extent=4096;this.length=0;this.qc=a;this.Id=[];this.Kd=[];this.Hd=[];a.Lf(g,this,b);this.length=this.Hd.length}function g(a,b,d){15===a?b.version=d.Da():1===a?b.name=d.Qf():5===a?b.extent=d.Da():2===a?b.Hd.push(d.da):3===a?b.Id.push(d.Qf()):4===a&&b.Kd.push(h(d))}function h(a){for(var b=null,d=a.Da()+a.da;a.da<d;)b=a.Da()>>3,b=1===b?a.Qf():
+2===b?a.Bo():3===b?a.xo():4===b?a.Mo():5===b?a.Da():6===b?a.xd():7===b?a.vo():null;return b}var l=a("./vectortilefeature.js");b.ja=f;f.prototype.feature=function(a){if(0>a||a>=this.Hd.length)throw Error("feature index out of bounds");this.qc.da=this.Hd[a];a=this.qc.Da()+this.qc.da;return new l(this.qc,a,this.extent,this.Id,this.Kd)}},{"./vectortilefeature.js":3}],5:[function(a,b){function f(a,b){this.x=a;this.y=b}b.ja=f;f.prototype={clone:function(){return new f(this.x,this.y)},add:function(a){return this.clone().fj(a)},
+rotate:function(a){return this.clone().qj(a)},round:function(){return this.clone().rj()},angle:function(){return Math.atan2(this.y,this.x)},fj:function(a){this.x+=a.x;this.y+=a.y;return this},qj:function(a){var b=Math.cos(a);a=Math.sin(a);var d=a*this.x+b*this.y;this.x=b*this.x-a*this.y;this.y=d;return this},rj:function(){this.x=Math.round(this.x);this.y=Math.round(this.y);return this}};f.b=function(a){return a instanceof f?a:Array.isArray(a)?new f(a[0],a[1]):a}},{}]},{},[1])(1)});il=b.ja})();function wr(a){this.defaultDataProjection=null;a=a?a:{};this.defaultDataProjection=new vc({code:"",units:"tile-pixels"});this.b=a.featureClass?a.featureClass:hk;this.g=a.geometryName?a.geometryName:"geometry";this.a=a.layerName?a.layerName:"layer";this.f=a.layers?a.layers:null}y(wr,rn);wr.prototype.X=function(){return"arraybuffer"};
+wr.prototype.Fa=function(a,b){var c=this.f,d=new hl(a),d=new il.ej(d),e=[],f=this.b,g,h,l;for(l in d.layers)if(!c||-1!=c.indexOf(l)){g=d.layers[l];for(var m=0,n=g.length;m<n;++m){if(f===hk){var p=g.feature(m);h=l;var q=p.Vg(),r=[],u=[];xr(q,u,r);var x=p.type,v=void 0;1===x?v=1===q.length?"Point":"MultiPoint":2===x?v=1===q.length?"LineString":"MultiLineString":3===x&&(v="Polygon");p=p.properties;p[this.a]=h;h=new this.b(v,u,r,p)}else{p=g.feature(m);v=l;u=b;h=new this.b;r=p.properties;r[this.a]=v;v=
+p.type;if(0===v)v=null;else{p=p.Vg();q=[];x=[];xr(p,x,q);var D=void 0;1===v?D=1===p.length?new C(null):new Bn(null):2===v?1===p.length?D=new R(null):D=new S(null):3===v&&(D=new E(null));D.ba("XY",x,q);v=D}(u=un(v,!1,tn(this,u)))&&(r[this.g]=u);h.G(r);h.Ec(this.g)}e.push(h)}}return e};wr.prototype.Oa=function(){return this.defaultDataProjection};wr.prototype.c=function(a){this.f=a};
+function xr(a,b,c){for(var d=0,e=0,f=a.length;e<f;++e){var g=a[e],h,l;h=0;for(l=g.length;h<l;++h){var m=g[h];b.push(m.x,m.y)}d+=2*h;c.push(d)}};function yr(a,b){return new zr(a,b)}function Ar(a,b,c){return new Br(a,b,c)}function Cr(a){this.Wb=a}function Dr(a){this.Wb=a}y(Dr,Cr);function Er(a,b,c){this.Wb=a;this.b=b;this.a=c}y(Er,Dr);function zr(a,b){Er.call(this,"And",a,b)}y(zr,Er);function Fr(a,b){Er.call(this,"Or",a,b)}y(Fr,Er);function Gr(a){this.Wb="Not";this.condition=a}y(Gr,Dr);function Br(a,b,c){this.Wb="BBOX";this.geometryName=a;this.extent=b;this.srsName=c}y(Br,Cr);function Hr(a,b){this.Wb=a;this.b=b}y(Hr,Cr);
+function Ir(a,b,c,d){Hr.call(this,a,b);this.g=c;this.a=d}y(Ir,Hr);function Jr(a,b,c){Ir.call(this,"PropertyIsEqualTo",a,b,c)}y(Jr,Ir);function Kr(a,b,c){Ir.call(this,"PropertyIsNotEqualTo",a,b,c)}y(Kr,Ir);function Lr(a,b){Ir.call(this,"PropertyIsLessThan",a,b)}y(Lr,Ir);function Mr(a,b){Ir.call(this,"PropertyIsLessThanOrEqualTo",a,b)}y(Mr,Ir);function Nr(a,b){Ir.call(this,"PropertyIsGreaterThan",a,b)}y(Nr,Ir);function Or(a,b){Ir.call(this,"PropertyIsGreaterThanOrEqualTo",a,b)}y(Or,Ir);
+function Pr(a){Hr.call(this,"PropertyIsNull",a)}y(Pr,Hr);function Qr(a,b,c){Hr.call(this,"PropertyIsBetween",a);this.a=b;this.g=c}y(Qr,Hr);function Rr(a,b,c,d,e,f){Hr.call(this,"PropertyIsLike",a);this.f=b;this.i=void 0!==c?c:"*";this.c=void 0!==d?d:".";this.g=void 0!==e?e:"!";this.a=f}y(Rr,Hr);function Sr(){Un.call(this);this.defaultDataProjection=yc("EPSG:4326")}y(Sr,Un);function Tr(a,b){b[b.length-1].Cd[a.getAttribute("k")]=a.getAttribute("v")}
+var Ur=[null],Vr=M(Ur,{nd:function(a,b){b[b.length-1].Rc.push(a.getAttribute("ref"))},tag:Tr}),Xr=M(Ur,{node:function(a,b){var c=b[0],d=b[b.length-1],e=a.getAttribute("id"),f=[parseFloat(a.getAttribute("lon")),parseFloat(a.getAttribute("lat"))];d.Zg[e]=f;var g=O({Cd:{}},Wr,a,b);Ha(g.Cd)||(f=new C(f),un(f,!1,c),c=new Ik(f),c.mc(e),c.G(g.Cd),d.features.push(c))},way:function(a,b){for(var c=b[0],d=a.getAttribute("id"),e=O({Rc:[],Cd:{}},Vr,a,b),f=b[b.length-1],g=[],h=0,l=e.Rc.length;h<l;h++)mb(g,f.Zg[e.Rc[h]]);
+e.Rc[0]==e.Rc[e.Rc.length-1]?(h=new E(null),h.ba("XY",g,[g.length])):(h=new R(null),h.ba("XY",g));un(h,!1,c);c=new Ik(h);c.mc(d);c.G(e.Cd);f.features.push(c)}}),Wr=M(Ur,{tag:Tr});Sr.prototype.lc=function(a,b){var c=sn(this,a,b);return"osm"==a.localName&&(c=O({Zg:{},features:[]},Xr,a,[c]),c.features)?c.features:[]};function Yr(a){return a.getAttributeNS("http://www.w3.org/1999/xlink","href")};function Zr(){}Zr.prototype.read=function(a){return Pk(a)?this.a(a):Qk(a)?this.b(a):"string"===typeof a?(a=Rk(a),this.a(a)):null};function $r(){}y($r,Zr);$r.prototype.a=function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType==Node.ELEMENT_NODE)return this.b(a);return null};$r.prototype.b=function(a){return(a=O({},as,a,[]))?a:null};
+var bs=[null,"http://www.opengis.net/ows/1.1"],as=M(bs,{ServiceIdentification:J(function(a,b){return O({},cs,a,b)}),ServiceProvider:J(function(a,b){return O({},ds,a,b)}),OperationsMetadata:J(function(a,b){return O({},es,a,b)})}),fs=M(bs,{DeliveryPoint:J(U),City:J(U),AdministrativeArea:J(U),PostalCode:J(U),Country:J(U),ElectronicMailAddress:J(U)}),gs=M(bs,{Value:Vk(function(a){return U(a)})}),hs=M(bs,{AllowedValues:J(function(a,b){return O({},gs,a,b)})}),js=M(bs,{Phone:J(function(a,b){return O({},
+is,a,b)}),Address:J(function(a,b){return O({},fs,a,b)})}),ls=M(bs,{HTTP:J(function(a,b){return O({},ks,a,b)})}),ks=M(bs,{Get:Vk(function(a,b){var c=Yr(a);return c?O({href:c},ms,a,b):void 0}),Post:void 0}),ns=M(bs,{DCP:J(function(a,b){return O({},ls,a,b)})}),es=M(bs,{Operation:function(a,b){var c=a.getAttribute("name"),d=O({},ns,a,b);d&&(b[b.length-1][c]=d)}}),is=M(bs,{Voice:J(U),Facsimile:J(U)}),ms=M(bs,{Constraint:Vk(function(a,b){var c=a.getAttribute("name");return c?O({name:c},hs,a,b):void 0})}),
+os=M(bs,{IndividualName:J(U),PositionName:J(U),ContactInfo:J(function(a,b){return O({},js,a,b)})}),cs=M(bs,{Title:J(U),ServiceTypeVersion:J(U),ServiceType:J(U)}),ds=M(bs,{ProviderName:J(U),ProviderSite:J(Yr),ServiceContact:J(function(a,b){return O({},os,a,b)})});function ps(a,b,c,d){var e;void 0!==d?e=d:e=[];for(var f=d=0;f<b;){var g=a[f++];e[d++]=a[f++];e[d++]=g;for(g=2;g<c;++g)e[d++]=a[f++]}e.length=d};function qs(a){a=a?a:{};this.defaultDataProjection=null;this.defaultDataProjection=yc("EPSG:4326");this.b=a.factor?a.factor:1E5;this.a=a.geometryLayout?a.geometryLayout:"XY"}y(qs,bp);function rs(a,b,c){var d,e=Array(b);for(d=0;d<b;++d)e[d]=0;var f,g;f=0;for(g=a.length;f<g;)for(d=0;d<b;++d,++f){var h=a[f],l=h-e[d];e[d]=h;a[f]=l}return ss(a,c?c:1E5)}
+function ts(a,b,c){var d,e=Array(b);for(d=0;d<b;++d)e[d]=0;a=us(a,c?c:1E5);var f;c=0;for(f=a.length;c<f;)for(d=0;d<b;++d,++c)e[d]+=a[c],a[c]=e[d];return a}function ss(a,b){var c=b?b:1E5,d,e;d=0;for(e=a.length;d<e;++d)a[d]=Math.round(a[d]*c);c=0;for(d=a.length;c<d;++c)e=a[c],a[c]=0>e?~(e<<1):e<<1;c="";d=0;for(e=a.length;d<e;++d){for(var f=a[d],g,h="";32<=f;)g=(32|f&31)+63,h+=String.fromCharCode(g),f>>=5;h+=String.fromCharCode(f+63);c+=h}return c}
+function us(a,b){var c=b?b:1E5,d=[],e=0,f=0,g,h;g=0;for(h=a.length;g<h;++g){var l=a.charCodeAt(g)-63,e=e|(l&31)<<f;32>l?(d.push(e),f=e=0):f+=5}e=0;for(f=d.length;e<f;++e)g=d[e],d[e]=g&1?~(g>>1):g>>1;e=0;for(f=d.length;e<f;++e)d[e]/=c;return d}k=qs.prototype;k.ud=function(a,b){var c=this.wd(a,b);return new Ik(c)};k.Kf=function(a,b){return[this.ud(a,b)]};k.wd=function(a,b){var c=id(this.a),d=ts(a,c,this.b);ps(d,d.length,c,d);c=vd(d,0,d.length,c);return un(new R(c,this.a),!1,tn(this,b))};
+k.He=function(a,b){var c=a.W();return c?this.Ed(c,b):""};k.Ci=function(a,b){return this.He(a[0],b)};k.Ed=function(a,b){a=un(a,!0,tn(this,b));var c=a.la(),d=a.va();ps(c,c.length,d,c);return rs(c,d,this.b)};function ws(a){a=a?a:{};this.defaultDataProjection=null;this.defaultDataProjection=yc(a.defaultDataProjection?a.defaultDataProjection:"EPSG:4326")}y(ws,vn);function xs(a,b){var c=[],d,e,f,g;f=0;for(g=a.length;f<g;++f)d=a[f],0<f&&c.pop(),0<=d?e=b[d]:e=b[~d].slice().reverse(),c.push.apply(c,e);d=0;for(e=c.length;d<e;++d)c[d]=c[d].slice();return c}function ys(a,b,c,d,e){a=a.geometries;var f=[],g,h;g=0;for(h=a.length;g<h;++g)f[g]=zs(a[g],b,c,d,e);return f}
+function zs(a,b,c,d,e){var f=a.type,g=As[f];b="Point"===f||"MultiPoint"===f?g(a,c,d):g(a,b);c=new Ik;c.Ua(un(b,!1,e));void 0!==a.id&&c.mc(a.id);a.properties&&c.G(a.properties);return c}
+ws.prototype.Jf=function(a,b){if("Topology"==a.type){var c,d=null,e=null;a.transform&&(c=a.transform,d=c.scale,e=c.translate);var f=a.arcs;if(c){c=d;var g=e,h,l;h=0;for(l=f.length;h<l;++h){var m=f[h],n=c,p=g,q=0,r=0,u,x,v;x=0;for(v=m.length;x<v;++x)u=m[x],q+=u[0],r+=u[1],u[0]=q,u[1]=r,Bs(u,n,p)}}c=[];g=Ga(a.objects);h=0;for(l=g.length;h<l;++h)"GeometryCollection"===g[h].type?(m=g[h],c.push.apply(c,ys(m,f,d,e,b))):(m=g[h],c.push(zs(m,f,d,e,b)));return c}return[]};
+function Bs(a,b,c){a[0]=a[0]*b[0]+c[0];a[1]=a[1]*b[1]+c[1]}ws.prototype.Oa=function(){return this.defaultDataProjection};
+var As={Point:function(a,b,c){a=a.coordinates;b&&c&&Bs(a,b,c);return new C(a)},LineString:function(a,b){var c=xs(a.arcs,b);return new R(c)},Polygon:function(a,b){var c=[],d,e;d=0;for(e=a.arcs.length;d<e;++d)c[d]=xs(a.arcs[d],b);return new E(c)},MultiPoint:function(a,b,c){a=a.coordinates;var d,e;if(b&&c)for(d=0,e=a.length;d<e;++d)Bs(a[d],b,c);return new Bn(a)},MultiLineString:function(a,b){var c=[],d,e;d=0;for(e=a.arcs.length;d<e;++d)c[d]=xs(a.arcs[d],b);return new S(c)},MultiPolygon:function(a,b){var c=
+[],d,e,f,g,h,l;h=0;for(l=a.arcs.length;h<l;++h){d=a.arcs[h];e=[];f=0;for(g=d.length;f<g;++f)e[f]=xs(d[f],b);c[h]=e}return new T(c)}};function Cs(a){a=a?a:{};this.i=a.featureType;this.g=a.featureNS;this.b=a.gmlFormat?a.gmlFormat:new lo;this.c=a.schemaLocation?a.schemaLocation:"http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd";Un.call(this)}y(Cs,Un);Cs.prototype.lc=function(a,b){var c={featureType:this.i,featureNS:this.g};Ea(c,sn(this,a,b?b:{}));c=[c];this.b.b["http://www.opengis.net/gml"].featureMember=Tk(Xn.prototype.vd);(c=O([],this.b.b,a,c,this.b))||(c=[]);return c};
+Cs.prototype.o=function(a){if(Pk(a))return Ds(a);if(Qk(a))return O({},Es,a,[]);if("string"===typeof a)return a=Rk(a),Ds(a)};Cs.prototype.l=function(a){if(Pk(a))return Fs(this,a);if(Qk(a))return Gs(this,a);if("string"===typeof a)return a=Rk(a),Fs(this,a)};function Fs(a,b){for(var c=b.firstChild;c;c=c.nextSibling)if(c.nodeType==Node.ELEMENT_NODE)return Gs(a,c)}var Hs={"http://www.opengis.net/gml":{boundedBy:J(Xn.prototype.ye,"bounds")}};
+function Gs(a,b){var c={},d=fo(b.getAttribute("numberOfFeatures"));c.numberOfFeatures=d;return O(c,Hs,b,[],a.b)}
+var Is={"http://www.opengis.net/wfs":{totalInserted:J(eo),totalUpdated:J(eo),totalDeleted:J(eo)}},Js={"http://www.opengis.net/ogc":{FeatureId:Tk(function(a){return a.getAttribute("fid")})}},Ks={"http://www.opengis.net/wfs":{Feature:function(a,b){al(Js,a,b)}}},Es={"http://www.opengis.net/wfs":{TransactionSummary:J(function(a,b){return O({},Is,a,b)},"transactionSummary"),InsertResults:J(function(a,b){return O([],Ks,a,b)},"insertIds")}};
+function Ds(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType==Node.ELEMENT_NODE)return O({},Es,a,[])}var Ls={"http://www.opengis.net/wfs":{PropertyName:L(ho)}};function Ms(a,b){var c=Mk("http://www.opengis.net/ogc","Filter"),d=Mk("http://www.opengis.net/ogc","FeatureId");c.appendChild(d);d.setAttribute("fid",b);a.appendChild(c)}
+var Ns={"http://www.opengis.net/wfs":{Insert:L(function(a,b,c){var d=c[c.length-1],d=Mk(d.featureNS,d.featureType);a.appendChild(d);lo.prototype.Bi(d,b,c)}),Update:L(function(a,b,c){var d=c[c.length-1],e=d.featureType,f=d.featurePrefix,f=f?f:"feature",g=d.featureNS;a.setAttribute("typeName",f+":"+e);a.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:"+f,g);e=b.Xa();if(void 0!==e){for(var f=b.N(),g=[],h=0,l=f.length;h<l;h++){var m=b.get(f[h]);void 0!==m&&g.push({name:f[h],value:m})}bl({node:a,
+srsName:d.srsName},Ns,Xk("Property"),g,c);Ms(a,e)}}),Delete:L(function(a,b,c){var d=c[c.length-1];c=d.featureType;var e=d.featurePrefix,e=e?e:"feature",d=d.featureNS;a.setAttribute("typeName",e+":"+c);a.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:"+e,d);b=b.Xa();void 0!==b&&Ms(a,b)}),Property:L(function(a,b,c){var d=Mk("http://www.opengis.net/wfs","Name");a.appendChild(d);ho(d,b.name);void 0!==b.value&&null!==b.value&&(d=Mk("http://www.opengis.net/wfs","Value"),a.appendChild(d),b.value instanceof
+Tc?lo.prototype.Je(d,b.value,c):ho(d,b.value))}),Native:L(function(a,b){b.wp&&a.setAttribute("vendorId",b.wp);void 0!==b.Yo&&a.setAttribute("safeToIgnore",b.Yo);void 0!==b.value&&ho(a,b.value)})}};function Os(a,b,c){a={node:a};var d=b.b;bl(a,Ps,Xk(d.Wb),[d],c);b=b.a;bl(a,Ps,Xk(b.Wb),[b],c)}function Qs(a,b){void 0!==b.a&&a.setAttribute("matchCase",b.a.toString());Rs(a,b.b);Ss("Literal",a,""+b.g)}function Ss(a,b,c){a=Mk("http://www.opengis.net/ogc",a);ho(a,c);b.appendChild(a)}
+function Rs(a,b){Ss("PropertyName",a,b)}
+var Ps={"http://www.opengis.net/wfs":{Query:L(function(a,b,c){var d=c[c.length-1],e=d.featurePrefix,f=d.featureNS,g=d.propertyNames,h=d.srsName;a.setAttribute("typeName",(e?e+":":"")+b);h&&a.setAttribute("srsName",h);f&&a.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:"+e,f);b=Ea({},d);b.node=a;bl(b,Ls,Xk("PropertyName"),g,c);if(d=d.filter)g=Mk("http://www.opengis.net/ogc","Filter"),a.appendChild(g),bl({node:g},Ps,Xk(d.Wb),[d],c)})},"http://www.opengis.net/ogc":{And:L(Os),Or:L(Os),Not:L(function(a,
+b,c){b=b.condition;bl({node:a},Ps,Xk(b.Wb),[b],c)}),BBOX:L(function(a,b,c){c[c.length-1].srsName=b.srsName;Rs(a,b.geometryName);lo.prototype.Je(a,b.extent,c)}),PropertyIsEqualTo:L(Qs),PropertyIsNotEqualTo:L(Qs),PropertyIsLessThan:L(Qs),PropertyIsLessThanOrEqualTo:L(Qs),PropertyIsGreaterThan:L(Qs),PropertyIsGreaterThanOrEqualTo:L(Qs),PropertyIsNull:L(function(a,b){Rs(a,b.b)}),PropertyIsBetween:L(function(a,b){Rs(a,b.b);Ss("LowerBoundary",a,""+b.a);Ss("UpperBoundary",a,""+b.g)}),PropertyIsLike:L(function(a,
+b){a.setAttribute("wildCard",b.i);a.setAttribute("singleChar",b.c);a.setAttribute("escapeChar",b.g);void 0!==b.a&&a.setAttribute("matchCase",b.a.toString());Rs(a,b.b);Ss("Literal",a,""+b.f)})}};
+Cs.prototype.j=function(a){var b=Mk("http://www.opengis.net/wfs","GetFeature");b.setAttribute("service","WFS");b.setAttribute("version","1.1.0");var c;if(a&&(a.handle&&b.setAttribute("handle",a.handle),a.outputFormat&&b.setAttribute("outputFormat",a.outputFormat),void 0!==a.maxFeatures&&b.setAttribute("maxFeatures",a.maxFeatures),a.resultType&&b.setAttribute("resultType",a.resultType),void 0!==a.startIndex&&b.setAttribute("startIndex",a.startIndex),void 0!==a.count&&b.setAttribute("count",a.count),
+c=a.filter,a.bbox)){var d=Ar(a.geometryName,a.bbox,a.srsName);c?c=yr(c,d):c=d}b.setAttributeNS("http://www.w3.org/2001/XMLSchema-instance","xsi:schemaLocation",this.c);d=a.featureTypes;a=[{node:b,srsName:a.srsName,featureNS:a.featureNS?a.featureNS:this.g,featurePrefix:a.featurePrefix,geometryName:a.geometryName,filter:c,propertyNames:a.propertyNames?a.propertyNames:[]}];c=Ea({},a[a.length-1]);c.node=b;bl(c,Ps,Xk("Query"),d,a);return b};
+Cs.prototype.U=function(a,b,c,d){var e=[],f=Mk("http://www.opengis.net/wfs","Transaction");f.setAttribute("service","WFS");f.setAttribute("version","1.1.0");var g,h;d&&(g=d.gmlOptions?d.gmlOptions:{},d.handle&&f.setAttribute("handle",d.handle));f.setAttributeNS("http://www.w3.org/2001/XMLSchema-instance","xsi:schemaLocation",this.c);a&&(h={node:f,featureNS:d.featureNS,featureType:d.featureType,featurePrefix:d.featurePrefix,srsName:d.srsName},Ea(h,g),bl(h,Ns,Xk("Insert"),a,e));b&&(h={node:f,featureNS:d.featureNS,
+featureType:d.featureType,featurePrefix:d.featurePrefix,srsName:d.srsName},Ea(h,g),bl(h,Ns,Xk("Update"),b,e));c&&bl({node:f,featureNS:d.featureNS,featureType:d.featureType,featurePrefix:d.featurePrefix,srsName:d.srsName},Ns,Xk("Delete"),c,e);d.nativeElements&&bl({node:f,featureNS:d.featureNS,featureType:d.featureType,featurePrefix:d.featurePrefix,srsName:d.srsName},Ns,Xk("Native"),d.nativeElements,e);return f};
+Cs.prototype.Pf=function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType==Node.ELEMENT_NODE)return this.Be(a);return null};Cs.prototype.Be=function(a){if(a.firstElementChild&&a.firstElementChild.firstElementChild)for(a=a.firstElementChild.firstElementChild,a=a.firstElementChild;a;a=a.nextElementSibling)if(0!==a.childNodes.length&&(1!==a.childNodes.length||3!==a.firstChild.nodeType)){var b=[{}];this.b.ye(a,b);return yc(b.pop().srsName)}return null};function Ts(a){a=a?a:{};this.defaultDataProjection=null;this.b=void 0!==a.splitCollection?a.splitCollection:!1}y(Ts,bp);function Us(a){a=a.Z();return 0===a.length?"":a[0]+" "+a[1]}function Vs(a){a=a.Z();for(var b=[],c=0,d=a.length;c<d;++c)b.push(a[c][0]+" "+a[c][1]);return b.join(",")}function Ws(a){var b=[];a=a.Vd();for(var c=0,d=a.length;c<d;++c)b.push("("+Vs(a[c])+")");return b.join(",")}function Xs(a){var b=a.X();a=(0,Ys[b])(a);b=b.toUpperCase();return 0===a.length?b+" EMPTY":b+"("+a+")"}
+var Ys={Point:Us,LineString:Vs,Polygon:Ws,MultiPoint:function(a){var b=[];a=a.je();for(var c=0,d=a.length;c<d;++c)b.push("("+Us(a[c])+")");return b.join(",")},MultiLineString:function(a){var b=[];a=a.md();for(var c=0,d=a.length;c<d;++c)b.push("("+Vs(a[c])+")");return b.join(",")},MultiPolygon:function(a){var b=[];a=a.Wd();for(var c=0,d=a.length;c<d;++c)b.push("("+Ws(a[c])+")");return b.join(",")},GeometryCollection:function(a){var b=[];a=a.ff();for(var c=0,d=a.length;c<d;++c)b.push(Xs(a[c]));return b.join(",")}};
+k=Ts.prototype;k.ud=function(a,b){var c=this.wd(a,b);if(c){var d=new Ik;d.Ua(c);return d}return null};k.Kf=function(a,b){var c=[],d=this.wd(a,b);this.b&&"GeometryCollection"==d.X()?c=d.c:c=[d];for(var e=[],f=0,g=c.length;f<g;++f)d=new Ik,d.Ua(c[f]),e.push(d);return e};k.wd=function(a,b){var c;c=new Zs(new $s(a));c.b=at(c.a);return(c=bt(c))?un(c,!1,b):null};k.He=function(a,b){var c=a.W();return c?this.Ed(c,b):""};
+k.Ci=function(a,b){if(1==a.length)return this.He(a[0],b);for(var c=[],d=0,e=a.length;d<e;++d)c.push(a[d].W());c=new Ln(c);return this.Ed(c,b)};k.Ed=function(a,b){return Xs(un(a,!0,b))};function $s(a){this.a=a;this.b=-1}
+function at(a){var b=a.a.charAt(++a.b),c={position:a.b,value:b};if("("==b)c.type=2;else if(","==b)c.type=5;else if(")"==b)c.type=3;else if("0"<=b&&"9">=b||"."==b||"-"==b){c.type=4;var d,b=a.b,e=!1,f=!1;do{if("."==d)e=!0;else if("e"==d||"E"==d)f=!0;d=a.a.charAt(++a.b)}while("0"<=d&&"9">=d||"."==d&&(void 0===e||!e)||!f&&("e"==d||"E"==d)||f&&("-"==d||"+"==d));a=parseFloat(a.a.substring(b,a.b--));c.value=a}else if("a"<=b&&"z">=b||"A"<=b&&"Z">=b){c.type=1;b=a.b;do d=a.a.charAt(++a.b);while("a"<=d&&"z">=
+d||"A"<=d&&"Z">=d);a=a.a.substring(b,a.b--).toUpperCase();c.value=a}else{if(" "==b||"\t"==b||"\r"==b||"\n"==b)return at(a);if(""===b)c.type=6;else throw Error("Unexpected character: "+b);}return c}function Zs(a){this.a=a}k=Zs.prototype;k.match=function(a){if(a=this.b.type==a)this.b=at(this.a);return a};
+function bt(a){var b=a.b;if(a.match(1)){var c=b.value;if("GEOMETRYCOLLECTION"==c){a:{if(a.match(2)){b=[];do b.push(bt(a));while(a.match(5));if(a.match(3)){a=b;break a}}else if(ct(a)){a=[];break a}throw Error(dt(a));}return new Ln(a)}var d=et[c],b=ft[c];if(!d||!b)throw Error("Invalid geometry type: "+c);a=d.call(a);return new b(a)}throw Error(dt(a));}k.Ef=function(){if(this.match(2)){var a=gt(this);if(this.match(3))return a}else if(ct(this))return null;throw Error(dt(this));};
+k.Df=function(){if(this.match(2)){var a=ht(this);if(this.match(3))return a}else if(ct(this))return[];throw Error(dt(this));};k.Ff=function(){if(this.match(2)){var a=it(this);if(this.match(3))return a}else if(ct(this))return[];throw Error(dt(this));};k.io=function(){if(this.match(2)){var a;if(2==this.b.type)for(a=[this.Ef()];this.match(5);)a.push(this.Ef());else a=ht(this);if(this.match(3))return a}else if(ct(this))return[];throw Error(dt(this));};
+k.ho=function(){if(this.match(2)){var a=it(this);if(this.match(3))return a}else if(ct(this))return[];throw Error(dt(this));};k.jo=function(){if(this.match(2)){for(var a=[this.Ff()];this.match(5);)a.push(this.Ff());if(this.match(3))return a}else if(ct(this))return[];throw Error(dt(this));};function gt(a){for(var b=[],c=0;2>c;++c){var d=a.b;if(a.match(4))b.push(d.value);else break}if(2==b.length)return b;throw Error(dt(a));}function ht(a){for(var b=[gt(a)];a.match(5);)b.push(gt(a));return b}
+function it(a){for(var b=[a.Df()];a.match(5);)b.push(a.Df());return b}function ct(a){var b=1==a.b.type&&"EMPTY"==a.b.value;b&&(a.b=at(a.a));return b}function dt(a){return"Unexpected `"+a.b.value+"` at position "+a.b.position+" in `"+a.a.a+"`"}var ft={POINT:C,LINESTRING:R,POLYGON:E,MULTIPOINT:Bn,MULTILINESTRING:S,MULTIPOLYGON:T},et={POINT:Zs.prototype.Ef,LINESTRING:Zs.prototype.Df,POLYGON:Zs.prototype.Ff,MULTIPOINT:Zs.prototype.io,MULTILINESTRING:Zs.prototype.ho,MULTIPOLYGON:Zs.prototype.jo};function jt(){this.version=void 0}y(jt,Zr);jt.prototype.a=function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType==Node.ELEMENT_NODE)return this.b(a);return null};jt.prototype.b=function(a){this.version=a.getAttribute("version").trim();return(a=O({version:this.version},kt,a,[]))?a:null};function lt(a,b){return O({},mt,a,b)}function nt(a,b){return O({},ot,a,b)}function pt(a,b){var c=lt(a,b);if(c){var d=[fo(a.getAttribute("width")),fo(a.getAttribute("height"))];c.size=d;return c}}
+function qt(a,b){return O([],rt,a,b)}
+var st=[null,"http://www.opengis.net/wms"],kt=M(st,{Service:J(function(a,b){return O({},tt,a,b)}),Capability:J(function(a,b){return O({},ut,a,b)})}),ut=M(st,{Request:J(function(a,b){return O({},vt,a,b)}),Exception:J(function(a,b){return O([],wt,a,b)}),Layer:J(function(a,b){return O({},xt,a,b)})}),tt=M(st,{Name:J(U),Title:J(U),Abstract:J(U),KeywordList:J(qt),OnlineResource:J(Yr),ContactInformation:J(function(a,b){return O({},yt,a,b)}),Fees:J(U),AccessConstraints:J(U),LayerLimit:J(eo),MaxWidth:J(eo),
+MaxHeight:J(eo)}),yt=M(st,{ContactPersonPrimary:J(function(a,b){return O({},zt,a,b)}),ContactPosition:J(U),ContactAddress:J(function(a,b){return O({},At,a,b)}),ContactVoiceTelephone:J(U),ContactFacsimileTelephone:J(U),ContactElectronicMailAddress:J(U)}),zt=M(st,{ContactPerson:J(U),ContactOrganization:J(U)}),At=M(st,{AddressType:J(U),Address:J(U),City:J(U),StateOrProvince:J(U),PostCode:J(U),Country:J(U)}),wt=M(st,{Format:Tk(U)}),xt=M(st,{Name:J(U),Title:J(U),Abstract:J(U),KeywordList:J(qt),CRS:Vk(U),
+EX_GeographicBoundingBox:J(function(a,b){var c=O({},Bt,a,b);if(c){var d=c.westBoundLongitude,e=c.southBoundLatitude,f=c.eastBoundLongitude,c=c.northBoundLatitude;return void 0===d||void 0===e||void 0===f||void 0===c?void 0:[d,e,f,c]}}),BoundingBox:Vk(function(a){var b=[co(a.getAttribute("minx")),co(a.getAttribute("miny")),co(a.getAttribute("maxx")),co(a.getAttribute("maxy"))],c=[co(a.getAttribute("resx")),co(a.getAttribute("resy"))];return{crs:a.getAttribute("CRS"),extent:b,res:c}}),Dimension:Vk(function(a){return{name:a.getAttribute("name"),
+units:a.getAttribute("units"),unitSymbol:a.getAttribute("unitSymbol"),"default":a.getAttribute("default"),multipleValues:$n(a.getAttribute("multipleValues")),nearestValue:$n(a.getAttribute("nearestValue")),current:$n(a.getAttribute("current")),values:U(a)}}),Attribution:J(function(a,b){return O({},Ct,a,b)}),AuthorityURL:Vk(function(a,b){var c=lt(a,b);if(c)return c.name=a.getAttribute("name"),c}),Identifier:Vk(U),MetadataURL:Vk(function(a,b){var c=lt(a,b);if(c)return c.type=a.getAttribute("type"),
+c}),DataURL:Vk(lt),FeatureListURL:Vk(lt),Style:Vk(function(a,b){return O({},Dt,a,b)}),MinScaleDenominator:J(bo),MaxScaleDenominator:J(bo),Layer:Vk(function(a,b){var c=b[b.length-1],d=O({},xt,a,b);if(d){var e=$n(a.getAttribute("queryable"));void 0===e&&(e=c.queryable);d.queryable=void 0!==e?e:!1;e=fo(a.getAttribute("cascaded"));void 0===e&&(e=c.cascaded);d.cascaded=e;e=$n(a.getAttribute("opaque"));void 0===e&&(e=c.opaque);d.opaque=void 0!==e?e:!1;e=$n(a.getAttribute("noSubsets"));void 0===e&&(e=c.noSubsets);
+d.noSubsets=void 0!==e?e:!1;(e=co(a.getAttribute("fixedWidth")))||(e=c.fixedWidth);d.fixedWidth=e;(e=co(a.getAttribute("fixedHeight")))||(e=c.fixedHeight);d.fixedHeight=e;["Style","CRS","AuthorityURL"].forEach(function(a){a in c&&(d[a]=(d[a]||[]).concat(c[a]))});"EX_GeographicBoundingBox BoundingBox Dimension Attribution MinScaleDenominator MaxScaleDenominator".split(" ").forEach(function(a){a in d||(d[a]=c[a])});return d}})}),Ct=M(st,{Title:J(U),OnlineResource:J(Yr),LogoURL:J(pt)}),Bt=M(st,{westBoundLongitude:J(bo),
+eastBoundLongitude:J(bo),southBoundLatitude:J(bo),northBoundLatitude:J(bo)}),vt=M(st,{GetCapabilities:J(nt),GetMap:J(nt),GetFeatureInfo:J(nt)}),ot=M(st,{Format:Vk(U),DCPType:Vk(function(a,b){return O({},Et,a,b)})}),Et=M(st,{HTTP:J(function(a,b){return O({},Ft,a,b)})}),Ft=M(st,{Get:J(lt),Post:J(lt)}),Dt=M(st,{Name:J(U),Title:J(U),Abstract:J(U),LegendURL:Vk(pt),StyleSheetURL:J(lt),StyleURL:J(lt)}),mt=M(st,{Format:J(U),OnlineResource:J(Yr)}),rt=M(st,{Keyword:Tk(U)});function Gt(a){a=a?a:{};this.g="http://mapserver.gis.umn.edu/mapserver";this.b=new ko;this.c=a.layers?a.layers:null;Un.call(this)}y(Gt,Un);
+Gt.prototype.lc=function(a,b){var c={};b&&Ea(c,sn(this,a,b));var d=[c];a.setAttribute("namespaceURI",this.g);var e=a.localName,c=[];if(0!==a.childNodes.length){if("msGMLOutput"==e)for(var f=0,g=a.childNodes.length;f<g;f++){var h=a.childNodes[f];if(h.nodeType===Node.ELEMENT_NODE){var l=d[0],m=h.localName.replace("_layer","");if(!this.c||jb(this.c,m)){m+="_feature";l.featureType=m;l.featureNS=this.g;var n={};n[m]=Tk(this.b.If,this.b);l=M([l.featureNS,null],n);h.setAttribute("namespaceURI",this.g);(h=
+O([],l,h,d,this.b))&&mb(c,h)}}}"FeatureCollection"==e&&(d=O([],this.b.b,a,[{}],this.b))&&(c=d)}return c};function Ht(){this.g=new $r}y(Ht,Zr);Ht.prototype.a=function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType==Node.ELEMENT_NODE)return this.b(a);return null};Ht.prototype.b=function(a){var b=a.getAttribute("version").trim(),c=this.g.b(a);if(!c)return null;c.version=b;return(c=O(c,It,a,[]))?c:null};function Jt(a){var b=U(a).split(" ");if(b&&2==b.length)return a=+b[0],b=+b[1],isNaN(a)||isNaN(b)?void 0:[a,b]}
+var Kt=[null,"http://www.opengis.net/wmts/1.0"],Lt=[null,"http://www.opengis.net/ows/1.1"],It=M(Kt,{Contents:J(function(a,b){return O({},Mt,a,b)})}),Mt=M(Kt,{Layer:Vk(function(a,b){return O({},Nt,a,b)}),TileMatrixSet:Vk(function(a,b){return O({},Ot,a,b)})}),Nt=M(Kt,{Style:Vk(function(a,b){var c=O({},Pt,a,b);if(c){var d="true"===a.getAttribute("isDefault");c.isDefault=d;return c}}),Format:Vk(U),TileMatrixSetLink:Vk(function(a,b){return O({},Qt,a,b)}),Dimension:Vk(function(a,b){return O({},Rt,a,b)}),
+ResourceURL:Vk(function(a){var b=a.getAttribute("format"),c=a.getAttribute("template");a=a.getAttribute("resourceType");var d={};b&&(d.format=b);c&&(d.template=c);a&&(d.resourceType=a);return d})},M(Lt,{Title:J(U),Abstract:J(U),WGS84BoundingBox:J(function(a,b){var c=O([],St,a,b);return 2!=c.length?void 0:Kb(c)}),Identifier:J(U)})),Pt=M(Kt,{LegendURL:Vk(function(a){var b={};b.format=a.getAttribute("format");b.href=Yr(a);return b})},M(Lt,{Title:J(U),Identifier:J(U)})),Qt=M(Kt,{TileMatrixSet:J(U)}),
+Rt=M(Kt,{Default:J(U),Value:Vk(U)},M(Lt,{Identifier:J(U)})),St=M(Lt,{LowerCorner:Tk(Jt),UpperCorner:Tk(Jt)}),Ot=M(Kt,{WellKnownScaleSet:J(U),TileMatrix:Vk(function(a,b){return O({},Tt,a,b)})},M(Lt,{SupportedCRS:J(U),Identifier:J(U)})),Tt=M(Kt,{TopLeftCorner:J(Jt),ScaleDenominator:J(bo),TileWidth:J(eo),TileHeight:J(eo),MatrixWidth:J(eo),MatrixHeight:J(eo)},M(Lt,{Identifier:J(U)}));function Ut(a){eb.call(this);a=a||{};this.a=null;this.c=Qc;this.f=void 0;B(this,gb("projection"),this.Nl,this);B(this,gb("tracking"),this.Ol,this);void 0!==a.projection&&this.dh(yc(a.projection));void 0!==a.trackingOptions&&this.si(a.trackingOptions);this.ge(void 0!==a.tracking?a.tracking:!1)}y(Ut,eb);k=Ut.prototype;k.ka=function(){this.ge(!1);eb.prototype.ka.call(this)};k.Nl=function(){var a=this.ah();a&&(this.c=Bc(yc("EPSG:4326"),a),this.a&&this.set("position",this.c(this.a)))};
+k.Ol=function(){if(kg){var a=this.bh();a&&void 0===this.f?this.f=pa.navigator.geolocation.watchPosition(this.qo.bind(this),this.ro.bind(this),this.Mg()):a||void 0===this.f||(pa.navigator.geolocation.clearWatch(this.f),this.f=void 0)}};
+k.qo=function(a){a=a.coords;this.set("accuracy",a.accuracy);this.set("altitude",null===a.altitude?void 0:a.altitude);this.set("altitudeAccuracy",null===a.altitudeAccuracy?void 0:a.altitudeAccuracy);this.set("heading",null===a.heading?void 0:wa(a.heading));this.a?(this.a[0]=a.longitude,this.a[1]=a.latitude):this.a=[a.longitude,a.latitude];var b=this.c(this.a);this.set("position",b);this.set("speed",null===a.speed?void 0:a.speed);a=Nd(Yi,this.a,a.accuracy);a.rc(this.c);this.set("accuracyGeometry",a);
+this.u()};k.ro=function(a){a.type="error";this.ge(!1);this.b(a)};k.Mj=function(){return this.get("accuracy")};k.Nj=function(){return this.get("accuracyGeometry")||null};k.Pj=function(){return this.get("altitude")};k.Qj=function(){return this.get("altitudeAccuracy")};k.Ll=function(){return this.get("heading")};k.Ml=function(){return this.get("position")};k.ah=function(){return this.get("projection")};k.wk=function(){return this.get("speed")};k.bh=function(){return this.get("tracking")};k.Mg=function(){return this.get("trackingOptions")};
+k.dh=function(a){this.set("projection",a)};k.ge=function(a){this.set("tracking",a)};k.si=function(a){this.set("trackingOptions",a)};function Vt(a,b,c){hd.call(this);this.Vf(a,b?b:0,c)}y(Vt,hd);k=Vt.prototype;k.clone=function(){var a=new Vt(null),b=this.B.slice();jd(a,this.f,b);a.u();return a};k.sb=function(a,b,c,d){var e=this.B;a-=e[0];var f=b-e[1];b=a*a+f*f;if(b<d){if(0===b)for(d=0;d<this.a;++d)c[d]=e[d];else for(d=this.wf()/Math.sqrt(b),c[0]=e[0]+d*a,c[1]=e[1]+d*f,d=2;d<this.a;++d)c[d]=e[d];c.length=this.a;return b}return d};k.Bc=function(a,b){var c=this.B,d=a-c[0],c=b-c[1];return d*d+c*c<=Wt(this)};
+k.rd=function(){return this.B.slice(0,this.a)};k.Od=function(a){var b=this.B,c=b[this.a]-b[0];return Wb(b[0]-c,b[1]-c,b[0]+c,b[1]+c,a)};k.wf=function(){return Math.sqrt(Wt(this))};function Wt(a){var b=a.B[a.a]-a.B[0];a=a.B[a.a+1]-a.B[1];return b*b+a*a}k.X=function(){return"Circle"};k.Ka=function(a){var b=this.H();return nc(a,b)?(b=this.rd(),a[0]<=b[0]&&a[2]>=b[0]||a[1]<=b[1]&&a[3]>=b[1]?!0:bc(a,this.sg,this)):!1};
+k.jm=function(a){var b=this.a,c=this.B[b]-this.B[0],d=a.slice();d[b]=d[0]+c;for(c=1;c<b;++c)d[b+c]=a[c];jd(this,this.f,d);this.u()};k.Vf=function(a,b,c){if(a){kd(this,c,a,0);this.B||(this.B=[]);c=this.B;a=sd(c,a);c[a++]=c[0]+b;var d;b=1;for(d=this.a;b<d;++b)c[a++]=c[b];c.length=a}else jd(this,"XY",null);this.u()};k.km=function(a){this.B[this.a]=this.B[0]+a;this.u()};function Xt(a,b,c){for(var d=[],e=a(0),f=a(1),g=b(e),h=b(f),l=[f,e],m=[h,g],n=[1,0],p={},q=1E5,r,u,x,v,D;0<--q&&0<n.length;)x=n.pop(),e=l.pop(),g=m.pop(),f=x.toString(),f in p||(d.push(g[0],g[1]),p[f]=!0),v=n.pop(),f=l.pop(),h=m.pop(),D=(x+v)/2,r=a(D),u=b(r),ua(u[0],u[1],g[0],g[1],h[0],h[1])<c?(d.push(h[0],h[1]),f=v.toString(),p[f]=!0):(n.push(v,D,D,x),m.push(h,u,u,g),l.push(f,r,r,e));return d}function Yt(a,b,c,d,e){var f=yc("EPSG:4326");return Xt(function(d){return[a,b+(c-b)*d]},Pc(f,d),e)}
+function Zt(a,b,c,d,e){var f=yc("EPSG:4326");return Xt(function(d){return[b+(c-b)*d,a]},Pc(f,d),e)};function $t(a){a=a||{};this.c=this.o=null;this.g=this.i=Infinity;this.f=this.l=-Infinity;this.A=this.U=Infinity;this.D=this.C=-Infinity;this.Ba=void 0!==a.targetSize?a.targetSize:100;this.R=void 0!==a.maxLines?a.maxLines:100;this.b=[];this.a=[];this.ya=void 0!==a.strokeStyle?a.strokeStyle:au;this.v=this.j=void 0;this.s=null;this.setMap(void 0!==a.map?a.map:null)}var au=new oj({color:"rgba(0,0,0,0.2)"}),bu=[90,45,30,20,10,5,2,1,.5,.2,.1,.05,.01,.005,.002,.001];
+function cu(a,b,c,d,e,f,g){var h=g;b=Yt(b,c,d,a.c,e);h=void 0!==a.b[h]?a.b[h]:new R(null);h.ba("XY",b);nc(h.H(),f)&&(a.b[g++]=h);return g}function du(a,b,c,d,e){var f=e;b=Zt(b,a.f,a.g,a.c,c);f=void 0!==a.a[f]?a.a[f]:new R(null);f.ba("XY",b);nc(f.H(),d)&&(a.a[e++]=f);return e}k=$t.prototype;k.Pl=function(){return this.o};k.ik=function(){return this.b};k.qk=function(){return this.a};
+k.Rg=function(a){var b=a.vectorContext,c=a.frameState,d=c.extent;a=c.viewState;var e=a.center,f=a.projection,g=a.resolution;a=c.pixelRatio;a=g*g/(4*a*a);if(!this.c||!Oc(this.c,f)){var h=yc("EPSG:4326"),l=f.H(),m=f.i,n=Sc(m,h,f),p=m[2],q=m[1],r=m[0],u=n[3],x=n[2],v=n[1],n=n[0];this.i=m[3];this.g=p;this.l=q;this.f=r;this.U=u;this.A=x;this.C=v;this.D=n;this.j=Pc(h,f);this.v=Pc(f,h);this.s=this.v(kc(l));this.c=f}f.a&&(f=f.H(),h=ic(f),c=c.focus[0],c<f[0]||c>f[2])&&(c=h*Math.ceil((f[0]-c)/h),d=[d[0]+c,
+d[1],d[2]+c,d[3]]);c=this.s[0];f=this.s[1];h=-1;m=Math.pow(this.Ba*g,2);p=[];q=[];g=0;for(l=bu.length;g<l;++g){r=bu[g]/2;p[0]=c-r;p[1]=f-r;q[0]=c+r;q[1]=f+r;this.j(p,p);this.j(q,q);r=Math.pow(q[0]-p[0],2)+Math.pow(q[1]-p[1],2);if(r<=m)break;h=bu[g]}g=h;if(-1==g)this.b.length=this.a.length=0;else{c=this.v(e);e=c[0];c=c[1];f=this.R;h=[Math.max(d[0],this.D),Math.max(d[1],this.C),Math.min(d[2],this.A),Math.min(d[3],this.U)];h=Sc(h,this.c,"EPSG:4326");m=h[3];q=h[1];e=Math.floor(e/g)*g;p=sa(e,this.f,this.g);
+l=cu(this,p,q,m,a,d,0);for(h=0;p!=this.f&&h++<f;)p=Math.max(p-g,this.f),l=cu(this,p,q,m,a,d,l);p=sa(e,this.f,this.g);for(h=0;p!=this.g&&h++<f;)p=Math.min(p+g,this.g),l=cu(this,p,q,m,a,d,l);this.b.length=l;c=Math.floor(c/g)*g;e=sa(c,this.l,this.i);l=du(this,e,a,d,0);for(h=0;e!=this.l&&h++<f;)e=Math.max(e-g,this.l),l=du(this,e,a,d,l);e=sa(c,this.l,this.i);for(h=0;e!=this.i&&h++<f;)e=Math.min(e+g,this.i),l=du(this,e,a,d,l);this.a.length=l}b.Sb(null,this.ya);a=0;for(e=this.b.length;a<e;++a)g=this.b[a],
+b.hd(g,null);a=0;for(e=this.a.length;a<e;++a)g=this.a[a],b.hd(g,null)};k.setMap=function(a){this.o&&(this.o.J("postcompose",this.Rg,this),this.o.render());a&&(a.I("postcompose",this.Rg,this),a.render());this.o=a};function eu(a,b,c,d,e,f,g){oh.call(this,a,b,c,0,d);this.j=e;this.g=new Image;null!==f&&(this.g.crossOrigin=f);this.i={};this.c=null;this.state=0;this.o=g}y(eu,oh);eu.prototype.a=function(a){if(void 0!==a){var b;a=w(a);if(a in this.i)return this.i[a];Ha(this.i)?b=this.g:b=this.g.cloneNode(!1);return this.i[a]=b}return this.g};eu.prototype.s=function(){this.state=3;this.c.forEach(Ka);this.c=null;ph(this)};
+eu.prototype.v=function(){void 0===this.resolution&&(this.resolution=jc(this.extent)/this.g.height);this.state=2;this.c.forEach(Ka);this.c=null;ph(this)};eu.prototype.load=function(){if(0==this.state||3==this.state)this.state=1,ph(this),this.c=[Pa(this.g,"error",this.s,this),Pa(this.g,"load",this.v,this)],this.o(this,this.j)};function fu(a,b,c,d,e){df.call(this,a,b);this.s=c;this.g=new Image;null!==d&&(this.g.crossOrigin=d);this.c={};this.j=null;this.v=e}y(fu,df);k=fu.prototype;k.ka=function(){1==this.state&&gu(this);this.a&&Ta(this.a);this.state=5;ef(this);df.prototype.ka.call(this)};k.$a=function(a){if(void 0!==a){var b=w(a);if(b in this.c)return this.c[b];a=Ha(this.c)?this.g:this.g.cloneNode(!1);return this.c[b]=a}return this.g};k.ib=function(){return this.s};k.Ql=function(){this.state=3;gu(this);ef(this)};
+k.Rl=function(){this.state=this.g.naturalWidth&&this.g.naturalHeight?2:4;gu(this);ef(this)};k.load=function(){if(0==this.state||3==this.state)this.state=1,ef(this),this.j=[Pa(this.g,"error",this.Ql,this),Pa(this.g,"load",this.Rl,this)],this.v(this,this.s)};function gu(a){a.j.forEach(Ka);a.j=null};function hu(a){a=a?a:{};Vh.call(this,{handleEvent:qc});this.c=a.formatConstructors?a.formatConstructors:[];this.j=a.projection?yc(a.projection):null;this.a=null;this.target=a.target?a.target:null}y(hu,Vh);function iu(a){a=a.dataTransfer.files;var b,c,d;b=0;for(c=a.length;b<c;++b){d=a.item(b);var e=new FileReader;e.addEventListener("load",this.o.bind(this,d));e.readAsText(d)}}function ju(a){a.stopPropagation();a.preventDefault();a.dataTransfer.dropEffect="copy"}
+hu.prototype.o=function(a,b){var c=b.target.result,d=this.v,e=this.j;e||(e=d.aa().l);var d=this.c,f=[],g,h;g=0;for(h=d.length;g<h;++g){var l=new d[g];var m={featureProjection:e};try{f=l.Fa(c,m)}catch(n){f=null}if(f&&0<f.length)break}this.b(new ku(lu,this,a,f,e))};hu.prototype.setMap=function(a){this.a&&(this.a.forEach(Ka),this.a=null);Vh.prototype.setMap.call(this,a);a&&(a=this.target?this.target:a.a,this.a=[B(a,"drop",iu,this),B(a,"dragenter",ju,this),B(a,"dragover",ju,this),B(a,"drop",ju,this)])};
+var lu="addfeatures";function ku(a,b,c,d,e){Wa.call(this,a,b);this.features=d;this.file=c;this.projection=e}y(ku,Wa);function mu(a){a=a?a:{};ji.call(this,{handleDownEvent:nu,handleDragEvent:ou,handleUpEvent:pu});this.s=a.condition?a.condition:fi;this.a=this.c=void 0;this.j=0;this.A=void 0!==a.duration?a.duration:400}y(mu,ji);
+function ou(a){if(hi(a)){var b=a.map,c=b.Za(),d=a.pixel;a=d[0]-c[0]/2;d=c[1]/2-d[1];c=Math.atan2(d,a);a=Math.sqrt(a*a+d*d);d=b.aa();b.render();if(void 0!==this.c){var e=c-this.c;Wh(b,d,d.La()-e)}this.c=c;void 0!==this.a&&(c=this.a*(d.$()/a),Yh(b,d,c));void 0!==this.a&&(this.j=this.a/a);this.a=a}}
+function pu(a){if(!hi(a))return!0;a=a.map;var b=a.aa();Xd(b,-1);var c=this.j-1,d=b.La(),d=b.constrainRotation(d,0);Wh(a,b,d,void 0,void 0);var d=b.$(),e=this.A,d=b.constrainResolution(d,0,c);Yh(a,b,d,void 0,e);this.j=0;return!1}function nu(a){return hi(a)&&this.s(a)?(Xd(a.map.aa(),1),this.a=this.c=void 0,!0):!1};function qu(a,b){Wa.call(this,a);this.feature=b}y(qu,Wa);
+function ru(a){ji.call(this,{handleDownEvent:su,handleEvent:tu,handleUpEvent:uu});this.za=null;this.S=!1;this.Hc=a.source?a.source:null;this.qb=a.features?a.features:null;this.Cj=a.snapTolerance?a.snapTolerance:12;this.Y=a.type;this.c=vu(this.Y);this.Sa=a.minPoints?a.minPoints:this.c===wu?3:2;this.Aa=a.maxPoints?a.maxPoints:Infinity;this.Ne=a.finishCondition?a.finishCondition:qc;var b=a.geometryFunction;if(!b)if("Circle"===this.Y)b=function(a,b){var c=b?b:new Vt([NaN,NaN]);c.Vf(a[0],Math.sqrt(Hb(a[0],
+a[1])));return c};else{var c,b=this.c;b===xu?c=C:b===yu?c=R:b===wu&&(c=E);b=function(a,b){var f=b;f?f.pa(a):f=new c(a);return f}}this.D=b;this.T=this.A=this.a=this.R=this.j=this.s=null;this.Fj=a.clickTolerance?a.clickTolerance*a.clickTolerance:36;this.qa=new G({source:new P({useSpatialIndex:!1,wrapX:a.wrapX?a.wrapX:!1}),style:a.style?a.style:zu()});this.Hb=a.geometryName;this.Bj=a.condition?a.condition:ei;this.ta=a.freehandCondition?a.freehandCondition:fi;B(this,gb("active"),this.yi,this)}y(ru,ji);
+function zu(){var a=wj();return function(b){return a[b.W().X()]}}k=ru.prototype;k.setMap=function(a){ji.prototype.setMap.call(this,a);this.yi()};function tu(a){this.c!==yu&&this.c!==wu||!this.ta(a)||(this.S=!0);var b=!this.S;this.S&&a.type===gh?(Au(this,a),b=!1):a.type===fh?b=Bu(this,a):a.type===$g&&(b=!1);return ki.call(this,a)&&b}function su(a){return this.Bj(a)?(this.za=a.pixel,!0):this.S?(this.za=a.pixel,this.s||Cu(this,a),!0):!1}
+function uu(a){this.S=!1;var b=this.za,c=a.pixel,d=b[0]-c[0],b=b[1]-c[1],c=!0;d*d+b*b<=this.Fj&&(Bu(this,a),this.s?this.c===Du?this.jd():Eu(this,a)?this.Ne(a)&&this.jd():Au(this,a):(Cu(this,a),this.c===xu&&this.jd()),c=!1);return c}
+function Bu(a,b){if(a.s){var c=b.coordinate,d=a.j.W(),e;a.c===xu?e=a.a:a.c===wu?(e=a.a[0],e=e[e.length-1],Eu(a,b)&&(c=a.s.slice())):(e=a.a,e=e[e.length-1]);e[0]=c[0];e[1]=c[1];a.D(a.a,d);a.R&&a.R.W().pa(c);d instanceof E&&a.c!==wu?(a.A||(a.A=new Ik(new R(null))),d=d.Hg(0),c=a.A.W(),c.ba(d.f,d.la())):a.T&&(c=a.A.W(),c.pa(a.T));Fu(a)}else c=b.coordinate.slice(),a.R?a.R.W().pa(c):(a.R=new Ik(new C(c)),Fu(a));return!0}
+function Eu(a,b){var c=!1;if(a.j){var d=!1,e=[a.s];a.c===yu?d=a.a.length>a.Sa:a.c===wu&&(d=a.a[0].length>a.Sa,e=[a.a[0][0],a.a[0][a.a[0].length-2]]);if(d)for(var d=b.map,f=0,g=e.length;f<g;f++){var h=e[f],l=d.Ga(h),m=b.pixel,c=m[0]-l[0],l=m[1]-l[1],m=a.S&&a.ta(b)?1:a.Cj;if(c=Math.sqrt(c*c+l*l)<=m){a.s=h;break}}}return c}
+function Cu(a,b){var c=b.coordinate;a.s=c;a.c===xu?a.a=c.slice():a.c===wu?(a.a=[[c.slice(),c.slice()]],a.T=a.a[0]):(a.a=[c.slice(),c.slice()],a.c===Du&&(a.T=a.a));a.T&&(a.A=new Ik(new R(a.T)));c=a.D(a.a);a.j=new Ik;a.Hb&&a.j.Ec(a.Hb);a.j.Ua(c);Fu(a);a.b(new qu("drawstart",a.j))}
+function Au(a,b){var c=b.coordinate,d=a.j.W(),e,f;if(a.c===yu)a.s=c.slice(),f=a.a,f.push(c.slice()),e=f.length>a.Aa,a.D(f,d);else if(a.c===wu){f=a.a[0];f.push(c.slice());if(e=f.length>a.Aa)a.s=f[0];a.D(a.a,d)}Fu(a);e&&a.jd()}k.Qo=function(){var a=this.j.W(),b,c;this.c===yu?(b=this.a,b.splice(-2,1),this.D(b,a)):this.c===wu&&(b=this.a[0],b.splice(-2,1),c=this.A.W(),c.pa(b),this.D(this.a,a));0===b.length&&(this.s=null);Fu(this)};
+k.jd=function(){var a=Gu(this),b=this.a,c=a.W();this.c===yu?(b.pop(),this.D(b,c)):this.c===wu&&(b[0].pop(),b[0].push(b[0][0]),this.D(b,c));"MultiPoint"===this.Y?a.Ua(new Bn([b])):"MultiLineString"===this.Y?a.Ua(new S([b])):"MultiPolygon"===this.Y&&a.Ua(new T([b]));this.b(new qu("drawend",a));this.qb&&this.qb.push(a);this.Hc&&this.Hc.rb(a)};function Gu(a){a.s=null;var b=a.j;b&&(a.j=null,a.R=null,a.A=null,a.qa.ha().clear(!0));return b}
+k.rm=function(a){var b=a.W();this.j=a;this.a=b.Z();a=this.a[this.a.length-1];this.s=a.slice();this.a.push(a.slice());Fu(this);this.b(new qu("drawstart",this.j))};k.Gc=rc;function Fu(a){var b=[];a.j&&b.push(a.j);a.A&&b.push(a.A);a.R&&b.push(a.R);a=a.qa.ha();a.clear(!0);a.Jc(b)}k.yi=function(){var a=this.v,b=this.f();a&&b||Gu(this);this.qa.setMap(b?a:null)};
+function vu(a){var b;"Point"===a||"MultiPoint"===a?b=xu:"LineString"===a||"MultiLineString"===a?b=yu:"Polygon"===a||"MultiPolygon"===a?b=wu:"Circle"===a&&(b=Du);return b}var xu="Point",yu="LineString",wu="Polygon",Du="Circle";function Hu(a,b,c){Wa.call(this,a);this.features=b;this.mapBrowserEvent=c}y(Hu,Wa);
+function Iu(a){ji.call(this,{handleDownEvent:Ju,handleDragEvent:Ku,handleEvent:Lu,handleUpEvent:Mu});this.Hb=a.condition?a.condition:ii;this.Sa=function(a){return ei(a)&&di(a)};this.qb=a.deleteCondition?a.deleteCondition:this.Sa;this.Aa=this.c=null;this.qa=[0,0];this.D=this.T=!1;this.a=new kl;this.R=void 0!==a.pixelTolerance?a.pixelTolerance:10;this.s=this.ta=!1;this.j=[];this.S=new G({source:new P({useSpatialIndex:!1,wrapX:!!a.wrapX}),style:a.style?a.style:Nu(),updateWhileAnimating:!0,updateWhileInteracting:!0});
+this.za={Point:this.ym,LineString:this.kh,LinearRing:this.kh,Polygon:this.zm,MultiPoint:this.wm,MultiLineString:this.vm,MultiPolygon:this.xm,GeometryCollection:this.um};this.A=a.features;this.A.forEach(this.xf,this);B(this.A,"add",this.sm,this);B(this.A,"remove",this.tm,this);this.Y=null}y(Iu,ji);k=Iu.prototype;k.xf=function(a){var b=a.W();b.X()in this.za&&this.za[b.X()].call(this,a,b);(b=this.v)&&Ou(this,this.qa,b);B(a,"change",this.jh,this)};
+function Pu(a,b){a.D||(a.D=!0,a.b(new Hu("modifystart",a.A,b)))}function Qu(a,b){Ru(a,b);a.c&&0===a.A.dc()&&(a.S.ha().nb(a.c),a.c=null);Qa(b,"change",a.jh,a)}function Ru(a,b){var c=a.a,d=[];c.forEach(function(a){b===a.feature&&d.push(a)});for(var e=d.length-1;0<=e;--e)c.remove(d[e])}k.setMap=function(a){this.S.setMap(a);ji.prototype.setMap.call(this,a)};k.sm=function(a){this.xf(a.element)};k.jh=function(a){this.s||(a=a.target,Qu(this,a),this.xf(a))};k.tm=function(a){Qu(this,a.element)};
+k.ym=function(a,b){var c=b.Z(),c={feature:a,geometry:b,na:[c,c]};this.a.Ca(b.H(),c)};k.wm=function(a,b){var c=b.Z(),d,e,f;e=0;for(f=c.length;e<f;++e)d=c[e],d={feature:a,geometry:b,depth:[e],index:e,na:[d,d]},this.a.Ca(b.H(),d)};k.kh=function(a,b){var c=b.Z(),d,e,f,g;d=0;for(e=c.length-1;d<e;++d)f=c.slice(d,d+2),g={feature:a,geometry:b,index:d,na:f},this.a.Ca(Kb(f),g)};
+k.vm=function(a,b){var c=b.Z(),d,e,f,g,h,l,m;g=0;for(h=c.length;g<h;++g)for(d=c[g],e=0,f=d.length-1;e<f;++e)l=d.slice(e,e+2),m={feature:a,geometry:b,depth:[g],index:e,na:l},this.a.Ca(Kb(l),m)};k.zm=function(a,b){var c=b.Z(),d,e,f,g,h,l,m;g=0;for(h=c.length;g<h;++g)for(d=c[g],e=0,f=d.length-1;e<f;++e)l=d.slice(e,e+2),m={feature:a,geometry:b,depth:[g],index:e,na:l},this.a.Ca(Kb(l),m)};
+k.xm=function(a,b){var c=b.Z(),d,e,f,g,h,l,m,n,p,q;l=0;for(m=c.length;l<m;++l)for(n=c[l],g=0,h=n.length;g<h;++g)for(d=n[g],e=0,f=d.length-1;e<f;++e)p=d.slice(e,e+2),q={feature:a,geometry:b,depth:[g,l],index:e,na:p},this.a.Ca(Kb(p),q)};k.um=function(a,b){var c,d=b.c;for(c=0;c<d.length;++c)this.za[d[c].X()].call(this,a,d[c])};function Su(a,b){var c=a.c;c?c.W().pa(b):(c=new Ik(new C(b)),a.c=c,a.S.ha().rb(c))}function Tu(a,b){return a.index-b.index}
+function Ju(a){if(!this.Hb(a))return!1;Ou(this,a.pixel,a.map);this.j.length=0;this.D=!1;var b=this.c;if(b){var c=[],b=b.W().Z(),d=Kb([b]),d=nl(this.a,d),e={};d.sort(Tu);for(var f=0,g=d.length;f<g;++f){var h=d[f],l=h.na,m=w(h.feature),n=h.depth;n&&(m+="-"+n.join("-"));e[m]||(e[m]=Array(2));if(Fb(l[0],b)&&!e[m][0])this.j.push([h,0]),e[m][0]=h;else if(Fb(l[1],b)&&!e[m][1]){if("LineString"!==h.geometry.X()&&"MultiLineString"!==h.geometry.X()||!e[m][0]||0!==e[m][0].index)this.j.push([h,1]),e[m][1]=h}else w(l)in
+this.Aa&&!e[m][0]&&!e[m][1]&&c.push([h,b])}c.length&&Pu(this,a);for(a=c.length-1;0<=a;--a)this.nl.apply(this,c[a])}return!!this.c}
+function Ku(a){this.T=!1;Pu(this,a);a=a.coordinate;for(var b=0,c=this.j.length;b<c;++b){for(var d=this.j[b],e=d[0],f=e.depth,g=e.geometry,h=g.Z(),l=e.na,d=d[1];a.length<g.va();)a.push(0);switch(g.X()){case "Point":h=a;l[0]=l[1]=a;break;case "MultiPoint":h[e.index]=a;l[0]=l[1]=a;break;case "LineString":h[e.index+d]=a;l[d]=a;break;case "MultiLineString":h[f[0]][e.index+d]=a;l[d]=a;break;case "Polygon":h[f[0]][e.index+d]=a;l[d]=a;break;case "MultiPolygon":h[f[1]][f[0]][e.index+d]=a,l[d]=a}e=g;this.s=
+!0;e.pa(h);this.s=!1}Su(this,a)}function Mu(a){for(var b,c=this.j.length-1;0<=c;--c)b=this.j[c][0],ll(this.a,Kb(b.na),b);this.D&&(this.b(new Hu("modifyend",this.A,a)),this.D=!1);return!1}function Lu(a){if(!(a instanceof Wg))return!0;this.Y=a;var b;Sd(a.map.aa())[1]||a.type!=fh||this.C||(this.qa=a.pixel,Ou(this,a.pixel,a.map));this.c&&this.qb(a)&&(a.type==ah&&this.T?b=!0:(this.c.W(),b=this.ai()));a.type==ah&&(this.T=!1);return ki.call(this,a)&&!b}
+function Ou(a,b,c){function d(a,b){return Ib(e,a.na)-Ib(e,b.na)}var e=c.Ma(b),f=c.Ma([b[0]-a.R,b[1]+a.R]),g=c.Ma([b[0]+a.R,b[1]-a.R]),f=Kb([f,g]),f=nl(a.a,f);if(0<f.length){f.sort(d);var g=f[0].na,h=Cb(e,g),l=c.Ga(h);if(Math.sqrt(Hb(b,l))<=a.R){b=c.Ga(g[0]);c=c.Ga(g[1]);b=Hb(l,b);c=Hb(l,c);a.ta=Math.sqrt(Math.min(b,c))<=a.R;a.ta&&(h=b>c?g[1]:g[0]);Su(a,h);c={};c[w(g)]=!0;b=1;for(l=f.length;b<l;++b)if(h=f[b].na,Fb(g[0],h[0])&&Fb(g[1],h[1])||Fb(g[0],h[1])&&Fb(g[1],h[0]))c[w(h)]=!0;else break;a.Aa=c;
+return}}a.c&&(a.S.ha().nb(a.c),a.c=null)}
+k.nl=function(a,b){for(var c=a.na,d=a.feature,e=a.geometry,f=a.depth,g=a.index,h;b.length<e.va();)b.push(0);switch(e.X()){case "MultiLineString":h=e.Z();h[f[0]].splice(g+1,0,b);break;case "Polygon":h=e.Z();h[f[0]].splice(g+1,0,b);break;case "MultiPolygon":h=e.Z();h[f[1]][f[0]].splice(g+1,0,b);break;case "LineString":h=e.Z();h.splice(g+1,0,b);break;default:return}this.s=!0;e.pa(h);this.s=!1;h=this.a;h.remove(a);Uu(this,e,g,f,1);var l={na:[c[0],b],feature:d,geometry:e,depth:f,index:g};h.Ca(Kb(l.na),
+l);this.j.push([l,1]);c={na:[b,c[1]],feature:d,geometry:e,depth:f,index:g+1};h.Ca(Kb(c.na),c);this.j.push([c,0]);this.T=!0};
+k.ai=function(){var a=!1;if(this.Y&&this.Y.type!=gh){var b=this.Y;Pu(this,b);var c=this.j,a={},d,e,f,g,h,l,m,n,p;for(g=c.length-1;0<=g;--g)f=c[g],m=f[0],n=w(m.feature),m.depth&&(n+="-"+m.depth.join("-")),n in a||(a[n]={}),0===f[1]?(a[n].right=m,a[n].index=m.index):1==f[1]&&(a[n].left=m,a[n].index=m.index+1);for(n in a){l=a[n].right;g=a[n].left;f=a[n].index;h=f-1;m=void 0!==g?g:l;0>h&&(h=0);c=m.geometry;d=e=c.Z();p=!1;switch(c.X()){case "MultiLineString":2<e[m.depth[0]].length&&(e[m.depth[0]].splice(f,
+1),p=!0);break;case "LineString":2<e.length&&(e.splice(f,1),p=!0);break;case "MultiPolygon":d=d[m.depth[1]];case "Polygon":d=d[m.depth[0]],4<d.length&&(f==d.length-1&&(f=0),d.splice(f,1),p=!0,0===f&&(d.pop(),d.push(d[0]),h=d.length-1))}p&&(d=c,this.s=!0,d.pa(e),this.s=!1,e=[],void 0!==g&&(this.a.remove(g),e.push(g.na[0])),void 0!==l&&(this.a.remove(l),e.push(l.na[1])),void 0!==g&&void 0!==l&&(g={depth:m.depth,feature:m.feature,geometry:m.geometry,index:h,na:e},this.a.Ca(Kb(g.na),g)),Uu(this,c,f,m.depth,
+-1),this.c&&(this.S.ha().nb(this.c),this.c=null))}a=!0;this.b(new Hu("modifyend",this.A,b));this.D=!1}return a};function Uu(a,b,c,d,e){ql(a.a,b.H(),function(a){a.geometry===b&&(void 0===d||void 0===a.depth||pb(a.depth,d))&&a.index>c&&(a.index+=e)})}function Nu(){var a=wj();return function(){return a.Point}};function Vu(a,b,c,d){Wa.call(this,a);this.selected=b;this.deselected=c;this.mapBrowserEvent=d}y(Vu,Wa);
+function Wu(a){Vh.call(this,{handleEvent:Xu});var b=a?a:{};this.C=b.condition?b.condition:di;this.A=b.addCondition?b.addCondition:rc;this.D=b.removeCondition?b.removeCondition:rc;this.R=b.toggleCondition?b.toggleCondition:fi;this.j=b.multi?b.multi:!1;this.o=b.filter?b.filter:qc;this.c=new G({source:new P({useSpatialIndex:!1,features:b.features,wrapX:b.wrapX}),style:b.style?b.style:Yu(),updateWhileAnimating:!0,updateWhileInteracting:!0});if(b.layers)if("function"===typeof b.layers)a=function(a){return b.layers(a)};
+else{var c=b.layers;a=function(a){return jb(c,a)}}else a=qc;this.s=a;this.a={};a=this.c.ha().c;B(a,"add",this.Am,this);B(a,"remove",this.Dm,this)}y(Wu,Vh);k=Wu.prototype;k.Bm=function(){return this.c.ha().c};k.Cm=function(a){a=w(a);return this.a[a]};
+function Xu(a){if(!this.C(a))return!0;var b=this.A(a),c=this.D(a),d=this.R(a),e=!b&&!c&&!d,f=a.map,g=this.c.ha().c,h=[],l=[];if(e)Fa(this.a),f.kd(a.pixel,function(a,b){if(this.o(a,b)){l.push(a);var c=w(a);this.a[c]=b;return!this.j}},this,this.s),0<l.length&&1==g.dc()&&g.item(0)==l[0]?l.length=0:(0!==g.dc()&&(h=Array.prototype.concat(g.a),g.clear()),g.qf(l));else{f.kd(a.pixel,function(a,e){if(this.o(a,e)){if(!b&&!d||jb(g.a,a))(c||d)&&jb(g.a,a)&&(h.push(a),f=w(a),delete this.a[f]);else{l.push(a);var f=
+w(a);this.a[f]=e}return!this.j}},this,this.s);for(e=h.length-1;0<=e;--e)g.remove(h[e]);g.qf(l)}(0<l.length||0<h.length)&&this.b(new Vu("select",l,h,a));return ci(a)}k.setMap=function(a){var b=this.v,c=this.c.ha().c;b&&c.forEach(b.wi,b);Vh.prototype.setMap.call(this,a);this.c.setMap(a);a&&c.forEach(a.ti,a)};function Yu(){var a=wj();mb(a.Polygon,a.LineString);mb(a.GeometryCollection,a.LineString);return function(b){return a[b.W().X()]}}k.Am=function(a){a=a.element;var b=this.v;b&&b.ti(a)};
+k.Dm=function(a){a=a.element;var b=this.v;b&&b.wi(a)};function Zu(a){ji.call(this,{handleEvent:$u,handleDownEvent:qc,handleUpEvent:av});a=a?a:{};this.s=a.source?a.source:null;this.qa=void 0!==a.vertex?a.vertex:!0;this.T=void 0!==a.edge?a.edge:!0;this.j=a.features?a.features:null;this.ta=[];this.D={};this.R={};this.Y={};this.A={};this.S=null;this.c=void 0!==a.pixelTolerance?a.pixelTolerance:10;this.Aa=bv.bind(this);this.a=new kl;this.za={Point:this.Jm,LineString:this.nh,LinearRing:this.nh,Polygon:this.Km,MultiPoint:this.Hm,MultiLineString:this.Gm,MultiPolygon:this.Im,
+GeometryCollection:this.Fm}}y(Zu,ji);k=Zu.prototype;k.rb=function(a,b){var c=void 0!==b?b:!0,d=w(a),e=a.W();if(e){var f=this.za[e.X()];f&&(this.Y[d]=e.H(Lb()),f.call(this,a,e),c&&(this.R[d]=B(e,"change",this.Kk.bind(this,a),this)))}c&&(this.D[d]=B(a,gb(a.a),this.Em,this))};k.Jj=function(a){this.rb(a)};k.Kj=function(a){this.nb(a)};k.lh=function(a){var b;a instanceof vl?b=a.feature:a instanceof ke&&(b=a.element);this.rb(b)};
+k.mh=function(a){var b;a instanceof vl?b=a.feature:a instanceof ke&&(b=a.element);this.nb(b)};k.Em=function(a){a=a.target;this.nb(a,!0);this.rb(a,!0)};k.Kk=function(a){if(this.C){var b=w(a);b in this.A||(this.A[b]=a)}else this.xi(a)};k.nb=function(a,b){var c=void 0!==b?b:!0,d=w(a),e=this.Y[d];if(e){var f=this.a,g=[];ql(f,e,function(b){a===b.feature&&g.push(b)});for(e=g.length-1;0<=e;--e)f.remove(g[e]);c&&(cb(this.R[d]),delete this.R[d])}c&&(cb(this.D[d]),delete this.D[d])};
+k.setMap=function(a){var b=this.v,c=this.ta,d;this.j?d=this.j:this.s&&(d=this.s.oe());b&&(c.forEach(cb),c.length=0,d.forEach(this.Kj,this));ji.prototype.setMap.call(this,a);a&&(this.j?c.push(B(this.j,"add",this.lh,this),B(this.j,"remove",this.mh,this)):this.s&&c.push(B(this.s,"addfeature",this.lh,this),B(this.s,"removefeature",this.mh,this)),d.forEach(this.Jj,this))};k.Gc=rc;k.xi=function(a){this.nb(a,!1);this.rb(a,!1)};
+k.Fm=function(a,b){var c,d=b.c;for(c=0;c<d.length;++c)this.za[d[c].X()].call(this,a,d[c])};k.nh=function(a,b){var c=b.Z(),d,e,f,g;d=0;for(e=c.length-1;d<e;++d)f=c.slice(d,d+2),g={feature:a,na:f},this.a.Ca(Kb(f),g)};k.Gm=function(a,b){var c=b.Z(),d,e,f,g,h,l,m;g=0;for(h=c.length;g<h;++g)for(d=c[g],e=0,f=d.length-1;e<f;++e)l=d.slice(e,e+2),m={feature:a,na:l},this.a.Ca(Kb(l),m)};k.Hm=function(a,b){var c=b.Z(),d,e,f;e=0;for(f=c.length;e<f;++e)d=c[e],d={feature:a,na:[d,d]},this.a.Ca(b.H(),d)};
+k.Im=function(a,b){var c=b.Z(),d,e,f,g,h,l,m,n,p,q;l=0;for(m=c.length;l<m;++l)for(n=c[l],g=0,h=n.length;g<h;++g)for(d=n[g],e=0,f=d.length-1;e<f;++e)p=d.slice(e,e+2),q={feature:a,na:p},this.a.Ca(Kb(p),q)};k.Jm=function(a,b){var c=b.Z(),c={feature:a,na:[c,c]};this.a.Ca(b.H(),c)};k.Km=function(a,b){var c=b.Z(),d,e,f,g,h,l,m;g=0;for(h=c.length;g<h;++g)for(d=c[g],e=0,f=d.length-1;e<f;++e)l=d.slice(e,e+2),m={feature:a,na:l},this.a.Ca(Kb(l),m)};
+function $u(a){var b,c,d=a.pixel,e=a.coordinate;b=a.map;var f=b.Ma([d[0]-this.c,d[1]+this.c]);c=b.Ma([d[0]+this.c,d[1]-this.c]);var f=Kb([f,c]),g=nl(this.a,f),h,f=!1,l=null;c=null;if(0<g.length){this.S=e;g.sort(this.Aa);g=g[0].na;if(this.qa&&!this.T){if(e=b.Ga(g[0]),h=b.Ga(g[1]),e=Hb(d,e),d=Hb(d,h),h=Math.sqrt(Math.min(e,d)),h=h<=this.c)f=!0,l=e>d?g[1]:g[0],c=b.Ga(l)}else this.T&&(l=Cb(e,g),c=b.Ga(l),Math.sqrt(Hb(d,c))<=this.c&&(f=!0,this.qa&&(e=b.Ga(g[0]),h=b.Ga(g[1]),e=Hb(c,e),d=Hb(c,h),h=Math.sqrt(Math.min(e,
+d)),h=h<=this.c)))&&(l=e>d?g[1]:g[0],c=b.Ga(l));f&&(c=[Math.round(c[0]),Math.round(c[1])])}b=l;f&&(a.coordinate=b.slice(0,2),a.pixel=c);return ki.call(this,a)}function av(){var a=Ga(this.A);a.length&&(a.forEach(this.xi,this),this.A={});return!1}function bv(a,b){return Ib(this.S,a.na)-Ib(this.S,b.na)};function cv(a,b,c){Wa.call(this,a);this.features=b;this.coordinate=c}y(cv,Wa);function dv(a){ji.call(this,{handleDownEvent:ev,handleDragEvent:fv,handleMoveEvent:gv,handleUpEvent:hv});this.s=void 0;this.a=null;this.c=void 0!==a.features?a.features:null;var b;if(a.layers)if("function"===typeof a.layers)b=function(b){return a.layers(b)};else{var c=a.layers;b=function(a){return jb(c,a)}}else b=qc;this.A=b;this.j=null}y(dv,ji);
+function ev(a){this.j=iv(this,a.pixel,a.map);return!this.a&&this.j?(this.a=a.coordinate,gv.call(this,a),this.b(new cv("translatestart",this.c,a.coordinate)),!0):!1}function hv(a){return this.a?(this.a=null,gv.call(this,a),this.b(new cv("translateend",this.c,a.coordinate)),!0):!1}
+function fv(a){if(this.a){a=a.coordinate;var b=a[0]-this.a[0],c=a[1]-this.a[1];if(this.c)this.c.forEach(function(a){var d=a.W();d.Sc(b,c);a.Ua(d)});else if(this.j){var d=this.j.W();d.Sc(b,c);this.j.Ua(d)}this.a=a;this.b(new cv("translating",this.c,a))}}
+function gv(a){var b=a.map.yc();if(a=a.map.kd(a.pixel,function(a){return a})){var c=!1;this.c&&jb(this.c.a,a)&&(c=!0);this.s=b.style.cursor;b.style.cursor=this.a?"-webkit-grabbing":c?"-webkit-grab":"pointer";b.style.cursor=this.a?c?"grab":"pointer":"grabbing"}else b.style.cursor=void 0!==this.s?this.s:"",this.s=void 0}function iv(a,b,c){var d=null;b=c.kd(b,function(a){return a},a,a.A);a.c&&jb(a.c.a,b)&&(d=b);return d};function V(a){a=a?a:{};var b=Ea({},a);delete b.gradient;delete b.radius;delete b.blur;delete b.shadow;delete b.weight;G.call(this,b);this.f=null;this.ia=void 0!==a.shadow?a.shadow:250;this.Y=void 0;this.c=null;B(this,gb("gradient"),this.Lk,this);this.ii(a.gradient?a.gradient:jv);this.di(void 0!==a.blur?a.blur:15);this.qh(void 0!==a.radius?a.radius:8);B(this,gb("blur"),this.lf,this);B(this,gb("radius"),this.lf,this);this.lf();var c=a.weight?a.weight:"weight",d;"string"===typeof c?d=function(a){return a.get(c)}:
+d=c;this.l(function(a){a=d(a);a=void 0!==a?sa(a,0,1):1;var b=255*a|0,c=this.c[b];c||(c=[new rj({image:new Dh({opacity:a,src:this.Y})})],this.c[b]=c);return c}.bind(this));this.set("renderOrder",null);B(this,"render",this.dl,this)}y(V,G);var jv=["#00f","#0ff","#0f0","#ff0","#f00"];k=V.prototype;k.zg=function(){return this.get("blur")};k.Gg=function(){return this.get("gradient")};k.ph=function(){return this.get("radius")};
+k.Lk=function(){for(var a=this.Gg(),b=Oe(1,256),c=b.createLinearGradient(0,0,1,256),d=1/(a.length-1),e=0,f=a.length;e<f;++e)c.addColorStop(e*d,a[e]);b.fillStyle=c;b.fillRect(0,0,1,256);this.f=b.getImageData(0,0,1,256).data};k.lf=function(){var a=this.ph(),b=this.zg(),c=a+b+1,d=2*c,d=Oe(d,d);d.shadowOffsetX=d.shadowOffsetY=this.ia;d.shadowBlur=b;d.shadowColor="#000";d.beginPath();b=c-this.ia;d.arc(b,b,a,0,2*Math.PI,!0);d.fill();this.Y=d.canvas.toDataURL();this.c=Array(256);this.u()};
+k.dl=function(a){a=a.context;var b=a.canvas,b=a.getImageData(0,0,b.width,b.height),c=b.data,d,e,f;d=0;for(e=c.length;d<e;d+=4)if(f=4*c[d+3])c[d]=this.f[f],c[d+1]=this.f[f+1],c[d+2]=this.f[f+2];a.putImageData(b,0,0)};k.di=function(a){this.set("blur",a)};k.ii=function(a){this.set("gradient",a)};k.qh=function(a){this.set("radius",a)};function kv(a,b,c,d){function e(){delete pa[g];f.parentNode.removeChild(f)}var f=pa.document.createElement("script"),g="olc_"+w(b);f.async=!0;f.src=a+(-1==a.indexOf("?")?"?":"&")+(d||"callback")+"="+g;var h=pa.setTimeout(function(){e();c&&c()},1E4);pa[g]=function(a){pa.clearTimeout(h);e();b(a)};pa.document.getElementsByTagName("head")[0].appendChild(f)};function lv(a,b,c,d,e,f,g,h,l,m,n){df.call(this,e,0);this.R=void 0!==n?n:!1;this.D=g;this.C=h;this.l=null;this.c={};this.j=b;this.v=d;this.U=f?f:e;this.g=[];this.Wc=null;this.s=0;f=d.Ea(this.U);h=this.v.H();e=this.j.H();f=h?mc(f,h):f;if(0===gc(f))this.state=4;else if((h=a.H())&&(e?e=mc(e,h):e=h),d=d.$(this.U[0]),d=tk(a,c,kc(f),d),!isFinite(d)||0>=d)this.state=4;else if(this.A=new wk(a,c,f,e,d*(void 0!==m?m:.5)),0===this.A.f.length)this.state=4;else if(this.s=b.Lb(d),c=yk(this.A),e&&(a.a?(c[1]=sa(c[1],
+e[1],e[3]),c[3]=sa(c[3],e[1],e[3])):c=mc(c,e)),gc(c))if(a=pf(b,c,this.s),100>(a.ea-a.ca+1)*(a.ga-a.fa+1)){for(b=a.ca;b<=a.ea;b++)for(c=a.fa;c<=a.ga;c++)(m=l(this.s,b,c,g))&&this.g.push(m);0===this.g.length&&(this.state=4)}else this.state=3;else this.state=4}y(lv,df);lv.prototype.ka=function(){1==this.state&&(this.Wc.forEach(Ka),this.Wc=null);df.prototype.ka.call(this)};
+lv.prototype.$a=function(a){if(void 0!==a){var b=w(a);if(b in this.c)return this.c[b];a=Ha(this.c)?this.l:this.l.cloneNode(!1);return this.c[b]=a}return this.l};
+lv.prototype.zd=function(){var a=[];this.g.forEach(function(b){b&&2==b.V()&&a.push({extent:this.j.Ea(b.ma),image:b.$a()})},this);this.g.length=0;if(0===a.length)this.state=3;else{var b=this.U[0],c=this.v.Ja(b),d=ea(c)?c:c[0],c=ea(c)?c:c[1],b=this.v.$(b),e=this.j.$(this.s),f=this.v.Ea(this.U);this.l=vk(d,c,this.D,e,this.j.H(),b,f,this.A,a,this.C,this.R);this.state=2}ef(this)};
+lv.prototype.load=function(){if(0==this.state){this.state=1;ef(this);var a=0;this.Wc=[];this.g.forEach(function(b){var c=b.V();if(0==c||1==c){a++;var d;d=B(b,"change",function(){var c=b.V();if(2==c||3==c||4==c)Ka(d),a--,0===a&&(this.Wc.forEach(Ka),this.Wc=null,this.zd())},this);this.Wc.push(d)}},this);this.g.forEach(function(a){0==a.V()&&a.load()});0===a&&pa.setTimeout(this.zd.bind(this),0)}};function W(a){Jl.call(this,{attributions:a.attributions,cacheSize:a.cacheSize,extent:a.extent,logo:a.logo,opaque:a.opaque,projection:a.projection,state:a.state,tileGrid:a.tileGrid,tileLoadFunction:a.tileLoadFunction?a.tileLoadFunction:mv,tilePixelRatio:a.tilePixelRatio,tileUrlFunction:a.tileUrlFunction,url:a.url,urls:a.urls,wrapX:a.wrapX});this.crossOrigin=void 0!==a.crossOrigin?a.crossOrigin:null;this.tileClass=void 0!==a.tileClass?a.tileClass:fu;this.i={};this.s={};this.qa=a.reprojectionErrorThreshold;
+this.C=!1}y(W,Jl);k=W.prototype;k.Ah=function(){if(cf(this.a))return!0;for(var a in this.i)if(cf(this.i[a]))return!0;return!1};k.Lc=function(a,b){var c=this.pd(a);this.a.Lc(this.a==c?b:{});for(var d in this.i){var e=this.i[d];e.Lc(e==c?b:{})}};k.Ud=function(a){return this.f&&a&&!Oc(this.f,a)?0:this.gf()};k.gf=function(){return 0};k.jf=function(a){return this.f&&a&&!Oc(this.f,a)?!1:Jl.prototype.jf.call(this,a)};
+k.eb=function(a){var b=this.f;return!this.tileGrid||b&&!Oc(b,a)?(b=w(a).toString(),b in this.s||(this.s[b]=vf(a)),this.s[b]):this.tileGrid};k.pd=function(a){var b=this.f;if(!b||Oc(b,a))return this.a;a=w(a).toString();a in this.i||(this.i[a]=new bf);return this.i[a]};function nv(a,b,c,d,e,f,g){b=[b,c,d];e=(c=Cf(a,b,f))?a.tileUrlFunction(c,e,f):void 0;e=new a.tileClass(b,void 0!==e?0:4,void 0!==e?e:"",a.crossOrigin,a.tileLoadFunction);e.key=g;B(e,"change",a.Bh,a);return e}
+k.ac=function(a,b,c,d,e){if(this.f&&e&&!Oc(this.f,e)){var f=this.pd(e);b=[a,b,c];a=this.Eb.apply(this,b);if(Ze(f,a))return f.get(a);var g=this.f;c=this.eb(g);var h=this.eb(e),l=Cf(this,b,e);d=new lv(g,c,e,h,b,l,this.bc(d),this.gf(),function(a,b,c,d){return ov(this,a,b,c,d,g)}.bind(this),this.qa,this.C);f.set(a,d);return d}return ov(this,a,b,c,d,e)};
+function ov(a,b,c,d,e,f){var g,h=a.Eb(b,c,d),l=a.cc;if(Ze(a.a,h)){if(g=a.a.get(h),g.key!=l){var m=g;g.a&&g.a.key==l?(g=g.a,2==m.V()&&(g.a=m)):(g=nv(a,b,c,d,e,f,l),2==m.V()?g.a=m:m.a&&2==m.a.V()&&(g.a=m.a,m.a=null));g.a&&(g.a.a=null);a.a.replace(h,g)}}else g=nv(a,b,c,d,e,f,l),a.a.set(h,g);return g}k.zb=function(a){if(this.C!=a){this.C=a;for(var b in this.i)this.i[b].clear();this.u()}};k.Ab=function(a,b){var c=yc(a);c&&(c=w(c).toString(),c in this.s||(this.s[c]=b))};function mv(a,b){a.$a().src=b};function pv(a){W.call(this,{cacheSize:a.cacheSize,crossOrigin:"anonymous",opaque:!0,projection:yc("EPSG:3857"),reprojectionErrorThreshold:a.reprojectionErrorThreshold,state:"loading",tileLoadFunction:a.tileLoadFunction,wrapX:void 0!==a.wrapX?a.wrapX:!0});this.j=void 0!==a.culture?a.culture:"en-us";this.c=void 0!==a.maxZoom?a.maxZoom:-1;kv("https://dev.virtualearth.net/REST/v1/Imagery/Metadata/"+a.imagerySet+"?uriScheme=https&include=ImageryProviders&key="+a.key,this.v.bind(this),void 0,"jsonp")}
+y(pv,W);var qv=new je({html:'<a class="ol-attribution-bing-tos" href="http://www.microsoft.com/maps/product/terms.html">Terms of Use</a>'});
+pv.prototype.v=function(a){if(200!=a.statusCode||"OK"!=a.statusDescription||"ValidCredentials"!=a.authenticationResultCode||1!=a.resourceSets.length||1!=a.resourceSets[0].resources.length)lf(this,"error");else{var b=a.brandLogoUri;-1==b.indexOf("https")&&(b=b.replace("http","https"));var c=a.resourceSets[0].resources[0],d=-1==this.c?c.zoomMax:this.c;a=wf(this.f);var e=yf({extent:a,minZoom:c.zoomMin,maxZoom:d,tileSize:c.imageWidth==c.imageHeight?c.imageWidth:[c.imageWidth,c.imageHeight]});this.tileGrid=
+e;var f=this.j;this.tileUrlFunction=Gl(c.imageUrlSubdomains.map(function(a){var b=[0,0,0],d=c.imageUrl.replace("{subdomain}",a).replace("{culture}",f);return function(a){if(a)return $e(a[0],a[1],-a[2]-1,b),d.replace("{quadkey}",af(b))}}));if(c.imageryProviders){var g=Bc(yc("EPSG:4326"),this.f);a=c.imageryProviders.map(function(a){var b=a.attribution,c={};a.coverageAreas.forEach(function(a){var b=a.zoomMin,f=Math.min(a.zoomMax,d);a=a.bbox;a=pc([a[1],a[0],a[3],a[2]],g);var h,l;for(h=b;h<=f;++h)l=h.toString(),
+b=pf(e,a,h),l in c?c[l].push(b):c[l]=[b]});return new je({html:b,tileRanges:c})});a.push(qv);this.oa(a)}this.R=b;lf(this,"ready")}};function rv(a){a=a||{};var b=void 0!==a.projection?a.projection:"EPSG:3857",c=void 0!==a.tileGrid?a.tileGrid:yf({extent:wf(b),maxZoom:a.maxZoom,minZoom:a.minZoom,tileSize:a.tileSize});W.call(this,{attributions:a.attributions,cacheSize:a.cacheSize,crossOrigin:a.crossOrigin,logo:a.logo,opaque:a.opaque,projection:b,reprojectionErrorThreshold:a.reprojectionErrorThreshold,tileGrid:c,tileLoadFunction:a.tileLoadFunction,tilePixelRatio:a.tilePixelRatio,tileUrlFunction:a.tileUrlFunction,url:a.url,urls:a.urls,
+wrapX:void 0!==a.wrapX?a.wrapX:!0})}y(rv,W);function sv(a){this.v=a.account;this.A=a.map||"";this.c=a.config||{};this.j={};rv.call(this,{attributions:a.attributions,cacheSize:a.cacheSize,crossOrigin:a.crossOrigin,logo:a.logo,maxZoom:void 0!==a.maxZoom?a.maxZoom:18,minZoom:a.minZoom,projection:a.projection,state:"loading",wrapX:a.wrapX});tv(this)}y(sv,rv);k=sv.prototype;k.Tj=function(){return this.c};k.up=function(a){Ea(this.c,a);tv(this)};k.$o=function(a){this.c=a||{};tv(this)};
+function tv(a){var b=JSON.stringify(a.c);if(a.j[b])uv(a,a.j[b]);else{var c="https://"+a.v+".cartodb.com/api/v1/map";a.A&&(c+="/named/"+a.A);var d=new XMLHttpRequest;d.addEventListener("load",a.Nk.bind(a,b));d.addEventListener("error",a.Mk.bind(a));d.open("POST",c);d.setRequestHeader("Content-type","application/json");d.send(JSON.stringify(a.c))}}
+k.Nk=function(a,b){var c=b.target;if(200<=c.status&&300>c.status){var d;try{d=JSON.parse(c.responseText)}catch(e){lf(this,"error");return}uv(this,d);this.j[a]=d;lf(this,"ready")}else lf(this,"error")};k.Mk=function(){lf(this,"error")};function uv(a,b){a.Va("https://"+b.cdn_url.https+"/"+a.v+"/api/v1/map/"+b.layergroupid+"/{z}/{x}/{y}.png")};function Y(a){P.call(this,{attributions:a.attributions,extent:a.extent,logo:a.logo,projection:a.projection,wrapX:a.wrapX});this.C=void 0;this.ta=void 0!==a.distance?a.distance:20;this.A=[];this.ia=a.geometryFunction||function(a){return a.W()};this.v=a.source;this.v.I("change",Y.prototype.Sa,this)}y(Y,P);Y.prototype.Aa=function(){return this.v};Y.prototype.Pc=function(a,b,c){this.v.Pc(a,b,c);b!==this.C&&(this.clear(),this.C=b,vv(this),this.Jc(this.A))};
+Y.prototype.Sa=function(){this.clear();vv(this);this.Jc(this.A);this.u()};function vv(a){if(void 0!==a.C){a.A.length=0;for(var b=Lb(),c=a.ta*a.C,d=a.v.oe(),e={},f=0,g=d.length;f<g;f++){var h=d[f];w(h).toString()in e||!(h=a.ia(h))||(h=h.Z(),Xb(h,b),Ob(b,c,b),h=a.v.ef(b),h=h.filter(function(a){a=w(a).toString();return a in e?!1:e[a]=!0}),a.A.push(wv(a,h)))}}}
+function wv(a,b){for(var c=[0,0],d=b.length-1;0<=d;--d){var e=a.ia(b[d]);e?Bb(c,e.Z()):b.splice(d,1)}d=1/b.length;c[0]*=d;c[1]*=d;c=new Ik(new C(c));c.set("features",b);return c};function xv(a,b){var c=Object.keys(b).map(function(a){return a+"="+encodeURIComponent(b[a])}).join("&");a=a.replace(/[?&]$/,"");a=-1===a.indexOf("?")?a+"?":a+"&";return a+c};function yv(a){a=a||{};Ak.call(this,{attributions:a.attributions,logo:a.logo,projection:a.projection,resolutions:a.resolutions});this.Y=void 0!==a.crossOrigin?a.crossOrigin:null;this.i=a.url;this.j=void 0!==a.imageLoadFunction?a.imageLoadFunction:Gk;this.v=a.params||{};this.c=null;this.s=[0,0];this.T=0;this.S=void 0!==a.ratio?a.ratio:1.5}y(yv,Ak);k=yv.prototype;k.Sm=function(){return this.v};
+k.Mc=function(a,b,c,d){if(void 0===this.i)return null;b=Bk(this,b);var e=this.c;if(e&&this.T==this.g&&e.$()==b&&e.f==c&&Ub(e.H(),a))return e;e={F:"image",FORMAT:"PNG32",TRANSPARENT:!0};Ea(e,this.v);a=a.slice();var f=(a[0]+a[2])/2,g=(a[1]+a[3])/2;if(1!=this.S){var h=this.S*ic(a)/2,l=this.S*jc(a)/2;a[0]=f-h;a[1]=g-l;a[2]=f+h;a[3]=g+l}var h=b/c,l=Math.ceil(ic(a)/h),m=Math.ceil(jc(a)/h);a[0]=f-h*l/2;a[2]=f+h*l/2;a[1]=g-h*m/2;a[3]=g+h*m/2;this.s[0]=l;this.s[1]=m;f=a;g=this.s;d=d.cb.split(":").pop();e.SIZE=
+g[0]+","+g[1];e.BBOX=f.join(",");e.BBOXSR=d;e.IMAGESR=d;e.DPI=90*c;d=this.i.replace(/MapServer\/?$/,"MapServer/export").replace(/ImageServer\/?$/,"ImageServer/exportImage");e=xv(d,e);this.c=new eu(a,b,c,this.l,e,this.Y,this.j);this.T=this.g;B(this.c,"change",this.o,this);return this.c};k.Rm=function(){return this.j};k.Tm=function(){return this.i};k.Um=function(a){this.c=null;this.j=a;this.u()};k.Vm=function(a){a!=this.i&&(this.i=a,this.c=null,this.u())};k.Wm=function(a){Ea(this.v,a);this.c=null;this.u()};function zv(a){Ak.call(this,{projection:a.projection,resolutions:a.resolutions});this.Y=void 0!==a.crossOrigin?a.crossOrigin:null;this.s=void 0!==a.displayDpi?a.displayDpi:96;this.j=a.params||{};this.T=a.url;this.c=void 0!==a.imageLoadFunction?a.imageLoadFunction:Gk;this.ia=void 0!==a.hidpi?a.hidpi:!0;this.ta=void 0!==a.metersPerUnit?a.metersPerUnit:1;this.v=void 0!==a.ratio?a.ratio:1;this.Aa=void 0!==a.useOverlay?a.useOverlay:!1;this.i=null;this.S=0}y(zv,Ak);k=zv.prototype;k.Ym=function(){return this.j};
+k.Mc=function(a,b,c){b=Bk(this,b);c=this.ia?c:1;var d=this.i;if(d&&this.S==this.g&&d.$()==b&&d.f==c&&Ub(d.H(),a))return d;1!=this.v&&(a=a.slice(),oc(a,this.v));var e=[ic(a)/b*c,jc(a)/b*c];if(void 0!==this.T){var d=this.T,f=kc(a),g=this.ta,h=ic(a),l=jc(a),m=e[0],n=e[1],p=.0254/this.s,e={OPERATION:this.Aa?"GETDYNAMICMAPOVERLAYIMAGE":"GETMAPIMAGE",VERSION:"2.0.0",LOCALE:"en",CLIENTAGENT:"ol.source.ImageMapGuide source",CLIP:"1",SETDISPLAYDPI:this.s,SETDISPLAYWIDTH:Math.round(e[0]),SETDISPLAYHEIGHT:Math.round(e[1]),
+SETVIEWSCALE:n*h>m*l?h*g/(m*p):l*g/(n*p),SETVIEWCENTERX:f[0],SETVIEWCENTERY:f[1]};Ea(e,this.j);d=xv(d,e);d=new eu(a,b,c,this.l,d,this.Y,this.c);B(d,"change",this.o,this)}else d=null;this.i=d;this.S=this.g;return d};k.Xm=function(){return this.c};k.$m=function(a){Ea(this.j,a);this.u()};k.Zm=function(a){this.i=null;this.c=a;this.u()};function Av(a){var b=a.imageExtent,c=void 0!==a.crossOrigin?a.crossOrigin:null,d=void 0!==a.imageLoadFunction?a.imageLoadFunction:Gk;Ak.call(this,{attributions:a.attributions,logo:a.logo,projection:yc(a.projection)});this.c=new eu(b,void 0,1,this.l,a.url,c,d);this.i=a.imageSize?a.imageSize:null;B(this.c,"change",this.o,this)}y(Av,Ak);Av.prototype.Mc=function(a){return nc(a,this.c.H())?this.c:null};
+Av.prototype.o=function(a){if(2==this.c.V()){var b=this.c.H(),c=this.c.a(),d,e;this.i?(d=this.i[0],e=this.i[1]):(d=c.width,e=c.height);b=Math.ceil(ic(b)/(jc(b)/e));if(b!=d){var b=Oe(b,e),f=b.canvas;b.drawImage(c,0,0,d,e,0,0,f.width,f.height);this.c.g=f}}Ak.prototype.o.call(this,a)};function Bv(a){a=a||{};Ak.call(this,{attributions:a.attributions,logo:a.logo,projection:a.projection,resolutions:a.resolutions});this.ta=void 0!==a.crossOrigin?a.crossOrigin:null;this.j=a.url;this.S=void 0!==a.imageLoadFunction?a.imageLoadFunction:Gk;this.i=a.params||{};this.v=!0;Cv(this);this.ia=a.serverType;this.Aa=void 0!==a.hidpi?a.hidpi:!0;this.c=null;this.T=[0,0];this.Y=0;this.s=void 0!==a.ratio?a.ratio:1.5}y(Bv,Ak);var Dv=[101,101];k=Bv.prototype;
+k.fn=function(a,b,c,d){if(void 0!==this.j){var e=lc(a,b,0,Dv),f={SERVICE:"WMS",VERSION:"1.3.0",REQUEST:"GetFeatureInfo",FORMAT:"image/png",TRANSPARENT:!0,QUERY_LAYERS:this.i.LAYERS};Ea(f,this.i,d);d=Math.floor((e[3]-a[1])/b);f[this.v?"I":"X"]=Math.floor((a[0]-e[0])/b);f[this.v?"J":"Y"]=d;return Ev(this,e,Dv,1,yc(c),f)}};k.hn=function(){return this.i};
+k.Mc=function(a,b,c,d){if(void 0===this.j)return null;b=Bk(this,b);1==c||this.Aa&&void 0!==this.ia||(c=1);a=a.slice();var e=(a[0]+a[2])/2,f=(a[1]+a[3])/2,g=b/c,h=ic(a)/g,g=jc(a)/g,l=this.c;if(l&&this.Y==this.g&&l.$()==b&&l.f==c&&Ub(l.H(),a))return l;if(1!=this.s){var l=this.s*ic(a)/2,m=this.s*jc(a)/2;a[0]=e-l;a[1]=f-m;a[2]=e+l;a[3]=f+m}e={SERVICE:"WMS",VERSION:"1.3.0",REQUEST:"GetMap",FORMAT:"image/png",TRANSPARENT:!0};Ea(e,this.i);this.T[0]=Math.ceil(h*this.s);this.T[1]=Math.ceil(g*this.s);d=Ev(this,
+a,this.T,c,d,e);this.c=new eu(a,b,c,this.l,d,this.ta,this.S);this.Y=this.g;B(this.c,"change",this.o,this);return this.c};k.gn=function(){return this.S};
+function Ev(a,b,c,d,e,f){f[a.v?"CRS":"SRS"]=e.cb;"STYLES"in a.i||(f.STYLES="");if(1!=d)switch(a.ia){case "geoserver":d=90*d+.5|0;f.FORMAT_OPTIONS="FORMAT_OPTIONS"in f?f.FORMAT_OPTIONS+(";dpi:"+d):"dpi:"+d;break;case "mapserver":f.MAP_RESOLUTION=90*d;break;case "carmentaserver":case "qgis":f.DPI=90*d}f.WIDTH=c[0];f.HEIGHT=c[1];c=e.b;var g;a.v&&"ne"==c.substr(0,2)?g=[b[1],b[0],b[3],b[2]]:g=b;f.BBOX=g.join(",");return xv(a.j,f)}k.jn=function(){return this.j};k.kn=function(a){this.c=null;this.S=a;this.u()};
+k.ln=function(a){a!=this.j&&(this.j=a,this.c=null,this.u())};k.mn=function(a){Ea(this.i,a);Cv(this);this.c=null;this.u()};function Cv(a){a.v=0<=Ab(a.i.VERSION||"1.3.0")};function Fv(a){a=a||{};var b;void 0!==a.attributions?b=a.attributions:b=[Gv];rv.call(this,{attributions:b,cacheSize:a.cacheSize,crossOrigin:void 0!==a.crossOrigin?a.crossOrigin:"anonymous",opaque:void 0!==a.opaque?a.opaque:!0,maxZoom:void 0!==a.maxZoom?a.maxZoom:19,reprojectionErrorThreshold:a.reprojectionErrorThreshold,tileLoadFunction:a.tileLoadFunction,url:void 0!==a.url?a.url:"https://{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png",wrapX:a.wrapX})}y(Fv,rv);var Gv=new je({html:'&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors.'});(function(){var a={},b={ja:a};(function(c){if("object"===typeof a&&"undefined"!==typeof b)b.ja=c();else{var d;"undefined"!==typeof window?d=window:"undefined"!==typeof global?d=global:"undefined"!==typeof self?d=self:d=this;d.Sp=c()}})(function(){return function d(a,b,g){function h(m,p){if(!b[m]){if(!a[m]){var q="function"==typeof require&&require;if(!p&&q)return q(m,!0);if(l)return l(m,!0);q=Error("Cannot find module '"+m+"'");throw q.code="MODULE_NOT_FOUND",q;}q=b[m]={ja:{}};a[m][0].call(q.ja,function(b){var d=
+a[m][1][b];return h(d?d:b)},q,q.ja,d,a,b,g)}return b[m].ja}for(var l="function"==typeof require&&require,m=0;m<g.length;m++)h(g[m]);return h}({1:[function(a,b,f){a=a("./processor");f.$i=a},{"./processor":2}],2:[function(a,b){function f(a){var b=!0;try{new ImageData(10,10)}catch(d){b=!1}return function(d){var e=d.buffers,f=d.meta,g=d.width,h=d.height,l=e.length,m=e[0].byteLength;if(d.imageOps){m=Array(l);for(d=0;d<l;++d){var z=m,F=d,N;N=new Uint8ClampedArray(e[d]);var K=g,X=h;N=b?new ImageData(N,K,
+X):{data:N,width:K,height:X};z[F]=N}g=a(m,f).data}else{g=new Uint8ClampedArray(m);h=Array(l);z=Array(l);for(d=0;d<l;++d)h[d]=new Uint8ClampedArray(e[d]),z[d]=[0,0,0,0];for(e=0;e<m;e+=4){for(d=0;d<l;++d)F=h[d],z[d][0]=F[e],z[d][1]=F[e+1],z[d][2]=F[e+2],z[d][3]=F[e+3];d=a(z,f);g[e]=d[0];g[e+1]=d[1];g[e+2]=d[2];g[e+3]=d[3]}}return g.buffer}}function g(a,b){var d=Object.keys(a.lib||{}).map(function(b){return"var "+b+" = "+a.lib[b].toString()+";"}).concat(["var __minion__ = ("+f.toString()+")(",a.operation.toString(),
+");",'self.addEventListener("message", function(event) {'," var buffer = __minion__(event.data);"," self.postMessage({buffer: buffer, meta: event.data.meta}, [buffer]);","});"]),d=URL.createObjectURL(new Blob(d,{type:"text/javascript"})),d=new Worker(d);d.addEventListener("message",b);return d}function h(a,b){var d=f(a.operation);return{postMessage:function(a){setTimeout(function(){b({data:{buffer:d(a),meta:a.meta}})},0)}}}function l(a){this.Re=!!a.ll;var b;0===a.threads?b=0:this.Re?b=1:b=a.threads||
+1;var d=[];if(b)for(var e=0;e<b;++e)d[e]=g(a,this.ig.bind(this,e));else d[0]=h(a,this.ig.bind(this,0));this.Ld=d;this.$c=[];this.oj=a.uo||Infinity;this.Jd=0;this.Ic={};this.Se=null}var m=a("./util").Fl;l.prototype.so=function(a,b,d){this.lj({Ac:a,Xg:b,qg:d});this.fg()};l.prototype.lj=function(a){for(this.$c.push(a);this.$c.length>this.oj;)this.$c.shift().qg(null,null)};l.prototype.fg=function(){if(0===this.Jd&&0<this.$c.length){var a=this.Se=this.$c.shift(),b=a.Ac[0].width,d=a.Ac[0].height,e=a.Ac.map(function(a){return a.data.buffer}),
+f=this.Ld.length;this.Jd=f;if(1===f)this.Ld[0].postMessage({buffers:e,meta:a.Xg,imageOps:this.Re,width:b,height:d},e);else for(var g=4*Math.ceil(a.Ac[0].data.length/4/f),h=0;h<f;++h){for(var l=h*g,m=[],z=0,F=e.length;z<F;++z)m.push(e[h].slice(l,l+g));this.Ld[h].postMessage({buffers:m,meta:a.Xg,imageOps:this.Re,width:b,height:d},m)}}};l.prototype.ig=function(a,b){this.Pp||(this.Ic[a]=b.data,--this.Jd,0===this.Jd&&this.pj())};l.prototype.pj=function(){var a=this.Se,b=this.Ld.length,d,e;if(1===b)d=new Uint8ClampedArray(this.Ic[0].buffer),
+e=this.Ic[0].meta;else{var f=a.Ac[0].data.length;d=new Uint8ClampedArray(f);e=Array(f);for(var f=4*Math.ceil(f/4/b),g=0;g<b;++g){var h=g*f;d.set(new Uint8ClampedArray(this.Ic[g].buffer),h);e[g]=this.Ic[g].meta}}this.Se=null;this.Ic={};a.qg(null,m(d,a.Ac[0].width,a.Ac[0].height),e);this.fg()};b.ja=l},{"./util":3}],3:[function(a,b,f){var g=!0;try{new ImageData(10,10)}catch(l){g=!1}var h=document.createElement("canvas").getContext("2d");f.Fl=function(a,b,d){if(g)return new ImageData(a,b,d);b=h.createImageData(b,
+d);b.data.set(a);return b}},{}]},{},[1])(1)});jl=b.ja})();function Hv(a){this.S=null;this.Aa=void 0!==a.operationType?a.operationType:"pixel";this.Sa=void 0!==a.threads?a.threads:1;this.c=Iv(a.sources);for(var b=0,c=this.c.length;b<c;++b)B(this.c[b],"change",this.u,this);this.i=Oe();this.ia=new Rh(function(){return 1},this.u.bind(this));for(var b=Jv(this.c),c={},d=0,e=b.length;d<e;++d)c[w(b[d].layer)]=b[d];this.j=this.s=null;this.Y={animate:!1,attributions:{},coordinateToPixelMatrix:Xc(),extent:null,focus:null,index:0,layerStates:c,layerStatesArray:b,logos:{},
+pixelRatio:1,pixelToCoordinateMatrix:Xc(),postRenderFunctions:[],size:[0,0],skippedFeatureUids:{},tileQueue:this.ia,time:Date.now(),usedTiles:{},viewState:{rotation:0},viewHints:[],wantedTiles:{}};Ak.call(this,{});void 0!==a.operation&&this.v(a.operation,a.lib)}y(Hv,Ak);Hv.prototype.v=function(a,b){this.S=new jl.$i({operation:a,ll:"image"===this.Aa,uo:1,lib:b,threads:this.Sa});this.u()};function Kv(a,b,c){var d=a.s;return!d||a.g!==d.Xo||c!==d.resolution||!$b(b,d.extent)}
+Hv.prototype.A=function(a,b,c,d){c=!0;for(var e,f=0,g=this.c.length;f<g;++f)if(e=this.c[f].a.ha(),"ready"!==e.V()){c=!1;break}if(!c)return null;a=a.slice();if(!Kv(this,a,b))return this.j;c=this.i.canvas;e=Math.round(ic(a)/b);f=Math.round(jc(a)/b);if(e!==c.width||f!==c.height)c.width=e,c.height=f;e=Ea({},this.Y);e.viewState=Ea({},e.viewState);var f=kc(a),g=Math.round(ic(a)/b),h=Math.round(jc(a)/b);e.extent=a;e.focus=kc(a);e.size[0]=g;e.size[1]=h;g=e.viewState;g.center=f;g.projection=d;g.resolution=
+b;this.j=d=new nk(a,b,1,this.l,c,this.T.bind(this,e));this.s={extent:a,resolution:b,Xo:this.g};return d};
+Hv.prototype.T=function(a,b){for(var c=this.c.length,d=Array(c),e=0;e<c;++e){var f;f=this.c[e];var g=a,h=a.layerStatesArray[e];if(f.l(g,h)){var l=g.size[0],m=g.size[1];if(Lv){var n=Lv.canvas;n.width!==l||n.height!==m?Lv=Oe(l,m):Lv.clearRect(0,0,l,m)}else Lv=Oe(l,m);f.i(g,h,Lv);f=Lv.getImageData(0,0,l,m)}else f=null;if(f)d[e]=f;else return}c={};this.b(new Mv(Nv,a,c));this.S.so(d,c,this.ta.bind(this,a,b));Sh(a.tileQueue,16,16)};
+Hv.prototype.ta=function(a,b,c,d,e){c?b(c):d&&(this.b(new Mv(Ov,a,e)),Kv(this,a.extent,a.viewState.resolution/a.pixelRatio)||this.i.putImageData(d,0,0),b(null))};var Lv=null;function Jv(a){return a.map(function(a){return jh(a.a)})}function Iv(a){for(var b=a.length,c=Array(b),d=0;d<b;++d){var e=d,f=a[d],g=null;f instanceof zf?(f=new dj({source:f}),g=new Bl(f)):f instanceof Ak&&(f=new cj({source:f}),g=new Al(f));c[e]=g}return c}
+function Mv(a,b,c){Wa.call(this,a);this.extent=b.extent;this.resolution=b.viewState.resolution/b.pixelRatio;this.data=c}y(Mv,Wa);var Nv="beforeoperations",Ov="afteroperations";var Pv={terrain:{tb:"jpg",opaque:!0},"terrain-background":{tb:"jpg",opaque:!0},"terrain-labels":{tb:"png",opaque:!1},"terrain-lines":{tb:"png",opaque:!1},"toner-background":{tb:"png",opaque:!0},toner:{tb:"png",opaque:!0},"toner-hybrid":{tb:"png",opaque:!1},"toner-labels":{tb:"png",opaque:!1},"toner-lines":{tb:"png",opaque:!1},"toner-lite":{tb:"png",opaque:!0},watercolor:{tb:"jpg",opaque:!0}},Qv={terrain:{minZoom:4,maxZoom:18},toner:{minZoom:0,maxZoom:20},watercolor:{minZoom:1,maxZoom:16}};
+function Rv(a){var b=a.layer.indexOf("-"),b=-1==b?a.layer:a.layer.slice(0,b),b=Qv[b],c=Pv[a.layer];rv.call(this,{attributions:Sv,cacheSize:a.cacheSize,crossOrigin:"anonymous",maxZoom:void 0!=a.maxZoom?a.maxZoom:b.maxZoom,minZoom:void 0!=a.minZoom?a.minZoom:b.minZoom,opaque:c.opaque,reprojectionErrorThreshold:a.reprojectionErrorThreshold,tileLoadFunction:a.tileLoadFunction,url:void 0!==a.url?a.url:"https://stamen-tiles-{a-d}.a.ssl.fastly.net/"+a.layer+"/{z}/{x}/{y}."+c.tb})}y(Rv,rv);
+var Sv=[new je({html:'Map tiles by <a href="http://stamen.com/">Stamen Design</a>, under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>.'}),Gv];function Tv(a){a=a||{};W.call(this,{attributions:a.attributions,cacheSize:a.cacheSize,crossOrigin:a.crossOrigin,logo:a.logo,projection:a.projection,reprojectionErrorThreshold:a.reprojectionErrorThreshold,tileGrid:a.tileGrid,tileLoadFunction:a.tileLoadFunction,url:a.url,urls:a.urls,wrapX:void 0!==a.wrapX?a.wrapX:!0});this.c=a.params||{};this.j=Lb()}y(Tv,W);Tv.prototype.v=function(){return this.c};Tv.prototype.bc=function(a){return a};
+Tv.prototype.vc=function(a,b,c){var d=this.tileGrid;d||(d=this.eb(c));if(!(d.b.length<=a[0])){var e=d.Ea(a,this.j),f=hf(d.Ja(a[0]),this.o);1!=b&&(f=gf(f,b,this.o));d={F:"image",FORMAT:"PNG32",TRANSPARENT:!0};Ea(d,this.c);var g=this.urls;g?(c=c.cb.split(":").pop(),d.SIZE=f[0]+","+f[1],d.BBOX=e.join(","),d.BBOXSR=c,d.IMAGESR=c,d.DPI=Math.round(d.DPI?d.DPI*b:90*b),a=(1==g.length?g[0]:g[xa((a[1]<<a[0])+a[2],g.length)]).replace(/MapServer\/?$/,"MapServer/export").replace(/ImageServer\/?$/,"ImageServer/exportImage"),
+a=xv(a,d)):a=void 0;return a}};Tv.prototype.A=function(a){Ea(this.c,a);this.u()};function Uv(a,b,c){df.call(this,a,2);this.l=b;this.c=c;this.g={}}y(Uv,df);Uv.prototype.$a=function(a){a=void 0!==a?w(a):-1;if(a in this.g)return this.g[a];var b=this.l,c=Oe(b[0],b[1]);c.strokeStyle="black";c.strokeRect(.5,.5,b[0]+.5,b[1]+.5);c.fillStyle="black";c.textAlign="center";c.textBaseline="middle";c.font="24px sans-serif";c.fillText(this.c,b[0]/2,b[1]/2);return this.g[a]=c.canvas};
+function Vv(a){zf.call(this,{opaque:!1,projection:a.projection,tileGrid:a.tileGrid,wrapX:void 0!==a.wrapX?a.wrapX:!0})}y(Vv,zf);Vv.prototype.ac=function(a,b,c){var d=this.Eb(a,b,c);if(Ze(this.a,d))return this.a.get(d);var e=hf(this.tileGrid.Ja(a));a=[a,b,c];b=(b=Cf(this,a))?Cf(this,b).toString():"";e=new Uv(a,e,b);this.a.set(d,e);return e};function Wv(a){this.c=null;W.call(this,{attributions:a.attributions,cacheSize:a.cacheSize,crossOrigin:a.crossOrigin,projection:yc("EPSG:3857"),reprojectionErrorThreshold:a.reprojectionErrorThreshold,state:"loading",tileLoadFunction:a.tileLoadFunction,wrapX:void 0!==a.wrapX?a.wrapX:!0});if(a.jsonp)kv(a.url,this.yh.bind(this),this.me.bind(this));else{var b=new XMLHttpRequest;b.addEventListener("load",this.pn.bind(this));b.addEventListener("error",this.nn.bind(this));b.open("GET",a.url);b.send()}}
+y(Wv,W);k=Wv.prototype;k.pn=function(a){a=a.target;if(200<=a.status&&300>a.status){var b;try{b=JSON.parse(a.responseText)}catch(c){this.me();return}this.yh(b)}else this.me()};k.nn=function(){this.me()};k.Ak=function(){return this.c};
+k.yh=function(a){var b=yc("EPSG:4326"),c=this.f,d;void 0!==a.bounds&&(d=pc(a.bounds,Bc(b,c)));var e=a.minzoom||0,f=a.maxzoom||22;this.tileGrid=c=yf({extent:wf(c),maxZoom:f,minZoom:e});this.tileUrlFunction=Fl(a.tiles,c);if(void 0!==a.attribution&&!this.l){b=void 0!==d?d:b.H();d={};for(var g;e<=f;++e)g=e.toString(),d[g]=[pf(c,b,e)];this.oa([new je({html:a.attribution,tileRanges:d})])}this.c=a;lf(this,"ready")};k.me=function(){lf(this,"error")};function Xv(a){zf.call(this,{projection:yc("EPSG:3857"),state:"loading"});this.s=void 0!==a.preemptive?a.preemptive:!0;this.j=Hl;this.i=void 0;this.c=a.jsonp||!1;if(a.url)if(this.c)kv(a.url,this.Bf.bind(this),this.ne.bind(this));else{var b=new XMLHttpRequest;b.addEventListener("load",this.tn.bind(this));b.addEventListener("error",this.sn.bind(this));b.open("GET",a.url);b.send()}else a.tileJSON&&this.Bf(a.tileJSON)}y(Xv,zf);k=Xv.prototype;
+k.tn=function(a){a=a.target;if(200<=a.status&&300>a.status){var b;try{b=JSON.parse(a.responseText)}catch(c){this.ne();return}this.Bf(b)}else this.ne()};k.sn=function(){this.ne()};k.xk=function(){return this.i};k.Ij=function(a,b,c,d,e){this.tileGrid?(b=this.tileGrid.Zd(a,b),Yv(this.ac(b[0],b[1],b[2],1,this.f),a,c,d,e)):!0===e?Tf(function(){c.call(d,null)}):c.call(d,null)};k.ne=function(){lf(this,"error")};
+k.Bf=function(a){var b=yc("EPSG:4326"),c=this.f,d;void 0!==a.bounds&&(d=pc(a.bounds,Bc(b,c)));var e=a.minzoom||0,f=a.maxzoom||22;this.tileGrid=c=yf({extent:wf(c),maxZoom:f,minZoom:e});this.i=a.template;var g=a.grids;if(g){this.j=Fl(g,c);if(void 0!==a.attribution){b=void 0!==d?d:b.H();for(d={};e<=f;++e)g=e.toString(),d[g]=[pf(c,b,e)];this.oa([new je({html:a.attribution,tileRanges:d})])}lf(this,"ready")}else lf(this,"error")};
+k.ac=function(a,b,c,d,e){var f=this.Eb(a,b,c);if(Ze(this.a,f))return this.a.get(f);a=[a,b,c];b=Cf(this,a,e);d=this.j(b,d,e);d=new Zv(a,void 0!==d?0:4,void 0!==d?d:"",this.tileGrid.Ea(a),this.s,this.c);this.a.set(f,d);return d};k.Yf=function(a,b,c){a=this.Eb(a,b,c);Ze(this.a,a)&&this.a.get(a)};function Zv(a,b,c,d,e,f){df.call(this,a,b);this.s=c;this.g=d;this.U=e;this.c=this.j=this.l=null;this.v=f}y(Zv,df);k=Zv.prototype;k.$a=function(){return null};
+k.getData=function(a){if(!this.l||!this.j)return null;var b=this.l[Math.floor((1-(a[1]-this.g[1])/(this.g[3]-this.g[1]))*this.l.length)];if("string"!==typeof b)return null;b=b.charCodeAt(Math.floor((a[0]-this.g[0])/(this.g[2]-this.g[0])*b.length));93<=b&&b--;35<=b&&b--;b-=32;a=null;b in this.j&&(b=this.j[b],this.c&&b in this.c?a=this.c[b]:a=b);return a};
+function Yv(a,b,c,d,e){0==a.state&&!0===e?(Pa(a,"change",function(){c.call(d,this.getData(b))},a),$v(a)):!0===e?Tf(function(){c.call(d,this.getData(b))},a):c.call(d,a.getData(b))}k.ib=function(){return this.s};k.ae=function(){this.state=3;ef(this)};k.zh=function(a){this.l=a.grid;this.j=a.keys;this.c=a.data;this.state=4;ef(this)};
+function $v(a){if(0==a.state)if(a.state=1,a.v)kv(a.s,a.zh.bind(a),a.ae.bind(a));else{var b=new XMLHttpRequest;b.addEventListener("load",a.rn.bind(a));b.addEventListener("error",a.qn.bind(a));b.open("GET",a.s);b.send()}}k.rn=function(a){a=a.target;if(200<=a.status&&300>a.status){var b;try{b=JSON.parse(a.responseText)}catch(c){this.ae();return}this.zh(b)}else this.ae()};k.qn=function(){this.ae()};k.load=function(){this.U&&$v(this)};function aw(a){a=a||{};var b=a.params||{};W.call(this,{attributions:a.attributions,cacheSize:a.cacheSize,crossOrigin:a.crossOrigin,logo:a.logo,opaque:!("TRANSPARENT"in b?b.TRANSPARENT:1),projection:a.projection,reprojectionErrorThreshold:a.reprojectionErrorThreshold,tileGrid:a.tileGrid,tileLoadFunction:a.tileLoadFunction,url:a.url,urls:a.urls,wrapX:void 0!==a.wrapX?a.wrapX:!0});this.v=void 0!==a.gutter?a.gutter:0;this.c=b;this.j=!0;this.A=a.serverType;this.T=void 0!==a.hidpi?a.hidpi:!0;this.S="";
+bw(this);this.Y=Lb();cw(this);Bf(this,dw(this))}y(aw,W);k=aw.prototype;
+k.vn=function(a,b,c,d){c=yc(c);var e=this.tileGrid;e||(e=this.eb(c));b=e.Zd(a,b);if(!(e.b.length<=b[0])){var f=e.$(b[0]),g=e.Ea(b,this.Y),e=hf(e.Ja(b[0]),this.o),h=this.v;0!==h&&(e=ff(e,h,this.o),g=Ob(g,f*h,g));h={SERVICE:"WMS",VERSION:"1.3.0",REQUEST:"GetFeatureInfo",FORMAT:"image/png",TRANSPARENT:!0,QUERY_LAYERS:this.c.LAYERS};Ea(h,this.c,d);d=Math.floor((g[3]-a[1])/f);h[this.j?"I":"X"]=Math.floor((a[0]-g[0])/f);h[this.j?"J":"Y"]=d;return ew(this,b,e,g,1,c,h)}};k.gf=function(){return this.v};
+k.Eb=function(a,b,c){return this.S+W.prototype.Eb.call(this,a,b,c)};k.wn=function(){return this.c};
+function ew(a,b,c,d,e,f,g){var h=a.urls;if(h){g.WIDTH=c[0];g.HEIGHT=c[1];g[a.j?"CRS":"SRS"]=f.cb;"STYLES"in a.c||(g.STYLES="");if(1!=e)switch(a.A){case "geoserver":c=90*e+.5|0;g.FORMAT_OPTIONS="FORMAT_OPTIONS"in g?g.FORMAT_OPTIONS+(";dpi:"+c):"dpi:"+c;break;case "mapserver":g.MAP_RESOLUTION=90*e;break;case "carmentaserver":case "qgis":g.DPI=90*e}f=f.b;a.j&&"ne"==f.substr(0,2)&&(a=d[0],d[0]=d[1],d[1]=a,a=d[2],d[2]=d[3],d[3]=a);g.BBOX=d.join(",");return xv(1==h.length?h[0]:h[xa((b[1]<<b[0])+b[2],h.length)],
+g)}}k.bc=function(a){return this.T&&void 0!==this.A?a:1};function bw(a){var b=0,c=[];if(a.urls){var d,e;d=0;for(e=a.urls.length;d<e;++d)c[b++]=a.urls[d]}a.S=c.join("#")}function dw(a){var b=0,c=[],d;for(d in a.c)c[b++]=d+"-"+a.c[d];return c.join("/")}
+k.vc=function(a,b,c){var d=this.tileGrid;d||(d=this.eb(c));if(!(d.b.length<=a[0])){1==b||this.T&&void 0!==this.A||(b=1);var e=d.$(a[0]),f=d.Ea(a,this.Y),d=hf(d.Ja(a[0]),this.o),g=this.v;0!==g&&(d=ff(d,g,this.o),f=Ob(f,e*g,f));1!=b&&(d=gf(d,b,this.o));e={SERVICE:"WMS",VERSION:"1.3.0",REQUEST:"GetMap",FORMAT:"image/png",TRANSPARENT:!0};Ea(e,this.c);return ew(this,a,d,f,b,c,e)}};k.xn=function(a){Ea(this.c,a);bw(this);cw(this);Bf(this,dw(this))};function cw(a){a.j=0<=Ab(a.c.VERSION||"1.3.0")};function fw(a){this.l=a.matrixIds;mf.call(this,{extent:a.extent,origin:a.origin,origins:a.origins,resolutions:a.resolutions,tileSize:a.tileSize,tileSizes:a.tileSizes,sizes:a.sizes})}y(fw,mf);fw.prototype.j=function(){return this.l};
+function gw(a,b){var c=[],d=[],e=[],f=[],g=[],h;h=yc(a.SupportedCRS.replace(/urn:ogc:def:crs:(\w+):(.*:)?(\w+)$/,"$1:$3"));var l=h.$b(),m="ne"==h.b.substr(0,2);a.TileMatrix.sort(function(a,b){return b.ScaleDenominator-a.ScaleDenominator});a.TileMatrix.forEach(function(a){d.push(a.Identifier);var b=2.8E-4*a.ScaleDenominator/l,h=a.TileWidth,r=a.TileHeight;m?e.push([a.TopLeftCorner[1],a.TopLeftCorner[0]]):e.push(a.TopLeftCorner);c.push(b);f.push(h==r?h:[h,r]);g.push([a.MatrixWidth,-a.MatrixHeight])});
+return new fw({extent:b,origins:e,resolutions:c,matrixIds:d,tileSizes:f,sizes:g})};function Z(a){function b(a){a="KVP"==d?xv(a,f):a.replace(/\{(\w+?)\}/g,function(a,b){return b.toLowerCase()in f?f[b.toLowerCase()]:a});return function(b){if(b){var c={TileMatrix:e.l[b[0]],TileCol:b[1],TileRow:-b[2]-1};Ea(c,g);b=a;return b="KVP"==d?xv(b,c):b.replace(/\{(\w+?)\}/g,function(a,b){return c[b]})}}}this.T=void 0!==a.version?a.version:"1.0.0";this.v=void 0!==a.format?a.format:"image/jpeg";this.c=void 0!==a.dimensions?a.dimensions:{};this.A=a.layer;this.j=a.matrixSet;this.S=a.style;var c=
+a.urls;void 0===c&&void 0!==a.url&&(c=Il(a.url));var d=this.Y=void 0!==a.requestEncoding?a.requestEncoding:"KVP",e=a.tileGrid,f={layer:this.A,style:this.S,tilematrixset:this.j};"KVP"==d&&Ea(f,{Service:"WMTS",Request:"GetTile",Version:this.T,Format:this.v});var g=this.c,h=c&&0<c.length?Gl(c.map(b)):Hl;W.call(this,{attributions:a.attributions,cacheSize:a.cacheSize,crossOrigin:a.crossOrigin,logo:a.logo,projection:a.projection,reprojectionErrorThreshold:a.reprojectionErrorThreshold,tileClass:a.tileClass,
+tileGrid:e,tileLoadFunction:a.tileLoadFunction,tilePixelRatio:a.tilePixelRatio,tileUrlFunction:h,urls:c,wrapX:void 0!==a.wrapX?a.wrapX:!1});Bf(this,hw(this))}y(Z,W);k=Z.prototype;k.Vj=function(){return this.c};k.yn=function(){return this.v};k.zn=function(){return this.A};k.hk=function(){return this.j};k.vk=function(){return this.Y};k.An=function(){return this.S};k.Ck=function(){return this.T};function hw(a){var b=0,c=[],d;for(d in a.c)c[b++]=d+"-"+a.c[d];return c.join("/")}
+k.vp=function(a){Ea(this.c,a);Bf(this,hw(this))};function iw(a){a=a||{};var b=a.size,c=b[0],d=b[1],e=[],f=256;switch(void 0!==a.tierSizeCalculation?a.tierSizeCalculation:"default"){case "default":for(;c>f||d>f;)e.push([Math.ceil(c/f),Math.ceil(d/f)]),f+=f;break;case "truncated":for(;c>f||d>f;)e.push([Math.ceil(c/f),Math.ceil(d/f)]),c>>=1,d>>=1}e.push([1,1]);e.reverse();for(var f=[1],g=[0],d=1,c=e.length;d<c;d++)f.push(1<<d),g.push(e[d-1][0]*e[d-1][1]+g[d-1]);f.reverse();var b=[0,-b[1],b[0],0],b=new mf({extent:b,origin:fc(b),resolutions:f}),h=a.url;
+W.call(this,{attributions:a.attributions,cacheSize:a.cacheSize,crossOrigin:a.crossOrigin,logo:a.logo,reprojectionErrorThreshold:a.reprojectionErrorThreshold,tileClass:jw,tileGrid:b,tileUrlFunction:function(a){if(a){var b=a[0],c=a[1];a=-a[2]-1;return h+"TileGroup"+((c+a*e[b][0]+g[b])/256|0)+"/"+b+"-"+c+"-"+a+".jpg"}}})}y(iw,W);function jw(a,b,c,d,e){fu.call(this,a,b,c,d,e);this.l={}}y(jw,fu);
+jw.prototype.$a=function(a){var b=void 0!==a?w(a).toString():"";if(b in this.l)return this.l[b];a=fu.prototype.$a.call(this,a);if(2==this.state){if(256==a.width&&256==a.height)return this.l[b]=a;var c=Oe(256,256);c.drawImage(a,0,0);return this.l[b]=c.canvas}return a};function kw(a){a=a||{};this.a=void 0!==a.initialSize?a.initialSize:256;this.g=void 0!==a.maxSize?a.maxSize:void 0!==la?la:2048;this.b=void 0!==a.space?a.space:1;this.c=[new lw(this.a,this.b)];this.f=this.a;this.i=[new lw(this.f,this.b)]}kw.prototype.add=function(a,b,c,d,e,f){if(b+this.b>this.g||c+this.b>this.g)return null;d=mw(this,!1,a,b,c,d,f);if(!d)return null;a=mw(this,!0,a,b,c,void 0!==e?e:na,f);return{offsetX:d.offsetX,offsetY:d.offsetY,image:d.image,Sg:a.image}};
+function mw(a,b,c,d,e,f,g){var h=b?a.i:a.c,l,m,n;m=0;for(n=h.length;m<n;++m){l=h[m];if(l=l.add(c,d,e,f,g))return l;l||m!==n-1||(b?(l=Math.min(2*a.f,a.g),a.f=l):(l=Math.min(2*a.a,a.g),a.a=l),l=new lw(l,a.b),h.push(l),++n)}}function lw(a,b){this.b=b;this.a=[{x:0,y:0,width:a,height:a}];this.f={};this.g=Oe(a,a);this.c=this.g.canvas}lw.prototype.get=function(a){return this.f[a]||null};
+lw.prototype.add=function(a,b,c,d,e){var f,g,h;g=0;for(h=this.a.length;g<h;++g)if(f=this.a[g],f.width>=b+this.b&&f.height>=c+this.b)return h={offsetX:f.x+this.b,offsetY:f.y+this.b,image:this.c},this.f[a]=h,d.call(e,this.g,f.x+this.b,f.y+this.b),a=g,b+=this.b,d=c+this.b,f.width-b>f.height-d?(c={x:f.x+b,y:f.y,width:f.width-b,height:f.height},b={x:f.x,y:f.y+d,width:b,height:f.height-d},nw(this,a,c,b)):(c={x:f.x+b,y:f.y,width:f.width-b,height:d},b={x:f.x,y:f.y+d,width:f.width,height:f.height-d},nw(this,
+a,c,b)),h;return null};function nw(a,b,c,d){b=[b,1];0<c.width&&0<c.height&&b.push(c);0<d.width&&0<d.height&&b.push(d);a.a.splice.apply(a.a,b)};function ow(a){this.A=this.s=this.f=null;this.o=void 0!==a.fill?a.fill:null;this.ya=[0,0];this.b=a.points;this.g=void 0!==a.radius?a.radius:a.radius1;this.c=void 0!==a.radius2?a.radius2:this.g;this.l=void 0!==a.angle?a.angle:0;this.a=void 0!==a.stroke?a.stroke:null;this.R=this.Ba=this.D=null;var b=a.atlasManager,c="",d="",e=0,f=null,g,h=0;this.a&&(g=ve(this.a.b),h=this.a.a,void 0===h&&(h=1),f=this.a.g,hg||(f=null),d=this.a.c,void 0===d&&(d="round"),c=this.a.f,void 0===c&&(c="round"),e=this.a.i,void 0===
+e&&(e=10));var l=2*(this.g+h)+1,c={strokeStyle:g,Bd:h,size:l,lineCap:c,lineDash:f,lineJoin:d,miterLimit:e};if(void 0===b){var m=Oe(l,l);this.s=m.canvas;b=l=this.s.width;this.Ih(c,m,0,0);this.o?this.A=this.s:(m=Oe(c.size,c.size),this.A=m.canvas,this.Hh(c,m,0,0))}else l=Math.round(l),(d=!this.o)&&(m=this.Hh.bind(this,c)),e=this.a?pj(this.a):"-",f=this.o?jj(this.o):"-",this.f&&e==this.f[1]&&f==this.f[2]&&this.g==this.f[3]&&this.c==this.f[4]&&this.l==this.f[5]&&this.b==this.f[6]||(this.f=["r"+e+f+(void 0!==
+this.g?this.g.toString():"-")+(void 0!==this.c?this.c.toString():"-")+(void 0!==this.l?this.l.toString():"-")+(void 0!==this.b?this.b.toString():"-"),e,f,this.g,this.c,this.l,this.b]),m=b.add(this.f[0],l,l,this.Ih.bind(this,c),m),this.s=m.image,this.ya=[m.offsetX,m.offsetY],b=m.image.width,this.A=d?m.Sg:this.s;this.D=[l/2,l/2];this.Ba=[l,l];this.R=[b,b];Ch.call(this,{opacity:1,rotateWithView:void 0!==a.rotateWithView?a.rotateWithView:!1,rotation:void 0!==a.rotation?a.rotation:0,scale:1,snapToPixel:void 0!==
+a.snapToPixel?a.snapToPixel:!0})}y(ow,Ch);k=ow.prototype;k.Yb=function(){return this.D};k.Fn=function(){return this.l};k.Gn=function(){return this.o};k.pe=function(){return this.A};k.jc=function(){return this.s};k.ld=function(){return this.R};k.td=function(){return 2};k.Ia=function(){return this.ya};k.Hn=function(){return this.b};k.In=function(){return this.g};k.uk=function(){return this.c};k.Fb=function(){return this.Ba};k.Jn=function(){return this.a};k.pf=na;k.load=na;k.Xf=na;
+k.Ih=function(a,b,c,d){var e;b.setTransform(1,0,0,1,0,0);b.translate(c,d);b.beginPath();this.c!==this.g&&(this.b*=2);for(c=0;c<=this.b;c++)d=2*c*Math.PI/this.b-Math.PI/2+this.l,e=0===c%2?this.g:this.c,b.lineTo(a.size/2+e*Math.cos(d),a.size/2+e*Math.sin(d));this.o&&(b.fillStyle=xe(this.o.b),b.fill());this.a&&(b.strokeStyle=a.strokeStyle,b.lineWidth=a.Bd,a.lineDash&&b.setLineDash(a.lineDash),b.lineCap=a.lineCap,b.lineJoin=a.lineJoin,b.miterLimit=a.miterLimit,b.stroke());b.closePath()};
+k.Hh=function(a,b,c,d){b.setTransform(1,0,0,1,0,0);b.translate(c,d);b.beginPath();this.c!==this.g&&(this.b*=2);var e;for(c=0;c<=this.b;c++)e=2*c*Math.PI/this.b-Math.PI/2+this.l,d=0===c%2?this.g:this.c,b.lineTo(a.size/2+d*Math.cos(e),a.size/2+d*Math.sin(e));b.fillStyle=ej;b.fill();this.a&&(b.strokeStyle=a.strokeStyle,b.lineWidth=a.Bd,a.lineDash&&b.setLineDash(a.lineDash),b.stroke());b.closePath()};t("ol.animation.bounce",function(a){var b=a.resolution,c=a.start?a.start:Date.now(),d=void 0!==a.duration?a.duration:1E3,e=a.easing?a.easing:be;return function(a,g){if(g.time<c)return g.animate=!0,g.viewHints[0]+=1,!0;if(g.time<c+d){var h=e((g.time-c)/d),l=b-g.viewState.resolution;g.animate=!0;g.viewState.resolution+=h*l;g.viewHints[0]+=1;return!0}return!1}},OPENLAYERS);t("ol.animation.pan",ce,OPENLAYERS);t("ol.animation.rotate",de,OPENLAYERS);t("ol.animation.zoom",ee,OPENLAYERS);
+t("ol.Attribution",je,OPENLAYERS);je.prototype.getHTML=je.prototype.g;ke.prototype.element=ke.prototype.element;t("ol.Collection",le,OPENLAYERS);le.prototype.clear=le.prototype.clear;le.prototype.extend=le.prototype.qf;le.prototype.forEach=le.prototype.forEach;le.prototype.getArray=le.prototype.Gl;le.prototype.item=le.prototype.item;le.prototype.getLength=le.prototype.dc;le.prototype.insertAt=le.prototype.ee;le.prototype.pop=le.prototype.pop;le.prototype.push=le.prototype.push;
+le.prototype.remove=le.prototype.remove;le.prototype.removeAt=le.prototype.Rf;le.prototype.setAt=le.prototype.Zo;t("ol.colorlike.asColorLike",xe,OPENLAYERS);t("ol.coordinate.add",Bb,OPENLAYERS);t("ol.coordinate.createStringXY",function(a){return function(b){return Jb(b,a)}},OPENLAYERS);t("ol.coordinate.format",Eb,OPENLAYERS);t("ol.coordinate.rotate",Gb,OPENLAYERS);t("ol.coordinate.toStringHDMS",function(a,b){return a?Db(a[1],"NS",b)+" "+Db(a[0],"EW",b):""},OPENLAYERS);
+t("ol.coordinate.toStringXY",Jb,OPENLAYERS);t("ol.DeviceOrientation",qn,OPENLAYERS);qn.prototype.getAlpha=qn.prototype.Oj;qn.prototype.getBeta=qn.prototype.Rj;qn.prototype.getGamma=qn.prototype.Yj;qn.prototype.getHeading=qn.prototype.Hl;qn.prototype.getTracking=qn.prototype.$g;qn.prototype.setTracking=qn.prototype.rf;t("ol.easing.easeIn",Yd,OPENLAYERS);t("ol.easing.easeOut",Zd,OPENLAYERS);t("ol.easing.inAndOut",$d,OPENLAYERS);t("ol.easing.linear",ae,OPENLAYERS);t("ol.easing.upAndDown",be,OPENLAYERS);
+t("ol.extent.boundingExtent",Kb,OPENLAYERS);t("ol.extent.buffer",Ob,OPENLAYERS);t("ol.extent.containsCoordinate",Sb,OPENLAYERS);t("ol.extent.containsExtent",Ub,OPENLAYERS);t("ol.extent.containsXY",Tb,OPENLAYERS);t("ol.extent.createEmpty",Lb,OPENLAYERS);t("ol.extent.equals",$b,OPENLAYERS);t("ol.extent.extend",ac,OPENLAYERS);t("ol.extent.getBottomLeft",cc,OPENLAYERS);t("ol.extent.getBottomRight",dc,OPENLAYERS);t("ol.extent.getCenter",kc,OPENLAYERS);t("ol.extent.getHeight",jc,OPENLAYERS);
+t("ol.extent.getIntersection",mc,OPENLAYERS);t("ol.extent.getSize",function(a){return[a[2]-a[0],a[3]-a[1]]},OPENLAYERS);t("ol.extent.getTopLeft",fc,OPENLAYERS);t("ol.extent.getTopRight",ec,OPENLAYERS);t("ol.extent.getWidth",ic,OPENLAYERS);t("ol.extent.intersects",nc,OPENLAYERS);t("ol.extent.isEmpty",hc,OPENLAYERS);t("ol.extent.applyTransform",pc,OPENLAYERS);t("ol.Feature",Ik,OPENLAYERS);Ik.prototype.clone=Ik.prototype.clone;Ik.prototype.getGeometry=Ik.prototype.W;Ik.prototype.getId=Ik.prototype.Xa;
+Ik.prototype.getGeometryName=Ik.prototype.$j;Ik.prototype.getStyle=Ik.prototype.Jl;Ik.prototype.getStyleFunction=Ik.prototype.ec;Ik.prototype.setGeometry=Ik.prototype.Ua;Ik.prototype.setStyle=Ik.prototype.sf;Ik.prototype.setId=Ik.prototype.mc;Ik.prototype.setGeometryName=Ik.prototype.Ec;t("ol.featureloader.tile",dl,OPENLAYERS);t("ol.featureloader.xhr",el,OPENLAYERS);t("ol.Geolocation",Ut,OPENLAYERS);Ut.prototype.getAccuracy=Ut.prototype.Mj;Ut.prototype.getAccuracyGeometry=Ut.prototype.Nj;
+Ut.prototype.getAltitude=Ut.prototype.Pj;Ut.prototype.getAltitudeAccuracy=Ut.prototype.Qj;Ut.prototype.getHeading=Ut.prototype.Ll;Ut.prototype.getPosition=Ut.prototype.Ml;Ut.prototype.getProjection=Ut.prototype.ah;Ut.prototype.getSpeed=Ut.prototype.wk;Ut.prototype.getTracking=Ut.prototype.bh;Ut.prototype.getTrackingOptions=Ut.prototype.Mg;Ut.prototype.setProjection=Ut.prototype.dh;Ut.prototype.setTracking=Ut.prototype.ge;Ut.prototype.setTrackingOptions=Ut.prototype.si;t("ol.Graticule",$t,OPENLAYERS);
+$t.prototype.getMap=$t.prototype.Pl;$t.prototype.getMeridians=$t.prototype.ik;$t.prototype.getParallels=$t.prototype.qk;$t.prototype.setMap=$t.prototype.setMap;t("ol.has.DEVICE_PIXEL_RATIO",gg,OPENLAYERS);t("ol.has.CANVAS",ig,OPENLAYERS);t("ol.has.DEVICE_ORIENTATION",jg,OPENLAYERS);t("ol.has.GEOLOCATION",kg,OPENLAYERS);t("ol.has.TOUCH",lg,OPENLAYERS);t("ol.has.WEBGL",bg,OPENLAYERS);eu.prototype.getImage=eu.prototype.a;eu.prototype.load=eu.prototype.load;fu.prototype.getImage=fu.prototype.$a;
+fu.prototype.load=fu.prototype.load;t("ol.Kinetic",Th,OPENLAYERS);t("ol.loadingstrategy.all",fl,OPENLAYERS);t("ol.loadingstrategy.bbox",function(a){return[a]},OPENLAYERS);t("ol.loadingstrategy.tile",function(a){return function(b,c){var d=a.Lb(c),e=pf(a,b,d),f=[],d=[d,0,0];for(d[1]=e.ca;d[1]<=e.ea;++d[1])for(d[2]=e.fa;d[2]<=e.ga;++d[2])f.push(a.Ea(d));return f}},OPENLAYERS);t("ol.Map",Q,OPENLAYERS);Q.prototype.addControl=Q.prototype.uj;Q.prototype.addInteraction=Q.prototype.vj;
+Q.prototype.addLayer=Q.prototype.kg;Q.prototype.addOverlay=Q.prototype.lg;Q.prototype.beforeRender=Q.prototype.Wa;Q.prototype.forEachFeatureAtPixel=Q.prototype.kd;Q.prototype.forEachLayerAtPixel=Q.prototype.Tl;Q.prototype.hasFeatureAtPixel=Q.prototype.kl;Q.prototype.getEventCoordinate=Q.prototype.Wj;Q.prototype.getEventPixel=Q.prototype.Td;Q.prototype.getTarget=Q.prototype.tf;Q.prototype.getTargetElement=Q.prototype.yc;Q.prototype.getCoordinateFromPixel=Q.prototype.Ma;Q.prototype.getControls=Q.prototype.Uj;
+Q.prototype.getOverlays=Q.prototype.nk;Q.prototype.getOverlayById=Q.prototype.mk;Q.prototype.getInteractions=Q.prototype.ak;Q.prototype.getLayerGroup=Q.prototype.xc;Q.prototype.getLayers=Q.prototype.eh;Q.prototype.getPixelFromCoordinate=Q.prototype.Ga;Q.prototype.getSize=Q.prototype.Za;Q.prototype.getView=Q.prototype.aa;Q.prototype.getViewport=Q.prototype.Dk;Q.prototype.renderSync=Q.prototype.Vo;Q.prototype.render=Q.prototype.render;Q.prototype.removeControl=Q.prototype.Oo;
+Q.prototype.removeInteraction=Q.prototype.Po;Q.prototype.removeLayer=Q.prototype.Ro;Q.prototype.removeOverlay=Q.prototype.So;Q.prototype.setLayerGroup=Q.prototype.ji;Q.prototype.setSize=Q.prototype.Wf;Q.prototype.setTarget=Q.prototype.fh;Q.prototype.setView=Q.prototype.kp;Q.prototype.updateSize=Q.prototype.Xc;Vg.prototype.originalEvent=Vg.prototype.originalEvent;Vg.prototype.pixel=Vg.prototype.pixel;Vg.prototype.coordinate=Vg.prototype.coordinate;Vg.prototype.dragging=Vg.prototype.dragging;
+We.prototype.map=We.prototype.map;We.prototype.frameState=We.prototype.frameState;db.prototype.key=db.prototype.key;db.prototype.oldValue=db.prototype.oldValue;t("ol.Object",eb,OPENLAYERS);eb.prototype.get=eb.prototype.get;eb.prototype.getKeys=eb.prototype.N;eb.prototype.getProperties=eb.prototype.O;eb.prototype.set=eb.prototype.set;eb.prototype.setProperties=eb.prototype.G;eb.prototype.unset=eb.prototype.P;t("ol.Observable",bb,OPENLAYERS);t("ol.Observable.unByKey",cb,OPENLAYERS);
+bb.prototype.changed=bb.prototype.u;bb.prototype.dispatchEvent=bb.prototype.b;bb.prototype.getRevision=bb.prototype.K;bb.prototype.on=bb.prototype.I;bb.prototype.once=bb.prototype.L;bb.prototype.un=bb.prototype.J;bb.prototype.unByKey=bb.prototype.M;t("ol.inherits",y,OPENLAYERS);t("ol.Overlay",Xm,OPENLAYERS);Xm.prototype.getElement=Xm.prototype.Sd;Xm.prototype.getId=Xm.prototype.Xa;Xm.prototype.getMap=Xm.prototype.he;Xm.prototype.getOffset=Xm.prototype.Kg;Xm.prototype.getPosition=Xm.prototype.gh;
+Xm.prototype.getPositioning=Xm.prototype.Lg;Xm.prototype.setElement=Xm.prototype.fi;Xm.prototype.setMap=Xm.prototype.setMap;Xm.prototype.setOffset=Xm.prototype.li;Xm.prototype.setPosition=Xm.prototype.uf;Xm.prototype.setPositioning=Xm.prototype.oi;t("ol.render.toContext",function(a,b){var c=a.canvas,d=b?b:{},e=d.pixelRatio||gg;if(d=d.size)c.width=d[0]*e,c.height=d[1]*e,c.style.width=d[0]+"px",c.style.height=d[1]+"px";c=[0,0,c.width,c.height];d=qh(Xc(),0,0,e,e,0,0,0);return new yj(a,e,c,d,0)},OPENLAYERS);
+t("ol.size.toSize",hf,OPENLAYERS);df.prototype.getTileCoord=df.prototype.i;df.prototype.load=df.prototype.load;Kk.prototype.getFormat=Kk.prototype.Ul;Kk.prototype.setFeatures=Kk.prototype.gi;Kk.prototype.setProjection=Kk.prototype.vf;Kk.prototype.setLoader=Kk.prototype.ki;t("ol.View",Rd,OPENLAYERS);Rd.prototype.constrainCenter=Rd.prototype.Pd;Rd.prototype.constrainResolution=Rd.prototype.constrainResolution;Rd.prototype.constrainRotation=Rd.prototype.constrainRotation;Rd.prototype.getCenter=Rd.prototype.ab;
+Rd.prototype.calculateExtent=Rd.prototype.Kc;Rd.prototype.getMaxResolution=Rd.prototype.Vl;Rd.prototype.getMinResolution=Rd.prototype.Wl;Rd.prototype.getProjection=Rd.prototype.Xl;Rd.prototype.getResolution=Rd.prototype.$;Rd.prototype.getResolutions=Rd.prototype.Yl;Rd.prototype.getRotation=Rd.prototype.La;Rd.prototype.getZoom=Rd.prototype.Fk;Rd.prototype.fit=Rd.prototype.cf;Rd.prototype.centerOn=Rd.prototype.Ej;Rd.prototype.rotate=Rd.prototype.rotate;Rd.prototype.setCenter=Rd.prototype.mb;
+Rd.prototype.setResolution=Rd.prototype.Ub;Rd.prototype.setRotation=Rd.prototype.ie;Rd.prototype.setZoom=Rd.prototype.np;t("ol.xml.getAllTextContent",Nk,OPENLAYERS);t("ol.xml.parse",Rk,OPENLAYERS);gm.prototype.getGL=gm.prototype.$n;gm.prototype.useProgram=gm.prototype.we;t("ol.tilegrid.TileGrid",mf,OPENLAYERS);mf.prototype.forEachTileCoord=mf.prototype.yg;mf.prototype.getMaxZoom=mf.prototype.Ig;mf.prototype.getMinZoom=mf.prototype.Jg;mf.prototype.getOrigin=mf.prototype.Ia;
+mf.prototype.getResolution=mf.prototype.$;mf.prototype.getResolutions=mf.prototype.Kh;mf.prototype.getTileCoordExtent=mf.prototype.Ea;mf.prototype.getTileCoordForCoordAndResolution=mf.prototype.Zd;mf.prototype.getTileCoordForCoordAndZ=mf.prototype.qd;mf.prototype.getTileSize=mf.prototype.Ja;mf.prototype.getZForResolution=mf.prototype.Lb;t("ol.tilegrid.createXYZ",yf,OPENLAYERS);t("ol.tilegrid.WMTS",fw,OPENLAYERS);fw.prototype.getMatrixIds=fw.prototype.j;
+t("ol.tilegrid.WMTS.createFromCapabilitiesMatrixSet",gw,OPENLAYERS);t("ol.style.AtlasManager",kw,OPENLAYERS);t("ol.style.Circle",qj,OPENLAYERS);qj.prototype.getFill=qj.prototype.Bn;qj.prototype.getImage=qj.prototype.jc;qj.prototype.getRadius=qj.prototype.Cn;qj.prototype.getStroke=qj.prototype.Dn;t("ol.style.Fill",ij,OPENLAYERS);ij.prototype.getColor=ij.prototype.g;ij.prototype.setColor=ij.prototype.f;t("ol.style.Icon",Dh,OPENLAYERS);Dh.prototype.getAnchor=Dh.prototype.Yb;Dh.prototype.getImage=Dh.prototype.jc;
+Dh.prototype.getOrigin=Dh.prototype.Ia;Dh.prototype.getSrc=Dh.prototype.En;Dh.prototype.getSize=Dh.prototype.Fb;Dh.prototype.load=Dh.prototype.load;t("ol.style.Image",Ch,OPENLAYERS);Ch.prototype.getOpacity=Ch.prototype.qe;Ch.prototype.getRotateWithView=Ch.prototype.Xd;Ch.prototype.getRotation=Ch.prototype.re;Ch.prototype.getScale=Ch.prototype.se;Ch.prototype.getSnapToPixel=Ch.prototype.Yd;Ch.prototype.setOpacity=Ch.prototype.te;Ch.prototype.setRotation=Ch.prototype.ue;Ch.prototype.setScale=Ch.prototype.ve;
+t("ol.style.RegularShape",ow,OPENLAYERS);ow.prototype.getAnchor=ow.prototype.Yb;ow.prototype.getAngle=ow.prototype.Fn;ow.prototype.getFill=ow.prototype.Gn;ow.prototype.getImage=ow.prototype.jc;ow.prototype.getOrigin=ow.prototype.Ia;ow.prototype.getPoints=ow.prototype.Hn;ow.prototype.getRadius=ow.prototype.In;ow.prototype.getRadius2=ow.prototype.uk;ow.prototype.getSize=ow.prototype.Fb;ow.prototype.getStroke=ow.prototype.Jn;t("ol.style.Stroke",oj,OPENLAYERS);oj.prototype.getColor=oj.prototype.Kn;
+oj.prototype.getLineCap=oj.prototype.dk;oj.prototype.getLineDash=oj.prototype.Ln;oj.prototype.getLineJoin=oj.prototype.ek;oj.prototype.getMiterLimit=oj.prototype.jk;oj.prototype.getWidth=oj.prototype.Mn;oj.prototype.setColor=oj.prototype.Nn;oj.prototype.setLineCap=oj.prototype.fp;oj.prototype.setLineDash=oj.prototype.On;oj.prototype.setLineJoin=oj.prototype.gp;oj.prototype.setMiterLimit=oj.prototype.hp;oj.prototype.setWidth=oj.prototype.lp;t("ol.style.Style",rj,OPENLAYERS);
+rj.prototype.getGeometry=rj.prototype.W;rj.prototype.getGeometryFunction=rj.prototype.Zj;rj.prototype.getFill=rj.prototype.Pn;rj.prototype.getImage=rj.prototype.Qn;rj.prototype.getStroke=rj.prototype.Rn;rj.prototype.getText=rj.prototype.Ha;rj.prototype.getZIndex=rj.prototype.Sn;rj.prototype.setGeometry=rj.prototype.Jh;rj.prototype.setZIndex=rj.prototype.Tn;t("ol.style.Text",Gp,OPENLAYERS);Gp.prototype.getFont=Gp.prototype.Xj;Gp.prototype.getOffsetX=Gp.prototype.kk;Gp.prototype.getOffsetY=Gp.prototype.lk;
+Gp.prototype.getFill=Gp.prototype.Un;Gp.prototype.getRotation=Gp.prototype.Vn;Gp.prototype.getScale=Gp.prototype.Wn;Gp.prototype.getStroke=Gp.prototype.Xn;Gp.prototype.getText=Gp.prototype.Ha;Gp.prototype.getTextAlign=Gp.prototype.yk;Gp.prototype.getTextBaseline=Gp.prototype.zk;Gp.prototype.setFont=Gp.prototype.bp;Gp.prototype.setOffsetX=Gp.prototype.mi;Gp.prototype.setOffsetY=Gp.prototype.ni;Gp.prototype.setFill=Gp.prototype.ap;Gp.prototype.setRotation=Gp.prototype.Yn;Gp.prototype.setScale=Gp.prototype.Zn;
+Gp.prototype.setStroke=Gp.prototype.ip;Gp.prototype.setText=Gp.prototype.pi;Gp.prototype.setTextAlign=Gp.prototype.ri;Gp.prototype.setTextBaseline=Gp.prototype.jp;t("ol.Sphere",sc,OPENLAYERS);sc.prototype.geodesicArea=sc.prototype.a;sc.prototype.haversineDistance=sc.prototype.b;t("ol.source.BingMaps",pv,OPENLAYERS);t("ol.source.BingMaps.TOS_ATTRIBUTION",qv,OPENLAYERS);t("ol.source.CartoDB",sv,OPENLAYERS);sv.prototype.getConfig=sv.prototype.Tj;sv.prototype.updateConfig=sv.prototype.up;
+sv.prototype.setConfig=sv.prototype.$o;t("ol.source.Cluster",Y,OPENLAYERS);Y.prototype.getSource=Y.prototype.Aa;t("ol.source.ImageArcGISRest",yv,OPENLAYERS);yv.prototype.getParams=yv.prototype.Sm;yv.prototype.getImageLoadFunction=yv.prototype.Rm;yv.prototype.getUrl=yv.prototype.Tm;yv.prototype.setImageLoadFunction=yv.prototype.Um;yv.prototype.setUrl=yv.prototype.Vm;yv.prototype.updateParams=yv.prototype.Wm;t("ol.source.ImageCanvas",Hk,OPENLAYERS);t("ol.source.ImageMapGuide",zv,OPENLAYERS);
+zv.prototype.getParams=zv.prototype.Ym;zv.prototype.getImageLoadFunction=zv.prototype.Xm;zv.prototype.updateParams=zv.prototype.$m;zv.prototype.setImageLoadFunction=zv.prototype.Zm;t("ol.source.Image",Ak,OPENLAYERS);Ck.prototype.image=Ck.prototype.image;t("ol.source.ImageStatic",Av,OPENLAYERS);t("ol.source.ImageVector",yl,OPENLAYERS);yl.prototype.getSource=yl.prototype.an;yl.prototype.getStyle=yl.prototype.bn;yl.prototype.getStyleFunction=yl.prototype.cn;yl.prototype.setStyle=yl.prototype.xh;
+t("ol.source.ImageWMS",Bv,OPENLAYERS);Bv.prototype.getGetFeatureInfoUrl=Bv.prototype.fn;Bv.prototype.getParams=Bv.prototype.hn;Bv.prototype.getImageLoadFunction=Bv.prototype.gn;Bv.prototype.getUrl=Bv.prototype.jn;Bv.prototype.setImageLoadFunction=Bv.prototype.kn;Bv.prototype.setUrl=Bv.prototype.ln;Bv.prototype.updateParams=Bv.prototype.mn;t("ol.source.OSM",Fv,OPENLAYERS);t("ol.source.OSM.ATTRIBUTION",Gv,OPENLAYERS);t("ol.source.Raster",Hv,OPENLAYERS);Hv.prototype.setOperation=Hv.prototype.v;
+Mv.prototype.extent=Mv.prototype.extent;Mv.prototype.resolution=Mv.prototype.resolution;Mv.prototype.data=Mv.prototype.data;t("ol.source.Source",jf,OPENLAYERS);jf.prototype.getAttributions=jf.prototype.wa;jf.prototype.getLogo=jf.prototype.ua;jf.prototype.getProjection=jf.prototype.xa;jf.prototype.getState=jf.prototype.V;jf.prototype.refresh=jf.prototype.sa;jf.prototype.setAttributions=jf.prototype.oa;t("ol.source.Stamen",Rv,OPENLAYERS);t("ol.source.TileArcGISRest",Tv,OPENLAYERS);
+Tv.prototype.getParams=Tv.prototype.v;Tv.prototype.updateParams=Tv.prototype.A;t("ol.source.TileDebug",Vv,OPENLAYERS);t("ol.source.TileImage",W,OPENLAYERS);W.prototype.setRenderReprojectionEdges=W.prototype.zb;W.prototype.setTileGridForProjection=W.prototype.Ab;t("ol.source.TileJSON",Wv,OPENLAYERS);Wv.prototype.getTileJSON=Wv.prototype.Ak;t("ol.source.Tile",zf,OPENLAYERS);zf.prototype.getTileGrid=zf.prototype.Na;Df.prototype.tile=Df.prototype.tile;t("ol.source.TileUTFGrid",Xv,OPENLAYERS);
+Xv.prototype.getTemplate=Xv.prototype.xk;Xv.prototype.forDataAtCoordinateAndResolution=Xv.prototype.Ij;t("ol.source.TileWMS",aw,OPENLAYERS);aw.prototype.getGetFeatureInfoUrl=aw.prototype.vn;aw.prototype.getParams=aw.prototype.wn;aw.prototype.updateParams=aw.prototype.xn;Jl.prototype.getTileLoadFunction=Jl.prototype.fb;Jl.prototype.getTileUrlFunction=Jl.prototype.gb;Jl.prototype.getUrls=Jl.prototype.hb;Jl.prototype.setTileLoadFunction=Jl.prototype.kb;Jl.prototype.setTileUrlFunction=Jl.prototype.Qa;
+Jl.prototype.setUrl=Jl.prototype.Va;Jl.prototype.setUrls=Jl.prototype.bb;t("ol.source.Vector",P,OPENLAYERS);P.prototype.addFeature=P.prototype.rb;P.prototype.addFeatures=P.prototype.Jc;P.prototype.clear=P.prototype.clear;P.prototype.forEachFeature=P.prototype.wg;P.prototype.forEachFeatureInExtent=P.prototype.ub;P.prototype.forEachFeatureIntersectingExtent=P.prototype.xg;P.prototype.getFeaturesCollection=P.prototype.Fg;P.prototype.getFeatures=P.prototype.oe;P.prototype.getFeaturesAtCoordinate=P.prototype.Eg;
+P.prototype.getFeaturesInExtent=P.prototype.ef;P.prototype.getClosestFeatureToCoordinate=P.prototype.Ag;P.prototype.getExtent=P.prototype.H;P.prototype.getFeatureById=P.prototype.Dg;P.prototype.getFormat=P.prototype.Ch;P.prototype.getUrl=P.prototype.Dh;P.prototype.removeFeature=P.prototype.nb;vl.prototype.feature=vl.prototype.feature;t("ol.source.VectorTile",Kl,OPENLAYERS);t("ol.source.WMTS",Z,OPENLAYERS);Z.prototype.getDimensions=Z.prototype.Vj;Z.prototype.getFormat=Z.prototype.yn;
+Z.prototype.getLayer=Z.prototype.zn;Z.prototype.getMatrixSet=Z.prototype.hk;Z.prototype.getRequestEncoding=Z.prototype.vk;Z.prototype.getStyle=Z.prototype.An;Z.prototype.getVersion=Z.prototype.Ck;Z.prototype.updateDimensions=Z.prototype.vp;
+t("ol.source.WMTS.optionsFromCapabilities",function(a,b){var c=ob(a.Contents.Layer,function(a){return a.Identifier==b.layer}),d=a.Contents.TileMatrixSet,e,f;e=1<c.TileMatrixSetLink.length?"projection"in b?sb(c.TileMatrixSetLink,function(a){return ob(d,function(b){return b.Identifier==a.TileMatrixSet}).SupportedCRS.replace(/urn:ogc:def:crs:(\w+):(.*:)?(\w+)$/,"$1:$3")==b.projection}):sb(c.TileMatrixSetLink,function(a){return a.TileMatrixSet==b.matrixSet}):0;0>e&&(e=0);f=c.TileMatrixSetLink[e].TileMatrixSet;
+var g=c.Format[0];"format"in b&&(g=b.format);e=sb(c.Style,function(a){return"style"in b?a.Title==b.style:a.isDefault});0>e&&(e=0);e=c.Style[e].Identifier;var h={};"Dimension"in c&&c.Dimension.forEach(function(a){var b=a.Identifier,c=a.Default;void 0===c&&(c=a.Value[0]);h[b]=c});var l=ob(a.Contents.TileMatrixSet,function(a){return a.Identifier==f}),m;m="projection"in b?yc(b.projection):yc(l.SupportedCRS.replace(/urn:ogc:def:crs:(\w+):(.*:)?(\w+)$/,"$1:$3"));var n=c.WGS84BoundingBox,p,q;void 0!==n&&
+(q=yc("EPSG:4326").H(),q=n[0]==q[0]&&n[2]==q[2],p=Sc(n,"EPSG:4326",m),(n=m.H())&&(Ub(n,p)||(p=void 0)));var l=gw(l,p),r=[];p=b.requestEncoding;p=void 0!==p?p:"";if("OperationsMetadata"in a&&"GetTile"in a.OperationsMetadata)for(var n=a.OperationsMetadata.GetTile.DCP.HTTP.Get,u=0,x=n.length;u<x;++u){var v=ob(n[u].Constraint,function(a){return"GetEncoding"==a.name}).AllowedValues.Value;""===p&&(p=v[0]);if("KVP"===p)jb(v,"KVP")&&r.push(n[u].href);else break}0===r.length&&(p="REST",c.ResourceURL.forEach(function(a){"tile"===
+a.resourceType&&(g=a.format,r.push(a.template))}));return{urls:r,layer:b.layer,matrixSet:f,format:g,projection:m,requestEncoding:p,tileGrid:l,style:e,dimensions:h,wrapX:q}},OPENLAYERS);t("ol.source.XYZ",rv,OPENLAYERS);t("ol.source.Zoomify",iw,OPENLAYERS);lh.prototype.vectorContext=lh.prototype.vectorContext;lh.prototype.frameState=lh.prototype.frameState;lh.prototype.context=lh.prototype.context;lh.prototype.glContext=lh.prototype.glContext;hk.prototype.get=hk.prototype.get;
+hk.prototype.getExtent=hk.prototype.H;hk.prototype.getGeometry=hk.prototype.W;hk.prototype.getProperties=hk.prototype.Nm;hk.prototype.getType=hk.prototype.X;t("ol.render.VectorContext",kh,OPENLAYERS);Cm.prototype.setStyle=Cm.prototype.sd;Cm.prototype.drawGeometry=Cm.prototype.sc;Cm.prototype.drawFeature=Cm.prototype.Ye;yj.prototype.drawCircle=yj.prototype.Rd;yj.prototype.setStyle=yj.prototype.sd;yj.prototype.drawGeometry=yj.prototype.sc;yj.prototype.drawFeature=yj.prototype.Ye;
+t("ol.proj.common.add",bj,OPENLAYERS);t("ol.proj.METERS_PER_UNIT",uc,OPENLAYERS);t("ol.proj.Projection",vc,OPENLAYERS);vc.prototype.getCode=vc.prototype.Sj;vc.prototype.getExtent=vc.prototype.H;vc.prototype.getUnits=vc.prototype.wb;vc.prototype.getMetersPerUnit=vc.prototype.$b;vc.prototype.getWorldExtent=vc.prototype.Ek;vc.prototype.isGlobal=vc.prototype.pl;vc.prototype.setGlobal=vc.prototype.ep;vc.prototype.setExtent=vc.prototype.Mm;vc.prototype.setWorldExtent=vc.prototype.mp;
+vc.prototype.setGetPointResolution=vc.prototype.cp;vc.prototype.getPointResolution=vc.prototype.getPointResolution;t("ol.proj.setProj4",function(a){xc=a},OPENLAYERS);t("ol.proj.addEquivalentProjections",zc,OPENLAYERS);t("ol.proj.addProjection",Lc,OPENLAYERS);t("ol.proj.addCoordinateTransforms",Ac,OPENLAYERS);t("ol.proj.fromLonLat",function(a,b){return Rc(a,"EPSG:4326",void 0!==b?b:"EPSG:3857")},OPENLAYERS);t("ol.proj.toLonLat",function(a,b){return Rc(a,void 0!==b?b:"EPSG:3857","EPSG:4326")},OPENLAYERS);
+t("ol.proj.get",yc,OPENLAYERS);t("ol.proj.equivalent",Oc,OPENLAYERS);t("ol.proj.getTransform",Pc,OPENLAYERS);t("ol.proj.transform",Rc,OPENLAYERS);t("ol.proj.transformExtent",Sc,OPENLAYERS);t("ol.layer.Heatmap",V,OPENLAYERS);V.prototype.getBlur=V.prototype.zg;V.prototype.getGradient=V.prototype.Gg;V.prototype.getRadius=V.prototype.ph;V.prototype.setBlur=V.prototype.di;V.prototype.setGradient=V.prototype.ii;V.prototype.setRadius=V.prototype.qh;t("ol.layer.Image",cj,OPENLAYERS);
+cj.prototype.getSource=cj.prototype.ha;t("ol.layer.Layer",mh,OPENLAYERS);mh.prototype.getSource=mh.prototype.ha;mh.prototype.setMap=mh.prototype.setMap;mh.prototype.setSource=mh.prototype.Fc;t("ol.layer.Base",ih,OPENLAYERS);ih.prototype.getExtent=ih.prototype.H;ih.prototype.getMaxResolution=ih.prototype.Nb;ih.prototype.getMinResolution=ih.prototype.Ob;ih.prototype.getOpacity=ih.prototype.Pb;ih.prototype.getVisible=ih.prototype.xb;ih.prototype.getZIndex=ih.prototype.Qb;ih.prototype.setExtent=ih.prototype.fc;
+ih.prototype.setMaxResolution=ih.prototype.nc;ih.prototype.setMinResolution=ih.prototype.oc;ih.prototype.setOpacity=ih.prototype.gc;ih.prototype.setVisible=ih.prototype.hc;ih.prototype.setZIndex=ih.prototype.ic;t("ol.layer.Group",Ti,OPENLAYERS);Ti.prototype.getLayers=Ti.prototype.Tc;Ti.prototype.setLayers=Ti.prototype.oh;t("ol.layer.Tile",dj,OPENLAYERS);dj.prototype.getPreload=dj.prototype.f;dj.prototype.getSource=dj.prototype.ha;dj.prototype.setPreload=dj.prototype.l;
+dj.prototype.getUseInterimTilesOnError=dj.prototype.c;dj.prototype.setUseInterimTilesOnError=dj.prototype.A;t("ol.layer.Vector",G,OPENLAYERS);G.prototype.getSource=G.prototype.ha;G.prototype.getStyle=G.prototype.C;G.prototype.getStyleFunction=G.prototype.D;G.prototype.setStyle=G.prototype.l;t("ol.layer.VectorTile",I,OPENLAYERS);I.prototype.getPreload=I.prototype.f;I.prototype.getUseInterimTilesOnError=I.prototype.c;I.prototype.setPreload=I.prototype.Y;I.prototype.setUseInterimTilesOnError=I.prototype.ia;
+t("ol.interaction.DoubleClickZoom",Zh,OPENLAYERS);t("ol.interaction.DoubleClickZoom.handleEvent",$h,OPENLAYERS);t("ol.interaction.DragAndDrop",hu,OPENLAYERS);t("ol.interaction.DragAndDrop.handleEvent",qc,OPENLAYERS);ku.prototype.features=ku.prototype.features;ku.prototype.file=ku.prototype.file;ku.prototype.projection=ku.prototype.projection;xi.prototype.coordinate=xi.prototype.coordinate;xi.prototype.mapBrowserEvent=xi.prototype.mapBrowserEvent;t("ol.interaction.DragBox",yi,OPENLAYERS);
+yi.prototype.getGeometry=yi.prototype.W;t("ol.interaction.DragPan",mi,OPENLAYERS);t("ol.interaction.DragRotateAndZoom",mu,OPENLAYERS);t("ol.interaction.DragRotate",qi,OPENLAYERS);t("ol.interaction.DragZoom",Di,OPENLAYERS);qu.prototype.feature=qu.prototype.feature;t("ol.interaction.Draw",ru,OPENLAYERS);t("ol.interaction.Draw.handleEvent",tu,OPENLAYERS);ru.prototype.removeLastPoint=ru.prototype.Qo;ru.prototype.finishDrawing=ru.prototype.jd;ru.prototype.extend=ru.prototype.rm;
+t("ol.interaction.Draw.createRegularPolygon",function(a,b){return function(c,d){var e=c[0],f=c[1],g=Math.sqrt(Hb(e,f)),h=d?d:Pd(new Vt(e),a);Qd(h,e,g,b?b:Math.atan((f[1]-e[1])/(f[0]-e[0])));return h}},OPENLAYERS);t("ol.interaction.Interaction",Vh,OPENLAYERS);Vh.prototype.getActive=Vh.prototype.f;Vh.prototype.getMap=Vh.prototype.l;Vh.prototype.setActive=Vh.prototype.i;t("ol.interaction.defaults",Si,OPENLAYERS);t("ol.interaction.KeyboardPan",Ei,OPENLAYERS);
+t("ol.interaction.KeyboardPan.handleEvent",Fi,OPENLAYERS);t("ol.interaction.KeyboardZoom",Gi,OPENLAYERS);t("ol.interaction.KeyboardZoom.handleEvent",Hi,OPENLAYERS);Hu.prototype.features=Hu.prototype.features;Hu.prototype.mapBrowserEvent=Hu.prototype.mapBrowserEvent;t("ol.interaction.Modify",Iu,OPENLAYERS);t("ol.interaction.Modify.handleEvent",Lu,OPENLAYERS);Iu.prototype.removePoint=Iu.prototype.ai;t("ol.interaction.MouseWheelZoom",Ii,OPENLAYERS);t("ol.interaction.MouseWheelZoom.handleEvent",Ji,OPENLAYERS);
+Ii.prototype.setMouseAnchor=Ii.prototype.D;t("ol.interaction.PinchRotate",Ki,OPENLAYERS);t("ol.interaction.PinchZoom",Oi,OPENLAYERS);t("ol.interaction.Pointer",ji,OPENLAYERS);t("ol.interaction.Pointer.handleEvent",ki,OPENLAYERS);Vu.prototype.selected=Vu.prototype.selected;Vu.prototype.deselected=Vu.prototype.deselected;Vu.prototype.mapBrowserEvent=Vu.prototype.mapBrowserEvent;t("ol.interaction.Select",Wu,OPENLAYERS);Wu.prototype.getFeatures=Wu.prototype.Bm;Wu.prototype.getLayer=Wu.prototype.Cm;
+t("ol.interaction.Select.handleEvent",Xu,OPENLAYERS);Wu.prototype.setMap=Wu.prototype.setMap;t("ol.interaction.Snap",Zu,OPENLAYERS);Zu.prototype.addFeature=Zu.prototype.rb;Zu.prototype.removeFeature=Zu.prototype.nb;cv.prototype.features=cv.prototype.features;cv.prototype.coordinate=cv.prototype.coordinate;t("ol.interaction.Translate",dv,OPENLAYERS);t("ol.geom.Circle",Vt,OPENLAYERS);Vt.prototype.clone=Vt.prototype.clone;Vt.prototype.getCenter=Vt.prototype.rd;Vt.prototype.getRadius=Vt.prototype.wf;
+Vt.prototype.getType=Vt.prototype.X;Vt.prototype.intersectsExtent=Vt.prototype.Ka;Vt.prototype.setCenter=Vt.prototype.jm;Vt.prototype.setCenterAndRadius=Vt.prototype.Vf;Vt.prototype.setRadius=Vt.prototype.km;Vt.prototype.transform=Vt.prototype.jb;t("ol.geom.Geometry",Tc,OPENLAYERS);Tc.prototype.getClosestPoint=Tc.prototype.vb;Tc.prototype.getExtent=Tc.prototype.H;Tc.prototype.rotate=Tc.prototype.rotate;Tc.prototype.simplify=Tc.prototype.Bb;Tc.prototype.transform=Tc.prototype.jb;
+t("ol.geom.GeometryCollection",Ln,OPENLAYERS);Ln.prototype.clone=Ln.prototype.clone;Ln.prototype.getGeometries=Ln.prototype.ff;Ln.prototype.getType=Ln.prototype.X;Ln.prototype.intersectsExtent=Ln.prototype.Ka;Ln.prototype.setGeometries=Ln.prototype.hi;Ln.prototype.applyTransform=Ln.prototype.rc;Ln.prototype.translate=Ln.prototype.Sc;t("ol.geom.LinearRing",zd,OPENLAYERS);zd.prototype.clone=zd.prototype.clone;zd.prototype.getArea=zd.prototype.nm;zd.prototype.getCoordinates=zd.prototype.Z;
+zd.prototype.getType=zd.prototype.X;zd.prototype.setCoordinates=zd.prototype.pa;t("ol.geom.LineString",R,OPENLAYERS);R.prototype.appendCoordinate=R.prototype.wj;R.prototype.clone=R.prototype.clone;R.prototype.forEachSegment=R.prototype.Lj;R.prototype.getCoordinateAtM=R.prototype.lm;R.prototype.getCoordinates=R.prototype.Z;R.prototype.getCoordinateAt=R.prototype.Bg;R.prototype.getLength=R.prototype.mm;R.prototype.getType=R.prototype.X;R.prototype.intersectsExtent=R.prototype.Ka;
+R.prototype.setCoordinates=R.prototype.pa;t("ol.geom.MultiLineString",S,OPENLAYERS);S.prototype.appendLineString=S.prototype.xj;S.prototype.clone=S.prototype.clone;S.prototype.getCoordinateAtM=S.prototype.om;S.prototype.getCoordinates=S.prototype.Z;S.prototype.getLineString=S.prototype.fk;S.prototype.getLineStrings=S.prototype.md;S.prototype.getType=S.prototype.X;S.prototype.intersectsExtent=S.prototype.Ka;S.prototype.setCoordinates=S.prototype.pa;t("ol.geom.MultiPoint",Bn,OPENLAYERS);
+Bn.prototype.appendPoint=Bn.prototype.zj;Bn.prototype.clone=Bn.prototype.clone;Bn.prototype.getCoordinates=Bn.prototype.Z;Bn.prototype.getPoint=Bn.prototype.rk;Bn.prototype.getPoints=Bn.prototype.je;Bn.prototype.getType=Bn.prototype.X;Bn.prototype.intersectsExtent=Bn.prototype.Ka;Bn.prototype.setCoordinates=Bn.prototype.pa;t("ol.geom.MultiPolygon",T,OPENLAYERS);T.prototype.appendPolygon=T.prototype.Aj;T.prototype.clone=T.prototype.clone;T.prototype.getArea=T.prototype.pm;
+T.prototype.getCoordinates=T.prototype.Z;T.prototype.getInteriorPoints=T.prototype.ck;T.prototype.getPolygon=T.prototype.tk;T.prototype.getPolygons=T.prototype.Wd;T.prototype.getType=T.prototype.X;T.prototype.intersectsExtent=T.prototype.Ka;T.prototype.setCoordinates=T.prototype.pa;t("ol.geom.Point",C,OPENLAYERS);C.prototype.clone=C.prototype.clone;C.prototype.getCoordinates=C.prototype.Z;C.prototype.getType=C.prototype.X;C.prototype.intersectsExtent=C.prototype.Ka;C.prototype.setCoordinates=C.prototype.pa;
+t("ol.geom.Polygon",E,OPENLAYERS);E.prototype.appendLinearRing=E.prototype.yj;E.prototype.clone=E.prototype.clone;E.prototype.getArea=E.prototype.qm;E.prototype.getCoordinates=E.prototype.Z;E.prototype.getInteriorPoint=E.prototype.bk;E.prototype.getLinearRingCount=E.prototype.gk;E.prototype.getLinearRing=E.prototype.Hg;E.prototype.getLinearRings=E.prototype.Vd;E.prototype.getType=E.prototype.X;E.prototype.intersectsExtent=E.prototype.Ka;E.prototype.setCoordinates=E.prototype.pa;
+t("ol.geom.Polygon.circular",Nd,OPENLAYERS);t("ol.geom.Polygon.fromExtent",Od,OPENLAYERS);t("ol.geom.Polygon.fromCircle",Pd,OPENLAYERS);t("ol.geom.SimpleGeometry",hd,OPENLAYERS);hd.prototype.getFirstCoordinate=hd.prototype.Ib;hd.prototype.getLastCoordinate=hd.prototype.Jb;hd.prototype.getLayout=hd.prototype.Kb;hd.prototype.applyTransform=hd.prototype.rc;hd.prototype.translate=hd.prototype.Sc;t("ol.format.EsriJSON",En,OPENLAYERS);En.prototype.readFeature=En.prototype.Rb;En.prototype.readFeatures=En.prototype.Fa;
+En.prototype.readGeometry=En.prototype.Vc;En.prototype.readProjection=En.prototype.Oa;En.prototype.writeGeometry=En.prototype.Zc;En.prototype.writeGeometryObject=En.prototype.Ke;En.prototype.writeFeature=En.prototype.Dd;En.prototype.writeFeatureObject=En.prototype.Yc;En.prototype.writeFeatures=En.prototype.Xb;En.prototype.writeFeaturesObject=En.prototype.Ie;t("ol.format.Feature",rn,OPENLAYERS);t("ol.format.GeoJSON",Pn,OPENLAYERS);Pn.prototype.readFeature=Pn.prototype.Rb;
+Pn.prototype.readFeatures=Pn.prototype.Fa;Pn.prototype.readGeometry=Pn.prototype.Vc;Pn.prototype.readProjection=Pn.prototype.Oa;Pn.prototype.writeFeature=Pn.prototype.Dd;Pn.prototype.writeFeatureObject=Pn.prototype.Yc;Pn.prototype.writeFeatures=Pn.prototype.Xb;Pn.prototype.writeFeaturesObject=Pn.prototype.Ie;Pn.prototype.writeGeometry=Pn.prototype.Zc;Pn.prototype.writeGeometryObject=Pn.prototype.Ke;t("ol.format.GPX",uo,OPENLAYERS);uo.prototype.readFeature=uo.prototype.Rb;
+uo.prototype.readFeatures=uo.prototype.Fa;uo.prototype.readProjection=uo.prototype.Oa;uo.prototype.writeFeatures=uo.prototype.Xb;uo.prototype.writeFeaturesNode=uo.prototype.a;t("ol.format.IGC",dp,OPENLAYERS);dp.prototype.readFeature=dp.prototype.Rb;dp.prototype.readFeatures=dp.prototype.Fa;dp.prototype.readProjection=dp.prototype.Oa;t("ol.format.KML",Hp,OPENLAYERS);Hp.prototype.readFeature=Hp.prototype.Rb;Hp.prototype.readFeatures=Hp.prototype.Fa;Hp.prototype.readName=Hp.prototype.Fo;
+Hp.prototype.readNetworkLinks=Hp.prototype.Go;Hp.prototype.readProjection=Hp.prototype.Oa;Hp.prototype.writeFeatures=Hp.prototype.Xb;Hp.prototype.writeFeaturesNode=Hp.prototype.a;t("ol.format.MVT",wr,OPENLAYERS);wr.prototype.readFeatures=wr.prototype.Fa;wr.prototype.readProjection=wr.prototype.Oa;wr.prototype.setLayers=wr.prototype.c;t("ol.format.OSMXML",Sr,OPENLAYERS);Sr.prototype.readFeatures=Sr.prototype.Fa;Sr.prototype.readProjection=Sr.prototype.Oa;t("ol.format.Polyline",qs,OPENLAYERS);
+t("ol.format.Polyline.encodeDeltas",rs,OPENLAYERS);t("ol.format.Polyline.decodeDeltas",ts,OPENLAYERS);t("ol.format.Polyline.encodeFloats",ss,OPENLAYERS);t("ol.format.Polyline.decodeFloats",us,OPENLAYERS);qs.prototype.readFeature=qs.prototype.Rb;qs.prototype.readFeatures=qs.prototype.Fa;qs.prototype.readGeometry=qs.prototype.Vc;qs.prototype.readProjection=qs.prototype.Oa;qs.prototype.writeGeometry=qs.prototype.Zc;t("ol.format.TopoJSON",ws,OPENLAYERS);ws.prototype.readFeatures=ws.prototype.Fa;
+ws.prototype.readProjection=ws.prototype.Oa;t("ol.format.WFS",Cs,OPENLAYERS);Cs.prototype.readFeatures=Cs.prototype.Fa;Cs.prototype.readTransactionResponse=Cs.prototype.o;Cs.prototype.readFeatureCollectionMetadata=Cs.prototype.l;Cs.prototype.writeGetFeature=Cs.prototype.j;Cs.prototype.writeTransaction=Cs.prototype.U;Cs.prototype.readProjection=Cs.prototype.Oa;t("ol.format.WKT",Ts,OPENLAYERS);Ts.prototype.readFeature=Ts.prototype.Rb;Ts.prototype.readFeatures=Ts.prototype.Fa;
+Ts.prototype.readGeometry=Ts.prototype.Vc;Ts.prototype.writeFeature=Ts.prototype.Dd;Ts.prototype.writeFeatures=Ts.prototype.Xb;Ts.prototype.writeGeometry=Ts.prototype.Zc;t("ol.format.WMSCapabilities",jt,OPENLAYERS);jt.prototype.read=jt.prototype.read;t("ol.format.WMSGetFeatureInfo",Gt,OPENLAYERS);Gt.prototype.readFeatures=Gt.prototype.Fa;t("ol.format.WMTSCapabilities",Ht,OPENLAYERS);Ht.prototype.read=Ht.prototype.read;t("ol.format.ogc.filter.and",yr,OPENLAYERS);
+t("ol.format.ogc.filter.or",function(a,b){return new Fr(a,b)},OPENLAYERS);t("ol.format.ogc.filter.not",function(a){return new Gr(a)},OPENLAYERS);t("ol.format.ogc.filter.bbox",Ar,OPENLAYERS);t("ol.format.ogc.filter.equalTo",function(a,b,c){return new Jr(a,b,c)},OPENLAYERS);t("ol.format.ogc.filter.notEqualTo",function(a,b,c){return new Kr(a,b,c)},OPENLAYERS);t("ol.format.ogc.filter.lessThan",function(a,b){return new Lr(a,b)},OPENLAYERS);
+t("ol.format.ogc.filter.lessThanOrEqualTo",function(a,b){return new Mr(a,b)},OPENLAYERS);t("ol.format.ogc.filter.greaterThan",function(a,b){return new Nr(a,b)},OPENLAYERS);t("ol.format.ogc.filter.greaterThanOrEqualTo",function(a,b){return new Or(a,b)},OPENLAYERS);t("ol.format.ogc.filter.isNull",function(a){return new Pr(a)},OPENLAYERS);t("ol.format.ogc.filter.between",function(a,b,c){return new Qr(a,b,c)},OPENLAYERS);
+t("ol.format.ogc.filter.like",function(a,b,c,d,e,f){return new Rr(a,b,c,d,e,f)},OPENLAYERS);t("ol.format.ogc.filter.Filter",Cr,OPENLAYERS);t("ol.format.ogc.filter.And",zr,OPENLAYERS);t("ol.format.ogc.filter.Or",Fr,OPENLAYERS);t("ol.format.ogc.filter.Not",Gr,OPENLAYERS);t("ol.format.ogc.filter.Bbox",Br,OPENLAYERS);t("ol.format.ogc.filter.Comparison",Hr,OPENLAYERS);t("ol.format.ogc.filter.ComparisonBinary",Ir,OPENLAYERS);t("ol.format.ogc.filter.EqualTo",Jr,OPENLAYERS);
+t("ol.format.ogc.filter.NotEqualTo",Kr,OPENLAYERS);t("ol.format.ogc.filter.LessThan",Lr,OPENLAYERS);t("ol.format.ogc.filter.LessThanOrEqualTo",Mr,OPENLAYERS);t("ol.format.ogc.filter.GreaterThan",Nr,OPENLAYERS);t("ol.format.ogc.filter.GreaterThanOrEqualTo",Or,OPENLAYERS);t("ol.format.ogc.filter.IsNull",Pr,OPENLAYERS);t("ol.format.ogc.filter.IsBetween",Qr,OPENLAYERS);t("ol.format.ogc.filter.IsLike",Rr,OPENLAYERS);t("ol.format.GML2",ko,OPENLAYERS);t("ol.format.GML3",lo,OPENLAYERS);
+lo.prototype.writeGeometryNode=lo.prototype.s;lo.prototype.writeFeatures=lo.prototype.Xb;lo.prototype.writeFeaturesNode=lo.prototype.a;t("ol.format.GML",lo,OPENLAYERS);lo.prototype.writeFeatures=lo.prototype.Xb;lo.prototype.writeFeaturesNode=lo.prototype.a;Xn.prototype.readFeatures=Xn.prototype.Fa;t("ol.events.condition.altKeyOnly",function(a){a=a.originalEvent;return a.altKey&&!(a.metaKey||a.ctrlKey)&&!a.shiftKey},OPENLAYERS);t("ol.events.condition.altShiftKeysOnly",ai,OPENLAYERS);
+t("ol.events.condition.always",qc,OPENLAYERS);t("ol.events.condition.click",function(a){return a.type==Zg},OPENLAYERS);t("ol.events.condition.never",rc,OPENLAYERS);t("ol.events.condition.pointerMove",ci,OPENLAYERS);t("ol.events.condition.singleClick",di,OPENLAYERS);t("ol.events.condition.doubleClick",function(a){return a.type==$g},OPENLAYERS);t("ol.events.condition.noModifierKeys",ei,OPENLAYERS);
+t("ol.events.condition.platformModifierKeyOnly",function(a){a=a.originalEvent;return!a.altKey&&(fg?a.metaKey:a.ctrlKey)&&!a.shiftKey},OPENLAYERS);t("ol.events.condition.shiftKeyOnly",fi,OPENLAYERS);t("ol.events.condition.targetNotEditable",gi,OPENLAYERS);t("ol.events.condition.mouseOnly",hi,OPENLAYERS);t("ol.events.condition.primaryAction",ii,OPENLAYERS);Wa.prototype.type=Wa.prototype.type;Wa.prototype.target=Wa.prototype.target;Wa.prototype.preventDefault=Wa.prototype.preventDefault;
+Wa.prototype.stopPropagation=Wa.prototype.stopPropagation;t("ol.control.Attribution",Ef,OPENLAYERS);t("ol.control.Attribution.render",Ff,OPENLAYERS);Ef.prototype.getCollapsible=Ef.prototype.$l;Ef.prototype.setCollapsible=Ef.prototype.cm;Ef.prototype.setCollapsed=Ef.prototype.bm;Ef.prototype.getCollapsed=Ef.prototype.Zl;t("ol.control.Control",Xe,OPENLAYERS);Xe.prototype.getMap=Xe.prototype.i;Xe.prototype.setMap=Xe.prototype.setMap;Xe.prototype.setTarget=Xe.prototype.c;t("ol.control.defaults",Kf,OPENLAYERS);
+t("ol.control.FullScreen",Lf,OPENLAYERS);t("ol.control.MousePosition",Qf,OPENLAYERS);t("ol.control.MousePosition.render",Rf,OPENLAYERS);Qf.prototype.getCoordinateFormat=Qf.prototype.Cg;Qf.prototype.getProjection=Qf.prototype.hh;Qf.prototype.setCoordinateFormat=Qf.prototype.ei;Qf.prototype.setProjection=Qf.prototype.ih;t("ol.control.OverviewMap",an,OPENLAYERS);t("ol.control.OverviewMap.render",bn,OPENLAYERS);an.prototype.getCollapsible=an.prototype.fm;an.prototype.setCollapsible=an.prototype.im;
+an.prototype.setCollapsed=an.prototype.hm;an.prototype.getCollapsed=an.prototype.em;an.prototype.getOverviewMap=an.prototype.pk;t("ol.control.Rotate",Hf,OPENLAYERS);t("ol.control.Rotate.render",If,OPENLAYERS);t("ol.control.ScaleLine",fn,OPENLAYERS);fn.prototype.getUnits=fn.prototype.wb;t("ol.control.ScaleLine.render",gn,OPENLAYERS);fn.prototype.setUnits=fn.prototype.D;t("ol.control.Zoom",Jf,OPENLAYERS);t("ol.control.ZoomSlider",kn,OPENLAYERS);t("ol.control.ZoomSlider.render",mn,OPENLAYERS);
+t("ol.control.ZoomToExtent",pn,OPENLAYERS);t("ol.color.asArray",te,OPENLAYERS);t("ol.color.asString",ve,OPENLAYERS);ke.prototype.type=ke.prototype.type;ke.prototype.target=ke.prototype.target;ke.prototype.preventDefault=ke.prototype.preventDefault;ke.prototype.stopPropagation=ke.prototype.stopPropagation;eb.prototype.changed=eb.prototype.u;eb.prototype.dispatchEvent=eb.prototype.b;eb.prototype.getRevision=eb.prototype.K;eb.prototype.on=eb.prototype.I;eb.prototype.once=eb.prototype.L;
+eb.prototype.un=eb.prototype.J;eb.prototype.unByKey=eb.prototype.M;le.prototype.get=le.prototype.get;le.prototype.getKeys=le.prototype.N;le.prototype.getProperties=le.prototype.O;le.prototype.set=le.prototype.set;le.prototype.setProperties=le.prototype.G;le.prototype.unset=le.prototype.P;le.prototype.changed=le.prototype.u;le.prototype.dispatchEvent=le.prototype.b;le.prototype.getRevision=le.prototype.K;le.prototype.on=le.prototype.I;le.prototype.once=le.prototype.L;le.prototype.un=le.prototype.J;
+le.prototype.unByKey=le.prototype.M;qn.prototype.get=qn.prototype.get;qn.prototype.getKeys=qn.prototype.N;qn.prototype.getProperties=qn.prototype.O;qn.prototype.set=qn.prototype.set;qn.prototype.setProperties=qn.prototype.G;qn.prototype.unset=qn.prototype.P;qn.prototype.changed=qn.prototype.u;qn.prototype.dispatchEvent=qn.prototype.b;qn.prototype.getRevision=qn.prototype.K;qn.prototype.on=qn.prototype.I;qn.prototype.once=qn.prototype.L;qn.prototype.un=qn.prototype.J;qn.prototype.unByKey=qn.prototype.M;
+Ik.prototype.get=Ik.prototype.get;Ik.prototype.getKeys=Ik.prototype.N;Ik.prototype.getProperties=Ik.prototype.O;Ik.prototype.set=Ik.prototype.set;Ik.prototype.setProperties=Ik.prototype.G;Ik.prototype.unset=Ik.prototype.P;Ik.prototype.changed=Ik.prototype.u;Ik.prototype.dispatchEvent=Ik.prototype.b;Ik.prototype.getRevision=Ik.prototype.K;Ik.prototype.on=Ik.prototype.I;Ik.prototype.once=Ik.prototype.L;Ik.prototype.un=Ik.prototype.J;Ik.prototype.unByKey=Ik.prototype.M;Ut.prototype.get=Ut.prototype.get;
+Ut.prototype.getKeys=Ut.prototype.N;Ut.prototype.getProperties=Ut.prototype.O;Ut.prototype.set=Ut.prototype.set;Ut.prototype.setProperties=Ut.prototype.G;Ut.prototype.unset=Ut.prototype.P;Ut.prototype.changed=Ut.prototype.u;Ut.prototype.dispatchEvent=Ut.prototype.b;Ut.prototype.getRevision=Ut.prototype.K;Ut.prototype.on=Ut.prototype.I;Ut.prototype.once=Ut.prototype.L;Ut.prototype.un=Ut.prototype.J;Ut.prototype.unByKey=Ut.prototype.M;fu.prototype.getTileCoord=fu.prototype.i;Q.prototype.get=Q.prototype.get;
+Q.prototype.getKeys=Q.prototype.N;Q.prototype.getProperties=Q.prototype.O;Q.prototype.set=Q.prototype.set;Q.prototype.setProperties=Q.prototype.G;Q.prototype.unset=Q.prototype.P;Q.prototype.changed=Q.prototype.u;Q.prototype.dispatchEvent=Q.prototype.b;Q.prototype.getRevision=Q.prototype.K;Q.prototype.on=Q.prototype.I;Q.prototype.once=Q.prototype.L;Q.prototype.un=Q.prototype.J;Q.prototype.unByKey=Q.prototype.M;We.prototype.type=We.prototype.type;We.prototype.target=We.prototype.target;
+We.prototype.preventDefault=We.prototype.preventDefault;We.prototype.stopPropagation=We.prototype.stopPropagation;Vg.prototype.map=Vg.prototype.map;Vg.prototype.frameState=Vg.prototype.frameState;Vg.prototype.type=Vg.prototype.type;Vg.prototype.target=Vg.prototype.target;Vg.prototype.preventDefault=Vg.prototype.preventDefault;Vg.prototype.stopPropagation=Vg.prototype.stopPropagation;Wg.prototype.originalEvent=Wg.prototype.originalEvent;Wg.prototype.pixel=Wg.prototype.pixel;
+Wg.prototype.coordinate=Wg.prototype.coordinate;Wg.prototype.dragging=Wg.prototype.dragging;Wg.prototype.preventDefault=Wg.prototype.preventDefault;Wg.prototype.stopPropagation=Wg.prototype.stopPropagation;Wg.prototype.map=Wg.prototype.map;Wg.prototype.frameState=Wg.prototype.frameState;Wg.prototype.type=Wg.prototype.type;Wg.prototype.target=Wg.prototype.target;db.prototype.type=db.prototype.type;db.prototype.target=db.prototype.target;db.prototype.preventDefault=db.prototype.preventDefault;
+db.prototype.stopPropagation=db.prototype.stopPropagation;Xm.prototype.get=Xm.prototype.get;Xm.prototype.getKeys=Xm.prototype.N;Xm.prototype.getProperties=Xm.prototype.O;Xm.prototype.set=Xm.prototype.set;Xm.prototype.setProperties=Xm.prototype.G;Xm.prototype.unset=Xm.prototype.P;Xm.prototype.changed=Xm.prototype.u;Xm.prototype.dispatchEvent=Xm.prototype.b;Xm.prototype.getRevision=Xm.prototype.K;Xm.prototype.on=Xm.prototype.I;Xm.prototype.once=Xm.prototype.L;Xm.prototype.un=Xm.prototype.J;
+Xm.prototype.unByKey=Xm.prototype.M;Kk.prototype.getTileCoord=Kk.prototype.i;Rd.prototype.get=Rd.prototype.get;Rd.prototype.getKeys=Rd.prototype.N;Rd.prototype.getProperties=Rd.prototype.O;Rd.prototype.set=Rd.prototype.set;Rd.prototype.setProperties=Rd.prototype.G;Rd.prototype.unset=Rd.prototype.P;Rd.prototype.changed=Rd.prototype.u;Rd.prototype.dispatchEvent=Rd.prototype.b;Rd.prototype.getRevision=Rd.prototype.K;Rd.prototype.on=Rd.prototype.I;Rd.prototype.once=Rd.prototype.L;Rd.prototype.un=Rd.prototype.J;
+Rd.prototype.unByKey=Rd.prototype.M;fw.prototype.forEachTileCoord=fw.prototype.yg;fw.prototype.getMaxZoom=fw.prototype.Ig;fw.prototype.getMinZoom=fw.prototype.Jg;fw.prototype.getOrigin=fw.prototype.Ia;fw.prototype.getResolution=fw.prototype.$;fw.prototype.getResolutions=fw.prototype.Kh;fw.prototype.getTileCoordExtent=fw.prototype.Ea;fw.prototype.getTileCoordForCoordAndResolution=fw.prototype.Zd;fw.prototype.getTileCoordForCoordAndZ=fw.prototype.qd;fw.prototype.getTileSize=fw.prototype.Ja;
+fw.prototype.getZForResolution=fw.prototype.Lb;qj.prototype.getOpacity=qj.prototype.qe;qj.prototype.getRotateWithView=qj.prototype.Xd;qj.prototype.getRotation=qj.prototype.re;qj.prototype.getScale=qj.prototype.se;qj.prototype.getSnapToPixel=qj.prototype.Yd;qj.prototype.setOpacity=qj.prototype.te;qj.prototype.setRotation=qj.prototype.ue;qj.prototype.setScale=qj.prototype.ve;Dh.prototype.getOpacity=Dh.prototype.qe;Dh.prototype.getRotateWithView=Dh.prototype.Xd;Dh.prototype.getRotation=Dh.prototype.re;
+Dh.prototype.getScale=Dh.prototype.se;Dh.prototype.getSnapToPixel=Dh.prototype.Yd;Dh.prototype.setOpacity=Dh.prototype.te;Dh.prototype.setRotation=Dh.prototype.ue;Dh.prototype.setScale=Dh.prototype.ve;ow.prototype.getOpacity=ow.prototype.qe;ow.prototype.getRotateWithView=ow.prototype.Xd;ow.prototype.getRotation=ow.prototype.re;ow.prototype.getScale=ow.prototype.se;ow.prototype.getSnapToPixel=ow.prototype.Yd;ow.prototype.setOpacity=ow.prototype.te;ow.prototype.setRotation=ow.prototype.ue;
+ow.prototype.setScale=ow.prototype.ve;jf.prototype.get=jf.prototype.get;jf.prototype.getKeys=jf.prototype.N;jf.prototype.getProperties=jf.prototype.O;jf.prototype.set=jf.prototype.set;jf.prototype.setProperties=jf.prototype.G;jf.prototype.unset=jf.prototype.P;jf.prototype.changed=jf.prototype.u;jf.prototype.dispatchEvent=jf.prototype.b;jf.prototype.getRevision=jf.prototype.K;jf.prototype.on=jf.prototype.I;jf.prototype.once=jf.prototype.L;jf.prototype.un=jf.prototype.J;jf.prototype.unByKey=jf.prototype.M;
+zf.prototype.getAttributions=zf.prototype.wa;zf.prototype.getLogo=zf.prototype.ua;zf.prototype.getProjection=zf.prototype.xa;zf.prototype.getState=zf.prototype.V;zf.prototype.refresh=zf.prototype.sa;zf.prototype.setAttributions=zf.prototype.oa;zf.prototype.get=zf.prototype.get;zf.prototype.getKeys=zf.prototype.N;zf.prototype.getProperties=zf.prototype.O;zf.prototype.set=zf.prototype.set;zf.prototype.setProperties=zf.prototype.G;zf.prototype.unset=zf.prototype.P;zf.prototype.changed=zf.prototype.u;
+zf.prototype.dispatchEvent=zf.prototype.b;zf.prototype.getRevision=zf.prototype.K;zf.prototype.on=zf.prototype.I;zf.prototype.once=zf.prototype.L;zf.prototype.un=zf.prototype.J;zf.prototype.unByKey=zf.prototype.M;Jl.prototype.getTileGrid=Jl.prototype.Na;Jl.prototype.refresh=Jl.prototype.sa;Jl.prototype.getAttributions=Jl.prototype.wa;Jl.prototype.getLogo=Jl.prototype.ua;Jl.prototype.getProjection=Jl.prototype.xa;Jl.prototype.getState=Jl.prototype.V;Jl.prototype.setAttributions=Jl.prototype.oa;
+Jl.prototype.get=Jl.prototype.get;Jl.prototype.getKeys=Jl.prototype.N;Jl.prototype.getProperties=Jl.prototype.O;Jl.prototype.set=Jl.prototype.set;Jl.prototype.setProperties=Jl.prototype.G;Jl.prototype.unset=Jl.prototype.P;Jl.prototype.changed=Jl.prototype.u;Jl.prototype.dispatchEvent=Jl.prototype.b;Jl.prototype.getRevision=Jl.prototype.K;Jl.prototype.on=Jl.prototype.I;Jl.prototype.once=Jl.prototype.L;Jl.prototype.un=Jl.prototype.J;Jl.prototype.unByKey=Jl.prototype.M;
+W.prototype.getTileLoadFunction=W.prototype.fb;W.prototype.getTileUrlFunction=W.prototype.gb;W.prototype.getUrls=W.prototype.hb;W.prototype.setTileLoadFunction=W.prototype.kb;W.prototype.setTileUrlFunction=W.prototype.Qa;W.prototype.setUrl=W.prototype.Va;W.prototype.setUrls=W.prototype.bb;W.prototype.getTileGrid=W.prototype.Na;W.prototype.refresh=W.prototype.sa;W.prototype.getAttributions=W.prototype.wa;W.prototype.getLogo=W.prototype.ua;W.prototype.getProjection=W.prototype.xa;
+W.prototype.getState=W.prototype.V;W.prototype.setAttributions=W.prototype.oa;W.prototype.get=W.prototype.get;W.prototype.getKeys=W.prototype.N;W.prototype.getProperties=W.prototype.O;W.prototype.set=W.prototype.set;W.prototype.setProperties=W.prototype.G;W.prototype.unset=W.prototype.P;W.prototype.changed=W.prototype.u;W.prototype.dispatchEvent=W.prototype.b;W.prototype.getRevision=W.prototype.K;W.prototype.on=W.prototype.I;W.prototype.once=W.prototype.L;W.prototype.un=W.prototype.J;
+W.prototype.unByKey=W.prototype.M;pv.prototype.setRenderReprojectionEdges=pv.prototype.zb;pv.prototype.setTileGridForProjection=pv.prototype.Ab;pv.prototype.getTileLoadFunction=pv.prototype.fb;pv.prototype.getTileUrlFunction=pv.prototype.gb;pv.prototype.getUrls=pv.prototype.hb;pv.prototype.setTileLoadFunction=pv.prototype.kb;pv.prototype.setTileUrlFunction=pv.prototype.Qa;pv.prototype.setUrl=pv.prototype.Va;pv.prototype.setUrls=pv.prototype.bb;pv.prototype.getTileGrid=pv.prototype.Na;
+pv.prototype.refresh=pv.prototype.sa;pv.prototype.getAttributions=pv.prototype.wa;pv.prototype.getLogo=pv.prototype.ua;pv.prototype.getProjection=pv.prototype.xa;pv.prototype.getState=pv.prototype.V;pv.prototype.setAttributions=pv.prototype.oa;pv.prototype.get=pv.prototype.get;pv.prototype.getKeys=pv.prototype.N;pv.prototype.getProperties=pv.prototype.O;pv.prototype.set=pv.prototype.set;pv.prototype.setProperties=pv.prototype.G;pv.prototype.unset=pv.prototype.P;pv.prototype.changed=pv.prototype.u;
+pv.prototype.dispatchEvent=pv.prototype.b;pv.prototype.getRevision=pv.prototype.K;pv.prototype.on=pv.prototype.I;pv.prototype.once=pv.prototype.L;pv.prototype.un=pv.prototype.J;pv.prototype.unByKey=pv.prototype.M;rv.prototype.setRenderReprojectionEdges=rv.prototype.zb;rv.prototype.setTileGridForProjection=rv.prototype.Ab;rv.prototype.getTileLoadFunction=rv.prototype.fb;rv.prototype.getTileUrlFunction=rv.prototype.gb;rv.prototype.getUrls=rv.prototype.hb;rv.prototype.setTileLoadFunction=rv.prototype.kb;
+rv.prototype.setTileUrlFunction=rv.prototype.Qa;rv.prototype.setUrl=rv.prototype.Va;rv.prototype.setUrls=rv.prototype.bb;rv.prototype.getTileGrid=rv.prototype.Na;rv.prototype.refresh=rv.prototype.sa;rv.prototype.getAttributions=rv.prototype.wa;rv.prototype.getLogo=rv.prototype.ua;rv.prototype.getProjection=rv.prototype.xa;rv.prototype.getState=rv.prototype.V;rv.prototype.setAttributions=rv.prototype.oa;rv.prototype.get=rv.prototype.get;rv.prototype.getKeys=rv.prototype.N;
+rv.prototype.getProperties=rv.prototype.O;rv.prototype.set=rv.prototype.set;rv.prototype.setProperties=rv.prototype.G;rv.prototype.unset=rv.prototype.P;rv.prototype.changed=rv.prototype.u;rv.prototype.dispatchEvent=rv.prototype.b;rv.prototype.getRevision=rv.prototype.K;rv.prototype.on=rv.prototype.I;rv.prototype.once=rv.prototype.L;rv.prototype.un=rv.prototype.J;rv.prototype.unByKey=rv.prototype.M;sv.prototype.setRenderReprojectionEdges=sv.prototype.zb;sv.prototype.setTileGridForProjection=sv.prototype.Ab;
+sv.prototype.getTileLoadFunction=sv.prototype.fb;sv.prototype.getTileUrlFunction=sv.prototype.gb;sv.prototype.getUrls=sv.prototype.hb;sv.prototype.setTileLoadFunction=sv.prototype.kb;sv.prototype.setTileUrlFunction=sv.prototype.Qa;sv.prototype.setUrl=sv.prototype.Va;sv.prototype.setUrls=sv.prototype.bb;sv.prototype.getTileGrid=sv.prototype.Na;sv.prototype.refresh=sv.prototype.sa;sv.prototype.getAttributions=sv.prototype.wa;sv.prototype.getLogo=sv.prototype.ua;sv.prototype.getProjection=sv.prototype.xa;
+sv.prototype.getState=sv.prototype.V;sv.prototype.setAttributions=sv.prototype.oa;sv.prototype.get=sv.prototype.get;sv.prototype.getKeys=sv.prototype.N;sv.prototype.getProperties=sv.prototype.O;sv.prototype.set=sv.prototype.set;sv.prototype.setProperties=sv.prototype.G;sv.prototype.unset=sv.prototype.P;sv.prototype.changed=sv.prototype.u;sv.prototype.dispatchEvent=sv.prototype.b;sv.prototype.getRevision=sv.prototype.K;sv.prototype.on=sv.prototype.I;sv.prototype.once=sv.prototype.L;
+sv.prototype.un=sv.prototype.J;sv.prototype.unByKey=sv.prototype.M;P.prototype.getAttributions=P.prototype.wa;P.prototype.getLogo=P.prototype.ua;P.prototype.getProjection=P.prototype.xa;P.prototype.getState=P.prototype.V;P.prototype.refresh=P.prototype.sa;P.prototype.setAttributions=P.prototype.oa;P.prototype.get=P.prototype.get;P.prototype.getKeys=P.prototype.N;P.prototype.getProperties=P.prototype.O;P.prototype.set=P.prototype.set;P.prototype.setProperties=P.prototype.G;P.prototype.unset=P.prototype.P;
+P.prototype.changed=P.prototype.u;P.prototype.dispatchEvent=P.prototype.b;P.prototype.getRevision=P.prototype.K;P.prototype.on=P.prototype.I;P.prototype.once=P.prototype.L;P.prototype.un=P.prototype.J;P.prototype.unByKey=P.prototype.M;Y.prototype.addFeature=Y.prototype.rb;Y.prototype.addFeatures=Y.prototype.Jc;Y.prototype.clear=Y.prototype.clear;Y.prototype.forEachFeature=Y.prototype.wg;Y.prototype.forEachFeatureInExtent=Y.prototype.ub;Y.prototype.forEachFeatureIntersectingExtent=Y.prototype.xg;
+Y.prototype.getFeaturesCollection=Y.prototype.Fg;Y.prototype.getFeatures=Y.prototype.oe;Y.prototype.getFeaturesAtCoordinate=Y.prototype.Eg;Y.prototype.getFeaturesInExtent=Y.prototype.ef;Y.prototype.getClosestFeatureToCoordinate=Y.prototype.Ag;Y.prototype.getExtent=Y.prototype.H;Y.prototype.getFeatureById=Y.prototype.Dg;Y.prototype.getFormat=Y.prototype.Ch;Y.prototype.getUrl=Y.prototype.Dh;Y.prototype.removeFeature=Y.prototype.nb;Y.prototype.getAttributions=Y.prototype.wa;Y.prototype.getLogo=Y.prototype.ua;
+Y.prototype.getProjection=Y.prototype.xa;Y.prototype.getState=Y.prototype.V;Y.prototype.refresh=Y.prototype.sa;Y.prototype.setAttributions=Y.prototype.oa;Y.prototype.get=Y.prototype.get;Y.prototype.getKeys=Y.prototype.N;Y.prototype.getProperties=Y.prototype.O;Y.prototype.set=Y.prototype.set;Y.prototype.setProperties=Y.prototype.G;Y.prototype.unset=Y.prototype.P;Y.prototype.changed=Y.prototype.u;Y.prototype.dispatchEvent=Y.prototype.b;Y.prototype.getRevision=Y.prototype.K;Y.prototype.on=Y.prototype.I;
+Y.prototype.once=Y.prototype.L;Y.prototype.un=Y.prototype.J;Y.prototype.unByKey=Y.prototype.M;Ak.prototype.getAttributions=Ak.prototype.wa;Ak.prototype.getLogo=Ak.prototype.ua;Ak.prototype.getProjection=Ak.prototype.xa;Ak.prototype.getState=Ak.prototype.V;Ak.prototype.refresh=Ak.prototype.sa;Ak.prototype.setAttributions=Ak.prototype.oa;Ak.prototype.get=Ak.prototype.get;Ak.prototype.getKeys=Ak.prototype.N;Ak.prototype.getProperties=Ak.prototype.O;Ak.prototype.set=Ak.prototype.set;
+Ak.prototype.setProperties=Ak.prototype.G;Ak.prototype.unset=Ak.prototype.P;Ak.prototype.changed=Ak.prototype.u;Ak.prototype.dispatchEvent=Ak.prototype.b;Ak.prototype.getRevision=Ak.prototype.K;Ak.prototype.on=Ak.prototype.I;Ak.prototype.once=Ak.prototype.L;Ak.prototype.un=Ak.prototype.J;Ak.prototype.unByKey=Ak.prototype.M;yv.prototype.getAttributions=yv.prototype.wa;yv.prototype.getLogo=yv.prototype.ua;yv.prototype.getProjection=yv.prototype.xa;yv.prototype.getState=yv.prototype.V;
+yv.prototype.refresh=yv.prototype.sa;yv.prototype.setAttributions=yv.prototype.oa;yv.prototype.get=yv.prototype.get;yv.prototype.getKeys=yv.prototype.N;yv.prototype.getProperties=yv.prototype.O;yv.prototype.set=yv.prototype.set;yv.prototype.setProperties=yv.prototype.G;yv.prototype.unset=yv.prototype.P;yv.prototype.changed=yv.prototype.u;yv.prototype.dispatchEvent=yv.prototype.b;yv.prototype.getRevision=yv.prototype.K;yv.prototype.on=yv.prototype.I;yv.prototype.once=yv.prototype.L;
+yv.prototype.un=yv.prototype.J;yv.prototype.unByKey=yv.prototype.M;Hk.prototype.getAttributions=Hk.prototype.wa;Hk.prototype.getLogo=Hk.prototype.ua;Hk.prototype.getProjection=Hk.prototype.xa;Hk.prototype.getState=Hk.prototype.V;Hk.prototype.refresh=Hk.prototype.sa;Hk.prototype.setAttributions=Hk.prototype.oa;Hk.prototype.get=Hk.prototype.get;Hk.prototype.getKeys=Hk.prototype.N;Hk.prototype.getProperties=Hk.prototype.O;Hk.prototype.set=Hk.prototype.set;Hk.prototype.setProperties=Hk.prototype.G;
+Hk.prototype.unset=Hk.prototype.P;Hk.prototype.changed=Hk.prototype.u;Hk.prototype.dispatchEvent=Hk.prototype.b;Hk.prototype.getRevision=Hk.prototype.K;Hk.prototype.on=Hk.prototype.I;Hk.prototype.once=Hk.prototype.L;Hk.prototype.un=Hk.prototype.J;Hk.prototype.unByKey=Hk.prototype.M;zv.prototype.getAttributions=zv.prototype.wa;zv.prototype.getLogo=zv.prototype.ua;zv.prototype.getProjection=zv.prototype.xa;zv.prototype.getState=zv.prototype.V;zv.prototype.refresh=zv.prototype.sa;
+zv.prototype.setAttributions=zv.prototype.oa;zv.prototype.get=zv.prototype.get;zv.prototype.getKeys=zv.prototype.N;zv.prototype.getProperties=zv.prototype.O;zv.prototype.set=zv.prototype.set;zv.prototype.setProperties=zv.prototype.G;zv.prototype.unset=zv.prototype.P;zv.prototype.changed=zv.prototype.u;zv.prototype.dispatchEvent=zv.prototype.b;zv.prototype.getRevision=zv.prototype.K;zv.prototype.on=zv.prototype.I;zv.prototype.once=zv.prototype.L;zv.prototype.un=zv.prototype.J;
+zv.prototype.unByKey=zv.prototype.M;Ck.prototype.type=Ck.prototype.type;Ck.prototype.target=Ck.prototype.target;Ck.prototype.preventDefault=Ck.prototype.preventDefault;Ck.prototype.stopPropagation=Ck.prototype.stopPropagation;Av.prototype.getAttributions=Av.prototype.wa;Av.prototype.getLogo=Av.prototype.ua;Av.prototype.getProjection=Av.prototype.xa;Av.prototype.getState=Av.prototype.V;Av.prototype.refresh=Av.prototype.sa;Av.prototype.setAttributions=Av.prototype.oa;Av.prototype.get=Av.prototype.get;
+Av.prototype.getKeys=Av.prototype.N;Av.prototype.getProperties=Av.prototype.O;Av.prototype.set=Av.prototype.set;Av.prototype.setProperties=Av.prototype.G;Av.prototype.unset=Av.prototype.P;Av.prototype.changed=Av.prototype.u;Av.prototype.dispatchEvent=Av.prototype.b;Av.prototype.getRevision=Av.prototype.K;Av.prototype.on=Av.prototype.I;Av.prototype.once=Av.prototype.L;Av.prototype.un=Av.prototype.J;Av.prototype.unByKey=Av.prototype.M;yl.prototype.getAttributions=yl.prototype.wa;
+yl.prototype.getLogo=yl.prototype.ua;yl.prototype.getProjection=yl.prototype.xa;yl.prototype.getState=yl.prototype.V;yl.prototype.refresh=yl.prototype.sa;yl.prototype.setAttributions=yl.prototype.oa;yl.prototype.get=yl.prototype.get;yl.prototype.getKeys=yl.prototype.N;yl.prototype.getProperties=yl.prototype.O;yl.prototype.set=yl.prototype.set;yl.prototype.setProperties=yl.prototype.G;yl.prototype.unset=yl.prototype.P;yl.prototype.changed=yl.prototype.u;yl.prototype.dispatchEvent=yl.prototype.b;
+yl.prototype.getRevision=yl.prototype.K;yl.prototype.on=yl.prototype.I;yl.prototype.once=yl.prototype.L;yl.prototype.un=yl.prototype.J;yl.prototype.unByKey=yl.prototype.M;Bv.prototype.getAttributions=Bv.prototype.wa;Bv.prototype.getLogo=Bv.prototype.ua;Bv.prototype.getProjection=Bv.prototype.xa;Bv.prototype.getState=Bv.prototype.V;Bv.prototype.refresh=Bv.prototype.sa;Bv.prototype.setAttributions=Bv.prototype.oa;Bv.prototype.get=Bv.prototype.get;Bv.prototype.getKeys=Bv.prototype.N;
+Bv.prototype.getProperties=Bv.prototype.O;Bv.prototype.set=Bv.prototype.set;Bv.prototype.setProperties=Bv.prototype.G;Bv.prototype.unset=Bv.prototype.P;Bv.prototype.changed=Bv.prototype.u;Bv.prototype.dispatchEvent=Bv.prototype.b;Bv.prototype.getRevision=Bv.prototype.K;Bv.prototype.on=Bv.prototype.I;Bv.prototype.once=Bv.prototype.L;Bv.prototype.un=Bv.prototype.J;Bv.prototype.unByKey=Bv.prototype.M;Fv.prototype.setRenderReprojectionEdges=Fv.prototype.zb;Fv.prototype.setTileGridForProjection=Fv.prototype.Ab;
+Fv.prototype.getTileLoadFunction=Fv.prototype.fb;Fv.prototype.getTileUrlFunction=Fv.prototype.gb;Fv.prototype.getUrls=Fv.prototype.hb;Fv.prototype.setTileLoadFunction=Fv.prototype.kb;Fv.prototype.setTileUrlFunction=Fv.prototype.Qa;Fv.prototype.setUrl=Fv.prototype.Va;Fv.prototype.setUrls=Fv.prototype.bb;Fv.prototype.getTileGrid=Fv.prototype.Na;Fv.prototype.refresh=Fv.prototype.sa;Fv.prototype.getAttributions=Fv.prototype.wa;Fv.prototype.getLogo=Fv.prototype.ua;Fv.prototype.getProjection=Fv.prototype.xa;
+Fv.prototype.getState=Fv.prototype.V;Fv.prototype.setAttributions=Fv.prototype.oa;Fv.prototype.get=Fv.prototype.get;Fv.prototype.getKeys=Fv.prototype.N;Fv.prototype.getProperties=Fv.prototype.O;Fv.prototype.set=Fv.prototype.set;Fv.prototype.setProperties=Fv.prototype.G;Fv.prototype.unset=Fv.prototype.P;Fv.prototype.changed=Fv.prototype.u;Fv.prototype.dispatchEvent=Fv.prototype.b;Fv.prototype.getRevision=Fv.prototype.K;Fv.prototype.on=Fv.prototype.I;Fv.prototype.once=Fv.prototype.L;
+Fv.prototype.un=Fv.prototype.J;Fv.prototype.unByKey=Fv.prototype.M;Hv.prototype.getAttributions=Hv.prototype.wa;Hv.prototype.getLogo=Hv.prototype.ua;Hv.prototype.getProjection=Hv.prototype.xa;Hv.prototype.getState=Hv.prototype.V;Hv.prototype.refresh=Hv.prototype.sa;Hv.prototype.setAttributions=Hv.prototype.oa;Hv.prototype.get=Hv.prototype.get;Hv.prototype.getKeys=Hv.prototype.N;Hv.prototype.getProperties=Hv.prototype.O;Hv.prototype.set=Hv.prototype.set;Hv.prototype.setProperties=Hv.prototype.G;
+Hv.prototype.unset=Hv.prototype.P;Hv.prototype.changed=Hv.prototype.u;Hv.prototype.dispatchEvent=Hv.prototype.b;Hv.prototype.getRevision=Hv.prototype.K;Hv.prototype.on=Hv.prototype.I;Hv.prototype.once=Hv.prototype.L;Hv.prototype.un=Hv.prototype.J;Hv.prototype.unByKey=Hv.prototype.M;Mv.prototype.type=Mv.prototype.type;Mv.prototype.target=Mv.prototype.target;Mv.prototype.preventDefault=Mv.prototype.preventDefault;Mv.prototype.stopPropagation=Mv.prototype.stopPropagation;
+Rv.prototype.setRenderReprojectionEdges=Rv.prototype.zb;Rv.prototype.setTileGridForProjection=Rv.prototype.Ab;Rv.prototype.getTileLoadFunction=Rv.prototype.fb;Rv.prototype.getTileUrlFunction=Rv.prototype.gb;Rv.prototype.getUrls=Rv.prototype.hb;Rv.prototype.setTileLoadFunction=Rv.prototype.kb;Rv.prototype.setTileUrlFunction=Rv.prototype.Qa;Rv.prototype.setUrl=Rv.prototype.Va;Rv.prototype.setUrls=Rv.prototype.bb;Rv.prototype.getTileGrid=Rv.prototype.Na;Rv.prototype.refresh=Rv.prototype.sa;
+Rv.prototype.getAttributions=Rv.prototype.wa;Rv.prototype.getLogo=Rv.prototype.ua;Rv.prototype.getProjection=Rv.prototype.xa;Rv.prototype.getState=Rv.prototype.V;Rv.prototype.setAttributions=Rv.prototype.oa;Rv.prototype.get=Rv.prototype.get;Rv.prototype.getKeys=Rv.prototype.N;Rv.prototype.getProperties=Rv.prototype.O;Rv.prototype.set=Rv.prototype.set;Rv.prototype.setProperties=Rv.prototype.G;Rv.prototype.unset=Rv.prototype.P;Rv.prototype.changed=Rv.prototype.u;Rv.prototype.dispatchEvent=Rv.prototype.b;
+Rv.prototype.getRevision=Rv.prototype.K;Rv.prototype.on=Rv.prototype.I;Rv.prototype.once=Rv.prototype.L;Rv.prototype.un=Rv.prototype.J;Rv.prototype.unByKey=Rv.prototype.M;Tv.prototype.setRenderReprojectionEdges=Tv.prototype.zb;Tv.prototype.setTileGridForProjection=Tv.prototype.Ab;Tv.prototype.getTileLoadFunction=Tv.prototype.fb;Tv.prototype.getTileUrlFunction=Tv.prototype.gb;Tv.prototype.getUrls=Tv.prototype.hb;Tv.prototype.setTileLoadFunction=Tv.prototype.kb;Tv.prototype.setTileUrlFunction=Tv.prototype.Qa;
+Tv.prototype.setUrl=Tv.prototype.Va;Tv.prototype.setUrls=Tv.prototype.bb;Tv.prototype.getTileGrid=Tv.prototype.Na;Tv.prototype.refresh=Tv.prototype.sa;Tv.prototype.getAttributions=Tv.prototype.wa;Tv.prototype.getLogo=Tv.prototype.ua;Tv.prototype.getProjection=Tv.prototype.xa;Tv.prototype.getState=Tv.prototype.V;Tv.prototype.setAttributions=Tv.prototype.oa;Tv.prototype.get=Tv.prototype.get;Tv.prototype.getKeys=Tv.prototype.N;Tv.prototype.getProperties=Tv.prototype.O;Tv.prototype.set=Tv.prototype.set;
+Tv.prototype.setProperties=Tv.prototype.G;Tv.prototype.unset=Tv.prototype.P;Tv.prototype.changed=Tv.prototype.u;Tv.prototype.dispatchEvent=Tv.prototype.b;Tv.prototype.getRevision=Tv.prototype.K;Tv.prototype.on=Tv.prototype.I;Tv.prototype.once=Tv.prototype.L;Tv.prototype.un=Tv.prototype.J;Tv.prototype.unByKey=Tv.prototype.M;Vv.prototype.getTileGrid=Vv.prototype.Na;Vv.prototype.refresh=Vv.prototype.sa;Vv.prototype.getAttributions=Vv.prototype.wa;Vv.prototype.getLogo=Vv.prototype.ua;
+Vv.prototype.getProjection=Vv.prototype.xa;Vv.prototype.getState=Vv.prototype.V;Vv.prototype.setAttributions=Vv.prototype.oa;Vv.prototype.get=Vv.prototype.get;Vv.prototype.getKeys=Vv.prototype.N;Vv.prototype.getProperties=Vv.prototype.O;Vv.prototype.set=Vv.prototype.set;Vv.prototype.setProperties=Vv.prototype.G;Vv.prototype.unset=Vv.prototype.P;Vv.prototype.changed=Vv.prototype.u;Vv.prototype.dispatchEvent=Vv.prototype.b;Vv.prototype.getRevision=Vv.prototype.K;Vv.prototype.on=Vv.prototype.I;
+Vv.prototype.once=Vv.prototype.L;Vv.prototype.un=Vv.prototype.J;Vv.prototype.unByKey=Vv.prototype.M;Wv.prototype.setRenderReprojectionEdges=Wv.prototype.zb;Wv.prototype.setTileGridForProjection=Wv.prototype.Ab;Wv.prototype.getTileLoadFunction=Wv.prototype.fb;Wv.prototype.getTileUrlFunction=Wv.prototype.gb;Wv.prototype.getUrls=Wv.prototype.hb;Wv.prototype.setTileLoadFunction=Wv.prototype.kb;Wv.prototype.setTileUrlFunction=Wv.prototype.Qa;Wv.prototype.setUrl=Wv.prototype.Va;Wv.prototype.setUrls=Wv.prototype.bb;
+Wv.prototype.getTileGrid=Wv.prototype.Na;Wv.prototype.refresh=Wv.prototype.sa;Wv.prototype.getAttributions=Wv.prototype.wa;Wv.prototype.getLogo=Wv.prototype.ua;Wv.prototype.getProjection=Wv.prototype.xa;Wv.prototype.getState=Wv.prototype.V;Wv.prototype.setAttributions=Wv.prototype.oa;Wv.prototype.get=Wv.prototype.get;Wv.prototype.getKeys=Wv.prototype.N;Wv.prototype.getProperties=Wv.prototype.O;Wv.prototype.set=Wv.prototype.set;Wv.prototype.setProperties=Wv.prototype.G;Wv.prototype.unset=Wv.prototype.P;
+Wv.prototype.changed=Wv.prototype.u;Wv.prototype.dispatchEvent=Wv.prototype.b;Wv.prototype.getRevision=Wv.prototype.K;Wv.prototype.on=Wv.prototype.I;Wv.prototype.once=Wv.prototype.L;Wv.prototype.un=Wv.prototype.J;Wv.prototype.unByKey=Wv.prototype.M;Df.prototype.type=Df.prototype.type;Df.prototype.target=Df.prototype.target;Df.prototype.preventDefault=Df.prototype.preventDefault;Df.prototype.stopPropagation=Df.prototype.stopPropagation;Xv.prototype.getTileGrid=Xv.prototype.Na;
+Xv.prototype.refresh=Xv.prototype.sa;Xv.prototype.getAttributions=Xv.prototype.wa;Xv.prototype.getLogo=Xv.prototype.ua;Xv.prototype.getProjection=Xv.prototype.xa;Xv.prototype.getState=Xv.prototype.V;Xv.prototype.setAttributions=Xv.prototype.oa;Xv.prototype.get=Xv.prototype.get;Xv.prototype.getKeys=Xv.prototype.N;Xv.prototype.getProperties=Xv.prototype.O;Xv.prototype.set=Xv.prototype.set;Xv.prototype.setProperties=Xv.prototype.G;Xv.prototype.unset=Xv.prototype.P;Xv.prototype.changed=Xv.prototype.u;
+Xv.prototype.dispatchEvent=Xv.prototype.b;Xv.prototype.getRevision=Xv.prototype.K;Xv.prototype.on=Xv.prototype.I;Xv.prototype.once=Xv.prototype.L;Xv.prototype.un=Xv.prototype.J;Xv.prototype.unByKey=Xv.prototype.M;aw.prototype.setRenderReprojectionEdges=aw.prototype.zb;aw.prototype.setTileGridForProjection=aw.prototype.Ab;aw.prototype.getTileLoadFunction=aw.prototype.fb;aw.prototype.getTileUrlFunction=aw.prototype.gb;aw.prototype.getUrls=aw.prototype.hb;aw.prototype.setTileLoadFunction=aw.prototype.kb;
+aw.prototype.setTileUrlFunction=aw.prototype.Qa;aw.prototype.setUrl=aw.prototype.Va;aw.prototype.setUrls=aw.prototype.bb;aw.prototype.getTileGrid=aw.prototype.Na;aw.prototype.refresh=aw.prototype.sa;aw.prototype.getAttributions=aw.prototype.wa;aw.prototype.getLogo=aw.prototype.ua;aw.prototype.getProjection=aw.prototype.xa;aw.prototype.getState=aw.prototype.V;aw.prototype.setAttributions=aw.prototype.oa;aw.prototype.get=aw.prototype.get;aw.prototype.getKeys=aw.prototype.N;
+aw.prototype.getProperties=aw.prototype.O;aw.prototype.set=aw.prototype.set;aw.prototype.setProperties=aw.prototype.G;aw.prototype.unset=aw.prototype.P;aw.prototype.changed=aw.prototype.u;aw.prototype.dispatchEvent=aw.prototype.b;aw.prototype.getRevision=aw.prototype.K;aw.prototype.on=aw.prototype.I;aw.prototype.once=aw.prototype.L;aw.prototype.un=aw.prototype.J;aw.prototype.unByKey=aw.prototype.M;vl.prototype.type=vl.prototype.type;vl.prototype.target=vl.prototype.target;
+vl.prototype.preventDefault=vl.prototype.preventDefault;vl.prototype.stopPropagation=vl.prototype.stopPropagation;Kl.prototype.getTileLoadFunction=Kl.prototype.fb;Kl.prototype.getTileUrlFunction=Kl.prototype.gb;Kl.prototype.getUrls=Kl.prototype.hb;Kl.prototype.setTileLoadFunction=Kl.prototype.kb;Kl.prototype.setTileUrlFunction=Kl.prototype.Qa;Kl.prototype.setUrl=Kl.prototype.Va;Kl.prototype.setUrls=Kl.prototype.bb;Kl.prototype.getTileGrid=Kl.prototype.Na;Kl.prototype.refresh=Kl.prototype.sa;
+Kl.prototype.getAttributions=Kl.prototype.wa;Kl.prototype.getLogo=Kl.prototype.ua;Kl.prototype.getProjection=Kl.prototype.xa;Kl.prototype.getState=Kl.prototype.V;Kl.prototype.setAttributions=Kl.prototype.oa;Kl.prototype.get=Kl.prototype.get;Kl.prototype.getKeys=Kl.prototype.N;Kl.prototype.getProperties=Kl.prototype.O;Kl.prototype.set=Kl.prototype.set;Kl.prototype.setProperties=Kl.prototype.G;Kl.prototype.unset=Kl.prototype.P;Kl.prototype.changed=Kl.prototype.u;Kl.prototype.dispatchEvent=Kl.prototype.b;
+Kl.prototype.getRevision=Kl.prototype.K;Kl.prototype.on=Kl.prototype.I;Kl.prototype.once=Kl.prototype.L;Kl.prototype.un=Kl.prototype.J;Kl.prototype.unByKey=Kl.prototype.M;Z.prototype.setRenderReprojectionEdges=Z.prototype.zb;Z.prototype.setTileGridForProjection=Z.prototype.Ab;Z.prototype.getTileLoadFunction=Z.prototype.fb;Z.prototype.getTileUrlFunction=Z.prototype.gb;Z.prototype.getUrls=Z.prototype.hb;Z.prototype.setTileLoadFunction=Z.prototype.kb;Z.prototype.setTileUrlFunction=Z.prototype.Qa;
+Z.prototype.setUrl=Z.prototype.Va;Z.prototype.setUrls=Z.prototype.bb;Z.prototype.getTileGrid=Z.prototype.Na;Z.prototype.refresh=Z.prototype.sa;Z.prototype.getAttributions=Z.prototype.wa;Z.prototype.getLogo=Z.prototype.ua;Z.prototype.getProjection=Z.prototype.xa;Z.prototype.getState=Z.prototype.V;Z.prototype.setAttributions=Z.prototype.oa;Z.prototype.get=Z.prototype.get;Z.prototype.getKeys=Z.prototype.N;Z.prototype.getProperties=Z.prototype.O;Z.prototype.set=Z.prototype.set;
+Z.prototype.setProperties=Z.prototype.G;Z.prototype.unset=Z.prototype.P;Z.prototype.changed=Z.prototype.u;Z.prototype.dispatchEvent=Z.prototype.b;Z.prototype.getRevision=Z.prototype.K;Z.prototype.on=Z.prototype.I;Z.prototype.once=Z.prototype.L;Z.prototype.un=Z.prototype.J;Z.prototype.unByKey=Z.prototype.M;iw.prototype.setRenderReprojectionEdges=iw.prototype.zb;iw.prototype.setTileGridForProjection=iw.prototype.Ab;iw.prototype.getTileLoadFunction=iw.prototype.fb;iw.prototype.getTileUrlFunction=iw.prototype.gb;
+iw.prototype.getUrls=iw.prototype.hb;iw.prototype.setTileLoadFunction=iw.prototype.kb;iw.prototype.setTileUrlFunction=iw.prototype.Qa;iw.prototype.setUrl=iw.prototype.Va;iw.prototype.setUrls=iw.prototype.bb;iw.prototype.getTileGrid=iw.prototype.Na;iw.prototype.refresh=iw.prototype.sa;iw.prototype.getAttributions=iw.prototype.wa;iw.prototype.getLogo=iw.prototype.ua;iw.prototype.getProjection=iw.prototype.xa;iw.prototype.getState=iw.prototype.V;iw.prototype.setAttributions=iw.prototype.oa;
+iw.prototype.get=iw.prototype.get;iw.prototype.getKeys=iw.prototype.N;iw.prototype.getProperties=iw.prototype.O;iw.prototype.set=iw.prototype.set;iw.prototype.setProperties=iw.prototype.G;iw.prototype.unset=iw.prototype.P;iw.prototype.changed=iw.prototype.u;iw.prototype.dispatchEvent=iw.prototype.b;iw.prototype.getRevision=iw.prototype.K;iw.prototype.on=iw.prototype.I;iw.prototype.once=iw.prototype.L;iw.prototype.un=iw.prototype.J;iw.prototype.unByKey=iw.prototype.M;lv.prototype.getTileCoord=lv.prototype.i;
+lv.prototype.load=lv.prototype.load;th.prototype.changed=th.prototype.u;th.prototype.dispatchEvent=th.prototype.b;th.prototype.getRevision=th.prototype.K;th.prototype.on=th.prototype.I;th.prototype.once=th.prototype.L;th.prototype.un=th.prototype.J;th.prototype.unByKey=th.prototype.M;Gm.prototype.changed=Gm.prototype.u;Gm.prototype.dispatchEvent=Gm.prototype.b;Gm.prototype.getRevision=Gm.prototype.K;Gm.prototype.on=Gm.prototype.I;Gm.prototype.once=Gm.prototype.L;Gm.prototype.un=Gm.prototype.J;
+Gm.prototype.unByKey=Gm.prototype.M;Jm.prototype.changed=Jm.prototype.u;Jm.prototype.dispatchEvent=Jm.prototype.b;Jm.prototype.getRevision=Jm.prototype.K;Jm.prototype.on=Jm.prototype.I;Jm.prototype.once=Jm.prototype.L;Jm.prototype.un=Jm.prototype.J;Jm.prototype.unByKey=Jm.prototype.M;Pm.prototype.changed=Pm.prototype.u;Pm.prototype.dispatchEvent=Pm.prototype.b;Pm.prototype.getRevision=Pm.prototype.K;Pm.prototype.on=Pm.prototype.I;Pm.prototype.once=Pm.prototype.L;Pm.prototype.un=Pm.prototype.J;
+Pm.prototype.unByKey=Pm.prototype.M;Rm.prototype.changed=Rm.prototype.u;Rm.prototype.dispatchEvent=Rm.prototype.b;Rm.prototype.getRevision=Rm.prototype.K;Rm.prototype.on=Rm.prototype.I;Rm.prototype.once=Rm.prototype.L;Rm.prototype.un=Rm.prototype.J;Rm.prototype.unByKey=Rm.prototype.M;Sl.prototype.changed=Sl.prototype.u;Sl.prototype.dispatchEvent=Sl.prototype.b;Sl.prototype.getRevision=Sl.prototype.K;Sl.prototype.on=Sl.prototype.I;Sl.prototype.once=Sl.prototype.L;Sl.prototype.un=Sl.prototype.J;
+Sl.prototype.unByKey=Sl.prototype.M;Tl.prototype.changed=Tl.prototype.u;Tl.prototype.dispatchEvent=Tl.prototype.b;Tl.prototype.getRevision=Tl.prototype.K;Tl.prototype.on=Tl.prototype.I;Tl.prototype.once=Tl.prototype.L;Tl.prototype.un=Tl.prototype.J;Tl.prototype.unByKey=Tl.prototype.M;Ul.prototype.changed=Ul.prototype.u;Ul.prototype.dispatchEvent=Ul.prototype.b;Ul.prototype.getRevision=Ul.prototype.K;Ul.prototype.on=Ul.prototype.I;Ul.prototype.once=Ul.prototype.L;Ul.prototype.un=Ul.prototype.J;
+Ul.prototype.unByKey=Ul.prototype.M;Wl.prototype.changed=Wl.prototype.u;Wl.prototype.dispatchEvent=Wl.prototype.b;Wl.prototype.getRevision=Wl.prototype.K;Wl.prototype.on=Wl.prototype.I;Wl.prototype.once=Wl.prototype.L;Wl.prototype.un=Wl.prototype.J;Wl.prototype.unByKey=Wl.prototype.M;Jj.prototype.changed=Jj.prototype.u;Jj.prototype.dispatchEvent=Jj.prototype.b;Jj.prototype.getRevision=Jj.prototype.K;Jj.prototype.on=Jj.prototype.I;Jj.prototype.once=Jj.prototype.L;Jj.prototype.un=Jj.prototype.J;
+Jj.prototype.unByKey=Jj.prototype.M;Al.prototype.changed=Al.prototype.u;Al.prototype.dispatchEvent=Al.prototype.b;Al.prototype.getRevision=Al.prototype.K;Al.prototype.on=Al.prototype.I;Al.prototype.once=Al.prototype.L;Al.prototype.un=Al.prototype.J;Al.prototype.unByKey=Al.prototype.M;Bl.prototype.changed=Bl.prototype.u;Bl.prototype.dispatchEvent=Bl.prototype.b;Bl.prototype.getRevision=Bl.prototype.K;Bl.prototype.on=Bl.prototype.I;Bl.prototype.once=Bl.prototype.L;Bl.prototype.un=Bl.prototype.J;
+Bl.prototype.unByKey=Bl.prototype.M;Dl.prototype.changed=Dl.prototype.u;Dl.prototype.dispatchEvent=Dl.prototype.b;Dl.prototype.getRevision=Dl.prototype.K;Dl.prototype.on=Dl.prototype.I;Dl.prototype.once=Dl.prototype.L;Dl.prototype.un=Dl.prototype.J;Dl.prototype.unByKey=Dl.prototype.M;Ol.prototype.changed=Ol.prototype.u;Ol.prototype.dispatchEvent=Ol.prototype.b;Ol.prototype.getRevision=Ol.prototype.K;Ol.prototype.on=Ol.prototype.I;Ol.prototype.once=Ol.prototype.L;Ol.prototype.un=Ol.prototype.J;
+Ol.prototype.unByKey=Ol.prototype.M;lh.prototype.type=lh.prototype.type;lh.prototype.target=lh.prototype.target;lh.prototype.preventDefault=lh.prototype.preventDefault;lh.prototype.stopPropagation=lh.prototype.stopPropagation;Wf.prototype.type=Wf.prototype.type;Wf.prototype.target=Wf.prototype.target;Wf.prototype.preventDefault=Wf.prototype.preventDefault;Wf.prototype.stopPropagation=Wf.prototype.stopPropagation;ih.prototype.get=ih.prototype.get;ih.prototype.getKeys=ih.prototype.N;
+ih.prototype.getProperties=ih.prototype.O;ih.prototype.set=ih.prototype.set;ih.prototype.setProperties=ih.prototype.G;ih.prototype.unset=ih.prototype.P;ih.prototype.changed=ih.prototype.u;ih.prototype.dispatchEvent=ih.prototype.b;ih.prototype.getRevision=ih.prototype.K;ih.prototype.on=ih.prototype.I;ih.prototype.once=ih.prototype.L;ih.prototype.un=ih.prototype.J;ih.prototype.unByKey=ih.prototype.M;mh.prototype.getExtent=mh.prototype.H;mh.prototype.getMaxResolution=mh.prototype.Nb;
+mh.prototype.getMinResolution=mh.prototype.Ob;mh.prototype.getOpacity=mh.prototype.Pb;mh.prototype.getVisible=mh.prototype.xb;mh.prototype.getZIndex=mh.prototype.Qb;mh.prototype.setExtent=mh.prototype.fc;mh.prototype.setMaxResolution=mh.prototype.nc;mh.prototype.setMinResolution=mh.prototype.oc;mh.prototype.setOpacity=mh.prototype.gc;mh.prototype.setVisible=mh.prototype.hc;mh.prototype.setZIndex=mh.prototype.ic;mh.prototype.get=mh.prototype.get;mh.prototype.getKeys=mh.prototype.N;
+mh.prototype.getProperties=mh.prototype.O;mh.prototype.set=mh.prototype.set;mh.prototype.setProperties=mh.prototype.G;mh.prototype.unset=mh.prototype.P;mh.prototype.changed=mh.prototype.u;mh.prototype.dispatchEvent=mh.prototype.b;mh.prototype.getRevision=mh.prototype.K;mh.prototype.on=mh.prototype.I;mh.prototype.once=mh.prototype.L;mh.prototype.un=mh.prototype.J;mh.prototype.unByKey=mh.prototype.M;G.prototype.setMap=G.prototype.setMap;G.prototype.setSource=G.prototype.Fc;G.prototype.getExtent=G.prototype.H;
+G.prototype.getMaxResolution=G.prototype.Nb;G.prototype.getMinResolution=G.prototype.Ob;G.prototype.getOpacity=G.prototype.Pb;G.prototype.getVisible=G.prototype.xb;G.prototype.getZIndex=G.prototype.Qb;G.prototype.setExtent=G.prototype.fc;G.prototype.setMaxResolution=G.prototype.nc;G.prototype.setMinResolution=G.prototype.oc;G.prototype.setOpacity=G.prototype.gc;G.prototype.setVisible=G.prototype.hc;G.prototype.setZIndex=G.prototype.ic;G.prototype.get=G.prototype.get;G.prototype.getKeys=G.prototype.N;
+G.prototype.getProperties=G.prototype.O;G.prototype.set=G.prototype.set;G.prototype.setProperties=G.prototype.G;G.prototype.unset=G.prototype.P;G.prototype.changed=G.prototype.u;G.prototype.dispatchEvent=G.prototype.b;G.prototype.getRevision=G.prototype.K;G.prototype.on=G.prototype.I;G.prototype.once=G.prototype.L;G.prototype.un=G.prototype.J;G.prototype.unByKey=G.prototype.M;V.prototype.getSource=V.prototype.ha;V.prototype.getStyle=V.prototype.C;V.prototype.getStyleFunction=V.prototype.D;
+V.prototype.setStyle=V.prototype.l;V.prototype.setMap=V.prototype.setMap;V.prototype.setSource=V.prototype.Fc;V.prototype.getExtent=V.prototype.H;V.prototype.getMaxResolution=V.prototype.Nb;V.prototype.getMinResolution=V.prototype.Ob;V.prototype.getOpacity=V.prototype.Pb;V.prototype.getVisible=V.prototype.xb;V.prototype.getZIndex=V.prototype.Qb;V.prototype.setExtent=V.prototype.fc;V.prototype.setMaxResolution=V.prototype.nc;V.prototype.setMinResolution=V.prototype.oc;V.prototype.setOpacity=V.prototype.gc;
+V.prototype.setVisible=V.prototype.hc;V.prototype.setZIndex=V.prototype.ic;V.prototype.get=V.prototype.get;V.prototype.getKeys=V.prototype.N;V.prototype.getProperties=V.prototype.O;V.prototype.set=V.prototype.set;V.prototype.setProperties=V.prototype.G;V.prototype.unset=V.prototype.P;V.prototype.changed=V.prototype.u;V.prototype.dispatchEvent=V.prototype.b;V.prototype.getRevision=V.prototype.K;V.prototype.on=V.prototype.I;V.prototype.once=V.prototype.L;V.prototype.un=V.prototype.J;
+V.prototype.unByKey=V.prototype.M;cj.prototype.setMap=cj.prototype.setMap;cj.prototype.setSource=cj.prototype.Fc;cj.prototype.getExtent=cj.prototype.H;cj.prototype.getMaxResolution=cj.prototype.Nb;cj.prototype.getMinResolution=cj.prototype.Ob;cj.prototype.getOpacity=cj.prototype.Pb;cj.prototype.getVisible=cj.prototype.xb;cj.prototype.getZIndex=cj.prototype.Qb;cj.prototype.setExtent=cj.prototype.fc;cj.prototype.setMaxResolution=cj.prototype.nc;cj.prototype.setMinResolution=cj.prototype.oc;
+cj.prototype.setOpacity=cj.prototype.gc;cj.prototype.setVisible=cj.prototype.hc;cj.prototype.setZIndex=cj.prototype.ic;cj.prototype.get=cj.prototype.get;cj.prototype.getKeys=cj.prototype.N;cj.prototype.getProperties=cj.prototype.O;cj.prototype.set=cj.prototype.set;cj.prototype.setProperties=cj.prototype.G;cj.prototype.unset=cj.prototype.P;cj.prototype.changed=cj.prototype.u;cj.prototype.dispatchEvent=cj.prototype.b;cj.prototype.getRevision=cj.prototype.K;cj.prototype.on=cj.prototype.I;
+cj.prototype.once=cj.prototype.L;cj.prototype.un=cj.prototype.J;cj.prototype.unByKey=cj.prototype.M;Ti.prototype.getExtent=Ti.prototype.H;Ti.prototype.getMaxResolution=Ti.prototype.Nb;Ti.prototype.getMinResolution=Ti.prototype.Ob;Ti.prototype.getOpacity=Ti.prototype.Pb;Ti.prototype.getVisible=Ti.prototype.xb;Ti.prototype.getZIndex=Ti.prototype.Qb;Ti.prototype.setExtent=Ti.prototype.fc;Ti.prototype.setMaxResolution=Ti.prototype.nc;Ti.prototype.setMinResolution=Ti.prototype.oc;
+Ti.prototype.setOpacity=Ti.prototype.gc;Ti.prototype.setVisible=Ti.prototype.hc;Ti.prototype.setZIndex=Ti.prototype.ic;Ti.prototype.get=Ti.prototype.get;Ti.prototype.getKeys=Ti.prototype.N;Ti.prototype.getProperties=Ti.prototype.O;Ti.prototype.set=Ti.prototype.set;Ti.prototype.setProperties=Ti.prototype.G;Ti.prototype.unset=Ti.prototype.P;Ti.prototype.changed=Ti.prototype.u;Ti.prototype.dispatchEvent=Ti.prototype.b;Ti.prototype.getRevision=Ti.prototype.K;Ti.prototype.on=Ti.prototype.I;
+Ti.prototype.once=Ti.prototype.L;Ti.prototype.un=Ti.prototype.J;Ti.prototype.unByKey=Ti.prototype.M;dj.prototype.setMap=dj.prototype.setMap;dj.prototype.setSource=dj.prototype.Fc;dj.prototype.getExtent=dj.prototype.H;dj.prototype.getMaxResolution=dj.prototype.Nb;dj.prototype.getMinResolution=dj.prototype.Ob;dj.prototype.getOpacity=dj.prototype.Pb;dj.prototype.getVisible=dj.prototype.xb;dj.prototype.getZIndex=dj.prototype.Qb;dj.prototype.setExtent=dj.prototype.fc;dj.prototype.setMaxResolution=dj.prototype.nc;
+dj.prototype.setMinResolution=dj.prototype.oc;dj.prototype.setOpacity=dj.prototype.gc;dj.prototype.setVisible=dj.prototype.hc;dj.prototype.setZIndex=dj.prototype.ic;dj.prototype.get=dj.prototype.get;dj.prototype.getKeys=dj.prototype.N;dj.prototype.getProperties=dj.prototype.O;dj.prototype.set=dj.prototype.set;dj.prototype.setProperties=dj.prototype.G;dj.prototype.unset=dj.prototype.P;dj.prototype.changed=dj.prototype.u;dj.prototype.dispatchEvent=dj.prototype.b;dj.prototype.getRevision=dj.prototype.K;
+dj.prototype.on=dj.prototype.I;dj.prototype.once=dj.prototype.L;dj.prototype.un=dj.prototype.J;dj.prototype.unByKey=dj.prototype.M;I.prototype.getSource=I.prototype.ha;I.prototype.getStyle=I.prototype.C;I.prototype.getStyleFunction=I.prototype.D;I.prototype.setStyle=I.prototype.l;I.prototype.setMap=I.prototype.setMap;I.prototype.setSource=I.prototype.Fc;I.prototype.getExtent=I.prototype.H;I.prototype.getMaxResolution=I.prototype.Nb;I.prototype.getMinResolution=I.prototype.Ob;
+I.prototype.getOpacity=I.prototype.Pb;I.prototype.getVisible=I.prototype.xb;I.prototype.getZIndex=I.prototype.Qb;I.prototype.setExtent=I.prototype.fc;I.prototype.setMaxResolution=I.prototype.nc;I.prototype.setMinResolution=I.prototype.oc;I.prototype.setOpacity=I.prototype.gc;I.prototype.setVisible=I.prototype.hc;I.prototype.setZIndex=I.prototype.ic;I.prototype.get=I.prototype.get;I.prototype.getKeys=I.prototype.N;I.prototype.getProperties=I.prototype.O;I.prototype.set=I.prototype.set;
+I.prototype.setProperties=I.prototype.G;I.prototype.unset=I.prototype.P;I.prototype.changed=I.prototype.u;I.prototype.dispatchEvent=I.prototype.b;I.prototype.getRevision=I.prototype.K;I.prototype.on=I.prototype.I;I.prototype.once=I.prototype.L;I.prototype.un=I.prototype.J;I.prototype.unByKey=I.prototype.M;Vh.prototype.get=Vh.prototype.get;Vh.prototype.getKeys=Vh.prototype.N;Vh.prototype.getProperties=Vh.prototype.O;Vh.prototype.set=Vh.prototype.set;Vh.prototype.setProperties=Vh.prototype.G;
+Vh.prototype.unset=Vh.prototype.P;Vh.prototype.changed=Vh.prototype.u;Vh.prototype.dispatchEvent=Vh.prototype.b;Vh.prototype.getRevision=Vh.prototype.K;Vh.prototype.on=Vh.prototype.I;Vh.prototype.once=Vh.prototype.L;Vh.prototype.un=Vh.prototype.J;Vh.prototype.unByKey=Vh.prototype.M;Zh.prototype.getActive=Zh.prototype.f;Zh.prototype.getMap=Zh.prototype.l;Zh.prototype.setActive=Zh.prototype.i;Zh.prototype.get=Zh.prototype.get;Zh.prototype.getKeys=Zh.prototype.N;Zh.prototype.getProperties=Zh.prototype.O;
+Zh.prototype.set=Zh.prototype.set;Zh.prototype.setProperties=Zh.prototype.G;Zh.prototype.unset=Zh.prototype.P;Zh.prototype.changed=Zh.prototype.u;Zh.prototype.dispatchEvent=Zh.prototype.b;Zh.prototype.getRevision=Zh.prototype.K;Zh.prototype.on=Zh.prototype.I;Zh.prototype.once=Zh.prototype.L;Zh.prototype.un=Zh.prototype.J;Zh.prototype.unByKey=Zh.prototype.M;hu.prototype.getActive=hu.prototype.f;hu.prototype.getMap=hu.prototype.l;hu.prototype.setActive=hu.prototype.i;hu.prototype.get=hu.prototype.get;
+hu.prototype.getKeys=hu.prototype.N;hu.prototype.getProperties=hu.prototype.O;hu.prototype.set=hu.prototype.set;hu.prototype.setProperties=hu.prototype.G;hu.prototype.unset=hu.prototype.P;hu.prototype.changed=hu.prototype.u;hu.prototype.dispatchEvent=hu.prototype.b;hu.prototype.getRevision=hu.prototype.K;hu.prototype.on=hu.prototype.I;hu.prototype.once=hu.prototype.L;hu.prototype.un=hu.prototype.J;hu.prototype.unByKey=hu.prototype.M;ku.prototype.type=ku.prototype.type;ku.prototype.target=ku.prototype.target;
+ku.prototype.preventDefault=ku.prototype.preventDefault;ku.prototype.stopPropagation=ku.prototype.stopPropagation;xi.prototype.type=xi.prototype.type;xi.prototype.target=xi.prototype.target;xi.prototype.preventDefault=xi.prototype.preventDefault;xi.prototype.stopPropagation=xi.prototype.stopPropagation;ji.prototype.getActive=ji.prototype.f;ji.prototype.getMap=ji.prototype.l;ji.prototype.setActive=ji.prototype.i;ji.prototype.get=ji.prototype.get;ji.prototype.getKeys=ji.prototype.N;
+ji.prototype.getProperties=ji.prototype.O;ji.prototype.set=ji.prototype.set;ji.prototype.setProperties=ji.prototype.G;ji.prototype.unset=ji.prototype.P;ji.prototype.changed=ji.prototype.u;ji.prototype.dispatchEvent=ji.prototype.b;ji.prototype.getRevision=ji.prototype.K;ji.prototype.on=ji.prototype.I;ji.prototype.once=ji.prototype.L;ji.prototype.un=ji.prototype.J;ji.prototype.unByKey=ji.prototype.M;yi.prototype.getActive=yi.prototype.f;yi.prototype.getMap=yi.prototype.l;yi.prototype.setActive=yi.prototype.i;
+yi.prototype.get=yi.prototype.get;yi.prototype.getKeys=yi.prototype.N;yi.prototype.getProperties=yi.prototype.O;yi.prototype.set=yi.prototype.set;yi.prototype.setProperties=yi.prototype.G;yi.prototype.unset=yi.prototype.P;yi.prototype.changed=yi.prototype.u;yi.prototype.dispatchEvent=yi.prototype.b;yi.prototype.getRevision=yi.prototype.K;yi.prototype.on=yi.prototype.I;yi.prototype.once=yi.prototype.L;yi.prototype.un=yi.prototype.J;yi.prototype.unByKey=yi.prototype.M;mi.prototype.getActive=mi.prototype.f;
+mi.prototype.getMap=mi.prototype.l;mi.prototype.setActive=mi.prototype.i;mi.prototype.get=mi.prototype.get;mi.prototype.getKeys=mi.prototype.N;mi.prototype.getProperties=mi.prototype.O;mi.prototype.set=mi.prototype.set;mi.prototype.setProperties=mi.prototype.G;mi.prototype.unset=mi.prototype.P;mi.prototype.changed=mi.prototype.u;mi.prototype.dispatchEvent=mi.prototype.b;mi.prototype.getRevision=mi.prototype.K;mi.prototype.on=mi.prototype.I;mi.prototype.once=mi.prototype.L;mi.prototype.un=mi.prototype.J;
+mi.prototype.unByKey=mi.prototype.M;mu.prototype.getActive=mu.prototype.f;mu.prototype.getMap=mu.prototype.l;mu.prototype.setActive=mu.prototype.i;mu.prototype.get=mu.prototype.get;mu.prototype.getKeys=mu.prototype.N;mu.prototype.getProperties=mu.prototype.O;mu.prototype.set=mu.prototype.set;mu.prototype.setProperties=mu.prototype.G;mu.prototype.unset=mu.prototype.P;mu.prototype.changed=mu.prototype.u;mu.prototype.dispatchEvent=mu.prototype.b;mu.prototype.getRevision=mu.prototype.K;
+mu.prototype.on=mu.prototype.I;mu.prototype.once=mu.prototype.L;mu.prototype.un=mu.prototype.J;mu.prototype.unByKey=mu.prototype.M;qi.prototype.getActive=qi.prototype.f;qi.prototype.getMap=qi.prototype.l;qi.prototype.setActive=qi.prototype.i;qi.prototype.get=qi.prototype.get;qi.prototype.getKeys=qi.prototype.N;qi.prototype.getProperties=qi.prototype.O;qi.prototype.set=qi.prototype.set;qi.prototype.setProperties=qi.prototype.G;qi.prototype.unset=qi.prototype.P;qi.prototype.changed=qi.prototype.u;
+qi.prototype.dispatchEvent=qi.prototype.b;qi.prototype.getRevision=qi.prototype.K;qi.prototype.on=qi.prototype.I;qi.prototype.once=qi.prototype.L;qi.prototype.un=qi.prototype.J;qi.prototype.unByKey=qi.prototype.M;Di.prototype.getGeometry=Di.prototype.W;Di.prototype.getActive=Di.prototype.f;Di.prototype.getMap=Di.prototype.l;Di.prototype.setActive=Di.prototype.i;Di.prototype.get=Di.prototype.get;Di.prototype.getKeys=Di.prototype.N;Di.prototype.getProperties=Di.prototype.O;Di.prototype.set=Di.prototype.set;
+Di.prototype.setProperties=Di.prototype.G;Di.prototype.unset=Di.prototype.P;Di.prototype.changed=Di.prototype.u;Di.prototype.dispatchEvent=Di.prototype.b;Di.prototype.getRevision=Di.prototype.K;Di.prototype.on=Di.prototype.I;Di.prototype.once=Di.prototype.L;Di.prototype.un=Di.prototype.J;Di.prototype.unByKey=Di.prototype.M;qu.prototype.type=qu.prototype.type;qu.prototype.target=qu.prototype.target;qu.prototype.preventDefault=qu.prototype.preventDefault;qu.prototype.stopPropagation=qu.prototype.stopPropagation;
+ru.prototype.getActive=ru.prototype.f;ru.prototype.getMap=ru.prototype.l;ru.prototype.setActive=ru.prototype.i;ru.prototype.get=ru.prototype.get;ru.prototype.getKeys=ru.prototype.N;ru.prototype.getProperties=ru.prototype.O;ru.prototype.set=ru.prototype.set;ru.prototype.setProperties=ru.prototype.G;ru.prototype.unset=ru.prototype.P;ru.prototype.changed=ru.prototype.u;ru.prototype.dispatchEvent=ru.prototype.b;ru.prototype.getRevision=ru.prototype.K;ru.prototype.on=ru.prototype.I;ru.prototype.once=ru.prototype.L;
+ru.prototype.un=ru.prototype.J;ru.prototype.unByKey=ru.prototype.M;Ei.prototype.getActive=Ei.prototype.f;Ei.prototype.getMap=Ei.prototype.l;Ei.prototype.setActive=Ei.prototype.i;Ei.prototype.get=Ei.prototype.get;Ei.prototype.getKeys=Ei.prototype.N;Ei.prototype.getProperties=Ei.prototype.O;Ei.prototype.set=Ei.prototype.set;Ei.prototype.setProperties=Ei.prototype.G;Ei.prototype.unset=Ei.prototype.P;Ei.prototype.changed=Ei.prototype.u;Ei.prototype.dispatchEvent=Ei.prototype.b;
+Ei.prototype.getRevision=Ei.prototype.K;Ei.prototype.on=Ei.prototype.I;Ei.prototype.once=Ei.prototype.L;Ei.prototype.un=Ei.prototype.J;Ei.prototype.unByKey=Ei.prototype.M;Gi.prototype.getActive=Gi.prototype.f;Gi.prototype.getMap=Gi.prototype.l;Gi.prototype.setActive=Gi.prototype.i;Gi.prototype.get=Gi.prototype.get;Gi.prototype.getKeys=Gi.prototype.N;Gi.prototype.getProperties=Gi.prototype.O;Gi.prototype.set=Gi.prototype.set;Gi.prototype.setProperties=Gi.prototype.G;Gi.prototype.unset=Gi.prototype.P;
+Gi.prototype.changed=Gi.prototype.u;Gi.prototype.dispatchEvent=Gi.prototype.b;Gi.prototype.getRevision=Gi.prototype.K;Gi.prototype.on=Gi.prototype.I;Gi.prototype.once=Gi.prototype.L;Gi.prototype.un=Gi.prototype.J;Gi.prototype.unByKey=Gi.prototype.M;Hu.prototype.type=Hu.prototype.type;Hu.prototype.target=Hu.prototype.target;Hu.prototype.preventDefault=Hu.prototype.preventDefault;Hu.prototype.stopPropagation=Hu.prototype.stopPropagation;Iu.prototype.getActive=Iu.prototype.f;Iu.prototype.getMap=Iu.prototype.l;
+Iu.prototype.setActive=Iu.prototype.i;Iu.prototype.get=Iu.prototype.get;Iu.prototype.getKeys=Iu.prototype.N;Iu.prototype.getProperties=Iu.prototype.O;Iu.prototype.set=Iu.prototype.set;Iu.prototype.setProperties=Iu.prototype.G;Iu.prototype.unset=Iu.prototype.P;Iu.prototype.changed=Iu.prototype.u;Iu.prototype.dispatchEvent=Iu.prototype.b;Iu.prototype.getRevision=Iu.prototype.K;Iu.prototype.on=Iu.prototype.I;Iu.prototype.once=Iu.prototype.L;Iu.prototype.un=Iu.prototype.J;Iu.prototype.unByKey=Iu.prototype.M;
+Ii.prototype.getActive=Ii.prototype.f;Ii.prototype.getMap=Ii.prototype.l;Ii.prototype.setActive=Ii.prototype.i;Ii.prototype.get=Ii.prototype.get;Ii.prototype.getKeys=Ii.prototype.N;Ii.prototype.getProperties=Ii.prototype.O;Ii.prototype.set=Ii.prototype.set;Ii.prototype.setProperties=Ii.prototype.G;Ii.prototype.unset=Ii.prototype.P;Ii.prototype.changed=Ii.prototype.u;Ii.prototype.dispatchEvent=Ii.prototype.b;Ii.prototype.getRevision=Ii.prototype.K;Ii.prototype.on=Ii.prototype.I;Ii.prototype.once=Ii.prototype.L;
+Ii.prototype.un=Ii.prototype.J;Ii.prototype.unByKey=Ii.prototype.M;Ki.prototype.getActive=Ki.prototype.f;Ki.prototype.getMap=Ki.prototype.l;Ki.prototype.setActive=Ki.prototype.i;Ki.prototype.get=Ki.prototype.get;Ki.prototype.getKeys=Ki.prototype.N;Ki.prototype.getProperties=Ki.prototype.O;Ki.prototype.set=Ki.prototype.set;Ki.prototype.setProperties=Ki.prototype.G;Ki.prototype.unset=Ki.prototype.P;Ki.prototype.changed=Ki.prototype.u;Ki.prototype.dispatchEvent=Ki.prototype.b;
+Ki.prototype.getRevision=Ki.prototype.K;Ki.prototype.on=Ki.prototype.I;Ki.prototype.once=Ki.prototype.L;Ki.prototype.un=Ki.prototype.J;Ki.prototype.unByKey=Ki.prototype.M;Oi.prototype.getActive=Oi.prototype.f;Oi.prototype.getMap=Oi.prototype.l;Oi.prototype.setActive=Oi.prototype.i;Oi.prototype.get=Oi.prototype.get;Oi.prototype.getKeys=Oi.prototype.N;Oi.prototype.getProperties=Oi.prototype.O;Oi.prototype.set=Oi.prototype.set;Oi.prototype.setProperties=Oi.prototype.G;Oi.prototype.unset=Oi.prototype.P;
+Oi.prototype.changed=Oi.prototype.u;Oi.prototype.dispatchEvent=Oi.prototype.b;Oi.prototype.getRevision=Oi.prototype.K;Oi.prototype.on=Oi.prototype.I;Oi.prototype.once=Oi.prototype.L;Oi.prototype.un=Oi.prototype.J;Oi.prototype.unByKey=Oi.prototype.M;Vu.prototype.type=Vu.prototype.type;Vu.prototype.target=Vu.prototype.target;Vu.prototype.preventDefault=Vu.prototype.preventDefault;Vu.prototype.stopPropagation=Vu.prototype.stopPropagation;Wu.prototype.getActive=Wu.prototype.f;Wu.prototype.getMap=Wu.prototype.l;
+Wu.prototype.setActive=Wu.prototype.i;Wu.prototype.get=Wu.prototype.get;Wu.prototype.getKeys=Wu.prototype.N;Wu.prototype.getProperties=Wu.prototype.O;Wu.prototype.set=Wu.prototype.set;Wu.prototype.setProperties=Wu.prototype.G;Wu.prototype.unset=Wu.prototype.P;Wu.prototype.changed=Wu.prototype.u;Wu.prototype.dispatchEvent=Wu.prototype.b;Wu.prototype.getRevision=Wu.prototype.K;Wu.prototype.on=Wu.prototype.I;Wu.prototype.once=Wu.prototype.L;Wu.prototype.un=Wu.prototype.J;Wu.prototype.unByKey=Wu.prototype.M;
+Zu.prototype.getActive=Zu.prototype.f;Zu.prototype.getMap=Zu.prototype.l;Zu.prototype.setActive=Zu.prototype.i;Zu.prototype.get=Zu.prototype.get;Zu.prototype.getKeys=Zu.prototype.N;Zu.prototype.getProperties=Zu.prototype.O;Zu.prototype.set=Zu.prototype.set;Zu.prototype.setProperties=Zu.prototype.G;Zu.prototype.unset=Zu.prototype.P;Zu.prototype.changed=Zu.prototype.u;Zu.prototype.dispatchEvent=Zu.prototype.b;Zu.prototype.getRevision=Zu.prototype.K;Zu.prototype.on=Zu.prototype.I;Zu.prototype.once=Zu.prototype.L;
+Zu.prototype.un=Zu.prototype.J;Zu.prototype.unByKey=Zu.prototype.M;cv.prototype.type=cv.prototype.type;cv.prototype.target=cv.prototype.target;cv.prototype.preventDefault=cv.prototype.preventDefault;cv.prototype.stopPropagation=cv.prototype.stopPropagation;dv.prototype.getActive=dv.prototype.f;dv.prototype.getMap=dv.prototype.l;dv.prototype.setActive=dv.prototype.i;dv.prototype.get=dv.prototype.get;dv.prototype.getKeys=dv.prototype.N;dv.prototype.getProperties=dv.prototype.O;dv.prototype.set=dv.prototype.set;
+dv.prototype.setProperties=dv.prototype.G;dv.prototype.unset=dv.prototype.P;dv.prototype.changed=dv.prototype.u;dv.prototype.dispatchEvent=dv.prototype.b;dv.prototype.getRevision=dv.prototype.K;dv.prototype.on=dv.prototype.I;dv.prototype.once=dv.prototype.L;dv.prototype.un=dv.prototype.J;dv.prototype.unByKey=dv.prototype.M;Tc.prototype.get=Tc.prototype.get;Tc.prototype.getKeys=Tc.prototype.N;Tc.prototype.getProperties=Tc.prototype.O;Tc.prototype.set=Tc.prototype.set;Tc.prototype.setProperties=Tc.prototype.G;
+Tc.prototype.unset=Tc.prototype.P;Tc.prototype.changed=Tc.prototype.u;Tc.prototype.dispatchEvent=Tc.prototype.b;Tc.prototype.getRevision=Tc.prototype.K;Tc.prototype.on=Tc.prototype.I;Tc.prototype.once=Tc.prototype.L;Tc.prototype.un=Tc.prototype.J;Tc.prototype.unByKey=Tc.prototype.M;hd.prototype.getClosestPoint=hd.prototype.vb;hd.prototype.getExtent=hd.prototype.H;hd.prototype.rotate=hd.prototype.rotate;hd.prototype.simplify=hd.prototype.Bb;hd.prototype.transform=hd.prototype.jb;hd.prototype.get=hd.prototype.get;
+hd.prototype.getKeys=hd.prototype.N;hd.prototype.getProperties=hd.prototype.O;hd.prototype.set=hd.prototype.set;hd.prototype.setProperties=hd.prototype.G;hd.prototype.unset=hd.prototype.P;hd.prototype.changed=hd.prototype.u;hd.prototype.dispatchEvent=hd.prototype.b;hd.prototype.getRevision=hd.prototype.K;hd.prototype.on=hd.prototype.I;hd.prototype.once=hd.prototype.L;hd.prototype.un=hd.prototype.J;hd.prototype.unByKey=hd.prototype.M;Vt.prototype.getFirstCoordinate=Vt.prototype.Ib;
+Vt.prototype.getLastCoordinate=Vt.prototype.Jb;Vt.prototype.getLayout=Vt.prototype.Kb;Vt.prototype.rotate=Vt.prototype.rotate;Vt.prototype.getClosestPoint=Vt.prototype.vb;Vt.prototype.getExtent=Vt.prototype.H;Vt.prototype.simplify=Vt.prototype.Bb;Vt.prototype.get=Vt.prototype.get;Vt.prototype.getKeys=Vt.prototype.N;Vt.prototype.getProperties=Vt.prototype.O;Vt.prototype.set=Vt.prototype.set;Vt.prototype.setProperties=Vt.prototype.G;Vt.prototype.unset=Vt.prototype.P;Vt.prototype.changed=Vt.prototype.u;
+Vt.prototype.dispatchEvent=Vt.prototype.b;Vt.prototype.getRevision=Vt.prototype.K;Vt.prototype.on=Vt.prototype.I;Vt.prototype.once=Vt.prototype.L;Vt.prototype.un=Vt.prototype.J;Vt.prototype.unByKey=Vt.prototype.M;Ln.prototype.getClosestPoint=Ln.prototype.vb;Ln.prototype.getExtent=Ln.prototype.H;Ln.prototype.rotate=Ln.prototype.rotate;Ln.prototype.simplify=Ln.prototype.Bb;Ln.prototype.transform=Ln.prototype.jb;Ln.prototype.get=Ln.prototype.get;Ln.prototype.getKeys=Ln.prototype.N;
+Ln.prototype.getProperties=Ln.prototype.O;Ln.prototype.set=Ln.prototype.set;Ln.prototype.setProperties=Ln.prototype.G;Ln.prototype.unset=Ln.prototype.P;Ln.prototype.changed=Ln.prototype.u;Ln.prototype.dispatchEvent=Ln.prototype.b;Ln.prototype.getRevision=Ln.prototype.K;Ln.prototype.on=Ln.prototype.I;Ln.prototype.once=Ln.prototype.L;Ln.prototype.un=Ln.prototype.J;Ln.prototype.unByKey=Ln.prototype.M;zd.prototype.getFirstCoordinate=zd.prototype.Ib;zd.prototype.getLastCoordinate=zd.prototype.Jb;
+zd.prototype.getLayout=zd.prototype.Kb;zd.prototype.rotate=zd.prototype.rotate;zd.prototype.getClosestPoint=zd.prototype.vb;zd.prototype.getExtent=zd.prototype.H;zd.prototype.simplify=zd.prototype.Bb;zd.prototype.transform=zd.prototype.jb;zd.prototype.get=zd.prototype.get;zd.prototype.getKeys=zd.prototype.N;zd.prototype.getProperties=zd.prototype.O;zd.prototype.set=zd.prototype.set;zd.prototype.setProperties=zd.prototype.G;zd.prototype.unset=zd.prototype.P;zd.prototype.changed=zd.prototype.u;
+zd.prototype.dispatchEvent=zd.prototype.b;zd.prototype.getRevision=zd.prototype.K;zd.prototype.on=zd.prototype.I;zd.prototype.once=zd.prototype.L;zd.prototype.un=zd.prototype.J;zd.prototype.unByKey=zd.prototype.M;R.prototype.getFirstCoordinate=R.prototype.Ib;R.prototype.getLastCoordinate=R.prototype.Jb;R.prototype.getLayout=R.prototype.Kb;R.prototype.rotate=R.prototype.rotate;R.prototype.getClosestPoint=R.prototype.vb;R.prototype.getExtent=R.prototype.H;R.prototype.simplify=R.prototype.Bb;
+R.prototype.transform=R.prototype.jb;R.prototype.get=R.prototype.get;R.prototype.getKeys=R.prototype.N;R.prototype.getProperties=R.prototype.O;R.prototype.set=R.prototype.set;R.prototype.setProperties=R.prototype.G;R.prototype.unset=R.prototype.P;R.prototype.changed=R.prototype.u;R.prototype.dispatchEvent=R.prototype.b;R.prototype.getRevision=R.prototype.K;R.prototype.on=R.prototype.I;R.prototype.once=R.prototype.L;R.prototype.un=R.prototype.J;R.prototype.unByKey=R.prototype.M;
+S.prototype.getFirstCoordinate=S.prototype.Ib;S.prototype.getLastCoordinate=S.prototype.Jb;S.prototype.getLayout=S.prototype.Kb;S.prototype.rotate=S.prototype.rotate;S.prototype.getClosestPoint=S.prototype.vb;S.prototype.getExtent=S.prototype.H;S.prototype.simplify=S.prototype.Bb;S.prototype.transform=S.prototype.jb;S.prototype.get=S.prototype.get;S.prototype.getKeys=S.prototype.N;S.prototype.getProperties=S.prototype.O;S.prototype.set=S.prototype.set;S.prototype.setProperties=S.prototype.G;
+S.prototype.unset=S.prototype.P;S.prototype.changed=S.prototype.u;S.prototype.dispatchEvent=S.prototype.b;S.prototype.getRevision=S.prototype.K;S.prototype.on=S.prototype.I;S.prototype.once=S.prototype.L;S.prototype.un=S.prototype.J;S.prototype.unByKey=S.prototype.M;Bn.prototype.getFirstCoordinate=Bn.prototype.Ib;Bn.prototype.getLastCoordinate=Bn.prototype.Jb;Bn.prototype.getLayout=Bn.prototype.Kb;Bn.prototype.rotate=Bn.prototype.rotate;Bn.prototype.getClosestPoint=Bn.prototype.vb;
+Bn.prototype.getExtent=Bn.prototype.H;Bn.prototype.simplify=Bn.prototype.Bb;Bn.prototype.transform=Bn.prototype.jb;Bn.prototype.get=Bn.prototype.get;Bn.prototype.getKeys=Bn.prototype.N;Bn.prototype.getProperties=Bn.prototype.O;Bn.prototype.set=Bn.prototype.set;Bn.prototype.setProperties=Bn.prototype.G;Bn.prototype.unset=Bn.prototype.P;Bn.prototype.changed=Bn.prototype.u;Bn.prototype.dispatchEvent=Bn.prototype.b;Bn.prototype.getRevision=Bn.prototype.K;Bn.prototype.on=Bn.prototype.I;
+Bn.prototype.once=Bn.prototype.L;Bn.prototype.un=Bn.prototype.J;Bn.prototype.unByKey=Bn.prototype.M;T.prototype.getFirstCoordinate=T.prototype.Ib;T.prototype.getLastCoordinate=T.prototype.Jb;T.prototype.getLayout=T.prototype.Kb;T.prototype.rotate=T.prototype.rotate;T.prototype.getClosestPoint=T.prototype.vb;T.prototype.getExtent=T.prototype.H;T.prototype.simplify=T.prototype.Bb;T.prototype.transform=T.prototype.jb;T.prototype.get=T.prototype.get;T.prototype.getKeys=T.prototype.N;
+T.prototype.getProperties=T.prototype.O;T.prototype.set=T.prototype.set;T.prototype.setProperties=T.prototype.G;T.prototype.unset=T.prototype.P;T.prototype.changed=T.prototype.u;T.prototype.dispatchEvent=T.prototype.b;T.prototype.getRevision=T.prototype.K;T.prototype.on=T.prototype.I;T.prototype.once=T.prototype.L;T.prototype.un=T.prototype.J;T.prototype.unByKey=T.prototype.M;C.prototype.getFirstCoordinate=C.prototype.Ib;C.prototype.getLastCoordinate=C.prototype.Jb;C.prototype.getLayout=C.prototype.Kb;
+C.prototype.rotate=C.prototype.rotate;C.prototype.getClosestPoint=C.prototype.vb;C.prototype.getExtent=C.prototype.H;C.prototype.simplify=C.prototype.Bb;C.prototype.transform=C.prototype.jb;C.prototype.get=C.prototype.get;C.prototype.getKeys=C.prototype.N;C.prototype.getProperties=C.prototype.O;C.prototype.set=C.prototype.set;C.prototype.setProperties=C.prototype.G;C.prototype.unset=C.prototype.P;C.prototype.changed=C.prototype.u;C.prototype.dispatchEvent=C.prototype.b;C.prototype.getRevision=C.prototype.K;
+C.prototype.on=C.prototype.I;C.prototype.once=C.prototype.L;C.prototype.un=C.prototype.J;C.prototype.unByKey=C.prototype.M;E.prototype.getFirstCoordinate=E.prototype.Ib;E.prototype.getLastCoordinate=E.prototype.Jb;E.prototype.getLayout=E.prototype.Kb;E.prototype.rotate=E.prototype.rotate;E.prototype.getClosestPoint=E.prototype.vb;E.prototype.getExtent=E.prototype.H;E.prototype.simplify=E.prototype.Bb;E.prototype.transform=E.prototype.jb;E.prototype.get=E.prototype.get;E.prototype.getKeys=E.prototype.N;
+E.prototype.getProperties=E.prototype.O;E.prototype.set=E.prototype.set;E.prototype.setProperties=E.prototype.G;E.prototype.unset=E.prototype.P;E.prototype.changed=E.prototype.u;E.prototype.dispatchEvent=E.prototype.b;E.prototype.getRevision=E.prototype.K;E.prototype.on=E.prototype.I;E.prototype.once=E.prototype.L;E.prototype.un=E.prototype.J;E.prototype.unByKey=E.prototype.M;ko.prototype.readFeatures=ko.prototype.Fa;lo.prototype.readFeatures=lo.prototype.Fa;lo.prototype.readFeatures=lo.prototype.Fa;
+Xe.prototype.get=Xe.prototype.get;Xe.prototype.getKeys=Xe.prototype.N;Xe.prototype.getProperties=Xe.prototype.O;Xe.prototype.set=Xe.prototype.set;Xe.prototype.setProperties=Xe.prototype.G;Xe.prototype.unset=Xe.prototype.P;Xe.prototype.changed=Xe.prototype.u;Xe.prototype.dispatchEvent=Xe.prototype.b;Xe.prototype.getRevision=Xe.prototype.K;Xe.prototype.on=Xe.prototype.I;Xe.prototype.once=Xe.prototype.L;Xe.prototype.un=Xe.prototype.J;Xe.prototype.unByKey=Xe.prototype.M;Ef.prototype.getMap=Ef.prototype.i;
+Ef.prototype.setMap=Ef.prototype.setMap;Ef.prototype.setTarget=Ef.prototype.c;Ef.prototype.get=Ef.prototype.get;Ef.prototype.getKeys=Ef.prototype.N;Ef.prototype.getProperties=Ef.prototype.O;Ef.prototype.set=Ef.prototype.set;Ef.prototype.setProperties=Ef.prototype.G;Ef.prototype.unset=Ef.prototype.P;Ef.prototype.changed=Ef.prototype.u;Ef.prototype.dispatchEvent=Ef.prototype.b;Ef.prototype.getRevision=Ef.prototype.K;Ef.prototype.on=Ef.prototype.I;Ef.prototype.once=Ef.prototype.L;Ef.prototype.un=Ef.prototype.J;
+Ef.prototype.unByKey=Ef.prototype.M;Lf.prototype.getMap=Lf.prototype.i;Lf.prototype.setMap=Lf.prototype.setMap;Lf.prototype.setTarget=Lf.prototype.c;Lf.prototype.get=Lf.prototype.get;Lf.prototype.getKeys=Lf.prototype.N;Lf.prototype.getProperties=Lf.prototype.O;Lf.prototype.set=Lf.prototype.set;Lf.prototype.setProperties=Lf.prototype.G;Lf.prototype.unset=Lf.prototype.P;Lf.prototype.changed=Lf.prototype.u;Lf.prototype.dispatchEvent=Lf.prototype.b;Lf.prototype.getRevision=Lf.prototype.K;
+Lf.prototype.on=Lf.prototype.I;Lf.prototype.once=Lf.prototype.L;Lf.prototype.un=Lf.prototype.J;Lf.prototype.unByKey=Lf.prototype.M;Qf.prototype.getMap=Qf.prototype.i;Qf.prototype.setMap=Qf.prototype.setMap;Qf.prototype.setTarget=Qf.prototype.c;Qf.prototype.get=Qf.prototype.get;Qf.prototype.getKeys=Qf.prototype.N;Qf.prototype.getProperties=Qf.prototype.O;Qf.prototype.set=Qf.prototype.set;Qf.prototype.setProperties=Qf.prototype.G;Qf.prototype.unset=Qf.prototype.P;Qf.prototype.changed=Qf.prototype.u;
+Qf.prototype.dispatchEvent=Qf.prototype.b;Qf.prototype.getRevision=Qf.prototype.K;Qf.prototype.on=Qf.prototype.I;Qf.prototype.once=Qf.prototype.L;Qf.prototype.un=Qf.prototype.J;Qf.prototype.unByKey=Qf.prototype.M;an.prototype.getMap=an.prototype.i;an.prototype.setMap=an.prototype.setMap;an.prototype.setTarget=an.prototype.c;an.prototype.get=an.prototype.get;an.prototype.getKeys=an.prototype.N;an.prototype.getProperties=an.prototype.O;an.prototype.set=an.prototype.set;an.prototype.setProperties=an.prototype.G;
+an.prototype.unset=an.prototype.P;an.prototype.changed=an.prototype.u;an.prototype.dispatchEvent=an.prototype.b;an.prototype.getRevision=an.prototype.K;an.prototype.on=an.prototype.I;an.prototype.once=an.prototype.L;an.prototype.un=an.prototype.J;an.prototype.unByKey=an.prototype.M;Hf.prototype.getMap=Hf.prototype.i;Hf.prototype.setMap=Hf.prototype.setMap;Hf.prototype.setTarget=Hf.prototype.c;Hf.prototype.get=Hf.prototype.get;Hf.prototype.getKeys=Hf.prototype.N;Hf.prototype.getProperties=Hf.prototype.O;
+Hf.prototype.set=Hf.prototype.set;Hf.prototype.setProperties=Hf.prototype.G;Hf.prototype.unset=Hf.prototype.P;Hf.prototype.changed=Hf.prototype.u;Hf.prototype.dispatchEvent=Hf.prototype.b;Hf.prototype.getRevision=Hf.prototype.K;Hf.prototype.on=Hf.prototype.I;Hf.prototype.once=Hf.prototype.L;Hf.prototype.un=Hf.prototype.J;Hf.prototype.unByKey=Hf.prototype.M;fn.prototype.getMap=fn.prototype.i;fn.prototype.setMap=fn.prototype.setMap;fn.prototype.setTarget=fn.prototype.c;fn.prototype.get=fn.prototype.get;
+fn.prototype.getKeys=fn.prototype.N;fn.prototype.getProperties=fn.prototype.O;fn.prototype.set=fn.prototype.set;fn.prototype.setProperties=fn.prototype.G;fn.prototype.unset=fn.prototype.P;fn.prototype.changed=fn.prototype.u;fn.prototype.dispatchEvent=fn.prototype.b;fn.prototype.getRevision=fn.prototype.K;fn.prototype.on=fn.prototype.I;fn.prototype.once=fn.prototype.L;fn.prototype.un=fn.prototype.J;fn.prototype.unByKey=fn.prototype.M;Jf.prototype.getMap=Jf.prototype.i;Jf.prototype.setMap=Jf.prototype.setMap;
+Jf.prototype.setTarget=Jf.prototype.c;Jf.prototype.get=Jf.prototype.get;Jf.prototype.getKeys=Jf.prototype.N;Jf.prototype.getProperties=Jf.prototype.O;Jf.prototype.set=Jf.prototype.set;Jf.prototype.setProperties=Jf.prototype.G;Jf.prototype.unset=Jf.prototype.P;Jf.prototype.changed=Jf.prototype.u;Jf.prototype.dispatchEvent=Jf.prototype.b;Jf.prototype.getRevision=Jf.prototype.K;Jf.prototype.on=Jf.prototype.I;Jf.prototype.once=Jf.prototype.L;Jf.prototype.un=Jf.prototype.J;Jf.prototype.unByKey=Jf.prototype.M;
+kn.prototype.getMap=kn.prototype.i;kn.prototype.setMap=kn.prototype.setMap;kn.prototype.setTarget=kn.prototype.c;kn.prototype.get=kn.prototype.get;kn.prototype.getKeys=kn.prototype.N;kn.prototype.getProperties=kn.prototype.O;kn.prototype.set=kn.prototype.set;kn.prototype.setProperties=kn.prototype.G;kn.prototype.unset=kn.prototype.P;kn.prototype.changed=kn.prototype.u;kn.prototype.dispatchEvent=kn.prototype.b;kn.prototype.getRevision=kn.prototype.K;kn.prototype.on=kn.prototype.I;
+kn.prototype.once=kn.prototype.L;kn.prototype.un=kn.prototype.J;kn.prototype.unByKey=kn.prototype.M;pn.prototype.getMap=pn.prototype.i;pn.prototype.setMap=pn.prototype.setMap;pn.prototype.setTarget=pn.prototype.c;pn.prototype.get=pn.prototype.get;pn.prototype.getKeys=pn.prototype.N;pn.prototype.getProperties=pn.prototype.O;pn.prototype.set=pn.prototype.set;pn.prototype.setProperties=pn.prototype.G;pn.prototype.unset=pn.prototype.P;pn.prototype.changed=pn.prototype.u;pn.prototype.dispatchEvent=pn.prototype.b;
+pn.prototype.getRevision=pn.prototype.K;pn.prototype.on=pn.prototype.I;pn.prototype.once=pn.prototype.L;pn.prototype.un=pn.prototype.J;pn.prototype.unByKey=pn.prototype.M;
return OPENLAYERS.ol;
}));