1 line
1.5 MiB
1 line
1.5 MiB
{"version":3,"sources":["webpack://landxml/./node_modules/@turf/area/index.js","webpack://landxml/./node_modules/@turf/clone/index.js","webpack://landxml/./node_modules/@turf/helpers/index.js","webpack://landxml/./node_modules/@turf/meta/index.js","webpack://landxml/./node_modules/@turf/union/index.js","webpack://landxml/./node_modules/@turf/union/node_modules/@turf/invariant/index.js","webpack://landxml/./node_modules/babel-polyfill/lib/index.js","webpack://landxml/./node_modules/babel-polyfill/node_modules/regenerator-runtime/runtime.js","webpack://landxml/./node_modules/base64-js/index.js","webpack://landxml/./node_modules/buffer/index.js","webpack://landxml/./node_modules/core-js/fn/regexp/escape.js","webpack://landxml/./node_modules/core-js/modules/_a-function.js","webpack://landxml/./node_modules/core-js/modules/_a-number-value.js","webpack://landxml/./node_modules/core-js/modules/_add-to-unscopables.js","webpack://landxml/./node_modules/core-js/modules/_advance-string-index.js","webpack://landxml/./node_modules/core-js/modules/_an-instance.js","webpack://landxml/./node_modules/core-js/modules/_an-object.js","webpack://landxml/./node_modules/core-js/modules/_array-copy-within.js","webpack://landxml/./node_modules/core-js/modules/_array-fill.js","webpack://landxml/./node_modules/core-js/modules/_array-from-iterable.js","webpack://landxml/./node_modules/core-js/modules/_array-includes.js","webpack://landxml/./node_modules/core-js/modules/_array-methods.js","webpack://landxml/./node_modules/core-js/modules/_array-reduce.js","webpack://landxml/./node_modules/core-js/modules/_array-species-constructor.js","webpack://landxml/./node_modules/core-js/modules/_array-species-create.js","webpack://landxml/./node_modules/core-js/modules/_bind.js","webpack://landxml/./node_modules/core-js/modules/_classof.js","webpack://landxml/./node_modules/core-js/modules/_cof.js","webpack://landxml/./node_modules/core-js/modules/_collection-strong.js","webpack://landxml/./node_modules/core-js/modules/_collection-to-json.js","webpack://landxml/./node_modules/core-js/modules/_collection-weak.js","webpack://landxml/./node_modules/core-js/modules/_collection.js","webpack://landxml/./node_modules/core-js/modules/_core.js","webpack://landxml/./node_modules/core-js/modules/_create-property.js","webpack://landxml/./node_modules/core-js/modules/_ctx.js","webpack://landxml/./node_modules/core-js/modules/_date-to-iso-string.js","webpack://landxml/./node_modules/core-js/modules/_date-to-primitive.js","webpack://landxml/./node_modules/core-js/modules/_defined.js","webpack://landxml/./node_modules/core-js/modules/_descriptors.js","webpack://landxml/./node_modules/core-js/modules/_dom-create.js","webpack://landxml/./node_modules/core-js/modules/_enum-bug-keys.js","webpack://landxml/./node_modules/core-js/modules/_enum-keys.js","webpack://landxml/./node_modules/core-js/modules/_export.js","webpack://landxml/./node_modules/core-js/modules/_fails-is-regexp.js","webpack://landxml/./node_modules/core-js/modules/_fails.js","webpack://landxml/./node_modules/core-js/modules/_fix-re-wks.js","webpack://landxml/./node_modules/core-js/modules/_flags.js","webpack://landxml/./node_modules/core-js/modules/_flatten-into-array.js","webpack://landxml/./node_modules/core-js/modules/_for-of.js","webpack://landxml/./node_modules/core-js/modules/_function-to-string.js","webpack://landxml/./node_modules/core-js/modules/_global.js","webpack://landxml/./node_modules/core-js/modules/_has.js","webpack://landxml/./node_modules/core-js/modules/_hide.js","webpack://landxml/./node_modules/core-js/modules/_html.js","webpack://landxml/./node_modules/core-js/modules/_ie8-dom-define.js","webpack://landxml/./node_modules/core-js/modules/_inherit-if-required.js","webpack://landxml/./node_modules/core-js/modules/_invoke.js","webpack://landxml/./node_modules/core-js/modules/_iobject.js","webpack://landxml/./node_modules/core-js/modules/_is-array-iter.js","webpack://landxml/./node_modules/core-js/modules/_is-array.js","webpack://landxml/./node_modules/core-js/modules/_is-integer.js","webpack://landxml/./node_modules/core-js/modules/_is-object.js","webpack://landxml/./node_modules/core-js/modules/_is-regexp.js","webpack://landxml/./node_modules/core-js/modules/_iter-call.js","webpack://landxml/./node_modules/core-js/modules/_iter-create.js","webpack://landxml/./node_modules/core-js/modules/_iter-define.js","webpack://landxml/./node_modules/core-js/modules/_iter-detect.js","webpack://landxml/./node_modules/core-js/modules/_iter-step.js","webpack://landxml/./node_modules/core-js/modules/_iterators.js","webpack://landxml/./node_modules/core-js/modules/_library.js","webpack://landxml/./node_modules/core-js/modules/_math-expm1.js","webpack://landxml/./node_modules/core-js/modules/_math-fround.js","webpack://landxml/./node_modules/core-js/modules/_math-log1p.js","webpack://landxml/./node_modules/core-js/modules/_math-scale.js","webpack://landxml/./node_modules/core-js/modules/_math-sign.js","webpack://landxml/./node_modules/core-js/modules/_meta.js","webpack://landxml/./node_modules/core-js/modules/_metadata.js","webpack://landxml/./node_modules/core-js/modules/_microtask.js","webpack://landxml/./node_modules/core-js/modules/_new-promise-capability.js","webpack://landxml/./node_modules/core-js/modules/_object-assign.js","webpack://landxml/./node_modules/core-js/modules/_object-create.js","webpack://landxml/./node_modules/core-js/modules/_object-dp.js","webpack://landxml/./node_modules/core-js/modules/_object-dps.js","webpack://landxml/./node_modules/core-js/modules/_object-forced-pam.js","webpack://landxml/./node_modules/core-js/modules/_object-gopd.js","webpack://landxml/./node_modules/core-js/modules/_object-gopn-ext.js","webpack://landxml/./node_modules/core-js/modules/_object-gopn.js","webpack://landxml/./node_modules/core-js/modules/_object-gops.js","webpack://landxml/./node_modules/core-js/modules/_object-gpo.js","webpack://landxml/./node_modules/core-js/modules/_object-keys-internal.js","webpack://landxml/./node_modules/core-js/modules/_object-keys.js","webpack://landxml/./node_modules/core-js/modules/_object-pie.js","webpack://landxml/./node_modules/core-js/modules/_object-sap.js","webpack://landxml/./node_modules/core-js/modules/_object-to-array.js","webpack://landxml/./node_modules/core-js/modules/_own-keys.js","webpack://landxml/./node_modules/core-js/modules/_parse-float.js","webpack://landxml/./node_modules/core-js/modules/_parse-int.js","webpack://landxml/./node_modules/core-js/modules/_perform.js","webpack://landxml/./node_modules/core-js/modules/_promise-resolve.js","webpack://landxml/./node_modules/core-js/modules/_property-desc.js","webpack://landxml/./node_modules/core-js/modules/_redefine-all.js","webpack://landxml/./node_modules/core-js/modules/_redefine.js","webpack://landxml/./node_modules/core-js/modules/_regexp-exec-abstract.js","webpack://landxml/./node_modules/core-js/modules/_regexp-exec.js","webpack://landxml/./node_modules/core-js/modules/_replacer.js","webpack://landxml/./node_modules/core-js/modules/_same-value.js","webpack://landxml/./node_modules/core-js/modules/_set-collection-from.js","webpack://landxml/./node_modules/core-js/modules/_set-collection-of.js","webpack://landxml/./node_modules/core-js/modules/_set-proto.js","webpack://landxml/./node_modules/core-js/modules/_set-species.js","webpack://landxml/./node_modules/core-js/modules/_set-to-string-tag.js","webpack://landxml/./node_modules/core-js/modules/_shared-key.js","webpack://landxml/./node_modules/core-js/modules/_shared.js","webpack://landxml/./node_modules/core-js/modules/_species-constructor.js","webpack://landxml/./node_modules/core-js/modules/_strict-method.js","webpack://landxml/./node_modules/core-js/modules/_string-at.js","webpack://landxml/./node_modules/core-js/modules/_string-context.js","webpack://landxml/./node_modules/core-js/modules/_string-html.js","webpack://landxml/./node_modules/core-js/modules/_string-pad.js","webpack://landxml/./node_modules/core-js/modules/_string-repeat.js","webpack://landxml/./node_modules/core-js/modules/_string-trim.js","webpack://landxml/./node_modules/core-js/modules/_string-ws.js","webpack://landxml/./node_modules/core-js/modules/_task.js","webpack://landxml/./node_modules/core-js/modules/_to-absolute-index.js","webpack://landxml/./node_modules/core-js/modules/_to-index.js","webpack://landxml/./node_modules/core-js/modules/_to-integer.js","webpack://landxml/./node_modules/core-js/modules/_to-iobject.js","webpack://landxml/./node_modules/core-js/modules/_to-length.js","webpack://landxml/./node_modules/core-js/modules/_to-object.js","webpack://landxml/./node_modules/core-js/modules/_to-primitive.js","webpack://landxml/./node_modules/core-js/modules/_typed-array.js","webpack://landxml/./node_modules/core-js/modules/_typed-buffer.js","webpack://landxml/./node_modules/core-js/modules/_typed.js","webpack://landxml/./node_modules/core-js/modules/_uid.js","webpack://landxml/./node_modules/core-js/modules/_user-agent.js","webpack://landxml/./node_modules/core-js/modules/_validate-collection.js","webpack://landxml/./node_modules/core-js/modules/_wks-define.js","webpack://landxml/./node_modules/core-js/modules/_wks-ext.js","webpack://landxml/./node_modules/core-js/modules/_wks.js","webpack://landxml/./node_modules/core-js/modules/core.get-iterator-method.js","webpack://landxml/./node_modules/core-js/modules/core.regexp.escape.js","webpack://landxml/./node_modules/core-js/modules/es6.array.copy-within.js","webpack://landxml/./node_modules/core-js/modules/es6.array.every.js","webpack://landxml/./node_modules/core-js/modules/es6.array.fill.js","webpack://landxml/./node_modules/core-js/modules/es6.array.filter.js","webpack://landxml/./node_modules/core-js/modules/es6.array.find-index.js","webpack://landxml/./node_modules/core-js/modules/es6.array.find.js","webpack://landxml/./node_modules/core-js/modules/es6.array.for-each.js","webpack://landxml/./node_modules/core-js/modules/es6.array.from.js","webpack://landxml/./node_modules/core-js/modules/es6.array.index-of.js","webpack://landxml/./node_modules/core-js/modules/es6.array.is-array.js","webpack://landxml/./node_modules/core-js/modules/es6.array.iterator.js","webpack://landxml/./node_modules/core-js/modules/es6.array.join.js","webpack://landxml/./node_modules/core-js/modules/es6.array.last-index-of.js","webpack://landxml/./node_modules/core-js/modules/es6.array.map.js","webpack://landxml/./node_modules/core-js/modules/es6.array.of.js","webpack://landxml/./node_modules/core-js/modules/es6.array.reduce-right.js","webpack://landxml/./node_modules/core-js/modules/es6.array.reduce.js","webpack://landxml/./node_modules/core-js/modules/es6.array.slice.js","webpack://landxml/./node_modules/core-js/modules/es6.array.some.js","webpack://landxml/./node_modules/core-js/modules/es6.array.sort.js","webpack://landxml/./node_modules/core-js/modules/es6.array.species.js","webpack://landxml/./node_modules/core-js/modules/es6.date.now.js","webpack://landxml/./node_modules/core-js/modules/es6.date.to-iso-string.js","webpack://landxml/./node_modules/core-js/modules/es6.date.to-json.js","webpack://landxml/./node_modules/core-js/modules/es6.date.to-primitive.js","webpack://landxml/./node_modules/core-js/modules/es6.date.to-string.js","webpack://landxml/./node_modules/core-js/modules/es6.function.bind.js","webpack://landxml/./node_modules/core-js/modules/es6.function.has-instance.js","webpack://landxml/./node_modules/core-js/modules/es6.function.name.js","webpack://landxml/./node_modules/core-js/modules/es6.map.js","webpack://landxml/./node_modules/core-js/modules/es6.math.acosh.js","webpack://landxml/./node_modules/core-js/modules/es6.math.asinh.js","webpack://landxml/./node_modules/core-js/modules/es6.math.atanh.js","webpack://landxml/./node_modules/core-js/modules/es6.math.cbrt.js","webpack://landxml/./node_modules/core-js/modules/es6.math.clz32.js","webpack://landxml/./node_modules/core-js/modules/es6.math.cosh.js","webpack://landxml/./node_modules/core-js/modules/es6.math.expm1.js","webpack://landxml/./node_modules/core-js/modules/es6.math.fround.js","webpack://landxml/./node_modules/core-js/modules/es6.math.hypot.js","webpack://landxml/./node_modules/core-js/modules/es6.math.imul.js","webpack://landxml/./node_modules/core-js/modules/es6.math.log10.js","webpack://landxml/./node_modules/core-js/modules/es6.math.log1p.js","webpack://landxml/./node_modules/core-js/modules/es6.math.log2.js","webpack://landxml/./node_modules/core-js/modules/es6.math.sign.js","webpack://landxml/./node_modules/core-js/modules/es6.math.sinh.js","webpack://landxml/./node_modules/core-js/modules/es6.math.tanh.js","webpack://landxml/./node_modules/core-js/modules/es6.math.trunc.js","webpack://landxml/./node_modules/core-js/modules/es6.number.constructor.js","webpack://landxml/./node_modules/core-js/modules/es6.number.epsilon.js","webpack://landxml/./node_modules/core-js/modules/es6.number.is-finite.js","webpack://landxml/./node_modules/core-js/modules/es6.number.is-integer.js","webpack://landxml/./node_modules/core-js/modules/es6.number.is-nan.js","webpack://landxml/./node_modules/core-js/modules/es6.number.is-safe-integer.js","webpack://landxml/./node_modules/core-js/modules/es6.number.max-safe-integer.js","webpack://landxml/./node_modules/core-js/modules/es6.number.min-safe-integer.js","webpack://landxml/./node_modules/core-js/modules/es6.number.parse-float.js","webpack://landxml/./node_modules/core-js/modules/es6.number.parse-int.js","webpack://landxml/./node_modules/core-js/modules/es6.number.to-fixed.js","webpack://landxml/./node_modules/core-js/modules/es6.number.to-precision.js","webpack://landxml/./node_modules/core-js/modules/es6.object.assign.js","webpack://landxml/./node_modules/core-js/modules/es6.object.create.js","webpack://landxml/./node_modules/core-js/modules/es6.object.define-properties.js","webpack://landxml/./node_modules/core-js/modules/es6.object.define-property.js","webpack://landxml/./node_modules/core-js/modules/es6.object.freeze.js","webpack://landxml/./node_modules/core-js/modules/es6.object.get-own-property-descriptor.js","webpack://landxml/./node_modules/core-js/modules/es6.object.get-own-property-names.js","webpack://landxml/./node_modules/core-js/modules/es6.object.get-prototype-of.js","webpack://landxml/./node_modules/core-js/modules/es6.object.is-extensible.js","webpack://landxml/./node_modules/core-js/modules/es6.object.is-frozen.js","webpack://landxml/./node_modules/core-js/modules/es6.object.is-sealed.js","webpack://landxml/./node_modules/core-js/modules/es6.object.is.js","webpack://landxml/./node_modules/core-js/modules/es6.object.keys.js","webpack://landxml/./node_modules/core-js/modules/es6.object.prevent-extensions.js","webpack://landxml/./node_modules/core-js/modules/es6.object.seal.js","webpack://landxml/./node_modules/core-js/modules/es6.object.set-prototype-of.js","webpack://landxml/./node_modules/core-js/modules/es6.object.to-string.js","webpack://landxml/./node_modules/core-js/modules/es6.parse-float.js","webpack://landxml/./node_modules/core-js/modules/es6.parse-int.js","webpack://landxml/./node_modules/core-js/modules/es6.promise.js","webpack://landxml/./node_modules/core-js/modules/es6.reflect.apply.js","webpack://landxml/./node_modules/core-js/modules/es6.reflect.construct.js","webpack://landxml/./node_modules/core-js/modules/es6.reflect.define-property.js","webpack://landxml/./node_modules/core-js/modules/es6.reflect.delete-property.js","webpack://landxml/./node_modules/core-js/modules/es6.reflect.enumerate.js","webpack://landxml/./node_modules/core-js/modules/es6.reflect.get-own-property-descriptor.js","webpack://landxml/./node_modules/core-js/modules/es6.reflect.get-prototype-of.js","webpack://landxml/./node_modules/core-js/modules/es6.reflect.get.js","webpack://landxml/./node_modules/core-js/modules/es6.reflect.has.js","webpack://landxml/./node_modules/core-js/modules/es6.reflect.is-extensible.js","webpack://landxml/./node_modules/core-js/modules/es6.reflect.own-keys.js","webpack://landxml/./node_modules/core-js/modules/es6.reflect.prevent-extensions.js","webpack://landxml/./node_modules/core-js/modules/es6.reflect.set-prototype-of.js","webpack://landxml/./node_modules/core-js/modules/es6.reflect.set.js","webpack://landxml/./node_modules/core-js/modules/es6.regexp.constructor.js","webpack://landxml/./node_modules/core-js/modules/es6.regexp.exec.js","webpack://landxml/./node_modules/core-js/modules/es6.regexp.flags.js","webpack://landxml/./node_modules/core-js/modules/es6.regexp.match.js","webpack://landxml/./node_modules/core-js/modules/es6.regexp.replace.js","webpack://landxml/./node_modules/core-js/modules/es6.regexp.search.js","webpack://landxml/./node_modules/core-js/modules/es6.regexp.split.js","webpack://landxml/./node_modules/core-js/modules/es6.regexp.to-string.js","webpack://landxml/./node_modules/core-js/modules/es6.set.js","webpack://landxml/./node_modules/core-js/modules/es6.string.anchor.js","webpack://landxml/./node_modules/core-js/modules/es6.string.big.js","webpack://landxml/./node_modules/core-js/modules/es6.string.blink.js","webpack://landxml/./node_modules/core-js/modules/es6.string.bold.js","webpack://landxml/./node_modules/core-js/modules/es6.string.code-point-at.js","webpack://landxml/./node_modules/core-js/modules/es6.string.ends-with.js","webpack://landxml/./node_modules/core-js/modules/es6.string.fixed.js","webpack://landxml/./node_modules/core-js/modules/es6.string.fontcolor.js","webpack://landxml/./node_modules/core-js/modules/es6.string.fontsize.js","webpack://landxml/./node_modules/core-js/modules/es6.string.from-code-point.js","webpack://landxml/./node_modules/core-js/modules/es6.string.includes.js","webpack://landxml/./node_modules/core-js/modules/es6.string.italics.js","webpack://landxml/./node_modules/core-js/modules/es6.string.iterator.js","webpack://landxml/./node_modules/core-js/modules/es6.string.link.js","webpack://landxml/./node_modules/core-js/modules/es6.string.raw.js","webpack://landxml/./node_modules/core-js/modules/es6.string.repeat.js","webpack://landxml/./node_modules/core-js/modules/es6.string.small.js","webpack://landxml/./node_modules/core-js/modules/es6.string.starts-with.js","webpack://landxml/./node_modules/core-js/modules/es6.string.strike.js","webpack://landxml/./node_modules/core-js/modules/es6.string.sub.js","webpack://landxml/./node_modules/core-js/modules/es6.string.sup.js","webpack://landxml/./node_modules/core-js/modules/es6.string.trim.js","webpack://landxml/./node_modules/core-js/modules/es6.symbol.js","webpack://landxml/./node_modules/core-js/modules/es6.typed.array-buffer.js","webpack://landxml/./node_modules/core-js/modules/es6.typed.data-view.js","webpack://landxml/./node_modules/core-js/modules/es6.typed.float32-array.js","webpack://landxml/./node_modules/core-js/modules/es6.typed.float64-array.js","webpack://landxml/./node_modules/core-js/modules/es6.typed.int16-array.js","webpack://landxml/./node_modules/core-js/modules/es6.typed.int32-array.js","webpack://landxml/./node_modules/core-js/modules/es6.typed.int8-array.js","webpack://landxml/./node_modules/core-js/modules/es6.typed.uint16-array.js","webpack://landxml/./node_modules/core-js/modules/es6.typed.uint32-array.js","webpack://landxml/./node_modules/core-js/modules/es6.typed.uint8-array.js","webpack://landxml/./node_modules/core-js/modules/es6.typed.uint8-clamped-array.js","webpack://landxml/./node_modules/core-js/modules/es6.weak-map.js","webpack://landxml/./node_modules/core-js/modules/es6.weak-set.js","webpack://landxml/./node_modules/core-js/modules/es7.array.flat-map.js","webpack://landxml/./node_modules/core-js/modules/es7.array.flatten.js","webpack://landxml/./node_modules/core-js/modules/es7.array.includes.js","webpack://landxml/./node_modules/core-js/modules/es7.asap.js","webpack://landxml/./node_modules/core-js/modules/es7.error.is-error.js","webpack://landxml/./node_modules/core-js/modules/es7.global.js","webpack://landxml/./node_modules/core-js/modules/es7.map.from.js","webpack://landxml/./node_modules/core-js/modules/es7.map.of.js","webpack://landxml/./node_modules/core-js/modules/es7.map.to-json.js","webpack://landxml/./node_modules/core-js/modules/es7.math.clamp.js","webpack://landxml/./node_modules/core-js/modules/es7.math.deg-per-rad.js","webpack://landxml/./node_modules/core-js/modules/es7.math.degrees.js","webpack://landxml/./node_modules/core-js/modules/es7.math.fscale.js","webpack://landxml/./node_modules/core-js/modules/es7.math.iaddh.js","webpack://landxml/./node_modules/core-js/modules/es7.math.imulh.js","webpack://landxml/./node_modules/core-js/modules/es7.math.isubh.js","webpack://landxml/./node_modules/core-js/modules/es7.math.rad-per-deg.js","webpack://landxml/./node_modules/core-js/modules/es7.math.radians.js","webpack://landxml/./node_modules/core-js/modules/es7.math.scale.js","webpack://landxml/./node_modules/core-js/modules/es7.math.signbit.js","webpack://landxml/./node_modules/core-js/modules/es7.math.umulh.js","webpack://landxml/./node_modules/core-js/modules/es7.object.define-getter.js","webpack://landxml/./node_modules/core-js/modules/es7.object.define-setter.js","webpack://landxml/./node_modules/core-js/modules/es7.object.entries.js","webpack://landxml/./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js","webpack://landxml/./node_modules/core-js/modules/es7.object.lookup-getter.js","webpack://landxml/./node_modules/core-js/modules/es7.object.lookup-setter.js","webpack://landxml/./node_modules/core-js/modules/es7.object.values.js","webpack://landxml/./node_modules/core-js/modules/es7.observable.js","webpack://landxml/./node_modules/core-js/modules/es7.promise.finally.js","webpack://landxml/./node_modules/core-js/modules/es7.promise.try.js","webpack://landxml/./node_modules/core-js/modules/es7.reflect.define-metadata.js","webpack://landxml/./node_modules/core-js/modules/es7.reflect.delete-metadata.js","webpack://landxml/./node_modules/core-js/modules/es7.reflect.get-metadata-keys.js","webpack://landxml/./node_modules/core-js/modules/es7.reflect.get-metadata.js","webpack://landxml/./node_modules/core-js/modules/es7.reflect.get-own-metadata-keys.js","webpack://landxml/./node_modules/core-js/modules/es7.reflect.get-own-metadata.js","webpack://landxml/./node_modules/core-js/modules/es7.reflect.has-metadata.js","webpack://landxml/./node_modules/core-js/modules/es7.reflect.has-own-metadata.js","webpack://landxml/./node_modules/core-js/modules/es7.reflect.metadata.js","webpack://landxml/./node_modules/core-js/modules/es7.set.from.js","webpack://landxml/./node_modules/core-js/modules/es7.set.of.js","webpack://landxml/./node_modules/core-js/modules/es7.set.to-json.js","webpack://landxml/./node_modules/core-js/modules/es7.string.at.js","webpack://landxml/./node_modules/core-js/modules/es7.string.match-all.js","webpack://landxml/./node_modules/core-js/modules/es7.string.pad-end.js","webpack://landxml/./node_modules/core-js/modules/es7.string.pad-start.js","webpack://landxml/./node_modules/core-js/modules/es7.string.trim-left.js","webpack://landxml/./node_modules/core-js/modules/es7.string.trim-right.js","webpack://landxml/./node_modules/core-js/modules/es7.symbol.async-iterator.js","webpack://landxml/./node_modules/core-js/modules/es7.symbol.observable.js","webpack://landxml/./node_modules/core-js/modules/es7.system.global.js","webpack://landxml/./node_modules/core-js/modules/es7.weak-map.from.js","webpack://landxml/./node_modules/core-js/modules/es7.weak-map.of.js","webpack://landxml/./node_modules/core-js/modules/es7.weak-set.from.js","webpack://landxml/./node_modules/core-js/modules/es7.weak-set.of.js","webpack://landxml/./node_modules/core-js/modules/web.dom.iterable.js","webpack://landxml/./node_modules/core-js/modules/web.immediate.js","webpack://landxml/./node_modules/core-js/modules/web.timers.js","webpack://landxml/./node_modules/core-js/shim.js","webpack://landxml/./node_modules/emitter-component/index.js","webpack://landxml/./node_modules/events/events.js","webpack://landxml/./node_modules/ieee754/index.js","webpack://landxml/./node_modules/martinez-polygon-clipping/dist/martinez.umd.js","webpack://landxml/./node_modules/randomcolor/randomColor.js","webpack://landxml/./node_modules/sax/lib/sax.js","webpack://landxml/./node_modules/stream/index.js","webpack://landxml/./node_modules/string_decoder/lib/string_decoder.js","webpack://landxml/./node_modules/string_decoder/node_modules/safe-buffer/index.js","webpack://landxml/./node_modules/timers/index.js","webpack://landxml/./node_modules/xml2js/lib/bom.js","webpack://landxml/./node_modules/xml2js/lib/builder.js","webpack://landxml/./node_modules/xml2js/lib/defaults.js","webpack://landxml/./node_modules/xml2js/lib/parser.js","webpack://landxml/./node_modules/xml2js/lib/processors.js","webpack://landxml/./node_modules/xml2js/lib/xml2js.js","webpack://landxml/./node_modules/xml2js/node_modules/xmlbuilder/lib/DocumentPosition.js","webpack://landxml/./node_modules/xml2js/node_modules/xmlbuilder/lib/NodeType.js","webpack://landxml/./node_modules/xml2js/node_modules/xmlbuilder/lib/Utility.js","webpack://landxml/./node_modules/xml2js/node_modules/xmlbuilder/lib/WriterState.js","webpack://landxml/./node_modules/xml2js/node_modules/xmlbuilder/lib/XMLAttribute.js","webpack://landxml/./node_modules/xml2js/node_modules/xmlbuilder/lib/XMLCData.js","webpack://landxml/./node_modules/xml2js/node_modules/xmlbuilder/lib/XMLCharacterData.js","webpack://landxml/./node_modules/xml2js/node_modules/xmlbuilder/lib/XMLComment.js","webpack://landxml/./node_modules/xml2js/node_modules/xmlbuilder/lib/XMLDOMConfiguration.js","webpack://landxml/./node_modules/xml2js/node_modules/xmlbuilder/lib/XMLDOMErrorHandler.js","webpack://landxml/./node_modules/xml2js/node_modules/xmlbuilder/lib/XMLDOMImplementation.js","webpack://landxml/./node_modules/xml2js/node_modules/xmlbuilder/lib/XMLDOMStringList.js","webpack://landxml/./node_modules/xml2js/node_modules/xmlbuilder/lib/XMLDTDAttList.js","webpack://landxml/./node_modules/xml2js/node_modules/xmlbuilder/lib/XMLDTDElement.js","webpack://landxml/./node_modules/xml2js/node_modules/xmlbuilder/lib/XMLDTDEntity.js","webpack://landxml/./node_modules/xml2js/node_modules/xmlbuilder/lib/XMLDTDNotation.js","webpack://landxml/./node_modules/xml2js/node_modules/xmlbuilder/lib/XMLDeclaration.js","webpack://landxml/./node_modules/xml2js/node_modules/xmlbuilder/lib/XMLDocType.js","webpack://landxml/./node_modules/xml2js/node_modules/xmlbuilder/lib/XMLDocument.js","webpack://landxml/./node_modules/xml2js/node_modules/xmlbuilder/lib/XMLDocumentCB.js","webpack://landxml/./node_modules/xml2js/node_modules/xmlbuilder/lib/XMLDummy.js","webpack://landxml/./node_modules/xml2js/node_modules/xmlbuilder/lib/XMLElement.js","webpack://landxml/./node_modules/xml2js/node_modules/xmlbuilder/lib/XMLNamedNodeMap.js","webpack://landxml/./node_modules/xml2js/node_modules/xmlbuilder/lib/XMLNode.js","webpack://landxml/./node_modules/xml2js/node_modules/xmlbuilder/lib/XMLNodeList.js","webpack://landxml/./node_modules/xml2js/node_modules/xmlbuilder/lib/XMLProcessingInstruction.js","webpack://landxml/./node_modules/xml2js/node_modules/xmlbuilder/lib/XMLRaw.js","webpack://landxml/./node_modules/xml2js/node_modules/xmlbuilder/lib/XMLStreamWriter.js","webpack://landxml/./node_modules/xml2js/node_modules/xmlbuilder/lib/XMLStringWriter.js","webpack://landxml/./node_modules/xml2js/node_modules/xmlbuilder/lib/XMLStringifier.js","webpack://landxml/./node_modules/xml2js/node_modules/xmlbuilder/lib/XMLText.js","webpack://landxml/./node_modules/xml2js/node_modules/xmlbuilder/lib/XMLWriterBase.js","webpack://landxml/./node_modules/xml2js/node_modules/xmlbuilder/lib/index.js","webpack://landxml/./node_modules/proj4/lib/constants/values.js","webpack://landxml/./node_modules/proj4/lib/constants/PrimeMeridian.js","webpack://landxml/./node_modules/proj4/lib/constants/units.js","webpack://landxml/./node_modules/proj4/lib/match.js","webpack://landxml/./node_modules/proj4/lib/projString.js","webpack://landxml/./node_modules/wkt-parser/parser.js","webpack://landxml/./node_modules/wkt-parser/process.js","webpack://landxml/./node_modules/wkt-parser/index.js","webpack://landxml/./node_modules/proj4/lib/defs.js","webpack://landxml/./node_modules/proj4/lib/global.js","webpack://landxml/./node_modules/proj4/lib/parseCode.js","webpack://landxml/./node_modules/proj4/lib/extend.js","webpack://landxml/./node_modules/proj4/lib/common/msfnz.js","webpack://landxml/./node_modules/proj4/lib/common/sign.js","webpack://landxml/./node_modules/proj4/lib/common/adjust_lon.js","webpack://landxml/./node_modules/proj4/lib/common/tsfnz.js","webpack://landxml/./node_modules/proj4/lib/common/phi2z.js","webpack://landxml/./node_modules/proj4/lib/projections/longlat.js","webpack://landxml/./node_modules/proj4/lib/projections.js","webpack://landxml/./node_modules/proj4/lib/projections/merc.js","webpack://landxml/./node_modules/proj4/lib/constants/Ellipsoid.js","webpack://landxml/./node_modules/proj4/lib/constants/Datum.js","webpack://landxml/./node_modules/proj4/lib/Proj.js","webpack://landxml/./node_modules/proj4/lib/deriveConstants.js","webpack://landxml/./node_modules/proj4/lib/datum.js","webpack://landxml/./node_modules/proj4/lib/datumUtils.js","webpack://landxml/./node_modules/proj4/lib/datum_transform.js","webpack://landxml/./node_modules/proj4/lib/adjust_axis.js","webpack://landxml/./node_modules/proj4/lib/common/toPoint.js","webpack://landxml/./node_modules/proj4/lib/checkSanity.js","webpack://landxml/./node_modules/proj4/lib/transform.js","webpack://landxml/./node_modules/proj4/lib/core.js","webpack://landxml/./node_modules/mgrs/mgrs.js","webpack://landxml/./node_modules/proj4/lib/Point.js","webpack://landxml/./node_modules/proj4/lib/common/pj_enfn.js","webpack://landxml/./node_modules/proj4/lib/common/pj_mlfn.js","webpack://landxml/./node_modules/proj4/lib/common/pj_inv_mlfn.js","webpack://landxml/./node_modules/proj4/lib/projections/tmerc.js","webpack://landxml/./node_modules/proj4/lib/common/sinh.js","webpack://landxml/./node_modules/proj4/lib/common/hypot.js","webpack://landxml/./node_modules/proj4/lib/common/gatg.js","webpack://landxml/./node_modules/proj4/lib/common/clens_cmplx.js","webpack://landxml/./node_modules/proj4/lib/common/cosh.js","webpack://landxml/./node_modules/proj4/lib/projections/etmerc.js","webpack://landxml/./node_modules/proj4/lib/common/clens.js","webpack://landxml/./node_modules/proj4/lib/common/asinhy.js","webpack://landxml/./node_modules/proj4/lib/common/log1py.js","webpack://landxml/./node_modules/proj4/lib/projections/utm.js","webpack://landxml/./node_modules/proj4/lib/common/adjust_zone.js","webpack://landxml/./node_modules/proj4/lib/common/srat.js","webpack://landxml/./node_modules/proj4/lib/projections/gauss.js","webpack://landxml/./node_modules/proj4/lib/projections/sterea.js","webpack://landxml/./node_modules/proj4/lib/projections/stere.js","webpack://landxml/./node_modules/proj4/lib/projections/somerc.js","webpack://landxml/./node_modules/proj4/lib/projections/omerc.js","webpack://landxml/./node_modules/proj4/lib/projections/lcc.js","webpack://landxml/./node_modules/proj4/lib/projections/krovak.js","webpack://landxml/./node_modules/proj4/lib/common/mlfn.js","webpack://landxml/./node_modules/proj4/lib/common/e0fn.js","webpack://landxml/./node_modules/proj4/lib/common/e1fn.js","webpack://landxml/./node_modules/proj4/lib/common/e2fn.js","webpack://landxml/./node_modules/proj4/lib/common/e3fn.js","webpack://landxml/./node_modules/proj4/lib/common/gN.js","webpack://landxml/./node_modules/proj4/lib/common/adjust_lat.js","webpack://landxml/./node_modules/proj4/lib/common/imlfn.js","webpack://landxml/./node_modules/proj4/lib/projections/cass.js","webpack://landxml/./node_modules/proj4/lib/common/qsfnz.js","webpack://landxml/./node_modules/proj4/lib/projections/laea.js","webpack://landxml/./node_modules/proj4/lib/common/asinz.js","webpack://landxml/./node_modules/proj4/lib/projections/aea.js","webpack://landxml/./node_modules/proj4/lib/projections/gnom.js","webpack://landxml/./node_modules/proj4/lib/projections/cea.js","webpack://landxml/./node_modules/proj4/lib/common/iqsfnz.js","webpack://landxml/./node_modules/proj4/lib/projections/eqc.js","webpack://landxml/./node_modules/proj4/lib/projections/poly.js","webpack://landxml/./node_modules/proj4/lib/projections/nzmg.js","webpack://landxml/./node_modules/proj4/lib/projections/mill.js","webpack://landxml/./node_modules/proj4/lib/projections/sinu.js","webpack://landxml/./node_modules/proj4/lib/projections/moll.js","webpack://landxml/./node_modules/proj4/lib/projections/eqdc.js","webpack://landxml/./node_modules/proj4/lib/projections/vandg.js","webpack://landxml/./node_modules/proj4/lib/projections/aeqd.js","webpack://landxml/./node_modules/proj4/lib/projections/ortho.js","webpack://landxml/./node_modules/proj4/lib/projections/qsc.js","webpack://landxml/./node_modules/proj4/lib/projections/robin.js","webpack://landxml/./node_modules/proj4/lib/projections/geocent.js","webpack://landxml/./node_modules/proj4/lib/projections/tpers.js","webpack://landxml/./node_modules/proj4/projs.js","webpack://landxml/./node_modules/proj4/lib/index.js","webpack://landxml/./lib/projection.js","webpack://landxml/./lib/util.js","webpack://landxml/./node_modules/@turf/transform-translate/node_modules/@turf/meta/main.es.js","webpack://landxml/./node_modules/@turf/transform-translate/node_modules/@turf/clone/main.es.js","webpack://landxml/./node_modules/@turf/rhumb-destination/node_modules/@turf/helpers/main.es.js","webpack://landxml/./node_modules/@turf/rhumb-destination/main.es.js","webpack://landxml/./node_modules/@turf/invariant/main.es.js","webpack://landxml/./node_modules/@turf/transform-translate/main.es.js","webpack://landxml/./node_modules/@turf/transform-translate/node_modules/@turf/helpers/main.es.js","webpack://landxml/./lib/pipe-network.js","webpack://landxml/./lib/converter.js","webpack://landxml/./lib/parcel.js","webpack://landxml/./lib/surface.js","webpack://landxml/webpack/bootstrap","webpack://landxml/webpack/startup","webpack://landxml/webpack/runtime/compat get default export","webpack://landxml/webpack/runtime/define property getters","webpack://landxml/webpack/runtime/global","webpack://landxml/webpack/runtime/hasOwnProperty shorthand","webpack://landxml/webpack/runtime/make namespace object","webpack://landxml/webpack/runtime/node module decorator"],"names":["meta_1","RADIUS","polygonArea","coords","total","length","Math","abs","ringArea","i","p1","p2","lowerIndex","middleIndex","upperIndex","coordsLength","rad","sin","num","PI","exports","geojson","geomReduce","value","geom","type","coordinates","calculateArea","cloneFeature","cloned","Object","keys","forEach","key","properties","cloneProperties","geometry","cloneGeometry","Array","isArray","map","item","bbox","geometries","g","deepSlice","slice","coord","Error","features","feature","cloneFeatureCollection","options","feat","id","point","polygon","_i","coordinates_1","ring","j","lineString","featureCollection","fc","multiLineString","multiPoint","multiPolygon","radiansToLength","radians","units","factor","factors","lengthToRadians","distance","radiansToDegrees","isNumber","isNaN","test","defineProperty","earthRadius","centimeters","centimetres","degrees","feet","inches","kilometers","kilometres","meters","metres","miles","millimeters","millimetres","nauticalmiles","yards","unitsFactors","areaFactors","acres","points","polygons","lineStrings","geometryCollection","round","precision","multiplier","pow","lengthToDegrees","bearingToAzimuth","bearing","angle","degreesToRadians","convertLength","originalUnit","finalUnit","convertArea","area","startFactor","finalFactor","isObject","input","constructor","validateBBox","validateId","indexOf","radians2degrees","degrees2radians","distanceToDegrees","distanceToRadians","radiansToDistance","bearingToAngle","convertDistance","helpers","coordEach","callback","excludeWrapCoord","k","l","stopG","geometryMaybeCollection","isGeometryCollection","wrapShrink","coordIndex","isFeatureCollection","isFeature","stop","featureIndex","geomIndex","multiFeatureIndex","geometryIndex","geomType","propEach","featureEach","geomEach","featureProperties","featureBBox","featureId","undefined","flattenEach","segmentEach","segmentIndex","previousCoords","previousFeatureIndex","previousMultiIndex","prevGeomIndex","currentCoord","featureIndexCoord","multiPartIndexCoord","currentSegment","lineEach","coordReduce","initialValue","previousValue","propReduce","currentProperties","featureReduce","currentFeature","coordAll","push","currentGeometry","flattenReduce","segmentReduce","started","lineReduce","currentLine","findSegment","findPoint","martinez","invariant_1","helpers_1","polygon1","polygon2","coords1","getGeom","coords2","unioned","union","getCoord","getCoords","containsNumber","geojsonType","name","featureOf","collectionOf","_a","getType","_babelPolyfill","define","O","writable","configurable","String","prototype","padStart","padEnd","split","Function","call","bind","global","Op","hasOwn","hasOwnProperty","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","runtime","regeneratorRuntime","module","wrap","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","IteratorPrototype","this","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","GeneratorFunctionPrototype","Generator","create","GeneratorFunction","displayName","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","__proto__","awrap","arg","__await","defineIteratorMethods","AsyncIterator","async","innerFn","outerFn","self","tryLocsList","iter","next","then","result","done","toString","object","reverse","pop","Context","reset","skipTempReset","prev","sent","_sent","delegate","method","tryEntries","resetTryEntry","charAt","rootRecord","completion","rval","dispatchException","exception","context","handle","loc","caught","record","entry","tryLoc","hasCatch","hasFinally","catchLoc","finallyLoc","abrupt","finallyEntry","complete","afterLoc","finish","thrown","delegateYield","iterable","resultName","nextLoc","protoGenerator","generator","_invoke","state","doneResult","delegateResult","maybeInvokeDelegate","tryCatch","makeInvokeMethod","fn","obj","err","invoke","resolve","reject","Promise","unwrapped","previousPromise","process","domain","callInvokeWithMethodAndArg","return","TypeError","info","pushTryEntry","locs","iteratorMethod","window","byteLength","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","tmp","arr","Arr","_byteLength","curByte","len","revLookup","charCodeAt","fromByteArray","uint8","extraBytes","parts","maxChunkLength","len2","encodeChunk","lookup","join","Uint8Array","code","start","end","output","base64","ieee754","Buffer","SlowBuffer","alloc","INSPECT_MAX_BYTES","K_MAX_LENGTH","createBuffer","RangeError","buf","encodingOrOffset","allocUnsafe","from","isArrayBuffer","array","byteOffset","fromArrayBuffer","string","encoding","isEncoding","actual","write","fromString","isBuffer","checked","copy","isArrayBufferView","numberIsNaN","fromArrayLike","data","fromObject","assertSize","size","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","b","n","m","bidirectionalIndexOf","buffer","val","dir","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","read","readUInt16BE","foundIndex","found","hexWrite","offset","Number","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","str","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","c","hi","lo","utf16leToBytes","min","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","apply","decodeCodePointsArray","kMaxLength","TYPED_ARRAY_SUPPORT","foo","e","typedArraySupport","console","error","species","enumerable","poolSize","fill","allocUnsafeSlow","_isBuffer","compare","a","x","y","concat","list","pos","swap16","swap32","swap64","arguments","equals","inspect","max","match","target","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","_arr","ret","out","bytes","checkOffset","ext","checkInt","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","newBuf","subarray","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","set","INVALID_BASE64_RE","Infinity","leadSurrogate","trim","replace","base64clean","src","dst","ArrayBuffer","isView","it","cof","msg","UNSCOPABLES","ArrayProto","at","S","index","unicode","Constructor","forbiddenField","toObject","toAbsoluteIndex","toLength","copyWithin","to","count","inc","aLen","endPos","forOf","ITERATOR","toIObject","IS_INCLUDES","$this","el","fromIndex","ctx","IObject","asc","TYPE","$create","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","callbackfn","that","f","aFunction","memo","isRight","SPECIES","original","C","speciesConstructor","arraySlice","factories","construct","F","args","partArgs","bound","TAG","ARG","T","B","tryGet","callee","dP","redefineAll","anInstance","$iterDefine","step","setSpecies","DESCRIPTORS","fastKey","validate","SIZE","getEntry","_f","getConstructor","wrapper","NAME","ADDER","_t","_l","clear","r","p","v","has","get","def","setStrong","iterated","kind","_k","classof","getWeak","anObject","createArrayMethod","$has","arrayFind","arrayFindIndex","uncaughtFrozenStore","UncaughtFrozenStore","findUncaughtFrozen","store","splice","ufstore","$export","redefine","meta","fails","$iterDetect","setToStringTag","inheritIfRequired","methods","common","IS_WEAK","Base","proto","fixMethod","KEY","entries","instance","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","NEED","G","W","core","version","__e","$defineProperty","createDesc","getTime","Date","$toISOString","toISOString","lz","NaN","d","getUTCFullYear","getUTCMilliseconds","s","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","toPrimitive","NUMBER","hint","document","is","createElement","getKeys","gOPS","pIE","getSymbols","symbols","isEnum","hide","source","own","exp","IS_FORCED","IS_GLOBAL","IS_STATIC","IS_PROTO","P","IS_BIND","expProto","U","R","MATCH","re","exec","defined","wks","regexpExec","REPLACE_SUPPORTS_NAMED_GROUPS","groups","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","fns","nativeMethod","regexp","arg2","forceStringMethod","strfn","rxfn","RegExp","ignoreCase","multiline","sticky","IS_CONCAT_SPREADABLE","flattenIntoArray","sourceLen","depth","mapper","thisArg","element","spreadable","targetIndex","sourceIndex","mapFn","isArrayIter","getIterFn","BREAK","RETURN","iterFn","__g","documentElement","un","propertyIsEnumerable","Iterators","floor","isRegExp","descriptor","LIBRARY","$iterCreate","BUGGY","KEYS","VALUES","returnThis","DEFAULT","IS_SET","FORCED","getMethod","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","SAFE_CLOSING","riter","skipClosing","safe","$expm1","expm1","sign","EPSILON","EPSILON32","MAX32","MIN32","fround","$abs","$sign","log1p","log","scale","inLow","inHigh","outLow","outHigh","META","setDesc","isExtensible","FREEZE","preventExtensions","setMeta","w","onFreeze","Map","shared","getOrCreateMetadataMap","targetKey","targetMetadata","keyMetadata","MetadataKey","metadataMap","MetadataValue","_","macrotask","Observer","MutationObserver","WebKitMutationObserver","isNode","head","last","notify","flush","parent","exit","enter","nextTick","navigator","standalone","promise","toggle","node","createTextNode","observe","characterData","task","PromiseCapability","$$resolve","$$reject","$assign","assign","A","K","dPs","enumBugKeys","IE_PROTO","Empty","createDict","iframeDocument","iframe","style","display","contentWindow","open","lt","close","Properties","IE8_DOM_DEFINE","Attributes","defineProperties","random","__defineSetter__","gOPD","getOwnPropertyDescriptor","gOPN","windowNames","getOwnPropertyNames","getWindowNames","$keys","hiddenKeys","getOwnPropertySymbols","ObjectProto","names","isEntries","Reflect","ownKeys","$parseFloat","$trim","$parseInt","ws","hex","radix","newPromiseCapability","promiseCapability","bitmap","SRC","$toString","TO_STRING","TPL","isFunction","builtinExec","re1","re2","regexpFlags","nativeExec","nativeReplace","patchedExec","UPDATES_LAST_INDEX_WRONG","NPCG_INCLUDED","lastIndex","reCopy","regExp","replacer","part","COLLECTION","mapping","cb","nextItem","of","check","buggy","tag","stat","uid","SHARED","mode","copyright","D","toInteger","searchString","quot","createHTML","attribute","repeat","maxLength","fillString","left","stringLength","fillStr","intMaxLength","fillLen","stringFiller","ceil","spaces","space","ltrim","rtrim","exporter","ALIAS","FORCE","defer","channel","port","html","cel","setTask","setImmediate","clearTask","clearImmediate","MessageChannel","Dispatch","counter","queue","run","listener","event","now","port2","port1","onmessage","postMessage","addEventListener","importScripts","appendChild","removeChild","setTimeout","number","valueOf","$typed","$buffer","propertyDesc","toIndex","createArrayIncludes","ArrayIterators","arrayFill","arrayCopyWithin","$DP","$GOPD","ARRAY_BUFFER","SHARED_BUFFER","BYTES_PER_ELEMENT","$ArrayBuffer","$DataView","DataView","arrayForEach","arrayFilter","arraySome","arrayEvery","arrayIncludes","arrayValues","arrayKeys","arrayEntries","arrayLastIndexOf","arrayReduce","reduce","arrayReduceRight","reduceRight","arrayJoin","arraySort","sort","arrayToString","arrayToLocaleString","toLocaleString","TYPED_CONSTRUCTOR","DEF_CONSTRUCTOR","ALL_CONSTRUCTORS","CONSTR","TYPED_ARRAY","TYPED","VIEW","WRONG_LENGTH","$map","allocate","LITTLE_ENDIAN","Uint16Array","FORCED_SET","toOffset","BYTES","speciesFromList","fromList","addGetter","internal","_d","$from","mapfn","$of","TO_LOCALE_BUG","$toLocaleString","every","filter","find","predicate","findIndex","searchElement","separator","middle","some","comparefn","begin","$begin","$slice","$set","arrayLike","$iterators","isTAIndex","$getDesc","$setDesc","desc","$TypedArrayPrototype$","CLAMPED","GETTER","SETTER","TypedArray","TAC","ABV","TypedArrayPrototype","addElement","o","getter","setter","$offset","$length","klass","$len","$nativeIterator","CORRECT_ITER_NAME","$iterator","DATA_VIEW","WRONG_INDEX","BaseBuffer","LN2","BUFFER","BYTE_LENGTH","BYTE_OFFSET","$BUFFER","$LENGTH","$OFFSET","packIEEE754","mLen","nBytes","eLen","eMax","eBias","rt","unpackIEEE754","nBits","unpackI32","packI8","packI16","packI32","packF64","packF32","view","isLittleEndian","intIndex","_b","pack","conversion","ArrayBufferProto","$setInt8","setInt8","getInt8","setUint8","bufferLength","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","setInt16","setUint16","setInt32","setUint32","setFloat32","setFloat64","Typed","TypedArrayConstructors","px","userAgent","wksExt","USE_SYMBOL","$re","escape","$every","$filter","$find","forced","$forEach","STRICT","createProperty","$indexOf","NEGATIVE_ZERO","addToUnscopables","Arguments","$reduce","upTo","$some","$sort","pv","TO_PRIMITIVE","DateProto","INVALID_DATE","HAS_INSTANCE","FunctionProto","FProto","nameRE","strong","MAP","sqrt","$acosh","acosh","MAX_VALUE","$asinh","asinh","$atanh","atanh","cbrt","clz32","LOG2E","cosh","hypot","value1","value2","div","sum","larg","$imul","imul","UINT16","xn","yn","xl","yl","log10","LOG10E","log2","sinh","E","tanh","trunc","$Number","BROKEN_COF","TRIM","toNumber","argument","third","maxCode","first","digits","_isFinite","isInteger","isSafeInteger","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","parseFloat","aNumberValue","$toFixed","toFixed","ERROR","ZERO","multiply","c2","divide","numToString","t","acc","fractionDigits","z","x2","$fails","$toPrecision","toPrecision","$freeze","$getOwnPropertyDescriptor","$getPrototypeOf","$isExtensible","$isFrozen","$isSealed","$preventExtensions","$seal","Internal","newGenericPromiseCapability","OwnPromiseCapability","Wrapper","microtask","newPromiseCapabilityModule","perform","promiseResolve","PROMISE","versions","v8","$Promise","empty","USE_NATIVE","FakePromise","PromiseRejectionEvent","isThenable","isReject","_n","chain","_c","_v","ok","_s","reaction","exited","handler","fail","_h","onHandleUnhandled","onUnhandled","unhandled","isUnhandled","emit","onunhandledrejection","reason","onrejectionhandled","$reject","_w","$resolve","executor","onFulfilled","onRejected","capability","all","$index","alreadyCalled","race","rApply","fApply","thisArgument","argumentsList","L","rConstruct","NEW_TARGET_BUG","ARGS_BUG","Target","newTarget","$args","propertyKey","attributes","deleteProperty","Enumerate","enumerate","receiver","setProto","V","existingDescriptor","ownDesc","$flags","$RegExp","CORRECT_NEW","tiRE","piRE","fiU","proxy","flags","advanceStringIndex","regExpExec","$match","maybeCallNative","rx","fullUnicode","matchStr","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","REPLACE","$replace","searchValue","replaceValue","functionalReplace","results","accumulatedResult","nextSourcePosition","matched","position","captures","namedCaptures","replacerArgs","replacement","getSubstitution","tailPos","ch","capture","sameValue","SEARCH","$search","previousLastIndex","callRegExpExec","$min","$push","MAX_UINT32","SUPPORTS_Y","SPLIT","$split","internalSplit","lastLength","lastLastIndex","splitLimit","separatorCopy","splitter","unicodeMatching","lim","q","add","$at","codePointAt","ENDS_WITH","$endsWith","endsWith","endPosition","search","color","$fromCodePoint","fromCodePoint","INCLUDES","url","raw","callSite","tpl","STARTS_WITH","$startsWith","startsWith","wksDefine","enumKeys","_create","gOPNExt","$GOPS","$JSON","JSON","_stringify","stringify","HIDDEN","SymbolRegistry","AllSymbols","OPSymbols","QObject","findChild","setSymbolDesc","protoDesc","sym","isSymbol","$defineProperties","$propertyIsEnumerable","$getOwnPropertyNames","$getOwnPropertySymbols","IS_OP","es6Symbols","wellKnownSymbols","keyFor","useSetter","useSimple","FAILS_ON_PRIMITIVES","$replacer","$isView","fin","viewS","viewT","init","InternalMap","each","weak","NATIVE_WEAK_MAP","IS_IE11","ActiveXObject","WEAK_MAP","$WeakMap","WEAK_SET","arraySpeciesCreate","flatMap","flatten","depthArg","$includes","asap","isError","clamp","lower","upper","DEG_PER_RAD","RAD_PER_DEG","fscale","iaddh","x0","x1","y0","y1","$x0","$y0","imulh","u","$u","$v","u0","v0","u1","v1","isubh","signbit","umulh","__defineGetter__","getOwnPropertyDescriptors","getDesc","__lookupGetter__","__lookupSetter__","$values","OBSERVABLE","cleanupSubscription","subscription","cleanup","subscriptionClosed","_o","closeSubscription","Subscription","observer","subscriber","SubscriptionObserver","unsubscribe","$Observable","subscribe","observable","items","Observable","onFinally","metadata","toMetaKey","ordinaryDefineOwnMetadata","defineMetadata","metadataKey","metadataValue","deleteMetadata","Set","ordinaryOwnMetadataKeys","ordinaryMetadataKeys","oKeys","pKeys","getMetadataKeys","ordinaryHasOwnMetadata","ordinaryGetOwnMetadata","ordinaryGetMetadata","getMetadata","getOwnMetadataKeys","getOwnMetadata","ordinaryHasMetadata","hasMetadata","hasOwnMetadata","$metadata","getFlags","RegExpProto","$RegExpStringIterator","_r","matchAll","$pad","WEBKIT_BUG","TO_STRING_TAG","ArrayValues","DOMIterables","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","collections","explicit","Collection","$task","MSIE","time","boundArgs","setInterval","Emitter","mixin","on","_callbacks","once","off","removeListener","removeAllListeners","removeEventListener","callbacks","listeners","hasListeners","EventEmitter","_events","_maxListeners","isUndefined","defaultMaxListeners","setMaxListeners","er","addListener","newListener","warned","trace","fired","listenerCount","evlistener","emitter","isLE","DEFAULT_COMPARE","SplayTree","noDuplicates","_compare","_root","_size","_noDuplicates","prototypeAccessors","loadRecursive","right","pivot","rotateLeft","rotateRight","_splay","this$1","splay","gp","ggp","minNode","maxNode","insert","comp","cmp","contains","comparator","remove","removeNode","erase","sMax","returnValue","successor","predecessor","current","range","low","high","Q","load","presort","isEmpty","createTree","computeFields","operation","inOut","otherInOut","isSubject","isVertical","prevInResult","inResult","SweepEvent","otherEvent","edgeType","resultInOut","isExteriorRing","signedArea","p0","compareEvents","e1","e2","isBelow","specialCases","divideSegment","se","warn","contourId","crossProduct","dotProduct","possibleIntersection","se1","se2","inter","a1","a2","b1","b2","noEndpointTouch","va","vb","toPoint","kross","sqrKross","sqrLenA","sa","sb","smin","smax","intersection","nintersections","events","leftCoincide","rightCoincide","compareSegments","le1","le2","isAbove","nextPos","resultEvents","processed","origIndex","newPos","connectEdges","sortedEvents","sorted","orderEvents","contour","ringId","initial","clone","tinyqueue","TinyQueue","default_1","defaultCompare","_down","_up","top","peek","halfLength","best","default","processPolygon","contourOrHole","s1","s2","EMPTY","boolean","subject","clipping","trivial","trivialOperation","sbbox","cbbox","eventQueue","polygonSet","ii","jj","fillQueue","compareBBoxes","sweepLine","rightbound","prevEvent","prevprev","subdivide","operations","UNION","DIFFERENCE","INTERSECTION","XOR","diff","xor","factory","randomColor","seed","colorDictionary","defineColor","colorRanges","stringToInteger","H","totalColors","colors","hsv","format","HSVtoHSL","hsl","hslColor","alpha","HSVtoRGB","rgbColor","rgb","componentToHex","HSVtoHex","setFormat","pickHue","pickSaturation","pickBrightness","hue","randomWithin","hueRange","colorHue","getColorInfo","HexToHSB","getRealHueRange","colorInput","getHueRange","luminosity","saturationRange","getSaturationRange","sMin","bMin","lowerBounds","v2","getMinimumBrightness","bMax","colorName","rnd","brightnessRange","h","h_i","red","green","blue","cMax","delta","saturation","sax","parser","strict","opt","SAXParser","SAXStream","createStream","MAX_BUFFER_LENGTH","buffers","clearBuffers","bufferCheckPosition","lowercase","lowercasetags","looseCase","tags","closed","closedRoot","sawRoot","noscript","BEGIN","ENTITIES","attribList","xmlns","ns","rootNS","trackPosition","line","column","EVENTS","chunk","OPEN_WAKA","startTagPosition","not","whitespace","strictFail","textNode","TEXT","starti","substring","TEXT_ENTITY","SCRIPT","SCRIPT_ENDING","script","CLOSE_TAG","SGML_DECL","sgmlDecl","nameStart","OPEN_TAG","tagName","PROC_INST","procInstName","procInstBody","pad","toUpperCase","emitNode","CDATA","cdata","COMMENT","comment","DOCTYPE","doctype","quote","SGML_DECL_QUOTED","DOCTYPE_DTD","DOCTYPE_QUOTED","DOCTYPE_DTD_QUOTED","COMMENT_ENDING","COMMENT_ENDED","textopts","CDATA_ENDING","CDATA_ENDING_2","PROC_INST_ENDING","PROC_INST_BODY","body","nameBody","newTag","openTag","OPEN_TAG_SLASH","ATTRIB","closeTag","attribName","attribValue","ATTRIB_NAME","ATTRIB_VALUE","attrib","ATTRIB_NAME_SAW_WHITE","ATTRIB_VALUE_QUOTED","ATTRIB_VALUE_UNQUOTED","ATTRIB_VALUE_ENTITY_Q","ATTRIB_VALUE_CLOSED","attribEnd","ATTRIB_VALUE_ENTITY_U","CLOSE_TAG_SAW_WHITE","returnState","parseEntity","entity","maxAllowed","maxActual","closeText","checkBufferLength","resume","Stream","ex","streamWraps","ev","_parser","readable","me","onend","onerror","_decoder","SD","letter","XML_NAMESPACE","XMLNS_NAMESPACE","xml","charClass","charclass","stringFromCharCode","STATE","COMMENT_STARTING","nodeType","text","normalize","message","qname","qualName","prefix","local","qn","selfClosing","uri","nv","isSelfClosing","closeTo","entityLC","numStr","highSurrogate","lowSurrogate","MAX_SIZE","codeUnits","pipe","dest","ondata","pause","ondrain","_isStdio","onclose","didOnEnd","destroy","StringDecoder","nb","enc","nenc","retried","_normalizeEncoding","normalizeEncoding","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","byte","utf8CheckExtraBytes","utf8CheckIncomplete","copyProps","SafeBuffer","millisecond","second","minute","hour","day","ms","Every","reg","parse","do","interval","clearInterval","stripBOM","builder","defaults","escapeCDATA","requiresCDATA","wrapCDATA","hasProp","Builder","opts","ref","buildObject","rootObj","attrkey","charkey","render","rootElement","rootName","_this","attr","child","txt","ele","up","att","xmldec","headless","allowSurrogateChars","renderOpts","explicitCharkey","normalizeTags","explicitArray","ignoreAttrs","mergeAttrs","explicitRoot","validator","explicitChildren","childkey","charsAsChildren","includeWhiteChars","attrNameProcessors","attrValueProcessors","tagNameProcessors","valueProcessors","emptyTag","preserveChildrenOrder","chunkSize","bom","processItem","processors","thing","Parser","superClass","parseStringPromise","parseString","assignOrPush","processAsync","xmlnskey","unshift","__super__","extend","saxParser","error1","errThrown","newValue","ontext","stack","ended","resultObject","EXPLICIT_CHARKEY","onopentag","processedKey","onclosetag","emptyStr","nodeName","objClone","old","xpath","charChild","oncdata","prefixMatch","firstCharLowerCase","stripPrefix","parseNumbers","parseBooleans","ValidationError","Disconnected","Preceding","Following","Contains","ContainedBy","ImplementationSpecific","Element","Attribute","Text","CData","EntityReference","EntityDeclaration","ProcessingInstruction","Comment","Document","DocType","DocumentFragment","NotationDeclaration","Declaration","Raw","AttributeDeclaration","ElementDeclaration","Dummy","getValue","isPlainObject","sources","None","OpenTag","InsideTag","CloseTag","NodeType","XMLAttribute","debugInfo","attValue","isId","schemaTypeInfo","writer","filterOptions","isEqualNode","namespaceURI","localName","XMLCharacterData","XMLCData","XMLNode","substringData","appendData","insertData","deleteData","replaceData","XMLComment","XMLDOMErrorHandler","XMLDOMStringList","XMLDOMConfiguration","defaultParams","params","getParameter","canSetParameter","setParameter","handleError","XMLDOMImplementation","hasFeature","createDocumentType","qualifiedName","publicId","systemId","createDocument","createHTMLDocument","title","getFeature","XMLDTDAttList","elementName","attributeName","attributeType","defaultValueType","defaultValue","dtdAttType","dtdAttDefault","dtdAttList","XMLDTDElement","dtdElementValue","dtdElement","XMLDTDEntity","pe","pubID","sysID","dtdPubID","dtdSysID","nData","dtdNData","dtdEntityValue","dtdEntity","XMLDTDNotation","dtdNotation","XMLDeclaration","xmlVersion","xmlEncoding","xmlStandalone","declaration","XMLNamedNodeMap","XMLDocType","ref1","ref2","children","documentObject","nodes","attList","pEntity","notation","docType","ent","pent","root","XMLStringWriter","XMLStringifier","XMLDocument","documentURI","domConfig","rootObject","writerOptions","createDocumentFragment","createComment","createCDATASection","createProcessingInstruction","createAttribute","createEntityReference","getElementsByTagName","tagname","importNode","importedNode","deep","createElementNS","createAttributeNS","getElementsByTagNameNS","getElementById","elementId","adoptNode","normalizeDocument","renameNode","getElementsByClassName","classNames","createEvent","eventInterface","createRange","createNodeIterator","whatToShow","createTreeWalker","WriterState","XMLElement","XMLProcessingInstruction","XMLRaw","XMLText","XMLDocumentCB","onData","onEnd","onDataCallback","onEndCallback","currentNode","currentLevel","openTags","documentStarted","documentCompleted","createChildNode","attName","attribs","dummy","instruction","openCurrent","oldValidationFlag","noValidation","keepNullAttributes","insTarget","insValue","processingInstruction","rootNodeName","closeNode","openNode","isOpen","indent","endline","isClosed","level","nod","dat","com","ins","dec","dtd","XMLDummy","isRoot","attributeMap","clonedSelf","clonedChild","removeAttribute","getAttribute","setAttribute","getAttributeNode","setAttributeNode","newAttr","removeAttributeNode","oldAttr","getAttributeNS","setAttributeNS","removeAttributeNS","getAttributeNodeNS","setAttributeNodeNS","hasAttribute","hasAttributeNS","setIdAttribute","setIdAttributeNS","setIdAttributeNode","idAttr","getNamedItem","setNamedItem","oldNode","removeNamedItem","getNamedItemNS","setNamedItemNS","removeNamedItemNS","DocumentPosition","XMLNodeList","parent1","baseURI","childNodeList","textContent","setParent","childNode","lastChild","len1","ref3","ignoreDecorators","convertAttKey","separateArrayItems","keepNullNodes","convertTextKey","convertCDataKey","convertCommentKey","convertRawKey","convertPIKey","insertBefore","newChild","refChild","removed","insertAfter","commentBefore","commentAfter","instructionBefore","instructionAfter","doc","importDocument","clonedRoot","importXMLBuilder","replaceChild","oldChild","hasChildNodes","cloneNode","isSupported","hasAttributes","compareDocumentPosition","other","isAncestor","isDescendant","isPreceding","isSameNode","lookupPrefix","isDefaultNamespace","lookupNamespaceURI","setUserData","getUserData","nodePos","thisPos","treePosition","isFollowing","foreachTreeNode","func","XMLWriterBase","XMLStreamWriter","stream","isLastRootNode","writeChildNode","spaceBeforeSlash","childNodeCount","firstChildNode","allowEmpty","pretty","suppressPrettyCount","newline","assertLegalName","assertLegalChar","textEscape","attEscape","regex","ampregex","noDoubleEncoding","previousSibling","nextSibling","splitText","replaceWholeText","content","filteredOptions","ref4","ref5","ref6","dontPrettyTextNodes","dontprettytextnodes","spacebeforeslash","user","indentLevel","openAttribute","closeAttribute","prettySuppressed","stringWriter","streamWriter","implementation","writerState","SEC_TO_RAD","HALF_PI","EPSLN","D2R","R2D","FORTPI","TWO_PI","SPI","ft","to_meter","ignoredChar","testkey","lkey","defData","paramName","paramVal","paramOutname","paramObj","proj","datum","rf","lat_0","lat0","lat_1","lat1","lat_2","lat2","lat_ts","lon_0","long0","lon_1","long1","lon_2","long2","lonc","longc","x_0","y_0","k_0","k0","r_a","R_A","zone","south","utmSouth","towgs84","datum_params","unit","from_greenwich","pm","nadgrids","datumCode","axis","legalAxis","latin","keyword","endThings","digets","place","currentObject","mapit","newObj","sExpr","shift","convert","d2r","wkt","lisp","projName","PROJECTION","AXIS","axisOrder","UNIT","DATUM","SPHEROID","geogcs","GEOGCS","toMeter","sphere","ellps","TOWGS84","outName","inName","rename","cleanWKT","defs","EPSG","ESRI","IAU2000","readCharicter","char","neutral","quoted","afterquote","word","afterItem","newObjects","WGS84","GOOGLE","codeWords","codes","destination","property","eccent","sinphi","cosphi","con","phi","tan","ts","dphi","eccnth","atan","identity","pt","projs","es","cos","msfnz","forward","lon","lat","adjust_lon","tsfnz","inverse","phi2z","projStore","ellipseName","ellipse","datumName","Projection","srsCode","json","testObj","testDef","testWKT","auth","checkMercator","maybeProjStr","checkProjStr","testProj","parseCode","ourProj","projections","datumDef","sphere_","ecc","ep2","datumObj","datum_type","geodeticToGeocentric","Rn","Sin_Lat","Sin2_Lat","Cos_Lat","Longitude","Latitude","Height","geocentricToGeodetic","RR","CT","ST","RX","RK","RN","CPHI0","SPHI0","CPHI","SPHI","SDPHI","X","Y","Z","atan2","checkParams","crs","denorm","xin","yin","zin","checkCoord","transform","wgs84","checkSanity","checkNotWGS","adjust_axis","compareDatums","Dx_BF","Dy_BF","Dz_BF","Rx_BF","Ry_BF","Rz_BF","M_BF","geocentricToWgs84","x_tmp","y_tmp","z_tmp","geocentricFromWgs84","datum_transform","transformer","transformedArray","checkProj","oProj","fromProj","toProj","single","SET_ORIGIN_COLUMN_LETTERS","SET_ORIGIN_ROW_LETTERS","I","mgrs","UTMtoLL","decode","bottom","ll","accuracy","utm","row","colOrigin","rowOrigin","colInt","rowInt","rollover","easting","northing","setParm","seasting","snorthing","zoneNumber","zoneLetter","get100kSetForZone","encode","eccPrimeSquared","N","LongOriginRad","ZoneNumber","Lat","Long","eccSquared","LatRad","degToRad","LongRad","LetterDesignator","UTMEasting","UTMNorthing","LLtoUTM","deg","radToDeg","N1","T1","C1","R1","LongOrigin","mu","phi1Rad","topRight","mgrsString","testChar","hunK","east100k","curCol","eastingValue","rewindMarker","getEastingFromChar","north100k","curRow","northingValue","getNorthingFromChar","getMinNorthing","remainder","accuracyBonus","sepEastingString","sepNorthingString","sep","sepEasting","sepNorthing","Point","fromMGRS","mgrsStr","toMGRS","C04","C06","C08","en","sphi","cphi","pj_mlfn","pj_enfn","ml0","delta_lon","sin_phi","cos_phi","al","als","cs","tq","ml","acos","pj_inv_mlfn","tan_phi","ds","temp","asin","pp","cos_2B","h1","h2","arg_r","arg_i","hr2","hi2","sin_arg_r","cos_arg_r","sinh_arg_i","cosh_arg_i","hr","hi1","hr1","cgb","cbg","utg","gtu","np","Qn","gatg","Zb","clens","Ce","Cn","sin_Cn","cos_Cn","sin_Ce","cos_Ce","log1py","asinhy","clens_cmplx","adjust_zone","etmerc","dependsOn","esinp","rc","phic0","ratexp","srat","gauss","sinc0","cosc0","R2","sinc","cosc","cosl","rho","coslat0","sinlat0","cons","ms1","X0","ssfn_","cosX0","sinX0","sinX","cosX","rh","sinlat","coslat","dlon","ce","Chi","phit","eccen","phy0","lambda0","sinPhy0","semiMajorAxis","flattening","b0","k1","k2","k3","Sa1","Sa2","rotI","rotB","lambda","phy","prevPhy","iteration","no_off","no_rot","bl","fl","gl","t0","dl","t1","t2","hl","jl","pl","dlon12","dlon10","gamma0","uc","us","vs","ql","sl","tl","vl","ul","POSITIVE_INFINITY","qp","sp","tp","vp","sin1","cos1","ts1","sin2","cos2","ms2","ts2","ts0","f0","rh1","theta","s45","s90","fi0","alfa","uq","n0","s0","ro0","ad","gfi","deltav","eps","ro","czech","fi1","e0","e3","e0fn","e1fn","e2fn","e3fn","mlfn","lam","nl","gN","asq","cl","dd","phi1","imlfn","nl1","rl1","tl1","dsq","adjust_lat","S_POLE","N_POLE","EQUIT","OBLIQ","qsfnz","mmf","apa","APA","authset","rq","xmf","ymf","sinb1","cosb1","sinph0","cosph0","coslam","sinlam","sinb","cosb","cCe","sCe","ab","beta","cosz","sinz","sin_po","cos_po","qs1","qs2","t3","qs0","ns0","qs","phi1z","asinz","eccnts","sin_p14","cos_p14","infinity_dist","coslon","iqsfnz","dlat","tanphi","mln","mlnp","ma","B_re","B_im","C_re","C_im","delta_lat","d_phi","d_lambda","d_phi_n","d_psi","th_n_im1","th_re","th_im","th_n_re","th_n_im","z_re","z_im","z_n_im1","delta_x","z_n_re","z_n_im","iterations","num_re","num_im","den_re","den_im","den2","d_psi_n","C_y","C_x","delta_theta","ml1","ml2","sinth","costh","gsq","msq","xx","yy","xys","c1","c3","m1","th1","sin_p12","cos_p12","Mlp","Ml","Nl1","Nl","psi","Az","GH","Hs","kp","cos_c","s3","s4","cosAz","Ee","sinpsi","qsc_fwd_equat_face_theta","qsc_shift_lon_origin","slon","face","one_minus_f","one_minus_f_squared","xy","sinlon","nu","cosmu","tannu","tantheta","invert_sign","xa","lp","COEFS_X","COEFS_Y","FXC","FYC","poly3_val","coefs","NODES","f_df","max_err","iters","upd","newton_rapshon","poly3_der","azi","tilt","pn1","rp","pfact","omega","gamma","cg","sg","cw","sw","yt","ba","bm","bq","proj4","Proj","tmerc","sterea","stere","somerc","omerc","lcc","krovak","cass","laea","aea","gnom","cea","eqc","poly","nzmg","mill","sinu","moll","eqdc","vandg","aeqd","ortho","qsc","robin","geocent","tpers","Proj4Defs","asqr","bsqr","createEllipsoid","getProp","props","prop","exists","parseSequence","getColor","toRadians","angleInDegrees","toDegrees","angleInRadians","lon1","dByR","origin","distanceInMeters","radius","lambda1","DeltaPhi","phi2","DeltaPsi","calculateRhumbDestination","direction","zTranslation","mutate","pointCoords","newCoords","PROJECTION_AUTO_DETECT","CONVERT_SURFACES","CONVERT_PARCELS","CONVERT_PIPE_NETWORKS","converters","xmlObj","projection","originalPoints","originalParcels","$","pc","opc","CoordGeom","endCoord","origCoords","Line","oc","Start","pntRef","End","parameters","landxmlClass","class","landxmlState","landxmlParcelType","parcelType","landxmlType","surfacesContainerNodes","sc","attrs","baseProps","surfaceNodes","featureProps","description","colorOpts","surfaceFeatures","surface","boundaryNodes","boundary","seq","convertBoundaries","pointNodes","faceNodes","pointId","faces","pointIds","convertFaces","merged","pipeNetworksNodes","pn","pipeNetworkNodes","structs","localStructs","pipeNetwork","structNodes","centerNode","rectStructNode","circStructNode","inletStructNode","outletStructNode","connectionNode","structType","landxmlStruct","landxmlElevRim","elevRim","landxmlElevSump","elevSump","landxmlDiameter","diameter","landxmlThickness","thickness","landxmlLength","landxmlWidth","width","center","centerCoords","northEast","northWest","southWest","southEast","squareAround","numberOfSegments","flatCoordinates","circleToPolygon","convertStructs","pipes","pipeNodes","circPipeNode","stroke","refStart","refEnd","convertPipes","Converter","defaultOptions","enabledConverters","proj4Defs","featureMapper","parserOptions","configureProj4","convertToGeoJSON","getLandXMLProjection","newFeatures","additionalProj4Defs","manualProjection","findUTMProjection","utmProjection","__webpack_module_cache__","__webpack_require__","moduleId","loaded","__webpack_modules__","__esModule","definition","globalThis","nmd","paths"],"mappings":"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AAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,KACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,KACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,KACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,KACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,KACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,KACR,EAAQ,MACR,EAAQ,IACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,KACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,KACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,KACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,IACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,KACR,EAAQ,MACR,EAAQ,KACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,E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","file":"landxml.node.js","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar meta_1 = require(\"@turf/meta\");\n// Note: change RADIUS => earthRadius\nvar RADIUS = 6378137;\n/**\n * Takes one or more features and returns their area in square meters.\n *\n * @name area\n * @param {GeoJSON} geojson input GeoJSON feature(s)\n * @returns {number} area in square meters\n * @example\n * var polygon = turf.polygon([[[125, -15], [113, -22], [154, -27], [144, -15], [125, -15]]]);\n *\n * var area = turf.area(polygon);\n *\n * //addToMap\n * var addToMap = [polygon]\n * polygon.properties.area = area\n */\nfunction area(geojson) {\n return meta_1.geomReduce(geojson, function (value, geom) {\n return value + calculateArea(geom);\n }, 0);\n}\nexports.default = area;\n/**\n * Calculate Area\n *\n * @private\n * @param {Geometry} geom GeoJSON Geometries\n * @returns {number} area\n */\nfunction calculateArea(geom) {\n var total = 0;\n var i;\n switch (geom.type) {\n case \"Polygon\":\n return polygonArea(geom.coordinates);\n case \"MultiPolygon\":\n for (i = 0; i < geom.coordinates.length; i++) {\n total += polygonArea(geom.coordinates[i]);\n }\n return total;\n case \"Point\":\n case \"MultiPoint\":\n case \"LineString\":\n case \"MultiLineString\":\n return 0;\n }\n return 0;\n}\nfunction polygonArea(coords) {\n var total = 0;\n if (coords && coords.length > 0) {\n total += Math.abs(ringArea(coords[0]));\n for (var i = 1; i < coords.length; i++) {\n total -= Math.abs(ringArea(coords[i]));\n }\n }\n return total;\n}\n/**\n * @private\n * Calculate the approximate area of the polygon were it projected onto the earth.\n * Note that this area will be positive if ring is oriented clockwise, otherwise it will be negative.\n *\n * Reference:\n * Robert. G. Chamberlain and William H. Duquette, \"Some Algorithms for Polygons on a Sphere\",\n * JPL Publication 07-03, Jet Propulsion\n * Laboratory, Pasadena, CA, June 2007 http://trs-new.jpl.nasa.gov/dspace/handle/2014/40409\n *\n * @param {Array<Array<number>>} coords Ring Coordinates\n * @returns {number} The approximate signed geodesic area of the polygon in square meters.\n */\nfunction ringArea(coords) {\n var p1;\n var p2;\n var p3;\n var lowerIndex;\n var middleIndex;\n var upperIndex;\n var i;\n var total = 0;\n var coordsLength = coords.length;\n if (coordsLength > 2) {\n for (i = 0; i < coordsLength; i++) {\n if (i === coordsLength - 2) {\n lowerIndex = coordsLength - 2;\n middleIndex = coordsLength - 1;\n upperIndex = 0;\n }\n else if (i === coordsLength - 1) {\n lowerIndex = coordsLength - 1;\n middleIndex = 0;\n upperIndex = 1;\n }\n else {\n lowerIndex = i;\n middleIndex = i + 1;\n upperIndex = i + 2;\n }\n p1 = coords[lowerIndex];\n p2 = coords[middleIndex];\n p3 = coords[upperIndex];\n total += (rad(p3[0]) - rad(p1[0])) * Math.sin(rad(p2[1]));\n }\n total = total * RADIUS * RADIUS / 2;\n }\n return total;\n}\nfunction rad(num) {\n return num * Math.PI / 180;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Returns a cloned copy of the passed GeoJSON Object, including possible 'Foreign Members'.\n * ~3-5x faster than the common JSON.parse + JSON.stringify combo method.\n *\n * @name clone\n * @param {GeoJSON} geojson GeoJSON Object\n * @returns {GeoJSON} cloned GeoJSON Object\n * @example\n * var line = turf.lineString([[-74, 40], [-78, 42], [-82, 35]], {color: 'red'});\n *\n * var lineCloned = turf.clone(line);\n */\nfunction clone(geojson) {\n if (!geojson) {\n throw new Error(\"geojson is required\");\n }\n switch (geojson.type) {\n case \"Feature\":\n return cloneFeature(geojson);\n case \"FeatureCollection\":\n return cloneFeatureCollection(geojson);\n case \"Point\":\n case \"LineString\":\n case \"Polygon\":\n case \"MultiPoint\":\n case \"MultiLineString\":\n case \"MultiPolygon\":\n case \"GeometryCollection\":\n return cloneGeometry(geojson);\n default:\n throw new Error(\"unknown GeoJSON type\");\n }\n}\n/**\n * Clone Feature\n *\n * @private\n * @param {Feature<any>} geojson GeoJSON Feature\n * @returns {Feature<any>} cloned Feature\n */\nfunction cloneFeature(geojson) {\n var cloned = { type: \"Feature\" };\n // Preserve Foreign Members\n Object.keys(geojson).forEach(function (key) {\n switch (key) {\n case \"type\":\n case \"properties\":\n case \"geometry\":\n return;\n default:\n cloned[key] = geojson[key];\n }\n });\n // Add properties & geometry last\n cloned.properties = cloneProperties(geojson.properties);\n cloned.geometry = cloneGeometry(geojson.geometry);\n return cloned;\n}\n/**\n * Clone Properties\n *\n * @private\n * @param {Object} properties GeoJSON Properties\n * @returns {Object} cloned Properties\n */\nfunction cloneProperties(properties) {\n var cloned = {};\n if (!properties) {\n return cloned;\n }\n Object.keys(properties).forEach(function (key) {\n var value = properties[key];\n if (typeof value === \"object\") {\n if (value === null) {\n // handle null\n cloned[key] = null;\n }\n else if (Array.isArray(value)) {\n // handle Array\n cloned[key] = value.map(function (item) {\n return item;\n });\n }\n else {\n // handle generic Object\n cloned[key] = cloneProperties(value);\n }\n }\n else {\n cloned[key] = value;\n }\n });\n return cloned;\n}\n/**\n * Clone Feature Collection\n *\n * @private\n * @param {FeatureCollection<any>} geojson GeoJSON Feature Collection\n * @returns {FeatureCollection<any>} cloned Feature Collection\n */\nfunction cloneFeatureCollection(geojson) {\n var cloned = { type: \"FeatureCollection\" };\n // Preserve Foreign Members\n Object.keys(geojson).forEach(function (key) {\n switch (key) {\n case \"type\":\n case \"features\":\n return;\n default:\n cloned[key] = geojson[key];\n }\n });\n // Add features\n cloned.features = geojson.features.map(function (feature) {\n return cloneFeature(feature);\n });\n return cloned;\n}\n/**\n * Clone Geometry\n *\n * @private\n * @param {Geometry<any>} geometry GeoJSON Geometry\n * @returns {Geometry<any>} cloned Geometry\n */\nfunction cloneGeometry(geometry) {\n var geom = { type: geometry.type };\n if (geometry.bbox) {\n geom.bbox = geometry.bbox;\n }\n if (geometry.type === \"GeometryCollection\") {\n geom.geometries = geometry.geometries.map(function (g) {\n return cloneGeometry(g);\n });\n return geom;\n }\n geom.coordinates = deepSlice(geometry.coordinates);\n return geom;\n}\n/**\n * Deep Slice coordinates\n *\n * @private\n * @param {Coordinates} coords Coordinates\n * @returns {Coordinates} all coordinates sliced\n */\nfunction deepSlice(coords) {\n var cloned = coords;\n if (typeof cloned[0] !== \"object\") {\n return cloned.slice();\n }\n return cloned.map(function (coord) {\n return deepSlice(coord);\n });\n}\nexports.default = clone;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\nexports.earthRadius = 6371008.8;\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.factors = {\n centimeters: exports.earthRadius * 100,\n centimetres: exports.earthRadius * 100,\n degrees: exports.earthRadius / 111325,\n feet: exports.earthRadius * 3.28084,\n inches: exports.earthRadius * 39.370,\n kilometers: exports.earthRadius / 1000,\n kilometres: exports.earthRadius / 1000,\n meters: exports.earthRadius,\n metres: exports.earthRadius,\n miles: exports.earthRadius / 1609.344,\n millimeters: exports.earthRadius * 1000,\n millimetres: exports.earthRadius * 1000,\n nauticalmiles: exports.earthRadius / 1852,\n radians: 1,\n yards: exports.earthRadius / 1.0936,\n};\n/**\n * Units of measurement factors based on 1 meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.unitsFactors = {\n centimeters: 100,\n centimetres: 100,\n degrees: 1 / 111325,\n feet: 3.28084,\n inches: 39.370,\n kilometers: 1 / 1000,\n kilometres: 1 / 1000,\n meters: 1,\n metres: 1,\n miles: 1 / 1609.344,\n millimeters: 1000,\n millimetres: 1000,\n nauticalmiles: 1 / 1852,\n radians: 1 / exports.earthRadius,\n yards: 1 / 1.0936,\n};\n/**\n * Area of measurement factors based on 1 square meter.\n *\n * @memberof helpers\n * @type {Object}\n */\nexports.areaFactors = {\n acres: 0.000247105,\n centimeters: 10000,\n centimetres: 10000,\n feet: 10.763910417,\n inches: 1550.003100006,\n kilometers: 0.000001,\n kilometres: 0.000001,\n meters: 1,\n metres: 1,\n miles: 3.86e-7,\n millimeters: 1000000,\n millimetres: 1000000,\n yards: 1.195990046,\n};\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geom, properties, options) {\n if (options === void 0) { options = {}; }\n var feat = { type: \"Feature\" };\n if (options.id === 0 || options.id) {\n feat.id = options.id;\n }\n if (options.bbox) {\n feat.bbox = options.bbox;\n }\n feat.properties = properties || {};\n feat.geometry = geom;\n return feat;\n}\nexports.feature = feature;\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<any>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = \"Point\";\n * var coordinates = [110, 50];\n * var geometry = turf.geometry(type, coordinates);\n * // => geometry\n */\nfunction geometry(type, coordinates, options) {\n if (options === void 0) { options = {}; }\n switch (type) {\n case \"Point\": return point(coordinates).geometry;\n case \"LineString\": return lineString(coordinates).geometry;\n case \"Polygon\": return polygon(coordinates).geometry;\n case \"MultiPoint\": return multiPoint(coordinates).geometry;\n case \"MultiLineString\": return multiLineString(coordinates).geometry;\n case \"MultiPolygon\": return multiPolygon(coordinates).geometry;\n default: throw new Error(type + \" is invalid\");\n }\n}\nexports.geometry = geometry;\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n var geom = {\n type: \"Point\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\nexports.point = point;\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n * [-75, 39],\n * [-80, 45],\n * [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n return featureCollection(coordinates.map(function (coords) {\n return point(coords, properties);\n }), options);\n}\nexports.points = points;\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n for (var _i = 0, coordinates_1 = coordinates; _i < coordinates_1.length; _i++) {\n var ring = coordinates_1[_i];\n if (ring.length < 4) {\n throw new Error(\"Each LinearRing of a Polygon must have 4 or more Positions.\");\n }\n for (var j = 0; j < ring[ring.length - 1].length; j++) {\n // Check if first point of Polygon contains two numbers\n if (ring[ring.length - 1][j] !== ring[0][j]) {\n throw new Error(\"First and last Position are not equivalent.\");\n }\n }\n }\n var geom = {\n type: \"Polygon\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\nexports.polygon = polygon;\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n return featureCollection(coordinates.map(function (coords) {\n return polygon(coords, properties);\n }), options);\n}\nexports.polygons = polygons;\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n if (coordinates.length < 2) {\n throw new Error(\"coordinates must be an array of two or more positions\");\n }\n var geom = {\n type: \"LineString\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\nexports.lineString = lineString;\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north]\n * associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n return featureCollection(coordinates.map(function (coords) {\n return lineString(coords, properties);\n }), options);\n}\nexports.lineStrings = lineStrings;\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n * locationA,\n * locationB,\n * locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n if (options === void 0) { options = {}; }\n var fc = { type: \"FeatureCollection\" };\n if (options.id) {\n fc.id = options.id;\n }\n if (options.bbox) {\n fc.bbox = options.bbox;\n }\n fc.features = features;\n return fc;\n}\nexports.featureCollection = featureCollection;\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n var geom = {\n type: \"MultiLineString\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\nexports.multiLineString = multiLineString;\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n var geom = {\n type: \"MultiPoint\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\nexports.multiPoint = multiPoint;\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n if (options === void 0) { options = {}; }\n var geom = {\n type: \"MultiPolygon\",\n coordinates: coordinates,\n };\n return feature(geom, properties, options);\n}\nexports.multiPolygon = multiPolygon;\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = turf.geometry(\"Point\", [100, 0]);\n * var line = turf.geometry(\"LineString\", [[101, 0], [102, 1]]);\n * var collection = turf.geometryCollection([pt, line]);\n *\n * // => collection\n */\nfunction geometryCollection(geometries, properties, options) {\n if (options === void 0) { options = {}; }\n var geom = {\n type: \"GeometryCollection\",\n geometries: geometries,\n };\n return feature(geom, properties, options);\n}\nexports.geometryCollection = geometryCollection;\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n if (precision === void 0) { precision = 0; }\n if (precision && !(precision >= 0)) {\n throw new Error(\"precision must be a positive number\");\n }\n var multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\nexports.round = round;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, or kilometers inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n if (units === void 0) { units = \"kilometers\"; }\n var factor = exports.factors[units];\n if (!factor) {\n throw new Error(units + \" units is invalid\");\n }\n return radians * factor;\n}\nexports.radiansToLength = radiansToLength;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, or kilometers inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n if (units === void 0) { units = \"kilometers\"; }\n var factor = exports.factors[units];\n if (!factor) {\n throw new Error(units + \" units is invalid\");\n }\n return distance / factor;\n}\nexports.lengthToRadians = lengthToRadians;\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units=\"kilometers\"] can be degrees, radians, miles, or kilometers inches, yards, metres,\n * meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n return radiansToDegrees(lengthToRadians(distance, units));\n}\nexports.lengthToDegrees = lengthToDegrees;\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n var angle = bearing % 360;\n if (angle < 0) {\n angle += 360;\n }\n return angle;\n}\nexports.bearingToAzimuth = bearingToAzimuth;\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n var degrees = radians % (2 * Math.PI);\n return degrees * 180 / Math.PI;\n}\nexports.radiansToDegrees = radiansToDegrees;\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n var radians = degrees % 360;\n return radians * Math.PI / 180;\n}\nexports.degreesToRadians = degreesToRadians;\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {Units} [originalUnit=\"kilometers\"] of the length\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n if (originalUnit === void 0) { originalUnit = \"kilometers\"; }\n if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n if (!(length >= 0)) {\n throw new Error(\"length must be a positive number\");\n }\n return radiansToLength(lengthToRadians(length, originalUnit), finalUnit);\n}\nexports.convertLength = convertLength;\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches\n * @param {number} area to be converted\n * @param {Units} [originalUnit=\"meters\"] of the distance\n * @param {Units} [finalUnit=\"kilometers\"] returned unit\n * @returns {number} the converted distance\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n if (originalUnit === void 0) { originalUnit = \"meters\"; }\n if (finalUnit === void 0) { finalUnit = \"kilometers\"; }\n if (!(area >= 0)) {\n throw new Error(\"area must be a positive number\");\n }\n var startFactor = exports.areaFactors[originalUnit];\n if (!startFactor) {\n throw new Error(\"invalid original units\");\n }\n var finalFactor = exports.areaFactors[finalUnit];\n if (!finalFactor) {\n throw new Error(\"invalid final units\");\n }\n return (area / startFactor) * finalFactor;\n}\nexports.convertArea = convertArea;\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num) && !/^\\s*$/.test(num);\n}\nexports.isNumber = isNumber;\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n return (!!input) && (input.constructor === Object);\n}\nexports.isObject = isObject;\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n if (!bbox) {\n throw new Error(\"bbox is required\");\n }\n if (!Array.isArray(bbox)) {\n throw new Error(\"bbox must be an Array\");\n }\n if (bbox.length !== 4 && bbox.length !== 6) {\n throw new Error(\"bbox must be an Array of 4 or 6 numbers\");\n }\n bbox.forEach(function (num) {\n if (!isNumber(num)) {\n throw new Error(\"bbox must only contain numbers\");\n }\n });\n}\nexports.validateBBox = validateBBox;\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n if (!id) {\n throw new Error(\"id is required\");\n }\n if ([\"string\", \"number\"].indexOf(typeof id) === -1) {\n throw new Error(\"id must be a number or a string\");\n }\n}\nexports.validateId = validateId;\n// Deprecated methods\nfunction radians2degrees() {\n throw new Error(\"method has been renamed to `radiansToDegrees`\");\n}\nexports.radians2degrees = radians2degrees;\nfunction degrees2radians() {\n throw new Error(\"method has been renamed to `degreesToRadians`\");\n}\nexports.degrees2radians = degrees2radians;\nfunction distanceToDegrees() {\n throw new Error(\"method has been renamed to `lengthToDegrees`\");\n}\nexports.distanceToDegrees = distanceToDegrees;\nfunction distanceToRadians() {\n throw new Error(\"method has been renamed to `lengthToRadians`\");\n}\nexports.distanceToRadians = distanceToRadians;\nfunction radiansToDistance() {\n throw new Error(\"method has been renamed to `radiansToLength`\");\n}\nexports.radiansToDistance = radiansToDistance;\nfunction bearingToAngle() {\n throw new Error(\"method has been renamed to `bearingToAzimuth`\");\n}\nexports.bearingToAngle = bearingToAngle;\nfunction convertDistance() {\n throw new Error(\"method has been renamed to `convertLength`\");\n}\nexports.convertDistance = convertDistance;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar helpers = require('@turf/helpers');\n\n/**\n * Callback for coordEach\n *\n * @callback coordEachCallback\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()\n *\n * @name coordEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=currentCoord\n * //=coordIndex\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * });\n */\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n // Handles null Geometry -- Skips this GeoJSON\n if (geojson === null) return;\n var j, k, l, geometry, stopG, coords,\n geometryMaybeCollection,\n wrapShrink = 0,\n coordIndex = 0,\n isGeometryCollection,\n type = geojson.type,\n isFeatureCollection = type === 'FeatureCollection',\n isFeature = type === 'Feature',\n stop = isFeatureCollection ? geojson.features.length : 1;\n\n // This logic may look a little weird. The reason why it is that way\n // is because it's trying to be fast. GeoJSON supports multiple kinds\n // of objects at its root: FeatureCollection, Features, Geometries.\n // This function has the responsibility of handling all of them, and that\n // means that some of the `for` loops you see below actually just don't apply\n // to certain inputs. For instance, if you give this just a\n // Point geometry, then both loops are short-circuited and all we do\n // is gradually rename the input until it's called 'geometry'.\n //\n // This also aims to allocate as few resources as possible: just a\n // few numbers and booleans, rather than any temporary arrays as would\n // be required with the normalization approach.\n for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n geometryMaybeCollection = (isFeatureCollection ? geojson.features[featureIndex].geometry :\n (isFeature ? geojson.geometry : geojson));\n isGeometryCollection = (geometryMaybeCollection) ? geometryMaybeCollection.type === 'GeometryCollection' : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n\n for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n var multiFeatureIndex = 0;\n var geometryIndex = 0;\n geometry = isGeometryCollection ?\n geometryMaybeCollection.geometries[geomIndex] : geometryMaybeCollection;\n\n // Handles null Geometry -- Skips this geometry\n if (geometry === null) continue;\n coords = geometry.coordinates;\n var geomType = geometry.type;\n\n wrapShrink = (excludeWrapCoord && (geomType === 'Polygon' || geomType === 'MultiPolygon')) ? 1 : 0;\n\n switch (geomType) {\n case null:\n break;\n case 'Point':\n if (callback(coords, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n multiFeatureIndex++;\n break;\n case 'LineString':\n case 'MultiPoint':\n for (j = 0; j < coords.length; j++) {\n if (callback(coords[j], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n if (geomType === 'MultiPoint') multiFeatureIndex++;\n }\n if (geomType === 'LineString') multiFeatureIndex++;\n break;\n case 'Polygon':\n case 'MultiLineString':\n for (j = 0; j < coords.length; j++) {\n for (k = 0; k < coords[j].length - wrapShrink; k++) {\n if (callback(coords[j][k], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n }\n if (geomType === 'MultiLineString') multiFeatureIndex++;\n if (geomType === 'Polygon') geometryIndex++;\n }\n if (geomType === 'Polygon') multiFeatureIndex++;\n break;\n case 'MultiPolygon':\n for (j = 0; j < coords.length; j++) {\n geometryIndex = 0;\n for (k = 0; k < coords[j].length; k++) {\n for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n if (callback(coords[j][k][l], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n }\n geometryIndex++;\n }\n multiFeatureIndex++;\n }\n break;\n case 'GeometryCollection':\n for (j = 0; j < geometry.geometries.length; j++)\n if (coordEach(geometry.geometries[j], callback, excludeWrapCoord) === false) return false;\n break;\n default:\n throw new Error('Unknown Geometry Type');\n }\n }\n }\n}\n\n/**\n * Callback for coordReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback coordReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Reduce coordinates in any GeoJSON object, similar to Array.reduce()\n *\n * @name coordReduce\n * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=previousValue\n * //=currentCoord\n * //=coordIndex\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * return currentCoord;\n * });\n */\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n var previousValue = initialValue;\n coordEach(geojson, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n if (coordIndex === 0 && initialValue === undefined) previousValue = currentCoord;\n else previousValue = callback(previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex);\n }, excludeWrapCoord);\n return previousValue;\n}\n\n/**\n * Callback for propEach\n *\n * @callback propEachCallback\n * @param {Object} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over properties in any GeoJSON object, similar to Array.forEach()\n *\n * @name propEach\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentProperties, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propEach(features, function (currentProperties, featureIndex) {\n * //=currentProperties\n * //=featureIndex\n * });\n */\nfunction propEach(geojson, callback) {\n var i;\n switch (geojson.type) {\n case 'FeatureCollection':\n for (i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i].properties, i) === false) break;\n }\n break;\n case 'Feature':\n callback(geojson.properties, 0);\n break;\n }\n}\n\n\n/**\n * Callback for propReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback propReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {*} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce properties in any GeoJSON object into a single value,\n * similar to how Array.reduce works. However, in this case we lazily run\n * the reduction, so an array of all properties is unnecessary.\n *\n * @name propReduce\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {\n * //=previousValue\n * //=currentProperties\n * //=featureIndex\n * return currentProperties\n * });\n */\nfunction propReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n propEach(geojson, function (currentProperties, featureIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentProperties;\n else previousValue = callback(previousValue, currentProperties, featureIndex);\n });\n return previousValue;\n}\n\n/**\n * Callback for featureEach\n *\n * @callback featureEachCallback\n * @param {Feature<any>} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name featureEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.featureEach(features, function (currentFeature, featureIndex) {\n * //=currentFeature\n * //=featureIndex\n * });\n */\nfunction featureEach(geojson, callback) {\n if (geojson.type === 'Feature') {\n callback(geojson, 0);\n } else if (geojson.type === 'FeatureCollection') {\n for (var i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i], i) === false) break;\n }\n }\n}\n\n/**\n * Callback for featureReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback featureReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name featureReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {\n * //=previousValue\n * //=currentFeature\n * //=featureIndex\n * return currentFeature\n * });\n */\nfunction featureReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n featureEach(geojson, function (currentFeature, featureIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentFeature;\n else previousValue = callback(previousValue, currentFeature, featureIndex);\n });\n return previousValue;\n}\n\n/**\n * Get all coordinates from any GeoJSON object.\n *\n * @name coordAll\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @returns {Array<Array<number>>} coordinate position array\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * var coords = turf.coordAll(features);\n * //= [[26, 37], [36, 53]]\n */\nfunction coordAll(geojson) {\n var coords = [];\n coordEach(geojson, function (coord) {\n coords.push(coord);\n });\n return coords;\n}\n\n/**\n * Callback for geomEach\n *\n * @callback geomEachCallback\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Iterate over each geometry in any GeoJSON object, similar to Array.forEach()\n *\n * @name geomEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n * //=currentGeometry\n * //=featureIndex\n * //=featureProperties\n * //=featureBBox\n * //=featureId\n * });\n */\nfunction geomEach(geojson, callback) {\n var i, j, g, geometry, stopG,\n geometryMaybeCollection,\n isGeometryCollection,\n featureProperties,\n featureBBox,\n featureId,\n featureIndex = 0,\n isFeatureCollection = geojson.type === 'FeatureCollection',\n isFeature = geojson.type === 'Feature',\n stop = isFeatureCollection ? geojson.features.length : 1;\n\n // This logic may look a little weird. The reason why it is that way\n // is because it's trying to be fast. GeoJSON supports multiple kinds\n // of objects at its root: FeatureCollection, Features, Geometries.\n // This function has the responsibility of handling all of them, and that\n // means that some of the `for` loops you see below actually just don't apply\n // to certain inputs. For instance, if you give this just a\n // Point geometry, then both loops are short-circuited and all we do\n // is gradually rename the input until it's called 'geometry'.\n //\n // This also aims to allocate as few resources as possible: just a\n // few numbers and booleans, rather than any temporary arrays as would\n // be required with the normalization approach.\n for (i = 0; i < stop; i++) {\n\n geometryMaybeCollection = (isFeatureCollection ? geojson.features[i].geometry :\n (isFeature ? geojson.geometry : geojson));\n featureProperties = (isFeatureCollection ? geojson.features[i].properties :\n (isFeature ? geojson.properties : {}));\n featureBBox = (isFeatureCollection ? geojson.features[i].bbox :\n (isFeature ? geojson.bbox : undefined));\n featureId = (isFeatureCollection ? geojson.features[i].id :\n (isFeature ? geojson.id : undefined));\n isGeometryCollection = (geometryMaybeCollection) ? geometryMaybeCollection.type === 'GeometryCollection' : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n\n for (g = 0; g < stopG; g++) {\n geometry = isGeometryCollection ?\n geometryMaybeCollection.geometries[g] : geometryMaybeCollection;\n\n // Handle null Geometry\n if (geometry === null) {\n if (callback(null, featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n continue;\n }\n switch (geometry.type) {\n case 'Point':\n case 'LineString':\n case 'MultiPoint':\n case 'Polygon':\n case 'MultiLineString':\n case 'MultiPolygon': {\n if (callback(geometry, featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n break;\n }\n case 'GeometryCollection': {\n for (j = 0; j < geometry.geometries.length; j++) {\n if (callback(geometry.geometries[j], featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n }\n break;\n }\n default:\n throw new Error('Unknown Geometry Type');\n }\n }\n // Only increase `featureIndex` per each feature\n featureIndex++;\n }\n}\n\n/**\n * Callback for geomReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback geomReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Reduce geometry in any GeoJSON object, similar to Array.reduce().\n *\n * @name geomReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n * //=previousValue\n * //=currentGeometry\n * //=featureIndex\n * //=featureProperties\n * //=featureBBox\n * //=featureId\n * return currentGeometry\n * });\n */\nfunction geomReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n geomEach(geojson, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentGeometry;\n else previousValue = callback(previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId);\n });\n return previousValue;\n}\n\n/**\n * Callback for flattenEach\n *\n * @callback flattenEachCallback\n * @param {Feature} currentFeature The current flattened feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Iterate over flattened features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name flattenEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex)\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {\n * //=currentFeature\n * //=featureIndex\n * //=multiFeatureIndex\n * });\n */\nfunction flattenEach(geojson, callback) {\n geomEach(geojson, function (geometry, featureIndex, properties, bbox, id) {\n // Callback for single geometry\n var type = (geometry === null) ? null : geometry.type;\n switch (type) {\n case null:\n case 'Point':\n case 'LineString':\n case 'Polygon':\n if (callback(helpers.feature(geometry, properties, {bbox: bbox, id: id}), featureIndex, 0) === false) return false;\n return;\n }\n\n var geomType;\n\n // Callback for multi-geometry\n switch (type) {\n case 'MultiPoint':\n geomType = 'Point';\n break;\n case 'MultiLineString':\n geomType = 'LineString';\n break;\n case 'MultiPolygon':\n geomType = 'Polygon';\n break;\n }\n\n for (var multiFeatureIndex = 0; multiFeatureIndex < geometry.coordinates.length; multiFeatureIndex++) {\n var coordinate = geometry.coordinates[multiFeatureIndex];\n var geom = {\n type: geomType,\n coordinates: coordinate\n };\n if (callback(helpers.feature(geom, properties), featureIndex, multiFeatureIndex) === false) return false;\n }\n });\n}\n\n/**\n * Callback for flattenReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback flattenReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Reduce flattened features in any GeoJSON object, similar to Array.reduce().\n *\n * @name flattenReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) {\n * //=previousValue\n * //=currentFeature\n * //=featureIndex\n * //=multiFeatureIndex\n * return currentFeature\n * });\n */\nfunction flattenReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n flattenEach(geojson, function (currentFeature, featureIndex, multiFeatureIndex) {\n if (featureIndex === 0 && multiFeatureIndex === 0 && initialValue === undefined) previousValue = currentFeature;\n else previousValue = callback(previousValue, currentFeature, featureIndex, multiFeatureIndex);\n });\n return previousValue;\n}\n\n/**\n * Callback for segmentEach\n *\n * @callback segmentEachCallback\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n * @returns {void}\n */\n\n/**\n * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex)\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n * //=currentSegment\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * //=segmentIndex\n * });\n *\n * // Calculate the total number of segments\n * var total = 0;\n * turf.segmentEach(polygon, function () {\n * total++;\n * });\n */\nfunction segmentEach(geojson, callback) {\n flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n var segmentIndex = 0;\n\n // Exclude null Geometries\n if (!feature.geometry) return;\n // (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n var type = feature.geometry.type;\n if (type === 'Point' || type === 'MultiPoint') return;\n\n // Generate 2-vertex line segments\n var previousCoords;\n var previousFeatureIndex = 0;\n var previousMultiIndex = 0;\n var prevGeomIndex = 0;\n if (coordEach(feature, function (currentCoord, coordIndex, featureIndexCoord, multiPartIndexCoord, geometryIndex) {\n // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false`\n if (previousCoords === undefined || featureIndex > previousFeatureIndex || multiPartIndexCoord > previousMultiIndex || geometryIndex > prevGeomIndex) {\n previousCoords = currentCoord;\n previousFeatureIndex = featureIndex;\n previousMultiIndex = multiPartIndexCoord;\n prevGeomIndex = geometryIndex;\n segmentIndex = 0;\n return;\n }\n var currentSegment = helpers.lineString([previousCoords, currentCoord], feature.properties);\n if (callback(currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) === false) return false;\n segmentIndex++;\n previousCoords = currentCoord;\n }) === false) return false;\n });\n}\n\n/**\n * Callback for segmentReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback segmentReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n */\n\n/**\n * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n * //= previousSegment\n * //= currentSegment\n * //= featureIndex\n * //= multiFeatureIndex\n * //= geometryIndex\n * //= segmentInex\n * return currentSegment\n * });\n *\n * // Calculate the total number of segments\n * var initialValue = 0\n * var total = turf.segmentReduce(polygon, function (previousValue) {\n * previousValue++;\n * return previousValue;\n * }, initialValue);\n */\nfunction segmentReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n var started = false;\n segmentEach(geojson, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n if (started === false && initialValue === undefined) previousValue = currentSegment;\n else previousValue = callback(previousValue, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex);\n started = true;\n });\n return previousValue;\n}\n\n/**\n * Callback for lineEach\n *\n * @callback lineEachCallback\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries,\n * similar to Array.forEach.\n *\n * @name lineEach\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @example\n * var multiLine = turf.multiLineString([\n * [[26, 37], [35, 45]],\n * [[36, 53], [38, 50], [41, 55]]\n * ]);\n *\n * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=currentLine\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * });\n */\nfunction lineEach(geojson, callback) {\n // validation\n if (!geojson) throw new Error('geojson is required');\n\n flattenEach(geojson, function (feature, featureIndex, multiFeatureIndex) {\n if (feature.geometry === null) return;\n var type = feature.geometry.type;\n var coords = feature.geometry.coordinates;\n switch (type) {\n case 'LineString':\n if (callback(feature, featureIndex, multiFeatureIndex, 0, 0) === false) return false;\n break;\n case 'Polygon':\n for (var geometryIndex = 0; geometryIndex < coords.length; geometryIndex++) {\n if (callback(helpers.lineString(coords[geometryIndex], feature.properties), featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n }\n break;\n }\n });\n}\n\n/**\n * Callback for lineReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback lineReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed.\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name lineReduce\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var multiPoly = turf.multiPolygon([\n * turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]),\n * turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]])\n * ]);\n *\n * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=previousValue\n * //=currentLine\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * return currentLine\n * });\n */\nfunction lineReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n lineEach(geojson, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentLine;\n else previousValue = callback(previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex);\n });\n return previousValue;\n}\n\n/**\n * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n * Point & MultiPoint will always return null.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.segmentIndex=0] Segment Index\n * @param {Object} [options.properties={}] Translate Properties to output LineString\n * @param {BBox} [options.bbox={}] Translate BBox to output LineString\n * @param {number|string} [options.id={}] Translate Id to output LineString\n * @returns {Feature<LineString>} 2-vertex GeoJSON Feature LineString\n * @example\n * var multiLine = turf.multiLineString([\n * [[10, 10], [50, 30], [30, 40]],\n * [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findSegment(multiLine);\n * // => Feature<LineString<[[10, 10], [50, 30]]>>\n *\n * // First Segment of 2nd Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: 1});\n * // => Feature<LineString<[[-10, -10], [-50, -30]]>>\n *\n * // Last Segment of Last Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1});\n * // => Feature<LineString<[[-50, -30], [-30, -40]]>>\n */\nfunction findSegment(geojson, options) {\n // Optional Parameters\n options = options || {};\n if (!helpers.isObject(options)) throw new Error('options is invalid');\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var segmentIndex = options.segmentIndex || 0;\n\n // Find FeatureIndex\n var properties = options.properties;\n var geometry;\n\n switch (geojson.type) {\n case 'FeatureCollection':\n if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case 'Feature':\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case 'Point':\n case 'MultiPoint':\n return null;\n case 'LineString':\n case 'Polygon':\n case 'MultiLineString':\n case 'MultiPolygon':\n geometry = geojson;\n break;\n default:\n throw new Error('geojson is invalid');\n }\n\n // Find SegmentIndex\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case 'Point':\n case 'MultiPoint':\n return null;\n case 'LineString':\n if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n return helpers.lineString([coords[segmentIndex], coords[segmentIndex + 1]], properties, options);\n case 'Polygon':\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (segmentIndex < 0) segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n return helpers.lineString([coords[geometryIndex][segmentIndex], coords[geometryIndex][segmentIndex + 1]], properties, options);\n case 'MultiLineString':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n return helpers.lineString([coords[multiFeatureIndex][segmentIndex], coords[multiFeatureIndex][segmentIndex + 1]], properties, options);\n case 'MultiPolygon':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n return helpers.lineString([coords[multiFeatureIndex][geometryIndex][segmentIndex], coords[multiFeatureIndex][geometryIndex][segmentIndex + 1]], properties, options);\n }\n throw new Error('geojson is invalid');\n}\n\n/**\n * Finds a particular Point from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.coordIndex=0] Coord Index\n * @param {Object} [options.properties={}] Translate Properties to output Point\n * @param {BBox} [options.bbox={}] Translate BBox to output Point\n * @param {number|string} [options.id={}] Translate Id to output Point\n * @returns {Feature<Point>} 2-vertex GeoJSON Feature Point\n * @example\n * var multiLine = turf.multiLineString([\n * [[10, 10], [50, 30], [30, 40]],\n * [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findPoint(multiLine);\n * // => Feature<Point<[10, 10]>>\n *\n * // First Segment of the 2nd Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: 1});\n * // => Feature<Point<[-10, -10]>>\n *\n * // Last Segment of last Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1});\n * // => Feature<Point<[-30, -40]>>\n */\nfunction findPoint(geojson, options) {\n // Optional Parameters\n options = options || {};\n if (!helpers.isObject(options)) throw new Error('options is invalid');\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var coordIndex = options.coordIndex || 0;\n\n // Find FeatureIndex\n var properties = options.properties;\n var geometry;\n\n switch (geojson.type) {\n case 'FeatureCollection':\n if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case 'Feature':\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case 'Point':\n case 'MultiPoint':\n return null;\n case 'LineString':\n case 'Polygon':\n case 'MultiLineString':\n case 'MultiPolygon':\n geometry = geojson;\n break;\n default:\n throw new Error('geojson is invalid');\n }\n\n // Find Coord Index\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case 'Point':\n return helpers.point(coords, properties, options);\n case 'MultiPoint':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n return helpers.point(coords[multiFeatureIndex], properties, options);\n case 'LineString':\n if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n return helpers.point(coords[coordIndex], properties, options);\n case 'Polygon':\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (coordIndex < 0) coordIndex = coords[geometryIndex].length + coordIndex;\n return helpers.point(coords[geometryIndex][coordIndex], properties, options);\n case 'MultiLineString':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (coordIndex < 0) coordIndex = coords[multiFeatureIndex].length + coordIndex;\n return helpers.point(coords[multiFeatureIndex][coordIndex], properties, options);\n case 'MultiPolygon':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (coordIndex < 0) coordIndex = coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n return helpers.point(coords[multiFeatureIndex][geometryIndex][coordIndex], properties, options);\n }\n throw new Error('geojson is invalid');\n}\n\nexports.coordEach = coordEach;\nexports.coordReduce = coordReduce;\nexports.propEach = propEach;\nexports.propReduce = propReduce;\nexports.featureEach = featureEach;\nexports.featureReduce = featureReduce;\nexports.coordAll = coordAll;\nexports.geomEach = geomEach;\nexports.geomReduce = geomReduce;\nexports.flattenEach = flattenEach;\nexports.flattenReduce = flattenReduce;\nexports.segmentEach = segmentEach;\nexports.segmentReduce = segmentReduce;\nexports.lineEach = lineEach;\nexports.lineReduce = lineReduce;\nexports.findSegment = findSegment;\nexports.findPoint = findPoint;\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar martinez = require(\"martinez-polygon-clipping\");\r\nvar invariant_1 = require(\"@turf/invariant\");\r\nvar helpers_1 = require(\"@turf/helpers\");\r\n/**\r\n * Takes two {@link (Multi)Polygon(s)} and returns a combined polygon. If the input polygons are not contiguous, this function returns a {@link MultiPolygon} feature.\r\n *\r\n * @name union\r\n * @param {Feature<Polygon|MultiPolygon>} polygon1 input Polygon feature\r\n * @param {Feature<Polygon|MultiPolygon>} polygon2 Polygon feature to difference from polygon1\r\n * @param {Object} [options={}] Optional Parameters\r\n * @param {Object} [options.properties={}] Translate Properties to output Feature\r\n * @returns {Feature<(Polygon|MultiPolygon)>} a combined {@link Polygon} or {@link MultiPolygon} feature\r\n * @example\r\n * var poly1 = turf.polygon([[\r\n * [-82.574787, 35.594087],\r\n * [-82.574787, 35.615581],\r\n * [-82.545261, 35.615581],\r\n * [-82.545261, 35.594087],\r\n * [-82.574787, 35.594087]\r\n * ]], {\"fill\": \"#0f0\"});\r\n * var poly2 = turf.polygon([[\r\n * [-82.560024, 35.585153],\r\n * [-82.560024, 35.602602],\r\n * [-82.52964, 35.602602],\r\n * [-82.52964, 35.585153],\r\n * [-82.560024, 35.585153]\r\n * ]], {\"fill\": \"#00f\"});\r\n *\r\n * var union = turf.union(poly1, poly2);\r\n *\r\n * //addToMap\r\n * var addToMap = [poly1, poly2, union];\r\n */\r\nfunction union(polygon1, polygon2, options) {\r\n if (options === void 0) { options = {}; }\r\n var coords1 = invariant_1.getGeom(polygon1).coordinates;\r\n var coords2 = invariant_1.getGeom(polygon2).coordinates;\r\n var unioned = martinez.union(coords1, coords2);\r\n if (unioned.length === 0)\r\n return null;\r\n if (unioned.length === 1)\r\n return helpers_1.polygon(unioned[0], options.properties);\r\n else\r\n return helpers_1.multiPolygon(unioned, options.properties);\r\n}\r\nexports.default = union;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar helpers_1 = require(\"@turf/helpers\");\r\n/**\r\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\r\n *\r\n * @name getCoord\r\n * @param {Array<number>|Geometry<Point>|Feature<Point>} coord GeoJSON Point or an Array of numbers\r\n * @returns {Array<number>} coordinates\r\n * @example\r\n * var pt = turf.point([10, 10]);\r\n *\r\n * var coord = turf.getCoord(pt);\r\n * //= [10, 10]\r\n */\r\nfunction getCoord(coord) {\r\n if (!coord) {\r\n throw new Error(\"coord is required\");\r\n }\r\n if (!Array.isArray(coord)) {\r\n if (coord.type === \"Feature\" && coord.geometry !== null && coord.geometry.type === \"Point\") {\r\n return coord.geometry.coordinates;\r\n }\r\n if (coord.type === \"Point\") {\r\n return coord.coordinates;\r\n }\r\n }\r\n if (Array.isArray(coord) && coord.length >= 2 && !Array.isArray(coord[0]) && !Array.isArray(coord[1])) {\r\n return coord;\r\n }\r\n throw new Error(\"coord must be GeoJSON Point or an Array of numbers\");\r\n}\r\nexports.getCoord = getCoord;\r\n/**\r\n * Unwrap coordinates from a Feature, Geometry Object or an Array\r\n *\r\n * @name getCoords\r\n * @param {Array<any>|Geometry|Feature} coords Feature, Geometry Object or an Array\r\n * @returns {Array<any>} coordinates\r\n * @example\r\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\r\n *\r\n * var coords = turf.getCoords(poly);\r\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\r\n */\r\nfunction getCoords(coords) {\r\n if (Array.isArray(coords)) {\r\n return coords;\r\n }\r\n // Feature\r\n if (coords.type === \"Feature\") {\r\n if (coords.geometry !== null) {\r\n return coords.geometry.coordinates;\r\n }\r\n }\r\n else {\r\n // Geometry\r\n if (coords.coordinates) {\r\n return coords.coordinates;\r\n }\r\n }\r\n throw new Error(\"coords must be GeoJSON Feature, Geometry Object or an Array\");\r\n}\r\nexports.getCoords = getCoords;\r\n/**\r\n * Checks if coordinates contains a number\r\n *\r\n * @name containsNumber\r\n * @param {Array<any>} coordinates GeoJSON Coordinates\r\n * @returns {boolean} true if Array contains a number\r\n */\r\nfunction containsNumber(coordinates) {\r\n if (coordinates.length > 1 && helpers_1.isNumber(coordinates[0]) && helpers_1.isNumber(coordinates[1])) {\r\n return true;\r\n }\r\n if (Array.isArray(coordinates[0]) && coordinates[0].length) {\r\n return containsNumber(coordinates[0]);\r\n }\r\n throw new Error(\"coordinates must only contain numbers\");\r\n}\r\nexports.containsNumber = containsNumber;\r\n/**\r\n * Enforce expectations about types of GeoJSON objects for Turf.\r\n *\r\n * @name geojsonType\r\n * @param {GeoJSON} value any GeoJSON object\r\n * @param {string} type expected GeoJSON type\r\n * @param {string} name name of calling function\r\n * @throws {Error} if value is not the expected type.\r\n */\r\nfunction geojsonType(value, type, name) {\r\n if (!type || !name) {\r\n throw new Error(\"type and name required\");\r\n }\r\n if (!value || value.type !== type) {\r\n throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + value.type);\r\n }\r\n}\r\nexports.geojsonType = geojsonType;\r\n/**\r\n * Enforce expectations about types of {@link Feature} inputs for Turf.\r\n * Internally this uses {@link geojsonType} to judge geometry types.\r\n *\r\n * @name featureOf\r\n * @param {Feature} feature a feature with an expected geometry type\r\n * @param {string} type expected GeoJSON type\r\n * @param {string} name name of calling function\r\n * @throws {Error} error if value is not the expected type.\r\n */\r\nfunction featureOf(feature, type, name) {\r\n if (!feature) {\r\n throw new Error(\"No feature passed\");\r\n }\r\n if (!name) {\r\n throw new Error(\".featureOf() requires a name\");\r\n }\r\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\r\n throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\r\n }\r\n if (!feature.geometry || feature.geometry.type !== type) {\r\n throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + feature.geometry.type);\r\n }\r\n}\r\nexports.featureOf = featureOf;\r\n/**\r\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\r\n * Internally this uses {@link geojsonType} to judge geometry types.\r\n *\r\n * @name collectionOf\r\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\r\n * @param {string} type expected GeoJSON type\r\n * @param {string} name name of calling function\r\n * @throws {Error} if value is not the expected type.\r\n */\r\nfunction collectionOf(featureCollection, type, name) {\r\n if (!featureCollection) {\r\n throw new Error(\"No featureCollection passed\");\r\n }\r\n if (!name) {\r\n throw new Error(\".collectionOf() requires a name\");\r\n }\r\n if (!featureCollection || featureCollection.type !== \"FeatureCollection\") {\r\n throw new Error(\"Invalid input to \" + name + \", FeatureCollection required\");\r\n }\r\n for (var _i = 0, _a = featureCollection.features; _i < _a.length; _i++) {\r\n var feature = _a[_i];\r\n if (!feature || feature.type !== \"Feature\" || !feature.geometry) {\r\n throw new Error(\"Invalid input to \" + name + \", Feature with geometry required\");\r\n }\r\n if (!feature.geometry || feature.geometry.type !== type) {\r\n throw new Error(\"Invalid input to \" + name + \": must be a \" + type + \", given \" + feature.geometry.type);\r\n }\r\n }\r\n}\r\nexports.collectionOf = collectionOf;\r\n/**\r\n * Get Geometry from Feature or Geometry Object\r\n *\r\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\r\n * @returns {Geometry|null} GeoJSON Geometry Object\r\n * @throws {Error} if geojson is not a Feature or Geometry Object\r\n * @example\r\n * var point = {\r\n * \"type\": \"Feature\",\r\n * \"properties\": {},\r\n * \"geometry\": {\r\n * \"type\": \"Point\",\r\n * \"coordinates\": [110, 40]\r\n * }\r\n * }\r\n * var geom = turf.getGeom(point)\r\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\r\n */\r\nfunction getGeom(geojson) {\r\n if (geojson.type === \"Feature\") {\r\n return geojson.geometry;\r\n }\r\n return geojson;\r\n}\r\nexports.getGeom = getGeom;\r\n/**\r\n * Get GeoJSON object's type, Geometry type is prioritize.\r\n *\r\n * @param {GeoJSON} geojson GeoJSON object\r\n * @param {string} [name=\"geojson\"] name of the variable to display in error message\r\n * @returns {string} GeoJSON type\r\n * @example\r\n * var point = {\r\n * \"type\": \"Feature\",\r\n * \"properties\": {},\r\n * \"geometry\": {\r\n * \"type\": \"Point\",\r\n * \"coordinates\": [110, 40]\r\n * }\r\n * }\r\n * var geom = turf.getType(point)\r\n * //=\"Point\"\r\n */\r\nfunction getType(geojson, name) {\r\n if (geojson.type === \"FeatureCollection\") {\r\n return \"FeatureCollection\";\r\n }\r\n if (geojson.type === \"GeometryCollection\") {\r\n return \"GeometryCollection\";\r\n }\r\n if (geojson.type === \"Feature\" && geojson.geometry !== null) {\r\n return geojson.geometry.type;\r\n }\r\n return geojson.type;\r\n}\r\nexports.getType = getType;\r\n","\"use strict\";\n\nrequire(\"core-js/shim\");\n\nrequire(\"regenerator-runtime/runtime\");\n\nrequire(\"core-js/fn/regexp/escape\");\n\nif (global._babelPolyfill) {\n throw new Error(\"only one instance of babel-polyfill is allowed\");\n}\nglobal._babelPolyfill = true;\n\nvar DEFINE_PROPERTY = \"defineProperty\";\nfunction define(O, key, value) {\n O[key] || Object[DEFINE_PROPERTY](O, key, {\n writable: true,\n configurable: true,\n value: value\n });\n}\n\ndefine(String.prototype, \"padLeft\", \"\".padStart);\ndefine(String.prototype, \"padRight\", \"\".padEnd);\n\n\"pop,reverse,shift,keys,values,entries,indexOf,every,some,forEach,map,filter,find,findIndex,includes,join,slice,concat,push,splice,unshift,sort,lastIndexOf,reduce,reduceRight,copyWithin,fill\".split(\",\").forEach(function (key) {\n [][key] && define(Array, key, Function.call.bind([][key]));\n});","/**\n * Copyright (c) 2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * https://raw.github.com/facebook/regenerator/master/LICENSE file. An\n * additional grant of patent rights can be found in the PATENTS file in\n * the same directory.\n */\n\n!(function(global) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration. If the Promise is rejected, however, the\n // result for this iteration will be rejected with the same\n // reason. Note that rejections of yielded Promises are not\n // thrown back into the generator function, as is the case\n // when an awaited Promise is rejected. This difference in\n // behavior between yield and await is important, because it\n // allows the consumer to decide what to do with the yielded\n // rejection (swallow it and continue, manually .throw it back\n // into the generator, abandon iteration, whatever). With\n // await, by contrast, there is no opportunity to examine the\n // rejection reason outside the generator function, so the\n // only option is to throw it from the await expression, and\n // let the generator function handle the exception.\n result.value = unwrapped;\n resolve(result);\n }, reject);\n }\n }\n\n if (typeof global.process === \"object\" && global.process.domain) {\n invoke = global.process.domain.bind(invoke);\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // Among the various tricks for obtaining a reference to the global\n // object, this seems to be the most reliable technique that does not\n // use indirect eval (which violates Content Security Policy).\n typeof global === \"object\" ? global :\n typeof window === \"object\" ? window :\n typeof self === \"object\" ? self : this\n);\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('Invalid typed array length')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n buf.__proto__ = Buffer.prototype\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\n// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\nif (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true,\n enumerable: false,\n writable: false\n })\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (isArrayBuffer(value)) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n return fromObject(value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nBuffer.prototype.__proto__ = Uint8Array.prototype\nBuffer.__proto__ = Uint8Array\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n buf.__proto__ = Buffer.prototype\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj) {\n if (isArrayBufferView(obj) || 'length' in obj) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (isArrayBufferView(string) || isArrayBuffer(string)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n newBuf.__proto__ = Buffer.prototype\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : new Buffer(val, encoding)\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffers from another context (i.e. an iframe) do not pass the `instanceof` check\n// but they should be treated as valid. See: https://github.com/feross/buffer/issues/166\nfunction isArrayBuffer (obj) {\n return obj instanceof ArrayBuffer ||\n (obj != null && obj.constructor != null && obj.constructor.name === 'ArrayBuffer' &&\n typeof obj.byteLength === 'number')\n}\n\n// Node 0.10 supports `ArrayBuffer` but lacks `ArrayBuffer.isView`\nfunction isArrayBufferView (obj) {\n return (typeof ArrayBuffer.isView === 'function') && ArrayBuffer.isView(obj)\n}\n\nfunction numberIsNaN (obj) {\n return obj !== obj // eslint-disable-line no-self-compare\n}\n","require('../../modules/core.regexp.escape');\nmodule.exports = require('../../modules/_core').RegExp.escape;\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","var cof = require('./_cof');\nmodule.exports = function (it, msg) {\n if (typeof it != 'number' && cof(it) != 'Number') throw TypeError(msg);\n return +it;\n};\n","// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n ArrayProto[UNSCOPABLES][key] = true;\n};\n","'use strict';\nvar at = require('./_string-at')(true);\n\n // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? at(S, index).length : 1);\n};\n","module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\n\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = Math.min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var aLen = arguments.length;\n var index = toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length);\n var end = aLen > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","var forOf = require('./_for-of');\n\nmodule.exports = function (iter, ITERATOR) {\n var result = [];\n forOf(iter, false, result.push, result, ITERATOR);\n return result;\n};\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($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++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n","var aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar toLength = require('./_to-length');\n\nmodule.exports = function (that, callbackfn, aLen, memo, isRight) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IObject(O);\n var length = toLength(O.length);\n var index = isRight ? length - 1 : 0;\n var i = isRight ? -1 : 1;\n if (aLen < 2) for (;;) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (isRight ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;isRight ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n};\n","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n","'use strict';\nvar aFunction = require('./_a-function');\nvar isObject = require('./_is-object');\nvar invoke = require('./_invoke');\nvar arraySlice = [].slice;\nvar factories = {};\n\nvar construct = function (F, len, args) {\n if (!(len in factories)) {\n for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func\n factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = arraySlice.call(arguments, 1);\n var bound = function (/* args... */) {\n var args = partArgs.concat(arraySlice.call(arguments));\n return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n };\n if (isObject(fn.prototype)) bound.prototype = fn.prototype;\n return bound;\n};\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(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 (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","'use strict';\nvar dP = require('./_object-dp').f;\nvar create = require('./_object-create');\nvar redefineAll = require('./_redefine-all');\nvar ctx = require('./_ctx');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar $iterDefine = require('./_iter-define');\nvar step = require('./_iter-step');\nvar setSpecies = require('./_set-species');\nvar DESCRIPTORS = require('./_descriptors');\nvar fastKey = require('./_meta').fastKey;\nvar validate = require('./_validate-collection');\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return that._i[index];\n // frozen object case\n for (entry = that._f; entry; entry = entry.n) {\n if (entry.k == key) return entry;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = create(null); // index\n that._f = undefined; // first entry\n that._l = undefined; // last entry\n that[SIZE] = 0; // size\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n entry.r = true;\n if (entry.p) entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n that[SIZE] = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = validate(this, NAME);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.n;\n var prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if (prev) prev.n = next;\n if (next) next.p = prev;\n if (that._f == entry) that._f = next;\n if (that._l == entry) that._l = prev;\n that[SIZE]--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n validate(this, NAME);\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.n : this._f) {\n f(entry.v, entry.k, this);\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(validate(this, NAME), key);\n }\n });\n if (DESCRIPTORS) dP(C.prototype, 'size', {\n get: function () {\n return validate(this, NAME)[SIZE];\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var entry = getEntry(that, key);\n var prev, index;\n // change existing entry\n if (entry) {\n entry.v = value;\n // create new entry\n } else {\n that._l = entry = {\n i: index = fastKey(key, true), // <- index\n k: key, // <- key\n v: value, // <- value\n p: prev = that._l, // <- previous entry\n n: undefined, // <- next entry\n r: false // <- removed\n };\n if (!that._f) that._f = entry;\n if (prev) prev.n = entry;\n that[SIZE]++;\n // add to index\n if (index !== 'F') that._i[index] = entry;\n } return that;\n },\n getEntry: getEntry,\n setStrong: function (C, NAME, IS_MAP) {\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n $iterDefine(C, NAME, function (iterated, kind) {\n this._t = validate(iterated, NAME); // target\n this._k = kind; // kind\n this._l = undefined; // previous\n }, function () {\n var that = this;\n var kind = that._k;\n var entry = that._l;\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n // get next entry\n if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n // or finish the iteration\n that._t = undefined;\n return step(1);\n }\n // return step by kind\n if (kind == 'keys') return step(0, entry.k);\n if (kind == 'values') return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(NAME);\n }\n};\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar classof = require('./_classof');\nvar from = require('./_array-from-iterable');\nmodule.exports = function (NAME) {\n return function toJSON() {\n if (classof(this) != NAME) throw TypeError(NAME + \"#toJSON isn't generic\");\n return from(this);\n };\n};\n","'use strict';\nvar redefineAll = require('./_redefine-all');\nvar getWeak = require('./_meta').getWeak;\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar createArrayMethod = require('./_array-methods');\nvar $has = require('./_has');\nvar validate = require('./_validate-collection');\nvar arrayFind = createArrayMethod(5);\nvar arrayFindIndex = createArrayMethod(6);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (that) {\n return that._l || (that._l = new UncaughtFrozenStore());\n};\nvar UncaughtFrozenStore = function () {\n this.a = [];\n};\nvar findUncaughtFrozen = function (store, key) {\n return arrayFind(store.a, function (it) {\n return it[0] === key;\n });\n};\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.a.push([key, value]);\n },\n 'delete': function (key) {\n var index = arrayFindIndex(this.a, function (it) {\n return it[0] === key;\n });\n if (~index) this.a.splice(index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = id++; // collection id\n that._l = undefined; // leak store for uncaught frozen objects\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.3.3.2 WeakMap.prototype.delete(key)\n // 23.4.3.3 WeakSet.prototype.delete(value)\n 'delete': function (key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);\n return data && $has(data, this._i) && delete data[this._i];\n },\n // 23.3.3.4 WeakMap.prototype.has(key)\n // 23.4.3.4 WeakSet.prototype.has(value)\n has: function has(key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);\n return data && $has(data, this._i);\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var data = getWeak(anObject(key), true);\n if (data === true) uncaughtFrozenStore(that).set(key, value);\n else data[that._i] = value;\n return that;\n },\n ufstore: uncaughtFrozenStore\n};\n","'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar redefineAll = require('./_redefine-all');\nvar meta = require('./_meta');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar $iterDetect = require('./_iter-detect');\nvar setToStringTag = require('./_set-to-string-tag');\nvar inheritIfRequired = require('./_inherit-if-required');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n var Base = global[NAME];\n var C = Base;\n var ADDER = IS_MAP ? 'set' : 'add';\n var proto = C && C.prototype;\n var O = {};\n var fixMethod = function (KEY) {\n var fn = proto[KEY];\n redefine(proto, KEY,\n KEY == 'delete' ? function (a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'has' ? function has(a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'get' ? function get(a) {\n return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }\n : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }\n );\n };\n if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n new C().entries().next();\n }))) {\n // create collection constructor\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n meta.NEED = true;\n } else {\n var instance = new C();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new C();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n if (!ACCEPT_ITERABLES) {\n C = wrapper(function (target, iterable) {\n anInstance(target, C, NAME);\n var that = inheritIfRequired(new Base(), target, C);\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n return that;\n });\n C.prototype = proto;\n proto.constructor = C;\n }\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n // weak collections should not contains .clear method\n if (IS_WEAK && proto.clear) delete proto.clear;\n }\n\n setToStringTag(C, NAME);\n\n O[NAME] = C;\n $export($export.G + $export.W + $export.F * (C != Base), O);\n\n if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n return C;\n};\n","var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","'use strict';\n// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()\nvar fails = require('./_fails');\nvar getTime = Date.prototype.getTime;\nvar $toISOString = Date.prototype.toISOString;\n\nvar lz = function (num) {\n return num > 9 ? num : '0' + num;\n};\n\n// PhantomJS / old WebKit has a broken implementations\nmodule.exports = (fails(function () {\n return $toISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z';\n}) || !fails(function () {\n $toISOString.call(new Date(NaN));\n})) ? function toISOString() {\n if (!isFinite(getTime.call(this))) throw RangeError('Invalid time value');\n var d = this;\n var y = d.getUTCFullYear();\n var m = d.getUTCMilliseconds();\n var s = y < 0 ? '-' : y > 9999 ? '+' : '';\n return s + ('00000' + Math.abs(y)).slice(s ? -6 : -4) +\n '-' + lz(d.getUTCMonth() + 1) + '-' + lz(d.getUTCDate()) +\n 'T' + lz(d.getUTCHours()) + ':' + lz(d.getUTCMinutes()) +\n ':' + lz(d.getUTCSeconds()) + '.' + (m > 99 ? m : '0' + lz(m)) + 'Z';\n} : $toISOString;\n","'use strict';\nvar anObject = require('./_an-object');\nvar toPrimitive = require('./_to-primitive');\nvar NUMBER = 'number';\n\nmodule.exports = function (hint) {\n if (hint !== 'string' && hint !== NUMBER && hint !== 'default') throw TypeError('Incorrect hint');\n return toPrimitive(anObject(this), hint != NUMBER);\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","var MATCH = require('./_wks')('match');\nmodule.exports = function (KEY) {\n var re = /./;\n try {\n '/./'[KEY](re);\n } catch (e) {\n try {\n re[MATCH] = false;\n return !'/./'[KEY](re);\n } catch (f) { /* empty */ }\n } return true;\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","'use strict';\nrequire('./es6.regexp.exec');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar wks = require('./_wks');\nvar regexpExec = require('./_regexp-exec');\n\nvar SPECIES = wks('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, '$<a>') !== '7';\n});\n\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {\n // Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\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) {\n var SYMBOL = wks(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 re.exec = function () { execCalled = true; return null; };\n if (KEY === 'split') {\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 }\n re[SYMBOL]('');\n return !execCalled;\n }) : undefined;\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var fns = exec(\n defined,\n SYMBOL,\n ''[KEY],\n function maybeCallNative(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 );\n var strfn = fns[0];\n var rxfn = fns[1];\n\n redefine(String.prototype, KEY, strfn);\n hide(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 rxfn.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 rxfn.call(string, this); }\n );\n }\n};\n","'use strict';\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = require('./_an-object');\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.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","'use strict';\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar isArray = require('./_is-array');\nvar isObject = require('./_is-object');\nvar toLength = require('./_to-length');\nvar ctx = require('./_ctx');\nvar IS_CONCAT_SPREADABLE = require('./_wks')('isConcatSpreadable');\n\nfunction flattenIntoArray(target, original, source, sourceLen, start, depth, mapper, thisArg) {\n var targetIndex = start;\n var sourceIndex = 0;\n var mapFn = mapper ? ctx(mapper, thisArg, 3) : false;\n var element, spreadable;\n\n while (sourceIndex < sourceLen) {\n if (sourceIndex in source) {\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n spreadable = false;\n if (isObject(element)) {\n spreadable = element[IS_CONCAT_SPREADABLE];\n spreadable = spreadable !== undefined ? !!spreadable : isArray(element);\n }\n\n if (spreadable && depth > 0) {\n targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1;\n } else {\n if (targetIndex >= 0x1fffffffffffff) throw TypeError();\n target[targetIndex] = element;\n }\n\n targetIndex++;\n }\n sourceIndex++;\n }\n return targetIndex;\n}\n\nmodule.exports = flattenIntoArray;\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","module.exports = require('./_shared')('native-function-to-string', Function.toString);\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar setPrototypeOf = require('./_set-proto').set;\nmodule.exports = function (that, target, C) {\n var S = target.constructor;\n var P;\n if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n setPrototypeOf(that, P);\n } return that;\n};\n","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","// 20.1.2.3 Number.isInteger(number)\nvar isObject = require('./_is-object');\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","// 7.2.8 IsRegExp(argument)\nvar isObject = require('./_is-object');\nvar cof = require('./_cof');\nvar MATCH = require('./_wks')('match');\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","module.exports = {};\n","module.exports = false;\n","// 20.2.2.14 Math.expm1(x)\nvar $expm1 = Math.expm1;\nmodule.exports = (!$expm1\n // Old FF bug\n || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168\n // Tor Browser bug\n || $expm1(-2e-17) != -2e-17\n) ? function expm1(x) {\n return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1;\n} : $expm1;\n","// 20.2.2.16 Math.fround(x)\nvar sign = require('./_math-sign');\nvar pow = Math.pow;\nvar EPSILON = pow(2, -52);\nvar EPSILON32 = pow(2, -23);\nvar MAX32 = pow(2, 127) * (2 - EPSILON32);\nvar MIN32 = pow(2, -126);\n\nvar roundTiesToEven = function (n) {\n return n + 1 / EPSILON - 1 / EPSILON;\n};\n\nmodule.exports = Math.fround || function fround(x) {\n var $abs = Math.abs(x);\n var $sign = sign(x);\n var a, result;\n if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;\n a = (1 + EPSILON32 / EPSILON) * $abs;\n result = a - (a - $abs);\n // eslint-disable-next-line no-self-compare\n if (result > MAX32 || result != result) return $sign * Infinity;\n return $sign * result;\n};\n","// 20.2.2.20 Math.log1p(x)\nmodule.exports = Math.log1p || function log1p(x) {\n return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x);\n};\n","// https://rwaldron.github.io/proposal-math-extensions/\nmodule.exports = Math.scale || function scale(x, inLow, inHigh, outLow, outHigh) {\n if (\n arguments.length === 0\n // eslint-disable-next-line no-self-compare\n || x != x\n // eslint-disable-next-line no-self-compare\n || inLow != inLow\n // eslint-disable-next-line no-self-compare\n || inHigh != inHigh\n // eslint-disable-next-line no-self-compare\n || outLow != outLow\n // eslint-disable-next-line no-self-compare\n || outHigh != outHigh\n ) return NaN;\n if (x === Infinity || x === -Infinity) return x;\n return (x - inLow) * (outHigh - outLow) / (inHigh - inLow) + outLow;\n};\n","// 20.2.2.28 Math.sign(x)\nmodule.exports = Math.sign || function sign(x) {\n // eslint-disable-next-line no-self-compare\n return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\n};\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","var Map = require('./es6.map');\nvar $export = require('./_export');\nvar shared = require('./_shared')('metadata');\nvar store = shared.store || (shared.store = new (require('./es6.weak-map'))());\n\nvar getOrCreateMetadataMap = function (target, targetKey, create) {\n var targetMetadata = store.get(target);\n if (!targetMetadata) {\n if (!create) return undefined;\n store.set(target, targetMetadata = new Map());\n }\n var keyMetadata = targetMetadata.get(targetKey);\n if (!keyMetadata) {\n if (!create) return undefined;\n targetMetadata.set(targetKey, keyMetadata = new Map());\n } return keyMetadata;\n};\nvar ordinaryHasOwnMetadata = function (MetadataKey, O, P) {\n var metadataMap = getOrCreateMetadataMap(O, P, false);\n return metadataMap === undefined ? false : metadataMap.has(MetadataKey);\n};\nvar ordinaryGetOwnMetadata = function (MetadataKey, O, P) {\n var metadataMap = getOrCreateMetadataMap(O, P, false);\n return metadataMap === undefined ? undefined : metadataMap.get(MetadataKey);\n};\nvar ordinaryDefineOwnMetadata = function (MetadataKey, MetadataValue, O, P) {\n getOrCreateMetadataMap(O, P, true).set(MetadataKey, MetadataValue);\n};\nvar ordinaryOwnMetadataKeys = function (target, targetKey) {\n var metadataMap = getOrCreateMetadataMap(target, targetKey, false);\n var keys = [];\n if (metadataMap) metadataMap.forEach(function (_, key) { keys.push(key); });\n return keys;\n};\nvar toMetaKey = function (it) {\n return it === undefined || typeof it == 'symbol' ? it : String(it);\n};\nvar exp = function (O) {\n $export($export.S, 'Reflect', O);\n};\n\nmodule.exports = {\n store: store,\n map: getOrCreateMetadataMap,\n has: ordinaryHasOwnMetadata,\n get: ordinaryGetOwnMetadata,\n set: ordinaryDefineOwnMetadata,\n keys: ordinaryOwnMetadataKeys,\n key: toMetaKey,\n exp: exp\n};\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n var promise = Promise.resolve(undefined);\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* 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 dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","'use strict';\n// Forced replacement prototype accessors methods\nmodule.exports = require('./_library') || !require('./_fails')(function () {\n var K = Math.random();\n // In FF throws only define methods\n // eslint-disable-next-line no-undef, no-useless-call\n __defineSetter__.call(null, K, function () { /* empty */ });\n delete require('./_global')[K];\n});\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","exports.f = Object.getOwnPropertySymbols;\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) 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 ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","exports.f = {}.propertyIsEnumerable;\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","var DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || isEnum.call(O, key)) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n","// all object keys, includes non-enumerable and symbols\nvar gOPN = require('./_object-gopn');\nvar gOPS = require('./_object-gops');\nvar anObject = require('./_an-object');\nvar Reflect = require('./_global').Reflect;\nmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {\n var keys = gOPN.f(anObject(it));\n var getSymbols = gOPS.f;\n return getSymbols ? keys.concat(getSymbols(it)) : keys;\n};\n","var $parseFloat = require('./_global').parseFloat;\nvar $trim = require('./_string-trim').trim;\n\nmodule.exports = 1 / $parseFloat(require('./_string-ws') + '-0') !== -Infinity ? function parseFloat(str) {\n var string = $trim(String(str), 3);\n var result = $parseFloat(string);\n return result === 0 && string.charAt(0) == '-' ? -0 : result;\n} : $parseFloat;\n","var $parseInt = require('./_global').parseInt;\nvar $trim = require('./_string-trim').trim;\nvar ws = require('./_string-ws');\nvar hex = /^[-+]?0[xX]/;\n\nmodule.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix) {\n var string = $trim(String(str), 3);\n return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));\n} : $parseInt;\n","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\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 redefine = require('./_redefine');\nmodule.exports = function (target, src, safe) {\n for (var key in src) redefine(target, key, src[key], safe);\n return target;\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar $toString = require('./_function-to-string');\nvar TO_STRING = 'toString';\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","'use strict';\n\nvar classof = require('./_classof');\nvar builtinExec = RegExp.prototype.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 new TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n if (classof(R) !== 'RegExp') {\n throw new TypeError('RegExp#exec called on incompatible receiver');\n }\n return builtinExec.call(R, S);\n};\n","'use strict';\n\nvar regexpFlags = require('./_flags');\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 LAST_INDEX = 'lastIndex';\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/,\n re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;\n})();\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;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];\n\n match = nativeExec.call(re, str);\n\n if (UPDATES_LAST_INDEX_WRONG && match) {\n re[LAST_INDEX] = 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 // eslint-disable-next-line no-loop-func\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","module.exports = function (regExp, replace) {\n var replacer = replace === Object(replace) ? function (part) {\n return replace[part];\n } : replace;\n return function (it) {\n return String(it).replace(regExp, replacer);\n };\n};\n","// 7.2.9 SameValue(x, y)\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar ctx = require('./_ctx');\nvar forOf = require('./_for-of');\n\nmodule.exports = function (COLLECTION) {\n $export($export.S, COLLECTION, { from: function from(source /* , mapFn, thisArg */) {\n var mapFn = arguments[1];\n var mapping, A, n, cb;\n aFunction(this);\n mapping = mapFn !== undefined;\n if (mapping) aFunction(mapFn);\n if (source == undefined) return new this();\n A = [];\n if (mapping) {\n n = 0;\n cb = ctx(mapFn, arguments[2], 2);\n forOf(source, false, function (nextItem) {\n A.push(cb(nextItem, n++));\n });\n } else {\n forOf(source, false, A.push, A);\n }\n return new this(A);\n } });\n};\n","'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = require('./_export');\n\nmodule.exports = function (COLLECTION) {\n $export($export.S, COLLECTION, { of: function of() {\n var length = arguments.length;\n var A = new Array(length);\n while (length--) A[length] = arguments[length];\n return new this(A);\n } });\n};\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","'use strict';\nvar global = require('./_global');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n","'use strict';\nvar fails = require('./_fails');\n\nmodule.exports = function (method, arg) {\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call\n arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n });\n};\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = require('./_is-regexp');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, searchString, NAME) {\n if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n return String(defined(that));\n};\n","var $export = require('./_export');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar quot = /\"/g;\n// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\nvar createHTML = function (string, tag, attribute, value) {\n var S = String(defined(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '"') + '\"';\n return p1 + '>' + S + '</' + tag + '>';\n};\nmodule.exports = function (NAME, exec) {\n var O = {};\n O[NAME] = exec(createHTML);\n $export($export.P + $export.F * fails(function () {\n var test = ''[NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n }), 'String', O);\n};\n","// https://github.com/tc39/proposal-string-pad-start-end\nvar toLength = require('./_to-length');\nvar repeat = require('./_string-repeat');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, maxLength, fillString, left) {\n var S = String(defined(that));\n var stringLength = S.length;\n var fillStr = fillString === undefined ? ' ' : String(fillString);\n var intMaxLength = toLength(maxLength);\n if (intMaxLength <= stringLength || fillStr == '') return S;\n var fillLen = intMaxLength - stringLength;\n var stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));\n if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);\n return left ? stringFiller + S : S + stringFiller;\n};\n","'use strict';\nvar toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n\nmodule.exports = function repeat(count) {\n var str = String(defined(this));\n var res = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError(\"Count can't be negative\");\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) res += str;\n return res;\n};\n","var $export = require('./_export');\nvar defined = require('./_defined');\nvar fails = require('./_fails');\nvar spaces = require('./_string-ws');\nvar space = '[' + spaces + ']';\nvar non = '\\u200b\\u0085';\nvar ltrim = RegExp('^' + space + space + '*');\nvar rtrim = RegExp(space + space + '*$');\n\nvar exporter = function (KEY, exec, ALIAS) {\n var exp = {};\n var FORCE = fails(function () {\n return !!spaces[KEY]() || non[KEY]() != non;\n });\n var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];\n if (ALIAS) exp[ALIAS] = fn;\n $export($export.P + $export.F * FORCE, 'String', exp);\n};\n\n// 1 -> String#trimLeft\n// 2 -> String#trimRight\n// 3 -> String#trim\nvar trim = exporter.trim = function (string, TYPE) {\n string = String(defined(string));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n};\n\nmodule.exports = exporter;\n","module.exports = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003' +\n '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (require('./_cof')(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","// https://tc39.github.io/ecma262/#sec-toindex\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toInteger(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length!');\n return length;\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\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 (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\nif (require('./_descriptors')) {\n var LIBRARY = require('./_library');\n var global = require('./_global');\n var fails = require('./_fails');\n var $export = require('./_export');\n var $typed = require('./_typed');\n var $buffer = require('./_typed-buffer');\n var ctx = require('./_ctx');\n var anInstance = require('./_an-instance');\n var propertyDesc = require('./_property-desc');\n var hide = require('./_hide');\n var redefineAll = require('./_redefine-all');\n var toInteger = require('./_to-integer');\n var toLength = require('./_to-length');\n var toIndex = require('./_to-index');\n var toAbsoluteIndex = require('./_to-absolute-index');\n var toPrimitive = require('./_to-primitive');\n var has = require('./_has');\n var classof = require('./_classof');\n var isObject = require('./_is-object');\n var toObject = require('./_to-object');\n var isArrayIter = require('./_is-array-iter');\n var create = require('./_object-create');\n var getPrototypeOf = require('./_object-gpo');\n var gOPN = require('./_object-gopn').f;\n var getIterFn = require('./core.get-iterator-method');\n var uid = require('./_uid');\n var wks = require('./_wks');\n var createArrayMethod = require('./_array-methods');\n var createArrayIncludes = require('./_array-includes');\n var speciesConstructor = require('./_species-constructor');\n var ArrayIterators = require('./es6.array.iterator');\n var Iterators = require('./_iterators');\n var $iterDetect = require('./_iter-detect');\n var setSpecies = require('./_set-species');\n var arrayFill = require('./_array-fill');\n var arrayCopyWithin = require('./_array-copy-within');\n var $DP = require('./_object-dp');\n var $GOPD = require('./_object-gopd');\n var dP = $DP.f;\n var gOPD = $GOPD.f;\n var RangeError = global.RangeError;\n var TypeError = global.TypeError;\n var Uint8Array = global.Uint8Array;\n var ARRAY_BUFFER = 'ArrayBuffer';\n var SHARED_BUFFER = 'Shared' + ARRAY_BUFFER;\n var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\n var PROTOTYPE = 'prototype';\n var ArrayProto = Array[PROTOTYPE];\n var $ArrayBuffer = $buffer.ArrayBuffer;\n var $DataView = $buffer.DataView;\n var arrayForEach = createArrayMethod(0);\n var arrayFilter = createArrayMethod(2);\n var arraySome = createArrayMethod(3);\n var arrayEvery = createArrayMethod(4);\n var arrayFind = createArrayMethod(5);\n var arrayFindIndex = createArrayMethod(6);\n var arrayIncludes = createArrayIncludes(true);\n var arrayIndexOf = createArrayIncludes(false);\n var arrayValues = ArrayIterators.values;\n var arrayKeys = ArrayIterators.keys;\n var arrayEntries = ArrayIterators.entries;\n var arrayLastIndexOf = ArrayProto.lastIndexOf;\n var arrayReduce = ArrayProto.reduce;\n var arrayReduceRight = ArrayProto.reduceRight;\n var arrayJoin = ArrayProto.join;\n var arraySort = ArrayProto.sort;\n var arraySlice = ArrayProto.slice;\n var arrayToString = ArrayProto.toString;\n var arrayToLocaleString = ArrayProto.toLocaleString;\n var ITERATOR = wks('iterator');\n var TAG = wks('toStringTag');\n var TYPED_CONSTRUCTOR = uid('typed_constructor');\n var DEF_CONSTRUCTOR = uid('def_constructor');\n var ALL_CONSTRUCTORS = $typed.CONSTR;\n var TYPED_ARRAY = $typed.TYPED;\n var VIEW = $typed.VIEW;\n var WRONG_LENGTH = 'Wrong length!';\n\n var $map = createArrayMethod(1, function (O, length) {\n return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length);\n });\n\n var LITTLE_ENDIAN = fails(function () {\n // eslint-disable-next-line no-undef\n return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;\n });\n\n var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function () {\n new Uint8Array(1).set({});\n });\n\n var toOffset = function (it, BYTES) {\n var offset = toInteger(it);\n if (offset < 0 || offset % BYTES) throw RangeError('Wrong offset!');\n return offset;\n };\n\n var validate = function (it) {\n if (isObject(it) && TYPED_ARRAY in it) return it;\n throw TypeError(it + ' is not a typed array!');\n };\n\n var allocate = function (C, length) {\n if (!(isObject(C) && TYPED_CONSTRUCTOR in C)) {\n throw TypeError('It is not a typed array constructor!');\n } return new C(length);\n };\n\n var speciesFromList = function (O, list) {\n return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list);\n };\n\n var fromList = function (C, list) {\n var index = 0;\n var length = list.length;\n var result = allocate(C, length);\n while (length > index) result[index] = list[index++];\n return result;\n };\n\n var addGetter = function (it, key, internal) {\n dP(it, key, { get: function () { return this._d[internal]; } });\n };\n\n var $from = function from(source /* , mapfn, thisArg */) {\n var O = toObject(source);\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iterFn = getIterFn(O);\n var i, length, values, result, step, iterator;\n if (iterFn != undefined && !isArrayIter(iterFn)) {\n for (iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++) {\n values.push(step.value);\n } O = values;\n }\n if (mapping && aLen > 2) mapfn = ctx(mapfn, arguments[2], 2);\n for (i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n };\n\n var $of = function of(/* ...items */) {\n var index = 0;\n var length = arguments.length;\n var result = allocate(this, length);\n while (length > index) result[index] = arguments[index++];\n return result;\n };\n\n // iOS Safari 6.x fails here\n var TO_LOCALE_BUG = !!Uint8Array && fails(function () { arrayToLocaleString.call(new Uint8Array(1)); });\n\n var $toLocaleString = function toLocaleString() {\n return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments);\n };\n\n var proto = {\n copyWithin: function copyWithin(target, start /* , end */) {\n return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n },\n every: function every(callbackfn /* , thisArg */) {\n return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n fill: function fill(value /* , start, end */) { // eslint-disable-line no-unused-vars\n return arrayFill.apply(validate(this), arguments);\n },\n filter: function filter(callbackfn /* , thisArg */) {\n return speciesFromList(this, arrayFilter(validate(this), callbackfn,\n arguments.length > 1 ? arguments[1] : undefined));\n },\n find: function find(predicate /* , thisArg */) {\n return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n findIndex: function findIndex(predicate /* , thisArg */) {\n return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n forEach: function forEach(callbackfn /* , thisArg */) {\n arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n indexOf: function indexOf(searchElement /* , fromIndex */) {\n return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n includes: function includes(searchElement /* , fromIndex */) {\n return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n join: function join(separator) { // eslint-disable-line no-unused-vars\n return arrayJoin.apply(validate(this), arguments);\n },\n lastIndexOf: function lastIndexOf(searchElement /* , fromIndex */) { // eslint-disable-line no-unused-vars\n return arrayLastIndexOf.apply(validate(this), arguments);\n },\n map: function map(mapfn /* , thisArg */) {\n return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n reduce: function reduce(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduce.apply(validate(this), arguments);\n },\n reduceRight: function reduceRight(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduceRight.apply(validate(this), arguments);\n },\n reverse: function reverse() {\n var that = this;\n var length = validate(that).length;\n var middle = Math.floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n },\n some: function some(callbackfn /* , thisArg */) {\n return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n sort: function sort(comparefn) {\n return arraySort.call(validate(this), comparefn);\n },\n subarray: function subarray(begin, end) {\n var O = validate(this);\n var length = O.length;\n var $begin = toAbsoluteIndex(begin, length);\n return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))(\n O.buffer,\n O.byteOffset + $begin * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - $begin)\n );\n }\n };\n\n var $slice = function slice(start, end) {\n return speciesFromList(this, arraySlice.call(validate(this), start, end));\n };\n\n var $set = function set(arrayLike /* , offset */) {\n validate(this);\n var offset = toOffset(arguments[1], 1);\n var length = this.length;\n var src = toObject(arrayLike);\n var len = toLength(src.length);\n var index = 0;\n if (len + offset > length) throw RangeError(WRONG_LENGTH);\n while (index < len) this[offset + index] = src[index++];\n };\n\n var $iterators = {\n entries: function entries() {\n return arrayEntries.call(validate(this));\n },\n keys: function keys() {\n return arrayKeys.call(validate(this));\n },\n values: function values() {\n return arrayValues.call(validate(this));\n }\n };\n\n var isTAIndex = function (target, key) {\n return isObject(target)\n && target[TYPED_ARRAY]\n && typeof key != 'symbol'\n && key in target\n && String(+key) == String(key);\n };\n var $getDesc = function getOwnPropertyDescriptor(target, key) {\n return isTAIndex(target, key = toPrimitive(key, true))\n ? propertyDesc(2, target[key])\n : gOPD(target, key);\n };\n var $setDesc = function defineProperty(target, key, desc) {\n if (isTAIndex(target, key = toPrimitive(key, true))\n && isObject(desc)\n && has(desc, 'value')\n && !has(desc, 'get')\n && !has(desc, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !desc.configurable\n && (!has(desc, 'writable') || desc.writable)\n && (!has(desc, 'enumerable') || desc.enumerable)\n ) {\n target[key] = desc.value;\n return target;\n } return dP(target, key, desc);\n };\n\n if (!ALL_CONSTRUCTORS) {\n $GOPD.f = $getDesc;\n $DP.f = $setDesc;\n }\n\n $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', {\n getOwnPropertyDescriptor: $getDesc,\n defineProperty: $setDesc\n });\n\n if (fails(function () { arrayToString.call({}); })) {\n arrayToString = arrayToLocaleString = function toString() {\n return arrayJoin.call(this);\n };\n }\n\n var $TypedArrayPrototype$ = redefineAll({}, proto);\n redefineAll($TypedArrayPrototype$, $iterators);\n hide($TypedArrayPrototype$, ITERATOR, $iterators.values);\n redefineAll($TypedArrayPrototype$, {\n slice: $slice,\n set: $set,\n constructor: function () { /* noop */ },\n toString: arrayToString,\n toLocaleString: $toLocaleString\n });\n addGetter($TypedArrayPrototype$, 'buffer', 'b');\n addGetter($TypedArrayPrototype$, 'byteOffset', 'o');\n addGetter($TypedArrayPrototype$, 'byteLength', 'l');\n addGetter($TypedArrayPrototype$, 'length', 'e');\n dP($TypedArrayPrototype$, TAG, {\n get: function () { return this[TYPED_ARRAY]; }\n });\n\n // eslint-disable-next-line max-statements\n module.exports = function (KEY, BYTES, wrapper, CLAMPED) {\n CLAMPED = !!CLAMPED;\n var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + KEY;\n var SETTER = 'set' + KEY;\n var TypedArray = global[NAME];\n var Base = TypedArray || {};\n var TAC = TypedArray && getPrototypeOf(TypedArray);\n var FORCED = !TypedArray || !$typed.ABV;\n var O = {};\n var TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE];\n var getter = function (that, index) {\n var data = that._d;\n return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN);\n };\n var setter = function (that, index, value) {\n var data = that._d;\n if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff;\n data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN);\n };\n var addElement = function (that, index) {\n dP(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n if (FORCED) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME, '_d');\n var index = 0;\n var offset = 0;\n var buffer, byteLength, length, klass;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new $ArrayBuffer(byteLength);\n } else if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n buffer = data;\n offset = toOffset($offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - offset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + offset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (TYPED_ARRAY in data) {\n return fromList(TypedArray, data);\n } else {\n return $from.call(TypedArray, data);\n }\n hide(that, '_d', {\n b: buffer,\n o: offset,\n l: byteLength,\n e: length,\n v: new $DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$);\n hide(TypedArrayPrototype, 'constructor', TypedArray);\n } else if (!fails(function () {\n TypedArray(1);\n }) || !fails(function () {\n new TypedArray(-1); // eslint-disable-line no-new\n }) || !$iterDetect(function (iter) {\n new TypedArray(); // eslint-disable-line no-new\n new TypedArray(null); // eslint-disable-line no-new\n new TypedArray(1.5); // eslint-disable-line no-new\n new TypedArray(iter); // eslint-disable-line no-new\n }, true)) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME);\n var klass;\n // `ws` module bug, temporarily remove validation length for Uint8Array\n // https://github.com/websockets/ws/pull/645\n if (!isObject(data)) return new Base(toIndex(data));\n if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n return $length !== undefined\n ? new Base(data, toOffset($offset, BYTES), $length)\n : $offset !== undefined\n ? new Base(data, toOffset($offset, BYTES))\n : new Base(data);\n }\n if (TYPED_ARRAY in data) return fromList(TypedArray, data);\n return $from.call(TypedArray, data);\n });\n arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function (key) {\n if (!(key in TypedArray)) hide(TypedArray, key, Base[key]);\n });\n TypedArray[PROTOTYPE] = TypedArrayPrototype;\n if (!LIBRARY) TypedArrayPrototype.constructor = TypedArray;\n }\n var $nativeIterator = TypedArrayPrototype[ITERATOR];\n var CORRECT_ITER_NAME = !!$nativeIterator\n && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined);\n var $iterator = $iterators.values;\n hide(TypedArray, TYPED_CONSTRUCTOR, true);\n hide(TypedArrayPrototype, TYPED_ARRAY, NAME);\n hide(TypedArrayPrototype, VIEW, true);\n hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray);\n\n if (CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)) {\n dP(TypedArrayPrototype, TAG, {\n get: function () { return NAME; }\n });\n }\n\n O[NAME] = TypedArray;\n\n $export($export.G + $export.W + $export.F * (TypedArray != Base), O);\n\n $export($export.S, NAME, {\n BYTES_PER_ELEMENT: BYTES\n });\n\n $export($export.S + $export.F * fails(function () { Base.of.call(TypedArray, 1); }), NAME, {\n from: $from,\n of: $of\n });\n\n if (!(BYTES_PER_ELEMENT in TypedArrayPrototype)) hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES);\n\n $export($export.P, NAME, proto);\n\n setSpecies(NAME);\n\n $export($export.P + $export.F * FORCED_SET, NAME, { set: $set });\n\n $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators);\n\n if (!LIBRARY && TypedArrayPrototype.toString != arrayToString) TypedArrayPrototype.toString = arrayToString;\n\n $export($export.P + $export.F * fails(function () {\n new TypedArray(1).slice();\n }), NAME, { slice: $slice });\n\n $export($export.P + $export.F * (fails(function () {\n return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString();\n }) || !fails(function () {\n TypedArrayPrototype.toLocaleString.call([1, 2]);\n })), NAME, { toLocaleString: $toLocaleString });\n\n Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator;\n if (!LIBRARY && !CORRECT_ITER_NAME) hide(TypedArrayPrototype, ITERATOR, $iterator);\n };\n} else module.exports = function () { /* empty */ };\n","'use strict';\nvar global = require('./_global');\nvar DESCRIPTORS = require('./_descriptors');\nvar LIBRARY = require('./_library');\nvar $typed = require('./_typed');\nvar hide = require('./_hide');\nvar redefineAll = require('./_redefine-all');\nvar fails = require('./_fails');\nvar anInstance = require('./_an-instance');\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nvar toIndex = require('./_to-index');\nvar gOPN = require('./_object-gopn').f;\nvar dP = require('./_object-dp').f;\nvar arrayFill = require('./_array-fill');\nvar setToStringTag = require('./_set-to-string-tag');\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length!';\nvar WRONG_INDEX = 'Wrong index!';\nvar $ArrayBuffer = global[ARRAY_BUFFER];\nvar $DataView = global[DATA_VIEW];\nvar Math = global.Math;\nvar RangeError = global.RangeError;\n// eslint-disable-next-line no-shadow-restricted-names\nvar Infinity = global.Infinity;\nvar BaseBuffer = $ArrayBuffer;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\nvar BUFFER = 'buffer';\nvar BYTE_LENGTH = 'byteLength';\nvar BYTE_OFFSET = 'byteOffset';\nvar $BUFFER = DESCRIPTORS ? '_b' : BUFFER;\nvar $LENGTH = DESCRIPTORS ? '_l' : BYTE_LENGTH;\nvar $OFFSET = DESCRIPTORS ? '_o' : BYTE_OFFSET;\n\n// IEEE754 conversions based on https://github.com/feross/ieee754\nfunction packIEEE754(value, mLen, nBytes) {\n var buffer = new Array(nBytes);\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var i = 0;\n var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n var e, m, c;\n value = abs(value);\n // eslint-disable-next-line no-self-compare\n if (value != value || value === Infinity) {\n // eslint-disable-next-line no-self-compare\n m = value != value ? 1 : 0;\n e = eMax;\n } else {\n e = floor(log(value) / LN2);\n if (value * (c = pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * pow(2, eBias - 1) * pow(2, mLen);\n e = 0;\n }\n }\n for (; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8);\n e = e << mLen | m;\n eLen += mLen;\n for (; eLen > 0; buffer[i++] = e & 255, e /= 256, eLen -= 8);\n buffer[--i] |= s * 128;\n return buffer;\n}\nfunction unpackIEEE754(buffer, mLen, nBytes) {\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = eLen - 7;\n var i = nBytes - 1;\n var s = buffer[i--];\n var e = s & 127;\n var m;\n s >>= 7;\n for (; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8);\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8);\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : s ? -Infinity : Infinity;\n } else {\n m = m + pow(2, mLen);\n e = e - eBias;\n } return (s ? -1 : 1) * m * pow(2, e - mLen);\n}\n\nfunction unpackI32(bytes) {\n return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0];\n}\nfunction packI8(it) {\n return [it & 0xff];\n}\nfunction packI16(it) {\n return [it & 0xff, it >> 8 & 0xff];\n}\nfunction packI32(it) {\n return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff];\n}\nfunction packF64(it) {\n return packIEEE754(it, 52, 8);\n}\nfunction packF32(it) {\n return packIEEE754(it, 23, 4);\n}\n\nfunction addGetter(C, key, internal) {\n dP(C[PROTOTYPE], key, { get: function () { return this[internal]; } });\n}\n\nfunction get(view, bytes, index, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = store.slice(start, start + bytes);\n return isLittleEndian ? pack : pack.reverse();\n}\nfunction set(view, bytes, index, conversion, value, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = conversion(+value);\n for (var i = 0; i < bytes; i++) store[start + i] = pack[isLittleEndian ? i : bytes - i - 1];\n}\n\nif (!$typed.ABV) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n var byteLength = toIndex(length);\n this._b = arrayFill.call(new Array(byteLength), 0);\n this[$LENGTH] = byteLength;\n };\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, $DataView, DATA_VIEW);\n anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n var bufferLength = buffer[$LENGTH];\n var offset = toInteger(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset!');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n this[$BUFFER] = buffer;\n this[$OFFSET] = offset;\n this[$LENGTH] = byteLength;\n };\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, BYTE_LENGTH, '_l');\n addGetter($DataView, BUFFER, '_b');\n addGetter($DataView, BYTE_LENGTH, '_l');\n addGetter($DataView, BYTE_OFFSET, '_o');\n }\n\n redefineAll($DataView[PROTOTYPE], {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1]));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packF32, value, arguments[2]);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packF64, value, arguments[2]);\n }\n });\n} else {\n if (!fails(function () {\n $ArrayBuffer(1);\n }) || !fails(function () {\n new $ArrayBuffer(-1); // eslint-disable-line no-new\n }) || fails(function () {\n new $ArrayBuffer(); // eslint-disable-line no-new\n new $ArrayBuffer(1.5); // eslint-disable-line no-new\n new $ArrayBuffer(NaN); // eslint-disable-line no-new\n return $ArrayBuffer.name != ARRAY_BUFFER;\n })) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer);\n return new BaseBuffer(toIndex(length));\n };\n var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE];\n for (var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) hide($ArrayBuffer, key, BaseBuffer[key]);\n }\n if (!LIBRARY) ArrayBufferProto.constructor = $ArrayBuffer;\n }\n // iOS Safari 7.x bug\n var view = new $DataView(new $ArrayBuffer(2));\n var $setInt8 = $DataView[PROTOTYPE].setInt8;\n view.setInt8(0, 2147483648);\n view.setInt8(1, 2147483649);\n if (view.getInt8(0) || !view.getInt8(1)) redefineAll($DataView[PROTOTYPE], {\n setInt8: function setInt8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n }\n }, true);\n}\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\nhide($DataView[PROTOTYPE], $typed.VIEW, true);\nexports[ARRAY_BUFFER] = $ArrayBuffer;\nexports[DATA_VIEW] = $DataView;\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar uid = require('./_uid');\nvar TYPED = uid('typed_array');\nvar VIEW = uid('view');\nvar ABV = !!(global.ArrayBuffer && global.DataView);\nvar CONSTR = ABV;\nvar i = 0;\nvar l = 9;\nvar Typed;\n\nvar TypedArrayConstructors = (\n 'Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array'\n).split(',');\n\nwhile (i < l) {\n if (Typed = global[TypedArrayConstructors[i++]]) {\n hide(Typed.prototype, TYPED, true);\n hide(Typed.prototype, VIEW, true);\n } else CONSTR = false;\n}\n\nmodule.exports = {\n ABV: ABV,\n CONSTR: CONSTR,\n TYPED: TYPED,\n VIEW: VIEW\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n return it;\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","exports.f = require('./_wks');\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","// https://github.com/benjamingr/RexExp.escape\nvar $export = require('./_export');\nvar $re = require('./_replacer')(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n\n$export($export.S, 'RegExp', { escape: function escape(it) { return $re(it); } });\n","// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { copyWithin: require('./_array-copy-within') });\n\nrequire('./_add-to-unscopables')('copyWithin');\n","'use strict';\nvar $export = require('./_export');\nvar $every = require('./_array-methods')(4);\n\n$export($export.P + $export.F * !require('./_strict-method')([].every, true), 'Array', {\n // 22.1.3.5 / 15.4.4.16 Array.prototype.every(callbackfn [, thisArg])\n every: function every(callbackfn /* , thisArg */) {\n return $every(this, callbackfn, arguments[1]);\n }\n});\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { fill: require('./_array-fill') });\n\nrequire('./_add-to-unscopables')('fill');\n","'use strict';\nvar $export = require('./_export');\nvar $filter = require('./_array-methods')(2);\n\n$export($export.P + $export.F * !require('./_strict-method')([].filter, true), 'Array', {\n // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\n// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(6);\nvar KEY = 'findIndex';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","'use strict';\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","'use strict';\nvar $export = require('./_export');\nvar $forEach = require('./_array-methods')(0);\nvar STRICT = require('./_strict-method')([].forEach, true);\n\n$export($export.P + $export.F * !STRICT, 'Array', {\n // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])\n forEach: function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $indexOf = require('./_array-includes')(false);\nvar $native = [].indexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {\n // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? $native.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments[1]);\n }\n});\n","// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)\nvar $export = require('./_export');\n\n$export($export.S, 'Array', { isArray: require('./_is-array') });\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","'use strict';\n// 22.1.3.13 Array.prototype.join(separator)\nvar $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar arrayJoin = [].join;\n\n// fallback for not array-like strings\n$export($export.P + $export.F * (require('./_iobject') != Object || !require('./_strict-method')(arrayJoin)), 'Array', {\n join: function join(separator) {\n return arrayJoin.call(toIObject(this), separator === undefined ? ',' : separator);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nvar $native = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].lastIndexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {\n // 22.1.3.14 / 15.4.4.15 Array.prototype.lastIndexOf(searchElement [, fromIndex])\n lastIndexOf: function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return $native.apply(this, arguments) || 0;\n var O = toIObject(this);\n var length = toLength(O.length);\n var index = length - 1;\n if (arguments.length > 1) index = Math.min(index, toInteger(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O) if (O[index] === searchElement) return index || 0;\n return -1;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $map = require('./_array-methods')(1);\n\n$export($export.P + $export.F * !require('./_strict-method')([].map, true), 'Array', {\n // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar createProperty = require('./_create-property');\n\n// WebKit Array.of isn't generic\n$export($export.S + $export.F * require('./_fails')(function () {\n function F() { /* empty */ }\n return !(Array.of.call(F) instanceof F);\n}), 'Array', {\n // 22.1.2.3 Array.of( ...items)\n of: function of(/* ...args */) {\n var index = 0;\n var aLen = arguments.length;\n var result = new (typeof this == 'function' ? this : Array)(aLen);\n while (aLen > index) createProperty(result, index, arguments[index++]);\n result.length = aLen;\n return result;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $reduce = require('./_array-reduce');\n\n$export($export.P + $export.F * !require('./_strict-method')([].reduceRight, true), 'Array', {\n // 22.1.3.19 / 15.4.4.22 Array.prototype.reduceRight(callbackfn [, initialValue])\n reduceRight: function reduceRight(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments[1], true);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $reduce = require('./_array-reduce');\n\n$export($export.P + $export.F * !require('./_strict-method')([].reduce, true), 'Array', {\n // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue])\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments[1], false);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar html = require('./_html');\nvar cof = require('./_cof');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nvar arraySlice = [].slice;\n\n// fallback for not array-like ES3 strings and DOM objects\n$export($export.P + $export.F * require('./_fails')(function () {\n if (html) arraySlice.call(html);\n}), 'Array', {\n slice: function slice(begin, end) {\n var len = toLength(this.length);\n var klass = cof(this);\n end = end === undefined ? len : end;\n if (klass == 'Array') return arraySlice.call(this, begin, end);\n var start = toAbsoluteIndex(begin, len);\n var upTo = toAbsoluteIndex(end, len);\n var size = toLength(upTo - start);\n var cloned = new Array(size);\n var i = 0;\n for (; i < size; i++) cloned[i] = klass == 'String'\n ? this.charAt(start + i)\n : this[start + i];\n return cloned;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $some = require('./_array-methods')(3);\n\n$export($export.P + $export.F * !require('./_strict-method')([].some, true), 'Array', {\n // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg])\n some: function some(callbackfn /* , thisArg */) {\n return $some(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar fails = require('./_fails');\nvar $sort = [].sort;\nvar test = [1, 2, 3];\n\n$export($export.P + $export.F * (fails(function () {\n // IE8-\n test.sort(undefined);\n}) || !fails(function () {\n // V8 bug\n test.sort(null);\n // Old WebKit\n}) || !require('./_strict-method')($sort)), 'Array', {\n // 22.1.3.25 Array.prototype.sort(comparefn)\n sort: function sort(comparefn) {\n return comparefn === undefined\n ? $sort.call(toObject(this))\n : $sort.call(toObject(this), aFunction(comparefn));\n }\n});\n","require('./_set-species')('Array');\n","// 20.3.3.1 / 15.9.4.4 Date.now()\nvar $export = require('./_export');\n\n$export($export.S, 'Date', { now: function () { return new Date().getTime(); } });\n","// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()\nvar $export = require('./_export');\nvar toISOString = require('./_date-to-iso-string');\n\n// PhantomJS / old WebKit has a broken implementations\n$export($export.P + $export.F * (Date.prototype.toISOString !== toISOString), 'Date', {\n toISOString: toISOString\n});\n","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar toPrimitive = require('./_to-primitive');\n\n$export($export.P + $export.F * require('./_fails')(function () {\n return new Date(NaN).toJSON() !== null\n || Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) !== 1;\n}), 'Date', {\n // eslint-disable-next-line no-unused-vars\n toJSON: function toJSON(key) {\n var O = toObject(this);\n var pv = toPrimitive(O);\n return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString();\n }\n});\n","var TO_PRIMITIVE = require('./_wks')('toPrimitive');\nvar proto = Date.prototype;\n\nif (!(TO_PRIMITIVE in proto)) require('./_hide')(proto, TO_PRIMITIVE, require('./_date-to-primitive'));\n","var DateProto = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar $toString = DateProto[TO_STRING];\nvar getTime = DateProto.getTime;\nif (new Date(NaN) + '' != INVALID_DATE) {\n require('./_redefine')(DateProto, TO_STRING, function toString() {\n var value = getTime.call(this);\n // eslint-disable-next-line no-self-compare\n return value === value ? $toString.call(this) : INVALID_DATE;\n });\n}\n","// 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...)\nvar $export = require('./_export');\n\n$export($export.P, 'Function', { bind: require('./_bind') });\n","'use strict';\nvar isObject = require('./_is-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar HAS_INSTANCE = require('./_wks')('hasInstance');\nvar FunctionProto = Function.prototype;\n// 19.2.3.6 Function.prototype[@@hasInstance](V)\nif (!(HAS_INSTANCE in FunctionProto)) require('./_object-dp').f(FunctionProto, HAS_INSTANCE, { value: function (O) {\n if (typeof this != 'function' || !isObject(O)) return false;\n if (!isObject(this.prototype)) return O instanceof this;\n // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this:\n while (O = getPrototypeOf(O)) if (this.prototype === O) return true;\n return false;\n} });\n","var dP = require('./_object-dp').f;\nvar FProto = Function.prototype;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// 19.2.4.2 name\nNAME in FProto || require('./_descriptors') && dP(FProto, NAME, {\n configurable: true,\n get: function () {\n try {\n return ('' + this).match(nameRE)[1];\n } catch (e) {\n return '';\n }\n }\n});\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = require('./_collection')(MAP, function (get) {\n return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = strong.getEntry(validate(this, MAP), key);\n return entry && entry.v;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n }\n}, strong, true);\n","// 20.2.2.3 Math.acosh(x)\nvar $export = require('./_export');\nvar log1p = require('./_math-log1p');\nvar sqrt = Math.sqrt;\nvar $acosh = Math.acosh;\n\n$export($export.S + $export.F * !($acosh\n // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509\n && Math.floor($acosh(Number.MAX_VALUE)) == 710\n // Tor Browser bug: Math.acosh(Infinity) -> NaN\n && $acosh(Infinity) == Infinity\n), 'Math', {\n acosh: function acosh(x) {\n return (x = +x) < 1 ? NaN : x > 94906265.62425156\n ? Math.log(x) + Math.LN2\n : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1));\n }\n});\n","// 20.2.2.5 Math.asinh(x)\nvar $export = require('./_export');\nvar $asinh = Math.asinh;\n\nfunction asinh(x) {\n return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : Math.log(x + Math.sqrt(x * x + 1));\n}\n\n// Tor Browser bug: Math.asinh(0) -> -0\n$export($export.S + $export.F * !($asinh && 1 / $asinh(0) > 0), 'Math', { asinh: asinh });\n","// 20.2.2.7 Math.atanh(x)\nvar $export = require('./_export');\nvar $atanh = Math.atanh;\n\n// Tor Browser bug: Math.atanh(-0) -> 0\n$export($export.S + $export.F * !($atanh && 1 / $atanh(-0) < 0), 'Math', {\n atanh: function atanh(x) {\n return (x = +x) == 0 ? x : Math.log((1 + x) / (1 - x)) / 2;\n }\n});\n","// 20.2.2.9 Math.cbrt(x)\nvar $export = require('./_export');\nvar sign = require('./_math-sign');\n\n$export($export.S, 'Math', {\n cbrt: function cbrt(x) {\n return sign(x = +x) * Math.pow(Math.abs(x), 1 / 3);\n }\n});\n","// 20.2.2.11 Math.clz32(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n clz32: function clz32(x) {\n return (x >>>= 0) ? 31 - Math.floor(Math.log(x + 0.5) * Math.LOG2E) : 32;\n }\n});\n","// 20.2.2.12 Math.cosh(x)\nvar $export = require('./_export');\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n cosh: function cosh(x) {\n return (exp(x = +x) + exp(-x)) / 2;\n }\n});\n","// 20.2.2.14 Math.expm1(x)\nvar $export = require('./_export');\nvar $expm1 = require('./_math-expm1');\n\n$export($export.S + $export.F * ($expm1 != Math.expm1), 'Math', { expm1: $expm1 });\n","// 20.2.2.16 Math.fround(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { fround: require('./_math-fround') });\n","// 20.2.2.17 Math.hypot([value1[, value2[, … ]]])\nvar $export = require('./_export');\nvar abs = Math.abs;\n\n$export($export.S, 'Math', {\n hypot: function hypot(value1, value2) { // eslint-disable-line no-unused-vars\n var sum = 0;\n var i = 0;\n var aLen = arguments.length;\n var larg = 0;\n var arg, div;\n while (i < aLen) {\n arg = abs(arguments[i++]);\n if (larg < arg) {\n div = larg / arg;\n sum = sum * div * div + 1;\n larg = arg;\n } else if (arg > 0) {\n div = arg / larg;\n sum += div * div;\n } else sum += arg;\n }\n return larg === Infinity ? Infinity : larg * Math.sqrt(sum);\n }\n});\n","// 20.2.2.18 Math.imul(x, y)\nvar $export = require('./_export');\nvar $imul = Math.imul;\n\n// some WebKit versions fails with big numbers, some has wrong arity\n$export($export.S + $export.F * require('./_fails')(function () {\n return $imul(0xffffffff, 5) != -5 || $imul.length != 2;\n}), 'Math', {\n imul: function imul(x, y) {\n var UINT16 = 0xffff;\n var xn = +x;\n var yn = +y;\n var xl = UINT16 & xn;\n var yl = UINT16 & yn;\n return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);\n }\n});\n","// 20.2.2.21 Math.log10(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n log10: function log10(x) {\n return Math.log(x) * Math.LOG10E;\n }\n});\n","// 20.2.2.20 Math.log1p(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { log1p: require('./_math-log1p') });\n","// 20.2.2.22 Math.log2(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n log2: function log2(x) {\n return Math.log(x) / Math.LN2;\n }\n});\n","// 20.2.2.28 Math.sign(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { sign: require('./_math-sign') });\n","// 20.2.2.30 Math.sinh(x)\nvar $export = require('./_export');\nvar expm1 = require('./_math-expm1');\nvar exp = Math.exp;\n\n// V8 near Chromium 38 has a problem with very small numbers\n$export($export.S + $export.F * require('./_fails')(function () {\n return !Math.sinh(-2e-17) != -2e-17;\n}), 'Math', {\n sinh: function sinh(x) {\n return Math.abs(x = +x) < 1\n ? (expm1(x) - expm1(-x)) / 2\n : (exp(x - 1) - exp(-x - 1)) * (Math.E / 2);\n }\n});\n","// 20.2.2.33 Math.tanh(x)\nvar $export = require('./_export');\nvar expm1 = require('./_math-expm1');\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n tanh: function tanh(x) {\n var a = expm1(x = +x);\n var b = expm1(-x);\n return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));\n }\n});\n","// 20.2.2.34 Math.trunc(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n trunc: function trunc(it) {\n return (it > 0 ? Math.floor : Math.ceil)(it);\n }\n});\n","'use strict';\nvar global = require('./_global');\nvar has = require('./_has');\nvar cof = require('./_cof');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar toPrimitive = require('./_to-primitive');\nvar fails = require('./_fails');\nvar gOPN = require('./_object-gopn').f;\nvar gOPD = require('./_object-gopd').f;\nvar dP = require('./_object-dp').f;\nvar $trim = require('./_string-trim').trim;\nvar NUMBER = 'Number';\nvar $Number = global[NUMBER];\nvar Base = $Number;\nvar proto = $Number.prototype;\n// Opera ~12 has broken Object#toString\nvar BROKEN_COF = cof(require('./_object-create')(proto)) == NUMBER;\nvar TRIM = 'trim' in String.prototype;\n\n// 7.1.3 ToNumber(argument)\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n if (typeof it == 'string' && it.length > 2) {\n it = TRIM ? it.trim() : $trim(it, 3);\n var first = it.charCodeAt(0);\n var third, radix, maxCode;\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i\n default: return +it;\n }\n for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) {\n code = digits.charCodeAt(i);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\nif (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) {\n $Number = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var that = this;\n return that instanceof $Number\n // check on 1..constructor(foo) case\n && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER)\n ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);\n };\n for (var keys = require('./_descriptors') ? gOPN(Base) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES6 (in case, if modules with ES6 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(Base, key = keys[j]) && !has($Number, key)) {\n dP($Number, key, gOPD(Base, key));\n }\n }\n $Number.prototype = proto;\n proto.constructor = $Number;\n require('./_redefine')(global, NUMBER, $Number);\n}\n","// 20.1.2.1 Number.EPSILON\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { EPSILON: Math.pow(2, -52) });\n","// 20.1.2.2 Number.isFinite(number)\nvar $export = require('./_export');\nvar _isFinite = require('./_global').isFinite;\n\n$export($export.S, 'Number', {\n isFinite: function isFinite(it) {\n return typeof it == 'number' && _isFinite(it);\n }\n});\n","// 20.1.2.3 Number.isInteger(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { isInteger: require('./_is-integer') });\n","// 20.1.2.4 Number.isNaN(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', {\n isNaN: function isNaN(number) {\n // eslint-disable-next-line no-self-compare\n return number != number;\n }\n});\n","// 20.1.2.5 Number.isSafeInteger(number)\nvar $export = require('./_export');\nvar isInteger = require('./_is-integer');\nvar abs = Math.abs;\n\n$export($export.S, 'Number', {\n isSafeInteger: function isSafeInteger(number) {\n return isInteger(number) && abs(number) <= 0x1fffffffffffff;\n }\n});\n","// 20.1.2.6 Number.MAX_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MAX_SAFE_INTEGER: 0x1fffffffffffff });\n","// 20.1.2.10 Number.MIN_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MIN_SAFE_INTEGER: -0x1fffffffffffff });\n","var $export = require('./_export');\nvar $parseFloat = require('./_parse-float');\n// 20.1.2.12 Number.parseFloat(string)\n$export($export.S + $export.F * (Number.parseFloat != $parseFloat), 'Number', { parseFloat: $parseFloat });\n","var $export = require('./_export');\nvar $parseInt = require('./_parse-int');\n// 20.1.2.13 Number.parseInt(string, radix)\n$export($export.S + $export.F * (Number.parseInt != $parseInt), 'Number', { parseInt: $parseInt });\n","'use strict';\nvar $export = require('./_export');\nvar toInteger = require('./_to-integer');\nvar aNumberValue = require('./_a-number-value');\nvar repeat = require('./_string-repeat');\nvar $toFixed = 1.0.toFixed;\nvar floor = Math.floor;\nvar data = [0, 0, 0, 0, 0, 0];\nvar ERROR = 'Number.toFixed: incorrect invocation!';\nvar ZERO = '0';\n\nvar multiply = function (n, c) {\n var i = -1;\n var c2 = c;\n while (++i < 6) {\n c2 += n * data[i];\n data[i] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n};\nvar divide = function (n) {\n var i = 6;\n var c = 0;\n while (--i >= 0) {\n c += data[i];\n data[i] = floor(c / n);\n c = (c % n) * 1e7;\n }\n};\nvar numToString = function () {\n var i = 6;\n var s = '';\n while (--i >= 0) {\n if (s !== '' || i === 0 || data[i] !== 0) {\n var t = String(data[i]);\n s = s === '' ? t : s + repeat.call(ZERO, 7 - t.length) + t;\n }\n } return s;\n};\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\n$export($export.P + $export.F * (!!$toFixed && (\n 0.00008.toFixed(3) !== '0.000' ||\n 0.9.toFixed(0) !== '1' ||\n 1.255.toFixed(2) !== '1.25' ||\n 1000000000000000128.0.toFixed(0) !== '1000000000000000128'\n) || !require('./_fails')(function () {\n // V8 ~ Android 4.3-\n $toFixed.call({});\n})), 'Number', {\n toFixed: function toFixed(fractionDigits) {\n var x = aNumberValue(this, ERROR);\n var f = toInteger(fractionDigits);\n var s = '';\n var m = ZERO;\n var e, z, j, k;\n if (f < 0 || f > 20) throw RangeError(ERROR);\n // eslint-disable-next-line no-self-compare\n if (x != x) return 'NaN';\n if (x <= -1e21 || x >= 1e21) return String(x);\n if (x < 0) {\n s = '-';\n x = -x;\n }\n if (x > 1e-21) {\n e = log(x * pow(2, 69, 1)) - 69;\n z = e < 0 ? x * pow(2, -e, 1) : x / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(0, z);\n j = f;\n while (j >= 7) {\n multiply(1e7, 0);\n j -= 7;\n }\n multiply(pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(1 << 23);\n j -= 23;\n }\n divide(1 << j);\n multiply(1, 1);\n divide(2);\n m = numToString();\n } else {\n multiply(0, z);\n multiply(1 << -e, 0);\n m = numToString() + repeat.call(ZERO, f);\n }\n }\n if (f > 0) {\n k = m.length;\n m = s + (k <= f ? '0.' + repeat.call(ZERO, f - k) + m : m.slice(0, k - f) + '.' + m.slice(k - f));\n } else {\n m = s + m;\n } return m;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $fails = require('./_fails');\nvar aNumberValue = require('./_a-number-value');\nvar $toPrecision = 1.0.toPrecision;\n\n$export($export.P + $export.F * ($fails(function () {\n // IE7-\n return $toPrecision.call(1, undefined) !== '1';\n}) || !$fails(function () {\n // V8 ~ Android 4.3-\n $toPrecision.call({});\n})), 'Number', {\n toPrecision: function toPrecision(precision) {\n var that = aNumberValue(this, 'Number#toPrecision: incorrect invocation!');\n return precision === undefined ? $toPrecision.call(that) : $toPrecision.call(that, precision);\n }\n});\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n","var $export = require('./_export');\n// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperties: require('./_object-dps') });\n","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","// 19.1.2.5 Object.freeze(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('freeze', function ($freeze) {\n return function freeze(it) {\n return $freeze && isObject(it) ? $freeze(meta(it)) : it;\n };\n});\n","// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = require('./_to-iobject');\nvar $getOwnPropertyDescriptor = require('./_object-gopd').f;\n\nrequire('./_object-sap')('getOwnPropertyDescriptor', function () {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n","// 19.1.2.7 Object.getOwnPropertyNames(O)\nrequire('./_object-sap')('getOwnPropertyNames', function () {\n return require('./_object-gopn-ext').f;\n});\n","// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = require('./_to-object');\nvar $getPrototypeOf = require('./_object-gpo');\n\nrequire('./_object-sap')('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n","// 19.1.2.11 Object.isExtensible(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isExtensible', function ($isExtensible) {\n return function isExtensible(it) {\n return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false;\n };\n});\n","// 19.1.2.12 Object.isFrozen(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isFrozen', function ($isFrozen) {\n return function isFrozen(it) {\n return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true;\n };\n});\n","// 19.1.2.13 Object.isSealed(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isSealed', function ($isSealed) {\n return function isSealed(it) {\n return isObject(it) ? $isSealed ? $isSealed(it) : false : true;\n };\n});\n","// 19.1.3.10 Object.is(value1, value2)\nvar $export = require('./_export');\n$export($export.S, 'Object', { is: require('./_same-value') });\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n","// 19.1.2.15 Object.preventExtensions(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('preventExtensions', function ($preventExtensions) {\n return function preventExtensions(it) {\n return $preventExtensions && isObject(it) ? $preventExtensions(meta(it)) : it;\n };\n});\n","// 19.1.2.17 Object.seal(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('seal', function ($seal) {\n return function seal(it) {\n return $seal && isObject(it) ? $seal(meta(it)) : it;\n };\n});\n","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', { setPrototypeOf: require('./_set-proto').set });\n","'use strict';\n// 19.1.3.6 Object.prototype.toString()\nvar classof = require('./_classof');\nvar test = {};\ntest[require('./_wks')('toStringTag')] = 'z';\nif (test + '' != '[object z]') {\n require('./_redefine')(Object.prototype, 'toString', function toString() {\n return '[object ' + classof(this) + ']';\n }, true);\n}\n","var $export = require('./_export');\nvar $parseFloat = require('./_parse-float');\n// 18.2.4 parseFloat(string)\n$export($export.G + $export.F * (parseFloat != $parseFloat), { parseFloat: $parseFloat });\n","var $export = require('./_export');\nvar $parseInt = require('./_parse-int');\n// 18.2.5 parseInt(string, radix)\n$export($export.G + $export.F * (parseInt != $parseInt), { parseInt: $parseInt });\n","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar userAgent = require('./_user-agent');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function')\n && promise.then(empty) instanceof FakePromise\n // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // we can't detect it synchronously, so just check versions\n && v8.indexOf('6.6') !== 0\n && userAgent.indexOf('Chrome/66') === -1;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // may throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n if (domain && !exited) domain.exit();\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n","// 26.1.1 Reflect.apply(target, thisArgument, argumentsList)\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar rApply = (require('./_global').Reflect || {}).apply;\nvar fApply = Function.apply;\n// MS Edge argumentsList argument is optional\n$export($export.S + $export.F * !require('./_fails')(function () {\n rApply(function () { /* empty */ });\n}), 'Reflect', {\n apply: function apply(target, thisArgument, argumentsList) {\n var T = aFunction(target);\n var L = anObject(argumentsList);\n return rApply ? rApply(T, thisArgument, L) : fApply.call(T, thisArgument, L);\n }\n});\n","// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])\nvar $export = require('./_export');\nvar create = require('./_object-create');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar bind = require('./_bind');\nvar rConstruct = (require('./_global').Reflect || {}).construct;\n\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function () {\n rConstruct(function () { /* empty */ });\n});\n\n$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {\n construct: function construct(Target, args /* , newTarget */) {\n aFunction(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n $args.push.apply($args, args);\n return new (bind.apply(Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : Object.prototype);\n var result = Function.apply.call(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","// 26.1.3 Reflect.defineProperty(target, propertyKey, attributes)\nvar dP = require('./_object-dp');\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar toPrimitive = require('./_to-primitive');\n\n// MS Edge has broken Reflect.defineProperty - throwing instead of returning false\n$export($export.S + $export.F * require('./_fails')(function () {\n // eslint-disable-next-line no-undef\n Reflect.defineProperty(dP.f({}, 1, { value: 1 }), 1, { value: 2 });\n}), 'Reflect', {\n defineProperty: function defineProperty(target, propertyKey, attributes) {\n anObject(target);\n propertyKey = toPrimitive(propertyKey, true);\n anObject(attributes);\n try {\n dP.f(target, propertyKey, attributes);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","// 26.1.4 Reflect.deleteProperty(target, propertyKey)\nvar $export = require('./_export');\nvar gOPD = require('./_object-gopd').f;\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n deleteProperty: function deleteProperty(target, propertyKey) {\n var desc = gOPD(anObject(target), propertyKey);\n return desc && !desc.configurable ? false : delete target[propertyKey];\n }\n});\n","'use strict';\n// 26.1.5 Reflect.enumerate(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar Enumerate = function (iterated) {\n this._t = anObject(iterated); // target\n this._i = 0; // next index\n var keys = this._k = []; // keys\n var key;\n for (key in iterated) keys.push(key);\n};\nrequire('./_iter-create')(Enumerate, 'Object', function () {\n var that = this;\n var keys = that._k;\n var key;\n do {\n if (that._i >= keys.length) return { value: undefined, done: true };\n } while (!((key = keys[that._i++]) in that._t));\n return { value: key, done: false };\n});\n\n$export($export.S, 'Reflect', {\n enumerate: function enumerate(target) {\n return new Enumerate(target);\n }\n});\n","// 26.1.7 Reflect.getOwnPropertyDescriptor(target, propertyKey)\nvar gOPD = require('./_object-gopd');\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) {\n return gOPD.f(anObject(target), propertyKey);\n }\n});\n","// 26.1.8 Reflect.getPrototypeOf(target)\nvar $export = require('./_export');\nvar getProto = require('./_object-gpo');\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n getPrototypeOf: function getPrototypeOf(target) {\n return getProto(anObject(target));\n }\n});\n","// 26.1.6 Reflect.get(target, propertyKey [, receiver])\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\n\nfunction get(target, propertyKey /* , receiver */) {\n var receiver = arguments.length < 3 ? target : arguments[2];\n var desc, proto;\n if (anObject(target) === receiver) return target[propertyKey];\n if (desc = gOPD.f(target, propertyKey)) return has(desc, 'value')\n ? desc.value\n : desc.get !== undefined\n ? desc.get.call(receiver)\n : undefined;\n if (isObject(proto = getPrototypeOf(target))) return get(proto, propertyKey, receiver);\n}\n\n$export($export.S, 'Reflect', { get: get });\n","// 26.1.9 Reflect.has(target, propertyKey)\nvar $export = require('./_export');\n\n$export($export.S, 'Reflect', {\n has: function has(target, propertyKey) {\n return propertyKey in target;\n }\n});\n","// 26.1.10 Reflect.isExtensible(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar $isExtensible = Object.isExtensible;\n\n$export($export.S, 'Reflect', {\n isExtensible: function isExtensible(target) {\n anObject(target);\n return $isExtensible ? $isExtensible(target) : true;\n }\n});\n","// 26.1.11 Reflect.ownKeys(target)\nvar $export = require('./_export');\n\n$export($export.S, 'Reflect', { ownKeys: require('./_own-keys') });\n","// 26.1.12 Reflect.preventExtensions(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar $preventExtensions = Object.preventExtensions;\n\n$export($export.S, 'Reflect', {\n preventExtensions: function preventExtensions(target) {\n anObject(target);\n try {\n if ($preventExtensions) $preventExtensions(target);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","// 26.1.14 Reflect.setPrototypeOf(target, proto)\nvar $export = require('./_export');\nvar setProto = require('./_set-proto');\n\nif (setProto) $export($export.S, 'Reflect', {\n setPrototypeOf: function setPrototypeOf(target, proto) {\n setProto.check(target, proto);\n try {\n setProto.set(target, proto);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","// 26.1.13 Reflect.set(target, propertyKey, V [, receiver])\nvar dP = require('./_object-dp');\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar createDesc = require('./_property-desc');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\n\nfunction set(target, propertyKey, V /* , receiver */) {\n var receiver = arguments.length < 4 ? target : arguments[3];\n var ownDesc = gOPD.f(anObject(target), propertyKey);\n var existingDescriptor, proto;\n if (!ownDesc) {\n if (isObject(proto = getPrototypeOf(target))) {\n return set(proto, propertyKey, V, receiver);\n }\n ownDesc = createDesc(0);\n }\n if (has(ownDesc, 'value')) {\n if (ownDesc.writable === false || !isObject(receiver)) return false;\n if (existingDescriptor = gOPD.f(receiver, propertyKey)) {\n if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false;\n existingDescriptor.value = V;\n dP.f(receiver, propertyKey, existingDescriptor);\n } else dP.f(receiver, propertyKey, createDesc(0, V));\n return true;\n }\n return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true);\n}\n\n$export($export.S, 'Reflect', { set: set });\n","var global = require('./_global');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar dP = require('./_object-dp').f;\nvar gOPN = require('./_object-gopn').f;\nvar isRegExp = require('./_is-regexp');\nvar $flags = require('./_flags');\nvar $RegExp = global.RegExp;\nvar Base = $RegExp;\nvar proto = $RegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n// \"new\" creates a new object, old webkit buggy here\nvar CORRECT_NEW = new $RegExp(re1) !== re1;\n\nif (require('./_descriptors') && (!CORRECT_NEW || require('./_fails')(function () {\n re2[require('./_wks')('match')] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i';\n}))) {\n $RegExp = function RegExp(p, f) {\n var tiRE = this instanceof $RegExp;\n var piRE = isRegExp(p);\n var fiU = f === undefined;\n return !tiRE && piRE && p.constructor === $RegExp && fiU ? p\n : inheritIfRequired(CORRECT_NEW\n ? new Base(piRE && !fiU ? p.source : p, f)\n : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f)\n , tiRE ? this : proto, $RegExp);\n };\n var proxy = function (key) {\n key in $RegExp || dP($RegExp, key, {\n configurable: true,\n get: function () { return Base[key]; },\n set: function (it) { Base[key] = it; }\n });\n };\n for (var keys = gOPN(Base), i = 0; keys.length > i;) proxy(keys[i++]);\n proto.constructor = $RegExp;\n $RegExp.prototype = proto;\n require('./_redefine')(global, 'RegExp', $RegExp);\n}\n\nrequire('./_set-species')('RegExp');\n","'use strict';\nvar regexpExec = require('./_regexp-exec');\nrequire('./_export')({\n target: 'RegExp',\n proto: true,\n forced: regexpExec !== /./.exec\n}, {\n exec: regexpExec\n});\n","// 21.2.5.3 get RegExp.prototype.flags()\nif (require('./_descriptors') && /./g.flags != 'g') require('./_object-dp').f(RegExp.prototype, 'flags', {\n configurable: true,\n get: require('./_flags')\n});\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@match logic\nrequire('./_fix-re-wks')('match', 1, function (defined, MATCH, $match, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[MATCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n function (regexp) {\n var res = maybeCallNative($match, regexp, this);\n if (res.done) return res.value;\n var rx = anObject(regexp);\n var S = String(this);\n if (!rx.global) return regExpExec(rx, S);\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = String(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar toInteger = require('./_to-integer');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\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\nrequire('./_fix-re-wks')('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) {\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 = defined(this);\n var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n return fn !== undefined\n ? fn.call(searchValue, O, replaceValue)\n : $replace.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 var res = maybeCallNative($replace, regexp, this, replaceValue);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\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 results.push(result);\n if (!global) break;\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\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 $replace.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","'use strict';\n\nvar anObject = require('./_an-object');\nvar sameValue = require('./_same-value');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@search logic\nrequire('./_fix-re-wks')('search', 1, function (defined, SEARCH, $search, maybeCallNative) {\n return [\n // `String.prototype.search` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.search\n function search(regexp) {\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[SEARCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n },\n // `RegExp.prototype[@@search]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search\n function (regexp) {\n var res = maybeCallNative($search, regexp, this);\n if (res.done) return res.value;\n var rx = anObject(regexp);\n var S = String(this);\n var previousLastIndex = rx.lastIndex;\n if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n var result = regExpExec(rx, S);\n if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n return result === null ? -1 : result.index;\n }\n ];\n});\n","'use strict';\n\nvar isRegExp = require('./_is-regexp');\nvar anObject = require('./_an-object');\nvar speciesConstructor = require('./_species-constructor');\nvar advanceStringIndex = require('./_advance-string-index');\nvar toLength = require('./_to-length');\nvar callRegExpExec = require('./_regexp-exec-abstract');\nvar regexpExec = require('./_regexp-exec');\nvar fails = require('./_fails');\nvar $min = Math.min;\nvar $push = [].push;\nvar $SPLIT = 'split';\nvar LENGTH = 'length';\nvar LAST_INDEX = 'lastIndex';\nvar MAX_UINT32 = 0xffffffff;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nrequire('./_fix-re-wks')('split', 2, function (defined, SPLIT, $split, 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(this);\n if (separator === undefined && limit === 0) return [];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) return $split.call(string, separator, limit);\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 var splitLimit = limit === undefined ? MAX_UINT32 : limit >>> 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[LAST_INDEX];\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));\n lastLength = match[0][LENGTH];\n lastLastIndex = lastIndex;\n if (output[LENGTH] >= splitLimit) break;\n }\n if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // 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] > splitLimit ? output.slice(0, splitLimit) : output;\n };\n // Chakra, V8\n } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : $split.call(this, separator, limit);\n };\n } else {\n internalSplit = $split;\n }\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 = defined(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 !== $split);\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});\n","'use strict';\nrequire('./es6.regexp.flags');\nvar anObject = require('./_an-object');\nvar $flags = require('./_flags');\nvar DESCRIPTORS = require('./_descriptors');\nvar TO_STRING = 'toString';\nvar $toString = /./[TO_STRING];\n\nvar define = function (fn) {\n require('./_redefine')(RegExp.prototype, TO_STRING, fn, true);\n};\n\n// 21.2.5.14 RegExp.prototype.toString()\nif (require('./_fails')(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) {\n define(function toString() {\n var R = anObject(this);\n return '/'.concat(R.source, '/',\n 'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);\n });\n// FF44- RegExp#toString has a wrong name\n} else if ($toString.name != TO_STRING) {\n define(function toString() {\n return $toString.call(this);\n });\n}\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar SET = 'Set';\n\n// 23.2 Set Objects\nmodule.exports = require('./_collection')(SET, function (get) {\n return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);\n }\n}, strong);\n","'use strict';\n// B.2.3.2 String.prototype.anchor(name)\nrequire('./_string-html')('anchor', function (createHTML) {\n return function anchor(name) {\n return createHTML(this, 'a', 'name', name);\n };\n});\n","'use strict';\n// B.2.3.3 String.prototype.big()\nrequire('./_string-html')('big', function (createHTML) {\n return function big() {\n return createHTML(this, 'big', '', '');\n };\n});\n","'use strict';\n// B.2.3.4 String.prototype.blink()\nrequire('./_string-html')('blink', function (createHTML) {\n return function blink() {\n return createHTML(this, 'blink', '', '');\n };\n});\n","'use strict';\n// B.2.3.5 String.prototype.bold()\nrequire('./_string-html')('bold', function (createHTML) {\n return function bold() {\n return createHTML(this, 'b', '', '');\n };\n});\n","'use strict';\nvar $export = require('./_export');\nvar $at = require('./_string-at')(false);\n$export($export.P, 'String', {\n // 21.1.3.3 String.prototype.codePointAt(pos)\n codePointAt: function codePointAt(pos) {\n return $at(this, pos);\n }\n});\n","// 21.1.3.6 String.prototype.endsWith(searchString [, endPosition])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar ENDS_WITH = 'endsWith';\nvar $endsWith = ''[ENDS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(ENDS_WITH), 'String', {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = context(this, searchString, ENDS_WITH);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = toLength(that.length);\n var end = endPosition === undefined ? len : Math.min(toLength(endPosition), len);\n var search = String(searchString);\n return $endsWith\n ? $endsWith.call(that, search, end)\n : that.slice(end - search.length, end) === search;\n }\n});\n","'use strict';\n// B.2.3.6 String.prototype.fixed()\nrequire('./_string-html')('fixed', function (createHTML) {\n return function fixed() {\n return createHTML(this, 'tt', '', '');\n };\n});\n","'use strict';\n// B.2.3.7 String.prototype.fontcolor(color)\nrequire('./_string-html')('fontcolor', function (createHTML) {\n return function fontcolor(color) {\n return createHTML(this, 'font', 'color', color);\n };\n});\n","'use strict';\n// B.2.3.8 String.prototype.fontsize(size)\nrequire('./_string-html')('fontsize', function (createHTML) {\n return function fontsize(size) {\n return createHTML(this, 'font', 'size', size);\n };\n});\n","var $export = require('./_export');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar fromCharCode = String.fromCharCode;\nvar $fromCodePoint = String.fromCodePoint;\n\n// length should be 1, old FF problem\n$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {\n // 21.1.2.2 String.fromCodePoint(...codePoints)\n fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars\n var res = [];\n var aLen = arguments.length;\n var i = 0;\n var code;\n while (aLen > i) {\n code = +arguments[i++];\n if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point');\n res.push(code < 0x10000\n ? fromCharCode(code)\n : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)\n );\n } return res.join('');\n }\n});\n","// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n'use strict';\nvar $export = require('./_export');\nvar context = require('./_string-context');\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(INCLUDES), 'String', {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~context(this, searchString, INCLUDES)\n .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\n// B.2.3.9 String.prototype.italics()\nrequire('./_string-html')('italics', function (createHTML) {\n return function italics() {\n return createHTML(this, 'i', '', '');\n };\n});\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","'use strict';\n// B.2.3.10 String.prototype.link(url)\nrequire('./_string-html')('link', function (createHTML) {\n return function link(url) {\n return createHTML(this, 'a', 'href', url);\n };\n});\n","var $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\n\n$export($export.S, 'String', {\n // 21.1.2.4 String.raw(callSite, ...substitutions)\n raw: function raw(callSite) {\n var tpl = toIObject(callSite.raw);\n var len = toLength(tpl.length);\n var aLen = arguments.length;\n var res = [];\n var i = 0;\n while (len > i) {\n res.push(String(tpl[i++]));\n if (i < aLen) res.push(String(arguments[i]));\n } return res.join('');\n }\n});\n","var $export = require('./_export');\n\n$export($export.P, 'String', {\n // 21.1.3.13 String.prototype.repeat(count)\n repeat: require('./_string-repeat')\n});\n","'use strict';\n// B.2.3.11 String.prototype.small()\nrequire('./_string-html')('small', function (createHTML) {\n return function small() {\n return createHTML(this, 'small', '', '');\n };\n});\n","// 21.1.3.18 String.prototype.startsWith(searchString [, position ])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar STARTS_WITH = 'startsWith';\nvar $startsWith = ''[STARTS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(STARTS_WITH), 'String', {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = context(this, searchString, STARTS_WITH);\n var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return $startsWith\n ? $startsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\n});\n","'use strict';\n// B.2.3.12 String.prototype.strike()\nrequire('./_string-html')('strike', function (createHTML) {\n return function strike() {\n return createHTML(this, 'strike', '', '');\n };\n});\n","'use strict';\n// B.2.3.13 String.prototype.sub()\nrequire('./_string-html')('sub', function (createHTML) {\n return function sub() {\n return createHTML(this, 'sub', '', '');\n };\n});\n","'use strict';\n// B.2.3.14 String.prototype.sup()\nrequire('./_string-html')('sup', function (createHTML) {\n return function sup() {\n return createHTML(this, 'sup', '', '');\n };\n});\n","'use strict';\n// 21.1.3.25 String.prototype.trim()\nrequire('./_string-trim')('trim', function ($trim) {\n return function trim() {\n return $trim(this, 3);\n };\n});\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toObject = require('./_to-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $GOPS = require('./_object-gops');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n $GOPS.f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });\n\n$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return $GOPS.f(toObject(it));\n }\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","'use strict';\nvar $export = require('./_export');\nvar $typed = require('./_typed');\nvar buffer = require('./_typed-buffer');\nvar anObject = require('./_an-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nvar isObject = require('./_is-object');\nvar ArrayBuffer = require('./_global').ArrayBuffer;\nvar speciesConstructor = require('./_species-constructor');\nvar $ArrayBuffer = buffer.ArrayBuffer;\nvar $DataView = buffer.DataView;\nvar $isView = $typed.ABV && ArrayBuffer.isView;\nvar $slice = $ArrayBuffer.prototype.slice;\nvar VIEW = $typed.VIEW;\nvar ARRAY_BUFFER = 'ArrayBuffer';\n\n$export($export.G + $export.W + $export.F * (ArrayBuffer !== $ArrayBuffer), { ArrayBuffer: $ArrayBuffer });\n\n$export($export.S + $export.F * !$typed.CONSTR, ARRAY_BUFFER, {\n // 24.1.3.1 ArrayBuffer.isView(arg)\n isView: function isView(it) {\n return $isView && $isView(it) || isObject(it) && VIEW in it;\n }\n});\n\n$export($export.P + $export.U + $export.F * require('./_fails')(function () {\n return !new $ArrayBuffer(2).slice(1, undefined).byteLength;\n}), ARRAY_BUFFER, {\n // 24.1.4.3 ArrayBuffer.prototype.slice(start, end)\n slice: function slice(start, end) {\n if ($slice !== undefined && end === undefined) return $slice.call(anObject(this), start); // FF fix\n var len = anObject(this).byteLength;\n var first = toAbsoluteIndex(start, len);\n var fin = toAbsoluteIndex(end === undefined ? len : end, len);\n var result = new (speciesConstructor(this, $ArrayBuffer))(toLength(fin - first));\n var viewS = new $DataView(this);\n var viewT = new $DataView(result);\n var index = 0;\n while (first < fin) {\n viewT.setUint8(index++, viewS.getUint8(first++));\n } return result;\n }\n});\n\nrequire('./_set-species')(ARRAY_BUFFER);\n","var $export = require('./_export');\n$export($export.G + $export.W + $export.F * !require('./_typed').ABV, {\n DataView: require('./_typed-buffer').DataView\n});\n","require('./_typed-array')('Float32', 4, function (init) {\n return function Float32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Float64', 8, function (init) {\n return function Float64Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Int16', 2, function (init) {\n return function Int16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Int32', 4, function (init) {\n return function Int32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Int8', 1, function (init) {\n return function Int8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint16', 2, function (init) {\n return function Uint16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint32', 4, function (init) {\n return function Uint32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8ClampedArray(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n}, true);\n","'use strict';\nvar global = require('./_global');\nvar each = require('./_array-methods')(0);\nvar redefine = require('./_redefine');\nvar meta = require('./_meta');\nvar assign = require('./_object-assign');\nvar weak = require('./_collection-weak');\nvar isObject = require('./_is-object');\nvar validate = require('./_validate-collection');\nvar NATIVE_WEAK_MAP = require('./_validate-collection');\nvar IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;\nvar WEAK_MAP = 'WeakMap';\nvar getWeak = meta.getWeak;\nvar isExtensible = Object.isExtensible;\nvar uncaughtFrozenStore = weak.ufstore;\nvar InternalMap;\n\nvar wrapper = function (get) {\n return function WeakMap() {\n return get(this, arguments.length > 0 ? arguments[0] : undefined);\n };\n};\n\nvar methods = {\n // 23.3.3.3 WeakMap.prototype.get(key)\n get: function get(key) {\n if (isObject(key)) {\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);\n return data ? data[this._i] : undefined;\n }\n },\n // 23.3.3.5 WeakMap.prototype.set(key, value)\n set: function set(key, value) {\n return weak.def(validate(this, WEAK_MAP), key, value);\n }\n};\n\n// 23.3 WeakMap Objects\nvar $WeakMap = module.exports = require('./_collection')(WEAK_MAP, wrapper, methods, weak, true, true);\n\n// IE11 WeakMap frozen keys fix\nif (NATIVE_WEAK_MAP && IS_IE11) {\n InternalMap = weak.getConstructor(wrapper, WEAK_MAP);\n assign(InternalMap.prototype, methods);\n meta.NEED = true;\n each(['delete', 'has', 'get', 'set'], function (key) {\n var proto = $WeakMap.prototype;\n var method = proto[key];\n redefine(proto, key, function (a, b) {\n // store frozen objects on internal weakmap shim\n if (isObject(a) && !isExtensible(a)) {\n if (!this._f) this._f = new InternalMap();\n var result = this._f[key](a, b);\n return key == 'set' ? this : result;\n // store all the rest on native weakmap\n } return method.call(this, a, b);\n });\n });\n}\n","'use strict';\nvar weak = require('./_collection-weak');\nvar validate = require('./_validate-collection');\nvar WEAK_SET = 'WeakSet';\n\n// 23.4 WeakSet Objects\nrequire('./_collection')(WEAK_SET, function (get) {\n return function WeakSet() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.4.3.1 WeakSet.prototype.add(value)\n add: function add(value) {\n return weak.def(validate(this, WEAK_SET), value, true);\n }\n}, weak, false, true);\n","'use strict';\n// https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flatMap\nvar $export = require('./_export');\nvar flattenIntoArray = require('./_flatten-into-array');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar aFunction = require('./_a-function');\nvar arraySpeciesCreate = require('./_array-species-create');\n\n$export($export.P, 'Array', {\n flatMap: function flatMap(callbackfn /* , thisArg */) {\n var O = toObject(this);\n var sourceLen, A;\n aFunction(callbackfn);\n sourceLen = toLength(O.length);\n A = arraySpeciesCreate(O, 0);\n flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments[1]);\n return A;\n }\n});\n\nrequire('./_add-to-unscopables')('flatMap');\n","'use strict';\n// https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flatten\nvar $export = require('./_export');\nvar flattenIntoArray = require('./_flatten-into-array');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar toInteger = require('./_to-integer');\nvar arraySpeciesCreate = require('./_array-species-create');\n\n$export($export.P, 'Array', {\n flatten: function flatten(/* depthArg = 1 */) {\n var depthArg = arguments[0];\n var O = toObject(this);\n var sourceLen = toLength(O.length);\n var A = arraySpeciesCreate(O, 0);\n flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toInteger(depthArg));\n return A;\n }\n});\n\nrequire('./_add-to-unscopables')('flatten');\n","'use strict';\n// https://github.com/tc39/Array.prototype.includes\nvar $export = require('./_export');\nvar $includes = require('./_array-includes')(true);\n\n$export($export.P, 'Array', {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\nrequire('./_add-to-unscopables')('includes');\n","// https://github.com/rwaldron/tc39-notes/blob/master/es6/2014-09/sept-25.md#510-globalasap-for-enqueuing-a-microtask\nvar $export = require('./_export');\nvar microtask = require('./_microtask')();\nvar process = require('./_global').process;\nvar isNode = require('./_cof')(process) == 'process';\n\n$export($export.G, {\n asap: function asap(fn) {\n var domain = isNode && process.domain;\n microtask(domain ? domain.bind(fn) : fn);\n }\n});\n","// https://github.com/ljharb/proposal-is-error\nvar $export = require('./_export');\nvar cof = require('./_cof');\n\n$export($export.S, 'Error', {\n isError: function isError(it) {\n return cof(it) === 'Error';\n }\n});\n","// https://github.com/tc39/proposal-global\nvar $export = require('./_export');\n\n$export($export.G, { global: require('./_global') });\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-map.from\nrequire('./_set-collection-from')('Map');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-map.of\nrequire('./_set-collection-of')('Map');\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar $export = require('./_export');\n\n$export($export.P + $export.R, 'Map', { toJSON: require('./_collection-to-json')('Map') });\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n clamp: function clamp(x, lower, upper) {\n return Math.min(upper, Math.max(lower, x));\n }\n});\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { DEG_PER_RAD: Math.PI / 180 });\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\nvar RAD_PER_DEG = 180 / Math.PI;\n\n$export($export.S, 'Math', {\n degrees: function degrees(radians) {\n return radians * RAD_PER_DEG;\n }\n});\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\nvar scale = require('./_math-scale');\nvar fround = require('./_math-fround');\n\n$export($export.S, 'Math', {\n fscale: function fscale(x, inLow, inHigh, outLow, outHigh) {\n return fround(scale(x, inLow, inHigh, outLow, outHigh));\n }\n});\n","// https://gist.github.com/BrendanEich/4294d5c212a6d2254703\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n iaddh: function iaddh(x0, x1, y0, y1) {\n var $x0 = x0 >>> 0;\n var $x1 = x1 >>> 0;\n var $y0 = y0 >>> 0;\n return $x1 + (y1 >>> 0) + (($x0 & $y0 | ($x0 | $y0) & ~($x0 + $y0 >>> 0)) >>> 31) | 0;\n }\n});\n","// https://gist.github.com/BrendanEich/4294d5c212a6d2254703\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n imulh: function imulh(u, v) {\n var UINT16 = 0xffff;\n var $u = +u;\n var $v = +v;\n var u0 = $u & UINT16;\n var v0 = $v & UINT16;\n var u1 = $u >> 16;\n var v1 = $v >> 16;\n var t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);\n return u1 * v1 + (t >> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >> 16);\n }\n});\n","// https://gist.github.com/BrendanEich/4294d5c212a6d2254703\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n isubh: function isubh(x0, x1, y0, y1) {\n var $x0 = x0 >>> 0;\n var $x1 = x1 >>> 0;\n var $y0 = y0 >>> 0;\n return $x1 - (y1 >>> 0) - ((~$x0 & $y0 | ~($x0 ^ $y0) & $x0 - $y0 >>> 0) >>> 31) | 0;\n }\n});\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { RAD_PER_DEG: 180 / Math.PI });\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\nvar DEG_PER_RAD = Math.PI / 180;\n\n$export($export.S, 'Math', {\n radians: function radians(degrees) {\n return degrees * DEG_PER_RAD;\n }\n});\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { scale: require('./_math-scale') });\n","// http://jfbastien.github.io/papers/Math.signbit.html\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { signbit: function signbit(x) {\n // eslint-disable-next-line no-self-compare\n return (x = +x) != x ? x : x == 0 ? 1 / x == Infinity : x > 0;\n} });\n","// https://gist.github.com/BrendanEich/4294d5c212a6d2254703\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n umulh: function umulh(u, v) {\n var UINT16 = 0xffff;\n var $u = +u;\n var $v = +v;\n var u0 = $u & UINT16;\n var v0 = $v & UINT16;\n var u1 = $u >>> 16;\n var v1 = $v >>> 16;\n var t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);\n return u1 * v1 + (t >>> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >>> 16);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar aFunction = require('./_a-function');\nvar $defineProperty = require('./_object-dp');\n\n// B.2.2.2 Object.prototype.__defineGetter__(P, getter)\nrequire('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {\n __defineGetter__: function __defineGetter__(P, getter) {\n $defineProperty.f(toObject(this), P, { get: aFunction(getter), enumerable: true, configurable: true });\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar aFunction = require('./_a-function');\nvar $defineProperty = require('./_object-dp');\n\n// B.2.2.3 Object.prototype.__defineSetter__(P, setter)\nrequire('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {\n __defineSetter__: function __defineSetter__(P, setter) {\n $defineProperty.f(toObject(this), P, { set: aFunction(setter), enumerable: true, configurable: true });\n }\n});\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $entries = require('./_object-to-array')(true);\n\n$export($export.S, 'Object', {\n entries: function entries(it) {\n return $entries(it);\n }\n});\n","// https://github.com/tc39/proposal-object-getownpropertydescriptors\nvar $export = require('./_export');\nvar ownKeys = require('./_own-keys');\nvar toIObject = require('./_to-iobject');\nvar gOPD = require('./_object-gopd');\nvar createProperty = require('./_create-property');\n\n$export($export.S, 'Object', {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIObject(object);\n var getDesc = gOPD.f;\n var keys = ownKeys(O);\n var result = {};\n var i = 0;\n var key, desc;\n while (keys.length > i) {\n desc = getDesc(O, key = keys[i++]);\n if (desc !== undefined) createProperty(result, key, desc);\n }\n return result;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar toPrimitive = require('./_to-primitive');\nvar getPrototypeOf = require('./_object-gpo');\nvar getOwnPropertyDescriptor = require('./_object-gopd').f;\n\n// B.2.2.4 Object.prototype.__lookupGetter__(P)\nrequire('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {\n __lookupGetter__: function __lookupGetter__(P) {\n var O = toObject(this);\n var K = toPrimitive(P, true);\n var D;\n do {\n if (D = getOwnPropertyDescriptor(O, K)) return D.get;\n } while (O = getPrototypeOf(O));\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar toPrimitive = require('./_to-primitive');\nvar getPrototypeOf = require('./_object-gpo');\nvar getOwnPropertyDescriptor = require('./_object-gopd').f;\n\n// B.2.2.5 Object.prototype.__lookupSetter__(P)\nrequire('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {\n __lookupSetter__: function __lookupSetter__(P) {\n var O = toObject(this);\n var K = toPrimitive(P, true);\n var D;\n do {\n if (D = getOwnPropertyDescriptor(O, K)) return D.set;\n } while (O = getPrototypeOf(O));\n }\n});\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $values = require('./_object-to-array')(false);\n\n$export($export.S, 'Object', {\n values: function values(it) {\n return $values(it);\n }\n});\n","'use strict';\n// https://github.com/zenparsing/es-observable\nvar $export = require('./_export');\nvar global = require('./_global');\nvar core = require('./_core');\nvar microtask = require('./_microtask')();\nvar OBSERVABLE = require('./_wks')('observable');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar anInstance = require('./_an-instance');\nvar redefineAll = require('./_redefine-all');\nvar hide = require('./_hide');\nvar forOf = require('./_for-of');\nvar RETURN = forOf.RETURN;\n\nvar getMethod = function (fn) {\n return fn == null ? undefined : aFunction(fn);\n};\n\nvar cleanupSubscription = function (subscription) {\n var cleanup = subscription._c;\n if (cleanup) {\n subscription._c = undefined;\n cleanup();\n }\n};\n\nvar subscriptionClosed = function (subscription) {\n return subscription._o === undefined;\n};\n\nvar closeSubscription = function (subscription) {\n if (!subscriptionClosed(subscription)) {\n subscription._o = undefined;\n cleanupSubscription(subscription);\n }\n};\n\nvar Subscription = function (observer, subscriber) {\n anObject(observer);\n this._c = undefined;\n this._o = observer;\n observer = new SubscriptionObserver(this);\n try {\n var cleanup = subscriber(observer);\n var subscription = cleanup;\n if (cleanup != null) {\n if (typeof cleanup.unsubscribe === 'function') cleanup = function () { subscription.unsubscribe(); };\n else aFunction(cleanup);\n this._c = cleanup;\n }\n } catch (e) {\n observer.error(e);\n return;\n } if (subscriptionClosed(this)) cleanupSubscription(this);\n};\n\nSubscription.prototype = redefineAll({}, {\n unsubscribe: function unsubscribe() { closeSubscription(this); }\n});\n\nvar SubscriptionObserver = function (subscription) {\n this._s = subscription;\n};\n\nSubscriptionObserver.prototype = redefineAll({}, {\n next: function next(value) {\n var subscription = this._s;\n if (!subscriptionClosed(subscription)) {\n var observer = subscription._o;\n try {\n var m = getMethod(observer.next);\n if (m) return m.call(observer, value);\n } catch (e) {\n try {\n closeSubscription(subscription);\n } finally {\n throw e;\n }\n }\n }\n },\n error: function error(value) {\n var subscription = this._s;\n if (subscriptionClosed(subscription)) throw value;\n var observer = subscription._o;\n subscription._o = undefined;\n try {\n var m = getMethod(observer.error);\n if (!m) throw value;\n value = m.call(observer, value);\n } catch (e) {\n try {\n cleanupSubscription(subscription);\n } finally {\n throw e;\n }\n } cleanupSubscription(subscription);\n return value;\n },\n complete: function complete(value) {\n var subscription = this._s;\n if (!subscriptionClosed(subscription)) {\n var observer = subscription._o;\n subscription._o = undefined;\n try {\n var m = getMethod(observer.complete);\n value = m ? m.call(observer, value) : undefined;\n } catch (e) {\n try {\n cleanupSubscription(subscription);\n } finally {\n throw e;\n }\n } cleanupSubscription(subscription);\n return value;\n }\n }\n});\n\nvar $Observable = function Observable(subscriber) {\n anInstance(this, $Observable, 'Observable', '_f')._f = aFunction(subscriber);\n};\n\nredefineAll($Observable.prototype, {\n subscribe: function subscribe(observer) {\n return new Subscription(observer, this._f);\n },\n forEach: function forEach(fn) {\n var that = this;\n return new (core.Promise || global.Promise)(function (resolve, reject) {\n aFunction(fn);\n var subscription = that.subscribe({\n next: function (value) {\n try {\n return fn(value);\n } catch (e) {\n reject(e);\n subscription.unsubscribe();\n }\n },\n error: reject,\n complete: resolve\n });\n });\n }\n});\n\nredefineAll($Observable, {\n from: function from(x) {\n var C = typeof this === 'function' ? this : $Observable;\n var method = getMethod(anObject(x)[OBSERVABLE]);\n if (method) {\n var observable = anObject(method.call(x));\n return observable.constructor === C ? observable : new C(function (observer) {\n return observable.subscribe(observer);\n });\n }\n return new C(function (observer) {\n var done = false;\n microtask(function () {\n if (!done) {\n try {\n if (forOf(x, false, function (it) {\n observer.next(it);\n if (done) return RETURN;\n }) === RETURN) return;\n } catch (e) {\n if (done) throw e;\n observer.error(e);\n return;\n } observer.complete();\n }\n });\n return function () { done = true; };\n });\n },\n of: function of() {\n for (var i = 0, l = arguments.length, items = new Array(l); i < l;) items[i] = arguments[i++];\n return new (typeof this === 'function' ? this : $Observable)(function (observer) {\n var done = false;\n microtask(function () {\n if (!done) {\n for (var j = 0; j < items.length; ++j) {\n observer.next(items[j]);\n if (done) return;\n } observer.complete();\n }\n });\n return function () { done = true; };\n });\n }\n});\n\nhide($Observable.prototype, OBSERVABLE, function () { return this; });\n\n$export($export.G, { Observable: $Observable });\n\nrequire('./_set-species')('Observable');\n","// https://github.com/tc39/proposal-promise-finally\n'use strict';\nvar $export = require('./_export');\nvar core = require('./_core');\nvar global = require('./_global');\nvar speciesConstructor = require('./_species-constructor');\nvar promiseResolve = require('./_promise-resolve');\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.Promise);\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n} });\n","'use strict';\n// https://github.com/tc39/proposal-promise-try\nvar $export = require('./_export');\nvar newPromiseCapability = require('./_new-promise-capability');\nvar perform = require('./_perform');\n\n$export($export.S, 'Promise', { 'try': function (callbackfn) {\n var promiseCapability = newPromiseCapability.f(this);\n var result = perform(callbackfn);\n (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n return promiseCapability.promise;\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar toMetaKey = metadata.key;\nvar ordinaryDefineOwnMetadata = metadata.set;\n\nmetadata.exp({ defineMetadata: function defineMetadata(metadataKey, metadataValue, target, targetKey) {\n ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), toMetaKey(targetKey));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar toMetaKey = metadata.key;\nvar getOrCreateMetadataMap = metadata.map;\nvar store = metadata.store;\n\nmetadata.exp({ deleteMetadata: function deleteMetadata(metadataKey, target /* , targetKey */) {\n var targetKey = arguments.length < 3 ? undefined : toMetaKey(arguments[2]);\n var metadataMap = getOrCreateMetadataMap(anObject(target), targetKey, false);\n if (metadataMap === undefined || !metadataMap['delete'](metadataKey)) return false;\n if (metadataMap.size) return true;\n var targetMetadata = store.get(target);\n targetMetadata['delete'](targetKey);\n return !!targetMetadata.size || store['delete'](target);\n} });\n","var Set = require('./es6.set');\nvar from = require('./_array-from-iterable');\nvar metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar ordinaryOwnMetadataKeys = metadata.keys;\nvar toMetaKey = metadata.key;\n\nvar ordinaryMetadataKeys = function (O, P) {\n var oKeys = ordinaryOwnMetadataKeys(O, P);\n var parent = getPrototypeOf(O);\n if (parent === null) return oKeys;\n var pKeys = ordinaryMetadataKeys(parent, P);\n return pKeys.length ? oKeys.length ? from(new Set(oKeys.concat(pKeys))) : pKeys : oKeys;\n};\n\nmetadata.exp({ getMetadataKeys: function getMetadataKeys(target /* , targetKey */) {\n return ordinaryMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar ordinaryHasOwnMetadata = metadata.has;\nvar ordinaryGetOwnMetadata = metadata.get;\nvar toMetaKey = metadata.key;\n\nvar ordinaryGetMetadata = function (MetadataKey, O, P) {\n var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn) return ordinaryGetOwnMetadata(MetadataKey, O, P);\n var parent = getPrototypeOf(O);\n return parent !== null ? ordinaryGetMetadata(MetadataKey, parent, P) : undefined;\n};\n\nmetadata.exp({ getMetadata: function getMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryGetMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar ordinaryOwnMetadataKeys = metadata.keys;\nvar toMetaKey = metadata.key;\n\nmetadata.exp({ getOwnMetadataKeys: function getOwnMetadataKeys(target /* , targetKey */) {\n return ordinaryOwnMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar ordinaryGetOwnMetadata = metadata.get;\nvar toMetaKey = metadata.key;\n\nmetadata.exp({ getOwnMetadata: function getOwnMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryGetOwnMetadata(metadataKey, anObject(target)\n , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar ordinaryHasOwnMetadata = metadata.has;\nvar toMetaKey = metadata.key;\n\nvar ordinaryHasMetadata = function (MetadataKey, O, P) {\n var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn) return true;\n var parent = getPrototypeOf(O);\n return parent !== null ? ordinaryHasMetadata(MetadataKey, parent, P) : false;\n};\n\nmetadata.exp({ hasMetadata: function hasMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryHasMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar ordinaryHasOwnMetadata = metadata.has;\nvar toMetaKey = metadata.key;\n\nmetadata.exp({ hasOwnMetadata: function hasOwnMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryHasOwnMetadata(metadataKey, anObject(target)\n , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var $metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar toMetaKey = $metadata.key;\nvar ordinaryDefineOwnMetadata = $metadata.set;\n\n$metadata.exp({ metadata: function metadata(metadataKey, metadataValue) {\n return function decorator(target, targetKey) {\n ordinaryDefineOwnMetadata(\n metadataKey, metadataValue,\n (targetKey !== undefined ? anObject : aFunction)(target),\n toMetaKey(targetKey)\n );\n };\n} });\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-set.from\nrequire('./_set-collection-from')('Set');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-set.of\nrequire('./_set-collection-of')('Set');\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar $export = require('./_export');\n\n$export($export.P + $export.R, 'Set', { toJSON: require('./_collection-to-json')('Set') });\n","'use strict';\n// https://github.com/mathiasbynens/String.prototype.at\nvar $export = require('./_export');\nvar $at = require('./_string-at')(true);\nvar $fails = require('./_fails');\n\nvar FORCED = $fails(function () {\n return '𠮷'.at(0) !== '𠮷';\n});\n\n$export($export.P + $export.F * FORCED, 'String', {\n at: function at(pos) {\n return $at(this, pos);\n }\n});\n","'use strict';\n// https://tc39.github.io/String.prototype.matchAll/\nvar $export = require('./_export');\nvar defined = require('./_defined');\nvar toLength = require('./_to-length');\nvar isRegExp = require('./_is-regexp');\nvar getFlags = require('./_flags');\nvar RegExpProto = RegExp.prototype;\n\nvar $RegExpStringIterator = function (regexp, string) {\n this._r = regexp;\n this._s = string;\n};\n\nrequire('./_iter-create')($RegExpStringIterator, 'RegExp String', function next() {\n var match = this._r.exec(this._s);\n return { value: match, done: match === null };\n});\n\n$export($export.P, 'String', {\n matchAll: function matchAll(regexp) {\n defined(this);\n if (!isRegExp(regexp)) throw TypeError(regexp + ' is not a regexp!');\n var S = String(this);\n var flags = 'flags' in RegExpProto ? String(regexp.flags) : getFlags.call(regexp);\n var rx = new RegExp(regexp.source, ~flags.indexOf('g') ? flags : 'g' + flags);\n rx.lastIndex = toLength(regexp.lastIndex);\n return new $RegExpStringIterator(rx, S);\n }\n});\n","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export');\nvar $pad = require('./_string-pad');\nvar userAgent = require('./_user-agent');\n\n// https://github.com/zloirock/core-js/issues/280\nvar WEBKIT_BUG = /Version\\/10\\.\\d+(\\.\\d+)?( Mobile\\/\\w+)? Safari\\//.test(userAgent);\n\n$export($export.P + $export.F * WEBKIT_BUG, 'String', {\n padEnd: function padEnd(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false);\n }\n});\n","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export');\nvar $pad = require('./_string-pad');\nvar userAgent = require('./_user-agent');\n\n// https://github.com/zloirock/core-js/issues/280\nvar WEBKIT_BUG = /Version\\/10\\.\\d+(\\.\\d+)?( Mobile\\/\\w+)? Safari\\//.test(userAgent);\n\n$export($export.P + $export.F * WEBKIT_BUG, 'String', {\n padStart: function padStart(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);\n }\n});\n","'use strict';\n// https://github.com/sebmarkbage/ecmascript-string-left-right-trim\nrequire('./_string-trim')('trimLeft', function ($trim) {\n return function trimLeft() {\n return $trim(this, 1);\n };\n}, 'trimStart');\n","'use strict';\n// https://github.com/sebmarkbage/ecmascript-string-left-right-trim\nrequire('./_string-trim')('trimRight', function ($trim) {\n return function trimRight() {\n return $trim(this, 2);\n };\n}, 'trimEnd');\n","require('./_wks-define')('asyncIterator');\n","require('./_wks-define')('observable');\n","// https://github.com/tc39/proposal-global\nvar $export = require('./_export');\n\n$export($export.S, 'System', { global: require('./_global') });\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.from\nrequire('./_set-collection-from')('WeakMap');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.of\nrequire('./_set-collection-of')('WeakMap');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-weakset.from\nrequire('./_set-collection-from')('WeakSet');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-weakset.of\nrequire('./_set-collection-of')('WeakSet');\n","var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n","var $export = require('./_export');\nvar $task = require('./_task');\n$export($export.G + $export.B, {\n setImmediate: $task.set,\n clearImmediate: $task.clear\n});\n","// ie9- setTimeout & setInterval additional parameters fix\nvar global = require('./_global');\nvar $export = require('./_export');\nvar userAgent = require('./_user-agent');\nvar slice = [].slice;\nvar MSIE = /MSIE .\\./.test(userAgent); // <- dirty ie9- check\nvar wrap = function (set) {\n return function (fn, time /* , ...args */) {\n var boundArgs = arguments.length > 2;\n var args = boundArgs ? slice.call(arguments, 2) : false;\n return set(boundArgs ? function () {\n // eslint-disable-next-line no-new-func\n (typeof fn == 'function' ? fn : Function(fn)).apply(this, args);\n } : fn, time);\n };\n};\n$export($export.G + $export.B + $export.F * MSIE, {\n setTimeout: wrap(global.setTimeout),\n setInterval: wrap(global.setInterval)\n});\n","require('./modules/es6.symbol');\nrequire('./modules/es6.object.create');\nrequire('./modules/es6.object.define-property');\nrequire('./modules/es6.object.define-properties');\nrequire('./modules/es6.object.get-own-property-descriptor');\nrequire('./modules/es6.object.get-prototype-of');\nrequire('./modules/es6.object.keys');\nrequire('./modules/es6.object.get-own-property-names');\nrequire('./modules/es6.object.freeze');\nrequire('./modules/es6.object.seal');\nrequire('./modules/es6.object.prevent-extensions');\nrequire('./modules/es6.object.is-frozen');\nrequire('./modules/es6.object.is-sealed');\nrequire('./modules/es6.object.is-extensible');\nrequire('./modules/es6.object.assign');\nrequire('./modules/es6.object.is');\nrequire('./modules/es6.object.set-prototype-of');\nrequire('./modules/es6.object.to-string');\nrequire('./modules/es6.function.bind');\nrequire('./modules/es6.function.name');\nrequire('./modules/es6.function.has-instance');\nrequire('./modules/es6.parse-int');\nrequire('./modules/es6.parse-float');\nrequire('./modules/es6.number.constructor');\nrequire('./modules/es6.number.to-fixed');\nrequire('./modules/es6.number.to-precision');\nrequire('./modules/es6.number.epsilon');\nrequire('./modules/es6.number.is-finite');\nrequire('./modules/es6.number.is-integer');\nrequire('./modules/es6.number.is-nan');\nrequire('./modules/es6.number.is-safe-integer');\nrequire('./modules/es6.number.max-safe-integer');\nrequire('./modules/es6.number.min-safe-integer');\nrequire('./modules/es6.number.parse-float');\nrequire('./modules/es6.number.parse-int');\nrequire('./modules/es6.math.acosh');\nrequire('./modules/es6.math.asinh');\nrequire('./modules/es6.math.atanh');\nrequire('./modules/es6.math.cbrt');\nrequire('./modules/es6.math.clz32');\nrequire('./modules/es6.math.cosh');\nrequire('./modules/es6.math.expm1');\nrequire('./modules/es6.math.fround');\nrequire('./modules/es6.math.hypot');\nrequire('./modules/es6.math.imul');\nrequire('./modules/es6.math.log10');\nrequire('./modules/es6.math.log1p');\nrequire('./modules/es6.math.log2');\nrequire('./modules/es6.math.sign');\nrequire('./modules/es6.math.sinh');\nrequire('./modules/es6.math.tanh');\nrequire('./modules/es6.math.trunc');\nrequire('./modules/es6.string.from-code-point');\nrequire('./modules/es6.string.raw');\nrequire('./modules/es6.string.trim');\nrequire('./modules/es6.string.iterator');\nrequire('./modules/es6.string.code-point-at');\nrequire('./modules/es6.string.ends-with');\nrequire('./modules/es6.string.includes');\nrequire('./modules/es6.string.repeat');\nrequire('./modules/es6.string.starts-with');\nrequire('./modules/es6.string.anchor');\nrequire('./modules/es6.string.big');\nrequire('./modules/es6.string.blink');\nrequire('./modules/es6.string.bold');\nrequire('./modules/es6.string.fixed');\nrequire('./modules/es6.string.fontcolor');\nrequire('./modules/es6.string.fontsize');\nrequire('./modules/es6.string.italics');\nrequire('./modules/es6.string.link');\nrequire('./modules/es6.string.small');\nrequire('./modules/es6.string.strike');\nrequire('./modules/es6.string.sub');\nrequire('./modules/es6.string.sup');\nrequire('./modules/es6.date.now');\nrequire('./modules/es6.date.to-json');\nrequire('./modules/es6.date.to-iso-string');\nrequire('./modules/es6.date.to-string');\nrequire('./modules/es6.date.to-primitive');\nrequire('./modules/es6.array.is-array');\nrequire('./modules/es6.array.from');\nrequire('./modules/es6.array.of');\nrequire('./modules/es6.array.join');\nrequire('./modules/es6.array.slice');\nrequire('./modules/es6.array.sort');\nrequire('./modules/es6.array.for-each');\nrequire('./modules/es6.array.map');\nrequire('./modules/es6.array.filter');\nrequire('./modules/es6.array.some');\nrequire('./modules/es6.array.every');\nrequire('./modules/es6.array.reduce');\nrequire('./modules/es6.array.reduce-right');\nrequire('./modules/es6.array.index-of');\nrequire('./modules/es6.array.last-index-of');\nrequire('./modules/es6.array.copy-within');\nrequire('./modules/es6.array.fill');\nrequire('./modules/es6.array.find');\nrequire('./modules/es6.array.find-index');\nrequire('./modules/es6.array.species');\nrequire('./modules/es6.array.iterator');\nrequire('./modules/es6.regexp.constructor');\nrequire('./modules/es6.regexp.exec');\nrequire('./modules/es6.regexp.to-string');\nrequire('./modules/es6.regexp.flags');\nrequire('./modules/es6.regexp.match');\nrequire('./modules/es6.regexp.replace');\nrequire('./modules/es6.regexp.search');\nrequire('./modules/es6.regexp.split');\nrequire('./modules/es6.promise');\nrequire('./modules/es6.map');\nrequire('./modules/es6.set');\nrequire('./modules/es6.weak-map');\nrequire('./modules/es6.weak-set');\nrequire('./modules/es6.typed.array-buffer');\nrequire('./modules/es6.typed.data-view');\nrequire('./modules/es6.typed.int8-array');\nrequire('./modules/es6.typed.uint8-array');\nrequire('./modules/es6.typed.uint8-clamped-array');\nrequire('./modules/es6.typed.int16-array');\nrequire('./modules/es6.typed.uint16-array');\nrequire('./modules/es6.typed.int32-array');\nrequire('./modules/es6.typed.uint32-array');\nrequire('./modules/es6.typed.float32-array');\nrequire('./modules/es6.typed.float64-array');\nrequire('./modules/es6.reflect.apply');\nrequire('./modules/es6.reflect.construct');\nrequire('./modules/es6.reflect.define-property');\nrequire('./modules/es6.reflect.delete-property');\nrequire('./modules/es6.reflect.enumerate');\nrequire('./modules/es6.reflect.get');\nrequire('./modules/es6.reflect.get-own-property-descriptor');\nrequire('./modules/es6.reflect.get-prototype-of');\nrequire('./modules/es6.reflect.has');\nrequire('./modules/es6.reflect.is-extensible');\nrequire('./modules/es6.reflect.own-keys');\nrequire('./modules/es6.reflect.prevent-extensions');\nrequire('./modules/es6.reflect.set');\nrequire('./modules/es6.reflect.set-prototype-of');\nrequire('./modules/es7.array.includes');\nrequire('./modules/es7.array.flat-map');\nrequire('./modules/es7.array.flatten');\nrequire('./modules/es7.string.at');\nrequire('./modules/es7.string.pad-start');\nrequire('./modules/es7.string.pad-end');\nrequire('./modules/es7.string.trim-left');\nrequire('./modules/es7.string.trim-right');\nrequire('./modules/es7.string.match-all');\nrequire('./modules/es7.symbol.async-iterator');\nrequire('./modules/es7.symbol.observable');\nrequire('./modules/es7.object.get-own-property-descriptors');\nrequire('./modules/es7.object.values');\nrequire('./modules/es7.object.entries');\nrequire('./modules/es7.object.define-getter');\nrequire('./modules/es7.object.define-setter');\nrequire('./modules/es7.object.lookup-getter');\nrequire('./modules/es7.object.lookup-setter');\nrequire('./modules/es7.map.to-json');\nrequire('./modules/es7.set.to-json');\nrequire('./modules/es7.map.of');\nrequire('./modules/es7.set.of');\nrequire('./modules/es7.weak-map.of');\nrequire('./modules/es7.weak-set.of');\nrequire('./modules/es7.map.from');\nrequire('./modules/es7.set.from');\nrequire('./modules/es7.weak-map.from');\nrequire('./modules/es7.weak-set.from');\nrequire('./modules/es7.global');\nrequire('./modules/es7.system.global');\nrequire('./modules/es7.error.is-error');\nrequire('./modules/es7.math.clamp');\nrequire('./modules/es7.math.deg-per-rad');\nrequire('./modules/es7.math.degrees');\nrequire('./modules/es7.math.fscale');\nrequire('./modules/es7.math.iaddh');\nrequire('./modules/es7.math.isubh');\nrequire('./modules/es7.math.imulh');\nrequire('./modules/es7.math.rad-per-deg');\nrequire('./modules/es7.math.radians');\nrequire('./modules/es7.math.scale');\nrequire('./modules/es7.math.umulh');\nrequire('./modules/es7.math.signbit');\nrequire('./modules/es7.promise.finally');\nrequire('./modules/es7.promise.try');\nrequire('./modules/es7.reflect.define-metadata');\nrequire('./modules/es7.reflect.delete-metadata');\nrequire('./modules/es7.reflect.get-metadata');\nrequire('./modules/es7.reflect.get-metadata-keys');\nrequire('./modules/es7.reflect.get-own-metadata');\nrequire('./modules/es7.reflect.get-own-metadata-keys');\nrequire('./modules/es7.reflect.has-metadata');\nrequire('./modules/es7.reflect.has-own-metadata');\nrequire('./modules/es7.reflect.metadata');\nrequire('./modules/es7.asap');\nrequire('./modules/es7.observable');\nrequire('./modules/web.timers');\nrequire('./modules/web.immediate');\nrequire('./modules/web.dom.iterable');\nmodule.exports = require('./modules/_core');\n","\n/**\n * Expose `Emitter`.\n */\n\nmodule.exports = Emitter;\n\n/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nfunction Emitter(obj) {\n if (obj) return mixin(obj);\n};\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks[event] = this._callbacks[event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n var self = this;\n this._callbacks = this._callbacks || {};\n\n function on() {\n self.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks[event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks[event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n var args = [].slice.call(arguments, 1)\n , callbacks = this._callbacks[event];\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks[event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/**\n * martinez v0.4.3\n * Martinez polygon clipping algorithm, does boolean operation on polygons (multipolygons, polygons with holes etc): intersection, union, difference, xor\n *\n * @author Alex Milevski <info@w8r.name>\n * @license MIT\n * @preserve\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (factory((global.martinez = {})));\n}(this, (function (exports) { 'use strict';\n\n function DEFAULT_COMPARE (a, b) { return a > b ? 1 : a < b ? -1 : 0; }\n\n var SplayTree = function SplayTree(compare, noDuplicates) {\n if ( compare === void 0 ) compare = DEFAULT_COMPARE;\n if ( noDuplicates === void 0 ) noDuplicates = false;\n\n this._compare = compare;\n this._root = null;\n this._size = 0;\n this._noDuplicates = !!noDuplicates;\n };\n\n var prototypeAccessors = { size: { configurable: true } };\n\n\n SplayTree.prototype.rotateLeft = function rotateLeft (x) {\n var y = x.right;\n if (y) {\n x.right = y.left;\n if (y.left) { y.left.parent = x; }\n y.parent = x.parent;\n }\n\n if (!x.parent) { this._root = y; }\n else if (x === x.parent.left) { x.parent.left = y; }\n else { x.parent.right = y; }\n if (y) { y.left = x; }\n x.parent = y;\n };\n\n\n SplayTree.prototype.rotateRight = function rotateRight (x) {\n var y = x.left;\n if (y) {\n x.left = y.right;\n if (y.right) { y.right.parent = x; }\n y.parent = x.parent;\n }\n\n if (!x.parent) { this._root = y; }\n else if(x === x.parent.left) { x.parent.left = y; }\n else { x.parent.right = y; }\n if (y) { y.right = x; }\n x.parent = y;\n };\n\n\n SplayTree.prototype._splay = function _splay (x) {\n var this$1 = this;\n\n while (x.parent) {\n var p = x.parent;\n if (!p.parent) {\n if (p.left === x) { this$1.rotateRight(p); }\n else { this$1.rotateLeft(p); }\n } else if (p.left === x && p.parent.left === p) {\n this$1.rotateRight(p.parent);\n this$1.rotateRight(p);\n } else if (p.right === x && p.parent.right === p) {\n this$1.rotateLeft(p.parent);\n this$1.rotateLeft(p);\n } else if (p.left === x && p.parent.right === p) {\n this$1.rotateRight(p);\n this$1.rotateLeft(p);\n } else {\n this$1.rotateLeft(p);\n this$1.rotateRight(p);\n }\n }\n };\n\n\n SplayTree.prototype.splay = function splay (x) {\n var this$1 = this;\n\n var p, gp, ggp, l, r;\n\n while (x.parent) {\n p = x.parent;\n gp = p.parent;\n\n if (gp && gp.parent) {\n ggp = gp.parent;\n if (ggp.left === gp) { ggp.left= x; }\n else { ggp.right = x; }\n x.parent = ggp;\n } else {\n x.parent = null;\n this$1._root = x;\n }\n\n l = x.left; r = x.right;\n\n if (x === p.left) { // left\n if (gp) {\n if (gp.left === p) {\n /* zig-zig */\n if (p.right) {\n gp.left = p.right;\n gp.left.parent = gp;\n } else { gp.left = null; }\n\n p.right = gp;\n gp.parent = p;\n } else {\n /* zig-zag */\n if (l) {\n gp.right = l;\n l.parent = gp;\n } else { gp.right = null; }\n\n x.left = gp;\n gp.parent = x;\n }\n }\n if (r) {\n p.left = r;\n r.parent = p;\n } else { p.left = null; }\n\n x.right= p;\n p.parent = x;\n } else { // right\n if (gp) {\n if (gp.right === p) {\n /* zig-zig */\n if (p.left) {\n gp.right = p.left;\n gp.right.parent = gp;\n } else { gp.right = null; }\n\n p.left = gp;\n gp.parent = p;\n } else {\n /* zig-zag */\n if (r) {\n gp.left = r;\n r.parent = gp;\n } else { gp.left = null; }\n\n x.right = gp;\n gp.parent = x;\n }\n }\n if (l) {\n p.right = l;\n l.parent = p;\n } else { p.right = null; }\n\n x.left = p;\n p.parent = x;\n }\n }\n };\n\n\n SplayTree.prototype.replace = function replace (u, v) {\n if (!u.parent) { this._root = v; }\n else if (u === u.parent.left) { u.parent.left = v; }\n else { u.parent.right = v; }\n if (v) { v.parent = u.parent; }\n };\n\n\n SplayTree.prototype.minNode = function minNode (u) {\n if ( u === void 0 ) u = this._root;\n\n if (u) { while (u.left) { u = u.left; } }\n return u;\n };\n\n\n SplayTree.prototype.maxNode = function maxNode (u) {\n if ( u === void 0 ) u = this._root;\n\n if (u) { while (u.right) { u = u.right; } }\n return u;\n };\n\n\n SplayTree.prototype.insert = function insert (key, data) {\n var z = this._root;\n var p = null;\n var comp = this._compare;\n var cmp;\n\n if (this._noDuplicates) {\n while (z) {\n p = z;\n cmp = comp(z.key, key);\n if (cmp === 0) { return; }\n else if (comp(z.key, key) < 0) { z = z.right; }\n else { z = z.left; }\n }\n } else {\n while (z) {\n p = z;\n if (comp(z.key, key) < 0) { z = z.right; }\n else { z = z.left; }\n }\n }\n\n z = { key: key, data: data, left: null, right: null, parent: p };\n\n if (!p) { this._root = z; }\n else if (comp(p.key, z.key) < 0) { p.right = z; }\n else { p.left= z; }\n\n this.splay(z);\n this._size++;\n return z;\n };\n\n\n SplayTree.prototype.find = function find (key) {\n var z = this._root;\n var comp = this._compare;\n while (z) {\n var cmp = comp(z.key, key);\n if (cmp < 0) { z = z.right; }\n else if (cmp > 0) { z = z.left; }\n else { return z; }\n }\n return null;\n };\n\n /**\n * Whether the tree contains a node with the given key\n * @param{Key} key\n * @return {boolean} true/false\n */\n SplayTree.prototype.contains = function contains (key) {\n var node = this._root;\n var comparator = this._compare;\n while (node){\n var cmp = comparator(key, node.key);\n if (cmp === 0) { return true; }\n else if (cmp < 0) { node = node.left; }\n else { node = node.right; }\n }\n\n return false;\n };\n\n\n SplayTree.prototype.remove = function remove (key) {\n var z = this.find(key);\n\n if (!z) { return false; }\n\n this.splay(z);\n\n if (!z.left) { this.replace(z, z.right); }\n else if (!z.right) { this.replace(z, z.left); }\n else {\n var y = this.minNode(z.right);\n if (y.parent !== z) {\n this.replace(y, y.right);\n y.right = z.right;\n y.right.parent = y;\n }\n this.replace(z, y);\n y.left = z.left;\n y.left.parent = y;\n }\n\n this._size--;\n return true;\n };\n\n\n SplayTree.prototype.removeNode = function removeNode (z) {\n if (!z) { return false; }\n\n this.splay(z);\n\n if (!z.left) { this.replace(z, z.right); }\n else if (!z.right) { this.replace(z, z.left); }\n else {\n var y = this.minNode(z.right);\n if (y.parent !== z) {\n this.replace(y, y.right);\n y.right = z.right;\n y.right.parent = y;\n }\n this.replace(z, y);\n y.left = z.left;\n y.left.parent = y;\n }\n\n this._size--;\n return true;\n };\n\n\n SplayTree.prototype.erase = function erase (key) {\n var z = this.find(key);\n if (!z) { return; }\n\n this.splay(z);\n\n var s = z.left;\n var t = z.right;\n\n var sMax = null;\n if (s) {\n s.parent = null;\n sMax = this.maxNode(s);\n this.splay(sMax);\n this._root = sMax;\n }\n if (t) {\n if (s) { sMax.right = t; }\n else { this._root = t; }\n t.parent = sMax;\n }\n\n this._size--;\n };\n\n /**\n * Removes and returns the node with smallest key\n * @return {?Node}\n */\n SplayTree.prototype.pop = function pop () {\n var node = this._root, returnValue = null;\n if (node) {\n while (node.left) { node = node.left; }\n returnValue = { key: node.key, data: node.data };\n this.remove(node.key);\n }\n return returnValue;\n };\n\n\n /* eslint-disable class-methods-use-this */\n\n /**\n * Successor node\n * @param{Node} node\n * @return {?Node}\n */\n SplayTree.prototype.next = function next (node) {\n var successor = node;\n if (successor) {\n if (successor.right) {\n successor = successor.right;\n while (successor && successor.left) { successor = successor.left; }\n } else {\n successor = node.parent;\n while (successor && successor.right === node) {\n node = successor; successor = successor.parent;\n }\n }\n }\n return successor;\n };\n\n\n /**\n * Predecessor node\n * @param{Node} node\n * @return {?Node}\n */\n SplayTree.prototype.prev = function prev (node) {\n var predecessor = node;\n if (predecessor) {\n if (predecessor.left) {\n predecessor = predecessor.left;\n while (predecessor && predecessor.right) { predecessor = predecessor.right; }\n } else {\n predecessor = node.parent;\n while (predecessor && predecessor.left === node) {\n node = predecessor;\n predecessor = predecessor.parent;\n }\n }\n }\n return predecessor;\n };\n /* eslint-enable class-methods-use-this */\n\n\n /**\n * @param{forEachCallback} callback\n * @return {SplayTree}\n */\n SplayTree.prototype.forEach = function forEach (callback) {\n var current = this._root;\n var s = [], done = false, i = 0;\n\n while (!done) {\n // Reach the left most Node of the current Node\n if (current) {\n // Place pointer to a tree node on the stack\n // before traversing the node's left subtree\n s.push(current);\n current = current.left;\n } else {\n // BackTrack from the empty subtree and visit the Node\n // at the top of the stack; however, if the stack is\n // empty you are done\n if (s.length > 0) {\n current = s.pop();\n callback(current, i++);\n\n // We have visited the node and its left\n // subtree. Now, it's right subtree's turn\n current = current.right;\n } else { done = true; }\n }\n }\n return this;\n };\n\n\n /**\n * Walk key range from `low` to `high`. Stops if `fn` returns a value.\n * @param{Key} low\n * @param{Key} high\n * @param{Function} fn\n * @param{*?} ctx\n * @return {SplayTree}\n */\n SplayTree.prototype.range = function range (low, high, fn, ctx) {\n var this$1 = this;\n\n var Q = [];\n var compare = this._compare;\n var node = this._root, cmp;\n\n while (Q.length !== 0 || node) {\n if (node) {\n Q.push(node);\n node = node.left;\n } else {\n node = Q.pop();\n cmp = compare(node.key, high);\n if (cmp > 0) {\n break;\n } else if (compare(node.key, low) >= 0) {\n if (fn.call(ctx, node)) { return this$1; } // stop if smth is returned\n }\n node = node.right;\n }\n }\n return this;\n };\n\n /**\n * Returns all keys in order\n * @return {Array<Key>}\n */\n SplayTree.prototype.keys = function keys () {\n var current = this._root;\n var s = [], r = [], done = false;\n\n while (!done) {\n if (current) {\n s.push(current);\n current = current.left;\n } else {\n if (s.length > 0) {\n current = s.pop();\n r.push(current.key);\n current = current.right;\n } else { done = true; }\n }\n }\n return r;\n };\n\n\n /**\n * Returns `data` fields of all nodes in order.\n * @return {Array<Value>}\n */\n SplayTree.prototype.values = function values () {\n var current = this._root;\n var s = [], r = [], done = false;\n\n while (!done) {\n if (current) {\n s.push(current);\n current = current.left;\n } else {\n if (s.length > 0) {\n current = s.pop();\n r.push(current.data);\n current = current.right;\n } else { done = true; }\n }\n }\n return r;\n };\n\n\n /**\n * Returns node at given index\n * @param{number} index\n * @return {?Node}\n */\n SplayTree.prototype.at = function at (index) {\n // removed after a consideration, more misleading than useful\n // index = index % this.size;\n // if (index < 0) index = this.size - index;\n\n var current = this._root;\n var s = [], done = false, i = 0;\n\n while (!done) {\n if (current) {\n s.push(current);\n current = current.left;\n } else {\n if (s.length > 0) {\n current = s.pop();\n if (i === index) { return current; }\n i++;\n current = current.right;\n } else { done = true; }\n }\n }\n return null;\n };\n\n /**\n * Bulk-load items. Both array have to be same size\n * @param{Array<Key>} keys\n * @param{Array<Value>}[values]\n * @param{Boolean} [presort=false] Pre-sort keys and values, using\n * tree's comparator. Sorting is done\n * in-place\n * @return {AVLTree}\n */\n SplayTree.prototype.load = function load (keys, values, presort) {\n if ( keys === void 0 ) keys = [];\n if ( values === void 0 ) values = [];\n if ( presort === void 0 ) presort = false;\n\n if (this._size !== 0) { throw new Error('bulk-load: tree is not empty'); }\n var size = keys.length;\n if (presort) { sort(keys, values, 0, size - 1, this._compare); }\n this._root = loadRecursive(null, keys, values, 0, size);\n this._size = size;\n return this;\n };\n\n\n SplayTree.prototype.min = function min () {\n var node = this.minNode(this._root);\n if (node) { return node.key; }\n else { return null; }\n };\n\n\n SplayTree.prototype.max = function max () {\n var node = this.maxNode(this._root);\n if (node) { return node.key; }\n else { return null; }\n };\n\n SplayTree.prototype.isEmpty = function isEmpty () { return this._root === null; };\n prototypeAccessors.size.get = function () { return this._size; };\n\n\n /**\n * Create a tree and load it with items\n * @param{Array<Key>} keys\n * @param{Array<Value>?} [values]\n\n * @param{Function?} [comparator]\n * @param{Boolean?} [presort=false] Pre-sort keys and values, using\n * tree's comparator. Sorting is done\n * in-place\n * @param{Boolean?} [noDuplicates=false] Allow duplicates\n * @return {SplayTree}\n */\n SplayTree.createTree = function createTree (keys, values, comparator, presort, noDuplicates) {\n return new SplayTree(comparator, noDuplicates).load(keys, values, presort);\n };\n\n Object.defineProperties( SplayTree.prototype, prototypeAccessors );\n\n\n function loadRecursive (parent, keys, values, start, end) {\n var size = end - start;\n if (size > 0) {\n var middle = start + Math.floor(size / 2);\n var key = keys[middle];\n var data = values[middle];\n var node = { key: key, data: data, parent: parent };\n node.left = loadRecursive(node, keys, values, start, middle);\n node.right = loadRecursive(node, keys, values, middle + 1, end);\n return node;\n }\n return null;\n }\n\n\n function sort(keys, values, left, right, compare) {\n if (left >= right) { return; }\n\n var pivot = keys[(left + right) >> 1];\n var i = left - 1;\n var j = right + 1;\n\n while (true) {\n do { i++; } while (compare(keys[i], pivot) < 0);\n do { j--; } while (compare(keys[j], pivot) > 0);\n if (i >= j) { break; }\n\n var tmp = keys[i];\n keys[i] = keys[j];\n keys[j] = tmp;\n\n tmp = values[i];\n values[i] = values[j];\n values[j] = tmp;\n }\n\n sort(keys, values, left, j, compare);\n sort(keys, values, j + 1, right, compare);\n }\n\n var NORMAL = 0;\n var NON_CONTRIBUTING = 1;\n var SAME_TRANSITION = 2;\n var DIFFERENT_TRANSITION = 3;\n\n var INTERSECTION = 0;\n var UNION = 1;\n var DIFFERENCE = 2;\n var XOR = 3;\n\n /**\n * @param {SweepEvent} event\n * @param {SweepEvent} prev\n * @param {Operation} operation\n */\n function computeFields (event, prev, operation) {\n // compute inOut and otherInOut fields\n if (prev === null) {\n event.inOut = false;\n event.otherInOut = true;\n\n // previous line segment in sweepline belongs to the same polygon\n } else {\n if (event.isSubject === prev.isSubject) {\n event.inOut = !prev.inOut;\n event.otherInOut = prev.otherInOut;\n\n // previous line segment in sweepline belongs to the clipping polygon\n } else {\n event.inOut = !prev.otherInOut;\n event.otherInOut = prev.isVertical() ? !prev.inOut : prev.inOut;\n }\n\n // compute prevInResult field\n if (prev) {\n event.prevInResult = (!inResult(prev, operation) || prev.isVertical())\n ? prev.prevInResult : prev;\n }\n }\n\n // check if the line segment belongs to the Boolean operation\n event.inResult = inResult(event, operation);\n }\n\n\n /* eslint-disable indent */\n function inResult(event, operation) {\n switch (event.type) {\n case NORMAL:\n switch (operation) {\n case INTERSECTION:\n return !event.otherInOut;\n case UNION:\n return event.otherInOut;\n case DIFFERENCE:\n // return (event.isSubject && !event.otherInOut) ||\n // (!event.isSubject && event.otherInOut);\n return (event.isSubject && event.otherInOut) ||\n (!event.isSubject && !event.otherInOut);\n case XOR:\n return true;\n }\n break;\n case SAME_TRANSITION:\n return operation === INTERSECTION || operation === UNION;\n case DIFFERENT_TRANSITION:\n return operation === DIFFERENCE;\n case NON_CONTRIBUTING:\n return false;\n }\n return false;\n }\n /* eslint-enable indent */\n\n var SweepEvent = function SweepEvent (point, left, otherEvent, isSubject, edgeType) {\n\n /**\n * Is left endpoint?\n * @type {Boolean}\n */\n this.left = left;\n\n /**\n * @type {Array.<Number>}\n */\n this.point = point;\n\n /**\n * Other edge reference\n * @type {SweepEvent}\n */\n this.otherEvent = otherEvent;\n\n /**\n * Belongs to source or clipping polygon\n * @type {Boolean}\n */\n this.isSubject = isSubject;\n\n /**\n * Edge contribution type\n * @type {Number}\n */\n this.type = edgeType || NORMAL;\n\n\n /**\n * In-out transition for the sweepline crossing polygon\n * @type {Boolean}\n */\n this.inOut = false;\n\n\n /**\n * @type {Boolean}\n */\n this.otherInOut = false;\n\n /**\n * Previous event in result?\n * @type {SweepEvent}\n */\n this.prevInResult = null;\n\n /**\n * Does event belong to result?\n * @type {Boolean}\n */\n this.inResult = false;\n\n\n // connection step\n\n /**\n * @type {Boolean}\n */\n this.resultInOut = false;\n\n this.isExteriorRing = true;\n };\n\n\n /**\n * @param{Array.<Number>}p\n * @return {Boolean}\n */\n SweepEvent.prototype.isBelow = function isBelow (p) {\n var p0 = this.point, p1 = this.otherEvent.point;\n return this.left\n ? (p0[0] - p[0]) * (p1[1] - p[1]) - (p1[0] - p[0]) * (p0[1] - p[1]) > 0\n // signedArea(this.point, this.otherEvent.point, p) > 0 :\n : (p1[0] - p[0]) * (p0[1] - p[1]) - (p0[0] - p[0]) * (p1[1] - p[1]) > 0;\n //signedArea(this.otherEvent.point, this.point, p) > 0;\n };\n\n\n /**\n * @param{Array.<Number>}p\n * @return {Boolean}\n */\n SweepEvent.prototype.isAbove = function isAbove (p) {\n return !this.isBelow(p);\n };\n\n\n /**\n * @return {Boolean}\n */\n SweepEvent.prototype.isVertical = function isVertical () {\n return this.point[0] === this.otherEvent.point[0];\n };\n\n\n SweepEvent.prototype.clone = function clone () {\n var copy = new SweepEvent(\n this.point, this.left, this.otherEvent, this.isSubject, this.type);\n\n copy.inResult = this.inResult;\n copy.prevInResult = this.prevInResult;\n copy.isExteriorRing = this.isExteriorRing;\n copy.inOut = this.inOut;\n copy.otherInOut = this.otherInOut;\n\n return copy;\n };\n\n function equals(p1, p2) {\n if (p1[0] === p2[0]) {\n if (p1[1] === p2[1]) {\n return true;\n } else {\n return false;\n }\n }\n return false;\n }\n\n // const EPSILON = 1e-9;\n // const abs = Math.abs;\n // TODO https://github.com/w8r/martinez/issues/6#issuecomment-262847164\n // Precision problem.\n //\n // module.exports = function equals(p1, p2) {\n // return abs(p1[0] - p2[0]) <= EPSILON && abs(p1[1] - p2[1]) <= EPSILON;\n // };\n\n /**\n * Signed area of the triangle (p0, p1, p2)\n * @param {Array.<Number>} p0\n * @param {Array.<Number>} p1\n * @param {Array.<Number>} p2\n * @return {Number}\n */\n function signedArea(p0, p1, p2) {\n return (p0[0] - p2[0]) * (p1[1] - p2[1]) - (p1[0] - p2[0]) * (p0[1] - p2[1]);\n }\n\n /**\n * @param {SweepEvent} e1\n * @param {SweepEvent} e2\n * @return {Number}\n */\n function compareEvents(e1, e2) {\n var p1 = e1.point;\n var p2 = e2.point;\n\n // Different x-coordinate\n if (p1[0] > p2[0]) { return 1; }\n if (p1[0] < p2[0]) { return -1; }\n\n // Different points, but same x-coordinate\n // Event with lower y-coordinate is processed first\n if (p1[1] !== p2[1]) { return p1[1] > p2[1] ? 1 : -1; }\n\n return specialCases(e1, e2, p1, p2);\n }\n\n\n /* eslint-disable no-unused-vars */\n function specialCases(e1, e2, p1, p2) {\n // Same coordinates, but one is a left endpoint and the other is\n // a right endpoint. The right endpoint is processed first\n if (e1.left !== e2.left)\n { return e1.left ? 1 : -1; }\n\n // const p2 = e1.otherEvent.point, p3 = e2.otherEvent.point;\n // const sa = (p1[0] - p3[0]) * (p2[1] - p3[1]) - (p2[0] - p3[0]) * (p1[1] - p3[1])\n // Same coordinates, both events\n // are left endpoints or right endpoints.\n // not collinear\n if (signedArea(p1, e1.otherEvent.point, e2.otherEvent.point) !== 0) {\n // the event associate to the bottom segment is processed first\n return (!e1.isBelow(e2.otherEvent.point)) ? 1 : -1;\n }\n\n return (!e1.isSubject && e2.isSubject) ? 1 : -1;\n }\n /* eslint-enable no-unused-vars */\n\n /**\n * @param {SweepEvent} se\n * @param {Array.<Number>} p\n * @param {Queue} queue\n * @return {Queue}\n */\n function divideSegment(se, p, queue) {\n var r = new SweepEvent(p, false, se, se.isSubject);\n var l = new SweepEvent(p, true, se.otherEvent, se.isSubject);\n\n /* eslint-disable no-console */\n if (equals(se.point, se.otherEvent.point)) {\n\n console.warn('what is that, a collapsed segment?', se);\n }\n /* eslint-enable no-console */\n\n r.contourId = l.contourId = se.contourId;\n\n // avoid a rounding error. The left event would be processed after the right event\n if (compareEvents(l, se.otherEvent) > 0) {\n se.otherEvent.left = true;\n l.left = false;\n }\n\n // avoid a rounding error. The left event would be processed after the right event\n // if (compareEvents(se, r) > 0) {}\n\n se.otherEvent.otherEvent = l;\n se.otherEvent = r;\n\n queue.push(l);\n queue.push(r);\n\n return queue;\n }\n\n //const EPS = 1e-9;\n\n /**\n * Finds the magnitude of the cross product of two vectors (if we pretend\n * they're in three dimensions)\n *\n * @param {Object} a First vector\n * @param {Object} b Second vector\n * @private\n * @returns {Number} The magnitude of the cross product\n */\n function crossProduct(a, b) {\n return (a[0] * b[1]) - (a[1] * b[0]);\n }\n\n /**\n * Finds the dot product of two vectors.\n *\n * @param {Object} a First vector\n * @param {Object} b Second vector\n * @private\n * @returns {Number} The dot product\n */\n function dotProduct(a, b) {\n return (a[0] * b[0]) + (a[1] * b[1]);\n }\n\n /**\n * Finds the intersection (if any) between two line segments a and b, given the\n * line segments' end points a1, a2 and b1, b2.\n *\n * This algorithm is based on Schneider and Eberly.\n * http://www.cimec.org.ar/~ncalvo/Schneider_Eberly.pdf\n * Page 244.\n *\n * @param {Array.<Number>} a1 point of first line\n * @param {Array.<Number>} a2 point of first line\n * @param {Array.<Number>} b1 point of second line\n * @param {Array.<Number>} b2 point of second line\n * @param {Boolean=} noEndpointTouch whether to skip single touchpoints\n * (meaning connected segments) as\n * intersections\n * @returns {Array.<Array.<Number>>|Null} If the lines intersect, the point of\n * intersection. If they overlap, the two end points of the overlapping segment.\n * Otherwise, null.\n */\n function intersection (a1, a2, b1, b2, noEndpointTouch) {\n // The algorithm expects our lines in the form P + sd, where P is a point,\n // s is on the interval [0, 1], and d is a vector.\n // We are passed two points. P can be the first point of each pair. The\n // vector, then, could be thought of as the distance (in x and y components)\n // from the first point to the second point.\n // So first, let's make our vectors:\n var va = [a2[0] - a1[0], a2[1] - a1[1]];\n var vb = [b2[0] - b1[0], b2[1] - b1[1]];\n // We also define a function to convert back to regular point form:\n\n /* eslint-disable arrow-body-style */\n\n function toPoint(p, s, d) {\n return [\n p[0] + s * d[0],\n p[1] + s * d[1]\n ];\n }\n\n /* eslint-enable arrow-body-style */\n\n // The rest is pretty much a straight port of the algorithm.\n var e = [b1[0] - a1[0], b1[1] - a1[1]];\n var kross = crossProduct(va, vb);\n var sqrKross = kross * kross;\n var sqrLenA = dotProduct(va, va);\n //const sqrLenB = dotProduct(vb, vb);\n\n // Check for line intersection. This works because of the properties of the\n // cross product -- specifically, two vectors are parallel if and only if the\n // cross product is the 0 vector. The full calculation involves relative error\n // to account for possible very small line segments. See Schneider & Eberly\n // for details.\n if (sqrKross > 0/* EPS * sqrLenB * sqLenA */) {\n // If they're not parallel, then (because these are line segments) they\n // still might not actually intersect. This code checks that the\n // intersection point of the lines is actually on both line segments.\n var s = crossProduct(e, vb) / kross;\n if (s < 0 || s > 1) {\n // not on line segment a\n return null;\n }\n var t = crossProduct(e, va) / kross;\n if (t < 0 || t > 1) {\n // not on line segment b\n return null;\n }\n if (s === 0 || s === 1) {\n // on an endpoint of line segment a\n return noEndpointTouch ? null : [toPoint(a1, s, va)];\n }\n if (t === 0 || t === 1) {\n // on an endpoint of line segment b\n return noEndpointTouch ? null : [toPoint(b1, t, vb)];\n }\n return [toPoint(a1, s, va)];\n }\n\n // If we've reached this point, then the lines are either parallel or the\n // same, but the segments could overlap partially or fully, or not at all.\n // So we need to find the overlap, if any. To do that, we can use e, which is\n // the (vector) difference between the two initial points. If this is parallel\n // with the line itself, then the two lines are the same line, and there will\n // be overlap.\n //const sqrLenE = dotProduct(e, e);\n kross = crossProduct(e, va);\n sqrKross = kross * kross;\n\n if (sqrKross > 0 /* EPS * sqLenB * sqLenE */) {\n // Lines are just parallel, not the same. No overlap.\n return null;\n }\n\n var sa = dotProduct(va, e) / sqrLenA;\n var sb = sa + dotProduct(va, vb) / sqrLenA;\n var smin = Math.min(sa, sb);\n var smax = Math.max(sa, sb);\n\n // this is, essentially, the FindIntersection acting on floats from\n // Schneider & Eberly, just inlined into this function.\n if (smin <= 1 && smax >= 0) {\n\n // overlap on an end point\n if (smin === 1) {\n return noEndpointTouch ? null : [toPoint(a1, smin > 0 ? smin : 0, va)];\n }\n\n if (smax === 0) {\n return noEndpointTouch ? null : [toPoint(a1, smax < 1 ? smax : 1, va)];\n }\n\n if (noEndpointTouch && smin === 0 && smax === 1) { return null; }\n\n // There's overlap on a segment -- two points of intersection. Return both.\n return [\n toPoint(a1, smin > 0 ? smin : 0, va),\n toPoint(a1, smax < 1 ? smax : 1, va)\n ];\n }\n\n return null;\n }\n\n /**\n * @param {SweepEvent} se1\n * @param {SweepEvent} se2\n * @param {Queue} queue\n * @return {Number}\n */\n function possibleIntersection (se1, se2, queue) {\n // that disallows self-intersecting polygons,\n // did cost us half a day, so I'll leave it\n // out of respect\n // if (se1.isSubject === se2.isSubject) return;\n var inter = intersection(\n se1.point, se1.otherEvent.point,\n se2.point, se2.otherEvent.point\n );\n\n var nintersections = inter ? inter.length : 0;\n if (nintersections === 0) { return 0; } // no intersection\n\n // the line segments intersect at an endpoint of both line segments\n if ((nintersections === 1) &&\n (equals(se1.point, se2.point) ||\n equals(se1.otherEvent.point, se2.otherEvent.point))) {\n return 0;\n }\n\n if (nintersections === 2 && se1.isSubject === se2.isSubject) {\n // if(se1.contourId === se2.contourId){\n // console.warn('Edges of the same polygon overlap',\n // se1.point, se1.otherEvent.point, se2.point, se2.otherEvent.point);\n // }\n //throw new Error('Edges of the same polygon overlap');\n return 0;\n }\n\n // The line segments associated to se1 and se2 intersect\n if (nintersections === 1) {\n\n // if the intersection point is not an endpoint of se1\n if (!equals(se1.point, inter[0]) && !equals(se1.otherEvent.point, inter[0])) {\n divideSegment(se1, inter[0], queue);\n }\n\n // if the intersection point is not an endpoint of se2\n if (!equals(se2.point, inter[0]) && !equals(se2.otherEvent.point, inter[0])) {\n divideSegment(se2, inter[0], queue);\n }\n return 1;\n }\n\n // The line segments associated to se1 and se2 overlap\n var events = [];\n var leftCoincide = false;\n var rightCoincide = false;\n\n if (equals(se1.point, se2.point)) {\n leftCoincide = true; // linked\n } else if (compareEvents(se1, se2) === 1) {\n events.push(se2, se1);\n } else {\n events.push(se1, se2);\n }\n\n if (equals(se1.otherEvent.point, se2.otherEvent.point)) {\n rightCoincide = true;\n } else if (compareEvents(se1.otherEvent, se2.otherEvent) === 1) {\n events.push(se2.otherEvent, se1.otherEvent);\n } else {\n events.push(se1.otherEvent, se2.otherEvent);\n }\n\n if ((leftCoincide && rightCoincide) || leftCoincide) {\n // both line segments are equal or share the left endpoint\n se2.type = NON_CONTRIBUTING;\n se1.type = (se2.inOut === se1.inOut)\n ? SAME_TRANSITION : DIFFERENT_TRANSITION;\n\n if (leftCoincide && !rightCoincide) {\n // honestly no idea, but changing events selection from [2, 1]\n // to [0, 1] fixes the overlapping self-intersecting polygons issue\n divideSegment(events[1].otherEvent, events[0].point, queue);\n }\n return 2;\n }\n\n // the line segments share the right endpoint\n if (rightCoincide) {\n divideSegment(events[0], events[1].point, queue);\n return 3;\n }\n\n // no line segment includes totally the other one\n if (events[0] !== events[3].otherEvent) {\n divideSegment(events[0], events[1].point, queue);\n divideSegment(events[1], events[2].point, queue);\n return 3;\n }\n\n // one line segment includes the other one\n divideSegment(events[0], events[1].point, queue);\n divideSegment(events[3].otherEvent, events[2].point, queue);\n\n return 3;\n }\n\n /**\n * @param {SweepEvent} le1\n * @param {SweepEvent} le2\n * @return {Number}\n */\n function compareSegments(le1, le2) {\n if (le1 === le2) { return 0; }\n\n // Segments are not collinear\n if (signedArea(le1.point, le1.otherEvent.point, le2.point) !== 0 ||\n signedArea(le1.point, le1.otherEvent.point, le2.otherEvent.point) !== 0) {\n\n // If they share their left endpoint use the right endpoint to sort\n if (equals(le1.point, le2.point)) { return le1.isBelow(le2.otherEvent.point) ? -1 : 1; }\n\n // Different left endpoint: use the left endpoint to sort\n if (le1.point[0] === le2.point[0]) { return le1.point[1] < le2.point[1] ? -1 : 1; }\n\n // has the line segment associated to e1 been inserted\n // into S after the line segment associated to e2 ?\n if (compareEvents(le1, le2) === 1) { return le2.isAbove(le1.point) ? -1 : 1; }\n\n // The line segment associated to e2 has been inserted\n // into S after the line segment associated to e1\n return le1.isBelow(le2.point) ? -1 : 1;\n }\n\n if (le1.isSubject === le2.isSubject) { // same polygon\n var p1 = le1.point, p2 = le2.point;\n if (p1[0] === p2[0] && p1[1] === p2[1]/*equals(le1.point, le2.point)*/) {\n p1 = le1.otherEvent.point; p2 = le2.otherEvent.point;\n if (p1[0] === p2[0] && p1[1] === p2[1]) { return 0; }\n else { return le1.contourId > le2.contourId ? 1 : -1; }\n }\n } else { // Segments are collinear, but belong to separate polygons\n return le1.isSubject ? -1 : 1;\n }\n\n return compareEvents(le1, le2) === 1 ? 1 : -1;\n }\n\n function subdivide(eventQueue, subject, clipping, sbbox, cbbox, operation) {\n var sweepLine = new SplayTree(compareSegments);\n var sortedEvents = [];\n\n var rightbound = Math.min(sbbox[2], cbbox[2]);\n\n var prev, next, begin;\n\n while (eventQueue.length !== 0) {\n var event = eventQueue.pop();\n sortedEvents.push(event);\n\n // optimization by bboxes for intersection and difference goes here\n if ((operation === INTERSECTION && event.point[0] > rightbound) ||\n (operation === DIFFERENCE && event.point[0] > sbbox[2])) {\n break;\n }\n\n if (event.left) {\n next = prev = sweepLine.insert(event);\n begin = sweepLine.minNode();\n\n if (prev !== begin) { prev = sweepLine.prev(prev); }\n else { prev = null; }\n\n next = sweepLine.next(next);\n\n var prevEvent = prev ? prev.key : null;\n var prevprevEvent = (void 0);\n computeFields(event, prevEvent, operation);\n if (next) {\n if (possibleIntersection(event, next.key, eventQueue) === 2) {\n computeFields(event, prevEvent, operation);\n computeFields(event, next.key, operation);\n }\n }\n\n if (prev) {\n if (possibleIntersection(prev.key, event, eventQueue) === 2) {\n var prevprev = prev;\n if (prevprev !== begin) { prevprev = sweepLine.prev(prevprev); }\n else { prevprev = null; }\n\n prevprevEvent = prevprev ? prevprev.key : null;\n computeFields(prevEvent, prevprevEvent, operation);\n computeFields(event, prevEvent, operation);\n }\n }\n } else {\n event = event.otherEvent;\n next = prev = sweepLine.find(event);\n\n if (prev && next) {\n\n if (prev !== begin) { prev = sweepLine.prev(prev); }\n else { prev = null; }\n\n next = sweepLine.next(next);\n sweepLine.remove(event);\n\n if (next && prev) {\n possibleIntersection(prev.key, next.key, eventQueue);\n }\n }\n }\n }\n return sortedEvents;\n }\n\n /**\n * @param {Array.<SweepEvent>} sortedEvents\n * @return {Array.<SweepEvent>}\n */\n function orderEvents(sortedEvents) {\n var event, i, len, tmp;\n var resultEvents = [];\n for (i = 0, len = sortedEvents.length; i < len; i++) {\n event = sortedEvents[i];\n if ((event.left && event.inResult) ||\n (!event.left && event.otherEvent.inResult)) {\n resultEvents.push(event);\n }\n }\n // Due to overlapping edges the resultEvents array can be not wholly sorted\n var sorted = false;\n while (!sorted) {\n sorted = true;\n for (i = 0, len = resultEvents.length; i < len; i++) {\n if ((i + 1) < len &&\n compareEvents(resultEvents[i], resultEvents[i + 1]) === 1) {\n tmp = resultEvents[i];\n resultEvents[i] = resultEvents[i + 1];\n resultEvents[i + 1] = tmp;\n sorted = false;\n }\n }\n }\n\n\n for (i = 0, len = resultEvents.length; i < len; i++) {\n event = resultEvents[i];\n event.pos = i;\n }\n\n // imagine, the right event is found in the beginning of the queue,\n // when his left counterpart is not marked yet\n for (i = 0, len = resultEvents.length; i < len; i++) {\n event = resultEvents[i];\n if (!event.left) {\n tmp = event.pos;\n event.pos = event.otherEvent.pos;\n event.otherEvent.pos = tmp;\n }\n }\n\n return resultEvents;\n }\n\n\n /**\n * @param {Number} pos\n * @param {Array.<SweepEvent>} resultEvents\n * @param {Object>} processed\n * @return {Number}\n */\n function nextPos(pos, resultEvents, processed, origIndex) {\n var newPos = pos + 1;\n var length = resultEvents.length;\n if (newPos > length - 1) { return pos - 1; }\n var p = resultEvents[pos].point;\n var p1 = resultEvents[newPos].point;\n\n\n // while in range and not the current one by value\n while (newPos < length && p1[0] === p[0] && p1[1] === p[1]) {\n if (!processed[newPos]) {\n return newPos;\n } else {\n newPos++;\n }\n p1 = resultEvents[newPos].point;\n }\n\n newPos = pos - 1;\n\n while (processed[newPos] && newPos >= origIndex) {\n newPos--;\n }\n return newPos;\n }\n\n\n /**\n * @param {Array.<SweepEvent>} sortedEvents\n * @return {Array.<*>} polygons\n */\n function connectEdges(sortedEvents, operation) {\n var i, len;\n var resultEvents = orderEvents(sortedEvents);\n\n // \"false\"-filled array\n var processed = {};\n var result = [];\n var event;\n\n for (i = 0, len = resultEvents.length; i < len; i++) {\n if (processed[i]) { continue; }\n var contour = [[]];\n\n if (!resultEvents[i].isExteriorRing) {\n if (operation === DIFFERENCE && !resultEvents[i].isSubject && result.length === 0) {\n result.push(contour);\n } else if (result.length === 0) {\n result.push([[contour]]);\n } else {\n result[result.length - 1].push(contour[0]);\n }\n } else if (operation === DIFFERENCE && !resultEvents[i].isSubject && result.length > 1) {\n result[result.length - 1].push(contour[0]);\n } else {\n result.push(contour);\n }\n\n var ringId = result.length - 1;\n var pos = i;\n\n var initial = resultEvents[i].point;\n contour[0].push(initial);\n\n while (pos >= i) {\n event = resultEvents[pos];\n processed[pos] = true;\n\n if (event.left) {\n event.resultInOut = false;\n event.contourId = ringId;\n } else {\n event.otherEvent.resultInOut = true;\n event.otherEvent.contourId = ringId;\n }\n\n pos = event.pos;\n processed[pos] = true;\n contour[0].push(resultEvents[pos].point);\n pos = nextPos(pos, resultEvents, processed, i);\n }\n\n pos = pos === -1 ? i : pos;\n\n event = resultEvents[pos];\n processed[pos] = processed[event.pos] = true;\n event.otherEvent.resultInOut = true;\n event.otherEvent.contourId = ringId;\n }\n\n // Handle if the result is a polygon (eg not multipoly)\n // Commented it again, let's see what do we mean by that\n // if (result.length === 1) result = result[0];\n return result;\n }\n\n var tinyqueue = TinyQueue;\n var default_1 = TinyQueue;\n\n function TinyQueue(data, compare) {\n var this$1 = this;\n\n if (!(this instanceof TinyQueue)) { return new TinyQueue(data, compare); }\n\n this.data = data || [];\n this.length = this.data.length;\n this.compare = compare || defaultCompare;\n\n if (this.length > 0) {\n for (var i = (this.length >> 1) - 1; i >= 0; i--) { this$1._down(i); }\n }\n }\n\n function defaultCompare(a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n }\n\n TinyQueue.prototype = {\n\n push: function (item) {\n this.data.push(item);\n this.length++;\n this._up(this.length - 1);\n },\n\n pop: function () {\n if (this.length === 0) { return undefined; }\n\n var top = this.data[0];\n this.length--;\n\n if (this.length > 0) {\n this.data[0] = this.data[this.length];\n this._down(0);\n }\n this.data.pop();\n\n return top;\n },\n\n peek: function () {\n return this.data[0];\n },\n\n _up: function (pos) {\n var data = this.data;\n var compare = this.compare;\n var item = data[pos];\n\n while (pos > 0) {\n var parent = (pos - 1) >> 1;\n var current = data[parent];\n if (compare(item, current) >= 0) { break; }\n data[pos] = current;\n pos = parent;\n }\n\n data[pos] = item;\n },\n\n _down: function (pos) {\n var this$1 = this;\n\n var data = this.data;\n var compare = this.compare;\n var halfLength = this.length >> 1;\n var item = data[pos];\n\n while (pos < halfLength) {\n var left = (pos << 1) + 1;\n var right = left + 1;\n var best = data[left];\n\n if (right < this$1.length && compare(data[right], best) < 0) {\n left = right;\n best = data[right];\n }\n if (compare(best, item) >= 0) { break; }\n\n data[pos] = best;\n pos = left;\n }\n\n data[pos] = item;\n }\n };\n tinyqueue.default = default_1;\n\n var max = Math.max;\n var min = Math.min;\n\n var contourId = 0;\n\n\n function processPolygon(contourOrHole, isSubject, depth, Q, bbox, isExteriorRing) {\n var i, len, s1, s2, e1, e2;\n for (i = 0, len = contourOrHole.length - 1; i < len; i++) {\n s1 = contourOrHole[i];\n s2 = contourOrHole[i + 1];\n e1 = new SweepEvent(s1, false, undefined, isSubject);\n e2 = new SweepEvent(s2, false, e1, isSubject);\n e1.otherEvent = e2;\n\n if (s1[0] === s2[0] && s1[1] === s2[1]) {\n continue; // skip collapsed edges, or it breaks\n }\n\n e1.contourId = e2.contourId = depth;\n if (!isExteriorRing) {\n e1.isExteriorRing = false;\n e2.isExteriorRing = false;\n }\n if (compareEvents(e1, e2) > 0) {\n e2.left = true;\n } else {\n e1.left = true;\n }\n\n var x = s1[0], y = s1[1];\n bbox[0] = min(bbox[0], x);\n bbox[1] = min(bbox[1], y);\n bbox[2] = max(bbox[2], x);\n bbox[3] = max(bbox[3], y);\n\n // Pushing it so the queue is sorted from left to right,\n // with object on the left having the highest priority.\n Q.push(e1);\n Q.push(e2);\n }\n }\n\n\n function fillQueue(subject, clipping, sbbox, cbbox, operation) {\n var eventQueue = new tinyqueue(null, compareEvents);\n var polygonSet, isExteriorRing, i, ii, j, jj; //, k, kk;\n\n for (i = 0, ii = subject.length; i < ii; i++) {\n polygonSet = subject[i];\n for (j = 0, jj = polygonSet.length; j < jj; j++) {\n isExteriorRing = j === 0;\n if (isExteriorRing) { contourId++; }\n processPolygon(polygonSet[j], true, contourId, eventQueue, sbbox, isExteriorRing);\n }\n }\n\n for (i = 0, ii = clipping.length; i < ii; i++) {\n polygonSet = clipping[i];\n for (j = 0, jj = polygonSet.length; j < jj; j++) {\n isExteriorRing = j === 0;\n if (operation === DIFFERENCE) { isExteriorRing = false; }\n if (isExteriorRing) { contourId++; }\n processPolygon(polygonSet[j], false, contourId, eventQueue, cbbox, isExteriorRing);\n }\n }\n\n return eventQueue;\n }\n\n var EMPTY = [];\n\n\n function trivialOperation(subject, clipping, operation) {\n var result = null;\n if (subject.length * clipping.length === 0) {\n if (operation === INTERSECTION) {\n result = EMPTY;\n } else if (operation === DIFFERENCE) {\n result = subject;\n } else if (operation === UNION ||\n operation === XOR) {\n result = (subject.length === 0) ? clipping : subject;\n }\n }\n return result;\n }\n\n\n function compareBBoxes(subject, clipping, sbbox, cbbox, operation) {\n var result = null;\n if (sbbox[0] > cbbox[2] ||\n cbbox[0] > sbbox[2] ||\n sbbox[1] > cbbox[3] ||\n cbbox[1] > sbbox[3]) {\n if (operation === INTERSECTION) {\n result = EMPTY;\n } else if (operation === DIFFERENCE) {\n result = subject;\n } else if (operation === UNION ||\n operation === XOR) {\n result = subject.concat(clipping);\n }\n }\n return result;\n }\n\n\n function boolean(subject, clipping, operation) {\n if (typeof subject[0][0][0] === 'number') {\n subject = [subject];\n }\n if (typeof clipping[0][0][0] === 'number') {\n clipping = [clipping];\n }\n var trivial = trivialOperation(subject, clipping, operation);\n if (trivial) {\n return trivial === EMPTY ? null : trivial;\n }\n var sbbox = [Infinity, Infinity, -Infinity, -Infinity];\n var cbbox = [Infinity, Infinity, -Infinity, -Infinity];\n\n //console.time('fill queue');\n var eventQueue = fillQueue(subject, clipping, sbbox, cbbox, operation);\n //console.timeEnd('fill queue');\n\n trivial = compareBBoxes(subject, clipping, sbbox, cbbox, operation);\n if (trivial) {\n return trivial === EMPTY ? null : trivial;\n }\n //console.time('subdivide edges');\n var sortedEvents = subdivide(eventQueue, subject, clipping, sbbox, cbbox, operation);\n //console.timeEnd('subdivide edges');\n\n //console.time('connect vertices');\n var result = connectEdges(sortedEvents, operation);\n //console.timeEnd('connect vertices');\n return result;\n }\n\n function union (subject, clipping) {\n return boolean(subject, clipping, UNION);\n }\n\n function diff (subject, clipping) {\n return boolean(subject, clipping, DIFFERENCE);\n }\n\n function xor (subject, clipping){\n return boolean(subject, clipping, XOR);\n }\n\n function intersection$1 (subject, clipping) {\n return boolean(subject, clipping, INTERSECTION);\n }\n\n /**\n * @enum {Number}\n */\n var operations = { UNION: UNION, DIFFERENCE: DIFFERENCE, INTERSECTION: INTERSECTION, XOR: XOR };\n\n exports.union = union;\n exports.diff = diff;\n exports.xor = xor;\n exports.intersection = intersection$1;\n exports.operations = operations;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n//# sourceMappingURL=martinez.umd.js.map\n","// randomColor by David Merfield under the CC0 license\n// https://github.com/davidmerfield/randomColor/\n\n;(function(root, factory) {\n\n // Support CommonJS\n if (typeof exports === 'object') {\n var randomColor = factory();\n\n // Support NodeJS & Component, which allow module.exports to be a function\n if (typeof module === 'object' && module && module.exports) {\n exports = module.exports = randomColor;\n }\n\n // Support CommonJS 1.1.1 spec\n exports.randomColor = randomColor;\n\n // Support AMD\n } else if (typeof define === 'function' && define.amd) {\n define([], factory);\n\n // Support vanilla script loading\n } else {\n root.randomColor = factory();\n }\n\n}(this, function() {\n\n // Seed to get repeatable colors\n var seed = null;\n\n // Shared color dictionary\n var colorDictionary = {};\n\n // Populate the color dictionary\n loadColorBounds();\n\n // check if a range is taken\n var colorRanges = [];\n\n var randomColor = function (options) {\n\n options = options || {};\n\n // Check if there is a seed and ensure it's an\n // integer. Otherwise, reset the seed value.\n if (options.seed !== undefined && options.seed !== null && options.seed === parseInt(options.seed, 10)) {\n seed = options.seed;\n\n // A string was passed as a seed\n } else if (typeof options.seed === 'string') {\n seed = stringToInteger(options.seed);\n\n // Something was passed as a seed but it wasn't an integer or string\n } else if (options.seed !== undefined && options.seed !== null) {\n throw new TypeError('The seed value must be an integer or string');\n\n // No seed, reset the value outside.\n } else {\n seed = null;\n }\n\n var H,S,B;\n\n // Check if we need to generate multiple colors\n if (options.count !== null && options.count !== undefined) {\n\n var totalColors = options.count,\n colors = [];\n // Value false at index i means the range i is not taken yet.\n for (var i = 0; i < options.count; i++) {\n colorRanges.push(false)\n }\n options.count = null;\n\n while (totalColors > colors.length) {\n\n var color = randomColor(options);\n\n if (seed !== null) {\n options.seed = seed;\n }\n\n colors.push(color);\n }\n\n options.count = totalColors;\n\n return colors;\n }\n\n // First we pick a hue (H)\n H = pickHue(options);\n\n // Then use H to determine saturation (S)\n S = pickSaturation(H, options);\n\n // Then use S and H to determine brightness (B).\n B = pickBrightness(H, S, options);\n\n // Then we return the HSB color in the desired format\n return setFormat([H,S,B], options);\n };\n\n function pickHue(options) {\n if (colorRanges.length > 0) {\n var hueRange = getRealHueRange(options.hue)\n\n var hue = randomWithin(hueRange)\n\n //Each of colorRanges.length ranges has a length equal approximatelly one step\n var step = (hueRange[1] - hueRange[0]) / colorRanges.length\n\n var j = parseInt((hue - hueRange[0]) / step)\n\n //Check if the range j is taken\n if (colorRanges[j] === true) {\n j = (j + 2) % colorRanges.length\n }\n else {\n colorRanges[j] = true\n }\n\n var min = (hueRange[0] + j * step) % 359,\n max = (hueRange[0] + (j + 1) * step) % 359;\n\n hueRange = [min, max]\n\n hue = randomWithin(hueRange)\n\n if (hue < 0) {hue = 360 + hue;}\n return hue\n }\n else {\n var hueRange = getHueRange(options.hue)\n\n hue = randomWithin(hueRange);\n // Instead of storing red as two seperate ranges,\n // we group them, using negative numbers\n if (hue < 0) {\n hue = 360 + hue;\n }\n\n return hue;\n }\n }\n\n function pickSaturation (hue, options) {\n\n if (options.hue === 'monochrome') {\n return 0;\n }\n\n if (options.luminosity === 'random') {\n return randomWithin([0,100]);\n }\n\n var saturationRange = getSaturationRange(hue);\n\n var sMin = saturationRange[0],\n sMax = saturationRange[1];\n\n switch (options.luminosity) {\n\n case 'bright':\n sMin = 55;\n break;\n\n case 'dark':\n sMin = sMax - 10;\n break;\n\n case 'light':\n sMax = 55;\n break;\n }\n\n return randomWithin([sMin, sMax]);\n\n }\n\n function pickBrightness (H, S, options) {\n\n var bMin = getMinimumBrightness(H, S),\n bMax = 100;\n\n switch (options.luminosity) {\n\n case 'dark':\n bMax = bMin + 20;\n break;\n\n case 'light':\n bMin = (bMax + bMin)/2;\n break;\n\n case 'random':\n bMin = 0;\n bMax = 100;\n break;\n }\n\n return randomWithin([bMin, bMax]);\n }\n\n function setFormat (hsv, options) {\n\n switch (options.format) {\n\n case 'hsvArray':\n return hsv;\n\n case 'hslArray':\n return HSVtoHSL(hsv);\n\n case 'hsl':\n var hsl = HSVtoHSL(hsv);\n return 'hsl('+hsl[0]+', '+hsl[1]+'%, '+hsl[2]+'%)';\n\n case 'hsla':\n var hslColor = HSVtoHSL(hsv);\n var alpha = options.alpha || Math.random();\n return 'hsla('+hslColor[0]+', '+hslColor[1]+'%, '+hslColor[2]+'%, ' + alpha + ')';\n\n case 'rgbArray':\n return HSVtoRGB(hsv);\n\n case 'rgb':\n var rgb = HSVtoRGB(hsv);\n return 'rgb(' + rgb.join(', ') + ')';\n\n case 'rgba':\n var rgbColor = HSVtoRGB(hsv);\n var alpha = options.alpha || Math.random();\n return 'rgba(' + rgbColor.join(', ') + ', ' + alpha + ')';\n\n default:\n return HSVtoHex(hsv);\n }\n\n }\n\n function getMinimumBrightness(H, S) {\n\n var lowerBounds = getColorInfo(H).lowerBounds;\n\n for (var i = 0; i < lowerBounds.length - 1; i++) {\n\n var s1 = lowerBounds[i][0],\n v1 = lowerBounds[i][1];\n\n var s2 = lowerBounds[i+1][0],\n v2 = lowerBounds[i+1][1];\n\n if (S >= s1 && S <= s2) {\n\n var m = (v2 - v1)/(s2 - s1),\n b = v1 - m*s1;\n\n return m*S + b;\n }\n\n }\n\n return 0;\n }\n\n function getHueRange (colorInput) {\n\n if (typeof parseInt(colorInput) === 'number') {\n\n var number = parseInt(colorInput);\n\n if (number < 360 && number > 0) {\n return [number, number];\n }\n\n }\n\n if (typeof colorInput === 'string') {\n\n if (colorDictionary[colorInput]) {\n var color = colorDictionary[colorInput];\n if (color.hueRange) {return color.hueRange;}\n } else if (colorInput.match(/^#?([0-9A-F]{3}|[0-9A-F]{6})$/i)) {\n var hue = HexToHSB(colorInput)[0];\n return [ hue, hue ];\n }\n }\n\n return [0,360];\n\n }\n\n function getSaturationRange (hue) {\n return getColorInfo(hue).saturationRange;\n }\n\n function getColorInfo (hue) {\n\n // Maps red colors to make picking hue easier\n if (hue >= 334 && hue <= 360) {\n hue-= 360;\n }\n\n for (var colorName in colorDictionary) {\n var color = colorDictionary[colorName];\n if (color.hueRange &&\n hue >= color.hueRange[0] &&\n hue <= color.hueRange[1]) {\n return colorDictionary[colorName];\n }\n } return 'Color not found';\n }\n\n function randomWithin (range) {\n if (seed === null) {\n //generate random evenly destinct number from : https://martin.ankerl.com/2009/12/09/how-to-create-random-colors-programmatically/\n var golden_ratio = 0.618033988749895\n var r=Math.random()\n r += golden_ratio\n r %= 1\n return Math.floor(range[0] + r*(range[1] + 1 - range[0]));\n } else {\n //Seeded random algorithm from http://indiegamr.com/generate-repeatable-random-numbers-in-js/\n var max = range[1] || 1;\n var min = range[0] || 0;\n seed = (seed * 9301 + 49297) % 233280;\n var rnd = seed / 233280.0;\n return Math.floor(min + rnd * (max - min));\n}\n }\n\n function HSVtoHex (hsv){\n\n var rgb = HSVtoRGB(hsv);\n\n function componentToHex(c) {\n var hex = c.toString(16);\n return hex.length == 1 ? '0' + hex : hex;\n }\n\n var hex = '#' + componentToHex(rgb[0]) + componentToHex(rgb[1]) + componentToHex(rgb[2]);\n\n return hex;\n\n }\n\n function defineColor (name, hueRange, lowerBounds) {\n\n var sMin = lowerBounds[0][0],\n sMax = lowerBounds[lowerBounds.length - 1][0],\n\n bMin = lowerBounds[lowerBounds.length - 1][1],\n bMax = lowerBounds[0][1];\n\n colorDictionary[name] = {\n hueRange: hueRange,\n lowerBounds: lowerBounds,\n saturationRange: [sMin, sMax],\n brightnessRange: [bMin, bMax]\n };\n\n }\n\n function loadColorBounds () {\n\n defineColor(\n 'monochrome',\n null,\n [[0,0],[100,0]]\n );\n\n defineColor(\n 'red',\n [-26,18],\n [[20,100],[30,92],[40,89],[50,85],[60,78],[70,70],[80,60],[90,55],[100,50]]\n );\n\n defineColor(\n 'orange',\n [18,46],\n [[20,100],[30,93],[40,88],[50,86],[60,85],[70,70],[100,70]]\n );\n\n defineColor(\n 'yellow',\n [46,62],\n [[25,100],[40,94],[50,89],[60,86],[70,84],[80,82],[90,80],[100,75]]\n );\n\n defineColor(\n 'green',\n [62,178],\n [[30,100],[40,90],[50,85],[60,81],[70,74],[80,64],[90,50],[100,40]]\n );\n\n defineColor(\n 'blue',\n [178, 257],\n [[20,100],[30,86],[40,80],[50,74],[60,60],[70,52],[80,44],[90,39],[100,35]]\n );\n\n defineColor(\n 'purple',\n [257, 282],\n [[20,100],[30,87],[40,79],[50,70],[60,65],[70,59],[80,52],[90,45],[100,42]]\n );\n\n defineColor(\n 'pink',\n [282, 334],\n [[20,100],[30,90],[40,86],[60,84],[80,80],[90,75],[100,73]]\n );\n\n }\n\n function HSVtoRGB (hsv) {\n\n // this doesn't work for the values of 0 and 360\n // here's the hacky fix\n var h = hsv[0];\n if (h === 0) {h = 1;}\n if (h === 360) {h = 359;}\n\n // Rebase the h,s,v values\n h = h/360;\n var s = hsv[1]/100,\n v = hsv[2]/100;\n\n var h_i = Math.floor(h*6),\n f = h * 6 - h_i,\n p = v * (1 - s),\n q = v * (1 - f*s),\n t = v * (1 - (1 - f)*s),\n r = 256,\n g = 256,\n b = 256;\n\n switch(h_i) {\n case 0: r = v; g = t; b = p; break;\n case 1: r = q; g = v; b = p; break;\n case 2: r = p; g = v; b = t; break;\n case 3: r = p; g = q; b = v; break;\n case 4: r = t; g = p; b = v; break;\n case 5: r = v; g = p; b = q; break;\n }\n\n var result = [Math.floor(r*255), Math.floor(g*255), Math.floor(b*255)];\n return result;\n }\n\n function HexToHSB (hex) {\n hex = hex.replace(/^#/, '');\n hex = hex.length === 3 ? hex.replace(/(.)/g, '$1$1') : hex;\n\n var red = parseInt(hex.substr(0, 2), 16) / 255,\n green = parseInt(hex.substr(2, 2), 16) / 255,\n blue = parseInt(hex.substr(4, 2), 16) / 255;\n\n var cMax = Math.max(red, green, blue),\n delta = cMax - Math.min(red, green, blue),\n saturation = cMax ? (delta / cMax) : 0;\n\n switch (cMax) {\n case red: return [ 60 * (((green - blue) / delta) % 6) || 0, saturation, cMax ];\n case green: return [ 60 * (((blue - red) / delta) + 2) || 0, saturation, cMax ];\n case blue: return [ 60 * (((red - green) / delta) + 4) || 0, saturation, cMax ];\n }\n }\n\n function HSVtoHSL (hsv) {\n var h = hsv[0],\n s = hsv[1]/100,\n v = hsv[2]/100,\n k = (2-s)*v;\n\n return [\n h,\n Math.round(s*v / (k<1 ? k : 2-k) * 10000) / 100,\n k/2 * 100\n ];\n }\n\n function stringToInteger (string) {\n var total = 0\n for (var i = 0; i !== string.length; i++) {\n if (total >= Number.MAX_SAFE_INTEGER) break;\n total += string.charCodeAt(i)\n }\n return total\n }\n\n // get The range of given hue when options.count!=0\n function getRealHueRange(colorHue)\n { if (!isNaN(colorHue)) {\n var number = parseInt(colorHue);\n\n if (number < 360 && number > 0) {\n return getColorInfo(colorHue).hueRange\n }\n }\n else if (typeof colorHue === 'string') {\n\n if (colorDictionary[colorHue]) {\n var color = colorDictionary[colorHue];\n\n if (color.hueRange) {\n return color.hueRange\n }\n } else if (colorHue.match(/^#?([0-9A-F]{3}|[0-9A-F]{6})$/i)) {\n var hue = HexToHSB(colorHue)[0]\n return getColorInfo(hue).hueRange\n }\n }\n\n return [0,360]\n}\n return randomColor;\n}));\n","// wrapper for non-node envs\n;(function (sax) {\n\nsax.parser = function (strict, opt) { return new SAXParser(strict, opt) }\nsax.SAXParser = SAXParser\nsax.SAXStream = SAXStream\nsax.createStream = createStream\n\n// When we pass the MAX_BUFFER_LENGTH position, start checking for buffer overruns.\n// When we check, schedule the next check for MAX_BUFFER_LENGTH - (max(buffer lengths)),\n// since that's the earliest that a buffer overrun could occur. This way, checks are\n// as rare as required, but as often as necessary to ensure never crossing this bound.\n// Furthermore, buffers are only tested at most once per write(), so passing a very\n// large string into write() might have undesirable effects, but this is manageable by\n// the caller, so it is assumed to be safe. Thus, a call to write() may, in the extreme\n// edge case, result in creating at most one complete copy of the string passed in.\n// Set to Infinity to have unlimited buffers.\nsax.MAX_BUFFER_LENGTH = 64 * 1024\n\nvar buffers = [\n \"comment\", \"sgmlDecl\", \"textNode\", \"tagName\", \"doctype\",\n \"procInstName\", \"procInstBody\", \"entity\", \"attribName\",\n \"attribValue\", \"cdata\", \"script\"\n]\n\nsax.EVENTS = // for discoverability.\n [ \"text\"\n , \"processinginstruction\"\n , \"sgmldeclaration\"\n , \"doctype\"\n , \"comment\"\n , \"attribute\"\n , \"opentag\"\n , \"closetag\"\n , \"opencdata\"\n , \"cdata\"\n , \"closecdata\"\n , \"error\"\n , \"end\"\n , \"ready\"\n , \"script\"\n , \"opennamespace\"\n , \"closenamespace\"\n ]\n\nfunction SAXParser (strict, opt) {\n if (!(this instanceof SAXParser)) return new SAXParser(strict, opt)\n\n var parser = this\n clearBuffers(parser)\n parser.q = parser.c = \"\"\n parser.bufferCheckPosition = sax.MAX_BUFFER_LENGTH\n parser.opt = opt || {}\n parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags\n parser.looseCase = parser.opt.lowercase ? \"toLowerCase\" : \"toUpperCase\"\n parser.tags = []\n parser.closed = parser.closedRoot = parser.sawRoot = false\n parser.tag = parser.error = null\n parser.strict = !!strict\n parser.noscript = !!(strict || parser.opt.noscript)\n parser.state = S.BEGIN\n parser.ENTITIES = Object.create(sax.ENTITIES)\n parser.attribList = []\n\n // namespaces form a prototype chain.\n // it always points at the current tag,\n // which protos to its parent tag.\n if (parser.opt.xmlns) parser.ns = Object.create(rootNS)\n\n // mostly just for error reporting\n parser.trackPosition = parser.opt.position !== false\n if (parser.trackPosition) {\n parser.position = parser.line = parser.column = 0\n }\n emit(parser, \"onready\")\n}\n\nif (!Object.create) Object.create = function (o) {\n function f () { this.__proto__ = o }\n f.prototype = o\n return new f\n}\n\nif (!Object.getPrototypeOf) Object.getPrototypeOf = function (o) {\n return o.__proto__\n}\n\nif (!Object.keys) Object.keys = function (o) {\n var a = []\n for (var i in o) if (o.hasOwnProperty(i)) a.push(i)\n return a\n}\n\nfunction checkBufferLength (parser) {\n var maxAllowed = Math.max(sax.MAX_BUFFER_LENGTH, 10)\n , maxActual = 0\n for (var i = 0, l = buffers.length; i < l; i ++) {\n var len = parser[buffers[i]].length\n if (len > maxAllowed) {\n // Text/cdata nodes can get big, and since they're buffered,\n // we can get here under normal conditions.\n // Avoid issues by emitting the text node now,\n // so at least it won't get any bigger.\n switch (buffers[i]) {\n case \"textNode\":\n closeText(parser)\n break\n\n case \"cdata\":\n emitNode(parser, \"oncdata\", parser.cdata)\n parser.cdata = \"\"\n break\n\n case \"script\":\n emitNode(parser, \"onscript\", parser.script)\n parser.script = \"\"\n break\n\n default:\n error(parser, \"Max buffer length exceeded: \"+buffers[i])\n }\n }\n maxActual = Math.max(maxActual, len)\n }\n // schedule the next check for the earliest possible buffer overrun.\n parser.bufferCheckPosition = (sax.MAX_BUFFER_LENGTH - maxActual)\n + parser.position\n}\n\nfunction clearBuffers (parser) {\n for (var i = 0, l = buffers.length; i < l; i ++) {\n parser[buffers[i]] = \"\"\n }\n}\n\nfunction flushBuffers (parser) {\n closeText(parser)\n if (parser.cdata !== \"\") {\n emitNode(parser, \"oncdata\", parser.cdata)\n parser.cdata = \"\"\n }\n if (parser.script !== \"\") {\n emitNode(parser, \"onscript\", parser.script)\n parser.script = \"\"\n }\n}\n\nSAXParser.prototype =\n { end: function () { end(this) }\n , write: write\n , resume: function () { this.error = null; return this }\n , close: function () { return this.write(null) }\n , flush: function () { flushBuffers(this) }\n }\n\ntry {\n var Stream = require(\"stream\").Stream\n} catch (ex) {\n var Stream = function () {}\n}\n\n\nvar streamWraps = sax.EVENTS.filter(function (ev) {\n return ev !== \"error\" && ev !== \"end\"\n})\n\nfunction createStream (strict, opt) {\n return new SAXStream(strict, opt)\n}\n\nfunction SAXStream (strict, opt) {\n if (!(this instanceof SAXStream)) return new SAXStream(strict, opt)\n\n Stream.apply(this)\n\n this._parser = new SAXParser(strict, opt)\n this.writable = true\n this.readable = true\n\n\n var me = this\n\n this._parser.onend = function () {\n me.emit(\"end\")\n }\n\n this._parser.onerror = function (er) {\n me.emit(\"error\", er)\n\n // if didn't throw, then means error was handled.\n // go ahead and clear error, so we can write again.\n me._parser.error = null\n }\n\n this._decoder = null;\n\n streamWraps.forEach(function (ev) {\n Object.defineProperty(me, \"on\" + ev, {\n get: function () { return me._parser[\"on\" + ev] },\n set: function (h) {\n if (!h) {\n me.removeAllListeners(ev)\n return me._parser[\"on\"+ev] = h\n }\n me.on(ev, h)\n },\n enumerable: true,\n configurable: false\n })\n })\n}\n\nSAXStream.prototype = Object.create(Stream.prototype,\n { constructor: { value: SAXStream } })\n\nSAXStream.prototype.write = function (data) {\n if (typeof Buffer === 'function' &&\n typeof Buffer.isBuffer === 'function' &&\n Buffer.isBuffer(data)) {\n if (!this._decoder) {\n var SD = require('string_decoder').StringDecoder\n this._decoder = new SD('utf8')\n }\n data = this._decoder.write(data);\n }\n\n this._parser.write(data.toString())\n this.emit(\"data\", data)\n return true\n}\n\nSAXStream.prototype.end = function (chunk) {\n if (chunk && chunk.length) this.write(chunk)\n this._parser.end()\n return true\n}\n\nSAXStream.prototype.on = function (ev, handler) {\n var me = this\n if (!me._parser[\"on\"+ev] && streamWraps.indexOf(ev) !== -1) {\n me._parser[\"on\"+ev] = function () {\n var args = arguments.length === 1 ? [arguments[0]]\n : Array.apply(null, arguments)\n args.splice(0, 0, ev)\n me.emit.apply(me, args)\n }\n }\n\n return Stream.prototype.on.call(me, ev, handler)\n}\n\n\n\n// character classes and tokens\nvar whitespace = \"\\r\\n\\t \"\n // this really needs to be replaced with character classes.\n // XML allows all manner of ridiculous numbers and digits.\n , number = \"0124356789\"\n , letter = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\"\n // (Letter | \"_\" | \":\")\n , quote = \"'\\\"\"\n , entity = number+letter+\"#\"\n , attribEnd = whitespace + \">\"\n , CDATA = \"[CDATA[\"\n , DOCTYPE = \"DOCTYPE\"\n , XML_NAMESPACE = \"http://www.w3.org/XML/1998/namespace\"\n , XMLNS_NAMESPACE = \"http://www.w3.org/2000/xmlns/\"\n , rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE }\n\n// turn all the string character sets into character class objects.\nwhitespace = charClass(whitespace)\nnumber = charClass(number)\nletter = charClass(letter)\n\n// http://www.w3.org/TR/REC-xml/#NT-NameStartChar\n// This implementation works on strings, a single character at a time\n// as such, it cannot ever support astral-plane characters (10000-EFFFF)\n// without a significant breaking change to either this parser, or the\n// JavaScript language. Implementation of an emoji-capable xml parser\n// is left as an exercise for the reader.\nvar nameStart = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/\n\nvar nameBody = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040\\.\\d-]/\n\nquote = charClass(quote)\nentity = charClass(entity)\nattribEnd = charClass(attribEnd)\n\nfunction charClass (str) {\n return str.split(\"\").reduce(function (s, c) {\n s[c] = true\n return s\n }, {})\n}\n\nfunction isRegExp (c) {\n return Object.prototype.toString.call(c) === '[object RegExp]'\n}\n\nfunction is (charclass, c) {\n return isRegExp(charclass) ? !!c.match(charclass) : charclass[c]\n}\n\nfunction not (charclass, c) {\n return !is(charclass, c)\n}\n\nvar S = 0\nsax.STATE =\n{ BEGIN : S++\n, TEXT : S++ // general stuff\n, TEXT_ENTITY : S++ // & and such.\n, OPEN_WAKA : S++ // <\n, SGML_DECL : S++ // <!BLARG\n, SGML_DECL_QUOTED : S++ // <!BLARG foo \"bar\n, DOCTYPE : S++ // <!DOCTYPE\n, DOCTYPE_QUOTED : S++ // <!DOCTYPE \"//blah\n, DOCTYPE_DTD : S++ // <!DOCTYPE \"//blah\" [ ...\n, DOCTYPE_DTD_QUOTED : S++ // <!DOCTYPE \"//blah\" [ \"foo\n, COMMENT_STARTING : S++ // <!-\n, COMMENT : S++ // <!--\n, COMMENT_ENDING : S++ // <!-- blah -\n, COMMENT_ENDED : S++ // <!-- blah --\n, CDATA : S++ // <![CDATA[ something\n, CDATA_ENDING : S++ // ]\n, CDATA_ENDING_2 : S++ // ]]\n, PROC_INST : S++ // <?hi\n, PROC_INST_BODY : S++ // <?hi there\n, PROC_INST_ENDING : S++ // <?hi \"there\" ?\n, OPEN_TAG : S++ // <strong\n, OPEN_TAG_SLASH : S++ // <strong /\n, ATTRIB : S++ // <a\n, ATTRIB_NAME : S++ // <a foo\n, ATTRIB_NAME_SAW_WHITE : S++ // <a foo _\n, ATTRIB_VALUE : S++ // <a foo=\n, ATTRIB_VALUE_QUOTED : S++ // <a foo=\"bar\n, ATTRIB_VALUE_CLOSED : S++ // <a foo=\"bar\"\n, ATTRIB_VALUE_UNQUOTED : S++ // <a foo=bar\n, ATTRIB_VALUE_ENTITY_Q : S++ // <foo bar=\""\"\n, ATTRIB_VALUE_ENTITY_U : S++ // <foo bar="\n, CLOSE_TAG : S++ // </a\n, CLOSE_TAG_SAW_WHITE : S++ // </a >\n, SCRIPT : S++ // <script> ...\n, SCRIPT_ENDING : S++ // <script> ... <\n}\n\nsax.ENTITIES =\n{ \"amp\" : \"&\"\n, \"gt\" : \">\"\n, \"lt\" : \"<\"\n, \"quot\" : \"\\\"\"\n, \"apos\" : \"'\"\n, \"AElig\" : 198\n, \"Aacute\" : 193\n, \"Acirc\" : 194\n, \"Agrave\" : 192\n, \"Aring\" : 197\n, \"Atilde\" : 195\n, \"Auml\" : 196\n, \"Ccedil\" : 199\n, \"ETH\" : 208\n, \"Eacute\" : 201\n, \"Ecirc\" : 202\n, \"Egrave\" : 200\n, \"Euml\" : 203\n, \"Iacute\" : 205\n, \"Icirc\" : 206\n, \"Igrave\" : 204\n, \"Iuml\" : 207\n, \"Ntilde\" : 209\n, \"Oacute\" : 211\n, \"Ocirc\" : 212\n, \"Ograve\" : 210\n, \"Oslash\" : 216\n, \"Otilde\" : 213\n, \"Ouml\" : 214\n, \"THORN\" : 222\n, \"Uacute\" : 218\n, \"Ucirc\" : 219\n, \"Ugrave\" : 217\n, \"Uuml\" : 220\n, \"Yacute\" : 221\n, \"aacute\" : 225\n, \"acirc\" : 226\n, \"aelig\" : 230\n, \"agrave\" : 224\n, \"aring\" : 229\n, \"atilde\" : 227\n, \"auml\" : 228\n, \"ccedil\" : 231\n, \"eacute\" : 233\n, \"ecirc\" : 234\n, \"egrave\" : 232\n, \"eth\" : 240\n, \"euml\" : 235\n, \"iacute\" : 237\n, \"icirc\" : 238\n, \"igrave\" : 236\n, \"iuml\" : 239\n, \"ntilde\" : 241\n, \"oacute\" : 243\n, \"ocirc\" : 244\n, \"ograve\" : 242\n, \"oslash\" : 248\n, \"otilde\" : 245\n, \"ouml\" : 246\n, \"szlig\" : 223\n, \"thorn\" : 254\n, \"uacute\" : 250\n, \"ucirc\" : 251\n, \"ugrave\" : 249\n, \"uuml\" : 252\n, \"yacute\" : 253\n, \"yuml\" : 255\n, \"copy\" : 169\n, \"reg\" : 174\n, \"nbsp\" : 160\n, \"iexcl\" : 161\n, \"cent\" : 162\n, \"pound\" : 163\n, \"curren\" : 164\n, \"yen\" : 165\n, \"brvbar\" : 166\n, \"sect\" : 167\n, \"uml\" : 168\n, \"ordf\" : 170\n, \"laquo\" : 171\n, \"not\" : 172\n, \"shy\" : 173\n, \"macr\" : 175\n, \"deg\" : 176\n, \"plusmn\" : 177\n, \"sup1\" : 185\n, \"sup2\" : 178\n, \"sup3\" : 179\n, \"acute\" : 180\n, \"micro\" : 181\n, \"para\" : 182\n, \"middot\" : 183\n, \"cedil\" : 184\n, \"ordm\" : 186\n, \"raquo\" : 187\n, \"frac14\" : 188\n, \"frac12\" : 189\n, \"frac34\" : 190\n, \"iquest\" : 191\n, \"times\" : 215\n, \"divide\" : 247\n, \"OElig\" : 338\n, \"oelig\" : 339\n, \"Scaron\" : 352\n, \"scaron\" : 353\n, \"Yuml\" : 376\n, \"fnof\" : 402\n, \"circ\" : 710\n, \"tilde\" : 732\n, \"Alpha\" : 913\n, \"Beta\" : 914\n, \"Gamma\" : 915\n, \"Delta\" : 916\n, \"Epsilon\" : 917\n, \"Zeta\" : 918\n, \"Eta\" : 919\n, \"Theta\" : 920\n, \"Iota\" : 921\n, \"Kappa\" : 922\n, \"Lambda\" : 923\n, \"Mu\" : 924\n, \"Nu\" : 925\n, \"Xi\" : 926\n, \"Omicron\" : 927\n, \"Pi\" : 928\n, \"Rho\" : 929\n, \"Sigma\" : 931\n, \"Tau\" : 932\n, \"Upsilon\" : 933\n, \"Phi\" : 934\n, \"Chi\" : 935\n, \"Psi\" : 936\n, \"Omega\" : 937\n, \"alpha\" : 945\n, \"beta\" : 946\n, \"gamma\" : 947\n, \"delta\" : 948\n, \"epsilon\" : 949\n, \"zeta\" : 950\n, \"eta\" : 951\n, \"theta\" : 952\n, \"iota\" : 953\n, \"kappa\" : 954\n, \"lambda\" : 955\n, \"mu\" : 956\n, \"nu\" : 957\n, \"xi\" : 958\n, \"omicron\" : 959\n, \"pi\" : 960\n, \"rho\" : 961\n, \"sigmaf\" : 962\n, \"sigma\" : 963\n, \"tau\" : 964\n, \"upsilon\" : 965\n, \"phi\" : 966\n, \"chi\" : 967\n, \"psi\" : 968\n, \"omega\" : 969\n, \"thetasym\" : 977\n, \"upsih\" : 978\n, \"piv\" : 982\n, \"ensp\" : 8194\n, \"emsp\" : 8195\n, \"thinsp\" : 8201\n, \"zwnj\" : 8204\n, \"zwj\" : 8205\n, \"lrm\" : 8206\n, \"rlm\" : 8207\n, \"ndash\" : 8211\n, \"mdash\" : 8212\n, \"lsquo\" : 8216\n, \"rsquo\" : 8217\n, \"sbquo\" : 8218\n, \"ldquo\" : 8220\n, \"rdquo\" : 8221\n, \"bdquo\" : 8222\n, \"dagger\" : 8224\n, \"Dagger\" : 8225\n, \"bull\" : 8226\n, \"hellip\" : 8230\n, \"permil\" : 8240\n, \"prime\" : 8242\n, \"Prime\" : 8243\n, \"lsaquo\" : 8249\n, \"rsaquo\" : 8250\n, \"oline\" : 8254\n, \"frasl\" : 8260\n, \"euro\" : 8364\n, \"image\" : 8465\n, \"weierp\" : 8472\n, \"real\" : 8476\n, \"trade\" : 8482\n, \"alefsym\" : 8501\n, \"larr\" : 8592\n, \"uarr\" : 8593\n, \"rarr\" : 8594\n, \"darr\" : 8595\n, \"harr\" : 8596\n, \"crarr\" : 8629\n, \"lArr\" : 8656\n, \"uArr\" : 8657\n, \"rArr\" : 8658\n, \"dArr\" : 8659\n, \"hArr\" : 8660\n, \"forall\" : 8704\n, \"part\" : 8706\n, \"exist\" : 8707\n, \"empty\" : 8709\n, \"nabla\" : 8711\n, \"isin\" : 8712\n, \"notin\" : 8713\n, \"ni\" : 8715\n, \"prod\" : 8719\n, \"sum\" : 8721\n, \"minus\" : 8722\n, \"lowast\" : 8727\n, \"radic\" : 8730\n, \"prop\" : 8733\n, \"infin\" : 8734\n, \"ang\" : 8736\n, \"and\" : 8743\n, \"or\" : 8744\n, \"cap\" : 8745\n, \"cup\" : 8746\n, \"int\" : 8747\n, \"there4\" : 8756\n, \"sim\" : 8764\n, \"cong\" : 8773\n, \"asymp\" : 8776\n, \"ne\" : 8800\n, \"equiv\" : 8801\n, \"le\" : 8804\n, \"ge\" : 8805\n, \"sub\" : 8834\n, \"sup\" : 8835\n, \"nsub\" : 8836\n, \"sube\" : 8838\n, \"supe\" : 8839\n, \"oplus\" : 8853\n, \"otimes\" : 8855\n, \"perp\" : 8869\n, \"sdot\" : 8901\n, \"lceil\" : 8968\n, \"rceil\" : 8969\n, \"lfloor\" : 8970\n, \"rfloor\" : 8971\n, \"lang\" : 9001\n, \"rang\" : 9002\n, \"loz\" : 9674\n, \"spades\" : 9824\n, \"clubs\" : 9827\n, \"hearts\" : 9829\n, \"diams\" : 9830\n}\n\nObject.keys(sax.ENTITIES).forEach(function (key) {\n var e = sax.ENTITIES[key]\n var s = typeof e === 'number' ? String.fromCharCode(e) : e\n sax.ENTITIES[key] = s\n})\n\nfor (var S in sax.STATE) sax.STATE[sax.STATE[S]] = S\n\n// shorthand\nS = sax.STATE\n\nfunction emit (parser, event, data) {\n parser[event] && parser[event](data)\n}\n\nfunction emitNode (parser, nodeType, data) {\n if (parser.textNode) closeText(parser)\n emit(parser, nodeType, data)\n}\n\nfunction closeText (parser) {\n parser.textNode = textopts(parser.opt, parser.textNode)\n if (parser.textNode) emit(parser, \"ontext\", parser.textNode)\n parser.textNode = \"\"\n}\n\nfunction textopts (opt, text) {\n if (opt.trim) text = text.trim()\n if (opt.normalize) text = text.replace(/\\s+/g, \" \")\n return text\n}\n\nfunction error (parser, er) {\n closeText(parser)\n if (parser.trackPosition) {\n er += \"\\nLine: \"+parser.line+\n \"\\nColumn: \"+parser.column+\n \"\\nChar: \"+parser.c\n }\n er = new Error(er)\n parser.error = er\n emit(parser, \"onerror\", er)\n return parser\n}\n\nfunction end (parser) {\n if (!parser.closedRoot) strictFail(parser, \"Unclosed root tag\")\n if ((parser.state !== S.BEGIN) && (parser.state !== S.TEXT)) error(parser, \"Unexpected end\")\n closeText(parser)\n parser.c = \"\"\n parser.closed = true\n emit(parser, \"onend\")\n SAXParser.call(parser, parser.strict, parser.opt)\n return parser\n}\n\nfunction strictFail (parser, message) {\n if (typeof parser !== 'object' || !(parser instanceof SAXParser))\n throw new Error('bad call to strictFail');\n if (parser.strict) error(parser, message)\n}\n\nfunction newTag (parser) {\n if (!parser.strict) parser.tagName = parser.tagName[parser.looseCase]()\n var parent = parser.tags[parser.tags.length - 1] || parser\n , tag = parser.tag = { name : parser.tagName, attributes : {} }\n\n // will be overridden if tag contails an xmlns=\"foo\" or xmlns:foo=\"bar\"\n if (parser.opt.xmlns) tag.ns = parent.ns\n parser.attribList.length = 0\n}\n\nfunction qname (name, attribute) {\n var i = name.indexOf(\":\")\n , qualName = i < 0 ? [ \"\", name ] : name.split(\":\")\n , prefix = qualName[0]\n , local = qualName[1]\n\n // <x \"xmlns\"=\"http://foo\">\n if (attribute && name === \"xmlns\") {\n prefix = \"xmlns\"\n local = \"\"\n }\n\n return { prefix: prefix, local: local }\n}\n\nfunction attrib (parser) {\n if (!parser.strict) parser.attribName = parser.attribName[parser.looseCase]()\n\n if (parser.attribList.indexOf(parser.attribName) !== -1 ||\n parser.tag.attributes.hasOwnProperty(parser.attribName)) {\n return parser.attribName = parser.attribValue = \"\"\n }\n\n if (parser.opt.xmlns) {\n var qn = qname(parser.attribName, true)\n , prefix = qn.prefix\n , local = qn.local\n\n if (prefix === \"xmlns\") {\n // namespace binding attribute; push the binding into scope\n if (local === \"xml\" && parser.attribValue !== XML_NAMESPACE) {\n strictFail( parser\n , \"xml: prefix must be bound to \" + XML_NAMESPACE + \"\\n\"\n + \"Actual: \" + parser.attribValue )\n } else if (local === \"xmlns\" && parser.attribValue !== XMLNS_NAMESPACE) {\n strictFail( parser\n , \"xmlns: prefix must be bound to \" + XMLNS_NAMESPACE + \"\\n\"\n + \"Actual: \" + parser.attribValue )\n } else {\n var tag = parser.tag\n , parent = parser.tags[parser.tags.length - 1] || parser\n if (tag.ns === parent.ns) {\n tag.ns = Object.create(parent.ns)\n }\n tag.ns[local] = parser.attribValue\n }\n }\n\n // defer onattribute events until all attributes have been seen\n // so any new bindings can take effect; preserve attribute order\n // so deferred events can be emitted in document order\n parser.attribList.push([parser.attribName, parser.attribValue])\n } else {\n // in non-xmlns mode, we can emit the event right away\n parser.tag.attributes[parser.attribName] = parser.attribValue\n emitNode( parser\n , \"onattribute\"\n , { name: parser.attribName\n , value: parser.attribValue } )\n }\n\n parser.attribName = parser.attribValue = \"\"\n}\n\nfunction openTag (parser, selfClosing) {\n if (parser.opt.xmlns) {\n // emit namespace binding events\n var tag = parser.tag\n\n // add namespace info to tag\n var qn = qname(parser.tagName)\n tag.prefix = qn.prefix\n tag.local = qn.local\n tag.uri = tag.ns[qn.prefix] || \"\"\n\n if (tag.prefix && !tag.uri) {\n strictFail(parser, \"Unbound namespace prefix: \"\n + JSON.stringify(parser.tagName))\n tag.uri = qn.prefix\n }\n\n var parent = parser.tags[parser.tags.length - 1] || parser\n if (tag.ns && parent.ns !== tag.ns) {\n Object.keys(tag.ns).forEach(function (p) {\n emitNode( parser\n , \"onopennamespace\"\n , { prefix: p , uri: tag.ns[p] } )\n })\n }\n\n // handle deferred onattribute events\n // Note: do not apply default ns to attributes:\n // http://www.w3.org/TR/REC-xml-names/#defaulting\n for (var i = 0, l = parser.attribList.length; i < l; i ++) {\n var nv = parser.attribList[i]\n var name = nv[0]\n , value = nv[1]\n , qualName = qname(name, true)\n , prefix = qualName.prefix\n , local = qualName.local\n , uri = prefix == \"\" ? \"\" : (tag.ns[prefix] || \"\")\n , a = { name: name\n , value: value\n , prefix: prefix\n , local: local\n , uri: uri\n }\n\n // if there's any attributes with an undefined namespace,\n // then fail on them now.\n if (prefix && prefix != \"xmlns\" && !uri) {\n strictFail(parser, \"Unbound namespace prefix: \"\n + JSON.stringify(prefix))\n a.uri = prefix\n }\n parser.tag.attributes[name] = a\n emitNode(parser, \"onattribute\", a)\n }\n parser.attribList.length = 0\n }\n\n parser.tag.isSelfClosing = !!selfClosing\n\n // process the tag\n parser.sawRoot = true\n parser.tags.push(parser.tag)\n emitNode(parser, \"onopentag\", parser.tag)\n if (!selfClosing) {\n // special case for <script> in non-strict mode.\n if (!parser.noscript && parser.tagName.toLowerCase() === \"script\") {\n parser.state = S.SCRIPT\n } else {\n parser.state = S.TEXT\n }\n parser.tag = null\n parser.tagName = \"\"\n }\n parser.attribName = parser.attribValue = \"\"\n parser.attribList.length = 0\n}\n\nfunction closeTag (parser) {\n if (!parser.tagName) {\n strictFail(parser, \"Weird empty close tag.\")\n parser.textNode += \"</>\"\n parser.state = S.TEXT\n return\n }\n\n if (parser.script) {\n if (parser.tagName !== \"script\") {\n parser.script += \"</\" + parser.tagName + \">\"\n parser.tagName = \"\"\n parser.state = S.SCRIPT\n return\n }\n emitNode(parser, \"onscript\", parser.script)\n parser.script = \"\"\n }\n\n // first make sure that the closing tag actually exists.\n // <a><b></c></b></a> will close everything, otherwise.\n var t = parser.tags.length\n var tagName = parser.tagName\n if (!parser.strict) tagName = tagName[parser.looseCase]()\n var closeTo = tagName\n while (t --) {\n var close = parser.tags[t]\n if (close.name !== closeTo) {\n // fail the first time in strict mode\n strictFail(parser, \"Unexpected close tag\")\n } else break\n }\n\n // didn't find it. we already failed for strict, so just abort.\n if (t < 0) {\n strictFail(parser, \"Unmatched closing tag: \"+parser.tagName)\n parser.textNode += \"</\" + parser.tagName + \">\"\n parser.state = S.TEXT\n return\n }\n parser.tagName = tagName\n var s = parser.tags.length\n while (s --> t) {\n var tag = parser.tag = parser.tags.pop()\n parser.tagName = parser.tag.name\n emitNode(parser, \"onclosetag\", parser.tagName)\n\n var x = {}\n for (var i in tag.ns) x[i] = tag.ns[i]\n\n var parent = parser.tags[parser.tags.length - 1] || parser\n if (parser.opt.xmlns && tag.ns !== parent.ns) {\n // remove namespace bindings introduced by tag\n Object.keys(tag.ns).forEach(function (p) {\n var n = tag.ns[p]\n emitNode(parser, \"onclosenamespace\", { prefix: p, uri: n })\n })\n }\n }\n if (t === 0) parser.closedRoot = true\n parser.tagName = parser.attribValue = parser.attribName = \"\"\n parser.attribList.length = 0\n parser.state = S.TEXT\n}\n\nfunction parseEntity (parser) {\n var entity = parser.entity\n , entityLC = entity.toLowerCase()\n , num\n , numStr = \"\"\n if (parser.ENTITIES[entity])\n return parser.ENTITIES[entity]\n if (parser.ENTITIES[entityLC])\n return parser.ENTITIES[entityLC]\n entity = entityLC\n if (entity.charAt(0) === \"#\") {\n if (entity.charAt(1) === \"x\") {\n entity = entity.slice(2)\n num = parseInt(entity, 16)\n numStr = num.toString(16)\n } else {\n entity = entity.slice(1)\n num = parseInt(entity, 10)\n numStr = num.toString(10)\n }\n }\n entity = entity.replace(/^0+/, \"\")\n if (numStr.toLowerCase() !== entity) {\n strictFail(parser, \"Invalid character entity\")\n return \"&\"+parser.entity + \";\"\n }\n\n return String.fromCodePoint(num)\n}\n\nfunction write (chunk) {\n var parser = this\n if (this.error) throw this.error\n if (parser.closed) return error(parser,\n \"Cannot write after close. Assign an onready handler.\")\n if (chunk === null) return end(parser)\n var i = 0, c = \"\"\n while (parser.c = c = chunk.charAt(i++)) {\n if (parser.trackPosition) {\n parser.position ++\n if (c === \"\\n\") {\n parser.line ++\n parser.column = 0\n } else parser.column ++\n }\n switch (parser.state) {\n\n case S.BEGIN:\n if (c === \"<\") {\n parser.state = S.OPEN_WAKA\n parser.startTagPosition = parser.position\n } else if (not(whitespace,c)) {\n // have to process this as a text node.\n // weird, but happens.\n strictFail(parser, \"Non-whitespace before first tag.\")\n parser.textNode = c\n parser.state = S.TEXT\n }\n continue\n\n case S.TEXT:\n if (parser.sawRoot && !parser.closedRoot) {\n var starti = i-1\n while (c && c!==\"<\" && c!==\"&\") {\n c = chunk.charAt(i++)\n if (c && parser.trackPosition) {\n parser.position ++\n if (c === \"\\n\") {\n parser.line ++\n parser.column = 0\n } else parser.column ++\n }\n }\n parser.textNode += chunk.substring(starti, i-1)\n }\n if (c === \"<\") {\n parser.state = S.OPEN_WAKA\n parser.startTagPosition = parser.position\n } else {\n if (not(whitespace, c) && (!parser.sawRoot || parser.closedRoot))\n strictFail(parser, \"Text data outside of root node.\")\n if (c === \"&\") parser.state = S.TEXT_ENTITY\n else parser.textNode += c\n }\n continue\n\n case S.SCRIPT:\n // only non-strict\n if (c === \"<\") {\n parser.state = S.SCRIPT_ENDING\n } else parser.script += c\n continue\n\n case S.SCRIPT_ENDING:\n if (c === \"/\") {\n parser.state = S.CLOSE_TAG\n } else {\n parser.script += \"<\" + c\n parser.state = S.SCRIPT\n }\n continue\n\n case S.OPEN_WAKA:\n // either a /, ?, !, or text is coming next.\n if (c === \"!\") {\n parser.state = S.SGML_DECL\n parser.sgmlDecl = \"\"\n } else if (is(whitespace, c)) {\n // wait for it...\n } else if (is(nameStart,c)) {\n parser.state = S.OPEN_TAG\n parser.tagName = c\n } else if (c === \"/\") {\n parser.state = S.CLOSE_TAG\n parser.tagName = \"\"\n } else if (c === \"?\") {\n parser.state = S.PROC_INST\n parser.procInstName = parser.procInstBody = \"\"\n } else {\n strictFail(parser, \"Unencoded <\")\n // if there was some whitespace, then add that in.\n if (parser.startTagPosition + 1 < parser.position) {\n var pad = parser.position - parser.startTagPosition\n c = new Array(pad).join(\" \") + c\n }\n parser.textNode += \"<\" + c\n parser.state = S.TEXT\n }\n continue\n\n case S.SGML_DECL:\n if ((parser.sgmlDecl+c).toUpperCase() === CDATA) {\n emitNode(parser, \"onopencdata\")\n parser.state = S.CDATA\n parser.sgmlDecl = \"\"\n parser.cdata = \"\"\n } else if (parser.sgmlDecl+c === \"--\") {\n parser.state = S.COMMENT\n parser.comment = \"\"\n parser.sgmlDecl = \"\"\n } else if ((parser.sgmlDecl+c).toUpperCase() === DOCTYPE) {\n parser.state = S.DOCTYPE\n if (parser.doctype || parser.sawRoot) strictFail(parser,\n \"Inappropriately located doctype declaration\")\n parser.doctype = \"\"\n parser.sgmlDecl = \"\"\n } else if (c === \">\") {\n emitNode(parser, \"onsgmldeclaration\", parser.sgmlDecl)\n parser.sgmlDecl = \"\"\n parser.state = S.TEXT\n } else if (is(quote, c)) {\n parser.state = S.SGML_DECL_QUOTED\n parser.sgmlDecl += c\n } else parser.sgmlDecl += c\n continue\n\n case S.SGML_DECL_QUOTED:\n if (c === parser.q) {\n parser.state = S.SGML_DECL\n parser.q = \"\"\n }\n parser.sgmlDecl += c\n continue\n\n case S.DOCTYPE:\n if (c === \">\") {\n parser.state = S.TEXT\n emitNode(parser, \"ondoctype\", parser.doctype)\n parser.doctype = true // just remember that we saw it.\n } else {\n parser.doctype += c\n if (c === \"[\") parser.state = S.DOCTYPE_DTD\n else if (is(quote, c)) {\n parser.state = S.DOCTYPE_QUOTED\n parser.q = c\n }\n }\n continue\n\n case S.DOCTYPE_QUOTED:\n parser.doctype += c\n if (c === parser.q) {\n parser.q = \"\"\n parser.state = S.DOCTYPE\n }\n continue\n\n case S.DOCTYPE_DTD:\n parser.doctype += c\n if (c === \"]\") parser.state = S.DOCTYPE\n else if (is(quote,c)) {\n parser.state = S.DOCTYPE_DTD_QUOTED\n parser.q = c\n }\n continue\n\n case S.DOCTYPE_DTD_QUOTED:\n parser.doctype += c\n if (c === parser.q) {\n parser.state = S.DOCTYPE_DTD\n parser.q = \"\"\n }\n continue\n\n case S.COMMENT:\n if (c === \"-\") parser.state = S.COMMENT_ENDING\n else parser.comment += c\n continue\n\n case S.COMMENT_ENDING:\n if (c === \"-\") {\n parser.state = S.COMMENT_ENDED\n parser.comment = textopts(parser.opt, parser.comment)\n if (parser.comment) emitNode(parser, \"oncomment\", parser.comment)\n parser.comment = \"\"\n } else {\n parser.comment += \"-\" + c\n parser.state = S.COMMENT\n }\n continue\n\n case S.COMMENT_ENDED:\n if (c !== \">\") {\n strictFail(parser, \"Malformed comment\")\n // allow <!-- blah -- bloo --> in non-strict mode,\n // which is a comment of \" blah -- bloo \"\n parser.comment += \"--\" + c\n parser.state = S.COMMENT\n } else parser.state = S.TEXT\n continue\n\n case S.CDATA:\n if (c === \"]\") parser.state = S.CDATA_ENDING\n else parser.cdata += c\n continue\n\n case S.CDATA_ENDING:\n if (c === \"]\") parser.state = S.CDATA_ENDING_2\n else {\n parser.cdata += \"]\" + c\n parser.state = S.CDATA\n }\n continue\n\n case S.CDATA_ENDING_2:\n if (c === \">\") {\n if (parser.cdata) emitNode(parser, \"oncdata\", parser.cdata)\n emitNode(parser, \"onclosecdata\")\n parser.cdata = \"\"\n parser.state = S.TEXT\n } else if (c === \"]\") {\n parser.cdata += \"]\"\n } else {\n parser.cdata += \"]]\" + c\n parser.state = S.CDATA\n }\n continue\n\n case S.PROC_INST:\n if (c === \"?\") parser.state = S.PROC_INST_ENDING\n else if (is(whitespace, c)) parser.state = S.PROC_INST_BODY\n else parser.procInstName += c\n continue\n\n case S.PROC_INST_BODY:\n if (!parser.procInstBody && is(whitespace, c)) continue\n else if (c === \"?\") parser.state = S.PROC_INST_ENDING\n else parser.procInstBody += c\n continue\n\n case S.PROC_INST_ENDING:\n if (c === \">\") {\n emitNode(parser, \"onprocessinginstruction\", {\n name : parser.procInstName,\n body : parser.procInstBody\n })\n parser.procInstName = parser.procInstBody = \"\"\n parser.state = S.TEXT\n } else {\n parser.procInstBody += \"?\" + c\n parser.state = S.PROC_INST_BODY\n }\n continue\n\n case S.OPEN_TAG:\n if (is(nameBody, c)) parser.tagName += c\n else {\n newTag(parser)\n if (c === \">\") openTag(parser)\n else if (c === \"/\") parser.state = S.OPEN_TAG_SLASH\n else {\n if (not(whitespace, c)) strictFail(\n parser, \"Invalid character in tag name\")\n parser.state = S.ATTRIB\n }\n }\n continue\n\n case S.OPEN_TAG_SLASH:\n if (c === \">\") {\n openTag(parser, true)\n closeTag(parser)\n } else {\n strictFail(parser, \"Forward-slash in opening tag not followed by >\")\n parser.state = S.ATTRIB\n }\n continue\n\n case S.ATTRIB:\n // haven't read the attribute name yet.\n if (is(whitespace, c)) continue\n else if (c === \">\") openTag(parser)\n else if (c === \"/\") parser.state = S.OPEN_TAG_SLASH\n else if (is(nameStart, c)) {\n parser.attribName = c\n parser.attribValue = \"\"\n parser.state = S.ATTRIB_NAME\n } else strictFail(parser, \"Invalid attribute name\")\n continue\n\n case S.ATTRIB_NAME:\n if (c === \"=\") parser.state = S.ATTRIB_VALUE\n else if (c === \">\") {\n strictFail(parser, \"Attribute without value\")\n parser.attribValue = parser.attribName\n attrib(parser)\n openTag(parser)\n }\n else if (is(whitespace, c)) parser.state = S.ATTRIB_NAME_SAW_WHITE\n else if (is(nameBody, c)) parser.attribName += c\n else strictFail(parser, \"Invalid attribute name\")\n continue\n\n case S.ATTRIB_NAME_SAW_WHITE:\n if (c === \"=\") parser.state = S.ATTRIB_VALUE\n else if (is(whitespace, c)) continue\n else {\n strictFail(parser, \"Attribute without value\")\n parser.tag.attributes[parser.attribName] = \"\"\n parser.attribValue = \"\"\n emitNode(parser, \"onattribute\",\n { name : parser.attribName, value : \"\" })\n parser.attribName = \"\"\n if (c === \">\") openTag(parser)\n else if (is(nameStart, c)) {\n parser.attribName = c\n parser.state = S.ATTRIB_NAME\n } else {\n strictFail(parser, \"Invalid attribute name\")\n parser.state = S.ATTRIB\n }\n }\n continue\n\n case S.ATTRIB_VALUE:\n if (is(whitespace, c)) continue\n else if (is(quote, c)) {\n parser.q = c\n parser.state = S.ATTRIB_VALUE_QUOTED\n } else {\n strictFail(parser, \"Unquoted attribute value\")\n parser.state = S.ATTRIB_VALUE_UNQUOTED\n parser.attribValue = c\n }\n continue\n\n case S.ATTRIB_VALUE_QUOTED:\n if (c !== parser.q) {\n if (c === \"&\") parser.state = S.ATTRIB_VALUE_ENTITY_Q\n else parser.attribValue += c\n continue\n }\n attrib(parser)\n parser.q = \"\"\n parser.state = S.ATTRIB_VALUE_CLOSED\n continue\n\n case S.ATTRIB_VALUE_CLOSED:\n if (is(whitespace, c)) {\n parser.state = S.ATTRIB\n } else if (c === \">\") openTag(parser)\n else if (c === \"/\") parser.state = S.OPEN_TAG_SLASH\n else if (is(nameStart, c)) {\n strictFail(parser, \"No whitespace between attributes\")\n parser.attribName = c\n parser.attribValue = \"\"\n parser.state = S.ATTRIB_NAME\n } else strictFail(parser, \"Invalid attribute name\")\n continue\n\n case S.ATTRIB_VALUE_UNQUOTED:\n if (not(attribEnd,c)) {\n if (c === \"&\") parser.state = S.ATTRIB_VALUE_ENTITY_U\n else parser.attribValue += c\n continue\n }\n attrib(parser)\n if (c === \">\") openTag(parser)\n else parser.state = S.ATTRIB\n continue\n\n case S.CLOSE_TAG:\n if (!parser.tagName) {\n if (is(whitespace, c)) continue\n else if (not(nameStart, c)) {\n if (parser.script) {\n parser.script += \"</\" + c\n parser.state = S.SCRIPT\n } else {\n strictFail(parser, \"Invalid tagname in closing tag.\")\n }\n } else parser.tagName = c\n }\n else if (c === \">\") closeTag(parser)\n else if (is(nameBody, c)) parser.tagName += c\n else if (parser.script) {\n parser.script += \"</\" + parser.tagName\n parser.tagName = \"\"\n parser.state = S.SCRIPT\n } else {\n if (not(whitespace, c)) strictFail(parser,\n \"Invalid tagname in closing tag\")\n parser.state = S.CLOSE_TAG_SAW_WHITE\n }\n continue\n\n case S.CLOSE_TAG_SAW_WHITE:\n if (is(whitespace, c)) continue\n if (c === \">\") closeTag(parser)\n else strictFail(parser, \"Invalid characters in closing tag\")\n continue\n\n case S.TEXT_ENTITY:\n case S.ATTRIB_VALUE_ENTITY_Q:\n case S.ATTRIB_VALUE_ENTITY_U:\n switch(parser.state) {\n case S.TEXT_ENTITY:\n var returnState = S.TEXT, buffer = \"textNode\"\n break\n\n case S.ATTRIB_VALUE_ENTITY_Q:\n var returnState = S.ATTRIB_VALUE_QUOTED, buffer = \"attribValue\"\n break\n\n case S.ATTRIB_VALUE_ENTITY_U:\n var returnState = S.ATTRIB_VALUE_UNQUOTED, buffer = \"attribValue\"\n break\n }\n if (c === \";\") {\n parser[buffer] += parseEntity(parser)\n parser.entity = \"\"\n parser.state = returnState\n }\n else if (is(entity, c)) parser.entity += c\n else {\n strictFail(parser, \"Invalid character entity\")\n parser[buffer] += \"&\" + parser.entity + c\n parser.entity = \"\"\n parser.state = returnState\n }\n continue\n\n default:\n throw new Error(parser, \"Unknown state: \" + parser.state)\n }\n } // while\n // cdata blocks can get very big under normal conditions. emit and move on.\n // if (parser.state === S.CDATA && parser.cdata) {\n // emitNode(parser, \"oncdata\", parser.cdata)\n // parser.cdata = \"\"\n // }\n if (parser.position >= parser.bufferCheckPosition) checkBufferLength(parser)\n return parser\n}\n\n/*! http://mths.be/fromcodepoint v0.1.0 by @mathias */\nif (!String.fromCodePoint) {\n (function() {\n var stringFromCharCode = String.fromCharCode;\n var floor = Math.floor;\n var fromCodePoint = function() {\n var MAX_SIZE = 0x4000;\n var codeUnits = [];\n var highSurrogate;\n var lowSurrogate;\n var index = -1;\n var length = arguments.length;\n if (!length) {\n return '';\n }\n var result = '';\n while (++index < length) {\n var codePoint = Number(arguments[index]);\n if (\n !isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`\n codePoint < 0 || // not a valid Unicode code point\n codePoint > 0x10FFFF || // not a valid Unicode code point\n floor(codePoint) != codePoint // not an integer\n ) {\n throw RangeError('Invalid code point: ' + codePoint);\n }\n if (codePoint <= 0xFFFF) { // BMP code point\n codeUnits.push(codePoint);\n } else { // Astral code point; split in surrogate halves\n // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n codePoint -= 0x10000;\n highSurrogate = (codePoint >> 10) + 0xD800;\n lowSurrogate = (codePoint % 0x400) + 0xDC00;\n codeUnits.push(highSurrogate, lowSurrogate);\n }\n if (index + 1 == length || codeUnits.length > MAX_SIZE) {\n result += stringFromCharCode.apply(null, codeUnits);\n codeUnits.length = 0;\n }\n }\n return result;\n };\n if (Object.defineProperty) {\n Object.defineProperty(String, 'fromCodePoint', {\n 'value': fromCodePoint,\n 'configurable': true,\n 'writable': true\n });\n } else {\n String.fromCodePoint = fromCodePoint;\n }\n }());\n}\n\n})(typeof exports === \"undefined\" ? sax = {} : exports);\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar Emitter = require('emitter');\n\nfunction Stream() {\n Emitter.call(this);\n}\nStream.prototype = new Emitter();\nmodule.exports = Stream;\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (!this.hasListeners('error')) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.off('data', ondata);\n dest.off('drain', ondrain);\n\n source.off('end', onend);\n source.off('close', onclose);\n\n source.off('error', onerror);\n dest.off('error', onerror);\n\n source.off('end', cleanup);\n source.off('close', cleanup);\n\n dest.off('end', cleanup);\n dest.off('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('end', cleanup);\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","\nexports.every = function(str) {\n return new Every(str);\n};\n\n/*\n Time map\n*/\n\nvar time = {\n millisecond: 1,\n second: 1000,\n minute: 60000,\n hour: 3600000,\n day: 86400000\n};\n\nfor (var key in time) {\n if (key === 'millisecond') {\n time.ms = time[key];\n } else {\n time[key.charAt(0)] = time[key];\n }\n time[key + 's'] = time[key];\n}\n\n\n/*\n Every constructor\n*/\n\nfunction Every(str) {\n this.count = 0;\n var m = parse(str);\n if (m) {\n this.time = Number(m[0]) * time[m[1]];\n this.type = m[1];\n }\n}\n\nEvery.prototype.do = function(cb) {\n if (this.time) {\n this.interval = setInterval(callback, this.time);\n }\n\n var that = this;\n function callback() {\n that.count++;\n cb.call(that);\n }\n return this;\n};\n\nEvery.prototype.stop = function() {\n if (this.interval) {\n clearInterval(this.interval);\n delete this.interval;\n }\n return this;\n};\n\n\n/*\n Convert string to milliseconds\n\n ms, millisecond(s)?\n s, second(s)?\n m, minute(s)?\n h, hour(s)?\n d, day(s)?\n*/\nvar reg = /^\\s*(\\d+(?:\\.\\d+)?)\\s*([a-z]+)\\s*$/;\n\nfunction parse(str) {\n var m = str.match(reg);\n if (m && time[m[2]]) {\n return m.slice(1);\n }\n return null;\n}\n","// Generated by CoffeeScript 1.12.7\n(function() {\n \"use strict\";\n exports.stripBOM = function(str) {\n if (str[0] === '\\uFEFF') {\n return str.substring(1);\n } else {\n return str;\n }\n };\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n \"use strict\";\n var builder, defaults, escapeCDATA, requiresCDATA, wrapCDATA,\n hasProp = {}.hasOwnProperty;\n\n builder = require('xmlbuilder');\n\n defaults = require('./defaults').defaults;\n\n requiresCDATA = function(entry) {\n return typeof entry === \"string\" && (entry.indexOf('&') >= 0 || entry.indexOf('>') >= 0 || entry.indexOf('<') >= 0);\n };\n\n wrapCDATA = function(entry) {\n return \"<![CDATA[\" + (escapeCDATA(entry)) + \"]]>\";\n };\n\n escapeCDATA = function(entry) {\n return entry.replace(']]>', ']]]]><![CDATA[>');\n };\n\n exports.Builder = (function() {\n function Builder(opts) {\n var key, ref, value;\n this.options = {};\n ref = defaults[\"0.2\"];\n for (key in ref) {\n if (!hasProp.call(ref, key)) continue;\n value = ref[key];\n this.options[key] = value;\n }\n for (key in opts) {\n if (!hasProp.call(opts, key)) continue;\n value = opts[key];\n this.options[key] = value;\n }\n }\n\n Builder.prototype.buildObject = function(rootObj) {\n var attrkey, charkey, render, rootElement, rootName;\n attrkey = this.options.attrkey;\n charkey = this.options.charkey;\n if ((Object.keys(rootObj).length === 1) && (this.options.rootName === defaults['0.2'].rootName)) {\n rootName = Object.keys(rootObj)[0];\n rootObj = rootObj[rootName];\n } else {\n rootName = this.options.rootName;\n }\n render = (function(_this) {\n return function(element, obj) {\n var attr, child, entry, index, key, value;\n if (typeof obj !== 'object') {\n if (_this.options.cdata && requiresCDATA(obj)) {\n element.raw(wrapCDATA(obj));\n } else {\n element.txt(obj);\n }\n } else if (Array.isArray(obj)) {\n for (index in obj) {\n if (!hasProp.call(obj, index)) continue;\n child = obj[index];\n for (key in child) {\n entry = child[key];\n element = render(element.ele(key), entry).up();\n }\n }\n } else {\n for (key in obj) {\n if (!hasProp.call(obj, key)) continue;\n child = obj[key];\n if (key === attrkey) {\n if (typeof child === \"object\") {\n for (attr in child) {\n value = child[attr];\n element = element.att(attr, value);\n }\n }\n } else if (key === charkey) {\n if (_this.options.cdata && requiresCDATA(child)) {\n element = element.raw(wrapCDATA(child));\n } else {\n element = element.txt(child);\n }\n } else if (Array.isArray(child)) {\n for (index in child) {\n if (!hasProp.call(child, index)) continue;\n entry = child[index];\n if (typeof entry === 'string') {\n if (_this.options.cdata && requiresCDATA(entry)) {\n element = element.ele(key).raw(wrapCDATA(entry)).up();\n } else {\n element = element.ele(key, entry).up();\n }\n } else {\n element = render(element.ele(key), entry).up();\n }\n }\n } else if (typeof child === \"object\") {\n element = render(element.ele(key), child).up();\n } else {\n if (typeof child === 'string' && _this.options.cdata && requiresCDATA(child)) {\n element = element.ele(key).raw(wrapCDATA(child)).up();\n } else {\n if (child == null) {\n child = '';\n }\n element = element.ele(key, child.toString()).up();\n }\n }\n }\n }\n return element;\n };\n })(this);\n rootElement = builder.create(rootName, this.options.xmldec, this.options.doctype, {\n headless: this.options.headless,\n allowSurrogateChars: this.options.allowSurrogateChars\n });\n return render(rootElement, rootObj).end(this.options.renderOpts);\n };\n\n return Builder;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n exports.defaults = {\n \"0.1\": {\n explicitCharkey: false,\n trim: true,\n normalize: true,\n normalizeTags: false,\n attrkey: \"@\",\n charkey: \"#\",\n explicitArray: false,\n ignoreAttrs: false,\n mergeAttrs: false,\n explicitRoot: false,\n validator: null,\n xmlns: false,\n explicitChildren: false,\n childkey: '@@',\n charsAsChildren: false,\n includeWhiteChars: false,\n async: false,\n strict: true,\n attrNameProcessors: null,\n attrValueProcessors: null,\n tagNameProcessors: null,\n valueProcessors: null,\n emptyTag: ''\n },\n \"0.2\": {\n explicitCharkey: false,\n trim: false,\n normalize: false,\n normalizeTags: false,\n attrkey: \"$\",\n charkey: \"_\",\n explicitArray: true,\n ignoreAttrs: false,\n mergeAttrs: false,\n explicitRoot: true,\n validator: null,\n xmlns: false,\n explicitChildren: false,\n preserveChildrenOrder: false,\n childkey: '$$',\n charsAsChildren: false,\n includeWhiteChars: false,\n async: false,\n strict: true,\n attrNameProcessors: null,\n attrValueProcessors: null,\n tagNameProcessors: null,\n valueProcessors: null,\n rootName: 'root',\n xmldec: {\n 'version': '1.0',\n 'encoding': 'UTF-8',\n 'standalone': true\n },\n doctype: null,\n renderOpts: {\n 'pretty': true,\n 'indent': ' ',\n 'newline': '\\n'\n },\n headless: false,\n chunkSize: 10000,\n emptyTag: '',\n cdata: false\n }\n };\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n \"use strict\";\n var bom, defaults, events, isEmpty, processItem, processors, sax, setImmediate,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n sax = require('sax');\n\n events = require('events');\n\n bom = require('./bom');\n\n processors = require('./processors');\n\n setImmediate = require('timers').setImmediate;\n\n defaults = require('./defaults').defaults;\n\n isEmpty = function(thing) {\n return typeof thing === \"object\" && (thing != null) && Object.keys(thing).length === 0;\n };\n\n processItem = function(processors, item, key) {\n var i, len, process;\n for (i = 0, len = processors.length; i < len; i++) {\n process = processors[i];\n item = process(item, key);\n }\n return item;\n };\n\n exports.Parser = (function(superClass) {\n extend(Parser, superClass);\n\n function Parser(opts) {\n this.parseStringPromise = bind(this.parseStringPromise, this);\n this.parseString = bind(this.parseString, this);\n this.reset = bind(this.reset, this);\n this.assignOrPush = bind(this.assignOrPush, this);\n this.processAsync = bind(this.processAsync, this);\n var key, ref, value;\n if (!(this instanceof exports.Parser)) {\n return new exports.Parser(opts);\n }\n this.options = {};\n ref = defaults[\"0.2\"];\n for (key in ref) {\n if (!hasProp.call(ref, key)) continue;\n value = ref[key];\n this.options[key] = value;\n }\n for (key in opts) {\n if (!hasProp.call(opts, key)) continue;\n value = opts[key];\n this.options[key] = value;\n }\n if (this.options.xmlns) {\n this.options.xmlnskey = this.options.attrkey + \"ns\";\n }\n if (this.options.normalizeTags) {\n if (!this.options.tagNameProcessors) {\n this.options.tagNameProcessors = [];\n }\n this.options.tagNameProcessors.unshift(processors.normalize);\n }\n this.reset();\n }\n\n Parser.prototype.processAsync = function() {\n var chunk, err;\n try {\n if (this.remaining.length <= this.options.chunkSize) {\n chunk = this.remaining;\n this.remaining = '';\n this.saxParser = this.saxParser.write(chunk);\n return this.saxParser.close();\n } else {\n chunk = this.remaining.substr(0, this.options.chunkSize);\n this.remaining = this.remaining.substr(this.options.chunkSize, this.remaining.length);\n this.saxParser = this.saxParser.write(chunk);\n return setImmediate(this.processAsync);\n }\n } catch (error1) {\n err = error1;\n if (!this.saxParser.errThrown) {\n this.saxParser.errThrown = true;\n return this.emit(err);\n }\n }\n };\n\n Parser.prototype.assignOrPush = function(obj, key, newValue) {\n if (!(key in obj)) {\n if (!this.options.explicitArray) {\n return obj[key] = newValue;\n } else {\n return obj[key] = [newValue];\n }\n } else {\n if (!(obj[key] instanceof Array)) {\n obj[key] = [obj[key]];\n }\n return obj[key].push(newValue);\n }\n };\n\n Parser.prototype.reset = function() {\n var attrkey, charkey, ontext, stack;\n this.removeAllListeners();\n this.saxParser = sax.parser(this.options.strict, {\n trim: false,\n normalize: false,\n xmlns: this.options.xmlns\n });\n this.saxParser.errThrown = false;\n this.saxParser.onerror = (function(_this) {\n return function(error) {\n _this.saxParser.resume();\n if (!_this.saxParser.errThrown) {\n _this.saxParser.errThrown = true;\n return _this.emit(\"error\", error);\n }\n };\n })(this);\n this.saxParser.onend = (function(_this) {\n return function() {\n if (!_this.saxParser.ended) {\n _this.saxParser.ended = true;\n return _this.emit(\"end\", _this.resultObject);\n }\n };\n })(this);\n this.saxParser.ended = false;\n this.EXPLICIT_CHARKEY = this.options.explicitCharkey;\n this.resultObject = null;\n stack = [];\n attrkey = this.options.attrkey;\n charkey = this.options.charkey;\n this.saxParser.onopentag = (function(_this) {\n return function(node) {\n var key, newValue, obj, processedKey, ref;\n obj = {};\n obj[charkey] = \"\";\n if (!_this.options.ignoreAttrs) {\n ref = node.attributes;\n for (key in ref) {\n if (!hasProp.call(ref, key)) continue;\n if (!(attrkey in obj) && !_this.options.mergeAttrs) {\n obj[attrkey] = {};\n }\n newValue = _this.options.attrValueProcessors ? processItem(_this.options.attrValueProcessors, node.attributes[key], key) : node.attributes[key];\n processedKey = _this.options.attrNameProcessors ? processItem(_this.options.attrNameProcessors, key) : key;\n if (_this.options.mergeAttrs) {\n _this.assignOrPush(obj, processedKey, newValue);\n } else {\n obj[attrkey][processedKey] = newValue;\n }\n }\n }\n obj[\"#name\"] = _this.options.tagNameProcessors ? processItem(_this.options.tagNameProcessors, node.name) : node.name;\n if (_this.options.xmlns) {\n obj[_this.options.xmlnskey] = {\n uri: node.uri,\n local: node.local\n };\n }\n return stack.push(obj);\n };\n })(this);\n this.saxParser.onclosetag = (function(_this) {\n return function() {\n var cdata, emptyStr, key, node, nodeName, obj, objClone, old, s, xpath;\n obj = stack.pop();\n nodeName = obj[\"#name\"];\n if (!_this.options.explicitChildren || !_this.options.preserveChildrenOrder) {\n delete obj[\"#name\"];\n }\n if (obj.cdata === true) {\n cdata = obj.cdata;\n delete obj.cdata;\n }\n s = stack[stack.length - 1];\n if (obj[charkey].match(/^\\s*$/) && !cdata) {\n emptyStr = obj[charkey];\n delete obj[charkey];\n } else {\n if (_this.options.trim) {\n obj[charkey] = obj[charkey].trim();\n }\n if (_this.options.normalize) {\n obj[charkey] = obj[charkey].replace(/\\s{2,}/g, \" \").trim();\n }\n obj[charkey] = _this.options.valueProcessors ? processItem(_this.options.valueProcessors, obj[charkey], nodeName) : obj[charkey];\n if (Object.keys(obj).length === 1 && charkey in obj && !_this.EXPLICIT_CHARKEY) {\n obj = obj[charkey];\n }\n }\n if (isEmpty(obj)) {\n obj = _this.options.emptyTag !== '' ? _this.options.emptyTag : emptyStr;\n }\n if (_this.options.validator != null) {\n xpath = \"/\" + ((function() {\n var i, len, results;\n results = [];\n for (i = 0, len = stack.length; i < len; i++) {\n node = stack[i];\n results.push(node[\"#name\"]);\n }\n return results;\n })()).concat(nodeName).join(\"/\");\n (function() {\n var err;\n try {\n return obj = _this.options.validator(xpath, s && s[nodeName], obj);\n } catch (error1) {\n err = error1;\n return _this.emit(\"error\", err);\n }\n })();\n }\n if (_this.options.explicitChildren && !_this.options.mergeAttrs && typeof obj === 'object') {\n if (!_this.options.preserveChildrenOrder) {\n node = {};\n if (_this.options.attrkey in obj) {\n node[_this.options.attrkey] = obj[_this.options.attrkey];\n delete obj[_this.options.attrkey];\n }\n if (!_this.options.charsAsChildren && _this.options.charkey in obj) {\n node[_this.options.charkey] = obj[_this.options.charkey];\n delete obj[_this.options.charkey];\n }\n if (Object.getOwnPropertyNames(obj).length > 0) {\n node[_this.options.childkey] = obj;\n }\n obj = node;\n } else if (s) {\n s[_this.options.childkey] = s[_this.options.childkey] || [];\n objClone = {};\n for (key in obj) {\n if (!hasProp.call(obj, key)) continue;\n objClone[key] = obj[key];\n }\n s[_this.options.childkey].push(objClone);\n delete obj[\"#name\"];\n if (Object.keys(obj).length === 1 && charkey in obj && !_this.EXPLICIT_CHARKEY) {\n obj = obj[charkey];\n }\n }\n }\n if (stack.length > 0) {\n return _this.assignOrPush(s, nodeName, obj);\n } else {\n if (_this.options.explicitRoot) {\n old = obj;\n obj = {};\n obj[nodeName] = old;\n }\n _this.resultObject = obj;\n _this.saxParser.ended = true;\n return _this.emit(\"end\", _this.resultObject);\n }\n };\n })(this);\n ontext = (function(_this) {\n return function(text) {\n var charChild, s;\n s = stack[stack.length - 1];\n if (s) {\n s[charkey] += text;\n if (_this.options.explicitChildren && _this.options.preserveChildrenOrder && _this.options.charsAsChildren && (_this.options.includeWhiteChars || text.replace(/\\\\n/g, '').trim() !== '')) {\n s[_this.options.childkey] = s[_this.options.childkey] || [];\n charChild = {\n '#name': '__text__'\n };\n charChild[charkey] = text;\n if (_this.options.normalize) {\n charChild[charkey] = charChild[charkey].replace(/\\s{2,}/g, \" \").trim();\n }\n s[_this.options.childkey].push(charChild);\n }\n return s;\n }\n };\n })(this);\n this.saxParser.ontext = ontext;\n return this.saxParser.oncdata = (function(_this) {\n return function(text) {\n var s;\n s = ontext(text);\n if (s) {\n return s.cdata = true;\n }\n };\n })(this);\n };\n\n Parser.prototype.parseString = function(str, cb) {\n var err;\n if ((cb != null) && typeof cb === \"function\") {\n this.on(\"end\", function(result) {\n this.reset();\n return cb(null, result);\n });\n this.on(\"error\", function(err) {\n this.reset();\n return cb(err);\n });\n }\n try {\n str = str.toString();\n if (str.trim() === '') {\n this.emit(\"end\", null);\n return true;\n }\n str = bom.stripBOM(str);\n if (this.options.async) {\n this.remaining = str;\n setImmediate(this.processAsync);\n return this.saxParser;\n }\n return this.saxParser.write(str).close();\n } catch (error1) {\n err = error1;\n if (!(this.saxParser.errThrown || this.saxParser.ended)) {\n this.emit('error', err);\n return this.saxParser.errThrown = true;\n } else if (this.saxParser.ended) {\n throw err;\n }\n }\n };\n\n Parser.prototype.parseStringPromise = function(str) {\n return new Promise((function(_this) {\n return function(resolve, reject) {\n return _this.parseString(str, function(err, value) {\n if (err) {\n return reject(err);\n } else {\n return resolve(value);\n }\n });\n };\n })(this));\n };\n\n return Parser;\n\n })(events);\n\n exports.parseString = function(str, a, b) {\n var cb, options, parser;\n if (b != null) {\n if (typeof b === 'function') {\n cb = b;\n }\n if (typeof a === 'object') {\n options = a;\n }\n } else {\n if (typeof a === 'function') {\n cb = a;\n }\n options = {};\n }\n parser = new exports.Parser(options);\n return parser.parseString(str, cb);\n };\n\n exports.parseStringPromise = function(str, a) {\n var options, parser;\n if (typeof a === 'object') {\n options = a;\n }\n parser = new exports.Parser(options);\n return parser.parseStringPromise(str);\n };\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n \"use strict\";\n var prefixMatch;\n\n prefixMatch = new RegExp(/(?!xmlns)^.*:/);\n\n exports.normalize = function(str) {\n return str.toLowerCase();\n };\n\n exports.firstCharLowerCase = function(str) {\n return str.charAt(0).toLowerCase() + str.slice(1);\n };\n\n exports.stripPrefix = function(str) {\n return str.replace(prefixMatch, '');\n };\n\n exports.parseNumbers = function(str) {\n if (!isNaN(str)) {\n str = str % 1 === 0 ? parseInt(str, 10) : parseFloat(str);\n }\n return str;\n };\n\n exports.parseBooleans = function(str) {\n if (/^(?:true|false)$/i.test(str)) {\n str = str.toLowerCase() === 'true';\n }\n return str;\n };\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n \"use strict\";\n var builder, defaults, parser, processors,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n defaults = require('./defaults');\n\n builder = require('./builder');\n\n parser = require('./parser');\n\n processors = require('./processors');\n\n exports.defaults = defaults.defaults;\n\n exports.processors = processors;\n\n exports.ValidationError = (function(superClass) {\n extend(ValidationError, superClass);\n\n function ValidationError(message) {\n this.message = message;\n }\n\n return ValidationError;\n\n })(Error);\n\n exports.Builder = builder.Builder;\n\n exports.Parser = parser.Parser;\n\n exports.parseString = parser.parseString;\n\n exports.parseStringPromise = parser.parseStringPromise;\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n module.exports = {\n Disconnected: 1,\n Preceding: 2,\n Following: 4,\n Contains: 8,\n ContainedBy: 16,\n ImplementationSpecific: 32\n };\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n module.exports = {\n Element: 1,\n Attribute: 2,\n Text: 3,\n CData: 4,\n EntityReference: 5,\n EntityDeclaration: 6,\n ProcessingInstruction: 7,\n Comment: 8,\n Document: 9,\n DocType: 10,\n DocumentFragment: 11,\n NotationDeclaration: 12,\n Declaration: 201,\n Raw: 202,\n AttributeDeclaration: 203,\n ElementDeclaration: 204,\n Dummy: 205\n };\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var assign, getValue, isArray, isEmpty, isFunction, isObject, isPlainObject,\n slice = [].slice,\n hasProp = {}.hasOwnProperty;\n\n assign = function() {\n var i, key, len, source, sources, target;\n target = arguments[0], sources = 2 <= arguments.length ? slice.call(arguments, 1) : [];\n if (isFunction(Object.assign)) {\n Object.assign.apply(null, arguments);\n } else {\n for (i = 0, len = sources.length; i < len; i++) {\n source = sources[i];\n if (source != null) {\n for (key in source) {\n if (!hasProp.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n }\n }\n return target;\n };\n\n isFunction = function(val) {\n return !!val && Object.prototype.toString.call(val) === '[object Function]';\n };\n\n isObject = function(val) {\n var ref;\n return !!val && ((ref = typeof val) === 'function' || ref === 'object');\n };\n\n isArray = function(val) {\n if (isFunction(Array.isArray)) {\n return Array.isArray(val);\n } else {\n return Object.prototype.toString.call(val) === '[object Array]';\n }\n };\n\n isEmpty = function(val) {\n var key;\n if (isArray(val)) {\n return !val.length;\n } else {\n for (key in val) {\n if (!hasProp.call(val, key)) continue;\n return false;\n }\n return true;\n }\n };\n\n isPlainObject = function(val) {\n var ctor, proto;\n return isObject(val) && (proto = Object.getPrototypeOf(val)) && (ctor = proto.constructor) && (typeof ctor === 'function') && (ctor instanceof ctor) && (Function.prototype.toString.call(ctor) === Function.prototype.toString.call(Object));\n };\n\n getValue = function(obj) {\n if (isFunction(obj.valueOf)) {\n return obj.valueOf();\n } else {\n return obj;\n }\n };\n\n module.exports.assign = assign;\n\n module.exports.isFunction = isFunction;\n\n module.exports.isObject = isObject;\n\n module.exports.isArray = isArray;\n\n module.exports.isEmpty = isEmpty;\n\n module.exports.isPlainObject = isPlainObject;\n\n module.exports.getValue = getValue;\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n module.exports = {\n None: 0,\n OpenTag: 1,\n InsideTag: 2,\n CloseTag: 3\n };\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLAttribute, XMLNode;\n\n NodeType = require('./NodeType');\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLAttribute = (function() {\n function XMLAttribute(parent, name, value) {\n this.parent = parent;\n if (this.parent) {\n this.options = this.parent.options;\n this.stringify = this.parent.stringify;\n }\n if (name == null) {\n throw new Error(\"Missing attribute name. \" + this.debugInfo(name));\n }\n this.name = this.stringify.name(name);\n this.value = this.stringify.attValue(value);\n this.type = NodeType.Attribute;\n this.isId = false;\n this.schemaTypeInfo = null;\n }\n\n Object.defineProperty(XMLAttribute.prototype, 'nodeType', {\n get: function() {\n return this.type;\n }\n });\n\n Object.defineProperty(XMLAttribute.prototype, 'ownerElement', {\n get: function() {\n return this.parent;\n }\n });\n\n Object.defineProperty(XMLAttribute.prototype, 'textContent', {\n get: function() {\n return this.value;\n },\n set: function(value) {\n return this.value = value || '';\n }\n });\n\n Object.defineProperty(XMLAttribute.prototype, 'namespaceURI', {\n get: function() {\n return '';\n }\n });\n\n Object.defineProperty(XMLAttribute.prototype, 'prefix', {\n get: function() {\n return '';\n }\n });\n\n Object.defineProperty(XMLAttribute.prototype, 'localName', {\n get: function() {\n return this.name;\n }\n });\n\n Object.defineProperty(XMLAttribute.prototype, 'specified', {\n get: function() {\n return true;\n }\n });\n\n XMLAttribute.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLAttribute.prototype.toString = function(options) {\n return this.options.writer.attribute(this, this.options.writer.filterOptions(options));\n };\n\n XMLAttribute.prototype.debugInfo = function(name) {\n name = name || this.name;\n if (name == null) {\n return \"parent: <\" + this.parent.name + \">\";\n } else {\n return \"attribute: {\" + name + \"}, parent: <\" + this.parent.name + \">\";\n }\n };\n\n XMLAttribute.prototype.isEqualNode = function(node) {\n if (node.namespaceURI !== this.namespaceURI) {\n return false;\n }\n if (node.prefix !== this.prefix) {\n return false;\n }\n if (node.localName !== this.localName) {\n return false;\n }\n if (node.value !== this.value) {\n return false;\n }\n return true;\n };\n\n return XMLAttribute;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLCData, XMLCharacterData,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n NodeType = require('./NodeType');\n\n XMLCharacterData = require('./XMLCharacterData');\n\n module.exports = XMLCData = (function(superClass) {\n extend(XMLCData, superClass);\n\n function XMLCData(parent, text) {\n XMLCData.__super__.constructor.call(this, parent);\n if (text == null) {\n throw new Error(\"Missing CDATA text. \" + this.debugInfo());\n }\n this.name = \"#cdata-section\";\n this.type = NodeType.CData;\n this.value = this.stringify.cdata(text);\n }\n\n XMLCData.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLCData.prototype.toString = function(options) {\n return this.options.writer.cdata(this, this.options.writer.filterOptions(options));\n };\n\n return XMLCData;\n\n })(XMLCharacterData);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLCharacterData, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLCharacterData = (function(superClass) {\n extend(XMLCharacterData, superClass);\n\n function XMLCharacterData(parent) {\n XMLCharacterData.__super__.constructor.call(this, parent);\n this.value = '';\n }\n\n Object.defineProperty(XMLCharacterData.prototype, 'data', {\n get: function() {\n return this.value;\n },\n set: function(value) {\n return this.value = value || '';\n }\n });\n\n Object.defineProperty(XMLCharacterData.prototype, 'length', {\n get: function() {\n return this.value.length;\n }\n });\n\n Object.defineProperty(XMLCharacterData.prototype, 'textContent', {\n get: function() {\n return this.value;\n },\n set: function(value) {\n return this.value = value || '';\n }\n });\n\n XMLCharacterData.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLCharacterData.prototype.substringData = function(offset, count) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLCharacterData.prototype.appendData = function(arg) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLCharacterData.prototype.insertData = function(offset, arg) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLCharacterData.prototype.deleteData = function(offset, count) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLCharacterData.prototype.replaceData = function(offset, count, arg) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLCharacterData.prototype.isEqualNode = function(node) {\n if (!XMLCharacterData.__super__.isEqualNode.apply(this, arguments).isEqualNode(node)) {\n return false;\n }\n if (node.data !== this.data) {\n return false;\n }\n return true;\n };\n\n return XMLCharacterData;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLCharacterData, XMLComment,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n NodeType = require('./NodeType');\n\n XMLCharacterData = require('./XMLCharacterData');\n\n module.exports = XMLComment = (function(superClass) {\n extend(XMLComment, superClass);\n\n function XMLComment(parent, text) {\n XMLComment.__super__.constructor.call(this, parent);\n if (text == null) {\n throw new Error(\"Missing comment text. \" + this.debugInfo());\n }\n this.name = \"#comment\";\n this.type = NodeType.Comment;\n this.value = this.stringify.comment(text);\n }\n\n XMLComment.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLComment.prototype.toString = function(options) {\n return this.options.writer.comment(this, this.options.writer.filterOptions(options));\n };\n\n return XMLComment;\n\n })(XMLCharacterData);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDOMConfiguration, XMLDOMErrorHandler, XMLDOMStringList;\n\n XMLDOMErrorHandler = require('./XMLDOMErrorHandler');\n\n XMLDOMStringList = require('./XMLDOMStringList');\n\n module.exports = XMLDOMConfiguration = (function() {\n function XMLDOMConfiguration() {\n var clonedSelf;\n this.defaultParams = {\n \"canonical-form\": false,\n \"cdata-sections\": false,\n \"comments\": false,\n \"datatype-normalization\": false,\n \"element-content-whitespace\": true,\n \"entities\": true,\n \"error-handler\": new XMLDOMErrorHandler(),\n \"infoset\": true,\n \"validate-if-schema\": false,\n \"namespaces\": true,\n \"namespace-declarations\": true,\n \"normalize-characters\": false,\n \"schema-location\": '',\n \"schema-type\": '',\n \"split-cdata-sections\": true,\n \"validate\": false,\n \"well-formed\": true\n };\n this.params = clonedSelf = Object.create(this.defaultParams);\n }\n\n Object.defineProperty(XMLDOMConfiguration.prototype, 'parameterNames', {\n get: function() {\n return new XMLDOMStringList(Object.keys(this.defaultParams));\n }\n });\n\n XMLDOMConfiguration.prototype.getParameter = function(name) {\n if (this.params.hasOwnProperty(name)) {\n return this.params[name];\n } else {\n return null;\n }\n };\n\n XMLDOMConfiguration.prototype.canSetParameter = function(name, value) {\n return true;\n };\n\n XMLDOMConfiguration.prototype.setParameter = function(name, value) {\n if (value != null) {\n return this.params[name] = value;\n } else {\n return delete this.params[name];\n }\n };\n\n return XMLDOMConfiguration;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDOMErrorHandler;\n\n module.exports = XMLDOMErrorHandler = (function() {\n function XMLDOMErrorHandler() {}\n\n XMLDOMErrorHandler.prototype.handleError = function(error) {\n throw new Error(error);\n };\n\n return XMLDOMErrorHandler;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDOMImplementation;\n\n module.exports = XMLDOMImplementation = (function() {\n function XMLDOMImplementation() {}\n\n XMLDOMImplementation.prototype.hasFeature = function(feature, version) {\n return true;\n };\n\n XMLDOMImplementation.prototype.createDocumentType = function(qualifiedName, publicId, systemId) {\n throw new Error(\"This DOM method is not implemented.\");\n };\n\n XMLDOMImplementation.prototype.createDocument = function(namespaceURI, qualifiedName, doctype) {\n throw new Error(\"This DOM method is not implemented.\");\n };\n\n XMLDOMImplementation.prototype.createHTMLDocument = function(title) {\n throw new Error(\"This DOM method is not implemented.\");\n };\n\n XMLDOMImplementation.prototype.getFeature = function(feature, version) {\n throw new Error(\"This DOM method is not implemented.\");\n };\n\n return XMLDOMImplementation;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLDOMStringList;\n\n module.exports = XMLDOMStringList = (function() {\n function XMLDOMStringList(arr) {\n this.arr = arr || [];\n }\n\n Object.defineProperty(XMLDOMStringList.prototype, 'length', {\n get: function() {\n return this.arr.length;\n }\n });\n\n XMLDOMStringList.prototype.item = function(index) {\n return this.arr[index] || null;\n };\n\n XMLDOMStringList.prototype.contains = function(str) {\n return this.arr.indexOf(str) !== -1;\n };\n\n return XMLDOMStringList;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLDTDAttList, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n NodeType = require('./NodeType');\n\n module.exports = XMLDTDAttList = (function(superClass) {\n extend(XMLDTDAttList, superClass);\n\n function XMLDTDAttList(parent, elementName, attributeName, attributeType, defaultValueType, defaultValue) {\n XMLDTDAttList.__super__.constructor.call(this, parent);\n if (elementName == null) {\n throw new Error(\"Missing DTD element name. \" + this.debugInfo());\n }\n if (attributeName == null) {\n throw new Error(\"Missing DTD attribute name. \" + this.debugInfo(elementName));\n }\n if (!attributeType) {\n throw new Error(\"Missing DTD attribute type. \" + this.debugInfo(elementName));\n }\n if (!defaultValueType) {\n throw new Error(\"Missing DTD attribute default. \" + this.debugInfo(elementName));\n }\n if (defaultValueType.indexOf('#') !== 0) {\n defaultValueType = '#' + defaultValueType;\n }\n if (!defaultValueType.match(/^(#REQUIRED|#IMPLIED|#FIXED|#DEFAULT)$/)) {\n throw new Error(\"Invalid default value type; expected: #REQUIRED, #IMPLIED, #FIXED or #DEFAULT. \" + this.debugInfo(elementName));\n }\n if (defaultValue && !defaultValueType.match(/^(#FIXED|#DEFAULT)$/)) {\n throw new Error(\"Default value only applies to #FIXED or #DEFAULT. \" + this.debugInfo(elementName));\n }\n this.elementName = this.stringify.name(elementName);\n this.type = NodeType.AttributeDeclaration;\n this.attributeName = this.stringify.name(attributeName);\n this.attributeType = this.stringify.dtdAttType(attributeType);\n if (defaultValue) {\n this.defaultValue = this.stringify.dtdAttDefault(defaultValue);\n }\n this.defaultValueType = defaultValueType;\n }\n\n XMLDTDAttList.prototype.toString = function(options) {\n return this.options.writer.dtdAttList(this, this.options.writer.filterOptions(options));\n };\n\n return XMLDTDAttList;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLDTDElement, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n NodeType = require('./NodeType');\n\n module.exports = XMLDTDElement = (function(superClass) {\n extend(XMLDTDElement, superClass);\n\n function XMLDTDElement(parent, name, value) {\n XMLDTDElement.__super__.constructor.call(this, parent);\n if (name == null) {\n throw new Error(\"Missing DTD element name. \" + this.debugInfo());\n }\n if (!value) {\n value = '(#PCDATA)';\n }\n if (Array.isArray(value)) {\n value = '(' + value.join(',') + ')';\n }\n this.name = this.stringify.name(name);\n this.type = NodeType.ElementDeclaration;\n this.value = this.stringify.dtdElementValue(value);\n }\n\n XMLDTDElement.prototype.toString = function(options) {\n return this.options.writer.dtdElement(this, this.options.writer.filterOptions(options));\n };\n\n return XMLDTDElement;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLDTDEntity, XMLNode, isObject,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n isObject = require('./Utility').isObject;\n\n XMLNode = require('./XMLNode');\n\n NodeType = require('./NodeType');\n\n module.exports = XMLDTDEntity = (function(superClass) {\n extend(XMLDTDEntity, superClass);\n\n function XMLDTDEntity(parent, pe, name, value) {\n XMLDTDEntity.__super__.constructor.call(this, parent);\n if (name == null) {\n throw new Error(\"Missing DTD entity name. \" + this.debugInfo(name));\n }\n if (value == null) {\n throw new Error(\"Missing DTD entity value. \" + this.debugInfo(name));\n }\n this.pe = !!pe;\n this.name = this.stringify.name(name);\n this.type = NodeType.EntityDeclaration;\n if (!isObject(value)) {\n this.value = this.stringify.dtdEntityValue(value);\n this.internal = true;\n } else {\n if (!value.pubID && !value.sysID) {\n throw new Error(\"Public and/or system identifiers are required for an external entity. \" + this.debugInfo(name));\n }\n if (value.pubID && !value.sysID) {\n throw new Error(\"System identifier is required for a public external entity. \" + this.debugInfo(name));\n }\n this.internal = false;\n if (value.pubID != null) {\n this.pubID = this.stringify.dtdPubID(value.pubID);\n }\n if (value.sysID != null) {\n this.sysID = this.stringify.dtdSysID(value.sysID);\n }\n if (value.nData != null) {\n this.nData = this.stringify.dtdNData(value.nData);\n }\n if (this.pe && this.nData) {\n throw new Error(\"Notation declaration is not allowed in a parameter entity. \" + this.debugInfo(name));\n }\n }\n }\n\n Object.defineProperty(XMLDTDEntity.prototype, 'publicId', {\n get: function() {\n return this.pubID;\n }\n });\n\n Object.defineProperty(XMLDTDEntity.prototype, 'systemId', {\n get: function() {\n return this.sysID;\n }\n });\n\n Object.defineProperty(XMLDTDEntity.prototype, 'notationName', {\n get: function() {\n return this.nData || null;\n }\n });\n\n Object.defineProperty(XMLDTDEntity.prototype, 'inputEncoding', {\n get: function() {\n return null;\n }\n });\n\n Object.defineProperty(XMLDTDEntity.prototype, 'xmlEncoding', {\n get: function() {\n return null;\n }\n });\n\n Object.defineProperty(XMLDTDEntity.prototype, 'xmlVersion', {\n get: function() {\n return null;\n }\n });\n\n XMLDTDEntity.prototype.toString = function(options) {\n return this.options.writer.dtdEntity(this, this.options.writer.filterOptions(options));\n };\n\n return XMLDTDEntity;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLDTDNotation, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n NodeType = require('./NodeType');\n\n module.exports = XMLDTDNotation = (function(superClass) {\n extend(XMLDTDNotation, superClass);\n\n function XMLDTDNotation(parent, name, value) {\n XMLDTDNotation.__super__.constructor.call(this, parent);\n if (name == null) {\n throw new Error(\"Missing DTD notation name. \" + this.debugInfo(name));\n }\n if (!value.pubID && !value.sysID) {\n throw new Error(\"Public or system identifiers are required for an external entity. \" + this.debugInfo(name));\n }\n this.name = this.stringify.name(name);\n this.type = NodeType.NotationDeclaration;\n if (value.pubID != null) {\n this.pubID = this.stringify.dtdPubID(value.pubID);\n }\n if (value.sysID != null) {\n this.sysID = this.stringify.dtdSysID(value.sysID);\n }\n }\n\n Object.defineProperty(XMLDTDNotation.prototype, 'publicId', {\n get: function() {\n return this.pubID;\n }\n });\n\n Object.defineProperty(XMLDTDNotation.prototype, 'systemId', {\n get: function() {\n return this.sysID;\n }\n });\n\n XMLDTDNotation.prototype.toString = function(options) {\n return this.options.writer.dtdNotation(this, this.options.writer.filterOptions(options));\n };\n\n return XMLDTDNotation;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLDeclaration, XMLNode, isObject,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n isObject = require('./Utility').isObject;\n\n XMLNode = require('./XMLNode');\n\n NodeType = require('./NodeType');\n\n module.exports = XMLDeclaration = (function(superClass) {\n extend(XMLDeclaration, superClass);\n\n function XMLDeclaration(parent, version, encoding, standalone) {\n var ref;\n XMLDeclaration.__super__.constructor.call(this, parent);\n if (isObject(version)) {\n ref = version, version = ref.version, encoding = ref.encoding, standalone = ref.standalone;\n }\n if (!version) {\n version = '1.0';\n }\n this.type = NodeType.Declaration;\n this.version = this.stringify.xmlVersion(version);\n if (encoding != null) {\n this.encoding = this.stringify.xmlEncoding(encoding);\n }\n if (standalone != null) {\n this.standalone = this.stringify.xmlStandalone(standalone);\n }\n }\n\n XMLDeclaration.prototype.toString = function(options) {\n return this.options.writer.declaration(this, this.options.writer.filterOptions(options));\n };\n\n return XMLDeclaration;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDocType, XMLNamedNodeMap, XMLNode, isObject,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n isObject = require('./Utility').isObject;\n\n XMLNode = require('./XMLNode');\n\n NodeType = require('./NodeType');\n\n XMLDTDAttList = require('./XMLDTDAttList');\n\n XMLDTDEntity = require('./XMLDTDEntity');\n\n XMLDTDElement = require('./XMLDTDElement');\n\n XMLDTDNotation = require('./XMLDTDNotation');\n\n XMLNamedNodeMap = require('./XMLNamedNodeMap');\n\n module.exports = XMLDocType = (function(superClass) {\n extend(XMLDocType, superClass);\n\n function XMLDocType(parent, pubID, sysID) {\n var child, i, len, ref, ref1, ref2;\n XMLDocType.__super__.constructor.call(this, parent);\n this.type = NodeType.DocType;\n if (parent.children) {\n ref = parent.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n if (child.type === NodeType.Element) {\n this.name = child.name;\n break;\n }\n }\n }\n this.documentObject = parent;\n if (isObject(pubID)) {\n ref1 = pubID, pubID = ref1.pubID, sysID = ref1.sysID;\n }\n if (sysID == null) {\n ref2 = [pubID, sysID], sysID = ref2[0], pubID = ref2[1];\n }\n if (pubID != null) {\n this.pubID = this.stringify.dtdPubID(pubID);\n }\n if (sysID != null) {\n this.sysID = this.stringify.dtdSysID(sysID);\n }\n }\n\n Object.defineProperty(XMLDocType.prototype, 'entities', {\n get: function() {\n var child, i, len, nodes, ref;\n nodes = {};\n ref = this.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n if ((child.type === NodeType.EntityDeclaration) && !child.pe) {\n nodes[child.name] = child;\n }\n }\n return new XMLNamedNodeMap(nodes);\n }\n });\n\n Object.defineProperty(XMLDocType.prototype, 'notations', {\n get: function() {\n var child, i, len, nodes, ref;\n nodes = {};\n ref = this.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n if (child.type === NodeType.NotationDeclaration) {\n nodes[child.name] = child;\n }\n }\n return new XMLNamedNodeMap(nodes);\n }\n });\n\n Object.defineProperty(XMLDocType.prototype, 'publicId', {\n get: function() {\n return this.pubID;\n }\n });\n\n Object.defineProperty(XMLDocType.prototype, 'systemId', {\n get: function() {\n return this.sysID;\n }\n });\n\n Object.defineProperty(XMLDocType.prototype, 'internalSubset', {\n get: function() {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n }\n });\n\n XMLDocType.prototype.element = function(name, value) {\n var child;\n child = new XMLDTDElement(this, name, value);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.attList = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) {\n var child;\n child = new XMLDTDAttList(this, elementName, attributeName, attributeType, defaultValueType, defaultValue);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.entity = function(name, value) {\n var child;\n child = new XMLDTDEntity(this, false, name, value);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.pEntity = function(name, value) {\n var child;\n child = new XMLDTDEntity(this, true, name, value);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.notation = function(name, value) {\n var child;\n child = new XMLDTDNotation(this, name, value);\n this.children.push(child);\n return this;\n };\n\n XMLDocType.prototype.toString = function(options) {\n return this.options.writer.docType(this, this.options.writer.filterOptions(options));\n };\n\n XMLDocType.prototype.ele = function(name, value) {\n return this.element(name, value);\n };\n\n XMLDocType.prototype.att = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) {\n return this.attList(elementName, attributeName, attributeType, defaultValueType, defaultValue);\n };\n\n XMLDocType.prototype.ent = function(name, value) {\n return this.entity(name, value);\n };\n\n XMLDocType.prototype.pent = function(name, value) {\n return this.pEntity(name, value);\n };\n\n XMLDocType.prototype.not = function(name, value) {\n return this.notation(name, value);\n };\n\n XMLDocType.prototype.up = function() {\n return this.root() || this.documentObject;\n };\n\n XMLDocType.prototype.isEqualNode = function(node) {\n if (!XMLDocType.__super__.isEqualNode.apply(this, arguments).isEqualNode(node)) {\n return false;\n }\n if (node.name !== this.name) {\n return false;\n }\n if (node.publicId !== this.publicId) {\n return false;\n }\n if (node.systemId !== this.systemId) {\n return false;\n }\n return true;\n };\n\n return XMLDocType;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLDOMConfiguration, XMLDOMImplementation, XMLDocument, XMLNode, XMLStringWriter, XMLStringifier, isPlainObject,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n isPlainObject = require('./Utility').isPlainObject;\n\n XMLDOMImplementation = require('./XMLDOMImplementation');\n\n XMLDOMConfiguration = require('./XMLDOMConfiguration');\n\n XMLNode = require('./XMLNode');\n\n NodeType = require('./NodeType');\n\n XMLStringifier = require('./XMLStringifier');\n\n XMLStringWriter = require('./XMLStringWriter');\n\n module.exports = XMLDocument = (function(superClass) {\n extend(XMLDocument, superClass);\n\n function XMLDocument(options) {\n XMLDocument.__super__.constructor.call(this, null);\n this.name = \"#document\";\n this.type = NodeType.Document;\n this.documentURI = null;\n this.domConfig = new XMLDOMConfiguration();\n options || (options = {});\n if (!options.writer) {\n options.writer = new XMLStringWriter();\n }\n this.options = options;\n this.stringify = new XMLStringifier(options);\n }\n\n Object.defineProperty(XMLDocument.prototype, 'implementation', {\n value: new XMLDOMImplementation()\n });\n\n Object.defineProperty(XMLDocument.prototype, 'doctype', {\n get: function() {\n var child, i, len, ref;\n ref = this.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n if (child.type === NodeType.DocType) {\n return child;\n }\n }\n return null;\n }\n });\n\n Object.defineProperty(XMLDocument.prototype, 'documentElement', {\n get: function() {\n return this.rootObject || null;\n }\n });\n\n Object.defineProperty(XMLDocument.prototype, 'inputEncoding', {\n get: function() {\n return null;\n }\n });\n\n Object.defineProperty(XMLDocument.prototype, 'strictErrorChecking', {\n get: function() {\n return false;\n }\n });\n\n Object.defineProperty(XMLDocument.prototype, 'xmlEncoding', {\n get: function() {\n if (this.children.length !== 0 && this.children[0].type === NodeType.Declaration) {\n return this.children[0].encoding;\n } else {\n return null;\n }\n }\n });\n\n Object.defineProperty(XMLDocument.prototype, 'xmlStandalone', {\n get: function() {\n if (this.children.length !== 0 && this.children[0].type === NodeType.Declaration) {\n return this.children[0].standalone === 'yes';\n } else {\n return false;\n }\n }\n });\n\n Object.defineProperty(XMLDocument.prototype, 'xmlVersion', {\n get: function() {\n if (this.children.length !== 0 && this.children[0].type === NodeType.Declaration) {\n return this.children[0].version;\n } else {\n return \"1.0\";\n }\n }\n });\n\n Object.defineProperty(XMLDocument.prototype, 'URL', {\n get: function() {\n return this.documentURI;\n }\n });\n\n Object.defineProperty(XMLDocument.prototype, 'origin', {\n get: function() {\n return null;\n }\n });\n\n Object.defineProperty(XMLDocument.prototype, 'compatMode', {\n get: function() {\n return null;\n }\n });\n\n Object.defineProperty(XMLDocument.prototype, 'characterSet', {\n get: function() {\n return null;\n }\n });\n\n Object.defineProperty(XMLDocument.prototype, 'contentType', {\n get: function() {\n return null;\n }\n });\n\n XMLDocument.prototype.end = function(writer) {\n var writerOptions;\n writerOptions = {};\n if (!writer) {\n writer = this.options.writer;\n } else if (isPlainObject(writer)) {\n writerOptions = writer;\n writer = this.options.writer;\n }\n return writer.document(this, writer.filterOptions(writerOptions));\n };\n\n XMLDocument.prototype.toString = function(options) {\n return this.options.writer.document(this, this.options.writer.filterOptions(options));\n };\n\n XMLDocument.prototype.createElement = function(tagName) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createDocumentFragment = function() {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createTextNode = function(data) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createComment = function(data) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createCDATASection = function(data) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createProcessingInstruction = function(target, data) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createAttribute = function(name) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createEntityReference = function(name) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.getElementsByTagName = function(tagname) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.importNode = function(importedNode, deep) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createElementNS = function(namespaceURI, qualifiedName) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createAttributeNS = function(namespaceURI, qualifiedName) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.getElementsByTagNameNS = function(namespaceURI, localName) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.getElementById = function(elementId) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.adoptNode = function(source) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.normalizeDocument = function() {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.renameNode = function(node, namespaceURI, qualifiedName) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.getElementsByClassName = function(classNames) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createEvent = function(eventInterface) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createRange = function() {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createNodeIterator = function(root, whatToShow, filter) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLDocument.prototype.createTreeWalker = function(root, whatToShow, filter) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n return XMLDocument;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, WriterState, XMLAttribute, XMLCData, XMLComment, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDeclaration, XMLDocType, XMLDocument, XMLDocumentCB, XMLElement, XMLProcessingInstruction, XMLRaw, XMLStringWriter, XMLStringifier, XMLText, getValue, isFunction, isObject, isPlainObject, ref,\n hasProp = {}.hasOwnProperty;\n\n ref = require('./Utility'), isObject = ref.isObject, isFunction = ref.isFunction, isPlainObject = ref.isPlainObject, getValue = ref.getValue;\n\n NodeType = require('./NodeType');\n\n XMLDocument = require('./XMLDocument');\n\n XMLElement = require('./XMLElement');\n\n XMLCData = require('./XMLCData');\n\n XMLComment = require('./XMLComment');\n\n XMLRaw = require('./XMLRaw');\n\n XMLText = require('./XMLText');\n\n XMLProcessingInstruction = require('./XMLProcessingInstruction');\n\n XMLDeclaration = require('./XMLDeclaration');\n\n XMLDocType = require('./XMLDocType');\n\n XMLDTDAttList = require('./XMLDTDAttList');\n\n XMLDTDEntity = require('./XMLDTDEntity');\n\n XMLDTDElement = require('./XMLDTDElement');\n\n XMLDTDNotation = require('./XMLDTDNotation');\n\n XMLAttribute = require('./XMLAttribute');\n\n XMLStringifier = require('./XMLStringifier');\n\n XMLStringWriter = require('./XMLStringWriter');\n\n WriterState = require('./WriterState');\n\n module.exports = XMLDocumentCB = (function() {\n function XMLDocumentCB(options, onData, onEnd) {\n var writerOptions;\n this.name = \"?xml\";\n this.type = NodeType.Document;\n options || (options = {});\n writerOptions = {};\n if (!options.writer) {\n options.writer = new XMLStringWriter();\n } else if (isPlainObject(options.writer)) {\n writerOptions = options.writer;\n options.writer = new XMLStringWriter();\n }\n this.options = options;\n this.writer = options.writer;\n this.writerOptions = this.writer.filterOptions(writerOptions);\n this.stringify = new XMLStringifier(options);\n this.onDataCallback = onData || function() {};\n this.onEndCallback = onEnd || function() {};\n this.currentNode = null;\n this.currentLevel = -1;\n this.openTags = {};\n this.documentStarted = false;\n this.documentCompleted = false;\n this.root = null;\n }\n\n XMLDocumentCB.prototype.createChildNode = function(node) {\n var att, attName, attributes, child, i, len, ref1, ref2;\n switch (node.type) {\n case NodeType.CData:\n this.cdata(node.value);\n break;\n case NodeType.Comment:\n this.comment(node.value);\n break;\n case NodeType.Element:\n attributes = {};\n ref1 = node.attribs;\n for (attName in ref1) {\n if (!hasProp.call(ref1, attName)) continue;\n att = ref1[attName];\n attributes[attName] = att.value;\n }\n this.node(node.name, attributes);\n break;\n case NodeType.Dummy:\n this.dummy();\n break;\n case NodeType.Raw:\n this.raw(node.value);\n break;\n case NodeType.Text:\n this.text(node.value);\n break;\n case NodeType.ProcessingInstruction:\n this.instruction(node.target, node.value);\n break;\n default:\n throw new Error(\"This XML node type is not supported in a JS object: \" + node.constructor.name);\n }\n ref2 = node.children;\n for (i = 0, len = ref2.length; i < len; i++) {\n child = ref2[i];\n this.createChildNode(child);\n if (child.type === NodeType.Element) {\n this.up();\n }\n }\n return this;\n };\n\n XMLDocumentCB.prototype.dummy = function() {\n return this;\n };\n\n XMLDocumentCB.prototype.node = function(name, attributes, text) {\n var ref1;\n if (name == null) {\n throw new Error(\"Missing node name.\");\n }\n if (this.root && this.currentLevel === -1) {\n throw new Error(\"Document can only have one root node. \" + this.debugInfo(name));\n }\n this.openCurrent();\n name = getValue(name);\n if (attributes == null) {\n attributes = {};\n }\n attributes = getValue(attributes);\n if (!isObject(attributes)) {\n ref1 = [attributes, text], text = ref1[0], attributes = ref1[1];\n }\n this.currentNode = new XMLElement(this, name, attributes);\n this.currentNode.children = false;\n this.currentLevel++;\n this.openTags[this.currentLevel] = this.currentNode;\n if (text != null) {\n this.text(text);\n }\n return this;\n };\n\n XMLDocumentCB.prototype.element = function(name, attributes, text) {\n var child, i, len, oldValidationFlag, ref1, root;\n if (this.currentNode && this.currentNode.type === NodeType.DocType) {\n this.dtdElement.apply(this, arguments);\n } else {\n if (Array.isArray(name) || isObject(name) || isFunction(name)) {\n oldValidationFlag = this.options.noValidation;\n this.options.noValidation = true;\n root = new XMLDocument(this.options).element('TEMP_ROOT');\n root.element(name);\n this.options.noValidation = oldValidationFlag;\n ref1 = root.children;\n for (i = 0, len = ref1.length; i < len; i++) {\n child = ref1[i];\n this.createChildNode(child);\n if (child.type === NodeType.Element) {\n this.up();\n }\n }\n } else {\n this.node(name, attributes, text);\n }\n }\n return this;\n };\n\n XMLDocumentCB.prototype.attribute = function(name, value) {\n var attName, attValue;\n if (!this.currentNode || this.currentNode.children) {\n throw new Error(\"att() can only be used immediately after an ele() call in callback mode. \" + this.debugInfo(name));\n }\n if (name != null) {\n name = getValue(name);\n }\n if (isObject(name)) {\n for (attName in name) {\n if (!hasProp.call(name, attName)) continue;\n attValue = name[attName];\n this.attribute(attName, attValue);\n }\n } else {\n if (isFunction(value)) {\n value = value.apply();\n }\n if (this.options.keepNullAttributes && (value == null)) {\n this.currentNode.attribs[name] = new XMLAttribute(this, name, \"\");\n } else if (value != null) {\n this.currentNode.attribs[name] = new XMLAttribute(this, name, value);\n }\n }\n return this;\n };\n\n XMLDocumentCB.prototype.text = function(value) {\n var node;\n this.openCurrent();\n node = new XMLText(this, value);\n this.onData(this.writer.text(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n return this;\n };\n\n XMLDocumentCB.prototype.cdata = function(value) {\n var node;\n this.openCurrent();\n node = new XMLCData(this, value);\n this.onData(this.writer.cdata(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n return this;\n };\n\n XMLDocumentCB.prototype.comment = function(value) {\n var node;\n this.openCurrent();\n node = new XMLComment(this, value);\n this.onData(this.writer.comment(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n return this;\n };\n\n XMLDocumentCB.prototype.raw = function(value) {\n var node;\n this.openCurrent();\n node = new XMLRaw(this, value);\n this.onData(this.writer.raw(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n return this;\n };\n\n XMLDocumentCB.prototype.instruction = function(target, value) {\n var i, insTarget, insValue, len, node;\n this.openCurrent();\n if (target != null) {\n target = getValue(target);\n }\n if (value != null) {\n value = getValue(value);\n }\n if (Array.isArray(target)) {\n for (i = 0, len = target.length; i < len; i++) {\n insTarget = target[i];\n this.instruction(insTarget);\n }\n } else if (isObject(target)) {\n for (insTarget in target) {\n if (!hasProp.call(target, insTarget)) continue;\n insValue = target[insTarget];\n this.instruction(insTarget, insValue);\n }\n } else {\n if (isFunction(value)) {\n value = value.apply();\n }\n node = new XMLProcessingInstruction(this, target, value);\n this.onData(this.writer.processingInstruction(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n }\n return this;\n };\n\n XMLDocumentCB.prototype.declaration = function(version, encoding, standalone) {\n var node;\n this.openCurrent();\n if (this.documentStarted) {\n throw new Error(\"declaration() must be the first node.\");\n }\n node = new XMLDeclaration(this, version, encoding, standalone);\n this.onData(this.writer.declaration(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n return this;\n };\n\n XMLDocumentCB.prototype.doctype = function(root, pubID, sysID) {\n this.openCurrent();\n if (root == null) {\n throw new Error(\"Missing root node name.\");\n }\n if (this.root) {\n throw new Error(\"dtd() must come before the root node.\");\n }\n this.currentNode = new XMLDocType(this, pubID, sysID);\n this.currentNode.rootNodeName = root;\n this.currentNode.children = false;\n this.currentLevel++;\n this.openTags[this.currentLevel] = this.currentNode;\n return this;\n };\n\n XMLDocumentCB.prototype.dtdElement = function(name, value) {\n var node;\n this.openCurrent();\n node = new XMLDTDElement(this, name, value);\n this.onData(this.writer.dtdElement(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n return this;\n };\n\n XMLDocumentCB.prototype.attList = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) {\n var node;\n this.openCurrent();\n node = new XMLDTDAttList(this, elementName, attributeName, attributeType, defaultValueType, defaultValue);\n this.onData(this.writer.dtdAttList(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n return this;\n };\n\n XMLDocumentCB.prototype.entity = function(name, value) {\n var node;\n this.openCurrent();\n node = new XMLDTDEntity(this, false, name, value);\n this.onData(this.writer.dtdEntity(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n return this;\n };\n\n XMLDocumentCB.prototype.pEntity = function(name, value) {\n var node;\n this.openCurrent();\n node = new XMLDTDEntity(this, true, name, value);\n this.onData(this.writer.dtdEntity(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n return this;\n };\n\n XMLDocumentCB.prototype.notation = function(name, value) {\n var node;\n this.openCurrent();\n node = new XMLDTDNotation(this, name, value);\n this.onData(this.writer.dtdNotation(node, this.writerOptions, this.currentLevel + 1), this.currentLevel + 1);\n return this;\n };\n\n XMLDocumentCB.prototype.up = function() {\n if (this.currentLevel < 0) {\n throw new Error(\"The document node has no parent.\");\n }\n if (this.currentNode) {\n if (this.currentNode.children) {\n this.closeNode(this.currentNode);\n } else {\n this.openNode(this.currentNode);\n }\n this.currentNode = null;\n } else {\n this.closeNode(this.openTags[this.currentLevel]);\n }\n delete this.openTags[this.currentLevel];\n this.currentLevel--;\n return this;\n };\n\n XMLDocumentCB.prototype.end = function() {\n while (this.currentLevel >= 0) {\n this.up();\n }\n return this.onEnd();\n };\n\n XMLDocumentCB.prototype.openCurrent = function() {\n if (this.currentNode) {\n this.currentNode.children = true;\n return this.openNode(this.currentNode);\n }\n };\n\n XMLDocumentCB.prototype.openNode = function(node) {\n var att, chunk, name, ref1;\n if (!node.isOpen) {\n if (!this.root && this.currentLevel === 0 && node.type === NodeType.Element) {\n this.root = node;\n }\n chunk = '';\n if (node.type === NodeType.Element) {\n this.writerOptions.state = WriterState.OpenTag;\n chunk = this.writer.indent(node, this.writerOptions, this.currentLevel) + '<' + node.name;\n ref1 = node.attribs;\n for (name in ref1) {\n if (!hasProp.call(ref1, name)) continue;\n att = ref1[name];\n chunk += this.writer.attribute(att, this.writerOptions, this.currentLevel);\n }\n chunk += (node.children ? '>' : '/>') + this.writer.endline(node, this.writerOptions, this.currentLevel);\n this.writerOptions.state = WriterState.InsideTag;\n } else {\n this.writerOptions.state = WriterState.OpenTag;\n chunk = this.writer.indent(node, this.writerOptions, this.currentLevel) + '<!DOCTYPE ' + node.rootNodeName;\n if (node.pubID && node.sysID) {\n chunk += ' PUBLIC \"' + node.pubID + '\" \"' + node.sysID + '\"';\n } else if (node.sysID) {\n chunk += ' SYSTEM \"' + node.sysID + '\"';\n }\n if (node.children) {\n chunk += ' [';\n this.writerOptions.state = WriterState.InsideTag;\n } else {\n this.writerOptions.state = WriterState.CloseTag;\n chunk += '>';\n }\n chunk += this.writer.endline(node, this.writerOptions, this.currentLevel);\n }\n this.onData(chunk, this.currentLevel);\n return node.isOpen = true;\n }\n };\n\n XMLDocumentCB.prototype.closeNode = function(node) {\n var chunk;\n if (!node.isClosed) {\n chunk = '';\n this.writerOptions.state = WriterState.CloseTag;\n if (node.type === NodeType.Element) {\n chunk = this.writer.indent(node, this.writerOptions, this.currentLevel) + '</' + node.name + '>' + this.writer.endline(node, this.writerOptions, this.currentLevel);\n } else {\n chunk = this.writer.indent(node, this.writerOptions, this.currentLevel) + ']>' + this.writer.endline(node, this.writerOptions, this.currentLevel);\n }\n this.writerOptions.state = WriterState.None;\n this.onData(chunk, this.currentLevel);\n return node.isClosed = true;\n }\n };\n\n XMLDocumentCB.prototype.onData = function(chunk, level) {\n this.documentStarted = true;\n return this.onDataCallback(chunk, level + 1);\n };\n\n XMLDocumentCB.prototype.onEnd = function() {\n this.documentCompleted = true;\n return this.onEndCallback();\n };\n\n XMLDocumentCB.prototype.debugInfo = function(name) {\n if (name == null) {\n return \"\";\n } else {\n return \"node: <\" + name + \">\";\n }\n };\n\n XMLDocumentCB.prototype.ele = function() {\n return this.element.apply(this, arguments);\n };\n\n XMLDocumentCB.prototype.nod = function(name, attributes, text) {\n return this.node(name, attributes, text);\n };\n\n XMLDocumentCB.prototype.txt = function(value) {\n return this.text(value);\n };\n\n XMLDocumentCB.prototype.dat = function(value) {\n return this.cdata(value);\n };\n\n XMLDocumentCB.prototype.com = function(value) {\n return this.comment(value);\n };\n\n XMLDocumentCB.prototype.ins = function(target, value) {\n return this.instruction(target, value);\n };\n\n XMLDocumentCB.prototype.dec = function(version, encoding, standalone) {\n return this.declaration(version, encoding, standalone);\n };\n\n XMLDocumentCB.prototype.dtd = function(root, pubID, sysID) {\n return this.doctype(root, pubID, sysID);\n };\n\n XMLDocumentCB.prototype.e = function(name, attributes, text) {\n return this.element(name, attributes, text);\n };\n\n XMLDocumentCB.prototype.n = function(name, attributes, text) {\n return this.node(name, attributes, text);\n };\n\n XMLDocumentCB.prototype.t = function(value) {\n return this.text(value);\n };\n\n XMLDocumentCB.prototype.d = function(value) {\n return this.cdata(value);\n };\n\n XMLDocumentCB.prototype.c = function(value) {\n return this.comment(value);\n };\n\n XMLDocumentCB.prototype.r = function(value) {\n return this.raw(value);\n };\n\n XMLDocumentCB.prototype.i = function(target, value) {\n return this.instruction(target, value);\n };\n\n XMLDocumentCB.prototype.att = function() {\n if (this.currentNode && this.currentNode.type === NodeType.DocType) {\n return this.attList.apply(this, arguments);\n } else {\n return this.attribute.apply(this, arguments);\n }\n };\n\n XMLDocumentCB.prototype.a = function() {\n if (this.currentNode && this.currentNode.type === NodeType.DocType) {\n return this.attList.apply(this, arguments);\n } else {\n return this.attribute.apply(this, arguments);\n }\n };\n\n XMLDocumentCB.prototype.ent = function(name, value) {\n return this.entity(name, value);\n };\n\n XMLDocumentCB.prototype.pent = function(name, value) {\n return this.pEntity(name, value);\n };\n\n XMLDocumentCB.prototype.not = function(name, value) {\n return this.notation(name, value);\n };\n\n return XMLDocumentCB;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLDummy, XMLNode,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLNode = require('./XMLNode');\n\n NodeType = require('./NodeType');\n\n module.exports = XMLDummy = (function(superClass) {\n extend(XMLDummy, superClass);\n\n function XMLDummy(parent) {\n XMLDummy.__super__.constructor.call(this, parent);\n this.type = NodeType.Dummy;\n }\n\n XMLDummy.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLDummy.prototype.toString = function(options) {\n return '';\n };\n\n return XMLDummy;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLAttribute, XMLElement, XMLNamedNodeMap, XMLNode, getValue, isFunction, isObject, ref,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n ref = require('./Utility'), isObject = ref.isObject, isFunction = ref.isFunction, getValue = ref.getValue;\n\n XMLNode = require('./XMLNode');\n\n NodeType = require('./NodeType');\n\n XMLAttribute = require('./XMLAttribute');\n\n XMLNamedNodeMap = require('./XMLNamedNodeMap');\n\n module.exports = XMLElement = (function(superClass) {\n extend(XMLElement, superClass);\n\n function XMLElement(parent, name, attributes) {\n var child, j, len, ref1;\n XMLElement.__super__.constructor.call(this, parent);\n if (name == null) {\n throw new Error(\"Missing element name. \" + this.debugInfo());\n }\n this.name = this.stringify.name(name);\n this.type = NodeType.Element;\n this.attribs = {};\n this.schemaTypeInfo = null;\n if (attributes != null) {\n this.attribute(attributes);\n }\n if (parent.type === NodeType.Document) {\n this.isRoot = true;\n this.documentObject = parent;\n parent.rootObject = this;\n if (parent.children) {\n ref1 = parent.children;\n for (j = 0, len = ref1.length; j < len; j++) {\n child = ref1[j];\n if (child.type === NodeType.DocType) {\n child.name = this.name;\n break;\n }\n }\n }\n }\n }\n\n Object.defineProperty(XMLElement.prototype, 'tagName', {\n get: function() {\n return this.name;\n }\n });\n\n Object.defineProperty(XMLElement.prototype, 'namespaceURI', {\n get: function() {\n return '';\n }\n });\n\n Object.defineProperty(XMLElement.prototype, 'prefix', {\n get: function() {\n return '';\n }\n });\n\n Object.defineProperty(XMLElement.prototype, 'localName', {\n get: function() {\n return this.name;\n }\n });\n\n Object.defineProperty(XMLElement.prototype, 'id', {\n get: function() {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n }\n });\n\n Object.defineProperty(XMLElement.prototype, 'className', {\n get: function() {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n }\n });\n\n Object.defineProperty(XMLElement.prototype, 'classList', {\n get: function() {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n }\n });\n\n Object.defineProperty(XMLElement.prototype, 'attributes', {\n get: function() {\n if (!this.attributeMap || !this.attributeMap.nodes) {\n this.attributeMap = new XMLNamedNodeMap(this.attribs);\n }\n return this.attributeMap;\n }\n });\n\n XMLElement.prototype.clone = function() {\n var att, attName, clonedSelf, ref1;\n clonedSelf = Object.create(this);\n if (clonedSelf.isRoot) {\n clonedSelf.documentObject = null;\n }\n clonedSelf.attribs = {};\n ref1 = this.attribs;\n for (attName in ref1) {\n if (!hasProp.call(ref1, attName)) continue;\n att = ref1[attName];\n clonedSelf.attribs[attName] = att.clone();\n }\n clonedSelf.children = [];\n this.children.forEach(function(child) {\n var clonedChild;\n clonedChild = child.clone();\n clonedChild.parent = clonedSelf;\n return clonedSelf.children.push(clonedChild);\n });\n return clonedSelf;\n };\n\n XMLElement.prototype.attribute = function(name, value) {\n var attName, attValue;\n if (name != null) {\n name = getValue(name);\n }\n if (isObject(name)) {\n for (attName in name) {\n if (!hasProp.call(name, attName)) continue;\n attValue = name[attName];\n this.attribute(attName, attValue);\n }\n } else {\n if (isFunction(value)) {\n value = value.apply();\n }\n if (this.options.keepNullAttributes && (value == null)) {\n this.attribs[name] = new XMLAttribute(this, name, \"\");\n } else if (value != null) {\n this.attribs[name] = new XMLAttribute(this, name, value);\n }\n }\n return this;\n };\n\n XMLElement.prototype.removeAttribute = function(name) {\n var attName, j, len;\n if (name == null) {\n throw new Error(\"Missing attribute name. \" + this.debugInfo());\n }\n name = getValue(name);\n if (Array.isArray(name)) {\n for (j = 0, len = name.length; j < len; j++) {\n attName = name[j];\n delete this.attribs[attName];\n }\n } else {\n delete this.attribs[name];\n }\n return this;\n };\n\n XMLElement.prototype.toString = function(options) {\n return this.options.writer.element(this, this.options.writer.filterOptions(options));\n };\n\n XMLElement.prototype.att = function(name, value) {\n return this.attribute(name, value);\n };\n\n XMLElement.prototype.a = function(name, value) {\n return this.attribute(name, value);\n };\n\n XMLElement.prototype.getAttribute = function(name) {\n if (this.attribs.hasOwnProperty(name)) {\n return this.attribs[name].value;\n } else {\n return null;\n }\n };\n\n XMLElement.prototype.setAttribute = function(name, value) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.getAttributeNode = function(name) {\n if (this.attribs.hasOwnProperty(name)) {\n return this.attribs[name];\n } else {\n return null;\n }\n };\n\n XMLElement.prototype.setAttributeNode = function(newAttr) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.removeAttributeNode = function(oldAttr) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.getElementsByTagName = function(name) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.getAttributeNS = function(namespaceURI, localName) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.setAttributeNS = function(namespaceURI, qualifiedName, value) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.removeAttributeNS = function(namespaceURI, localName) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.getAttributeNodeNS = function(namespaceURI, localName) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.setAttributeNodeNS = function(newAttr) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.getElementsByTagNameNS = function(namespaceURI, localName) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.hasAttribute = function(name) {\n return this.attribs.hasOwnProperty(name);\n };\n\n XMLElement.prototype.hasAttributeNS = function(namespaceURI, localName) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.setIdAttribute = function(name, isId) {\n if (this.attribs.hasOwnProperty(name)) {\n return this.attribs[name].isId;\n } else {\n return isId;\n }\n };\n\n XMLElement.prototype.setIdAttributeNS = function(namespaceURI, localName, isId) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.setIdAttributeNode = function(idAttr, isId) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.getElementsByTagName = function(tagname) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.getElementsByTagNameNS = function(namespaceURI, localName) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.getElementsByClassName = function(classNames) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLElement.prototype.isEqualNode = function(node) {\n var i, j, ref1;\n if (!XMLElement.__super__.isEqualNode.apply(this, arguments).isEqualNode(node)) {\n return false;\n }\n if (node.namespaceURI !== this.namespaceURI) {\n return false;\n }\n if (node.prefix !== this.prefix) {\n return false;\n }\n if (node.localName !== this.localName) {\n return false;\n }\n if (node.attribs.length !== this.attribs.length) {\n return false;\n }\n for (i = j = 0, ref1 = this.attribs.length - 1; 0 <= ref1 ? j <= ref1 : j >= ref1; i = 0 <= ref1 ? ++j : --j) {\n if (!this.attribs[i].isEqualNode(node.attribs[i])) {\n return false;\n }\n }\n return true;\n };\n\n return XMLElement;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLNamedNodeMap;\n\n module.exports = XMLNamedNodeMap = (function() {\n function XMLNamedNodeMap(nodes) {\n this.nodes = nodes;\n }\n\n Object.defineProperty(XMLNamedNodeMap.prototype, 'length', {\n get: function() {\n return Object.keys(this.nodes).length || 0;\n }\n });\n\n XMLNamedNodeMap.prototype.clone = function() {\n return this.nodes = null;\n };\n\n XMLNamedNodeMap.prototype.getNamedItem = function(name) {\n return this.nodes[name];\n };\n\n XMLNamedNodeMap.prototype.setNamedItem = function(node) {\n var oldNode;\n oldNode = this.nodes[node.nodeName];\n this.nodes[node.nodeName] = node;\n return oldNode || null;\n };\n\n XMLNamedNodeMap.prototype.removeNamedItem = function(name) {\n var oldNode;\n oldNode = this.nodes[name];\n delete this.nodes[name];\n return oldNode || null;\n };\n\n XMLNamedNodeMap.prototype.item = function(index) {\n return this.nodes[Object.keys(this.nodes)[index]] || null;\n };\n\n XMLNamedNodeMap.prototype.getNamedItemNS = function(namespaceURI, localName) {\n throw new Error(\"This DOM method is not implemented.\");\n };\n\n XMLNamedNodeMap.prototype.setNamedItemNS = function(node) {\n throw new Error(\"This DOM method is not implemented.\");\n };\n\n XMLNamedNodeMap.prototype.removeNamedItemNS = function(namespaceURI, localName) {\n throw new Error(\"This DOM method is not implemented.\");\n };\n\n return XMLNamedNodeMap;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var DocumentPosition, NodeType, XMLCData, XMLComment, XMLDeclaration, XMLDocType, XMLDummy, XMLElement, XMLNamedNodeMap, XMLNode, XMLNodeList, XMLProcessingInstruction, XMLRaw, XMLText, getValue, isEmpty, isFunction, isObject, ref1,\n hasProp = {}.hasOwnProperty;\n\n ref1 = require('./Utility'), isObject = ref1.isObject, isFunction = ref1.isFunction, isEmpty = ref1.isEmpty, getValue = ref1.getValue;\n\n XMLElement = null;\n\n XMLCData = null;\n\n XMLComment = null;\n\n XMLDeclaration = null;\n\n XMLDocType = null;\n\n XMLRaw = null;\n\n XMLText = null;\n\n XMLProcessingInstruction = null;\n\n XMLDummy = null;\n\n NodeType = null;\n\n XMLNodeList = null;\n\n XMLNamedNodeMap = null;\n\n DocumentPosition = null;\n\n module.exports = XMLNode = (function() {\n function XMLNode(parent1) {\n this.parent = parent1;\n if (this.parent) {\n this.options = this.parent.options;\n this.stringify = this.parent.stringify;\n }\n this.value = null;\n this.children = [];\n this.baseURI = null;\n if (!XMLElement) {\n XMLElement = require('./XMLElement');\n XMLCData = require('./XMLCData');\n XMLComment = require('./XMLComment');\n XMLDeclaration = require('./XMLDeclaration');\n XMLDocType = require('./XMLDocType');\n XMLRaw = require('./XMLRaw');\n XMLText = require('./XMLText');\n XMLProcessingInstruction = require('./XMLProcessingInstruction');\n XMLDummy = require('./XMLDummy');\n NodeType = require('./NodeType');\n XMLNodeList = require('./XMLNodeList');\n XMLNamedNodeMap = require('./XMLNamedNodeMap');\n DocumentPosition = require('./DocumentPosition');\n }\n }\n\n Object.defineProperty(XMLNode.prototype, 'nodeName', {\n get: function() {\n return this.name;\n }\n });\n\n Object.defineProperty(XMLNode.prototype, 'nodeType', {\n get: function() {\n return this.type;\n }\n });\n\n Object.defineProperty(XMLNode.prototype, 'nodeValue', {\n get: function() {\n return this.value;\n }\n });\n\n Object.defineProperty(XMLNode.prototype, 'parentNode', {\n get: function() {\n return this.parent;\n }\n });\n\n Object.defineProperty(XMLNode.prototype, 'childNodes', {\n get: function() {\n if (!this.childNodeList || !this.childNodeList.nodes) {\n this.childNodeList = new XMLNodeList(this.children);\n }\n return this.childNodeList;\n }\n });\n\n Object.defineProperty(XMLNode.prototype, 'firstChild', {\n get: function() {\n return this.children[0] || null;\n }\n });\n\n Object.defineProperty(XMLNode.prototype, 'lastChild', {\n get: function() {\n return this.children[this.children.length - 1] || null;\n }\n });\n\n Object.defineProperty(XMLNode.prototype, 'previousSibling', {\n get: function() {\n var i;\n i = this.parent.children.indexOf(this);\n return this.parent.children[i - 1] || null;\n }\n });\n\n Object.defineProperty(XMLNode.prototype, 'nextSibling', {\n get: function() {\n var i;\n i = this.parent.children.indexOf(this);\n return this.parent.children[i + 1] || null;\n }\n });\n\n Object.defineProperty(XMLNode.prototype, 'ownerDocument', {\n get: function() {\n return this.document() || null;\n }\n });\n\n Object.defineProperty(XMLNode.prototype, 'textContent', {\n get: function() {\n var child, j, len, ref2, str;\n if (this.nodeType === NodeType.Element || this.nodeType === NodeType.DocumentFragment) {\n str = '';\n ref2 = this.children;\n for (j = 0, len = ref2.length; j < len; j++) {\n child = ref2[j];\n if (child.textContent) {\n str += child.textContent;\n }\n }\n return str;\n } else {\n return null;\n }\n },\n set: function(value) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n }\n });\n\n XMLNode.prototype.setParent = function(parent) {\n var child, j, len, ref2, results;\n this.parent = parent;\n if (parent) {\n this.options = parent.options;\n this.stringify = parent.stringify;\n }\n ref2 = this.children;\n results = [];\n for (j = 0, len = ref2.length; j < len; j++) {\n child = ref2[j];\n results.push(child.setParent(this));\n }\n return results;\n };\n\n XMLNode.prototype.element = function(name, attributes, text) {\n var childNode, item, j, k, key, lastChild, len, len1, ref2, ref3, val;\n lastChild = null;\n if (attributes === null && (text == null)) {\n ref2 = [{}, null], attributes = ref2[0], text = ref2[1];\n }\n if (attributes == null) {\n attributes = {};\n }\n attributes = getValue(attributes);\n if (!isObject(attributes)) {\n ref3 = [attributes, text], text = ref3[0], attributes = ref3[1];\n }\n if (name != null) {\n name = getValue(name);\n }\n if (Array.isArray(name)) {\n for (j = 0, len = name.length; j < len; j++) {\n item = name[j];\n lastChild = this.element(item);\n }\n } else if (isFunction(name)) {\n lastChild = this.element(name.apply());\n } else if (isObject(name)) {\n for (key in name) {\n if (!hasProp.call(name, key)) continue;\n val = name[key];\n if (isFunction(val)) {\n val = val.apply();\n }\n if (!this.options.ignoreDecorators && this.stringify.convertAttKey && key.indexOf(this.stringify.convertAttKey) === 0) {\n lastChild = this.attribute(key.substr(this.stringify.convertAttKey.length), val);\n } else if (!this.options.separateArrayItems && Array.isArray(val) && isEmpty(val)) {\n lastChild = this.dummy();\n } else if (isObject(val) && isEmpty(val)) {\n lastChild = this.element(key);\n } else if (!this.options.keepNullNodes && (val == null)) {\n lastChild = this.dummy();\n } else if (!this.options.separateArrayItems && Array.isArray(val)) {\n for (k = 0, len1 = val.length; k < len1; k++) {\n item = val[k];\n childNode = {};\n childNode[key] = item;\n lastChild = this.element(childNode);\n }\n } else if (isObject(val)) {\n if (!this.options.ignoreDecorators && this.stringify.convertTextKey && key.indexOf(this.stringify.convertTextKey) === 0) {\n lastChild = this.element(val);\n } else {\n lastChild = this.element(key);\n lastChild.element(val);\n }\n } else {\n lastChild = this.element(key, val);\n }\n }\n } else if (!this.options.keepNullNodes && text === null) {\n lastChild = this.dummy();\n } else {\n if (!this.options.ignoreDecorators && this.stringify.convertTextKey && name.indexOf(this.stringify.convertTextKey) === 0) {\n lastChild = this.text(text);\n } else if (!this.options.ignoreDecorators && this.stringify.convertCDataKey && name.indexOf(this.stringify.convertCDataKey) === 0) {\n lastChild = this.cdata(text);\n } else if (!this.options.ignoreDecorators && this.stringify.convertCommentKey && name.indexOf(this.stringify.convertCommentKey) === 0) {\n lastChild = this.comment(text);\n } else if (!this.options.ignoreDecorators && this.stringify.convertRawKey && name.indexOf(this.stringify.convertRawKey) === 0) {\n lastChild = this.raw(text);\n } else if (!this.options.ignoreDecorators && this.stringify.convertPIKey && name.indexOf(this.stringify.convertPIKey) === 0) {\n lastChild = this.instruction(name.substr(this.stringify.convertPIKey.length), text);\n } else {\n lastChild = this.node(name, attributes, text);\n }\n }\n if (lastChild == null) {\n throw new Error(\"Could not create any elements with: \" + name + \". \" + this.debugInfo());\n }\n return lastChild;\n };\n\n XMLNode.prototype.insertBefore = function(name, attributes, text) {\n var child, i, newChild, refChild, removed;\n if (name != null ? name.type : void 0) {\n newChild = name;\n refChild = attributes;\n newChild.setParent(this);\n if (refChild) {\n i = children.indexOf(refChild);\n removed = children.splice(i);\n children.push(newChild);\n Array.prototype.push.apply(children, removed);\n } else {\n children.push(newChild);\n }\n return newChild;\n } else {\n if (this.isRoot) {\n throw new Error(\"Cannot insert elements at root level. \" + this.debugInfo(name));\n }\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i);\n child = this.parent.element(name, attributes, text);\n Array.prototype.push.apply(this.parent.children, removed);\n return child;\n }\n };\n\n XMLNode.prototype.insertAfter = function(name, attributes, text) {\n var child, i, removed;\n if (this.isRoot) {\n throw new Error(\"Cannot insert elements at root level. \" + this.debugInfo(name));\n }\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i + 1);\n child = this.parent.element(name, attributes, text);\n Array.prototype.push.apply(this.parent.children, removed);\n return child;\n };\n\n XMLNode.prototype.remove = function() {\n var i, ref2;\n if (this.isRoot) {\n throw new Error(\"Cannot remove the root element. \" + this.debugInfo());\n }\n i = this.parent.children.indexOf(this);\n [].splice.apply(this.parent.children, [i, i - i + 1].concat(ref2 = [])), ref2;\n return this.parent;\n };\n\n XMLNode.prototype.node = function(name, attributes, text) {\n var child, ref2;\n if (name != null) {\n name = getValue(name);\n }\n attributes || (attributes = {});\n attributes = getValue(attributes);\n if (!isObject(attributes)) {\n ref2 = [attributes, text], text = ref2[0], attributes = ref2[1];\n }\n child = new XMLElement(this, name, attributes);\n if (text != null) {\n child.text(text);\n }\n this.children.push(child);\n return child;\n };\n\n XMLNode.prototype.text = function(value) {\n var child;\n if (isObject(value)) {\n this.element(value);\n }\n child = new XMLText(this, value);\n this.children.push(child);\n return this;\n };\n\n XMLNode.prototype.cdata = function(value) {\n var child;\n child = new XMLCData(this, value);\n this.children.push(child);\n return this;\n };\n\n XMLNode.prototype.comment = function(value) {\n var child;\n child = new XMLComment(this, value);\n this.children.push(child);\n return this;\n };\n\n XMLNode.prototype.commentBefore = function(value) {\n var child, i, removed;\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i);\n child = this.parent.comment(value);\n Array.prototype.push.apply(this.parent.children, removed);\n return this;\n };\n\n XMLNode.prototype.commentAfter = function(value) {\n var child, i, removed;\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i + 1);\n child = this.parent.comment(value);\n Array.prototype.push.apply(this.parent.children, removed);\n return this;\n };\n\n XMLNode.prototype.raw = function(value) {\n var child;\n child = new XMLRaw(this, value);\n this.children.push(child);\n return this;\n };\n\n XMLNode.prototype.dummy = function() {\n var child;\n child = new XMLDummy(this);\n return child;\n };\n\n XMLNode.prototype.instruction = function(target, value) {\n var insTarget, insValue, instruction, j, len;\n if (target != null) {\n target = getValue(target);\n }\n if (value != null) {\n value = getValue(value);\n }\n if (Array.isArray(target)) {\n for (j = 0, len = target.length; j < len; j++) {\n insTarget = target[j];\n this.instruction(insTarget);\n }\n } else if (isObject(target)) {\n for (insTarget in target) {\n if (!hasProp.call(target, insTarget)) continue;\n insValue = target[insTarget];\n this.instruction(insTarget, insValue);\n }\n } else {\n if (isFunction(value)) {\n value = value.apply();\n }\n instruction = new XMLProcessingInstruction(this, target, value);\n this.children.push(instruction);\n }\n return this;\n };\n\n XMLNode.prototype.instructionBefore = function(target, value) {\n var child, i, removed;\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i);\n child = this.parent.instruction(target, value);\n Array.prototype.push.apply(this.parent.children, removed);\n return this;\n };\n\n XMLNode.prototype.instructionAfter = function(target, value) {\n var child, i, removed;\n i = this.parent.children.indexOf(this);\n removed = this.parent.children.splice(i + 1);\n child = this.parent.instruction(target, value);\n Array.prototype.push.apply(this.parent.children, removed);\n return this;\n };\n\n XMLNode.prototype.declaration = function(version, encoding, standalone) {\n var doc, xmldec;\n doc = this.document();\n xmldec = new XMLDeclaration(doc, version, encoding, standalone);\n if (doc.children.length === 0) {\n doc.children.unshift(xmldec);\n } else if (doc.children[0].type === NodeType.Declaration) {\n doc.children[0] = xmldec;\n } else {\n doc.children.unshift(xmldec);\n }\n return doc.root() || doc;\n };\n\n XMLNode.prototype.dtd = function(pubID, sysID) {\n var child, doc, doctype, i, j, k, len, len1, ref2, ref3;\n doc = this.document();\n doctype = new XMLDocType(doc, pubID, sysID);\n ref2 = doc.children;\n for (i = j = 0, len = ref2.length; j < len; i = ++j) {\n child = ref2[i];\n if (child.type === NodeType.DocType) {\n doc.children[i] = doctype;\n return doctype;\n }\n }\n ref3 = doc.children;\n for (i = k = 0, len1 = ref3.length; k < len1; i = ++k) {\n child = ref3[i];\n if (child.isRoot) {\n doc.children.splice(i, 0, doctype);\n return doctype;\n }\n }\n doc.children.push(doctype);\n return doctype;\n };\n\n XMLNode.prototype.up = function() {\n if (this.isRoot) {\n throw new Error(\"The root node has no parent. Use doc() if you need to get the document object.\");\n }\n return this.parent;\n };\n\n XMLNode.prototype.root = function() {\n var node;\n node = this;\n while (node) {\n if (node.type === NodeType.Document) {\n return node.rootObject;\n } else if (node.isRoot) {\n return node;\n } else {\n node = node.parent;\n }\n }\n };\n\n XMLNode.prototype.document = function() {\n var node;\n node = this;\n while (node) {\n if (node.type === NodeType.Document) {\n return node;\n } else {\n node = node.parent;\n }\n }\n };\n\n XMLNode.prototype.end = function(options) {\n return this.document().end(options);\n };\n\n XMLNode.prototype.prev = function() {\n var i;\n i = this.parent.children.indexOf(this);\n if (i < 1) {\n throw new Error(\"Already at the first node. \" + this.debugInfo());\n }\n return this.parent.children[i - 1];\n };\n\n XMLNode.prototype.next = function() {\n var i;\n i = this.parent.children.indexOf(this);\n if (i === -1 || i === this.parent.children.length - 1) {\n throw new Error(\"Already at the last node. \" + this.debugInfo());\n }\n return this.parent.children[i + 1];\n };\n\n XMLNode.prototype.importDocument = function(doc) {\n var clonedRoot;\n clonedRoot = doc.root().clone();\n clonedRoot.parent = this;\n clonedRoot.isRoot = false;\n this.children.push(clonedRoot);\n return this;\n };\n\n XMLNode.prototype.debugInfo = function(name) {\n var ref2, ref3;\n name = name || this.name;\n if ((name == null) && !((ref2 = this.parent) != null ? ref2.name : void 0)) {\n return \"\";\n } else if (name == null) {\n return \"parent: <\" + this.parent.name + \">\";\n } else if (!((ref3 = this.parent) != null ? ref3.name : void 0)) {\n return \"node: <\" + name + \">\";\n } else {\n return \"node: <\" + name + \">, parent: <\" + this.parent.name + \">\";\n }\n };\n\n XMLNode.prototype.ele = function(name, attributes, text) {\n return this.element(name, attributes, text);\n };\n\n XMLNode.prototype.nod = function(name, attributes, text) {\n return this.node(name, attributes, text);\n };\n\n XMLNode.prototype.txt = function(value) {\n return this.text(value);\n };\n\n XMLNode.prototype.dat = function(value) {\n return this.cdata(value);\n };\n\n XMLNode.prototype.com = function(value) {\n return this.comment(value);\n };\n\n XMLNode.prototype.ins = function(target, value) {\n return this.instruction(target, value);\n };\n\n XMLNode.prototype.doc = function() {\n return this.document();\n };\n\n XMLNode.prototype.dec = function(version, encoding, standalone) {\n return this.declaration(version, encoding, standalone);\n };\n\n XMLNode.prototype.e = function(name, attributes, text) {\n return this.element(name, attributes, text);\n };\n\n XMLNode.prototype.n = function(name, attributes, text) {\n return this.node(name, attributes, text);\n };\n\n XMLNode.prototype.t = function(value) {\n return this.text(value);\n };\n\n XMLNode.prototype.d = function(value) {\n return this.cdata(value);\n };\n\n XMLNode.prototype.c = function(value) {\n return this.comment(value);\n };\n\n XMLNode.prototype.r = function(value) {\n return this.raw(value);\n };\n\n XMLNode.prototype.i = function(target, value) {\n return this.instruction(target, value);\n };\n\n XMLNode.prototype.u = function() {\n return this.up();\n };\n\n XMLNode.prototype.importXMLBuilder = function(doc) {\n return this.importDocument(doc);\n };\n\n XMLNode.prototype.replaceChild = function(newChild, oldChild) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.removeChild = function(oldChild) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.appendChild = function(newChild) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.hasChildNodes = function() {\n return this.children.length !== 0;\n };\n\n XMLNode.prototype.cloneNode = function(deep) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.normalize = function() {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.isSupported = function(feature, version) {\n return true;\n };\n\n XMLNode.prototype.hasAttributes = function() {\n return this.attribs.length !== 0;\n };\n\n XMLNode.prototype.compareDocumentPosition = function(other) {\n var ref, res;\n ref = this;\n if (ref === other) {\n return 0;\n } else if (this.document() !== other.document()) {\n res = DocumentPosition.Disconnected | DocumentPosition.ImplementationSpecific;\n if (Math.random() < 0.5) {\n res |= DocumentPosition.Preceding;\n } else {\n res |= DocumentPosition.Following;\n }\n return res;\n } else if (ref.isAncestor(other)) {\n return DocumentPosition.Contains | DocumentPosition.Preceding;\n } else if (ref.isDescendant(other)) {\n return DocumentPosition.Contains | DocumentPosition.Following;\n } else if (ref.isPreceding(other)) {\n return DocumentPosition.Preceding;\n } else {\n return DocumentPosition.Following;\n }\n };\n\n XMLNode.prototype.isSameNode = function(other) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.lookupPrefix = function(namespaceURI) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.isDefaultNamespace = function(namespaceURI) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.lookupNamespaceURI = function(prefix) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.isEqualNode = function(node) {\n var i, j, ref2;\n if (node.nodeType !== this.nodeType) {\n return false;\n }\n if (node.children.length !== this.children.length) {\n return false;\n }\n for (i = j = 0, ref2 = this.children.length - 1; 0 <= ref2 ? j <= ref2 : j >= ref2; i = 0 <= ref2 ? ++j : --j) {\n if (!this.children[i].isEqualNode(node.children[i])) {\n return false;\n }\n }\n return true;\n };\n\n XMLNode.prototype.getFeature = function(feature, version) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.setUserData = function(key, data, handler) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.getUserData = function(key) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLNode.prototype.contains = function(other) {\n if (!other) {\n return false;\n }\n return other === this || this.isDescendant(other);\n };\n\n XMLNode.prototype.isDescendant = function(node) {\n var child, isDescendantChild, j, len, ref2;\n ref2 = this.children;\n for (j = 0, len = ref2.length; j < len; j++) {\n child = ref2[j];\n if (node === child) {\n return true;\n }\n isDescendantChild = child.isDescendant(node);\n if (isDescendantChild) {\n return true;\n }\n }\n return false;\n };\n\n XMLNode.prototype.isAncestor = function(node) {\n return node.isDescendant(this);\n };\n\n XMLNode.prototype.isPreceding = function(node) {\n var nodePos, thisPos;\n nodePos = this.treePosition(node);\n thisPos = this.treePosition(this);\n if (nodePos === -1 || thisPos === -1) {\n return false;\n } else {\n return nodePos < thisPos;\n }\n };\n\n XMLNode.prototype.isFollowing = function(node) {\n var nodePos, thisPos;\n nodePos = this.treePosition(node);\n thisPos = this.treePosition(this);\n if (nodePos === -1 || thisPos === -1) {\n return false;\n } else {\n return nodePos > thisPos;\n }\n };\n\n XMLNode.prototype.treePosition = function(node) {\n var found, pos;\n pos = 0;\n found = false;\n this.foreachTreeNode(this.document(), function(childNode) {\n pos++;\n if (!found && childNode === node) {\n return found = true;\n }\n });\n if (found) {\n return pos;\n } else {\n return -1;\n }\n };\n\n XMLNode.prototype.foreachTreeNode = function(node, func) {\n var child, j, len, ref2, res;\n node || (node = this.document());\n ref2 = node.children;\n for (j = 0, len = ref2.length; j < len; j++) {\n child = ref2[j];\n if (res = func(child)) {\n return res;\n } else {\n res = this.foreachTreeNode(child, func);\n if (res) {\n return res;\n }\n }\n }\n };\n\n return XMLNode;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLNodeList;\n\n module.exports = XMLNodeList = (function() {\n function XMLNodeList(nodes) {\n this.nodes = nodes;\n }\n\n Object.defineProperty(XMLNodeList.prototype, 'length', {\n get: function() {\n return this.nodes.length || 0;\n }\n });\n\n XMLNodeList.prototype.clone = function() {\n return this.nodes = null;\n };\n\n XMLNodeList.prototype.item = function(index) {\n return this.nodes[index] || null;\n };\n\n return XMLNodeList;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLCharacterData, XMLProcessingInstruction,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n NodeType = require('./NodeType');\n\n XMLCharacterData = require('./XMLCharacterData');\n\n module.exports = XMLProcessingInstruction = (function(superClass) {\n extend(XMLProcessingInstruction, superClass);\n\n function XMLProcessingInstruction(parent, target, value) {\n XMLProcessingInstruction.__super__.constructor.call(this, parent);\n if (target == null) {\n throw new Error(\"Missing instruction target. \" + this.debugInfo());\n }\n this.type = NodeType.ProcessingInstruction;\n this.target = this.stringify.insTarget(target);\n this.name = this.target;\n if (value) {\n this.value = this.stringify.insValue(value);\n }\n }\n\n XMLProcessingInstruction.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLProcessingInstruction.prototype.toString = function(options) {\n return this.options.writer.processingInstruction(this, this.options.writer.filterOptions(options));\n };\n\n XMLProcessingInstruction.prototype.isEqualNode = function(node) {\n if (!XMLProcessingInstruction.__super__.isEqualNode.apply(this, arguments).isEqualNode(node)) {\n return false;\n }\n if (node.target !== this.target) {\n return false;\n }\n return true;\n };\n\n return XMLProcessingInstruction;\n\n })(XMLCharacterData);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLNode, XMLRaw,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n NodeType = require('./NodeType');\n\n XMLNode = require('./XMLNode');\n\n module.exports = XMLRaw = (function(superClass) {\n extend(XMLRaw, superClass);\n\n function XMLRaw(parent, text) {\n XMLRaw.__super__.constructor.call(this, parent);\n if (text == null) {\n throw new Error(\"Missing raw text. \" + this.debugInfo());\n }\n this.type = NodeType.Raw;\n this.value = this.stringify.raw(text);\n }\n\n XMLRaw.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLRaw.prototype.toString = function(options) {\n return this.options.writer.raw(this, this.options.writer.filterOptions(options));\n };\n\n return XMLRaw;\n\n })(XMLNode);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, WriterState, XMLStreamWriter, XMLWriterBase,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n NodeType = require('./NodeType');\n\n XMLWriterBase = require('./XMLWriterBase');\n\n WriterState = require('./WriterState');\n\n module.exports = XMLStreamWriter = (function(superClass) {\n extend(XMLStreamWriter, superClass);\n\n function XMLStreamWriter(stream, options) {\n this.stream = stream;\n XMLStreamWriter.__super__.constructor.call(this, options);\n }\n\n XMLStreamWriter.prototype.endline = function(node, options, level) {\n if (node.isLastRootNode && options.state === WriterState.CloseTag) {\n return '';\n } else {\n return XMLStreamWriter.__super__.endline.call(this, node, options, level);\n }\n };\n\n XMLStreamWriter.prototype.document = function(doc, options) {\n var child, i, j, k, len, len1, ref, ref1, results;\n ref = doc.children;\n for (i = j = 0, len = ref.length; j < len; i = ++j) {\n child = ref[i];\n child.isLastRootNode = i === doc.children.length - 1;\n }\n options = this.filterOptions(options);\n ref1 = doc.children;\n results = [];\n for (k = 0, len1 = ref1.length; k < len1; k++) {\n child = ref1[k];\n results.push(this.writeChildNode(child, options, 0));\n }\n return results;\n };\n\n XMLStreamWriter.prototype.attribute = function(att, options, level) {\n return this.stream.write(XMLStreamWriter.__super__.attribute.call(this, att, options, level));\n };\n\n XMLStreamWriter.prototype.cdata = function(node, options, level) {\n return this.stream.write(XMLStreamWriter.__super__.cdata.call(this, node, options, level));\n };\n\n XMLStreamWriter.prototype.comment = function(node, options, level) {\n return this.stream.write(XMLStreamWriter.__super__.comment.call(this, node, options, level));\n };\n\n XMLStreamWriter.prototype.declaration = function(node, options, level) {\n return this.stream.write(XMLStreamWriter.__super__.declaration.call(this, node, options, level));\n };\n\n XMLStreamWriter.prototype.docType = function(node, options, level) {\n var child, j, len, ref;\n level || (level = 0);\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n this.stream.write(this.indent(node, options, level));\n this.stream.write('<!DOCTYPE ' + node.root().name);\n if (node.pubID && node.sysID) {\n this.stream.write(' PUBLIC \"' + node.pubID + '\" \"' + node.sysID + '\"');\n } else if (node.sysID) {\n this.stream.write(' SYSTEM \"' + node.sysID + '\"');\n }\n if (node.children.length > 0) {\n this.stream.write(' [');\n this.stream.write(this.endline(node, options, level));\n options.state = WriterState.InsideTag;\n ref = node.children;\n for (j = 0, len = ref.length; j < len; j++) {\n child = ref[j];\n this.writeChildNode(child, options, level + 1);\n }\n options.state = WriterState.CloseTag;\n this.stream.write(']');\n }\n options.state = WriterState.CloseTag;\n this.stream.write(options.spaceBeforeSlash + '>');\n this.stream.write(this.endline(node, options, level));\n options.state = WriterState.None;\n return this.closeNode(node, options, level);\n };\n\n XMLStreamWriter.prototype.element = function(node, options, level) {\n var att, child, childNodeCount, firstChildNode, j, len, name, prettySuppressed, ref, ref1;\n level || (level = 0);\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n this.stream.write(this.indent(node, options, level) + '<' + node.name);\n ref = node.attribs;\n for (name in ref) {\n if (!hasProp.call(ref, name)) continue;\n att = ref[name];\n this.attribute(att, options, level);\n }\n childNodeCount = node.children.length;\n firstChildNode = childNodeCount === 0 ? null : node.children[0];\n if (childNodeCount === 0 || node.children.every(function(e) {\n return (e.type === NodeType.Text || e.type === NodeType.Raw) && e.value === '';\n })) {\n if (options.allowEmpty) {\n this.stream.write('>');\n options.state = WriterState.CloseTag;\n this.stream.write('</' + node.name + '>');\n } else {\n options.state = WriterState.CloseTag;\n this.stream.write(options.spaceBeforeSlash + '/>');\n }\n } else if (options.pretty && childNodeCount === 1 && (firstChildNode.type === NodeType.Text || firstChildNode.type === NodeType.Raw) && (firstChildNode.value != null)) {\n this.stream.write('>');\n options.state = WriterState.InsideTag;\n options.suppressPrettyCount++;\n prettySuppressed = true;\n this.writeChildNode(firstChildNode, options, level + 1);\n options.suppressPrettyCount--;\n prettySuppressed = false;\n options.state = WriterState.CloseTag;\n this.stream.write('</' + node.name + '>');\n } else {\n this.stream.write('>' + this.endline(node, options, level));\n options.state = WriterState.InsideTag;\n ref1 = node.children;\n for (j = 0, len = ref1.length; j < len; j++) {\n child = ref1[j];\n this.writeChildNode(child, options, level + 1);\n }\n options.state = WriterState.CloseTag;\n this.stream.write(this.indent(node, options, level) + '</' + node.name + '>');\n }\n this.stream.write(this.endline(node, options, level));\n options.state = WriterState.None;\n return this.closeNode(node, options, level);\n };\n\n XMLStreamWriter.prototype.processingInstruction = function(node, options, level) {\n return this.stream.write(XMLStreamWriter.__super__.processingInstruction.call(this, node, options, level));\n };\n\n XMLStreamWriter.prototype.raw = function(node, options, level) {\n return this.stream.write(XMLStreamWriter.__super__.raw.call(this, node, options, level));\n };\n\n XMLStreamWriter.prototype.text = function(node, options, level) {\n return this.stream.write(XMLStreamWriter.__super__.text.call(this, node, options, level));\n };\n\n XMLStreamWriter.prototype.dtdAttList = function(node, options, level) {\n return this.stream.write(XMLStreamWriter.__super__.dtdAttList.call(this, node, options, level));\n };\n\n XMLStreamWriter.prototype.dtdElement = function(node, options, level) {\n return this.stream.write(XMLStreamWriter.__super__.dtdElement.call(this, node, options, level));\n };\n\n XMLStreamWriter.prototype.dtdEntity = function(node, options, level) {\n return this.stream.write(XMLStreamWriter.__super__.dtdEntity.call(this, node, options, level));\n };\n\n XMLStreamWriter.prototype.dtdNotation = function(node, options, level) {\n return this.stream.write(XMLStreamWriter.__super__.dtdNotation.call(this, node, options, level));\n };\n\n return XMLStreamWriter;\n\n })(XMLWriterBase);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLStringWriter, XMLWriterBase,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n XMLWriterBase = require('./XMLWriterBase');\n\n module.exports = XMLStringWriter = (function(superClass) {\n extend(XMLStringWriter, superClass);\n\n function XMLStringWriter(options) {\n XMLStringWriter.__super__.constructor.call(this, options);\n }\n\n XMLStringWriter.prototype.document = function(doc, options) {\n var child, i, len, r, ref;\n options = this.filterOptions(options);\n r = '';\n ref = doc.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n r += this.writeChildNode(child, options, 0);\n }\n if (options.pretty && r.slice(-options.newline.length) === options.newline) {\n r = r.slice(0, -options.newline.length);\n }\n return r;\n };\n\n return XMLStringWriter;\n\n })(XMLWriterBase);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var XMLStringifier,\n bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },\n hasProp = {}.hasOwnProperty;\n\n module.exports = XMLStringifier = (function() {\n function XMLStringifier(options) {\n this.assertLegalName = bind(this.assertLegalName, this);\n this.assertLegalChar = bind(this.assertLegalChar, this);\n var key, ref, value;\n options || (options = {});\n this.options = options;\n if (!this.options.version) {\n this.options.version = '1.0';\n }\n ref = options.stringify || {};\n for (key in ref) {\n if (!hasProp.call(ref, key)) continue;\n value = ref[key];\n this[key] = value;\n }\n }\n\n XMLStringifier.prototype.name = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return this.assertLegalName('' + val || '');\n };\n\n XMLStringifier.prototype.text = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return this.assertLegalChar(this.textEscape('' + val || ''));\n };\n\n XMLStringifier.prototype.cdata = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n val = '' + val || '';\n val = val.replace(']]>', ']]]]><![CDATA[>');\n return this.assertLegalChar(val);\n };\n\n XMLStringifier.prototype.comment = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n val = '' + val || '';\n if (val.match(/--/)) {\n throw new Error(\"Comment text cannot contain double-hypen: \" + val);\n }\n return this.assertLegalChar(val);\n };\n\n XMLStringifier.prototype.raw = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return '' + val || '';\n };\n\n XMLStringifier.prototype.attValue = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return this.assertLegalChar(this.attEscape(val = '' + val || ''));\n };\n\n XMLStringifier.prototype.insTarget = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return this.assertLegalChar('' + val || '');\n };\n\n XMLStringifier.prototype.insValue = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n val = '' + val || '';\n if (val.match(/\\?>/)) {\n throw new Error(\"Invalid processing instruction value: \" + val);\n }\n return this.assertLegalChar(val);\n };\n\n XMLStringifier.prototype.xmlVersion = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n val = '' + val || '';\n if (!val.match(/1\\.[0-9]+/)) {\n throw new Error(\"Invalid version number: \" + val);\n }\n return val;\n };\n\n XMLStringifier.prototype.xmlEncoding = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n val = '' + val || '';\n if (!val.match(/^[A-Za-z](?:[A-Za-z0-9._-])*$/)) {\n throw new Error(\"Invalid encoding: \" + val);\n }\n return this.assertLegalChar(val);\n };\n\n XMLStringifier.prototype.xmlStandalone = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n if (val) {\n return \"yes\";\n } else {\n return \"no\";\n }\n };\n\n XMLStringifier.prototype.dtdPubID = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return this.assertLegalChar('' + val || '');\n };\n\n XMLStringifier.prototype.dtdSysID = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return this.assertLegalChar('' + val || '');\n };\n\n XMLStringifier.prototype.dtdElementValue = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return this.assertLegalChar('' + val || '');\n };\n\n XMLStringifier.prototype.dtdAttType = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return this.assertLegalChar('' + val || '');\n };\n\n XMLStringifier.prototype.dtdAttDefault = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return this.assertLegalChar('' + val || '');\n };\n\n XMLStringifier.prototype.dtdEntityValue = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return this.assertLegalChar('' + val || '');\n };\n\n XMLStringifier.prototype.dtdNData = function(val) {\n if (this.options.noValidation) {\n return val;\n }\n return this.assertLegalChar('' + val || '');\n };\n\n XMLStringifier.prototype.convertAttKey = '@';\n\n XMLStringifier.prototype.convertPIKey = '?';\n\n XMLStringifier.prototype.convertTextKey = '#text';\n\n XMLStringifier.prototype.convertCDataKey = '#cdata';\n\n XMLStringifier.prototype.convertCommentKey = '#comment';\n\n XMLStringifier.prototype.convertRawKey = '#raw';\n\n XMLStringifier.prototype.assertLegalChar = function(str) {\n var regex, res;\n if (this.options.noValidation) {\n return str;\n }\n regex = '';\n if (this.options.version === '1.0') {\n regex = /[\\0-\\x08\\x0B\\f\\x0E-\\x1F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\n if (res = str.match(regex)) {\n throw new Error(\"Invalid character in string: \" + str + \" at index \" + res.index);\n }\n } else if (this.options.version === '1.1') {\n regex = /[\\0\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\n if (res = str.match(regex)) {\n throw new Error(\"Invalid character in string: \" + str + \" at index \" + res.index);\n }\n }\n return str;\n };\n\n XMLStringifier.prototype.assertLegalName = function(str) {\n var regex;\n if (this.options.noValidation) {\n return str;\n }\n this.assertLegalChar(str);\n regex = /^([:A-Z_a-z\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])([\\x2D\\.0-:A-Z_a-z\\xB7\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u037D\\u037F-\\u1FFF\\u200C\\u200D\\u203F\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]|[\\uD800-\\uDB7F][\\uDC00-\\uDFFF])*$/;\n if (!str.match(regex)) {\n throw new Error(\"Invalid character in name\");\n }\n return str;\n };\n\n XMLStringifier.prototype.textEscape = function(str) {\n var ampregex;\n if (this.options.noValidation) {\n return str;\n }\n ampregex = this.options.noDoubleEncoding ? /(?!&\\S+;)&/g : /&/g;\n return str.replace(ampregex, '&').replace(/</g, '<').replace(/>/g, '>').replace(/\\r/g, '
');\n };\n\n XMLStringifier.prototype.attEscape = function(str) {\n var ampregex;\n if (this.options.noValidation) {\n return str;\n }\n ampregex = this.options.noDoubleEncoding ? /(?!&\\S+;)&/g : /&/g;\n return str.replace(ampregex, '&').replace(/</g, '<').replace(/\"/g, '"').replace(/\\t/g, '	').replace(/\\n/g, '
').replace(/\\r/g, '
');\n };\n\n return XMLStringifier;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, XMLCharacterData, XMLText,\n extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },\n hasProp = {}.hasOwnProperty;\n\n NodeType = require('./NodeType');\n\n XMLCharacterData = require('./XMLCharacterData');\n\n module.exports = XMLText = (function(superClass) {\n extend(XMLText, superClass);\n\n function XMLText(parent, text) {\n XMLText.__super__.constructor.call(this, parent);\n if (text == null) {\n throw new Error(\"Missing element text. \" + this.debugInfo());\n }\n this.name = \"#text\";\n this.type = NodeType.Text;\n this.value = this.stringify.text(text);\n }\n\n Object.defineProperty(XMLText.prototype, 'isElementContentWhitespace', {\n get: function() {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n }\n });\n\n Object.defineProperty(XMLText.prototype, 'wholeText', {\n get: function() {\n var next, prev, str;\n str = '';\n prev = this.previousSibling;\n while (prev) {\n str = prev.data + str;\n prev = prev.previousSibling;\n }\n str += this.data;\n next = this.nextSibling;\n while (next) {\n str = str + next.data;\n next = next.nextSibling;\n }\n return str;\n }\n });\n\n XMLText.prototype.clone = function() {\n return Object.create(this);\n };\n\n XMLText.prototype.toString = function(options) {\n return this.options.writer.text(this, this.options.writer.filterOptions(options));\n };\n\n XMLText.prototype.splitText = function(offset) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n XMLText.prototype.replaceWholeText = function(content) {\n throw new Error(\"This DOM method is not implemented.\" + this.debugInfo());\n };\n\n return XMLText;\n\n })(XMLCharacterData);\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, WriterState, XMLCData, XMLComment, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDeclaration, XMLDocType, XMLDummy, XMLElement, XMLProcessingInstruction, XMLRaw, XMLText, XMLWriterBase, assign,\n hasProp = {}.hasOwnProperty;\n\n assign = require('./Utility').assign;\n\n NodeType = require('./NodeType');\n\n XMLDeclaration = require('./XMLDeclaration');\n\n XMLDocType = require('./XMLDocType');\n\n XMLCData = require('./XMLCData');\n\n XMLComment = require('./XMLComment');\n\n XMLElement = require('./XMLElement');\n\n XMLRaw = require('./XMLRaw');\n\n XMLText = require('./XMLText');\n\n XMLProcessingInstruction = require('./XMLProcessingInstruction');\n\n XMLDummy = require('./XMLDummy');\n\n XMLDTDAttList = require('./XMLDTDAttList');\n\n XMLDTDElement = require('./XMLDTDElement');\n\n XMLDTDEntity = require('./XMLDTDEntity');\n\n XMLDTDNotation = require('./XMLDTDNotation');\n\n WriterState = require('./WriterState');\n\n module.exports = XMLWriterBase = (function() {\n function XMLWriterBase(options) {\n var key, ref, value;\n options || (options = {});\n this.options = options;\n ref = options.writer || {};\n for (key in ref) {\n if (!hasProp.call(ref, key)) continue;\n value = ref[key];\n this[\"_\" + key] = this[key];\n this[key] = value;\n }\n }\n\n XMLWriterBase.prototype.filterOptions = function(options) {\n var filteredOptions, ref, ref1, ref2, ref3, ref4, ref5, ref6;\n options || (options = {});\n options = assign({}, this.options, options);\n filteredOptions = {\n writer: this\n };\n filteredOptions.pretty = options.pretty || false;\n filteredOptions.allowEmpty = options.allowEmpty || false;\n filteredOptions.indent = (ref = options.indent) != null ? ref : ' ';\n filteredOptions.newline = (ref1 = options.newline) != null ? ref1 : '\\n';\n filteredOptions.offset = (ref2 = options.offset) != null ? ref2 : 0;\n filteredOptions.dontPrettyTextNodes = (ref3 = (ref4 = options.dontPrettyTextNodes) != null ? ref4 : options.dontprettytextnodes) != null ? ref3 : 0;\n filteredOptions.spaceBeforeSlash = (ref5 = (ref6 = options.spaceBeforeSlash) != null ? ref6 : options.spacebeforeslash) != null ? ref5 : '';\n if (filteredOptions.spaceBeforeSlash === true) {\n filteredOptions.spaceBeforeSlash = ' ';\n }\n filteredOptions.suppressPrettyCount = 0;\n filteredOptions.user = {};\n filteredOptions.state = WriterState.None;\n return filteredOptions;\n };\n\n XMLWriterBase.prototype.indent = function(node, options, level) {\n var indentLevel;\n if (!options.pretty || options.suppressPrettyCount) {\n return '';\n } else if (options.pretty) {\n indentLevel = (level || 0) + options.offset + 1;\n if (indentLevel > 0) {\n return new Array(indentLevel).join(options.indent);\n }\n }\n return '';\n };\n\n XMLWriterBase.prototype.endline = function(node, options, level) {\n if (!options.pretty || options.suppressPrettyCount) {\n return '';\n } else {\n return options.newline;\n }\n };\n\n XMLWriterBase.prototype.attribute = function(att, options, level) {\n var r;\n this.openAttribute(att, options, level);\n r = ' ' + att.name + '=\"' + att.value + '\"';\n this.closeAttribute(att, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.cdata = function(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level) + '<![CDATA[';\n options.state = WriterState.InsideTag;\n r += node.value;\n options.state = WriterState.CloseTag;\n r += ']]>' + this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.comment = function(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level) + '<!-- ';\n options.state = WriterState.InsideTag;\n r += node.value;\n options.state = WriterState.CloseTag;\n r += ' -->' + this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.declaration = function(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level) + '<?xml';\n options.state = WriterState.InsideTag;\n r += ' version=\"' + node.version + '\"';\n if (node.encoding != null) {\n r += ' encoding=\"' + node.encoding + '\"';\n }\n if (node.standalone != null) {\n r += ' standalone=\"' + node.standalone + '\"';\n }\n options.state = WriterState.CloseTag;\n r += options.spaceBeforeSlash + '?>';\n r += this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.docType = function(node, options, level) {\n var child, i, len, r, ref;\n level || (level = 0);\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level);\n r += '<!DOCTYPE ' + node.root().name;\n if (node.pubID && node.sysID) {\n r += ' PUBLIC \"' + node.pubID + '\" \"' + node.sysID + '\"';\n } else if (node.sysID) {\n r += ' SYSTEM \"' + node.sysID + '\"';\n }\n if (node.children.length > 0) {\n r += ' [';\n r += this.endline(node, options, level);\n options.state = WriterState.InsideTag;\n ref = node.children;\n for (i = 0, len = ref.length; i < len; i++) {\n child = ref[i];\n r += this.writeChildNode(child, options, level + 1);\n }\n options.state = WriterState.CloseTag;\n r += ']';\n }\n options.state = WriterState.CloseTag;\n r += options.spaceBeforeSlash + '>';\n r += this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.element = function(node, options, level) {\n var att, child, childNodeCount, firstChildNode, i, j, len, len1, name, prettySuppressed, r, ref, ref1, ref2;\n level || (level = 0);\n prettySuppressed = false;\n r = '';\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r += this.indent(node, options, level) + '<' + node.name;\n ref = node.attribs;\n for (name in ref) {\n if (!hasProp.call(ref, name)) continue;\n att = ref[name];\n r += this.attribute(att, options, level);\n }\n childNodeCount = node.children.length;\n firstChildNode = childNodeCount === 0 ? null : node.children[0];\n if (childNodeCount === 0 || node.children.every(function(e) {\n return (e.type === NodeType.Text || e.type === NodeType.Raw) && e.value === '';\n })) {\n if (options.allowEmpty) {\n r += '>';\n options.state = WriterState.CloseTag;\n r += '</' + node.name + '>' + this.endline(node, options, level);\n } else {\n options.state = WriterState.CloseTag;\n r += options.spaceBeforeSlash + '/>' + this.endline(node, options, level);\n }\n } else if (options.pretty && childNodeCount === 1 && (firstChildNode.type === NodeType.Text || firstChildNode.type === NodeType.Raw) && (firstChildNode.value != null)) {\n r += '>';\n options.state = WriterState.InsideTag;\n options.suppressPrettyCount++;\n prettySuppressed = true;\n r += this.writeChildNode(firstChildNode, options, level + 1);\n options.suppressPrettyCount--;\n prettySuppressed = false;\n options.state = WriterState.CloseTag;\n r += '</' + node.name + '>' + this.endline(node, options, level);\n } else {\n if (options.dontPrettyTextNodes) {\n ref1 = node.children;\n for (i = 0, len = ref1.length; i < len; i++) {\n child = ref1[i];\n if ((child.type === NodeType.Text || child.type === NodeType.Raw) && (child.value != null)) {\n options.suppressPrettyCount++;\n prettySuppressed = true;\n break;\n }\n }\n }\n r += '>' + this.endline(node, options, level);\n options.state = WriterState.InsideTag;\n ref2 = node.children;\n for (j = 0, len1 = ref2.length; j < len1; j++) {\n child = ref2[j];\n r += this.writeChildNode(child, options, level + 1);\n }\n options.state = WriterState.CloseTag;\n r += this.indent(node, options, level) + '</' + node.name + '>';\n if (prettySuppressed) {\n options.suppressPrettyCount--;\n }\n r += this.endline(node, options, level);\n options.state = WriterState.None;\n }\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.writeChildNode = function(node, options, level) {\n switch (node.type) {\n case NodeType.CData:\n return this.cdata(node, options, level);\n case NodeType.Comment:\n return this.comment(node, options, level);\n case NodeType.Element:\n return this.element(node, options, level);\n case NodeType.Raw:\n return this.raw(node, options, level);\n case NodeType.Text:\n return this.text(node, options, level);\n case NodeType.ProcessingInstruction:\n return this.processingInstruction(node, options, level);\n case NodeType.Dummy:\n return '';\n case NodeType.Declaration:\n return this.declaration(node, options, level);\n case NodeType.DocType:\n return this.docType(node, options, level);\n case NodeType.AttributeDeclaration:\n return this.dtdAttList(node, options, level);\n case NodeType.ElementDeclaration:\n return this.dtdElement(node, options, level);\n case NodeType.EntityDeclaration:\n return this.dtdEntity(node, options, level);\n case NodeType.NotationDeclaration:\n return this.dtdNotation(node, options, level);\n default:\n throw new Error(\"Unknown XML node type: \" + node.constructor.name);\n }\n };\n\n XMLWriterBase.prototype.processingInstruction = function(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level) + '<?';\n options.state = WriterState.InsideTag;\n r += node.target;\n if (node.value) {\n r += ' ' + node.value;\n }\n options.state = WriterState.CloseTag;\n r += options.spaceBeforeSlash + '?>';\n r += this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.raw = function(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level);\n options.state = WriterState.InsideTag;\n r += node.value;\n options.state = WriterState.CloseTag;\n r += this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.text = function(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level);\n options.state = WriterState.InsideTag;\n r += node.value;\n options.state = WriterState.CloseTag;\n r += this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.dtdAttList = function(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level) + '<!ATTLIST';\n options.state = WriterState.InsideTag;\n r += ' ' + node.elementName + ' ' + node.attributeName + ' ' + node.attributeType;\n if (node.defaultValueType !== '#DEFAULT') {\n r += ' ' + node.defaultValueType;\n }\n if (node.defaultValue) {\n r += ' \"' + node.defaultValue + '\"';\n }\n options.state = WriterState.CloseTag;\n r += options.spaceBeforeSlash + '>' + this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.dtdElement = function(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level) + '<!ELEMENT';\n options.state = WriterState.InsideTag;\n r += ' ' + node.name + ' ' + node.value;\n options.state = WriterState.CloseTag;\n r += options.spaceBeforeSlash + '>' + this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.dtdEntity = function(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level) + '<!ENTITY';\n options.state = WriterState.InsideTag;\n if (node.pe) {\n r += ' %';\n }\n r += ' ' + node.name;\n if (node.value) {\n r += ' \"' + node.value + '\"';\n } else {\n if (node.pubID && node.sysID) {\n r += ' PUBLIC \"' + node.pubID + '\" \"' + node.sysID + '\"';\n } else if (node.sysID) {\n r += ' SYSTEM \"' + node.sysID + '\"';\n }\n if (node.nData) {\n r += ' NDATA ' + node.nData;\n }\n }\n options.state = WriterState.CloseTag;\n r += options.spaceBeforeSlash + '>' + this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.dtdNotation = function(node, options, level) {\n var r;\n this.openNode(node, options, level);\n options.state = WriterState.OpenTag;\n r = this.indent(node, options, level) + '<!NOTATION';\n options.state = WriterState.InsideTag;\n r += ' ' + node.name;\n if (node.pubID && node.sysID) {\n r += ' PUBLIC \"' + node.pubID + '\" \"' + node.sysID + '\"';\n } else if (node.pubID) {\n r += ' PUBLIC \"' + node.pubID + '\"';\n } else if (node.sysID) {\n r += ' SYSTEM \"' + node.sysID + '\"';\n }\n options.state = WriterState.CloseTag;\n r += options.spaceBeforeSlash + '>' + this.endline(node, options, level);\n options.state = WriterState.None;\n this.closeNode(node, options, level);\n return r;\n };\n\n XMLWriterBase.prototype.openNode = function(node, options, level) {};\n\n XMLWriterBase.prototype.closeNode = function(node, options, level) {};\n\n XMLWriterBase.prototype.openAttribute = function(att, options, level) {};\n\n XMLWriterBase.prototype.closeAttribute = function(att, options, level) {};\n\n return XMLWriterBase;\n\n })();\n\n}).call(this);\n","// Generated by CoffeeScript 1.12.7\n(function() {\n var NodeType, WriterState, XMLDOMImplementation, XMLDocument, XMLDocumentCB, XMLStreamWriter, XMLStringWriter, assign, isFunction, ref;\n\n ref = require('./Utility'), assign = ref.assign, isFunction = ref.isFunction;\n\n XMLDOMImplementation = require('./XMLDOMImplementation');\n\n XMLDocument = require('./XMLDocument');\n\n XMLDocumentCB = require('./XMLDocumentCB');\n\n XMLStringWriter = require('./XMLStringWriter');\n\n XMLStreamWriter = require('./XMLStreamWriter');\n\n NodeType = require('./NodeType');\n\n WriterState = require('./WriterState');\n\n module.exports.create = function(name, xmldec, doctype, options) {\n var doc, root;\n if (name == null) {\n throw new Error(\"Root element needs a name.\");\n }\n options = assign({}, xmldec, doctype, options);\n doc = new XMLDocument(options);\n root = doc.element(name);\n if (!options.headless) {\n doc.declaration(options);\n if ((options.pubID != null) || (options.sysID != null)) {\n doc.dtd(options);\n }\n }\n return root;\n };\n\n module.exports.begin = function(options, onData, onEnd) {\n var ref1;\n if (isFunction(options)) {\n ref1 = [options, onData], onData = ref1[0], onEnd = ref1[1];\n options = {};\n }\n if (onData) {\n return new XMLDocumentCB(options, onData, onEnd);\n } else {\n return new XMLDocument(options);\n }\n };\n\n module.exports.stringWriter = function(options) {\n return new XMLStringWriter(options);\n };\n\n module.exports.streamWriter = function(stream, options) {\n return new XMLStreamWriter(stream, options);\n };\n\n module.exports.implementation = new XMLDOMImplementation();\n\n module.exports.nodeType = NodeType;\n\n module.exports.writerState = WriterState;\n\n}).call(this);\n","export var PJD_3PARAM = 1;\nexport var PJD_7PARAM = 2;\nexport var PJD_WGS84 = 4; // WGS84 or equivalent\nexport var PJD_NODATUM = 5; // WGS84 or equivalent\nexport var SEC_TO_RAD = 4.84813681109535993589914102357e-6;\nexport var HALF_PI = Math.PI/2;\n// ellipoid pj_set_ell.c\nexport var SIXTH = 0.1666666666666666667;\n/* 1/6 */\nexport var RA4 = 0.04722222222222222222;\n/* 17/360 */\nexport var RA6 = 0.02215608465608465608;\nexport var EPSLN = 1.0e-10;\n// you'd think you could use Number.EPSILON above but that makes\n// Mollweide get into an infinate loop.\n\nexport var D2R = 0.01745329251994329577;\nexport var R2D = 57.29577951308232088;\nexport var FORTPI = Math.PI/4;\nexport var TWO_PI = Math.PI * 2;\n// SPI is slightly greater than Math.PI, so values that exceed the -180..180\n// degree range by a tiny amount don't get wrapped. This prevents points that\n// have drifted from their original location along the 180th meridian (due to\n// floating point error) from changing their sign.\nexport var SPI = 3.14159265359;\n","var exports = {};\nexport {exports as default};\n\nexports.greenwich = 0.0; //\"0dE\",\nexports.lisbon = -9.131906111111; //\"9d07'54.862\\\"W\",\nexports.paris = 2.337229166667; //\"2d20'14.025\\\"E\",\nexports.bogota = -74.080916666667; //\"74d04'51.3\\\"W\",\nexports.madrid = -3.687938888889; //\"3d41'16.58\\\"W\",\nexports.rome = 12.452333333333; //\"12d27'8.4\\\"E\",\nexports.bern = 7.439583333333; //\"7d26'22.5\\\"E\",\nexports.jakarta = 106.807719444444; //\"106d48'27.79\\\"E\",\nexports.ferro = -17.666666666667; //\"17d40'W\",\nexports.brussels = 4.367975; //\"4d22'4.71\\\"E\",\nexports.stockholm = 18.058277777778; //\"18d3'29.8\\\"E\",\nexports.athens = 23.7163375; //\"23d42'58.815\\\"E\",\nexports.oslo = 10.722916666667; //\"10d43'22.5\\\"E\"\n","export default {\n ft: {to_meter: 0.3048},\n 'us-ft': {to_meter: 1200 / 3937}\n};\n","var ignoredChar = /[\\s_\\-\\/\\(\\)]/g;\nexport default function match(obj, key) {\n if (obj[key]) {\n return obj[key];\n }\n var keys = Object.keys(obj);\n var lkey = key.toLowerCase().replace(ignoredChar, '');\n var i = -1;\n var testkey, processedKey;\n while (++i < keys.length) {\n testkey = keys[i];\n processedKey = testkey.toLowerCase().replace(ignoredChar, '');\n if (processedKey === lkey) {\n return obj[testkey];\n }\n }\n}\n","import {D2R} from './constants/values';\nimport PrimeMeridian from './constants/PrimeMeridian';\nimport units from './constants/units';\nimport match from './match';\n\nexport default function(defData) {\n var self = {};\n var paramObj = defData.split('+').map(function(v) {\n return v.trim();\n }).filter(function(a) {\n return a;\n }).reduce(function(p, a) {\n var split = a.split('=');\n split.push(true);\n p[split[0].toLowerCase()] = split[1];\n return p;\n }, {});\n var paramName, paramVal, paramOutname;\n var params = {\n proj: 'projName',\n datum: 'datumCode',\n rf: function(v) {\n self.rf = parseFloat(v);\n },\n lat_0: function(v) {\n self.lat0 = v * D2R;\n },\n lat_1: function(v) {\n self.lat1 = v * D2R;\n },\n lat_2: function(v) {\n self.lat2 = v * D2R;\n },\n lat_ts: function(v) {\n self.lat_ts = v * D2R;\n },\n lon_0: function(v) {\n self.long0 = v * D2R;\n },\n lon_1: function(v) {\n self.long1 = v * D2R;\n },\n lon_2: function(v) {\n self.long2 = v * D2R;\n },\n alpha: function(v) {\n self.alpha = parseFloat(v) * D2R;\n },\n lonc: function(v) {\n self.longc = v * D2R;\n },\n x_0: function(v) {\n self.x0 = parseFloat(v);\n },\n y_0: function(v) {\n self.y0 = parseFloat(v);\n },\n k_0: function(v) {\n self.k0 = parseFloat(v);\n },\n k: function(v) {\n self.k0 = parseFloat(v);\n },\n a: function(v) {\n self.a = parseFloat(v);\n },\n b: function(v) {\n self.b = parseFloat(v);\n },\n r_a: function() {\n self.R_A = true;\n },\n zone: function(v) {\n self.zone = parseInt(v, 10);\n },\n south: function() {\n self.utmSouth = true;\n },\n towgs84: function(v) {\n self.datum_params = v.split(\",\").map(function(a) {\n return parseFloat(a);\n });\n },\n to_meter: function(v) {\n self.to_meter = parseFloat(v);\n },\n units: function(v) {\n self.units = v;\n var unit = match(units, v);\n if (unit) {\n self.to_meter = unit.to_meter;\n }\n },\n from_greenwich: function(v) {\n self.from_greenwich = v * D2R;\n },\n pm: function(v) {\n var pm = match(PrimeMeridian, v);\n self.from_greenwich = (pm ? pm : parseFloat(v)) * D2R;\n },\n nadgrids: function(v) {\n if (v === '@null') {\n self.datumCode = 'none';\n }\n else {\n self.nadgrids = v;\n }\n },\n axis: function(v) {\n var legalAxis = \"ewnsud\";\n if (v.length === 3 && legalAxis.indexOf(v.substr(0, 1)) !== -1 && legalAxis.indexOf(v.substr(1, 1)) !== -1 && legalAxis.indexOf(v.substr(2, 1)) !== -1) {\n self.axis = v;\n }\n }\n };\n for (paramName in paramObj) {\n paramVal = paramObj[paramName];\n if (paramName in params) {\n paramOutname = params[paramName];\n if (typeof paramOutname === 'function') {\n paramOutname(paramVal);\n }\n else {\n self[paramOutname] = paramVal;\n }\n }\n else {\n self[paramName] = paramVal;\n }\n }\n if(typeof self.datumCode === 'string' && self.datumCode !== \"WGS84\"){\n self.datumCode = self.datumCode.toLowerCase();\n }\n return self;\n}\n","export default parseString;\n\nvar NEUTRAL = 1;\nvar KEYWORD = 2;\nvar NUMBER = 3;\nvar QUOTED = 4;\nvar AFTERQUOTE = 5;\nvar ENDED = -1;\nvar whitespace = /\\s/;\nvar latin = /[A-Za-z]/;\nvar keyword = /[A-Za-z84]/;\nvar endThings = /[,\\]]/;\nvar digets = /[\\d\\.E\\-\\+]/;\n// const ignoredChar = /[\\s_\\-\\/\\(\\)]/g;\nfunction Parser(text) {\n if (typeof text !== 'string') {\n throw new Error('not a string');\n }\n this.text = text.trim();\n this.level = 0;\n this.place = 0;\n this.root = null;\n this.stack = [];\n this.currentObject = null;\n this.state = NEUTRAL;\n}\nParser.prototype.readCharicter = function() {\n var char = this.text[this.place++];\n if (this.state !== QUOTED) {\n while (whitespace.test(char)) {\n if (this.place >= this.text.length) {\n return;\n }\n char = this.text[this.place++];\n }\n }\n switch (this.state) {\n case NEUTRAL:\n return this.neutral(char);\n case KEYWORD:\n return this.keyword(char)\n case QUOTED:\n return this.quoted(char);\n case AFTERQUOTE:\n return this.afterquote(char);\n case NUMBER:\n return this.number(char);\n case ENDED:\n return;\n }\n};\nParser.prototype.afterquote = function(char) {\n if (char === '\"') {\n this.word += '\"';\n this.state = QUOTED;\n return;\n }\n if (endThings.test(char)) {\n this.word = this.word.trim();\n this.afterItem(char);\n return;\n }\n throw new Error('havn\\'t handled \"' +char + '\" in afterquote yet, index ' + this.place);\n};\nParser.prototype.afterItem = function(char) {\n if (char === ',') {\n if (this.word !== null) {\n this.currentObject.push(this.word);\n }\n this.word = null;\n this.state = NEUTRAL;\n return;\n }\n if (char === ']') {\n this.level--;\n if (this.word !== null) {\n this.currentObject.push(this.word);\n this.word = null;\n }\n this.state = NEUTRAL;\n this.currentObject = this.stack.pop();\n if (!this.currentObject) {\n this.state = ENDED;\n }\n\n return;\n }\n};\nParser.prototype.number = function(char) {\n if (digets.test(char)) {\n this.word += char;\n return;\n }\n if (endThings.test(char)) {\n this.word = parseFloat(this.word);\n this.afterItem(char);\n return;\n }\n throw new Error('havn\\'t handled \"' +char + '\" in number yet, index ' + this.place);\n};\nParser.prototype.quoted = function(char) {\n if (char === '\"') {\n this.state = AFTERQUOTE;\n return;\n }\n this.word += char;\n return;\n};\nParser.prototype.keyword = function(char) {\n if (keyword.test(char)) {\n this.word += char;\n return;\n }\n if (char === '[') {\n var newObjects = [];\n newObjects.push(this.word);\n this.level++;\n if (this.root === null) {\n this.root = newObjects;\n } else {\n this.currentObject.push(newObjects);\n }\n this.stack.push(this.currentObject);\n this.currentObject = newObjects;\n this.state = NEUTRAL;\n return;\n }\n if (endThings.test(char)) {\n this.afterItem(char);\n return;\n }\n throw new Error('havn\\'t handled \"' +char + '\" in keyword yet, index ' + this.place);\n};\nParser.prototype.neutral = function(char) {\n if (latin.test(char)) {\n this.word = char;\n this.state = KEYWORD;\n return;\n }\n if (char === '\"') {\n this.word = '';\n this.state = QUOTED;\n return;\n }\n if (digets.test(char)) {\n this.word = char;\n this.state = NUMBER;\n return;\n }\n if (endThings.test(char)) {\n this.afterItem(char);\n return;\n }\n throw new Error('havn\\'t handled \"' +char + '\" in neutral yet, index ' + this.place);\n};\nParser.prototype.output = function() {\n while (this.place < this.text.length) {\n this.readCharicter();\n }\n if (this.state === ENDED) {\n return this.root;\n }\n throw new Error('unable to parse string \"' +this.text + '\". State is ' + this.state);\n};\n\nfunction parseString(txt) {\n var parser = new Parser(txt);\n return parser.output();\n}\n","\n\nfunction mapit(obj, key, value) {\n if (Array.isArray(key)) {\n value.unshift(key);\n key = null;\n }\n var thing = key ? {} : obj;\n\n var out = value.reduce(function(newObj, item) {\n sExpr(item, newObj);\n return newObj\n }, thing);\n if (key) {\n obj[key] = out;\n }\n}\n\nexport function sExpr(v, obj) {\n if (!Array.isArray(v)) {\n obj[v] = true;\n return;\n }\n var key = v.shift();\n if (key === 'PARAMETER') {\n key = v.shift();\n }\n if (v.length === 1) {\n if (Array.isArray(v[0])) {\n obj[key] = {};\n sExpr(v[0], obj[key]);\n return;\n }\n obj[key] = v[0];\n return;\n }\n if (!v.length) {\n obj[key] = true;\n return;\n }\n if (key === 'TOWGS84') {\n obj[key] = v;\n return;\n }\n if (key === 'AXIS') {\n if (!(key in obj)) {\n obj[key] = [];\n }\n obj[key].push(v);\n return;\n }\n if (!Array.isArray(key)) {\n obj[key] = {};\n }\n\n var i;\n switch (key) {\n case 'UNIT':\n case 'PRIMEM':\n case 'VERT_DATUM':\n obj[key] = {\n name: v[0].toLowerCase(),\n convert: v[1]\n };\n if (v.length === 3) {\n sExpr(v[2], obj[key]);\n }\n return;\n case 'SPHEROID':\n case 'ELLIPSOID':\n obj[key] = {\n name: v[0],\n a: v[1],\n rf: v[2]\n };\n if (v.length === 4) {\n sExpr(v[3], obj[key]);\n }\n return;\n case 'PROJECTEDCRS':\n case 'PROJCRS':\n case 'GEOGCS':\n case 'GEOCCS':\n case 'PROJCS':\n case 'LOCAL_CS':\n case 'GEODCRS':\n case 'GEODETICCRS':\n case 'GEODETICDATUM':\n case 'EDATUM':\n case 'ENGINEERINGDATUM':\n case 'VERT_CS':\n case 'VERTCRS':\n case 'VERTICALCRS':\n case 'COMPD_CS':\n case 'COMPOUNDCRS':\n case 'ENGINEERINGCRS':\n case 'ENGCRS':\n case 'FITTED_CS':\n case 'LOCAL_DATUM':\n case 'DATUM':\n v[0] = ['name', v[0]];\n mapit(obj, key, v);\n return;\n default:\n i = -1;\n while (++i < v.length) {\n if (!Array.isArray(v[i])) {\n return sExpr(v, obj[key]);\n }\n }\n return mapit(obj, key, v);\n }\n}\n","var D2R = 0.01745329251994329577;\nimport parser from './parser';\nimport {sExpr} from './process';\n\n\n\nfunction rename(obj, params) {\n var outName = params[0];\n var inName = params[1];\n if (!(outName in obj) && (inName in obj)) {\n obj[outName] = obj[inName];\n if (params.length === 3) {\n obj[outName] = params[2](obj[outName]);\n }\n }\n}\n\nfunction d2r(input) {\n return input * D2R;\n}\n\nfunction cleanWKT(wkt) {\n if (wkt.type === 'GEOGCS') {\n wkt.projName = 'longlat';\n } else if (wkt.type === 'LOCAL_CS') {\n wkt.projName = 'identity';\n wkt.local = true;\n } else {\n if (typeof wkt.PROJECTION === 'object') {\n wkt.projName = Object.keys(wkt.PROJECTION)[0];\n } else {\n wkt.projName = wkt.PROJECTION;\n }\n }\n if (wkt.AXIS) {\n var axisOrder = '';\n for (var i = 0, ii = wkt.AXIS.length; i < ii; ++i) {\n var axis = wkt.AXIS[i];\n var descriptor = axis[0].toLowerCase();\n if (descriptor.indexOf('north') !== -1) {\n axisOrder += 'n';\n } else if (descriptor.indexOf('south') !== -1) {\n axisOrder += 's';\n } else if (descriptor.indexOf('east') !== -1) {\n axisOrder += 'e';\n } else if (descriptor.indexOf('west') !== -1) {\n axisOrder += 'w';\n }\n }\n if (axisOrder.length === 2) {\n axisOrder += 'u';\n }\n if (axisOrder.length === 3) {\n wkt.axis = axisOrder;\n }\n }\n if (wkt.UNIT) {\n wkt.units = wkt.UNIT.name.toLowerCase();\n if (wkt.units === 'metre') {\n wkt.units = 'meter';\n }\n if (wkt.UNIT.convert) {\n if (wkt.type === 'GEOGCS') {\n if (wkt.DATUM && wkt.DATUM.SPHEROID) {\n wkt.to_meter = wkt.UNIT.convert*wkt.DATUM.SPHEROID.a;\n }\n } else {\n wkt.to_meter = wkt.UNIT.convert;\n }\n }\n }\n var geogcs = wkt.GEOGCS;\n if (wkt.type === 'GEOGCS') {\n geogcs = wkt;\n }\n if (geogcs) {\n //if(wkt.GEOGCS.PRIMEM&&wkt.GEOGCS.PRIMEM.convert){\n // wkt.from_greenwich=wkt.GEOGCS.PRIMEM.convert*D2R;\n //}\n if (geogcs.DATUM) {\n wkt.datumCode = geogcs.DATUM.name.toLowerCase();\n } else {\n wkt.datumCode = geogcs.name.toLowerCase();\n }\n if (wkt.datumCode.slice(0, 2) === 'd_') {\n wkt.datumCode = wkt.datumCode.slice(2);\n }\n if (wkt.datumCode === 'new_zealand_geodetic_datum_1949' || wkt.datumCode === 'new_zealand_1949') {\n wkt.datumCode = 'nzgd49';\n }\n if (wkt.datumCode === 'wgs_1984' || wkt.datumCode === 'world_geodetic_system_1984') {\n if (wkt.PROJECTION === 'Mercator_Auxiliary_Sphere') {\n wkt.sphere = true;\n }\n wkt.datumCode = 'wgs84';\n }\n if (wkt.datumCode.slice(-6) === '_ferro') {\n wkt.datumCode = wkt.datumCode.slice(0, - 6);\n }\n if (wkt.datumCode.slice(-8) === '_jakarta') {\n wkt.datumCode = wkt.datumCode.slice(0, - 8);\n }\n if (~wkt.datumCode.indexOf('belge')) {\n wkt.datumCode = 'rnb72';\n }\n if (geogcs.DATUM && geogcs.DATUM.SPHEROID) {\n wkt.ellps = geogcs.DATUM.SPHEROID.name.replace('_19', '').replace(/[Cc]larke\\_18/, 'clrk');\n if (wkt.ellps.toLowerCase().slice(0, 13) === 'international') {\n wkt.ellps = 'intl';\n }\n\n wkt.a = geogcs.DATUM.SPHEROID.a;\n wkt.rf = parseFloat(geogcs.DATUM.SPHEROID.rf, 10);\n }\n\n if (geogcs.DATUM && geogcs.DATUM.TOWGS84) {\n wkt.datum_params = geogcs.DATUM.TOWGS84;\n }\n if (~wkt.datumCode.indexOf('osgb_1936')) {\n wkt.datumCode = 'osgb36';\n }\n if (~wkt.datumCode.indexOf('osni_1952')) {\n wkt.datumCode = 'osni52';\n }\n if (~wkt.datumCode.indexOf('tm65')\n || ~wkt.datumCode.indexOf('geodetic_datum_of_1965')) {\n wkt.datumCode = 'ire65';\n }\n if (wkt.datumCode === 'ch1903+') {\n wkt.datumCode = 'ch1903';\n }\n if (~wkt.datumCode.indexOf('israel')) {\n wkt.datumCode = 'isr93';\n }\n }\n if (wkt.b && !isFinite(wkt.b)) {\n wkt.b = wkt.a;\n }\n\n function toMeter(input) {\n var ratio = wkt.to_meter || 1;\n return input * ratio;\n }\n var renamer = function(a) {\n return rename(wkt, a);\n };\n var list = [\n ['standard_parallel_1', 'Standard_Parallel_1'],\n ['standard_parallel_2', 'Standard_Parallel_2'],\n ['false_easting', 'False_Easting'],\n ['false_northing', 'False_Northing'],\n ['central_meridian', 'Central_Meridian'],\n ['latitude_of_origin', 'Latitude_Of_Origin'],\n ['latitude_of_origin', 'Central_Parallel'],\n ['scale_factor', 'Scale_Factor'],\n ['k0', 'scale_factor'],\n ['latitude_of_center', 'Latitude_Of_Center'],\n ['latitude_of_center', 'Latitude_of_center'],\n ['lat0', 'latitude_of_center', d2r],\n ['longitude_of_center', 'Longitude_Of_Center'],\n ['longitude_of_center', 'Longitude_of_center'],\n ['longc', 'longitude_of_center', d2r],\n ['x0', 'false_easting', toMeter],\n ['y0', 'false_northing', toMeter],\n ['long0', 'central_meridian', d2r],\n ['lat0', 'latitude_of_origin', d2r],\n ['lat0', 'standard_parallel_1', d2r],\n ['lat1', 'standard_parallel_1', d2r],\n ['lat2', 'standard_parallel_2', d2r],\n ['azimuth', 'Azimuth'],\n ['alpha', 'azimuth', d2r],\n ['srsCode', 'name']\n ];\n list.forEach(renamer);\n if (!wkt.long0 && wkt.longc && (wkt.projName === 'Albers_Conic_Equal_Area' || wkt.projName === 'Lambert_Azimuthal_Equal_Area')) {\n wkt.long0 = wkt.longc;\n }\n if (!wkt.lat_ts && wkt.lat1 && (wkt.projName === 'Stereographic_South_Pole' || wkt.projName === 'Polar Stereographic (variant B)')) {\n wkt.lat0 = d2r(wkt.lat1 > 0 ? 90 : -90);\n wkt.lat_ts = wkt.lat1;\n }\n}\nexport default function(wkt) {\n var lisp = parser(wkt);\n var type = lisp.shift();\n var name = lisp.shift();\n lisp.unshift(['name', name]);\n lisp.unshift(['type', type]);\n var obj = {};\n sExpr(lisp, obj);\n cleanWKT(obj);\n return obj;\n}\n","import globals from './global';\nimport parseProj from './projString';\nimport wkt from 'wkt-parser';\n\nfunction defs(name) {\n /*global console*/\n var that = this;\n if (arguments.length === 2) {\n var def = arguments[1];\n if (typeof def === 'string') {\n if (def.charAt(0) === '+') {\n defs[name] = parseProj(arguments[1]);\n }\n else {\n defs[name] = wkt(arguments[1]);\n }\n } else {\n defs[name] = def;\n }\n }\n else if (arguments.length === 1) {\n if (Array.isArray(name)) {\n return name.map(function(v) {\n if (Array.isArray(v)) {\n defs.apply(that, v);\n }\n else {\n defs(v);\n }\n });\n }\n else if (typeof name === 'string') {\n if (name in defs) {\n return defs[name];\n }\n }\n else if ('EPSG' in name) {\n defs['EPSG:' + name.EPSG] = name;\n }\n else if ('ESRI' in name) {\n defs['ESRI:' + name.ESRI] = name;\n }\n else if ('IAU2000' in name) {\n defs['IAU2000:' + name.IAU2000] = name;\n }\n else {\n console.log(name);\n }\n return;\n }\n\n\n}\nglobals(defs);\nexport default defs;\n","export default function(defs) {\n defs('EPSG:4326', \"+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees\");\n defs('EPSG:4269', \"+title=NAD83 (long/lat) +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees\");\n defs('EPSG:3857', \"+title=WGS 84 / Pseudo-Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs\");\n\n defs.WGS84 = defs['EPSG:4326'];\n defs['EPSG:3785'] = defs['EPSG:3857']; // maintain backward compat, official code is 3857\n defs.GOOGLE = defs['EPSG:3857'];\n defs['EPSG:900913'] = defs['EPSG:3857'];\n defs['EPSG:102113'] = defs['EPSG:3857'];\n}\n","import defs from './defs';\nimport wkt from 'wkt-parser';\nimport projStr from './projString';\nimport match from './match';\nfunction testObj(code){\n return typeof code === 'string';\n}\nfunction testDef(code){\n return code in defs;\n}\n var codeWords = ['PROJECTEDCRS', 'PROJCRS', 'GEOGCS','GEOCCS','PROJCS','LOCAL_CS', 'GEODCRS', 'GEODETICCRS', 'GEODETICDATUM', 'ENGCRS', 'ENGINEERINGCRS'];\nfunction testWKT(code){\n return codeWords.some(function (word) {\n return code.indexOf(word) > -1;\n });\n}\nvar codes = ['3857', '900913', '3785', '102113'];\nfunction checkMercator(item) {\n var auth = match(item, 'authority');\n if (!auth) {\n return;\n }\n var code = match(auth, 'epsg');\n return code && codes.indexOf(code) > -1;\n}\nfunction checkProjStr(item) {\n var ext = match(item, 'extension');\n if (!ext) {\n return;\n }\n return match(ext, 'proj4');\n}\nfunction testProj(code){\n return code[0] === '+';\n}\nfunction parse(code){\n if (testObj(code)) {\n //check to see if this is a WKT string\n if (testDef(code)) {\n return defs[code];\n }\n if (testWKT(code)) {\n var out = wkt(code);\n // test of spetial case, due to this being a very common and often malformed\n if (checkMercator(out)) {\n return defs['EPSG:3857'];\n }\n var maybeProjStr = checkProjStr(out);\n if (maybeProjStr) {\n return projStr(maybeProjStr);\n }\n return out;\n }\n if (testProj(code)) {\n return projStr(code);\n }\n }else{\n return code;\n }\n}\n\nexport default parse;\n","export default function(destination, source) {\n destination = destination || {};\n var value, property;\n if (!source) {\n return destination;\n }\n for (property in source) {\n value = source[property];\n if (value !== undefined) {\n destination[property] = value;\n }\n }\n return destination;\n}\n","export default function(eccent, sinphi, cosphi) {\n var con = eccent * sinphi;\n return cosphi / (Math.sqrt(1 - con * con));\n}","export default function(x) {\n return x<0 ? -1 : 1;\n}","\nimport {TWO_PI, SPI} from '../constants/values';\nimport sign from './sign';\n\nexport default function(x) {\n return (Math.abs(x) <= SPI) ? x : (x - (sign(x) * TWO_PI));\n}\n","import {HALF_PI} from '../constants/values';\n\nexport default function(eccent, phi, sinphi) {\n var con = eccent * sinphi;\n var com = 0.5 * eccent;\n con = Math.pow(((1 - con) / (1 + con)), com);\n return (Math.tan(0.5 * (HALF_PI - phi)) / con);\n}\n","import {HALF_PI} from '../constants/values';\n\nexport default function(eccent, ts) {\n var eccnth = 0.5 * eccent;\n var con, dphi;\n var phi = HALF_PI - 2 * Math.atan(ts);\n for (var i = 0; i <= 15; i++) {\n con = eccent * Math.sin(phi);\n dphi = HALF_PI - 2 * Math.atan(ts * (Math.pow(((1 - con) / (1 + con)), eccnth))) - phi;\n phi += dphi;\n if (Math.abs(dphi) <= 0.0000000001) {\n return phi;\n }\n }\n //console.log(\"phi2z has NoConvergence\");\n return -9999;\n}\n","export function init() {\n //no-op for longlat\n}\n\nfunction identity(pt) {\n return pt;\n}\nexport {identity as forward};\nexport {identity as inverse};\nexport var names = [\"longlat\", \"identity\"];\nexport default {\n init: init,\n forward: identity,\n inverse: identity,\n names: names\n};\n","import merc from \"./projections/merc\";\nimport longlat from \"./projections/longlat\";\nvar projs = [merc, longlat];\nvar names = {};\nvar projStore = [];\n\nfunction add(proj, i) {\n var len = projStore.length;\n if (!proj.names) {\n console.log(i);\n return true;\n }\n projStore[len] = proj;\n proj.names.forEach(function(n) {\n names[n.toLowerCase()] = len;\n });\n return this;\n}\n\nexport {add};\n\nexport function get(name) {\n if (!name) {\n return false;\n }\n var n = name.toLowerCase();\n if (typeof names[n] !== 'undefined' && projStore[names[n]]) {\n return projStore[names[n]];\n }\n}\n\nexport function start() {\n projs.forEach(add);\n}\nexport default {\n start: start,\n add: add,\n get: get\n};\n","import msfnz from '../common/msfnz';\n\nimport adjust_lon from '../common/adjust_lon';\nimport tsfnz from '../common/tsfnz';\nimport phi2z from '../common/phi2z';\nimport {FORTPI, R2D, EPSLN, HALF_PI} from '../constants/values';\nexport function init() {\n var con = this.b / this.a;\n this.es = 1 - con * con;\n if(!('x0' in this)){\n this.x0 = 0;\n }\n if(!('y0' in this)){\n this.y0 = 0;\n }\n this.e = Math.sqrt(this.es);\n if (this.lat_ts) {\n if (this.sphere) {\n this.k0 = Math.cos(this.lat_ts);\n }\n else {\n this.k0 = msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts));\n }\n }\n else {\n if (!this.k0) {\n if (this.k) {\n this.k0 = this.k;\n }\n else {\n this.k0 = 1;\n }\n }\n }\n}\n\n/* Mercator forward equations--mapping lat,long to x,y\n --------------------------------------------------*/\n\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n // convert to radians\n if (lat * R2D > 90 && lat * R2D < -90 && lon * R2D > 180 && lon * R2D < -180) {\n return null;\n }\n\n var x, y;\n if (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN) {\n return null;\n }\n else {\n if (this.sphere) {\n x = this.x0 + this.a * this.k0 * adjust_lon(lon - this.long0);\n y = this.y0 + this.a * this.k0 * Math.log(Math.tan(FORTPI + 0.5 * lat));\n }\n else {\n var sinphi = Math.sin(lat);\n var ts = tsfnz(this.e, lat, sinphi);\n x = this.x0 + this.a * this.k0 * adjust_lon(lon - this.long0);\n y = this.y0 - this.a * this.k0 * Math.log(ts);\n }\n p.x = x;\n p.y = y;\n return p;\n }\n}\n\n/* Mercator inverse equations--mapping x,y to lat/long\n --------------------------------------------------*/\nexport function inverse(p) {\n\n var x = p.x - this.x0;\n var y = p.y - this.y0;\n var lon, lat;\n\n if (this.sphere) {\n lat = HALF_PI - 2 * Math.atan(Math.exp(-y / (this.a * this.k0)));\n }\n else {\n var ts = Math.exp(-y / (this.a * this.k0));\n lat = phi2z(this.e, ts);\n if (lat === -9999) {\n return null;\n }\n }\n lon = adjust_lon(this.long0 + x / (this.a * this.k0));\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"Mercator\", \"Popular Visualisation Pseudo Mercator\", \"Mercator_1SP\", \"Mercator_Auxiliary_Sphere\", \"merc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","var exports = {};\nexport {exports as default};\nexports.MERIT = {\n a: 6378137.0,\n rf: 298.257,\n ellipseName: \"MERIT 1983\"\n};\n\nexports.SGS85 = {\n a: 6378136.0,\n rf: 298.257,\n ellipseName: \"Soviet Geodetic System 85\"\n};\n\nexports.GRS80 = {\n a: 6378137.0,\n rf: 298.257222101,\n ellipseName: \"GRS 1980(IUGG, 1980)\"\n};\n\nexports.IAU76 = {\n a: 6378140.0,\n rf: 298.257,\n ellipseName: \"IAU 1976\"\n};\n\nexports.airy = {\n a: 6377563.396,\n b: 6356256.910,\n ellipseName: \"Airy 1830\"\n};\n\nexports.APL4 = {\n a: 6378137,\n rf: 298.25,\n ellipseName: \"Appl. Physics. 1965\"\n};\n\nexports.NWL9D = {\n a: 6378145.0,\n rf: 298.25,\n ellipseName: \"Naval Weapons Lab., 1965\"\n};\n\nexports.mod_airy = {\n a: 6377340.189,\n b: 6356034.446,\n ellipseName: \"Modified Airy\"\n};\n\nexports.andrae = {\n a: 6377104.43,\n rf: 300.0,\n ellipseName: \"Andrae 1876 (Den., Iclnd.)\"\n};\n\nexports.aust_SA = {\n a: 6378160.0,\n rf: 298.25,\n ellipseName: \"Australian Natl & S. Amer. 1969\"\n};\n\nexports.GRS67 = {\n a: 6378160.0,\n rf: 298.2471674270,\n ellipseName: \"GRS 67(IUGG 1967)\"\n};\n\nexports.bessel = {\n a: 6377397.155,\n rf: 299.1528128,\n ellipseName: \"Bessel 1841\"\n};\n\nexports.bess_nam = {\n a: 6377483.865,\n rf: 299.1528128,\n ellipseName: \"Bessel 1841 (Namibia)\"\n};\n\nexports.clrk66 = {\n a: 6378206.4,\n b: 6356583.8,\n ellipseName: \"Clarke 1866\"\n};\n\nexports.clrk80 = {\n a: 6378249.145,\n rf: 293.4663,\n ellipseName: \"Clarke 1880 mod.\"\n};\n\nexports.clrk58 = {\n a: 6378293.645208759,\n rf: 294.2606763692654,\n ellipseName: \"Clarke 1858\"\n};\n\nexports.CPM = {\n a: 6375738.7,\n rf: 334.29,\n ellipseName: \"Comm. des Poids et Mesures 1799\"\n};\n\nexports.delmbr = {\n a: 6376428.0,\n rf: 311.5,\n ellipseName: \"Delambre 1810 (Belgium)\"\n};\n\nexports.engelis = {\n a: 6378136.05,\n rf: 298.2566,\n ellipseName: \"Engelis 1985\"\n};\n\nexports.evrst30 = {\n a: 6377276.345,\n rf: 300.8017,\n ellipseName: \"Everest 1830\"\n};\n\nexports.evrst48 = {\n a: 6377304.063,\n rf: 300.8017,\n ellipseName: \"Everest 1948\"\n};\n\nexports.evrst56 = {\n a: 6377301.243,\n rf: 300.8017,\n ellipseName: \"Everest 1956\"\n};\n\nexports.evrst69 = {\n a: 6377295.664,\n rf: 300.8017,\n ellipseName: \"Everest 1969\"\n};\n\nexports.evrstSS = {\n a: 6377298.556,\n rf: 300.8017,\n ellipseName: \"Everest (Sabah & Sarawak)\"\n};\n\nexports.fschr60 = {\n a: 6378166.0,\n rf: 298.3,\n ellipseName: \"Fischer (Mercury Datum) 1960\"\n};\n\nexports.fschr60m = {\n a: 6378155.0,\n rf: 298.3,\n ellipseName: \"Fischer 1960\"\n};\n\nexports.fschr68 = {\n a: 6378150.0,\n rf: 298.3,\n ellipseName: \"Fischer 1968\"\n};\n\nexports.helmert = {\n a: 6378200.0,\n rf: 298.3,\n ellipseName: \"Helmert 1906\"\n};\n\nexports.hough = {\n a: 6378270.0,\n rf: 297.0,\n ellipseName: \"Hough\"\n};\n\nexports.intl = {\n a: 6378388.0,\n rf: 297.0,\n ellipseName: \"International 1909 (Hayford)\"\n};\n\nexports.kaula = {\n a: 6378163.0,\n rf: 298.24,\n ellipseName: \"Kaula 1961\"\n};\n\nexports.lerch = {\n a: 6378139.0,\n rf: 298.257,\n ellipseName: \"Lerch 1979\"\n};\n\nexports.mprts = {\n a: 6397300.0,\n rf: 191.0,\n ellipseName: \"Maupertius 1738\"\n};\n\nexports.new_intl = {\n a: 6378157.5,\n b: 6356772.2,\n ellipseName: \"New International 1967\"\n};\n\nexports.plessis = {\n a: 6376523.0,\n rf: 6355863.0,\n ellipseName: \"Plessis 1817 (France)\"\n};\n\nexports.krass = {\n a: 6378245.0,\n rf: 298.3,\n ellipseName: \"Krassovsky, 1942\"\n};\n\nexports.SEasia = {\n a: 6378155.0,\n b: 6356773.3205,\n ellipseName: \"Southeast Asia\"\n};\n\nexports.walbeck = {\n a: 6376896.0,\n b: 6355834.8467,\n ellipseName: \"Walbeck\"\n};\n\nexports.WGS60 = {\n a: 6378165.0,\n rf: 298.3,\n ellipseName: \"WGS 60\"\n};\n\nexports.WGS66 = {\n a: 6378145.0,\n rf: 298.25,\n ellipseName: \"WGS 66\"\n};\n\nexports.WGS7 = {\n a: 6378135.0,\n rf: 298.26,\n ellipseName: \"WGS 72\"\n};\n\nexport var WGS84 = exports.WGS84 = {\n a: 6378137.0,\n rf: 298.257223563,\n ellipseName: \"WGS 84\"\n};\n\nexports.sphere = {\n a: 6370997.0,\n b: 6370997.0,\n ellipseName: \"Normal Sphere (r=6370997)\"\n};\n","var exports = {};\nexport {exports as default};\nexports.wgs84 = {\n towgs84: \"0,0,0\",\n ellipse: \"WGS84\",\n datumName: \"WGS84\"\n};\n\nexports.ch1903 = {\n towgs84: \"674.374,15.056,405.346\",\n ellipse: \"bessel\",\n datumName: \"swiss\"\n};\n\nexports.ggrs87 = {\n towgs84: \"-199.87,74.79,246.62\",\n ellipse: \"GRS80\",\n datumName: \"Greek_Geodetic_Reference_System_1987\"\n};\n\nexports.nad83 = {\n towgs84: \"0,0,0\",\n ellipse: \"GRS80\",\n datumName: \"North_American_Datum_1983\"\n};\n\nexports.nad27 = {\n nadgrids: \"@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat\",\n ellipse: \"clrk66\",\n datumName: \"North_American_Datum_1927\"\n};\n\nexports.potsdam = {\n towgs84: \"606.0,23.0,413.0\",\n ellipse: \"bessel\",\n datumName: \"Potsdam Rauenberg 1950 DHDN\"\n};\n\nexports.carthage = {\n towgs84: \"-263.0,6.0,431.0\",\n ellipse: \"clark80\",\n datumName: \"Carthage 1934 Tunisia\"\n};\n\nexports.hermannskogel = {\n towgs84: \"653.0,-212.0,449.0\",\n ellipse: \"bessel\",\n datumName: \"Hermannskogel\"\n};\n\nexports.osni52 = {\n towgs84: \"482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15\",\n ellipse: \"airy\",\n datumName: \"Irish National\"\n};\n\nexports.ire65 = {\n towgs84: \"482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15\",\n ellipse: \"mod_airy\",\n datumName: \"Ireland 1965\"\n};\n\nexports.rassadiran = {\n towgs84: \"-133.63,-157.5,-158.62\",\n ellipse: \"intl\",\n datumName: \"Rassadiran\"\n};\n\nexports.nzgd49 = {\n towgs84: \"59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993\",\n ellipse: \"intl\",\n datumName: \"New Zealand Geodetic Datum 1949\"\n};\n\nexports.osgb36 = {\n towgs84: \"446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894\",\n ellipse: \"airy\",\n datumName: \"Airy 1830\"\n};\n\nexports.s_jtsk = {\n towgs84: \"589,76,480\",\n ellipse: 'bessel',\n datumName: 'S-JTSK (Ferro)'\n};\n\nexports.beduaram = {\n towgs84: '-106,-87,188',\n ellipse: 'clrk80',\n datumName: 'Beduaram'\n};\n\nexports.gunung_segara = {\n towgs84: '-403,684,41',\n ellipse: 'bessel',\n datumName: 'Gunung Segara Jakarta'\n};\n\nexports.rnb72 = {\n towgs84: \"106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1\",\n ellipse: \"intl\",\n datumName: \"Reseau National Belge 1972\"\n};\n","import parseCode from './parseCode';\nimport extend from './extend';\nimport projections from './projections';\nimport {sphere as dc_sphere, eccentricity as dc_eccentricity} from './deriveConstants';\nimport Datum from './constants/Datum';\nimport datum from './datum';\nimport match from './match';\n\nfunction Projection(srsCode,callback) {\n if (!(this instanceof Projection)) {\n return new Projection(srsCode);\n }\n callback = callback || function(error){\n if(error){\n throw error;\n }\n };\n var json = parseCode(srsCode);\n if(typeof json !== 'object'){\n callback(srsCode);\n return;\n }\n var ourProj = Projection.projections.get(json.projName);\n if(!ourProj){\n callback(srsCode);\n return;\n }\n if (json.datumCode && json.datumCode !== 'none') {\n var datumDef = match(Datum, json.datumCode);\n if (datumDef) {\n json.datum_params = datumDef.towgs84 ? datumDef.towgs84.split(',') : null;\n json.ellps = datumDef.ellipse;\n json.datumName = datumDef.datumName ? datumDef.datumName : json.datumCode;\n }\n }\n json.k0 = json.k0 || 1.0;\n json.axis = json.axis || 'enu';\n json.ellps = json.ellps || 'wgs84';\n var sphere_ = dc_sphere(json.a, json.b, json.rf, json.ellps, json.sphere);\n var ecc = dc_eccentricity(sphere_.a, sphere_.b, sphere_.rf, json.R_A);\n var datumObj = json.datum || datum(json.datumCode, json.datum_params, sphere_.a, sphere_.b, ecc.es, ecc.ep2);\n\n extend(this, json); // transfer everything over from the projection because we don't know what we'll need\n extend(this, ourProj); // transfer all the methods from the projection\n\n // copy the 4 things over we calulated in deriveConstants.sphere\n this.a = sphere_.a;\n this.b = sphere_.b;\n this.rf = sphere_.rf;\n this.sphere = sphere_.sphere;\n\n // copy the 3 things we calculated in deriveConstants.eccentricity\n this.es = ecc.es;\n this.e = ecc.e;\n this.ep2 = ecc.ep2;\n\n // add in the datum object\n this.datum = datumObj;\n\n // init the projection\n this.init();\n\n // legecy callback from back in the day when it went to spatialreference.org\n callback(null, this);\n\n}\nProjection.projections = projections;\nProjection.projections.start();\nexport default Projection;\n","import {SIXTH, RA4, RA6, EPSLN} from './constants/values';\nimport {default as Ellipsoid, WGS84} from './constants/Ellipsoid';\nimport match from './match';\n\nexport function eccentricity(a, b, rf, R_A) {\n var a2 = a * a; // used in geocentric\n var b2 = b * b; // used in geocentric\n var es = (a2 - b2) / a2; // e ^ 2\n var e = 0;\n if (R_A) {\n a *= 1 - es * (SIXTH + es * (RA4 + es * RA6));\n a2 = a * a;\n es = 0;\n } else {\n e = Math.sqrt(es); // eccentricity\n }\n var ep2 = (a2 - b2) / b2; // used in geocentric\n return {\n es: es,\n e: e,\n ep2: ep2\n };\n}\nexport function sphere(a, b, rf, ellps, sphere) {\n if (!a) { // do we have an ellipsoid?\n var ellipse = match(Ellipsoid, ellps);\n if (!ellipse) {\n ellipse = WGS84;\n }\n a = ellipse.a;\n b = ellipse.b;\n rf = ellipse.rf;\n }\n\n if (rf && !b) {\n b = (1.0 - 1.0 / rf) * a;\n }\n if (rf === 0 || Math.abs(a - b) < EPSLN) {\n sphere = true;\n b = a;\n }\n return {\n a: a,\n b: b,\n rf: rf,\n sphere: sphere\n };\n}\n","import {PJD_3PARAM, PJD_7PARAM, PJD_WGS84, PJD_NODATUM, SEC_TO_RAD} from './constants/values';\n\nfunction datum(datumCode, datum_params, a, b, es, ep2) {\n var out = {};\n\n if (datumCode === undefined || datumCode === 'none') {\n out.datum_type = PJD_NODATUM;\n } else {\n out.datum_type = PJD_WGS84;\n }\n\n if (datum_params) {\n out.datum_params = datum_params.map(parseFloat);\n if (out.datum_params[0] !== 0 || out.datum_params[1] !== 0 || out.datum_params[2] !== 0) {\n out.datum_type = PJD_3PARAM;\n }\n if (out.datum_params.length > 3) {\n if (out.datum_params[3] !== 0 || out.datum_params[4] !== 0 || out.datum_params[5] !== 0 || out.datum_params[6] !== 0) {\n out.datum_type = PJD_7PARAM;\n out.datum_params[3] *= SEC_TO_RAD;\n out.datum_params[4] *= SEC_TO_RAD;\n out.datum_params[5] *= SEC_TO_RAD;\n out.datum_params[6] = (out.datum_params[6] / 1000000.0) + 1.0;\n }\n }\n }\n\n out.a = a; //datum object also uses these values\n out.b = b;\n out.es = es;\n out.ep2 = ep2;\n return out;\n}\n\nexport default datum;\n","'use strict';\nimport {PJD_3PARAM, PJD_7PARAM, HALF_PI} from './constants/values';\nexport function compareDatums(source, dest) {\n if (source.datum_type !== dest.datum_type) {\n return false; // false, datums are not equal\n } else if (source.a !== dest.a || Math.abs(source.es - dest.es) > 0.000000000050) {\n // the tolerance for es is to ensure that GRS80 and WGS84\n // are considered identical\n return false;\n } else if (source.datum_type === PJD_3PARAM) {\n return (source.datum_params[0] === dest.datum_params[0] && source.datum_params[1] === dest.datum_params[1] && source.datum_params[2] === dest.datum_params[2]);\n } else if (source.datum_type === PJD_7PARAM) {\n return (source.datum_params[0] === dest.datum_params[0] && source.datum_params[1] === dest.datum_params[1] && source.datum_params[2] === dest.datum_params[2] && source.datum_params[3] === dest.datum_params[3] && source.datum_params[4] === dest.datum_params[4] && source.datum_params[5] === dest.datum_params[5] && source.datum_params[6] === dest.datum_params[6]);\n } else {\n return true; // datums are equal\n }\n} // cs_compare_datums()\n\n/*\n * The function Convert_Geodetic_To_Geocentric converts geodetic coordinates\n * (latitude, longitude, and height) to geocentric coordinates (X, Y, Z),\n * according to the current ellipsoid parameters.\n *\n * Latitude : Geodetic latitude in radians (input)\n * Longitude : Geodetic longitude in radians (input)\n * Height : Geodetic height, in meters (input)\n * X : Calculated Geocentric X coordinate, in meters (output)\n * Y : Calculated Geocentric Y coordinate, in meters (output)\n * Z : Calculated Geocentric Z coordinate, in meters (output)\n *\n */\nexport function geodeticToGeocentric(p, es, a) {\n var Longitude = p.x;\n var Latitude = p.y;\n var Height = p.z ? p.z : 0; //Z value not always supplied\n\n var Rn; /* Earth radius at location */\n var Sin_Lat; /* Math.sin(Latitude) */\n var Sin2_Lat; /* Square of Math.sin(Latitude) */\n var Cos_Lat; /* Math.cos(Latitude) */\n\n /*\n ** Don't blow up if Latitude is just a little out of the value\n ** range as it may just be a rounding issue. Also removed longitude\n ** test, it should be wrapped by Math.cos() and Math.sin(). NFW for PROJ.4, Sep/2001.\n */\n if (Latitude < -HALF_PI && Latitude > -1.001 * HALF_PI) {\n Latitude = -HALF_PI;\n } else if (Latitude > HALF_PI && Latitude < 1.001 * HALF_PI) {\n Latitude = HALF_PI;\n } else if (Latitude < -HALF_PI) {\n /* Latitude out of range */\n //..reportError('geocent:lat out of range:' + Latitude);\n return { x: -Infinity, y: -Infinity, z: p.z };\n } else if (Latitude > HALF_PI) {\n /* Latitude out of range */\n return { x: Infinity, y: Infinity, z: p.z };\n }\n\n if (Longitude > Math.PI) {\n Longitude -= (2 * Math.PI);\n }\n Sin_Lat = Math.sin(Latitude);\n Cos_Lat = Math.cos(Latitude);\n Sin2_Lat = Sin_Lat * Sin_Lat;\n Rn = a / (Math.sqrt(1.0e0 - es * Sin2_Lat));\n return {\n x: (Rn + Height) * Cos_Lat * Math.cos(Longitude),\n y: (Rn + Height) * Cos_Lat * Math.sin(Longitude),\n z: ((Rn * (1 - es)) + Height) * Sin_Lat\n };\n} // cs_geodetic_to_geocentric()\n\nexport function geocentricToGeodetic(p, es, a, b) {\n /* local defintions and variables */\n /* end-criterium of loop, accuracy of sin(Latitude) */\n var genau = 1e-12;\n var genau2 = (genau * genau);\n var maxiter = 30;\n\n var P; /* distance between semi-minor axis and location */\n var RR; /* distance between center and location */\n var CT; /* sin of geocentric latitude */\n var ST; /* cos of geocentric latitude */\n var RX;\n var RK;\n var RN; /* Earth radius at location */\n var CPHI0; /* cos of start or old geodetic latitude in iterations */\n var SPHI0; /* sin of start or old geodetic latitude in iterations */\n var CPHI; /* cos of searched geodetic latitude */\n var SPHI; /* sin of searched geodetic latitude */\n var SDPHI; /* end-criterium: addition-theorem of sin(Latitude(iter)-Latitude(iter-1)) */\n var iter; /* # of continous iteration, max. 30 is always enough (s.a.) */\n\n var X = p.x;\n var Y = p.y;\n var Z = p.z ? p.z : 0.0; //Z value not always supplied\n var Longitude;\n var Latitude;\n var Height;\n\n P = Math.sqrt(X * X + Y * Y);\n RR = Math.sqrt(X * X + Y * Y + Z * Z);\n\n /* special cases for latitude and longitude */\n if (P / a < genau) {\n\n /* special case, if P=0. (X=0., Y=0.) */\n Longitude = 0.0;\n\n /* if (X,Y,Z)=(0.,0.,0.) then Height becomes semi-minor axis\n * of ellipsoid (=center of mass), Latitude becomes PI/2 */\n if (RR / a < genau) {\n Latitude = HALF_PI;\n Height = -b;\n return {\n x: p.x,\n y: p.y,\n z: p.z\n };\n }\n } else {\n /* ellipsoidal (geodetic) longitude\n * interval: -PI < Longitude <= +PI */\n Longitude = Math.atan2(Y, X);\n }\n\n /* --------------------------------------------------------------\n * Following iterative algorithm was developped by\n * \"Institut for Erdmessung\", University of Hannover, July 1988.\n * Internet: www.ife.uni-hannover.de\n * Iterative computation of CPHI,SPHI and Height.\n * Iteration of CPHI and SPHI to 10**-12 radian resp.\n * 2*10**-7 arcsec.\n * --------------------------------------------------------------\n */\n CT = Z / RR;\n ST = P / RR;\n RX = 1.0 / Math.sqrt(1.0 - es * (2.0 - es) * ST * ST);\n CPHI0 = ST * (1.0 - es) * RX;\n SPHI0 = CT * RX;\n iter = 0;\n\n /* loop to find sin(Latitude) resp. Latitude\n * until |sin(Latitude(iter)-Latitude(iter-1))| < genau */\n do {\n iter++;\n RN = a / Math.sqrt(1.0 - es * SPHI0 * SPHI0);\n\n /* ellipsoidal (geodetic) height */\n Height = P * CPHI0 + Z * SPHI0 - RN * (1.0 - es * SPHI0 * SPHI0);\n\n RK = es * RN / (RN + Height);\n RX = 1.0 / Math.sqrt(1.0 - RK * (2.0 - RK) * ST * ST);\n CPHI = ST * (1.0 - RK) * RX;\n SPHI = CT * RX;\n SDPHI = SPHI * CPHI0 - CPHI * SPHI0;\n CPHI0 = CPHI;\n SPHI0 = SPHI;\n }\n while (SDPHI * SDPHI > genau2 && iter < maxiter);\n\n /* ellipsoidal (geodetic) latitude */\n Latitude = Math.atan(SPHI / Math.abs(CPHI));\n return {\n x: Longitude,\n y: Latitude,\n z: Height\n };\n} // cs_geocentric_to_geodetic()\n\n/****************************************************************/\n// pj_geocentic_to_wgs84( p )\n// p = point to transform in geocentric coordinates (x,y,z)\n\n\n/** point object, nothing fancy, just allows values to be\n passed back and forth by reference rather than by value.\n Other point classes may be used as long as they have\n x and y properties, which will get modified in the transform method.\n*/\nexport function geocentricToWgs84(p, datum_type, datum_params) {\n\n if (datum_type === PJD_3PARAM) {\n // if( x[io] === HUGE_VAL )\n // continue;\n return {\n x: p.x + datum_params[0],\n y: p.y + datum_params[1],\n z: p.z + datum_params[2],\n };\n } else if (datum_type === PJD_7PARAM) {\n var Dx_BF = datum_params[0];\n var Dy_BF = datum_params[1];\n var Dz_BF = datum_params[2];\n var Rx_BF = datum_params[3];\n var Ry_BF = datum_params[4];\n var Rz_BF = datum_params[5];\n var M_BF = datum_params[6];\n // if( x[io] === HUGE_VAL )\n // continue;\n return {\n x: M_BF * (p.x - Rz_BF * p.y + Ry_BF * p.z) + Dx_BF,\n y: M_BF * (Rz_BF * p.x + p.y - Rx_BF * p.z) + Dy_BF,\n z: M_BF * (-Ry_BF * p.x + Rx_BF * p.y + p.z) + Dz_BF\n };\n }\n} // cs_geocentric_to_wgs84\n\n/****************************************************************/\n// pj_geocentic_from_wgs84()\n// coordinate system definition,\n// point to transform in geocentric coordinates (x,y,z)\nexport function geocentricFromWgs84(p, datum_type, datum_params) {\n\n if (datum_type === PJD_3PARAM) {\n //if( x[io] === HUGE_VAL )\n // continue;\n return {\n x: p.x - datum_params[0],\n y: p.y - datum_params[1],\n z: p.z - datum_params[2],\n };\n\n } else if (datum_type === PJD_7PARAM) {\n var Dx_BF = datum_params[0];\n var Dy_BF = datum_params[1];\n var Dz_BF = datum_params[2];\n var Rx_BF = datum_params[3];\n var Ry_BF = datum_params[4];\n var Rz_BF = datum_params[5];\n var M_BF = datum_params[6];\n var x_tmp = (p.x - Dx_BF) / M_BF;\n var y_tmp = (p.y - Dy_BF) / M_BF;\n var z_tmp = (p.z - Dz_BF) / M_BF;\n //if( x[io] === HUGE_VAL )\n // continue;\n\n return {\n x: x_tmp + Rz_BF * y_tmp - Ry_BF * z_tmp,\n y: -Rz_BF * x_tmp + y_tmp + Rx_BF * z_tmp,\n z: Ry_BF * x_tmp - Rx_BF * y_tmp + z_tmp\n };\n } //cs_geocentric_from_wgs84()\n}\n","import {PJD_3PARAM, PJD_7PARAM, PJD_NODATUM} from './constants/values';\n\nimport {geodeticToGeocentric, geocentricToGeodetic, geocentricToWgs84, geocentricFromWgs84, compareDatums} from './datumUtils';\nfunction checkParams(type) {\n return (type === PJD_3PARAM || type === PJD_7PARAM);\n}\n\nexport default function(source, dest, point) {\n // Short cut if the datums are identical.\n if (compareDatums(source, dest)) {\n return point; // in this case, zero is sucess,\n // whereas cs_compare_datums returns 1 to indicate TRUE\n // confusing, should fix this\n }\n\n // Explicitly skip datum transform by setting 'datum=none' as parameter for either source or dest\n if (source.datum_type === PJD_NODATUM || dest.datum_type === PJD_NODATUM) {\n return point;\n }\n\n // If this datum requires grid shifts, then apply it to geodetic coordinates.\n\n // Do we need to go through geocentric coordinates?\n if (source.es === dest.es && source.a === dest.a && !checkParams(source.datum_type) && !checkParams(dest.datum_type)) {\n return point;\n }\n\n // Convert to geocentric coordinates.\n point = geodeticToGeocentric(point, source.es, source.a);\n // Convert between datums\n if (checkParams(source.datum_type)) {\n point = geocentricToWgs84(point, source.datum_type, source.datum_params);\n }\n if (checkParams(dest.datum_type)) {\n point = geocentricFromWgs84(point, dest.datum_type, dest.datum_params);\n }\n return geocentricToGeodetic(point, dest.es, dest.a, dest.b);\n\n}\n","export default function(crs, denorm, point) {\n var xin = point.x,\n yin = point.y,\n zin = point.z || 0.0;\n var v, t, i;\n var out = {};\n for (i = 0; i < 3; i++) {\n if (denorm && i === 2 && point.z === undefined) {\n continue;\n }\n if (i === 0) {\n v = xin;\n if (\"ew\".indexOf(crs.axis[i]) !== -1) {\n t = 'x';\n } else {\n t = 'y';\n }\n\n }\n else if (i === 1) {\n v = yin;\n if (\"ns\".indexOf(crs.axis[i]) !== -1) {\n t = 'y';\n } else {\n t = 'x';\n }\n }\n else {\n v = zin;\n t = 'z';\n }\n switch (crs.axis[i]) {\n case 'e':\n out[t] = v;\n break;\n case 'w':\n out[t] = -v;\n break;\n case 'n':\n out[t] = v;\n break;\n case 's':\n out[t] = -v;\n break;\n case 'u':\n if (point[t] !== undefined) {\n out.z = v;\n }\n break;\n case 'd':\n if (point[t] !== undefined) {\n out.z = -v;\n }\n break;\n default:\n //console.log(\"ERROR: unknow axis (\"+crs.axis[i]+\") - check definition of \"+crs.projName);\n return null;\n }\n }\n return out;\n}\n","export default function (array){\n var out = {\n x: array[0],\n y: array[1]\n };\n if (array.length>2) {\n out.z = array[2];\n }\n if (array.length>3) {\n out.m = array[3];\n }\n return out;\n}","export default function (point) {\n checkCoord(point.x);\n checkCoord(point.y);\n}\nfunction checkCoord(num) {\n if (typeof Number.isFinite === 'function') {\n if (Number.isFinite(num)) {\n return;\n }\n throw new TypeError('coordinates must be finite numbers');\n }\n if (typeof num !== 'number' || num !== num || !isFinite(num)) {\n throw new TypeError('coordinates must be finite numbers');\n }\n}\n","import {D2R, R2D, PJD_3PARAM, PJD_7PARAM} from './constants/values';\nimport datum_transform from './datum_transform';\nimport adjust_axis from './adjust_axis';\nimport proj from './Proj';\nimport toPoint from './common/toPoint';\nimport checkSanity from './checkSanity';\n\nfunction checkNotWGS(source, dest) {\n return ((source.datum.datum_type === PJD_3PARAM || source.datum.datum_type === PJD_7PARAM) && dest.datumCode !== 'WGS84') || ((dest.datum.datum_type === PJD_3PARAM || dest.datum.datum_type === PJD_7PARAM) && source.datumCode !== 'WGS84');\n}\n\nexport default function transform(source, dest, point) {\n var wgs84;\n if (Array.isArray(point)) {\n point = toPoint(point);\n }\n checkSanity(point);\n // Workaround for datum shifts towgs84, if either source or destination projection is not wgs84\n if (source.datum && dest.datum && checkNotWGS(source, dest)) {\n wgs84 = new proj('WGS84');\n point = transform(source, wgs84, point);\n source = wgs84;\n }\n // DGR, 2010/11/12\n if (source.axis !== 'enu') {\n point = adjust_axis(source, false, point);\n }\n // Transform source points to long/lat, if they aren't already.\n if (source.projName === 'longlat') {\n point = {\n x: point.x * D2R,\n y: point.y * D2R,\n z: point.z || 0\n };\n } else {\n if (source.to_meter) {\n point = {\n x: point.x * source.to_meter,\n y: point.y * source.to_meter,\n z: point.z || 0\n };\n }\n point = source.inverse(point); // Convert Cartesian to longlat\n if (!point) {\n return;\n }\n }\n // Adjust for the prime meridian if necessary\n if (source.from_greenwich) {\n point.x += source.from_greenwich;\n }\n\n // Convert datums if needed, and if possible.\n point = datum_transform(source.datum, dest.datum, point);\n\n // Adjust for the prime meridian if necessary\n if (dest.from_greenwich) {\n point = {\n x: point.x - dest.from_greenwich,\n y: point.y,\n z: point.z || 0\n };\n }\n\n if (dest.projName === 'longlat') {\n // convert radians to decimal degrees\n point = {\n x: point.x * R2D,\n y: point.y * R2D,\n z: point.z || 0\n };\n } else { // else project\n point = dest.forward(point);\n if (dest.to_meter) {\n point = {\n x: point.x / dest.to_meter,\n y: point.y / dest.to_meter,\n z: point.z || 0\n };\n }\n }\n\n // DGR, 2010/11/12\n if (dest.axis !== 'enu') {\n return adjust_axis(dest, true, point);\n }\n\n return point;\n}\n","import proj from './Proj';\nimport transform from './transform';\nvar wgs84 = proj('WGS84');\n\nfunction transformer(from, to, coords) {\n var transformedArray, out, keys;\n if (Array.isArray(coords)) {\n transformedArray = transform(from, to, coords) || {x: NaN, y: NaN};\n if (coords.length > 2) {\n if ((typeof from.name !== 'undefined' && from.name === 'geocent') || (typeof to.name !== 'undefined' && to.name === 'geocent')) {\n if (typeof transformedArray.z === 'number') {\n return [transformedArray.x, transformedArray.y, transformedArray.z].concat(coords.splice(3));\n } else {\n return [transformedArray.x, transformedArray.y, coords[2]].concat(coords.splice(3));\n }\n } else {\n return [transformedArray.x, transformedArray.y].concat(coords.splice(2));\n }\n } else {\n return [transformedArray.x, transformedArray.y];\n }\n } else {\n out = transform(from, to, coords);\n keys = Object.keys(coords);\n if (keys.length === 2) {\n return out;\n }\n keys.forEach(function (key) {\n if ((typeof from.name !== 'undefined' && from.name === 'geocent') || (typeof to.name !== 'undefined' && to.name === 'geocent')) {\n if (key === 'x' || key === 'y' || key === 'z') {\n return;\n }\n } else {\n if (key === 'x' || key === 'y') {\n return;\n }\n }\n out[key] = coords[key];\n });\n return out;\n }\n}\n\nfunction checkProj(item) {\n if (item instanceof proj) {\n return item;\n }\n if (item.oProj) {\n return item.oProj;\n }\n return proj(item);\n}\n\nfunction proj4(fromProj, toProj, coord) {\n fromProj = checkProj(fromProj);\n var single = false;\n var obj;\n if (typeof toProj === 'undefined') {\n toProj = fromProj;\n fromProj = wgs84;\n single = true;\n } else if (typeof toProj.x !== 'undefined' || Array.isArray(toProj)) {\n coord = toProj;\n toProj = fromProj;\n fromProj = wgs84;\n single = true;\n }\n toProj = checkProj(toProj);\n if (coord) {\n return transformer(fromProj, toProj, coord);\n } else {\n obj = {\n forward: function (coords) {\n return transformer(fromProj, toProj, coords);\n },\n inverse: function (coords) {\n return transformer(toProj, fromProj, coords);\n }\n };\n if (single) {\n obj.oProj = toProj;\n }\n return obj;\n }\n}\nexport default proj4;","\n\n\n/**\n * UTM zones are grouped, and assigned to one of a group of 6\n * sets.\n *\n * {int} @private\n */\nvar NUM_100K_SETS = 6;\n\n/**\n * The column letters (for easting) of the lower left value, per\n * set.\n *\n * {string} @private\n */\nvar SET_ORIGIN_COLUMN_LETTERS = 'AJSAJS';\n\n/**\n * The row letters (for northing) of the lower left value, per\n * set.\n *\n * {string} @private\n */\nvar SET_ORIGIN_ROW_LETTERS = 'AFAFAF';\n\nvar A = 65; // A\nvar I = 73; // I\nvar O = 79; // O\nvar V = 86; // V\nvar Z = 90; // Z\nexport default {\n forward: forward,\n inverse: inverse,\n toPoint: toPoint\n};\n/**\n * Conversion of lat/lon to MGRS.\n *\n * @param {object} ll Object literal with lat and lon properties on a\n * WGS84 ellipsoid.\n * @param {int} accuracy Accuracy in digits (5 for 1 m, 4 for 10 m, 3 for\n * 100 m, 2 for 1000 m or 1 for 10000 m). Optional, default is 5.\n * @return {string} the MGRS string for the given location and accuracy.\n */\nexport function forward(ll, accuracy) {\n accuracy = accuracy || 5; // default accuracy 1m\n return encode(LLtoUTM({\n lat: ll[1],\n lon: ll[0]\n }), accuracy);\n};\n\n/**\n * Conversion of MGRS to lat/lon.\n *\n * @param {string} mgrs MGRS string.\n * @return {array} An array with left (longitude), bottom (latitude), right\n * (longitude) and top (latitude) values in WGS84, representing the\n * bounding box for the provided MGRS reference.\n */\nexport function inverse(mgrs) {\n var bbox = UTMtoLL(decode(mgrs.toUpperCase()));\n if (bbox.lat && bbox.lon) {\n return [bbox.lon, bbox.lat, bbox.lon, bbox.lat];\n }\n return [bbox.left, bbox.bottom, bbox.right, bbox.top];\n};\n\nexport function toPoint(mgrs) {\n var bbox = UTMtoLL(decode(mgrs.toUpperCase()));\n if (bbox.lat && bbox.lon) {\n return [bbox.lon, bbox.lat];\n }\n return [(bbox.left + bbox.right) / 2, (bbox.top + bbox.bottom) / 2];\n};\n/**\n * Conversion from degrees to radians.\n *\n * @private\n * @param {number} deg the angle in degrees.\n * @return {number} the angle in radians.\n */\nfunction degToRad(deg) {\n return (deg * (Math.PI / 180.0));\n}\n\n/**\n * Conversion from radians to degrees.\n *\n * @private\n * @param {number} rad the angle in radians.\n * @return {number} the angle in degrees.\n */\nfunction radToDeg(rad) {\n return (180.0 * (rad / Math.PI));\n}\n\n/**\n * Converts a set of Longitude and Latitude co-ordinates to UTM\n * using the WGS84 ellipsoid.\n *\n * @private\n * @param {object} ll Object literal with lat and lon properties\n * representing the WGS84 coordinate to be converted.\n * @return {object} Object literal containing the UTM value with easting,\n * northing, zoneNumber and zoneLetter properties, and an optional\n * accuracy property in digits. Returns null if the conversion failed.\n */\nfunction LLtoUTM(ll) {\n var Lat = ll.lat;\n var Long = ll.lon;\n var a = 6378137.0; //ellip.radius;\n var eccSquared = 0.00669438; //ellip.eccsq;\n var k0 = 0.9996;\n var LongOrigin;\n var eccPrimeSquared;\n var N, T, C, A, M;\n var LatRad = degToRad(Lat);\n var LongRad = degToRad(Long);\n var LongOriginRad;\n var ZoneNumber;\n // (int)\n ZoneNumber = Math.floor((Long + 180) / 6) + 1;\n\n //Make sure the longitude 180.00 is in Zone 60\n if (Long === 180) {\n ZoneNumber = 60;\n }\n\n // Special zone for Norway\n if (Lat >= 56.0 && Lat < 64.0 && Long >= 3.0 && Long < 12.0) {\n ZoneNumber = 32;\n }\n\n // Special zones for Svalbard\n if (Lat >= 72.0 && Lat < 84.0) {\n if (Long >= 0.0 && Long < 9.0) {\n ZoneNumber = 31;\n }\n else if (Long >= 9.0 && Long < 21.0) {\n ZoneNumber = 33;\n }\n else if (Long >= 21.0 && Long < 33.0) {\n ZoneNumber = 35;\n }\n else if (Long >= 33.0 && Long < 42.0) {\n ZoneNumber = 37;\n }\n }\n\n LongOrigin = (ZoneNumber - 1) * 6 - 180 + 3; //+3 puts origin\n // in middle of\n // zone\n LongOriginRad = degToRad(LongOrigin);\n\n eccPrimeSquared = (eccSquared) / (1 - eccSquared);\n\n N = a / Math.sqrt(1 - eccSquared * Math.sin(LatRad) * Math.sin(LatRad));\n T = Math.tan(LatRad) * Math.tan(LatRad);\n C = eccPrimeSquared * Math.cos(LatRad) * Math.cos(LatRad);\n A = Math.cos(LatRad) * (LongRad - LongOriginRad);\n\n M = a * ((1 - eccSquared / 4 - 3 * eccSquared * eccSquared / 64 - 5 * eccSquared * eccSquared * eccSquared / 256) * LatRad - (3 * eccSquared / 8 + 3 * eccSquared * eccSquared / 32 + 45 * eccSquared * eccSquared * eccSquared / 1024) * Math.sin(2 * LatRad) + (15 * eccSquared * eccSquared / 256 + 45 * eccSquared * eccSquared * eccSquared / 1024) * Math.sin(4 * LatRad) - (35 * eccSquared * eccSquared * eccSquared / 3072) * Math.sin(6 * LatRad));\n\n var UTMEasting = (k0 * N * (A + (1 - T + C) * A * A * A / 6.0 + (5 - 18 * T + T * T + 72 * C - 58 * eccPrimeSquared) * A * A * A * A * A / 120.0) + 500000.0);\n\n var UTMNorthing = (k0 * (M + N * Math.tan(LatRad) * (A * A / 2 + (5 - T + 9 * C + 4 * C * C) * A * A * A * A / 24.0 + (61 - 58 * T + T * T + 600 * C - 330 * eccPrimeSquared) * A * A * A * A * A * A / 720.0)));\n if (Lat < 0.0) {\n UTMNorthing += 10000000.0; //10000000 meter offset for\n // southern hemisphere\n }\n\n return {\n northing: Math.round(UTMNorthing),\n easting: Math.round(UTMEasting),\n zoneNumber: ZoneNumber,\n zoneLetter: getLetterDesignator(Lat)\n };\n}\n\n/**\n * Converts UTM coords to lat/long, using the WGS84 ellipsoid. This is a convenience\n * class where the Zone can be specified as a single string eg.\"60N\" which\n * is then broken down into the ZoneNumber and ZoneLetter.\n *\n * @private\n * @param {object} utm An object literal with northing, easting, zoneNumber\n * and zoneLetter properties. If an optional accuracy property is\n * provided (in meters), a bounding box will be returned instead of\n * latitude and longitude.\n * @return {object} An object literal containing either lat and lon values\n * (if no accuracy was provided), or top, right, bottom and left values\n * for the bounding box calculated according to the provided accuracy.\n * Returns null if the conversion failed.\n */\nfunction UTMtoLL(utm) {\n\n var UTMNorthing = utm.northing;\n var UTMEasting = utm.easting;\n var zoneLetter = utm.zoneLetter;\n var zoneNumber = utm.zoneNumber;\n // check the ZoneNummber is valid\n if (zoneNumber < 0 || zoneNumber > 60) {\n return null;\n }\n\n var k0 = 0.9996;\n var a = 6378137.0; //ellip.radius;\n var eccSquared = 0.00669438; //ellip.eccsq;\n var eccPrimeSquared;\n var e1 = (1 - Math.sqrt(1 - eccSquared)) / (1 + Math.sqrt(1 - eccSquared));\n var N1, T1, C1, R1, D, M;\n var LongOrigin;\n var mu, phi1Rad;\n\n // remove 500,000 meter offset for longitude\n var x = UTMEasting - 500000.0;\n var y = UTMNorthing;\n\n // We must know somehow if we are in the Northern or Southern\n // hemisphere, this is the only time we use the letter So even\n // if the Zone letter isn't exactly correct it should indicate\n // the hemisphere correctly\n if (zoneLetter < 'N') {\n y -= 10000000.0; // remove 10,000,000 meter offset used\n // for southern hemisphere\n }\n\n // There are 60 zones with zone 1 being at West -180 to -174\n LongOrigin = (zoneNumber - 1) * 6 - 180 + 3; // +3 puts origin\n // in middle of\n // zone\n\n eccPrimeSquared = (eccSquared) / (1 - eccSquared);\n\n M = y / k0;\n mu = M / (a * (1 - eccSquared / 4 - 3 * eccSquared * eccSquared / 64 - 5 * eccSquared * eccSquared * eccSquared / 256));\n\n phi1Rad = mu + (3 * e1 / 2 - 27 * e1 * e1 * e1 / 32) * Math.sin(2 * mu) + (21 * e1 * e1 / 16 - 55 * e1 * e1 * e1 * e1 / 32) * Math.sin(4 * mu) + (151 * e1 * e1 * e1 / 96) * Math.sin(6 * mu);\n // double phi1 = ProjMath.radToDeg(phi1Rad);\n\n N1 = a / Math.sqrt(1 - eccSquared * Math.sin(phi1Rad) * Math.sin(phi1Rad));\n T1 = Math.tan(phi1Rad) * Math.tan(phi1Rad);\n C1 = eccPrimeSquared * Math.cos(phi1Rad) * Math.cos(phi1Rad);\n R1 = a * (1 - eccSquared) / Math.pow(1 - eccSquared * Math.sin(phi1Rad) * Math.sin(phi1Rad), 1.5);\n D = x / (N1 * k0);\n\n var lat = phi1Rad - (N1 * Math.tan(phi1Rad) / R1) * (D * D / 2 - (5 + 3 * T1 + 10 * C1 - 4 * C1 * C1 - 9 * eccPrimeSquared) * D * D * D * D / 24 + (61 + 90 * T1 + 298 * C1 + 45 * T1 * T1 - 252 * eccPrimeSquared - 3 * C1 * C1) * D * D * D * D * D * D / 720);\n lat = radToDeg(lat);\n\n var lon = (D - (1 + 2 * T1 + C1) * D * D * D / 6 + (5 - 2 * C1 + 28 * T1 - 3 * C1 * C1 + 8 * eccPrimeSquared + 24 * T1 * T1) * D * D * D * D * D / 120) / Math.cos(phi1Rad);\n lon = LongOrigin + radToDeg(lon);\n\n var result;\n if (utm.accuracy) {\n var topRight = UTMtoLL({\n northing: utm.northing + utm.accuracy,\n easting: utm.easting + utm.accuracy,\n zoneLetter: utm.zoneLetter,\n zoneNumber: utm.zoneNumber\n });\n result = {\n top: topRight.lat,\n right: topRight.lon,\n bottom: lat,\n left: lon\n };\n }\n else {\n result = {\n lat: lat,\n lon: lon\n };\n }\n return result;\n}\n\n/**\n * Calculates the MGRS letter designator for the given latitude.\n *\n * @private\n * @param {number} lat The latitude in WGS84 to get the letter designator\n * for.\n * @return {char} The letter designator.\n */\nfunction getLetterDesignator(lat) {\n //This is here as an error flag to show that the Latitude is\n //outside MGRS limits\n var LetterDesignator = 'Z';\n\n if ((84 >= lat) && (lat >= 72)) {\n LetterDesignator = 'X';\n }\n else if ((72 > lat) && (lat >= 64)) {\n LetterDesignator = 'W';\n }\n else if ((64 > lat) && (lat >= 56)) {\n LetterDesignator = 'V';\n }\n else if ((56 > lat) && (lat >= 48)) {\n LetterDesignator = 'U';\n }\n else if ((48 > lat) && (lat >= 40)) {\n LetterDesignator = 'T';\n }\n else if ((40 > lat) && (lat >= 32)) {\n LetterDesignator = 'S';\n }\n else if ((32 > lat) && (lat >= 24)) {\n LetterDesignator = 'R';\n }\n else if ((24 > lat) && (lat >= 16)) {\n LetterDesignator = 'Q';\n }\n else if ((16 > lat) && (lat >= 8)) {\n LetterDesignator = 'P';\n }\n else if ((8 > lat) && (lat >= 0)) {\n LetterDesignator = 'N';\n }\n else if ((0 > lat) && (lat >= -8)) {\n LetterDesignator = 'M';\n }\n else if ((-8 > lat) && (lat >= -16)) {\n LetterDesignator = 'L';\n }\n else if ((-16 > lat) && (lat >= -24)) {\n LetterDesignator = 'K';\n }\n else if ((-24 > lat) && (lat >= -32)) {\n LetterDesignator = 'J';\n }\n else if ((-32 > lat) && (lat >= -40)) {\n LetterDesignator = 'H';\n }\n else if ((-40 > lat) && (lat >= -48)) {\n LetterDesignator = 'G';\n }\n else if ((-48 > lat) && (lat >= -56)) {\n LetterDesignator = 'F';\n }\n else if ((-56 > lat) && (lat >= -64)) {\n LetterDesignator = 'E';\n }\n else if ((-64 > lat) && (lat >= -72)) {\n LetterDesignator = 'D';\n }\n else if ((-72 > lat) && (lat >= -80)) {\n LetterDesignator = 'C';\n }\n return LetterDesignator;\n}\n\n/**\n * Encodes a UTM location as MGRS string.\n *\n * @private\n * @param {object} utm An object literal with easting, northing,\n * zoneLetter, zoneNumber\n * @param {number} accuracy Accuracy in digits (1-5).\n * @return {string} MGRS string for the given UTM location.\n */\nfunction encode(utm, accuracy) {\n // prepend with leading zeroes\n var seasting = \"00000\" + utm.easting,\n snorthing = \"00000\" + utm.northing;\n\n return utm.zoneNumber + utm.zoneLetter + get100kID(utm.easting, utm.northing, utm.zoneNumber) + seasting.substr(seasting.length - 5, accuracy) + snorthing.substr(snorthing.length - 5, accuracy);\n}\n\n/**\n * Get the two letter 100k designator for a given UTM easting,\n * northing and zone number value.\n *\n * @private\n * @param {number} easting\n * @param {number} northing\n * @param {number} zoneNumber\n * @return the two letter 100k designator for the given UTM location.\n */\nfunction get100kID(easting, northing, zoneNumber) {\n var setParm = get100kSetForZone(zoneNumber);\n var setColumn = Math.floor(easting / 100000);\n var setRow = Math.floor(northing / 100000) % 20;\n return getLetter100kID(setColumn, setRow, setParm);\n}\n\n/**\n * Given a UTM zone number, figure out the MGRS 100K set it is in.\n *\n * @private\n * @param {number} i An UTM zone number.\n * @return {number} the 100k set the UTM zone is in.\n */\nfunction get100kSetForZone(i) {\n var setParm = i % NUM_100K_SETS;\n if (setParm === 0) {\n setParm = NUM_100K_SETS;\n }\n\n return setParm;\n}\n\n/**\n * Get the two-letter MGRS 100k designator given information\n * translated from the UTM northing, easting and zone number.\n *\n * @private\n * @param {number} column the column index as it relates to the MGRS\n * 100k set spreadsheet, created from the UTM easting.\n * Values are 1-8.\n * @param {number} row the row index as it relates to the MGRS 100k set\n * spreadsheet, created from the UTM northing value. Values\n * are from 0-19.\n * @param {number} parm the set block, as it relates to the MGRS 100k set\n * spreadsheet, created from the UTM zone. Values are from\n * 1-60.\n * @return two letter MGRS 100k code.\n */\nfunction getLetter100kID(column, row, parm) {\n // colOrigin and rowOrigin are the letters at the origin of the set\n var index = parm - 1;\n var colOrigin = SET_ORIGIN_COLUMN_LETTERS.charCodeAt(index);\n var rowOrigin = SET_ORIGIN_ROW_LETTERS.charCodeAt(index);\n\n // colInt and rowInt are the letters to build to return\n var colInt = colOrigin + column - 1;\n var rowInt = rowOrigin + row;\n var rollover = false;\n\n if (colInt > Z) {\n colInt = colInt - Z + A - 1;\n rollover = true;\n }\n\n if (colInt === I || (colOrigin < I && colInt > I) || ((colInt > I || colOrigin < I) && rollover)) {\n colInt++;\n }\n\n if (colInt === O || (colOrigin < O && colInt > O) || ((colInt > O || colOrigin < O) && rollover)) {\n colInt++;\n\n if (colInt === I) {\n colInt++;\n }\n }\n\n if (colInt > Z) {\n colInt = colInt - Z + A - 1;\n }\n\n if (rowInt > V) {\n rowInt = rowInt - V + A - 1;\n rollover = true;\n }\n else {\n rollover = false;\n }\n\n if (((rowInt === I) || ((rowOrigin < I) && (rowInt > I))) || (((rowInt > I) || (rowOrigin < I)) && rollover)) {\n rowInt++;\n }\n\n if (((rowInt === O) || ((rowOrigin < O) && (rowInt > O))) || (((rowInt > O) || (rowOrigin < O)) && rollover)) {\n rowInt++;\n\n if (rowInt === I) {\n rowInt++;\n }\n }\n\n if (rowInt > V) {\n rowInt = rowInt - V + A - 1;\n }\n\n var twoLetter = String.fromCharCode(colInt) + String.fromCharCode(rowInt);\n return twoLetter;\n}\n\n/**\n * Decode the UTM parameters from a MGRS string.\n *\n * @private\n * @param {string} mgrsString an UPPERCASE coordinate string is expected.\n * @return {object} An object literal with easting, northing, zoneLetter,\n * zoneNumber and accuracy (in meters) properties.\n */\nfunction decode(mgrsString) {\n\n if (mgrsString && mgrsString.length === 0) {\n throw (\"MGRSPoint coverting from nothing\");\n }\n\n var length = mgrsString.length;\n\n var hunK = null;\n var sb = \"\";\n var testChar;\n var i = 0;\n\n // get Zone number\n while (!(/[A-Z]/).test(testChar = mgrsString.charAt(i))) {\n if (i >= 2) {\n throw (\"MGRSPoint bad conversion from: \" + mgrsString);\n }\n sb += testChar;\n i++;\n }\n\n var zoneNumber = parseInt(sb, 10);\n\n if (i === 0 || i + 3 > length) {\n // A good MGRS string has to be 4-5 digits long,\n // ##AAA/#AAA at least.\n throw (\"MGRSPoint bad conversion from: \" + mgrsString);\n }\n\n var zoneLetter = mgrsString.charAt(i++);\n\n // Should we check the zone letter here? Why not.\n if (zoneLetter <= 'A' || zoneLetter === 'B' || zoneLetter === 'Y' || zoneLetter >= 'Z' || zoneLetter === 'I' || zoneLetter === 'O') {\n throw (\"MGRSPoint zone letter \" + zoneLetter + \" not handled: \" + mgrsString);\n }\n\n hunK = mgrsString.substring(i, i += 2);\n\n var set = get100kSetForZone(zoneNumber);\n\n var east100k = getEastingFromChar(hunK.charAt(0), set);\n var north100k = getNorthingFromChar(hunK.charAt(1), set);\n\n // We have a bug where the northing may be 2000000 too low.\n // How\n // do we know when to roll over?\n\n while (north100k < getMinNorthing(zoneLetter)) {\n north100k += 2000000;\n }\n\n // calculate the char index for easting/northing separator\n var remainder = length - i;\n\n if (remainder % 2 !== 0) {\n throw (\"MGRSPoint has to have an even number \\nof digits after the zone letter and two 100km letters - front \\nhalf for easting meters, second half for \\nnorthing meters\" + mgrsString);\n }\n\n var sep = remainder / 2;\n\n var sepEasting = 0.0;\n var sepNorthing = 0.0;\n var accuracyBonus, sepEastingString, sepNorthingString, easting, northing;\n if (sep > 0) {\n accuracyBonus = 100000.0 / Math.pow(10, sep);\n sepEastingString = mgrsString.substring(i, i + sep);\n sepEasting = parseFloat(sepEastingString) * accuracyBonus;\n sepNorthingString = mgrsString.substring(i + sep);\n sepNorthing = parseFloat(sepNorthingString) * accuracyBonus;\n }\n\n easting = sepEasting + east100k;\n northing = sepNorthing + north100k;\n\n return {\n easting: easting,\n northing: northing,\n zoneLetter: zoneLetter,\n zoneNumber: zoneNumber,\n accuracy: accuracyBonus\n };\n}\n\n/**\n * Given the first letter from a two-letter MGRS 100k zone, and given the\n * MGRS table set for the zone number, figure out the easting value that\n * should be added to the other, secondary easting value.\n *\n * @private\n * @param {char} e The first letter from a two-letter MGRS 100´k zone.\n * @param {number} set The MGRS table set for the zone number.\n * @return {number} The easting value for the given letter and set.\n */\nfunction getEastingFromChar(e, set) {\n // colOrigin is the letter at the origin of the set for the\n // column\n var curCol = SET_ORIGIN_COLUMN_LETTERS.charCodeAt(set - 1);\n var eastingValue = 100000.0;\n var rewindMarker = false;\n\n while (curCol !== e.charCodeAt(0)) {\n curCol++;\n if (curCol === I) {\n curCol++;\n }\n if (curCol === O) {\n curCol++;\n }\n if (curCol > Z) {\n if (rewindMarker) {\n throw (\"Bad character: \" + e);\n }\n curCol = A;\n rewindMarker = true;\n }\n eastingValue += 100000.0;\n }\n\n return eastingValue;\n}\n\n/**\n * Given the second letter from a two-letter MGRS 100k zone, and given the\n * MGRS table set for the zone number, figure out the northing value that\n * should be added to the other, secondary northing value. You have to\n * remember that Northings are determined from the equator, and the vertical\n * cycle of letters mean a 2000000 additional northing meters. This happens\n * approx. every 18 degrees of latitude. This method does *NOT* count any\n * additional northings. You have to figure out how many 2000000 meters need\n * to be added for the zone letter of the MGRS coordinate.\n *\n * @private\n * @param {char} n Second letter of the MGRS 100k zone\n * @param {number} set The MGRS table set number, which is dependent on the\n * UTM zone number.\n * @return {number} The northing value for the given letter and set.\n */\nfunction getNorthingFromChar(n, set) {\n\n if (n > 'V') {\n throw (\"MGRSPoint given invalid Northing \" + n);\n }\n\n // rowOrigin is the letter at the origin of the set for the\n // column\n var curRow = SET_ORIGIN_ROW_LETTERS.charCodeAt(set - 1);\n var northingValue = 0.0;\n var rewindMarker = false;\n\n while (curRow !== n.charCodeAt(0)) {\n curRow++;\n if (curRow === I) {\n curRow++;\n }\n if (curRow === O) {\n curRow++;\n }\n // fixing a bug making whole application hang in this loop\n // when 'n' is a wrong character\n if (curRow > V) {\n if (rewindMarker) { // making sure that this loop ends\n throw (\"Bad character: \" + n);\n }\n curRow = A;\n rewindMarker = true;\n }\n northingValue += 100000.0;\n }\n\n return northingValue;\n}\n\n/**\n * The function getMinNorthing returns the minimum northing value of a MGRS\n * zone.\n *\n * Ported from Geotrans' c Lattitude_Band_Value structure table.\n *\n * @private\n * @param {char} zoneLetter The MGRS zone to get the min northing for.\n * @return {number}\n */\nfunction getMinNorthing(zoneLetter) {\n var northing;\n switch (zoneLetter) {\n case 'C':\n northing = 1100000.0;\n break;\n case 'D':\n northing = 2000000.0;\n break;\n case 'E':\n northing = 2800000.0;\n break;\n case 'F':\n northing = 3700000.0;\n break;\n case 'G':\n northing = 4600000.0;\n break;\n case 'H':\n northing = 5500000.0;\n break;\n case 'J':\n northing = 6400000.0;\n break;\n case 'K':\n northing = 7300000.0;\n break;\n case 'L':\n northing = 8200000.0;\n break;\n case 'M':\n northing = 9100000.0;\n break;\n case 'N':\n northing = 0.0;\n break;\n case 'P':\n northing = 800000.0;\n break;\n case 'Q':\n northing = 1700000.0;\n break;\n case 'R':\n northing = 2600000.0;\n break;\n case 'S':\n northing = 3500000.0;\n break;\n case 'T':\n northing = 4400000.0;\n break;\n case 'U':\n northing = 5300000.0;\n break;\n case 'V':\n northing = 6200000.0;\n break;\n case 'W':\n northing = 7000000.0;\n break;\n case 'X':\n northing = 7900000.0;\n break;\n default:\n northing = -1.0;\n }\n if (northing >= 0.0) {\n return northing;\n }\n else {\n throw (\"Invalid zone letter: \" + zoneLetter);\n }\n\n}\n","import {toPoint, forward} from 'mgrs';\n\nfunction Point(x, y, z) {\n if (!(this instanceof Point)) {\n return new Point(x, y, z);\n }\n if (Array.isArray(x)) {\n this.x = x[0];\n this.y = x[1];\n this.z = x[2] || 0.0;\n } else if(typeof x === 'object') {\n this.x = x.x;\n this.y = x.y;\n this.z = x.z || 0.0;\n } else if (typeof x === 'string' && typeof y === 'undefined') {\n var coords = x.split(',');\n this.x = parseFloat(coords[0], 10);\n this.y = parseFloat(coords[1], 10);\n this.z = parseFloat(coords[2], 10) || 0.0;\n } else {\n this.x = x;\n this.y = y;\n this.z = z || 0.0;\n }\n console.warn('proj4.Point will be removed in version 3, use proj4.toPoint');\n}\n\nPoint.fromMGRS = function(mgrsStr) {\n return new Point(toPoint(mgrsStr));\n};\nPoint.prototype.toMGRS = function(accuracy) {\n return forward([this.x, this.y], accuracy);\n};\nexport default Point;\n","var C00 = 1;\nvar C02 = 0.25;\nvar C04 = 0.046875;\nvar C06 = 0.01953125;\nvar C08 = 0.01068115234375;\nvar C22 = 0.75;\nvar C44 = 0.46875;\nvar C46 = 0.01302083333333333333;\nvar C48 = 0.00712076822916666666;\nvar C66 = 0.36458333333333333333;\nvar C68 = 0.00569661458333333333;\nvar C88 = 0.3076171875;\n\nexport default function(es) {\n var en = [];\n en[0] = C00 - es * (C02 + es * (C04 + es * (C06 + es * C08)));\n en[1] = es * (C22 - es * (C04 + es * (C06 + es * C08)));\n var t = es * es;\n en[2] = t * (C44 - es * (C46 + es * C48));\n t *= es;\n en[3] = t * (C66 - es * C68);\n en[4] = t * es * C88;\n return en;\n}","export default function(phi, sphi, cphi, en) {\n cphi *= sphi;\n sphi *= sphi;\n return (en[0] * phi - cphi * (en[1] + sphi * (en[2] + sphi * (en[3] + sphi * en[4]))));\n}","import pj_mlfn from \"./pj_mlfn\";\nimport {EPSLN} from '../constants/values';\n\nvar MAX_ITER = 20;\n\nexport default function(arg, es, en) {\n var k = 1 / (1 - es);\n var phi = arg;\n for (var i = MAX_ITER; i; --i) { /* rarely goes over 2 iterations */\n var s = Math.sin(phi);\n var t = 1 - es * s * s;\n //t = this.pj_mlfn(phi, s, Math.cos(phi), en) - arg;\n //phi -= t * (t * Math.sqrt(t)) * k;\n t = (pj_mlfn(phi, s, Math.cos(phi), en) - arg) * (t * Math.sqrt(t)) * k;\n phi -= t;\n if (Math.abs(t) < EPSLN) {\n return phi;\n }\n }\n //..reportError(\"cass:pj_inv_mlfn: Convergence error\");\n return phi;\n}\n","// Heavily based on this tmerc projection implementation\n// https://github.com/mbloch/mapshaper-proj/blob/master/src/projections/tmerc.js\n\nimport pj_enfn from '../common/pj_enfn';\nimport pj_mlfn from '../common/pj_mlfn';\nimport pj_inv_mlfn from '../common/pj_inv_mlfn';\nimport adjust_lon from '../common/adjust_lon';\n\nimport {EPSLN, HALF_PI} from '../constants/values';\nimport sign from '../common/sign';\n\nexport function init() {\n this.x0 = this.x0 !== undefined ? this.x0 : 0;\n this.y0 = this.y0 !== undefined ? this.y0 : 0;\n this.long0 = this.long0 !== undefined ? this.long0 : 0;\n this.lat0 = this.lat0 !== undefined ? this.lat0 : 0;\n\n if (this.es) {\n this.en = pj_enfn(this.es);\n this.ml0 = pj_mlfn(this.lat0, Math.sin(this.lat0), Math.cos(this.lat0), this.en);\n }\n}\n\n/**\n Transverse Mercator Forward - long/lat to x/y\n long/lat in radians\n */\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n\n var delta_lon = adjust_lon(lon - this.long0);\n var con;\n var x, y;\n var sin_phi = Math.sin(lat);\n var cos_phi = Math.cos(lat);\n\n if (!this.es) {\n var b = cos_phi * Math.sin(delta_lon);\n\n if ((Math.abs(Math.abs(b) - 1)) < EPSLN) {\n return (93);\n }\n else {\n x = 0.5 * this.a * this.k0 * Math.log((1 + b) / (1 - b)) + this.x0;\n y = cos_phi * Math.cos(delta_lon) / Math.sqrt(1 - Math.pow(b, 2));\n b = Math.abs(y);\n\n if (b >= 1) {\n if ((b - 1) > EPSLN) {\n return (93);\n }\n else {\n y = 0;\n }\n }\n else {\n y = Math.acos(y);\n }\n\n if (lat < 0) {\n y = -y;\n }\n\n y = this.a * this.k0 * (y - this.lat0) + this.y0;\n }\n }\n else {\n var al = cos_phi * delta_lon;\n var als = Math.pow(al, 2);\n var c = this.ep2 * Math.pow(cos_phi, 2);\n var cs = Math.pow(c, 2);\n var tq = Math.abs(cos_phi) > EPSLN ? Math.tan(lat) : 0;\n var t = Math.pow(tq, 2);\n var ts = Math.pow(t, 2);\n con = 1 - this.es * Math.pow(sin_phi, 2);\n al = al / Math.sqrt(con);\n var ml = pj_mlfn(lat, sin_phi, cos_phi, this.en);\n\n x = this.a * (this.k0 * al * (1 +\n als / 6 * (1 - t + c +\n als / 20 * (5 - 18 * t + ts + 14 * c - 58 * t * c +\n als / 42 * (61 + 179 * ts - ts * t - 479 * t))))) +\n this.x0;\n\n y = this.a * (this.k0 * (ml - this.ml0 +\n sin_phi * delta_lon * al / 2 * (1 +\n als / 12 * (5 - t + 9 * c + 4 * cs +\n als / 30 * (61 + ts - 58 * t + 270 * c - 330 * t * c +\n als / 56 * (1385 + 543 * ts - ts * t - 3111 * t)))))) +\n this.y0;\n }\n\n p.x = x;\n p.y = y;\n\n return p;\n}\n\n/**\n Transverse Mercator Inverse - x/y to long/lat\n */\nexport function inverse(p) {\n var con, phi;\n var lat, lon;\n var x = (p.x - this.x0) * (1 / this.a);\n var y = (p.y - this.y0) * (1 / this.a);\n\n if (!this.es) {\n var f = Math.exp(x / this.k0);\n var g = 0.5 * (f - 1 / f);\n var temp = this.lat0 + y / this.k0;\n var h = Math.cos(temp);\n con = Math.sqrt((1 - Math.pow(h, 2)) / (1 + Math.pow(g, 2)));\n lat = Math.asin(con);\n\n if (y < 0) {\n lat = -lat;\n }\n\n if ((g === 0) && (h === 0)) {\n lon = 0;\n }\n else {\n lon = adjust_lon(Math.atan2(g, h) + this.long0);\n }\n }\n else { // ellipsoidal form\n con = this.ml0 + y / this.k0;\n phi = pj_inv_mlfn(con, this.es, this.en);\n\n if (Math.abs(phi) < HALF_PI) {\n var sin_phi = Math.sin(phi);\n var cos_phi = Math.cos(phi);\n var tan_phi = Math.abs(cos_phi) > EPSLN ? Math.tan(phi) : 0;\n var c = this.ep2 * Math.pow(cos_phi, 2);\n var cs = Math.pow(c, 2);\n var t = Math.pow(tan_phi, 2);\n var ts = Math.pow(t, 2);\n con = 1 - this.es * Math.pow(sin_phi, 2);\n var d = x * Math.sqrt(con) / this.k0;\n var ds = Math.pow(d, 2);\n con = con * tan_phi;\n\n lat = phi - (con * ds / (1 - this.es)) * 0.5 * (1 -\n ds / 12 * (5 + 3 * t - 9 * c * t + c - 4 * cs -\n ds / 30 * (61 + 90 * t - 252 * c * t + 45 * ts + 46 * c -\n ds / 56 * (1385 + 3633 * t + 4095 * ts + 1574 * ts * t))));\n\n lon = adjust_lon(this.long0 + (d * (1 -\n ds / 6 * (1 + 2 * t + c -\n ds / 20 * (5 + 28 * t + 24 * ts + 8 * c * t + 6 * c -\n ds / 42 * (61 + 662 * t + 1320 * ts + 720 * ts * t)))) / cos_phi));\n }\n else {\n lat = HALF_PI * sign(y);\n lon = 0;\n }\n }\n\n p.x = lon;\n p.y = lat;\n\n return p;\n}\n\nexport var names = [\"Transverse_Mercator\", \"Transverse Mercator\", \"tmerc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","export default function(x) {\n var r = Math.exp(x);\n r = (r - 1 / r) / 2;\n return r;\n}","export default function(x, y) {\n x = Math.abs(x);\n y = Math.abs(y);\n var a = Math.max(x, y);\n var b = Math.min(x, y) / (a ? a : 1);\n\n return a * Math.sqrt(1 + Math.pow(b, 2));\n}\n","export default function(pp, B) {\n var cos_2B = 2 * Math.cos(2 * B);\n var i = pp.length - 1;\n var h1 = pp[i];\n var h2 = 0;\n var h;\n\n while (--i >= 0) {\n h = -h2 + cos_2B * h1 + pp[i];\n h2 = h1;\n h1 = h;\n }\n\n return (B + h * Math.sin(2 * B));\n}\n","import sinh from './sinh';\nimport cosh from './cosh';\n\nexport default function(pp, arg_r, arg_i) {\n var sin_arg_r = Math.sin(arg_r);\n var cos_arg_r = Math.cos(arg_r);\n var sinh_arg_i = sinh(arg_i);\n var cosh_arg_i = cosh(arg_i);\n var r = 2 * cos_arg_r * cosh_arg_i;\n var i = -2 * sin_arg_r * sinh_arg_i;\n var j = pp.length - 1;\n var hr = pp[j];\n var hi1 = 0;\n var hr1 = 0;\n var hi = 0;\n var hr2;\n var hi2;\n\n while (--j >= 0) {\n hr2 = hr1;\n hi2 = hi1;\n hr1 = hr;\n hi1 = hi;\n hr = -hr2 + r * hr1 - i * hi1 + pp[j];\n hi = -hi2 + i * hr1 + r * hi1;\n }\n\n r = sin_arg_r * cosh_arg_i;\n i = cos_arg_r * sinh_arg_i;\n\n return [r * hr - i * hi, r * hi + i * hr];\n}\n","export default function(x) {\n var r = Math.exp(x);\n r = (r + 1 / r) / 2;\n return r;\n}","// Heavily based on this etmerc projection implementation\n// https://github.com/mbloch/mapshaper-proj/blob/master/src/projections/etmerc.js\n\nimport sinh from '../common/sinh';\nimport hypot from '../common/hypot';\nimport asinhy from '../common/asinhy';\nimport gatg from '../common/gatg';\nimport clens from '../common/clens';\nimport clens_cmplx from '../common/clens_cmplx';\nimport adjust_lon from '../common/adjust_lon';\n\nexport function init() {\n if (this.es === undefined || this.es <= 0) {\n throw new Error('incorrect elliptical usage');\n }\n\n this.x0 = this.x0 !== undefined ? this.x0 : 0;\n this.y0 = this.y0 !== undefined ? this.y0 : 0;\n this.long0 = this.long0 !== undefined ? this.long0 : 0;\n this.lat0 = this.lat0 !== undefined ? this.lat0 : 0;\n\n this.cgb = [];\n this.cbg = [];\n this.utg = [];\n this.gtu = [];\n\n var f = this.es / (1 + Math.sqrt(1 - this.es));\n var n = f / (2 - f);\n var np = n;\n\n this.cgb[0] = n * (2 + n * (-2 / 3 + n * (-2 + n * (116 / 45 + n * (26 / 45 + n * (-2854 / 675 ))))));\n this.cbg[0] = n * (-2 + n * ( 2 / 3 + n * ( 4 / 3 + n * (-82 / 45 + n * (32 / 45 + n * (4642 / 4725))))));\n\n np = np * n;\n this.cgb[1] = np * (7 / 3 + n * (-8 / 5 + n * (-227 / 45 + n * (2704 / 315 + n * (2323 / 945)))));\n this.cbg[1] = np * (5 / 3 + n * (-16 / 15 + n * ( -13 / 9 + n * (904 / 315 + n * (-1522 / 945)))));\n\n np = np * n;\n this.cgb[2] = np * (56 / 15 + n * (-136 / 35 + n * (-1262 / 105 + n * (73814 / 2835))));\n this.cbg[2] = np * (-26 / 15 + n * (34 / 21 + n * (8 / 5 + n * (-12686 / 2835))));\n\n np = np * n;\n this.cgb[3] = np * (4279 / 630 + n * (-332 / 35 + n * (-399572 / 14175)));\n this.cbg[3] = np * (1237 / 630 + n * (-12 / 5 + n * ( -24832 / 14175)));\n\n np = np * n;\n this.cgb[4] = np * (4174 / 315 + n * (-144838 / 6237));\n this.cbg[4] = np * (-734 / 315 + n * (109598 / 31185));\n\n np = np * n;\n this.cgb[5] = np * (601676 / 22275);\n this.cbg[5] = np * (444337 / 155925);\n\n np = Math.pow(n, 2);\n this.Qn = this.k0 / (1 + n) * (1 + np * (1 / 4 + np * (1 / 64 + np / 256)));\n\n this.utg[0] = n * (-0.5 + n * ( 2 / 3 + n * (-37 / 96 + n * ( 1 / 360 + n * (81 / 512 + n * (-96199 / 604800))))));\n this.gtu[0] = n * (0.5 + n * (-2 / 3 + n * (5 / 16 + n * (41 / 180 + n * (-127 / 288 + n * (7891 / 37800))))));\n\n this.utg[1] = np * (-1 / 48 + n * (-1 / 15 + n * (437 / 1440 + n * (-46 / 105 + n * (1118711 / 3870720)))));\n this.gtu[1] = np * (13 / 48 + n * (-3 / 5 + n * (557 / 1440 + n * (281 / 630 + n * (-1983433 / 1935360)))));\n\n np = np * n;\n this.utg[2] = np * (-17 / 480 + n * (37 / 840 + n * (209 / 4480 + n * (-5569 / 90720 ))));\n this.gtu[2] = np * (61 / 240 + n * (-103 / 140 + n * (15061 / 26880 + n * (167603 / 181440))));\n\n np = np * n;\n this.utg[3] = np * (-4397 / 161280 + n * (11 / 504 + n * (830251 / 7257600)));\n this.gtu[3] = np * (49561 / 161280 + n * (-179 / 168 + n * (6601661 / 7257600)));\n\n np = np * n;\n this.utg[4] = np * (-4583 / 161280 + n * (108847 / 3991680));\n this.gtu[4] = np * (34729 / 80640 + n * (-3418889 / 1995840));\n\n np = np * n;\n this.utg[5] = np * (-20648693 / 638668800);\n this.gtu[5] = np * (212378941 / 319334400);\n\n var Z = gatg(this.cbg, this.lat0);\n this.Zb = -this.Qn * (Z + clens(this.gtu, 2 * Z));\n}\n\nexport function forward(p) {\n var Ce = adjust_lon(p.x - this.long0);\n var Cn = p.y;\n\n Cn = gatg(this.cbg, Cn);\n var sin_Cn = Math.sin(Cn);\n var cos_Cn = Math.cos(Cn);\n var sin_Ce = Math.sin(Ce);\n var cos_Ce = Math.cos(Ce);\n\n Cn = Math.atan2(sin_Cn, cos_Ce * cos_Cn);\n Ce = Math.atan2(sin_Ce * cos_Cn, hypot(sin_Cn, cos_Cn * cos_Ce));\n Ce = asinhy(Math.tan(Ce));\n\n var tmp = clens_cmplx(this.gtu, 2 * Cn, 2 * Ce);\n\n Cn = Cn + tmp[0];\n Ce = Ce + tmp[1];\n\n var x;\n var y;\n\n if (Math.abs(Ce) <= 2.623395162778) {\n x = this.a * (this.Qn * Ce) + this.x0;\n y = this.a * (this.Qn * Cn + this.Zb) + this.y0;\n }\n else {\n x = Infinity;\n y = Infinity;\n }\n\n p.x = x;\n p.y = y;\n\n return p;\n}\n\nexport function inverse(p) {\n var Ce = (p.x - this.x0) * (1 / this.a);\n var Cn = (p.y - this.y0) * (1 / this.a);\n\n Cn = (Cn - this.Zb) / this.Qn;\n Ce = Ce / this.Qn;\n\n var lon;\n var lat;\n\n if (Math.abs(Ce) <= 2.623395162778) {\n var tmp = clens_cmplx(this.utg, 2 * Cn, 2 * Ce);\n\n Cn = Cn + tmp[0];\n Ce = Ce + tmp[1];\n Ce = Math.atan(sinh(Ce));\n\n var sin_Cn = Math.sin(Cn);\n var cos_Cn = Math.cos(Cn);\n var sin_Ce = Math.sin(Ce);\n var cos_Ce = Math.cos(Ce);\n\n Cn = Math.atan2(sin_Cn * cos_Ce, hypot(sin_Ce, cos_Ce * cos_Cn));\n Ce = Math.atan2(sin_Ce, cos_Ce * cos_Cn);\n\n lon = adjust_lon(Ce + this.long0);\n lat = gatg(this.cgb, Cn);\n }\n else {\n lon = Infinity;\n lat = Infinity;\n }\n\n p.x = lon;\n p.y = lat;\n\n return p;\n}\n\nexport var names = [\"Extended_Transverse_Mercator\", \"Extended Transverse Mercator\", \"etmerc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","export default function(pp, arg_r) {\n var r = 2 * Math.cos(arg_r);\n var i = pp.length - 1;\n var hr1 = pp[i];\n var hr2 = 0;\n var hr;\n\n while (--i >= 0) {\n hr = -hr2 + r * hr1 + pp[i];\n hr2 = hr1;\n hr1 = hr;\n }\n\n return Math.sin(arg_r) * hr;\n}\n","import hypot from './hypot';\nimport log1py from './log1py';\n\nexport default function(x) {\n var y = Math.abs(x);\n y = log1py(y * (1 + y / (hypot(1, y) + 1)));\n\n return x < 0 ? -y : y;\n}\n","export default function(x) {\n var y = 1 + x;\n var z = y - 1;\n\n return z === 0 ? x : x * Math.log(y) / z;\n}\n","import adjust_zone from '../common/adjust_zone';\nimport etmerc from './etmerc';\nexport var dependsOn = 'etmerc';\nimport {D2R} from '../constants/values';\n\n\nexport function init() {\n var zone = adjust_zone(this.zone, this.long0);\n if (zone === undefined) {\n throw new Error('unknown utm zone');\n }\n this.lat0 = 0;\n this.long0 = ((6 * Math.abs(zone)) - 183) * D2R;\n this.x0 = 500000;\n this.y0 = this.utmSouth ? 10000000 : 0;\n this.k0 = 0.9996;\n\n etmerc.init.apply(this);\n this.forward = etmerc.forward;\n this.inverse = etmerc.inverse;\n}\n\nexport var names = [\"Universal Transverse Mercator System\", \"utm\"];\nexport default {\n init: init,\n names: names,\n dependsOn: dependsOn\n};\n","import adjust_lon from './adjust_lon';\n\nexport default function(zone, lon) {\n if (zone === undefined) {\n zone = Math.floor((adjust_lon(lon) + Math.PI) * 30 / Math.PI) + 1;\n\n if (zone < 0) {\n return 0;\n } else if (zone > 60) {\n return 60;\n }\n }\n return zone;\n}\n","export default function(esinp, exp) {\n return (Math.pow((1 - esinp) / (1 + esinp), exp));\n}","import srat from '../common/srat';\nvar MAX_ITER = 20;\nimport {HALF_PI, FORTPI} from '../constants/values';\n\nexport function init() {\n var sphi = Math.sin(this.lat0);\n var cphi = Math.cos(this.lat0);\n cphi *= cphi;\n this.rc = Math.sqrt(1 - this.es) / (1 - this.es * sphi * sphi);\n this.C = Math.sqrt(1 + this.es * cphi * cphi / (1 - this.es));\n this.phic0 = Math.asin(sphi / this.C);\n this.ratexp = 0.5 * this.C * this.e;\n this.K = Math.tan(0.5 * this.phic0 + FORTPI) / (Math.pow(Math.tan(0.5 * this.lat0 + FORTPI), this.C) * srat(this.e * sphi, this.ratexp));\n}\n\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n\n p.y = 2 * Math.atan(this.K * Math.pow(Math.tan(0.5 * lat + FORTPI), this.C) * srat(this.e * Math.sin(lat), this.ratexp)) - HALF_PI;\n p.x = this.C * lon;\n return p;\n}\n\nexport function inverse(p) {\n var DEL_TOL = 1e-14;\n var lon = p.x / this.C;\n var lat = p.y;\n var num = Math.pow(Math.tan(0.5 * lat + FORTPI) / this.K, 1 / this.C);\n for (var i = MAX_ITER; i > 0; --i) {\n lat = 2 * Math.atan(num * srat(this.e * Math.sin(p.y), - 0.5 * this.e)) - HALF_PI;\n if (Math.abs(lat - p.y) < DEL_TOL) {\n break;\n }\n p.y = lat;\n }\n /* convergence failed */\n if (!i) {\n return null;\n }\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"gauss\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import gauss from './gauss';\nimport adjust_lon from '../common/adjust_lon';\n\nexport function init() {\n gauss.init.apply(this);\n if (!this.rc) {\n return;\n }\n this.sinc0 = Math.sin(this.phic0);\n this.cosc0 = Math.cos(this.phic0);\n this.R2 = 2 * this.rc;\n if (!this.title) {\n this.title = \"Oblique Stereographic Alternative\";\n }\n}\n\nexport function forward(p) {\n var sinc, cosc, cosl, k;\n p.x = adjust_lon(p.x - this.long0);\n gauss.forward.apply(this, [p]);\n sinc = Math.sin(p.y);\n cosc = Math.cos(p.y);\n cosl = Math.cos(p.x);\n k = this.k0 * this.R2 / (1 + this.sinc0 * sinc + this.cosc0 * cosc * cosl);\n p.x = k * cosc * Math.sin(p.x);\n p.y = k * (this.cosc0 * sinc - this.sinc0 * cosc * cosl);\n p.x = this.a * p.x + this.x0;\n p.y = this.a * p.y + this.y0;\n return p;\n}\n\nexport function inverse(p) {\n var sinc, cosc, lon, lat, rho;\n p.x = (p.x - this.x0) / this.a;\n p.y = (p.y - this.y0) / this.a;\n\n p.x /= this.k0;\n p.y /= this.k0;\n if ((rho = Math.sqrt(p.x * p.x + p.y * p.y))) {\n var c = 2 * Math.atan2(rho, this.R2);\n sinc = Math.sin(c);\n cosc = Math.cos(c);\n lat = Math.asin(cosc * this.sinc0 + p.y * sinc * this.cosc0 / rho);\n lon = Math.atan2(p.x * sinc, rho * this.cosc0 * cosc - p.y * this.sinc0 * sinc);\n }\n else {\n lat = this.phic0;\n lon = 0;\n }\n\n p.x = lon;\n p.y = lat;\n gauss.inverse.apply(this, [p]);\n p.x = adjust_lon(p.x + this.long0);\n return p;\n}\n\nexport var names = [\"Stereographic_North_Pole\", \"Oblique_Stereographic\", \"Polar_Stereographic\", \"sterea\",\"Oblique Stereographic Alternative\",\"Double_Stereographic\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import {EPSLN, HALF_PI} from '../constants/values';\n\nimport sign from '../common/sign';\nimport msfnz from '../common/msfnz';\nimport tsfnz from '../common/tsfnz';\nimport phi2z from '../common/phi2z';\nimport adjust_lon from '../common/adjust_lon';\n\nexport function ssfn_(phit, sinphi, eccen) {\n sinphi *= eccen;\n return (Math.tan(0.5 * (HALF_PI + phit)) * Math.pow((1 - sinphi) / (1 + sinphi), 0.5 * eccen));\n}\n\nexport function init() {\n this.coslat0 = Math.cos(this.lat0);\n this.sinlat0 = Math.sin(this.lat0);\n if (this.sphere) {\n if (this.k0 === 1 && !isNaN(this.lat_ts) && Math.abs(this.coslat0) <= EPSLN) {\n this.k0 = 0.5 * (1 + sign(this.lat0) * Math.sin(this.lat_ts));\n }\n }\n else {\n if (Math.abs(this.coslat0) <= EPSLN) {\n if (this.lat0 > 0) {\n //North pole\n //trace('stere:north pole');\n this.con = 1;\n }\n else {\n //South pole\n //trace('stere:south pole');\n this.con = -1;\n }\n }\n this.cons = Math.sqrt(Math.pow(1 + this.e, 1 + this.e) * Math.pow(1 - this.e, 1 - this.e));\n if (this.k0 === 1 && !isNaN(this.lat_ts) && Math.abs(this.coslat0) <= EPSLN) {\n this.k0 = 0.5 * this.cons * msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts)) / tsfnz(this.e, this.con * this.lat_ts, this.con * Math.sin(this.lat_ts));\n }\n this.ms1 = msfnz(this.e, this.sinlat0, this.coslat0);\n this.X0 = 2 * Math.atan(this.ssfn_(this.lat0, this.sinlat0, this.e)) - HALF_PI;\n this.cosX0 = Math.cos(this.X0);\n this.sinX0 = Math.sin(this.X0);\n }\n}\n\n// Stereographic forward equations--mapping lat,long to x,y\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n var sinlat = Math.sin(lat);\n var coslat = Math.cos(lat);\n var A, X, sinX, cosX, ts, rh;\n var dlon = adjust_lon(lon - this.long0);\n\n if (Math.abs(Math.abs(lon - this.long0) - Math.PI) <= EPSLN && Math.abs(lat + this.lat0) <= EPSLN) {\n //case of the origine point\n //trace('stere:this is the origin point');\n p.x = NaN;\n p.y = NaN;\n return p;\n }\n if (this.sphere) {\n //trace('stere:sphere case');\n A = 2 * this.k0 / (1 + this.sinlat0 * sinlat + this.coslat0 * coslat * Math.cos(dlon));\n p.x = this.a * A * coslat * Math.sin(dlon) + this.x0;\n p.y = this.a * A * (this.coslat0 * sinlat - this.sinlat0 * coslat * Math.cos(dlon)) + this.y0;\n return p;\n }\n else {\n X = 2 * Math.atan(this.ssfn_(lat, sinlat, this.e)) - HALF_PI;\n cosX = Math.cos(X);\n sinX = Math.sin(X);\n if (Math.abs(this.coslat0) <= EPSLN) {\n ts = tsfnz(this.e, lat * this.con, this.con * sinlat);\n rh = 2 * this.a * this.k0 * ts / this.cons;\n p.x = this.x0 + rh * Math.sin(lon - this.long0);\n p.y = this.y0 - this.con * rh * Math.cos(lon - this.long0);\n //trace(p.toString());\n return p;\n }\n else if (Math.abs(this.sinlat0) < EPSLN) {\n //Eq\n //trace('stere:equateur');\n A = 2 * this.a * this.k0 / (1 + cosX * Math.cos(dlon));\n p.y = A * sinX;\n }\n else {\n //other case\n //trace('stere:normal case');\n A = 2 * this.a * this.k0 * this.ms1 / (this.cosX0 * (1 + this.sinX0 * sinX + this.cosX0 * cosX * Math.cos(dlon)));\n p.y = A * (this.cosX0 * sinX - this.sinX0 * cosX * Math.cos(dlon)) + this.y0;\n }\n p.x = A * cosX * Math.sin(dlon) + this.x0;\n }\n //trace(p.toString());\n return p;\n}\n\n//* Stereographic inverse equations--mapping x,y to lat/long\nexport function inverse(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n var lon, lat, ts, ce, Chi;\n var rh = Math.sqrt(p.x * p.x + p.y * p.y);\n if (this.sphere) {\n var c = 2 * Math.atan(rh / (2 * this.a * this.k0));\n lon = this.long0;\n lat = this.lat0;\n if (rh <= EPSLN) {\n p.x = lon;\n p.y = lat;\n return p;\n }\n lat = Math.asin(Math.cos(c) * this.sinlat0 + p.y * Math.sin(c) * this.coslat0 / rh);\n if (Math.abs(this.coslat0) < EPSLN) {\n if (this.lat0 > 0) {\n lon = adjust_lon(this.long0 + Math.atan2(p.x, - 1 * p.y));\n }\n else {\n lon = adjust_lon(this.long0 + Math.atan2(p.x, p.y));\n }\n }\n else {\n lon = adjust_lon(this.long0 + Math.atan2(p.x * Math.sin(c), rh * this.coslat0 * Math.cos(c) - p.y * this.sinlat0 * Math.sin(c)));\n }\n p.x = lon;\n p.y = lat;\n return p;\n }\n else {\n if (Math.abs(this.coslat0) <= EPSLN) {\n if (rh <= EPSLN) {\n lat = this.lat0;\n lon = this.long0;\n p.x = lon;\n p.y = lat;\n //trace(p.toString());\n return p;\n }\n p.x *= this.con;\n p.y *= this.con;\n ts = rh * this.cons / (2 * this.a * this.k0);\n lat = this.con * phi2z(this.e, ts);\n lon = this.con * adjust_lon(this.con * this.long0 + Math.atan2(p.x, - 1 * p.y));\n }\n else {\n ce = 2 * Math.atan(rh * this.cosX0 / (2 * this.a * this.k0 * this.ms1));\n lon = this.long0;\n if (rh <= EPSLN) {\n Chi = this.X0;\n }\n else {\n Chi = Math.asin(Math.cos(ce) * this.sinX0 + p.y * Math.sin(ce) * this.cosX0 / rh);\n lon = adjust_lon(this.long0 + Math.atan2(p.x * Math.sin(ce), rh * this.cosX0 * Math.cos(ce) - p.y * this.sinX0 * Math.sin(ce)));\n }\n lat = -1 * phi2z(this.e, Math.tan(0.5 * (HALF_PI + Chi)));\n }\n }\n p.x = lon;\n p.y = lat;\n\n //trace(p.toString());\n return p;\n\n}\n\nexport var names = [\"stere\", \"Stereographic_South_Pole\", \"Polar Stereographic (variant B)\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names,\n ssfn_: ssfn_\n};\n","/*\n references:\n Formules et constantes pour le Calcul pour la\n projection cylindrique conforme à axe oblique et pour la transformation entre\n des systèmes de référence.\n http://www.swisstopo.admin.ch/internet/swisstopo/fr/home/topics/survey/sys/refsys/switzerland.parsysrelated1.31216.downloadList.77004.DownloadFile.tmp/swissprojectionfr.pdf\n */\n\nexport function init() {\n var phy0 = this.lat0;\n this.lambda0 = this.long0;\n var sinPhy0 = Math.sin(phy0);\n var semiMajorAxis = this.a;\n var invF = this.rf;\n var flattening = 1 / invF;\n var e2 = 2 * flattening - Math.pow(flattening, 2);\n var e = this.e = Math.sqrt(e2);\n this.R = this.k0 * semiMajorAxis * Math.sqrt(1 - e2) / (1 - e2 * Math.pow(sinPhy0, 2));\n this.alpha = Math.sqrt(1 + e2 / (1 - e2) * Math.pow(Math.cos(phy0), 4));\n this.b0 = Math.asin(sinPhy0 / this.alpha);\n var k1 = Math.log(Math.tan(Math.PI / 4 + this.b0 / 2));\n var k2 = Math.log(Math.tan(Math.PI / 4 + phy0 / 2));\n var k3 = Math.log((1 + e * sinPhy0) / (1 - e * sinPhy0));\n this.K = k1 - this.alpha * k2 + this.alpha * e / 2 * k3;\n}\n\nexport function forward(p) {\n var Sa1 = Math.log(Math.tan(Math.PI / 4 - p.y / 2));\n var Sa2 = this.e / 2 * Math.log((1 + this.e * Math.sin(p.y)) / (1 - this.e * Math.sin(p.y)));\n var S = -this.alpha * (Sa1 + Sa2) + this.K;\n\n // spheric latitude\n var b = 2 * (Math.atan(Math.exp(S)) - Math.PI / 4);\n\n // spheric longitude\n var I = this.alpha * (p.x - this.lambda0);\n\n // psoeudo equatorial rotation\n var rotI = Math.atan(Math.sin(I) / (Math.sin(this.b0) * Math.tan(b) + Math.cos(this.b0) * Math.cos(I)));\n\n var rotB = Math.asin(Math.cos(this.b0) * Math.sin(b) - Math.sin(this.b0) * Math.cos(b) * Math.cos(I));\n\n p.y = this.R / 2 * Math.log((1 + Math.sin(rotB)) / (1 - Math.sin(rotB))) + this.y0;\n p.x = this.R * rotI + this.x0;\n return p;\n}\n\nexport function inverse(p) {\n var Y = p.x - this.x0;\n var X = p.y - this.y0;\n\n var rotI = Y / this.R;\n var rotB = 2 * (Math.atan(Math.exp(X / this.R)) - Math.PI / 4);\n\n var b = Math.asin(Math.cos(this.b0) * Math.sin(rotB) + Math.sin(this.b0) * Math.cos(rotB) * Math.cos(rotI));\n var I = Math.atan(Math.sin(rotI) / (Math.cos(this.b0) * Math.cos(rotI) - Math.sin(this.b0) * Math.tan(rotB)));\n\n var lambda = this.lambda0 + I / this.alpha;\n\n var S = 0;\n var phy = b;\n var prevPhy = -1000;\n var iteration = 0;\n while (Math.abs(phy - prevPhy) > 0.0000001) {\n if (++iteration > 20) {\n //...reportError(\"omercFwdInfinity\");\n return;\n }\n //S = Math.log(Math.tan(Math.PI / 4 + phy / 2));\n S = 1 / this.alpha * (Math.log(Math.tan(Math.PI / 4 + b / 2)) - this.K) + this.e * Math.log(Math.tan(Math.PI / 4 + Math.asin(this.e * Math.sin(phy)) / 2));\n prevPhy = phy;\n phy = 2 * Math.atan(Math.exp(S)) - Math.PI / 2;\n }\n\n p.x = lambda;\n p.y = phy;\n return p;\n}\n\nexport var names = [\"somerc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import tsfnz from '../common/tsfnz';\nimport adjust_lon from '../common/adjust_lon';\nimport phi2z from '../common/phi2z';\nimport {EPSLN, HALF_PI, FORTPI} from '../constants/values';\n\n/* Initialize the Oblique Mercator projection\n ------------------------------------------*/\nexport function init() {\n this.no_off = this.no_off || false;\n this.no_rot = this.no_rot || false;\n\n if (isNaN(this.k0)) {\n this.k0 = 1;\n }\n var sinlat = Math.sin(this.lat0);\n var coslat = Math.cos(this.lat0);\n var con = this.e * sinlat;\n\n this.bl = Math.sqrt(1 + this.es / (1 - this.es) * Math.pow(coslat, 4));\n this.al = this.a * this.bl * this.k0 * Math.sqrt(1 - this.es) / (1 - con * con);\n var t0 = tsfnz(this.e, this.lat0, sinlat);\n var dl = this.bl / coslat * Math.sqrt((1 - this.es) / (1 - con * con));\n if (dl * dl < 1) {\n dl = 1;\n }\n var fl;\n var gl;\n if (!isNaN(this.longc)) {\n //Central point and azimuth method\n\n if (this.lat0 >= 0) {\n fl = dl + Math.sqrt(dl * dl - 1);\n }\n else {\n fl = dl - Math.sqrt(dl * dl - 1);\n }\n this.el = fl * Math.pow(t0, this.bl);\n gl = 0.5 * (fl - 1 / fl);\n this.gamma0 = Math.asin(Math.sin(this.alpha) / dl);\n this.long0 = this.longc - Math.asin(gl * Math.tan(this.gamma0)) / this.bl;\n\n }\n else {\n //2 points method\n var t1 = tsfnz(this.e, this.lat1, Math.sin(this.lat1));\n var t2 = tsfnz(this.e, this.lat2, Math.sin(this.lat2));\n if (this.lat0 >= 0) {\n this.el = (dl + Math.sqrt(dl * dl - 1)) * Math.pow(t0, this.bl);\n }\n else {\n this.el = (dl - Math.sqrt(dl * dl - 1)) * Math.pow(t0, this.bl);\n }\n var hl = Math.pow(t1, this.bl);\n var ll = Math.pow(t2, this.bl);\n fl = this.el / hl;\n gl = 0.5 * (fl - 1 / fl);\n var jl = (this.el * this.el - ll * hl) / (this.el * this.el + ll * hl);\n var pl = (ll - hl) / (ll + hl);\n var dlon12 = adjust_lon(this.long1 - this.long2);\n this.long0 = 0.5 * (this.long1 + this.long2) - Math.atan(jl * Math.tan(0.5 * this.bl * (dlon12)) / pl) / this.bl;\n this.long0 = adjust_lon(this.long0);\n var dlon10 = adjust_lon(this.long1 - this.long0);\n this.gamma0 = Math.atan(Math.sin(this.bl * (dlon10)) / gl);\n this.alpha = Math.asin(dl * Math.sin(this.gamma0));\n }\n\n if (this.no_off) {\n this.uc = 0;\n }\n else {\n if (this.lat0 >= 0) {\n this.uc = this.al / this.bl * Math.atan2(Math.sqrt(dl * dl - 1), Math.cos(this.alpha));\n }\n else {\n this.uc = -1 * this.al / this.bl * Math.atan2(Math.sqrt(dl * dl - 1), Math.cos(this.alpha));\n }\n }\n\n}\n\n/* Oblique Mercator forward equations--mapping lat,long to x,y\n ----------------------------------------------------------*/\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n var dlon = adjust_lon(lon - this.long0);\n var us, vs;\n var con;\n if (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN) {\n if (lat > 0) {\n con = -1;\n }\n else {\n con = 1;\n }\n vs = this.al / this.bl * Math.log(Math.tan(FORTPI + con * this.gamma0 * 0.5));\n us = -1 * con * HALF_PI * this.al / this.bl;\n }\n else {\n var t = tsfnz(this.e, lat, Math.sin(lat));\n var ql = this.el / Math.pow(t, this.bl);\n var sl = 0.5 * (ql - 1 / ql);\n var tl = 0.5 * (ql + 1 / ql);\n var vl = Math.sin(this.bl * (dlon));\n var ul = (sl * Math.sin(this.gamma0) - vl * Math.cos(this.gamma0)) / tl;\n if (Math.abs(Math.abs(ul) - 1) <= EPSLN) {\n vs = Number.POSITIVE_INFINITY;\n }\n else {\n vs = 0.5 * this.al * Math.log((1 - ul) / (1 + ul)) / this.bl;\n }\n if (Math.abs(Math.cos(this.bl * (dlon))) <= EPSLN) {\n us = this.al * this.bl * (dlon);\n }\n else {\n us = this.al * Math.atan2(sl * Math.cos(this.gamma0) + vl * Math.sin(this.gamma0), Math.cos(this.bl * dlon)) / this.bl;\n }\n }\n\n if (this.no_rot) {\n p.x = this.x0 + us;\n p.y = this.y0 + vs;\n }\n else {\n\n us -= this.uc;\n p.x = this.x0 + vs * Math.cos(this.alpha) + us * Math.sin(this.alpha);\n p.y = this.y0 + us * Math.cos(this.alpha) - vs * Math.sin(this.alpha);\n }\n return p;\n}\n\nexport function inverse(p) {\n var us, vs;\n if (this.no_rot) {\n vs = p.y - this.y0;\n us = p.x - this.x0;\n }\n else {\n vs = (p.x - this.x0) * Math.cos(this.alpha) - (p.y - this.y0) * Math.sin(this.alpha);\n us = (p.y - this.y0) * Math.cos(this.alpha) + (p.x - this.x0) * Math.sin(this.alpha);\n us += this.uc;\n }\n var qp = Math.exp(-1 * this.bl * vs / this.al);\n var sp = 0.5 * (qp - 1 / qp);\n var tp = 0.5 * (qp + 1 / qp);\n var vp = Math.sin(this.bl * us / this.al);\n var up = (vp * Math.cos(this.gamma0) + sp * Math.sin(this.gamma0)) / tp;\n var ts = Math.pow(this.el / Math.sqrt((1 + up) / (1 - up)), 1 / this.bl);\n if (Math.abs(up - 1) < EPSLN) {\n p.x = this.long0;\n p.y = HALF_PI;\n }\n else if (Math.abs(up + 1) < EPSLN) {\n p.x = this.long0;\n p.y = -1 * HALF_PI;\n }\n else {\n p.y = phi2z(this.e, ts);\n p.x = adjust_lon(this.long0 - Math.atan2(sp * Math.cos(this.gamma0) - vp * Math.sin(this.gamma0), Math.cos(this.bl * us / this.al)) / this.bl);\n }\n return p;\n}\n\nexport var names = [\"Hotine_Oblique_Mercator\", \"Hotine Oblique Mercator\", \"Hotine_Oblique_Mercator_Azimuth_Natural_Origin\", \"Hotine_Oblique_Mercator_Azimuth_Center\", \"omerc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import msfnz from '../common/msfnz';\nimport tsfnz from '../common/tsfnz';\nimport sign from '../common/sign';\nimport adjust_lon from '../common/adjust_lon';\nimport phi2z from '../common/phi2z';\nimport {HALF_PI, EPSLN} from '../constants/values';\nexport function init() {\n\n // array of: r_maj,r_min,lat1,lat2,c_lon,c_lat,false_east,false_north\n //double c_lat; /* center latitude */\n //double c_lon; /* center longitude */\n //double lat1; /* first standard parallel */\n //double lat2; /* second standard parallel */\n //double r_maj; /* major axis */\n //double r_min; /* minor axis */\n //double false_east; /* x offset in meters */\n //double false_north; /* y offset in meters */\n\n if (!this.lat2) {\n this.lat2 = this.lat1;\n } //if lat2 is not defined\n if (!this.k0) {\n this.k0 = 1;\n }\n this.x0 = this.x0 || 0;\n this.y0 = this.y0 || 0;\n // Standard Parallels cannot be equal and on opposite sides of the equator\n if (Math.abs(this.lat1 + this.lat2) < EPSLN) {\n return;\n }\n\n var temp = this.b / this.a;\n this.e = Math.sqrt(1 - temp * temp);\n\n var sin1 = Math.sin(this.lat1);\n var cos1 = Math.cos(this.lat1);\n var ms1 = msfnz(this.e, sin1, cos1);\n var ts1 = tsfnz(this.e, this.lat1, sin1);\n\n var sin2 = Math.sin(this.lat2);\n var cos2 = Math.cos(this.lat2);\n var ms2 = msfnz(this.e, sin2, cos2);\n var ts2 = tsfnz(this.e, this.lat2, sin2);\n\n var ts0 = tsfnz(this.e, this.lat0, Math.sin(this.lat0));\n\n if (Math.abs(this.lat1 - this.lat2) > EPSLN) {\n this.ns = Math.log(ms1 / ms2) / Math.log(ts1 / ts2);\n }\n else {\n this.ns = sin1;\n }\n if (isNaN(this.ns)) {\n this.ns = sin1;\n }\n this.f0 = ms1 / (this.ns * Math.pow(ts1, this.ns));\n this.rh = this.a * this.f0 * Math.pow(ts0, this.ns);\n if (!this.title) {\n this.title = \"Lambert Conformal Conic\";\n }\n}\n\n// Lambert Conformal conic forward equations--mapping lat,long to x,y\n// -----------------------------------------------------------------\nexport function forward(p) {\n\n var lon = p.x;\n var lat = p.y;\n\n // singular cases :\n if (Math.abs(2 * Math.abs(lat) - Math.PI) <= EPSLN) {\n lat = sign(lat) * (HALF_PI - 2 * EPSLN);\n }\n\n var con = Math.abs(Math.abs(lat) - HALF_PI);\n var ts, rh1;\n if (con > EPSLN) {\n ts = tsfnz(this.e, lat, Math.sin(lat));\n rh1 = this.a * this.f0 * Math.pow(ts, this.ns);\n }\n else {\n con = lat * this.ns;\n if (con <= 0) {\n return null;\n }\n rh1 = 0;\n }\n var theta = this.ns * adjust_lon(lon - this.long0);\n p.x = this.k0 * (rh1 * Math.sin(theta)) + this.x0;\n p.y = this.k0 * (this.rh - rh1 * Math.cos(theta)) + this.y0;\n\n return p;\n}\n\n// Lambert Conformal Conic inverse equations--mapping x,y to lat/long\n// -----------------------------------------------------------------\nexport function inverse(p) {\n\n var rh1, con, ts;\n var lat, lon;\n var x = (p.x - this.x0) / this.k0;\n var y = (this.rh - (p.y - this.y0) / this.k0);\n if (this.ns > 0) {\n rh1 = Math.sqrt(x * x + y * y);\n con = 1;\n }\n else {\n rh1 = -Math.sqrt(x * x + y * y);\n con = -1;\n }\n var theta = 0;\n if (rh1 !== 0) {\n theta = Math.atan2((con * x), (con * y));\n }\n if ((rh1 !== 0) || (this.ns > 0)) {\n con = 1 / this.ns;\n ts = Math.pow((rh1 / (this.a * this.f0)), con);\n lat = phi2z(this.e, ts);\n if (lat === -9999) {\n return null;\n }\n }\n else {\n lat = -HALF_PI;\n }\n lon = adjust_lon(theta / this.ns + this.long0);\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"Lambert Tangential Conformal Conic Projection\", \"Lambert_Conformal_Conic\", \"Lambert_Conformal_Conic_2SP\", \"lcc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\n\nexport function init() {\n this.a = 6377397.155;\n this.es = 0.006674372230614;\n this.e = Math.sqrt(this.es);\n if (!this.lat0) {\n this.lat0 = 0.863937979737193;\n }\n if (!this.long0) {\n this.long0 = 0.7417649320975901 - 0.308341501185665;\n }\n /* if scale not set default to 0.9999 */\n if (!this.k0) {\n this.k0 = 0.9999;\n }\n this.s45 = 0.785398163397448; /* 45 */\n this.s90 = 2 * this.s45;\n this.fi0 = this.lat0;\n this.e2 = this.es;\n this.e = Math.sqrt(this.e2);\n this.alfa = Math.sqrt(1 + (this.e2 * Math.pow(Math.cos(this.fi0), 4)) / (1 - this.e2));\n this.uq = 1.04216856380474;\n this.u0 = Math.asin(Math.sin(this.fi0) / this.alfa);\n this.g = Math.pow((1 + this.e * Math.sin(this.fi0)) / (1 - this.e * Math.sin(this.fi0)), this.alfa * this.e / 2);\n this.k = Math.tan(this.u0 / 2 + this.s45) / Math.pow(Math.tan(this.fi0 / 2 + this.s45), this.alfa) * this.g;\n this.k1 = this.k0;\n this.n0 = this.a * Math.sqrt(1 - this.e2) / (1 - this.e2 * Math.pow(Math.sin(this.fi0), 2));\n this.s0 = 1.37008346281555;\n this.n = Math.sin(this.s0);\n this.ro0 = this.k1 * this.n0 / Math.tan(this.s0);\n this.ad = this.s90 - this.uq;\n}\n\n/* ellipsoid */\n/* calculate xy from lat/lon */\n/* Constants, identical to inverse transform function */\nexport function forward(p) {\n var gfi, u, deltav, s, d, eps, ro;\n var lon = p.x;\n var lat = p.y;\n var delta_lon = adjust_lon(lon - this.long0);\n /* Transformation */\n gfi = Math.pow(((1 + this.e * Math.sin(lat)) / (1 - this.e * Math.sin(lat))), (this.alfa * this.e / 2));\n u = 2 * (Math.atan(this.k * Math.pow(Math.tan(lat / 2 + this.s45), this.alfa) / gfi) - this.s45);\n deltav = -delta_lon * this.alfa;\n s = Math.asin(Math.cos(this.ad) * Math.sin(u) + Math.sin(this.ad) * Math.cos(u) * Math.cos(deltav));\n d = Math.asin(Math.cos(u) * Math.sin(deltav) / Math.cos(s));\n eps = this.n * d;\n ro = this.ro0 * Math.pow(Math.tan(this.s0 / 2 + this.s45), this.n) / Math.pow(Math.tan(s / 2 + this.s45), this.n);\n p.y = ro * Math.cos(eps) / 1;\n p.x = ro * Math.sin(eps) / 1;\n\n if (!this.czech) {\n p.y *= -1;\n p.x *= -1;\n }\n return (p);\n}\n\n/* calculate lat/lon from xy */\nexport function inverse(p) {\n var u, deltav, s, d, eps, ro, fi1;\n var ok;\n\n /* Transformation */\n /* revert y, x*/\n var tmp = p.x;\n p.x = p.y;\n p.y = tmp;\n if (!this.czech) {\n p.y *= -1;\n p.x *= -1;\n }\n ro = Math.sqrt(p.x * p.x + p.y * p.y);\n eps = Math.atan2(p.y, p.x);\n d = eps / Math.sin(this.s0);\n s = 2 * (Math.atan(Math.pow(this.ro0 / ro, 1 / this.n) * Math.tan(this.s0 / 2 + this.s45)) - this.s45);\n u = Math.asin(Math.cos(this.ad) * Math.sin(s) - Math.sin(this.ad) * Math.cos(s) * Math.cos(d));\n deltav = Math.asin(Math.cos(s) * Math.sin(d) / Math.cos(u));\n p.x = this.long0 - deltav / this.alfa;\n fi1 = u;\n ok = 0;\n var iter = 0;\n do {\n p.y = 2 * (Math.atan(Math.pow(this.k, - 1 / this.alfa) * Math.pow(Math.tan(u / 2 + this.s45), 1 / this.alfa) * Math.pow((1 + this.e * Math.sin(fi1)) / (1 - this.e * Math.sin(fi1)), this.e / 2)) - this.s45);\n if (Math.abs(fi1 - p.y) < 0.0000000001) {\n ok = 1;\n }\n fi1 = p.y;\n iter += 1;\n } while (ok === 0 && iter < 15);\n if (iter >= 15) {\n return null;\n }\n\n return (p);\n}\n\nexport var names = [\"Krovak\", \"krovak\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","export default function(e0, e1, e2, e3, phi) {\n return (e0 * phi - e1 * Math.sin(2 * phi) + e2 * Math.sin(4 * phi) - e3 * Math.sin(6 * phi));\n}","export default function(x) {\n return (1 - 0.25 * x * (1 + x / 16 * (3 + 1.25 * x)));\n}","export default function(x) {\n return (0.375 * x * (1 + 0.25 * x * (1 + 0.46875 * x)));\n}","export default function(x) {\n return (0.05859375 * x * x * (1 + 0.75 * x));\n}","export default function(x) {\n return (x * x * x * (35 / 3072));\n}","export default function(a, e, sinphi) {\n var temp = e * sinphi;\n return a / Math.sqrt(1 - temp * temp);\n}","import {HALF_PI} from '../constants/values';\nimport sign from './sign';\n\nexport default function(x) {\n return (Math.abs(x) < HALF_PI) ? x : (x - (sign(x) * Math.PI));\n}\n","export default function(ml, e0, e1, e2, e3) {\n var phi;\n var dphi;\n\n phi = ml / e0;\n for (var i = 0; i < 15; i++) {\n dphi = (ml - (e0 * phi - e1 * Math.sin(2 * phi) + e2 * Math.sin(4 * phi) - e3 * Math.sin(6 * phi))) / (e0 - 2 * e1 * Math.cos(2 * phi) + 4 * e2 * Math.cos(4 * phi) - 6 * e3 * Math.cos(6 * phi));\n phi += dphi;\n if (Math.abs(dphi) <= 0.0000000001) {\n return phi;\n }\n }\n\n //..reportError(\"IMLFN-CONV:Latitude failed to converge after 15 iterations\");\n return NaN;\n}","import mlfn from '../common/mlfn';\nimport e0fn from '../common/e0fn';\nimport e1fn from '../common/e1fn';\nimport e2fn from '../common/e2fn';\nimport e3fn from '../common/e3fn';\nimport gN from '../common/gN';\nimport adjust_lon from '../common/adjust_lon';\nimport adjust_lat from '../common/adjust_lat';\nimport imlfn from '../common/imlfn';\nimport {HALF_PI, EPSLN} from '../constants/values';\n\nexport function init() {\n if (!this.sphere) {\n this.e0 = e0fn(this.es);\n this.e1 = e1fn(this.es);\n this.e2 = e2fn(this.es);\n this.e3 = e3fn(this.es);\n this.ml0 = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0);\n }\n}\n\n/* Cassini forward equations--mapping lat,long to x,y\n -----------------------------------------------------------------------*/\nexport function forward(p) {\n\n /* Forward equations\n -----------------*/\n var x, y;\n var lam = p.x;\n var phi = p.y;\n lam = adjust_lon(lam - this.long0);\n\n if (this.sphere) {\n x = this.a * Math.asin(Math.cos(phi) * Math.sin(lam));\n y = this.a * (Math.atan2(Math.tan(phi), Math.cos(lam)) - this.lat0);\n }\n else {\n //ellipsoid\n var sinphi = Math.sin(phi);\n var cosphi = Math.cos(phi);\n var nl = gN(this.a, this.e, sinphi);\n var tl = Math.tan(phi) * Math.tan(phi);\n var al = lam * Math.cos(phi);\n var asq = al * al;\n var cl = this.es * cosphi * cosphi / (1 - this.es);\n var ml = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, phi);\n\n x = nl * al * (1 - asq * tl * (1 / 6 - (8 - tl + 8 * cl) * asq / 120));\n y = ml - this.ml0 + nl * sinphi / cosphi * asq * (0.5 + (5 - tl + 6 * cl) * asq / 24);\n\n\n }\n\n p.x = x + this.x0;\n p.y = y + this.y0;\n return p;\n}\n\n/* Inverse equations\n -----------------*/\nexport function inverse(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n var x = p.x / this.a;\n var y = p.y / this.a;\n var phi, lam;\n\n if (this.sphere) {\n var dd = y + this.lat0;\n phi = Math.asin(Math.sin(dd) * Math.cos(x));\n lam = Math.atan2(Math.tan(x), Math.cos(dd));\n }\n else {\n /* ellipsoid */\n var ml1 = this.ml0 / this.a + y;\n var phi1 = imlfn(ml1, this.e0, this.e1, this.e2, this.e3);\n if (Math.abs(Math.abs(phi1) - HALF_PI) <= EPSLN) {\n p.x = this.long0;\n p.y = HALF_PI;\n if (y < 0) {\n p.y *= -1;\n }\n return p;\n }\n var nl1 = gN(this.a, this.e, Math.sin(phi1));\n\n var rl1 = nl1 * nl1 * nl1 / this.a / this.a * (1 - this.es);\n var tl1 = Math.pow(Math.tan(phi1), 2);\n var dl = x * this.a / nl1;\n var dsq = dl * dl;\n phi = phi1 - nl1 * Math.tan(phi1) / rl1 * dl * dl * (0.5 - (1 + 3 * tl1) * dl * dl / 24);\n lam = dl * (1 - dsq * (tl1 / 3 + (1 + 3 * tl1) * tl1 * dsq / 15)) / Math.cos(phi1);\n\n }\n\n p.x = adjust_lon(lam + this.long0);\n p.y = adjust_lat(phi);\n return p;\n\n}\n\nexport var names = [\"Cassini\", \"Cassini_Soldner\", \"cass\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","export default function(eccent, sinphi) {\n var con;\n if (eccent > 1.0e-7) {\n con = eccent * sinphi;\n return ((1 - eccent * eccent) * (sinphi / (1 - con * con) - (0.5 / eccent) * Math.log((1 - con) / (1 + con))));\n }\n else {\n return (2 * sinphi);\n }\n}","\nimport {HALF_PI, EPSLN, FORTPI} from '../constants/values';\n\nimport qsfnz from '../common/qsfnz';\nimport adjust_lon from '../common/adjust_lon';\n\n/*\n reference\n \"New Equal-Area Map Projections for Noncircular Regions\", John P. Snyder,\n The American Cartographer, Vol 15, No. 4, October 1988, pp. 341-355.\n */\n\nexport var S_POLE = 1;\n\nexport var N_POLE = 2;\nexport var EQUIT = 3;\nexport var OBLIQ = 4;\n\n/* Initialize the Lambert Azimuthal Equal Area projection\n ------------------------------------------------------*/\nexport function init() {\n var t = Math.abs(this.lat0);\n if (Math.abs(t - HALF_PI) < EPSLN) {\n this.mode = this.lat0 < 0 ? this.S_POLE : this.N_POLE;\n }\n else if (Math.abs(t) < EPSLN) {\n this.mode = this.EQUIT;\n }\n else {\n this.mode = this.OBLIQ;\n }\n if (this.es > 0) {\n var sinphi;\n\n this.qp = qsfnz(this.e, 1);\n this.mmf = 0.5 / (1 - this.es);\n this.apa = authset(this.es);\n switch (this.mode) {\n case this.N_POLE:\n this.dd = 1;\n break;\n case this.S_POLE:\n this.dd = 1;\n break;\n case this.EQUIT:\n this.rq = Math.sqrt(0.5 * this.qp);\n this.dd = 1 / this.rq;\n this.xmf = 1;\n this.ymf = 0.5 * this.qp;\n break;\n case this.OBLIQ:\n this.rq = Math.sqrt(0.5 * this.qp);\n sinphi = Math.sin(this.lat0);\n this.sinb1 = qsfnz(this.e, sinphi) / this.qp;\n this.cosb1 = Math.sqrt(1 - this.sinb1 * this.sinb1);\n this.dd = Math.cos(this.lat0) / (Math.sqrt(1 - this.es * sinphi * sinphi) * this.rq * this.cosb1);\n this.ymf = (this.xmf = this.rq) / this.dd;\n this.xmf *= this.dd;\n break;\n }\n }\n else {\n if (this.mode === this.OBLIQ) {\n this.sinph0 = Math.sin(this.lat0);\n this.cosph0 = Math.cos(this.lat0);\n }\n }\n}\n\n/* Lambert Azimuthal Equal Area forward equations--mapping lat,long to x,y\n -----------------------------------------------------------------------*/\nexport function forward(p) {\n\n /* Forward equations\n -----------------*/\n var x, y, coslam, sinlam, sinphi, q, sinb, cosb, b, cosphi;\n var lam = p.x;\n var phi = p.y;\n\n lam = adjust_lon(lam - this.long0);\n if (this.sphere) {\n sinphi = Math.sin(phi);\n cosphi = Math.cos(phi);\n coslam = Math.cos(lam);\n if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {\n y = (this.mode === this.EQUIT) ? 1 + cosphi * coslam : 1 + this.sinph0 * sinphi + this.cosph0 * cosphi * coslam;\n if (y <= EPSLN) {\n return null;\n }\n y = Math.sqrt(2 / y);\n x = y * cosphi * Math.sin(lam);\n y *= (this.mode === this.EQUIT) ? sinphi : this.cosph0 * sinphi - this.sinph0 * cosphi * coslam;\n }\n else if (this.mode === this.N_POLE || this.mode === this.S_POLE) {\n if (this.mode === this.N_POLE) {\n coslam = -coslam;\n }\n if (Math.abs(phi + this.lat0) < EPSLN) {\n return null;\n }\n y = FORTPI - phi * 0.5;\n y = 2 * ((this.mode === this.S_POLE) ? Math.cos(y) : Math.sin(y));\n x = y * Math.sin(lam);\n y *= coslam;\n }\n }\n else {\n sinb = 0;\n cosb = 0;\n b = 0;\n coslam = Math.cos(lam);\n sinlam = Math.sin(lam);\n sinphi = Math.sin(phi);\n q = qsfnz(this.e, sinphi);\n if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {\n sinb = q / this.qp;\n cosb = Math.sqrt(1 - sinb * sinb);\n }\n switch (this.mode) {\n case this.OBLIQ:\n b = 1 + this.sinb1 * sinb + this.cosb1 * cosb * coslam;\n break;\n case this.EQUIT:\n b = 1 + cosb * coslam;\n break;\n case this.N_POLE:\n b = HALF_PI + phi;\n q = this.qp - q;\n break;\n case this.S_POLE:\n b = phi - HALF_PI;\n q = this.qp + q;\n break;\n }\n if (Math.abs(b) < EPSLN) {\n return null;\n }\n switch (this.mode) {\n case this.OBLIQ:\n case this.EQUIT:\n b = Math.sqrt(2 / b);\n if (this.mode === this.OBLIQ) {\n y = this.ymf * b * (this.cosb1 * sinb - this.sinb1 * cosb * coslam);\n }\n else {\n y = (b = Math.sqrt(2 / (1 + cosb * coslam))) * sinb * this.ymf;\n }\n x = this.xmf * b * cosb * sinlam;\n break;\n case this.N_POLE:\n case this.S_POLE:\n if (q >= 0) {\n x = (b = Math.sqrt(q)) * sinlam;\n y = coslam * ((this.mode === this.S_POLE) ? b : -b);\n }\n else {\n x = y = 0;\n }\n break;\n }\n }\n\n p.x = this.a * x + this.x0;\n p.y = this.a * y + this.y0;\n return p;\n}\n\n/* Inverse equations\n -----------------*/\nexport function inverse(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n var x = p.x / this.a;\n var y = p.y / this.a;\n var lam, phi, cCe, sCe, q, rho, ab;\n if (this.sphere) {\n var cosz = 0,\n rh, sinz = 0;\n\n rh = Math.sqrt(x * x + y * y);\n phi = rh * 0.5;\n if (phi > 1) {\n return null;\n }\n phi = 2 * Math.asin(phi);\n if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {\n sinz = Math.sin(phi);\n cosz = Math.cos(phi);\n }\n switch (this.mode) {\n case this.EQUIT:\n phi = (Math.abs(rh) <= EPSLN) ? 0 : Math.asin(y * sinz / rh);\n x *= sinz;\n y = cosz * rh;\n break;\n case this.OBLIQ:\n phi = (Math.abs(rh) <= EPSLN) ? this.lat0 : Math.asin(cosz * this.sinph0 + y * sinz * this.cosph0 / rh);\n x *= sinz * this.cosph0;\n y = (cosz - Math.sin(phi) * this.sinph0) * rh;\n break;\n case this.N_POLE:\n y = -y;\n phi = HALF_PI - phi;\n break;\n case this.S_POLE:\n phi -= HALF_PI;\n break;\n }\n lam = (y === 0 && (this.mode === this.EQUIT || this.mode === this.OBLIQ)) ? 0 : Math.atan2(x, y);\n }\n else {\n ab = 0;\n if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {\n x /= this.dd;\n y *= this.dd;\n rho = Math.sqrt(x * x + y * y);\n if (rho < EPSLN) {\n p.x = this.long0;\n p.y = this.lat0;\n return p;\n }\n sCe = 2 * Math.asin(0.5 * rho / this.rq);\n cCe = Math.cos(sCe);\n x *= (sCe = Math.sin(sCe));\n if (this.mode === this.OBLIQ) {\n ab = cCe * this.sinb1 + y * sCe * this.cosb1 / rho;\n q = this.qp * ab;\n y = rho * this.cosb1 * cCe - y * this.sinb1 * sCe;\n }\n else {\n ab = y * sCe / rho;\n q = this.qp * ab;\n y = rho * cCe;\n }\n }\n else if (this.mode === this.N_POLE || this.mode === this.S_POLE) {\n if (this.mode === this.N_POLE) {\n y = -y;\n }\n q = (x * x + y * y);\n if (!q) {\n p.x = this.long0;\n p.y = this.lat0;\n return p;\n }\n ab = 1 - q / this.qp;\n if (this.mode === this.S_POLE) {\n ab = -ab;\n }\n }\n lam = Math.atan2(x, y);\n phi = authlat(Math.asin(ab), this.apa);\n }\n\n p.x = adjust_lon(this.long0 + lam);\n p.y = phi;\n return p;\n}\n\n/* determine latitude from authalic latitude */\nvar P00 = 0.33333333333333333333;\n\nvar P01 = 0.17222222222222222222;\nvar P02 = 0.10257936507936507936;\nvar P10 = 0.06388888888888888888;\nvar P11 = 0.06640211640211640211;\nvar P20 = 0.01641501294219154443;\n\nfunction authset(es) {\n var t;\n var APA = [];\n APA[0] = es * P00;\n t = es * es;\n APA[0] += t * P01;\n APA[1] = t * P10;\n t *= es;\n APA[0] += t * P02;\n APA[1] += t * P11;\n APA[2] = t * P20;\n return APA;\n}\n\nfunction authlat(beta, APA) {\n var t = beta + beta;\n return (beta + APA[0] * Math.sin(t) + APA[1] * Math.sin(t + t) + APA[2] * Math.sin(t + t + t));\n}\n\nexport var names = [\"Lambert Azimuthal Equal Area\", \"Lambert_Azimuthal_Equal_Area\", \"laea\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names,\n S_POLE: S_POLE,\n N_POLE: N_POLE,\n EQUIT: EQUIT,\n OBLIQ: OBLIQ\n};\n","export default function(x) {\n if (Math.abs(x) > 1) {\n x = (x > 1) ? 1 : -1;\n }\n return Math.asin(x);\n}","import msfnz from '../common/msfnz';\nimport qsfnz from '../common/qsfnz';\nimport adjust_lon from '../common/adjust_lon';\nimport asinz from '../common/asinz';\nimport {EPSLN} from '../constants/values';\n\nexport function init() {\n\n if (Math.abs(this.lat1 + this.lat2) < EPSLN) {\n return;\n }\n this.temp = this.b / this.a;\n this.es = 1 - Math.pow(this.temp, 2);\n this.e3 = Math.sqrt(this.es);\n\n this.sin_po = Math.sin(this.lat1);\n this.cos_po = Math.cos(this.lat1);\n this.t1 = this.sin_po;\n this.con = this.sin_po;\n this.ms1 = msfnz(this.e3, this.sin_po, this.cos_po);\n this.qs1 = qsfnz(this.e3, this.sin_po, this.cos_po);\n\n this.sin_po = Math.sin(this.lat2);\n this.cos_po = Math.cos(this.lat2);\n this.t2 = this.sin_po;\n this.ms2 = msfnz(this.e3, this.sin_po, this.cos_po);\n this.qs2 = qsfnz(this.e3, this.sin_po, this.cos_po);\n\n this.sin_po = Math.sin(this.lat0);\n this.cos_po = Math.cos(this.lat0);\n this.t3 = this.sin_po;\n this.qs0 = qsfnz(this.e3, this.sin_po, this.cos_po);\n\n if (Math.abs(this.lat1 - this.lat2) > EPSLN) {\n this.ns0 = (this.ms1 * this.ms1 - this.ms2 * this.ms2) / (this.qs2 - this.qs1);\n }\n else {\n this.ns0 = this.con;\n }\n this.c = this.ms1 * this.ms1 + this.ns0 * this.qs1;\n this.rh = this.a * Math.sqrt(this.c - this.ns0 * this.qs0) / this.ns0;\n}\n\n/* Albers Conical Equal Area forward equations--mapping lat,long to x,y\n -------------------------------------------------------------------*/\nexport function forward(p) {\n\n var lon = p.x;\n var lat = p.y;\n\n this.sin_phi = Math.sin(lat);\n this.cos_phi = Math.cos(lat);\n\n var qs = qsfnz(this.e3, this.sin_phi, this.cos_phi);\n var rh1 = this.a * Math.sqrt(this.c - this.ns0 * qs) / this.ns0;\n var theta = this.ns0 * adjust_lon(lon - this.long0);\n var x = rh1 * Math.sin(theta) + this.x0;\n var y = this.rh - rh1 * Math.cos(theta) + this.y0;\n\n p.x = x;\n p.y = y;\n return p;\n}\n\nexport function inverse(p) {\n var rh1, qs, con, theta, lon, lat;\n\n p.x -= this.x0;\n p.y = this.rh - p.y + this.y0;\n if (this.ns0 >= 0) {\n rh1 = Math.sqrt(p.x * p.x + p.y * p.y);\n con = 1;\n }\n else {\n rh1 = -Math.sqrt(p.x * p.x + p.y * p.y);\n con = -1;\n }\n theta = 0;\n if (rh1 !== 0) {\n theta = Math.atan2(con * p.x, con * p.y);\n }\n con = rh1 * this.ns0 / this.a;\n if (this.sphere) {\n lat = Math.asin((this.c - con * con) / (2 * this.ns0));\n }\n else {\n qs = (this.c - con * con) / this.ns0;\n lat = this.phi1z(this.e3, qs);\n }\n\n lon = adjust_lon(theta / this.ns0 + this.long0);\n p.x = lon;\n p.y = lat;\n return p;\n}\n\n/* Function to compute phi1, the latitude for the inverse of the\n Albers Conical Equal-Area projection.\n-------------------------------------------*/\nexport function phi1z(eccent, qs) {\n var sinphi, cosphi, con, com, dphi;\n var phi = asinz(0.5 * qs);\n if (eccent < EPSLN) {\n return phi;\n }\n\n var eccnts = eccent * eccent;\n for (var i = 1; i <= 25; i++) {\n sinphi = Math.sin(phi);\n cosphi = Math.cos(phi);\n con = eccent * sinphi;\n com = 1 - con * con;\n dphi = 0.5 * com * com / cosphi * (qs / (1 - eccnts) - sinphi / com + 0.5 / eccent * Math.log((1 - con) / (1 + con)));\n phi = phi + dphi;\n if (Math.abs(dphi) <= 1e-7) {\n return phi;\n }\n }\n return null;\n}\n\nexport var names = [\"Albers_Conic_Equal_Area\", \"Albers\", \"aea\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names,\n phi1z: phi1z\n};\n","import adjust_lon from '../common/adjust_lon';\nimport asinz from '../common/asinz';\nimport {EPSLN} from '../constants/values';\n\n/*\n reference:\n Wolfram Mathworld \"Gnomonic Projection\"\n http://mathworld.wolfram.com/GnomonicProjection.html\n Accessed: 12th November 2009\n */\nexport function init() {\n\n /* Place parameters in static storage for common use\n -------------------------------------------------*/\n this.sin_p14 = Math.sin(this.lat0);\n this.cos_p14 = Math.cos(this.lat0);\n // Approximation for projecting points to the horizon (infinity)\n this.infinity_dist = 1000 * this.a;\n this.rc = 1;\n}\n\n/* Gnomonic forward equations--mapping lat,long to x,y\n ---------------------------------------------------*/\nexport function forward(p) {\n var sinphi, cosphi; /* sin and cos value */\n var dlon; /* delta longitude value */\n var coslon; /* cos of longitude */\n var ksp; /* scale factor */\n var g;\n var x, y;\n var lon = p.x;\n var lat = p.y;\n /* Forward equations\n -----------------*/\n dlon = adjust_lon(lon - this.long0);\n\n sinphi = Math.sin(lat);\n cosphi = Math.cos(lat);\n\n coslon = Math.cos(dlon);\n g = this.sin_p14 * sinphi + this.cos_p14 * cosphi * coslon;\n ksp = 1;\n if ((g > 0) || (Math.abs(g) <= EPSLN)) {\n x = this.x0 + this.a * ksp * cosphi * Math.sin(dlon) / g;\n y = this.y0 + this.a * ksp * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon) / g;\n }\n else {\n\n // Point is in the opposing hemisphere and is unprojectable\n // We still need to return a reasonable point, so we project\n // to infinity, on a bearing\n // equivalent to the northern hemisphere equivalent\n // This is a reasonable approximation for short shapes and lines that\n // straddle the horizon.\n\n x = this.x0 + this.infinity_dist * cosphi * Math.sin(dlon);\n y = this.y0 + this.infinity_dist * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon);\n\n }\n p.x = x;\n p.y = y;\n return p;\n}\n\nexport function inverse(p) {\n var rh; /* Rho */\n var sinc, cosc;\n var c;\n var lon, lat;\n\n /* Inverse equations\n -----------------*/\n p.x = (p.x - this.x0) / this.a;\n p.y = (p.y - this.y0) / this.a;\n\n p.x /= this.k0;\n p.y /= this.k0;\n\n if ((rh = Math.sqrt(p.x * p.x + p.y * p.y))) {\n c = Math.atan2(rh, this.rc);\n sinc = Math.sin(c);\n cosc = Math.cos(c);\n\n lat = asinz(cosc * this.sin_p14 + (p.y * sinc * this.cos_p14) / rh);\n lon = Math.atan2(p.x * sinc, rh * this.cos_p14 * cosc - p.y * this.sin_p14 * sinc);\n lon = adjust_lon(this.long0 + lon);\n }\n else {\n lat = this.phic0;\n lon = 0;\n }\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"gnom\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\nimport qsfnz from '../common/qsfnz';\nimport msfnz from '../common/msfnz';\nimport iqsfnz from '../common/iqsfnz';\n\n/*\n reference:\n \"Cartographic Projection Procedures for the UNIX Environment-\n A User's Manual\" by Gerald I. Evenden,\n USGS Open File Report 90-284and Release 4 Interim Reports (2003)\n*/\nexport function init() {\n //no-op\n if (!this.sphere) {\n this.k0 = msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts));\n }\n}\n\n/* Cylindrical Equal Area forward equations--mapping lat,long to x,y\n ------------------------------------------------------------*/\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n var x, y;\n /* Forward equations\n -----------------*/\n var dlon = adjust_lon(lon - this.long0);\n if (this.sphere) {\n x = this.x0 + this.a * dlon * Math.cos(this.lat_ts);\n y = this.y0 + this.a * Math.sin(lat) / Math.cos(this.lat_ts);\n }\n else {\n var qs = qsfnz(this.e, Math.sin(lat));\n x = this.x0 + this.a * this.k0 * dlon;\n y = this.y0 + this.a * qs * 0.5 / this.k0;\n }\n\n p.x = x;\n p.y = y;\n return p;\n}\n\n/* Cylindrical Equal Area inverse equations--mapping x,y to lat/long\n ------------------------------------------------------------*/\nexport function inverse(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n var lon, lat;\n\n if (this.sphere) {\n lon = adjust_lon(this.long0 + (p.x / this.a) / Math.cos(this.lat_ts));\n lat = Math.asin((p.y / this.a) * Math.cos(this.lat_ts));\n }\n else {\n lat = iqsfnz(this.e, 2 * p.y * this.k0 / this.a);\n lon = adjust_lon(this.long0 + p.x / (this.a * this.k0));\n }\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"cea\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import {HALF_PI} from '../constants/values';\n\nexport default function(eccent, q) {\n var temp = 1 - (1 - eccent * eccent) / (2 * eccent) * Math.log((1 - eccent) / (1 + eccent));\n if (Math.abs(Math.abs(q) - temp) < 1.0E-6) {\n if (q < 0) {\n return (-1 * HALF_PI);\n }\n else {\n return HALF_PI;\n }\n }\n //var phi = 0.5* q/(1-eccent*eccent);\n var phi = Math.asin(0.5 * q);\n var dphi;\n var sin_phi;\n var cos_phi;\n var con;\n for (var i = 0; i < 30; i++) {\n sin_phi = Math.sin(phi);\n cos_phi = Math.cos(phi);\n con = eccent * sin_phi;\n dphi = Math.pow(1 - con * con, 2) / (2 * cos_phi) * (q / (1 - eccent * eccent) - sin_phi / (1 - con * con) + 0.5 / eccent * Math.log((1 - con) / (1 + con)));\n phi += dphi;\n if (Math.abs(dphi) <= 0.0000000001) {\n return phi;\n }\n }\n\n //console.log(\"IQSFN-CONV:Latitude failed to converge after 30 iterations\");\n return NaN;\n}\n","import adjust_lon from '../common/adjust_lon';\nimport adjust_lat from '../common/adjust_lat';\n\nexport function init() {\n\n this.x0 = this.x0 || 0;\n this.y0 = this.y0 || 0;\n this.lat0 = this.lat0 || 0;\n this.long0 = this.long0 || 0;\n this.lat_ts = this.lat_ts || 0;\n this.title = this.title || \"Equidistant Cylindrical (Plate Carre)\";\n\n this.rc = Math.cos(this.lat_ts);\n}\n\n// forward equations--mapping lat,long to x,y\n// -----------------------------------------------------------------\nexport function forward(p) {\n\n var lon = p.x;\n var lat = p.y;\n\n var dlon = adjust_lon(lon - this.long0);\n var dlat = adjust_lat(lat - this.lat0);\n p.x = this.x0 + (this.a * dlon * this.rc);\n p.y = this.y0 + (this.a * dlat);\n return p;\n}\n\n// inverse equations--mapping x,y to lat/long\n// -----------------------------------------------------------------\nexport function inverse(p) {\n\n var x = p.x;\n var y = p.y;\n\n p.x = adjust_lon(this.long0 + ((x - this.x0) / (this.a * this.rc)));\n p.y = adjust_lat(this.lat0 + ((y - this.y0) / (this.a)));\n return p;\n}\n\nexport var names = [\"Equirectangular\", \"Equidistant_Cylindrical\", \"eqc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import e0fn from '../common/e0fn';\nimport e1fn from '../common/e1fn';\nimport e2fn from '../common/e2fn';\nimport e3fn from '../common/e3fn';\nimport adjust_lon from '../common/adjust_lon';\nimport adjust_lat from '../common/adjust_lat';\nimport mlfn from '../common/mlfn';\nimport {EPSLN} from '../constants/values';\n\nimport gN from '../common/gN';\nvar MAX_ITER = 20;\n\nexport function init() {\n /* Place parameters in static storage for common use\n -------------------------------------------------*/\n this.temp = this.b / this.a;\n this.es = 1 - Math.pow(this.temp, 2); // devait etre dans tmerc.js mais n y est pas donc je commente sinon retour de valeurs nulles\n this.e = Math.sqrt(this.es);\n this.e0 = e0fn(this.es);\n this.e1 = e1fn(this.es);\n this.e2 = e2fn(this.es);\n this.e3 = e3fn(this.es);\n this.ml0 = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0); //si que des zeros le calcul ne se fait pas\n}\n\n/* Polyconic forward equations--mapping lat,long to x,y\n ---------------------------------------------------*/\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n var x, y, el;\n var dlon = adjust_lon(lon - this.long0);\n el = dlon * Math.sin(lat);\n if (this.sphere) {\n if (Math.abs(lat) <= EPSLN) {\n x = this.a * dlon;\n y = -1 * this.a * this.lat0;\n }\n else {\n x = this.a * Math.sin(el) / Math.tan(lat);\n y = this.a * (adjust_lat(lat - this.lat0) + (1 - Math.cos(el)) / Math.tan(lat));\n }\n }\n else {\n if (Math.abs(lat) <= EPSLN) {\n x = this.a * dlon;\n y = -1 * this.ml0;\n }\n else {\n var nl = gN(this.a, this.e, Math.sin(lat)) / Math.tan(lat);\n x = nl * Math.sin(el);\n y = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, lat) - this.ml0 + nl * (1 - Math.cos(el));\n }\n\n }\n p.x = x + this.x0;\n p.y = y + this.y0;\n return p;\n}\n\n/* Inverse equations\n -----------------*/\nexport function inverse(p) {\n var lon, lat, x, y, i;\n var al, bl;\n var phi, dphi;\n x = p.x - this.x0;\n y = p.y - this.y0;\n\n if (this.sphere) {\n if (Math.abs(y + this.a * this.lat0) <= EPSLN) {\n lon = adjust_lon(x / this.a + this.long0);\n lat = 0;\n }\n else {\n al = this.lat0 + y / this.a;\n bl = x * x / this.a / this.a + al * al;\n phi = al;\n var tanphi;\n for (i = MAX_ITER; i; --i) {\n tanphi = Math.tan(phi);\n dphi = -1 * (al * (phi * tanphi + 1) - phi - 0.5 * (phi * phi + bl) * tanphi) / ((phi - al) / tanphi - 1);\n phi += dphi;\n if (Math.abs(dphi) <= EPSLN) {\n lat = phi;\n break;\n }\n }\n lon = adjust_lon(this.long0 + (Math.asin(x * Math.tan(phi) / this.a)) / Math.sin(lat));\n }\n }\n else {\n if (Math.abs(y + this.ml0) <= EPSLN) {\n lat = 0;\n lon = adjust_lon(this.long0 + x / this.a);\n }\n else {\n\n al = (this.ml0 + y) / this.a;\n bl = x * x / this.a / this.a + al * al;\n phi = al;\n var cl, mln, mlnp, ma;\n var con;\n for (i = MAX_ITER; i; --i) {\n con = this.e * Math.sin(phi);\n cl = Math.sqrt(1 - con * con) * Math.tan(phi);\n mln = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, phi);\n mlnp = this.e0 - 2 * this.e1 * Math.cos(2 * phi) + 4 * this.e2 * Math.cos(4 * phi) - 6 * this.e3 * Math.cos(6 * phi);\n ma = mln / this.a;\n dphi = (al * (cl * ma + 1) - ma - 0.5 * cl * (ma * ma + bl)) / (this.es * Math.sin(2 * phi) * (ma * ma + bl - 2 * al * ma) / (4 * cl) + (al - ma) * (cl * mlnp - 2 / Math.sin(2 * phi)) - mlnp);\n phi -= dphi;\n if (Math.abs(dphi) <= EPSLN) {\n lat = phi;\n break;\n }\n }\n\n //lat=phi4z(this.e,this.e0,this.e1,this.e2,this.e3,al,bl,0,0);\n cl = Math.sqrt(1 - this.es * Math.pow(Math.sin(lat), 2)) * Math.tan(lat);\n lon = adjust_lon(this.long0 + Math.asin(x * cl / this.a) / Math.sin(lat));\n }\n }\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"Polyconic\", \"poly\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import {SEC_TO_RAD} from '../constants/values';\n\n/*\n reference\n Department of Land and Survey Technical Circular 1973/32\n http://www.linz.govt.nz/docs/miscellaneous/nz-map-definition.pdf\n OSG Technical Report 4.1\n http://www.linz.govt.nz/docs/miscellaneous/nzmg.pdf\n */\n\n/**\n * iterations: Number of iterations to refine inverse transform.\n * 0 -> km accuracy\n * 1 -> m accuracy -- suitable for most mapping applications\n * 2 -> mm accuracy\n */\nexport var iterations = 1;\n\nexport function init() {\n this.A = [];\n this.A[1] = 0.6399175073;\n this.A[2] = -0.1358797613;\n this.A[3] = 0.063294409;\n this.A[4] = -0.02526853;\n this.A[5] = 0.0117879;\n this.A[6] = -0.0055161;\n this.A[7] = 0.0026906;\n this.A[8] = -0.001333;\n this.A[9] = 0.00067;\n this.A[10] = -0.00034;\n\n this.B_re = [];\n this.B_im = [];\n this.B_re[1] = 0.7557853228;\n this.B_im[1] = 0;\n this.B_re[2] = 0.249204646;\n this.B_im[2] = 0.003371507;\n this.B_re[3] = -0.001541739;\n this.B_im[3] = 0.041058560;\n this.B_re[4] = -0.10162907;\n this.B_im[4] = 0.01727609;\n this.B_re[5] = -0.26623489;\n this.B_im[5] = -0.36249218;\n this.B_re[6] = -0.6870983;\n this.B_im[6] = -1.1651967;\n\n this.C_re = [];\n this.C_im = [];\n this.C_re[1] = 1.3231270439;\n this.C_im[1] = 0;\n this.C_re[2] = -0.577245789;\n this.C_im[2] = -0.007809598;\n this.C_re[3] = 0.508307513;\n this.C_im[3] = -0.112208952;\n this.C_re[4] = -0.15094762;\n this.C_im[4] = 0.18200602;\n this.C_re[5] = 1.01418179;\n this.C_im[5] = 1.64497696;\n this.C_re[6] = 1.9660549;\n this.C_im[6] = 2.5127645;\n\n this.D = [];\n this.D[1] = 1.5627014243;\n this.D[2] = 0.5185406398;\n this.D[3] = -0.03333098;\n this.D[4] = -0.1052906;\n this.D[5] = -0.0368594;\n this.D[6] = 0.007317;\n this.D[7] = 0.01220;\n this.D[8] = 0.00394;\n this.D[9] = -0.0013;\n}\n\n/**\n New Zealand Map Grid Forward - long/lat to x/y\n long/lat in radians\n */\nexport function forward(p) {\n var n;\n var lon = p.x;\n var lat = p.y;\n\n var delta_lat = lat - this.lat0;\n var delta_lon = lon - this.long0;\n\n // 1. Calculate d_phi and d_psi ... // and d_lambda\n // For this algorithm, delta_latitude is in seconds of arc x 10-5, so we need to scale to those units. Longitude is radians.\n var d_phi = delta_lat / SEC_TO_RAD * 1E-5;\n var d_lambda = delta_lon;\n var d_phi_n = 1; // d_phi^0\n\n var d_psi = 0;\n for (n = 1; n <= 10; n++) {\n d_phi_n = d_phi_n * d_phi;\n d_psi = d_psi + this.A[n] * d_phi_n;\n }\n\n // 2. Calculate theta\n var th_re = d_psi;\n var th_im = d_lambda;\n\n // 3. Calculate z\n var th_n_re = 1;\n var th_n_im = 0; // theta^0\n var th_n_re1;\n var th_n_im1;\n\n var z_re = 0;\n var z_im = 0;\n for (n = 1; n <= 6; n++) {\n th_n_re1 = th_n_re * th_re - th_n_im * th_im;\n th_n_im1 = th_n_im * th_re + th_n_re * th_im;\n th_n_re = th_n_re1;\n th_n_im = th_n_im1;\n z_re = z_re + this.B_re[n] * th_n_re - this.B_im[n] * th_n_im;\n z_im = z_im + this.B_im[n] * th_n_re + this.B_re[n] * th_n_im;\n }\n\n // 4. Calculate easting and northing\n p.x = (z_im * this.a) + this.x0;\n p.y = (z_re * this.a) + this.y0;\n\n return p;\n}\n\n/**\n New Zealand Map Grid Inverse - x/y to long/lat\n */\nexport function inverse(p) {\n var n;\n var x = p.x;\n var y = p.y;\n\n var delta_x = x - this.x0;\n var delta_y = y - this.y0;\n\n // 1. Calculate z\n var z_re = delta_y / this.a;\n var z_im = delta_x / this.a;\n\n // 2a. Calculate theta - first approximation gives km accuracy\n var z_n_re = 1;\n var z_n_im = 0; // z^0\n var z_n_re1;\n var z_n_im1;\n\n var th_re = 0;\n var th_im = 0;\n for (n = 1; n <= 6; n++) {\n z_n_re1 = z_n_re * z_re - z_n_im * z_im;\n z_n_im1 = z_n_im * z_re + z_n_re * z_im;\n z_n_re = z_n_re1;\n z_n_im = z_n_im1;\n th_re = th_re + this.C_re[n] * z_n_re - this.C_im[n] * z_n_im;\n th_im = th_im + this.C_im[n] * z_n_re + this.C_re[n] * z_n_im;\n }\n\n // 2b. Iterate to refine the accuracy of the calculation\n // 0 iterations gives km accuracy\n // 1 iteration gives m accuracy -- good enough for most mapping applications\n // 2 iterations bives mm accuracy\n for (var i = 0; i < this.iterations; i++) {\n var th_n_re = th_re;\n var th_n_im = th_im;\n var th_n_re1;\n var th_n_im1;\n\n var num_re = z_re;\n var num_im = z_im;\n for (n = 2; n <= 6; n++) {\n th_n_re1 = th_n_re * th_re - th_n_im * th_im;\n th_n_im1 = th_n_im * th_re + th_n_re * th_im;\n th_n_re = th_n_re1;\n th_n_im = th_n_im1;\n num_re = num_re + (n - 1) * (this.B_re[n] * th_n_re - this.B_im[n] * th_n_im);\n num_im = num_im + (n - 1) * (this.B_im[n] * th_n_re + this.B_re[n] * th_n_im);\n }\n\n th_n_re = 1;\n th_n_im = 0;\n var den_re = this.B_re[1];\n var den_im = this.B_im[1];\n for (n = 2; n <= 6; n++) {\n th_n_re1 = th_n_re * th_re - th_n_im * th_im;\n th_n_im1 = th_n_im * th_re + th_n_re * th_im;\n th_n_re = th_n_re1;\n th_n_im = th_n_im1;\n den_re = den_re + n * (this.B_re[n] * th_n_re - this.B_im[n] * th_n_im);\n den_im = den_im + n * (this.B_im[n] * th_n_re + this.B_re[n] * th_n_im);\n }\n\n // Complex division\n var den2 = den_re * den_re + den_im * den_im;\n th_re = (num_re * den_re + num_im * den_im) / den2;\n th_im = (num_im * den_re - num_re * den_im) / den2;\n }\n\n // 3. Calculate d_phi ... // and d_lambda\n var d_psi = th_re;\n var d_lambda = th_im;\n var d_psi_n = 1; // d_psi^0\n\n var d_phi = 0;\n for (n = 1; n <= 9; n++) {\n d_psi_n = d_psi_n * d_psi;\n d_phi = d_phi + this.D[n] * d_psi_n;\n }\n\n // 4. Calculate latitude and longitude\n // d_phi is calcuated in second of arc * 10^-5, so we need to scale back to radians. d_lambda is in radians.\n var lat = this.lat0 + (d_phi * SEC_TO_RAD * 1E5);\n var lon = this.long0 + d_lambda;\n\n p.x = lon;\n p.y = lat;\n\n return p;\n}\n\nexport var names = [\"New_Zealand_Map_Grid\", \"nzmg\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\n\n/*\n reference\n \"New Equal-Area Map Projections for Noncircular Regions\", John P. Snyder,\n The American Cartographer, Vol 15, No. 4, October 1988, pp. 341-355.\n */\n\n\n/* Initialize the Miller Cylindrical projection\n -------------------------------------------*/\nexport function init() {\n //no-op\n}\n\n/* Miller Cylindrical forward equations--mapping lat,long to x,y\n ------------------------------------------------------------*/\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n /* Forward equations\n -----------------*/\n var dlon = adjust_lon(lon - this.long0);\n var x = this.x0 + this.a * dlon;\n var y = this.y0 + this.a * Math.log(Math.tan((Math.PI / 4) + (lat / 2.5))) * 1.25;\n\n p.x = x;\n p.y = y;\n return p;\n}\n\n/* Miller Cylindrical inverse equations--mapping x,y to lat/long\n ------------------------------------------------------------*/\nexport function inverse(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n\n var lon = adjust_lon(this.long0 + p.x / this.a);\n var lat = 2.5 * (Math.atan(Math.exp(0.8 * p.y / this.a)) - Math.PI / 4);\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"Miller_Cylindrical\", \"mill\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\nimport adjust_lat from '../common/adjust_lat';\nimport pj_enfn from '../common/pj_enfn';\nvar MAX_ITER = 20;\nimport pj_mlfn from '../common/pj_mlfn';\nimport pj_inv_mlfn from '../common/pj_inv_mlfn';\nimport {EPSLN, HALF_PI} from '../constants/values';\n\nimport asinz from '../common/asinz';\n\n\nexport function init() {\n /* Place parameters in static storage for common use\n -------------------------------------------------*/\n\n\n if (!this.sphere) {\n this.en = pj_enfn(this.es);\n }\n else {\n this.n = 1;\n this.m = 0;\n this.es = 0;\n this.C_y = Math.sqrt((this.m + 1) / this.n);\n this.C_x = this.C_y / (this.m + 1);\n }\n\n}\n\n/* Sinusoidal forward equations--mapping lat,long to x,y\n -----------------------------------------------------*/\nexport function forward(p) {\n var x, y;\n var lon = p.x;\n var lat = p.y;\n /* Forward equations\n -----------------*/\n lon = adjust_lon(lon - this.long0);\n\n if (this.sphere) {\n if (!this.m) {\n lat = this.n !== 1 ? Math.asin(this.n * Math.sin(lat)) : lat;\n }\n else {\n var k = this.n * Math.sin(lat);\n for (var i = MAX_ITER; i; --i) {\n var V = (this.m * lat + Math.sin(lat) - k) / (this.m + Math.cos(lat));\n lat -= V;\n if (Math.abs(V) < EPSLN) {\n break;\n }\n }\n }\n x = this.a * this.C_x * lon * (this.m + Math.cos(lat));\n y = this.a * this.C_y * lat;\n\n }\n else {\n\n var s = Math.sin(lat);\n var c = Math.cos(lat);\n y = this.a * pj_mlfn(lat, s, c, this.en);\n x = this.a * lon * c / Math.sqrt(1 - this.es * s * s);\n }\n\n p.x = x;\n p.y = y;\n return p;\n}\n\nexport function inverse(p) {\n var lat, temp, lon, s;\n\n p.x -= this.x0;\n lon = p.x / this.a;\n p.y -= this.y0;\n lat = p.y / this.a;\n\n if (this.sphere) {\n lat /= this.C_y;\n lon = lon / (this.C_x * (this.m + Math.cos(lat)));\n if (this.m) {\n lat = asinz((this.m * lat + Math.sin(lat)) / this.n);\n }\n else if (this.n !== 1) {\n lat = asinz(Math.sin(lat) / this.n);\n }\n lon = adjust_lon(lon + this.long0);\n lat = adjust_lat(lat);\n }\n else {\n lat = pj_inv_mlfn(p.y / this.a, this.es, this.en);\n s = Math.abs(lat);\n if (s < HALF_PI) {\n s = Math.sin(lat);\n temp = this.long0 + p.x * Math.sqrt(1 - this.es * s * s) / (this.a * Math.cos(lat));\n //temp = this.long0 + p.x / (this.a * Math.cos(lat));\n lon = adjust_lon(temp);\n }\n else if ((s - EPSLN) < HALF_PI) {\n lon = this.long0;\n }\n }\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"Sinusoidal\", \"sinu\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\nexport function init() {}\nimport {EPSLN} from '../constants/values';\n/* Mollweide forward equations--mapping lat,long to x,y\n ----------------------------------------------------*/\nexport function forward(p) {\n\n /* Forward equations\n -----------------*/\n var lon = p.x;\n var lat = p.y;\n\n var delta_lon = adjust_lon(lon - this.long0);\n var theta = lat;\n var con = Math.PI * Math.sin(lat);\n\n /* Iterate using the Newton-Raphson method to find theta\n -----------------------------------------------------*/\n while (true) {\n var delta_theta = -(theta + Math.sin(theta) - con) / (1 + Math.cos(theta));\n theta += delta_theta;\n if (Math.abs(delta_theta) < EPSLN) {\n break;\n }\n }\n theta /= 2;\n\n /* If the latitude is 90 deg, force the x coordinate to be \"0 + false easting\"\n this is done here because of precision problems with \"cos(theta)\"\n --------------------------------------------------------------------------*/\n if (Math.PI / 2 - Math.abs(lat) < EPSLN) {\n delta_lon = 0;\n }\n var x = 0.900316316158 * this.a * delta_lon * Math.cos(theta) + this.x0;\n var y = 1.4142135623731 * this.a * Math.sin(theta) + this.y0;\n\n p.x = x;\n p.y = y;\n return p;\n}\n\nexport function inverse(p) {\n var theta;\n var arg;\n\n /* Inverse equations\n -----------------*/\n p.x -= this.x0;\n p.y -= this.y0;\n arg = p.y / (1.4142135623731 * this.a);\n\n /* Because of division by zero problems, 'arg' can not be 1. Therefore\n a number very close to one is used instead.\n -------------------------------------------------------------------*/\n if (Math.abs(arg) > 0.999999999999) {\n arg = 0.999999999999;\n }\n theta = Math.asin(arg);\n var lon = adjust_lon(this.long0 + (p.x / (0.900316316158 * this.a * Math.cos(theta))));\n if (lon < (-Math.PI)) {\n lon = -Math.PI;\n }\n if (lon > Math.PI) {\n lon = Math.PI;\n }\n arg = (2 * theta + Math.sin(2 * theta)) / Math.PI;\n if (Math.abs(arg) > 1) {\n arg = 1;\n }\n var lat = Math.asin(arg);\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"Mollweide\", \"moll\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import e0fn from '../common/e0fn';\nimport e1fn from '../common/e1fn';\nimport e2fn from '../common/e2fn';\nimport e3fn from '../common/e3fn';\nimport msfnz from '../common/msfnz';\nimport mlfn from '../common/mlfn';\nimport adjust_lon from '../common/adjust_lon';\nimport adjust_lat from '../common/adjust_lat';\nimport imlfn from '../common/imlfn';\nimport {EPSLN} from '../constants/values';\n\nexport function init() {\n\n /* Place parameters in static storage for common use\n -------------------------------------------------*/\n // Standard Parallels cannot be equal and on opposite sides of the equator\n if (Math.abs(this.lat1 + this.lat2) < EPSLN) {\n return;\n }\n this.lat2 = this.lat2 || this.lat1;\n this.temp = this.b / this.a;\n this.es = 1 - Math.pow(this.temp, 2);\n this.e = Math.sqrt(this.es);\n this.e0 = e0fn(this.es);\n this.e1 = e1fn(this.es);\n this.e2 = e2fn(this.es);\n this.e3 = e3fn(this.es);\n\n this.sinphi = Math.sin(this.lat1);\n this.cosphi = Math.cos(this.lat1);\n\n this.ms1 = msfnz(this.e, this.sinphi, this.cosphi);\n this.ml1 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat1);\n\n if (Math.abs(this.lat1 - this.lat2) < EPSLN) {\n this.ns = this.sinphi;\n }\n else {\n this.sinphi = Math.sin(this.lat2);\n this.cosphi = Math.cos(this.lat2);\n this.ms2 = msfnz(this.e, this.sinphi, this.cosphi);\n this.ml2 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat2);\n this.ns = (this.ms1 - this.ms2) / (this.ml2 - this.ml1);\n }\n this.g = this.ml1 + this.ms1 / this.ns;\n this.ml0 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0);\n this.rh = this.a * (this.g - this.ml0);\n}\n\n/* Equidistant Conic forward equations--mapping lat,long to x,y\n -----------------------------------------------------------*/\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n var rh1;\n\n /* Forward equations\n -----------------*/\n if (this.sphere) {\n rh1 = this.a * (this.g - lat);\n }\n else {\n var ml = mlfn(this.e0, this.e1, this.e2, this.e3, lat);\n rh1 = this.a * (this.g - ml);\n }\n var theta = this.ns * adjust_lon(lon - this.long0);\n var x = this.x0 + rh1 * Math.sin(theta);\n var y = this.y0 + this.rh - rh1 * Math.cos(theta);\n p.x = x;\n p.y = y;\n return p;\n}\n\n/* Inverse equations\n -----------------*/\nexport function inverse(p) {\n p.x -= this.x0;\n p.y = this.rh - p.y + this.y0;\n var con, rh1, lat, lon;\n if (this.ns >= 0) {\n rh1 = Math.sqrt(p.x * p.x + p.y * p.y);\n con = 1;\n }\n else {\n rh1 = -Math.sqrt(p.x * p.x + p.y * p.y);\n con = -1;\n }\n var theta = 0;\n if (rh1 !== 0) {\n theta = Math.atan2(con * p.x, con * p.y);\n }\n\n if (this.sphere) {\n lon = adjust_lon(this.long0 + theta / this.ns);\n lat = adjust_lat(this.g - rh1 / this.a);\n p.x = lon;\n p.y = lat;\n return p;\n }\n else {\n var ml = this.g - rh1 / this.a;\n lat = imlfn(ml, this.e0, this.e1, this.e2, this.e3);\n lon = adjust_lon(this.long0 + theta / this.ns);\n p.x = lon;\n p.y = lat;\n return p;\n }\n\n}\n\nexport var names = [\"Equidistant_Conic\", \"eqdc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\n\nimport {HALF_PI, EPSLN} from '../constants/values';\n\nimport asinz from '../common/asinz';\n\n/* Initialize the Van Der Grinten projection\n ----------------------------------------*/\nexport function init() {\n //this.R = 6370997; //Radius of earth\n this.R = this.a;\n}\n\nexport function forward(p) {\n\n var lon = p.x;\n var lat = p.y;\n\n /* Forward equations\n -----------------*/\n var dlon = adjust_lon(lon - this.long0);\n var x, y;\n\n if (Math.abs(lat) <= EPSLN) {\n x = this.x0 + this.R * dlon;\n y = this.y0;\n }\n var theta = asinz(2 * Math.abs(lat / Math.PI));\n if ((Math.abs(dlon) <= EPSLN) || (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN)) {\n x = this.x0;\n if (lat >= 0) {\n y = this.y0 + Math.PI * this.R * Math.tan(0.5 * theta);\n }\n else {\n y = this.y0 + Math.PI * this.R * -Math.tan(0.5 * theta);\n }\n // return(OK);\n }\n var al = 0.5 * Math.abs((Math.PI / dlon) - (dlon / Math.PI));\n var asq = al * al;\n var sinth = Math.sin(theta);\n var costh = Math.cos(theta);\n\n var g = costh / (sinth + costh - 1);\n var gsq = g * g;\n var m = g * (2 / sinth - 1);\n var msq = m * m;\n var con = Math.PI * this.R * (al * (g - msq) + Math.sqrt(asq * (g - msq) * (g - msq) - (msq + asq) * (gsq - msq))) / (msq + asq);\n if (dlon < 0) {\n con = -con;\n }\n x = this.x0 + con;\n //con = Math.abs(con / (Math.PI * this.R));\n var q = asq + g;\n con = Math.PI * this.R * (m * q - al * Math.sqrt((msq + asq) * (asq + 1) - q * q)) / (msq + asq);\n if (lat >= 0) {\n //y = this.y0 + Math.PI * this.R * Math.sqrt(1 - con * con - 2 * al * con);\n y = this.y0 + con;\n }\n else {\n //y = this.y0 - Math.PI * this.R * Math.sqrt(1 - con * con - 2 * al * con);\n y = this.y0 - con;\n }\n p.x = x;\n p.y = y;\n return p;\n}\n\n/* Van Der Grinten inverse equations--mapping x,y to lat/long\n ---------------------------------------------------------*/\nexport function inverse(p) {\n var lon, lat;\n var xx, yy, xys, c1, c2, c3;\n var a1;\n var m1;\n var con;\n var th1;\n var d;\n\n /* inverse equations\n -----------------*/\n p.x -= this.x0;\n p.y -= this.y0;\n con = Math.PI * this.R;\n xx = p.x / con;\n yy = p.y / con;\n xys = xx * xx + yy * yy;\n c1 = -Math.abs(yy) * (1 + xys);\n c2 = c1 - 2 * yy * yy + xx * xx;\n c3 = -2 * c1 + 1 + 2 * yy * yy + xys * xys;\n d = yy * yy / c3 + (2 * c2 * c2 * c2 / c3 / c3 / c3 - 9 * c1 * c2 / c3 / c3) / 27;\n a1 = (c1 - c2 * c2 / 3 / c3) / c3;\n m1 = 2 * Math.sqrt(-a1 / 3);\n con = ((3 * d) / a1) / m1;\n if (Math.abs(con) > 1) {\n if (con >= 0) {\n con = 1;\n }\n else {\n con = -1;\n }\n }\n th1 = Math.acos(con) / 3;\n if (p.y >= 0) {\n lat = (-m1 * Math.cos(th1 + Math.PI / 3) - c2 / 3 / c3) * Math.PI;\n }\n else {\n lat = -(-m1 * Math.cos(th1 + Math.PI / 3) - c2 / 3 / c3) * Math.PI;\n }\n\n if (Math.abs(xx) < EPSLN) {\n lon = this.long0;\n }\n else {\n lon = adjust_lon(this.long0 + Math.PI * (xys - 1 + Math.sqrt(1 + 2 * (xx * xx - yy * yy) + xys * xys)) / 2 / xx);\n }\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"Van_der_Grinten_I\", \"VanDerGrinten\", \"vandg\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\nimport {HALF_PI, EPSLN} from '../constants/values';\n\nimport mlfn from '../common/mlfn';\nimport e0fn from '../common/e0fn';\nimport e1fn from '../common/e1fn';\nimport e2fn from '../common/e2fn';\nimport e3fn from '../common/e3fn';\nimport gN from '../common/gN';\nimport asinz from '../common/asinz';\nimport imlfn from '../common/imlfn';\n\n\n\nexport function init() {\n this.sin_p12 = Math.sin(this.lat0);\n this.cos_p12 = Math.cos(this.lat0);\n}\n\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n var sinphi = Math.sin(p.y);\n var cosphi = Math.cos(p.y);\n var dlon = adjust_lon(lon - this.long0);\n var e0, e1, e2, e3, Mlp, Ml, tanphi, Nl1, Nl, psi, Az, G, H, GH, Hs, c, kp, cos_c, s, s2, s3, s4, s5;\n if (this.sphere) {\n if (Math.abs(this.sin_p12 - 1) <= EPSLN) {\n //North Pole case\n p.x = this.x0 + this.a * (HALF_PI - lat) * Math.sin(dlon);\n p.y = this.y0 - this.a * (HALF_PI - lat) * Math.cos(dlon);\n return p;\n }\n else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {\n //South Pole case\n p.x = this.x0 + this.a * (HALF_PI + lat) * Math.sin(dlon);\n p.y = this.y0 + this.a * (HALF_PI + lat) * Math.cos(dlon);\n return p;\n }\n else {\n //default case\n cos_c = this.sin_p12 * sinphi + this.cos_p12 * cosphi * Math.cos(dlon);\n c = Math.acos(cos_c);\n kp = c ? c / Math.sin(c) : 1;\n p.x = this.x0 + this.a * kp * cosphi * Math.sin(dlon);\n p.y = this.y0 + this.a * kp * (this.cos_p12 * sinphi - this.sin_p12 * cosphi * Math.cos(dlon));\n return p;\n }\n }\n else {\n e0 = e0fn(this.es);\n e1 = e1fn(this.es);\n e2 = e2fn(this.es);\n e3 = e3fn(this.es);\n if (Math.abs(this.sin_p12 - 1) <= EPSLN) {\n //North Pole case\n Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);\n Ml = this.a * mlfn(e0, e1, e2, e3, lat);\n p.x = this.x0 + (Mlp - Ml) * Math.sin(dlon);\n p.y = this.y0 - (Mlp - Ml) * Math.cos(dlon);\n return p;\n }\n else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {\n //South Pole case\n Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);\n Ml = this.a * mlfn(e0, e1, e2, e3, lat);\n p.x = this.x0 + (Mlp + Ml) * Math.sin(dlon);\n p.y = this.y0 + (Mlp + Ml) * Math.cos(dlon);\n return p;\n }\n else {\n //Default case\n tanphi = sinphi / cosphi;\n Nl1 = gN(this.a, this.e, this.sin_p12);\n Nl = gN(this.a, this.e, sinphi);\n psi = Math.atan((1 - this.es) * tanphi + this.es * Nl1 * this.sin_p12 / (Nl * cosphi));\n Az = Math.atan2(Math.sin(dlon), this.cos_p12 * Math.tan(psi) - this.sin_p12 * Math.cos(dlon));\n if (Az === 0) {\n s = Math.asin(this.cos_p12 * Math.sin(psi) - this.sin_p12 * Math.cos(psi));\n }\n else if (Math.abs(Math.abs(Az) - Math.PI) <= EPSLN) {\n s = -Math.asin(this.cos_p12 * Math.sin(psi) - this.sin_p12 * Math.cos(psi));\n }\n else {\n s = Math.asin(Math.sin(dlon) * Math.cos(psi) / Math.sin(Az));\n }\n G = this.e * this.sin_p12 / Math.sqrt(1 - this.es);\n H = this.e * this.cos_p12 * Math.cos(Az) / Math.sqrt(1 - this.es);\n GH = G * H;\n Hs = H * H;\n s2 = s * s;\n s3 = s2 * s;\n s4 = s3 * s;\n s5 = s4 * s;\n c = Nl1 * s * (1 - s2 * Hs * (1 - Hs) / 6 + s3 / 8 * GH * (1 - 2 * Hs) + s4 / 120 * (Hs * (4 - 7 * Hs) - 3 * G * G * (1 - 7 * Hs)) - s5 / 48 * GH);\n p.x = this.x0 + c * Math.sin(Az);\n p.y = this.y0 + c * Math.cos(Az);\n return p;\n }\n }\n\n\n}\n\nexport function inverse(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n var rh, z, sinz, cosz, lon, lat, con, e0, e1, e2, e3, Mlp, M, N1, psi, Az, cosAz, tmp, A, B, D, Ee, F, sinpsi;\n if (this.sphere) {\n rh = Math.sqrt(p.x * p.x + p.y * p.y);\n if (rh > (2 * HALF_PI * this.a)) {\n return;\n }\n z = rh / this.a;\n\n sinz = Math.sin(z);\n cosz = Math.cos(z);\n\n lon = this.long0;\n if (Math.abs(rh) <= EPSLN) {\n lat = this.lat0;\n }\n else {\n lat = asinz(cosz * this.sin_p12 + (p.y * sinz * this.cos_p12) / rh);\n con = Math.abs(this.lat0) - HALF_PI;\n if (Math.abs(con) <= EPSLN) {\n if (this.lat0 >= 0) {\n lon = adjust_lon(this.long0 + Math.atan2(p.x, - p.y));\n }\n else {\n lon = adjust_lon(this.long0 - Math.atan2(-p.x, p.y));\n }\n }\n else {\n /*con = cosz - this.sin_p12 * Math.sin(lat);\n if ((Math.abs(con) < EPSLN) && (Math.abs(p.x) < EPSLN)) {\n //no-op, just keep the lon value as is\n } else {\n var temp = Math.atan2((p.x * sinz * this.cos_p12), (con * rh));\n lon = adjust_lon(this.long0 + Math.atan2((p.x * sinz * this.cos_p12), (con * rh)));\n }*/\n lon = adjust_lon(this.long0 + Math.atan2(p.x * sinz, rh * this.cos_p12 * cosz - p.y * this.sin_p12 * sinz));\n }\n }\n\n p.x = lon;\n p.y = lat;\n return p;\n }\n else {\n e0 = e0fn(this.es);\n e1 = e1fn(this.es);\n e2 = e2fn(this.es);\n e3 = e3fn(this.es);\n if (Math.abs(this.sin_p12 - 1) <= EPSLN) {\n //North pole case\n Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);\n rh = Math.sqrt(p.x * p.x + p.y * p.y);\n M = Mlp - rh;\n lat = imlfn(M / this.a, e0, e1, e2, e3);\n lon = adjust_lon(this.long0 + Math.atan2(p.x, - 1 * p.y));\n p.x = lon;\n p.y = lat;\n return p;\n }\n else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {\n //South pole case\n Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);\n rh = Math.sqrt(p.x * p.x + p.y * p.y);\n M = rh - Mlp;\n\n lat = imlfn(M / this.a, e0, e1, e2, e3);\n lon = adjust_lon(this.long0 + Math.atan2(p.x, p.y));\n p.x = lon;\n p.y = lat;\n return p;\n }\n else {\n //default case\n rh = Math.sqrt(p.x * p.x + p.y * p.y);\n Az = Math.atan2(p.x, p.y);\n N1 = gN(this.a, this.e, this.sin_p12);\n cosAz = Math.cos(Az);\n tmp = this.e * this.cos_p12 * cosAz;\n A = -tmp * tmp / (1 - this.es);\n B = 3 * this.es * (1 - A) * this.sin_p12 * this.cos_p12 * cosAz / (1 - this.es);\n D = rh / N1;\n Ee = D - A * (1 + A) * Math.pow(D, 3) / 6 - B * (1 + 3 * A) * Math.pow(D, 4) / 24;\n F = 1 - A * Ee * Ee / 2 - D * Ee * Ee * Ee / 6;\n psi = Math.asin(this.sin_p12 * Math.cos(Ee) + this.cos_p12 * Math.sin(Ee) * cosAz);\n lon = adjust_lon(this.long0 + Math.asin(Math.sin(Az) * Math.sin(Ee) / Math.cos(psi)));\n sinpsi = Math.sin(psi);\n lat = Math.atan2((sinpsi - this.es * F * this.sin_p12) * Math.tan(psi), sinpsi * (1 - this.es));\n p.x = lon;\n p.y = lat;\n return p;\n }\n }\n\n}\n\nexport var names = [\"Azimuthal_Equidistant\", \"aeqd\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\nimport asinz from '../common/asinz';\nimport {EPSLN, HALF_PI} from '../constants/values';\n\nexport function init() {\n //double temp; /* temporary variable */\n\n /* Place parameters in static storage for common use\n -------------------------------------------------*/\n this.sin_p14 = Math.sin(this.lat0);\n this.cos_p14 = Math.cos(this.lat0);\n}\n\n/* Orthographic forward equations--mapping lat,long to x,y\n ---------------------------------------------------*/\nexport function forward(p) {\n var sinphi, cosphi; /* sin and cos value */\n var dlon; /* delta longitude value */\n var coslon; /* cos of longitude */\n var ksp; /* scale factor */\n var g, x, y;\n var lon = p.x;\n var lat = p.y;\n /* Forward equations\n -----------------*/\n dlon = adjust_lon(lon - this.long0);\n\n sinphi = Math.sin(lat);\n cosphi = Math.cos(lat);\n\n coslon = Math.cos(dlon);\n g = this.sin_p14 * sinphi + this.cos_p14 * cosphi * coslon;\n ksp = 1;\n if ((g > 0) || (Math.abs(g) <= EPSLN)) {\n x = this.a * ksp * cosphi * Math.sin(dlon);\n y = this.y0 + this.a * ksp * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon);\n }\n p.x = x;\n p.y = y;\n return p;\n}\n\nexport function inverse(p) {\n var rh; /* height above ellipsoid */\n var z; /* angle */\n var sinz, cosz; /* sin of z and cos of z */\n var con;\n var lon, lat;\n /* Inverse equations\n -----------------*/\n p.x -= this.x0;\n p.y -= this.y0;\n rh = Math.sqrt(p.x * p.x + p.y * p.y);\n z = asinz(rh / this.a);\n\n sinz = Math.sin(z);\n cosz = Math.cos(z);\n\n lon = this.long0;\n if (Math.abs(rh) <= EPSLN) {\n lat = this.lat0;\n p.x = lon;\n p.y = lat;\n return p;\n }\n lat = asinz(cosz * this.sin_p14 + (p.y * sinz * this.cos_p14) / rh);\n con = Math.abs(this.lat0) - HALF_PI;\n if (Math.abs(con) <= EPSLN) {\n if (this.lat0 >= 0) {\n lon = adjust_lon(this.long0 + Math.atan2(p.x, - p.y));\n }\n else {\n lon = adjust_lon(this.long0 - Math.atan2(-p.x, p.y));\n }\n p.x = lon;\n p.y = lat;\n return p;\n }\n lon = adjust_lon(this.long0 + Math.atan2((p.x * sinz), rh * this.cos_p14 * cosz - p.y * this.sin_p14 * sinz));\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"ortho\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","// QSC projection rewritten from the original PROJ4\n// https://github.com/OSGeo/proj.4/blob/master/src/PJ_qsc.c\n\nimport {EPSLN, TWO_PI, SPI, HALF_PI, FORTPI} from '../constants/values';\n\n/* constants */\nvar FACE_ENUM = {\n FRONT: 1,\n RIGHT: 2,\n BACK: 3,\n LEFT: 4,\n TOP: 5,\n BOTTOM: 6\n};\n\nvar AREA_ENUM = {\n AREA_0: 1,\n AREA_1: 2,\n AREA_2: 3,\n AREA_3: 4\n};\n\nexport function init() {\n\n this.x0 = this.x0 || 0;\n this.y0 = this.y0 || 0;\n this.lat0 = this.lat0 || 0;\n this.long0 = this.long0 || 0;\n this.lat_ts = this.lat_ts || 0;\n this.title = this.title || \"Quadrilateralized Spherical Cube\";\n\n /* Determine the cube face from the center of projection. */\n if (this.lat0 >= HALF_PI - FORTPI / 2.0) {\n this.face = FACE_ENUM.TOP;\n } else if (this.lat0 <= -(HALF_PI - FORTPI / 2.0)) {\n this.face = FACE_ENUM.BOTTOM;\n } else if (Math.abs(this.long0) <= FORTPI) {\n this.face = FACE_ENUM.FRONT;\n } else if (Math.abs(this.long0) <= HALF_PI + FORTPI) {\n this.face = this.long0 > 0.0 ? FACE_ENUM.RIGHT : FACE_ENUM.LEFT;\n } else {\n this.face = FACE_ENUM.BACK;\n }\n\n /* Fill in useful values for the ellipsoid <-> sphere shift\n * described in [LK12]. */\n if (this.es !== 0) {\n this.one_minus_f = 1 - (this.a - this.b) / this.a;\n this.one_minus_f_squared = this.one_minus_f * this.one_minus_f;\n }\n}\n\n// QSC forward equations--mapping lat,long to x,y\n// -----------------------------------------------------------------\nexport function forward(p) {\n var xy = {x: 0, y: 0};\n var lat, lon;\n var theta, phi;\n var t, mu;\n /* nu; */\n var area = {value: 0};\n\n // move lon according to projection's lon\n p.x -= this.long0;\n\n /* Convert the geodetic latitude to a geocentric latitude.\n * This corresponds to the shift from the ellipsoid to the sphere\n * described in [LK12]. */\n if (this.es !== 0) {//if (P->es != 0) {\n lat = Math.atan(this.one_minus_f_squared * Math.tan(p.y));\n } else {\n lat = p.y;\n }\n\n /* Convert the input lat, lon into theta, phi as used by QSC.\n * This depends on the cube face and the area on it.\n * For the top and bottom face, we can compute theta and phi\n * directly from phi, lam. For the other faces, we must use\n * unit sphere cartesian coordinates as an intermediate step. */\n lon = p.x; //lon = lp.lam;\n if (this.face === FACE_ENUM.TOP) {\n phi = HALF_PI - lat;\n if (lon >= FORTPI && lon <= HALF_PI + FORTPI) {\n area.value = AREA_ENUM.AREA_0;\n theta = lon - HALF_PI;\n } else if (lon > HALF_PI + FORTPI || lon <= -(HALF_PI + FORTPI)) {\n area.value = AREA_ENUM.AREA_1;\n theta = (lon > 0.0 ? lon - SPI : lon + SPI);\n } else if (lon > -(HALF_PI + FORTPI) && lon <= -FORTPI) {\n area.value = AREA_ENUM.AREA_2;\n theta = lon + HALF_PI;\n } else {\n area.value = AREA_ENUM.AREA_3;\n theta = lon;\n }\n } else if (this.face === FACE_ENUM.BOTTOM) {\n phi = HALF_PI + lat;\n if (lon >= FORTPI && lon <= HALF_PI + FORTPI) {\n area.value = AREA_ENUM.AREA_0;\n theta = -lon + HALF_PI;\n } else if (lon < FORTPI && lon >= -FORTPI) {\n area.value = AREA_ENUM.AREA_1;\n theta = -lon;\n } else if (lon < -FORTPI && lon >= -(HALF_PI + FORTPI)) {\n area.value = AREA_ENUM.AREA_2;\n theta = -lon - HALF_PI;\n } else {\n area.value = AREA_ENUM.AREA_3;\n theta = (lon > 0.0 ? -lon + SPI : -lon - SPI);\n }\n } else {\n var q, r, s;\n var sinlat, coslat;\n var sinlon, coslon;\n\n if (this.face === FACE_ENUM.RIGHT) {\n lon = qsc_shift_lon_origin(lon, +HALF_PI);\n } else if (this.face === FACE_ENUM.BACK) {\n lon = qsc_shift_lon_origin(lon, +SPI);\n } else if (this.face === FACE_ENUM.LEFT) {\n lon = qsc_shift_lon_origin(lon, -HALF_PI);\n }\n sinlat = Math.sin(lat);\n coslat = Math.cos(lat);\n sinlon = Math.sin(lon);\n coslon = Math.cos(lon);\n q = coslat * coslon;\n r = coslat * sinlon;\n s = sinlat;\n\n if (this.face === FACE_ENUM.FRONT) {\n phi = Math.acos(q);\n theta = qsc_fwd_equat_face_theta(phi, s, r, area);\n } else if (this.face === FACE_ENUM.RIGHT) {\n phi = Math.acos(r);\n theta = qsc_fwd_equat_face_theta(phi, s, -q, area);\n } else if (this.face === FACE_ENUM.BACK) {\n phi = Math.acos(-q);\n theta = qsc_fwd_equat_face_theta(phi, s, -r, area);\n } else if (this.face === FACE_ENUM.LEFT) {\n phi = Math.acos(-r);\n theta = qsc_fwd_equat_face_theta(phi, s, q, area);\n } else {\n /* Impossible */\n phi = theta = 0;\n area.value = AREA_ENUM.AREA_0;\n }\n }\n\n /* Compute mu and nu for the area of definition.\n * For mu, see Eq. (3-21) in [OL76], but note the typos:\n * compare with Eq. (3-14). For nu, see Eq. (3-38). */\n mu = Math.atan((12 / SPI) * (theta + Math.acos(Math.sin(theta) * Math.cos(FORTPI)) - HALF_PI));\n t = Math.sqrt((1 - Math.cos(phi)) / (Math.cos(mu) * Math.cos(mu)) / (1 - Math.cos(Math.atan(1 / Math.cos(theta)))));\n\n /* Apply the result to the real area. */\n if (area.value === AREA_ENUM.AREA_1) {\n mu += HALF_PI;\n } else if (area.value === AREA_ENUM.AREA_2) {\n mu += SPI;\n } else if (area.value === AREA_ENUM.AREA_3) {\n mu += 1.5 * SPI;\n }\n\n /* Now compute x, y from mu and nu */\n xy.x = t * Math.cos(mu);\n xy.y = t * Math.sin(mu);\n xy.x = xy.x * this.a + this.x0;\n xy.y = xy.y * this.a + this.y0;\n\n p.x = xy.x;\n p.y = xy.y;\n return p;\n}\n\n// QSC inverse equations--mapping x,y to lat/long\n// -----------------------------------------------------------------\nexport function inverse(p) {\n var lp = {lam: 0, phi: 0};\n var mu, nu, cosmu, tannu;\n var tantheta, theta, cosphi, phi;\n var t;\n var area = {value: 0};\n\n /* de-offset */\n p.x = (p.x - this.x0) / this.a;\n p.y = (p.y - this.y0) / this.a;\n\n /* Convert the input x, y to the mu and nu angles as used by QSC.\n * This depends on the area of the cube face. */\n nu = Math.atan(Math.sqrt(p.x * p.x + p.y * p.y));\n mu = Math.atan2(p.y, p.x);\n if (p.x >= 0.0 && p.x >= Math.abs(p.y)) {\n area.value = AREA_ENUM.AREA_0;\n } else if (p.y >= 0.0 && p.y >= Math.abs(p.x)) {\n area.value = AREA_ENUM.AREA_1;\n mu -= HALF_PI;\n } else if (p.x < 0.0 && -p.x >= Math.abs(p.y)) {\n area.value = AREA_ENUM.AREA_2;\n mu = (mu < 0.0 ? mu + SPI : mu - SPI);\n } else {\n area.value = AREA_ENUM.AREA_3;\n mu += HALF_PI;\n }\n\n /* Compute phi and theta for the area of definition.\n * The inverse projection is not described in the original paper, but some\n * good hints can be found here (as of 2011-12-14):\n * http://fits.gsfc.nasa.gov/fitsbits/saf.93/saf.9302\n * (search for \"Message-Id: <9302181759.AA25477 at fits.cv.nrao.edu>\") */\n t = (SPI / 12) * Math.tan(mu);\n tantheta = Math.sin(t) / (Math.cos(t) - (1 / Math.sqrt(2)));\n theta = Math.atan(tantheta);\n cosmu = Math.cos(mu);\n tannu = Math.tan(nu);\n cosphi = 1 - cosmu * cosmu * tannu * tannu * (1 - Math.cos(Math.atan(1 / Math.cos(theta))));\n if (cosphi < -1) {\n cosphi = -1;\n } else if (cosphi > +1) {\n cosphi = +1;\n }\n\n /* Apply the result to the real area on the cube face.\n * For the top and bottom face, we can compute phi and lam directly.\n * For the other faces, we must use unit sphere cartesian coordinates\n * as an intermediate step. */\n if (this.face === FACE_ENUM.TOP) {\n phi = Math.acos(cosphi);\n lp.phi = HALF_PI - phi;\n if (area.value === AREA_ENUM.AREA_0) {\n lp.lam = theta + HALF_PI;\n } else if (area.value === AREA_ENUM.AREA_1) {\n lp.lam = (theta < 0.0 ? theta + SPI : theta - SPI);\n } else if (area.value === AREA_ENUM.AREA_2) {\n lp.lam = theta - HALF_PI;\n } else /* area.value == AREA_ENUM.AREA_3 */ {\n lp.lam = theta;\n }\n } else if (this.face === FACE_ENUM.BOTTOM) {\n phi = Math.acos(cosphi);\n lp.phi = phi - HALF_PI;\n if (area.value === AREA_ENUM.AREA_0) {\n lp.lam = -theta + HALF_PI;\n } else if (area.value === AREA_ENUM.AREA_1) {\n lp.lam = -theta;\n } else if (area.value === AREA_ENUM.AREA_2) {\n lp.lam = -theta - HALF_PI;\n } else /* area.value == AREA_ENUM.AREA_3 */ {\n lp.lam = (theta < 0.0 ? -theta - SPI : -theta + SPI);\n }\n } else {\n /* Compute phi and lam via cartesian unit sphere coordinates. */\n var q, r, s;\n q = cosphi;\n t = q * q;\n if (t >= 1) {\n s = 0;\n } else {\n s = Math.sqrt(1 - t) * Math.sin(theta);\n }\n t += s * s;\n if (t >= 1) {\n r = 0;\n } else {\n r = Math.sqrt(1 - t);\n }\n /* Rotate q,r,s into the correct area. */\n if (area.value === AREA_ENUM.AREA_1) {\n t = r;\n r = -s;\n s = t;\n } else if (area.value === AREA_ENUM.AREA_2) {\n r = -r;\n s = -s;\n } else if (area.value === AREA_ENUM.AREA_3) {\n t = r;\n r = s;\n s = -t;\n }\n /* Rotate q,r,s into the correct cube face. */\n if (this.face === FACE_ENUM.RIGHT) {\n t = q;\n q = -r;\n r = t;\n } else if (this.face === FACE_ENUM.BACK) {\n q = -q;\n r = -r;\n } else if (this.face === FACE_ENUM.LEFT) {\n t = q;\n q = r;\n r = -t;\n }\n /* Now compute phi and lam from the unit sphere coordinates. */\n lp.phi = Math.acos(-s) - HALF_PI;\n lp.lam = Math.atan2(r, q);\n if (this.face === FACE_ENUM.RIGHT) {\n lp.lam = qsc_shift_lon_origin(lp.lam, -HALF_PI);\n } else if (this.face === FACE_ENUM.BACK) {\n lp.lam = qsc_shift_lon_origin(lp.lam, -SPI);\n } else if (this.face === FACE_ENUM.LEFT) {\n lp.lam = qsc_shift_lon_origin(lp.lam, +HALF_PI);\n }\n }\n\n /* Apply the shift from the sphere to the ellipsoid as described\n * in [LK12]. */\n if (this.es !== 0) {\n var invert_sign;\n var tanphi, xa;\n invert_sign = (lp.phi < 0 ? 1 : 0);\n tanphi = Math.tan(lp.phi);\n xa = this.b / Math.sqrt(tanphi * tanphi + this.one_minus_f_squared);\n lp.phi = Math.atan(Math.sqrt(this.a * this.a - xa * xa) / (this.one_minus_f * xa));\n if (invert_sign) {\n lp.phi = -lp.phi;\n }\n }\n\n lp.lam += this.long0;\n p.x = lp.lam;\n p.y = lp.phi;\n return p;\n}\n\n/* Helper function for forward projection: compute the theta angle\n * and determine the area number. */\nfunction qsc_fwd_equat_face_theta(phi, y, x, area) {\n var theta;\n if (phi < EPSLN) {\n area.value = AREA_ENUM.AREA_0;\n theta = 0.0;\n } else {\n theta = Math.atan2(y, x);\n if (Math.abs(theta) <= FORTPI) {\n area.value = AREA_ENUM.AREA_0;\n } else if (theta > FORTPI && theta <= HALF_PI + FORTPI) {\n area.value = AREA_ENUM.AREA_1;\n theta -= HALF_PI;\n } else if (theta > HALF_PI + FORTPI || theta <= -(HALF_PI + FORTPI)) {\n area.value = AREA_ENUM.AREA_2;\n theta = (theta >= 0.0 ? theta - SPI : theta + SPI);\n } else {\n area.value = AREA_ENUM.AREA_3;\n theta += HALF_PI;\n }\n }\n return theta;\n}\n\n/* Helper function: shift the longitude. */\nfunction qsc_shift_lon_origin(lon, offset) {\n var slon = lon + offset;\n if (slon < -SPI) {\n slon += TWO_PI;\n } else if (slon > +SPI) {\n slon -= TWO_PI;\n }\n return slon;\n}\n\nexport var names = [\"Quadrilateralized Spherical Cube\", \"Quadrilateralized_Spherical_Cube\", \"qsc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n\n","// Robinson projection\n// Based on https://github.com/OSGeo/proj.4/blob/master/src/PJ_robin.c\n// Polynomial coeficients from http://article.gmane.org/gmane.comp.gis.proj-4.devel/6039\n\nimport {HALF_PI, D2R, R2D, EPSLN} from '../constants/values';\nimport adjust_lon from '../common/adjust_lon';\n\nvar COEFS_X = [\n [1.0000, 2.2199e-17, -7.15515e-05, 3.1103e-06],\n [0.9986, -0.000482243, -2.4897e-05, -1.3309e-06],\n [0.9954, -0.00083103, -4.48605e-05, -9.86701e-07],\n [0.9900, -0.00135364, -5.9661e-05, 3.6777e-06],\n [0.9822, -0.00167442, -4.49547e-06, -5.72411e-06],\n [0.9730, -0.00214868, -9.03571e-05, 1.8736e-08],\n [0.9600, -0.00305085, -9.00761e-05, 1.64917e-06],\n [0.9427, -0.00382792, -6.53386e-05, -2.6154e-06],\n [0.9216, -0.00467746, -0.00010457, 4.81243e-06],\n [0.8962, -0.00536223, -3.23831e-05, -5.43432e-06],\n [0.8679, -0.00609363, -0.000113898, 3.32484e-06],\n [0.8350, -0.00698325, -6.40253e-05, 9.34959e-07],\n [0.7986, -0.00755338, -5.00009e-05, 9.35324e-07],\n [0.7597, -0.00798324, -3.5971e-05, -2.27626e-06],\n [0.7186, -0.00851367, -7.01149e-05, -8.6303e-06],\n [0.6732, -0.00986209, -0.000199569, 1.91974e-05],\n [0.6213, -0.010418, 8.83923e-05, 6.24051e-06],\n [0.5722, -0.00906601, 0.000182, 6.24051e-06],\n [0.5322, -0.00677797, 0.000275608, 6.24051e-06]\n];\n\nvar COEFS_Y = [\n [-5.20417e-18, 0.0124, 1.21431e-18, -8.45284e-11],\n [0.0620, 0.0124, -1.26793e-09, 4.22642e-10],\n [0.1240, 0.0124, 5.07171e-09, -1.60604e-09],\n [0.1860, 0.0123999, -1.90189e-08, 6.00152e-09],\n [0.2480, 0.0124002, 7.10039e-08, -2.24e-08],\n [0.3100, 0.0123992, -2.64997e-07, 8.35986e-08],\n [0.3720, 0.0124029, 9.88983e-07, -3.11994e-07],\n [0.4340, 0.0123893, -3.69093e-06, -4.35621e-07],\n [0.4958, 0.0123198, -1.02252e-05, -3.45523e-07],\n [0.5571, 0.0121916, -1.54081e-05, -5.82288e-07],\n [0.6176, 0.0119938, -2.41424e-05, -5.25327e-07],\n [0.6769, 0.011713, -3.20223e-05, -5.16405e-07],\n [0.7346, 0.0113541, -3.97684e-05, -6.09052e-07],\n [0.7903, 0.0109107, -4.89042e-05, -1.04739e-06],\n [0.8435, 0.0103431, -6.4615e-05, -1.40374e-09],\n [0.8936, 0.00969686, -6.4636e-05, -8.547e-06],\n [0.9394, 0.00840947, -0.000192841, -4.2106e-06],\n [0.9761, 0.00616527, -0.000256, -4.2106e-06],\n [1.0000, 0.00328947, -0.000319159, -4.2106e-06]\n];\n\nvar FXC = 0.8487;\nvar FYC = 1.3523;\nvar C1 = R2D/5; // rad to 5-degree interval\nvar RC1 = 1/C1;\nvar NODES = 18;\n\nvar poly3_val = function(coefs, x) {\n return coefs[0] + x * (coefs[1] + x * (coefs[2] + x * coefs[3]));\n};\n\nvar poly3_der = function(coefs, x) {\n return coefs[1] + x * (2 * coefs[2] + x * 3 * coefs[3]);\n};\n\nfunction newton_rapshon(f_df, start, max_err, iters) {\n var x = start;\n for (; iters; --iters) {\n var upd = f_df(x);\n x -= upd;\n if (Math.abs(upd) < max_err) {\n break;\n }\n }\n return x;\n}\n\nexport function init() {\n this.x0 = this.x0 || 0;\n this.y0 = this.y0 || 0;\n this.long0 = this.long0 || 0;\n this.es = 0;\n this.title = this.title || \"Robinson\";\n}\n\nexport function forward(ll) {\n var lon = adjust_lon(ll.x - this.long0);\n\n var dphi = Math.abs(ll.y);\n var i = Math.floor(dphi * C1);\n if (i < 0) {\n i = 0;\n } else if (i >= NODES) {\n i = NODES - 1;\n }\n dphi = R2D * (dphi - RC1 * i);\n var xy = {\n x: poly3_val(COEFS_X[i], dphi) * lon,\n y: poly3_val(COEFS_Y[i], dphi)\n };\n if (ll.y < 0) {\n xy.y = -xy.y;\n }\n\n xy.x = xy.x * this.a * FXC + this.x0;\n xy.y = xy.y * this.a * FYC + this.y0;\n return xy;\n}\n\nexport function inverse(xy) {\n var ll = {\n x: (xy.x - this.x0) / (this.a * FXC),\n y: Math.abs(xy.y - this.y0) / (this.a * FYC)\n };\n\n if (ll.y >= 1) { // pathologic case\n ll.x /= COEFS_X[NODES][0];\n ll.y = xy.y < 0 ? -HALF_PI : HALF_PI;\n } else {\n // find table interval\n var i = Math.floor(ll.y * NODES);\n if (i < 0) {\n i = 0;\n } else if (i >= NODES) {\n i = NODES - 1;\n }\n for (;;) {\n if (COEFS_Y[i][0] > ll.y) {\n --i;\n } else if (COEFS_Y[i+1][0] <= ll.y) {\n ++i;\n } else {\n break;\n }\n }\n // linear interpolation in 5 degree interval\n var coefs = COEFS_Y[i];\n var t = 5 * (ll.y - coefs[0]) / (COEFS_Y[i+1][0] - coefs[0]);\n // find t so that poly3_val(coefs, t) = ll.y\n t = newton_rapshon(function(x) {\n return (poly3_val(coefs, x) - ll.y) / poly3_der(coefs, x);\n }, t, EPSLN, 100);\n\n ll.x /= poly3_val(COEFS_X[i], t);\n ll.y = (5 * i + t) * D2R;\n if (xy.y < 0) {\n ll.y = -ll.y;\n }\n }\n\n ll.x = adjust_lon(ll.x + this.long0);\n return ll;\n}\n\nexport var names = [\"Robinson\", \"robin\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import {\n geodeticToGeocentric,\n geocentricToGeodetic\n} from '../datumUtils';\n\nexport function init() {\n this.name = 'geocent';\n\n}\n\nexport function forward(p) {\n var point = geodeticToGeocentric(p, this.es, this.a);\n return point;\n}\n\nexport function inverse(p) {\n var point = geocentricToGeodetic(p, this.es, this.a, this.b);\n return point;\n}\n\nexport var names = [\"Geocentric\", 'geocentric', \"geocent\", \"Geocent\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};","\nvar mode = {\n N_POLE: 0,\n S_POLE: 1,\n EQUIT: 2,\n OBLIQ: 3\n};\n\nimport { D2R, HALF_PI, EPSLN } from \"../constants/values\";\nimport hypot from \"../common/hypot\";\n\nvar params = {\n h: { def: 100000, num: true }, // default is Karman line, no default in PROJ.7\n azi: { def: 0, num: true, degrees: true }, // default is North\n tilt: { def: 0, num: true, degrees: true }, // default is Nadir\n long0: { def: 0, num: true }, // default is Greenwich, conversion to rad is automatic\n lat0: { def: 0, num: true } // default is Equator, conversion to rad is automatic\n};\n\nexport function init() {\n Object.keys(params).forEach(function (p) {\n if (typeof this[p] === \"undefined\") {\n this[p] = params[p].def;\n } else if (params[p].num && isNaN(this[p])) {\n throw new Error(\"Invalid parameter value, must be numeric \" + p + \" = \" + this[p]);\n } else if (params[p].num) {\n this[p] = parseFloat(this[p]);\n }\n if (params[p].degrees) {\n this[p] = this[p] * D2R;\n }\n }.bind(this));\n\n if (Math.abs((Math.abs(this.lat0) - HALF_PI)) < EPSLN) {\n this.mode = this.lat0 < 0 ? mode.S_POLE : mode.N_POLE;\n } else if (Math.abs(this.lat0) < EPSLN) {\n this.mode = mode.EQUIT;\n } else {\n this.mode = mode.OBLIQ;\n this.sinph0 = Math.sin(this.lat0);\n this.cosph0 = Math.cos(this.lat0);\n }\n\n this.pn1 = this.h / this.a; // Normalize relative to the Earth's radius\n\n if (this.pn1 <= 0 || this.pn1 > 1e10) {\n throw new Error(\"Invalid height\");\n }\n \n this.p = 1 + this.pn1;\n this.rp = 1 / this.p;\n this.h1 = 1 / this.pn1;\n this.pfact = (this.p + 1) * this.h1;\n this.es = 0;\n\n var omega = this.tilt;\n var gamma = this.azi;\n this.cg = Math.cos(gamma);\n this.sg = Math.sin(gamma);\n this.cw = Math.cos(omega);\n this.sw = Math.sin(omega);\n}\n\nexport function forward(p) {\n p.x -= this.long0;\n var sinphi = Math.sin(p.y);\n var cosphi = Math.cos(p.y);\n var coslam = Math.cos(p.x);\n var x, y;\n switch (this.mode) {\n case mode.OBLIQ:\n y = this.sinph0 * sinphi + this.cosph0 * cosphi * coslam;\n break;\n case mode.EQUIT:\n y = cosphi * coslam;\n break;\n case mode.S_POLE:\n y = -sinphi;\n break;\n case mode.N_POLE:\n y = sinphi;\n break;\n }\n y = this.pn1 / (this.p - y);\n x = y * cosphi * Math.sin(p.x);\n\n switch (this.mode) {\n case mode.OBLIQ:\n y *= this.cosph0 * sinphi - this.sinph0 * cosphi * coslam;\n break;\n case mode.EQUIT:\n y *= sinphi;\n break;\n case mode.N_POLE:\n y *= -(cosphi * coslam);\n break;\n case mode.S_POLE:\n y *= cosphi * coslam;\n break;\n }\n\n // Tilt \n var yt, ba;\n yt = y * this.cg + x * this.sg;\n ba = 1 / (yt * this.sw * this.h1 + this.cw);\n x = (x * this.cg - y * this.sg) * this.cw * ba;\n y = yt * ba;\n\n p.x = x * this.a;\n p.y = y * this.a;\n return p;\n}\n\nexport function inverse(p) {\n p.x /= this.a;\n p.y /= this.a;\n var r = { x: p.x, y: p.y };\n\n // Un-Tilt\n var bm, bq, yt;\n yt = 1 / (this.pn1 - p.y * this.sw);\n bm = this.pn1 * p.x * yt;\n bq = this.pn1 * p.y * this.cw * yt;\n p.x = bm * this.cg + bq * this.sg;\n p.y = bq * this.cg - bm * this.sg;\n\n var rh = hypot(p.x, p.y);\n if (Math.abs(rh) < EPSLN) {\n r.x = 0;\n r.y = p.y;\n } else {\n var cosz, sinz;\n sinz = 1 - rh * rh * this.pfact;\n sinz = (this.p - Math.sqrt(sinz)) / (this.pn1 / rh + rh / this.pn1);\n cosz = Math.sqrt(1 - sinz * sinz);\n switch (this.mode) {\n case mode.OBLIQ:\n r.y = Math.asin(cosz * this.sinph0 + p.y * sinz * this.cosph0 / rh);\n p.y = (cosz - this.sinph0 * Math.sin(r.y)) * rh;\n p.x *= sinz * this.cosph0;\n break;\n case mode.EQUIT:\n r.y = Math.asin(p.y * sinz / rh);\n p.y = cosz * rh;\n p.x *= sinz;\n break;\n case mode.N_POLE:\n r.y = Math.asin(cosz);\n p.y = -p.y;\n break;\n case mode.S_POLE:\n r.y = -Math.asin(cosz);\n break;\n }\n r.x = Math.atan2(p.x, p.y);\n }\n\n p.x = r.x + this.long0;\n p.y = r.y;\n return p;\n}\n\nexport var names = [\"Tilted_Perspective\", \"tpers\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import tmerc from './lib/projections/tmerc';\nimport etmerc from './lib/projections/etmerc';\nimport utm from './lib/projections/utm';\nimport sterea from './lib/projections/sterea';\nimport stere from './lib/projections/stere';\nimport somerc from './lib/projections/somerc';\nimport omerc from './lib/projections/omerc';\nimport lcc from './lib/projections/lcc';\nimport krovak from './lib/projections/krovak';\nimport cass from './lib/projections/cass';\nimport laea from './lib/projections/laea';\nimport aea from './lib/projections/aea';\nimport gnom from './lib/projections/gnom';\nimport cea from './lib/projections/cea';\nimport eqc from './lib/projections/eqc';\nimport poly from './lib/projections/poly';\nimport nzmg from './lib/projections/nzmg';\nimport mill from './lib/projections/mill';\nimport sinu from './lib/projections/sinu';\nimport moll from './lib/projections/moll';\nimport eqdc from './lib/projections/eqdc';\nimport vandg from './lib/projections/vandg';\nimport aeqd from './lib/projections/aeqd';\nimport ortho from './lib/projections/ortho';\nimport qsc from './lib/projections/qsc';\nimport robin from './lib/projections/robin';\nimport geocent from './lib/projections/geocent';\nimport tpers from './lib/projections/tpers';\nexport default function(proj4){\n proj4.Proj.projections.add(tmerc);\n proj4.Proj.projections.add(etmerc);\n proj4.Proj.projections.add(utm);\n proj4.Proj.projections.add(sterea);\n proj4.Proj.projections.add(stere);\n proj4.Proj.projections.add(somerc);\n proj4.Proj.projections.add(omerc);\n proj4.Proj.projections.add(lcc);\n proj4.Proj.projections.add(krovak);\n proj4.Proj.projections.add(cass);\n proj4.Proj.projections.add(laea);\n proj4.Proj.projections.add(aea);\n proj4.Proj.projections.add(gnom);\n proj4.Proj.projections.add(cea);\n proj4.Proj.projections.add(eqc);\n proj4.Proj.projections.add(poly);\n proj4.Proj.projections.add(nzmg);\n proj4.Proj.projections.add(mill);\n proj4.Proj.projections.add(sinu);\n proj4.Proj.projections.add(moll);\n proj4.Proj.projections.add(eqdc);\n proj4.Proj.projections.add(vandg);\n proj4.Proj.projections.add(aeqd);\n proj4.Proj.projections.add(ortho);\n proj4.Proj.projections.add(qsc);\n proj4.Proj.projections.add(robin);\n proj4.Proj.projections.add(geocent);\n proj4.Proj.projections.add(tpers);\n}","import proj4 from './core';\nimport Proj from \"./Proj\";\nimport Point from \"./Point\";\nimport common from \"./common/toPoint\";\nimport defs from \"./defs\";\nimport transform from \"./transform\";\nimport mgrs from \"mgrs\";\nimport includedProjections from \"../projs\";\n\nproj4.defaultDatum = 'WGS84'; //default datum\nproj4.Proj = Proj;\nproj4.WGS84 = new proj4.Proj('WGS84');\nproj4.Point = Point;\nproj4.toPoint = common;\nproj4.defs = defs;\nproj4.transform = transform;\nproj4.mgrs = mgrs;\nproj4.version = '__VERSION__';\nincludedProjections(proj4);\nexport default proj4;\n","import proj4 from 'proj4';\n// Development tools\n// Map application with coordinates projection\n// https://dominoc925-pages.appspot.com/mapplets/cs_ecef.html\n// The World coordinates converter\n// https://twcc.fr/#\nexport const Projections = [\n {\n title: \"RGF93 (Lambert-93)\",\n url: \"http://spatialreference.org/ref/epsg/rgf93-lambert-93/\",\n code: \"EPSG:2154\",\n proj4: \"+proj=lcc +lat_1=49 +lat_2=44 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs\"\n },\n {\n title: \"RGF93 (CC50)\",\n code: \"EPSG:3950\",\n url: \"http://spatialreference.org/ref/epsg/3950/\",\n proj4: \"+proj=lcc +lat_1=49.25 +lat_2=50.75 +lat_0=50 +lon_0=3 +x_0=1700000 +y_0=9200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs\"\n },\n {\n title: \"RGF93 (CC49)\",\n code: \"EPSG:3949\",\n url: \"http://spatialreference.org/ref/epsg/3949/\",\n proj4: \"+proj=lcc +lat_1=48.25 +lat_2=49.75 +lat_0=49 +lon_0=3 +x_0=1700000 +y_0=8200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs\"\n },\n {\n title: \"RGF93 (CC48)\",\n code: \"EPSG:3948\",\n url: \"http://spatialreference.org/ref/epsg/3948/\",\n proj4: \"+proj=lcc +lat_1=47.25 +lat_2=48.75 +lat_0=48 +lon_0=3 +x_0=1700000 +y_0=7200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs\"\n },\n {\n title: \"RGF93 (CC47)\",\n code: \"EPSG:3947\",\n url: \"http://spatialreference.org/ref/epsg/3947/\",\n proj4: \"+proj=lcc +lat_1=46.25 +lat_2=47.75 +lat_0=47 +lon_0=3 +x_0=1700000 +y_0=6200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs\"\n },\n {\n title: \"RGF93 (CC46)\",\n code: \"EPSG:3946\",\n url: \"http://spatialreference.org/ref/epsg/3946/\",\n proj4: \"+proj=lcc +lat_1=45.25 +lat_2=46.75 +lat_0=46 +lon_0=3 +x_0=1700000 +y_0=5200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs\"\n },\n {\n title: \"RGF93 (CC45)\",\n code: \"EPSG:3945\",\n url: \"http://spatialreference.org/ref/epsg/3945/\",\n proj4: \"+proj=lcc +lat_1=44.25 +lat_2=45.75 +lat_0=45 +lon_0=3 +x_0=1700000 +y_0=4200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs\"\n },\n {\n title: \"RGF93 (CC44)\",\n code: \"EPSG:3944\",\n url: \"http://spatialreference.org/ref/epsg/3944/\",\n proj4: \"+proj=lcc +lat_1=43.25 +lat_2=44.75 +lat_0=44 +lon_0=3 +x_0=1700000 +y_0=3200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs\"\n },\n {\n title: \"NTF (Lambert II)\",\n code: \"EPSG:27572\",\n url: \"http://spatialreference.org/ref/epsg/27572/\",\n proj4: \"+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs\"\n },\n {\n title: \"NTF (Lambert III)\",\n code: \"EPSG:27573\",\n url: \"http://spatialreference.org/ref/epsg/27573/\",\n proj4: \"+proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000001 +lon_0=0 +k_0=0.999877499 +x_0=600000 +y_0=3200000 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs\"\n },\n {\n title: \"NTF\",\n code: \"EPSG:4275\",\n url: \"http://spatialreference.org/ref/epsg/4275/\",\n proj4: \"+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +no_defs\"\n },\n {\n title: \"WGS84\",\n code: \"EPSG:4326\",\n url: \"https://epsg.io/4326\",\n proj4: \"+proj=longlat +datum=WGS84 +no_defs\"\n }\n];\nexport const Proj4Defs = Projections.map(p => [p.code, p.proj4]);\nproj4.defs(Proj4Defs);\nexport function project(from, to, y, x) {\n console.log(`Projecting coordinates '${x},${y}' from '${from}' to '${to}'`);\n const coords = proj4(from, to, [x, y]);\n return { x: coords[0], y: coords[1] };\n}\n;\n// Voir https://geodesie.ign.fr/contenu/fichiers/documentation/pedagogiques/TransformationsCoordonneesGeodesiques.pdf\nexport const WGS84Ellipsoid = createEllipsoid(6378137, 1 / 298.257223563);\nfunction createEllipsoid(a, f) {\n const b = a * (1 - f);\n const asqr = a * a;\n const bsqr = b * b;\n const e = Math.sqrt((asqr - bsqr) / asqr);\n const eprime = Math.sqrt((asqr - bsqr) / bsqr);\n return { a, f, b, e, bsqr, asqr, eprime };\n}\nfunction degrees(angle) {\n return angle * (180 / Math.PI);\n}\nexport function XYZtoLLA(x, y, z, ellipsoid) {\n const p = Math.sqrt(x * x + y * y);\n const theta = Math.atan((z * ellipsoid.a) / (p * ellipsoid.b));\n const sintheta = Math.sin(theta);\n const costheta = Math.cos(theta);\n const num = z + ellipsoid.eprime * ellipsoid.eprime * ellipsoid.b * sintheta * sintheta * sintheta;\n const denom = p - ellipsoid.e * ellipsoid.e * ellipsoid.a * costheta * costheta * costheta;\n const lat = Math.atan(num / denom);\n let lon = Math.atan(y / x);\n const n = getN(lat, ellipsoid);\n const alt = (p / Math.cos(lat)) - n;\n if (x < 0 && y < 0) {\n lon = lon - Math.PI;\n }\n if (x < 0 && y > 0) {\n lon = lon + Math.PI;\n }\n return { latitude: degrees(lat), longitude: degrees(lon), altitude: alt };\n}\nfunction getN(lat, ellipsoid) {\n const sinlat = Math.sin(lat);\n const denom = Math.sqrt(1 - ellipsoid.e * ellipsoid.e * sinlat * sinlat);\n const n = ellipsoid.a / denom;\n return n;\n}\nexport function LLAtoXYZ(latitude, longitude, altitude, ellipsoid) {\n const cosLat = Math.cos(latitude * Math.PI / 180.0);\n const sinLat = Math.sin(latitude * Math.PI / 180.0);\n const cosLon = Math.cos(longitude * Math.PI / 180.0);\n const sinLon = Math.sin(longitude * Math.PI / 180.0);\n const rad = ellipsoid.a;\n const f = ellipsoid.f;\n const C = 1.0 / Math.sqrt(cosLat * cosLat + (1 - f) * (1 - f) * sinLat * sinLat);\n const S = (1.0 - f) * (1.0 - f) * C;\n const h = altitude;\n const x = (rad * C + h) * cosLat * cosLon;\n const y = (rad * C + h) * cosLat * sinLon;\n const z = (rad * S + h) * sinLat;\n return { x, y, z };\n}\n","import randomColor from 'randomcolor';\nimport { polygon } from '@turf/helpers';\nexport function getProp(obj, ...props) {\n if (props.length === 0)\n throw new Error(\"You must at least provide one property.\");\n const prop = props.shift();\n const exists = obj.hasOwnProperty(prop);\n if (props.length === 0) {\n return exists ? obj[prop] : undefined;\n }\n if (obj[prop] === undefined) {\n return undefined;\n }\n return getProp(obj[prop], ...props);\n}\nexport function parseSequence(str) {\n return str.replace(/\\r?\\n?\\t?/g, '').split(' ');\n}\nconst colors = {};\nexport function getColor(key, opts) {\n if (key in colors) {\n return colors[key];\n }\n const color = randomColor(opts);\n colors[key] = color;\n return color;\n}\nexport function toRadians(angleInDegrees) {\n return angleInDegrees * Math.PI / 180;\n}\nexport function toDegrees(angleInRadians) {\n return angleInRadians * 180 / Math.PI;\n}\nexport function circleToPolygon(center, radius, numberOfSegments, properties) {\n const n = numberOfSegments ? numberOfSegments : 32;\n const flatCoordinates = [];\n const coordinates = [];\n for (var i = 0; i < n; ++i) {\n flatCoordinates.push(...offset(center, radius, 2 * Math.PI * i / n));\n }\n flatCoordinates.push(flatCoordinates[0], flatCoordinates[1]);\n for (let i = 0, j = 0; j < flatCoordinates.length; j += 2) {\n coordinates[i++] = flatCoordinates.slice(j, j + 2);\n }\n return polygon([coordinates.reverse()], properties);\n}\n;\nexport function offset(c1, distance, bearing) {\n const lat1 = toRadians(c1[1]);\n const lon1 = toRadians(c1[0]);\n const dByR = distance / 6378137; // distance divided by 6378137 (radius of the earth) wgs84\n const lat = Math.asin(Math.sin(lat1) * Math.cos(dByR) +\n Math.cos(lat1) * Math.sin(dByR) * Math.cos(bearing));\n const lon = lon1 + Math.atan2(Math.sin(bearing) * Math.sin(dByR) * Math.cos(lat1), Math.cos(dByR) - Math.sin(lat1) * Math.sin(lat));\n return [toDegrees(lon), toDegrees(lat)];\n}\n","import { feature, isObject, lineString, point } from '@turf/helpers';\n\n/**\n * Callback for coordEach\n *\n * @callback coordEachCallback\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()\n *\n * @name coordEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=currentCoord\n * //=coordIndex\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * });\n */\nfunction coordEach(geojson, callback, excludeWrapCoord) {\n // Handles null Geometry -- Skips this GeoJSON\n if (geojson === null) return;\n var j, k, l, geometry, stopG, coords,\n geometryMaybeCollection,\n wrapShrink = 0,\n coordIndex = 0,\n isGeometryCollection,\n type = geojson.type,\n isFeatureCollection = type === 'FeatureCollection',\n isFeature = type === 'Feature',\n stop = isFeatureCollection ? geojson.features.length : 1;\n\n // This logic may look a little weird. The reason why it is that way\n // is because it's trying to be fast. GeoJSON supports multiple kinds\n // of objects at its root: FeatureCollection, Features, Geometries.\n // This function has the responsibility of handling all of them, and that\n // means that some of the `for` loops you see below actually just don't apply\n // to certain inputs. For instance, if you give this just a\n // Point geometry, then both loops are short-circuited and all we do\n // is gradually rename the input until it's called 'geometry'.\n //\n // This also aims to allocate as few resources as possible: just a\n // few numbers and booleans, rather than any temporary arrays as would\n // be required with the normalization approach.\n for (var featureIndex = 0; featureIndex < stop; featureIndex++) {\n geometryMaybeCollection = (isFeatureCollection ? geojson.features[featureIndex].geometry :\n (isFeature ? geojson.geometry : geojson));\n isGeometryCollection = (geometryMaybeCollection) ? geometryMaybeCollection.type === 'GeometryCollection' : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n\n for (var geomIndex = 0; geomIndex < stopG; geomIndex++) {\n var multiFeatureIndex = 0;\n var geometryIndex = 0;\n geometry = isGeometryCollection ?\n geometryMaybeCollection.geometries[geomIndex] : geometryMaybeCollection;\n\n // Handles null Geometry -- Skips this geometry\n if (geometry === null) continue;\n coords = geometry.coordinates;\n var geomType = geometry.type;\n\n wrapShrink = (excludeWrapCoord && (geomType === 'Polygon' || geomType === 'MultiPolygon')) ? 1 : 0;\n\n switch (geomType) {\n case null:\n break;\n case 'Point':\n if (callback(coords, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n multiFeatureIndex++;\n break;\n case 'LineString':\n case 'MultiPoint':\n for (j = 0; j < coords.length; j++) {\n if (callback(coords[j], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n if (geomType === 'MultiPoint') multiFeatureIndex++;\n }\n if (geomType === 'LineString') multiFeatureIndex++;\n break;\n case 'Polygon':\n case 'MultiLineString':\n for (j = 0; j < coords.length; j++) {\n for (k = 0; k < coords[j].length - wrapShrink; k++) {\n if (callback(coords[j][k], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n }\n if (geomType === 'MultiLineString') multiFeatureIndex++;\n if (geomType === 'Polygon') geometryIndex++;\n }\n if (geomType === 'Polygon') multiFeatureIndex++;\n break;\n case 'MultiPolygon':\n for (j = 0; j < coords.length; j++) {\n if (geomType === 'MultiPolygon') geometryIndex = 0;\n for (k = 0; k < coords[j].length; k++) {\n for (l = 0; l < coords[j][k].length - wrapShrink; l++) {\n if (callback(coords[j][k][l], coordIndex, featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n coordIndex++;\n }\n geometryIndex++;\n }\n multiFeatureIndex++;\n }\n break;\n case 'GeometryCollection':\n for (j = 0; j < geometry.geometries.length; j++)\n if (coordEach(geometry.geometries[j], callback, excludeWrapCoord) === false) return false;\n break;\n default:\n throw new Error('Unknown Geometry Type');\n }\n }\n }\n}\n\n/**\n * Callback for coordReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback coordReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * Starts at index 0, if an initialValue is provided, and at index 1 otherwise.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n\n/**\n * Reduce coordinates in any GeoJSON object, similar to Array.reduce()\n *\n * @name coordReduce\n * @param {FeatureCollection|Geometry|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentCoord, coordIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordReduce(features, function (previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=previousValue\n * //=currentCoord\n * //=coordIndex\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * return currentCoord;\n * });\n */\nfunction coordReduce(geojson, callback, initialValue, excludeWrapCoord) {\n var previousValue = initialValue;\n coordEach(geojson, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n if (coordIndex === 0 && initialValue === undefined) previousValue = currentCoord;\n else previousValue = callback(previousValue, currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex);\n }, excludeWrapCoord);\n return previousValue;\n}\n\n/**\n * Callback for propEach\n *\n * @callback propEachCallback\n * @param {Object} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over properties in any GeoJSON object, similar to Array.forEach()\n *\n * @name propEach\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentProperties, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propEach(features, function (currentProperties, featureIndex) {\n * //=currentProperties\n * //=featureIndex\n * });\n */\nfunction propEach(geojson, callback) {\n var i;\n switch (geojson.type) {\n case 'FeatureCollection':\n for (i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i].properties, i) === false) break;\n }\n break;\n case 'Feature':\n callback(geojson.properties, 0);\n break;\n }\n}\n\n\n/**\n * Callback for propReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback propReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {*} currentProperties The current Properties being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce properties in any GeoJSON object into a single value,\n * similar to how Array.reduce works. However, in this case we lazily run\n * the reduction, so an array of all properties is unnecessary.\n *\n * @name propReduce\n * @param {FeatureCollection|Feature} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentProperties, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.propReduce(features, function (previousValue, currentProperties, featureIndex) {\n * //=previousValue\n * //=currentProperties\n * //=featureIndex\n * return currentProperties\n * });\n */\nfunction propReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n propEach(geojson, function (currentProperties, featureIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentProperties;\n else previousValue = callback(previousValue, currentProperties, featureIndex);\n });\n return previousValue;\n}\n\n/**\n * Callback for featureEach\n *\n * @callback featureEachCallback\n * @param {Feature<any>} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Iterate over features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name featureEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.featureEach(features, function (currentFeature, featureIndex) {\n * //=currentFeature\n * //=featureIndex\n * });\n */\nfunction featureEach(geojson, callback) {\n if (geojson.type === 'Feature') {\n callback(geojson, 0);\n } else if (geojson.type === 'FeatureCollection') {\n for (var i = 0; i < geojson.features.length; i++) {\n if (callback(geojson.features[i], i) === false) break;\n }\n }\n}\n\n/**\n * Callback for featureReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback featureReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name featureReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.featureReduce(features, function (previousValue, currentFeature, featureIndex) {\n * //=previousValue\n * //=currentFeature\n * //=featureIndex\n * return currentFeature\n * });\n */\nfunction featureReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n featureEach(geojson, function (currentFeature, featureIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentFeature;\n else previousValue = callback(previousValue, currentFeature, featureIndex);\n });\n return previousValue;\n}\n\n/**\n * Get all coordinates from any GeoJSON object.\n *\n * @name coordAll\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @returns {Array<Array<number>>} coordinate position array\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * var coords = turf.coordAll(features);\n * //= [[26, 37], [36, 53]]\n */\nfunction coordAll(geojson) {\n var coords = [];\n coordEach(geojson, function (coord) {\n coords.push(coord);\n });\n return coords;\n}\n\n/**\n * Callback for geomEach\n *\n * @callback geomEachCallback\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Iterate over each geometry in any GeoJSON object, similar to Array.forEach()\n *\n * @name geomEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomEach(features, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n * //=currentGeometry\n * //=featureIndex\n * //=featureProperties\n * //=featureBBox\n * //=featureId\n * });\n */\nfunction geomEach(geojson, callback) {\n var i, j, g, geometry, stopG,\n geometryMaybeCollection,\n isGeometryCollection,\n featureProperties,\n featureBBox,\n featureId,\n featureIndex = 0,\n isFeatureCollection = geojson.type === 'FeatureCollection',\n isFeature = geojson.type === 'Feature',\n stop = isFeatureCollection ? geojson.features.length : 1;\n\n // This logic may look a little weird. The reason why it is that way\n // is because it's trying to be fast. GeoJSON supports multiple kinds\n // of objects at its root: FeatureCollection, Features, Geometries.\n // This function has the responsibility of handling all of them, and that\n // means that some of the `for` loops you see below actually just don't apply\n // to certain inputs. For instance, if you give this just a\n // Point geometry, then both loops are short-circuited and all we do\n // is gradually rename the input until it's called 'geometry'.\n //\n // This also aims to allocate as few resources as possible: just a\n // few numbers and booleans, rather than any temporary arrays as would\n // be required with the normalization approach.\n for (i = 0; i < stop; i++) {\n\n geometryMaybeCollection = (isFeatureCollection ? geojson.features[i].geometry :\n (isFeature ? geojson.geometry : geojson));\n featureProperties = (isFeatureCollection ? geojson.features[i].properties :\n (isFeature ? geojson.properties : {}));\n featureBBox = (isFeatureCollection ? geojson.features[i].bbox :\n (isFeature ? geojson.bbox : undefined));\n featureId = (isFeatureCollection ? geojson.features[i].id :\n (isFeature ? geojson.id : undefined));\n isGeometryCollection = (geometryMaybeCollection) ? geometryMaybeCollection.type === 'GeometryCollection' : false;\n stopG = isGeometryCollection ? geometryMaybeCollection.geometries.length : 1;\n\n for (g = 0; g < stopG; g++) {\n geometry = isGeometryCollection ?\n geometryMaybeCollection.geometries[g] : geometryMaybeCollection;\n\n // Handle null Geometry\n if (geometry === null) {\n if (callback(null, featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n continue;\n }\n switch (geometry.type) {\n case 'Point':\n case 'LineString':\n case 'MultiPoint':\n case 'Polygon':\n case 'MultiLineString':\n case 'MultiPolygon': {\n if (callback(geometry, featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n break;\n }\n case 'GeometryCollection': {\n for (j = 0; j < geometry.geometries.length; j++) {\n if (callback(geometry.geometries[j], featureIndex, featureProperties, featureBBox, featureId) === false) return false;\n }\n break;\n }\n default:\n throw new Error('Unknown Geometry Type');\n }\n }\n // Only increase `featureIndex` per each feature\n featureIndex++;\n }\n}\n\n/**\n * Callback for geomReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback geomReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Geometry} currentGeometry The current Geometry being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {Object} featureProperties The current Feature Properties being processed.\n * @param {Array<number>} featureBBox The current Feature BBox being processed.\n * @param {number|string} featureId The current Feature Id being processed.\n */\n\n/**\n * Reduce geometry in any GeoJSON object, similar to Array.reduce().\n *\n * @name geomReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.point([36, 53], {hello: 'world'})\n * ]);\n *\n * turf.geomReduce(features, function (previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n * //=previousValue\n * //=currentGeometry\n * //=featureIndex\n * //=featureProperties\n * //=featureBBox\n * //=featureId\n * return currentGeometry\n * });\n */\nfunction geomReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n geomEach(geojson, function (currentGeometry, featureIndex, featureProperties, featureBBox, featureId) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentGeometry;\n else previousValue = callback(previousValue, currentGeometry, featureIndex, featureProperties, featureBBox, featureId);\n });\n return previousValue;\n}\n\n/**\n * Callback for flattenEach\n *\n * @callback flattenEachCallback\n * @param {Feature} currentFeature The current flattened feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Iterate over flattened features in any GeoJSON object, similar to\n * Array.forEach.\n *\n * @name flattenEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentFeature, featureIndex, multiFeatureIndex)\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenEach(features, function (currentFeature, featureIndex, multiFeatureIndex) {\n * //=currentFeature\n * //=featureIndex\n * //=multiFeatureIndex\n * });\n */\nfunction flattenEach(geojson, callback) {\n geomEach(geojson, function (geometry, featureIndex, properties, bbox, id) {\n // Callback for single geometry\n var type = (geometry === null) ? null : geometry.type;\n switch (type) {\n case null:\n case 'Point':\n case 'LineString':\n case 'Polygon':\n if (callback(feature(geometry, properties, {bbox: bbox, id: id}), featureIndex, 0) === false) return false;\n return;\n }\n\n var geomType;\n\n // Callback for multi-geometry\n switch (type) {\n case 'MultiPoint':\n geomType = 'Point';\n break;\n case 'MultiLineString':\n geomType = 'LineString';\n break;\n case 'MultiPolygon':\n geomType = 'Polygon';\n break;\n }\n\n for (var multiFeatureIndex = 0; multiFeatureIndex < geometry.coordinates.length; multiFeatureIndex++) {\n var coordinate = geometry.coordinates[multiFeatureIndex];\n var geom = {\n type: geomType,\n coordinates: coordinate\n };\n if (callback(feature(geom, properties), featureIndex, multiFeatureIndex) === false) return false;\n }\n });\n}\n\n/**\n * Callback for flattenReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback flattenReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature} currentFeature The current Feature being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n */\n\n/**\n * Reduce flattened features in any GeoJSON object, similar to Array.reduce().\n *\n * @name flattenReduce\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (previousValue, currentFeature, featureIndex, multiFeatureIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {foo: 'bar'}),\n * turf.multiPoint([[40, 30], [36, 53]], {hello: 'world'})\n * ]);\n *\n * turf.flattenReduce(features, function (previousValue, currentFeature, featureIndex, multiFeatureIndex) {\n * //=previousValue\n * //=currentFeature\n * //=featureIndex\n * //=multiFeatureIndex\n * return currentFeature\n * });\n */\nfunction flattenReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n flattenEach(geojson, function (currentFeature, featureIndex, multiFeatureIndex) {\n if (featureIndex === 0 && multiFeatureIndex === 0 && initialValue === undefined) previousValue = currentFeature;\n else previousValue = callback(previousValue, currentFeature, featureIndex, multiFeatureIndex);\n });\n return previousValue;\n}\n\n/**\n * Callback for segmentEach\n *\n * @callback segmentEachCallback\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n * @returns {void}\n */\n\n/**\n * Iterate over 2-vertex line segment in any GeoJSON object, similar to Array.forEach()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex)\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentEach(polygon, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n * //=currentSegment\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * //=segmentIndex\n * });\n *\n * // Calculate the total number of segments\n * var total = 0;\n * turf.segmentEach(polygon, function () {\n * total++;\n * });\n */\nfunction segmentEach(geojson, callback) {\n flattenEach(geojson, function (feature$$1, featureIndex, multiFeatureIndex) {\n var segmentIndex = 0;\n\n // Exclude null Geometries\n if (!feature$$1.geometry) return;\n // (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n var type = feature$$1.geometry.type;\n if (type === 'Point' || type === 'MultiPoint') return;\n\n // Generate 2-vertex line segments\n var previousCoords;\n if (coordEach(feature$$1, function (currentCoord, coordIndex, featureIndexCoord, mutliPartIndexCoord, geometryIndex) {\n // Simulating a meta.coordReduce() since `reduce` operations cannot be stopped by returning `false`\n if (previousCoords === undefined) {\n previousCoords = currentCoord;\n return;\n }\n var currentSegment = lineString([previousCoords, currentCoord], feature$$1.properties);\n if (callback(currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) === false) return false;\n segmentIndex++;\n previousCoords = currentCoord;\n }) === false) return false;\n });\n}\n\n/**\n * Callback for segmentReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback segmentReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentSegment The current Segment being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n * @param {number} segmentIndex The current index of the Segment being processed.\n */\n\n/**\n * Reduce 2-vertex line segment in any GeoJSON object, similar to Array.reduce()\n * (Multi)Point geometries do not contain segments therefore they are ignored during this operation.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON\n * @param {Function} callback a method that takes (previousValue, currentSegment, currentIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {void}\n * @example\n * var polygon = turf.polygon([[[-50, 5], [-40, -10], [-50, -10], [-40, 5], [-50, 5]]]);\n *\n * // Iterate over GeoJSON by 2-vertex segments\n * turf.segmentReduce(polygon, function (previousSegment, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n * //= previousSegment\n * //= currentSegment\n * //= featureIndex\n * //= multiFeatureIndex\n * //= geometryIndex\n * //= segmentInex\n * return currentSegment\n * });\n *\n * // Calculate the total number of segments\n * var initialValue = 0\n * var total = turf.segmentReduce(polygon, function (previousValue) {\n * previousValue++;\n * return previousValue;\n * }, initialValue);\n */\nfunction segmentReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n var started = false;\n segmentEach(geojson, function (currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex) {\n if (started === false && initialValue === undefined) previousValue = currentSegment;\n else previousValue = callback(previousValue, currentSegment, featureIndex, multiFeatureIndex, geometryIndex, segmentIndex);\n started = true;\n });\n return previousValue;\n}\n\n/**\n * Callback for lineEach\n *\n * @callback lineEachCallback\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Iterate over line or ring coordinates in LineString, Polygon, MultiLineString, MultiPolygon Features or Geometries,\n * similar to Array.forEach.\n *\n * @name lineEach\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @example\n * var multiLine = turf.multiLineString([\n * [[26, 37], [35, 45]],\n * [[36, 53], [38, 50], [41, 55]]\n * ]);\n *\n * turf.lineEach(multiLine, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=currentLine\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * });\n */\nfunction lineEach(geojson, callback) {\n // validation\n if (!geojson) throw new Error('geojson is required');\n\n flattenEach(geojson, function (feature$$1, featureIndex, multiFeatureIndex) {\n if (feature$$1.geometry === null) return;\n var type = feature$$1.geometry.type;\n var coords = feature$$1.geometry.coordinates;\n switch (type) {\n case 'LineString':\n if (callback(feature$$1, featureIndex, multiFeatureIndex, 0, 0) === false) return false;\n break;\n case 'Polygon':\n for (var geometryIndex = 0; geometryIndex < coords.length; geometryIndex++) {\n if (callback(lineString(coords[geometryIndex], feature$$1.properties), featureIndex, multiFeatureIndex, geometryIndex) === false) return false;\n }\n break;\n }\n });\n}\n\n/**\n * Callback for lineReduce\n *\n * The first time the callback function is called, the values provided as arguments depend\n * on whether the reduce method has an initialValue argument.\n *\n * If an initialValue is provided to the reduce method:\n * - The previousValue argument is initialValue.\n * - The currentValue argument is the value of the first element present in the array.\n *\n * If an initialValue is not provided:\n * - The previousValue argument is the value of the first element present in the array.\n * - The currentValue argument is the value of the second element present in the array.\n *\n * @callback lineReduceCallback\n * @param {*} previousValue The accumulated value previously returned in the last invocation\n * of the callback, or initialValue, if supplied.\n * @param {Feature<LineString>} currentLine The current LineString|LinearRing being processed.\n * @param {number} featureIndex The current index of the Feature being processed\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed\n * @param {number} geometryIndex The current index of the Geometry being processed\n */\n\n/**\n * Reduce features in any GeoJSON object, similar to Array.reduce().\n *\n * @name lineReduce\n * @param {Geometry|Feature<LineString|Polygon|MultiLineString|MultiPolygon>} geojson object\n * @param {Function} callback a method that takes (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex)\n * @param {*} [initialValue] Value to use as the first argument to the first call of the callback.\n * @returns {*} The value that results from the reduction.\n * @example\n * var multiPoly = turf.multiPolygon([\n * turf.polygon([[[12,48],[2,41],[24,38],[12,48]], [[9,44],[13,41],[13,45],[9,44]]]),\n * turf.polygon([[[5, 5], [0, 0], [2, 2], [4, 4], [5, 5]]])\n * ]);\n *\n * turf.lineReduce(multiPoly, function (previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=previousValue\n * //=currentLine\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * return currentLine\n * });\n */\nfunction lineReduce(geojson, callback, initialValue) {\n var previousValue = initialValue;\n lineEach(geojson, function (currentLine, featureIndex, multiFeatureIndex, geometryIndex) {\n if (featureIndex === 0 && initialValue === undefined) previousValue = currentLine;\n else previousValue = callback(previousValue, currentLine, featureIndex, multiFeatureIndex, geometryIndex);\n });\n return previousValue;\n}\n\n/**\n * Finds a particular 2-vertex LineString Segment from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n * Point & MultiPoint will always return null.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.segmentIndex=0] Segment Index\n * @param {Object} [options.properties={}] Translate Properties to output LineString\n * @param {BBox} [options.bbox={}] Translate BBox to output LineString\n * @param {number|string} [options.id={}] Translate Id to output LineString\n * @returns {Feature<LineString>} 2-vertex GeoJSON Feature LineString\n * @example\n * var multiLine = turf.multiLineString([\n * [[10, 10], [50, 30], [30, 40]],\n * [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findSegment(multiLine);\n * // => Feature<LineString<[[10, 10], [50, 30]]>>\n *\n * // First Segment of 2nd Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: 1});\n * // => Feature<LineString<[[-10, -10], [-50, -30]]>>\n *\n * // Last Segment of Last Multi Feature\n * turf.findSegment(multiLine, {multiFeatureIndex: -1, segmentIndex: -1});\n * // => Feature<LineString<[[-50, -30], [-30, -40]]>>\n */\nfunction findSegment(geojson, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var segmentIndex = options.segmentIndex || 0;\n\n // Find FeatureIndex\n var properties = options.properties;\n var geometry;\n\n switch (geojson.type) {\n case 'FeatureCollection':\n if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case 'Feature':\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case 'Point':\n case 'MultiPoint':\n return null;\n case 'LineString':\n case 'Polygon':\n case 'MultiLineString':\n case 'MultiPolygon':\n geometry = geojson;\n break;\n default:\n throw new Error('geojson is invalid');\n }\n\n // Find SegmentIndex\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case 'Point':\n case 'MultiPoint':\n return null;\n case 'LineString':\n if (segmentIndex < 0) segmentIndex = coords.length + segmentIndex - 1;\n return lineString([coords[segmentIndex], coords[segmentIndex + 1]], properties, options);\n case 'Polygon':\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (segmentIndex < 0) segmentIndex = coords[geometryIndex].length + segmentIndex - 1;\n return lineString([coords[geometryIndex][segmentIndex], coords[geometryIndex][segmentIndex + 1]], properties, options);\n case 'MultiLineString':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex].length + segmentIndex - 1;\n return lineString([coords[multiFeatureIndex][segmentIndex], coords[multiFeatureIndex][segmentIndex + 1]], properties, options);\n case 'MultiPolygon':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (segmentIndex < 0) segmentIndex = coords[multiFeatureIndex][geometryIndex].length - segmentIndex - 1;\n return lineString([coords[multiFeatureIndex][geometryIndex][segmentIndex], coords[multiFeatureIndex][geometryIndex][segmentIndex + 1]], properties, options);\n }\n throw new Error('geojson is invalid');\n}\n\n/**\n * Finds a particular Point from a GeoJSON using `@turf/meta` indexes.\n *\n * Negative indexes are permitted.\n *\n * @param {FeatureCollection|Feature|Geometry} geojson Any GeoJSON Feature or Geometry\n * @param {Object} [options={}] Optional parameters\n * @param {number} [options.featureIndex=0] Feature Index\n * @param {number} [options.multiFeatureIndex=0] Multi-Feature Index\n * @param {number} [options.geometryIndex=0] Geometry Index\n * @param {number} [options.coordIndex=0] Coord Index\n * @param {Object} [options.properties={}] Translate Properties to output Point\n * @param {BBox} [options.bbox={}] Translate BBox to output Point\n * @param {number|string} [options.id={}] Translate Id to output Point\n * @returns {Feature<Point>} 2-vertex GeoJSON Feature Point\n * @example\n * var multiLine = turf.multiLineString([\n * [[10, 10], [50, 30], [30, 40]],\n * [[-10, -10], [-50, -30], [-30, -40]]\n * ]);\n *\n * // First Segment (defaults are 0)\n * turf.findPoint(multiLine);\n * // => Feature<Point<[10, 10]>>\n *\n * // First Segment of the 2nd Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: 1});\n * // => Feature<Point<[-10, -10]>>\n *\n * // Last Segment of last Multi-Feature\n * turf.findPoint(multiLine, {multiFeatureIndex: -1, coordIndex: -1});\n * // => Feature<Point<[-30, -40]>>\n */\nfunction findPoint(geojson, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var featureIndex = options.featureIndex || 0;\n var multiFeatureIndex = options.multiFeatureIndex || 0;\n var geometryIndex = options.geometryIndex || 0;\n var coordIndex = options.coordIndex || 0;\n\n // Find FeatureIndex\n var properties = options.properties;\n var geometry;\n\n switch (geojson.type) {\n case 'FeatureCollection':\n if (featureIndex < 0) featureIndex = geojson.features.length + featureIndex;\n properties = properties || geojson.features[featureIndex].properties;\n geometry = geojson.features[featureIndex].geometry;\n break;\n case 'Feature':\n properties = properties || geojson.properties;\n geometry = geojson.geometry;\n break;\n case 'Point':\n case 'MultiPoint':\n return null;\n case 'LineString':\n case 'Polygon':\n case 'MultiLineString':\n case 'MultiPolygon':\n geometry = geojson;\n break;\n default:\n throw new Error('geojson is invalid');\n }\n\n // Find Coord Index\n if (geometry === null) return null;\n var coords = geometry.coordinates;\n switch (geometry.type) {\n case 'Point':\n return point(coords, properties, options);\n case 'MultiPoint':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n return point(coords[multiFeatureIndex], properties, options);\n case 'LineString':\n if (coordIndex < 0) coordIndex = coords.length + coordIndex;\n return point(coords[coordIndex], properties, options);\n case 'Polygon':\n if (geometryIndex < 0) geometryIndex = coords.length + geometryIndex;\n if (coordIndex < 0) coordIndex = coords[geometryIndex].length + coordIndex;\n return point(coords[geometryIndex][coordIndex], properties, options);\n case 'MultiLineString':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (coordIndex < 0) coordIndex = coords[multiFeatureIndex].length + coordIndex;\n return point(coords[multiFeatureIndex][coordIndex], properties, options);\n case 'MultiPolygon':\n if (multiFeatureIndex < 0) multiFeatureIndex = coords.length + multiFeatureIndex;\n if (geometryIndex < 0) geometryIndex = coords[multiFeatureIndex].length + geometryIndex;\n if (coordIndex < 0) coordIndex = coords[multiFeatureIndex][geometryIndex].length - coordIndex;\n return point(coords[multiFeatureIndex][geometryIndex][coordIndex], properties, options);\n }\n throw new Error('geojson is invalid');\n}\n\nexport { coordEach, coordReduce, propEach, propReduce, featureEach, featureReduce, coordAll, geomEach, geomReduce, flattenEach, flattenReduce, segmentEach, segmentReduce, lineEach, lineReduce, findSegment, findPoint };\n","/**\n * Returns a cloned copy of the passed GeoJSON Object, including possible 'Foreign Members'.\n * ~3-5x faster than the common JSON.parse + JSON.stringify combo method.\n *\n * @name clone\n * @param {GeoJSON} geojson GeoJSON Object\n * @returns {GeoJSON} cloned GeoJSON Object\n * @example\n * var line = turf.lineString([[-74, 40], [-78, 42], [-82, 35]], {color: 'red'});\n *\n * var lineCloned = turf.clone(line);\n */\nfunction clone(geojson) {\n if (!geojson) throw new Error('geojson is required');\n\n switch (geojson.type) {\n case 'Feature':\n return cloneFeature(geojson);\n case 'FeatureCollection':\n return cloneFeatureCollection(geojson);\n case 'Point':\n case 'LineString':\n case 'Polygon':\n case 'MultiPoint':\n case 'MultiLineString':\n case 'MultiPolygon':\n case 'GeometryCollection':\n return cloneGeometry(geojson);\n default:\n throw new Error('unknown GeoJSON type');\n }\n}\n\n/**\n * Clone Feature\n *\n * @private\n * @param {Feature<any>} geojson GeoJSON Feature\n * @returns {Feature<any>} cloned Feature\n */\nfunction cloneFeature(geojson) {\n var cloned = {type: 'Feature'};\n // Preserve Foreign Members\n Object.keys(geojson).forEach(function (key) {\n switch (key) {\n case 'type':\n case 'properties':\n case 'geometry':\n return;\n default:\n cloned[key] = geojson[key];\n }\n });\n // Add properties & geometry last\n cloned.properties = cloneProperties(geojson.properties);\n cloned.geometry = cloneGeometry(geojson.geometry);\n return cloned;\n}\n\n/**\n * Clone Properties\n *\n * @private\n * @param {Object} properties GeoJSON Properties\n * @returns {Object} cloned Properties\n */\nfunction cloneProperties(properties) {\n var cloned = {};\n if (!properties) return cloned;\n Object.keys(properties).forEach(function (key) {\n var value = properties[key];\n if (typeof value === 'object') {\n if (value === null) {\n // handle null\n cloned[key] = null;\n } else if (value.length) {\n // handle Array\n cloned[key] = value.map(function (item) {\n return item;\n });\n } else {\n // handle generic Object\n cloned[key] = cloneProperties(value);\n }\n } else cloned[key] = value;\n });\n return cloned;\n}\n\n/**\n * Clone Feature Collection\n *\n * @private\n * @param {FeatureCollection<any>} geojson GeoJSON Feature Collection\n * @returns {FeatureCollection<any>} cloned Feature Collection\n */\nfunction cloneFeatureCollection(geojson) {\n var cloned = {type: 'FeatureCollection'};\n\n // Preserve Foreign Members\n Object.keys(geojson).forEach(function (key) {\n switch (key) {\n case 'type':\n case 'features':\n return;\n default:\n cloned[key] = geojson[key];\n }\n });\n // Add features\n cloned.features = geojson.features.map(function (feature) {\n return cloneFeature(feature);\n });\n return cloned;\n}\n\n/**\n * Clone Geometry\n *\n * @private\n * @param {Geometry<any>} geometry GeoJSON Geometry\n * @returns {Geometry<any>} cloned Geometry\n */\nfunction cloneGeometry(geometry) {\n var geom = {type: geometry.type};\n if (geometry.bbox) geom.bbox = geometry.bbox;\n\n if (geometry.type === 'GeometryCollection') {\n geom.geometries = geometry.geometries.map(function (geom) {\n return cloneGeometry(geom);\n });\n return geom;\n }\n geom.coordinates = deepSlice(geometry.coordinates);\n return geom;\n}\n\n/**\n * Deep Slice coordinates\n *\n * @private\n * @param {Coordinates} coords Coordinates\n * @returns {Coordinates} all coordinates sliced\n */\nfunction deepSlice(coords) {\n if (typeof coords[0] !== 'object') { return coords.slice(); }\n return coords.map(function (coord) {\n return deepSlice(coord);\n });\n}\n\nexport default clone;\n","/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n */\nvar earthRadius = 6371008.8;\n\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n */\nvar factors = {\n meters: earthRadius,\n metres: earthRadius,\n millimeters: earthRadius * 1000,\n millimetres: earthRadius * 1000,\n centimeters: earthRadius * 100,\n centimetres: earthRadius * 100,\n kilometers: earthRadius / 1000,\n kilometres: earthRadius / 1000,\n miles: earthRadius / 1609.344,\n nauticalmiles: earthRadius / 1852,\n inches: earthRadius * 39.370,\n yards: earthRadius / 1.0936,\n feet: earthRadius * 3.28084,\n radians: 1,\n degrees: earthRadius / 111325,\n};\n\n/**\n * Units of measurement factors based on 1 meter.\n */\nvar unitsFactors = {\n meters: 1,\n metres: 1,\n millimeters: 1000,\n millimetres: 1000,\n centimeters: 100,\n centimetres: 100,\n kilometers: 1 / 1000,\n kilometres: 1 / 1000,\n miles: 1 / 1609.344,\n nauticalmiles: 1 / 1852,\n inches: 39.370,\n yards: 1 / 1.0936,\n feet: 3.28084,\n radians: 1 / earthRadius,\n degrees: 1 / 111325,\n};\n\n/**\n * Area of measurement factors based on 1 square meter.\n */\nvar areaFactors = {\n meters: 1,\n metres: 1,\n millimeters: 1000000,\n millimetres: 1000000,\n centimeters: 10000,\n centimetres: 10000,\n kilometers: 0.000001,\n kilometres: 0.000001,\n acres: 0.000247105,\n miles: 3.86e-7,\n yards: 1.195990046,\n feet: 10.763910417,\n inches: 1550.003100006\n};\n\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geometry, properties, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n var id = options.id;\n\n // Validation\n if (geometry === undefined) throw new Error('geometry is required');\n if (properties && properties.constructor !== Object) throw new Error('properties must be an Object');\n if (bbox) validateBBox(bbox);\n if (id) validateId(id);\n\n // Main\n var feat = {type: 'Feature'};\n if (id) feat.id = id;\n if (bbox) feat.bbox = bbox;\n feat.properties = properties || {};\n feat.geometry = geometry;\n return feat;\n}\n\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<number>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Geometry\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = 'Point';\n * var coordinates = [110, 50];\n *\n * var geometry = turf.geometry(type, coordinates);\n *\n * //=geometry\n */\nfunction geometry(type, coordinates, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n\n // Validation\n if (!type) throw new Error('type is required');\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n if (bbox) validateBBox(bbox);\n\n // Main\n var geom;\n switch (type) {\n case 'Point': geom = point(coordinates).geometry; break;\n case 'LineString': geom = lineString(coordinates).geometry; break;\n case 'Polygon': geom = polygon(coordinates).geometry; break;\n case 'MultiPoint': geom = multiPoint(coordinates).geometry; break;\n case 'MultiLineString': geom = multiLineString(coordinates).geometry; break;\n case 'MultiPolygon': geom = multiPolygon(coordinates).geometry; break;\n default: throw new Error(type + ' is invalid');\n }\n if (bbox) geom.bbox = bbox;\n return geom;\n}\n\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n if (coordinates.length < 2) throw new Error('coordinates must be at least 2 numbers long');\n if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) throw new Error('coordinates must contain numbers');\n\n return feature({\n type: 'Point',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n * [-75, 39],\n * [-80, 45],\n * [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return point(coords, properties);\n }), options);\n}\n\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n for (var i = 0; i < coordinates.length; i++) {\n var ring = coordinates[i];\n if (ring.length < 4) {\n throw new Error('Each LinearRing of a Polygon must have 4 or more Positions.');\n }\n for (var j = 0; j < ring[ring.length - 1].length; j++) {\n // Check if first point of Polygon contains two numbers\n if (i === 0 && j === 0 && !isNumber(ring[0][0]) || !isNumber(ring[0][1])) throw new Error('coordinates must contain numbers');\n if (ring[ring.length - 1][j] !== ring[0][j]) {\n throw new Error('First and last Position are not equivalent.');\n }\n }\n }\n\n return feature({\n type: 'Polygon',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return polygon(coords, properties);\n }), options);\n}\n\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (coordinates.length < 2) throw new Error('coordinates must be an array of two or more positions');\n // Check if first point of LineString contains two numbers\n if (!isNumber(coordinates[0][1]) || !isNumber(coordinates[0][1])) throw new Error('coordinates must contain numbers');\n\n return feature({\n type: 'LineString',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<number>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return lineString(coords, properties);\n }), options);\n}\n\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n * locationA,\n * locationB,\n * locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n var id = options.id;\n\n // Validation\n if (!features) throw new Error('No features passed');\n if (!Array.isArray(features)) throw new Error('features must be an Array');\n if (bbox) validateBBox(bbox);\n if (id) validateId(id);\n\n // Main\n var fc = {type: 'FeatureCollection'};\n if (id) fc.id = id;\n if (bbox) fc.bbox = bbox;\n fc.features = features;\n return fc;\n}\n\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiLineString',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiPoint',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiPolygon',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = {\n * \"type\": \"Point\",\n * \"coordinates\": [100, 0]\n * };\n * var line = {\n * \"type\": \"LineString\",\n * \"coordinates\": [ [101, 0], [102, 1] ]\n * };\n * var collection = turf.geometryCollection([pt, line]);\n *\n * //=collection\n */\nfunction geometryCollection(geometries, properties, options) {\n if (!geometries) throw new Error('geometries is required');\n if (!Array.isArray(geometries)) throw new Error('geometries must be an Array');\n\n return feature({\n type: 'GeometryCollection',\n geometries: geometries\n }, properties, options);\n}\n\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n if (num === undefined || num === null || isNaN(num)) throw new Error('num is required');\n if (precision && !(precision >= 0)) throw new Error('precision must be a positive number');\n var multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n if (radians === undefined || radians === null) throw new Error('radians is required');\n\n if (units && typeof units !== 'string') throw new Error('units must be a string');\n var factor = factors[units || 'kilometers'];\n if (!factor) throw new Error(units + ' units is invalid');\n return radians * factor;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n if (distance === undefined || distance === null) throw new Error('distance is required');\n\n if (units && typeof units !== 'string') throw new Error('units must be a string');\n var factor = factors[units || 'kilometers'];\n if (!factor) throw new Error(units + ' units is invalid');\n return distance / factor;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n return radiansToDegrees(lengthToRadians(distance, units));\n}\n\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n if (bearing === null || bearing === undefined) throw new Error('bearing is required');\n\n var angle = bearing % 360;\n if (angle < 0) angle += 360;\n return angle;\n}\n\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n if (radians === null || radians === undefined) throw new Error('radians is required');\n\n var degrees = radians % (2 * Math.PI);\n return degrees * 180 / Math.PI;\n}\n\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n if (degrees === null || degrees === undefined) throw new Error('degrees is required');\n\n var radians = degrees % 360;\n return radians * Math.PI / 180;\n}\n\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {string} originalUnit of the length\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n if (length === null || length === undefined) throw new Error('length is required');\n if (!(length >= 0)) throw new Error('length must be a positive number');\n\n return radiansToLength(lengthToRadians(length, originalUnit), finalUnit || 'kilometers');\n}\n\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches\n * @param {number} area to be converted\n * @param {string} [originalUnit='meters'] of the distance\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted distance\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n if (area === null || area === undefined) throw new Error('area is required');\n if (!(area >= 0)) throw new Error('area must be a positive number');\n\n var startFactor = areaFactors[originalUnit || 'meters'];\n if (!startFactor) throw new Error('invalid original units');\n\n var finalFactor = areaFactors[finalUnit || 'kilometers'];\n if (!finalFactor) throw new Error('invalid final units');\n\n return (area / startFactor) * finalFactor;\n}\n\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\n\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n return (!!input) && (input.constructor === Object);\n}\n\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n if (!bbox) throw new Error('bbox is required');\n if (!Array.isArray(bbox)) throw new Error('bbox must be an Array');\n if (bbox.length !== 4 && bbox.length !== 6) throw new Error('bbox must be an Array of 4 or 6 numbers');\n bbox.forEach(function (num) {\n if (!isNumber(num)) throw new Error('bbox must only contain numbers');\n });\n}\n\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n if (!id) throw new Error('id is required');\n if (['string', 'number'].indexOf(typeof id) === -1) throw new Error('id must be a number or a string');\n}\n\n// Deprecated methods\nfunction radians2degrees() {\n throw new Error('method has been renamed to `radiansToDegrees`');\n}\n\nfunction degrees2radians() {\n throw new Error('method has been renamed to `degreesToRadians`');\n}\n\nfunction distanceToDegrees() {\n throw new Error('method has been renamed to `lengthToDegrees`');\n}\n\nfunction distanceToRadians() {\n throw new Error('method has been renamed to `lengthToRadians`');\n}\n\nfunction radiansToDistance() {\n throw new Error('method has been renamed to `radiansToLength`');\n}\n\nfunction bearingToAngle() {\n throw new Error('method has been renamed to `bearingToAzimuth`');\n}\n\nfunction convertDistance() {\n throw new Error('method has been renamed to `convertLength`');\n}\n\nexport { earthRadius, factors, unitsFactors, areaFactors, feature, geometry, point, points, polygon, polygons, lineString, lineStrings, featureCollection, multiLineString, multiPoint, multiPolygon, geometryCollection, round, radiansToLength, lengthToRadians, lengthToDegrees, bearingToAzimuth, radiansToDegrees, degreesToRadians, convertLength, convertArea, isNumber, isObject, validateBBox, validateId, radians2degrees, degrees2radians, distanceToDegrees, distanceToRadians, radiansToDistance, bearingToAngle, convertDistance };\n","import { convertLength, degreesToRadians, earthRadius, isObject, point } from '@turf/helpers';\nimport { getCoord } from '@turf/invariant';\n\n// https://en.wikipedia.org/wiki/Rhumb_line\n/**\n * Returns the destination {@link Point} having travelled the given distance along a Rhumb line from the\n * origin Point with the (varant) given bearing.\n *\n * @name rhumbDestination\n * @param {Coord} origin starting point\n * @param {number} distance distance from the starting point\n * @param {number} bearing varant bearing angle ranging from -180 to 180 degrees from north\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] can be degrees, radians, miles, or kilometers\n * @param {Object} [options.properties={}] translate properties to destination point\n * @returns {Feature<Point>} Destination point.\n * @example\n * var pt = turf.point([-75.343, 39.984], {\"marker-color\": \"F00\"});\n * var distance = 50;\n * var bearing = 90;\n * var options = {units: 'miles'};\n *\n * var destination = turf.rhumbDestination(pt, distance, bearing, options);\n *\n * //addToMap\n * var addToMap = [pt, destination]\n * destination.properties['marker-color'] = '#00F';\n */\nfunction rhumbDestination(origin, distance, bearing, options) {\n // Optional parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var units = options.units;\n var properties = options.properties;\n\n // validation\n if (!origin) throw new Error('origin is required');\n if (distance === undefined || distance === null) throw new Error('distance is required');\n if (bearing === undefined || bearing === null) throw new Error('bearing is required');\n if (!(distance >= 0)) throw new Error('distance must be greater than 0');\n\n var distanceInMeters = convertLength(distance, units, 'meters');\n var coords = getCoord(origin);\n var destination = calculateRhumbDestination(coords, distanceInMeters, bearing);\n\n // compensate the crossing of the 180th meridian (https://macwright.org/2016/09/26/the-180th-meridian.html)\n // solution from https://github.com/mapbox/mapbox-gl-js/issues/3250#issuecomment-294887678\n destination[0] += (destination[0] - coords[0] > 180) ? -360 : (coords[0] - destination[0] > 180) ? 360 : 0;\n return point(destination, properties);\n}\n\n/**\n * Returns the destination point having travelled along a rhumb line from origin point the given\n * distance on the given bearing.\n * Adapted from Geodesy: http://www.movable-type.co.uk/scripts/latlong.html#rhumblines\n *\n * @private\n * @param {Array<number>} origin - point\n * @param {number} distance - Distance travelled, in same units as earth radius (default: metres).\n * @param {number} bearing - Bearing in degrees from north.\n * @param {number} [radius=6371e3] - (Mean) radius of earth (defaults to radius in metres).\n * @returns {Array<number>} Destination point.\n */\nfunction calculateRhumbDestination(origin, distance, bearing, radius) {\n // φ => phi\n // λ => lambda\n // ψ => psi\n // Δ => Delta\n // δ => delta\n // θ => theta\n\n radius = (radius === undefined) ? earthRadius : Number(radius);\n\n var delta = distance / radius; // angular distance in radians\n var lambda1 = origin[0] * Math.PI / 180; // to radians, but without normalize to 𝜋\n var phi1 = degreesToRadians(origin[1]);\n var theta = degreesToRadians(bearing);\n\n var DeltaPhi = delta * Math.cos(theta);\n var phi2 = phi1 + DeltaPhi;\n\n // check for some daft bugger going past the pole, normalise latitude if so\n if (Math.abs(phi2) > Math.PI / 2) phi2 = phi2 > 0 ? Math.PI - phi2 : -Math.PI - phi2;\n\n var DeltaPsi = Math.log(Math.tan(phi2 / 2 + Math.PI / 4) / Math.tan(phi1 / 2 + Math.PI / 4));\n var q = Math.abs(DeltaPsi) > 10e-12 ? DeltaPhi / DeltaPsi : Math.cos(phi1); // E-W course becomes ill-conditioned with 0/0\n\n var DeltaLambda = delta * Math.sin(theta) / q;\n var lambda2 = lambda1 + DeltaLambda;\n\n return [((lambda2 * 180 / Math.PI) + 540) % 360 - 180, phi2 * 180 / Math.PI]; // normalise to −180..+180°\n}\n\nexport default rhumbDestination;\n","import { isNumber } from '@turf/helpers';\n\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array<number>|Geometry<Point>|Feature<Point>} coord GeoJSON Point or an Array of numbers\n * @returns {Array<number>} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nfunction getCoord(coord) {\n if (!coord) throw new Error('coord is required');\n if (coord.type === 'Feature' && coord.geometry !== null && coord.geometry.type === 'Point') return coord.geometry.coordinates;\n if (coord.type === 'Point') return coord.coordinates;\n if (Array.isArray(coord) && coord.length >= 2 && coord[0].length === undefined && coord[1].length === undefined) return coord;\n\n throw new Error('coord must be GeoJSON Point or an Array of numbers');\n}\n\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array<any>|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array<any>} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */\nfunction getCoords(coords) {\n if (!coords) throw new Error('coords is required');\n\n // Feature\n if (coords.type === 'Feature' && coords.geometry !== null) return coords.geometry.coordinates;\n\n // Geometry\n if (coords.coordinates) return coords.coordinates;\n\n // Array of numbers\n if (Array.isArray(coords)) return coords;\n\n throw new Error('coords must be GeoJSON Feature, Geometry Object or an Array');\n}\n\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array<any>} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */\nfunction containsNumber(coordinates) {\n if (coordinates.length > 1 && isNumber(coordinates[0]) && isNumber(coordinates[1])) {\n return true;\n }\n\n if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n return containsNumber(coordinates[0]);\n }\n throw new Error('coordinates must only contain numbers');\n}\n\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction geojsonType(value, type, name) {\n if (!type || !name) throw new Error('type and name required');\n\n if (!value || value.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + value.type);\n }\n}\n\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nfunction featureOf(feature, type, name) {\n if (!feature) throw new Error('No feature passed');\n if (!name) throw new Error('.featureOf() requires a name');\n if (!feature || feature.type !== 'Feature' || !feature.geometry) {\n throw new Error('Invalid input to ' + name + ', Feature with geometry required');\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + feature.geometry.type);\n }\n}\n\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction collectionOf(featureCollection, type, name) {\n if (!featureCollection) throw new Error('No featureCollection passed');\n if (!name) throw new Error('.collectionOf() requires a name');\n if (!featureCollection || featureCollection.type !== 'FeatureCollection') {\n throw new Error('Invalid input to ' + name + ', FeatureCollection required');\n }\n for (var i = 0; i < featureCollection.features.length; i++) {\n var feature = featureCollection.features[i];\n if (!feature || feature.type !== 'Feature' || !feature.geometry) {\n throw new Error('Invalid input to ' + name + ', Feature with geometry required');\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + feature.geometry.type);\n }\n }\n}\n\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */\nfunction getGeom(geojson) {\n if (!geojson) throw new Error('geojson is required');\n if (geojson.geometry !== undefined) return geojson.geometry;\n if (geojson.coordinates || geojson.geometries) return geojson;\n throw new Error('geojson must be a valid Feature or Geometry Object');\n}\n\n/**\n * Get Geometry Type from Feature or Geometry Object\n *\n * @throws {Error} **DEPRECATED** in v5.0.0 in favor of getType\n */\nfunction getGeomType() {\n throw new Error('invariant.getGeomType has been deprecated in v5.0 in favor of invariant.getType');\n}\n\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */\nfunction getType(geojson, name) {\n if (!geojson) throw new Error((name || 'geojson') + ' is required');\n // GeoJSON Feature & GeometryCollection\n if (geojson.geometry && geojson.geometry.type) return geojson.geometry.type;\n // GeoJSON Geometry & FeatureCollection\n if (geojson.type) return geojson.type;\n throw new Error((name || 'geojson') + ' is invalid');\n}\n\nexport { getCoord, getCoords, containsNumber, geojsonType, featureOf, collectionOf, getGeom, getGeomType, getType };\n","import { coordEach } from '@turf/meta';\nimport { isObject } from '@turf/helpers';\nimport { getCoords } from '@turf/invariant';\nimport clone from '@turf/clone';\nimport rhumbDestination from '@turf/rhumb-destination';\n\n/**\n * Moves any geojson Feature or Geometry of a specified distance along a Rhumb Line\n * on the provided direction angle.\n *\n * @name transformTranslate\n * @param {GeoJSON} geojson object to be translated\n * @param {number} distance length of the motion; negative values determine motion in opposite direction\n * @param {number} direction of the motion; angle from North in decimal degrees, positive clockwise\n * @param {Object} [options={}] Optional parameters\n * @param {string} [options.units='kilometers'] in which `distance` will be express; miles, kilometers, degrees, or radians\n * @param {number} [options.zTranslation=0] length of the vertical motion, same unit of distance\n * @param {boolean} [options.mutate=false] allows GeoJSON input to be mutated (significant performance increase if true)\n * @returns {GeoJSON} the translated GeoJSON object\n * @example\n * var poly = turf.polygon([[[0,29],[3.5,29],[2.5,32],[0,29]]]);\n * var translatedPoly = turf.transformTranslate(poly, 100, 35);\n *\n * //addToMap\n * var addToMap = [poly, translatedPoly];\n * translatedPoly.properties = {stroke: '#F00', 'stroke-width': 4};\n */\nfunction transformTranslate(geojson, distance, direction, options) {\n // Optional parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var units = options.units;\n var zTranslation = options.zTranslation;\n var mutate = options.mutate;\n\n // Input validation\n if (!geojson) throw new Error('geojson is required');\n if (distance === undefined || distance === null || isNaN(distance)) throw new Error('distance is required');\n if (zTranslation && typeof zTranslation !== 'number' && isNaN(zTranslation)) throw new Error('zTranslation is not a number');\n\n // Shortcut no-motion\n zTranslation = (zTranslation !== undefined) ? zTranslation : 0;\n if (distance === 0 && zTranslation === 0) return geojson;\n\n if (direction === undefined || direction === null || isNaN(direction)) throw new Error('direction is required');\n\n // Invert with negative distances\n if (distance < 0) {\n distance = -distance;\n direction = -direction;\n }\n\n // Clone geojson to avoid side effects\n if (mutate === false || mutate === undefined) geojson = clone(geojson);\n\n // Translate each coordinate\n coordEach(geojson, function (pointCoords) {\n var newCoords = getCoords(rhumbDestination(pointCoords, distance, direction, {units: units}));\n pointCoords[0] = newCoords[0];\n pointCoords[1] = newCoords[1];\n if (zTranslation && pointCoords.length === 3) pointCoords[2] += zTranslation;\n });\n return geojson;\n}\n\nexport default transformTranslate;\n","/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n */\nvar earthRadius = 6371008.8;\n\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n */\nvar factors = {\n meters: earthRadius,\n metres: earthRadius,\n millimeters: earthRadius * 1000,\n millimetres: earthRadius * 1000,\n centimeters: earthRadius * 100,\n centimetres: earthRadius * 100,\n kilometers: earthRadius / 1000,\n kilometres: earthRadius / 1000,\n miles: earthRadius / 1609.344,\n nauticalmiles: earthRadius / 1852,\n inches: earthRadius * 39.370,\n yards: earthRadius / 1.0936,\n feet: earthRadius * 3.28084,\n radians: 1,\n degrees: earthRadius / 111325,\n};\n\n/**\n * Units of measurement factors based on 1 meter.\n */\nvar unitsFactors = {\n meters: 1,\n metres: 1,\n millimeters: 1000,\n millimetres: 1000,\n centimeters: 100,\n centimetres: 100,\n kilometers: 1 / 1000,\n kilometres: 1 / 1000,\n miles: 1 / 1609.344,\n nauticalmiles: 1 / 1852,\n inches: 39.370,\n yards: 1 / 1.0936,\n feet: 3.28084,\n radians: 1 / earthRadius,\n degrees: 1 / 111325,\n};\n\n/**\n * Area of measurement factors based on 1 square meter.\n */\nvar areaFactors = {\n meters: 1,\n metres: 1,\n millimeters: 1000000,\n millimetres: 1000000,\n centimeters: 10000,\n centimetres: 10000,\n kilometers: 0.000001,\n kilometres: 0.000001,\n acres: 0.000247105,\n miles: 3.86e-7,\n yards: 1.195990046,\n feet: 10.763910417,\n inches: 1550.003100006\n};\n\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geometry, properties, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n var id = options.id;\n\n // Validation\n if (geometry === undefined) throw new Error('geometry is required');\n if (properties && properties.constructor !== Object) throw new Error('properties must be an Object');\n if (bbox) validateBBox(bbox);\n if (id) validateId(id);\n\n // Main\n var feat = {type: 'Feature'};\n if (id) feat.id = id;\n if (bbox) feat.bbox = bbox;\n feat.properties = properties || {};\n feat.geometry = geometry;\n return feat;\n}\n\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array<number>} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Geometry\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = 'Point';\n * var coordinates = [110, 50];\n *\n * var geometry = turf.geometry(type, coordinates);\n *\n * //=geometry\n */\nfunction geometry(type, coordinates, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n\n // Validation\n if (!type) throw new Error('type is required');\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n if (bbox) validateBBox(bbox);\n\n // Main\n var geom;\n switch (type) {\n case 'Point': geom = point(coordinates).geometry; break;\n case 'LineString': geom = lineString(coordinates).geometry; break;\n case 'Polygon': geom = polygon(coordinates).geometry; break;\n case 'MultiPoint': geom = multiPoint(coordinates).geometry; break;\n case 'MultiLineString': geom = multiLineString(coordinates).geometry; break;\n case 'MultiPolygon': geom = multiPolygon(coordinates).geometry; break;\n default: throw new Error(type + ' is invalid');\n }\n if (bbox) geom.bbox = bbox;\n return geom;\n}\n\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n if (coordinates.length < 2) throw new Error('coordinates must be at least 2 numbers long');\n if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) throw new Error('coordinates must contain numbers');\n\n return feature({\n type: 'Point',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array<Array<number>>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Point>} Point Feature\n * @example\n * var points = turf.points([\n * [-75, 39],\n * [-80, 45],\n * [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return point(coords, properties);\n }), options);\n}\n\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array<Array<Array<number>>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Polygon>} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n for (var i = 0; i < coordinates.length; i++) {\n var ring = coordinates[i];\n if (ring.length < 4) {\n throw new Error('Each LinearRing of a Polygon must have 4 or more Positions.');\n }\n for (var j = 0; j < ring[ring.length - 1].length; j++) {\n // Check if first point of Polygon contains two numbers\n if (i === 0 && j === 0 && !isNumber(ring[0][0]) || !isNumber(ring[0][1])) throw new Error('coordinates must contain numbers');\n if (ring[ring.length - 1][j] !== ring[0][j]) {\n throw new Error('First and last Position are not equivalent.');\n }\n }\n }\n\n return feature({\n type: 'Polygon',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<Polygon>} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return polygon(coords, properties);\n }), options);\n}\n\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<LineString>} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (coordinates.length < 2) throw new Error('coordinates must be an array of two or more positions');\n // Check if first point of LineString contains two numbers\n if (!isNumber(coordinates[0][1]) || !isNumber(coordinates[0][1])) throw new Error('coordinates must contain numbers');\n\n return feature({\n type: 'LineString',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array<Array<number>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection<LineString>} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return lineString(coords, properties);\n }), options);\n}\n\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n * locationA,\n * locationB,\n * locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n var id = options.id;\n\n // Validation\n if (!features) throw new Error('No features passed');\n if (!Array.isArray(features)) throw new Error('features must be an Array');\n if (bbox) validateBBox(bbox);\n if (id) validateId(id);\n\n // Main\n var fc = {type: 'FeatureCollection'};\n if (id) fc.id = id;\n if (bbox) fc.bbox = bbox;\n fc.features = features;\n return fc;\n}\n\n/**\n * Creates a {@link Feature<MultiLineString>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array<Array<Array<number>>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiLineString>} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiLineString',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature<MultiPoint>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array<Array<number>>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPoint>} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiPoint',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature<MultiPolygon>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array<Array<Array<Array<number>>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<MultiPolygon>} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiPolygon',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature<GeometryCollection>} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array<Geometry>} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<GeometryCollection>} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = {\n * \"type\": \"Point\",\n * \"coordinates\": [100, 0]\n * };\n * var line = {\n * \"type\": \"LineString\",\n * \"coordinates\": [ [101, 0], [102, 1] ]\n * };\n * var collection = turf.geometryCollection([pt, line]);\n *\n * //=collection\n */\nfunction geometryCollection(geometries, properties, options) {\n if (!geometries) throw new Error('geometries is required');\n if (!Array.isArray(geometries)) throw new Error('geometries must be an Array');\n\n return feature({\n type: 'GeometryCollection',\n geometries: geometries\n }, properties, options);\n}\n\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n if (num === undefined || num === null || isNaN(num)) throw new Error('num is required');\n if (precision && !(precision >= 0)) throw new Error('precision must be a positive number');\n var multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n if (radians === undefined || radians === null) throw new Error('radians is required');\n\n if (units && typeof units !== 'string') throw new Error('units must be a string');\n var factor = factors[units || 'kilometers'];\n if (!factor) throw new Error(units + ' units is invalid');\n return radians * factor;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n if (distance === undefined || distance === null) throw new Error('distance is required');\n\n if (units && typeof units !== 'string') throw new Error('units must be a string');\n var factor = factors[units || 'kilometers'];\n if (!factor) throw new Error(units + ' units is invalid');\n return distance / factor;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n return radiansToDegrees(lengthToRadians(distance, units));\n}\n\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n if (bearing === null || bearing === undefined) throw new Error('bearing is required');\n\n var angle = bearing % 360;\n if (angle < 0) angle += 360;\n return angle;\n}\n\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n if (radians === null || radians === undefined) throw new Error('radians is required');\n\n var degrees = radians % (2 * Math.PI);\n return degrees * 180 / Math.PI;\n}\n\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n if (degrees === null || degrees === undefined) throw new Error('degrees is required');\n\n var radians = degrees % 360;\n return radians * Math.PI / 180;\n}\n\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {string} originalUnit of the length\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n if (length === null || length === undefined) throw new Error('length is required');\n if (!(length >= 0)) throw new Error('length must be a positive number');\n\n return radiansToLength(lengthToRadians(length, originalUnit), finalUnit || 'kilometers');\n}\n\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches\n * @param {number} area to be converted\n * @param {string} [originalUnit='meters'] of the distance\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted distance\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n if (area === null || area === undefined) throw new Error('area is required');\n if (!(area >= 0)) throw new Error('area must be a positive number');\n\n var startFactor = areaFactors[originalUnit || 'meters'];\n if (!startFactor) throw new Error('invalid original units');\n\n var finalFactor = areaFactors[finalUnit || 'kilometers'];\n if (!finalFactor) throw new Error('invalid final units');\n\n return (area / startFactor) * finalFactor;\n}\n\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\n\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n return (!!input) && (input.constructor === Object);\n}\n\n/**\n * Validate BBox\n *\n * @private\n * @param {Array<number>} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n if (!bbox) throw new Error('bbox is required');\n if (!Array.isArray(bbox)) throw new Error('bbox must be an Array');\n if (bbox.length !== 4 && bbox.length !== 6) throw new Error('bbox must be an Array of 4 or 6 numbers');\n bbox.forEach(function (num) {\n if (!isNumber(num)) throw new Error('bbox must only contain numbers');\n });\n}\n\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n if (!id) throw new Error('id is required');\n if (['string', 'number'].indexOf(typeof id) === -1) throw new Error('id must be a number or a string');\n}\n\n// Deprecated methods\nfunction radians2degrees() {\n throw new Error('method has been renamed to `radiansToDegrees`');\n}\n\nfunction degrees2radians() {\n throw new Error('method has been renamed to `degreesToRadians`');\n}\n\nfunction distanceToDegrees() {\n throw new Error('method has been renamed to `lengthToDegrees`');\n}\n\nfunction distanceToRadians() {\n throw new Error('method has been renamed to `lengthToRadians`');\n}\n\nfunction radiansToDistance() {\n throw new Error('method has been renamed to `radiansToLength`');\n}\n\nfunction bearingToAngle() {\n throw new Error('method has been renamed to `bearingToAzimuth`');\n}\n\nfunction convertDistance() {\n throw new Error('method has been renamed to `convertLength`');\n}\n\nexport { earthRadius, factors, unitsFactors, areaFactors, feature, geometry, point, points, polygon, polygons, lineString, lineStrings, featureCollection, multiLineString, multiPoint, multiPolygon, geometryCollection, round, radiansToLength, lengthToRadians, lengthToDegrees, bearingToAzimuth, radiansToDegrees, degreesToRadians, convertLength, convertArea, isNumber, isObject, validateBBox, validateId, radians2degrees, degrees2radians, distanceToDegrees, distanceToRadians, radiansToDistance, bearingToAngle, convertDistance };\n","import { getProp, parseSequence, getColor, circleToPolygon } from './util';\nimport { point, lineString, polygon } from '@turf/helpers';\nimport transformTranslate from '@turf/transform-translate';\nimport clone from '@turf/clone';\nimport proj4 from 'proj4';\nexport const LANDXML_PIPE_NETWORK_PIPE = 'pipe_network_pipe';\nexport const LANDXML_PIPE_NETWORK_STRUCT = 'pipe_network_struct';\nexport function convertPipeNetworks(xmlObj, projection, opts) {\n const features = [];\n const pipeNetworksNodes = getProp(xmlObj, \"LandXML\", \"PipeNetworks\");\n if (!pipeNetworksNodes)\n return features;\n pipeNetworksNodes.forEach(pn => {\n const pipeNetworkNodes = getProp(pn, \"PipeNetwork\");\n if (!Array.isArray(pipeNetworkNodes))\n return;\n let structs = {};\n pipeNetworkNodes.forEach(pn => {\n const baseProps = {\n name: pn.$.name,\n description: pn.$.desc,\n \"stroke-width\": 0.1,\n \"fill-opacity\": 0.5,\n };\n const localStructs = convertStructs(pn, projection, baseProps, opts);\n features.push(...Object.values(localStructs).map(s => s.geometry));\n Object.assign(structs, localStructs);\n });\n pipeNetworkNodes.forEach(pn => {\n const baseProps = {\n name: pn.$.name,\n description: pn.$.desc,\n landxmlType: LANDXML_PIPE_NETWORK_PIPE,\n \"stroke-width\": 1,\n \"fill-opacity\": 1,\n };\n const pipes = convertPipes(pn, structs, projection, baseProps, opts);\n features.push(...pipes);\n });\n });\n return features;\n}\nfunction convertPipes(pipeNetwork, structs, projection, baseProps, opts) {\n const pipes = [];\n const pipeNodes = getProp(pipeNetwork, \"Pipes\", 0, \"Pipe\");\n if (!Array.isArray(pipeNodes))\n return;\n pipeNodes.forEach(p => {\n const circPipeNode = getProp(p, \"CircPipe\", 0);\n const name = baseProps.name ? baseProps.name + ' - ' + p.$.name : p.$.name;\n const featureProps = Object.assign({}, baseProps, {\n name: name,\n description: baseProps.description ? baseProps.description + ' - ' + p.$.desc : p.$.desc,\n stroke: getColor(`pipe-network-pipe-${name}`, opts.colorOpts)\n });\n if (circPipeNode !== undefined) {\n const attrs = circPipeNode.$;\n if ('diameter' in attrs)\n featureProps.landxmlDiameter = parseFloat(attrs.diameter);\n if ('thickness' in attrs)\n featureProps.landxmlThickness = parseFloat(attrs.thickness);\n }\n const refStart = structs[p.$.refStart];\n const refEnd = structs[p.$.refEnd];\n if (!refStart)\n throw new Error(`Cannot find pipe \"${featureProps.name}\" refStart \"${p.$.refStart}\" !`);\n if (!refEnd)\n throw new Error(`Cannot find pipe \"${featureProps.name}\" refEnd \"${p.$.refEnd}\" !`);\n const pipe = lineString([\n refStart.center,\n refEnd.center,\n ], featureProps);\n pipes.push(pipe);\n });\n return pipes;\n}\nfunction convertStructs(pipeNetwork, projection, baseProps, opts) {\n const structs = {};\n const structNodes = getProp(pipeNetwork, \"Structs\", 0, \"Struct\");\n if (!Array.isArray(structNodes))\n return;\n structNodes.forEach(s => {\n const centerNode = getProp(s, \"Center\", 0);\n const rectStructNode = getProp(s, \"RectStruct\", 0);\n const circStructNode = getProp(s, \"CircStruct\", 0);\n const inletStructNode = getProp(s, \"InletStruct\", 0);\n const outletStructNode = getProp(s, \"OutletStruct\", 0);\n const connectionNode = getProp(s, \"Connection\", 0);\n const structType = rectStructNode !== undefined ? \"rect\" : ((circStructNode !== undefined ? \"circ\" :\n (inletStructNode !== undefined ? \"inlet\" :\n (outletStructNode !== undefined ? \"outlet\" :\n (connectionNode !== undefined ? \"connection\" :\n (null))))));\n const name = baseProps.name ? baseProps.name + ' - ' + s.$.name : s.$.name;\n const featureProps = Object.assign({}, baseProps, {\n name: name,\n description: baseProps.description ? baseProps.description + ' - ' + s.$.desc : s.$.desc,\n landxmlType: LANDXML_PIPE_NETWORK_STRUCT,\n landxmlStruct: structType,\n landxmlElevRim: 'elevRim' in s.$ ? parseFloat(s.$.elevRim) : undefined,\n landxmlElevSump: 'elevSump' in s.$ ? parseFloat(s.$.elevSump) : undefined,\n fill: getColor(`pipe-network-struct-${name}`, opts.colorOpts)\n });\n if (circStructNode !== undefined) {\n const attrs = circStructNode.$;\n if ('diameter' in attrs)\n featureProps.landxmlDiameter = parseFloat(attrs.diameter);\n if ('thickness' in attrs)\n featureProps.landxmlThickness = parseFloat(attrs.thickness);\n }\n if (rectStructNode !== undefined) {\n const attrs = rectStructNode.$;\n if ('thickness' in attrs)\n featureProps.landxmlThickness = parseFloat(attrs.thickness);\n if ('length' in attrs)\n featureProps.landxmlLength = parseFloat(attrs.length);\n if ('width' in attrs)\n featureProps.landxmlWidth = parseFloat(attrs.width);\n }\n // Parse and convert center coordinates\n const seq = parseSequence(centerNode).map(v => parseFloat(v));\n let center = [seq[1], seq[0]];\n center = proj4(projection, 'WGS84', center);\n let geometry;\n if (rectStructNode) {\n const length = featureProps.length ? featureProps.length : 1;\n const width = featureProps.width ? featureProps.width : 1;\n geometry = squareAround(center, length, width, 'meters', featureProps);\n }\n else {\n const diameter = featureProps.landxmlDiameter ? featureProps.landxmlDiameter : 1;\n geometry = circleToPolygon(center, diameter / 2, 128, featureProps);\n }\n if (!geometry) {\n throw new Error(\"Unsupported struct type\");\n }\n ;\n structs[s.$.name] = { geometry, center };\n });\n return structs;\n}\nfunction squareAround(centerCoords, length, width, units, properties) {\n const center = point(centerCoords);\n const northEast = clone(center);\n transformTranslate(northEast, width / 2, 270, { units, mutate: true });\n transformTranslate(northEast, length / 2, 0, { units, mutate: true });\n const northWest = clone(center);\n transformTranslate(northWest, width / 2, 90, { units, mutate: true });\n transformTranslate(northWest, length / 2, 0, { units, mutate: true });\n const southWest = clone(center);\n transformTranslate(southWest, width / 2, 90, { units, mutate: true });\n transformTranslate(southWest, length / 2, 180, { units, mutate: true });\n const southEast = clone(center);\n transformTranslate(southEast, width / 2, 270, { units, mutate: true });\n transformTranslate(southEast, length / 2, 180, { units, mutate: true });\n const points = [\n northEast.geometry.coordinates, northWest.geometry.coordinates,\n southWest.geometry.coordinates, southEast.geometry.coordinates,\n northEast.geometry.coordinates\n ];\n return polygon([points], properties);\n}\n","//////////////////////////\n/////////////////////////////////////////\n/////////\nimport xml2js from 'xml2js';\n//////////\nimport { featureCollection } from '@turf/helpers';\nimport area from '@turf/area';\nimport proj4 from 'proj4';\nimport { Proj4Defs } from './projection';\nimport { getProp } from './util';\nimport { convertSurfaces } from './surface';\nimport { convertParcels } from './parcel';\nimport { convertPipeNetworks } from './pipe-network';\nexport const PROJECTION_AUTO_DETECT = 'auto_detect';\nexport const CONVERT_SURFACES = 'surfaces';\nexport const CONVERT_PARCELS = 'parcels';\nexport const CONVERT_PIPE_NETWORKS = 'pipe_networks';\nconst converters = {\n [CONVERT_PARCELS]: convertParcels,\n [CONVERT_SURFACES]: convertSurfaces,\n [CONVERT_PIPE_NETWORKS]: convertPipeNetworks,\n};\n// Based on alexgleith's preliminary work\n// github.com/alexgleith/land-xml-to-geojson\nexport class Converter {\n constructor() {\n this.defaultOptions = {\n projection: PROJECTION_AUTO_DETECT,\n enabledConverters: [CONVERT_SURFACES, CONVERT_PARCELS, CONVERT_PIPE_NETWORKS],\n parser: {\n normalize: true\n },\n proj4Defs: [\n [\n \"EPSG:28355\",\n \"+proj=utm +zone=55 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs\",\n ],\n ...Proj4Defs,\n ],\n featureMapper: (feature, opts) => feature,\n colorOpts: {\n hue: 'monochrome',\n luminosity: 'dark',\n seed: 1,\n },\n };\n }\n toGeoJSON(xml, opts = {}) {\n const parserOptions = Object.assign({}, this.defaultOptions.parser, opts.parser);\n const parser = new xml2js.Parser(parserOptions);\n this.configureProj4(opts.proj4Defs);\n return new Promise((resolve, reject) => {\n parser.parseString(xml, (err, xmlObj) => {\n if (err)\n return reject(err);\n let geojson;\n try {\n geojson = this.convertToGeoJSON(xmlObj, opts);\n }\n catch (err) {\n return reject(err);\n }\n return resolve(geojson);\n });\n });\n }\n convertToGeoJSON(xmlObj, opts = {}) {\n const options = Object.assign({}, this.defaultOptions, opts);\n // Use specified projection or try to find one in the LandXML file\n const projection = this.getLandXMLProjection(xmlObj, options.projection || this.defaultOptions.projection);\n if (!projection)\n throw new Error(\"Source projection can not be found !\");\n // List enabled converters\n const enabledConverters = Array.isArray(opts.enabledConverters) ?\n opts.enabledConverters :\n this.defaultOptions.enabledConverters;\n let features = [];\n // Convert LandXML entities to GeoJSON features\n enabledConverters.forEach(c => {\n if (!(c in converters))\n return;\n console.log(\"Executing convert '%s'...\", c);\n const newFeatures = converters[c](xmlObj, projection, options);\n features.push(...newFeatures);\n });\n // Apply features mapper function if defined\n if (typeof options.featureMapper === 'function') {\n features = features.map(f => {\n return options.featureMapper(f, options);\n });\n }\n // Sort feature by reverse area\n // to ease rendering\n features.sort((a, b) => {\n if (area(a) > area(b))\n return -1;\n if (area(a) < area(b))\n return 1;\n return 0;\n });\n // Return extracted features as a feature collection\n return featureCollection(features);\n }\n configureProj4(additionalProj4Defs) {\n const proj4Defs = this.defaultOptions.proj4Defs.slice(0);\n if (Array.isArray(additionalProj4Defs))\n proj4Defs.push(...additionalProj4Defs);\n proj4.defs(proj4Defs);\n }\n getLandXMLProjection(xmlObj, manualProjection) {\n if (manualProjection !== PROJECTION_AUTO_DETECT)\n return manualProjection;\n let projection = null;\n if (!projection)\n projection = this.findUTMProjection(xmlObj);\n return projection;\n }\n findUTMProjection(xmlObj) {\n const projection = getProp(xmlObj, \"LandXML\", \"CoordinateSystem\", 0, \"$\", \"datum\");\n const zone = getProp(xmlObj, \"LandXML\", \"CgPoints\", 0, \"$\", \"zoneNumber\");\n let utmProjection = null;\n if (projection && zone) {\n utmProjection = `+proj=utm +zone=${zone} +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs `;\n }\n return utmProjection;\n }\n}\n","import { getProp, parseSequence } from './util';\nimport { polygon } from '@turf/helpers';\nimport proj4 from 'proj4';\nexport const LANDXML_PARCEL = 'parcel';\nexport function convertParcels(xmlObj, projection, opts) {\n const originalPoints = getProp(xmlObj, \"LandXML\", \"CgPoints\", 0, \"CgPoint\");\n const originalParcels = getProp(xmlObj, \"LandXML\", \"Parcels\", 0, \"Parcel\");\n const points = {};\n const polygons = [];\n // Parse out the points\n for (let pt in originalPoints) {\n const opt = originalPoints[pt];\n const name = opt.$.name.replace(/ /g, '');\n let coords = parseSequence(opt._).map(coord => parseFloat(coord));\n coords = [coords[1], coords[0]];\n coords = proj4(projection, 'WGS84', coords);\n points[name] = coords;\n }\n // Parse out the parcels\n for (let pc in originalParcels) {\n var opc = originalParcels[pc];\n var geom = opc.CoordGeom;\n if (geom !== undefined) {\n let coords = [];\n // Need to store the start to add at the end\n var endCoord = null;\n var origCoords = opc.CoordGeom[0].Line;\n for (let oc in origCoords) {\n // VERY important note. This code does NOT handle the other two types\n // of coordinate definitions, curves and irregular lines. TODO: fixme.\n var start = origCoords[oc].Start[0].$.pntRef;\n // We don't use the end (it probably should be checked, because if the end isn't the start)\n var end = origCoords[oc].End[0].$.pntRef;\n var startPoint = points[start];\n if (!startPoint) {\n // console.log('Failed to get start point', start, startPoint)\n }\n else {\n // Start creating the polygon\n coords.push(points[start]);\n if (!endCoord) {\n // Store the first coord, to put back on to close the polygon\n endCoord = points[start];\n }\n }\n }\n if (coords.length > 2) {\n coords.push(endCoord);\n coords = [coords];\n // name=\"101\" class=\"Lot\" state=\"proposed\" parcelType=\"Single\"\n var parameters = {\n name: opc.$.name,\n landxmlClass: opc.$.class,\n landxmlState: opc.$.state,\n landxmlParcelType: opc.$.parcelType,\n landxmlType: LANDXML_PARCEL,\n };\n polygons.push(polygon(coords, parameters));\n }\n else {\n // console.log(\"Couldn't create a polygon because we found less than 2 coords\")\n }\n }\n else {\n // console.log(\"No geometry\")\n }\n }\n return polygons;\n}\n","import { getProp, parseSequence, getColor } from './util';\nimport { polygon } from '@turf/helpers';\nimport union from '@turf/union';\nimport proj4 from 'proj4';\nexport const LANDXML_SURFACE = 'surface';\nexport function convertSurfaces(xmlObj, projection, opts) {\n const features = [];\n const surfacesContainerNodes = getProp(xmlObj, \"LandXML\", \"Surfaces\");\n if (!surfacesContainerNodes)\n return features;\n surfacesContainerNodes.forEach(sc => {\n const attrs = (sc.$ || {});\n const baseProps = {\n name: attrs.name || \"\",\n description: attrs.desc,\n };\n const surfaceNodes = getProp(sc, \"Surface\");\n if (!Array.isArray(surfaceNodes))\n return;\n surfaceNodes.forEach(s => {\n const name = baseProps.name ? (baseProps.name + ' - ' + s.$.name) : s.$.name;\n const description = baseProps.description ? (baseProps.description + ' - ' + s.$.desc) : s.$.desc;\n const featureProps = {\n name: name,\n description: description,\n landxmlType: LANDXML_SURFACE,\n \"stroke-width\": 0,\n \"color\": \"transparent\",\n \"fill\": getColor(`surface-${name}`, opts.colorOpts),\n \"fill-opacity\": 0.3,\n };\n let surfaceFeatures = convertBoundaries(s, projection, featureProps, opts);\n if (surfaceFeatures.length !== 0) {\n features.push(...surfaceFeatures);\n }\n else {\n surfaceFeatures = convertFaces(s, projection, featureProps, opts);\n let merged = surfaceFeatures[0];\n console.error(\"Applying union to %s faces (%d faces to merge)\", merged.properties.name, surfaceFeatures.length);\n for (let i = 1; i < surfaceFeatures.length - 1; i++) {\n const next = surfaceFeatures[i + 1];\n if (!next)\n return;\n try {\n merged = union(merged, next);\n }\n catch (err) {\n console.error(\"--> Could not apply union to %s (#%d)\", next.properties.name, i + 1);\n // Ignore\n }\n }\n merged.properties = featureProps;\n features.push(merged);\n }\n });\n });\n return features;\n}\nfunction convertFaces(surface, projection, featureProps, opts) {\n const pointNodes = getProp(surface, \"Definition\", 0, \"Pnts\", 0, \"P\");\n const faceNodes = getProp(surface, \"Definition\", 0, \"Faces\", 0, \"F\");\n const points = {};\n pointNodes.forEach(p => {\n let pointCoords = parseSequence(p._).map(v => parseFloat(v));\n pointCoords = [pointCoords[1], pointCoords[0]];\n pointCoords = proj4(projection, 'WGS84', pointCoords);\n const pointId = p.$.id;\n points[pointId] = { name: p.$.name, coords: pointCoords };\n });\n const faces = [];\n faceNodes.forEach(f => {\n const pointIds = parseSequence(f);\n const coords = [];\n pointIds.forEach(id => {\n const p = points[id];\n coords.push(p.coords);\n });\n coords.push(points[pointIds[0]].coords);\n faces.push(polygon([coords], featureProps));\n });\n return [...faces];\n}\nfunction convertBoundaries(surface, projection, featureProps, opts) {\n const boundaryNodes = getProp(surface, \"SourceData\", 0, \"Boundaries\", 0, \"Boundary\");\n if (!boundaryNodes)\n return [];\n const polygons = [];\n boundaryNodes.forEach(boundary => {\n const pntList3DNode = getProp(boundary, 'PntList3D', 0);\n const seq = parseSequence(pntList3DNode).map(p => parseFloat(p));\n const coords = [];\n for (let i = 0; i < seq.length; i += 3) {\n let c = [seq[i + 1], seq[i]];\n c = proj4(projection, 'WGS84', c);\n coords.push(c);\n }\n coords.push(coords[0]);\n polygons.push(polygon([coords], featureProps));\n });\n return polygons;\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// module exports must be returned from runtime so entry inlining is disabled\n// startup\n// Load entry module and return exports\n__webpack_require__(6007);\nreturn __webpack_require__(4237);\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => module['default'] :\n\t\t() => module;\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop)","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};"],"sourceRoot":""} |