{"version":3,"file":"index.min.js","sources":["../node_modules/core-js/internals/global.js","../node_modules/core-js/internals/fails.js","../node_modules/core-js/internals/descriptors.js","../node_modules/core-js/internals/object-property-is-enumerable.js","../node_modules/core-js/internals/create-property-descriptor.js","../node_modules/core-js/internals/classof-raw.js","../node_modules/core-js/internals/indexed-object.js","../node_modules/core-js/internals/require-object-coercible.js","../node_modules/core-js/internals/to-indexed-object.js","../node_modules/core-js/internals/is-object.js","../node_modules/core-js/internals/to-primitive.js","../node_modules/core-js/internals/has.js","../node_modules/core-js/internals/document-create-element.js","../node_modules/core-js/internals/ie8-dom-define.js","../node_modules/core-js/internals/object-get-own-property-descriptor.js","../node_modules/core-js/internals/an-object.js","../node_modules/core-js/internals/object-define-property.js","../node_modules/core-js/internals/create-non-enumerable-property.js","../node_modules/core-js/internals/set-global.js","../node_modules/core-js/internals/shared-store.js","../node_modules/core-js/internals/inspect-source.js","../node_modules/core-js/internals/internal-state.js","../node_modules/core-js/internals/shared-key.js","../node_modules/core-js/internals/native-weak-map.js","../node_modules/core-js/internals/shared.js","../node_modules/core-js/internals/uid.js","../node_modules/core-js/internals/hidden-keys.js","../node_modules/core-js/internals/redefine.js","../node_modules/core-js/internals/path.js","../node_modules/core-js/internals/get-built-in.js","../node_modules/core-js/internals/to-integer.js","../node_modules/core-js/internals/to-length.js","../node_modules/core-js/internals/to-absolute-index.js","../node_modules/core-js/internals/array-includes.js","../node_modules/core-js/internals/object-keys-internal.js","../node_modules/core-js/internals/enum-bug-keys.js","../node_modules/core-js/internals/object-get-own-property-names.js","../node_modules/core-js/internals/object-get-own-property-symbols.js","../node_modules/core-js/internals/own-keys.js","../node_modules/core-js/internals/copy-constructor-properties.js","../node_modules/core-js/internals/is-forced.js","../node_modules/core-js/internals/export.js","../node_modules/core-js/internals/array-method-is-strict.js","../node_modules/core-js/internals/array-method-uses-to-length.js","../node_modules/core-js/modules/es.array.index-of.js","../node_modules/core-js/internals/is-array.js","../node_modules/core-js/internals/engine-v8-version.js","../node_modules/core-js/internals/create-property.js","../node_modules/core-js/internals/native-symbol.js","../node_modules/core-js/internals/use-symbol-as-uid.js","../node_modules/core-js/internals/well-known-symbol.js","../node_modules/core-js/internals/engine-user-agent.js","../node_modules/core-js/internals/array-method-has-species-support.js","../node_modules/core-js/modules/es.array.slice.js","../node_modules/core-js/internals/to-object.js","../node_modules/core-js/internals/array-species-create.js","../node_modules/core-js/modules/es.array.splice.js","../node_modules/core-js/internals/to-string-tag-support.js","../node_modules/core-js/internals/classof.js","../node_modules/core-js/internals/object-to-string.js","../node_modules/core-js/modules/es.object.to-string.js","../node_modules/core-js/internals/regexp-flags.js","../node_modules/core-js/modules/es.regexp.to-string.js","../node_modules/core-js/modules/es.array.join.js","../node_modules/core-js/internals/a-function.js","../node_modules/core-js/internals/array-reduce.js","../node_modules/core-js/modules/es.array.reduce.js","../node_modules/core-js/internals/object-keys.js","../node_modules/core-js/internals/regexp-sticky-helpers.js","../node_modules/core-js/modules/es.object.keys.js","../node_modules/core-js/internals/regexp-exec.js","../node_modules/core-js/modules/es.regexp.exec.js","../node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","../node_modules/core-js/internals/string-multibyte.js","../node_modules/core-js/internals/advance-string-index.js","../node_modules/core-js/internals/regexp-exec-abstract.js","../node_modules/core-js/modules/es.string.replace.js","../node_modules/core-js/internals/is-regexp.js","../node_modules/core-js/internals/species-constructor.js","../node_modules/core-js/modules/es.string.split.js","../src/overlay-view-safe.ts","../src/cluster-icon.ts","../src/cluster.ts","../src/markerclusterer.ts"],"sourcesContent":["var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line no-undef\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func\n Function('return this')();\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var fails = require('../internals/fails');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !fails(function () {\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","'use strict';\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.github.io/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n if (!isObject(input)) return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return nativeGetOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\nvar nativeDefineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return nativeDefineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n try {\n createNonEnumerableProperty(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n store.inspectSource = function (it) {\n return functionToString.call(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP) {\n var store = new WeakMap();\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","var global = require('../internals/global');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.6.5',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","module.exports = {};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key);\n enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n","var global = require('../internals/global');\n\nmodule.exports = global;\n","var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.github.io/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.github.io/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertynames\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","exports.f = Object.getOwnPropertySymbols;\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","var has = require('../internals/has');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n","var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\n\nvar defineProperty = Object.defineProperty;\nvar cache = {};\n\nvar thrower = function (it) { throw it; };\n\nmodule.exports = function (METHOD_NAME, options) {\n if (has(cache, METHOD_NAME)) return cache[METHOD_NAME];\n if (!options) options = {};\n var method = [][METHOD_NAME];\n var ACCESSORS = has(options, 'ACCESSORS') ? options.ACCESSORS : false;\n var argument0 = has(options, 0) ? options[0] : thrower;\n var argument1 = has(options, 1) ? options[1] : undefined;\n\n return cache[METHOD_NAME] = !!method && !fails(function () {\n if (ACCESSORS && !DESCRIPTORS) return true;\n var O = { length: -1 };\n\n if (ACCESSORS) defineProperty(O, 1, { enumerable: true, get: thrower });\n else O[1] = 1;\n\n method.call(O, argument0, argument1);\n });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $indexOf = require('../internals/array-includes').indexOf;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar nativeIndexOf = [].indexOf;\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('indexOf');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });\n\n// `Array.prototype.indexOf` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD || !USES_TO_LENGTH }, {\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? nativeIndexOf.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.github.io/ecma262/#sec-isarray\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\n};\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n version = match[0] + match[1];\n} else if (userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = match[1];\n }\n}\n\nmodule.exports = version && +version;\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPrimitive(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n // Chrome 38 Symbol has incorrect toString conversion\n // eslint-disable-next-line no-undef\n return !String(Symbol());\n});\n","var NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n // eslint-disable-next-line no-undef\n && !Symbol.sham\n // eslint-disable-next-line no-undef\n && typeof Symbol.iterator == 'symbol';\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar has = require('../internals/has');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!has(WellKnownSymbolsStore, name)) {\n if (NATIVE_SYMBOL && has(Symbol, name)) WellKnownSymbolsStore[name] = Symbol[name];\n else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('slice', { ACCESSORS: true, 0: 0, 1: 2 });\n\nvar SPECIES = wellKnownSymbol('species');\nvar nativeSlice = [].slice;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === Array || Constructor === undefined) {\n return nativeSlice.call(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.github.io/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.github.io/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toObject = require('../internals/to-object');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('splice', { ACCESSORS: true, 0: 0, 1: 2 });\n\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n splice: function splice(start, deleteCount /* , ...items */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart);\n }\n if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n }\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from = actualStart + k;\n if (from in O) createProperty(A, k, O[from]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from = k + actualDeleteCount;\n to = k + insertCount;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n O.length = len - actualDeleteCount + insertCount;\n return A;\n }\n});\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar redefine = require('../internals/redefine');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","'use strict';\nvar redefine = require('../internals/redefine');\nvar anObject = require('../internals/an-object');\nvar fails = require('../internals/fails');\nvar flags = require('../internals/regexp-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n redefine(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var p = String(R.source);\n var rf = R.flags;\n var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);\n return '/' + p + '/' + f;\n }, { unsafe: true });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeJoin = [].join;\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar STRICT_METHOD = arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, {\n join: function join(separator) {\n return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);\n }\n});\n","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","var aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = toLength(O.length);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar STRICT_METHOD = arrayMethodIsStrict('reduce');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('reduce', { 1: 0 });\n\n// `Array.prototype.reduce` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH }, {\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\n\nvar fails = require('./fails');\n\n// babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError,\n// so we use an intermediate function.\nfunction RE(s, f) {\n return RegExp(s, f);\n}\n\nexports.UNSUPPORTED_Y = fails(function () {\n // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\n var re = RE('a', 'y');\n re.lastIndex = 2;\n return re.exec('abcd') != null;\n});\n\nexports.BROKEN_CARET = fails(function () {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n var re = RE('^r', 'gy');\n re.lastIndex = 2;\n return re.exec('str') != null;\n});\n","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n","'use strict';\nvar regexpFlags = require('./regexp-flags');\nvar stickyHelpers = require('./regexp-sticky-helpers');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = regexpFlags.call(re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = flags.replace('y', '');\n if (flags.indexOf('g') === -1) {\n flags += 'g';\n }\n\n strCopy = String(str).slice(re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\\n')) {\n source = '(?: ' + source + ')';\n strCopy = ' ' + strCopy;\n charsAdded++;\n }\n // ^(? + rx + ) is needed, in combination with some str slicing, to\n // simulate the 'y' flag.\n reCopy = new RegExp('^(?:' + source + ')', flags);\n }\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = nativeExec.call(sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = match.input.slice(charsAdded);\n match[0] = match[0].slice(charsAdded);\n match.index = re.lastIndex;\n re.lastIndex += match[0].length;\n } else re.lastIndex = 0;\n } else if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar redefine = require('../internals/redefine');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar regexpExec = require('../internals/regexp-exec');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$') !== '7';\n});\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n return 'a'.replace(/./, '$0') === '$0';\n})();\n\nvar REPLACE = wellKnownSymbol('replace');\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n if (/./[REPLACE]) {\n return /./[REPLACE]('a', '$0') === '';\n }\n return false;\n})();\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nmodule.exports = function (KEY, length, exec, sham) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {};\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () { execCalled = true; return null; };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !(\n REPLACE_SUPPORTS_NAMED_GROUPS &&\n REPLACE_KEEPS_$0 &&\n !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n )) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }, {\n REPLACE_KEEPS_$0: REPLACE_KEEPS_$0,\n REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n });\n var stringMethod = methods[0];\n var regexMethod = methods[1];\n\n redefine(String.prototype, KEY, stringMethod);\n redefine(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return regexMethod.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return regexMethod.call(string, this); }\n );\n }\n\n if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true);\n};\n","var toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = String(requireObjectCoercible($this));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n","var classof = require('./classof-raw');\nvar regexpExec = require('./regexp-exec');\n\n// `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n\n if (classof(R) !== 'RegExp') {\n throw TypeError('RegExp#exec called on incompatible receiver');\n }\n\n return regexpExec.call(R, S);\n};\n\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) {\n var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE;\n var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0;\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n return [\n // `String.prototype.replace` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n return replacer !== undefined\n ? replacer.call(searchValue, O, replaceValue)\n : nativeReplace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n if (\n (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) ||\n (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1)\n ) {\n var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n if (res.done) return res.value;\n }\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n results.push(result);\n if (!global) break;\n\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n\n // https://tc39.github.io/ecma262/#sec-getsubstitution\n function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return nativeReplace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n }\n});\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.github.io/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","var anObject = require('../internals/an-object');\nvar aFunction = require('../internals/a-function');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.github.io/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\n\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { return !RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = String(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return nativeSplit.call(string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output.length > lim ? output.slice(0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(String(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (regexp, limit) {\n var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (SUPPORTS_Y ? 'y' : 'g');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = SUPPORTS_Y ? q : 0;\n var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n}, !SUPPORTS_Y);\n","/**\n * Copyright 2019 Google LLC. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface OverlayViewSafe extends google.maps.OverlayView {}\n\n/**\n * Extends an object's prototype by another's.\n *\n * @param type1 The Type to be extended.\n * @param type2 The Type to extend with.\n * @ignore\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction extend(type1: any, type2: any): void {\n // eslint-disable-next-line prefer-const\n for (let property in type2.prototype) {\n type1.prototype[property] = type2.prototype[property];\n }\n}\n\n/**\n * @ignore\n */\nexport class OverlayViewSafe {\n constructor() {\n // MarkerClusterer implements google.maps.OverlayView interface. We use the\n // extend function to extend MarkerClusterer with google.maps.OverlayView\n // because it might not always be available when the code is defined so we\n // look for it at the last possible moment. If it doesn't exist now then\n // there is no point going ahead :)\n extend(OverlayViewSafe, google.maps.OverlayView);\n }\n}\n","/**\n * Copyright 2019 Google LLC. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * This class represents the object for values in the `styles` array passed\n * to the {@link MarkerClusterer} constructor. The element in this array that is used to\n * style the cluster icon is determined by calling the `calculator` function.\n */\nimport { Cluster } from \"./cluster\";\nimport { OverlayViewSafe } from \"./overlay-view-safe\";\n\n/**\n *\n * @hidden\n */\nfunction toCssText(styles: { [key: string]: string }): string {\n return Object.keys(styles)\n .reduce((acc, key) => {\n if (styles[key]) {\n acc.push(key + \":\" + styles[key]);\n }\n return acc;\n }, [])\n .join(\";\");\n}\n\n/**\n *\n * @hidden\n */\nfunction coercePixels(pixels: number): string {\n return pixels ? pixels + \"px\" : undefined;\n}\n\nexport interface ClusterIconStyle {\n /** The URL of the cluster icon image file. If not set, img element will not be created */\n url?: string;\n /** The name of the CSS class defining styles for the cluster markers. */\n className?: string;\n /** Height The display height (in pixels) of the cluster icon. Required. */\n height: number;\n /** Width The display width (in pixels) of the cluster icon. Required. */\n width: number;\n /**\n * The position (in pixels) from the center of the cluster icon to\n * where the text label is to be centered and drawn. The format is `[yoffset, xoffset]`\n * where `yoffset` increases as you go down from center and `xoffset`\n * increases to the right of center. The default is `[0, 0]`.\n */\n anchorText?: [number, number];\n /**\n * The anchor position (in pixels) of the cluster icon. This is the\n * spot on the cluster icon that is to be aligned with the cluster position. The format is\n * `[yoffset, xoffset]` where `yoffset` increases as you go down and\n * `xoffset` increases to the right of the top-left corner of the icon. The default\n * anchor position is the center of the cluster icon.\n */\n anchorIcon?: [number, number];\n /**\n * The color of the label text shown on the cluster icon.\n * @default `\"black\"`\n */\n textColor?: string;\n /** The size (in pixels) of the label text shown on the cluster icon.\n * @default `11`\n */\n textSize?: number;\n\n /** The line height (in pixels) of the label text shown on the cluster icon.\n * @default the same as cluster icon height\n */\n textLineHeight?: number;\n /**\n * The value of the CSS `text-decoration`\n * property for the label text shown on the cluster icon.\n *\n * @default `\"none\"`\n */\n textDecoration?: string;\n /**\n * The value of the CSS `font-weight`\n * property for the label text shown on the cluster icon.\n *\n * @default `\"bold\"`\n */\n fontWeight?: string;\n /**\n * The value of the CSS `font-style`\n * property for the label text shown on the cluster icon.\n *\n * @default `\"normal\"`\n */\n fontStyle?: string;\n /**\n * The value of the CSS `font-family`\n * property for the label text shown on the cluster icon.\n * @default `\"Arial,sans-serif\"`\n */\n fontFamily?: string;\n /**\n * The position of the cluster icon image\n * within the image defined by `url`. The format is `\"xpos ypos\"`\n * (the same format as for the CSS `background-position` property). You must set\n * this property appropriately when the image defined by `url` represents a sprite\n * containing multiple images. Note that the position must be specified in px units.\n *\n * @default `\"0 0\"`\n */\n backgroundPosition?: string;\n}\n\n/**\n * @description This is an object containing general information about a cluster icon. This is\n * the object that a `calculator` function returns.\n */\nexport interface ClusterIconInfo {\n /**\n * The text of the label to be shown on the cluster icon.\n */\n text: string;\n /**\n * The index plus 1 of the element in the `styles`\n */\n index: number;\n /**\n * The tooltip to display when the mouse moves over the cluster icon.\n * If this value is `undefined` or `\"\"`, `title` is set to the\n * value of the `title` property passed to the MarkerClusterer.\n */\n title: string;\n}\n\n/**\n * A cluster icon.\n */\nexport class ClusterIcon extends OverlayViewSafe {\n private className_: string;\n private center_: google.maps.LatLng = null;\n private div_: HTMLDivElement = null;\n private sums_: ClusterIconInfo = null;\n private visible_ = false;\n\n private style: ClusterIconStyle = null;\n\n private anchorText_: [number, number];\n private anchorIcon_: [number, number];\n\n private boundsChangedListener_: google.maps.MapsEventListener;\n\n /**\n * @param cluster_ The cluster with which the icon is to be associated.\n * @param styles_ An array of {@link ClusterIconStyle} defining the cluster icons\n * to use for various cluster sizes.\n */\n constructor(private cluster_: Cluster, private styles_: ClusterIconStyle[]) {\n super();\n\n this.setMap(cluster_.getMap()); // Note: this causes onAdd to be called\n }\n\n /**\n * Adds the icon to the DOM.\n */\n onAdd(): void {\n let cMouseDownInCluster: boolean;\n let cDraggingMapByCluster: boolean;\n\n const mc = this.cluster_.getMarkerClusterer();\n\n const [major, minor] = google.maps.version.split(\".\");\n\n const gmVersion = parseInt(major, 10) * 100 + parseInt(minor, 10);\n\n this.div_ = document.createElement(\"div\");\n if (this.visible_) {\n this.show();\n }\n\n this.getPanes().overlayMouseTarget.appendChild(this.div_);\n\n // Fix for Issue 157\n this.boundsChangedListener_ = google.maps.event.addListener(\n this.getMap(),\n \"bounds_changed\",\n () => {\n cDraggingMapByCluster = cMouseDownInCluster;\n }\n );\n\n google.maps.event.addDomListener(this.div_, \"mousedown\", () => {\n cMouseDownInCluster = true;\n cDraggingMapByCluster = false;\n });\n\n // March 1, 2018: Fix for this 3.32 exp bug, https://issuetracker.google.com/issues/73571522\n // But it doesn't work with earlier releases so do a version check.\n if (gmVersion >= 332) {\n // Ugly version-dependent code\n google.maps.event.addDomListener(this.div_, \"touchstart\", (e) => {\n e.stopPropagation();\n });\n }\n\n google.maps.event.addDomListener(this.div_, \"click\", (e) => {\n cMouseDownInCluster = false;\n if (!cDraggingMapByCluster) {\n /**\n * This event is fired when a cluster marker is clicked.\n * @name MarkerClusterer#click\n * @param {Cluster} c The cluster that was clicked.\n * @event\n */\n google.maps.event.trigger(mc, \"click\", this.cluster_);\n google.maps.event.trigger(mc, \"clusterclick\", this.cluster_); // deprecated name\n\n // The default click handler follows. Disable it by setting\n // the zoomOnClick property to false.\n if (mc.getZoomOnClick()) {\n // Zoom into the cluster.\n const mz = mc.getMaxZoom();\n const theBounds = this.cluster_.getBounds();\n (mc.getMap() as google.maps.Map).fitBounds(theBounds);\n // There is a fix for Issue 170 here:\n setTimeout(() => {\n (mc.getMap() as google.maps.Map).fitBounds(theBounds);\n // Don't zoom beyond the max zoom level\n if (mz !== null && mc.getMap().getZoom() > mz) {\n mc.getMap().setZoom(mz + 1);\n }\n }, 100);\n }\n\n // Prevent event propagation to the map:\n e.cancelBubble = true;\n if (e.stopPropagation) {\n e.stopPropagation();\n }\n }\n });\n\n google.maps.event.addDomListener(this.div_, \"mouseover\", () => {\n /**\n * This event is fired when the mouse moves over a cluster marker.\n * @name MarkerClusterer#mouseover\n * @param {Cluster} c The cluster that the mouse moved over.\n * @event\n */\n google.maps.event.trigger(mc, \"mouseover\", this.cluster_);\n });\n\n google.maps.event.addDomListener(this.div_, \"mouseout\", () => {\n /**\n * This event is fired when the mouse moves out of a cluster marker.\n * @name MarkerClusterer#mouseout\n * @param {Cluster} c The cluster that the mouse moved out of.\n * @event\n */\n google.maps.event.trigger(mc, \"mouseout\", this.cluster_);\n });\n }\n\n /**\n * Removes the icon from the DOM.\n */\n onRemove(): void {\n if (this.div_ && this.div_.parentNode) {\n this.hide();\n google.maps.event.removeListener(this.boundsChangedListener_);\n google.maps.event.clearInstanceListeners(this.div_);\n this.div_.parentNode.removeChild(this.div_);\n this.div_ = null;\n }\n }\n\n /**\n * Draws the icon.\n */\n draw(): void {\n if (this.visible_) {\n const pos = this.getPosFromLatLng_(this.center_);\n this.div_.style.top = pos.y + \"px\";\n this.div_.style.left = pos.x + \"px\";\n }\n }\n\n /**\n * Hides the icon.\n */\n hide(): void {\n if (this.div_) {\n this.div_.style.display = \"none\";\n }\n this.visible_ = false;\n }\n\n /**\n * Positions and shows the icon.\n */\n show(): void {\n if (this.div_) {\n this.div_.className = this.className_;\n this.div_.style.cssText = this.createCss_(\n this.getPosFromLatLng_(this.center_)\n );\n\n this.div_.innerHTML =\n (this.style.url ? this.getImageElementHtml() : \"\") +\n this.getLabelDivHtml();\n\n if (typeof this.sums_.title === \"undefined\" || this.sums_.title === \"\") {\n this.div_.title = this.cluster_.getMarkerClusterer().getTitle();\n } else {\n this.div_.title = this.sums_.title;\n }\n this.div_.style.display = \"\";\n }\n this.visible_ = true;\n }\n\n private getLabelDivHtml(): string {\n const mc = this.cluster_.getMarkerClusterer();\n const ariaLabel = mc.ariaLabelFn(this.sums_.text);\n\n const divStyle: { [key: string]: string } = {\n position: \"absolute\",\n top: coercePixels(this.anchorText_[0]),\n left: coercePixels(this.anchorText_[1]),\n color: this.style.textColor,\n \"font-size\": coercePixels(this.style.textSize),\n \"font-family\": this.style.fontFamily,\n \"font-weight\": this.style.fontWeight,\n \"font-style\": this.style.fontStyle,\n \"text-decoration\": this.style.textDecoration,\n \"text-align\": \"center\",\n width: coercePixels(this.style.width),\n \"line-height\": coercePixels(this.style.textLineHeight),\n };\n\n return `\n
\n ${this.sums_.text}\n
\n`;\n }\n\n private getImageElementHtml(): string {\n // NOTE: values must be specified in px units\n const bp = (this.style.backgroundPosition || \"0 0\").split(\" \");\n const spriteH = parseInt(bp[0].replace(/^\\s+|\\s+$/g, \"\"), 10);\n const spriteV = parseInt(bp[1].replace(/^\\s+|\\s+$/g, \"\"), 10);\n\n let dimensions: { [key: string]: string } = {};\n\n if (this.cluster_.getMarkerClusterer().getEnableRetinaIcons()) {\n dimensions = {\n width: coercePixels(this.style.width),\n height: coercePixels(this.style.height),\n };\n } else {\n const [Y1, X1, Y2, X2] = [\n -1 * spriteV,\n -1 * spriteH + this.style.width,\n -1 * spriteV + this.style.height,\n -1 * spriteH,\n ];\n dimensions = {\n clip: `rect(${Y1}px, ${X1}px, ${Y2}px, ${X2}px)`,\n };\n }\n\n const cssText = toCssText({\n position: \"absolute\",\n top: coercePixels(spriteV),\n left: coercePixels(spriteH),\n ...dimensions,\n });\n\n return `\"${this.sums_.text}\"`;\n }\n\n /**\n * Sets the icon styles to the appropriate element in the styles array.\n *\n * @ignore\n * @param sums The icon label text and styles index.\n */\n useStyle(sums: ClusterIconInfo): void {\n this.sums_ = sums;\n let index = Math.max(0, sums.index - 1);\n index = Math.min(this.styles_.length - 1, index);\n this.style = this.styles_[index];\n\n this.anchorText_ = this.style.anchorText || [0, 0];\n this.anchorIcon_ = this.style.anchorIcon || [\n Math.floor(this.style.height / 2),\n Math.floor(this.style.width / 2),\n ];\n\n this.className_ =\n this.cluster_.getMarkerClusterer().getClusterClass() +\n \" \" +\n (this.style.className || \"cluster-\" + index);\n }\n\n /**\n * Sets the position at which to center the icon.\n *\n * @param center The latlng to set as the center.\n */\n setCenter(center: google.maps.LatLng): void {\n this.center_ = center;\n }\n\n /**\n * Creates the `cssText` style parameter based on the position of the icon.\n *\n * @param pos The position of the icon.\n * @return The CSS style text.\n */\n private createCss_(pos: google.maps.Point): string {\n return toCssText({\n \"z-index\": `${this.cluster_.getMarkerClusterer().getZIndex()}`,\n top: coercePixels(pos.y),\n left: coercePixels(pos.x),\n width: coercePixels(this.style.width),\n height: coercePixels(this.style.height),\n cursor: \"pointer\",\n position: \"absolute\",\n \"-webkit-user-select\": \"none\",\n \"-khtml-user-select\": \"none\",\n \"-moz-user-select\": \"none\",\n \"-o-user-select\": \"none\",\n \"user-select\": \"none\",\n });\n }\n\n /**\n * Returns the position at which to place the DIV depending on the latlng.\n *\n * @param latlng The position in latlng.\n * @return The position in pixels.\n */\n private getPosFromLatLng_(latlng: google.maps.LatLng): google.maps.Point {\n const pos = this.getProjection().fromLatLngToDivPixel(latlng);\n pos.x = Math.floor(pos.x - this.anchorIcon_[1]);\n pos.y = Math.floor(pos.y - this.anchorIcon_[0]);\n return pos;\n }\n}\n","/**\n * Copyright 2019 Google LLC. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { MarkerClusterer, ClusterAugmentedMarker } from \"./markerclusterer\";\nimport { ClusterIcon } from \"./cluster-icon\";\n\n/**\n * Creates a single cluster that manages a group of proximate markers.\n * Used internally, do not call this constructor directly.\n */\nexport class Cluster {\n private map_ = this.markerClusterer_.getMap() as google.maps.Map;\n private minClusterSize_: number = this.markerClusterer_.getMinimumClusterSize();\n private averageCenter_: boolean = this.markerClusterer_.getAverageCenter();\n private markers_: ClusterAugmentedMarker[] = []; // TODO: type;\n private center_: google.maps.LatLng = null;\n private bounds_: google.maps.LatLngBounds = null;\n private clusterIcon_ = new ClusterIcon(\n this,\n this.markerClusterer_.getStyles()\n );\n\n /**\n *\n * @param markerClusterer_ The `MarkerClusterer` object with which this\n * cluster is associated.\n */\n constructor(private markerClusterer_: MarkerClusterer) {}\n\n /**\n * Returns the number of markers managed by the cluster. You can call this from\n * a `click`, `mouseover`, or `mouseout` event handler for the `MarkerClusterer` object.\n *\n * @return The number of markers in the cluster.\n */\n public getSize(): number {\n return this.markers_.length;\n }\n\n /**\n * Returns the array of markers managed by the cluster. You can call this from\n * a `click`, `mouseover`, or `mouseout` event handler for the `MarkerClusterer` object.\n *\n * @return The array of markers in the cluster.\n */\n public getMarkers(): google.maps.Marker[] {\n return this.markers_;\n }\n\n /**\n * Returns the center of the cluster. You can call this from\n * a `click`, `mouseover`, or `mouseout` event handler\n * for the `MarkerClusterer` object.\n *\n * @return The center of the cluster.\n */\n public getCenter(): google.maps.LatLng {\n return this.center_;\n }\n\n /**\n * Returns the map with which the cluster is associated.\n *\n * @return The map.\n * @ignore\n */\n public getMap(): google.maps.Map {\n return this.map_;\n }\n\n /**\n * Returns the `MarkerClusterer` object with which the cluster is associated.\n *\n * @return The associated marker clusterer.\n * @ignore\n */\n public getMarkerClusterer(): MarkerClusterer {\n return this.markerClusterer_;\n }\n\n /**\n * Returns the bounds of the cluster.\n *\n * @return the cluster bounds.\n * @ignore\n */\n public getBounds(): google.maps.LatLngBounds {\n const bounds = new google.maps.LatLngBounds(this.center_, this.center_);\n const markers = this.getMarkers();\n for (let i = 0; i < markers.length; i++) {\n bounds.extend(markers[i].getPosition());\n }\n return bounds;\n }\n\n /**\n * Removes the cluster from the map.\n *\n * @ignore\n */\n public remove(): void {\n this.clusterIcon_.setMap(null);\n this.markers_ = [];\n delete this.markers_;\n }\n\n /**\n * Adds a marker to the cluster.\n *\n * @param marker The marker to be added.\n * @return True if the marker was added.\n * @ignore\n */\n public addMarker(\n marker: google.maps.Marker & { isAdded?: boolean }\n ): boolean {\n if (this.isMarkerAlreadyAdded_(marker)) {\n return false;\n }\n\n if (!this.center_) {\n this.center_ = marker.getPosition();\n this.calculateBounds_();\n } else {\n if (this.averageCenter_) {\n const l = this.markers_.length + 1;\n const lat =\n (this.center_.lat() * (l - 1) + marker.getPosition().lat()) / l;\n const lng =\n (this.center_.lng() * (l - 1) + marker.getPosition().lng()) / l;\n this.center_ = new google.maps.LatLng(lat, lng);\n this.calculateBounds_();\n }\n }\n\n marker.isAdded = true;\n this.markers_.push(marker);\n\n const mCount = this.markers_.length;\n const mz = this.markerClusterer_.getMaxZoom();\n if (mz !== null && this.map_.getZoom() > mz) {\n // Zoomed in past max zoom, so show the marker.\n if (marker.getMap() !== this.map_) {\n marker.setMap(this.map_);\n }\n } else if (mCount < this.minClusterSize_) {\n // Min cluster size not reached so show the marker.\n if (marker.getMap() !== this.map_) {\n marker.setMap(this.map_);\n }\n } else if (mCount === this.minClusterSize_) {\n // Hide the markers that were showing.\n for (let i = 0; i < mCount; i++) {\n this.markers_[i].setMap(null);\n }\n } else {\n marker.setMap(null);\n }\n\n return true;\n }\n\n /**\n * Determines if a marker lies within the cluster's bounds.\n *\n * @param marker The marker to check.\n * @return True if the marker lies in the bounds.\n * @ignore\n */\n public isMarkerInClusterBounds(marker: google.maps.Marker): boolean {\n return this.bounds_.contains(marker.getPosition());\n }\n\n /**\n * Calculates the extended bounds of the cluster with the grid.\n */\n private calculateBounds_(): void {\n const bounds = new google.maps.LatLngBounds(this.center_, this.center_);\n this.bounds_ = this.markerClusterer_.getExtendedBounds(bounds);\n }\n\n /**\n * Updates the cluster icon.\n */\n public updateIcon(): void {\n const mCount = this.markers_.length;\n const mz = this.markerClusterer_.getMaxZoom();\n\n if (mz !== null && this.map_.getZoom() > mz) {\n this.clusterIcon_.hide();\n return;\n }\n\n if (mCount < this.minClusterSize_) {\n // Min cluster size not yet reached.\n this.clusterIcon_.hide();\n return;\n }\n\n const numStyles = this.markerClusterer_.getStyles().length;\n const sums = this.markerClusterer_.getCalculator()(\n this.markers_,\n numStyles\n );\n this.clusterIcon_.setCenter(this.center_);\n this.clusterIcon_.useStyle(sums);\n this.clusterIcon_.show();\n }\n\n /**\n * Determines if a marker has already been added to the cluster.\n *\n * @param marker The marker to check.\n * @return True if the marker has already been added.\n */\n private isMarkerAlreadyAdded_(marker: google.maps.Marker): boolean {\n if (this.markers_.indexOf) {\n return this.markers_.indexOf(marker) !== -1;\n } else {\n for (let i = 0; i < this.markers_.length; i++) {\n if (marker === this.markers_[i]) {\n return true;\n }\n }\n }\n return false;\n }\n}\n","/**\n * Copyright 2019 Google LLC. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @name MarkerClustererPlus for Google Maps V3\n * @author Gary Little\n * @fileoverview\n * The library creates and manages per-zoom-level clusters for large amounts of markers.\n *

\n * This is an enhanced V3 implementation of the V2 MarkerClusterer by Xiaoxi Wu. It is\n * based on the V3 MarkerClusterer port by Luke Mahe. MarkerClustererPlus was created\n * by Gary Little.\n *

\n * v2.0 release: MarkerClustererPlus v2.0 is backward compatible with MarkerClusterer v1.0. It\n * adds support for the `ignoreHidden`, `title`, `batchSizeIE`,\n * and `calculator` properties as well as support for four more events. It also allows\n * greater control over the styling of the text that appears on the cluster marker. The\n * documentation has been significantly improved and the overall code has been simplified and\n * polished. Very large numbers of markers can now be managed without causing Javascript timeout\n * errors on Internet Explorer. Note that the name of the `clusterclick` event has been\n * deprecated. The new name is `click`, so please change your application code now.\n */\n\nimport { ClusterIconInfo, ClusterIconStyle } from \"./cluster-icon\";\n\nimport { Cluster } from \"./cluster\";\nimport { OverlayViewSafe } from \"./overlay-view-safe\";\n\n/**\n * @param text The text attribute of the cluster\n */\ntype AriaLabelFn = (text: string) => string;\n\nexport type Calculator = (\n markers: google.maps.Marker[],\n clusterIconStylesCount: number\n) => ClusterIconInfo;\n\nexport interface ClusterAugmentedMarker extends google.maps.Marker {\n isAdded?: boolean;\n}\n\n/**\n * This event is fired on the {@link MarkerClusterer} instance when the `MarkerClusterer` stops clustering markers.\n *\n * Example:\n * ```typescript\n * mc.addListener('clusteringend', (mc: MarkerClusterer) => {})\n * ```\n *\n * @param mc The MarkerClusterer whose markers are being clustered.\n * @event clusteringend\n */\nexport declare function clusteringend(mc: MarkerClusterer): void;\n\n/**\n * This event is fired on the {@link MarkerClusterer} instance when the `MarkerClusterer` begins clustering markers.\n *\n * Example:\n * ```typescript\n * mc.addListener('clusteringbegin', (mc: MarkerClusterer) => {})\n * ```\n *\n * @param mc The MarkerClusterer whose markers are being clustered.\n * @event clusteringbegin\n */\nexport declare function clusteringbegin(mc: MarkerClusterer): void;\n\n/**\n * Optional parameter passed to the {@link MarkerClusterer} constructor.\n */\nexport interface MarkerClustererOptions {\n /**\n * The grid size of a cluster in pixels. The grid is a square.\n *\n * @default `60`\n */\n gridSize?: number;\n /**\n * The maximum zoom level at which clustering is enabled or\n * `null` if clustering is to be enabled at all zoom levels.\n *\n * @default `null`\n */\n maxZoom?: number;\n\n /**\n * Whether to zoom the map when a cluster marker is\n * clicked. You may want to set this to `false` if you have installed a handler\n * for the `click` event and it deals with zooming on its own.\n *\n * @default `true`\n */\n zoomOnClick?: boolean;\n /***\n * Whether the position of a cluster marker should be\n * the average position of all markers in the cluster. If set to `false`, the\n * cluster marker is positioned at the location of the first marker added to the cluster.\n *\n * @default `false`\n */\n averageCenter?: boolean;\n /**\n * The minimum number of markers needed in a cluster\n * before the markers are hidden and a cluster marker appears.\n *\n * @default `2`\n */\n minimumClusterSize?: number;\n\n /**\n * the z-index of a cluster.\n *\n * @default `google.maps.Marker.MAX_ZINDEX + 1`\n */\n zIndex?: number;\n\n /**\n * Whether to ignore hidden markers in clusters. You\n * may want to set this to `true` to ensure that hidden markers are not included\n * in the marker count that appears on a cluster marker (this count is the value of the\n * `text` property of the result returned by the default {@link calculator}).\n * If set to `true` and you change the visibility of a marker being clustered, be\n * sure to also call {@link MarkerClusterer#repaint()}.\n *\n * @default `false`\n */\n ignoreHidden?: boolean;\n /**\n * The tooltip to display when the mouse moves over a cluster\n * marker. (Alternatively, you can use a custom `calculator` function to specify a\n * different tooltip for each cluster marker.)\n *\n * @default `\"\"`\n */\n title?: string;\n /**\n * The function used to determine\n * the text to be displayed on a cluster marker and the index indicating which style to use\n * for the cluster marker. The input parameters for the function are (1) the array of markers\n * represented by a cluster marker and (2) the number of cluster icon styles. It returns a\n * {@link ClusterIconInfo} object. The default `calculator` returns a\n * `text` property which is the number of markers in the cluster and an\n * `index` property which is one higher than the lowest integer such that\n * `10^i` exceeds the number of markers in the cluster, or the size of the styles\n * array, whichever is less. The `styles` array element used has an index of\n * `index` minus 1. For example, the default `calculator` returns a\n * `text` value of `\"125\"` and an `index` of `3`\n * for a cluster icon representing 125 markers so the element used in the `styles`\n * array is `2`. A `calculator` may also return a `title`\n * property that contains the text of the tooltip to be used for the cluster marker. If\n * `title` is not defined, the tooltip is set to the value of the `title`\n * property for the MarkerClusterer.\n *\n * @default {@link MarkerClusterer.CALCULATOR}\n */\n calculator?: Calculator;\n /**\n * The name of the CSS class defining general styles\n * for the cluster markers. Use this class to define CSS styles that are not set up by the code\n * that processes the `styles` array.\n *\n * @default `\"cluster\"`\n */\n clusterClass?: string;\n /**\n * An array of {@link ClusterIconStyle} elements defining the styles\n * of the cluster markers to be used. The element to be used to style a given cluster marker\n * is determined by the function defined by the `calculator` property.\n * The default is an array of {@link ClusterIconStyle} elements whose properties are derived\n * from the values for `imagePath`, `imageExtension`, and `imageSizes`.\n *\n * @default `styles`\n */\n styles?: ClusterIconStyle[];\n /**\n * Whether to allow the use of cluster icons that\n * have sizes that are some multiple (typically double) of their actual display size. Icons such\n * as these look better when viewed on high-resolution monitors such as Apple's Retina displays.\n * Note: if this property is `true`, sprites cannot be used as cluster icons.\n *\n * @default `false`\n */\n enableRetinaIcons?: boolean;\n /**\n * Set this property to the number of markers to be processed in a single batch when using\n * a browser other than Internet Explorer (for Internet Explorer, use the batchSizeIE property instead).\n *\n * @default `MarkerClusterer.BATCH_SIZE`\n */\n batchSize?: number;\n /**\n * When Internet Explorer is\n * being used, markers are processed in several batches with a small delay inserted between\n * each batch in an attempt to avoid Javascript timeout errors. Set this property to the\n * number of markers to be processed in a single batch; select as high a number as you can\n * without causing a timeout error in the browser. This number might need to be as low as 100\n * if 15,000 markers are being managed, for example.\n *\n * @default `MarkerClusterer.BATCH_SIZE_IE`\n */\n batchSizeIE?: number;\n /**\n * The full URL of the root name of the group of image files to use for cluster icons.\n * The complete file name is of the form `imagePath`n.`imageExtension`\n * where n is the image file number (1, 2, etc.).\n *\n * @default `MarkerClusterer.IMAGE_PATH`\n */\n imagePath?: string;\n /**\n * The extension name for the cluster icon image files (e.g., `\"png\"` or\n * `\"jpg\"`).\n *\n * @default `MarkerClusterer.IMAGE_EXTENSION`\n */\n imageExtension?: string;\n /**\n * An array of numbers containing the widths of the group of\n * `imagePath`n.`imageExtension` image files.\n * (The images are assumed to be square.)\n *\n * @default `MarkerClusterer.IMAGE_SIZES`\n */\n imageSizes?: number[];\n /**\n * A function to take the text attribute associated with the cluster and output a string to attach an\n * ariaLabel to the cluster\n */\n ariaLabelFn?: AriaLabelFn;\n}\n\n/**\n * @ignore\n */\nconst getOption = (\n options: T,\n prop: K,\n def: T[K]\n): T[K] => {\n if (options[prop] !== undefined) {\n return options[prop];\n } else {\n return def;\n }\n};\n\nexport class MarkerClusterer extends OverlayViewSafe {\n /**\n * The number of markers to process in one batch.\n */\n static BATCH_SIZE = 2000;\n\n /**\n * The number of markers to process in one batch (IE only).\n */\n static BATCH_SIZE_IE = 500;\n\n /**\n * The default root name for the marker cluster images.\n */\n static IMAGE_PATH = \"../images/m\";\n\n /**\n * The default extension name for the marker cluster images.\n */\n static IMAGE_EXTENSION = \"png\";\n\n /**\n * The default array of sizes for the marker cluster images.\n */\n static IMAGE_SIZES: number[] = [53, 56, 66, 78, 90];\n\n private markers_: ClusterAugmentedMarker[] = [];\n private clusters_: Cluster[] = [];\n private listeners_: google.maps.MapsEventListener[] = [];\n\n private activeMap_: google.maps.Map = null;\n private ready_ = false;\n\n public ariaLabelFn = this.options.ariaLabelFn || ((): string => \"\");\n\n private zIndex_ = this.options.zIndex || google.maps.Marker.MAX_ZINDEX + 1;\n private gridSize_ = this.options.gridSize || 60;\n private minClusterSize_ = this.options.minimumClusterSize || 2;\n private maxZoom_ = this.options.maxZoom || null;\n private styles_: ClusterIconStyle[] = this.options.styles || [];\n private title_ = this.options.title || \"\";\n\n private zoomOnClick_ = getOption(this.options, \"zoomOnClick\", true);\n private averageCenter_ = getOption(this.options, \"averageCenter\", false);\n\n private ignoreHidden_ = getOption(this.options, \"ignoreHidden\", false);\n private enableRetinaIcons_ = getOption(\n this.options,\n \"enableRetinaIcons\",\n false\n );\n\n private imagePath_ = this.options.imagePath || MarkerClusterer.IMAGE_PATH;\n private imageExtension_ =\n this.options.imageExtension || MarkerClusterer.IMAGE_EXTENSION;\n private imageSizes_ = this.options.imageSizes || MarkerClusterer.IMAGE_SIZES;\n private calculator_ = this.options.calculator || MarkerClusterer.CALCULATOR;\n private batchSize_ = this.options.batchSize || MarkerClusterer.BATCH_SIZE;\n private batchSizeIE_ =\n this.options.batchSizeIE || MarkerClusterer.BATCH_SIZE_IE;\n private clusterClass_ = this.options.clusterClass || \"cluster\";\n\n private prevZoom_: number;\n private timerRefStatic: number;\n\n /**\n * Creates a MarkerClusterer object with the options specified in {@link MarkerClustererOptions}.\n * @param map The Google map to attach to.\n * @param markers The markers to be added to the cluster.\n * @param options The optional parameters.\n */\n constructor(\n map: google.maps.Map,\n markers: google.maps.Marker[] = [],\n private options: MarkerClustererOptions = {}\n ) {\n super();\n\n if (navigator.userAgent.toLowerCase().indexOf(\"msie\") !== -1) {\n // Try to avoid IE timeout when processing a huge number of markers:\n this.batchSize_ = this.batchSizeIE_;\n }\n\n this.setupStyles_();\n\n this.addMarkers(markers, true);\n this.setMap(map); // Note: this causes onAdd to be called\n }\n\n /**\n * Implementation of the onAdd interface method.\n * @ignore\n */\n onAdd(): void {\n this.activeMap_ = this.getMap() as google.maps.Map;\n this.ready_ = true;\n\n this.repaint();\n\n this.prevZoom_ = this.getMap().getZoom();\n\n // Add the map event listeners\n this.listeners_ = [\n google.maps.event.addListener(this.getMap(), \"zoom_changed\", () => {\n const map: google.maps.Map & {\n minZoom: number;\n maxZoom: number;\n mapTypes: { [type: string]: google.maps.MapType };\n } = this.getMap() as any; // eslint-disable-line @typescript-eslint/no-explicit-any\n\n // Fix for bug #407\n // Determines map type and prevents illegal zoom levels\n const minZoom = map.minZoom || 0;\n const maxZoom = Math.min(\n map.maxZoom || 100,\n map.mapTypes[map.getMapTypeId()].maxZoom\n );\n const zoom = Math.min(\n Math.max(this.getMap().getZoom(), minZoom),\n maxZoom\n );\n\n if (this.prevZoom_ != zoom) {\n this.prevZoom_ = zoom;\n this.resetViewport_(false);\n }\n }),\n google.maps.event.addListener(this.getMap(), \"idle\", () => {\n this.redraw_();\n }),\n ];\n }\n\n /**\n * Implementation of the onRemove interface method.\n * Removes map event listeners and all cluster icons from the DOM.\n * All managed markers are also put back on the map.\n * @ignore\n */\n onRemove(): void {\n // Put all the managed markers back on the map:\n for (let i = 0; i < this.markers_.length; i++) {\n if (this.markers_[i].getMap() !== this.activeMap_) {\n this.markers_[i].setMap(this.activeMap_);\n }\n }\n\n // Remove all clusters:\n for (let i = 0; i < this.clusters_.length; i++) {\n this.clusters_[i].remove();\n }\n this.clusters_ = [];\n\n // Remove map event listeners:\n for (let i = 0; i < this.listeners_.length; i++) {\n google.maps.event.removeListener(this.listeners_[i]);\n }\n this.listeners_ = [];\n\n this.activeMap_ = null;\n this.ready_ = false;\n }\n\n /**\n * Implementation of the draw interface method.\n * @ignore\n */\n draw(): void {}\n\n /**\n * Sets up the styles object.\n */\n private setupStyles_(): void {\n if (this.styles_.length > 0) {\n return;\n }\n\n for (let i = 0; i < this.imageSizes_.length; i++) {\n const size = this.imageSizes_[i];\n this.styles_.push(\n MarkerClusterer.withDefaultStyle({\n url: this.imagePath_ + (i + 1) + \".\" + this.imageExtension_,\n height: size,\n width: size,\n })\n );\n }\n }\n\n /**\n * Fits the map to the bounds of the markers managed by the clusterer.\n */\n fitMapToMarkers(padding: number | google.maps.Padding): void {\n const markers = this.getMarkers();\n const bounds = new google.maps.LatLngBounds();\n for (let i = 0; i < markers.length; i++) {\n // March 3, 2018: Bug fix -- honor the ignoreHidden property\n if (markers[i].getVisible() || !this.getIgnoreHidden()) {\n bounds.extend(markers[i].getPosition());\n }\n }\n\n (this.getMap() as google.maps.Map).fitBounds(bounds, padding);\n }\n\n /**\n * Returns the value of the `gridSize` property.\n *\n * @return The grid size.\n */\n getGridSize(): number {\n return this.gridSize_;\n }\n\n /**\n * Sets the value of the `gridSize` property.\n *\n * @param gridSize The grid size.\n */\n setGridSize(gridSize: number): void {\n this.gridSize_ = gridSize;\n }\n\n /**\n * Returns the value of the `minimumClusterSize` property.\n *\n * @return The minimum cluster size.\n */\n getMinimumClusterSize(): number {\n return this.minClusterSize_;\n }\n\n /**\n * Sets the value of the `minimumClusterSize` property.\n *\n * @param minimumClusterSize The minimum cluster size.\n */\n setMinimumClusterSize(minimumClusterSize: number): void {\n this.minClusterSize_ = minimumClusterSize;\n }\n\n /**\n * Returns the value of the `maxZoom` property.\n *\n * @return The maximum zoom level.\n */\n getMaxZoom(): number {\n return this.maxZoom_;\n }\n\n /**\n * Sets the value of the `maxZoom` property.\n *\n * @param maxZoom The maximum zoom level.\n */\n setMaxZoom(maxZoom: number): void {\n this.maxZoom_ = maxZoom;\n }\n\n getZIndex(): number {\n return this.zIndex_;\n }\n\n setZIndex(zIndex: number): void {\n this.zIndex_ = zIndex;\n }\n\n /**\n * Returns the value of the `styles` property.\n *\n * @return The array of styles defining the cluster markers to be used.\n */\n getStyles(): ClusterIconStyle[] {\n return this.styles_;\n }\n\n /**\n * Sets the value of the `styles` property.\n *\n * @param styles The array of styles to use.\n */\n setStyles(styles: ClusterIconStyle[]): void {\n this.styles_ = styles;\n }\n\n /**\n * Returns the value of the `title` property.\n *\n * @return The content of the title text.\n */\n getTitle(): string {\n return this.title_;\n }\n\n /**\n * Sets the value of the `title` property.\n *\n * @param title The value of the title property.\n */\n setTitle(title: string): void {\n this.title_ = title;\n }\n\n /**\n * Returns the value of the `zoomOnClick` property.\n *\n * @return True if zoomOnClick property is set.\n */\n getZoomOnClick(): boolean {\n return this.zoomOnClick_;\n }\n\n /**\n * Sets the value of the `zoomOnClick` property.\n *\n * @param zoomOnClick The value of the zoomOnClick property.\n */\n setZoomOnClick(zoomOnClick: boolean): void {\n this.zoomOnClick_ = zoomOnClick;\n }\n\n /**\n * Returns the value of the `averageCenter` property.\n *\n * @return True if averageCenter property is set.\n */\n getAverageCenter(): boolean {\n return this.averageCenter_;\n }\n\n /**\n * Sets the value of the `averageCenter` property.\n *\n * @param averageCenter The value of the averageCenter property.\n */\n setAverageCenter(averageCenter: boolean): void {\n this.averageCenter_ = averageCenter;\n }\n\n /**\n * Returns the value of the `ignoreHidden` property.\n *\n * @return True if ignoreHidden property is set.\n */\n getIgnoreHidden(): boolean {\n return this.ignoreHidden_;\n }\n\n /**\n * Sets the value of the `ignoreHidden` property.\n *\n * @param ignoreHidden The value of the ignoreHidden property.\n */\n setIgnoreHidden(ignoreHidden: boolean): void {\n this.ignoreHidden_ = ignoreHidden;\n }\n\n /**\n * Returns the value of the `enableRetinaIcons` property.\n *\n * @return True if enableRetinaIcons property is set.\n */\n getEnableRetinaIcons(): boolean {\n return this.enableRetinaIcons_;\n }\n\n /**\n * Sets the value of the `enableRetinaIcons` property.\n *\n * @param enableRetinaIcons The value of the enableRetinaIcons property.\n */\n setEnableRetinaIcons(enableRetinaIcons: boolean): void {\n this.enableRetinaIcons_ = enableRetinaIcons;\n }\n\n /**\n * Returns the value of the `imageExtension` property.\n *\n * @return The value of the imageExtension property.\n */\n getImageExtension(): string {\n return this.imageExtension_;\n }\n\n /**\n * Sets the value of the `imageExtension` property.\n *\n * @param imageExtension The value of the imageExtension property.\n */\n setImageExtension(imageExtension: string): void {\n this.imageExtension_ = imageExtension;\n }\n\n /**\n * Returns the value of the `imagePath` property.\n *\n * @return The value of the imagePath property.\n */\n getImagePath(): string {\n return this.imagePath_;\n }\n\n /**\n * Sets the value of the `imagePath` property.\n *\n * @param imagePath The value of the imagePath property.\n */\n setImagePath(imagePath: string): void {\n this.imagePath_ = imagePath;\n }\n\n /**\n * Returns the value of the `imageSizes` property.\n *\n * @return The value of the imageSizes property.\n */\n getImageSizes(): number[] {\n return this.imageSizes_;\n }\n\n /**\n * Sets the value of the `imageSizes` property.\n *\n * @param imageSizes The value of the imageSizes property.\n */\n setImageSizes(imageSizes: number[]): void {\n this.imageSizes_ = imageSizes;\n }\n\n /**\n * Returns the value of the `calculator` property.\n *\n * @return the value of the calculator property.\n */\n getCalculator(): Calculator {\n return this.calculator_;\n }\n\n /**\n * Sets the value of the `calculator` property.\n *\n * @param calculator The value of the calculator property.\n */\n setCalculator(calculator: Calculator): void {\n this.calculator_ = calculator;\n }\n\n /**\n * Returns the value of the `batchSizeIE` property.\n *\n * @return the value of the batchSizeIE property.\n */\n getBatchSizeIE(): number {\n return this.batchSizeIE_;\n }\n\n /**\n * Sets the value of the `batchSizeIE` property.\n *\n * @param batchSizeIE The value of the batchSizeIE property.\n */\n setBatchSizeIE(batchSizeIE: number): void {\n this.batchSizeIE_ = batchSizeIE;\n }\n\n /**\n * Returns the value of the `clusterClass` property.\n *\n * @return the value of the clusterClass property.\n */\n getClusterClass(): string {\n return this.clusterClass_;\n }\n\n /**\n * Sets the value of the `clusterClass` property.\n *\n * @param clusterClass The value of the clusterClass property.\n */\n setClusterClass(clusterClass: string): void {\n this.clusterClass_ = clusterClass;\n }\n\n /**\n * Returns the array of markers managed by the clusterer.\n *\n * @return The array of markers managed by the clusterer.\n */\n getMarkers(): google.maps.Marker[] {\n return this.markers_;\n }\n\n /**\n * Returns the number of markers managed by the clusterer.\n *\n * @return The number of markers.\n */\n getTotalMarkers(): number {\n return this.markers_.length;\n }\n\n /**\n * Returns the current array of clusters formed by the clusterer.\n *\n * @return The array of clusters formed by the clusterer.\n */\n getClusters(): Cluster[] {\n return this.clusters_;\n }\n\n /**\n * Returns the number of clusters formed by the clusterer.\n *\n * @return The number of clusters formed by the clusterer.\n */\n getTotalClusters(): number {\n return this.clusters_.length;\n }\n\n /**\n * Adds a marker to the clusterer. The clusters are redrawn unless\n * `nodraw` is set to `true`.\n *\n * @param marker The marker to add.\n * @param nodraw Set to `true` to prevent redrawing.\n */\n addMarker(marker: google.maps.Marker, nodraw?: boolean): void {\n this.pushMarkerTo_(marker);\n if (!nodraw) {\n this.redraw_();\n }\n }\n\n /**\n * Adds an array of markers to the clusterer. The clusters are redrawn unless\n * `nodraw` is set to `true`.\n *\n * @param markers The markers to add.\n * @param nodraw Set to `true` to prevent redrawing.\n */\n addMarkers(markers: google.maps.Marker[], nodraw?: boolean): void {\n for (const key in markers) {\n if (Object.prototype.hasOwnProperty.call(markers, key)) {\n this.pushMarkerTo_(markers[key]);\n }\n }\n if (!nodraw) {\n this.redraw_();\n }\n }\n\n /**\n * Pushes a marker to the clusterer.\n *\n * @param marker The marker to add.\n */\n private pushMarkerTo_(\n marker: google.maps.Marker & { isAdded?: boolean }\n ): void {\n // If the marker is draggable add a listener so we can update the clusters on the dragend:\n if (marker.getDraggable()) {\n google.maps.event.addListener(marker, \"dragend\", () => {\n if (this.ready_) {\n marker.isAdded = false;\n this.repaint();\n }\n });\n }\n marker.isAdded = false;\n this.markers_.push(marker);\n }\n\n /**\n * Removes a marker from the cluster. The clusters are redrawn unless\n * `nodraw` is set to `true`. Returns `true` if the\n * marker was removed from the clusterer.\n *\n * @param marker The marker to remove.\n * @param nodraw Set to `true` to prevent redrawing.\n * @return True if the marker was removed from the clusterer.\n */\n removeMarker(marker: google.maps.Marker, nodraw?: boolean): boolean {\n const removed = this.removeMarker_(marker);\n\n if (!nodraw && removed) {\n this.repaint();\n }\n\n return removed;\n }\n\n /**\n * Removes an array of markers from the cluster. The clusters are redrawn unless\n * `nodraw` is set to `true`. Returns `true` if markers were removed from the clusterer.\n *\n * @param markers The markers to remove.\n * @param nodraw Set to `true` to prevent redrawing.\n * @return True if markers were removed from the clusterer.\n */\n removeMarkers(markers: google.maps.Marker[], nodraw?: boolean): boolean {\n let removed = false;\n\n for (let i = 0; i < markers.length; i++) {\n const r = this.removeMarker_(markers[i]);\n removed = removed || r;\n }\n\n if (!nodraw && removed) {\n this.repaint();\n }\n\n return removed;\n }\n\n /**\n * Removes a marker and returns true if removed, false if not.\n *\n * @param marker The marker to remove\n * @return Whether the marker was removed or not\n */\n private removeMarker_(marker: google.maps.Marker): boolean {\n let index = -1;\n if (this.markers_.indexOf) {\n index = this.markers_.indexOf(marker);\n } else {\n for (let i = 0; i < this.markers_.length; i++) {\n if (marker === this.markers_[i]) {\n index = i;\n break;\n }\n }\n }\n\n if (index === -1) {\n // Marker is not in our list of markers, so do nothing:\n return false;\n }\n\n marker.setMap(null);\n this.markers_.splice(index, 1); // Remove the marker from the list of managed markers\n return true;\n }\n\n /**\n * Removes all clusters and markers from the map and also removes all markers\n * managed by the clusterer.\n */\n clearMarkers(): void {\n this.resetViewport_(true);\n this.markers_ = [];\n }\n\n /**\n * Recalculates and redraws all the marker clusters from scratch.\n * Call this after changing any properties.\n */\n repaint(): void {\n const oldClusters = this.clusters_.slice();\n this.clusters_ = [];\n this.resetViewport_(false);\n this.redraw_();\n\n // Remove the old clusters.\n // Do it in a timeout to prevent blinking effect.\n setTimeout(() => {\n for (let i = 0; i < oldClusters.length; i++) {\n oldClusters[i].remove();\n }\n }, 0);\n }\n\n /**\n * Returns the current bounds extended by the grid size.\n *\n * @param bounds The bounds to extend.\n * @return The extended bounds.\n * @ignore\n */\n getExtendedBounds(\n bounds: google.maps.LatLngBounds\n ): google.maps.LatLngBounds {\n const projection = this.getProjection();\n\n // Turn the bounds into latlng.\n const tr = new google.maps.LatLng(\n bounds.getNorthEast().lat(),\n bounds.getNorthEast().lng()\n );\n const bl = new google.maps.LatLng(\n bounds.getSouthWest().lat(),\n bounds.getSouthWest().lng()\n );\n\n // Convert the points to pixels and the extend out by the grid size.\n const trPix = projection.fromLatLngToDivPixel(tr);\n trPix.x += this.gridSize_;\n trPix.y -= this.gridSize_;\n\n const blPix = projection.fromLatLngToDivPixel(bl);\n blPix.x -= this.gridSize_;\n blPix.y += this.gridSize_;\n\n // Convert the pixel points back to LatLng\n const ne = projection.fromDivPixelToLatLng(trPix);\n const sw = projection.fromDivPixelToLatLng(blPix);\n\n // Extend the bounds to contain the new bounds.\n bounds.extend(ne);\n bounds.extend(sw);\n\n return bounds;\n }\n\n /**\n * Redraws all the clusters.\n */\n private redraw_(): void {\n this.createClusters_(0);\n }\n\n /**\n * Removes all clusters from the map. The markers are also removed from the map\n * if `hide` is set to `true`.\n *\n * @param hide Set to `true` to also remove the markers from the map.\n */\n private resetViewport_(hide?: boolean): void {\n // Remove all the clusters\n for (let i = 0; i < this.clusters_.length; i++) {\n this.clusters_[i].remove();\n }\n this.clusters_ = [];\n\n // Reset the markers to not be added and to be removed from the map.\n for (let i = 0; i < this.markers_.length; i++) {\n const marker = this.markers_[i];\n marker.isAdded = false;\n if (hide) {\n marker.setMap(null);\n }\n }\n }\n\n /**\n * Calculates the distance between two latlng locations in km.\n *\n * @param p1 The first lat lng point.\n * @param p2 The second lat lng point.\n * @return The distance between the two points in km.\n * @link http://www.movable-type.co.uk/scripts/latlong.html\n */\n private distanceBetweenPoints_(\n p1: google.maps.LatLng,\n p2: google.maps.LatLng\n ): number {\n const R = 6371; // Radius of the Earth in km\n const dLat = ((p2.lat() - p1.lat()) * Math.PI) / 180;\n const dLon = ((p2.lng() - p1.lng()) * Math.PI) / 180;\n const a =\n Math.sin(dLat / 2) * Math.sin(dLat / 2) +\n Math.cos((p1.lat() * Math.PI) / 180) *\n Math.cos((p2.lat() * Math.PI) / 180) *\n Math.sin(dLon / 2) *\n Math.sin(dLon / 2);\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n return R * c;\n }\n\n /**\n * Determines if a marker is contained in a bounds.\n *\n * @param marker The marker to check.\n * @param bounds The bounds to check against.\n * @return True if the marker is in the bounds.\n */\n private isMarkerInBounds_(\n marker: google.maps.Marker,\n bounds: google.maps.LatLngBounds\n ): boolean {\n return bounds.contains(marker.getPosition());\n }\n\n /**\n * Adds a marker to a cluster, or creates a new cluster.\n *\n * @param marker The marker to add.\n */\n private addToClosestCluster_(marker: google.maps.Marker): void {\n let distance = 40000; // Some large number\n let clusterToAddTo = null;\n for (let i = 0; i < this.clusters_.length; i++) {\n const cluster = this.clusters_[i];\n const center = cluster.getCenter();\n if (center) {\n const d = this.distanceBetweenPoints_(center, marker.getPosition());\n if (d < distance) {\n distance = d;\n clusterToAddTo = cluster;\n }\n }\n }\n\n if (clusterToAddTo && clusterToAddTo.isMarkerInClusterBounds(marker)) {\n clusterToAddTo.addMarker(marker);\n } else {\n const cluster = new Cluster(this);\n cluster.addMarker(marker);\n this.clusters_.push(cluster);\n }\n }\n\n /**\n * Creates the clusters. This is done in batches to avoid timeout errors\n * in some browsers when there is a huge number of markers.\n *\n * @param iFirst The index of the first marker in the batch of\n * markers to be added to clusters.\n */\n private createClusters_(iFirst: number): void {\n if (!this.ready_) {\n return;\n }\n\n // Cancel previous batch processing if we're working on the first batch:\n if (iFirst === 0) {\n google.maps.event.trigger(this, \"clusteringbegin\", this);\n\n if (typeof this.timerRefStatic !== \"undefined\") {\n clearTimeout(this.timerRefStatic);\n delete this.timerRefStatic;\n }\n }\n\n // Get our current map view bounds.\n // Create a new bounds object so we don't affect the map.\n //\n // See Comments 9 & 11 on Issue 3651 relating to this workaround for a Google Maps bug:\n let mapBounds: google.maps.LatLngBounds;\n\n if (this.getMap().getZoom() > 3) {\n mapBounds = new google.maps.LatLngBounds(\n (this.getMap() as google.maps.Map).getBounds().getSouthWest(),\n (this.getMap() as google.maps.Map).getBounds().getNorthEast()\n );\n } else {\n mapBounds = new google.maps.LatLngBounds(\n new google.maps.LatLng(85.02070771743472, -178.48388434375),\n new google.maps.LatLng(-85.08136444384544, 178.00048865625)\n );\n }\n const bounds = this.getExtendedBounds(mapBounds);\n\n const iLast = Math.min(iFirst + this.batchSize_, this.markers_.length);\n\n for (let i = iFirst; i < iLast; i++) {\n const marker = this.markers_[i];\n if (!marker.isAdded && this.isMarkerInBounds_(marker, bounds)) {\n if (\n !this.ignoreHidden_ ||\n (this.ignoreHidden_ && marker.getVisible())\n ) {\n this.addToClosestCluster_(marker);\n }\n }\n }\n\n if (iLast < this.markers_.length) {\n this.timerRefStatic = window.setTimeout(() => {\n this.createClusters_(iLast);\n }, 0);\n } else {\n delete this.timerRefStatic;\n google.maps.event.trigger(this, \"clusteringend\", this);\n\n for (let i = 0; i < this.clusters_.length; i++) {\n this.clusters_[i].updateIcon();\n }\n }\n }\n\n /**\n * The default function for determining the label text and style\n * for a cluster icon.\n *\n * @param markers The array of markers represented by the cluster.\n * @param numStyles The number of marker styles available.\n * @return The information resource for the cluster.\n */\n static CALCULATOR(\n markers: google.maps.Marker[],\n numStyles: number\n ): ClusterIconInfo {\n let index = 0;\n const count: number = markers.length;\n\n let dv = count;\n while (dv !== 0) {\n dv = Math.floor(dv / 10);\n index++;\n }\n\n index = Math.min(index, numStyles);\n return {\n text: count.toString(),\n index: index,\n title: \"\",\n };\n }\n\n /**\n * Generates default styles augmented with user passed values.\n * Useful when you want to override some default values but keep untouched\n *\n * @param overrides override default values\n */\n static withDefaultStyle(overrides: ClusterIconStyle): ClusterIconStyle {\n return {\n textColor: \"black\",\n textSize: 11,\n textDecoration: \"none\",\n textLineHeight: overrides.height,\n fontWeight: \"bold\",\n fontStyle: \"normal\",\n fontFamily: \"Arial,sans-serif\",\n backgroundPosition: \"0 0\",\n ...overrides,\n };\n }\n}\n"],"names":["check","it","Math","globalThis","window","self","global","Function","exec","error","fails","Object","defineProperty","get","nativePropertyIsEnumerable","propertyIsEnumerable","getOwnPropertyDescriptor","call","V","descriptor","this","enumerable","bitmap","value","configurable","writable","toString","slice","split","classof","undefined","TypeError","IndexedObject","requireObjectCoercible","input","PREFERRED_STRING","isObject","fn","val","valueOf","hasOwnProperty","key","document","EXISTS","createElement","DESCRIPTORS","a","nativeGetOwnPropertyDescriptor","O","P","toIndexedObject","toPrimitive","IE8_DOM_DEFINE","has","createPropertyDescriptor","propertyIsEnumerableModule","f","String","nativeDefineProperty","Attributes","anObject","object","definePropertyModule","createNonEnumerableProperty","SHARED","setGlobal","functionToString","store","inspectSource","set","WeakMap","test","module","push","version","mode","copyright","id","postfix","random","keys","shared","NATIVE_WEAK_MAP","wmget","wmhas","wmset","metadata","STATE","uid","hiddenKeys","objectHas","enforce","getterFor","TYPE","state","type","getInternalState","InternalStateModule","enforceInternalState","TEMPLATE","options","unsafe","simple","noTargetGet","source","join","prototype","aFunction","variable","namespace","method","arguments","length","path","ceil","floor","argument","isNaN","min","toInteger","max","index","integer","createMethod","IS_INCLUDES","$this","el","fromIndex","toLength","toAbsoluteIndex","includes","indexOf","require$$0","names","i","result","enumBugKeys","concat","getOwnPropertyNames","internalObjectKeys","getOwnPropertySymbols","getBuiltIn","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","target","ownKeys","getOwnPropertyDescriptorModule","replacement","isForced","feature","detection","data","normalize","POLYFILL","NATIVE","string","replace","toLowerCase","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","stat","forced","copyConstructorProperties","sham","redefine","METHOD_NAME","cache","thrower","ACCESSORS","argument0","argument1","$indexOf","nativeIndexOf","NEGATIVE_ZERO","STRICT_METHOD","arrayMethodIsStrict","USES_TO_LENGTH","arrayMethodUsesToLength","proto","searchElement","apply","match","Array","isArray","arg","propertyKey","Symbol","NATIVE_SYMBOL","iterator","WellKnownSymbolsStore","createWellKnownSymbol","USE_SYMBOL_AS_UID","withoutSetter","name","process","versions","v8","userAgent","SPECIES","wellKnownSymbol","V8_VERSION","array","constructor","foo","Boolean","HAS_SPECIES_SUPPORT","arrayMethodHasSpeciesSupport","nativeSlice","start","end","Constructor","n","k","fin","createProperty","originalArray","C","MAX_SAFE_INTEGER","MAXIMUM_ALLOWED_LENGTH_EXCEEDED","splice","deleteCount","insertCount","actualDeleteCount","A","from","to","toObject","len","actualStart","argumentsLength","arraySpeciesCreate","TO_STRING_TAG","CORRECT_ARGUMENTS","classofRaw","TO_STRING_TAG_SUPPORT","tag","tryGet","callee","that","ignoreCase","multiline","dotAll","unicode","sticky","TO_STRING","RegExpPrototype","RegExp","nativeToString","NOT_GENERIC","flags","INCORRECT_NAME","R","p","rf","nativeJoin","ES3_STRINGS","separator","IS_RIGHT","callbackfn","memo","$reduce","left","right","reduce","RE","s","nativeKeys","re1","re2","re","lastIndex","nativeExec","nativeReplace","patchedExec","UPDATES_LAST_INDEX_WRONG","UNSUPPORTED_Y","stickyHelpers","BROKEN_CARET","NPCG_INCLUDED","str","reCopy","regexpFlags","charsAdded","strCopy","REPLACE_SUPPORTS_NAMED_GROUPS","groups","REPLACE_KEEPS_$0","REPLACE","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","KEY","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","methods","nativeMethod","regexp","arg2","forceStringMethod","regexpExec","done","stringMethod","regexMethod","CONVERT_TO_STRING","pos","first","second","S","position","size","charCodeAt","charAt","codeAt","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","maybeCallNative","reason","UNSAFE_SUBSTITUTE","searchValue","replaceValue","replacer","res","rx","functionalReplace","fullUnicode","results","regExpExec","advanceStringIndex","accumulatedResult","nextSourcePosition","matched","captures","j","namedCaptures","replacerArgs","getSubstitution","tailPos","m","symbols","ch","capture","MATCH","arrayPush","MAX_UINT32","SUPPORTS_Y","SPLIT","nativeSplit","internalSplit","limit","isRegExp","lim","lastLength","output","lastLastIndex","separatorCopy","splitter","defaultConstructor","speciesConstructor","unicodeMatching","callRegExpExec","q","e","z","type1","type2","property","extend","OverlayViewSafe","google","maps","OverlayView","toCssText","styles","acc","coercePixels","pixels","cluster_","styles_","_super","_this","setMap","getMap","__extends","ClusterIcon","cMouseDownInCluster","cDraggingMapByCluster","mc","getMarkerClusterer","_a","major","minor","gmVersion","parseInt","div_","visible_","show","getPanes","overlayMouseTarget","appendChild","boundsChangedListener_","event","addListener","addDomListener","stopPropagation","trigger","getZoomOnClick","mz_1","getMaxZoom","theBounds_1","getBounds","fitBounds","setTimeout","getZoom","setZoom","cancelBubble","parentNode","hide","removeListener","clearInstanceListeners","removeChild","getPosFromLatLng_","center_","style","top","y","x","display","className","className_","cssText","createCss_","innerHTML","url","getImageElementHtml","getLabelDivHtml","sums_","title","getTitle","ariaLabelFn","text","anchorText_","color","textColor","textSize","fontFamily","fontWeight","fontStyle","textDecoration","width","textLineHeight","bp","backgroundPosition","spriteH","spriteV","dimensions","getEnableRetinaIcons","height","clip","sums","anchorText","anchorIcon_","anchorIcon","getClusterClass","center","getZIndex","cursor","latlng","getProjection","fromLatLngToDivPixel","markerClusterer_","getMinimumClusterSize","getAverageCenter","getStyles","Cluster","markers_","map_","bounds","LatLngBounds","markers","getMarkers","getPosition","clusterIcon_","marker","isMarkerAlreadyAdded_","averageCenter_","l","lat","lng","LatLng","calculateBounds_","isAdded","mCount","mz","minClusterSize_","bounds_","contains","getExtendedBounds","numStyles","getCalculator","setCenter","useStyle","getOption","prop","def","map","zIndex","Marker","MAX_ZINDEX","gridSize","minimumClusterSize","maxZoom","imagePath","MarkerClusterer","IMAGE_PATH","imageExtension","IMAGE_EXTENSION","imageSizes","IMAGE_SIZES","calculator","CALCULATOR","batchSize","BATCH_SIZE","batchSizeIE","BATCH_SIZE_IE","clusterClass","navigator","batchSize_","batchSizeIE_","setupStyles_","addMarkers","activeMap_","ready_","repaint","prevZoom_","listeners_","minZoom","mapTypes","getMapTypeId","zoom","resetViewport_","redraw_","clusters_","remove","imageSizes_","withDefaultStyle","imagePath_","imageExtension_","padding","getVisible","getIgnoreHidden","gridSize_","maxZoom_","zIndex_","title_","zoomOnClick_","zoomOnClick","averageCenter","ignoreHidden_","ignoreHidden","enableRetinaIcons_","enableRetinaIcons","calculator_","clusterClass_","nodraw","pushMarkerTo_","getDraggable","removed","removeMarker_","r","oldClusters","projection","tr","getNorthEast","bl","getSouthWest","trPix","blPix","ne","fromDivPixelToLatLng","sw","createClusters_","p1","p2","dLat","PI","dLon","sin","cos","atan2","sqrt","distance","clusterToAddTo","cluster","getCenter","d","distanceBetweenPoints_","isMarkerInClusterBounds","addMarker","iFirst","mapBounds","timerRefStatic","clearTimeout","iLast","isMarkerInBounds_","addToClosestCluster_","updateIcon","count","dv","overrides"],"mappings":"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"}